From 771857e014a91a4042563e8c7fcba77cd64942f3 Mon Sep 17 00:00:00 2001 From: "web-devinition.de" <58172018+webdevinition@users.noreply.github.com> Date: Mon, 3 Nov 2025 00:31:47 +0100 Subject: [PATCH 001/235] Added feature for part IPN suggest with category prefixes (#1054) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Erweiterungstätigkeiten zur IPN-Vorschlagsliste anhand von Präfixen aus den Kategorien * Umstellung Migrationen bzgl. Multi-Plattform-Support. Zunächst MySQL, SQLite Statements integrieren. * Postgre Statements integrieren * SQL-Formatierung in Migration verbessern * Erweitere IPN-Suggest um Bauteilbeschreibung. Die Implementierung berücksichtigt nun zusätzlich die Bauteilbeschreibung zu maximal 150 Zeichen Länge für die Generierung von IPN-Vorschlägen und Inkrementen. * Anpassungen aus Analyse vornehmen * IPN-Validierung für Parts überarbeiten * IPN-Vorschlagslogik um Konfiguration erweitert * Anpassungen aus phpstan Analyse * IPN-Vorschlagslogik erweitert und Bauteil-IPN vereindeutigt Die IPN-Logik wurde um eine Konfiguration zur automatischen Suffix-Anfügung und die Berücksichtigung von doppelten Beschreibungen bei Bedarf ergänzt. Zudem wurde das Datenmodell angepasst, um eine eindeutige Speicherung der IPN zu gewährleisten. * Regex-Konfigurationsmöglichkeit für IPN-Vorschläge einführen Die Einstellungen für die IPN-Vorschlagslogik wurden um eine Regex-Validierung und eine Hilfetext-Konfiguration erweitert. Tests und Änderungen an den Formularoptionen wurden implementiert. * Match range assert and form limits in suggestPartDigits * Keep existing behavior with autoAppend suffix by default * Show the regex hint in the browser validation notice. * Improved translations * Removed unnecessary service definition * Removed german comments --------- Co-authored-by: Marcel Diegelmann Co-authored-by: Jan Böhmer --- .../elements/ckeditor_controller.js | 9 + .../elements/ipn_suggestion_controller.js | 250 ++++++++++++++ config/services.yaml | 10 + docs/configuration.md | 10 + migrations/Version20250325073036.php | 307 ++++++++++++++++++ src/Controller/PartController.php | 6 +- src/Controller/TypeaheadController.php | 34 +- src/Entity/Parts/Category.php | 17 + src/Entity/Parts/Part.php | 2 - .../PartTraits/AdvancedPropertyTrait.php | 2 + .../UserSystem/PartUniqueIpnSubscriber.php | 97 ++++++ src/Form/AdminPages/CategoryAdminForm.php | 11 + src/Form/Part/PartBaseType.php | 56 +++- src/Repository/PartRepository.php | 257 ++++++++++++++- .../MiscSettings/IpnSuggestSettings.php | 80 +++++ src/Settings/MiscSettings/MiscSettings.php | 3 + .../Constraints/UniquePartIpnConstraint.php | 22 ++ .../Constraints/UniquePartIpnValidator.php | 55 ++++ templates/admin/category_admin.html.twig | 1 + templates/parts/edit/_advanced.html.twig | 12 +- tests/Repository/PartRepositoryTest.php | 297 +++++++++++++++++ translations/messages.cs.xlf | 126 +++++++ translations/messages.da.xlf | 78 +++++ translations/messages.de.xlf | 226 ++++++++++--- translations/messages.el.xlf | 78 +++++ translations/messages.en.xlf | 236 +++++++++++--- translations/messages.es.xlf | 78 +++++ translations/messages.fr.xlf | 78 +++++ translations/messages.it.xlf | 78 +++++ translations/messages.ja.xlf | 78 +++++ translations/messages.nl.xlf | 78 +++++ translations/messages.pl.xlf | 78 +++++ translations/messages.ru.xlf | 78 +++++ translations/messages.zh.xlf | 78 +++++ 34 files changed, 2791 insertions(+), 115 deletions(-) create mode 100644 assets/controllers/elements/ipn_suggestion_controller.js create mode 100644 migrations/Version20250325073036.php create mode 100644 src/EventSubscriber/UserSystem/PartUniqueIpnSubscriber.php create mode 100644 src/Settings/MiscSettings/IpnSuggestSettings.php create mode 100644 src/Validator/Constraints/UniquePartIpnConstraint.php create mode 100644 src/Validator/Constraints/UniquePartIpnValidator.php create mode 100644 tests/Repository/PartRepositoryTest.php diff --git a/assets/controllers/elements/ckeditor_controller.js b/assets/controllers/elements/ckeditor_controller.js index 46e78fd5..b7c87dab 100644 --- a/assets/controllers/elements/ckeditor_controller.js +++ b/assets/controllers/elements/ckeditor_controller.js @@ -106,6 +106,15 @@ export default class extends Controller { editor_div.classList.add(...new_classes.split(",")); } + // Automatic synchronization of source input + editor.model.document.on("change:data", () => { + editor.updateSourceElement(); + + // Dispatch the input event for further treatment + const event = new Event("input"); + this.element.dispatchEvent(event); + }); + //This return is important! Otherwise we get mysterious errors in the console //See: https://github.com/ckeditor/ckeditor5/issues/5897#issuecomment-628471302 return editor; diff --git a/assets/controllers/elements/ipn_suggestion_controller.js b/assets/controllers/elements/ipn_suggestion_controller.js new file mode 100644 index 00000000..c8b543cb --- /dev/null +++ b/assets/controllers/elements/ipn_suggestion_controller.js @@ -0,0 +1,250 @@ +import { Controller } from "@hotwired/stimulus"; +import "../../css/components/autocomplete_bootstrap_theme.css"; + +export default class extends Controller { + static targets = ["input"]; + static values = { + partId: Number, + partCategoryId: Number, + partDescription: String, + suggestions: Object, + commonSectionHeader: String, // Dynamic header for common Prefixes + partIncrementHeader: String, // Dynamic header for new possible part increment + suggestUrl: String, + }; + + connect() { + this.configureAutocomplete(); + this.watchCategoryChanges(); + this.watchDescriptionChanges(); + } + + templates = { + commonSectionHeader({ title, html }) { + return html` +
+
+ ${title} +
+
+
+ `; + }, + partIncrementHeader({ title, html }) { + return html` +
+
+ ${title} +
+
+
+ `; + }, + list({ html }) { + return html` + + `; + }, + item({ suggestion, description, html }) { + return html` +
  • +
    +
    +
    + + + +
    +
    +
    ${suggestion}
    +
    ${description}
    +
    +
    +
    +
  • + `; + }, + }; + + configureAutocomplete() { + const inputField = this.inputTarget; + const commonPrefixes = this.suggestionsValue.commonPrefixes || []; + const prefixesPartIncrement = this.suggestionsValue.prefixesPartIncrement || []; + const commonHeader = this.commonSectionHeaderValue; + const partIncrementHeader = this.partIncrementHeaderValue; + + if (!inputField || (!commonPrefixes.length && !prefixesPartIncrement.length)) return; + + // Check whether the panel should be created at the update + if (this.isPanelInitialized) { + const existingPanel = inputField.parentNode.querySelector(".aa-Panel"); + if (existingPanel) { + // Only remove the panel in the update phase + + existingPanel.remove(); + } + } + + // Create panel + const panel = document.createElement("div"); + panel.classList.add("aa-Panel"); + panel.style.display = "none"; + + // Create panel layout + const panelLayout = document.createElement("div"); + panelLayout.classList.add("aa-PanelLayout", "aa-Panel--scrollable"); + + // Section for prefixes part increment + if (prefixesPartIncrement.length) { + const partIncrementSection = document.createElement("section"); + partIncrementSection.classList.add("aa-Source"); + + const partIncrementHeaderHtml = this.templates.partIncrementHeader({ + title: partIncrementHeader, + html: String.raw, + }); + partIncrementSection.innerHTML += partIncrementHeaderHtml; + + const partIncrementList = document.createElement("ul"); + partIncrementList.classList.add("aa-List"); + partIncrementList.setAttribute("role", "listbox"); + + prefixesPartIncrement.forEach((prefix) => { + const itemHTML = this.templates.item({ + suggestion: prefix.title, + description: prefix.description, + html: String.raw, + }); + partIncrementList.innerHTML += itemHTML; + }); + + partIncrementSection.appendChild(partIncrementList); + panelLayout.appendChild(partIncrementSection); + } + + // Section for common prefixes + if (commonPrefixes.length) { + const commonSection = document.createElement("section"); + commonSection.classList.add("aa-Source"); + + const commonSectionHeader = this.templates.commonSectionHeader({ + title: commonHeader, + html: String.raw, + }); + commonSection.innerHTML += commonSectionHeader; + + const commonList = document.createElement("ul"); + commonList.classList.add("aa-List"); + commonList.setAttribute("role", "listbox"); + + commonPrefixes.forEach((prefix) => { + const itemHTML = this.templates.item({ + suggestion: prefix.title, + description: prefix.description, + html: String.raw, + }); + commonList.innerHTML += itemHTML; + }); + + commonSection.appendChild(commonList); + panelLayout.appendChild(commonSection); + } + + panel.appendChild(panelLayout); + inputField.parentNode.appendChild(panel); + + inputField.addEventListener("focus", () => { + panel.style.display = "block"; + }); + + inputField.addEventListener("blur", () => { + setTimeout(() => { + panel.style.display = "none"; + }, 100); + }); + + // Selection of an item + panelLayout.addEventListener("mousedown", (event) => { + const target = event.target.closest("li"); + + if (target) { + inputField.value = target.dataset.suggestion; + panel.style.display = "none"; + } + }); + + this.isPanelInitialized = true; + }; + + watchCategoryChanges() { + const categoryField = document.querySelector('[data-ipn-suggestion="categoryField"]'); + const descriptionField = document.querySelector('[data-ipn-suggestion="descriptionField"]'); + this.previousCategoryId = Number(this.partCategoryIdValue); + + if (categoryField) { + categoryField.addEventListener("change", () => { + const categoryId = Number(categoryField.value); + const description = String(descriptionField?.value ?? ''); + + // Check whether the category has changed compared to the previous ID + if (categoryId !== this.previousCategoryId) { + this.fetchNewSuggestions(categoryId, description); + this.previousCategoryId = categoryId; + } + }); + } + } + + watchDescriptionChanges() { + const categoryField = document.querySelector('[data-ipn-suggestion="categoryField"]'); + const descriptionField = document.querySelector('[data-ipn-suggestion="descriptionField"]'); + this.previousDescription = String(this.partDescriptionValue); + + if (descriptionField) { + descriptionField.addEventListener("input", () => { + const categoryId = Number(categoryField.value); + const description = String(descriptionField?.value ?? ''); + + // Check whether the description has changed compared to the previous one + if (description !== this.previousDescription) { + this.fetchNewSuggestions(categoryId, description); + this.previousDescription = description; + } + }); + } + } + + fetchNewSuggestions(categoryId, description) { + const baseUrl = this.suggestUrlValue; + const partId = this.partIdValue; + const truncatedDescription = description.length > 150 ? description.substring(0, 150) : description; + const encodedDescription = this.base64EncodeUtf8(truncatedDescription); + const url = `${baseUrl}?partId=${partId}&categoryId=${categoryId}` + (description !== '' ? `&description=${encodedDescription}` : ''); + + fetch(url, { + method: "GET", + headers: { + "Content-Type": "application/json", + "Accept": "application/json", + }, + }) + .then((response) => { + if (!response.ok) { + throw new Error(`Error when calling up the IPN-suggestions: ${response.status}`); + } + return response.json(); + }) + .then((data) => { + this.suggestionsValue = data; + this.configureAutocomplete(); + }) + .catch((error) => { + console.error("Errors when loading the new IPN-suggestions:", error); + }); + }; + + base64EncodeUtf8(text) { + const utf8Bytes = new TextEncoder().encode(text); + return btoa(String.fromCharCode(...utf8Bytes)); + }; +} diff --git a/config/services.yaml b/config/services.yaml index 17611cea..b48b3eff 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -231,6 +231,16 @@ services: tags: - { name: 'doctrine.fixtures.purger_factory', alias: 'reset_autoincrement_purger' } + App\Repository\PartRepository: + arguments: + $translator: '@translator' + tags: ['doctrine.repository_service'] + + App\EventSubscriber\UserSystem\PartUniqueIpnSubscriber: + tags: + - { name: doctrine.event_listener, event: onFlush, connection: default } + + # We are needing this service inside a migration, where only the container is injected. So we need to define it as public, to access it from the container. App\Services\UserSystem\PermissionPresetsHelper: public: true diff --git a/docs/configuration.md b/docs/configuration.md index 2ba5ce90..4bb46d08 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -116,6 +116,16 @@ bundled with Part-DB. Set `DATABASE_MYSQL_SSL_VERIFY_CERT` if you want to accept value should be handled as confidential data and not shared publicly. * `SHOW_PART_IMAGE_OVERLAY`: Set to 0 to disable the part image overlay, which appears if you hover over an image in the part image gallery +* `IPN_SUGGEST_REGEX`: A global regular expression, that part IPNs have to fullfill. Enforce your own format for your users. +* `IPN_SUGGEST_REGEX_HELP`: Define your own user help text for the Regex format specification. +* `IPN_AUTO_APPEND_SUFFIX`: When enabled, an incremental suffix will be added to the user input when entering an existing +* IPN again upon saving. +* `IPN_SUGGEST_PART_DIGITS`: Defines the fixed number of digits used as the increment at the end of an IPN (Internal Part Number). + IPN prefixes, maintained within part categories and their hierarchy, form the foundation for suggesting complete IPNs. + These suggestions become accessible during IPN input of a part. The constant specifies the digits used to calculate and assign + unique increments for parts within a category hierarchy, ensuring consistency and uniqueness in IPN generation. +* `IPN_USE_DUPLICATE_DESCRIPTION`: When enabled, the part’s description is used to find existing parts with the same + description and to determine the next available IPN by incrementing their numeric suffix for the suggestion list. ### E-Mail settings (all env only) diff --git a/migrations/Version20250325073036.php b/migrations/Version20250325073036.php new file mode 100644 index 00000000..3bae80ab --- /dev/null +++ b/migrations/Version20250325073036.php @@ -0,0 +1,307 @@ +addSql(<<<'SQL' + ALTER TABLE categories ADD COLUMN part_ipn_prefix VARCHAR(255) NOT NULL DEFAULT '' + SQL); + } + + public function mySQLDown(Schema $schema): void + { + $this->addSql(<<<'SQL' + ALTER TABLE categories DROP part_ipn_prefix + SQL); + } + + public function sqLiteUp(Schema $schema): void + { + $this->addSql(<<<'SQL' + CREATE TEMPORARY TABLE __temp__categories AS + SELECT + id, + parent_id, + id_preview_attachment, + partname_hint, + partname_regex, + disable_footprints, + disable_manufacturers, + disable_autodatasheets, + disable_properties, + default_description, + default_comment, + comment, + not_selectable, + name, + last_modified, + datetime_added, + alternative_names, + eda_info_reference_prefix, + eda_info_invisible, + eda_info_exclude_from_bom, + eda_info_exclude_from_board, + eda_info_exclude_from_sim, + eda_info_kicad_symbol + FROM categories + SQL); + + $this->addSql('DROP TABLE categories'); + + $this->addSql(<<<'SQL' + CREATE TABLE categories ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + parent_id INTEGER DEFAULT NULL, + id_preview_attachment INTEGER DEFAULT NULL, + partname_hint CLOB NOT NULL, + partname_regex CLOB NOT NULL, + part_ipn_prefix VARCHAR(255) DEFAULT '' NOT NULL, + disable_footprints BOOLEAN NOT NULL, + disable_manufacturers BOOLEAN NOT NULL, + disable_autodatasheets BOOLEAN NOT NULL, + disable_properties BOOLEAN NOT NULL, + default_description CLOB NOT NULL, + default_comment CLOB NOT NULL, + comment CLOB NOT NULL, + not_selectable BOOLEAN NOT NULL, + name VARCHAR(255) NOT NULL, + last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, + datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, + alternative_names CLOB DEFAULT NULL, + eda_info_reference_prefix VARCHAR(255) DEFAULT NULL, + eda_info_invisible BOOLEAN DEFAULT NULL, + eda_info_exclude_from_bom BOOLEAN DEFAULT NULL, + eda_info_exclude_from_board BOOLEAN DEFAULT NULL, + eda_info_exclude_from_sim BOOLEAN DEFAULT NULL, + eda_info_kicad_symbol VARCHAR(255) DEFAULT NULL, + CONSTRAINT FK_3AF34668727ACA70 FOREIGN KEY (parent_id) REFERENCES categories (id) ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE, + CONSTRAINT FK_3AF34668EA7100A1 FOREIGN KEY (id_preview_attachment) REFERENCES attachments (id) ON UPDATE NO ACTION ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE + ) + SQL); + + $this->addSql(<<<'SQL' + INSERT INTO categories ( + id, + parent_id, + id_preview_attachment, + partname_hint, + partname_regex, + disable_footprints, + disable_manufacturers, + disable_autodatasheets, + disable_properties, + default_description, + default_comment, + comment, + not_selectable, + name, + last_modified, + datetime_added, + alternative_names, + eda_info_reference_prefix, + eda_info_invisible, + eda_info_exclude_from_bom, + eda_info_exclude_from_board, + eda_info_exclude_from_sim, + eda_info_kicad_symbol + ) SELECT + id, + parent_id, + id_preview_attachment, + partname_hint, + partname_regex, + disable_footprints, + disable_manufacturers, + disable_autodatasheets, + disable_properties, + default_description, + default_comment, + comment, + not_selectable, + name, + last_modified, + datetime_added, + alternative_names, + eda_info_reference_prefix, + eda_info_invisible, + eda_info_exclude_from_bom, + eda_info_exclude_from_board, + eda_info_exclude_from_sim, + eda_info_kicad_symbol + FROM __temp__categories + SQL); + + $this->addSql('DROP TABLE __temp__categories'); + + $this->addSql(<<<'SQL' + CREATE INDEX IDX_3AF34668727ACA70 ON categories (parent_id) + SQL); + $this->addSql(<<<'SQL' + CREATE INDEX IDX_3AF34668EA7100A1 ON categories (id_preview_attachment) + SQL); + $this->addSql(<<<'SQL' + CREATE INDEX category_idx_name ON categories (name) + SQL); + $this->addSql(<<<'SQL' + CREATE INDEX category_idx_parent_name ON categories (parent_id, name) + SQL); + } + + public function sqLiteDown(Schema $schema): void + { + $this->addSql(<<<'SQL' + CREATE TEMPORARY TABLE __temp__categories AS + SELECT + id, + parent_id, + id_preview_attachment, + partname_hint, + partname_regex, + disable_footprints, + disable_manufacturers, + disable_autodatasheets, + disable_properties, + default_description, + default_comment, + comment, + not_selectable, + name, + last_modified, + datetime_added, + alternative_names, + eda_info_reference_prefix, + eda_info_invisible, + eda_info_exclude_from_bom, + eda_info_exclude_from_board, + eda_info_exclude_from_sim, + eda_info_kicad_symbol + FROM categories + SQL); + + $this->addSql('DROP TABLE categories'); + + $this->addSql(<<<'SQL' + CREATE TABLE categories ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + parent_id INTEGER DEFAULT NULL, + id_preview_attachment INTEGER DEFAULT NULL, + partname_hint CLOB NOT NULL, + partname_regex CLOB NOT NULL, + disable_footprints BOOLEAN NOT NULL, + disable_manufacturers BOOLEAN NOT NULL, + disable_autodatasheets BOOLEAN NOT NULL, + disable_properties BOOLEAN NOT NULL, + default_description CLOB NOT NULL, + default_comment CLOB NOT NULL, + comment CLOB NOT NULL, + not_selectable BOOLEAN NOT NULL, + name VARCHAR(255) NOT NULL, + last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, + datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, + alternative_names CLOB DEFAULT NULL, + eda_info_reference_prefix VARCHAR(255) DEFAULT NULL, + eda_info_invisible BOOLEAN DEFAULT NULL, + eda_info_exclude_from_bom BOOLEAN DEFAULT NULL, + eda_info_exclude_from_board BOOLEAN DEFAULT NULL, + eda_info_exclude_from_sim BOOLEAN DEFAULT NULL, + eda_info_kicad_symbol VARCHAR(255) DEFAULT NULL, + CONSTRAINT FK_3AF34668727ACA70 FOREIGN KEY (parent_id) REFERENCES categories (id) ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE, + CONSTRAINT FK_3AF34668EA7100A1 FOREIGN KEY (id_preview_attachment) REFERENCES attachments (id) ON UPDATE NO ACTION ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE + ) + SQL); + + $this->addSql(<<<'SQL' + INSERT INTO categories ( + id, + parent_id, + id_preview_attachment, + partname_hint, + partname_regex, + disable_footprints, + disable_manufacturers, + disable_autodatasheets, + disable_properties, + default_description, + default_comment, + comment, + not_selectable, + name, + last_modified, + datetime_added, + alternative_names, + eda_info_reference_prefix, + eda_info_invisible, + eda_info_exclude_from_bom, + eda_info_exclude_from_board, + eda_info_exclude_from_sim, + eda_info_kicad_symbol + ) SELECT + id, + parent_id, + id_preview_attachment, + partname_hint, + partname_regex, + disable_footprints, + disable_manufacturers, + disable_autodatasheets, + disable_properties, + default_description, + default_comment, + comment, + not_selectable, + name, + last_modified, + datetime_added, + alternative_names, + eda_info_reference_prefix, + eda_info_invisible, + eda_info_exclude_from_bom, + eda_info_exclude_from_board, + eda_info_exclude_from_sim, + eda_info_kicad_symbol + FROM __temp__categories + SQL); + + $this->addSql('DROP TABLE __temp__categories'); + + $this->addSql(<<<'SQL' + CREATE INDEX IDX_3AF34668727ACA70 ON categories (parent_id) + SQL); + $this->addSql(<<<'SQL' + CREATE INDEX IDX_3AF34668EA7100A1 ON categories (id_preview_attachment) + SQL); + $this->addSql(<<<'SQL' + CREATE INDEX category_idx_name ON categories (name) + SQL); + $this->addSql(<<<'SQL' + CREATE INDEX category_idx_parent_name ON categories (parent_id, name) + SQL); + } + + public function postgreSQLUp(Schema $schema): void + { + $this->addSql(<<<'SQL' + ALTER TABLE categories ADD part_ipn_prefix VARCHAR(255) DEFAULT '' NOT NULL + SQL); + } + + public function postgreSQLDown(Schema $schema): void + { + $this->addSql(<<<'SQL' + ALTER TABLE "categories" DROP part_ipn_prefix + SQL); + } +} diff --git a/src/Controller/PartController.php b/src/Controller/PartController.php index aeb2664e..3a121ad2 100644 --- a/src/Controller/PartController.php +++ b/src/Controller/PartController.php @@ -47,6 +47,7 @@ use App\Services\Parts\PartLotWithdrawAddHelper; use App\Services\Parts\PricedetailHelper; use App\Services\ProjectSystem\ProjectBuildPartHelper; use App\Settings\BehaviorSettings\PartInfoSettings; +use App\Settings\MiscSettings\IpnSuggestSettings; use DateTime; use Doctrine\ORM\EntityManagerInterface; use Exception; @@ -74,6 +75,7 @@ final class PartController extends AbstractController private readonly EntityManagerInterface $em, private readonly EventCommentHelper $commentHelper, private readonly PartInfoSettings $partInfoSettings, + private readonly IpnSuggestSettings $ipnSuggestSettings, ) { } @@ -444,10 +446,13 @@ final class PartController extends AbstractController $template = 'parts/edit/update_from_ip.html.twig'; } + $partRepository = $this->em->getRepository(Part::class); + return $this->render( $template, [ 'part' => $new_part, + 'ipnSuggestions' => $partRepository->autoCompleteIpn($data, $data->getDescription(), $this->ipnSuggestSettings->suggestPartDigits), 'form' => $form, 'merge_old_name' => $merge_infos['tname_before'] ?? null, 'merge_other' => $merge_infos['other_part'] ?? null, @@ -457,7 +462,6 @@ final class PartController extends AbstractController ); } - #[Route(path: '/{id}/add_withdraw', name: 'part_add_withdraw', methods: ['POST'])] public function withdrawAddHandler(Part $part, Request $request, EntityManagerInterface $em, PartLotWithdrawAddHelper $withdrawAddHelper): Response { diff --git a/src/Controller/TypeaheadController.php b/src/Controller/TypeaheadController.php index 89eac7ff..39821f59 100644 --- a/src/Controller/TypeaheadController.php +++ b/src/Controller/TypeaheadController.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace App\Controller; use App\Entity\Parameters\AbstractParameter; +use App\Settings\MiscSettings\IpnSuggestSettings; use Symfony\Component\HttpFoundation\Response; use App\Entity\Attachments\Attachment; use App\Entity\Parts\Category; @@ -60,8 +61,11 @@ use Symfony\Component\Serializer\Serializer; #[Route(path: '/typeahead')] class TypeaheadController extends AbstractController { - public function __construct(protected AttachmentURLGenerator $urlGenerator, protected Packages $assets) - { + public function __construct( + protected AttachmentURLGenerator $urlGenerator, + protected Packages $assets, + protected IpnSuggestSettings $ipnSuggestSettings, + ) { } #[Route(path: '/builtInResources/search', name: 'typeahead_builtInRessources')] @@ -183,4 +187,30 @@ class TypeaheadController extends AbstractController return new JsonResponse($data, Response::HTTP_OK, [], true); } + + #[Route(path: '/parts/ipn-suggestions', name: 'ipn_suggestions', methods: ['GET'])] + public function ipnSuggestions( + Request $request, + EntityManagerInterface $entityManager + ): JsonResponse { + $partId = $request->query->get('partId'); + if ($partId === '0' || $partId === 'undefined' || $partId === 'null') { + $partId = null; + } + $categoryId = $request->query->getInt('categoryId'); + $description = base64_decode($request->query->getString('description'), true); + + /** @var Part $part */ + $part = $partId !== null ? $entityManager->getRepository(Part::class)->find($partId) : new Part(); + /** @var Category|null $category */ + $category = $entityManager->getRepository(Category::class)->find($categoryId); + + $clonedPart = clone $part; + $clonedPart->setCategory($category); + + $partRepository = $entityManager->getRepository(Part::class); + $ipnSuggestions = $partRepository->autoCompleteIpn($clonedPart, $description, $this->ipnSuggestSettings->suggestPartDigits); + + return new JsonResponse($ipnSuggestions); + } } diff --git a/src/Entity/Parts/Category.php b/src/Entity/Parts/Category.php index 99ed3c6d..7fca81bc 100644 --- a/src/Entity/Parts/Category.php +++ b/src/Entity/Parts/Category.php @@ -118,6 +118,13 @@ class Category extends AbstractPartsContainingDBElement #[ORM\Column(type: Types::TEXT)] protected string $partname_regex = ''; + /** + * @var string The prefix for ipn generation for created parts in this category. + */ + #[Groups(['full', 'import', 'category:read', 'category:write'])] + #[ORM\Column(type: Types::STRING, length: 255, nullable: false, options: ['default' => ''])] + protected string $part_ipn_prefix = ''; + /** * @var bool Set to true, if the footprints should be disabled for parts this category (not implemented yet). */ @@ -225,6 +232,16 @@ class Category extends AbstractPartsContainingDBElement return $this; } + public function getPartIpnPrefix(): string + { + return $this->part_ipn_prefix; + } + + public function setPartIpnPrefix(string $part_ipn_prefix): void + { + $this->part_ipn_prefix = $part_ipn_prefix; + } + public function isDisableFootprints(): bool { return $this->disable_footprints; diff --git a/src/Entity/Parts/Part.php b/src/Entity/Parts/Part.php index f1dd6040..d0a279e3 100644 --- a/src/Entity/Parts/Part.php +++ b/src/Entity/Parts/Part.php @@ -61,7 +61,6 @@ use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\Common\Collections\Criteria; use Doctrine\ORM\Mapping as ORM; -use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Context\ExecutionContextInterface; @@ -75,7 +74,6 @@ use Symfony\Component\Validator\Context\ExecutionContextInterface; * @extends AttachmentContainingDBElement * @template-use ParametersTrait */ -#[UniqueEntity(fields: ['ipn'], message: 'part.ipn.must_be_unique')] #[ORM\Entity(repositoryClass: PartRepository::class)] #[ORM\EntityListeners([TreeCacheInvalidationListener::class])] #[ORM\Table('`parts`')] diff --git a/src/Entity/Parts/PartTraits/AdvancedPropertyTrait.php b/src/Entity/Parts/PartTraits/AdvancedPropertyTrait.php index dd541d79..2cee7f1a 100644 --- a/src/Entity/Parts/PartTraits/AdvancedPropertyTrait.php +++ b/src/Entity/Parts/PartTraits/AdvancedPropertyTrait.php @@ -30,6 +30,7 @@ use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Constraints\Length; +use App\Validator\Constraints\UniquePartIpnConstraint; /** * Advanced properties of a part, not related to a more specific group. @@ -65,6 +66,7 @@ trait AdvancedPropertyTrait #[Groups(['extended', 'full', 'import', 'part:read', 'part:write'])] #[ORM\Column(type: Types::STRING, length: 100, unique: true, nullable: true)] #[Length(max: 100)] + #[UniquePartIpnConstraint] protected ?string $ipn = null; /** diff --git a/src/EventSubscriber/UserSystem/PartUniqueIpnSubscriber.php b/src/EventSubscriber/UserSystem/PartUniqueIpnSubscriber.php new file mode 100644 index 00000000..ecc25b4f --- /dev/null +++ b/src/EventSubscriber/UserSystem/PartUniqueIpnSubscriber.php @@ -0,0 +1,97 @@ +ipnSuggestSettings->autoAppendSuffix) { + return; + } + + $em = $args->getObjectManager(); + $uow = $em->getUnitOfWork(); + $meta = $em->getClassMetadata(Part::class); + + // Collect all IPNs already reserved in the current flush (so new entities do not collide with each other) + $reservedIpns = []; + + // Helper to assign a collision-free IPN for a Part entity + $ensureUnique = function (Part $part) use ($em, $uow, $meta, &$reservedIpns) { + $ipn = $part->getIpn(); + if ($ipn === null || $ipn === '') { + return; + } + + // Check against IPNs already reserved in the current flush (except itself) + $originalIpn = $ipn; + $candidate = $originalIpn; + $increment = 1; + + $conflicts = function (string $candidate) use ($em, $part, $reservedIpns) { + // Collision within the current flush session? + if (isset($reservedIpns[$candidate]) && $reservedIpns[$candidate] !== $part) { + return true; + } + // Collision with an existing DB row? + $existing = $em->getRepository(Part::class)->findOneBy(['ipn' => $candidate]); + return $existing !== null && $existing->getId() !== $part->getId(); + }; + + while ($conflicts($candidate)) { + $candidate = $originalIpn . '_' . $increment; + $increment++; + } + + if ($candidate !== $ipn) { + $before = $part->getIpn(); + $part->setIpn($candidate); + + // Recompute the change set so Doctrine writes the change + $uow->recomputeSingleEntityChangeSet($meta, $part); + $reservedIpns[$candidate] = $part; + + // If the old IPN was reserved already, clean it up + if ($before !== null && isset($reservedIpns[$before]) && $reservedIpns[$before] === $part) { + unset($reservedIpns[$before]); + } + } else { + // Candidate unchanged, but reserve it so subsequent entities see it + $reservedIpns[$candidate] = $part; + } + }; + + // 1) Iterate over new entities + foreach ($uow->getScheduledEntityInsertions() as $entity) { + if ($entity instanceof Part) { + $ensureUnique($entity); + } + } + + // 2) Iterate over updates (if IPN changed, ensure uniqueness again) + foreach ($uow->getScheduledEntityUpdates() as $entity) { + if ($entity instanceof Part) { + $ensureUnique($entity); + } + } + } +} diff --git a/src/Form/AdminPages/CategoryAdminForm.php b/src/Form/AdminPages/CategoryAdminForm.php index 44c1dede..489649ed 100644 --- a/src/Form/AdminPages/CategoryAdminForm.php +++ b/src/Form/AdminPages/CategoryAdminForm.php @@ -84,6 +84,17 @@ class CategoryAdminForm extends BaseEntityAdminForm 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'edit', $entity), ]); + $builder->add('part_ipn_prefix', TextType::class, [ + 'required' => false, + 'empty_data' => '', + 'label' => 'category.edit.part_ipn_prefix', + 'help' => 'category.edit.part_ipn_prefix.help', + 'attr' => [ + 'placeholder' => 'category.edit.part_ipn_prefix.placeholder', + ], + 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'edit', $entity), + ]); + $builder->add('default_description', RichTextEditorType::class, [ 'required' => false, 'empty_data' => '', diff --git a/src/Form/Part/PartBaseType.php b/src/Form/Part/PartBaseType.php index f0ba180e..b8276589 100644 --- a/src/Form/Part/PartBaseType.php +++ b/src/Form/Part/PartBaseType.php @@ -42,6 +42,7 @@ use App\Form\Type\StructuralEntityType; use App\Services\InfoProviderSystem\DTOs\PartDetailDTO; use App\Services\LogSystem\EventCommentNeededHelper; use App\Services\LogSystem\EventCommentType; +use App\Settings\MiscSettings\IpnSuggestSettings; use Symfony\Bundle\SecurityBundle\Security; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; @@ -57,8 +58,12 @@ use Symfony\Component\Routing\Generator\UrlGeneratorInterface; class PartBaseType extends AbstractType { - public function __construct(protected Security $security, protected UrlGeneratorInterface $urlGenerator, protected EventCommentNeededHelper $event_comment_needed_helper) - { + public function __construct( + protected Security $security, + protected UrlGeneratorInterface $urlGenerator, + protected EventCommentNeededHelper $event_comment_needed_helper, + protected IpnSuggestSettings $ipnSuggestSettings, + ) { } public function buildForm(FormBuilderInterface $builder, array $options): void @@ -70,6 +75,39 @@ class PartBaseType extends AbstractType /** @var PartDetailDTO|null $dto */ $dto = $options['info_provider_dto']; + $descriptionAttr = [ + 'placeholder' => 'part.edit.description.placeholder', + 'rows' => 2, + ]; + + if ($this->ipnSuggestSettings->useDuplicateDescription) { + // Only add attribute when duplicate description feature is enabled + $descriptionAttr['data-ipn-suggestion'] = 'descriptionField'; + } + + $ipnAttr = [ + 'class' => 'ipn-suggestion-field', + 'data-elements--ipn-suggestion-target' => 'input', + 'autocomplete' => 'off', + ]; + + if ($this->ipnSuggestSettings->regex !== null && $this->ipnSuggestSettings->regex !== '') { + $ipnAttr['pattern'] = $this->ipnSuggestSettings->regex; + $ipnAttr['placeholder'] = $this->ipnSuggestSettings->regex; + $ipnAttr['title'] = $this->ipnSuggestSettings->regexHelp; + } + + $ipnOptions = [ + 'required' => false, + 'empty_data' => null, + 'label' => 'part.edit.ipn', + 'attr' => $ipnAttr, + ]; + + if (isset($ipnAttr['pattern']) && $this->ipnSuggestSettings->regexHelp !== null && $this->ipnSuggestSettings->regexHelp !== '') { + $ipnOptions['help'] = $this->ipnSuggestSettings->regexHelp; + } + //Common section $builder ->add('name', TextType::class, [ @@ -84,10 +122,7 @@ class PartBaseType extends AbstractType 'empty_data' => '', 'label' => 'part.edit.description', 'mode' => 'markdown-single_line', - 'attr' => [ - 'placeholder' => 'part.edit.description.placeholder', - 'rows' => 2, - ], + 'attr' => $descriptionAttr, ]) ->add('minAmount', SIUnitType::class, [ 'attr' => [ @@ -105,6 +140,9 @@ class PartBaseType extends AbstractType 'disable_not_selectable' => true, //Do not require category for new parts, so that the user must select the category by hand and cannot forget it (the requirement is handled by the constraint in the entity) 'required' => !$new_part, + 'attr' => [ + 'data-ipn-suggestion' => 'categoryField', + ] ]) ->add('footprint', StructuralEntityType::class, [ 'class' => Footprint::class, @@ -178,11 +216,7 @@ class PartBaseType extends AbstractType 'disable_not_selectable' => true, 'label' => 'part.edit.partCustomState', ]) - ->add('ipn', TextType::class, [ - 'required' => false, - 'empty_data' => null, - 'label' => 'part.edit.ipn', - ]); + ->add('ipn', TextType::class, $ipnOptions); //Comment section $builder->add('comment', RichTextEditorType::class, [ diff --git a/src/Repository/PartRepository.php b/src/Repository/PartRepository.php index edccd74b..3c83001a 100644 --- a/src/Repository/PartRepository.php +++ b/src/Repository/PartRepository.php @@ -22,17 +22,35 @@ declare(strict_types=1); namespace App\Repository; +use App\Entity\Parts\Category; use App\Entity\Parts\Part; use App\Entity\Parts\PartLot; +use App\Settings\MiscSettings\IpnSuggestSettings; use Doctrine\ORM\NonUniqueResultException; use Doctrine\ORM\NoResultException; use Doctrine\ORM\QueryBuilder; +use Symfony\Contracts\Translation\TranslatorInterface; +use Doctrine\ORM\EntityManagerInterface; /** * @extends NamedDBElementRepository */ class PartRepository extends NamedDBElementRepository { + private TranslatorInterface $translator; + private IpnSuggestSettings $ipnSuggestSettings; + + public function __construct( + EntityManagerInterface $em, + TranslatorInterface $translator, + IpnSuggestSettings $ipnSuggestSettings, + ) { + parent::__construct($em, $em->getClassMetadata(Part::class)); + + $this->translator = $translator; + $this->ipnSuggestSettings = $ipnSuggestSettings; + } + /** * Gets the summed up instock of all parts (only parts without a measurement unit). * @@ -84,8 +102,7 @@ class PartRepository extends NamedDBElementRepository ->where('ILIKE(part.name, :query) = TRUE') ->orWhere('ILIKE(part.description, :query) = TRUE') ->orWhere('ILIKE(category.name, :query) = TRUE') - ->orWhere('ILIKE(footprint.name, :query) = TRUE') - ; + ->orWhere('ILIKE(footprint.name, :query) = TRUE'); $qb->setParameter('query', '%'.$query.'%'); @@ -94,4 +111,240 @@ class PartRepository extends NamedDBElementRepository return $qb->getQuery()->getResult(); } + + /** + * Provides IPN (Internal Part Number) suggestions for a given part based on its category, description, + * and configured autocomplete digit length. + * + * This function generates suggestions for common prefixes and incremented prefixes based on + * the part's current category and its hierarchy. If the part is unsaved, a default "n.a." prefix is returned. + * + * @param Part $part The part for which autocomplete suggestions are generated. + * @param string $description description to assist in generating suggestions. + * @param int $suggestPartDigits The number of digits used in autocomplete increments. + * + * @return array An associative array containing the following keys: + * - 'commonPrefixes': List of common prefixes found for the part. + * - 'prefixesPartIncrement': Increments for the generated prefixes, including hierarchical prefixes. + */ + public function autoCompleteIpn(Part $part, string $description, int $suggestPartDigits): array + { + $category = $part->getCategory(); + $ipnSuggestions = ['commonPrefixes' => [], 'prefixesPartIncrement' => []]; + + if (strlen($description) > 150) { + $description = substr($description, 0, 150); + } + + if ($description !== '' && $this->ipnSuggestSettings->useDuplicateDescription) { + // Check if the description is already used in another part, + + $suggestionByDescription = $this->getIpnSuggestByDescription($description); + + if ($suggestionByDescription !== null && $suggestionByDescription !== $part->getIpn() && $part->getIpn() !== null && $part->getIpn() !== '') { + $ipnSuggestions['prefixesPartIncrement'][] = [ + 'title' => $part->getIpn(), + 'description' => $this->translator->trans('part.edit.tab.advanced.ipn.prefix.description.current-increment') + ]; + } + + if ($suggestionByDescription !== null) { + $ipnSuggestions['prefixesPartIncrement'][] = [ + 'title' => $suggestionByDescription, + 'description' => $this->translator->trans('part.edit.tab.advanced.ipn.prefix.description.increment') + ]; + } + } + + // Validate the category and ensure it's an instance of Category + if ($category instanceof Category) { + $currentPath = $category->getPartIpnPrefix(); + $directIpnPrefixEmpty = $category->getPartIpnPrefix() === ''; + $currentPath = $currentPath === '' ? 'n.a.' : $currentPath; + + $increment = $this->generateNextPossiblePartIncrement($currentPath, $part, $suggestPartDigits); + + $ipnSuggestions['commonPrefixes'][] = [ + 'title' => $currentPath . '-', + 'description' => $directIpnPrefixEmpty ? $this->translator->trans('part.edit.tab.advanced.ipn.prefix_empty.direct_category', ['%name%' => $category->getName()]) : $this->translator->trans('part.edit.tab.advanced.ipn.prefix.direct_category') + ]; + + $ipnSuggestions['prefixesPartIncrement'][] = [ + 'title' => $currentPath . '-' . $increment, + 'description' => $directIpnPrefixEmpty ? $this->translator->trans('part.edit.tab.advanced.ipn.prefix_empty.direct_category', ['%name%' => $category->getName()]) : $this->translator->trans('part.edit.tab.advanced.ipn.prefix.direct_category.increment') + ]; + + // Process parent categories + $parentCategory = $category->getParent(); + + while ($parentCategory instanceof Category) { + // Prepend the parent category's prefix to the current path + $currentPath = $parentCategory->getPartIpnPrefix() . '-' . $currentPath; + $currentPath = $parentCategory->getPartIpnPrefix() === '' ? 'n.a.-' . $currentPath : $currentPath; + + $ipnSuggestions['commonPrefixes'][] = [ + 'title' => $currentPath . '-', + 'description' => $this->translator->trans('part.edit.tab.advanced.ipn.prefix.hierarchical.no_increment') + ]; + + $increment = $this->generateNextPossiblePartIncrement($currentPath, $part, $suggestPartDigits); + + $ipnSuggestions['prefixesPartIncrement'][] = [ + 'title' => $currentPath . '-' . $increment, + 'description' => $this->translator->trans('part.edit.tab.advanced.ipn.prefix.hierarchical.increment') + ]; + + // Move to the next parent category + $parentCategory = $parentCategory->getParent(); + } + } elseif ($part->getID() === null) { + $ipnSuggestions['commonPrefixes'][] = [ + 'title' => 'n.a.', + 'description' => $this->translator->trans('part.edit.tab.advanced.ipn.prefix.not_saved') + ]; + } + + return $ipnSuggestions; + } + + /** + * Suggests the next IPN (Internal Part Number) based on the provided part description. + * + * Searches for parts with similar descriptions and retrieves their existing IPNs to calculate the next suggestion. + * Returns null if the description is empty or no suggestion can be generated. + * + * @param string $description The part description to search for. + * + * @return string|null The suggested IPN, or null if no suggestion is possible. + * + * @throws NonUniqueResultException + */ + public function getIpnSuggestByDescription(string $description): ?string + { + if ($description === '') { + return null; + } + + $qb = $this->createQueryBuilder('part'); + + $qb->select('part') + ->where('part.description LIKE :descriptionPattern') + ->setParameter('descriptionPattern', $description.'%') + ->orderBy('part.id', 'ASC'); + + $partsBySameDescription = $qb->getQuery()->getResult(); + $givenIpnsWithSameDescription = []; + + foreach ($partsBySameDescription as $part) { + if ($part->getIpn() === null || $part->getIpn() === '') { + continue; + } + + $givenIpnsWithSameDescription[] = $part->getIpn(); + } + + return $this->getNextIpnSuggestion($givenIpnsWithSameDescription); + } + + /** + * Generates the next possible increment for a part within a given category, while ensuring uniqueness. + * + * This method calculates the next available increment for a part's identifier (`ipn`) based on the current path + * and the number of digits specified for the autocomplete feature. It ensures that the generated identifier + * aligns with the expected length and does not conflict with already existing identifiers in the same category. + * + * @param string $currentPath The base path or prefix for the part's identifier. + * @param Part $currentPart The part entity for which the increment is being generated. + * @param int $suggestPartDigits The number of digits reserved for the increment. + * + * @return string The next possible increment as a zero-padded string. + * + * @throws NonUniqueResultException If the query returns non-unique results. + * @throws NoResultException If the query fails to return a result. + */ + private function generateNextPossiblePartIncrement(string $currentPath, Part $currentPart, int $suggestPartDigits): string + { + $qb = $this->createQueryBuilder('part'); + + $expectedLength = strlen($currentPath) + 1 + $suggestPartDigits; // Path + '-' + $suggestPartDigits digits + + // Fetch all parts in the given category, sorted by their ID in ascending order + $qb->select('part') + ->where('part.ipn LIKE :ipnPattern') + ->andWhere('LENGTH(part.ipn) = :expectedLength') + ->setParameter('ipnPattern', $currentPath . '%') + ->setParameter('expectedLength', $expectedLength) + ->orderBy('part.id', 'ASC'); + + $parts = $qb->getQuery()->getResult(); + + // Collect all used increments in the category + $usedIncrements = []; + foreach ($parts as $part) { + if ($part->getIpn() === null || $part->getIpn() === '') { + continue; + } + + if ($part->getId() === $currentPart->getId() && $currentPart->getID() !== null) { + // Extract and return the current part's increment directly + $incrementPart = substr($part->getIpn(), -$suggestPartDigits); + if (is_numeric($incrementPart)) { + return str_pad((string) $incrementPart, $suggestPartDigits, '0', STR_PAD_LEFT); + } + } + + // Extract last $autocompletePartDigits digits for possible available part increment + $incrementPart = substr($part->getIpn(), -$suggestPartDigits); + if (is_numeric($incrementPart)) { + $usedIncrements[] = (int) $incrementPart; + } + + } + + // Generate the next free $autocompletePartDigits-digit increment + $nextIncrement = 1; // Start at the beginning + + while (in_array($nextIncrement, $usedIncrements, true)) { + $nextIncrement++; + } + + return str_pad((string) $nextIncrement, $suggestPartDigits, '0', STR_PAD_LEFT); + } + + /** + * Generates the next IPN suggestion based on the maximum numeric suffix found in the given IPNs. + * + * The new IPN is constructed using the base format of the first provided IPN, + * incremented by the next free numeric suffix. If no base IPNs are found, + * returns null. + * + * @param array $givenIpns List of IPNs to analyze. + * + * @return string|null The next suggested IPN, or null if no base IPNs can be derived. + */ + private function getNextIpnSuggestion(array $givenIpns): ?string { + $maxSuffix = 0; + + foreach ($givenIpns as $ipn) { + // Check whether the IPN contains a suffix "_ " + if (preg_match('/_(\d+)$/', $ipn, $matches)) { + $suffix = (int)$matches[1]; + if ($suffix > $maxSuffix) { + $maxSuffix = $suffix; // Höchste Nummer speichern + } + } + } + + // Find the basic format (the IPN without suffix) from the first IPN + $baseIpn = $givenIpns[0] ?? ''; + $baseIpn = preg_replace('/_\d+$/', '', $baseIpn); // Remove existing "_ " + + if ($baseIpn === '') { + return null; + } + + // Generate next free possible IPN + return $baseIpn . '_' . ($maxSuffix + 1); + } + } diff --git a/src/Settings/MiscSettings/IpnSuggestSettings.php b/src/Settings/MiscSettings/IpnSuggestSettings.php new file mode 100644 index 00000000..891b885c --- /dev/null +++ b/src/Settings/MiscSettings/IpnSuggestSettings.php @@ -0,0 +1,80 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Settings\MiscSettings; + +use App\Settings\SettingsIcon; +use Jbtronics\SettingsBundle\Metadata\EnvVarMode; +use Jbtronics\SettingsBundle\ParameterTypes\StringType; +use Jbtronics\SettingsBundle\Settings\Settings; +use Jbtronics\SettingsBundle\Settings\SettingsParameter; +use Jbtronics\SettingsBundle\Settings\SettingsTrait; +use Symfony\Component\Translation\TranslatableMessage as TM; +use Symfony\Component\Validator\Constraints as Assert; + +#[Settings(label: new TM("settings.misc.ipn_suggest"))] +#[SettingsIcon("fa-list")] +class IpnSuggestSettings +{ + use SettingsTrait; + + #[SettingsParameter( + label: new TM("settings.misc.ipn_suggest.regex"), + description: new TM("settings.misc.ipn_suggest.regex.help"), + options: ['type' => StringType::class], + formOptions: ['attr' => ['placeholder' => '^[A-Za-z0-9]{3,4}(?:-[A-Za-z0-9]{3,4})*-\d{4}$']], + envVar: "IPN_SUGGEST_REGEX", envVarMode: EnvVarMode::OVERWRITE, + )] + public ?string $regex = null; + + #[SettingsParameter( + label: new TM("settings.misc.ipn_suggest.regex_help"), + description: new TM("settings.misc.ipn_suggest.regex_help_description"), + options: ['type' => StringType::class], + formOptions: ['attr' => ['placeholder' => 'Format: 3–4 alphanumeric segments (any number) separated by "-", followed by "-" and 4 digits, e.g., PCOM-RES-0001']], + envVar: "IPN_SUGGEST_REGEX_HELP", envVarMode: EnvVarMode::OVERWRITE, + )] + public ?string $regexHelp = null; + + #[SettingsParameter( + label: new TM("settings.misc.ipn_suggest.autoAppendSuffix"), + envVar: "bool:IPN_AUTO_APPEND_SUFFIX", envVarMode: EnvVarMode::OVERWRITE, + )] + public bool $autoAppendSuffix = false; + + #[SettingsParameter(label: new TM("settings.misc.ipn_suggest.suggestPartDigits"), + description: new TM("settings.misc.ipn_suggest.suggestPartDigits.help"), + formOptions: ['attr' => ['min' => 1, 'max' => 8]], + envVar: "int:IPN_SUGGEST_PART_DIGITS", envVarMode: EnvVarMode::OVERWRITE + )] + #[Assert\Range(min: 1, max: 8)] + public int $suggestPartDigits = 4; + + #[SettingsParameter( + label: new TM("settings.misc.ipn_suggest.useDuplicateDescription"), + description: new TM("settings.misc.ipn_suggest.useDuplicateDescription.help"), + envVar: "bool:IPN_USE_DUPLICATE_DESCRIPTION", envVarMode: EnvVarMode::OVERWRITE, + )] + public bool $useDuplicateDescription = false; +} diff --git a/src/Settings/MiscSettings/MiscSettings.php b/src/Settings/MiscSettings/MiscSettings.php index 1c304d4a..050dbcbc 100644 --- a/src/Settings/MiscSettings/MiscSettings.php +++ b/src/Settings/MiscSettings/MiscSettings.php @@ -35,4 +35,7 @@ class MiscSettings #[EmbeddedSettings] public ?ExchangeRateSettings $exchangeRate = null; + + #[EmbeddedSettings] + public ?IpnSuggestSettings $ipnSuggestSettings = null; } diff --git a/src/Validator/Constraints/UniquePartIpnConstraint.php b/src/Validator/Constraints/UniquePartIpnConstraint.php new file mode 100644 index 00000000..ca32f9ef --- /dev/null +++ b/src/Validator/Constraints/UniquePartIpnConstraint.php @@ -0,0 +1,22 @@ +entityManager = $entityManager; + $this->ipnSuggestSettings = $ipnSuggestSettings; + } + + public function validate($value, Constraint $constraint): void + { + if (null === $value || '' === $value) { + return; + } + + //If the autoAppendSuffix option is enabled, the IPN becomes unique automatically later + if ($this->ipnSuggestSettings->autoAppendSuffix) { + return; + } + + if (!$constraint instanceof UniquePartIpnConstraint) { + return; + } + + /** @var Part $currentPart */ + $currentPart = $this->context->getObject(); + + if (!$currentPart instanceof Part) { + return; + } + + $repository = $this->entityManager->getRepository(Part::class); + $existingParts = $repository->findBy(['ipn' => $value]); + + foreach ($existingParts as $existingPart) { + if ($currentPart->getId() !== $existingPart->getId()) { + $this->context->buildViolation($constraint->message) + ->setParameter('{{ value }}', $value) + ->addViolation(); + } + } + } +} diff --git a/templates/admin/category_admin.html.twig b/templates/admin/category_admin.html.twig index 5811640b..d87cee7f 100644 --- a/templates/admin/category_admin.html.twig +++ b/templates/admin/category_admin.html.twig @@ -31,6 +31,7 @@
    {{ form_row(form.partname_regex) }} {{ form_row(form.partname_hint) }} + {{ form_row(form.part_ipn_prefix) }}
    {{ form_row(form.default_description) }} {{ form_row(form.default_comment) }} diff --git a/templates/parts/edit/_advanced.html.twig b/templates/parts/edit/_advanced.html.twig index 46aac7b6..b0f1ff86 100644 --- a/templates/parts/edit/_advanced.html.twig +++ b/templates/parts/edit/_advanced.html.twig @@ -1,6 +1,16 @@ {{ form_row(form.needsReview) }} {{ form_row(form.favorite) }} {{ form_row(form.mass) }} -{{ form_row(form.ipn) }} +
    + {{ form_row(form.ipn) }} +
    {{ form_row(form.partUnit) }} {{ form_row(form.partCustomState) }} \ No newline at end of file diff --git a/tests/Repository/PartRepositoryTest.php b/tests/Repository/PartRepositoryTest.php new file mode 100644 index 00000000..68b75abb --- /dev/null +++ b/tests/Repository/PartRepositoryTest.php @@ -0,0 +1,297 @@ +. + */ + +declare(strict_types=1); + +namespace App\Tests\Repository; + +use App\Entity\Parts\Category; +use App\Entity\Parts\Part; +use App\Settings\MiscSettings\IpnSuggestSettings; +use Doctrine\ORM\EntityManagerInterface; +use Doctrine\ORM\Mapping\ClassMetadata; +use PHPUnit\Framework\TestCase; +use Doctrine\ORM\Query; +use Doctrine\ORM\QueryBuilder; +use Symfony\Contracts\Translation\TranslatorInterface; +use App\Repository\PartRepository; + +final class PartRepositoryTest extends TestCase +{ + public function test_autocompleteSearch_builds_expected_query_without_db(): void + { + $qb = $this->getMockBuilder(QueryBuilder::class) + ->disableOriginalConstructor() + ->onlyMethods([ + 'select', 'leftJoin', 'where', 'orWhere', + 'setParameter', 'setMaxResults', 'orderBy', 'getQuery' + ])->getMock(); + + $qb->expects(self::once())->method('select')->with('part')->willReturnSelf(); + + $qb->expects(self::exactly(2))->method('leftJoin')->with($this->anything(), $this->anything())->willReturnSelf(); + + $qb->expects(self::atLeastOnce())->method('where')->with($this->anything())->willReturnSelf(); + $qb->method('orWhere')->with($this->anything())->willReturnSelf(); + + $searchQuery = 'res'; + $qb->expects(self::once())->method('setParameter')->with('query', '%'.$searchQuery.'%')->willReturnSelf(); + $qb->expects(self::once())->method('setMaxResults')->with(10)->willReturnSelf(); + $qb->expects(self::once())->method('orderBy')->with('NATSORT(part.name)', 'ASC')->willReturnSelf(); + + $emMock = $this->createMock(EntityManagerInterface::class); + $classMetadata = new ClassMetadata(Part::class); + $emMock->method('getClassMetadata')->with(Part::class)->willReturn($classMetadata); + + $translatorMock = $this->createMock(TranslatorInterface::class); + $ipnSuggestSettings = $this->createMock(IpnSuggestSettings::class); + + $repo = $this->getMockBuilder(PartRepository::class) + ->setConstructorArgs([$emMock, $translatorMock, $ipnSuggestSettings]) + ->onlyMethods(['createQueryBuilder']) + ->getMock(); + + $repo->expects(self::once()) + ->method('createQueryBuilder') + ->with('part') + ->willReturn($qb); + + $part = new Part(); // create found part, because it is not saved in DB + $part->setName('Resistor'); + + $queryMock = $this->getMockBuilder(Query::class) + ->disableOriginalConstructor() + ->onlyMethods(['getResult']) + ->getMock(); + $queryMock->expects(self::once())->method('getResult')->willReturn([$part]); + + $qb->method('getQuery')->willReturn($queryMock); + + $result = $repo->autocompleteSearch($searchQuery, 10); + + // Check one part found and returned + self::assertIsArray($result); + self::assertCount(1, $result); + self::assertSame($part, $result[0]); + } + + public function test_autoCompleteIpn_with_unsaved_part_and_category_without_part_description(): void + { + $qb = $this->getMockBuilder(QueryBuilder::class) + ->disableOriginalConstructor() + ->onlyMethods([ + 'select', 'leftJoin', 'where', 'andWhere', 'orWhere', + 'setParameter', 'setMaxResults', 'orderBy', 'getQuery' + ])->getMock(); + + $qb->method('select')->willReturnSelf(); + $qb->method('leftJoin')->willReturnSelf(); + $qb->method('where')->willReturnSelf(); + $qb->method('andWhere')->willReturnSelf(); + $qb->method('orWhere')->willReturnSelf(); + $qb->method('setParameter')->willReturnSelf(); + $qb->method('setMaxResults')->willReturnSelf(); + $qb->method('orderBy')->willReturnSelf(); + + $emMock = $this->createMock(EntityManagerInterface::class); + $classMetadata = new ClassMetadata(Part::class); + $emMock->method('getClassMetadata')->with(Part::class)->willReturn($classMetadata); + + $translatorMock = $this->createMock(TranslatorInterface::class); + $translatorMock->method('trans') + ->willReturnCallback(static function (string $id, array $parameters = [], ?string $domain = null, ?string $locale = null): string { + return $id; + }); + + $ipnSuggestSettings = $this->createMock(IpnSuggestSettings::class); + + $ipnSuggestSettings->suggestPartDigits = 4; + $ipnSuggestSettings->useDuplicateDescription = false; + + $repo = $this->getMockBuilder(PartRepository::class) + ->setConstructorArgs([$emMock, $translatorMock, $ipnSuggestSettings]) + ->onlyMethods(['createQueryBuilder']) + ->getMock(); + + $repo->expects(self::atLeastOnce()) + ->method('createQueryBuilder') + ->with('part') + ->willReturn($qb); + + $queryMock = $this->getMockBuilder(Query::class) + ->disableOriginalConstructor() + ->onlyMethods(['getResult']) + ->getMock(); + + $categoryParent = new Category(); + $categoryParent->setName('Passive components'); + $categoryParent->setPartIpnPrefix('PCOM'); + + $categoryChild = new Category(); + $categoryChild->setName('Resistors'); + $categoryChild->setPartIpnPrefix('RES'); + $categoryChild->setParent($categoryParent); + + $partForSuggestGeneration = new Part(); // create found part, because it is not saved in DB + $partForSuggestGeneration->setIpn('RES-0001'); + $partForSuggestGeneration->setCategory($categoryChild); + + $queryMock->method('getResult')->willReturn([$partForSuggestGeneration]); + $qb->method('getQuery')->willReturn($queryMock); + $suggestions = $repo->autoCompleteIpn($partForSuggestGeneration, '', 4); + + // Check structure available + self::assertIsArray($suggestions); + self::assertArrayHasKey('commonPrefixes', $suggestions); + self::assertArrayHasKey('prefixesPartIncrement', $suggestions); + self::assertNotEmpty($suggestions['commonPrefixes']); + self::assertNotEmpty($suggestions['prefixesPartIncrement']); + + // Check expected values + self::assertSame('RES-', $suggestions['commonPrefixes'][0]['title']); + self::assertSame('part.edit.tab.advanced.ipn.prefix.direct_category', $suggestions['commonPrefixes'][0]['description']); + self::assertSame('PCOM-RES-', $suggestions['commonPrefixes'][1]['title']); + self::assertSame('part.edit.tab.advanced.ipn.prefix.hierarchical.no_increment', $suggestions['commonPrefixes'][1]['description']); + + self::assertSame('RES-0002', $suggestions['prefixesPartIncrement'][0]['title']); // next possible free increment for given part category + self::assertSame('part.edit.tab.advanced.ipn.prefix.direct_category.increment', $suggestions['prefixesPartIncrement'][0]['description']); + self::assertSame('PCOM-RES-0002', $suggestions['prefixesPartIncrement'][1]['title']); // next possible free increment for given part category + self::assertSame('part.edit.tab.advanced.ipn.prefix.hierarchical.increment', $suggestions['prefixesPartIncrement'][1]['description']); + } + + public function test_autoCompleteIpn_with_unsaved_part_and_category_with_part_description(): void + { + $qb = $this->getMockBuilder(QueryBuilder::class) + ->disableOriginalConstructor() + ->onlyMethods([ + 'select', 'leftJoin', 'where', 'andWhere', 'orWhere', + 'setParameter', 'setMaxResults', 'orderBy', 'getQuery' + ])->getMock(); + + $qb->method('select')->willReturnSelf(); + $qb->method('leftJoin')->willReturnSelf(); + $qb->method('where')->willReturnSelf(); + $qb->method('andWhere')->willReturnSelf(); + $qb->method('orWhere')->willReturnSelf(); + $qb->method('setParameter')->willReturnSelf(); + $qb->method('setMaxResults')->willReturnSelf(); + $qb->method('orderBy')->willReturnSelf(); + + $emMock = $this->createMock(EntityManagerInterface::class); + $classMetadata = new ClassMetadata(Part::class); + $emMock->method('getClassMetadata')->with(Part::class)->willReturn($classMetadata); + + $translatorMock = $this->createMock(TranslatorInterface::class); + $translatorMock->method('trans') + ->willReturnCallback(static function (string $id, array $parameters = [], ?string $domain = null, ?string $locale = null): string { + return $id; + }); + + $ipnSuggestSettings = $this->createMock(IpnSuggestSettings::class); + + $ipnSuggestSettings->suggestPartDigits = 4; + $ipnSuggestSettings->useDuplicateDescription = false; + + $repo = $this->getMockBuilder(PartRepository::class) + ->setConstructorArgs([$emMock, $translatorMock, $ipnSuggestSettings]) + ->onlyMethods(['createQueryBuilder']) + ->getMock(); + + $repo->expects(self::atLeastOnce()) + ->method('createQueryBuilder') + ->with('part') + ->willReturn($qb); + + $queryMock = $this->getMockBuilder(Query::class) + ->disableOriginalConstructor() + ->onlyMethods(['getResult']) + ->getMock(); + + $categoryParent = new Category(); + $categoryParent->setName('Passive components'); + $categoryParent->setPartIpnPrefix('PCOM'); + + $categoryChild = new Category(); + $categoryChild->setName('Resistors'); + $categoryChild->setPartIpnPrefix('RES'); + $categoryChild->setParent($categoryParent); + + $partForSuggestGeneration = new Part(); // create found part, because it is not saved in DB + $partForSuggestGeneration->setCategory($categoryChild); + $partForSuggestGeneration->setIpn('1810-1679_1'); + $partForSuggestGeneration->setDescription('NETWORK-RESISTOR 4 0 OHM +5PCT 0.063W TKF SMT'); + + $queryMock->method('getResult')->willReturn([$partForSuggestGeneration]); + $qb->method('getQuery')->willReturn($queryMock); + $suggestions = $repo->autoCompleteIpn($partForSuggestGeneration, 'NETWORK-RESISTOR 4 0 OHM +5PCT 0.063W TKF SMT', 4); + + // Check structure available + self::assertIsArray($suggestions); + self::assertArrayHasKey('commonPrefixes', $suggestions); + self::assertArrayHasKey('prefixesPartIncrement', $suggestions); + self::assertNotEmpty($suggestions['commonPrefixes']); + self::assertCount(2, $suggestions['commonPrefixes']); + self::assertNotEmpty($suggestions['prefixesPartIncrement']); + self::assertCount(2, $suggestions['prefixesPartIncrement']); + + // Check expected values without any increment, for user to decide + self::assertSame('RES-', $suggestions['commonPrefixes'][0]['title']); + self::assertSame('part.edit.tab.advanced.ipn.prefix.direct_category', $suggestions['commonPrefixes'][0]['description']); + self::assertSame('PCOM-RES-', $suggestions['commonPrefixes'][1]['title']); + self::assertSame('part.edit.tab.advanced.ipn.prefix.hierarchical.no_increment', $suggestions['commonPrefixes'][1]['description']); + + // Check expected values with next possible increment at category level + self::assertSame('RES-0001', $suggestions['prefixesPartIncrement'][0]['title']); // next possible free increment for given part category + self::assertSame('part.edit.tab.advanced.ipn.prefix.direct_category.increment', $suggestions['prefixesPartIncrement'][0]['description']); + self::assertSame('PCOM-RES-0001', $suggestions['prefixesPartIncrement'][1]['title']); // next possible free increment for given part category + self::assertSame('part.edit.tab.advanced.ipn.prefix.hierarchical.increment', $suggestions['prefixesPartIncrement'][1]['description']); + + $ipnSuggestSettings->useDuplicateDescription = true; + + $suggestionsWithSameDescription = $repo->autoCompleteIpn($partForSuggestGeneration, 'NETWORK-RESISTOR 4 0 OHM +5PCT 0.063W TKF SMT', 4); + + // Check structure available + self::assertIsArray($suggestionsWithSameDescription); + self::assertArrayHasKey('commonPrefixes', $suggestionsWithSameDescription); + self::assertArrayHasKey('prefixesPartIncrement', $suggestionsWithSameDescription); + self::assertNotEmpty($suggestionsWithSameDescription['commonPrefixes']); + self::assertCount(2, $suggestionsWithSameDescription['commonPrefixes']); + self::assertNotEmpty($suggestionsWithSameDescription['prefixesPartIncrement']); + self::assertCount(4, $suggestionsWithSameDescription['prefixesPartIncrement']); + + // Check expected values without any increment, for user to decide + self::assertSame('RES-', $suggestionsWithSameDescription['commonPrefixes'][0]['title']); + self::assertSame('part.edit.tab.advanced.ipn.prefix.direct_category', $suggestionsWithSameDescription['commonPrefixes'][0]['description']); + self::assertSame('PCOM-RES-', $suggestionsWithSameDescription['commonPrefixes'][1]['title']); + self::assertSame('part.edit.tab.advanced.ipn.prefix.hierarchical.no_increment', $suggestionsWithSameDescription['commonPrefixes'][1]['description']); + + // Check expected values with next possible increment at part description level + self::assertSame('1810-1679_1', $suggestionsWithSameDescription['prefixesPartIncrement'][0]['title']); // current given value + self::assertSame('part.edit.tab.advanced.ipn.prefix.description.current-increment', $suggestionsWithSameDescription['prefixesPartIncrement'][0]['description']); + self::assertSame('1810-1679_2', $suggestionsWithSameDescription['prefixesPartIncrement'][1]['title']); // next possible value + self::assertSame('part.edit.tab.advanced.ipn.prefix.description.increment', $suggestionsWithSameDescription['prefixesPartIncrement'][1]['description']); + + // Check expected values with next possible increment at category level + self::assertSame('RES-0001', $suggestionsWithSameDescription['prefixesPartIncrement'][2]['title']); // next possible free increment for given part category + self::assertSame('part.edit.tab.advanced.ipn.prefix.direct_category.increment', $suggestionsWithSameDescription['prefixesPartIncrement'][2]['description']); + self::assertSame('PCOM-RES-0001', $suggestionsWithSameDescription['prefixesPartIncrement'][3]['title']); // next possible free increment for given part category + self::assertSame('part.edit.tab.advanced.ipn.prefix.hierarchical.increment', $suggestionsWithSameDescription['prefixesPartIncrement'][3]['description']); + } +} diff --git a/translations/messages.cs.xlf b/translations/messages.cs.xlf index 2f6d8cc2..cd572dae 100644 --- a/translations/messages.cs.xlf +++ b/translations/messages.cs.xlf @@ -1848,6 +1848,66 @@ Související prvky budou přesunuty nahoru. Pokročilé + + + part.edit.tab.advanced.ipn.commonSectionHeader + Návrhy bez přírůstku části + + + + + part.edit.tab.advanced.ipn.partIncrementHeader + Návrhy s číselnými přírůstky částí + + + + + part.edit.tab.advanced.ipn.prefix.description.current-increment + Aktuální specifikace IPN pro součást + + + + + part.edit.tab.advanced.ipn.prefix.description.increment + Další možná specifikace IPN na základě identického popisu součásti + + + + + part.edit.tab.advanced.ipn.prefix_empty.direct_category + IPN předpona přímé kategorie je prázdná, zadejte ji v kategorii „%name%“ + + + + + part.edit.tab.advanced.ipn.prefix.direct_category + IPN prefix přímé kategorie + + + + + part.edit.tab.advanced.ipn.prefix.direct_category.increment + IPN prefix přímé kategorie a specifického přírůstku pro část + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.no_increment + IPN prefixy s hierarchickým pořadím kategorií rodičovských prefixů + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.increment + IPN prefixy s hierarchickým pořadím kategorií rodičovských prefixů a specifickým přírůstkem pro část + + + + + part.edit.tab.advanced.ipn.prefix.not_saved + Nejprve vytvořte součást a přiřaďte ji do kategorie: s dostupnými kategoriemi a jejich vlastními IPN prefixy lze automaticky navrhnout IPN označení pro danou součást + + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:40 @@ -6989,6 +7049,12 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn Filtr názvů + + + category.edit.part_ipn_prefix + Předpona součásti IPN + + obsolete @@ -10290,12 +10356,24 @@ Element 3 např. "/Kondenzátor \d+ nF/i" + + + category.edit.part_ipn_prefix.placeholder + např. "B12A" + + category.edit.partname_regex.help Regulární výraz kompatibilní s PCRE, kterému musí název dílu odpovídat. + + + category.edit.part_ipn_prefix.help + Předpona navrhovaná při zadávání IPN části. + + entity.select.add_hint @@ -13029,6 +13107,54 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz Pokud potřebujete směnné kurzy mezi měnami mimo eurozónu, můžete zde zadat API klíč z fixer.io. + + + settings.misc.ipn_suggest + Seznam návrhů IPN součástek + + + + + settings.misc.ipn_suggest.regex + Regex + + + + + settings.misc.ipn_suggest.regex_help + Nápověda text + + + + + settings.misc.ipn_suggest.regex_help_description + Definujte svůj vlastní text nápovědy pro specifikaci formátu Regex. + + + + + settings.misc.ipn_suggest.autoAppendSuffix + Pokud je tato možnost povolena, bude při opětovném zadání existujícího IPN při ukládání k vstupu přidána přírůstková přípona. + + + + + settings.misc.ipn_suggest.suggestPartDigits + Počet čísel pro inkrement + + + + + settings.misc.ipn_suggest.useDuplicateDescription + Je-li povoleno, použije se popis součástky k nalezení existujících součástek se stejným popisem a k určení další volné IPN navýšením její číselné přípony pro seznam návrhů. + + + + + settings.misc.ipn_suggest.suggestPartDigits.help + Počet číslic použitých pro inkrementální číslování součástí v návrhovém systému IPN (Interní číslo součástky). + + settings.behavior.part_info diff --git a/translations/messages.da.xlf b/translations/messages.da.xlf index d88ad77e..530d91aa 100644 --- a/translations/messages.da.xlf +++ b/translations/messages.da.xlf @@ -1856,6 +1856,66 @@ Underelementer vil blive flyttet opad. Advanceret + + + part.edit.tab.advanced.ipn.commonSectionHeader + Forslag uden del-inkrement + + + + + part.edit.tab.advanced.ipn.partIncrementHeader + Forslag med numeriske deleforøgelser + + + + + part.edit.tab.advanced.ipn.prefix.description.current-increment + Aktuel IPN-specifikation for delen + + + + + part.edit.tab.advanced.ipn.prefix.description.increment + Næste mulige IPN-specifikation baseret på en identisk delebeskrivelse + + + + + part.edit.tab.advanced.ipn.prefix_empty.direct_category + IPN-præfikset for den direkte kategori er tomt, angiv det i kategorien "%name%" + + + + + part.edit.tab.advanced.ipn.prefix.direct_category + IPN-præfiks for direkte kategori + + + + + part.edit.tab.advanced.ipn.prefix.direct_category.increment + IPN-præfiks for den direkte kategori og en delspecifik inkrement + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.no_increment + IPN-præfikser med hierarkisk rækkefølge af overordnede præfikser + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.increment + IPN-præfikser med hierarkisk rækkefølge af overordnede præfikser og en del-specifik inkrement + + + + + part.edit.tab.advanced.ipn.prefix.not_saved + Opret først en komponent, og tildel den en kategori: med eksisterende kategorier og deres egne IPN-præfikser kan IPN-betegnelsen for komponenten foreslås automatisk + + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:40 @@ -6996,6 +7056,12 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Navnefilter + + + category.edit.part_ipn_prefix + IPN-komponentförstavelse + + obsolete @@ -10316,12 +10382,24 @@ Element 3 f.eks. "/Kondensator \d+ nF/i" + + + category.edit.part_ipn_prefix.placeholder + f.eks. "B12A" + + category.edit.partname_regex.help Et PCRE-kompatibelt regulært udtryk, som delnavnet skal opfylde. + + + category.edit.part_ipn_prefix.help + Et prefix foreslået, når IPN for en del indtastes. + + entity.select.add_hint diff --git a/translations/messages.de.xlf b/translations/messages.de.xlf index ada8a1d2..806c2e52 100644 --- a/translations/messages.de.xlf +++ b/translations/messages.de.xlf @@ -1,6 +1,6 @@ - + Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 @@ -242,7 +242,7 @@ part.info.timetravel_hint - So sah das Bauteil vor %timestamp% aus. <i>Beachten Sie, dass dieses Feature experimentell ist und die angezeigten Infos daher nicht unbedingt korrekt sind.</i> + Beachten Sie, dass dieses Feature experimentell ist und die angezeigten Infos daher nicht unbedingt korrekt sind.]]> @@ -737,9 +737,9 @@ user.edit.tfa.disable_tfa_message - Dies wird <b>alle aktiven Zwei-Faktor-Authentifizierungsmethoden des Nutzers deaktivieren</b> und die <b>Backupcodes löschen</b>! <br> -Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müssen und neue Backupcodes ausdrucken müssen! <br><br> -<b>Führen sie dies nur durch, wenn Sie über die Identität des (um Hilfe suchenden) Benutzers absolut sicher sind, da ansonsten eine Kompromittierung des Accounts durch einen Angreifer erfolgen könnte!</b> + alle aktiven Zwei-Faktor-Authentifizierungsmethoden des Nutzers deaktivieren und die Backupcodes löschen!
    +Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müssen und neue Backupcodes ausdrucken müssen!

    +Führen sie dies nur durch, wenn Sie über die Identität des (um Hilfe suchenden) Benutzers absolut sicher sind, da ansonsten eine Kompromittierung des Accounts durch einen Angreifer erfolgen könnte!]]>
    @@ -1446,7 +1446,7 @@ Subelemente werden beim Löschen nach oben verschoben. homepage.github.text - Quellcode, Downloads, Bugreports, ToDo-Liste usw. gibts auf der <a class="link-external" target="_blank" href="%href%">GitHub Projektseite</a> + GitHub Projektseite]]> @@ -1468,7 +1468,7 @@ Subelemente werden beim Löschen nach oben verschoben. homepage.help.text - Hilfe und Tipps finden sie im <a class="link-external" rel="noopener" target="_blank" href="%href%">Wiki</a> der GitHub Seite. + Wiki der GitHub Seite.]]> @@ -1710,7 +1710,7 @@ Subelemente werden beim Löschen nach oben verschoben. email.pw_reset.fallback - Wenn dies nicht funktioniert, rufen Sie <a href="%url%">%url%</a> auf und geben Sie die folgenden Daten ein + %url% auf und geben Sie die folgenden Daten ein]]> @@ -1740,7 +1740,7 @@ Subelemente werden beim Löschen nach oben verschoben. email.pw_reset.valid_unit %date% - Das Reset-Token ist gültig bis <i>%date%</i> + %date%]]> @@ -1847,6 +1847,66 @@ Subelemente werden beim Löschen nach oben verschoben. Erweiterte Optionen
    + + + part.edit.tab.advanced.ipn.commonSectionHeader + Vorschläge ohne Teil-Inkrement + + + + + part.edit.tab.advanced.ipn.partIncrementHeader + Vorschläge mit numerischen Teil-Inkrement + + + + + part.edit.tab.advanced.ipn.prefix.description.current-increment + Aktuelle IPN-Angabe des Bauteils + + + + + part.edit.tab.advanced.ipn.prefix.description.increment + Nächstmögliche IPN-Angabe auf Basis der identischen Bauteil-Beschreibung + + + + + part.edit.tab.advanced.ipn.prefix_empty.direct_category + IPN-Präfix der direkten Kategorie leer, geben Sie einen Präfix in Kategorie "%name%" an + + + + + part.edit.tab.advanced.ipn.prefix.direct_category + IPN-Präfix der direkten Kategorie + + + + + part.edit.tab.advanced.ipn.prefix.direct_category.increment + IPN-Präfix der direkten Kategorie und eines teilspezifischen Inkrements + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.no_increment + IPN-Präfixe mit hierarchischer Kategorienreihenfolge der Elternpräfixe + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.increment + IPN-Präfixe mit hierarchischer Kategorienreihenfolge der Elternpräfixe und ein teilsspezifisches Inkrement + + + + + part.edit.tab.advanced.ipn.prefix.not_saved + Bitte erstellen Sie zuerst ein Bauteil und weisen Sie dieses einer Kategorie zu: mit vorhandenen Kategorien und derene eigenen IPN-Präfix kann die IPN-Angabe für das jeweilige Teil automatisch vorgeschlagen werden + + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:40 @@ -3583,8 +3643,8 @@ Subelemente werden beim Löschen nach oben verschoben. tfa_google.disable.confirm_message - Wenn Sie die Authenticator App deaktivieren, werden alle Backupcodes gelöscht, daher sie müssen sie evtl. neu ausdrucken.<br> -Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nicht mehr so gut gegen Angreifer geschützt ist! + +Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nicht mehr so gut gegen Angreifer geschützt ist!]]> @@ -3604,7 +3664,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich tfa_google.step.download - Laden Sie eine Authenticator App herunter (z.B. <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)]]> @@ -3846,8 +3906,8 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich tfa_trustedDevices.explanation - Bei der Überprüfung des zweiten Faktors, kann der aktuelle Computer als vertrauenswürdig gekennzeichnet werden, daher werden keine Zwei-Faktor-Überprüfungen mehr an diesem Computer benötigt. -Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertrauenswürdig ist, können Sie hier den Status <i>aller </i>Computer zurücksetzen. + aller Computer zurücksetzen.]]> @@ -5324,7 +5384,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr label_options.lines_mode.help - Wenn Sie hier Twig auswählen, wird das Contentfeld als Twig-Template interpretiert. Weitere Hilfe gibt es in der <a href="https://twig.symfony.com/doc/3.x/templates.html">Twig Dokumentation</a> und dem <a href="https://docs.part-db.de/usage/labels.html#twig-mode">Wiki</a>. + Twig Dokumentation und dem Wiki.]]> @@ -6988,6 +7048,12 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Namensfilter + + + category.edit.part_ipn_prefix + Bauteil IPN-Präfix + + obsolete @@ -7186,15 +7252,15 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr mass_creation.lines.placeholder - Element 1 + +Element 1 -> Element 1.1 +Element 1 -> Element 1.2]]> @@ -9479,25 +9545,25 @@ Element 1 -> Element 1.2 filter.parameter_value_constraint.operator.< - Typ. Wert < + filter.parameter_value_constraint.operator.> - Typ. Wert > + ]]> filter.parameter_value_constraint.operator.<= - Typ. Wert <= + filter.parameter_value_constraint.operator.>= - Typ. Wert >= + =]]> @@ -9605,7 +9671,7 @@ Element 1 -> Element 1.2 parts_list.search.searching_for - Suche Teile mit dem Suchbegriff <b>%keyword%</b> + %keyword%]]> @@ -10265,13 +10331,13 @@ Element 1 -> Element 1.2 project.builds.number_of_builds_possible - Sie haben genug Bauteile auf Lager, um <b>%max_builds%</b> Exemplare dieses Projektes zu bauen. + %max_builds% Exemplare dieses Projektes zu bauen.]]> project.builds.check_project_status - Der aktuelle Projektstatus ist <b>"%project_status%"</b>. Sie sollten überprüfen, ob sie das Projekt mit diesem Status wirklich bauen wollen! + "%project_status%". Sie sollten überprüfen, ob sie das Projekt mit diesem Status wirklich bauen wollen!]]> @@ -10364,16 +10430,28 @@ Element 1 -> Element 1.2 z.B. "/Kondensator \d+ nF/i" + + + category.edit.part_ipn_prefix.placeholder + z.B. "B12A" + + category.edit.partname_regex.help Ein PCRE-kompatibler regulärer Ausdruck, den der Bauteilename erfüllen muss. + + + category.edit.part_ipn_prefix.help + Ein Präfix, der bei der IPN-Eingabe eines Bauteils vorgeschlagen wird. + + entity.select.add_hint - Nutzen Sie -> um verschachtelte Strukturen anzulegen, z.B. "Element 1->Element 1.1" + um verschachtelte Strukturen anzulegen, z.B. "Element 1->Element 1.1"]]> @@ -10397,13 +10475,13 @@ Element 1 -> Element 1.2 homepage.first_steps.introduction - Die Datenbank ist momentan noch leer. Sie möchten möglicherweise die <a href="%url%">Dokumentation</a> lesen oder anfangen, die folgenden Datenstrukturen anzulegen. + Dokumentation lesen oder anfangen, die folgenden Datenstrukturen anzulegen.]]> homepage.first_steps.create_part - Oder Sie können direkt ein <a href="%url%">neues Bauteil erstellen</a>. + neues Bauteil erstellen.]]> @@ -10415,7 +10493,7 @@ Element 1 -> Element 1.2 homepage.forum.text - Für Fragen rund um Part-DB, nutze das <a class="link-external" rel="noopener" target="_blank" href="%href%">Diskussionsforum</a> + Diskussionsforum]]> @@ -11081,7 +11159,7 @@ Element 1 -> Element 1.2 parts.import.help_documentation - Konsultieren Sie die <a href="%link%">Dokumentation</a> für weiter Informationen über das Dateiformat. + Dokumentation für weiter Informationen über das Dateiformat.]]> @@ -11273,7 +11351,7 @@ Element 1 -> Element 1.2 part.filter.lessThanDesired - Weniger vorhanden als gewünscht (Gesamtmenge < Mindestmenge) + @@ -12085,13 +12163,13 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön part.merge.confirm.title - Möchten Sie wirklich <b>%other%</b> in <b>%target%</b> zusammenführen? + %other% in %target% zusammenführen?]]> part.merge.confirm.message - <b>%other%</b> wird gelöscht, und das aktuelle Bauteil wird mit den angezeigten Daten gespeichert. + %other% wird gelöscht, und das aktuelle Bauteil wird mit den angezeigten Daten gespeichert.]]> @@ -12445,7 +12523,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.element14.apiKey.help - Sie können sich unter <a href="https://partner.element14.com/">https://partner.element14.com/</a> für einen API-Schlüssel registrieren. + https://partner.element14.com/ für einen API-Schlüssel registrieren.]]> @@ -12457,7 +12535,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.element14.storeId.help - Die Domain des Shops, aus dem die Daten abgerufen werden sollen. Diese bestimmt die Sprache und Währung der Ergebnisse. Eine Liste der gültigen Domains finden Sie <a href="https://partner.element14.com/docs/Product_Search_API_REST__Description">hier</a>. + hier.]]> @@ -12475,7 +12553,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.tme.token.help - Sie können einen API-Token und einen geheimen Schlüssel unter <a href="https://developers.tme.eu/en/">https://developers.tme.eu/en/</a> erhalten. + https://developers.tme.eu/en/ erhalten.]]> @@ -12523,7 +12601,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.mouser.apiKey.help - Sie können sich unter <a href="https://eu.mouser.com/api-hub/">https://eu.mouser.com/api-hub/</a> für einen API-Schlüssel registrieren. + https://eu.mouser.com/api-hub/ für einen API-Schlüssel registrieren.]]> @@ -12571,7 +12649,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.mouser.searchOptions.rohsAndInStock - Sofort verfügbar & RoHS konform + @@ -12601,7 +12679,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.system.attachments - Anhänge & Dateien + @@ -12625,7 +12703,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.system.attachments.allowDownloads.help - Mit dieser Option können Benutzer externe Dateien in die Part-DB herunterladen, indem sie eine URL angeben. <b>Achtung: Dies kann ein Sicherheitsrisiko darstellen, da Benutzer dadurch möglicherweise über die Part-DB auf Intranet-Ressourcen zugreifen können!</b> + Achtung: Dies kann ein Sicherheitsrisiko darstellen, da Benutzer dadurch möglicherweise über die Part-DB auf Intranet-Ressourcen zugreifen können!]]> @@ -12799,8 +12877,8 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.system.localization.base_currency_description - Die Währung, in der Preisinformationen und Wechselkurse gespeichert werden. Diese Währung wird angenommen, wenn für eine Preisinformation keine Währung festgelegt ist. -<b>Bitte beachten Sie, dass die Währungen bei einer Änderung dieses Wertes nicht umgerechnet werden. Wenn Sie also die Basiswährung ändern, nachdem Sie bereits Preisinformationen hinzugefügt haben, führt dies zu falschen Preisen!</b> + Bitte beachten Sie, dass die Währungen bei einer Änderung dieses Wertes nicht umgerechnet werden. Wenn Sie also die Basiswährung ändern, nachdem Sie bereits Preisinformationen hinzugefügt haben, führt dies zu falschen Preisen!]]> @@ -12830,7 +12908,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.misc.kicad_eda.category_depth.help - Dieser Wert bestimmt die Tiefe des Kategoriebaums, der in KiCad sichtbar ist. 0 bedeutet, dass nur die Kategorien der obersten Ebene sichtbar sind. Setzen Sie den Wert auf > 0, um weitere Ebenen anzuzeigen. Setzen Sie den Wert auf -1, um alle Teile der Part-DB innerhalb einer einzigen Kategorie in KiCad anzuzeigen. + 0, um weitere Ebenen anzuzeigen. Setzen Sie den Wert auf -1, um alle Teile der Part-DB innerhalb einer einzigen Kategorie in KiCad anzuzeigen.]]> @@ -12848,7 +12926,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.behavior.sidebar.items.help - Die Menüs, die standardmäßig in der Seitenleiste angezeigt werden. Die Reihenfolge der Elemente kann per Drag & Drop geändert werden. + @@ -12896,7 +12974,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.behavior.table.parts_default_columns.help - Die Spalten, die standardmäßig in Bauteiltabellen angezeigt werden sollen. Die Reihenfolge der Elemente kann per Drag & Drop geändert werden. + @@ -12950,7 +13028,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.oemsecrets.sortMode.M - Vollständigkeit & Herstellername + @@ -13109,6 +13187,54 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön Wenn Sie Wechselkurse zwischen Nicht-Euro-Währungen benötigen, können Sie hier einen API-Schlüssel von fixer.io eingeben. + + + settings.misc.ipn_suggest + Bauteil IPN-Vorschlagsliste + + + + + settings.misc.ipn_suggest.regex + Regex + + + + + settings.misc.ipn_suggest.regex_help + Hilfetext + + + + + settings.misc.ipn_suggest.regex_help_description + Definieren Sie Ihren eigenen Nutzer-Hilfetext zur Regex Formatvorgabe. + + + + + settings.misc.ipn_suggest.autoAppendSuffix + Hänge ein inkrementelles Suffix an, wenn eine IPN bereits durch ein anderes Bauteil verwendet wird. + + + + + settings.misc.ipn_suggest.suggestPartDigits + Stellen für numerisches Inkrement + + + + + settings.misc.ipn_suggest.useDuplicateDescription + Verwende Bauteilebeschreibung zur Ermittlung der nächsten IPN + + + + + settings.misc.ipn_suggest.suggestPartDigits.help + Die Anzahl der Ziffern, die für die inkrementale Nummerierung von Teilen im IPN-Vorschlagssystem verwendet werden. + + settings.behavior.part_info @@ -13562,7 +13688,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.behavior.homepage.items.help - Die Elemente, die auf der Startseite angezeigt werden sollen. Die Reihenfolge kann per Drag & Drop geändert werden. + @@ -14304,5 +14430,11 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön Dies ist auf der Informationsquellen Übersichtsseite möglich. + + + settings.misc.ipn_suggest.useDuplicateDescription.help + Wenn aktiviert, wird die Bauteil-Beschreibung verwendet, um vorhandene Teile mit derselben Beschreibung zu finden und die nächste verfügbare IPN für die Vorschlagsliste zu ermitteln, indem der numerische Suffix entsprechend erhöht wird. + + diff --git a/translations/messages.el.xlf b/translations/messages.el.xlf index 4ea8a2e4..3618fa3d 100644 --- a/translations/messages.el.xlf +++ b/translations/messages.el.xlf @@ -1589,5 +1589,83 @@ Προσαρμοσμένη κατάσταση μέρους + + + category.edit.part_ipn_prefix + Πρόθεμα εξαρτήματος IPN + + + + + category.edit.part_ipn_prefix.placeholder + π.χ. "B12A" + + + + + category.edit.part_ipn_prefix.help + Μια προτεινόμενη πρόθεμα κατά την εισαγωγή του IPN ενός τμήματος. + + + + + part.edit.tab.advanced.ipn.commonSectionHeader + Προτάσεις χωρίς αύξηση μέρους + + + + + part.edit.tab.advanced.ipn.partIncrementHeader + Προτάσεις με αριθμητικές αυξήσεις μερών + + + + + part.edit.tab.advanced.ipn.prefix.description.current-increment + Τρέχουσα προδιαγραφή IPN του εξαρτήματος + + + + + part.edit.tab.advanced.ipn.prefix.description.increment + Επόμενη δυνατή προδιαγραφή IPN βάσει της ίδιας περιγραφής εξαρτήματος + + + + + part.edit.tab.advanced.ipn.prefix_empty.direct_category + Το IPN πρόθεμα της άμεσης κατηγορίας είναι κενό, καθορίστε το στην κατηγορία "%name%" + + + + + part.edit.tab.advanced.ipn.prefix.direct_category + Πρόθεμα IPN για την άμεση κατηγορία + + + + + part.edit.tab.advanced.ipn.prefix.direct_category.increment + Πρόθεμα IPN της άμεσης κατηγορίας και μιας ειδικής για μέρος αύξησης + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.no_increment + Προθέματα IPN με ιεραρχική σειρά κατηγοριών των προθέτων γονέων + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.increment + Προθέματα IPN με ιεραρχική σειρά κατηγοριών των προθέτων γονέων και συγκεκριμένη αύξηση για το μέρος + + + + + part.edit.tab.advanced.ipn.prefix.not_saved + Δημιουργήστε πρώτα ένα εξάρτημα και αντιστοιχίστε το σε μια κατηγορία: με τις υπάρχουσες κατηγορίες και τα δικά τους προθέματα IPN, η ονομασία IPN για το εξάρτημα μπορεί να προταθεί αυτόματα + + diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 5f9f8deb..a5d86338 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -242,7 +242,7 @@ 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.]]> @@ -737,10 +737,10 @@ 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!]]>
    @@ -891,9 +891,9 @@ The user will have to set up all two-factor authentication methods again and pri entity.delete.message - This can not be undone! -<br> -Sub elements will be moved upwards. + +Sub elements will be moved upwards.]]> @@ -1447,7 +1447,7 @@ Sub elements will be moved upwards. 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]]> @@ -1469,7 +1469,7 @@ Sub elements will be moved upwards. 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]]> @@ -1711,7 +1711,7 @@ Sub elements will be moved upwards. 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]]> @@ -1741,7 +1741,7 @@ Sub elements will be moved upwards. email.pw_reset.valid_unit %date% - The reset token will be valid until <i>%date%</i>. + %date%.]]> @@ -1848,6 +1848,66 @@ Sub elements will be moved upwards. Advanced + + + part.edit.tab.advanced.ipn.commonSectionHeader + Suggestions without part increment + + + + + part.edit.tab.advanced.ipn.partIncrementHeader + Suggestions with numeric part increment + + + + + part.edit.tab.advanced.ipn.prefix.description.current-increment + Current IPN specification of the part + + + + + part.edit.tab.advanced.ipn.prefix.description.increment + Next possible IPN specification based on an identical part description + + + + + part.edit.tab.advanced.ipn.prefix_empty.direct_category + IPN prefix of direct category empty, specify one in category "%name%" + + + + + part.edit.tab.advanced.ipn.prefix.direct_category + IPN prefix of direct category + + + + + part.edit.tab.advanced.ipn.prefix.direct_category.increment + IPN prefix of direct category and part-specific increment + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.no_increment + IPN prefixes with hierarchical category order of parent-prefix(es) + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.increment + IPN prefixes with hierarchical category order of parent-prefix(es) and part-specific increment + + + + + part.edit.tab.advanced.ipn.prefix.not_saved + Please create part at first and assign it to a category: with existing categories and their own IPN prefix, the IPN for the part can be suggested automatically + + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:40 @@ -3584,8 +3644,8 @@ Sub elements will be moved upwards. 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 no longer as well protected against attackers! + +Also note that without two-factor authentication, your account is no longer as well protected against attackers!]]> @@ -3605,7 +3665,7 @@ Also note that without two-factor authentication, your account is no longer as w 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)]]> @@ -3847,8 +3907,8 @@ Also note that without two-factor authentication, your account is no longer as w 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.]]> @@ -5325,7 +5385,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can 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.]]> @@ -6989,6 +7049,12 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Name filter + + + category.edit.part_ipn_prefix + Part IPN Prefix + + obsolete @@ -7187,15 +7253,15 @@ Exampletown mass_creation.lines.placeholder - Element 1 + +Element 1 -> Element 1.1 +Element 1 -> Element 1.2]]> @@ -9480,25 +9546,25 @@ Element 1 -> Element 1.2 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 >= + =]]> @@ -9606,7 +9672,7 @@ Element 1 -> Element 1.2 parts_list.search.searching_for - Searching parts with keyword <b>%keyword%</b> + %keyword%]]> @@ -10266,13 +10332,13 @@ Element 1 -> Element 1.2 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!]]> @@ -10365,16 +10431,28 @@ Element 1 -> Element 1.2 e.g "/Capacitor \d+ nF/i" + + + category.edit.part_ipn_prefix.placeholder + e.g "B12A" + + category.edit.partname_regex.help A PCRE-compatible regular expression, which a part name have to match. + + + category.edit.part_ipn_prefix.help + A prefix suggested when entering the IPN of a part. + + 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"]]> @@ -10398,13 +10476,13 @@ Element 1 -> Element 1.2 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.]]> @@ -10416,7 +10494,7 @@ Element 1 -> Element 1.2 homepage.forum.text - For questions about Part-DB use the <a href="%href%" class="link-external" target="_blank">discussion forum</a> + discussion forum]]> @@ -11082,7 +11160,7 @@ Element 1 -> Element 1.2 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.]]> @@ -11274,7 +11352,7 @@ Element 1 -> Element 1.2 part.filter.lessThanDesired - In stock less than desired (total amount < min. amount) + @@ -12086,13 +12164,13 @@ Please note, that you can not impersonate a disabled user. If you try you will g 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.]]> @@ -12446,7 +12524,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.element14.apiKey.help - You can register for an API key on <a href="https://partner.element14.com/">https://partner.element14.com/</a>. + https://partner.element14.com/.]]> @@ -12458,7 +12536,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.element14.storeId.help - The store domain to retrieve the data from. This decides the language and currency of results. See <a href="https://partner.element14.com/docs/Product_Search_API_REST__Description">here</a> for a list of valid domains. + here for a list of valid domains.]]> @@ -12476,7 +12554,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.tme.token.help - You can get an API token and secret on <a href="https://developers.tme.eu/en/">https://developers.tme.eu/en/</a>. + https://developers.tme.eu/en/.]]> @@ -12524,7 +12602,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.mouser.apiKey.help - You can register for an API key on <a href="https://eu.mouser.com/api-hub/">https://eu.mouser.com/api-hub/</a>. + https://eu.mouser.com/api-hub/.]]> @@ -12602,7 +12680,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.system.attachments - Attachments & Files + @@ -12626,7 +12704,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.system.attachments.allowDownloads.help - With this option users can download external files into Part-DB by providing an URL. <b>Attention: This can be a security issue, as it might allow users to access intranet ressources via Part-DB!</b> + Attention: This can be a security issue, as it might allow users to access intranet ressources via Part-DB!]]> @@ -12800,8 +12878,8 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.system.localization.base_currency_description - The currency that is used to store price information and exchange rates in. This currency is assumed, when no currency is set for a price information. -<b>Please note that the currencies are not converted, when changing this value. So changing the default currency after you already added price information, will result in wrong prices!</b> + Please note that the currencies are not converted, when changing this value. So changing the default currency after you already added price information, will result in wrong prices!]]> @@ -12831,7 +12909,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.misc.kicad_eda.category_depth.help - This value determines the depth of the category tree, that is visible inside KiCad. 0 means that only the top level categories are visible. Set to a value > 0 to show more levels. Set to -1, to show all parts of Part-DB inside a sigle cnategory in KiCad. + 0 to show more levels. Set to -1, to show all parts of Part-DB inside a sigle cnategory in KiCad.]]> @@ -12849,7 +12927,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.behavior.sidebar.items.help - The menus which appear at the sidebar by default. Order of items can be changed via drag & drop. + @@ -12897,7 +12975,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.behavior.table.parts_default_columns.help - The columns to show by default in part tables. Order of items can be changed via drag & drop. + @@ -12951,7 +13029,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.oemsecrets.sortMode.M - Completeness & Manufacturer name + @@ -13110,6 +13188,54 @@ Please note, that you can not impersonate a disabled user. If you try you will g If you need exchange rates between non-euro currencies, you can input an API key from fixer.io here. + + + settings.misc.ipn_suggest + Part IPN Suggest + + + + + settings.misc.ipn_suggest.regex + Regex + + + + + settings.misc.ipn_suggest.regex_help + Help text + + + + + settings.misc.ipn_suggest.regex_help_description + Define your own user help text for the Regex format specification. + + + + + settings.misc.ipn_suggest.autoAppendSuffix + Add incremental suffix to IPN, if the value is already used by another part + + + + + settings.misc.ipn_suggest.suggestPartDigits + Increment Digits + + + + + settings.misc.ipn_suggest.useDuplicateDescription + Use part description to find next available IPN + + + + + settings.misc.ipn_suggest.suggestPartDigits.help + The number of digits used for the incremental numbering of parts in the IPN (Internal Part Number) suggestion system. + + settings.behavior.part_info @@ -13563,7 +13689,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.behavior.homepage.items.help - The items to show at the homepage. Order can be changed via drag & drop. + @@ -14330,5 +14456,17 @@ You can do this in the provider info list. You can do this in the provider info list. + + + settings.misc.ipn_suggest.useDuplicateDescription.help + When enabled, the part’s description is used to find existing parts with the same description and to determine the next available IPN by incrementing their numeric suffix for the suggestion list. + + + + + settings.misc.ipn_suggest.regex.help + A PCRE-compatible regular expression every IPN has to fulfill. Leave empty to allow all everything as IPN. + + diff --git a/translations/messages.es.xlf b/translations/messages.es.xlf index a79119aa..57ac5c85 100644 --- a/translations/messages.es.xlf +++ b/translations/messages.es.xlf @@ -1848,6 +1848,66 @@ Subelementos serán desplazados hacia arriba. Avanzado + + + part.edit.tab.advanced.ipn.commonSectionHeader + Sugerencias sin incremento de parte + + + + + part.edit.tab.advanced.ipn.partIncrementHeader + Sugerencias con incrementos numéricos de partes + + + + + part.edit.tab.advanced.ipn.prefix.description.current-increment + Especificación actual de IPN de la pieza + + + + + part.edit.tab.advanced.ipn.prefix.description.increment + Siguiente especificación de IPN posible basada en una descripción idéntica de la pieza + + + + + part.edit.tab.advanced.ipn.prefix_empty.direct_category + El prefijo IPN de la categoría directa está vacío, especifíquelo en la categoría "%name%" + + + + + part.edit.tab.advanced.ipn.prefix.direct_category + Prefijo IPN de la categoría directa + + + + + part.edit.tab.advanced.ipn.prefix.direct_category.increment + Prefijo IPN de la categoría directa y un incremento específico de la pieza + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.no_increment + Prefijos IPN con orden jerárquico de categorías de prefijos principales + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.increment + Prefijos IPN con orden jerárquico de categorías de prefijos principales y un incremento específico para la parte + + + + + part.edit.tab.advanced.ipn.prefix.not_saved + Primero cree un componente y asígnele una categoría: con las categorías existentes y sus propios prefijos IPN, el identificador IPN para el componente puede ser sugerido automáticamente + + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:40 @@ -6988,6 +7048,12 @@ Subelementos serán desplazados hacia arriba. Filtro de nombre + + + category.edit.part_ipn_prefix + Prefijo de IPN de la pieza + + obsolete @@ -10308,12 +10374,24 @@ Elemento 3 p.ej. "/Condensador \d+ nF/i" + + + category.edit.part_ipn_prefix.placeholder + p.ej. "B12A" + + category.edit.partname_regex.help Una expresión regular compatible con PCRE, la cual debe coincidir con el nombre de un componente. + + + category.edit.part_ipn_prefix.help + Un prefijo sugerido al ingresar el IPN de una parte. + + entity.select.add_hint diff --git a/translations/messages.fr.xlf b/translations/messages.fr.xlf index 39ff97d3..cb3936ef 100644 --- a/translations/messages.fr.xlf +++ b/translations/messages.fr.xlf @@ -1826,6 +1826,66 @@ Show/Hide sidebar Avancé + + + part.edit.tab.advanced.ipn.commonSectionHeader + Suggestions sans incrément de partie + + + + + part.edit.tab.advanced.ipn.partIncrementHeader + Propositions avec incréments numériques de parties + + + + + part.edit.tab.advanced.ipn.prefix.description.current-increment + Spécification IPN actuelle pour la pièce + + + + + part.edit.tab.advanced.ipn.prefix.description.increment + Prochaine spécification IPN possible basée sur une description identique de la pièce + + + + + part.edit.tab.advanced.ipn.prefix_empty.direct_category + Le préfixe IPN de la catégorie directe est vide, veuillez le spécifier dans la catégorie "%name%" + + + + + part.edit.tab.advanced.ipn.prefix.direct_category + Préfixe IPN de la catégorie directe + + + + + part.edit.tab.advanced.ipn.prefix.direct_category.increment + Préfixe IPN de la catégorie directe et d'un incrément spécifique à la partie + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.no_increment + Préfixes IPN avec un ordre hiérarchique des catégories des préfixes parents + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.increment + Préfixes IPN avec un ordre hiérarchique des catégories des préfixes parents et un incrément spécifique à la pièce + + + + + part.edit.tab.advanced.ipn.prefix.not_saved + Créez d'abord une pièce et assignez-la à une catégorie : avec les catégories existantes et leurs propres préfixes IPN, l'identifiant IPN pour la pièce peut être proposé automatiquement + + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:40 @@ -6930,6 +6990,12 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia Filtre de nom + + + category.edit.part_ipn_prefix + Préfixe de pièce IPN + + obsolete @@ -9151,5 +9217,17 @@ exemple de ville État personnalisé de la pièce + + + category.edit.part_ipn_prefix.placeholder + par ex. "B12A" + + + + + category.edit.part_ipn_prefix.help + Un préfixe suggéré lors de la saisie de l'IPN d'une pièce. + + diff --git a/translations/messages.it.xlf b/translations/messages.it.xlf index 781ca49f..34540da1 100644 --- a/translations/messages.it.xlf +++ b/translations/messages.it.xlf @@ -1848,6 +1848,66 @@ I sub elementi saranno spostati verso l'alto. Avanzate + + + part.edit.tab.advanced.ipn.commonSectionHeader + Suggerimenti senza incremento di parte + + + + + part.edit.tab.advanced.ipn.partIncrementHeader + Suggerimenti con incrementi numerici delle parti + + + + + part.edit.tab.advanced.ipn.prefix.description.current-increment + Specifica IPN attuale per il pezzo + + + + + part.edit.tab.advanced.ipn.prefix.description.increment + Prossima specifica IPN possibile basata su una descrizione identica del pezzo + + + + + part.edit.tab.advanced.ipn.prefix_empty.direct_category + Il prefisso IPN della categoria diretta è vuoto, specificarlo nella categoria "%name%" + + + + + part.edit.tab.advanced.ipn.prefix.direct_category + Prefisso IPN della categoria diretta + + + + + part.edit.tab.advanced.ipn.prefix.direct_category.increment + Prefisso IPN della categoria diretta e di un incremento specifico della parte + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.no_increment + Prefissi IPN con ordine gerarchico delle categorie dei prefissi padre + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.increment + Prefissi IPN con ordine gerarchico delle categorie dei prefissi padre e un incremento specifico per il pezzo + + + + + part.edit.tab.advanced.ipn.prefix.not_saved + Crea prima un componente e assegnagli una categoria: con le categorie esistenti e i loro propri prefissi IPN, l'identificativo IPN per il componente può essere suggerito automaticamente + + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:40 @@ -6990,6 +7050,12 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi Filtro nome + + + category.edit.part_ipn_prefix + Prefisso parte IPN + + obsolete @@ -10310,12 +10376,24 @@ Element 3 es. "/Condensatore \d+ nF/i" + + + category.edit.part_ipn_prefix.placeholder + es. "B12A" + + category.edit.partname_regex.help Un'espressione regolare compatibile con PCRE che il nome del componente deve soddisfare. + + + category.edit.part_ipn_prefix.help + Un prefisso suggerito durante l'inserimento dell'IPN di una parte. + + entity.select.add_hint diff --git a/translations/messages.ja.xlf b/translations/messages.ja.xlf index a0a146dc..668c51c1 100644 --- a/translations/messages.ja.xlf +++ b/translations/messages.ja.xlf @@ -1826,6 +1826,66 @@ 詳細 + + + part.edit.tab.advanced.ipn.commonSectionHeader + 部品の増加なしの提案。 + + + + + part.edit.tab.advanced.ipn.partIncrementHeader + パーツの数値インクリメントを含む提案 + + + + + part.edit.tab.advanced.ipn.prefix.description.current-increment + 部品の現在のIPN仕様 + + + + + part.edit.tab.advanced.ipn.prefix.description.increment + 同じ部品説明に基づく次の可能なIPN仕様 + + + + + part.edit.tab.advanced.ipn.prefix_empty.direct_category + 直接カテゴリの IPN プレフィックスが空です。「%name%」カテゴリで指定してください + + + + + part.edit.tab.advanced.ipn.prefix.direct_category + 直接カテゴリのIPNプレフィックス + + + + + part.edit.tab.advanced.ipn.prefix.direct_category.increment + 直接カテゴリのIPNプレフィックスと部品特有のインクリメント + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.no_increment + 親プレフィックスの階層カテゴリ順のIPNプレフィックス + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.increment + 親プレフィックスの階層カテゴリ順とパーツ固有の増分のIPNプレフィックス + + + + + part.edit.tab.advanced.ipn.prefix.not_saved + まずはコンポーネントを作成し、それをカテゴリに割り当ててください:既存のカテゴリとそれぞれのIPNプレフィックスを基に、コンポーネントのIPNを自動的に提案できます + + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:40 @@ -6931,6 +6991,12 @@ 名前のフィルター + + + category.edit.part_ipn_prefix + 部品 IPN 接頭辞 + + obsolete @@ -8888,5 +8954,17 @@ Exampletown 部品のカスタム状態 + + + category.edit.part_ipn_prefix.placeholder + 例: "B12A" + + + + + category.edit.part_ipn_prefix.help + 部品のIPN入力時に提案される接頭辞。 + + diff --git a/translations/messages.nl.xlf b/translations/messages.nl.xlf index 4afc28aa..1c063187 100644 --- a/translations/messages.nl.xlf +++ b/translations/messages.nl.xlf @@ -778,5 +778,83 @@ Aangepaste status van onderdeel + + + category.edit.part_ipn_prefix + IPN-voorvoegsel van onderdeel + + + + + category.edit.part_ipn_prefix.placeholder + bijv. "B12A" + + + + + category.edit.part_ipn_prefix.help + Een voorgesteld voorvoegsel bij het invoeren van de IPN van een onderdeel. + + + + + part.edit.tab.advanced.ipn.commonSectionHeader + Suggesties zonder toename van onderdelen + + + + + part.edit.tab.advanced.ipn.partIncrementHeader + Suggesties met numerieke verhogingen van onderdelen + + + + + part.edit.tab.advanced.ipn.prefix.description.current-increment + Huidige IPN-specificatie voor het onderdeel + + + + + part.edit.tab.advanced.ipn.prefix.description.increment + Volgende mogelijke IPN-specificatie op basis van een identieke onderdeelbeschrijving + + + + + part.edit.tab.advanced.ipn.prefix_empty.direct_category + Het IPN-prefix van de directe categorie is leeg, geef het op in de categorie "%name%" + + + + + part.edit.tab.advanced.ipn.prefix.direct_category + IPN-prefix van de directe categorie + + + + + part.edit.tab.advanced.ipn.prefix.direct_category.increment + IPN-voorvoegsel van de directe categorie en een onderdeel specifiek increment + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.no_increment + IPN-prefixen met een hiërarchische volgorde van hoofdcategorieën + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.increment + IPN-prefixen met een hiërarchische volgorde van hoofdcategorieën en een specifieke toename voor het onderdeel + + + + + part.edit.tab.advanced.ipn.prefix.not_saved + Maak eerst een component en wijs het toe aan een categorie: met de bestaande categorieën en hun eigen IPN-prefixen kan de IPN voor het component automatisch worden voorgesteld + + diff --git a/translations/messages.pl.xlf b/translations/messages.pl.xlf index cbecc3bf..0a9353fb 100644 --- a/translations/messages.pl.xlf +++ b/translations/messages.pl.xlf @@ -1853,6 +1853,66 @@ Po usunięciu pod elementy zostaną przeniesione na górę. Zaawansowane + + + part.edit.tab.advanced.ipn.commonSectionHeader + Sugestie bez zwiększenia części + + + + + part.edit.tab.advanced.ipn.partIncrementHeader + Propozycje z numerycznymi przyrostami części + + + + + part.edit.tab.advanced.ipn.prefix.description.current-increment + Aktualna specyfikacja IPN dla części + + + + + part.edit.tab.advanced.ipn.prefix.description.increment + Następna możliwa specyfikacja IPN na podstawie identycznego opisu części + + + + + part.edit.tab.advanced.ipn.prefix_empty.direct_category + Prefiks IPN kategorii bezpośredniej jest pusty, podaj go w kategorii "%name%". + + + + + part.edit.tab.advanced.ipn.prefix.direct_category + Prefiks IPN kategorii bezpośredniej + + + + + part.edit.tab.advanced.ipn.prefix.direct_category.increment + Prefiks IPN bezpośredniej kategorii i specyficzny dla części przyrost + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.no_increment + Prefiksy IPN z hierarchiczną kolejnością kategorii prefiksów nadrzędnych + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.increment + Prefiksy IPN z hierarchiczną kolejnością kategorii prefiksów nadrzędnych i specyficznym przyrostem dla części + + + + + part.edit.tab.advanced.ipn.prefix.not_saved + Najpierw utwórz komponent i przypisz go do kategorii: dzięki istniejącym kategoriom i ich własnym prefiksom IPN identyfikator IPN dla komponentu może być proponowany automatycznie + + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:40 @@ -6993,6 +7053,12 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo Filtr nazwy + + + category.edit.part_ipn_prefix + Prefiks IPN części + + obsolete @@ -10313,12 +10379,24 @@ Element 3 np. "/Kondensator \d+ nF/i" + + + category.edit.part_ipn_prefix.placeholder + np. "B12A" + + category.edit.partname_regex.help Wyrażenie regularne zgodne z PCRE, do którego musi pasować nazwa komponentu. + + + category.edit.part_ipn_prefix.help + Een voorgesteld voorvoegsel bij het invoeren van de IPN van een onderdeel. + + entity.select.add_hint diff --git a/translations/messages.ru.xlf b/translations/messages.ru.xlf index 517aca8e..9c91a4b1 100644 --- a/translations/messages.ru.xlf +++ b/translations/messages.ru.xlf @@ -1856,6 +1856,66 @@ Расширенные + + + part.edit.tab.advanced.ipn.commonSectionHeader + Предложения без увеличения частей. + + + + + part.edit.tab.advanced.ipn.partIncrementHeader + Предложения с числовыми приращениями частей + + + + + part.edit.tab.advanced.ipn.prefix.description.current-increment + Текущая спецификация IPN для детали + + + + + part.edit.tab.advanced.ipn.prefix.description.increment + Следующая возможная спецификация IPN на основе идентичного описания детали + + + + + part.edit.tab.advanced.ipn.prefix_empty.direct_category + Префикс IPN для прямой категории пуст, укажите его в категории «%name%». + + + + + part.edit.tab.advanced.ipn.prefix.direct_category + Префикс IPN для прямой категории + + + + + part.edit.tab.advanced.ipn.prefix.direct_category.increment + Префикс IPN прямой категории и специфическое для части приращение + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.no_increment + IPN-префиксы с иерархическим порядком категорий родительских префиксов + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.increment + IPN-префиксы с иерархическим порядком категорий родительских префиксов и специфическим увеличением для компонента + + + + + part.edit.tab.advanced.ipn.prefix.not_saved + Сначала создайте компонент и назначьте ему категорию: на основе существующих категорий и их собственных IPN-префиксов идентификатор IPN для компонента может быть предложен автоматически + + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:40 @@ -7000,6 +7060,12 @@ Фильтр по имени + + + category.edit.part_ipn_prefix + Префикс IPN детали + + obsolete @@ -10317,12 +10383,24 @@ e.g "/Конденсатор \d+ nF/i" + + + category.edit.part_ipn_prefix.placeholder + e.g "B12A" + + category.edit.partname_regex.help PCRE-совместимое регулярное выражение которому должно соответствовать имя компонента. + + + category.edit.part_ipn_prefix.help + Предлагаемый префикс при вводе IPN детали. + + entity.select.add_hint diff --git a/translations/messages.zh.xlf b/translations/messages.zh.xlf index 4a5f5896..ee912800 100644 --- a/translations/messages.zh.xlf +++ b/translations/messages.zh.xlf @@ -1856,6 +1856,66 @@ 高级 + + + part.edit.tab.advanced.ipn.commonSectionHeader + Sugestie bez zwiększenia części + + + + + part.edit.tab.advanced.ipn.partIncrementHeader + 包含部件数值增量的建议 + + + + + part.edit.tab.advanced.ipn.prefix.description.current-increment + 部件的当前IPN规格 + + + + + part.edit.tab.advanced.ipn.prefix.description.increment + 基于相同部件描述的下一个可能的IPN规格 + + + + + part.edit.tab.advanced.ipn.prefix_empty.direct_category + 直接类别的 IPN 前缀为空,请在类别“%name%”中指定。 + + + + + part.edit.tab.advanced.ipn.prefix.direct_category + 直接类别的IPN前缀 + + + + + part.edit.tab.advanced.ipn.prefix.direct_category.increment + 直接类别的IPN前缀和部件特定的增量 + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.no_increment + 具有父级前缀层级类别顺序的IPN前缀 + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.increment + 具有父级前缀层级类别顺序和组件特定增量的IPN前缀 + + + + + part.edit.tab.advanced.ipn.prefix.not_saved + 请先创建组件并将其分配到类别:基于现有类别及其专属的IPN前缀,可以自动建议组件的IPN + + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:40 @@ -6997,6 +7057,12 @@ 名称过滤器 + + + category.edit.part_ipn_prefix + 部件 IPN 前缀 + + obsolete @@ -10316,12 +10382,24 @@ Element 3 + + + category.edit.part_ipn_prefix.placeholder + 例如:"B12A" + + category.edit.partname_regex.help 与PCRE兼容的正则表达式,部分名称必须匹配。 + + + category.edit.part_ipn_prefix.help + 输入零件IPN时建议的前缀。 + + entity.select.add_hint From 07e4521c30686431a75d756823e0fcb4949587e0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Nov 2025 00:35:03 +0100 Subject: [PATCH 002/235] Bump actions/upload-artifact from 4 to 5 (#1091) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '5' 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/assets_artifact_build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/assets_artifact_build.yml b/.github/workflows/assets_artifact_build.yml index 447f95bf..fa0f0ecf 100644 --- a/.github/workflows/assets_artifact_build.yml +++ b/.github/workflows/assets_artifact_build.yml @@ -80,13 +80,13 @@ jobs: run: zip -r /tmp/partdb_assets.zip public/build/ vendor/ - name: Upload assets artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: Only dependencies and built assets path: /tmp/partdb_assets.zip - name: Upload full artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: Full Part-DB including dependencies and built assets path: /tmp/partdb_with_assets.zip From ec6b3ae4147a07e59ff03ad650a89512b1121234 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Nov 2025 00:35:12 +0100 Subject: [PATCH 003/235] Bump actions/setup-node from 5 to 6 (#1086) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 5 to 6. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: '6' 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/assets_artifact_build.yml | 2 +- .github/workflows/tests.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/assets_artifact_build.yml b/.github/workflows/assets_artifact_build.yml index fa0f0ecf..3c7b2522 100644 --- a/.github/workflows/assets_artifact_build.yml +++ b/.github/workflows/assets_artifact_build.yml @@ -60,7 +60,7 @@ jobs: ${{ runner.os }}-yarn- - name: Setup node - uses: actions/setup-node@v5 + uses: actions/setup-node@v6 with: node-version: '20' diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c7c0965b..fee987ae 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -104,7 +104,7 @@ jobs: run: composer install --prefer-dist --no-progress - name: Setup node - uses: actions/setup-node@v5 + uses: actions/setup-node@v6 with: node-version: '20' From e8ff15ad0f397e96405d00459d3f226e919444a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 3 Nov 2025 00:36:56 +0100 Subject: [PATCH 004/235] Updated dependencies --- composer.lock | 815 ++++++++++++++++++++++++++------------------------ yarn.lock | 442 +++++++++++++-------------- 2 files changed, 637 insertions(+), 620 deletions(-) diff --git a/composer.lock b/composer.lock index 72e83e0f..28b0e8ef 100644 --- a/composer.lock +++ b/composer.lock @@ -968,7 +968,7 @@ }, { "name": "api-platform/doctrine-common", - "version": "v4.2.2", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/api-platform/doctrine-common.git", @@ -1052,22 +1052,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/doctrine-common/tree/v4.2.2" + "source": "https://github.com/api-platform/doctrine-common/tree/v4.2.3" }, "time": "2025-08-27T12:34:14+00:00" }, { "name": "api-platform/doctrine-orm", - "version": "v4.2.2", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/api-platform/doctrine-orm.git", - "reference": "d35d97423f7b399117ee033ecc886b3ed9dc2e23" + "reference": "f30b580379ea16f6de3e27ecf8e474335af011f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/doctrine-orm/zipball/d35d97423f7b399117ee033ecc886b3ed9dc2e23", - "reference": "d35d97423f7b399117ee033ecc886b3ed9dc2e23", + "url": "https://api.github.com/repos/api-platform/doctrine-orm/zipball/f30b580379ea16f6de3e27ecf8e474335af011f9", + "reference": "f30b580379ea16f6de3e27ecf8e474335af011f9", "shasum": "" }, "require": { @@ -1139,13 +1139,13 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/doctrine-orm/tree/v4.2.2" + "source": "https://github.com/api-platform/doctrine-orm/tree/v4.2.3" }, - "time": "2025-10-07T13:54:25+00:00" + "time": "2025-10-31T11:51:24+00:00" }, { "name": "api-platform/documentation", - "version": "v4.2.2", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/api-platform/documentation.git", @@ -1202,13 +1202,13 @@ ], "description": "API Platform documentation controller.", "support": { - "source": "https://github.com/api-platform/documentation/tree/v4.2.2" + "source": "https://github.com/api-platform/documentation/tree/v4.2.3" }, "time": "2025-08-19T08:04:29+00:00" }, { "name": "api-platform/http-cache", - "version": "v4.2.2", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/api-platform/http-cache.git", @@ -1282,22 +1282,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/http-cache/tree/v4.2.2" + "source": "https://github.com/api-platform/http-cache/tree/v4.2.3" }, "time": "2025-09-16T12:51:08+00:00" }, { "name": "api-platform/hydra", - "version": "v4.2.2", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/api-platform/hydra.git", - "reference": "bfbe928e6a3999433ef11afc267e591152b17cc3" + "reference": "3ffe1232babfbba29ffbf52af1080aef5a015c65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/hydra/zipball/bfbe928e6a3999433ef11afc267e591152b17cc3", - "reference": "bfbe928e6a3999433ef11afc267e591152b17cc3", + "url": "https://api.github.com/repos/api-platform/hydra/zipball/3ffe1232babfbba29ffbf52af1080aef5a015c65", + "reference": "3ffe1232babfbba29ffbf52af1080aef5a015c65", "shasum": "" }, "require": { @@ -1369,13 +1369,13 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/hydra/tree/v4.2.2" + "source": "https://github.com/api-platform/hydra/tree/v4.2.3" }, - "time": "2025-10-07T13:39:38+00:00" + "time": "2025-10-24T09:59:50+00:00" }, { "name": "api-platform/json-api", - "version": "v4.2.2", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/api-platform/json-api.git", @@ -1451,22 +1451,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/json-api/tree/v4.2.2" + "source": "https://github.com/api-platform/json-api/tree/v4.2.3" }, "time": "2025-09-16T12:49:22+00:00" }, { "name": "api-platform/json-schema", - "version": "v4.2.2", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/api-platform/json-schema.git", - "reference": "ec81bdd09375067d7d2555c10ec3dfc697874327" + "reference": "aa8fe10d527e0ecb946ee4b873cfa97e02fb13c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/json-schema/zipball/ec81bdd09375067d7d2555c10ec3dfc697874327", - "reference": "ec81bdd09375067d7d2555c10ec3dfc697874327", + "url": "https://api.github.com/repos/api-platform/json-schema/zipball/aa8fe10d527e0ecb946ee4b873cfa97e02fb13c3", + "reference": "aa8fe10d527e0ecb946ee4b873cfa97e02fb13c3", "shasum": "" }, "require": { @@ -1532,13 +1532,13 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/json-schema/tree/v4.2.2" + "source": "https://github.com/api-platform/json-schema/tree/v4.2.3" }, - "time": "2025-10-07T09:45:59+00:00" + "time": "2025-10-31T08:51:19+00:00" }, { "name": "api-platform/jsonld", - "version": "v4.2.2", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/api-platform/jsonld.git", @@ -1612,22 +1612,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/jsonld/tree/v4.2.2" + "source": "https://github.com/api-platform/jsonld/tree/v4.2.3" }, "time": "2025-09-25T19:30:56+00:00" }, { "name": "api-platform/metadata", - "version": "v4.2.2", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/api-platform/metadata.git", - "reference": "5aeba910cb6352068664ca11cd9ee0dc208894c0" + "reference": "4a7676a1787b71730e1bcce83fc8987df745cb2c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/metadata/zipball/5aeba910cb6352068664ca11cd9ee0dc208894c0", - "reference": "5aeba910cb6352068664ca11cd9ee0dc208894c0", + "url": "https://api.github.com/repos/api-platform/metadata/zipball/4a7676a1787b71730e1bcce83fc8987df745cb2c", + "reference": "4a7676a1787b71730e1bcce83fc8987df745cb2c", "shasum": "" }, "require": { @@ -1710,13 +1710,13 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/metadata/tree/v4.2.2" + "source": "https://github.com/api-platform/metadata/tree/v4.2.3" }, - "time": "2025-10-08T08:36:37+00:00" + "time": "2025-10-31T08:55:46+00:00" }, { "name": "api-platform/openapi", - "version": "v4.2.2", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/api-platform/openapi.git", @@ -1800,22 +1800,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/openapi/tree/v4.2.2" + "source": "https://github.com/api-platform/openapi/tree/v4.2.3" }, "time": "2025-09-30T12:06:50+00:00" }, { "name": "api-platform/serializer", - "version": "v4.2.2", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/api-platform/serializer.git", - "reference": "58c1378af6429049ee62951b838f6b645706c3a3" + "reference": "50255df8751ffa81aea0eb0455bd248e9c8c2aa7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/serializer/zipball/58c1378af6429049ee62951b838f6b645706c3a3", - "reference": "58c1378af6429049ee62951b838f6b645706c3a3", + "url": "https://api.github.com/repos/api-platform/serializer/zipball/50255df8751ffa81aea0eb0455bd248e9c8c2aa7", + "reference": "50255df8751ffa81aea0eb0455bd248e9c8c2aa7", "shasum": "" }, "require": { @@ -1893,22 +1893,22 @@ "serializer" ], "support": { - "source": "https://github.com/api-platform/serializer/tree/v4.2.2" + "source": "https://github.com/api-platform/serializer/tree/v4.2.3" }, - "time": "2025-10-03T08:13:34+00:00" + "time": "2025-10-31T14:00:01+00:00" }, { "name": "api-platform/state", - "version": "v4.2.2", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/api-platform/state.git", - "reference": "7dc3dfbafa4627cc789bd8bcd4da46e6c37f6b26" + "reference": "5a74ea2ca36d0651bf637b0da6c10db4383172bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/state/zipball/7dc3dfbafa4627cc789bd8bcd4da46e6c37f6b26", - "reference": "7dc3dfbafa4627cc789bd8bcd4da46e6c37f6b26", + "url": "https://api.github.com/repos/api-platform/state/zipball/5a74ea2ca36d0651bf637b0da6c10db4383172bf", + "reference": "5a74ea2ca36d0651bf637b0da6c10db4383172bf", "shasum": "" }, "require": { @@ -1989,22 +1989,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/state/tree/v4.2.2" + "source": "https://github.com/api-platform/state/tree/v4.2.3" }, - "time": "2025-10-09T08:33:56+00:00" + "time": "2025-10-31T10:04:25+00:00" }, { "name": "api-platform/symfony", - "version": "v4.2.2", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/api-platform/symfony.git", - "reference": "44bb117df1cd5695203ec6a97999cabc85257780" + "reference": "a07233f9a1cb20dcb141056ac767c28c62c74269" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/symfony/zipball/44bb117df1cd5695203ec6a97999cabc85257780", - "reference": "44bb117df1cd5695203ec6a97999cabc85257780", + "url": "https://api.github.com/repos/api-platform/symfony/zipball/a07233f9a1cb20dcb141056ac767c28c62c74269", + "reference": "a07233f9a1cb20dcb141056ac767c28c62c74269", "shasum": "" }, "require": { @@ -2019,6 +2019,7 @@ "api-platform/state": "^4.2@beta", "api-platform/validator": "^4.1.11", "php": ">=8.2", + "symfony/asset": "^6.4 || ^7.0", "symfony/finder": "^6.4 || ^7.0", "symfony/property-access": "^6.4 || ^7.0", "symfony/property-info": "^6.4 || ^7.1", @@ -2118,22 +2119,22 @@ "symfony" ], "support": { - "source": "https://github.com/api-platform/symfony/tree/v4.2.2" + "source": "https://github.com/api-platform/symfony/tree/v4.2.3" }, - "time": "2025-10-09T08:33:56+00:00" + "time": "2025-10-31T08:55:46+00:00" }, { "name": "api-platform/validator", - "version": "v4.2.2", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/api-platform/validator.git", - "reference": "9986e84b27e3de7f87c7c23f238430a572f87f67" + "reference": "bb8697d3676f9034865dfbf96df9e55734aecad5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/validator/zipball/9986e84b27e3de7f87c7c23f238430a572f87f67", - "reference": "9986e84b27e3de7f87c7c23f238430a572f87f67", + "url": "https://api.github.com/repos/api-platform/validator/zipball/bb8697d3676f9034865dfbf96df9e55734aecad5", + "reference": "bb8697d3676f9034865dfbf96df9e55734aecad5", "shasum": "" }, "require": { @@ -2194,9 +2195,9 @@ "validator" ], "support": { - "source": "https://github.com/api-platform/validator/tree/v4.2.2" + "source": "https://github.com/api-platform/validator/tree/v4.2.3" }, - "time": "2025-09-29T15:36:04+00:00" + "time": "2025-10-31T11:51:24+00:00" }, { "name": "beberlei/assert", @@ -2732,16 +2733,16 @@ }, { "name": "doctrine/collections", - "version": "2.3.0", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "2eb07e5953eed811ce1b309a7478a3b236f2273d" + "reference": "9acfeea2e8666536edff3d77c531261c63680160" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/2eb07e5953eed811ce1b309a7478a3b236f2273d", - "reference": "2eb07e5953eed811ce1b309a7478a3b236f2273d", + "url": "https://api.github.com/repos/doctrine/collections/zipball/9acfeea2e8666536edff3d77c531261c63680160", + "reference": "9acfeea2e8666536edff3d77c531261c63680160", "shasum": "" }, "require": { @@ -2750,11 +2751,11 @@ "symfony/polyfill-php84": "^1.30" }, "require-dev": { - "doctrine/coding-standard": "^12", + "doctrine/coding-standard": "^14", "ext-json": "*", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^10.5" + "phpstan/phpstan": "^2.1.30", + "phpstan/phpstan-phpunit": "^2.0.7", + "phpunit/phpunit": "^10.5.58 || ^11.5.42 || ^12.4" }, "type": "library", "autoload": { @@ -2798,7 +2799,7 @@ ], "support": { "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/2.3.0" + "source": "https://github.com/doctrine/collections/tree/2.4.0" }, "funding": [ { @@ -2814,7 +2815,7 @@ "type": "tidelift" } ], - "time": "2025-03-22T10:17:19+00:00" + "time": "2025-10-25T09:18:13+00:00" }, { "name": "doctrine/common", @@ -3783,16 +3784,16 @@ }, { "name": "doctrine/orm", - "version": "3.5.2", + "version": "3.5.3", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "5a541b8b3a327ab1ea5f93b1615b4ff67a34e109" + "reference": "1220edf9535303feb6dbfcf171beeef842fc9e1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/5a541b8b3a327ab1ea5f93b1615b4ff67a34e109", - "reference": "5a541b8b3a327ab1ea5f93b1615b4ff67a34e109", + "url": "https://api.github.com/repos/doctrine/orm/zipball/1220edf9535303feb6dbfcf171beeef842fc9e1c", + "reference": "1220edf9535303feb6dbfcf171beeef842fc9e1c", "shasum": "" }, "require": { @@ -3812,15 +3813,14 @@ "symfony/var-exporter": "^6.3.9 || ^7.0" }, "require-dev": { - "doctrine/coding-standard": "^13.0", + "doctrine/coding-standard": "^14.0", "phpbench/phpbench": "^1.0", "phpdocumentor/guides-cli": "^1.4", "phpstan/extension-installer": "^1.4", - "phpstan/phpstan": "2.0.3", + "phpstan/phpstan": "2.1.22", "phpstan/phpstan-deprecation-rules": "^2", - "phpunit/phpunit": "^10.4.0", + "phpunit/phpunit": "^10.5.0 || ^11.5", "psr/log": "^1 || ^2 || ^3", - "squizlabs/php_codesniffer": "3.12.0", "symfony/cache": "^5.4 || ^6.2 || ^7.0" }, "suggest": { @@ -3867,9 +3867,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/3.5.2" + "source": "https://github.com/doctrine/orm/tree/3.5.3" }, - "time": "2025-08-08T17:00:40+00:00" + "time": "2025-10-27T22:06:52+00:00" }, { "name": "doctrine/persistence", @@ -3966,26 +3966,26 @@ }, { "name": "doctrine/sql-formatter", - "version": "1.5.2", + "version": "1.5.3", "source": { "type": "git", "url": "https://github.com/doctrine/sql-formatter.git", - "reference": "d6d00aba6fd2957fe5216fe2b7673e9985db20c8" + "reference": "a8af23a8e9d622505baa2997465782cbe8bb7fc7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/d6d00aba6fd2957fe5216fe2b7673e9985db20c8", - "reference": "d6d00aba6fd2957fe5216fe2b7673e9985db20c8", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/a8af23a8e9d622505baa2997465782cbe8bb7fc7", + "reference": "a8af23a8e9d622505baa2997465782cbe8bb7fc7", "shasum": "" }, "require": { "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^12", - "ergebnis/phpunit-slow-test-detector": "^2.14", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^10.5" + "doctrine/coding-standard": "^14", + "ergebnis/phpunit-slow-test-detector": "^2.20", + "phpstan/phpstan": "^2.1.31", + "phpunit/phpunit": "^10.5.58" }, "bin": [ "bin/sql-formatter" @@ -4015,22 +4015,22 @@ ], "support": { "issues": "https://github.com/doctrine/sql-formatter/issues", - "source": "https://github.com/doctrine/sql-formatter/tree/1.5.2" + "source": "https://github.com/doctrine/sql-formatter/tree/1.5.3" }, - "time": "2025-01-24T11:45:48+00:00" + "time": "2025-10-26T09:35:14+00:00" }, { "name": "dompdf/dompdf", - "version": "v3.1.3", + "version": "v3.1.4", "source": { "type": "git", "url": "https://github.com/dompdf/dompdf.git", - "reference": "baed300e4fb8226359c04395518059a136e2a2e2" + "reference": "db712c90c5b9868df3600e64e68da62e78a34623" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/dompdf/zipball/baed300e4fb8226359c04395518059a136e2a2e2", - "reference": "baed300e4fb8226359c04395518059a136e2a2e2", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/db712c90c5b9868df3600e64e68da62e78a34623", + "reference": "db712c90c5b9868df3600e64e68da62e78a34623", "shasum": "" }, "require": { @@ -4079,9 +4079,9 @@ "homepage": "https://github.com/dompdf/dompdf", "support": { "issues": "https://github.com/dompdf/dompdf/issues", - "source": "https://github.com/dompdf/dompdf/tree/v3.1.3" + "source": "https://github.com/dompdf/dompdf/tree/v3.1.4" }, - "time": "2025-10-14T13:10:17+00:00" + "time": "2025-10-29T12:43:30+00:00" }, { "name": "dompdf/php-font-lib", @@ -5765,16 +5765,16 @@ }, { "name": "league/csv", - "version": "9.27.0", + "version": "9.27.1", "source": { "type": "git", "url": "https://github.com/thephpleague/csv.git", - "reference": "cb491b1ba3c42ff2bcd0113814f4256b42bae845" + "reference": "26de738b8fccf785397d05ee2fc07b6cd8749797" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/csv/zipball/cb491b1ba3c42ff2bcd0113814f4256b42bae845", - "reference": "cb491b1ba3c42ff2bcd0113814f4256b42bae845", + "url": "https://api.github.com/repos/thephpleague/csv/zipball/26de738b8fccf785397d05ee2fc07b6cd8749797", + "reference": "26de738b8fccf785397d05ee2fc07b6cd8749797", "shasum": "" }, "require": { @@ -5852,7 +5852,7 @@ "type": "github" } ], - "time": "2025-10-16T08:22:09+00:00" + "time": "2025-10-25T08:35:20+00:00" }, { "name": "league/html-to-markdown", @@ -6977,25 +6977,28 @@ }, { "name": "nelmio/cors-bundle", - "version": "2.5.0", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/nelmio/NelmioCorsBundle.git", - "reference": "3a526fe025cd20e04a6a11370cf5ab28dbb5a544" + "reference": "530217472204881cacd3671909f634b960c7b948" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/3a526fe025cd20e04a6a11370cf5ab28dbb5a544", - "reference": "3a526fe025cd20e04a6a11370cf5ab28dbb5a544", + "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/530217472204881cacd3671909f634b960c7b948", + "reference": "530217472204881cacd3671909f634b960c7b948", "shasum": "" }, "require": { "psr/log": "^1.0 || ^2.0 || ^3.0", - "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0 || ^8.0" }, "require-dev": { - "mockery/mockery": "^1.3.6", - "symfony/phpunit-bridge": "^5.4 || ^6.0 || ^7.0" + "phpstan/phpstan": "^1.11.5", + "phpstan/phpstan-deprecation-rules": "^1.2.0", + "phpstan/phpstan-phpunit": "^1.4", + "phpstan/phpstan-symfony": "^1.4.4", + "phpunit/phpunit": "^8" }, "type": "symfony-bundle", "extra": { @@ -7033,9 +7036,9 @@ ], "support": { "issues": "https://github.com/nelmio/NelmioCorsBundle/issues", - "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.5.0" + "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.6.0" }, - "time": "2024-06-24T21:25:28+00:00" + "time": "2025-10-23T06:57:22+00:00" }, { "name": "nelmio/security-bundle", @@ -7113,25 +7116,25 @@ }, { "name": "nette/schema", - "version": "v1.3.2", + "version": "v1.3.3", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "da801d52f0354f70a638673c4a0f04e16529431d" + "reference": "2befc2f42d7c715fd9d95efc31b1081e5d765004" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/da801d52f0354f70a638673c4a0f04e16529431d", - "reference": "da801d52f0354f70a638673c4a0f04e16529431d", + "url": "https://api.github.com/repos/nette/schema/zipball/2befc2f42d7c715fd9d95efc31b1081e5d765004", + "reference": "2befc2f42d7c715fd9d95efc31b1081e5d765004", "shasum": "" }, "require": { "nette/utils": "^4.0", - "php": "8.1 - 8.4" + "php": "8.1 - 8.5" }, "require-dev": { "nette/tester": "^2.5.2", - "phpstan/phpstan-nette": "^1.0", + "phpstan/phpstan-nette": "^2.0@stable", "tracy/tracy": "^2.8" }, "type": "library", @@ -7141,6 +7144,9 @@ } }, "autoload": { + "psr-4": { + "Nette\\": "src" + }, "classmap": [ "src/" ] @@ -7169,9 +7175,9 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.3.2" + "source": "https://github.com/nette/schema/tree/v1.3.3" }, - "time": "2024-10-06T23:10:23+00:00" + "time": "2025-10-30T22:57:59+00:00" }, { "name": "nette/utils", @@ -8468,16 +8474,16 @@ }, { "name": "phpoffice/phpspreadsheet", - "version": "5.1.0", + "version": "5.2.0", "source": { "type": "git", "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", - "reference": "fd26e45a814e94ae2aad0df757d9d1739c4bf2e0" + "reference": "3b8994b3aac4b61018bc04fc8c441f4fd68c18eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/fd26e45a814e94ae2aad0df757d9d1739c4bf2e0", - "reference": "fd26e45a814e94ae2aad0df757d9d1739c4bf2e0", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/3b8994b3aac4b61018bc04fc8c441f4fd68c18eb", + "reference": "3b8994b3aac4b61018bc04fc8c441f4fd68c18eb", "shasum": "" }, "require": { @@ -8507,7 +8513,7 @@ "dealerdirect/phpcodesniffer-composer-installer": "dev-main", "dompdf/dompdf": "^2.0 || ^3.0", "friendsofphp/php-cs-fixer": "^3.2", - "mitoteam/jpgraph": "^10.3", + "mitoteam/jpgraph": "^10.5", "mpdf/mpdf": "^8.1.1", "phpcompatibility/php-compatibility": "^9.3", "phpstan/phpstan": "^1.1 || ^2.0", @@ -8519,7 +8525,7 @@ }, "suggest": { "dompdf/dompdf": "Option for rendering PDF with PDF Writer", - "ext-intl": "PHP Internationalization Functions", + "ext-intl": "PHP Internationalization Functions, regquired for NumberFormat Wizard", "mitoteam/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers", "mpdf/mpdf": "Option for rendering PDF with PDF Writer", "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer" @@ -8568,9 +8574,9 @@ ], "support": { "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", - "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/5.1.0" + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/5.2.0" }, - "time": "2025-09-04T05:34:49+00:00" + "time": "2025-10-26T15:54:22+00:00" }, { "name": "phpstan/phpdoc-parser", @@ -9481,16 +9487,16 @@ }, { "name": "s9e/text-formatter", - "version": "2.19.0", + "version": "2.19.1", "source": { "type": "git", "url": "https://github.com/s9e/TextFormatter.git", - "reference": "d65a4f61cbe494937afb3150dc73b6e757d400d3" + "reference": "47c8324f370cc23e72190f00a4ffb18f50516452" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/s9e/TextFormatter/zipball/d65a4f61cbe494937afb3150dc73b6e757d400d3", - "reference": "d65a4f61cbe494937afb3150dc73b6e757d400d3", + "url": "https://api.github.com/repos/s9e/TextFormatter/zipball/47c8324f370cc23e72190f00a4ffb18f50516452", + "reference": "47c8324f370cc23e72190f00a4ffb18f50516452", "shasum": "" }, "require": { @@ -9518,7 +9524,7 @@ }, "type": "library", "extra": { - "version": "2.19.0" + "version": "2.19.1" }, "autoload": { "psr-4": { @@ -9550,9 +9556,9 @@ ], "support": { "issues": "https://github.com/s9e/TextFormatter/issues", - "source": "https://github.com/s9e/TextFormatter/tree/2.19.0" + "source": "https://github.com/s9e/TextFormatter/tree/2.19.1" }, - "time": "2025-04-26T09:27:34+00:00" + "time": "2025-10-26T07:38:53+00:00" }, { "name": "sabberworm/php-css-parser", @@ -10128,20 +10134,20 @@ }, { "name": "spomky-labs/pki-framework", - "version": "1.3.0", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/Spomky-Labs/pki-framework.git", - "reference": "eced5b5ce70518b983ff2be486e902bbd15135ae" + "reference": "bf6f55a9d9eb25b7781640221cb54f5c727850d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/pki-framework/zipball/eced5b5ce70518b983ff2be486e902bbd15135ae", - "reference": "eced5b5ce70518b983ff2be486e902bbd15135ae", + "url": "https://api.github.com/repos/Spomky-Labs/pki-framework/zipball/bf6f55a9d9eb25b7781640221cb54f5c727850d7", + "reference": "bf6f55a9d9eb25b7781640221cb54f5c727850d7", "shasum": "" }, "require": { - "brick/math": "^0.10|^0.11|^0.12|^0.13", + "brick/math": "^0.10|^0.11|^0.12|^0.13|^0.14", "ext-mbstring": "*", "php": ">=8.1" }, @@ -10149,7 +10155,7 @@ "ekino/phpstan-banned-code": "^1.0|^2.0|^3.0", "ext-gmp": "*", "ext-openssl": "*", - "infection/infection": "^0.28|^0.29", + "infection/infection": "^0.28|^0.29|^0.31", "php-parallel-lint/php-parallel-lint": "^1.3", "phpstan/extension-installer": "^1.3|^2.0", "phpstan/phpstan": "^1.8|^2.0", @@ -10159,8 +10165,8 @@ "phpunit/phpunit": "^10.1|^11.0|^12.0", "rector/rector": "^1.0|^2.0", "roave/security-advisories": "dev-latest", - "symfony/string": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0", + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0", "symplify/easy-coding-standard": "^12.0" }, "suggest": { @@ -10221,7 +10227,7 @@ ], "support": { "issues": "https://github.com/Spomky-Labs/pki-framework/issues", - "source": "https://github.com/Spomky-Labs/pki-framework/tree/1.3.0" + "source": "https://github.com/Spomky-Labs/pki-framework/tree/1.4.0" }, "funding": [ { @@ -10233,7 +10239,7 @@ "type": "patreon" } ], - "time": "2025-06-13T08:35:04+00:00" + "time": "2025-10-22T08:24:34+00:00" }, { "name": "symfony/apache-pack", @@ -10332,16 +10338,16 @@ }, { "name": "symfony/cache", - "version": "v7.3.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "bf8afc8ffd4bfd3d9c373e417f041d9f1e5b863f" + "reference": "4a55feb59664f49042a0824c0f955e2f4c1412ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/bf8afc8ffd4bfd3d9c373e417f041d9f1e5b863f", - "reference": "bf8afc8ffd4bfd3d9c373e417f041d9f1e5b863f", + "url": "https://api.github.com/repos/symfony/cache/zipball/4a55feb59664f49042a0824c0f955e2f4c1412ad", + "reference": "4a55feb59664f49042a0824c0f955e2f4c1412ad", "shasum": "" }, "require": { @@ -10410,7 +10416,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.3.4" + "source": "https://github.com/symfony/cache/tree/v7.3.5" }, "funding": [ { @@ -10430,7 +10436,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-10-16T13:55:38+00:00" }, { "name": "symfony/cache-contracts", @@ -10663,16 +10669,16 @@ }, { "name": "symfony/console", - "version": "v7.3.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db" + "reference": "cdb80fa5869653c83cfe1a9084a673b6daf57ea7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/2b9c5fafbac0399a20a2e82429e2bd735dcfb7db", - "reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db", + "url": "https://api.github.com/repos/symfony/console/zipball/cdb80fa5869653c83cfe1a9084a673b6daf57ea7", + "reference": "cdb80fa5869653c83cfe1a9084a673b6daf57ea7", "shasum": "" }, "require": { @@ -10737,7 +10743,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.3.4" + "source": "https://github.com/symfony/console/tree/v7.3.5" }, "funding": [ { @@ -10757,7 +10763,7 @@ "type": "tidelift" } ], - "time": "2025-09-22T15:31:00+00:00" + "time": "2025-10-14T15:46:26+00:00" }, { "name": "symfony/css-selector", @@ -10977,16 +10983,16 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v7.3.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "21cd48c34a47a0d0e303a590a67c3450fde55888" + "reference": "e7d308bd44ff8673a259e2727d13af6a93a5d83e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/21cd48c34a47a0d0e303a590a67c3450fde55888", - "reference": "21cd48c34a47a0d0e303a590a67c3450fde55888", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/e7d308bd44ff8673a259e2727d13af6a93a5d83e", + "reference": "e7d308bd44ff8673a259e2727d13af6a93a5d83e", "shasum": "" }, "require": { @@ -11066,7 +11072,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v7.3.4" + "source": "https://github.com/symfony/doctrine-bridge/tree/v7.3.5" }, "funding": [ { @@ -11086,7 +11092,7 @@ "type": "tidelift" } ], - "time": "2025-09-24T09:56:23+00:00" + "time": "2025-09-27T09:00:46+00:00" }, { "name": "symfony/dom-crawler", @@ -11618,16 +11624,16 @@ }, { "name": "symfony/finder", - "version": "v7.3.2", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe" + "reference": "9f696d2f1e340484b4683f7853b273abff94421f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/2a6614966ba1074fa93dae0bc804227422df4dfe", - "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe", + "url": "https://api.github.com/repos/symfony/finder/zipball/9f696d2f1e340484b4683f7853b273abff94421f", + "reference": "9f696d2f1e340484b4683f7853b273abff94421f", "shasum": "" }, "require": { @@ -11662,7 +11668,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.3.2" + "source": "https://github.com/symfony/finder/tree/v7.3.5" }, "funding": [ { @@ -11682,35 +11688,35 @@ "type": "tidelift" } ], - "time": "2025-07-15T13:41:35+00:00" + "time": "2025-10-15T18:45:57+00:00" }, { "name": "symfony/flex", - "version": "v2.8.2", + "version": "v2.9.0", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "f356aa35f3cf3d2f46c31d344c1098eb2d260426" + "reference": "94b37978c9982dc41c5b6a4147892d2d3d1b9ce6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/f356aa35f3cf3d2f46c31d344c1098eb2d260426", - "reference": "f356aa35f3cf3d2f46c31d344c1098eb2d260426", + "url": "https://api.github.com/repos/symfony/flex/zipball/94b37978c9982dc41c5b6a4147892d2d3d1b9ce6", + "reference": "94b37978c9982dc41c5b6a4147892d2d3d1b9ce6", "shasum": "" }, "require": { "composer-plugin-api": "^2.1", - "php": ">=8.0" + "php": ">=8.1" }, "conflict": { "composer/semver": "<1.7.2" }, "require-dev": { "composer/composer": "^2.1", - "symfony/dotenv": "^5.4|^6.0", - "symfony/filesystem": "^5.4|^6.0", - "symfony/phpunit-bridge": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0" + "symfony/dotenv": "^6.4|^7.4|^8.0", + "symfony/filesystem": "^6.4|^7.4|^8.0", + "symfony/phpunit-bridge": "^6.4|^7.4|^8.0", + "symfony/process": "^6.4|^7.4|^8.0" }, "type": "composer-plugin", "extra": { @@ -11734,7 +11740,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v2.8.2" + "source": "https://github.com/symfony/flex/tree/v2.9.0" }, "funding": [ { @@ -11754,20 +11760,20 @@ "type": "tidelift" } ], - "time": "2025-08-22T07:17:23+00:00" + "time": "2025-10-31T15:22:50+00:00" }, { "name": "symfony/form", - "version": "v7.3.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "7b3eee0f4d4dfd1ff1be70a27474197330c61736" + "reference": "c8032766d5b198865d00b7d4471fc787a0a7f5e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/7b3eee0f4d4dfd1ff1be70a27474197330c61736", - "reference": "7b3eee0f4d4dfd1ff1be70a27474197330c61736", + "url": "https://api.github.com/repos/symfony/form/zipball/c8032766d5b198865d00b7d4471fc787a0a7f5e4", + "reference": "c8032766d5b198865d00b7d4471fc787a0a7f5e4", "shasum": "" }, "require": { @@ -11835,7 +11841,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v7.3.4" + "source": "https://github.com/symfony/form/tree/v7.3.5" }, "funding": [ { @@ -11855,20 +11861,20 @@ "type": "tidelift" } ], - "time": "2025-09-22T15:31:00+00:00" + "time": "2025-10-10T11:54:12+00:00" }, { "name": "symfony/framework-bundle", - "version": "v7.3.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "b13e7cec5a144c8dba6f4233a2c53c00bc29e140" + "reference": "ebd42b1fc2652b96d33520195ea0f6e55c36f09d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/b13e7cec5a144c8dba6f4233a2c53c00bc29e140", - "reference": "b13e7cec5a144c8dba6f4233a2c53c00bc29e140", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/ebd42b1fc2652b96d33520195ea0f6e55c36f09d", + "reference": "ebd42b1fc2652b96d33520195ea0f6e55c36f09d", "shasum": "" }, "require": { @@ -11993,7 +11999,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/v7.3.4" + "source": "https://github.com/symfony/framework-bundle/tree/v7.3.5" }, "funding": [ { @@ -12013,7 +12019,7 @@ "type": "tidelift" } ], - "time": "2025-09-17T05:51:54+00:00" + "time": "2025-10-16T16:16:53+00:00" }, { "name": "symfony/http-client", @@ -12195,16 +12201,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.3.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "c061c7c18918b1b64268771aad04b40be41dd2e6" + "reference": "ce31218c7cac92eab280762c4375fb70a6f4f897" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/c061c7c18918b1b64268771aad04b40be41dd2e6", - "reference": "c061c7c18918b1b64268771aad04b40be41dd2e6", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ce31218c7cac92eab280762c4375fb70a6f4f897", + "reference": "ce31218c7cac92eab280762c4375fb70a6f4f897", "shasum": "" }, "require": { @@ -12254,7 +12260,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.3.4" + "source": "https://github.com/symfony/http-foundation/tree/v7.3.5" }, "funding": [ { @@ -12274,20 +12280,20 @@ "type": "tidelift" } ], - "time": "2025-09-16T08:38:17+00:00" + "time": "2025-10-24T21:42:11+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.3.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "b796dffea7821f035047235e076b60ca2446e3cf" + "reference": "24fd3f123532e26025f49f1abefcc01a69ef15ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b796dffea7821f035047235e076b60ca2446e3cf", - "reference": "b796dffea7821f035047235e076b60ca2446e3cf", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/24fd3f123532e26025f49f1abefcc01a69ef15ab", + "reference": "24fd3f123532e26025f49f1abefcc01a69ef15ab", "shasum": "" }, "require": { @@ -12372,7 +12378,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/v7.3.4" + "source": "https://github.com/symfony/http-kernel/tree/v7.3.5" }, "funding": [ { @@ -12392,20 +12398,20 @@ "type": "tidelift" } ], - "time": "2025-09-27T12:32:17+00:00" + "time": "2025-10-28T10:19:01+00:00" }, { "name": "symfony/intl", - "version": "v7.3.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "e6db84864655885d9dac676a9d7dde0d904fda54" + "reference": "9eccaaa94ac6f9deb3620c9d47a057d965baeabf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/e6db84864655885d9dac676a9d7dde0d904fda54", - "reference": "e6db84864655885d9dac676a9d7dde0d904fda54", + "url": "https://api.github.com/repos/symfony/intl/zipball/9eccaaa94ac6f9deb3620c9d47a057d965baeabf", + "reference": "9eccaaa94ac6f9deb3620c9d47a057d965baeabf", "shasum": "" }, "require": { @@ -12462,7 +12468,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v7.3.4" + "source": "https://github.com/symfony/intl/tree/v7.3.5" }, "funding": [ { @@ -12482,20 +12488,20 @@ "type": "tidelift" } ], - "time": "2025-09-08T14:11:30+00:00" + "time": "2025-10-01T06:11:17+00:00" }, { "name": "symfony/mailer", - "version": "v7.3.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "ab97ef2f7acf0216955f5845484235113047a31d" + "reference": "fd497c45ba9c10c37864e19466b090dcb60a50ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/ab97ef2f7acf0216955f5845484235113047a31d", - "reference": "ab97ef2f7acf0216955f5845484235113047a31d", + "url": "https://api.github.com/repos/symfony/mailer/zipball/fd497c45ba9c10c37864e19466b090dcb60a50ba", + "reference": "fd497c45ba9c10c37864e19466b090dcb60a50ba", "shasum": "" }, "require": { @@ -12546,7 +12552,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.3.4" + "source": "https://github.com/symfony/mailer/tree/v7.3.5" }, "funding": [ { @@ -12566,7 +12572,7 @@ "type": "tidelift" } ], - "time": "2025-09-17T05:51:54+00:00" + "time": "2025-10-24T14:27:20+00:00" }, { "name": "symfony/mime", @@ -12658,16 +12664,16 @@ }, { "name": "symfony/monolog-bridge", - "version": "v7.3.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "7acf2abe23e5019451399ba69fc8ed3d61d4d8f0" + "reference": "c66a65049c75f3ddf03d73c8c9ed61405779ce47" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/7acf2abe23e5019451399ba69fc8ed3d61d4d8f0", - "reference": "7acf2abe23e5019451399ba69fc8ed3d61d4d8f0", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/c66a65049c75f3ddf03d73c8c9ed61405779ce47", + "reference": "c66a65049c75f3ddf03d73c8c9ed61405779ce47", "shasum": "" }, "require": { @@ -12716,7 +12722,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v7.3.4" + "source": "https://github.com/symfony/monolog-bridge/tree/v7.3.5" }, "funding": [ { @@ -12736,7 +12742,7 @@ "type": "tidelift" } ], - "time": "2025-09-24T16:45:39+00:00" + "time": "2025-10-14T19:16:15+00:00" }, { "name": "symfony/monolog-bundle", @@ -14026,23 +14032,23 @@ }, { "name": "symfony/property-info", - "version": "v7.3.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "7b6db23f23d13ada41e1cb484748a8ec028fbace" + "reference": "0b346ed259dc5da43535caf243005fe7d4b0f051" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/7b6db23f23d13ada41e1cb484748a8ec028fbace", - "reference": "7b6db23f23d13ada41e1cb484748a8ec028fbace", + "url": "https://api.github.com/repos/symfony/property-info/zipball/0b346ed259dc5da43535caf243005fe7d4b0f051", + "reference": "0b346ed259dc5da43535caf243005fe7d4b0f051", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/string": "^6.4|^7.0", - "symfony/type-info": "~7.2.8|^7.3.1" + "symfony/type-info": "^7.3.5" }, "conflict": { "phpdocumentor/reflection-docblock": "<5.2", @@ -14092,7 +14098,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.3.4" + "source": "https://github.com/symfony/property-info/tree/v7.3.5" }, "funding": [ { @@ -14112,7 +14118,7 @@ "type": "tidelift" } ], - "time": "2025-09-15T13:55:54+00:00" + "time": "2025-10-05T22:12:41+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -14551,16 +14557,16 @@ }, { "name": "symfony/security-core", - "version": "v7.3.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "68b9d3ca57615afde6152a1e1441fa035bea43f8" + "reference": "772a7c1eddd8bf8a977a67e6e8adc59650c604eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/68b9d3ca57615afde6152a1e1441fa035bea43f8", - "reference": "68b9d3ca57615afde6152a1e1441fa035bea43f8", + "url": "https://api.github.com/repos/symfony/security-core/zipball/772a7c1eddd8bf8a977a67e6e8adc59650c604eb", + "reference": "772a7c1eddd8bf8a977a67e6e8adc59650c604eb", "shasum": "" }, "require": { @@ -14618,7 +14624,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v7.3.4" + "source": "https://github.com/symfony/security-core/tree/v7.3.5" }, "funding": [ { @@ -14638,7 +14644,7 @@ "type": "tidelift" } ], - "time": "2025-09-24T14:32:13+00:00" + "time": "2025-10-24T14:27:20+00:00" }, { "name": "symfony/security-csrf", @@ -14712,16 +14718,16 @@ }, { "name": "symfony/security-http", - "version": "v7.3.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "1cf54d0648ebab23bf9b8972617b79f1995e13a9" + "reference": "e79a63fd5dec6e5b1ba31227e98d860a4f8ba95c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/1cf54d0648ebab23bf9b8972617b79f1995e13a9", - "reference": "1cf54d0648ebab23bf9b8972617b79f1995e13a9", + "url": "https://api.github.com/repos/symfony/security-http/zipball/e79a63fd5dec6e5b1ba31227e98d860a4f8ba95c", + "reference": "e79a63fd5dec6e5b1ba31227e98d860a4f8ba95c", "shasum": "" }, "require": { @@ -14780,7 +14786,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v7.3.4" + "source": "https://github.com/symfony/security-http/tree/v7.3.5" }, "funding": [ { @@ -14800,20 +14806,20 @@ "type": "tidelift" } ], - "time": "2025-09-09T17:06:44+00:00" + "time": "2025-10-13T09:30:10+00:00" }, { "name": "symfony/serializer", - "version": "v7.3.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "0df5af266c6fe9a855af7db4fea86e13b9ca3ab1" + "reference": "ba2e50a5f2870c93f0f47ca1a4e56e4bbe274035" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/0df5af266c6fe9a855af7db4fea86e13b9ca3ab1", - "reference": "0df5af266c6fe9a855af7db4fea86e13b9ca3ab1", + "url": "https://api.github.com/repos/symfony/serializer/zipball/ba2e50a5f2870c93f0f47ca1a4e56e4bbe274035", + "reference": "ba2e50a5f2870c93f0f47ca1a4e56e4bbe274035", "shasum": "" }, "require": { @@ -14883,7 +14889,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/v7.3.4" + "source": "https://github.com/symfony/serializer/tree/v7.3.5" }, "funding": [ { @@ -14903,7 +14909,7 @@ "type": "tidelift" } ], - "time": "2025-09-15T13:39:02+00:00" + "time": "2025-10-08T11:26:21+00:00" }, { "name": "symfony/service-contracts", @@ -14990,16 +14996,16 @@ }, { "name": "symfony/stimulus-bundle", - "version": "v2.30.0", + "version": "v2.31.0", "source": { "type": "git", "url": "https://github.com/symfony/stimulus-bundle.git", - "reference": "668b9efe9d0ab8b4e50091263171609e0459c0c8" + "reference": "c5ea8ee2ccd45447b7f4b6b82f704ee5e76127f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/668b9efe9d0ab8b4e50091263171609e0459c0c8", - "reference": "668b9efe9d0ab8b4e50091263171609e0459c0c8", + "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/c5ea8ee2ccd45447b7f4b6b82f704ee5e76127f0", + "reference": "c5ea8ee2ccd45447b7f4b6b82f704ee5e76127f0", "shasum": "" }, "require": { @@ -15039,7 +15045,7 @@ "symfony-ux" ], "support": { - "source": "https://github.com/symfony/stimulus-bundle/tree/v2.30.0" + "source": "https://github.com/symfony/stimulus-bundle/tree/v2.31.0" }, "funding": [ { @@ -15059,7 +15065,7 @@ "type": "tidelift" } ], - "time": "2025-08-27T15:25:48+00:00" + "time": "2025-09-24T13:27:42+00:00" }, { "name": "symfony/stopwatch", @@ -15596,16 +15602,16 @@ }, { "name": "symfony/type-info", - "version": "v7.3.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/type-info.git", - "reference": "d34eaeb57f39c8a9c97eb72a977c423207dfa35b" + "reference": "8b36f41421160db56914f897b57eaa6a830758b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/type-info/zipball/d34eaeb57f39c8a9c97eb72a977c423207dfa35b", - "reference": "d34eaeb57f39c8a9c97eb72a977c423207dfa35b", + "url": "https://api.github.com/repos/symfony/type-info/zipball/8b36f41421160db56914f897b57eaa6a830758b3", + "reference": "8b36f41421160db56914f897b57eaa6a830758b3", "shasum": "" }, "require": { @@ -15655,7 +15661,7 @@ "type" ], "support": { - "source": "https://github.com/symfony/type-info/tree/v7.3.4" + "source": "https://github.com/symfony/type-info/tree/v7.3.5" }, "funding": [ { @@ -15675,7 +15681,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T15:33:27+00:00" + "time": "2025-10-16T12:30:12+00:00" }, { "name": "symfony/uid", @@ -15753,16 +15759,16 @@ }, { "name": "symfony/ux-translator", - "version": "v2.30.0", + "version": "v2.31.0", "source": { "type": "git", "url": "https://github.com/symfony/ux-translator.git", - "reference": "9616091db206df4caa7d8dce2e48941512b1a94a" + "reference": "b4b323fdc846d2d67feb7f8ca5ef5a05238f6639" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ux-translator/zipball/9616091db206df4caa7d8dce2e48941512b1a94a", - "reference": "9616091db206df4caa7d8dce2e48941512b1a94a", + "url": "https://api.github.com/repos/symfony/ux-translator/zipball/b4b323fdc846d2d67feb7f8ca5ef5a05238f6639", + "reference": "b4b323fdc846d2d67feb7f8ca5ef5a05238f6639", "shasum": "" }, "require": { @@ -15810,7 +15816,7 @@ "symfony-ux" ], "support": { - "source": "https://github.com/symfony/ux-translator/tree/v2.30.0" + "source": "https://github.com/symfony/ux-translator/tree/v2.31.0" }, "funding": [ { @@ -15830,20 +15836,20 @@ "type": "tidelift" } ], - "time": "2025-08-27T15:25:48+00:00" + "time": "2025-10-16T07:24:06+00:00" }, { "name": "symfony/ux-turbo", - "version": "v2.30.0", + "version": "v2.31.0", "source": { "type": "git", "url": "https://github.com/symfony/ux-turbo.git", - "reference": "c5e88c7e16713e84a2a35f36276ccdb05c2c78d8" + "reference": "06d5e4cf4573efe4faf648f3810a28c63684c706" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ux-turbo/zipball/c5e88c7e16713e84a2a35f36276ccdb05c2c78d8", - "reference": "c5e88c7e16713e84a2a35f36276ccdb05c2c78d8", + "url": "https://api.github.com/repos/symfony/ux-turbo/zipball/06d5e4cf4573efe4faf648f3810a28c63684c706", + "reference": "06d5e4cf4573efe4faf648f3810a28c63684c706", "shasum": "" }, "require": { @@ -15856,7 +15862,7 @@ "require-dev": { "dbrekelmans/bdi": "dev-main", "doctrine/doctrine-bundle": "^2.4.3", - "doctrine/orm": "^2.8 | 3.0", + "doctrine/orm": "^2.8|^3.0", "php-webdriver/webdriver": "^1.15", "phpstan/phpstan": "^2.1.17", "symfony/asset-mapper": "^6.4|^7.0|^8.0", @@ -15913,7 +15919,7 @@ "turbo-stream" ], "support": { - "source": "https://github.com/symfony/ux-turbo/tree/v2.30.0" + "source": "https://github.com/symfony/ux-turbo/tree/v2.31.0" }, "funding": [ { @@ -15933,20 +15939,20 @@ "type": "tidelift" } ], - "time": "2025-08-27T15:25:48+00:00" + "time": "2025-10-16T07:24:06+00:00" }, { "name": "symfony/validator", - "version": "v7.3.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "5e29a348b5fac2227b6938a54db006d673bb813a" + "reference": "724086992fb7c7882d05c9d2219d70401ab9fdda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/5e29a348b5fac2227b6938a54db006d673bb813a", - "reference": "5e29a348b5fac2227b6938a54db006d673bb813a", + "url": "https://api.github.com/repos/symfony/validator/zipball/724086992fb7c7882d05c9d2219d70401ab9fdda", + "reference": "724086992fb7c7882d05c9d2219d70401ab9fdda", "shasum": "" }, "require": { @@ -16015,7 +16021,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.3.4" + "source": "https://github.com/symfony/validator/tree/v7.3.5" }, "funding": [ { @@ -16035,20 +16041,20 @@ "type": "tidelift" } ], - "time": "2025-09-24T06:32:27+00:00" + "time": "2025-10-24T14:27:20+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.3.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb" + "reference": "476c4ae17f43a9a36650c69879dcf5b1e6ae724d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb", - "reference": "b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/476c4ae17f43a9a36650c69879dcf5b1e6ae724d", + "reference": "476c4ae17f43a9a36650c69879dcf5b1e6ae724d", "shasum": "" }, "require": { @@ -16102,7 +16108,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.3.4" + "source": "https://github.com/symfony/var-dumper/tree/v7.3.5" }, "funding": [ { @@ -16122,7 +16128,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-09-27T09:00:46+00:00" }, { "name": "symfony/var-exporter", @@ -16366,16 +16372,16 @@ }, { "name": "symfony/yaml", - "version": "v7.3.3", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "d4f4a66866fe2451f61296924767280ab5732d9d" + "reference": "90208e2fc6f68f613eae7ca25a2458a931b1bacc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/d4f4a66866fe2451f61296924767280ab5732d9d", - "reference": "d4f4a66866fe2451f61296924767280ab5732d9d", + "url": "https://api.github.com/repos/symfony/yaml/zipball/90208e2fc6f68f613eae7ca25a2458a931b1bacc", + "reference": "90208e2fc6f68f613eae7ca25a2458a931b1bacc", "shasum": "" }, "require": { @@ -16418,7 +16424,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.3.3" + "source": "https://github.com/symfony/yaml/tree/v7.3.5" }, "funding": [ { @@ -16438,20 +16444,20 @@ "type": "tidelift" } ], - "time": "2025-08-27T11:34:33+00:00" + "time": "2025-09-27T09:00:46+00:00" }, { "name": "symplify/easy-coding-standard", - "version": "12.6.0", + "version": "12.6.2", "source": { "type": "git", "url": "https://github.com/easy-coding-standard/easy-coding-standard.git", - "reference": "781e6124dc7e14768ae999a8f5309566bbe62004" + "reference": "7a6798aa424f0ecafb1542b6f5207c5a99704d3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/781e6124dc7e14768ae999a8f5309566bbe62004", - "reference": "781e6124dc7e14768ae999a8f5309566bbe62004", + "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/7a6798aa424f0ecafb1542b6f5207c5a99704d3d", + "reference": "7a6798aa424f0ecafb1542b6f5207c5a99704d3d", "shasum": "" }, "require": { @@ -16487,7 +16493,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.6.0" + "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.6.2" }, "funding": [ { @@ -16499,7 +16505,7 @@ "type": "github" } ], - "time": "2025-09-10T14:21:58+00:00" + "time": "2025-10-29T08:51:50+00:00" }, { "name": "tecnickcom/tc-lib-barcode", @@ -16727,16 +16733,16 @@ }, { "name": "twig/cssinliner-extra", - "version": "v3.21.0", + "version": "v3.22.0", "source": { "type": "git", "url": "https://github.com/twigphp/cssinliner-extra.git", - "reference": "378d29b61d6406c456e3a4afbd15bbeea0b72ea8" + "reference": "9bcbf04ca515e98fcde479fdceaa1d9d9e76173e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/cssinliner-extra/zipball/378d29b61d6406c456e3a4afbd15bbeea0b72ea8", - "reference": "378d29b61d6406c456e3a4afbd15bbeea0b72ea8", + "url": "https://api.github.com/repos/twigphp/cssinliner-extra/zipball/9bcbf04ca515e98fcde479fdceaa1d9d9e76173e", + "reference": "9bcbf04ca515e98fcde479fdceaa1d9d9e76173e", "shasum": "" }, "require": { @@ -16780,7 +16786,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/cssinliner-extra/tree/v3.21.0" + "source": "https://github.com/twigphp/cssinliner-extra/tree/v3.22.0" }, "funding": [ { @@ -16792,20 +16798,20 @@ "type": "tidelift" } ], - "time": "2025-01-31T20:45:36+00:00" + "time": "2025-07-29T08:07:07+00:00" }, { "name": "twig/extra-bundle", - "version": "v3.21.0", + "version": "v3.22.0", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "62d1cf47a1aa009cbd07b21045b97d3d5cb79896" + "reference": "6d253f0fe28a83a045497c8fb3ea9bfe84e82cf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/62d1cf47a1aa009cbd07b21045b97d3d5cb79896", - "reference": "62d1cf47a1aa009cbd07b21045b97d3d5cb79896", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/6d253f0fe28a83a045497c8fb3ea9bfe84e82cf4", + "reference": "6d253f0fe28a83a045497c8fb3ea9bfe84e82cf4", "shasum": "" }, "require": { @@ -16815,7 +16821,7 @@ "twig/twig": "^3.2|^4.0" }, "require-dev": { - "league/commonmark": "^1.0|^2.0", + "league/commonmark": "^2.7", "symfony/phpunit-bridge": "^6.4|^7.0", "twig/cache-extra": "^3.0", "twig/cssinliner-extra": "^3.0", @@ -16854,7 +16860,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.21.0" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.22.0" }, "funding": [ { @@ -16866,11 +16872,11 @@ "type": "tidelift" } ], - "time": "2025-02-19T14:29:33+00:00" + "time": "2025-09-15T05:57:37+00:00" }, { "name": "twig/html-extra", - "version": "v3.21.0", + "version": "v3.22.0", "source": { "type": "git", "url": "https://github.com/twigphp/html-extra.git", @@ -16922,7 +16928,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/html-extra/tree/v3.21.0" + "source": "https://github.com/twigphp/html-extra/tree/v3.22.0" }, "funding": [ { @@ -16938,16 +16944,16 @@ }, { "name": "twig/inky-extra", - "version": "v3.21.0", + "version": "v3.22.0", "source": { "type": "git", "url": "https://github.com/twigphp/inky-extra.git", - "reference": "aacd79d94534b4a7fd6533cb5c33c4ee97239a0d" + "reference": "631f42c7123240d9c2497903679ec54bb25f2f52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/inky-extra/zipball/aacd79d94534b4a7fd6533cb5c33c4ee97239a0d", - "reference": "aacd79d94534b4a7fd6533cb5c33c4ee97239a0d", + "url": "https://api.github.com/repos/twigphp/inky-extra/zipball/631f42c7123240d9c2497903679ec54bb25f2f52", + "reference": "631f42c7123240d9c2497903679ec54bb25f2f52", "shasum": "" }, "require": { @@ -16992,7 +16998,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/inky-extra/tree/v3.21.0" + "source": "https://github.com/twigphp/inky-extra/tree/v3.22.0" }, "funding": [ { @@ -17004,20 +17010,20 @@ "type": "tidelift" } ], - "time": "2025-01-31T20:45:36+00:00" + "time": "2025-07-29T08:07:07+00:00" }, { "name": "twig/intl-extra", - "version": "v3.21.0", + "version": "v3.22.0", "source": { "type": "git", "url": "https://github.com/twigphp/intl-extra.git", - "reference": "05bc5d46b9df9e62399eae53e7c0b0633298b146" + "reference": "7393fc911c7315db18a805d3a541ac7bb9e4fdc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/05bc5d46b9df9e62399eae53e7c0b0633298b146", - "reference": "05bc5d46b9df9e62399eae53e7c0b0633298b146", + "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/7393fc911c7315db18a805d3a541ac7bb9e4fdc0", + "reference": "7393fc911c7315db18a805d3a541ac7bb9e4fdc0", "shasum": "" }, "require": { @@ -17056,7 +17062,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/intl-extra/tree/v3.21.0" + "source": "https://github.com/twigphp/intl-extra/tree/v3.22.0" }, "funding": [ { @@ -17068,20 +17074,20 @@ "type": "tidelift" } ], - "time": "2025-01-31T20:45:36+00:00" + "time": "2025-09-15T06:05:04+00:00" }, { "name": "twig/markdown-extra", - "version": "v3.21.0", + "version": "v3.22.0", "source": { "type": "git", "url": "https://github.com/twigphp/markdown-extra.git", - "reference": "f4616e1dd375209dacf6026f846e6b537d036ce4" + "reference": "fb6f952082e3a7d62a75c8be2c8c47242d3925fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/markdown-extra/zipball/f4616e1dd375209dacf6026f846e6b537d036ce4", - "reference": "f4616e1dd375209dacf6026f846e6b537d036ce4", + "url": "https://api.github.com/repos/twigphp/markdown-extra/zipball/fb6f952082e3a7d62a75c8be2c8c47242d3925fb", + "reference": "fb6f952082e3a7d62a75c8be2c8c47242d3925fb", "shasum": "" }, "require": { @@ -17091,7 +17097,7 @@ }, "require-dev": { "erusev/parsedown": "dev-master as 1.x-dev", - "league/commonmark": "^1.0|^2.0", + "league/commonmark": "^2.7", "league/html-to-markdown": "^4.8|^5.0", "michelf/php-markdown": "^1.8|^2.0", "symfony/phpunit-bridge": "^6.4|^7.0" @@ -17128,7 +17134,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/markdown-extra/tree/v3.21.0" + "source": "https://github.com/twigphp/markdown-extra/tree/v3.22.0" }, "funding": [ { @@ -17140,11 +17146,11 @@ "type": "tidelift" } ], - "time": "2025-01-31T20:45:36+00:00" + "time": "2025-09-15T05:57:37+00:00" }, { "name": "twig/string-extra", - "version": "v3.21.0", + "version": "v3.22.0", "source": { "type": "git", "url": "https://github.com/twigphp/string-extra.git", @@ -17195,7 +17201,7 @@ "unicode" ], "support": { - "source": "https://github.com/twigphp/string-extra/tree/v3.21.0" + "source": "https://github.com/twigphp/string-extra/tree/v3.22.0" }, "funding": [ { @@ -17211,16 +17217,16 @@ }, { "name": "twig/twig", - "version": "v3.21.1", + "version": "v3.22.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d" + "reference": "4509984193026de413baf4ba80f68590a7f2c51d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/285123877d4dd97dd7c11842ac5fb7e86e60d81d", - "reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/4509984193026de413baf4ba80f68590a7f2c51d", + "reference": "4509984193026de413baf4ba80f68590a7f2c51d", "shasum": "" }, "require": { @@ -17274,7 +17280,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.21.1" + "source": "https://github.com/twigphp/Twig/tree/v3.22.0" }, "funding": [ { @@ -17286,7 +17292,7 @@ "type": "tidelift" } ], - "time": "2025-05-03T07:21:55+00:00" + "time": "2025-10-29T15:56:47+00:00" }, { "name": "ua-parser/uap-php", @@ -17603,28 +17609,28 @@ }, { "name": "webmozart/assert", - "version": "1.11.0", + "version": "1.12.1", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + "reference": "9be6926d8b485f55b9229203f962b51ed377ba68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/9be6926d8b485f55b9229203f962b51ed377ba68", + "reference": "9be6926d8b485f55b9229203f962b51ed377ba68", "shasum": "" }, "require": { "ext-ctype": "*", + "ext-date": "*", + "ext-filter": "*", "php": "^7.2 || ^8.0" }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" + "suggest": { + "ext-intl": "", + "ext-simplexml": "", + "ext-spl": "" }, "type": "library", "extra": { @@ -17655,9 +17661,9 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.11.0" + "source": "https://github.com/webmozarts/assert/tree/1.12.1" }, - "time": "2022-06-03T18:03:27+00:00" + "time": "2025-10-29T15:56:20+00:00" }, { "name": "willdurand/negotiation", @@ -17788,20 +17794,20 @@ }, { "name": "doctrine/doctrine-fixtures-bundle", - "version": "4.2.0", + "version": "4.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", - "reference": "cd58d7738fe1fea1dbfd3e3f3bb421ee92d45e10" + "reference": "11941deb6f2899b91e8b8680b07ffe63899d864b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/cd58d7738fe1fea1dbfd3e3f3bb421ee92d45e10", - "reference": "cd58d7738fe1fea1dbfd3e3f3bb421ee92d45e10", + "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/11941deb6f2899b91e8b8680b07ffe63899d864b", + "reference": "11941deb6f2899b91e8b8680b07ffe63899d864b", "shasum": "" }, "require": { - "doctrine/data-fixtures": "^2.0", + "doctrine/data-fixtures": "^2.2", "doctrine/doctrine-bundle": "^2.2 || ^3.0", "doctrine/orm": "^2.14.0 || ^3.0", "doctrine/persistence": "^2.4 || ^3.0 || ^4.0", @@ -17854,7 +17860,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues", - "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/4.2.0" + "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/4.3.0" }, "funding": [ { @@ -17870,7 +17876,7 @@ "type": "tidelift" } ], - "time": "2025-10-12T16:50:54+00:00" + "time": "2025-10-20T06:18:40+00:00" }, { "name": "ekino/phpstan-banned-code", @@ -18070,16 +18076,16 @@ }, { "name": "nikic/php-parser", - "version": "v5.6.1", + "version": "v5.6.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2" + "reference": "3a454ca033b9e06b63282ce19562e892747449bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", - "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/3a454ca033b9e06b63282ce19562e892747449bb", + "reference": "3a454ca033b9e06b63282ce19562e892747449bb", "shasum": "" }, "require": { @@ -18122,9 +18128,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.2" }, - "time": "2025-08-13T20:13:15+00:00" + "time": "2025-10-21T19:32:17+00:00" }, { "name": "phar-io/manifest", @@ -18874,16 +18880,16 @@ }, { "name": "phpunit/phpunit", - "version": "11.5.42", + "version": "11.5.43", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "1c6cb5dfe412af3d0dfd414cfd110e3b9cfdbc3c" + "reference": "c6b89b6cf4324a8b4cb86e1f5dfdd6c9e0371924" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1c6cb5dfe412af3d0dfd414cfd110e3b9cfdbc3c", - "reference": "1c6cb5dfe412af3d0dfd414cfd110e3b9cfdbc3c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c6b89b6cf4324a8b4cb86e1f5dfdd6c9e0371924", + "reference": "c6b89b6cf4324a8b4cb86e1f5dfdd6c9e0371924", "shasum": "" }, "require": { @@ -18955,7 +18961,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.42" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.43" }, "funding": [ { @@ -18979,20 +18985,20 @@ "type": "tidelift" } ], - "time": "2025-09-28T12:09:13+00:00" + "time": "2025-10-30T08:39:39+00:00" }, { "name": "rector/rector", - "version": "2.2.3", + "version": "2.2.7", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "d27f976a332a87b5d03553c2e6f04adbe5da034f" + "reference": "022038537838bc8a4e526af86c2d6e38eaeff7ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/d27f976a332a87b5d03553c2e6f04adbe5da034f", - "reference": "d27f976a332a87b5d03553c2e6f04adbe5da034f", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/022038537838bc8a4e526af86c2d6e38eaeff7ef", + "reference": "022038537838bc8a4e526af86c2d6e38eaeff7ef", "shasum": "" }, "require": { @@ -19031,7 +19037,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.2.3" + "source": "https://github.com/rectorphp/rector/tree/2.2.7" }, "funding": [ { @@ -19039,7 +19045,7 @@ "type": "github" } ], - "time": "2025-10-11T21:50:23+00:00" + "time": "2025-10-29T15:46:12+00:00" }, { "name": "roave/security-advisories", @@ -19047,18 +19053,18 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "7a8f128281289412092c450a5eb3df5cabbc89e1" + "reference": "d2e1583e5f89f53f7882861c1639c14c9a154585" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/7a8f128281289412092c450a5eb3df5cabbc89e1", - "reference": "7a8f128281289412092c450a5eb3df5cabbc89e1", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/d2e1583e5f89f53f7882861c1639c14c9a154585", + "reference": "d2e1583e5f89f53f7882861c1639c14c9a154585", "shasum": "" }, "conflict": { "3f/pygmentize": "<1.2", "adaptcms/adaptcms": "<=1.3", - "admidio/admidio": "<4.3.12", + "admidio/admidio": "<=4.3.16", "adodb/adodb-php": "<=5.22.9", "aheinze/cockpit": "<2.2", "aimeos/ai-admin-graphql": ">=2022.04.1,<2022.10.10|>=2023.04.1,<2023.10.6|>=2024.04.1,<2024.07.2", @@ -19161,6 +19167,7 @@ "clickstorm/cs-seo": ">=6,<6.8|>=7,<7.5|>=8,<8.4|>=9,<9.3", "co-stack/fal_sftp": "<0.2.6", "cockpit-hq/cockpit": "<2.11.4", + "code16/sharp": "<9.11.1", "codeception/codeception": "<3.1.3|>=4,<4.1.22", "codeigniter/framework": "<3.1.10", "codeigniter4/framework": "<4.6.2", @@ -19219,30 +19226,39 @@ "dompdf/dompdf": "<2.0.4", "doublethreedigital/guest-entries": "<3.1.2", "drupal-pattern-lab/unified-twig-extensions": "<=0.1", + "drupal/access_code": "<2.0.5", + "drupal/acquia_dam": "<1.1.5", "drupal/admin_audit_trail": "<1.0.5", "drupal/ai": "<1.0.5", "drupal/alogin": "<2.0.6", "drupal/cache_utility": "<1.2.1", + "drupal/civictheme": "<1.12", "drupal/commerce_alphabank_redirect": "<1.0.3", "drupal/commerce_eurobank_redirect": "<2.1.1", "drupal/config_split": "<1.10|>=2,<2.0.2", "drupal/core": ">=6,<6.38|>=7,<7.102|>=8,<10.3.14|>=10.4,<10.4.5|>=11,<11.0.13|>=11.1,<11.1.5", "drupal/core-recommended": ">=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8", + "drupal/currency": "<3.5", "drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8", "drupal/formatter_suite": "<2.1", "drupal/gdpr": "<3.0.1|>=3.1,<3.1.2", "drupal/google_tag": "<1.8|>=2,<2.0.8", "drupal/ignition": "<1.0.4", + "drupal/json_field": "<1.5", "drupal/lightgallery": "<1.6", "drupal/link_field_display_mode_formatter": "<1.6", "drupal/matomo": "<1.24", "drupal/oauth2_client": "<4.1.3", "drupal/oauth2_server": "<2.1", "drupal/obfuscate": "<2.0.1", + "drupal/plausible_tracking": "<1.0.2", "drupal/quick_node_block": "<2", "drupal/rapidoc_elements_field_formatter": "<1.0.1", + "drupal/reverse_proxy_header": "<1.1.2", + "drupal/simple_oauth": ">=6,<6.0.7", "drupal/spamspan": "<3.2.1", "drupal/tfa": "<1.10", + "drupal/umami_analytics": "<1.0.1", "duncanmcclean/guest-entries": "<3.1.2", "dweeves/magmi": "<=0.7.24", "ec-cube/ec-cube": "<2.4.4|>=2.11,<=2.17.1|>=3,<=3.0.18.0-patch4|>=4,<=4.1.2", @@ -19466,7 +19482,7 @@ "luyadev/yii-helpers": "<1.2.1", "macropay-solutions/laravel-crud-wizard-free": "<3.4.17", "maestroerror/php-heic-to-jpg": "<1.0.5", - "magento/community-edition": "<=2.4.5.0-patch14|==2.4.6|>=2.4.6.0-patch1,<=2.4.6.0-patch12|>=2.4.7.0-beta1,<=2.4.7.0-patch7|>=2.4.8.0-beta1,<=2.4.8.0-patch2|>=2.4.9.0-alpha1,<=2.4.9.0-alpha2|==2.4.9", + "magento/community-edition": "<2.4.6.0-patch13|>=2.4.7.0-beta1,<2.4.7.0-patch8|>=2.4.8.0-beta1,<2.4.8.0-patch3|>=2.4.9.0-alpha1,<2.4.9.0-alpha3|==2.4.9", "magento/core": "<=1.9.4.5", "magento/magento1ce": "<1.9.4.3-dev", "magento/magento1ee": ">=1,<1.14.4.3-dev", @@ -19487,7 +19503,7 @@ "maximebf/debugbar": "<1.19", "mdanter/ecc": "<2", "mediawiki/abuse-filter": "<1.39.9|>=1.40,<1.41.3|>=1.42,<1.42.2", - "mediawiki/cargo": "<3.6.1", + "mediawiki/cargo": "<3.8.3", "mediawiki/core": "<1.39.5|==1.40", "mediawiki/data-transfer": ">=1.39,<1.39.11|>=1.41,<1.41.3|>=1.42,<1.42.2", "mediawiki/matomo": "<2.4.3", @@ -19512,7 +19528,7 @@ "mojo42/jirafeau": "<4.4", "mongodb/mongodb": ">=1,<1.9.2", "monolog/monolog": ">=1.8,<1.12", - "moodle/moodle": "<4.3.12|>=4.4,<4.4.8|>=4.5.0.0-beta,<4.5.4", + "moodle/moodle": "<4.4.11|>=4.5.0.0-beta,<4.5.7|>=5.0.0.0-beta,<5.0.3", "moonshine/moonshine": "<=3.12.5", "mos/cimage": "<0.7.19", "movim/moxl": ">=0.8,<=0.10", @@ -19646,8 +19662,8 @@ "prestashop/ps_emailsubscription": "<2.6.1", "prestashop/ps_facetedsearch": "<3.4.1", "prestashop/ps_linklist": "<3.1", - "privatebin/privatebin": "<1.4|>=1.5,<1.7.4", - "processwire/processwire": "<=3.0.229", + "privatebin/privatebin": "<1.4|>=1.5,<1.7.4|>=1.7.7,<2.0.2", + "processwire/processwire": "<=3.0.246", "propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7", "propel/propel1": ">=1,<=1.7.1", "pterodactyl/panel": "<=1.11.10", @@ -19690,8 +19706,8 @@ "setasign/fpdi": "<2.6.4", "sfroemken/url_redirect": "<=1.2.1", "sheng/yiicms": "<1.2.1", - "shopware/core": "<6.5.8.18-dev|>=6.6,<6.6.10.3-dev|>=6.7,<6.7.2.1-dev", - "shopware/platform": "<=6.6.10.4|>=6.7.0.0-RC1-dev,<6.7.0.0-RC2-dev", + "shopware/core": "<6.6.10.7-dev|>=6.7,<6.7.3.1-dev", + "shopware/platform": "<6.6.10.7-dev|>=6.7,<6.7.3.1-dev", "shopware/production": "<=6.3.5.2", "shopware/shopware": "<=5.7.17|>=6.7,<6.7.2.1-dev", "shopware/storefront": "<=6.4.8.1|>=6.5.8,<6.5.8.7-dev", @@ -19744,15 +19760,16 @@ "spatie/image-optimizer": "<1.7.3", "spencer14420/sp-php-email-handler": "<1", "spipu/html2pdf": "<5.2.8", + "spiral/roadrunner": "<2025.1", "spoon/library": "<1.4.1", "spoonity/tcpdf": "<6.2.22", "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", "ssddanbrown/bookstack": "<24.05.1", - "starcitizentools/citizen-skin": ">=1.9.4,<3.4", + "starcitizentools/citizen-skin": ">=1.9.4,<3.9", "starcitizentools/short-description": ">=4,<4.0.1", "starcitizentools/tabber-neue": ">=1.9.1,<2.7.2|>=3,<3.1.1", "starcitizenwiki/embedvideo": "<=4", - "statamic/cms": "<=5.16", + "statamic/cms": "<=5.22", "stormpath/sdk": "<9.9.99", "studio-42/elfinder": "<=2.1.64", "studiomitte/friendlycaptcha": "<0.1.4", @@ -20019,7 +20036,7 @@ "type": "tidelift" } ], - "time": "2025-10-17T18:06:27+00:00" + "time": "2025-10-30T18:07:16+00:00" }, { "name": "sebastian/cli-parser", @@ -21133,16 +21150,16 @@ }, { "name": "symfony/debug-bundle", - "version": "v7.3.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/debug-bundle.git", - "reference": "30f922edd53dd85238f1f26dbb68a044109f8f0e" + "reference": "0aee008fb501677fa5b62ea5f65cabcf041629ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/30f922edd53dd85238f1f26dbb68a044109f8f0e", - "reference": "30f922edd53dd85238f1f26dbb68a044109f8f0e", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/0aee008fb501677fa5b62ea5f65cabcf041629ef", + "reference": "0aee008fb501677fa5b62ea5f65cabcf041629ef", "shasum": "" }, "require": { @@ -21184,7 +21201,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/v7.3.4" + "source": "https://github.com/symfony/debug-bundle/tree/v7.3.5" }, "funding": [ { @@ -21204,7 +21221,7 @@ "type": "tidelift" } ], - "time": "2025-09-10T12:00:31+00:00" + "time": "2025-10-13T11:49:56+00:00" }, { "name": "symfony/maker-bundle", @@ -21390,16 +21407,16 @@ }, { "name": "symfony/web-profiler-bundle", - "version": "v7.3.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "f305fa4add690bb7d6b14ab61f37c3bd061a3dd7" + "reference": "c2ed11cc0e9093fe0425ad52498d26a458842e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/f305fa4add690bb7d6b14ab61f37c3bd061a3dd7", - "reference": "f305fa4add690bb7d6b14ab61f37c3bd061a3dd7", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/c2ed11cc0e9093fe0425ad52498d26a458842e0c", + "reference": "c2ed11cc0e9093fe0425ad52498d26a458842e0c", "shasum": "" }, "require": { @@ -21455,7 +21472,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.3.4" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.3.5" }, "funding": [ { @@ -21475,7 +21492,7 @@ "type": "tidelift" } ], - "time": "2025-09-25T08:03:55+00:00" + "time": "2025-10-06T13:36:11+00:00" }, { "name": "theseer/tokenizer", diff --git a/yarn.lock b/yarn.lock index 2a2ab405..0896bc62 100644 --- a/yarn.lock +++ b/yarn.lock @@ -64,25 +64,25 @@ js-tokens "^4.0.0" picocolors "^1.1.1" -"@babel/compat-data@^7.27.2", "@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.0": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.4.tgz#96fdf1af1b8859c8474ab39c295312bfb7c24b04" - integrity sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw== +"@babel/compat-data@^7.27.2", "@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.5.tgz#a8a4962e1567121ac0b3b487f52107443b455c7f" + integrity sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA== "@babel/core@^7.19.6": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.4.tgz#12a550b8794452df4c8b084f95003bce1742d496" - integrity sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA== + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.5.tgz#4c81b35e51e1b734f510c99b07dfbc7bbbb48f7e" + integrity sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw== dependencies: "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.28.3" + "@babel/generator" "^7.28.5" "@babel/helper-compilation-targets" "^7.27.2" "@babel/helper-module-transforms" "^7.28.3" "@babel/helpers" "^7.28.4" - "@babel/parser" "^7.28.4" + "@babel/parser" "^7.28.5" "@babel/template" "^7.27.2" - "@babel/traverse" "^7.28.4" - "@babel/types" "^7.28.4" + "@babel/traverse" "^7.28.5" + "@babel/types" "^7.28.5" "@jridgewell/remapping" "^2.3.5" convert-source-map "^2.0.0" debug "^4.1.0" @@ -90,13 +90,13 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.28.3": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.3.tgz#9626c1741c650cbac39121694a0f2d7451b8ef3e" - integrity sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw== +"@babel/generator@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.5.tgz#712722d5e50f44d07bc7ac9fe84438742dd61298" + integrity sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ== dependencies: - "@babel/parser" "^7.28.3" - "@babel/types" "^7.28.2" + "@babel/parser" "^7.28.5" + "@babel/types" "^7.28.5" "@jridgewell/gen-mapping" "^0.3.12" "@jridgewell/trace-mapping" "^0.3.28" jsesc "^3.0.2" @@ -120,25 +120,25 @@ semver "^6.3.1" "@babel/helper-create-class-features-plugin@^7.27.1", "@babel/helper-create-class-features-plugin@^7.28.3": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.3.tgz#3e747434ea007910c320c4d39a6b46f20f371d46" - integrity sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg== + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz#472d0c28028850968979ad89f173594a6995da46" + integrity sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ== dependencies: "@babel/helper-annotate-as-pure" "^7.27.3" - "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-member-expression-to-functions" "^7.28.5" "@babel/helper-optimise-call-expression" "^7.27.1" "@babel/helper-replace-supers" "^7.27.1" "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - "@babel/traverse" "^7.28.3" + "@babel/traverse" "^7.28.5" semver "^6.3.1" "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz#05b0882d97ba1d4d03519e4bce615d70afa18c53" - integrity sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ== + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz#7c1ddd64b2065c7f78034b25b43346a7e19ed997" + integrity sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - regexpu-core "^6.2.0" + "@babel/helper-annotate-as-pure" "^7.27.3" + regexpu-core "^6.3.1" semver "^6.3.1" "@babel/helper-define-polyfill-provider@^0.6.5": @@ -157,13 +157,13 @@ resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== -"@babel/helper-member-expression-to-functions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz#ea1211276be93e798ce19037da6f06fbb994fa44" - integrity sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA== +"@babel/helper-member-expression-to-functions@^7.27.1", "@babel/helper-member-expression-to-functions@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz#f3e07a10be37ed7a63461c63e6929575945a6150" + integrity sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg== dependencies: - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" + "@babel/traverse" "^7.28.5" + "@babel/types" "^7.28.5" "@babel/helper-module-imports@^7.27.1": version "7.27.1" @@ -225,10 +225,10 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== -"@babel/helper-validator-identifier@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" - integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== +"@babel/helper-validator-identifier@^7.27.1", "@babel/helper-validator-identifier@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" + integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== "@babel/helper-validator-option@^7.27.1": version "7.27.1" @@ -252,20 +252,20 @@ "@babel/template" "^7.27.2" "@babel/types" "^7.28.4" -"@babel/parser@^7.18.9", "@babel/parser@^7.27.2", "@babel/parser@^7.28.3", "@babel/parser@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.4.tgz#da25d4643532890932cc03f7705fe19637e03fa8" - integrity sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg== +"@babel/parser@^7.18.9", "@babel/parser@^7.27.2", "@babel/parser@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.5.tgz#0b0225ee90362f030efd644e8034c99468893b08" + integrity sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ== dependencies: - "@babel/types" "^7.28.4" + "@babel/types" "^7.28.5" -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz#61dd8a8e61f7eb568268d1b5f129da3eee364bf9" - integrity sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA== +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz#fbde57974707bbfa0376d34d425ff4fa6c732421" + integrity sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q== dependencies: "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.27.1" + "@babel/traverse" "^7.28.5" "@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.27.1": version "7.27.1" @@ -357,10 +357,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-block-scoping@^7.28.0": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.4.tgz#e19ac4ddb8b7858bac1fd5c1be98a994d9726410" - integrity sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A== +"@babel/plugin-transform-block-scoping@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.5.tgz#e0d3af63bd8c80de2e567e690a54e84d85eb16f6" + integrity sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g== dependencies: "@babel/helper-plugin-utils" "^7.27.1" @@ -380,7 +380,7 @@ "@babel/helper-create-class-features-plugin" "^7.28.3" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-classes@^7.28.3": +"@babel/plugin-transform-classes@^7.28.4": version "7.28.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz#75d66175486788c56728a73424d67cbc7473495c" integrity sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA== @@ -400,13 +400,13 @@ "@babel/helper-plugin-utils" "^7.27.1" "@babel/template" "^7.27.1" -"@babel/plugin-transform-destructuring@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz#0f156588f69c596089b7d5b06f5af83d9aa7f97a" - integrity sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A== +"@babel/plugin-transform-destructuring@^7.28.0", "@babel/plugin-transform-destructuring@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz#b8402764df96179a2070bb7b501a1586cf8ad7a7" + integrity sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw== dependencies: "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.28.0" + "@babel/traverse" "^7.28.5" "@babel/plugin-transform-dotall-regex@^7.27.1": version "7.27.1" @@ -446,10 +446,10 @@ "@babel/helper-plugin-utils" "^7.27.1" "@babel/plugin-transform-destructuring" "^7.28.0" -"@babel/plugin-transform-exponentiation-operator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz#fc497b12d8277e559747f5a3ed868dd8064f83e1" - integrity sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ== +"@babel/plugin-transform-exponentiation-operator@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.5.tgz#7cc90a8170e83532676cfa505278e147056e94fe" + integrity sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw== dependencies: "@babel/helper-plugin-utils" "^7.27.1" @@ -491,10 +491,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-logical-assignment-operators@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz#890cb20e0270e0e5bebe3f025b434841c32d5baa" - integrity sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw== +"@babel/plugin-transform-logical-assignment-operators@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.5.tgz#d028fd6db8c081dee4abebc812c2325e24a85b0e" + integrity sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA== dependencies: "@babel/helper-plugin-utils" "^7.27.1" @@ -521,15 +521,15 @@ "@babel/helper-module-transforms" "^7.27.1" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-systemjs@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz#00e05b61863070d0f3292a00126c16c0e024c4ed" - integrity sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA== +"@babel/plugin-transform-modules-systemjs@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz#7439e592a92d7670dfcb95d0cbc04bd3e64801d2" + integrity sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew== dependencies: - "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-module-transforms" "^7.28.3" "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" - "@babel/traverse" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" + "@babel/traverse" "^7.28.5" "@babel/plugin-transform-modules-umd@^7.27.1": version "7.27.1" @@ -568,7 +568,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-object-rest-spread@^7.28.0": +"@babel/plugin-transform-object-rest-spread@^7.28.4": version "7.28.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz#9ee1ceca80b3e6c4bac9247b2149e36958f7f98d" integrity sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew== @@ -594,10 +594,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-optional-chaining@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz#874ce3c4f06b7780592e946026eb76a32830454f" - integrity sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg== +"@babel/plugin-transform-optional-chaining@^7.27.1", "@babel/plugin-transform-optional-chaining@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.5.tgz#8238c785f9d5c1c515a90bf196efb50d075a4b26" + integrity sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ== dependencies: "@babel/helper-plugin-utils" "^7.27.1" "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" @@ -633,7 +633,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-regenerator@^7.28.3": +"@babel/plugin-transform-regenerator@^7.28.4": version "7.28.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz#9d3fa3bebb48ddd0091ce5729139cd99c67cea51" integrity sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA== @@ -723,15 +723,15 @@ "@babel/helper-plugin-utils" "^7.27.1" "@babel/preset-env@^7.19.4": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.28.3.tgz#2b18d9aff9e69643789057ae4b942b1654f88187" - integrity sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg== + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.28.5.tgz#82dd159d1563f219a1ce94324b3071eb89e280b0" + integrity sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg== dependencies: - "@babel/compat-data" "^7.28.0" + "@babel/compat-data" "^7.28.5" "@babel/helper-compilation-targets" "^7.27.2" "@babel/helper-plugin-utils" "^7.27.1" "@babel/helper-validator-option" "^7.27.1" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.27.1" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.28.5" "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.27.1" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.27.1" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.27.1" @@ -744,42 +744,42 @@ "@babel/plugin-transform-async-generator-functions" "^7.28.0" "@babel/plugin-transform-async-to-generator" "^7.27.1" "@babel/plugin-transform-block-scoped-functions" "^7.27.1" - "@babel/plugin-transform-block-scoping" "^7.28.0" + "@babel/plugin-transform-block-scoping" "^7.28.5" "@babel/plugin-transform-class-properties" "^7.27.1" "@babel/plugin-transform-class-static-block" "^7.28.3" - "@babel/plugin-transform-classes" "^7.28.3" + "@babel/plugin-transform-classes" "^7.28.4" "@babel/plugin-transform-computed-properties" "^7.27.1" - "@babel/plugin-transform-destructuring" "^7.28.0" + "@babel/plugin-transform-destructuring" "^7.28.5" "@babel/plugin-transform-dotall-regex" "^7.27.1" "@babel/plugin-transform-duplicate-keys" "^7.27.1" "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.27.1" "@babel/plugin-transform-dynamic-import" "^7.27.1" "@babel/plugin-transform-explicit-resource-management" "^7.28.0" - "@babel/plugin-transform-exponentiation-operator" "^7.27.1" + "@babel/plugin-transform-exponentiation-operator" "^7.28.5" "@babel/plugin-transform-export-namespace-from" "^7.27.1" "@babel/plugin-transform-for-of" "^7.27.1" "@babel/plugin-transform-function-name" "^7.27.1" "@babel/plugin-transform-json-strings" "^7.27.1" "@babel/plugin-transform-literals" "^7.27.1" - "@babel/plugin-transform-logical-assignment-operators" "^7.27.1" + "@babel/plugin-transform-logical-assignment-operators" "^7.28.5" "@babel/plugin-transform-member-expression-literals" "^7.27.1" "@babel/plugin-transform-modules-amd" "^7.27.1" "@babel/plugin-transform-modules-commonjs" "^7.27.1" - "@babel/plugin-transform-modules-systemjs" "^7.27.1" + "@babel/plugin-transform-modules-systemjs" "^7.28.5" "@babel/plugin-transform-modules-umd" "^7.27.1" "@babel/plugin-transform-named-capturing-groups-regex" "^7.27.1" "@babel/plugin-transform-new-target" "^7.27.1" "@babel/plugin-transform-nullish-coalescing-operator" "^7.27.1" "@babel/plugin-transform-numeric-separator" "^7.27.1" - "@babel/plugin-transform-object-rest-spread" "^7.28.0" + "@babel/plugin-transform-object-rest-spread" "^7.28.4" "@babel/plugin-transform-object-super" "^7.27.1" "@babel/plugin-transform-optional-catch-binding" "^7.27.1" - "@babel/plugin-transform-optional-chaining" "^7.27.1" + "@babel/plugin-transform-optional-chaining" "^7.28.5" "@babel/plugin-transform-parameters" "^7.27.7" "@babel/plugin-transform-private-methods" "^7.27.1" "@babel/plugin-transform-private-property-in-object" "^7.27.1" "@babel/plugin-transform-property-literals" "^7.27.1" - "@babel/plugin-transform-regenerator" "^7.28.3" + "@babel/plugin-transform-regenerator" "^7.28.4" "@babel/plugin-transform-regexp-modifiers" "^7.27.1" "@babel/plugin-transform-reserved-words" "^7.27.1" "@babel/plugin-transform-shorthand-properties" "^7.27.1" @@ -816,26 +816,26 @@ "@babel/parser" "^7.27.2" "@babel/types" "^7.27.1" -"@babel/traverse@^7.18.9", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.0", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.4.tgz#8d456101b96ab175d487249f60680221692b958b" - integrity sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ== +"@babel/traverse@^7.18.9", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.0", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.4", "@babel/traverse@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.5.tgz#450cab9135d21a7a2ca9d2d35aa05c20e68c360b" + integrity sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ== dependencies: "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.28.3" + "@babel/generator" "^7.28.5" "@babel/helper-globals" "^7.28.0" - "@babel/parser" "^7.28.4" + "@babel/parser" "^7.28.5" "@babel/template" "^7.27.2" - "@babel/types" "^7.28.4" + "@babel/types" "^7.28.5" debug "^4.3.1" -"@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.4.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.4.tgz#0a4e618f4c60a7cd6c11cb2d48060e4dbe38ac3a" - integrity sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q== +"@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.28.5", "@babel/types@^7.4.4": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.5.tgz#10fc405f60897c35f07e85493c932c7b5ca0592b" + integrity sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA== dependencies: "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" "@ckeditor/ckeditor5-adapter-ckfinder@47.1.0": version "47.1.0" @@ -1850,9 +1850,9 @@ integrity sha512-eGeIqNOQpXoPAIP7tC1+1Yc1yl1xnwYqg+3mzqxyrbE5pg5YFBZcA6YoTiByJB6DKAEsiWtl6tjTJS4IYtbB7A== "@hotwired/turbo@^8.0.1": - version "8.0.18" - resolved "https://registry.yarnpkg.com/@hotwired/turbo/-/turbo-8.0.18.tgz#10ae3de450b955862f89e30c50d96d676813744e" - integrity sha512-dG0N7khQsP8sujclodQE3DYkI4Lq7uKA04fhT0DCC/DwMgn4T4WM3aji6EC6+iCfABQeJncY0SraXqVeOq0vvQ== + version "8.0.20" + resolved "https://registry.yarnpkg.com/@hotwired/turbo/-/turbo-8.0.20.tgz#068ede648c4db09fed4cf0ac0266788056673f2f" + integrity sha512-IilkH/+h92BRLeY/rMMR3MUh1gshIfdra/qZzp/Bl5FmiALD/6sQZK/ecxSbumeyOYiWr/JRI+Au1YQmkJGnoA== "@isaacs/balanced-match@^4.0.1": version "4.0.1" @@ -2024,10 +2024,10 @@ schema-utils "^3.0.0 || ^4.0.0" "@symfony/ux-translator@file:vendor/symfony/ux-translator/assets": - version "2.29.2" + version "2.30.0" "@symfony/ux-turbo@file:vendor/symfony/ux-turbo/assets": - version "2.29.2" + version "2.30.0" "@symfony/webpack-encore@^5.0.0": version "5.2.0" @@ -2076,9 +2076,9 @@ "@types/ms" "*" "@types/emscripten@^1.41.2": - version "1.41.4" - resolved "https://registry.yarnpkg.com/@types/emscripten/-/emscripten-1.41.4.tgz#fd7dfaaa9f311bdf3838c98e5d619850a99d3187" - integrity sha512-ECf0qTibhAi2Z0K6FIY96CvBTVkVIuVunOfbTUgbaAmGmbwsc33dbK9KZPROWsmzHotddy6C5pIqYqOmsBoJEw== + version "1.41.5" + resolved "https://registry.yarnpkg.com/@types/emscripten/-/emscripten-1.41.5.tgz#5670e4b52b098691cb844b84ee48c9176699b68d" + integrity sha512-cMQm7pxu6BxtHyqJ7mQZ2kXWV5SLmugybFdHCBbJ5eHzOo6VhBckEgAT3//rP5FwPHNPeEiq4SmQ5ucBwsOo4Q== "@types/eslint-scope@^3.7.7": version "3.7.7" @@ -2160,11 +2160,11 @@ integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== "@types/node@*": - version "24.8.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-24.8.1.tgz#74c8ae00b045a0a351f2837ec00f25dfed0053be" - integrity sha512-alv65KGRadQVfVcG69MuB4IzdYVpRwMG/mq8KWOaoOdyY617P5ivaDiMCGOFDWD2sAn5Q0mR3mRtUOgm99hL9Q== + version "24.9.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.9.2.tgz#90ded2422dbfcafcf72080f28975adc21366148d" + integrity sha512-uWN8YqxXxqFMX2RqGOrumsKeti4LlmIMIyV0lgut4jx7KQBcBiW6vkDtIBvHnHIquwNfJhk8v2OtmO8zXWHfPA== dependencies: - undici-types "~7.14.0" + undici-types "~7.16.0" "@types/parse-json@^4.0.0": version "4.0.2" @@ -2192,9 +2192,9 @@ integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== "@types/yargs@^17.0.8": - version "17.0.33" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d" - integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== + version "17.0.34" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.34.tgz#1c2f9635b71d5401827373a01ce2e8a7670ea839" + integrity sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A== dependencies: "@types/yargs-parser" "*" @@ -2612,10 +2612,10 @@ base64-js@^1.1.2, base64-js@^1.3.0: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -baseline-browser-mapping@^2.8.9: - version "2.8.18" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.18.tgz#b44b18cadddfa037ee8440dafaba4a329dfb327c" - integrity sha512-UYmTpOBwgPScZpS4A+YbapwWuBwasxvO/2IOHArSsAhL/+ZdmATBXTex3t+l2hXwLVYK382ibr/nKoY9GKe86w== +baseline-browser-mapping@^2.8.19: + version "2.8.23" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.23.tgz#cd43e17eff5cbfb67c92153e7fe856cf6d426421" + integrity sha512-616V5YX4bepJFzNyOfce5Fa8fDJMfoxzOIzDCZwaGL8MKVpFrXqfNUoIpRn9YMI5pXf/VKgzjB4htFMsFKKdiQ== big.js@^5.2.2: version "5.2.2" @@ -2679,16 +2679,16 @@ browser-stdout@1.3.1: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.25.1, browserslist@^4.26.3: - version "4.26.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.26.3.tgz#40fbfe2d1cd420281ce5b1caa8840049c79afb56" - integrity sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w== +browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.26.3, browserslist@^4.27.0: + version "4.27.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.27.0.tgz#755654744feae978fbb123718b2f139bc0fa6697" + integrity sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw== dependencies: - baseline-browser-mapping "^2.8.9" - caniuse-lite "^1.0.30001746" - electron-to-chromium "^1.5.227" - node-releases "^2.0.21" - update-browserslist-db "^1.1.3" + baseline-browser-mapping "^2.8.19" + caniuse-lite "^1.0.30001751" + electron-to-chromium "^1.5.238" + node-releases "^2.0.26" + update-browserslist-db "^1.1.4" bs-custom-file-input@^1.3.4: version "1.3.4" @@ -2775,10 +2775,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.30001746: - version "1.0.30001751" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz#dacd5d9f4baeea841641640139d2b2a4df4226ad" - integrity sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001751: + version "1.0.30001753" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001753.tgz#419f8fc9bab6f1a1d10d9574d0b3374f823c5b00" + integrity sha512-Bj5H35MD/ebaOV4iDLqPEtiliTN29qkGtEHCwawWn4cYm+bPJM2NsaP30vtZcnERClMzp52J4+aw2UNbK4o+zw== ccount@^2.0.0: version "2.0.1" @@ -3268,26 +3268,26 @@ cssnano-preset-default@^6.1.2: postcss-svgo "^6.0.3" postcss-unique-selectors "^6.0.4" -cssnano-preset-default@^7.0.9: - version "7.0.9" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-7.0.9.tgz#ba778ab7cbec830e4dbcac722443a90fd99ae34e" - integrity sha512-tCD6AAFgYBOVpMBX41KjbvRh9c2uUjLXRyV7KHSIrwHiq5Z9o0TFfUCoM3TwVrRsRteN3sVXGNvjVNxYzkpTsA== +cssnano-preset-default@^7.0.10: + version "7.0.10" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-7.0.10.tgz#4fb6ee962c0852a03084e8c7a4b60fb0e2db45e0" + integrity sha512-6ZBjW0Lf1K1Z+0OKUAUpEN62tSXmYChXWi2NAA0afxEVsj9a+MbcB1l5qel6BHJHmULai2fCGRthCeKSFbScpA== dependencies: - browserslist "^4.25.1" + browserslist "^4.27.0" css-declaration-sorter "^7.2.0" cssnano-utils "^5.0.1" postcss-calc "^10.1.1" - postcss-colormin "^7.0.4" - postcss-convert-values "^7.0.7" - postcss-discard-comments "^7.0.4" + postcss-colormin "^7.0.5" + postcss-convert-values "^7.0.8" + postcss-discard-comments "^7.0.5" postcss-discard-duplicates "^7.0.2" postcss-discard-empty "^7.0.1" postcss-discard-overridden "^7.0.1" postcss-merge-longhand "^7.0.5" - postcss-merge-rules "^7.0.6" + postcss-merge-rules "^7.0.7" postcss-minify-font-values "^7.0.1" postcss-minify-gradients "^7.0.1" - postcss-minify-params "^7.0.4" + postcss-minify-params "^7.0.5" postcss-minify-selectors "^7.0.5" postcss-normalize-charset "^7.0.1" postcss-normalize-display-values "^7.0.1" @@ -3295,11 +3295,11 @@ cssnano-preset-default@^7.0.9: postcss-normalize-repeat-style "^7.0.1" postcss-normalize-string "^7.0.1" postcss-normalize-timing-functions "^7.0.1" - postcss-normalize-unicode "^7.0.4" + postcss-normalize-unicode "^7.0.5" postcss-normalize-url "^7.0.1" postcss-normalize-whitespace "^7.0.1" postcss-ordered-values "^7.0.2" - postcss-reduce-initial "^7.0.4" + postcss-reduce-initial "^7.0.5" postcss-reduce-transforms "^7.0.1" postcss-svgo "^7.1.0" postcss-unique-selectors "^7.0.4" @@ -3323,11 +3323,11 @@ cssnano@^6.0.3: lilconfig "^3.1.1" cssnano@^7.0.4: - version "7.1.1" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-7.1.1.tgz#a24ae8a87ec4129f9a783498402c9cbcb2e9fe25" - integrity sha512-fm4D8ti0dQmFPeF8DXSAA//btEmqCOgAc/9Oa3C1LW94h5usNrJEfrON7b4FkPZgnDEn6OUs5NdxiJZmAtGOpQ== + version "7.1.2" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-7.1.2.tgz#a8a533a8f509d74b2d22e73d80ec1294f65fdc70" + integrity sha512-HYOPBsNvoiFeR1eghKD5C3ASm64v9YVyJB4Ivnl2gqKoQYvjjN/G0rztvKQq8OxocUtC6sjqY8jwYngIB4AByA== dependencies: - cssnano-preset-default "^7.0.9" + cssnano-preset-default "^7.0.10" lilconfig "^3.1.3" csso@^5.0.5: @@ -3661,10 +3661,10 @@ duplexer@^0.1.2: resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -electron-to-chromium@^1.5.227: - version "1.5.237" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.237.tgz#eacf61cef3f6345d0069ab427585c5a04d7084f0" - integrity sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg== +electron-to-chromium@^1.5.238: + version "1.5.244" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.244.tgz#b9b61e3d24ef4203489951468614f2a360763820" + integrity sha512-OszpBN7xZX4vWMPJwB9illkN/znA8M36GQqQxi6MNy9axWxhOfJyZZJtSLQCpEFLHP2xK33BiWx9aIuIEXVCcw== emoji-regex@^7.0.1: version "7.0.3" @@ -3700,9 +3700,9 @@ entities@^4.2.0: integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== envinfo@^7.7.3: - version "7.19.0" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.19.0.tgz#b4b4507a27e9900b0175f556167fd3a95f8623f1" - integrity sha512-DoSM9VyG6O3vqBf+p3Gjgr/Q52HYBBtO3v+4koAxt1MnWr+zEnxE+nke/yXS4lt2P4SYCHQ4V3f1i88LQVOpAw== + version "7.20.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.20.0.tgz#3fd9de69fb6af3e777a017dfa033676368d67dd7" + integrity sha512-+zUomDcLXsVkQ37vUqWBvQwLaLlj8eZPSi61llaEFAVBY5mhcXdaSw1pSJVl4yTYD5g/gEfpNl28YYk4IPvrrg== error-ex@^1.3.1: version "1.3.4" @@ -4137,9 +4137,9 @@ get-symbol-description@^1.1.0: get-intrinsic "^1.2.6" get-tsconfig@^4.4.0: - version "4.12.0" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.12.0.tgz#cfb3a4446a2abd324a205469e8bda4e7e44cbd35" - integrity sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw== + version "4.13.0" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.13.0.tgz#fcdd991e6d22ab9a600f00e91c318707a5d9a0d7" + integrity sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ== dependencies: resolve-pkg-maps "^1.0.0" @@ -4619,7 +4619,7 @@ is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.16.0: +is-core-module@^2.16.1: version "2.16.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== @@ -5581,9 +5581,9 @@ mini-css-extract-plugin@^2.4.2, mini-css-extract-plugin@^2.6.0: tapable "^2.2.1" minimatch@*: - version "10.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.3.tgz#cf7a0314a16c4d9ab73a7730a0e8e3c3502d47aa" - integrity sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw== + version "10.1.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.1.1.tgz#e6e61b9b0c1dcab116b5a7d1458e8b6ae9e73a55" + integrity sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ== dependencies: "@isaacs/brace-expansion" "^5.0.0" @@ -5734,10 +5734,10 @@ node-notifier@^9.0.0: uuid "^8.3.0" which "^2.0.2" -node-releases@^2.0.21: - version "2.0.25" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.25.tgz#95479437bd409231e03981c1f6abee67f5e962df" - integrity sha512-4auku8B/vw5psvTiiN9j1dAOsXvMoGqJuKJcR+dTdqiXEK20mMTk1UEo3HS16LeGQsVG6+qKTPM9u/qQ2LqATA== +node-releases@^2.0.26: + version "2.0.27" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.27.tgz#eedca519205cf20f650f61d56b070db111231e4e" + integrity sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -6021,12 +6021,12 @@ postcss-colormin@^6.1.0: colord "^2.9.3" postcss-value-parser "^4.2.0" -postcss-colormin@^7.0.4: - version "7.0.4" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-7.0.4.tgz#12b5ed701bc860d58e5267a51679415939563bdb" - integrity sha512-ziQuVzQZBROpKpfeDwmrG+Vvlr0YWmY/ZAk99XD+mGEBuEojoFekL41NCsdhyNUtZI7DPOoIWIR7vQQK9xwluw== +postcss-colormin@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-7.0.5.tgz#0c7526289ab3f0daf96a376fd7430fae7258d5cf" + integrity sha512-ekIBP/nwzRWhEMmIxHHbXHcMdzd1HIUzBECaj5KEdLz9DVP2HzT065sEhvOx1dkLjYW7jyD0CngThx6bpFi2fA== dependencies: - browserslist "^4.25.1" + browserslist "^4.27.0" caniuse-api "^3.0.0" colord "^2.9.3" postcss-value-parser "^4.2.0" @@ -6039,12 +6039,12 @@ postcss-convert-values@^6.1.0: browserslist "^4.23.0" postcss-value-parser "^4.2.0" -postcss-convert-values@^7.0.7: - version "7.0.7" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-7.0.7.tgz#e24f8118d8f5cb3830dd8841c8a01537b7535293" - integrity sha512-HR9DZLN04Xbe6xugRH6lS4ZQH2zm/bFh/ZyRkpedZozhvh+awAfbA0P36InO4fZfDhvYfNJeNvlTf1sjwGbw/A== +postcss-convert-values@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-7.0.8.tgz#0c599dc29891d47d7b4d6db399c402cf3ba8efc3" + integrity sha512-+XNKuPfkHTCEo499VzLMYn94TiL3r9YqRE3Ty+jP7UX4qjewUONey1t7CG21lrlTLN07GtGM8MqFVp86D4uKJg== dependencies: - browserslist "^4.25.1" + browserslist "^4.27.0" postcss-value-parser "^4.2.0" postcss-discard-comments@^6.0.2: @@ -6052,10 +6052,10 @@ postcss-discard-comments@^6.0.2: resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz#e768dcfdc33e0216380623652b0a4f69f4678b6c" integrity sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw== -postcss-discard-comments@^7.0.4: - version "7.0.4" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-7.0.4.tgz#9aded15cf437d14ee02b7589ee911b780cd73ffb" - integrity sha512-6tCUoql/ipWwKtVP/xYiFf1U9QgJ0PUvxN7pTcsQ8Ns3Fnwq1pU5D5s1MhT/XySeLq6GXNvn37U46Ded0TckWg== +postcss-discard-comments@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-7.0.5.tgz#0a95aa4d229a021bc441861d4773d57145ee15dd" + integrity sha512-IR2Eja8WfYgN5n32vEGSctVQ1+JARfu4UH8M7bgGh1bC+xI/obsPJXaBpQF7MAByvgwZinhpHpdrmXtvVVlKcQ== dependencies: postcss-selector-parser "^7.1.0" @@ -6142,12 +6142,12 @@ postcss-merge-rules@^6.1.1: cssnano-utils "^4.0.2" postcss-selector-parser "^6.0.16" -postcss-merge-rules@^7.0.6: - version "7.0.6" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-7.0.6.tgz#f5a0cabf6423b1370ba76d5363dfe44776f1e619" - integrity sha512-2jIPT4Tzs8K87tvgCpSukRQ2jjd+hH6Bb8rEEOUDmmhOeTcqDg5fEFK8uKIu+Pvc3//sm3Uu6FRqfyv7YF7+BQ== +postcss-merge-rules@^7.0.7: + version "7.0.7" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-7.0.7.tgz#f49537e5029ce0e655c2f31fdb205f14575c7334" + integrity sha512-njWJrd/Ms6XViwowaaCc+/vqhPG3SmXn725AGrnl+BgTuRPEacjiLEaGq16J6XirMJbtKkTwnt67SS+e2WGoew== dependencies: - browserslist "^4.25.1" + browserslist "^4.27.0" caniuse-api "^3.0.0" cssnano-utils "^5.0.1" postcss-selector-parser "^7.1.0" @@ -6193,12 +6193,12 @@ postcss-minify-params@^6.1.0: cssnano-utils "^4.0.2" postcss-value-parser "^4.2.0" -postcss-minify-params@^7.0.4: - version "7.0.4" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-7.0.4.tgz#665848c0674c5ff59e054e63e052339738cbc6a3" - integrity sha512-3OqqUddfH8c2e7M35W6zIwv7jssM/3miF9cbCSb1iJiWvtguQjlxZGIHK9JRmc8XAKmE2PFGtHSM7g/VcW97sw== +postcss-minify-params@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-7.0.5.tgz#4a0d15e312252e41d0c8504227d43538e3f607a2" + integrity sha512-FGK9ky02h6Ighn3UihsyeAH5XmLEE2MSGH5Tc4tXMFtEDx7B+zTG6hD/+/cT+fbF7PbYojsmmWjyTwFwW1JKQQ== dependencies: - browserslist "^4.25.1" + browserslist "^4.27.0" cssnano-utils "^5.0.1" postcss-value-parser "^4.2.0" @@ -6352,12 +6352,12 @@ postcss-normalize-unicode@^6.1.0: browserslist "^4.23.0" postcss-value-parser "^4.2.0" -postcss-normalize-unicode@^7.0.4: - version "7.0.4" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.4.tgz#9fd8d1d1e931b60ed946556e4d657b5879e3ee00" - integrity sha512-LvIURTi1sQoZqj8mEIE8R15yvM+OhbR1avynMtI9bUzj5gGKR/gfZFd8O7VMj0QgJaIFzxDwxGl/ASMYAkqO8g== +postcss-normalize-unicode@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.5.tgz#d47a3cc40529d7eeb18d7f7a8a215c38c54455cd" + integrity sha512-X6BBwiRxVaFHrb2WyBMddIeB5HBjJcAaUHyhLrM2FsxSq5TFqcHSsK7Zu1otag+o0ZphQGJewGH1tAyrD0zX1Q== dependencies: - browserslist "^4.25.1" + browserslist "^4.27.0" postcss-value-parser "^4.2.0" postcss-normalize-url@^6.0.2: @@ -6412,12 +6412,12 @@ postcss-reduce-initial@^6.1.0: browserslist "^4.23.0" caniuse-api "^3.0.0" -postcss-reduce-initial@^7.0.4: - version "7.0.4" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-7.0.4.tgz#ebe8b4c85990efaa5a1accfc77f41f23cfa66187" - integrity sha512-rdIC9IlMBn7zJo6puim58Xd++0HdbvHeHaPgXsimMfG1ijC5A9ULvNLSE0rUKVJOvNMcwewW4Ga21ngyJjY/+Q== +postcss-reduce-initial@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-7.0.5.tgz#cf74bb747dfa003cd3d5372081f6157e6d8e1545" + integrity sha512-RHagHLidG8hTZcnr4FpyMB2jtgd/OcyAazjMhoy5qmWJOx1uxKh4ntk0Pb46ajKM0rkf32lRH4C8c9qQiPR6IA== dependencies: - browserslist "^4.25.1" + browserslist "^4.27.0" caniuse-api "^3.0.0" postcss-reduce-transforms@^6.0.2: @@ -6650,7 +6650,7 @@ regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.4: gopd "^1.2.0" set-function-name "^2.0.2" -regexpu-core@^6.2.0: +regexpu-core@^6.3.1: version "6.4.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.4.0.tgz#3580ce0c4faedef599eccb146612436b62a176e5" integrity sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA== @@ -6822,11 +6822,11 @@ resolve-url-loader@^5.0.0: source-map "0.6.1" resolve@^1.1.6, resolve@^1.1.7, resolve@^1.20.0, resolve@^1.22.10: - version "1.22.10" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" - integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + version "1.22.11" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262" + integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ== dependencies: - is-core-module "^2.16.0" + is-core-module "^2.16.1" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -7282,11 +7282,11 @@ stylehacks@^6.1.1: postcss-selector-parser "^6.0.16" stylehacks@^7.0.5: - version "7.0.6" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-7.0.6.tgz#b52653ec54b4d902268df4be5db5e16f18822b31" - integrity sha512-iitguKivmsueOmTO0wmxURXBP8uqOO+zikLGZ7Mm9e/94R4w5T999Js2taS/KBOnQ/wdC3jN3vNSrkGDrlnqQg== + version "7.0.7" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-7.0.7.tgz#12b0dd1eceee4d564aae6da0632804ef0004a5be" + integrity sha512-bJkD0JkEtbRrMFtwgpJyBbFIwfDDONQ1Ov3sDLZQP8HuJ73kBOyx66H4bOcAbVWmnfLdvQ0AJwXxOMkpujcO6g== dependencies: - browserslist "^4.25.1" + browserslist "^4.27.0" postcss-selector-parser "^7.1.0" sugarss@^4.0.1: @@ -7552,10 +7552,10 @@ unbox-primitive@^1.1.0: has-symbols "^1.1.0" which-boxed-primitive "^1.1.1" -undici-types@~7.14.0: - version "7.14.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.14.0.tgz#4c037b32ca4d7d62fae042174604341588bc0840" - integrity sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA== +undici-types@~7.16.0: + version "7.16.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.16.0.tgz#ffccdff36aea4884cbfce9a750a0580224f58a46" + integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.1" @@ -7674,10 +7674,10 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -update-browserslist-db@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" - integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== +update-browserslist-db@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz#7802aa2ae91477f255b86e0e46dbc787a206ad4a" + integrity sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A== dependencies: escalade "^3.2.0" picocolors "^1.1.1" From 5e3bd26e2724521ba715dba1f23e11615bdce6e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 12 Nov 2025 21:34:05 +0100 Subject: [PATCH 005/235] New Crowdin updates (#1105) * New translations validators.en.xlf (French) * New translations security.en.xlf (French) * New translations messages.en.xlf (French) * New translations messages.en.xlf (French) --- translations/messages.fr.xlf | 18466 +++++++++++++++---------------- translations/security.fr.xlf | 4 +- translations/validators.fr.xlf | 186 +- 3 files changed, 9409 insertions(+), 9247 deletions(-) diff --git a/translations/messages.fr.xlf b/translations/messages.fr.xlf index cb3936ef..8ed971b8 100644 --- a/translations/messages.fr.xlf +++ b/translations/messages.fr.xlf @@ -1,9233 +1,9233 @@ - - - - - - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - - - attachment_type.caption - Types pour fichiers joints - - - - - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:12 - new - - - attachment_type.edit - Modifier le type de pièce jointe - - - - - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:16 - new - - - attachment_type.new - Nouveau type de pièce jointe - - - - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - templates\AdminPages\CategoryAdmin.html.twig:4 - templates\base.html.twig:163 - templates\base.html.twig:170 - templates\base.html.twig:197 - templates\base.html.twig:225 - - - category.labelp - Catégories - - - - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:19 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:11 - templates\AdminPages\CategoryAdmin.html.twig:8 - - - admin.options - Options - - - - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - templates\AdminPages\CategoryAdmin.html.twig:9 - - - admin.advanced - Avancé - - - - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:13 - new - - - category.edit - Éditer la catégorie - - - - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:17 - new - - - category.new - Nouvelle catégorie - - - - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - - - currency.caption - Devise - - - - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - - - currency.iso_code.caption - Code ISO - - - - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - - - currency.symbol.caption - Symbole de la devise - - - - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:29 - new - - - currency.edit - Editer la devise - - - - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:33 - new - - - currency.new - Nouvelle devise - - - - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - - - search.placeholder - Recherche - - - - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - templates\AdminPages\EntityAdminBase.html.twig:13 - templates\base.html.twig:166 - templates\base.html.twig:193 - templates\base.html.twig:221 - - - expandAll - Agrandir tout - - - - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - templates\AdminPages\EntityAdminBase.html.twig:17 - templates\base.html.twig:167 - templates\base.html.twig:194 - templates\base.html.twig:222 - - - reduceAll - Réduire tout - - - - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - - - part.info.timetravel_hint - C'est ainsi que le composant apparaissait avant le %timestamp%. <i>Veuillez noter que cette fonctionnalité est expérimentale, donc les infos ne sont peut-être pas correctes. </i> - - - - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - templates\AdminPages\EntityAdminBase.html.twig:42 - - - standard.label - Propriétés - - - - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - templates\AdminPages\EntityAdminBase.html.twig:43 - - - infos.label - Informations - - - - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 - new - - - history.label - Historique - - - - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - templates\AdminPages\EntityAdminBase.html.twig:45 - - - export.label - Exporter - - - - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - templates\AdminPages\EntityAdminBase.html.twig:47 - - - import_export.label - Importer exporter - - - - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - - - mass_creation.label - Création multiple - - - - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - templates\AdminPages\EntityAdminBase.html.twig:59 - - - admin.common - Commun - - - - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - - - admin.attachments - Fichiers joints - - - - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:90 - - - admin.parameters - Paramètres - - - - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:179 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:167 - templates\AdminPages\EntityAdminBase.html.twig:142 - - - export_all.label - Exporter tous les éléments - - - - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:185 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:173 - - - mass_creation.help - Chaque ligne sera interprétée comme le nom d'un élément qui sera créé. - - - - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - templates\AdminPages\EntityAdminBase.html.twig:35 - - - edit.caption - Éditer l'élément "%name" - - - - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - templates\AdminPages\EntityAdminBase.html.twig:37 - - - new.caption - Nouvel élément - - - - - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - templates\base.html.twig:172 - templates\base.html.twig:199 - templates\base.html.twig:227 - - - footprint.labelp - Empreintes - - - - - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:13 - new - - - footprint.edit - Editer l'empreinte - - - - - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:17 - new - - - footprint.new - Nouvelle empreinte - - - - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - - - group.edit.caption - Groupes - - - - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - - - user.edit.permissions - Permissions - - - - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:24 - new - - - group.edit - Editer le groupe - - - - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:28 - new - - - group.new - Nouveau groupe - - - - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:4 - - - label_profile.caption - Profil des étiquettes - - - - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:8 - - - label_profile.advanced - Avancé - - - - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:9 - - - label_profile.comment - Commentaire - - - - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:55 - new - - - label_profile.edit - Editer profil d'étiquette - - - - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:59 - new - - - label_profile.new - Nouveau profil d'étiquette - - - - - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - templates\AdminPages\ManufacturerAdmin.html.twig:4 - - - manufacturer.caption - Fabricants - - - - - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:8 - new - - - manufacturer.edit - Modifiez le fabricant - - - - - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:12 - new - - - manufacturer.new - Nouveau fabricant - - - - - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - - - measurement_unit.caption - Unité de mesure - - - - - part_custom_state.caption - État personnalisé du composant - - - - - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:5 - Part-DB1\templates\_sidebar.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:8 - templates\base.html.twig:171 - templates\base.html.twig:198 - templates\base.html.twig:226 - - - storelocation.labelp - Emplacement de stockage - - - - - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:32 - new - - - storelocation.edit - Modifier l'emplacement de stockage - - - - - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:36 - new - - - storelocation.new - Nouvel emplacement de stockage - - - - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - templates\AdminPages\SupplierAdmin.html.twig:4 - - - supplier.caption - Fournisseurs - - - - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 - new - - - supplier.edit - Modifier le fournisseur - - - - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:20 - new - - - supplier.new - Nouveau fournisseur - - - - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - - - user.edit.caption - Utilisateurs - - - - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - - - user.edit.configuration - Configuration - - - - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - - - user.edit.password - Mot de passe - - - - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - - - user.edit.tfa.caption - Authentification à deux facteurs - - - - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - - - user.edit.tfa.google_active - Application d'authentification active - - - - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - - - tfa_backup.remaining_tokens - Nombre de codes de secours restant - - - - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - - - tfa_backup.generation_date - Date de génération des codes de secours - - - - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - - - user.edit.tfa.disabled - Méthode désactivée - - - - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - - - user.edit.tfa.u2f_keys_count - Clés de sécurité actives - - - - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - - - user.edit.tfa.disable_tfa_title - Voulez vous vraiment poursuivre ? - - - - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - - - user.edit.tfa.disable_tfa_message - Cela désactivera <b> toutes les méthodes d'authentification à deux facteurs de l'utilisateur</b> et supprimera <b>les codes de secours</b>! -<br> -L'utilisateur devra configurer à nouveau toutes les méthodes d'authentification à deux facteurs et créer de nouveaux codes de secours!<br><br> -<b>Ne faites ceci qu'en étant sûr de l'identité de l'utilisateur (ayant besoin d'aide),autrement le compte pourrai être compromis!</b> - - - - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - - - user.edit.tfa.disable_tfa.btn - Désactiver toutes les méthodes d'authentification à deux facteurs - - - - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:85 - new - - - user.edit - Modifier l'utilisateur - - - - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:89 - new - - - user.new - Nouvel utilisateur - - - - - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:63 - - - attachment.delete - Supprimer - - - - - Part-DB1\templates\AdminPages\_attachments.html.twig:41 - Part-DB1\templates\Parts\edit\_attachments.html.twig:38 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:35 - Part-DB1\src\DataTables\AttachmentDataTable.php:159 - Part-DB1\templates\Parts\edit\_attachments.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:159 - - - attachment.external - Externe - - - - - Part-DB1\templates\AdminPages\_attachments.html.twig:49 - Part-DB1\templates\Parts\edit\_attachments.html.twig:47 - Part-DB1\templates\AdminPages\_attachments.html.twig:47 - Part-DB1\templates\Parts\edit\_attachments.html.twig:45 - - - attachment.preview.alt - Miniature du fichier joint - - - - - Part-DB1\templates\AdminPages\_attachments.html.twig:52 - Part-DB1\templates\Parts\edit\_attachments.html.twig:50 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 - Part-DB1\templates\AdminPages\_attachments.html.twig:50 - Part-DB1\templates\Parts\edit\_attachments.html.twig:48 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:45 - - - attachment.view - Afficher - - - - - Part-DB1\templates\AdminPages\_attachments.html.twig:58 - Part-DB1\templates\Parts\edit\_attachments.html.twig:56 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:43 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - Part-DB1\templates\AdminPages\_attachments.html.twig:56 - Part-DB1\templates\Parts\edit\_attachments.html.twig:54 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - - - attachment.file_not_found - Fichier introuvable - - - - - Part-DB1\templates\AdminPages\_attachments.html.twig:66 - Part-DB1\templates\Parts\edit\_attachments.html.twig:64 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:48 - Part-DB1\templates\Parts\edit\_attachments.html.twig:62 - - - attachment.secure - Fichier joint privé - - - - - Part-DB1\templates\AdminPages\_attachments.html.twig:79 - Part-DB1\templates\Parts\edit\_attachments.html.twig:77 - Part-DB1\templates\AdminPages\_attachments.html.twig:77 - Part-DB1\templates\Parts\edit\_attachments.html.twig:75 - - - attachment.create - Ajouter un fichier joint - - - - - Part-DB1\templates\AdminPages\_attachments.html.twig:84 - Part-DB1\templates\Parts\edit\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - Part-DB1\templates\AdminPages\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_attachments.html.twig:80 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - - - part_lot.edit.delete.confirm - Voulez vous vraiment supprimer ce stock ? Cette action ne pourra pas être annulée! - - - - - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - templates\AdminPages\_delete_form.html.twig:2 - - - entity.delete.confirm_title - Voulez vous vraiment supprimer %name%? - - - - - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - templates\AdminPages\_delete_form.html.twig:3 - - - entity.delete.message - Cette action ne pourra pas être annulée! -<br> -Les sous éléments seront déplacés vers le haut. - - - - - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - templates\AdminPages\_delete_form.html.twig:9 - - - entity.delete - Supprimer l'élément - - - - - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:45 - Part-DB1\src\Form\Part\PartBaseType.php:286 - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:43 - Part-DB1\src\Form\Part\PartBaseType.php:267 - new - - - edit.log_comment - Éditer le commentaire - - - - - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - templates\AdminPages\_delete_form.html.twig:12 - - - entity.delete.recursive - Suppression récursive (tous les sous éléments) - - - - - Part-DB1\templates\AdminPages\_duplicate.html.twig:3 - - - entity.duplicate - Dupliquer l’élément - - - - - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - templates\AdminPages\_export_form.html.twig:4 - src\Form\ImportType.php:67 - - - export.format - Format de fichier - - - - - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - templates\AdminPages\_export_form.html.twig:16 - - - export.level - Niveau de verbosité - - - - - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - templates\AdminPages\_export_form.html.twig:19 - - - export.level.simple - Simple - - - - - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - templates\AdminPages\_export_form.html.twig:20 - - - export.level.extended - Étendu - - - - - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - templates\AdminPages\_export_form.html.twig:21 - - - export.level.full - Complet - - - - - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - templates\AdminPages\_export_form.html.twig:31 - - - export.include_children - Exporter également les sous éléments - - - - - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - templates\AdminPages\_export_form.html.twig:39 - - - export.btn - Exporter - - - - - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - templates\AdminPages\EntityAdminBase.html.twig:94 - templates\Parts\edit_part_info.html.twig:12 - templates\Parts\show_part_info.html.twig:11 - - - id.label - ID - - - - - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:76 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:77 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:77 - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:59 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:60 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:53 - templates\AdminPages\EntityAdminBase.html.twig:101 - templates\Parts\show_part_info.html.twig:248 - - - createdAt - Créé le - - - - - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:73 - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:49 - templates\AdminPages\EntityAdminBase.html.twig:114 - templates\Parts\show_part_info.html.twig:263 - - - lastModified - Dernière modification - - - - - Part-DB1\templates\AdminPages\_info.html.twig:38 - Part-DB1\templates\AdminPages\_info.html.twig:38 - - - entity.info.parts_count - Nombre de composants avec cet élément - - - - - Part-DB1\templates\AdminPages\_parameters.html.twig:6 - Part-DB1\templates\helper.twig:125 - Part-DB1\templates\Parts\edit\_specifications.html.twig:6 - - - specifications.property - Paramètre - - - - - Part-DB1\templates\AdminPages\_parameters.html.twig:7 - Part-DB1\templates\Parts\edit\_specifications.html.twig:7 - - - specifications.symbol - Symbole - - - - - Part-DB1\templates\AdminPages\_parameters.html.twig:8 - Part-DB1\templates\Parts\edit\_specifications.html.twig:8 - - - specifications.value_min - Min. - - - - - Part-DB1\templates\AdminPages\_parameters.html.twig:9 - Part-DB1\templates\Parts\edit\_specifications.html.twig:9 - - - specifications.value_typ - Typ. - - - - - Part-DB1\templates\AdminPages\_parameters.html.twig:10 - Part-DB1\templates\Parts\edit\_specifications.html.twig:10 - - - specifications.value_max - Max. - - - - - Part-DB1\templates\AdminPages\_parameters.html.twig:11 - Part-DB1\templates\Parts\edit\_specifications.html.twig:11 - - - specifications.unit - Unité - - - - - Part-DB1\templates\AdminPages\_parameters.html.twig:12 - Part-DB1\templates\Parts\edit\_specifications.html.twig:12 - - - specifications.text - Texte - - - - - Part-DB1\templates\AdminPages\_parameters.html.twig:13 - Part-DB1\templates\Parts\edit\_specifications.html.twig:13 - - - specifications.group - Groupe - - - - - Part-DB1\templates\AdminPages\_parameters.html.twig:26 - Part-DB1\templates\Parts\edit\_specifications.html.twig:26 - - - specification.create - Nouveau paramètre - - - - - Part-DB1\templates\AdminPages\_parameters.html.twig:31 - Part-DB1\templates\Parts\edit\_specifications.html.twig:31 - - - parameter.delete.confirm - Souhaitez-vous vraiment supprimer ce paramètre ? - - - - - Part-DB1\templates\attachment_list.html.twig:3 - Part-DB1\templates\attachment_list.html.twig:3 - - - attachment.list.title - Liste des fichiers joints - - - - - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - - - part_list.loading.caption - Chargement - - - - - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - - - part_list.loading.message - Cela peut prendre un moment.Si ce message ne disparaît pas, essayez de recharger la page. - - - - - Part-DB1\templates\base.html.twig:68 - Part-DB1\templates\base.html.twig:68 - templates\base.html.twig:246 - - - vendor.base.javascript_hint - Activez Javascipt pour profiter de toutes les fonctionnalités! - - - - - Part-DB1\templates\base.html.twig:73 - Part-DB1\templates\base.html.twig:73 - - - sidebar.big.toggle - Afficher/Cacher le panneau latéral -Show/Hide sidebar - - - - - Part-DB1\templates\base.html.twig:95 - Part-DB1\templates\base.html.twig:95 - templates\base.html.twig:271 - - - loading.caption - Chargement: - - - - - Part-DB1\templates\base.html.twig:96 - Part-DB1\templates\base.html.twig:96 - templates\base.html.twig:272 - - - loading.message - Cela peut prendre un moment.Si ce message ne disparaît pas, essayez de recharger la page. - - - - - Part-DB1\templates\base.html.twig:101 - Part-DB1\templates\base.html.twig:101 - templates\base.html.twig:277 - - - loading.bar - Chargement... - - - - - Part-DB1\templates\base.html.twig:112 - Part-DB1\templates\base.html.twig:112 - templates\base.html.twig:288 - - - back_to_top - Retour en haut de page - - - - - Part-DB1\templates\Form\permissionLayout.html.twig:35 - Part-DB1\templates\Form\permissionLayout.html.twig:35 - - - permission.edit.permission - Permissions - - - - - Part-DB1\templates\Form\permissionLayout.html.twig:36 - Part-DB1\templates\Form\permissionLayout.html.twig:36 - - - permission.edit.value - Valeur - - - - - Part-DB1\templates\Form\permissionLayout.html.twig:53 - Part-DB1\templates\Form\permissionLayout.html.twig:53 - - - permission.legend.title - Explication des états: - - - - - Part-DB1\templates\Form\permissionLayout.html.twig:57 - Part-DB1\templates\Form\permissionLayout.html.twig:57 - - - permission.legend.disallow - Interdire - - - - - Part-DB1\templates\Form\permissionLayout.html.twig:61 - Part-DB1\templates\Form\permissionLayout.html.twig:61 - - - permission.legend.allow - Autoriser - - - - - Part-DB1\templates\Form\permissionLayout.html.twig:65 - Part-DB1\templates\Form\permissionLayout.html.twig:65 - - - permission.legend.inherit - Hériter du groupe (parent) - - - - - Part-DB1\templates\helper.twig:3 - Part-DB1\templates\helper.twig:3 - - - bool.true - Vrai - - - - - Part-DB1\templates\helper.twig:5 - Part-DB1\templates\helper.twig:5 - - - bool.false - Faux - - - - - Part-DB1\templates\helper.twig:92 - Part-DB1\templates\helper.twig:87 - - - Yes - Oui - - - - - Part-DB1\templates\helper.twig:94 - Part-DB1\templates\helper.twig:89 - - - No - Non - - - - - Part-DB1\templates\helper.twig:126 - - - specifications.value - Valeur - - - - - Part-DB1\templates\homepage.html.twig:7 - Part-DB1\templates\homepage.html.twig:7 - templates\homepage.html.twig:7 - - - version.caption - Version - - - - - Part-DB1\templates\homepage.html.twig:22 - Part-DB1\templates\homepage.html.twig:22 - templates\homepage.html.twig:19 - - - homepage.license - Information de license - - - - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - - - homepage.github.caption - Page du projet - - - - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - - - homepage.github.text - Retrouvez les téléchargements, report de bugs, to-do-list etc. sur <a href="%href%" class="link-external" target="_blank">la page du projet GitHub</a> - - - - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - - - homepage.help.caption - Aide - - - - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - - - homepage.help.text - De l'aide et des conseils sont disponibles sur le Wiki de la <a href="%href%" class="link-external" target="_blank">page GitHub</a> - - - - - Part-DB1\templates\homepage.html.twig:33 - Part-DB1\templates\homepage.html.twig:33 - templates\homepage.html.twig:30 - - - homepage.forum.caption - Forum - - - - - Part-DB1\templates\homepage.html.twig:45 - Part-DB1\templates\homepage.html.twig:45 - new - - - homepage.last_activity - Activité récente - - - - - Part-DB1\templates\LabelSystem\dialog.html.twig:3 - Part-DB1\templates\LabelSystem\dialog.html.twig:6 - - - label_generator.title - Générateur d'étiquettes - - - - - Part-DB1\templates\LabelSystem\dialog.html.twig:16 - - - label_generator.common - Commun - - - - - Part-DB1\templates\LabelSystem\dialog.html.twig:20 - - - label_generator.advanced - Avancé - - - - - Part-DB1\templates\LabelSystem\dialog.html.twig:24 - - - label_generator.profiles - Profils - - - - - Part-DB1\templates\LabelSystem\dialog.html.twig:58 - - - label_generator.selected_profile - Profil actuellement sélectionné - - - - - Part-DB1\templates\LabelSystem\dialog.html.twig:62 - - - label_generator.edit_profile - Modifier le profil - - - - - Part-DB1\templates\LabelSystem\dialog.html.twig:75 - - - label_generator.load_profile - Charger le profil - - - - - Part-DB1\templates\LabelSystem\dialog.html.twig:102 - - - label_generator.download - Télécharger - - - - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:3 - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:5 - - - label_generator.label_btn - Générer une étiquette - - - - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:20 - - - label_generator.label_empty - Nouvelle étiquette vide - - - - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:3 - - - label_scanner.title - Lecteur d'étiquettes - - - - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - - - label_scanner.no_cam_found.title - Aucune webcam trouvée - - - - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - - - label_scanner.no_cam_found.text - Vous devez disposer d'une webcam et donner l'autorisation d'utiliser la fonction de scanner. Vous pouvez entrer le code à barres manuellement ci-dessous. - - - - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:27 - - - label_scanner.source_select - Sélectionnez une source - - - - - Part-DB1\templates\LogSystem\log_list.html.twig:3 - Part-DB1\templates\LogSystem\log_list.html.twig:3 - - - log.list.title - Journal système - - - - - Part-DB1\templates\LogSystem\_log_table.html.twig:1 - Part-DB1\templates\LogSystem\_log_table.html.twig:1 - new - - - log.undo.confirm_title - Annuler le changement / revenir à une date antérieure ? - - - - - Part-DB1\templates\LogSystem\_log_table.html.twig:2 - Part-DB1\templates\LogSystem\_log_table.html.twig:2 - new - - - log.undo.confirm_message - Voulez-vous annuler la modification donnée / réinitialiser l'élément à une date donnée ? - - - - - Part-DB1\templates\mail\base.html.twig:24 - Part-DB1\templates\mail\base.html.twig:24 - - - mail.footer.email_sent_by - Cet email a été envoyé automatiquement par - - - - - Part-DB1\templates\mail\base.html.twig:24 - Part-DB1\templates\mail\base.html.twig:24 - - - mail.footer.dont_reply - Ne répondez pas à cet email. - - - - - Part-DB1\templates\mail\pw_reset.html.twig:6 - Part-DB1\templates\mail\pw_reset.html.twig:6 - - - email.hi %name% - Bonjour %name% - - - - - Part-DB1\templates\mail\pw_reset.html.twig:7 - Part-DB1\templates\mail\pw_reset.html.twig:7 - - - email.pw_reset.message - Quelqu’un (surement vous) a demandé une réinitialisation de votre mot de passe.Si ce n'est pas le cas, ignorez simplement cet email. - - - - - Part-DB1\templates\mail\pw_reset.html.twig:9 - Part-DB1\templates\mail\pw_reset.html.twig:9 - - - email.pw_reset.button - Cliquez ici pour réinitialiser votre mot de passe - - - - - Part-DB1\templates\mail\pw_reset.html.twig:11 - Part-DB1\templates\mail\pw_reset.html.twig:11 - - - email.pw_reset.fallback - Si cela ne fonctionne pas pour vous, allez à <a href="%url%">%url%</a> et entrez les informations suivantes - - - - - Part-DB1\templates\mail\pw_reset.html.twig:16 - Part-DB1\templates\mail\pw_reset.html.twig:16 - - - email.pw_reset.username - Nom d'utilisateur - - - - - Part-DB1\templates\mail\pw_reset.html.twig:19 - Part-DB1\templates\mail\pw_reset.html.twig:19 - - - email.pw_reset.token - Jeton - - - - - Part-DB1\templates\mail\pw_reset.html.twig:24 - Part-DB1\templates\mail\pw_reset.html.twig:24 - - - email.pw_reset.valid_unit %date% - Le jeton de réinitialisation sera valable jusqu'au <i>%date%</i>. - - - - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:18 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:78 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - - - orderdetail.delete - Supprimer - - - - - 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 - Quantité minimale de commande - - - - - 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 - Prix - - - - - 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 - Pour la quantité - - - - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - - - pricedetail.create - Ajouter prix - - - - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - templates\Parts\edit_part_info.html.twig:4 - - - part.edit.title - Éditer le composant - - - - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - templates\Parts\edit_part_info.html.twig:9 - - - part.edit.card_title - Éditer le composant - - - - - 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 - Général - - - - - 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 - Fabricant - - - - - 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 - Avancé - - - - - part.edit.tab.advanced.ipn.commonSectionHeader - Suggestions sans incrément de partie - - - - - part.edit.tab.advanced.ipn.partIncrementHeader - Propositions avec incréments numériques de parties - - - - - part.edit.tab.advanced.ipn.prefix.description.current-increment - Spécification IPN actuelle pour la pièce - - - - - part.edit.tab.advanced.ipn.prefix.description.increment - Prochaine spécification IPN possible basée sur une description identique de la pièce - - - - - part.edit.tab.advanced.ipn.prefix_empty.direct_category - Le préfixe IPN de la catégorie directe est vide, veuillez le spécifier dans la catégorie "%name%" - - - - - part.edit.tab.advanced.ipn.prefix.direct_category - Préfixe IPN de la catégorie directe - - - - - part.edit.tab.advanced.ipn.prefix.direct_category.increment - Préfixe IPN de la catégorie directe et d'un incrément spécifique à la partie - - - - - part.edit.tab.advanced.ipn.prefix.hierarchical.no_increment - Préfixes IPN avec un ordre hiérarchique des catégories des préfixes parents - - - - - part.edit.tab.advanced.ipn.prefix.hierarchical.increment - Préfixes IPN avec un ordre hiérarchique des catégories des préfixes parents et un incrément spécifique à la pièce - - - - - part.edit.tab.advanced.ipn.prefix.not_saved - Créez d'abord une pièce et assignez-la à une catégorie : avec les catégories existantes et leurs propres préfixes IPN, l'identifiant IPN pour la pièce peut être proposé automatiquement - - - - - 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 - - - - - 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 - Fichiers joints - - - - - 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 - Informations pour la commande - - - - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 - - - part.edit.tab.specifications - Caractéristiques - - - - - 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 - Commentaire - - - - - 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 - Créer un nouveau composant - - - - - Part-DB1\templates\Parts\edit\_lots.html.twig:5 - Part-DB1\templates\Parts\edit\_lots.html.twig:5 - - - part_lot.delete - Supprimer - - - - - Part-DB1\templates\Parts\edit\_lots.html.twig:28 - Part-DB1\templates\Parts\edit\_lots.html.twig:28 - - - part_lot.create - Créer un inventaire - - - - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 - - - orderdetail.create - Ajouter un fournisseur - - - - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 - - - pricedetails.edit.delete.confirm - Voulez-vous vraiment supprimer ce prix ? Cela ne peut pas être défait ! - - - - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:62 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:61 - - - orderdetails.edit.delete.confirm - Voulez-vous vraiment supprimer ce fournisseur ? Cela ne peut pas être défait ! - - - - - 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 - Informations détaillées pour - - - - - 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 - - - - - 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 - Commentaire - - - - - Part-DB1\templates\Parts\info\show_part_info.html.twig:64 - - - part.info.specifications - Caractéristiques - - - - - 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 - Fichiers joints - - - - - 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 - Informations de commande - - - - - 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 - Historique - - - - - 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 - Outils - - - - - 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 - Informations complémentaires - - - - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 - - - attachment.name - Nom - - - - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 - - - attachment.attachment_type - Type de fichier joint - - - - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 - - - attachment.file_name - Nom du fichier - - - - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 - - - attachment.file_size - Taille du fichier - - - - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:54 - - - attachment.preview - Aperçu de l'image - - - - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:67 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:50 - - - attachment.download - Téléchargement - - - - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 - new - - - user.creating_user - Utilisateur qui a créé ce composant - - - - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - - - Unknown - Inconnu - - - - - 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 - Accès refusé - - - - - 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 - Utilisateur qui a édité ce composant en dernier - - - - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - - - part.isFavorite - Favoris - - - - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 - - - part.minOrderAmount - Quantité minimale de commande - - - - - 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 - Fabricant - - - - - 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 - Nom - - - - - 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 - Retour à la version actuelle - - - - - 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 - Description - - - - - 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 - Catégorie - - - - - 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 - En stock - - - - - 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 - Stock minimum - - - - - 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 - Empreinte - - - - - 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 - Prix moyen - - - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - - - part.supplier.name - Nom - - - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - - - part.supplier.partnr - Lien/Code cmd. - - - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:28 - Part-DB1\templates\Parts\info\_order_infos.html.twig:28 - - - part.order.minamount - Nombre minimum - - - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:29 - Part-DB1\templates\Parts\info\_order_infos.html.twig:29 - - - part.order.price - Prix - - - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:31 - Part-DB1\templates\Parts\info\_order_infos.html.twig:31 - - - part.order.single_price - Prix unitaire - - - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - - - edit.caption_short - Éditer - - - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - - - delete.caption - Supprimer - - - - - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 - Part-DB1\templates\Parts\info\_part_lots.html.twig:6 - - - part_lots.description - 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 - Emplacement de stockage - - - - - Part-DB1\templates\Parts\info\_part_lots.html.twig:9 - Part-DB1\templates\Parts\info\_part_lots.html.twig:8 - - - part_lots.amount - Quantité - - - - - Part-DB1\templates\Parts\info\_part_lots.html.twig:24 - Part-DB1\templates\Parts\info\_part_lots.html.twig:22 - - - part_lots.location_unknown - Emplacement de stockage inconnu - - - - - Part-DB1\templates\Parts\info\_part_lots.html.twig:31 - Part-DB1\templates\Parts\info\_part_lots.html.twig:29 - - - part_lots.instock_unknown - Quantité inconnue - - - - - Part-DB1\templates\Parts\info\_part_lots.html.twig:40 - Part-DB1\templates\Parts\info\_part_lots.html.twig:38 - - - part_lots.expiration_date - Date d'expiration - - - - - Part-DB1\templates\Parts\info\_part_lots.html.twig:48 - Part-DB1\templates\Parts\info\_part_lots.html.twig:46 - - - part_lots.is_expired - Expiré - - - - - Part-DB1\templates\Parts\info\_part_lots.html.twig:55 - Part-DB1\templates\Parts\info\_part_lots.html.twig:53 - - - part_lots.need_refill - Doit être rempli à nouveau - - - - - Part-DB1\templates\Parts\info\_picture.html.twig:15 - Part-DB1\templates\Parts\info\_picture.html.twig:15 - - - part.info.prev_picture - Image précédente - - - - - Part-DB1\templates\Parts\info\_picture.html.twig:19 - Part-DB1\templates\Parts\info\_picture.html.twig:19 - - - part.info.next_picture - Image suivante - - - - - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - - - part.mass.tooltip - Poids - - - - - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - - - part.needs_review.badge - Révision nécessaire - - - - - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - - - part.favorite.badge - Favoris - - - - - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - - - part.obsolete.badge - N'est plus disponible - - - - - Part-DB1\templates\Parts\info\_specifications.html.twig:10 - - - parameters.extracted_from_description - Automatiquement extrait de la description - - - - - Part-DB1\templates\Parts\info\_specifications.html.twig:15 - - - parameters.auto_extracted_from_comment - Automatiquement extrait du commentaire - - - - - Part-DB1\templates\Parts\info\_tools.html.twig:6 - Part-DB1\templates\Parts\info\_tools.html.twig:4 - templates\Parts\show_part_info.html.twig:125 - - - part.edit.btn - Éditer - - - - - Part-DB1\templates\Parts\info\_tools.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:14 - templates\Parts\show_part_info.html.twig:135 - - - part.clone.btn - Duplication - - - - - Part-DB1\templates\Parts\info\_tools.html.twig:24 - Part-DB1\templates\Parts\lists\_action_bar.html.twig:4 - templates\Parts\show_part_info.html.twig:143 - - - part.create.btn - Créer un nouveau composant - - - - - Part-DB1\templates\Parts\info\_tools.html.twig:31 - Part-DB1\templates\Parts\info\_tools.html.twig:29 - - - part.delete.confirm_title - Voulez-vous vraiment supprimer ce composant ? - - - - - Part-DB1\templates\Parts\info\_tools.html.twig:32 - Part-DB1\templates\Parts\info\_tools.html.twig:30 - - - part.delete.message - Le composant et toutes les informations associées (stocks, fichiers joints, etc.) sont supprimés. Cela ne pourra pas être annulé. - - - - - Part-DB1\templates\Parts\info\_tools.html.twig:39 - Part-DB1\templates\Parts\info\_tools.html.twig:37 - - - part.delete - Supprimer le composant - - - - - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - - - parts_list.all.title - Tous les composants - - - - - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - - - parts_list.category.title - Composants avec catégorie - - - - - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - - - parts_list.footprint.title - Composants avec empreinte - - - - - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - - - parts_list.manufacturer.title - Composants avec fabricant - - - - - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - - - parts_list.search.title - Recherche de composants - - - - - 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 - Composants avec lieu de stockage - - - - - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - - - parts_list.supplier.title - Composants avec fournisseur - - - - - Part-DB1\templates\Parts\lists\tags_list.html.twig:4 - Part-DB1\templates\Parts\lists\tags_list.html.twig:4 - - - parts_list.tags.title - Composants avec tag - - - - - Part-DB1\templates\Parts\lists\_info_card.html.twig:22 - Part-DB1\templates\Parts\lists\_info_card.html.twig:17 - - - entity.info.common.tab - Général - - - - - Part-DB1\templates\Parts\lists\_info_card.html.twig:26 - Part-DB1\templates\Parts\lists\_info_card.html.twig:20 - - - entity.info.statistics.tab - Statistiques - - - - - Part-DB1\templates\Parts\lists\_info_card.html.twig:31 - - - entity.info.attachments.tab - Pièces jointes - - - - - Part-DB1\templates\Parts\lists\_info_card.html.twig:37 - - - entity.info.parameters.tab - Caractéristiques - - - - - Part-DB1\templates\Parts\lists\_info_card.html.twig:54 - Part-DB1\templates\Parts\lists\_info_card.html.twig:30 - - - entity.info.name - Nom - - - - - Part-DB1\templates\Parts\lists\_info_card.html.twig:58 - Part-DB1\templates\Parts\lists\_info_card.html.twig:96 - Part-DB1\templates\Parts\lists\_info_card.html.twig:34 - Part-DB1\templates\Parts\lists\_info_card.html.twig:67 - - - entity.info.parent - Parent - - - - - Part-DB1\templates\Parts\lists\_info_card.html.twig:70 - Part-DB1\templates\Parts\lists\_info_card.html.twig:46 - - - entity.edit.btn - Éditer - - - - - Part-DB1\templates\Parts\lists\_info_card.html.twig:92 - Part-DB1\templates\Parts\lists\_info_card.html.twig:63 - - - entity.info.children_count - Nombre de sous-éléments - - - - - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - - - tfa.check.title - Authentification à deux facteurs requise - - - - - Part-DB1\templates\security\2fa_base_form.html.twig:39 - Part-DB1\templates\security\2fa_base_form.html.twig:39 - - - tfa.code.trusted_pc - Il s'agit d'un ordinateur de confiance (si cette fonction est activée, aucune autre requête à deux facteurs n'est effectuée sur cet ordinateur) - - - - - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - - - login.btn - Connexion - - - - - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:42 - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:40 - - - user.logout - Déconnexion - - - - - Part-DB1\templates\security\2fa_form.html.twig:6 - Part-DB1\templates\security\2fa_form.html.twig:6 - - - tfa.check.code.label - Code d'application de l'authentificateur - - - - - Part-DB1\templates\security\2fa_form.html.twig:10 - Part-DB1\templates\security\2fa_form.html.twig:10 - - - tfa.check.code.help - Entrez le code à 6 chiffres de votre application d'authentification ou l'un de vos codes de secours si l'authentificateur n'est pas disponible. - - - - - Part-DB1\templates\security\login.html.twig:3 - Part-DB1\templates\security\login.html.twig:3 - templates\security\login.html.twig:3 - - - login.title - Connexion - - - - - Part-DB1\templates\security\login.html.twig:7 - Part-DB1\templates\security\login.html.twig:7 - templates\security\login.html.twig:7 - - - login.card_title - Connexion - - - - - Part-DB1\templates\security\login.html.twig:31 - Part-DB1\templates\security\login.html.twig:31 - templates\security\login.html.twig:31 - - - login.username.label - Nom d'utilisateur - - - - - Part-DB1\templates\security\login.html.twig:34 - Part-DB1\templates\security\login.html.twig:34 - templates\security\login.html.twig:34 - - - login.username.placeholder - Nom d'utilisateur - - - - - Part-DB1\templates\security\login.html.twig:38 - Part-DB1\templates\security\login.html.twig:38 - templates\security\login.html.twig:38 - - - login.password.label - Mot de passe - - - - - Part-DB1\templates\security\login.html.twig:40 - Part-DB1\templates\security\login.html.twig:40 - templates\security\login.html.twig:40 - - - login.password.placeholder - Mot de passe - - - - - Part-DB1\templates\security\login.html.twig:50 - Part-DB1\templates\security\login.html.twig:50 - templates\security\login.html.twig:50 - - - login.rememberme - Rester connecté (non recommandé sur les ordinateurs publics) - - - - - Part-DB1\templates\security\login.html.twig:64 - Part-DB1\templates\security\login.html.twig:64 - - - pw_reset.password_forget - Nom d'utilisateur/mot de passe oublié ? - - - - - 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 - Définir un nouveau mot de passe - - - - - 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 - Demander un nouveau mot de passe - - - - - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - - - tfa_u2f.http_warning - Vous accédez à cette page en utilisant la méthode HTTP non sécurisée, donc U2F ne fonctionnera probablement pas (message d'erreur "Bad Request"). Demandez à un administrateur de mettre en place la méthode HTTPS sécurisée si vous souhaitez utiliser des clés de sécurité. - - - - - Part-DB1\templates\security\U2F\u2f_login.html.twig:10 - Part-DB1\templates\security\U2F\u2f_register.html.twig:22 - 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 - Veuillez insérer la clé de sécurité et appuyer sur le bouton ! - - - - - 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 - Ajouter une clé de sécurité - - - - - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - - - tfa_u2f.explanation - À l'aide d'une clé de sécurité compatible U2F/FIDO (par exemple YubiKey ou NitroKey), une authentification à deux facteurs sûre et pratique peut être obtenue. Les clés de sécurité peuvent être enregistrées ici, et si une vérification à deux facteurs est nécessaire, il suffit d'insérer la clé via USB ou de la taper sur le dispositif via NFC. - - - - - 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 - Pour garantir l'accès même en cas de perte de la clé, il est recommandé d'enregistrer une deuxième clé en guise de sauvegarde et de la conserver dans un endroit sûr ! - - - - - 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 - Afficher le nom de la clé (par exemple, sauvegarde) - - - - - 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 - Ajouter une clé de sécurité - - - - - 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 - Retour aux paramètres - - - - - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 - new - - - statistics.title - Statistiques - - - - - Part-DB1\templates\Statistics\statistics.html.twig:14 - Part-DB1\templates\Statistics\statistics.html.twig:14 - new - - - statistics.parts - Composants - - - - - Part-DB1\templates\Statistics\statistics.html.twig:19 - Part-DB1\templates\Statistics\statistics.html.twig:19 - new - - - statistics.data_structures - Structures des données - - - - - Part-DB1\templates\Statistics\statistics.html.twig:24 - Part-DB1\templates\Statistics\statistics.html.twig:24 - new - - - statistics.attachments - Fichiers joints - - - - - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 - new - - - statistics.property - Propriété - - - - - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 - new - - - statistics.value - Valeur - - - - - Part-DB1\templates\Statistics\statistics.html.twig:40 - Part-DB1\templates\Statistics\statistics.html.twig:40 - new - - - statistics.distinct_parts_count - Nombre de composants distincts - - - - - Part-DB1\templates\Statistics\statistics.html.twig:44 - Part-DB1\templates\Statistics\statistics.html.twig:44 - new - - - statistics.parts_instock_sum - Somme de tout les composants en stock - - - - - Part-DB1\templates\Statistics\statistics.html.twig:48 - Part-DB1\templates\Statistics\statistics.html.twig:48 - new - - - statistics.parts_with_price - Nombre de composants avec information de prix - - - - - Part-DB1\templates\Statistics\statistics.html.twig:65 - Part-DB1\templates\Statistics\statistics.html.twig:65 - new - - - statistics.categories_count - Nombre de catégories - - - - - Part-DB1\templates\Statistics\statistics.html.twig:69 - Part-DB1\templates\Statistics\statistics.html.twig:69 - new - - - statistics.footprints_count - Nombre d'empreintes - - - - - Part-DB1\templates\Statistics\statistics.html.twig:73 - Part-DB1\templates\Statistics\statistics.html.twig:73 - new - - - statistics.manufacturers_count - Nombre de fabricants - - - - - Part-DB1\templates\Statistics\statistics.html.twig:77 - Part-DB1\templates\Statistics\statistics.html.twig:77 - new - - - statistics.storelocations_count - Nombre d'emplacements de stockage - - - - - Part-DB1\templates\Statistics\statistics.html.twig:81 - Part-DB1\templates\Statistics\statistics.html.twig:81 - new - - - statistics.suppliers_count - Nombre de fournisseurs - - - - - Part-DB1\templates\Statistics\statistics.html.twig:85 - Part-DB1\templates\Statistics\statistics.html.twig:85 - new - - - statistics.currencies_count - Nombre de devises - - - - - Part-DB1\templates\Statistics\statistics.html.twig:89 - Part-DB1\templates\Statistics\statistics.html.twig:89 - new - - - statistics.measurement_units_count - Nombre d'unités de mesure - - - - - Part-DB1\templates\Statistics\statistics.html.twig:93 - Part-DB1\templates\Statistics\statistics.html.twig:93 - new - - - statistics.devices_count - Nombre de projets - - - - - Part-DB1\templates\Statistics\statistics.html.twig:110 - Part-DB1\templates\Statistics\statistics.html.twig:110 - new - - - statistics.attachment_types_count - Nombre de types de fichiers joints - - - - - Part-DB1\templates\Statistics\statistics.html.twig:114 - Part-DB1\templates\Statistics\statistics.html.twig:114 - new - - - statistics.all_attachments_count - Total des pièces jointes - - - - - Part-DB1\templates\Statistics\statistics.html.twig:118 - Part-DB1\templates\Statistics\statistics.html.twig:118 - new - - - statistics.user_uploaded_attachments_count - Nombre de fichiers joints envoyées - - - - - Part-DB1\templates\Statistics\statistics.html.twig:122 - Part-DB1\templates\Statistics\statistics.html.twig:122 - new - - - statistics.private_attachments_count - Nombre de fichiers joints privés - - - - - Part-DB1\templates\Statistics\statistics.html.twig:126 - Part-DB1\templates\Statistics\statistics.html.twig:126 - new - - - statistics.external_attachments_count - Nombre de fichiers joints externes - - - - - 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 - Codes de secours - - - - - Part-DB1\templates\Users\backup_codes.html.twig:12 - Part-DB1\templates\Users\backup_codes.html.twig:12 - - - tfa_backup.codes.explanation - Imprimez ces codes et conservez-les dans un endroit sûr ! - - - - - Part-DB1\templates\Users\backup_codes.html.twig:13 - Part-DB1\templates\Users\backup_codes.html.twig:13 - - - tfa_backup.codes.help - Si vous n'avez plus accès à votre appareil avec l'application d'authentification (smartphone perdu, perte de données, etc.), vous pouvez utiliser un de ces codes pour accéder à votre compte et éventuellement configurer une nouvelle application d'authentification. Chacun de ces codes peut être utilisé une fois, il est recommandé de supprimer les codes utilisés. Toute personne ayant accès à ces codes peut potentiellement accéder à votre compte, alors gardez-les en lieu sûr. - - - - - Part-DB1\templates\Users\backup_codes.html.twig:16 - Part-DB1\templates\Users\backup_codes.html.twig:16 - - - tfa_backup.username - Nom d'utilisateur - - - - - 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 générée le %date% - - - - - Part-DB1\templates\Users\backup_codes.html.twig:32 - Part-DB1\templates\Users\backup_codes.html.twig:32 - - - tfa_backup.codes.print - Imprimer - - - - - Part-DB1\templates\Users\backup_codes.html.twig:35 - Part-DB1\templates\Users\backup_codes.html.twig:35 - - - tfa_backup.codes.copy_clipboard - Copier dans le presse-papier - - - - - 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 - Informations sur l'utilisateur - - - - - 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 - Prénom - - - - - 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 - Nom - - - - - 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 - Email - - - - - 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 - Département - - - - - 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 - Nom d'utilisateur - - - - - 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 - Groupe - - - - - Part-DB1\templates\Users\user_info.html.twig:67 - Part-DB1\templates\Users\user_info.html.twig:67 - - - user.permissions - Autorisations - - - - - 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 - Paramètres utilisateur - - - - - 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 - Données personnelles - - - - - 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 - Configuration - - - - - 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 - Changer de mot de passe - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:6 - - - user.settings.2fa_settings - Authentification à deux facteurs - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:13 - Part-DB1\templates\Users\_2fa_settings.html.twig:13 - - - tfa.settings.google.tab - Application d'authentification - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:17 - - - tfa.settings.bakup.tab - Codes de secours - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:21 - Part-DB1\templates\Users\_2fa_settings.html.twig:21 - - - tfa.settings.u2f.tab - Clés de sécurité (U2F) - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:25 - Part-DB1\templates\Users\_2fa_settings.html.twig:25 - - - tfa.settings.trustedDevices.tab - Appareils de confiance - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - - - tfa_google.disable.confirm_title - Voulez-vous vraiment désactiver l'application d'authentification ? - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - - - tfa_google.disable.confirm_message - Si vous désactivez l'application d'authentification, tous les codes de sauvegarde seront supprimés, vous devrez donc peut-être les réimprimer.<br> -Notez également que sans authentification à deux facteurs, votre compte n'est pas aussi bien protégé ! - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:39 - Part-DB1\templates\Users\_2fa_settings.html.twig:39 - - - tfa_google.disabled_message - Application d'authentification désactivée - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:48 - Part-DB1\templates\Users\_2fa_settings.html.twig:48 - - - tfa_google.step.download - Télécharger une application d'authentification (par exemple <a class="link-external" target="_blank" href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2">Authentificateur Google</a> ou <a class="link-external" target="_blank" href="https://play.google.com/store/apps/details?id=org.fedorahosted.freeotp">Authentificateur FreeOTP</a>) - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:49 - Part-DB1\templates\Users\_2fa_settings.html.twig:49 - - - tfa_google.step.scan - Scannez le QR code adjacent avec l'application ou saisissez les données manuellement - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:50 - Part-DB1\templates\Users\_2fa_settings.html.twig:50 - - - tfa_google.step.input_code - Entrez le code généré dans le champ ci-dessous et confirmez - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:51 - Part-DB1\templates\Users\_2fa_settings.html.twig:51 - - - tfa_google.step.download_backup - Imprimez vos codes de secours et conservez-les dans un endroit sûr - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:58 - Part-DB1\templates\Users\_2fa_settings.html.twig:58 - - - tfa_google.manual_setup - Configuration manuelle - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:62 - Part-DB1\templates\Users\_2fa_settings.html.twig:62 - - - tfa_google.manual_setup.type - Type - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:63 - Part-DB1\templates\Users\_2fa_settings.html.twig:63 - - - tfa_google.manual_setup.username - Nom d'utilisateur - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:64 - Part-DB1\templates\Users\_2fa_settings.html.twig:64 - - - tfa_google.manual_setup.secret - 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 - Nombre de caractères - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:74 - Part-DB1\templates\Users\_2fa_settings.html.twig:74 - - - tfa_google.enabled_message - Application d'authentification activée - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:83 - Part-DB1\templates\Users\_2fa_settings.html.twig:83 - - - tfa_backup.disabled - Codes de secours désactivés. Configurez l'application d'authentification pour activer les codes de secours. - - - - - 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 - Grâce à ces codes de secours, vous pouvez accéder à votre compte même si vous perdez l'appareil avec l'application d'authentification. Imprimez les codes et conservez-les dans un endroit sûr. - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - - - tfa_backup.reset_codes.confirm_title - Etes vous sûr de vouloir réinitialiser les codes ? - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - - - tfa_backup.reset_codes.confirm_message - Cela permettra de supprimer tous les codes précédents et de générer un ensemble de nouveaux codes. Cela ne peut pas être annulé. N'oubliez pas d'imprimer les nouveaux codes et de les conserver dans un endroit sûr ! - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:91 - Part-DB1\templates\Users\_2fa_settings.html.twig:91 - - - tfa_backup.enabled - Codes de secours activés - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:99 - Part-DB1\templates\Users\_2fa_settings.html.twig:99 - - - tfa_backup.show_codes - Afficher les codes de secours - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:114 - Part-DB1\templates\Users\_2fa_settings.html.twig:114 - - - tfa_u2f.table_caption - Clés de sécurité enregistrées - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:115 - Part-DB1\templates\Users\_2fa_settings.html.twig:115 - - - tfa_u2f.delete_u2f.confirm_title - Etes vous sûr de vouloir supprimer cette clé de sécurité ? - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:116 - Part-DB1\templates\Users\_2fa_settings.html.twig:116 - - - tfa_u2f.delete_u2f.confirm_message - Si vous supprimez cette clé, il ne sera plus possible de se connecter avec cette clé. S'il ne reste aucune clé de sécurité, l'authentification à deux facteurs sera désactivée. - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:123 - Part-DB1\templates\Users\_2fa_settings.html.twig:123 - - - tfa_u2f.keys.name - Nom de la clé - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:124 - Part-DB1\templates\Users\_2fa_settings.html.twig:124 - - - tfa_u2f.keys.added_date - Date d'enregistrement - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:134 - Part-DB1\templates\Users\_2fa_settings.html.twig:134 - - - tfa_u2f.key_delete - Supprimer la clé - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:141 - Part-DB1\templates\Users\_2fa_settings.html.twig:141 - - - tfa_u2f.no_keys_registered - Aucune clé de sécurité enregistrée - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:144 - Part-DB1\templates\Users\_2fa_settings.html.twig:144 - - - tfa_u2f.add_new_key - Enregistrer une nouvelle clé de sécurité - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:148 - Part-DB1\templates\Users\_2fa_settings.html.twig:148 - - - tfa_trustedDevices.explanation - Lors de la vérification du deuxième facteur, l'ordinateur actuel peut être marqué comme étant digne de confiance, de sorte qu'il n'est plus nécessaire de procéder à des vérifications à deux facteurs sur cet ordinateur. -Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fiable, vous pouvez réinitialiser le statut de <i>tous</i> les ordinateurs ici. - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:149 - Part-DB1\templates\Users\_2fa_settings.html.twig:149 - - - tfa_trustedDevices.invalidate.confirm_title - Etes vous sûr de vouloir supprimer tous les ordinateurs de confiance ? - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:150 - Part-DB1\templates\Users\_2fa_settings.html.twig:150 - - - tfa_trustedDevices.invalidate.confirm_message - Vous devrez à nouveau procéder à une authentification à deux facteurs sur tous les ordinateurs. Assurez-vous d'avoir votre appareil à deux facteurs à portée de main. - - - - - Part-DB1\templates\Users\_2fa_settings.html.twig:154 - Part-DB1\templates\Users\_2fa_settings.html.twig:154 - - - tfa_trustedDevices.invalidate.btn - Supprimer tous les dispositifs de confiance - - - - - Part-DB1\templates\_navbar.html.twig:4 - Part-DB1\templates\_navbar.html.twig:4 - templates\base.html.twig:29 - - - sidebar.toggle - Activer/désactiver la barre latérale - - - - - Part-DB1\templates\_navbar.html.twig:22 - - - navbar.scanner.link - Scanner - - - - - Part-DB1\templates\_navbar.html.twig:38 - Part-DB1\templates\_navbar.html.twig:36 - templates\base.html.twig:97 - - - user.loggedin.label - Connecté en tant que - - - - - Part-DB1\templates\_navbar.html.twig:44 - Part-DB1\templates\_navbar.html.twig:42 - templates\base.html.twig:103 - - - user.login - Connexion - - - - - Part-DB1\templates\_navbar.html.twig:50 - Part-DB1\templates\_navbar.html.twig:48 - - - ui.toggle_darkmode - Darkmode - - - - - Part-DB1\templates\_navbar.html.twig:54 - Part-DB1\src\Form\UserSettingsType.php:97 - Part-DB1\templates\_navbar.html.twig:52 - Part-DB1\src\Form\UserSettingsType.php:97 - templates\base.html.twig:106 - src\Form\UserSettingsType.php:44 - - - user.language_select - Langue - - - - - Part-DB1\templates\_navbar_search.html.twig:4 - Part-DB1\templates\_navbar_search.html.twig:4 - templates\base.html.twig:49 - - - search.options.label - Options de recherche - - - - - Part-DB1\templates\_navbar_search.html.twig:23 - - - tags.label - Tags - - - - - Part-DB1\templates\_navbar_search.html.twig:27 - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - templates\base.html.twig:60 - templates\Parts\show_part_info.html.twig:36 - src\Form\PartType.php:77 - - - storelocation.label - Emplacement de stockage - - - - - Part-DB1\templates\_navbar_search.html.twig:36 - Part-DB1\templates\_navbar_search.html.twig:31 - templates\base.html.twig:65 - - - ordernumber.label.short - Codecmd. - - - - - Part-DB1\templates\_navbar_search.html.twig:40 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - Part-DB1\templates\_navbar_search.html.twig:35 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - templates\base.html.twig:67 - - - supplier.label - Fournisseur - - - - - Part-DB1\templates\_navbar_search.html.twig:57 - Part-DB1\templates\_navbar_search.html.twig:52 - templates\base.html.twig:75 - - - search.deactivateBarcode - Désa. Code barres - - - - - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_navbar_search.html.twig:56 - templates\base.html.twig:77 - - - search.regexmatching - Reg.Ex. Correspondance - - - - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - - - search.submit - Rechercher! - - - - - Part-DB1\templates\_sidebar.html.twig:2 - Part-DB1\templates\_sidebar.html.twig:2 - templates\base.html.twig:165 - templates\base.html.twig:192 - templates\base.html.twig:220 - - - actions - Actions - - - - - Part-DB1\templates\_sidebar.html.twig:6 - Part-DB1\templates\_sidebar.html.twig:6 - templates\base.html.twig:169 - templates\base.html.twig:196 - templates\base.html.twig:224 - - - datasource - Source de données - - - - - Part-DB1\templates\_sidebar.html.twig:10 - Part-DB1\templates\_sidebar.html.twig:10 - templates\base.html.twig:173 - templates\base.html.twig:200 - templates\base.html.twig:228 - - - manufacturer.labelp - Fabricants - - - - - Part-DB1\templates\_sidebar.html.twig:11 - Part-DB1\templates\_sidebar.html.twig:11 - templates\base.html.twig:174 - templates\base.html.twig:201 - templates\base.html.twig:229 - - - supplier.labelp - Fournisseurs - - - - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:213 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:293 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:293 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:181 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:243 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:268 - - - attachment.download_failed - Le téléchargement du fichier joint a échoué ! - - - - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:222 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:190 - - - entity.edit_flash - Changements sauvegardés avec succès. - - - - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:231 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:196 - - - entity.edit_flash.invalid - Les changements n'ont pas pu être sauvegardés ! Veuillez vérifier vos données ! - - - - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:302 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:252 - - - entity.created_flash - Élément créé avec succès ! - - - - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:308 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:258 - - - entity.created_flash.invalid - L'élément n'a pas pu être créé ! Vérifiez vos données ! - - - - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:399 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:352 - src\Controller\BaseAdminController.php:154 - - - attachment_type.deleted - Élément supprimé ! - - - - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:401 - Part-DB1\src\Controller\UserController.php:109 - Part-DB1\src\Controller\UserSettingsController.php:159 - Part-DB1\src\Controller\UserSettingsController.php:193 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:354 - Part-DB1\src\Controller\UserController.php:101 - Part-DB1\src\Controller\UserSettingsController.php:150 - Part-DB1\src\Controller\UserSettingsController.php:182 - - - csfr_invalid - Le jeton RFTS n'est pas valable ! Rechargez cette page ou contactez un administrateur si le problème persiste ! - - - - - Part-DB1\src\Controller\LabelController.php:125 - - - label_generator.no_entities_found - Aucune entité correspondant à la gamme trouvée. - - - - - Part-DB1\src\Controller\LogController.php:149 - Part-DB1\src\Controller\LogController.php:154 - new - - - log.undo.target_not_found - L'élément ciblé n'a pas pu être trouvé dans la base de données ! - - - - - Part-DB1\src\Controller\LogController.php:156 - Part-DB1\src\Controller\LogController.php:160 - new - - - log.undo.revert_success - Rétablissement réussi. - - - - - Part-DB1\src\Controller\LogController.php:176 - Part-DB1\src\Controller\LogController.php:180 - new - - - log.undo.element_undelete_success - Élément restauré avec succès. - - - - - Part-DB1\src\Controller\LogController.php:178 - Part-DB1\src\Controller\LogController.php:182 - new - - - log.undo.element_element_already_undeleted - L'élément a déjà été restauré ! - - - - - Part-DB1\src\Controller\LogController.php:185 - Part-DB1\src\Controller\LogController.php:189 - new - - - log.undo.element_delete_success - L'élément a été supprimé avec succès. - - - - - Part-DB1\src\Controller\LogController.php:187 - Part-DB1\src\Controller\LogController.php:191 - new - - - log.undo.element.element_already_delted - L'élément a déjà été supprimé ! - - - - - Part-DB1\src\Controller\LogController.php:194 - Part-DB1\src\Controller\LogController.php:198 - new - - - log.undo.element_change_undone - Annulation de la modification de l'élément - - - - - Part-DB1\src\Controller\LogController.php:196 - Part-DB1\src\Controller\LogController.php:200 - new - - - log.undo.do_undelete_before - Vous devez supprimer l'élément avant de pouvoir annuler ce changement ! - - - - - Part-DB1\src\Controller\LogController.php:199 - Part-DB1\src\Controller\LogController.php:203 - new - - - log.undo.log_type_invalid - Cette entrée de journal ne peut pas être annulée ! - - - - - Part-DB1\src\Controller\PartController.php:182 - Part-DB1\src\Controller\PartController.php:182 - src\Controller\PartController.php:80 - - - part.edited_flash - Changements sauvegardés ! - - - - - Part-DB1\src\Controller\PartController.php:186 - Part-DB1\src\Controller\PartController.php:186 - - - part.edited_flash.invalid - Erreur lors de l'enregistrement : Vérifiez vos données ! - - - - - Part-DB1\src\Controller\PartController.php:216 - Part-DB1\src\Controller\PartController.php:219 - - - part.deleted - Composant supprimé avec succès. - - - - - Part-DB1\src\Controller\PartController.php:302 - Part-DB1\src\Controller\PartController.php:277 - Part-DB1\src\Controller\PartController.php:317 - src\Controller\PartController.php:113 - src\Controller\PartController.php:142 - - - part.created_flash - Composants créés avec succès ! - - - - - Part-DB1\src\Controller\PartController.php:308 - Part-DB1\src\Controller\PartController.php:283 - - - part.created_flash.invalid - Erreur lors de la création : Vérifiez vos données ! - - - - - Part-DB1\src\Controller\ScanController.php:68 - Part-DB1\src\Controller\ScanController.php:90 - - - scan.qr_not_found - Aucun élément trouvé pour le code-barres donné. - - - - - Part-DB1\src\Controller\ScanController.php:71 - - - scan.format_unknown - Format inconnu ! - - - - - Part-DB1\src\Controller\ScanController.php:86 - - - scan.qr_success - Élément trouvé. - - - - - Part-DB1\src\Controller\SecurityController.php:114 - Part-DB1\src\Controller\SecurityController.php:109 - - - pw_reset.user_or_email - Nom d'utilisateur / Email - - - - - Part-DB1\src\Controller\SecurityController.php:131 - Part-DB1\src\Controller\SecurityController.php:126 - - - pw_reset.request.success - Demande de mot de passe réussie ! Consultez vos e-mails pour plus d'informations. - - - - - Part-DB1\src\Controller\SecurityController.php:162 - Part-DB1\src\Controller\SecurityController.php:160 - - - pw_reset.username - Nom d'utilisateur - - - - - Part-DB1\src\Controller\SecurityController.php:165 - Part-DB1\src\Controller\SecurityController.php:163 - - - pw_reset.token - Jeton - - - - - Part-DB1\src\Controller\SecurityController.php:194 - Part-DB1\src\Controller\SecurityController.php:192 - - - pw_reset.new_pw.error - Nom d'utilisateur ou jeton invalide ! Veuillez vérifier vos données. - - - - - Part-DB1\src\Controller\SecurityController.php:196 - Part-DB1\src\Controller\SecurityController.php:194 - - - pw_reset.new_pw.success - Le mot de passe a été réinitialisé avec succès. Vous pouvez maintenant vous connecter avec le nouveau mot de passe. - - - - - Part-DB1\src\Controller\UserController.php:107 - Part-DB1\src\Controller\UserController.php:99 - - - user.edit.reset_success - Toutes les méthodes d'authentification à deux facteurs ont été désactivées avec succès. - - - - - Part-DB1\src\Controller\UserSettingsController.php:101 - Part-DB1\src\Controller\UserSettingsController.php:92 - - - tfa_backup.no_codes_enabled - Aucun code de secours n'est activé ! - - - - - Part-DB1\src\Controller\UserSettingsController.php:138 - Part-DB1\src\Controller\UserSettingsController.php:132 - - - tfa_u2f.u2f_delete.not_existing - Il n'y a pas de clé de sécurité avec cet ID ! - - - - - Part-DB1\src\Controller\UserSettingsController.php:145 - Part-DB1\src\Controller\UserSettingsController.php:139 - - - tfa_u2f.u2f_delete.access_denied - Vous ne pouvez pas supprimer les clés de sécurité des autres utilisateurs ! - - - - - Part-DB1\src\Controller\UserSettingsController.php:153 - Part-DB1\src\Controller\UserSettingsController.php:147 - - - tfa.u2f.u2f_delete.success - Clé de sécurité retirée avec succès. - - - - - Part-DB1\src\Controller\UserSettingsController.php:188 - Part-DB1\src\Controller\UserSettingsController.php:180 - - - tfa_trustedDevice.invalidate.success - Les appareils de confiance ont été réinitialisés avec succès. - - - - - Part-DB1\src\Controller\UserSettingsController.php:235 - Part-DB1\src\Controller\UserSettingsController.php:226 - src\Controller\UserController.php:98 - - - user.settings.saved_flash - Paramètres sauvegardés ! - - - - - Part-DB1\src\Controller\UserSettingsController.php:297 - Part-DB1\src\Controller\UserSettingsController.php:288 - src\Controller\UserController.php:130 - - - user.settings.pw_changed_flash - Mot de passe changé ! - - - - - Part-DB1\src\Controller\UserSettingsController.php:317 - Part-DB1\src\Controller\UserSettingsController.php:306 - - - user.settings.2fa.google.activated - L'application d'authentification a été activée avec succès. - - - - - Part-DB1\src\Controller\UserSettingsController.php:328 - Part-DB1\src\Controller\UserSettingsController.php:315 - - - user.settings.2fa.google.disabled - L'application d'authentification a été désactivée avec succès. - - - - - Part-DB1\src\Controller\UserSettingsController.php:346 - Part-DB1\src\Controller\UserSettingsController.php:332 - - - user.settings.2fa.backup_codes.regenerated - De nouveaux codes de secours ont été générés avec succès. - - - - - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - - - attachment.table.filename - Nom du fichier - - - - - Part-DB1\src\DataTables\AttachmentDataTable.php:153 - Part-DB1\src\DataTables\AttachmentDataTable.php:153 - - - attachment.table.filesize - Taille du fichier - - - - - 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 - Vrai - - - - - 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 - Faux - - - - - Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:128 - Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:119 - - - log.target_deleted - Cible supprimée. - - - - - Part-DB1\src\DataTables\Column\RevertLogColumn.php:57 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:60 - new - - - log.undo.undelete - Annuler la suppression - - - - - Part-DB1\src\DataTables\Column\RevertLogColumn.php:63 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:66 - new - - - log.undo.undo - Annuler la modification - - - - - Part-DB1\src\DataTables\Column\RevertLogColumn.php:83 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:86 - new - - - log.undo.revert - Restaurer à cette date - - - - - 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 - Horodatage - - - - - Part-DB1\src\DataTables\LogDataTable.php:183 - Part-DB1\src\DataTables\LogDataTable.php:171 - - - log.type - Type - - - - - Part-DB1\src\DataTables\LogDataTable.php:191 - Part-DB1\src\DataTables\LogDataTable.php:179 - - - log.level - Niveau - - - - - Part-DB1\src\DataTables\LogDataTable.php:200 - Part-DB1\src\DataTables\LogDataTable.php:188 - - - log.user - Utilisateur - - - - - Part-DB1\src\DataTables\LogDataTable.php:213 - Part-DB1\src\DataTables\LogDataTable.php:201 - - - log.target_type - Type de cible - - - - - Part-DB1\src\DataTables\LogDataTable.php:226 - Part-DB1\src\DataTables\LogDataTable.php:214 - - - log.target - Cible - - - - - Part-DB1\src\DataTables\LogDataTable.php:231 - Part-DB1\src\DataTables\LogDataTable.php:218 - new - - - log.extra - Extra - - - - - Part-DB1\src\DataTables\PartsDataTable.php:168 - Part-DB1\src\DataTables\PartsDataTable.php:116 - - - part.table.name - Nom - - - - - 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 - Description - - - - - Part-DB1\src\DataTables\PartsDataTable.php:185 - Part-DB1\src\DataTables\PartsDataTable.php:133 - - - part.table.category - Catégorie - - - - - Part-DB1\src\DataTables\PartsDataTable.php:190 - Part-DB1\src\DataTables\PartsDataTable.php:138 - - - part.table.footprint - Empreinte - - - - - Part-DB1\src\DataTables\PartsDataTable.php:194 - Part-DB1\src\DataTables\PartsDataTable.php:142 - - - part.table.manufacturer - Fabricant - - - - - Part-DB1\src\DataTables\PartsDataTable.php:197 - Part-DB1\src\DataTables\PartsDataTable.php:145 - - - part.table.storeLocations - Emplacement de stockage - - - - - Part-DB1\src\DataTables\PartsDataTable.php:216 - Part-DB1\src\DataTables\PartsDataTable.php:164 - - - part.table.amount - Quantité - - - - - Part-DB1\src\DataTables\PartsDataTable.php:224 - Part-DB1\src\DataTables\PartsDataTable.php:172 - - - part.table.minamount - Quantité min. - - - - - Part-DB1\src\DataTables\PartsDataTable.php:232 - Part-DB1\src\DataTables\PartsDataTable.php:180 - - - part.table.partUnit - Unité de mesure - - - - - part.table.partCustomState - État personnalisé de la pièce - - - - - Part-DB1\src\DataTables\PartsDataTable.php:236 - Part-DB1\src\DataTables\PartsDataTable.php:184 - - - part.table.addedDate - Créé le - - - - - Part-DB1\src\DataTables\PartsDataTable.php:240 - Part-DB1\src\DataTables\PartsDataTable.php:188 - - - part.table.lastModified - Dernière modification - - - - - Part-DB1\src\DataTables\PartsDataTable.php:244 - Part-DB1\src\DataTables\PartsDataTable.php:192 - - - part.table.needsReview - Révision nécessaire - - - - - Part-DB1\src\DataTables\PartsDataTable.php:251 - Part-DB1\src\DataTables\PartsDataTable.php:199 - - - part.table.favorite - Favoris - - - - - Part-DB1\src\DataTables\PartsDataTable.php:258 - Part-DB1\src\DataTables\PartsDataTable.php:206 - - - part.table.manufacturingStatus - État - - - - - 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 - Inconnu - - - - - 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 - Annoncé - - - - - 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 - Actif - - - - - 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 - Non recommandé pour les nouvelles conceptions - - - - - 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 - Fin de vie - - - - - 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 - Arrêtés - - - - - 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 - Poids - - - - - Part-DB1\src\DataTables\PartsDataTable.php:279 - Part-DB1\src\DataTables\PartsDataTable.php:227 - - - part.table.tags - Tags - - - - - Part-DB1\src\DataTables\PartsDataTable.php:283 - Part-DB1\src\DataTables\PartsDataTable.php:231 - - - part.table.attachments - Fichiers joints - - - - - Part-DB1\src\EventSubscriber\UserSystem\LoginSuccessSubscriber.php:82 - Part-DB1\src\EventSubscriber\LoginSuccessListener.php:82 - - - flash.login_successful - Connexion réussie. - - - - - 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 - Si cette option est activée, l'ensemble du processus est interrompu si des données non valides sont détectées. Si cette option n'est pas active, les entrées non valides sont ignorées et une tentative est faite pour importer les autres entrées. - - - - - Part-DB1\src\Form\AdminPages\ImportType.php:86 - Part-DB1\src\Form\AdminPages\ImportType.php:86 - src\Form\ImportType.php:70 - - - import.csv_separator - Séparateur CSV - - - - - Part-DB1\src\Form\AdminPages\ImportType.php:93 - Part-DB1\src\Form\AdminPages\ImportType.php:93 - src\Form\ImportType.php:72 - - - parent.label - Élément parent - - - - - Part-DB1\src\Form\AdminPages\ImportType.php:101 - Part-DB1\src\Form\AdminPages\ImportType.php:101 - src\Form\ImportType.php:75 - - - import.file - Fichier - - - - - Part-DB1\src\Form\AdminPages\ImportType.php:111 - Part-DB1\src\Form\AdminPages\ImportType.php:111 - src\Form\ImportType.php:78 - - - import.preserve_children - Importer également des sous-éléments - - - - - 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 - Interrompre sur donnée invalide - - - - - Part-DB1\src\Form\AdminPages\ImportType.php:132 - Part-DB1\src\Form\AdminPages\ImportType.php:132 - src\Form\ImportType.php:85 - - - import.btn - Importer - - - - - Part-DB1\src\Form\AttachmentFormType.php:113 - Part-DB1\src\Form\AttachmentFormType.php:109 - - - attachment.edit.secure_file.help - Un fichier joint marqué comme étant privé ne peut être consulté que par un utilisateur connecté qui a l'autorisation appropriée. Si cette option est activée, aucune miniature n'est générée et l'accès au fichier est plus lent. - - - - - Part-DB1\src\Form\AttachmentFormType.php:127 - Part-DB1\src\Form\AttachmentFormType.php:123 - - - attachment.edit.url.help - Il est possible de saisir ici soit l'URL d'un fichier externe, soit un mot clé pour rechercher les ressources intégrées (par exemple les empreintes). - - - - - Part-DB1\src\Form\AttachmentFormType.php:82 - Part-DB1\src\Form\AttachmentFormType.php:79 - - - attachment.edit.name - Nom - - - - - Part-DB1\src\Form\AttachmentFormType.php:85 - Part-DB1\src\Form\AttachmentFormType.php:82 - - - attachment.edit.attachment_type - Type de fichier joint - - - - - Part-DB1\src\Form\AttachmentFormType.php:94 - Part-DB1\src\Form\AttachmentFormType.php:91 - - - attachment.edit.show_in_table - Voir dans le tableau - - - - - Part-DB1\src\Form\AttachmentFormType.php:105 - Part-DB1\src\Form\AttachmentFormType.php:102 - - - attachment.edit.secure_file - Fichier joint privé - - - - - 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 - Télécharger un fichier externe - - - - - Part-DB1\src\Form\AttachmentFormType.php:146 - Part-DB1\src\Form\AttachmentFormType.php:142 - - - attachment.edit.file - Télécharger le fichier - - - - - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:86 - - - part.label - Composant - - - - - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:87 - - - part_lot.label - Lot de composant - - - - - Part-DB1\src\Form\LabelOptionsType.php:78 - - - label_options.barcode_type.none - Aucun - - - - - Part-DB1\src\Form\LabelOptionsType.php:78 - - - label_options.barcode_type.qr - QR Code (recommandé) - - - - - Part-DB1\src\Form\LabelOptionsType.php:78 - - - label_options.barcode_type.code128 - Code 128 (recommandé) - - - - - Part-DB1\src\Form\LabelOptionsType.php:78 - - - label_options.barcode_type.code39 - Code 39 (recommandé) - - - - - Part-DB1\src\Form\LabelOptionsType.php:78 - - - label_options.barcode_type.code93 - Code 93 - - - - - Part-DB1\src\Form\LabelOptionsType.php:78 - - - label_options.barcode_type.datamatrix - Datamatrix - - - - - Part-DB1\src\Form\LabelOptionsType.php:122 - - - label_options.lines_mode.html - Placeholders - - - - - 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 - Si vous sélectionnez Twig ici, le champ de contenu est interprété comme un modèle Twig. Voir <a href="https://twig.symfony.com/doc/3.x/templates.html">Documentation de Twig</a> et <a href="https://github.com/Part-DB/Part-DB-symfony/wiki/Labels#twig-mode">Wiki</a> pour plus d'informations. - - - - - Part-DB1\src\Form\LabelOptionsType.php:47 - - - label_options.page_size.label - Taille de l'étiquette - - - - - Part-DB1\src\Form\LabelOptionsType.php:66 - - - label_options.supported_elements.label - Type de cible - - - - - Part-DB1\src\Form\LabelOptionsType.php:75 - - - label_options.barcode_type.label - Code barre - - - - - Part-DB1\src\Form\LabelOptionsType.php:102 - - - label_profile.lines.label - Contenu - - - - - Part-DB1\src\Form\LabelOptionsType.php:111 - - - label_options.additional_css.label - Styles supplémentaires (CSS) - - - - - Part-DB1\src\Form\LabelOptionsType.php:120 - - - label_options.lines_mode.label - Parser mode - - - - - Part-DB1\src\Form\LabelOptionsType.php:51 - - - label_options.width.placeholder - Largeur - - - - - Part-DB1\src\Form\LabelOptionsType.php:60 - - - label_options.height.placeholder - Hauteur - - - - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:49 - - - label_generator.target_id.range_hint - Vous pouvez spécifier ici plusieurs ID (par exemple 1,2,3) et/ou une plage (1-3) pour générer des étiquettes pour plusieurs éléments à la fois. - - - - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:46 - - - label_generator.target_id.label - ID des cibles - - - - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:59 - - - label_generator.update - Actualisation - - - - - Part-DB1\src\Form\LabelSystem\ScanDialogType.php:36 - - - scan_dialog.input - Saisie - - - - - Part-DB1\src\Form\LabelSystem\ScanDialogType.php:44 - - - scan_dialog.submit - Soumettre - - - - - Part-DB1\src\Form\ParameterType.php:41 - - - parameters.name.placeholder - ex. Gain de courant DC - - - - - Part-DB1\src\Form\ParameterType.php:50 - - - parameters.symbol.placeholder - ex. h_{FE} - - - - - Part-DB1\src\Form\ParameterType.php:60 - - - parameters.text.placeholder - ex. Test conditions - - - - - Part-DB1\src\Form\ParameterType.php:71 - - - parameters.max.placeholder - ex. 350 - - - - - Part-DB1\src\Form\ParameterType.php:82 - - - parameters.min.placeholder - ex. 100 - - - - - Part-DB1\src\Form\ParameterType.php:93 - - - parameters.typical.placeholder - ex. 200 - - - - - Part-DB1\src\Form\ParameterType.php:103 - - - parameters.unit.placeholder - ex. V - - - - - Part-DB1\src\Form\ParameterType.php:114 - - - parameter.group.placeholder - ex. Spécifications techniques - - - - - Part-DB1\src\Form\Part\OrderdetailType.php:72 - Part-DB1\src\Form\Part\OrderdetailType.php:75 - - - orderdetails.edit.supplierpartnr - Numéro de commande - - - - - Part-DB1\src\Form\Part\OrderdetailType.php:81 - Part-DB1\src\Form\Part\OrderdetailType.php:84 - - - orderdetails.edit.supplier - Fournisseur - - - - - Part-DB1\src\Form\Part\OrderdetailType.php:87 - Part-DB1\src\Form\Part\OrderdetailType.php:90 - - - orderdetails.edit.url - Lien vers l'offre - - - - - Part-DB1\src\Form\Part\OrderdetailType.php:93 - Part-DB1\src\Form\Part\OrderdetailType.php:96 - - - orderdetails.edit.obsolete - Plus disponible - - - - - Part-DB1\src\Form\Part\OrderdetailType.php:75 - Part-DB1\src\Form\Part\OrderdetailType.php:78 - - - orderdetails.edit.supplierpartnr.placeholder - Ex. BC 547C - - - - - Part-DB1\src\Form\Part\PartBaseType.php:101 - Part-DB1\src\Form\Part\PartBaseType.php:99 - - - part.edit.name - Nom - - - - - Part-DB1\src\Form\Part\PartBaseType.php:109 - Part-DB1\src\Form\Part\PartBaseType.php:107 - - - part.edit.description - Description - - - - - Part-DB1\src\Form\Part\PartBaseType.php:120 - Part-DB1\src\Form\Part\PartBaseType.php:118 - - - part.edit.mininstock - Stock minimum - - - - - Part-DB1\src\Form\Part\PartBaseType.php:129 - Part-DB1\src\Form\Part\PartBaseType.php:127 - - - part.edit.category - Catégories - - - - - Part-DB1\src\Form\Part\PartBaseType.php:135 - Part-DB1\src\Form\Part\PartBaseType.php:133 - - - part.edit.footprint - Empreinte - - - - - Part-DB1\src\Form\Part\PartBaseType.php:142 - Part-DB1\src\Form\Part\PartBaseType.php:140 - - - part.edit.tags - Tags - - - - - Part-DB1\src\Form\Part\PartBaseType.php:154 - Part-DB1\src\Form\Part\PartBaseType.php:152 - - - part.edit.manufacturer.label - Fabricant - - - - - Part-DB1\src\Form\Part\PartBaseType.php:161 - Part-DB1\src\Form\Part\PartBaseType.php:159 - - - part.edit.manufacturer_url.label - Lien vers la page du produit - - - - - Part-DB1\src\Form\Part\PartBaseType.php:167 - Part-DB1\src\Form\Part\PartBaseType.php:165 - - - part.edit.mpn - Numéro de pièce du fabricant - - - - - Part-DB1\src\Form\Part\PartBaseType.php:173 - Part-DB1\src\Form\Part\PartBaseType.php:171 - - - part.edit.manufacturing_status - État de la fabrication - - - - - Part-DB1\src\Form\Part\PartBaseType.php:181 - Part-DB1\src\Form\Part\PartBaseType.php:179 - - - part.edit.needs_review - Révision nécessaire - - - - - Part-DB1\src\Form\Part\PartBaseType.php:189 - Part-DB1\src\Form\Part\PartBaseType.php:187 - - - part.edit.is_favorite - Favoris - - - - - Part-DB1\src\Form\Part\PartBaseType.php:197 - Part-DB1\src\Form\Part\PartBaseType.php:195 - - - part.edit.mass - Poids - - - - - Part-DB1\src\Form\Part\PartBaseType.php:203 - Part-DB1\src\Form\Part\PartBaseType.php:201 - - - part.edit.partUnit - Unité de mesure - - - - - part.edit.partCustomState - État personnalisé de la pièce - - - - - Part-DB1\src\Form\Part\PartBaseType.php:212 - Part-DB1\src\Form\Part\PartBaseType.php:210 - - - part.edit.comment - Commentaire - - - - - Part-DB1\src\Form\Part\PartBaseType.php:250 - Part-DB1\src\Form\Part\PartBaseType.php:246 - - - part.edit.master_attachment - Miniature - - - - - Part-DB1\src\Form\Part\PartBaseType.php:295 - Part-DB1\src\Form\Part\PartBaseType.php:276 - src\Form\PartType.php:91 - - - part.edit.save - Sauvegarder les modifications - - - - - Part-DB1\src\Form\Part\PartBaseType.php:296 - Part-DB1\src\Form\Part\PartBaseType.php:277 - src\Form\PartType.php:92 - - - part.edit.reset - rejeter les modifications - - - - - Part-DB1\src\Form\Part\PartBaseType.php:105 - Part-DB1\src\Form\Part\PartBaseType.php:103 - - - part.edit.name.placeholder - Ex. BC547 - - - - - Part-DB1\src\Form\Part\PartBaseType.php:115 - Part-DB1\src\Form\Part\PartBaseType.php:113 - - - part.edit.description.placeholder - Ex. NPN 45V, 0,1A, 0,5W - - - - - Part-DB1\src\Form\Part\PartBaseType.php:123 - Part-DB1\src\Form\Part\PartBaseType.php:121 - - - part.editmininstock.placeholder - Ex. 1 - - - - - Part-DB1\src\Form\Part\PartLotType.php:69 - Part-DB1\src\Form\Part\PartLotType.php:69 - - - part_lot.edit.description - Description - - - - - Part-DB1\src\Form\Part\PartLotType.php:78 - Part-DB1\src\Form\Part\PartLotType.php:78 - - - part_lot.edit.location - Emplacement de stockage - - - - - Part-DB1\src\Form\Part\PartLotType.php:89 - Part-DB1\src\Form\Part\PartLotType.php:89 - - - part_lot.edit.amount - Quantité - - - - - Part-DB1\src\Form\Part\PartLotType.php:98 - Part-DB1\src\Form\Part\PartLotType.php:97 - - - part_lot.edit.instock_unknown - Quantité inconnue - - - - - Part-DB1\src\Form\Part\PartLotType.php:109 - Part-DB1\src\Form\Part\PartLotType.php:108 - - - part_lot.edit.needs_refill - Doit être rempli - - - - - Part-DB1\src\Form\Part\PartLotType.php:120 - Part-DB1\src\Form\Part\PartLotType.php:119 - - - part_lot.edit.expiration_date - Date d'expiration - - - - - Part-DB1\src\Form\Part\PartLotType.php:128 - Part-DB1\src\Form\Part\PartLotType.php:125 - - - part_lot.edit.comment - Commentaire - - - - - Part-DB1\src\Form\Permissions\PermissionsType.php:99 - Part-DB1\src\Form\Permissions\PermissionsType.php:99 - - - perm.group.other - Divers - - - - - Part-DB1\src\Form\TFAGoogleSettingsType.php:97 - Part-DB1\src\Form\TFAGoogleSettingsType.php:97 - - - tfa_google.enable - Activer l'application d'authentification - - - - - Part-DB1\src\Form\TFAGoogleSettingsType.php:101 - Part-DB1\src\Form\TFAGoogleSettingsType.php:101 - - - tfa_google.disable - Désactiver l'application d'authentification - - - - - Part-DB1\src\Form\TFAGoogleSettingsType.php:74 - Part-DB1\src\Form\TFAGoogleSettingsType.php:74 - - - google_confirmation - Code de confirmation - - - - - Part-DB1\src\Form\UserSettingsType.php:108 - Part-DB1\src\Form\UserSettingsType.php:108 - src\Form\UserSettingsType.php:46 - - - user.timezone.label - Fuseau horaire - - - - - Part-DB1\src\Form\UserSettingsType.php:133 - Part-DB1\src\Form\UserSettingsType.php:132 - - - user.currency.label - Devise préférée - - - - - Part-DB1\src\Form\UserSettingsType.php:140 - Part-DB1\src\Form\UserSettingsType.php:139 - src\Form\UserSettingsType.php:53 - - - save - Appliquer les modifications - - - - - Part-DB1\src\Form\UserSettingsType.php:141 - Part-DB1\src\Form\UserSettingsType.php:140 - src\Form\UserSettingsType.php:54 - - - reset - Rejeter les modifications - - - - - Part-DB1\src\Form\UserSettingsType.php:104 - Part-DB1\src\Form\UserSettingsType.php:104 - src\Form\UserSettingsType.php:45 - - - user_settings.language.placeholder - Langue du serveur - - - - - Part-DB1\src\Form\UserSettingsType.php:115 - Part-DB1\src\Form\UserSettingsType.php:115 - src\Form\UserSettingsType.php:48 - - - user_settings.timezone.placeholder - Fuseau horaire du serveur - - - - - Part-DB1\src\Services\ElementTypeNameGenerator.php:79 - Part-DB1\src\Services\ElementTypeNameGenerator.php:79 - - - attachment.label - Fichier joint - - - - - Part-DB1\src\Services\ElementTypeNameGenerator.php:81 - Part-DB1\src\Services\ElementTypeNameGenerator.php:81 - - - attachment_type.label - Type de fichier joint - - - - - Part-DB1\src\Services\ElementTypeNameGenerator.php:85 - Part-DB1\src\Services\ElementTypeNameGenerator.php:85 - - - measurement_unit.label - Unité de mesure - - - - - part_custom_state.label - État personnalisé de la pièce - - - - - Part-DB1\src\Services\ElementTypeNameGenerator.php:90 - Part-DB1\src\Services\ElementTypeNameGenerator.php:90 - - - currency.label - Devise - - - - - Part-DB1\src\Services\ElementTypeNameGenerator.php:91 - Part-DB1\src\Services\ElementTypeNameGenerator.php:91 - - - orderdetail.label - Informations de commande - - - - - Part-DB1\src\Services\ElementTypeNameGenerator.php:92 - Part-DB1\src\Services\ElementTypeNameGenerator.php:92 - - - pricedetail.label - Informations sur les prix - - - - - Part-DB1\src\Services\ElementTypeNameGenerator.php:94 - Part-DB1\src\Services\ElementTypeNameGenerator.php:94 - - - user.label - Utilisateur - - - - - Part-DB1\src\Services\ElementTypeNameGenerator.php:95 - - - parameter.label - Caractéristique - - - - - Part-DB1\src\Services\ElementTypeNameGenerator.php:96 - - - label_profile.label - Profil d'étiquette - - - - - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:176 - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:161 - new - - - log.element_deleted.old_name.unknown - Inconnu - - - - - Part-DB1\src\Services\MarkdownParser.php:73 - Part-DB1\src\Services\MarkdownParser.php:73 - - - markdown.loading - Chargement de la remise. Si ce message ne disparaît pas, essayez de recharger la page. - - - - - Part-DB1\src\Services\PasswordResetManager.php:98 - Part-DB1\src\Services\PasswordResetManager.php:98 - - - pw_reset.email.subject - Réinitialisation du mot de passe de votre compte Part-DB - - - - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 - - - tree.tools.tools - Outils - - - - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:107 - src\Services\ToolsTreeBuilder.php:74 - - - tree.tools.edit - Éditer - - - - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:110 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 - src\Services\ToolsTreeBuilder.php:81 - - - tree.tools.show - Afficher - - - - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:111 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 - - - tree.tools.system - Système - - - - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:123 - - - tree.tools.tools.label_dialog - Générateur d'étiquettes - - - - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:130 - - - tree.tools.tools.label_scanner - 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 - Types de fichier joint - - - - - 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 - Catégories - - - - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:167 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:144 - src\Services\ToolsTreeBuilder.php:68 - - - tree.tools.edit.suppliers - Fournisseurs - - - - - 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 - Fabricants - - - - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:179 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:156 - - - tree.tools.edit.storelocation - Emplacements de stockage - - - - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:185 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:162 - - - tree.tools.edit.footprint - Empreintes - - - - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:191 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:168 - - - tree.tools.edit.currency - Devises - - - - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:174 - - - tree.tools.edit.measurement_unit - Unité de mesure - - - - - tree.tools.edit.part_custom_state - État personnalisé de la pièce - - - - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 - - - tree.tools.edit.label_profile - Profils d'étiquettes - - - - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:209 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:180 - - - tree.tools.edit.part - Composant - - - - - 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 - Voir tous les composants - - - - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:232 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 - - - tree.tools.show.all_attachments - Fichiers joints - - - - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:239 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:210 - new - - - tree.tools.show.statistics - Statistiques - - - - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:258 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:229 - - - tree.tools.system.users - Utilisateurs - - - - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:264 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:235 - - - tree.tools.system.groups - Groupes - - - - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:271 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:242 - new - - - tree.tools.system.event_log - Système d'événements - - - - - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - src\Services\TreeBuilder.php:124 - - - entity.tree.new - Nouvel élément - - - - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:34 - obsolete - - - attachment.external_file - Fichier extérieur - - - - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 - obsolete - - - attachment.edit - Éditer - - - - - Part-DB1\templates\_navbar.html.twig:27 - templates\base.html.twig:88 - obsolete - - - barcode.scan - Scanner un code-barres - - - - - Part-DB1\src\Form\UserSettingsType.php:119 - src\Form\UserSettingsType.php:49 - obsolete - - - user.theme.label - Thème - - - - - Part-DB1\src\Form\UserSettingsType.php:129 - src\Form\UserSettingsType.php:50 - obsolete - - - user_settings.theme.placeholder - Thème du serveur - - - - - 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 - Modification annulée - - - - - 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 - Élément restauré - - - - - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:139 - new - obsolete - - - log.element_created.original_instock - Ancien stock - - - - - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:160 - new - obsolete - - - log.element_deleted.old_name - Ancien nom - - - - - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:184 - new - obsolete - - - log.element_edited.changed_fields - Champs modifiés - - - - - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:198 - new - obsolete - - - log.instock_changed.comment - Commentaire - - - - - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:214 - new - obsolete - - - log.collection_deleted.deleted - Élément supprimé : - - - - - templates\base.html.twig:81 - obsolete - obsolete - - - go.exclamation - Allez! - - - - - templates\base.html.twig:109 - obsolete - obsolete - - - language.english - Anglais - - - - - templates\base.html.twig:112 - obsolete - obsolete - - - language.german - Allemand - - - - - obsolete - obsolete - - - flash.password_change_needed - Votre mot de passe doit être changé ! - - - - - obsolete - obsolete - - - attachment.table.type - Type de fichier joint - - - - - obsolete - obsolete - - - attachment.table.element - élément lié - - - - - obsolete - obsolete - - - attachment.edit.isPicture - Image? - - - - - obsolete - obsolete - - - attachment.edit.is3DModel - Modèle 3D? - - - - - obsolete - obsolete - - - attachment.edit.isBuiltin - Intégré? - - - - - obsolete - obsolete - - - category.edit.default_comment.placeholder - Ex. utilisé pour les alimentations à découpage - - - - - obsolete - obsolete - - - tfa_backup.regenerate_codes - Créer de nouveaux codes de secours - - - - - obsolete - obsolete - - - validator.noneofitschild.self - Un élément ne peut pas être son propre parent. - - - - - obsolete - obsolete - - - validator.noneofitschild.children - Le parent ne peut pas être un de ses propres enfants. - - - - - obsolete - obsolete - - - validator.part_lot.location_full.no_increasment - Le lieu de stockage utilisé a été marqué comme étant plein, le stock ne peut donc pas être augmenté. (Nouveau stock maximum {{old_amount}}) - - - - - obsolete - obsolete - - - validator.part_lot.location_full - L'emplacement de stockage est plein, c'est pourquoi aucun nouveau composant ne peut être ajouté. - - - - - obsolete - obsolete - - - validator.part_lot.only_existing - L'emplacement de stockage a été marqué comme "uniquement existant", donc aucun nouveau composant ne peut être ajouté. - - - - - obsolete - obsolete - - - validator.part_lot.single_part - L'emplacement de stockage a été marqué comme "Composant seul", par conséquent aucun nouveau composant ne peut être ajouté. - - - - - obsolete - obsolete - - - m_status.active.help - Le composant est actuellement en cours de production et sera produit dans un avenir proche. - - - - - obsolete - obsolete - - - m_status.announced.help - Le composant a été annoncé, mais n'est pas encore disponible. - - - - - obsolete - obsolete - - - m_status.discontinued.help - Le composant n'est plus fabriqué. - - - - - obsolete - obsolete - - - m_status.eol.help - La production de ce composant sera bientôt arrêtée. - - - - - obsolete - obsolete - - - m_status.nrfnd.help - Ce composant est actuellement en production mais n'est pas recommandé pour les nouvelles conceptions. - - - - - obsolete - obsolete - - - m_status.unknown.help - L'état de la production n'est pas connu. - - - - - obsolete - obsolete - - - flash.success - Succès - - - - - obsolete - obsolete - - - flash.error - Erreur - - - - - obsolete - obsolete - - - flash.warning - Attention - - - - - obsolete - obsolete - - - flash.notice - Remarque - - - - - obsolete - obsolete - - - flash.info - Info - - - - - obsolete - obsolete - - - validator.noLockout - Vous ne pouvez pas révoquer vous-même l'autorisation de "modifier les autorisations" pour éviter de vous verrouiller accidentellement ! - - - - - obsolete - obsolete - - - attachment_type.edit.filetype_filter - Types de fichiers autorisés - - - - - obsolete - obsolete - - - attachment_type.edit.filetype_filter.help - Vous pouvez spécifier ici une liste, séparée par des virgules, des extensions de fichiers ou des mimétapes qu'un fichier téléchargé avec ce type de pièce jointe doit avoir. Pour autoriser tous les fichiers d'images pris en charge, utilisez image/*. - - - - - obsolete - obsolete - - - attachment_type.edit.filetype_filter.placeholder - Ex. .txt, application/pdf, image/* - - - - - src\Form\PartType.php:63 - obsolete - obsolete - - - part.name.placeholder - Ex. BC547 - - - - - obsolete - obsolete - - - entity.edit.not_selectable - Non sélectionnable - - - - - obsolete - obsolete - - - entity.edit.not_selectable.help - Si cette option est activée, alors cet élément ne peut être attribué à aucun composant en tant que propriété. Utile, par exemple si cet élément doit être utilisé uniquement pour le tri. - - - - - obsolete - obsolete - - - bbcode.hint - Le BBCode peut être utilisé ici (par exemple [b]Bold[/b]) - - - - - obsolete - obsolete - - - entity.create - Créer un élément - - - - - obsolete - obsolete - - - entity.edit.save - Sauvegarder - - - - - obsolete - obsolete - - - category.edit.disable_footprints - Désactiver les empreintes - - - - - obsolete - obsolete - - - category.edit.disable_footprints.help - Si cette option est activée, la propriété Empreinte est désactivée pour tous les composants de cette catégorie. - - - - - obsolete - obsolete - - - category.edit.disable_manufacturers - Désactiver les fabricants - - - - - obsolete - obsolete - - - category.edit.disable_manufacturers.help - Si cette option est activée, la propriété fabricant est désactivée pour tous les composants de cette catégorie. - - - - - obsolete - obsolete - - - category.edit.disable_autodatasheets - Désactiver les liens automatiques des fiches techniques - - - - - obsolete - obsolete - - - category.edit.disable_autodatasheets.help - Si cette option est activée, aucun lien automatique avec la fiche technique n'est généré pour les pièces de cette catégorie. - - - - - obsolete - obsolete - - - category.edit.disable_properties - Désactiver les propriétés - - - - - obsolete - obsolete - - - category.edit.disable_properties.help - Si cette option est activée, les propriétés des composants pour tous les composants de cette catégorie sont désactivées. - - - - - obsolete - obsolete - - - category.edit.partname_hint - Indication du nom du composant - - - - - obsolete - obsolete - - - category.edit.partname_hint.placeholder - Ex. 100nF - - - - - obsolete - obsolete - - - category.edit.partname_regex - Filtre de nom - - - - - category.edit.part_ipn_prefix - Préfixe de pièce IPN - - - - - obsolete - obsolete - - - category.edit.default_description - Description par défaut - - - - - obsolete - obsolete - - - category.edit.default_description.placeholder - Ex. Condensateur, 10mmx10mm, CMS - - - - - obsolete - obsolete - - - category.edit.default_comment - Commentaire par défaut - - - - - obsolete - obsolete - - - company.edit.address - Adresse - - - - - obsolete - obsolete - - - company.edit.address.placeholder - Ex. 99 exemple de rue -exemple de ville - - - - - obsolete - obsolete - - - company.edit.phone_number - Numéro de téléphone - - - - - obsolete - obsolete - - - company.edit.phone_number.placeholder - +33 1 23 45 67 89 - - - - - obsolete - obsolete - - - company.edit.fax_number - Numéro de fax - - - - - obsolete - obsolete - - - company.edit.email - Email - - - - - obsolete - obsolete - - - company.edit.email.placeholder - Ex. contact@foo.bar - - - - - obsolete - obsolete - - - company.edit.website - Site internet - - - - - obsolete - obsolete - - - company.edit.website.placeholder - https://www.foo.bar - - - - - obsolete - obsolete - - - company.edit.auto_product_url - URL du produit - - - - - obsolete - obsolete - - - company.edit.auto_product_url.help - Si cette URL est définie, elle est utilisée pour générer l'URL d'un composant sur le site web du fabricant. Dans ce cas, %PARTNUMBER% sera remplacé par le numéro de commande. - - - - - obsolete - obsolete - - - company.edit.auto_product_url.placeholder - https://foo.bar/product/%PARTNUMBER% - - - - - obsolete - obsolete - - - currency.edit.iso_code - Code ISO - - - - - obsolete - obsolete - - - currency.edit.exchange_rate - Taux de change - - - - - obsolete - obsolete - - - footprint.edit.3d_model - Modèle 3D - - - - - obsolete - obsolete - - - mass_creation.lines - Saisie - - - - - obsolete - obsolete - - - mass_creation.lines.placeholder - Élément 1 -Élément 2 -Élément 3 - - - - - obsolete - obsolete - - - entity.mass_creation.btn - Créer - - - - - obsolete - obsolete - - - measurement_unit.edit.is_integer - Nombre entier - - - - - obsolete - obsolete - - - measurement_unit.edit.is_integer.help - Si cette option est activée, toutes les quantités dans cette unité sont arrondies à des nombres entiers. - - - - - obsolete - obsolete - - - measurement_unit.edit.use_si_prefix - Utiliser les préfixes SI - - - - - obsolete - obsolete - - - measurement_unit.edit.use_si_prefix.help - Si cette option est activée, les préfixes SI sont utilisés lors de la génération des nombres (par exemple 1,2 kg au lieu de 1200 g) - - - - - obsolete - obsolete - - - measurement_unit.edit.unit_symbol - Symbole de l'unité - - - - - obsolete - obsolete - - - measurement_unit.edit.unit_symbol.placeholder - Ex. m - - - - - obsolete - obsolete - - - storelocation.edit.is_full.label - Emplacement de stockage plein - - - - - obsolete - obsolete - - - storelocation.edit.is_full.help - Si cette option est activée, il n'est pas possible d'ajouter de nouveaux composants à ce lieu de stockage ni d'augmenter le nombre de composants existants. - - - - - obsolete - obsolete - - - storelocation.limit_to_existing.label - Limiter aux composants existants - - - - - obsolete - obsolete - - - storelocation.limit_to_existing.help - Si cette option est active, il n'est pas possible d'ajouter de nouveaux composants à ce lieu de stockage, mais il est possible d'augmenter le nombre de composants existants. - - - - - obsolete - obsolete - - - storelocation.only_single_part.label - Seulement un composant - - - - - obsolete - obsolete - - - storelocation.only_single_part.help - Si cette option est activée, cet emplacement de stockage ne peut contenir qu'un seul composant (mais une quantité quelconque). Utile pour les petits compartiments ou les distributeurs de CMS. - - - - - obsolete - obsolete - - - storelocation.storage_type.label - Type de stockage - - - - - obsolete - obsolete - - - storelocation.storage_type.help - Ici, vous pouvez sélectionner une unité de mesure qu'un composant doit avoir pour être stocké dans ce lieu de stockage. - - - - - obsolete - obsolete - - - supplier.edit.default_currency - Devise par défaut - - - - - obsolete - obsolete - - - supplier.shipping_costs.label - Frais de port - - - - - obsolete - obsolete - - - user.username.placeholder - Ex. j.doe - - - - - obsolete - obsolete - - - user.firstName.placeholder - Ex. John - - - - - obsolete - obsolete - - - user.lastName.placeholder - Ex. Doe - - - - - obsolete - obsolete - - - user.email.placeholder - j.doe@ecorp.com - - - - - obsolete - obsolete - - - user.department.placeholder - Ex. Development - - - - - obsolete - obsolete - - - user.settings.pw_new.label - Nouveau mot de passe - - - - - obsolete - obsolete - - - user.settings.pw_confirm.label - Confirmer le nouveau mot de passe - - - - - obsolete - obsolete - - - user.edit.needs_pw_change - L'utilisateur doit changer de mot de passe - - - - - obsolete - obsolete - - - user.edit.user_disabled - Utilisateur désactivé (connexion impossible) - - - - - obsolete - obsolete - - - user.create - Créer l'utilisateur - - - - - obsolete - obsolete - - - user.edit.save - Enregistrer - - - - - obsolete - obsolete - - - entity.edit.reset - Rejeter les modifications - - - - - templates\Parts\show_part_info.html.twig:166 - obsolete - obsolete - - - part.withdraw.btn - Retrait - - - - - templates\Parts\show_part_info.html.twig:171 - obsolete - obsolete - - - part.withdraw.comment: - Commentaire/objet - - - - - templates\Parts\show_part_info.html.twig:189 - obsolete - obsolete - - - part.add.caption - Ajouter composants - - - - - templates\Parts\show_part_info.html.twig:194 - obsolete - obsolete - - - part.add.btn - Ajouter - - - - - templates\Parts\show_part_info.html.twig:199 - obsolete - obsolete - - - part.add.comment - Commentaire/objet - - - - - templates\AdminPages\CompanyAdminBase.html.twig:15 - obsolete - obsolete - - - admin.comment - Commentaire - - - - - src\Form\PartType.php:83 - obsolete - obsolete - - - manufacturer_url.label - Lien vers le site du fabricant - - - - - src\Form\PartType.php:66 - obsolete - obsolete - - - part.description.placeholder - Ex. NPN 45V 0,1A 0,5W - - - - - src\Form\PartType.php:69 - obsolete - obsolete - - - part.instock.placeholder - Ex. 10 - - - - - src\Form\PartType.php:72 - obsolete - obsolete - - - part.mininstock.placeholder - Ex. 10 - - - - - obsolete - obsolete - - - part.order.price_per - Prix par - - - - - obsolete - obsolete - - - part.withdraw.caption - Retrait de composants - - - - - obsolete - obsolete - - - datatable.datatable.lengthMenu - _MENU_ - - - - - obsolete - obsolete - - - perm.group.parts - Composants - - - - - obsolete - obsolete - - - perm.group.structures - Structures des données - - - - - obsolete - obsolete - - - perm.group.system - Système - - - - - obsolete - obsolete - - - perm.parts - Général - - - - - obsolete - obsolete - - - perm.read - Afficher - - - - - obsolete - obsolete - - - perm.edit - Éditer - - - - - obsolete - obsolete - - - perm.create - Créer - - - - - obsolete - obsolete - - - perm.part.move - Changer de catégorie - - - - - obsolete - obsolete - - - perm.delete - Supprimer - - - - - obsolete - obsolete - - - perm.part.search - Rechercher - - - - - obsolete - obsolete - - - perm.part.all_parts - Liste de tous les composants - - - - - obsolete - obsolete - - - perm.part.no_price_parts - Liste des composants sans prix - - - - - obsolete - obsolete - - - perm.part.obsolete_parts - Liste des composants obsolètes - - - - - obsolete - obsolete - - - perm.part.unknown_instock_parts - Liste des composants dont le stock est inconnu - - - - - obsolete - obsolete - - - perm.part.change_favorite - Changer le statut de favori - - - - - obsolete - obsolete - - - perm.part.show_favorite - Afficher les favoris - - - - - obsolete - obsolete - - - perm.part.show_last_edit_parts - Afficher les derniers composants modifiés/ajoutés - - - - - obsolete - obsolete - - - perm.part.show_users - Afficher le dernier utilisateur ayant apporté des modifications - - - - - obsolete - obsolete - - - perm.part.show_history - Afficher l'historique - - - - - obsolete - obsolete - - - perm.part.name - Nom - - - - - obsolete - obsolete - - - perm.part.description - Description - - - - - obsolete - obsolete - - - perm.part.instock - En stock - - - - - obsolete - obsolete - - - perm.part.mininstock - Stock minimum - - - - - obsolete - obsolete - - - perm.part.comment - Commentaire - - - - - obsolete - obsolete - - - perm.part.storelocation - Emplacement de stockage - - - - - obsolete - obsolete - - - perm.part.manufacturer - Fabricant - - - - - obsolete - obsolete - - - perm.part.orderdetails - Informations pour la commande - - - - - obsolete - obsolete - - - perm.part.prices - Prix - - - - - obsolete - obsolete - - - perm.part.attachments - Fichiers joints - - - - - obsolete - obsolete - - - perm.part.order - Commandes - - - - - obsolete - obsolete - - - perm.storelocations - Emplacements de stockage - - - - - obsolete - obsolete - - - perm.move - Déplacer - - - - - obsolete - obsolete - - - perm.list_parts - Liste des composants - - - - - obsolete - obsolete - - - perm.part.footprints - Empreintes - - - - - obsolete - obsolete - - - perm.part.categories - Catégories - - - - - obsolete - obsolete - - - perm.part.supplier - Fournisseurs - - - - - obsolete - obsolete - - - perm.part.manufacturers - Fabricants - - - - - obsolete - obsolete - - - perm.part.attachment_types - Types de fichiers joints - - - - - obsolete - obsolete - - - perm.tools.import - Importer - - - - - obsolete - obsolete - - - perm.tools.labels - Étiquettes - - - - - obsolete - obsolete - - - perm.tools.calculator - Calculateur de résistance - - - - - obsolete - obsolete - - - perm.tools.footprints - Empreintes - - - - - obsolete - obsolete - - - perm.tools.ic_logos - Logos CI - - - - - obsolete - obsolete - - - perm.tools.statistics - Statistiques - - - - - obsolete - obsolete - - - perm.edit_permissions - Éditer les autorisations - - - - - obsolete - obsolete - - - perm.users.edit_user_name - Modifier le nom d'utilisateur - - - - - obsolete - obsolete - - - perm.users.edit_change_group - Modifier le groupe - - - - - obsolete - obsolete - - - perm.users.edit_infos - Editer les informations - - - - - obsolete - obsolete - - - perm.users.edit_permissions - Modifier les autorisations - - - - - obsolete - obsolete - - - perm.users.set_password - Définir le mot de passe - - - - - obsolete - obsolete - - - perm.users.change_user_settings - Changer les paramètres utilisateur - - - - - obsolete - obsolete - - - perm.database.see_status - Afficher l’état - - - - - obsolete - obsolete - - - perm.database.update_db - Actualiser la base de données - - - - - obsolete - obsolete - - - perm.database.read_db_settings - Lecture des paramètres de la base de donnée - - - - - obsolete - obsolete - - - perm.database.write_db_settings - Modifier les paramètres de la base de données - - - - - obsolete - obsolete - - - perm.config.read_config - Lecture de la configuration - - - - - obsolete - obsolete - - - perm.config.edit_config - Modifier la configuration - - - - - obsolete - obsolete - - - perm.config.server_info - Informations sur le serveur - - - - - obsolete - obsolete - - - perm.config.use_debug - Utiliser les outils de débogage - - - - - obsolete - obsolete - - - perm.show_logs - Afficher les logs - - - - - obsolete - obsolete - - - perm.delete_logs - Supprimer les logs - - - - - obsolete - obsolete - - - perm.self.edit_infos - Modifier les informations - - - - - obsolete - obsolete - - - perm.self.edit_username - Modifier le nom d'utilisateur - - - - - obsolete - obsolete - - - perm.self.show_permissions - Voir les autorisations - - - - - obsolete - obsolete - - - perm.self.show_logs - Afficher ses propres logs - - - - - obsolete - obsolete - - - perm.self.create_labels - Créer des étiquettes - - - - - obsolete - obsolete - - - perm.self.edit_options - Modifier les options - - - - - obsolete - obsolete - - - perm.self.delete_profiles - Supprimer les profils - - - - - obsolete - obsolete - - - perm.self.edit_profiles - Modifier les profils - - - - - obsolete - obsolete - - - perm.part.tools - Outils - - - - - obsolete - obsolete - - - perm.groups - Groupes - - - - - obsolete - obsolete - - - perm.users - Utilisateurs - - - - - obsolete - obsolete - - - perm.database - Base de données - - - - - obsolete - obsolete - - - perm.config - Configuration - - - - - obsolete - obsolete - - - perm.system - Système - - - - - obsolete - obsolete - - - perm.self - Propre utilisateur - - - - - obsolete - obsolete - - - perm.labels - Étiquettes - - - - - obsolete - obsolete - - - perm.part.category - Catégorie - - - - - obsolete - obsolete - - - perm.part.minamount - Quantité minimum - - - - - obsolete - obsolete - - - perm.part.footprint - Empreinte - - - - - obsolete - obsolete - - - perm.part.mpn - MPN - - - - - obsolete - obsolete - - - perm.part.status - État de la fabrication - - - - - obsolete - obsolete - - - perm.part.tags - Tags - - - - - obsolete - obsolete - - - perm.part.unit - Unité - - - - - obsolete - obsolete - - - perm.part.mass - Poids - - - - - obsolete - obsolete - - - perm.part.lots - Lots de composants - - - - - obsolete - obsolete - - - perm.show_users - Afficher le dernier utilisateur ayant apporté des modifications - - - - - obsolete - obsolete - - - perm.currencies - Devises - - - - - obsolete - obsolete - - - perm.measurement_units - Unités de mesure - - - - - perm.part_custom_states - État personnalisé du composant - - - - - obsolete - obsolete - - - user.settings.pw_old.label - Ancien mot de passe - - - - - obsolete - obsolete - - - pw_reset.submit - Réinitialiser le mot de passe - - - - - obsolete - obsolete - - - u2f_two_factor - Clé de sécurité (U2F) - - - - - obsolete - obsolete - - - google - google - - - - - obsolete - obsolete - - - tfa.provider.google - Application d'authentification - - - - - obsolete - obsolete - - - Login successful - Connexion réussie - - - - - obsolete - obsolete - - - log.type.exception - Exception - - - - - obsolete - obsolete - - - log.type.user_login - Connexion utilisateur - - - - - obsolete - obsolete - - - log.type.user_logout - Déconnexion de l’utilisateur - - - - - obsolete - obsolete - - - log.type.unknown - Inconnu - - - - - obsolete - obsolete - - - log.type.element_created - Élément créé - - - - - obsolete - obsolete - - - log.type.element_edited - Élément modifié - - - - - obsolete - obsolete - - - log.type.element_deleted - Élément supprimé - - - - - obsolete - obsolete - - - log.type.database_updated - Base de données mise à jour - - - - - obsolete - - - perm.revert_elements - Restaurer les éléments - - - - - obsolete - - - perm.show_history - Afficher l'historique - - - - - obsolete - - - perm.tools.lastActivity - Afficher l'activité récente - - - - - obsolete - - - perm.tools.timeTravel - Afficher les anciennes versions des éléments (Time travel) - - - - - obsolete - - - tfa_u2f.key_added_successful - Clé de sécurité ajoutée avec succès. - - - - - obsolete - - - Username - Nom d'utilisateur - - - - - obsolete - - - log.type.security.google_disabled - Application d'authentification désactivée - - - - - obsolete - - - log.type.security.u2f_removed - Clé de sécurité enlevée - - - - - obsolete - - - log.type.security.u2f_added - Clé de sécurité ajoutée - - - - - obsolete - - - log.type.security.backup_keys_reset - Clés de sauvegarde régénérées - - - - - obsolete - - - log.type.security.google_enabled - Application Authenticator activée - - - - - obsolete - - - log.type.security.password_changed - Mot de passe modifié - - - - - obsolete - - - log.type.security.trusted_device_reset - Appareils de confiance réinitialisés - - - - - obsolete - - - log.type.collection_element_deleted - Élément de collecte supprimé - - - - - obsolete - - - log.type.security.password_reset - Réinitialisation du mot de passe - - - - - obsolete - - - log.type.security.2fa_admin_reset - Réinitialisation à deux facteurs par l'administrateur - - - - - obsolete - - - log.type.user_not_allowed - Tentative d'accès non autorisé - - - - - obsolete - - - log.database_updated.success - Succès - - - - - obsolete - - - label_options.barcode_type.2D - 2D - - - - - obsolete - - - label_options.barcode_type.1D - 1D - - - - - obsolete - - - perm.part.parameters - Caractéristiques - - - - - obsolete - - - perm.attachment_show_private - Voir les pièces jointes privées - - - - - obsolete - - - perm.tools.label_scanner - Lecteur d'étiquettes - - - - - obsolete - - - perm.self.read_profiles - Lire les profils - - - - - obsolete - - - perm.self.create_profiles - Créer des profils - - - - - obsolete - - - perm.labels.use_twig - Utiliser le mode twig - - - - - label_profile.showInDropdown - Afficher en sélection rapide - - - - - group.edit.enforce_2fa - Imposer l'authentification à deux facteurs (2FA) - - - - - group.edit.enforce_2fa.help - Si cette option est activée, chaque membre direct de ce groupe doit configurer au moins un deuxième facteur d'authentification. Recommandé pour les groupes administratifs ayant beaucoup de permissions. - - - - - selectpicker.empty - Rien n'est sélectionné - - - - - selectpicker.nothing_selected - Rien n'est sélectionné - - - - - entity.delete.must_not_contain_parts - L'élement contient encore des parties ! Vous devez déplacer les parties pour pouvoir supprimer cet élément. - - - - - entity.delete.must_not_contain_attachments - Le type de pièce jointe contient toujours des pièces jointes. Changez leur type, pour pouvoir supprimer ce type de pièce jointe. - - - - - entity.delete.must_not_contain_prices - La devise contient encore des prix. Vous devez changer leur devise pour pouvoir supprimer cet élément. - - - - - entity.delete.must_not_contain_users - Des utilisateurs utilisent toujours ce groupe ! Changez les de groupe pour pouvoir supprimer ce groupe. - - - - - part.table.edit - Modifier - - - - - part.table.edit.title - Modifier composant - - - - - part_list.action.action.title - Sélectionnez une action - - - - - part_list.action.action.group.favorite - Statut favori - - - - - part_list.action.action.favorite - Favorable - - - - - part_list.action.action.unfavorite - Défavorable - - - - - part_list.action.action.group.change_field - Modifier le champ - - - - - part_list.action.action.change_category - Modifier la catégorie - - - - - part_list.action.action.change_footprint - Modifier l'empreinte - - - - - part_list.action.action.change_manufacturer - Modifier le fabricant - - - - - part_list.action.action.change_unit - Modifier l'unité - - - - - part_list.action.action.delete - Supprimer - - - - - part_list.action.submit - Soumettre - - - - - part_list.action.part_count - %count% composants sélectionnés - - - - - company.edit.quick.website - Ouvrir le site web - - - - - company.edit.quick.email - Envoyer un e-mail - - - - - company.edit.quick.phone - Téléphoner - - - - - company.edit.quick.fax - Envoyer une télécopie - - - - - company.fax_number.placeholder - ex. +33 12 34 56 78 90 - - - - - part.edit.save_and_clone - Sauvegarder et dupliquer - - - - - validator.file_ext_not_allowed - L'extension de fichier n'est pas autorisée pour ce type de pièce jointe. - - - - - tools.reel_calc.title - Calculateur de bobines CMS - - - - - tools.reel_calc.inner_dia - Diamètre intérieur - - - - - tools.reel_calc.outer_dia - Diamètre extérieur - - - - - tools.reel_calc.tape_thick - Épaisseur du ruban - - - - - tools.reel_calc.part_distance - Distance entre les composants - - - - - tools.reel_calc.update - Actualiser - - - - - tools.reel_calc.parts_per_meter - Composants par mètre - - - - - tools.reel_calc.result_length - Longueur de la bande - - - - - tools.reel_calc.result_amount - Nbre approximatif de composants - - - - - tools.reel_calc.outer_greater_inner_error - Erreur : Le diamètre extérieur doit être supérieur au diamètre intérieur ! - - - - - tools.reel_calc.missing_values.error - Veuillez remplir toutes les valeurs ! - - - - - tools.reel_calc.load_preset - Charger la présélection - - - - - tools.reel_calc.explanation - Ce calculateur vous donne une estimation du nombre de pièces qui restent sur une bobine de CMS. Mesurez les dimensions notées sur la bobine (ou utilisez certains des préréglages) et cliquez sur "Actualiser" pour obtenir un résultat. - - - - - perm.tools.reel_calculator - Calculateur de bobines CMS - - - - - tree.tools.tools.reel_calculator - Calculateur de bobines CMS - - - - - currency.edit.update_rate - Taux de rafraîchissement - - - - - currency.edit.exchange_rate_update.unsupported_currency - Devise non prise en charge - - - - - currency.edit.exchange_rate_update.generic_error - Erreur générique - - - - - currency.edit.exchange_rate_updated.success - Succès - - - - - homepage.forum.text - Si vous avez des questions à propos de Part-DB , rendez vous sur <a href="%href%" class="link-external" target="_blank">Github</a> - - - - - part_custom_state.new - Nouveau statut personnalisé du composant - - - - - part_custom_state.edit - Modifier le statut personnalisé du composant - - - - - log.element_edited.changed_fields.partCustomState - État personnalisé de la pièce - - - - - category.edit.part_ipn_prefix.placeholder - par ex. "B12A" - - - - - category.edit.part_ipn_prefix.help - Un préfixe suggéré lors de la saisie de l'IPN d'une pièce. - - - - + + + + + + Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 + Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 + templates\AdminPages\AttachmentTypeAdmin.html.twig:4 + + + attachment_type.caption + Types pour fichiers joints + + + + + Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:12 + new + + + attachment_type.edit + Modifier le type de pièce jointe + + + + + Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:16 + new + + + attachment_type.new + Nouveau type de pièce jointe + + + + + Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 + Part-DB1\templates\_sidebar.html.twig:22 + Part-DB1\templates\_sidebar.html.twig:7 + Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 + Part-DB1\templates\_sidebar.html.twig:22 + Part-DB1\templates\_sidebar.html.twig:7 + templates\AdminPages\CategoryAdmin.html.twig:4 + templates\base.html.twig:163 + templates\base.html.twig:170 + templates\base.html.twig:197 + templates\base.html.twig:225 + + + category.labelp + Catégories + + + + + Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 + Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:19 + Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 + Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:11 + templates\AdminPages\CategoryAdmin.html.twig:8 + + + admin.options + Options + + + + + Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 + Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 + Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 + Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 + templates\AdminPages\CategoryAdmin.html.twig:9 + + + admin.advanced + Avancé + + + + + Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:13 + new + + + category.edit + Éditer la catégorie + + + + + Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:17 + new + + + category.new + Nouvelle catégorie + + + + + Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 + Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 + + + currency.caption + Devise + + + + + Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 + Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 + + + currency.iso_code.caption + Code ISO + + + + + Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 + Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 + + + currency.symbol.caption + Symbole de la devise + + + + + Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:29 + new + + + currency.edit + Editer la devise + + + + + Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:33 + new + + + currency.new + Nouvelle devise + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:67 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + templates\AdminPages\EntityAdminBase.html.twig:9 + templates\base.html.twig:80 + templates\base.html.twig:179 + templates\base.html.twig:206 + templates\base.html.twig:237 + + + search.placeholder + Recherche + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 + Part-DB1\templates\_sidebar.html.twig:3 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 + Part-DB1\templates\_sidebar.html.twig:3 + templates\AdminPages\EntityAdminBase.html.twig:13 + templates\base.html.twig:166 + templates\base.html.twig:193 + templates\base.html.twig:221 + + + expandAll + Agrandir tout + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:4 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:4 + templates\AdminPages\EntityAdminBase.html.twig:17 + templates\base.html.twig:167 + templates\base.html.twig:194 + templates\base.html.twig:222 + + + reduceAll + Réduire tout + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 + Part-DB1\templates\Parts\info\_sidebar.html.twig:4 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 + Part-DB1\templates\Parts\info\_sidebar.html.twig:4 + + + part.info.timetravel_hint + C'est ainsi que le composant apparaissait avant le %timestamp%. <i>Veuillez noter que cette fonctionnalité est expérimentale, donc les infos ne sont peut-être pas correctes. </i> + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 + templates\AdminPages\EntityAdminBase.html.twig:42 + + + standard.label + Propriétés + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 + templates\AdminPages\EntityAdminBase.html.twig:43 + + + infos.label + Informations + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 + new + + + history.label + Historique + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 + templates\AdminPages\EntityAdminBase.html.twig:45 + + + export.label + Exporter + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 + templates\AdminPages\EntityAdminBase.html.twig:47 + + + import_export.label + Importer exporter + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 + + + mass_creation.label + Création multiple + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 + templates\AdminPages\EntityAdminBase.html.twig:59 + + + admin.common + Commun + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 + + + admin.attachments + Fichiers joints + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:90 + + + admin.parameters + Paramètres + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:179 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:167 + templates\AdminPages\EntityAdminBase.html.twig:142 + + + export_all.label + Exporter tous les éléments + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:185 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:173 + + + mass_creation.help + Chaque ligne sera interprétée comme le nom d'un élément qui sera créé. + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 + templates\AdminPages\EntityAdminBase.html.twig:35 + + + edit.caption + Éditer l'élément "%name" + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 + templates\AdminPages\EntityAdminBase.html.twig:37 + + + new.caption + Nouvel élément + + + + + Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 + Part-DB1\templates\_sidebar.html.twig:9 + Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 + Part-DB1\templates\_sidebar.html.twig:9 + templates\base.html.twig:172 + templates\base.html.twig:199 + templates\base.html.twig:227 + + + footprint.labelp + Empreintes + + + + + Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:13 + new + + + footprint.edit + Editer l'empreinte + + + + + Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:17 + new + + + footprint.new + Nouvelle empreinte + + + + + Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 + Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 + + + group.edit.caption + Groupes + + + + + Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 + Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 + + + user.edit.permissions + Permissions + + + + + Part-DB1\templates\AdminPages\GroupAdmin.html.twig:24 + new + + + group.edit + Editer le groupe + + + + + Part-DB1\templates\AdminPages\GroupAdmin.html.twig:28 + new + + + group.new + Nouveau groupe + + + + + Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:4 + + + label_profile.caption + Profil des étiquettes + + + + + Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:8 + + + label_profile.advanced + Avancé + + + + + Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:9 + + + label_profile.comment + Commentaire + + + + + Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:55 + new + + + label_profile.edit + Editer profil d'étiquette + + + + + Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:59 + new + + + label_profile.new + Nouveau profil d'étiquette + + + + + Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 + Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 + templates\AdminPages\ManufacturerAdmin.html.twig:4 + + + manufacturer.caption + Fabricants + + + + + Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:8 + new + + + manufacturer.edit + Modifiez le fabricant + + + + + Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:12 + new + + + manufacturer.new + Nouveau fabricant + + + + + Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 + Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 + + + measurement_unit.caption + Unité de mesure + + + + + part_custom_state.caption + État personnalisé du composant + + + + + Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:5 + Part-DB1\templates\_sidebar.html.twig:8 + Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:4 + Part-DB1\templates\_sidebar.html.twig:8 + templates\base.html.twig:171 + templates\base.html.twig:198 + templates\base.html.twig:226 + + + storelocation.labelp + Emplacement de stockage + + + + + Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:32 + new + + + storelocation.edit + Modifier l'emplacement de stockage + + + + + Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:36 + new + + + storelocation.new + Nouvel emplacement de stockage + + + + + Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 + Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 + templates\AdminPages\SupplierAdmin.html.twig:4 + + + supplier.caption + Fournisseurs + + + + + Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 + new + + + supplier.edit + Modifier le fournisseur + + + + + Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:20 + new + + + supplier.new + Nouveau fournisseur + + + + + Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 + + + user.edit.caption + Utilisateurs + + + + + Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 + + + user.edit.configuration + Configuration + + + + + Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 + + + user.edit.password + Mot de passe + + + + + Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 + + + user.edit.tfa.caption + Authentification à deux facteurs + + + + + Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 + + + user.edit.tfa.google_active + Application d'authentification active + + + + + Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 + Part-DB1\templates\Users\backup_codes.html.twig:15 + Part-DB1\templates\Users\_2fa_settings.html.twig:95 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 + Part-DB1\templates\Users\backup_codes.html.twig:15 + Part-DB1\templates\Users\_2fa_settings.html.twig:95 + + + tfa_backup.remaining_tokens + Nombre de codes de secours restant + + + + + Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 + Part-DB1\templates\Users\backup_codes.html.twig:17 + Part-DB1\templates\Users\_2fa_settings.html.twig:96 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 + Part-DB1\templates\Users\backup_codes.html.twig:17 + Part-DB1\templates\Users\_2fa_settings.html.twig:96 + + + tfa_backup.generation_date + Date de génération des codes de secours + + + + + Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 + + + user.edit.tfa.disabled + Méthode désactivée + + + + + Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 + + + user.edit.tfa.u2f_keys_count + Clés de sécurité actives + + + + + Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 + + + user.edit.tfa.disable_tfa_title + Voulez vous vraiment poursuivre ? + + + + + Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 + + + user.edit.tfa.disable_tfa_message + Cela désactivera <b> toutes les méthodes d'authentification à deux facteurs de l'utilisateur</b> et supprimera <b>les codes de secours</b>! +<br> +L'utilisateur devra configurer à nouveau toutes les méthodes d'authentification à deux facteurs et créer de nouveaux codes de secours!<br><br> +<b>Ne faites ceci qu'en étant sûr de l'identité de l'utilisateur (ayant besoin d'aide),autrement le compte pourrai être compromis!</b> + + + + + Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 + + + user.edit.tfa.disable_tfa.btn + Désactiver toutes les méthodes d'authentification à deux facteurs + + + + + Part-DB1\templates\AdminPages\UserAdmin.html.twig:85 + new + + + user.edit + Modifier l'utilisateur + + + + + Part-DB1\templates\AdminPages\UserAdmin.html.twig:89 + new + + + user.new + Nouvel utilisateur + + + + + Part-DB1\templates\AdminPages\_attachments.html.twig:4 + Part-DB1\templates\Parts\edit\_attachments.html.twig:4 + Part-DB1\templates\AdminPages\_attachments.html.twig:4 + Part-DB1\templates\Parts\edit\_attachments.html.twig:4 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:63 + + + attachment.delete + Supprimer + + + + + Part-DB1\templates\AdminPages\_attachments.html.twig:41 + Part-DB1\templates\Parts\edit\_attachments.html.twig:38 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:35 + Part-DB1\src\DataTables\AttachmentDataTable.php:159 + Part-DB1\templates\Parts\edit\_attachments.html.twig:38 + Part-DB1\src\DataTables\AttachmentDataTable.php:159 + + + attachment.external + Externe + + + + + Part-DB1\templates\AdminPages\_attachments.html.twig:49 + Part-DB1\templates\Parts\edit\_attachments.html.twig:47 + Part-DB1\templates\AdminPages\_attachments.html.twig:47 + Part-DB1\templates\Parts\edit\_attachments.html.twig:45 + + + attachment.preview.alt + Miniature du fichier joint + + + + + Part-DB1\templates\AdminPages\_attachments.html.twig:52 + Part-DB1\templates\Parts\edit\_attachments.html.twig:50 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 + Part-DB1\templates\AdminPages\_attachments.html.twig:50 + Part-DB1\templates\Parts\edit\_attachments.html.twig:48 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:45 + + + attachment.view + Afficher + + + + + Part-DB1\templates\AdminPages\_attachments.html.twig:58 + Part-DB1\templates\Parts\edit\_attachments.html.twig:56 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:43 + Part-DB1\src\DataTables\AttachmentDataTable.php:166 + Part-DB1\templates\AdminPages\_attachments.html.twig:56 + Part-DB1\templates\Parts\edit\_attachments.html.twig:54 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:38 + Part-DB1\src\DataTables\AttachmentDataTable.php:166 + + + attachment.file_not_found + Fichier introuvable + + + + + Part-DB1\templates\AdminPages\_attachments.html.twig:66 + Part-DB1\templates\Parts\edit\_attachments.html.twig:64 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:48 + Part-DB1\templates\Parts\edit\_attachments.html.twig:62 + + + attachment.secure + Fichier joint privé + + + + + Part-DB1\templates\AdminPages\_attachments.html.twig:79 + Part-DB1\templates\Parts\edit\_attachments.html.twig:77 + Part-DB1\templates\AdminPages\_attachments.html.twig:77 + Part-DB1\templates\Parts\edit\_attachments.html.twig:75 + + + attachment.create + Ajouter un fichier joint + + + + + Part-DB1\templates\AdminPages\_attachments.html.twig:84 + Part-DB1\templates\Parts\edit\_attachments.html.twig:82 + Part-DB1\templates\Parts\edit\_lots.html.twig:33 + Part-DB1\templates\AdminPages\_attachments.html.twig:82 + Part-DB1\templates\Parts\edit\_attachments.html.twig:80 + Part-DB1\templates\Parts\edit\_lots.html.twig:33 + + + part_lot.edit.delete.confirm + Voulez vous vraiment supprimer ce stock ? Cette action ne pourra pas être annulée! + + + + + Part-DB1\templates\AdminPages\_delete_form.html.twig:2 + Part-DB1\templates\AdminPages\_delete_form.html.twig:2 + templates\AdminPages\_delete_form.html.twig:2 + + + entity.delete.confirm_title + Voulez vous vraiment supprimer %name%? + + + + + Part-DB1\templates\AdminPages\_delete_form.html.twig:3 + Part-DB1\templates\AdminPages\_delete_form.html.twig:3 + templates\AdminPages\_delete_form.html.twig:3 + + + entity.delete.message + Cette action ne pourra pas être annulée! +<br> +Les sous éléments seront déplacés vers le haut. + + + + + Part-DB1\templates\AdminPages\_delete_form.html.twig:11 + Part-DB1\templates\AdminPages\_delete_form.html.twig:11 + templates\AdminPages\_delete_form.html.twig:9 + + + entity.delete + Supprimer l'élément + + + + + Part-DB1\templates\AdminPages\_delete_form.html.twig:16 + Part-DB1\templates\Parts\info\_tools.html.twig:45 + Part-DB1\src\Form\Part\PartBaseType.php:286 + Part-DB1\templates\AdminPages\_delete_form.html.twig:16 + Part-DB1\templates\Parts\info\_tools.html.twig:43 + Part-DB1\src\Form\Part\PartBaseType.php:267 + new + + + edit.log_comment + Éditer le commentaire + + + + + Part-DB1\templates\AdminPages\_delete_form.html.twig:24 + Part-DB1\templates\AdminPages\_delete_form.html.twig:24 + templates\AdminPages\_delete_form.html.twig:12 + + + entity.delete.recursive + Suppression récursive (tous les sous éléments) + + + + + Part-DB1\templates\AdminPages\_duplicate.html.twig:3 + + + entity.duplicate + Dupliquer l’élément + + + + + Part-DB1\templates\AdminPages\_export_form.html.twig:4 + Part-DB1\src\Form\AdminPages\ImportType.php:76 + Part-DB1\templates\AdminPages\_export_form.html.twig:4 + Part-DB1\src\Form\AdminPages\ImportType.php:76 + templates\AdminPages\_export_form.html.twig:4 + src\Form\ImportType.php:67 + + + export.format + Format de fichier + + + + + Part-DB1\templates\AdminPages\_export_form.html.twig:16 + Part-DB1\templates\AdminPages\_export_form.html.twig:16 + templates\AdminPages\_export_form.html.twig:16 + + + export.level + Niveau de verbosité + + + + + Part-DB1\templates\AdminPages\_export_form.html.twig:19 + Part-DB1\templates\AdminPages\_export_form.html.twig:19 + templates\AdminPages\_export_form.html.twig:19 + + + export.level.simple + Simple + + + + + Part-DB1\templates\AdminPages\_export_form.html.twig:20 + Part-DB1\templates\AdminPages\_export_form.html.twig:20 + templates\AdminPages\_export_form.html.twig:20 + + + export.level.extended + Étendu + + + + + Part-DB1\templates\AdminPages\_export_form.html.twig:21 + Part-DB1\templates\AdminPages\_export_form.html.twig:21 + templates\AdminPages\_export_form.html.twig:21 + + + export.level.full + Complet + + + + + Part-DB1\templates\AdminPages\_export_form.html.twig:31 + Part-DB1\templates\AdminPages\_export_form.html.twig:31 + templates\AdminPages\_export_form.html.twig:31 + + + export.include_children + Exporter également les sous éléments + + + + + Part-DB1\templates\AdminPages\_export_form.html.twig:39 + Part-DB1\templates\AdminPages\_export_form.html.twig:39 + templates\AdminPages\_export_form.html.twig:39 + + + export.btn + Exporter + + + + + Part-DB1\templates\AdminPages\_info.html.twig:4 + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 + Part-DB1\templates\Parts\info\show_part_info.html.twig:24 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 + Part-DB1\templates\AdminPages\_info.html.twig:4 + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 + Part-DB1\templates\Parts\info\show_part_info.html.twig:24 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 + templates\AdminPages\EntityAdminBase.html.twig:94 + templates\Parts\edit_part_info.html.twig:12 + templates\Parts\show_part_info.html.twig:11 + + + id.label + ID + + + + + Part-DB1\templates\AdminPages\_info.html.twig:11 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:76 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:77 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 + Part-DB1\templates\Parts\info\_order_infos.html.twig:69 + Part-DB1\templates\Parts\info\_sidebar.html.twig:12 + Part-DB1\templates\Parts\lists\_info_card.html.twig:77 + Part-DB1\templates\AdminPages\_info.html.twig:11 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:59 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:60 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 + Part-DB1\templates\Parts\info\_order_infos.html.twig:69 + Part-DB1\templates\Parts\info\_sidebar.html.twig:12 + Part-DB1\templates\Parts\lists\_info_card.html.twig:53 + templates\AdminPages\EntityAdminBase.html.twig:101 + templates\Parts\show_part_info.html.twig:248 + + + createdAt + Créé le + + + + + Part-DB1\templates\AdminPages\_info.html.twig:25 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 + Part-DB1\templates\Parts\info\_sidebar.html.twig:8 + Part-DB1\templates\Parts\lists\_info_card.html.twig:73 + Part-DB1\templates\AdminPages\_info.html.twig:25 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 + Part-DB1\templates\Parts\info\_sidebar.html.twig:8 + Part-DB1\templates\Parts\lists\_info_card.html.twig:49 + templates\AdminPages\EntityAdminBase.html.twig:114 + templates\Parts\show_part_info.html.twig:263 + + + lastModified + Dernière modification + + + + + Part-DB1\templates\AdminPages\_info.html.twig:38 + Part-DB1\templates\AdminPages\_info.html.twig:38 + + + entity.info.parts_count + Nombre de composants avec cet élément + + + + + Part-DB1\templates\AdminPages\_parameters.html.twig:6 + Part-DB1\templates\helper.twig:125 + Part-DB1\templates\Parts\edit\_specifications.html.twig:6 + + + specifications.property + Paramètre + + + + + Part-DB1\templates\AdminPages\_parameters.html.twig:7 + Part-DB1\templates\Parts\edit\_specifications.html.twig:7 + + + specifications.symbol + Symbole + + + + + Part-DB1\templates\AdminPages\_parameters.html.twig:8 + Part-DB1\templates\Parts\edit\_specifications.html.twig:8 + + + specifications.value_min + Min. + + + + + Part-DB1\templates\AdminPages\_parameters.html.twig:9 + Part-DB1\templates\Parts\edit\_specifications.html.twig:9 + + + specifications.value_typ + Typ. + + + + + Part-DB1\templates\AdminPages\_parameters.html.twig:10 + Part-DB1\templates\Parts\edit\_specifications.html.twig:10 + + + specifications.value_max + Max. + + + + + Part-DB1\templates\AdminPages\_parameters.html.twig:11 + Part-DB1\templates\Parts\edit\_specifications.html.twig:11 + + + specifications.unit + Unité + + + + + Part-DB1\templates\AdminPages\_parameters.html.twig:12 + Part-DB1\templates\Parts\edit\_specifications.html.twig:12 + + + specifications.text + Texte + + + + + Part-DB1\templates\AdminPages\_parameters.html.twig:13 + Part-DB1\templates\Parts\edit\_specifications.html.twig:13 + + + specifications.group + Groupe + + + + + Part-DB1\templates\AdminPages\_parameters.html.twig:26 + Part-DB1\templates\Parts\edit\_specifications.html.twig:26 + + + specification.create + Nouveau paramètre + + + + + Part-DB1\templates\AdminPages\_parameters.html.twig:31 + Part-DB1\templates\Parts\edit\_specifications.html.twig:31 + + + parameter.delete.confirm + Souhaitez-vous vraiment supprimer ce paramètre ? + + + + + Part-DB1\templates\attachment_list.html.twig:3 + Part-DB1\templates\attachment_list.html.twig:3 + + + attachment.list.title + Liste des fichiers joints + + + + + Part-DB1\templates\attachment_list.html.twig:10 + Part-DB1\templates\LogSystem\_log_table.html.twig:8 + Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 + Part-DB1\templates\attachment_list.html.twig:10 + Part-DB1\templates\LogSystem\_log_table.html.twig:8 + Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 + + + part_list.loading.caption + Chargement + + + + + Part-DB1\templates\attachment_list.html.twig:11 + Part-DB1\templates\LogSystem\_log_table.html.twig:9 + Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 + Part-DB1\templates\attachment_list.html.twig:11 + Part-DB1\templates\LogSystem\_log_table.html.twig:9 + Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 + + + part_list.loading.message + Cela peut prendre un moment.Si ce message ne disparaît pas, essayez de recharger la page. + + + + + Part-DB1\templates\base.html.twig:68 + Part-DB1\templates\base.html.twig:68 + templates\base.html.twig:246 + + + vendor.base.javascript_hint + Activez Javascipt pour profiter de toutes les fonctionnalités! + + + + + Part-DB1\templates\base.html.twig:73 + Part-DB1\templates\base.html.twig:73 + + + sidebar.big.toggle + Afficher/Cacher le panneau latéral +Show/Hide sidebar + + + + + Part-DB1\templates\base.html.twig:95 + Part-DB1\templates\base.html.twig:95 + templates\base.html.twig:271 + + + loading.caption + Chargement: + + + + + Part-DB1\templates\base.html.twig:96 + Part-DB1\templates\base.html.twig:96 + templates\base.html.twig:272 + + + loading.message + Cela peut prendre un moment.Si ce message ne disparaît pas, essayez de recharger la page. + + + + + Part-DB1\templates\base.html.twig:101 + Part-DB1\templates\base.html.twig:101 + templates\base.html.twig:277 + + + loading.bar + Chargement... + + + + + Part-DB1\templates\base.html.twig:112 + Part-DB1\templates\base.html.twig:112 + templates\base.html.twig:288 + + + back_to_top + Retour en haut de page + + + + + Part-DB1\templates\Form\permissionLayout.html.twig:35 + Part-DB1\templates\Form\permissionLayout.html.twig:35 + + + permission.edit.permission + Permissions + + + + + Part-DB1\templates\Form\permissionLayout.html.twig:36 + Part-DB1\templates\Form\permissionLayout.html.twig:36 + + + permission.edit.value + Valeur + + + + + Part-DB1\templates\Form\permissionLayout.html.twig:53 + Part-DB1\templates\Form\permissionLayout.html.twig:53 + + + permission.legend.title + Explication des états: + + + + + Part-DB1\templates\Form\permissionLayout.html.twig:57 + Part-DB1\templates\Form\permissionLayout.html.twig:57 + + + permission.legend.disallow + Interdire + + + + + Part-DB1\templates\Form\permissionLayout.html.twig:61 + Part-DB1\templates\Form\permissionLayout.html.twig:61 + + + permission.legend.allow + Autoriser + + + + + Part-DB1\templates\Form\permissionLayout.html.twig:65 + Part-DB1\templates\Form\permissionLayout.html.twig:65 + + + permission.legend.inherit + Hériter du groupe (parent) + + + + + Part-DB1\templates\helper.twig:3 + Part-DB1\templates\helper.twig:3 + + + bool.true + Vrai + + + + + Part-DB1\templates\helper.twig:5 + Part-DB1\templates\helper.twig:5 + + + bool.false + Faux + + + + + Part-DB1\templates\helper.twig:92 + Part-DB1\templates\helper.twig:87 + + + Yes + Oui + + + + + Part-DB1\templates\helper.twig:94 + Part-DB1\templates\helper.twig:89 + + + No + Non + + + + + Part-DB1\templates\helper.twig:126 + + + specifications.value + Valeur + + + + + Part-DB1\templates\homepage.html.twig:7 + Part-DB1\templates\homepage.html.twig:7 + templates\homepage.html.twig:7 + + + version.caption + Version + + + + + Part-DB1\templates\homepage.html.twig:22 + Part-DB1\templates\homepage.html.twig:22 + templates\homepage.html.twig:19 + + + homepage.license + Information de license + + + + + Part-DB1\templates\homepage.html.twig:31 + Part-DB1\templates\homepage.html.twig:31 + templates\homepage.html.twig:28 + + + homepage.github.caption + Page du projet + + + + + Part-DB1\templates\homepage.html.twig:31 + Part-DB1\templates\homepage.html.twig:31 + templates\homepage.html.twig:28 + + + homepage.github.text + Retrouvez les téléchargements, report de bugs, to-do-list etc. sur <a href="%href%" class="link-external" target="_blank">la page du projet GitHub</a> + + + + + Part-DB1\templates\homepage.html.twig:32 + Part-DB1\templates\homepage.html.twig:32 + templates\homepage.html.twig:29 + + + homepage.help.caption + Aide + + + + + Part-DB1\templates\homepage.html.twig:32 + Part-DB1\templates\homepage.html.twig:32 + templates\homepage.html.twig:29 + + + homepage.help.text + De l'aide et des conseils sont disponibles sur le Wiki de la <a href="%href%" class="link-external" target="_blank">page GitHub</a> + + + + + Part-DB1\templates\homepage.html.twig:33 + Part-DB1\templates\homepage.html.twig:33 + templates\homepage.html.twig:30 + + + homepage.forum.caption + Forum + + + + + Part-DB1\templates\homepage.html.twig:45 + Part-DB1\templates\homepage.html.twig:45 + new + + + homepage.last_activity + Activité récente + + + + + Part-DB1\templates\LabelSystem\dialog.html.twig:3 + Part-DB1\templates\LabelSystem\dialog.html.twig:6 + + + label_generator.title + Générateur d'étiquettes + + + + + Part-DB1\templates\LabelSystem\dialog.html.twig:16 + + + label_generator.common + Commun + + + + + Part-DB1\templates\LabelSystem\dialog.html.twig:20 + + + label_generator.advanced + Avancé + + + + + Part-DB1\templates\LabelSystem\dialog.html.twig:24 + + + label_generator.profiles + Profils + + + + + Part-DB1\templates\LabelSystem\dialog.html.twig:58 + + + label_generator.selected_profile + Profil actuellement sélectionné + + + + + Part-DB1\templates\LabelSystem\dialog.html.twig:62 + + + label_generator.edit_profile + Modifier le profil + + + + + Part-DB1\templates\LabelSystem\dialog.html.twig:75 + + + label_generator.load_profile + Charger le profil + + + + + Part-DB1\templates\LabelSystem\dialog.html.twig:102 + + + label_generator.download + Télécharger + + + + + Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:3 + Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:5 + + + label_generator.label_btn + Générer une étiquette + + + + + Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:20 + + + label_generator.label_empty + Nouvelle étiquette vide + + + + + Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:3 + + + label_scanner.title + Lecteur d'étiquettes + + + + + Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 + + + label_scanner.no_cam_found.title + Aucune webcam trouvée + + + + + Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 + + + label_scanner.no_cam_found.text + Vous devez disposer d'une webcam et donner l'autorisation d'utiliser la fonction de scanner. Vous pouvez entrer le code à barres manuellement ci-dessous. + + + + + Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:27 + + + label_scanner.source_select + Sélectionnez une source + + + + + Part-DB1\templates\LogSystem\log_list.html.twig:3 + Part-DB1\templates\LogSystem\log_list.html.twig:3 + + + log.list.title + Journal système + + + + + Part-DB1\templates\LogSystem\_log_table.html.twig:1 + Part-DB1\templates\LogSystem\_log_table.html.twig:1 + new + + + log.undo.confirm_title + Annuler le changement / revenir à une date antérieure ? + + + + + Part-DB1\templates\LogSystem\_log_table.html.twig:2 + Part-DB1\templates\LogSystem\_log_table.html.twig:2 + new + + + log.undo.confirm_message + Voulez-vous annuler la modification donnée / réinitialiser l'élément à une date donnée ? + + + + + Part-DB1\templates\mail\base.html.twig:24 + Part-DB1\templates\mail\base.html.twig:24 + + + mail.footer.email_sent_by + Cet email a été envoyé automatiquement par + + + + + Part-DB1\templates\mail\base.html.twig:24 + Part-DB1\templates\mail\base.html.twig:24 + + + mail.footer.dont_reply + Ne répondez pas à cet email. + + + + + Part-DB1\templates\mail\pw_reset.html.twig:6 + Part-DB1\templates\mail\pw_reset.html.twig:6 + + + email.hi %name% + Bonjour %name% + + + + + Part-DB1\templates\mail\pw_reset.html.twig:7 + Part-DB1\templates\mail\pw_reset.html.twig:7 + + + email.pw_reset.message + Quelqu’un (surement vous) a demandé une réinitialisation de votre mot de passe.Si ce n'est pas le cas, ignorez simplement cet email. + + + + + Part-DB1\templates\mail\pw_reset.html.twig:9 + Part-DB1\templates\mail\pw_reset.html.twig:9 + + + email.pw_reset.button + Cliquez ici pour réinitialiser votre mot de passe + + + + + Part-DB1\templates\mail\pw_reset.html.twig:11 + Part-DB1\templates\mail\pw_reset.html.twig:11 + + + email.pw_reset.fallback + Si cela ne fonctionne pas pour vous, allez à <a href="%url%">%url%</a> et entrez les informations suivantes + + + + + Part-DB1\templates\mail\pw_reset.html.twig:16 + Part-DB1\templates\mail\pw_reset.html.twig:16 + + + email.pw_reset.username + Nom d'utilisateur + + + + + Part-DB1\templates\mail\pw_reset.html.twig:19 + Part-DB1\templates\mail\pw_reset.html.twig:19 + + + email.pw_reset.token + Jeton + + + + + Part-DB1\templates\mail\pw_reset.html.twig:24 + Part-DB1\templates\mail\pw_reset.html.twig:24 + + + email.pw_reset.valid_unit %date% + Le jeton de réinitialisation sera valable jusqu'au <i>%date%</i>. + + + + + Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:18 + Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 + Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:78 + Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 + + + orderdetail.delete + Supprimer + + + + + 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 + Quantité minimale de commande + + + + + 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 + Prix + + + + + 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 + Pour la quantité + + + + + Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 + Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 + + + pricedetail.create + Ajouter prix + + + + + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 + templates\Parts\edit_part_info.html.twig:4 + + + part.edit.title + Éditer le composant + + + + + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 + templates\Parts\edit_part_info.html.twig:9 + + + part.edit.card_title + Éditer le composant + + + + + 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 + Général + + + + + 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 + Fabricant + + + + + 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 + Avancé + + + + + part.edit.tab.advanced.ipn.commonSectionHeader + Suggestions sans incrément de partie + + + + + part.edit.tab.advanced.ipn.partIncrementHeader + Propositions avec incréments numériques de parties + + + + + part.edit.tab.advanced.ipn.prefix.description.current-increment + Spécification IPN actuelle pour la pièce + + + + + part.edit.tab.advanced.ipn.prefix.description.increment + Prochaine spécification IPN possible basée sur une description identique de la pièce + + + + + part.edit.tab.advanced.ipn.prefix_empty.direct_category + Le préfixe IPN de la catégorie directe est vide, veuillez le spécifier dans la catégorie "%name%" + + + + + part.edit.tab.advanced.ipn.prefix.direct_category + Préfixe IPN de la catégorie directe + + + + + part.edit.tab.advanced.ipn.prefix.direct_category.increment + Préfixe IPN de la catégorie directe et d'un incrément spécifique à la partie + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.no_increment + Préfixes IPN avec un ordre hiérarchique des catégories des préfixes parents + + + + + part.edit.tab.advanced.ipn.prefix.hierarchical.increment + Préfixes IPN avec un ordre hiérarchique des catégories des préfixes parents et un incrément spécifique à la pièce + + + + + part.edit.tab.advanced.ipn.prefix.not_saved + Créez d'abord une pièce et assignez-la à une catégorie : avec les catégories existantes et leurs propres préfixes IPN, l'identifiant IPN pour la pièce peut être proposé automatiquement + + + + + 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 + + + + + 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 + Fichiers joints + + + + + 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 + Informations pour la commande + + + + + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 + + + part.edit.tab.specifications + Caractéristiques + + + + + 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 + Commentaire + + + + + 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 + Créer un nouveau composant + + + + + Part-DB1\templates\Parts\edit\_lots.html.twig:5 + Part-DB1\templates\Parts\edit\_lots.html.twig:5 + + + part_lot.delete + Supprimer + + + + + Part-DB1\templates\Parts\edit\_lots.html.twig:28 + Part-DB1\templates\Parts\edit\_lots.html.twig:28 + + + part_lot.create + Créer un inventaire + + + + + Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 + Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 + + + orderdetail.create + Ajouter un fournisseur + + + + + Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 + Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 + + + pricedetails.edit.delete.confirm + Voulez-vous vraiment supprimer ce prix ? Cela ne peut pas être défait ! + + + + + Part-DB1\templates\Parts\edit\_orderdetails.html.twig:62 + Part-DB1\templates\Parts\edit\_orderdetails.html.twig:61 + + + orderdetails.edit.delete.confirm + Voulez-vous vraiment supprimer ce fournisseur ? Cela ne peut pas être défait ! + + + + + 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 + Informations détaillées pour + + + + + 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 + + + + + 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 + Commentaire + + + + + Part-DB1\templates\Parts\info\show_part_info.html.twig:64 + + + part.info.specifications + Caractéristiques + + + + + 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 + Fichiers joints + + + + + 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 + Informations de commande + + + + + 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 + Historique + + + + + 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 + Outils + + + + + 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 + Informations complémentaires + + + + + Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 + + + attachment.name + Nom + + + + + Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 + + + attachment.attachment_type + Type de fichier joint + + + + + Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 + + + attachment.file_name + Nom du fichier + + + + + Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 + + + attachment.file_size + Taille du fichier + + + + + Part-DB1\templates\Parts\info\_attachments_info.html.twig:54 + + + attachment.preview + Aperçu de l'image + + + + + Part-DB1\templates\Parts\info\_attachments_info.html.twig:67 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:50 + + + attachment.download + Téléchargement + + + + + Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 + new + + + user.creating_user + Utilisateur qui a créé ce composant + + + + + Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 + + + Unknown + Inconnu + + + + + 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 + Accès refusé + + + + + 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 + Utilisateur qui a édité ce composant en dernier + + + + + Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 + + + part.isFavorite + Favoris + + + + + Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 + + + part.minOrderAmount + Quantité minimale de commande + + + + + 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 + Fabricant + + + + + 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 + Nom + + + + + 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 + Retour à la version actuelle + + + + + 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 + Description + + + + + 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 + Catégorie + + + + + 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 + En stock + + + + + 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 + Stock minimum + + + + + 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 + Empreinte + + + + + 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 + Prix moyen + + + + + Part-DB1\templates\Parts\info\_order_infos.html.twig:5 + Part-DB1\templates\Parts\info\_order_infos.html.twig:5 + + + part.supplier.name + Nom + + + + + Part-DB1\templates\Parts\info\_order_infos.html.twig:6 + Part-DB1\templates\Parts\info\_order_infos.html.twig:6 + + + part.supplier.partnr + Lien/Code cmd. + + + + + Part-DB1\templates\Parts\info\_order_infos.html.twig:28 + Part-DB1\templates\Parts\info\_order_infos.html.twig:28 + + + part.order.minamount + Nombre minimum + + + + + Part-DB1\templates\Parts\info\_order_infos.html.twig:29 + Part-DB1\templates\Parts\info\_order_infos.html.twig:29 + + + part.order.price + Prix + + + + + Part-DB1\templates\Parts\info\_order_infos.html.twig:31 + Part-DB1\templates\Parts\info\_order_infos.html.twig:31 + + + part.order.single_price + Prix unitaire + + + + + Part-DB1\templates\Parts\info\_order_infos.html.twig:71 + Part-DB1\templates\Parts\info\_order_infos.html.twig:71 + + + edit.caption_short + Éditer + + + + + Part-DB1\templates\Parts\info\_order_infos.html.twig:72 + Part-DB1\templates\Parts\info\_order_infos.html.twig:72 + + + delete.caption + Supprimer + + + + + Part-DB1\templates\Parts\info\_part_lots.html.twig:7 + Part-DB1\templates\Parts\info\_part_lots.html.twig:6 + + + part_lots.description + 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 + Emplacement de stockage + + + + + Part-DB1\templates\Parts\info\_part_lots.html.twig:9 + Part-DB1\templates\Parts\info\_part_lots.html.twig:8 + + + part_lots.amount + Quantité + + + + + Part-DB1\templates\Parts\info\_part_lots.html.twig:24 + Part-DB1\templates\Parts\info\_part_lots.html.twig:22 + + + part_lots.location_unknown + Emplacement de stockage inconnu + + + + + Part-DB1\templates\Parts\info\_part_lots.html.twig:31 + Part-DB1\templates\Parts\info\_part_lots.html.twig:29 + + + part_lots.instock_unknown + Quantité inconnue + + + + + Part-DB1\templates\Parts\info\_part_lots.html.twig:40 + Part-DB1\templates\Parts\info\_part_lots.html.twig:38 + + + part_lots.expiration_date + Date d'expiration + + + + + Part-DB1\templates\Parts\info\_part_lots.html.twig:48 + Part-DB1\templates\Parts\info\_part_lots.html.twig:46 + + + part_lots.is_expired + Expiré + + + + + Part-DB1\templates\Parts\info\_part_lots.html.twig:55 + Part-DB1\templates\Parts\info\_part_lots.html.twig:53 + + + part_lots.need_refill + Doit être rempli à nouveau + + + + + Part-DB1\templates\Parts\info\_picture.html.twig:15 + Part-DB1\templates\Parts\info\_picture.html.twig:15 + + + part.info.prev_picture + Image précédente + + + + + Part-DB1\templates\Parts\info\_picture.html.twig:19 + Part-DB1\templates\Parts\info\_picture.html.twig:19 + + + part.info.next_picture + Image suivante + + + + + Part-DB1\templates\Parts\info\_sidebar.html.twig:21 + Part-DB1\templates\Parts\info\_sidebar.html.twig:21 + + + part.mass.tooltip + Poids + + + + + Part-DB1\templates\Parts\info\_sidebar.html.twig:30 + Part-DB1\templates\Parts\info\_sidebar.html.twig:30 + + + part.needs_review.badge + Révision nécessaire + + + + + Part-DB1\templates\Parts\info\_sidebar.html.twig:39 + Part-DB1\templates\Parts\info\_sidebar.html.twig:39 + + + part.favorite.badge + Favoris + + + + + Part-DB1\templates\Parts\info\_sidebar.html.twig:47 + Part-DB1\templates\Parts\info\_sidebar.html.twig:47 + + + part.obsolete.badge + N'est plus disponible + + + + + Part-DB1\templates\Parts\info\_specifications.html.twig:10 + + + parameters.extracted_from_description + Automatiquement extrait de la description + + + + + Part-DB1\templates\Parts\info\_specifications.html.twig:15 + + + parameters.auto_extracted_from_comment + Automatiquement extrait du commentaire + + + + + Part-DB1\templates\Parts\info\_tools.html.twig:6 + Part-DB1\templates\Parts\info\_tools.html.twig:4 + templates\Parts\show_part_info.html.twig:125 + + + part.edit.btn + Éditer + + + + + Part-DB1\templates\Parts\info\_tools.html.twig:16 + Part-DB1\templates\Parts\info\_tools.html.twig:14 + templates\Parts\show_part_info.html.twig:135 + + + part.clone.btn + Duplication + + + + + Part-DB1\templates\Parts\info\_tools.html.twig:24 + Part-DB1\templates\Parts\lists\_action_bar.html.twig:4 + templates\Parts\show_part_info.html.twig:143 + + + part.create.btn + Créer un nouveau composant + + + + + Part-DB1\templates\Parts\info\_tools.html.twig:31 + Part-DB1\templates\Parts\info\_tools.html.twig:29 + + + part.delete.confirm_title + Voulez-vous vraiment supprimer ce composant ? + + + + + Part-DB1\templates\Parts\info\_tools.html.twig:32 + Part-DB1\templates\Parts\info\_tools.html.twig:30 + + + part.delete.message + Le composant et toutes les informations associées (stocks, fichiers joints, etc.) sont supprimés. Cela ne pourra pas être annulé. + + + + + Part-DB1\templates\Parts\info\_tools.html.twig:39 + Part-DB1\templates\Parts\info\_tools.html.twig:37 + + + part.delete + Supprimer le composant + + + + + Part-DB1\templates\Parts\lists\all_list.html.twig:4 + Part-DB1\templates\Parts\lists\all_list.html.twig:4 + + + parts_list.all.title + Tous les composants + + + + + Part-DB1\templates\Parts\lists\category_list.html.twig:4 + Part-DB1\templates\Parts\lists\category_list.html.twig:4 + + + parts_list.category.title + Composants avec catégorie + + + + + Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 + Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 + + + parts_list.footprint.title + Composants avec empreinte + + + + + Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 + Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 + + + parts_list.manufacturer.title + Composants avec fabricant + + + + + Part-DB1\templates\Parts\lists\search_list.html.twig:4 + Part-DB1\templates\Parts\lists\search_list.html.twig:4 + + + parts_list.search.title + Recherche de composants + + + + + 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 + Composants avec lieu de stockage + + + + + Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 + Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 + + + parts_list.supplier.title + Composants avec fournisseur + + + + + Part-DB1\templates\Parts\lists\tags_list.html.twig:4 + Part-DB1\templates\Parts\lists\tags_list.html.twig:4 + + + parts_list.tags.title + Composants avec tag + + + + + Part-DB1\templates\Parts\lists\_info_card.html.twig:22 + Part-DB1\templates\Parts\lists\_info_card.html.twig:17 + + + entity.info.common.tab + Général + + + + + Part-DB1\templates\Parts\lists\_info_card.html.twig:26 + Part-DB1\templates\Parts\lists\_info_card.html.twig:20 + + + entity.info.statistics.tab + Statistiques + + + + + Part-DB1\templates\Parts\lists\_info_card.html.twig:31 + + + entity.info.attachments.tab + Pièces jointes + + + + + Part-DB1\templates\Parts\lists\_info_card.html.twig:37 + + + entity.info.parameters.tab + Caractéristiques + + + + + Part-DB1\templates\Parts\lists\_info_card.html.twig:54 + Part-DB1\templates\Parts\lists\_info_card.html.twig:30 + + + entity.info.name + Nom + + + + + Part-DB1\templates\Parts\lists\_info_card.html.twig:58 + Part-DB1\templates\Parts\lists\_info_card.html.twig:96 + Part-DB1\templates\Parts\lists\_info_card.html.twig:34 + Part-DB1\templates\Parts\lists\_info_card.html.twig:67 + + + entity.info.parent + Parent + + + + + Part-DB1\templates\Parts\lists\_info_card.html.twig:70 + Part-DB1\templates\Parts\lists\_info_card.html.twig:46 + + + entity.edit.btn + Éditer + + + + + Part-DB1\templates\Parts\lists\_info_card.html.twig:92 + Part-DB1\templates\Parts\lists\_info_card.html.twig:63 + + + entity.info.children_count + Nombre de sous-éléments + + + + + Part-DB1\templates\security\2fa_base_form.html.twig:3 + Part-DB1\templates\security\2fa_base_form.html.twig:5 + Part-DB1\templates\security\2fa_base_form.html.twig:3 + Part-DB1\templates\security\2fa_base_form.html.twig:5 + + + tfa.check.title + Authentification à deux facteurs requise + + + + + Part-DB1\templates\security\2fa_base_form.html.twig:39 + Part-DB1\templates\security\2fa_base_form.html.twig:39 + + + tfa.code.trusted_pc + Il s'agit d'un ordinateur de confiance (si cette fonction est activée, aucune autre requête à deux facteurs n'est effectuée sur cet ordinateur) + + + + + Part-DB1\templates\security\2fa_base_form.html.twig:52 + Part-DB1\templates\security\login.html.twig:58 + Part-DB1\templates\security\2fa_base_form.html.twig:52 + Part-DB1\templates\security\login.html.twig:58 + + + login.btn + Connexion + + + + + Part-DB1\templates\security\2fa_base_form.html.twig:53 + Part-DB1\templates\security\U2F\u2f_login.html.twig:13 + Part-DB1\templates\_navbar.html.twig:42 + Part-DB1\templates\security\2fa_base_form.html.twig:53 + Part-DB1\templates\security\U2F\u2f_login.html.twig:13 + Part-DB1\templates\_navbar.html.twig:40 + + + user.logout + Déconnexion + + + + + Part-DB1\templates\security\2fa_form.html.twig:6 + Part-DB1\templates\security\2fa_form.html.twig:6 + + + tfa.check.code.label + Code d'application de l'authentificateur + + + + + Part-DB1\templates\security\2fa_form.html.twig:10 + Part-DB1\templates\security\2fa_form.html.twig:10 + + + tfa.check.code.help + Entrez le code à 6 chiffres de votre application d'authentification ou l'un de vos codes de secours si l'authentificateur n'est pas disponible. + + + + + Part-DB1\templates\security\login.html.twig:3 + Part-DB1\templates\security\login.html.twig:3 + templates\security\login.html.twig:3 + + + login.title + Connexion + + + + + Part-DB1\templates\security\login.html.twig:7 + Part-DB1\templates\security\login.html.twig:7 + templates\security\login.html.twig:7 + + + login.card_title + Connexion + + + + + Part-DB1\templates\security\login.html.twig:31 + Part-DB1\templates\security\login.html.twig:31 + templates\security\login.html.twig:31 + + + login.username.label + Nom d'utilisateur + + + + + Part-DB1\templates\security\login.html.twig:34 + Part-DB1\templates\security\login.html.twig:34 + templates\security\login.html.twig:34 + + + login.username.placeholder + Nom d'utilisateur + + + + + Part-DB1\templates\security\login.html.twig:38 + Part-DB1\templates\security\login.html.twig:38 + templates\security\login.html.twig:38 + + + login.password.label + Mot de passe + + + + + Part-DB1\templates\security\login.html.twig:40 + Part-DB1\templates\security\login.html.twig:40 + templates\security\login.html.twig:40 + + + login.password.placeholder + Mot de passe + + + + + Part-DB1\templates\security\login.html.twig:50 + Part-DB1\templates\security\login.html.twig:50 + templates\security\login.html.twig:50 + + + login.rememberme + Rester connecté (non recommandé sur les ordinateurs publics) + + + + + Part-DB1\templates\security\login.html.twig:64 + Part-DB1\templates\security\login.html.twig:64 + + + pw_reset.password_forget + Nom d'utilisateur/mot de passe oublié ? + + + + + 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 + Définir un nouveau mot de passe + + + + + 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 + Demander un nouveau mot de passe + + + + + Part-DB1\templates\security\U2F\u2f_login.html.twig:7 + Part-DB1\templates\security\U2F\u2f_register.html.twig:10 + Part-DB1\templates\security\U2F\u2f_login.html.twig:7 + Part-DB1\templates\security\U2F\u2f_register.html.twig:10 + + + tfa_u2f.http_warning + Vous accédez à cette page en utilisant la méthode HTTP non sécurisée, donc U2F ne fonctionnera probablement pas (message d'erreur "Bad Request"). Demandez à un administrateur de mettre en place la méthode HTTPS sécurisée si vous souhaitez utiliser des clés de sécurité. + + + + + Part-DB1\templates\security\U2F\u2f_login.html.twig:10 + Part-DB1\templates\security\U2F\u2f_register.html.twig:22 + 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 + Veuillez insérer la clé de sécurité et appuyer sur le bouton ! + + + + + 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 + Ajouter une clé de sécurité + + + + + Part-DB1\templates\security\U2F\u2f_register.html.twig:6 + Part-DB1\templates\Users\_2fa_settings.html.twig:111 + Part-DB1\templates\security\U2F\u2f_register.html.twig:6 + Part-DB1\templates\Users\_2fa_settings.html.twig:111 + + + tfa_u2f.explanation + À l'aide d'une clé de sécurité compatible U2F/FIDO (par exemple YubiKey ou NitroKey), une authentification à deux facteurs sûre et pratique peut être obtenue. Les clés de sécurité peuvent être enregistrées ici, et si une vérification à deux facteurs est nécessaire, il suffit d'insérer la clé via USB ou de la taper sur le dispositif via NFC. + + + + + 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 + Pour garantir l'accès même en cas de perte de la clé, il est recommandé d'enregistrer une deuxième clé en guise de sauvegarde et de la conserver dans un endroit sûr ! + + + + + 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 + Afficher le nom de la clé (par exemple, sauvegarde) + + + + + 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 + Ajouter une clé de sécurité + + + + + 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 + Retour aux paramètres + + + + + Part-DB1\templates\Statistics\statistics.html.twig:5 + Part-DB1\templates\Statistics\statistics.html.twig:8 + Part-DB1\templates\Statistics\statistics.html.twig:5 + Part-DB1\templates\Statistics\statistics.html.twig:8 + new + + + statistics.title + Statistiques + + + + + Part-DB1\templates\Statistics\statistics.html.twig:14 + Part-DB1\templates\Statistics\statistics.html.twig:14 + new + + + statistics.parts + Composants + + + + + Part-DB1\templates\Statistics\statistics.html.twig:19 + Part-DB1\templates\Statistics\statistics.html.twig:19 + new + + + statistics.data_structures + Structures des données + + + + + Part-DB1\templates\Statistics\statistics.html.twig:24 + Part-DB1\templates\Statistics\statistics.html.twig:24 + new + + + statistics.attachments + Fichiers joints + + + + + Part-DB1\templates\Statistics\statistics.html.twig:34 + Part-DB1\templates\Statistics\statistics.html.twig:59 + Part-DB1\templates\Statistics\statistics.html.twig:104 + Part-DB1\templates\Statistics\statistics.html.twig:34 + Part-DB1\templates\Statistics\statistics.html.twig:59 + Part-DB1\templates\Statistics\statistics.html.twig:104 + new + + + statistics.property + Propriété + + + + + Part-DB1\templates\Statistics\statistics.html.twig:35 + Part-DB1\templates\Statistics\statistics.html.twig:60 + Part-DB1\templates\Statistics\statistics.html.twig:105 + Part-DB1\templates\Statistics\statistics.html.twig:35 + Part-DB1\templates\Statistics\statistics.html.twig:60 + Part-DB1\templates\Statistics\statistics.html.twig:105 + new + + + statistics.value + Valeur + + + + + Part-DB1\templates\Statistics\statistics.html.twig:40 + Part-DB1\templates\Statistics\statistics.html.twig:40 + new + + + statistics.distinct_parts_count + Nombre de composants distincts + + + + + Part-DB1\templates\Statistics\statistics.html.twig:44 + Part-DB1\templates\Statistics\statistics.html.twig:44 + new + + + statistics.parts_instock_sum + Somme de tout les composants en stock + + + + + Part-DB1\templates\Statistics\statistics.html.twig:48 + Part-DB1\templates\Statistics\statistics.html.twig:48 + new + + + statistics.parts_with_price + Nombre de composants avec information de prix + + + + + Part-DB1\templates\Statistics\statistics.html.twig:65 + Part-DB1\templates\Statistics\statistics.html.twig:65 + new + + + statistics.categories_count + Nombre de catégories + + + + + Part-DB1\templates\Statistics\statistics.html.twig:69 + Part-DB1\templates\Statistics\statistics.html.twig:69 + new + + + statistics.footprints_count + Nombre d'empreintes + + + + + Part-DB1\templates\Statistics\statistics.html.twig:73 + Part-DB1\templates\Statistics\statistics.html.twig:73 + new + + + statistics.manufacturers_count + Nombre de fabricants + + + + + Part-DB1\templates\Statistics\statistics.html.twig:77 + Part-DB1\templates\Statistics\statistics.html.twig:77 + new + + + statistics.storelocations_count + Nombre d'emplacements de stockage + + + + + Part-DB1\templates\Statistics\statistics.html.twig:81 + Part-DB1\templates\Statistics\statistics.html.twig:81 + new + + + statistics.suppliers_count + Nombre de fournisseurs + + + + + Part-DB1\templates\Statistics\statistics.html.twig:85 + Part-DB1\templates\Statistics\statistics.html.twig:85 + new + + + statistics.currencies_count + Nombre de devises + + + + + Part-DB1\templates\Statistics\statistics.html.twig:89 + Part-DB1\templates\Statistics\statistics.html.twig:89 + new + + + statistics.measurement_units_count + Nombre d'unités de mesure + + + + + Part-DB1\templates\Statistics\statistics.html.twig:93 + Part-DB1\templates\Statistics\statistics.html.twig:93 + new + + + statistics.devices_count + Nombre de projets + + + + + Part-DB1\templates\Statistics\statistics.html.twig:110 + Part-DB1\templates\Statistics\statistics.html.twig:110 + new + + + statistics.attachment_types_count + Nombre de types de fichiers joints + + + + + Part-DB1\templates\Statistics\statistics.html.twig:114 + Part-DB1\templates\Statistics\statistics.html.twig:114 + new + + + statistics.all_attachments_count + Total des pièces jointes + + + + + Part-DB1\templates\Statistics\statistics.html.twig:118 + Part-DB1\templates\Statistics\statistics.html.twig:118 + new + + + statistics.user_uploaded_attachments_count + Nombre de fichiers joints envoyées + + + + + Part-DB1\templates\Statistics\statistics.html.twig:122 + Part-DB1\templates\Statistics\statistics.html.twig:122 + new + + + statistics.private_attachments_count + Nombre de fichiers joints privés + + + + + Part-DB1\templates\Statistics\statistics.html.twig:126 + Part-DB1\templates\Statistics\statistics.html.twig:126 + new + + + statistics.external_attachments_count + Nombre de fichiers joints externes + + + + + 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 + Codes de secours + + + + + Part-DB1\templates\Users\backup_codes.html.twig:12 + Part-DB1\templates\Users\backup_codes.html.twig:12 + + + tfa_backup.codes.explanation + Imprimez ces codes et conservez-les dans un endroit sûr ! + + + + + Part-DB1\templates\Users\backup_codes.html.twig:13 + Part-DB1\templates\Users\backup_codes.html.twig:13 + + + tfa_backup.codes.help + Si vous n'avez plus accès à votre appareil avec l'application d'authentification (smartphone perdu, perte de données, etc.), vous pouvez utiliser un de ces codes pour accéder à votre compte et éventuellement configurer une nouvelle application d'authentification. Chacun de ces codes peut être utilisé une fois, il est recommandé de supprimer les codes utilisés. Toute personne ayant accès à ces codes peut potentiellement accéder à votre compte, alors gardez-les en lieu sûr. + + + + + Part-DB1\templates\Users\backup_codes.html.twig:16 + Part-DB1\templates\Users\backup_codes.html.twig:16 + + + tfa_backup.username + Nom d'utilisateur + + + + + 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 générée le %date% + + + + + Part-DB1\templates\Users\backup_codes.html.twig:32 + Part-DB1\templates\Users\backup_codes.html.twig:32 + + + tfa_backup.codes.print + Imprimer + + + + + Part-DB1\templates\Users\backup_codes.html.twig:35 + Part-DB1\templates\Users\backup_codes.html.twig:35 + + + tfa_backup.codes.copy_clipboard + Copier dans le presse-papier + + + + + 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 + Informations sur l'utilisateur + + + + + 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 + Prénom + + + + + 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 + Nom + + + + + 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 + Email + + + + + 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 + Département + + + + + 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 + Nom d'utilisateur + + + + + 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 + Groupe + + + + + Part-DB1\templates\Users\user_info.html.twig:67 + Part-DB1\templates\Users\user_info.html.twig:67 + + + user.permissions + Autorisations + + + + + 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 + Paramètres utilisateur + + + + + 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 + Données personnelles + + + + + 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 + Configuration + + + + + 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 + Changer de mot de passe + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:6 + Part-DB1\templates\Users\_2fa_settings.html.twig:6 + + + user.settings.2fa_settings + Authentification à deux facteurs + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:13 + Part-DB1\templates\Users\_2fa_settings.html.twig:13 + + + tfa.settings.google.tab + Application d'authentification + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:17 + Part-DB1\templates\Users\_2fa_settings.html.twig:17 + + + tfa.settings.bakup.tab + Codes de secours + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:21 + Part-DB1\templates\Users\_2fa_settings.html.twig:21 + + + tfa.settings.u2f.tab + Clés de sécurité (U2F) + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:25 + Part-DB1\templates\Users\_2fa_settings.html.twig:25 + + + tfa.settings.trustedDevices.tab + Appareils de confiance + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:33 + Part-DB1\templates\Users\_2fa_settings.html.twig:33 + + + tfa_google.disable.confirm_title + Voulez-vous vraiment désactiver l'application d'authentification ? + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:33 + Part-DB1\templates\Users\_2fa_settings.html.twig:33 + + + tfa_google.disable.confirm_message + Si vous désactivez l'application d'authentification, tous les codes de sauvegarde seront supprimés, vous devrez donc peut-être les réimprimer.<br> +Notez également que sans authentification à deux facteurs, votre compte n'est pas aussi bien protégé ! + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:39 + Part-DB1\templates\Users\_2fa_settings.html.twig:39 + + + tfa_google.disabled_message + Application d'authentification désactivée + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:48 + Part-DB1\templates\Users\_2fa_settings.html.twig:48 + + + tfa_google.step.download + Télécharger une application d'authentification (par exemple <a class="link-external" target="_blank" href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2">Authentificateur Google</a> ou <a class="link-external" target="_blank" href="https://play.google.com/store/apps/details?id=org.fedorahosted.freeotp">Authentificateur FreeOTP</a>) + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:49 + Part-DB1\templates\Users\_2fa_settings.html.twig:49 + + + tfa_google.step.scan + Scannez le QR code adjacent avec l'application ou saisissez les données manuellement + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:50 + Part-DB1\templates\Users\_2fa_settings.html.twig:50 + + + tfa_google.step.input_code + Entrez le code généré dans le champ ci-dessous et confirmez + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:51 + Part-DB1\templates\Users\_2fa_settings.html.twig:51 + + + tfa_google.step.download_backup + Imprimez vos codes de secours et conservez-les dans un endroit sûr + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:58 + Part-DB1\templates\Users\_2fa_settings.html.twig:58 + + + tfa_google.manual_setup + Configuration manuelle + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:62 + Part-DB1\templates\Users\_2fa_settings.html.twig:62 + + + tfa_google.manual_setup.type + Type + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:63 + Part-DB1\templates\Users\_2fa_settings.html.twig:63 + + + tfa_google.manual_setup.username + Nom d'utilisateur + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:64 + Part-DB1\templates\Users\_2fa_settings.html.twig:64 + + + tfa_google.manual_setup.secret + 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 + Nombre de caractères + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:74 + Part-DB1\templates\Users\_2fa_settings.html.twig:74 + + + tfa_google.enabled_message + Application d'authentification activée + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:83 + Part-DB1\templates\Users\_2fa_settings.html.twig:83 + + + tfa_backup.disabled + Codes de secours désactivés. Configurez l'application d'authentification pour activer les codes de secours. + + + + + 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 + Grâce à ces codes de secours, vous pouvez accéder à votre compte même si vous perdez l'appareil avec l'application d'authentification. Imprimez les codes et conservez-les dans un endroit sûr. + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:88 + Part-DB1\templates\Users\_2fa_settings.html.twig:88 + + + tfa_backup.reset_codes.confirm_title + Etes vous sûr de vouloir réinitialiser les codes ? + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:88 + Part-DB1\templates\Users\_2fa_settings.html.twig:88 + + + tfa_backup.reset_codes.confirm_message + Cela permettra de supprimer tous les codes précédents et de générer un ensemble de nouveaux codes. Cela ne peut pas être annulé. N'oubliez pas d'imprimer les nouveaux codes et de les conserver dans un endroit sûr ! + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:91 + Part-DB1\templates\Users\_2fa_settings.html.twig:91 + + + tfa_backup.enabled + Codes de secours activés + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:99 + Part-DB1\templates\Users\_2fa_settings.html.twig:99 + + + tfa_backup.show_codes + Afficher les codes de secours + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:114 + Part-DB1\templates\Users\_2fa_settings.html.twig:114 + + + tfa_u2f.table_caption + Clés de sécurité enregistrées + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:115 + Part-DB1\templates\Users\_2fa_settings.html.twig:115 + + + tfa_u2f.delete_u2f.confirm_title + Etes vous sûr de vouloir supprimer cette clé de sécurité ? + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:116 + Part-DB1\templates\Users\_2fa_settings.html.twig:116 + + + tfa_u2f.delete_u2f.confirm_message + Si vous supprimez cette clé, il ne sera plus possible de se connecter avec cette clé. S'il ne reste aucune clé de sécurité, l'authentification à deux facteurs sera désactivée. + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:123 + Part-DB1\templates\Users\_2fa_settings.html.twig:123 + + + tfa_u2f.keys.name + Nom de la clé + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:124 + Part-DB1\templates\Users\_2fa_settings.html.twig:124 + + + tfa_u2f.keys.added_date + Date d'enregistrement + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:134 + Part-DB1\templates\Users\_2fa_settings.html.twig:134 + + + tfa_u2f.key_delete + Supprimer la clé + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:141 + Part-DB1\templates\Users\_2fa_settings.html.twig:141 + + + tfa_u2f.no_keys_registered + Aucune clé de sécurité enregistrée + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:144 + Part-DB1\templates\Users\_2fa_settings.html.twig:144 + + + tfa_u2f.add_new_key + Enregistrer une nouvelle clé de sécurité + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:148 + Part-DB1\templates\Users\_2fa_settings.html.twig:148 + + + tfa_trustedDevices.explanation + Lors de la vérification du deuxième facteur, l'ordinateur actuel peut être marqué comme étant digne de confiance, de sorte qu'il n'est plus nécessaire de procéder à des vérifications à deux facteurs sur cet ordinateur. +Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fiable, vous pouvez réinitialiser le statut de <i>tous</i> les ordinateurs ici. + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:149 + Part-DB1\templates\Users\_2fa_settings.html.twig:149 + + + tfa_trustedDevices.invalidate.confirm_title + Etes vous sûr de vouloir supprimer tous les ordinateurs de confiance ? + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:150 + Part-DB1\templates\Users\_2fa_settings.html.twig:150 + + + tfa_trustedDevices.invalidate.confirm_message + Vous devrez à nouveau procéder à une authentification à deux facteurs sur tous les ordinateurs. Assurez-vous d'avoir votre appareil à deux facteurs à portée de main. + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:154 + Part-DB1\templates\Users\_2fa_settings.html.twig:154 + + + tfa_trustedDevices.invalidate.btn + Supprimer tous les dispositifs de confiance + + + + + Part-DB1\templates\_navbar.html.twig:4 + Part-DB1\templates\_navbar.html.twig:4 + templates\base.html.twig:29 + + + sidebar.toggle + Activer/désactiver la barre latérale + + + + + Part-DB1\templates\_navbar.html.twig:22 + + + navbar.scanner.link + Scanner + + + + + Part-DB1\templates\_navbar.html.twig:38 + Part-DB1\templates\_navbar.html.twig:36 + templates\base.html.twig:97 + + + user.loggedin.label + Connecté en tant que + + + + + Part-DB1\templates\_navbar.html.twig:44 + Part-DB1\templates\_navbar.html.twig:42 + templates\base.html.twig:103 + + + user.login + Connexion + + + + + Part-DB1\templates\_navbar.html.twig:50 + Part-DB1\templates\_navbar.html.twig:48 + + + ui.toggle_darkmode + Darkmode + + + + + Part-DB1\templates\_navbar.html.twig:54 + Part-DB1\src\Form\UserSettingsType.php:97 + Part-DB1\templates\_navbar.html.twig:52 + Part-DB1\src\Form\UserSettingsType.php:97 + templates\base.html.twig:106 + src\Form\UserSettingsType.php:44 + + + user.language_select + Langue + + + + + Part-DB1\templates\_navbar_search.html.twig:4 + Part-DB1\templates\_navbar_search.html.twig:4 + templates\base.html.twig:49 + + + search.options.label + Options de recherche + + + + + Part-DB1\templates\_navbar_search.html.twig:23 + + + tags.label + Tags + + + + + Part-DB1\templates\_navbar_search.html.twig:27 + Part-DB1\src\Form\LabelOptionsType.php:68 + Part-DB1\src\Services\ElementTypeNameGenerator.php:88 + Part-DB1\src\Services\ElementTypeNameGenerator.php:88 + templates\base.html.twig:60 + templates\Parts\show_part_info.html.twig:36 + src\Form\PartType.php:77 + + + storelocation.label + Emplacement de stockage + + + + + Part-DB1\templates\_navbar_search.html.twig:36 + Part-DB1\templates\_navbar_search.html.twig:31 + templates\base.html.twig:65 + + + ordernumber.label.short + Codecmd. + + + + + Part-DB1\templates\_navbar_search.html.twig:40 + Part-DB1\src\Services\ElementTypeNameGenerator.php:89 + Part-DB1\templates\_navbar_search.html.twig:35 + Part-DB1\src\Services\ElementTypeNameGenerator.php:89 + templates\base.html.twig:67 + + + supplier.label + Fournisseur + + + + + Part-DB1\templates\_navbar_search.html.twig:57 + Part-DB1\templates\_navbar_search.html.twig:52 + templates\base.html.twig:75 + + + search.deactivateBarcode + Désa. Code barres + + + + + Part-DB1\templates\_navbar_search.html.twig:61 + Part-DB1\templates\_navbar_search.html.twig:56 + templates\base.html.twig:77 + + + search.regexmatching + Reg.Ex. Correspondance + + + + + Part-DB1\templates\_navbar_search.html.twig:68 + Part-DB1\templates\_navbar_search.html.twig:62 + + + search.submit + Rechercher! + + + + + Part-DB1\templates\_sidebar.html.twig:2 + Part-DB1\templates\_sidebar.html.twig:2 + templates\base.html.twig:165 + templates\base.html.twig:192 + templates\base.html.twig:220 + + + actions + Actions + + + + + Part-DB1\templates\_sidebar.html.twig:6 + Part-DB1\templates\_sidebar.html.twig:6 + templates\base.html.twig:169 + templates\base.html.twig:196 + templates\base.html.twig:224 + + + datasource + Source de données + + + + + Part-DB1\templates\_sidebar.html.twig:10 + Part-DB1\templates\_sidebar.html.twig:10 + templates\base.html.twig:173 + templates\base.html.twig:200 + templates\base.html.twig:228 + + + manufacturer.labelp + Fabricants + + + + + Part-DB1\templates\_sidebar.html.twig:11 + Part-DB1\templates\_sidebar.html.twig:11 + templates\base.html.twig:174 + templates\base.html.twig:201 + templates\base.html.twig:229 + + + supplier.labelp + Fournisseurs + + + + + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:213 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:293 + Part-DB1\src\Controller\PartController.php:173 + Part-DB1\src\Controller\PartController.php:293 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:181 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:243 + Part-DB1\src\Controller\PartController.php:173 + Part-DB1\src\Controller\PartController.php:268 + + + attachment.download_failed + Le téléchargement du fichier joint a échoué ! + + + + + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:222 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:190 + + + entity.edit_flash + Changements sauvegardés avec succès. + + + + + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:231 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:196 + + + entity.edit_flash.invalid + Les changements n'ont pas pu être sauvegardés ! Veuillez vérifier vos données ! + + + + + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:302 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:252 + + + entity.created_flash + Élément créé avec succès ! + + + + + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:308 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:258 + + + entity.created_flash.invalid + L'élément n'a pas pu être créé ! Vérifiez vos données ! + + + + + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:399 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:352 + src\Controller\BaseAdminController.php:154 + + + attachment_type.deleted + Élément supprimé ! + + + + + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:401 + Part-DB1\src\Controller\UserController.php:109 + Part-DB1\src\Controller\UserSettingsController.php:159 + Part-DB1\src\Controller\UserSettingsController.php:193 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:354 + Part-DB1\src\Controller\UserController.php:101 + Part-DB1\src\Controller\UserSettingsController.php:150 + Part-DB1\src\Controller\UserSettingsController.php:182 + + + csfr_invalid + Le jeton RFTS n'est pas valable ! Rechargez cette page ou contactez un administrateur si le problème persiste ! + + + + + Part-DB1\src\Controller\LabelController.php:125 + + + label_generator.no_entities_found + Aucune entité correspondant à la gamme trouvée. + + + + + Part-DB1\src\Controller\LogController.php:149 + Part-DB1\src\Controller\LogController.php:154 + new + + + log.undo.target_not_found + L'élément ciblé n'a pas pu être trouvé dans la base de données ! + + + + + Part-DB1\src\Controller\LogController.php:156 + Part-DB1\src\Controller\LogController.php:160 + new + + + log.undo.revert_success + Rétablissement réussi. + + + + + Part-DB1\src\Controller\LogController.php:176 + Part-DB1\src\Controller\LogController.php:180 + new + + + log.undo.element_undelete_success + Élément restauré avec succès. + + + + + Part-DB1\src\Controller\LogController.php:178 + Part-DB1\src\Controller\LogController.php:182 + new + + + log.undo.element_element_already_undeleted + L'élément a déjà été restauré ! + + + + + Part-DB1\src\Controller\LogController.php:185 + Part-DB1\src\Controller\LogController.php:189 + new + + + log.undo.element_delete_success + L'élément a été supprimé avec succès. + + + + + Part-DB1\src\Controller\LogController.php:187 + Part-DB1\src\Controller\LogController.php:191 + new + + + log.undo.element.element_already_delted + L'élément a déjà été supprimé ! + + + + + Part-DB1\src\Controller\LogController.php:194 + Part-DB1\src\Controller\LogController.php:198 + new + + + log.undo.element_change_undone + Annulation de la modification de l'élément + + + + + Part-DB1\src\Controller\LogController.php:196 + Part-DB1\src\Controller\LogController.php:200 + new + + + log.undo.do_undelete_before + Vous devez supprimer l'élément avant de pouvoir annuler ce changement ! + + + + + Part-DB1\src\Controller\LogController.php:199 + Part-DB1\src\Controller\LogController.php:203 + new + + + log.undo.log_type_invalid + Cette entrée de journal ne peut pas être annulée ! + + + + + Part-DB1\src\Controller\PartController.php:182 + Part-DB1\src\Controller\PartController.php:182 + src\Controller\PartController.php:80 + + + part.edited_flash + Changements sauvegardés ! + + + + + Part-DB1\src\Controller\PartController.php:186 + Part-DB1\src\Controller\PartController.php:186 + + + part.edited_flash.invalid + Erreur lors de l'enregistrement : Vérifiez vos données ! + + + + + Part-DB1\src\Controller\PartController.php:216 + Part-DB1\src\Controller\PartController.php:219 + + + part.deleted + Composant supprimé avec succès. + + + + + Part-DB1\src\Controller\PartController.php:302 + Part-DB1\src\Controller\PartController.php:277 + Part-DB1\src\Controller\PartController.php:317 + src\Controller\PartController.php:113 + src\Controller\PartController.php:142 + + + part.created_flash + Composants créés avec succès ! + + + + + Part-DB1\src\Controller\PartController.php:308 + Part-DB1\src\Controller\PartController.php:283 + + + part.created_flash.invalid + Erreur lors de la création : Vérifiez vos données ! + + + + + Part-DB1\src\Controller\ScanController.php:68 + Part-DB1\src\Controller\ScanController.php:90 + + + scan.qr_not_found + Aucun élément trouvé pour le code-barres donné. + + + + + Part-DB1\src\Controller\ScanController.php:71 + + + scan.format_unknown + Format inconnu ! + + + + + Part-DB1\src\Controller\ScanController.php:86 + + + scan.qr_success + Élément trouvé. + + + + + Part-DB1\src\Controller\SecurityController.php:114 + Part-DB1\src\Controller\SecurityController.php:109 + + + pw_reset.user_or_email + Nom d'utilisateur / Email + + + + + Part-DB1\src\Controller\SecurityController.php:131 + Part-DB1\src\Controller\SecurityController.php:126 + + + pw_reset.request.success + Demande de mot de passe réussie ! Consultez vos e-mails pour plus d'informations. + + + + + Part-DB1\src\Controller\SecurityController.php:162 + Part-DB1\src\Controller\SecurityController.php:160 + + + pw_reset.username + Nom d'utilisateur + + + + + Part-DB1\src\Controller\SecurityController.php:165 + Part-DB1\src\Controller\SecurityController.php:163 + + + pw_reset.token + Jeton + + + + + Part-DB1\src\Controller\SecurityController.php:194 + Part-DB1\src\Controller\SecurityController.php:192 + + + pw_reset.new_pw.error + Nom d'utilisateur ou jeton invalide ! Veuillez vérifier vos données. + + + + + Part-DB1\src\Controller\SecurityController.php:196 + Part-DB1\src\Controller\SecurityController.php:194 + + + pw_reset.new_pw.success + Le mot de passe a été réinitialisé avec succès. Vous pouvez maintenant vous connecter avec le nouveau mot de passe. + + + + + Part-DB1\src\Controller\UserController.php:107 + Part-DB1\src\Controller\UserController.php:99 + + + user.edit.reset_success + Toutes les méthodes d'authentification à deux facteurs ont été désactivées avec succès. + + + + + Part-DB1\src\Controller\UserSettingsController.php:101 + Part-DB1\src\Controller\UserSettingsController.php:92 + + + tfa_backup.no_codes_enabled + Aucun code de secours n'est activé ! + + + + + Part-DB1\src\Controller\UserSettingsController.php:138 + Part-DB1\src\Controller\UserSettingsController.php:132 + + + tfa_u2f.u2f_delete.not_existing + Il n'y a pas de clé de sécurité avec cet ID ! + + + + + Part-DB1\src\Controller\UserSettingsController.php:145 + Part-DB1\src\Controller\UserSettingsController.php:139 + + + tfa_u2f.u2f_delete.access_denied + Vous ne pouvez pas supprimer les clés de sécurité des autres utilisateurs ! + + + + + Part-DB1\src\Controller\UserSettingsController.php:153 + Part-DB1\src\Controller\UserSettingsController.php:147 + + + tfa.u2f.u2f_delete.success + Clé de sécurité retirée avec succès. + + + + + Part-DB1\src\Controller\UserSettingsController.php:188 + Part-DB1\src\Controller\UserSettingsController.php:180 + + + tfa_trustedDevice.invalidate.success + Les appareils de confiance ont été réinitialisés avec succès. + + + + + Part-DB1\src\Controller\UserSettingsController.php:235 + Part-DB1\src\Controller\UserSettingsController.php:226 + src\Controller\UserController.php:98 + + + user.settings.saved_flash + Paramètres sauvegardés ! + + + + + Part-DB1\src\Controller\UserSettingsController.php:297 + Part-DB1\src\Controller\UserSettingsController.php:288 + src\Controller\UserController.php:130 + + + user.settings.pw_changed_flash + Mot de passe changé ! + + + + + Part-DB1\src\Controller\UserSettingsController.php:317 + Part-DB1\src\Controller\UserSettingsController.php:306 + + + user.settings.2fa.google.activated + L'application d'authentification a été activée avec succès. + + + + + Part-DB1\src\Controller\UserSettingsController.php:328 + Part-DB1\src\Controller\UserSettingsController.php:315 + + + user.settings.2fa.google.disabled + L'application d'authentification a été désactivée avec succès. + + + + + Part-DB1\src\Controller\UserSettingsController.php:346 + Part-DB1\src\Controller\UserSettingsController.php:332 + + + user.settings.2fa.backup_codes.regenerated + De nouveaux codes de secours ont été générés avec succès. + + + + + Part-DB1\src\DataTables\AttachmentDataTable.php:148 + Part-DB1\src\DataTables\AttachmentDataTable.php:148 + + + attachment.table.filename + Nom du fichier + + + + + Part-DB1\src\DataTables\AttachmentDataTable.php:153 + Part-DB1\src\DataTables\AttachmentDataTable.php:153 + + + attachment.table.filesize + Taille du fichier + + + + + 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 + Vrai + + + + + 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 + Faux + + + + + Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:128 + Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:119 + + + log.target_deleted + Cible supprimée. + + + + + Part-DB1\src\DataTables\Column\RevertLogColumn.php:57 + Part-DB1\src\DataTables\Column\RevertLogColumn.php:60 + new + + + log.undo.undelete + Annuler la suppression + + + + + Part-DB1\src\DataTables\Column\RevertLogColumn.php:63 + Part-DB1\src\DataTables\Column\RevertLogColumn.php:66 + new + + + log.undo.undo + Annuler la modification + + + + + Part-DB1\src\DataTables\Column\RevertLogColumn.php:83 + Part-DB1\src\DataTables\Column\RevertLogColumn.php:86 + new + + + log.undo.revert + Restaurer à cette date + + + + + 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 + Horodatage + + + + + Part-DB1\src\DataTables\LogDataTable.php:183 + Part-DB1\src\DataTables\LogDataTable.php:171 + + + log.type + Type + + + + + Part-DB1\src\DataTables\LogDataTable.php:191 + Part-DB1\src\DataTables\LogDataTable.php:179 + + + log.level + Niveau + + + + + Part-DB1\src\DataTables\LogDataTable.php:200 + Part-DB1\src\DataTables\LogDataTable.php:188 + + + log.user + Utilisateur + + + + + Part-DB1\src\DataTables\LogDataTable.php:213 + Part-DB1\src\DataTables\LogDataTable.php:201 + + + log.target_type + Type de cible + + + + + Part-DB1\src\DataTables\LogDataTable.php:226 + Part-DB1\src\DataTables\LogDataTable.php:214 + + + log.target + Cible + + + + + Part-DB1\src\DataTables\LogDataTable.php:231 + Part-DB1\src\DataTables\LogDataTable.php:218 + new + + + log.extra + Extra + + + + + Part-DB1\src\DataTables\PartsDataTable.php:168 + Part-DB1\src\DataTables\PartsDataTable.php:116 + + + part.table.name + Nom + + + + + 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 + Description + + + + + Part-DB1\src\DataTables\PartsDataTable.php:185 + Part-DB1\src\DataTables\PartsDataTable.php:133 + + + part.table.category + Catégorie + + + + + Part-DB1\src\DataTables\PartsDataTable.php:190 + Part-DB1\src\DataTables\PartsDataTable.php:138 + + + part.table.footprint + Empreinte + + + + + Part-DB1\src\DataTables\PartsDataTable.php:194 + Part-DB1\src\DataTables\PartsDataTable.php:142 + + + part.table.manufacturer + Fabricant + + + + + Part-DB1\src\DataTables\PartsDataTable.php:197 + Part-DB1\src\DataTables\PartsDataTable.php:145 + + + part.table.storeLocations + Emplacement de stockage + + + + + Part-DB1\src\DataTables\PartsDataTable.php:216 + Part-DB1\src\DataTables\PartsDataTable.php:164 + + + part.table.amount + Quantité + + + + + Part-DB1\src\DataTables\PartsDataTable.php:224 + Part-DB1\src\DataTables\PartsDataTable.php:172 + + + part.table.minamount + Quantité min. + + + + + Part-DB1\src\DataTables\PartsDataTable.php:232 + Part-DB1\src\DataTables\PartsDataTable.php:180 + + + part.table.partUnit + Unité de mesure + + + + + part.table.partCustomState + État personnalisé de la pièce + + + + + Part-DB1\src\DataTables\PartsDataTable.php:236 + Part-DB1\src\DataTables\PartsDataTable.php:184 + + + part.table.addedDate + Créé le + + + + + Part-DB1\src\DataTables\PartsDataTable.php:240 + Part-DB1\src\DataTables\PartsDataTable.php:188 + + + part.table.lastModified + Dernière modification + + + + + Part-DB1\src\DataTables\PartsDataTable.php:244 + Part-DB1\src\DataTables\PartsDataTable.php:192 + + + part.table.needsReview + Révision nécessaire + + + + + Part-DB1\src\DataTables\PartsDataTable.php:251 + Part-DB1\src\DataTables\PartsDataTable.php:199 + + + part.table.favorite + Favoris + + + + + Part-DB1\src\DataTables\PartsDataTable.php:258 + Part-DB1\src\DataTables\PartsDataTable.php:206 + + + part.table.manufacturingStatus + État + + + + + 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 + Inconnu + + + + + 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 + Annoncé + + + + + 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 + Actif + + + + + 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 + Non recommandé pour les nouvelles conceptions + + + + + 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 + Fin de vie + + + + + 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 + Arrêtés + + + + + 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 + Poids + + + + + Part-DB1\src\DataTables\PartsDataTable.php:279 + Part-DB1\src\DataTables\PartsDataTable.php:227 + + + part.table.tags + Tags + + + + + Part-DB1\src\DataTables\PartsDataTable.php:283 + Part-DB1\src\DataTables\PartsDataTable.php:231 + + + part.table.attachments + Fichiers joints + + + + + Part-DB1\src\EventSubscriber\UserSystem\LoginSuccessSubscriber.php:82 + Part-DB1\src\EventSubscriber\LoginSuccessListener.php:82 + + + flash.login_successful + Connexion réussie. + + + + + 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 + Si cette option est activée, l'ensemble du processus est interrompu si des données non valides sont détectées. Si cette option n'est pas active, les entrées non valides sont ignorées et une tentative est faite pour importer les autres entrées. + + + + + Part-DB1\src\Form\AdminPages\ImportType.php:86 + Part-DB1\src\Form\AdminPages\ImportType.php:86 + src\Form\ImportType.php:70 + + + import.csv_separator + Séparateur CSV + + + + + Part-DB1\src\Form\AdminPages\ImportType.php:93 + Part-DB1\src\Form\AdminPages\ImportType.php:93 + src\Form\ImportType.php:72 + + + parent.label + Élément parent + + + + + Part-DB1\src\Form\AdminPages\ImportType.php:101 + Part-DB1\src\Form\AdminPages\ImportType.php:101 + src\Form\ImportType.php:75 + + + import.file + Fichier + + + + + Part-DB1\src\Form\AdminPages\ImportType.php:111 + Part-DB1\src\Form\AdminPages\ImportType.php:111 + src\Form\ImportType.php:78 + + + import.preserve_children + Importer également des sous-éléments + + + + + 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 + Interrompre sur donnée invalide + + + + + Part-DB1\src\Form\AdminPages\ImportType.php:132 + Part-DB1\src\Form\AdminPages\ImportType.php:132 + src\Form\ImportType.php:85 + + + import.btn + Importer + + + + + Part-DB1\src\Form\AttachmentFormType.php:113 + Part-DB1\src\Form\AttachmentFormType.php:109 + + + attachment.edit.secure_file.help + Un fichier joint marqué comme étant privé ne peut être consulté que par un utilisateur connecté qui a l'autorisation appropriée. Si cette option est activée, aucune miniature n'est générée et l'accès au fichier est plus lent. + + + + + Part-DB1\src\Form\AttachmentFormType.php:127 + Part-DB1\src\Form\AttachmentFormType.php:123 + + + attachment.edit.url.help + Il est possible de saisir ici soit l'URL d'un fichier externe, soit un mot clé pour rechercher les ressources intégrées (par exemple les empreintes). + + + + + Part-DB1\src\Form\AttachmentFormType.php:82 + Part-DB1\src\Form\AttachmentFormType.php:79 + + + attachment.edit.name + Nom + + + + + Part-DB1\src\Form\AttachmentFormType.php:85 + Part-DB1\src\Form\AttachmentFormType.php:82 + + + attachment.edit.attachment_type + Type de fichier joint + + + + + Part-DB1\src\Form\AttachmentFormType.php:94 + Part-DB1\src\Form\AttachmentFormType.php:91 + + + attachment.edit.show_in_table + Voir dans le tableau + + + + + Part-DB1\src\Form\AttachmentFormType.php:105 + Part-DB1\src\Form\AttachmentFormType.php:102 + + + attachment.edit.secure_file + Fichier joint privé + + + + + 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 + Télécharger un fichier externe + + + + + Part-DB1\src\Form\AttachmentFormType.php:146 + Part-DB1\src\Form\AttachmentFormType.php:142 + + + attachment.edit.file + Télécharger le fichier + + + + + Part-DB1\src\Form\LabelOptionsType.php:68 + Part-DB1\src\Services\ElementTypeNameGenerator.php:86 + + + part.label + Composant + + + + + Part-DB1\src\Form\LabelOptionsType.php:68 + Part-DB1\src\Services\ElementTypeNameGenerator.php:87 + + + part_lot.label + Lot de composant + + + + + Part-DB1\src\Form\LabelOptionsType.php:78 + + + label_options.barcode_type.none + Aucun + + + + + Part-DB1\src\Form\LabelOptionsType.php:78 + + + label_options.barcode_type.qr + QR Code (recommandé) + + + + + Part-DB1\src\Form\LabelOptionsType.php:78 + + + label_options.barcode_type.code128 + Code 128 (recommandé) + + + + + Part-DB1\src\Form\LabelOptionsType.php:78 + + + label_options.barcode_type.code39 + Code 39 (recommandé) + + + + + Part-DB1\src\Form\LabelOptionsType.php:78 + + + label_options.barcode_type.code93 + Code 93 + + + + + Part-DB1\src\Form\LabelOptionsType.php:78 + + + label_options.barcode_type.datamatrix + Datamatrix + + + + + Part-DB1\src\Form\LabelOptionsType.php:122 + + + label_options.lines_mode.html + Placeholders + + + + + 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 + Si vous sélectionnez Twig ici, le champ de contenu est interprété comme un modèle Twig. Voir <a href="https://twig.symfony.com/doc/3.x/templates.html">Documentation de Twig</a> et <a href="https://github.com/Part-DB/Part-DB-symfony/wiki/Labels#twig-mode">Wiki</a> pour plus d'informations. + + + + + Part-DB1\src\Form\LabelOptionsType.php:47 + + + label_options.page_size.label + Taille de l'étiquette + + + + + Part-DB1\src\Form\LabelOptionsType.php:66 + + + label_options.supported_elements.label + Type de cible + + + + + Part-DB1\src\Form\LabelOptionsType.php:75 + + + label_options.barcode_type.label + Code barre + + + + + Part-DB1\src\Form\LabelOptionsType.php:102 + + + label_profile.lines.label + Contenu + + + + + Part-DB1\src\Form\LabelOptionsType.php:111 + + + label_options.additional_css.label + Styles supplémentaires (CSS) + + + + + Part-DB1\src\Form\LabelOptionsType.php:120 + + + label_options.lines_mode.label + Parser mode + + + + + Part-DB1\src\Form\LabelOptionsType.php:51 + + + label_options.width.placeholder + Largeur + + + + + Part-DB1\src\Form\LabelOptionsType.php:60 + + + label_options.height.placeholder + Hauteur + + + + + Part-DB1\src\Form\LabelSystem\LabelDialogType.php:49 + + + label_generator.target_id.range_hint + Vous pouvez spécifier ici plusieurs ID (par exemple 1,2,3) et/ou une plage (1-3) pour générer des étiquettes pour plusieurs éléments à la fois. + + + + + Part-DB1\src\Form\LabelSystem\LabelDialogType.php:46 + + + label_generator.target_id.label + ID des cibles + + + + + Part-DB1\src\Form\LabelSystem\LabelDialogType.php:59 + + + label_generator.update + Actualisation + + + + + Part-DB1\src\Form\LabelSystem\ScanDialogType.php:36 + + + scan_dialog.input + Saisie + + + + + Part-DB1\src\Form\LabelSystem\ScanDialogType.php:44 + + + scan_dialog.submit + Soumettre + + + + + Part-DB1\src\Form\ParameterType.php:41 + + + parameters.name.placeholder + ex. Gain de courant DC + + + + + Part-DB1\src\Form\ParameterType.php:50 + + + parameters.symbol.placeholder + ex. h_{FE} + + + + + Part-DB1\src\Form\ParameterType.php:60 + + + parameters.text.placeholder + ex. Test conditions + + + + + Part-DB1\src\Form\ParameterType.php:71 + + + parameters.max.placeholder + ex. 350 + + + + + Part-DB1\src\Form\ParameterType.php:82 + + + parameters.min.placeholder + ex. 100 + + + + + Part-DB1\src\Form\ParameterType.php:93 + + + parameters.typical.placeholder + ex. 200 + + + + + Part-DB1\src\Form\ParameterType.php:103 + + + parameters.unit.placeholder + ex. V + + + + + Part-DB1\src\Form\ParameterType.php:114 + + + parameter.group.placeholder + ex. Spécifications techniques + + + + + Part-DB1\src\Form\Part\OrderdetailType.php:72 + Part-DB1\src\Form\Part\OrderdetailType.php:75 + + + orderdetails.edit.supplierpartnr + Numéro de commande + + + + + Part-DB1\src\Form\Part\OrderdetailType.php:81 + Part-DB1\src\Form\Part\OrderdetailType.php:84 + + + orderdetails.edit.supplier + Fournisseur + + + + + Part-DB1\src\Form\Part\OrderdetailType.php:87 + Part-DB1\src\Form\Part\OrderdetailType.php:90 + + + orderdetails.edit.url + Lien vers l'offre + + + + + Part-DB1\src\Form\Part\OrderdetailType.php:93 + Part-DB1\src\Form\Part\OrderdetailType.php:96 + + + orderdetails.edit.obsolete + Plus disponible + + + + + Part-DB1\src\Form\Part\OrderdetailType.php:75 + Part-DB1\src\Form\Part\OrderdetailType.php:78 + + + orderdetails.edit.supplierpartnr.placeholder + Ex. BC 547C + + + + + Part-DB1\src\Form\Part\PartBaseType.php:101 + Part-DB1\src\Form\Part\PartBaseType.php:99 + + + part.edit.name + Nom + + + + + Part-DB1\src\Form\Part\PartBaseType.php:109 + Part-DB1\src\Form\Part\PartBaseType.php:107 + + + part.edit.description + Description + + + + + Part-DB1\src\Form\Part\PartBaseType.php:120 + Part-DB1\src\Form\Part\PartBaseType.php:118 + + + part.edit.mininstock + Stock minimum + + + + + Part-DB1\src\Form\Part\PartBaseType.php:129 + Part-DB1\src\Form\Part\PartBaseType.php:127 + + + part.edit.category + Catégories + + + + + Part-DB1\src\Form\Part\PartBaseType.php:135 + Part-DB1\src\Form\Part\PartBaseType.php:133 + + + part.edit.footprint + Empreinte + + + + + Part-DB1\src\Form\Part\PartBaseType.php:142 + Part-DB1\src\Form\Part\PartBaseType.php:140 + + + part.edit.tags + Tags + + + + + Part-DB1\src\Form\Part\PartBaseType.php:154 + Part-DB1\src\Form\Part\PartBaseType.php:152 + + + part.edit.manufacturer.label + Fabricant + + + + + Part-DB1\src\Form\Part\PartBaseType.php:161 + Part-DB1\src\Form\Part\PartBaseType.php:159 + + + part.edit.manufacturer_url.label + Lien vers la page du produit + + + + + Part-DB1\src\Form\Part\PartBaseType.php:167 + Part-DB1\src\Form\Part\PartBaseType.php:165 + + + part.edit.mpn + Numéro de pièce du fabricant + + + + + Part-DB1\src\Form\Part\PartBaseType.php:173 + Part-DB1\src\Form\Part\PartBaseType.php:171 + + + part.edit.manufacturing_status + État de la fabrication + + + + + Part-DB1\src\Form\Part\PartBaseType.php:181 + Part-DB1\src\Form\Part\PartBaseType.php:179 + + + part.edit.needs_review + Révision nécessaire + + + + + Part-DB1\src\Form\Part\PartBaseType.php:189 + Part-DB1\src\Form\Part\PartBaseType.php:187 + + + part.edit.is_favorite + Favoris + + + + + Part-DB1\src\Form\Part\PartBaseType.php:197 + Part-DB1\src\Form\Part\PartBaseType.php:195 + + + part.edit.mass + Poids + + + + + Part-DB1\src\Form\Part\PartBaseType.php:203 + Part-DB1\src\Form\Part\PartBaseType.php:201 + + + part.edit.partUnit + Unité de mesure + + + + + part.edit.partCustomState + État personnalisé de la pièce + + + + + Part-DB1\src\Form\Part\PartBaseType.php:212 + Part-DB1\src\Form\Part\PartBaseType.php:210 + + + part.edit.comment + Commentaire + + + + + Part-DB1\src\Form\Part\PartBaseType.php:250 + Part-DB1\src\Form\Part\PartBaseType.php:246 + + + part.edit.master_attachment + Miniature + + + + + Part-DB1\src\Form\Part\PartBaseType.php:295 + Part-DB1\src\Form\Part\PartBaseType.php:276 + src\Form\PartType.php:91 + + + part.edit.save + Sauvegarder les modifications + + + + + Part-DB1\src\Form\Part\PartBaseType.php:296 + Part-DB1\src\Form\Part\PartBaseType.php:277 + src\Form\PartType.php:92 + + + part.edit.reset + rejeter les modifications + + + + + Part-DB1\src\Form\Part\PartBaseType.php:105 + Part-DB1\src\Form\Part\PartBaseType.php:103 + + + part.edit.name.placeholder + Ex. BC547 + + + + + Part-DB1\src\Form\Part\PartBaseType.php:115 + Part-DB1\src\Form\Part\PartBaseType.php:113 + + + part.edit.description.placeholder + Ex. NPN 45V, 0,1A, 0,5W + + + + + Part-DB1\src\Form\Part\PartBaseType.php:123 + Part-DB1\src\Form\Part\PartBaseType.php:121 + + + part.editmininstock.placeholder + Ex. 1 + + + + + Part-DB1\src\Form\Part\PartLotType.php:69 + Part-DB1\src\Form\Part\PartLotType.php:69 + + + part_lot.edit.description + Description + + + + + Part-DB1\src\Form\Part\PartLotType.php:78 + Part-DB1\src\Form\Part\PartLotType.php:78 + + + part_lot.edit.location + Emplacement de stockage + + + + + Part-DB1\src\Form\Part\PartLotType.php:89 + Part-DB1\src\Form\Part\PartLotType.php:89 + + + part_lot.edit.amount + Quantité + + + + + Part-DB1\src\Form\Part\PartLotType.php:98 + Part-DB1\src\Form\Part\PartLotType.php:97 + + + part_lot.edit.instock_unknown + Quantité inconnue + + + + + Part-DB1\src\Form\Part\PartLotType.php:109 + Part-DB1\src\Form\Part\PartLotType.php:108 + + + part_lot.edit.needs_refill + Doit être rempli + + + + + Part-DB1\src\Form\Part\PartLotType.php:120 + Part-DB1\src\Form\Part\PartLotType.php:119 + + + part_lot.edit.expiration_date + Date d'expiration + + + + + Part-DB1\src\Form\Part\PartLotType.php:128 + Part-DB1\src\Form\Part\PartLotType.php:125 + + + part_lot.edit.comment + Commentaire + + + + + Part-DB1\src\Form\Permissions\PermissionsType.php:99 + Part-DB1\src\Form\Permissions\PermissionsType.php:99 + + + perm.group.other + Divers + + + + + Part-DB1\src\Form\TFAGoogleSettingsType.php:97 + Part-DB1\src\Form\TFAGoogleSettingsType.php:97 + + + tfa_google.enable + Activer l'application d'authentification + + + + + Part-DB1\src\Form\TFAGoogleSettingsType.php:101 + Part-DB1\src\Form\TFAGoogleSettingsType.php:101 + + + tfa_google.disable + Désactiver l'application d'authentification + + + + + Part-DB1\src\Form\TFAGoogleSettingsType.php:74 + Part-DB1\src\Form\TFAGoogleSettingsType.php:74 + + + google_confirmation + Code de confirmation + + + + + Part-DB1\src\Form\UserSettingsType.php:108 + Part-DB1\src\Form\UserSettingsType.php:108 + src\Form\UserSettingsType.php:46 + + + user.timezone.label + Fuseau horaire + + + + + Part-DB1\src\Form\UserSettingsType.php:133 + Part-DB1\src\Form\UserSettingsType.php:132 + + + user.currency.label + Devise préférée + + + + + Part-DB1\src\Form\UserSettingsType.php:140 + Part-DB1\src\Form\UserSettingsType.php:139 + src\Form\UserSettingsType.php:53 + + + save + Appliquer les modifications + + + + + Part-DB1\src\Form\UserSettingsType.php:141 + Part-DB1\src\Form\UserSettingsType.php:140 + src\Form\UserSettingsType.php:54 + + + reset + Rejeter les modifications + + + + + Part-DB1\src\Form\UserSettingsType.php:104 + Part-DB1\src\Form\UserSettingsType.php:104 + src\Form\UserSettingsType.php:45 + + + user_settings.language.placeholder + Langue du serveur + + + + + Part-DB1\src\Form\UserSettingsType.php:115 + Part-DB1\src\Form\UserSettingsType.php:115 + src\Form\UserSettingsType.php:48 + + + user_settings.timezone.placeholder + Fuseau horaire du serveur + + + + + Part-DB1\src\Services\ElementTypeNameGenerator.php:79 + Part-DB1\src\Services\ElementTypeNameGenerator.php:79 + + + attachment.label + Fichier joint + + + + + Part-DB1\src\Services\ElementTypeNameGenerator.php:81 + Part-DB1\src\Services\ElementTypeNameGenerator.php:81 + + + attachment_type.label + Type de fichier joint + + + + + Part-DB1\src\Services\ElementTypeNameGenerator.php:85 + Part-DB1\src\Services\ElementTypeNameGenerator.php:85 + + + measurement_unit.label + Unité de mesure + + + + + part_custom_state.label + État personnalisé de la pièce + + + + + Part-DB1\src\Services\ElementTypeNameGenerator.php:90 + Part-DB1\src\Services\ElementTypeNameGenerator.php:90 + + + currency.label + Devise + + + + + Part-DB1\src\Services\ElementTypeNameGenerator.php:91 + Part-DB1\src\Services\ElementTypeNameGenerator.php:91 + + + orderdetail.label + Informations de commande + + + + + Part-DB1\src\Services\ElementTypeNameGenerator.php:92 + Part-DB1\src\Services\ElementTypeNameGenerator.php:92 + + + pricedetail.label + Informations sur les prix + + + + + Part-DB1\src\Services\ElementTypeNameGenerator.php:94 + Part-DB1\src\Services\ElementTypeNameGenerator.php:94 + + + user.label + Utilisateur + + + + + Part-DB1\src\Services\ElementTypeNameGenerator.php:95 + + + parameter.label + Caractéristique + + + + + Part-DB1\src\Services\ElementTypeNameGenerator.php:96 + + + label_profile.label + Profil d'étiquette + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:176 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:161 + new + + + log.element_deleted.old_name.unknown + Inconnu + + + + + Part-DB1\src\Services\MarkdownParser.php:73 + Part-DB1\src\Services\MarkdownParser.php:73 + + + markdown.loading + Chargement de la remise. Si ce message ne disparaît pas, essayez de recharger la page. + + + + + Part-DB1\src\Services\PasswordResetManager.php:98 + Part-DB1\src\Services\PasswordResetManager.php:98 + + + pw_reset.email.subject + Réinitialisation du mot de passe de votre compte Part-DB + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 + + + tree.tools.tools + Outils + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:107 + src\Services\ToolsTreeBuilder.php:74 + + + tree.tools.edit + Éditer + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:110 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 + src\Services\ToolsTreeBuilder.php:81 + + + tree.tools.show + Afficher + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:111 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 + + + tree.tools.system + Système + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:123 + + + tree.tools.tools.label_dialog + Générateur d'étiquettes + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:130 + + + tree.tools.tools.label_scanner + 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 + Types de fichier joint + + + + + 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 + Catégories + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:167 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:144 + src\Services\ToolsTreeBuilder.php:68 + + + tree.tools.edit.suppliers + Fournisseurs + + + + + 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 + Fabricants + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:179 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:156 + + + tree.tools.edit.storelocation + Emplacements de stockage + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:185 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:162 + + + tree.tools.edit.footprint + Empreintes + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:191 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:168 + + + tree.tools.edit.currency + Devises + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:174 + + + tree.tools.edit.measurement_unit + Unité de mesure + + + + + tree.tools.edit.part_custom_state + État personnalisé de la pièce + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 + + + tree.tools.edit.label_profile + Profils d'étiquettes + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:209 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:180 + + + tree.tools.edit.part + Composant + + + + + 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 + Voir tous les composants + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:232 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 + + + tree.tools.show.all_attachments + Fichiers joints + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:239 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:210 + new + + + tree.tools.show.statistics + Statistiques + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:258 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:229 + + + tree.tools.system.users + Utilisateurs + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:264 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:235 + + + tree.tools.system.groups + Groupes + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:271 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:242 + new + + + tree.tools.system.event_log + Système d'événements + + + + + Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 + Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 + src\Services\TreeBuilder.php:124 + + + entity.tree.new + Nouvel élément + + + + + Part-DB1\templates\Parts\info\_attachments_info.html.twig:34 + obsolete + + + attachment.external_file + Fichier extérieur + + + + + Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 + obsolete + + + attachment.edit + Éditer + + + + + Part-DB1\templates\_navbar.html.twig:27 + templates\base.html.twig:88 + obsolete + + + barcode.scan + Scanner un code-barres + + + + + Part-DB1\src\Form\UserSettingsType.php:119 + src\Form\UserSettingsType.php:49 + obsolete + + + user.theme.label + Thème + + + + + Part-DB1\src\Form\UserSettingsType.php:129 + src\Form\UserSettingsType.php:50 + obsolete + + + user_settings.theme.placeholder + Thème du serveur + + + + + 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 + Modification annulée + + + + + 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 + Élément restauré + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:139 + new + obsolete + + + log.element_created.original_instock + Ancien stock + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:160 + new + obsolete + + + log.element_deleted.old_name + Ancien nom + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:184 + new + obsolete + + + log.element_edited.changed_fields + Champs modifiés + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:198 + new + obsolete + + + log.instock_changed.comment + Commentaire + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:214 + new + obsolete + + + log.collection_deleted.deleted + Élément supprimé : + + + + + templates\base.html.twig:81 + obsolete + obsolete + + + go.exclamation + Allez! + + + + + templates\base.html.twig:109 + obsolete + obsolete + + + language.english + Anglais + + + + + templates\base.html.twig:112 + obsolete + obsolete + + + language.german + Allemand + + + + + obsolete + obsolete + + + flash.password_change_needed + Votre mot de passe doit être changé ! + + + + + obsolete + obsolete + + + attachment.table.type + Type de fichier joint + + + + + obsolete + obsolete + + + attachment.table.element + élément lié + + + + + obsolete + obsolete + + + attachment.edit.isPicture + Image? + + + + + obsolete + obsolete + + + attachment.edit.is3DModel + Modèle 3D? + + + + + obsolete + obsolete + + + attachment.edit.isBuiltin + Intégré? + + + + + obsolete + obsolete + + + category.edit.default_comment.placeholder + Ex. utilisé pour les alimentations à découpage + + + + + obsolete + obsolete + + + tfa_backup.regenerate_codes + Créer de nouveaux codes de secours + + + + + obsolete + obsolete + + + validator.noneofitschild.self + Un élément ne peut pas être son propre parent. + + + + + obsolete + obsolete + + + validator.noneofitschild.children + Le parent ne peut pas être un de ses propres enfants. + + + + + obsolete + obsolete + + + validator.part_lot.location_full.no_increasment + Le lieu de stockage utilisé a été marqué comme étant plein, le stock ne peut donc pas être augmenté. (Nouveau stock maximum {{old_amount}}) + + + + + obsolete + obsolete + + + validator.part_lot.location_full + L'emplacement de stockage est plein, c'est pourquoi aucun nouveau composant ne peut être ajouté. + + + + + obsolete + obsolete + + + validator.part_lot.only_existing + L'emplacement de stockage a été marqué comme "uniquement existant", donc aucun nouveau composant ne peut être ajouté. + + + + + obsolete + obsolete + + + validator.part_lot.single_part + L'emplacement de stockage a été marqué comme "Composant seul", par conséquent aucun nouveau composant ne peut être ajouté. + + + + + obsolete + obsolete + + + m_status.active.help + Le composant est actuellement en cours de production et sera produit dans un avenir proche. + + + + + obsolete + obsolete + + + m_status.announced.help + Le composant a été annoncé, mais n'est pas encore disponible. + + + + + obsolete + obsolete + + + m_status.discontinued.help + Le composant n'est plus fabriqué. + + + + + obsolete + obsolete + + + m_status.eol.help + La production de ce composant sera bientôt arrêtée. + + + + + obsolete + obsolete + + + m_status.nrfnd.help + Ce composant est actuellement en production mais n'est pas recommandé pour les nouvelles conceptions. + + + + + obsolete + obsolete + + + m_status.unknown.help + L'état de la production n'est pas connu. + + + + + obsolete + obsolete + + + flash.success + Succès + + + + + obsolete + obsolete + + + flash.error + Erreur + + + + + obsolete + obsolete + + + flash.warning + Attention + + + + + obsolete + obsolete + + + flash.notice + Remarque + + + + + obsolete + obsolete + + + flash.info + Info + + + + + obsolete + obsolete + + + validator.noLockout + Vous ne pouvez pas révoquer vous-même l'autorisation de "modifier les autorisations" pour éviter de vous verrouiller accidentellement ! + + + + + obsolete + obsolete + + + attachment_type.edit.filetype_filter + Types de fichiers autorisés + + + + + obsolete + obsolete + + + attachment_type.edit.filetype_filter.help + Vous pouvez spécifier ici une liste, séparée par des virgules, des extensions de fichiers ou des mimétapes qu'un fichier téléchargé avec ce type de pièce jointe doit avoir. Pour autoriser tous les fichiers d'images pris en charge, utilisez image/*. + + + + + obsolete + obsolete + + + attachment_type.edit.filetype_filter.placeholder + Ex. .txt, application/pdf, image/* + + + + + src\Form\PartType.php:63 + obsolete + obsolete + + + part.name.placeholder + Ex. BC547 + + + + + obsolete + obsolete + + + entity.edit.not_selectable + Non sélectionnable + + + + + obsolete + obsolete + + + entity.edit.not_selectable.help + Si cette option est activée, alors cet élément ne peut être attribué à aucun composant en tant que propriété. Utile, par exemple si cet élément doit être utilisé uniquement pour le tri. + + + + + obsolete + obsolete + + + bbcode.hint + Le BBCode peut être utilisé ici (par exemple [b]Bold[/b]) + + + + + obsolete + obsolete + + + entity.create + Créer un élément + + + + + obsolete + obsolete + + + entity.edit.save + Sauvegarder + + + + + obsolete + obsolete + + + category.edit.disable_footprints + Désactiver les empreintes + + + + + obsolete + obsolete + + + category.edit.disable_footprints.help + Si cette option est activée, la propriété Empreinte est désactivée pour tous les composants de cette catégorie. + + + + + obsolete + obsolete + + + category.edit.disable_manufacturers + Désactiver les fabricants + + + + + obsolete + obsolete + + + category.edit.disable_manufacturers.help + Si cette option est activée, la propriété fabricant est désactivée pour tous les composants de cette catégorie. + + + + + obsolete + obsolete + + + category.edit.disable_autodatasheets + Désactiver les liens automatiques des fiches techniques + + + + + obsolete + obsolete + + + category.edit.disable_autodatasheets.help + Si cette option est activée, aucun lien automatique avec la fiche technique n'est généré pour les pièces de cette catégorie. + + + + + obsolete + obsolete + + + category.edit.disable_properties + Désactiver les propriétés + + + + + obsolete + obsolete + + + category.edit.disable_properties.help + Si cette option est activée, les propriétés des composants pour tous les composants de cette catégorie sont désactivées. + + + + + obsolete + obsolete + + + category.edit.partname_hint + Indication du nom du composant + + + + + obsolete + obsolete + + + category.edit.partname_hint.placeholder + Ex. 100nF + + + + + obsolete + obsolete + + + category.edit.partname_regex + Filtre de nom + + + + + category.edit.part_ipn_prefix + Préfixe de pièce IPN + + + + + obsolete + obsolete + + + category.edit.default_description + Description par défaut + + + + + obsolete + obsolete + + + category.edit.default_description.placeholder + Ex. Condensateur, 10mmx10mm, CMS + + + + + obsolete + obsolete + + + category.edit.default_comment + Commentaire par défaut + + + + + obsolete + obsolete + + + company.edit.address + Adresse + + + + + obsolete + obsolete + + + company.edit.address.placeholder + Ex. 99 exemple de rue +exemple de ville + + + + + obsolete + obsolete + + + company.edit.phone_number + Numéro de téléphone + + + + + obsolete + obsolete + + + company.edit.phone_number.placeholder + +33 1 23 45 67 89 + + + + + obsolete + obsolete + + + company.edit.fax_number + Numéro de fax + + + + + obsolete + obsolete + + + company.edit.email + Email + + + + + obsolete + obsolete + + + company.edit.email.placeholder + Ex. contact@foo.bar + + + + + obsolete + obsolete + + + company.edit.website + Site internet + + + + + obsolete + obsolete + + + company.edit.website.placeholder + https://www.foo.bar + + + + + obsolete + obsolete + + + company.edit.auto_product_url + URL du produit + + + + + obsolete + obsolete + + + company.edit.auto_product_url.help + Si cette URL est définie, elle est utilisée pour générer l'URL d'un composant sur le site web du fabricant. Dans ce cas, %PARTNUMBER% sera remplacé par le numéro de commande. + + + + + obsolete + obsolete + + + company.edit.auto_product_url.placeholder + https://foo.bar/product/%PARTNUMBER% + + + + + obsolete + obsolete + + + currency.edit.iso_code + Code ISO + + + + + obsolete + obsolete + + + currency.edit.exchange_rate + Taux de change + + + + + obsolete + obsolete + + + footprint.edit.3d_model + Modèle 3D + + + + + obsolete + obsolete + + + mass_creation.lines + Saisie + + + + + obsolete + obsolete + + + mass_creation.lines.placeholder + Élément 1 +Élément 2 +Élément 3 + + + + + obsolete + obsolete + + + entity.mass_creation.btn + Créer + + + + + obsolete + obsolete + + + measurement_unit.edit.is_integer + Nombre entier + + + + + obsolete + obsolete + + + measurement_unit.edit.is_integer.help + Si cette option est activée, toutes les quantités dans cette unité sont arrondies à des nombres entiers. + + + + + obsolete + obsolete + + + measurement_unit.edit.use_si_prefix + Utiliser les préfixes SI + + + + + obsolete + obsolete + + + measurement_unit.edit.use_si_prefix.help + Si cette option est activée, les préfixes SI sont utilisés lors de la génération des nombres (par exemple 1,2 kg au lieu de 1200 g) + + + + + obsolete + obsolete + + + measurement_unit.edit.unit_symbol + Symbole de l'unité + + + + + obsolete + obsolete + + + measurement_unit.edit.unit_symbol.placeholder + Ex. m + + + + + obsolete + obsolete + + + storelocation.edit.is_full.label + Emplacement de stockage plein + + + + + obsolete + obsolete + + + storelocation.edit.is_full.help + Si cette option est activée, il n'est pas possible d'ajouter de nouveaux composants à ce lieu de stockage ni d'augmenter le nombre de composants existants. + + + + + obsolete + obsolete + + + storelocation.limit_to_existing.label + Limiter aux composants existants + + + + + obsolete + obsolete + + + storelocation.limit_to_existing.help + Si cette option est active, il n'est pas possible d'ajouter de nouveaux composants à ce lieu de stockage, mais il est possible d'augmenter le nombre de composants existants. + + + + + obsolete + obsolete + + + storelocation.only_single_part.label + Seulement un composant + + + + + obsolete + obsolete + + + storelocation.only_single_part.help + Si cette option est activée, cet emplacement de stockage ne peut contenir qu'un seul composant (mais une quantité quelconque). Utile pour les petits compartiments ou les distributeurs de CMS. + + + + + obsolete + obsolete + + + storelocation.storage_type.label + Type de stockage + + + + + obsolete + obsolete + + + storelocation.storage_type.help + Ici, vous pouvez sélectionner une unité de mesure qu'un composant doit avoir pour être stocké dans ce lieu de stockage. + + + + + obsolete + obsolete + + + supplier.edit.default_currency + Devise par défaut + + + + + obsolete + obsolete + + + supplier.shipping_costs.label + Frais de port + + + + + obsolete + obsolete + + + user.username.placeholder + Ex. j.doe + + + + + obsolete + obsolete + + + user.firstName.placeholder + Ex. John + + + + + obsolete + obsolete + + + user.lastName.placeholder + Ex. Doe + + + + + obsolete + obsolete + + + user.email.placeholder + j.doe@ecorp.com + + + + + obsolete + obsolete + + + user.department.placeholder + Ex. Development + + + + + obsolete + obsolete + + + user.settings.pw_new.label + Nouveau mot de passe + + + + + obsolete + obsolete + + + user.settings.pw_confirm.label + Confirmer le nouveau mot de passe + + + + + obsolete + obsolete + + + user.edit.needs_pw_change + L'utilisateur doit changer de mot de passe + + + + + obsolete + obsolete + + + user.edit.user_disabled + Utilisateur désactivé (connexion impossible) + + + + + obsolete + obsolete + + + user.create + Créer l'utilisateur + + + + + obsolete + obsolete + + + user.edit.save + Enregistrer + + + + + obsolete + obsolete + + + entity.edit.reset + Rejeter les modifications + + + + + templates\Parts\show_part_info.html.twig:166 + obsolete + obsolete + + + part.withdraw.btn + Retrait + + + + + templates\Parts\show_part_info.html.twig:171 + obsolete + obsolete + + + part.withdraw.comment: + Commentaire/objet + + + + + templates\Parts\show_part_info.html.twig:189 + obsolete + obsolete + + + part.add.caption + Ajouter composants + + + + + templates\Parts\show_part_info.html.twig:194 + obsolete + obsolete + + + part.add.btn + Ajouter + + + + + templates\Parts\show_part_info.html.twig:199 + obsolete + obsolete + + + part.add.comment + Commentaire/objet + + + + + templates\AdminPages\CompanyAdminBase.html.twig:15 + obsolete + obsolete + + + admin.comment + Commentaire + + + + + src\Form\PartType.php:83 + obsolete + obsolete + + + manufacturer_url.label + Lien vers le site du fabricant + + + + + src\Form\PartType.php:66 + obsolete + obsolete + + + part.description.placeholder + Ex. NPN 45V 0,1A 0,5W + + + + + src\Form\PartType.php:69 + obsolete + obsolete + + + part.instock.placeholder + Ex. 10 + + + + + src\Form\PartType.php:72 + obsolete + obsolete + + + part.mininstock.placeholder + Ex. 10 + + + + + obsolete + obsolete + + + part.order.price_per + Prix par + + + + + obsolete + obsolete + + + part.withdraw.caption + Retrait de composants + + + + + obsolete + obsolete + + + datatable.datatable.lengthMenu + _MENU_ + + + + + obsolete + obsolete + + + perm.group.parts + Composants + + + + + obsolete + obsolete + + + perm.group.structures + Structures des données + + + + + obsolete + obsolete + + + perm.group.system + Système + + + + + obsolete + obsolete + + + perm.parts + Général + + + + + obsolete + obsolete + + + perm.read + Afficher + + + + + obsolete + obsolete + + + perm.edit + Éditer + + + + + obsolete + obsolete + + + perm.create + Créer + + + + + obsolete + obsolete + + + perm.part.move + Changer de catégorie + + + + + obsolete + obsolete + + + perm.delete + Supprimer + + + + + obsolete + obsolete + + + perm.part.search + Rechercher + + + + + obsolete + obsolete + + + perm.part.all_parts + Liste de tous les composants + + + + + obsolete + obsolete + + + perm.part.no_price_parts + Liste des composants sans prix + + + + + obsolete + obsolete + + + perm.part.obsolete_parts + Liste des composants obsolètes + + + + + obsolete + obsolete + + + perm.part.unknown_instock_parts + Liste des composants dont le stock est inconnu + + + + + obsolete + obsolete + + + perm.part.change_favorite + Changer le statut de favori + + + + + obsolete + obsolete + + + perm.part.show_favorite + Afficher les favoris + + + + + obsolete + obsolete + + + perm.part.show_last_edit_parts + Afficher les derniers composants modifiés/ajoutés + + + + + obsolete + obsolete + + + perm.part.show_users + Afficher le dernier utilisateur ayant apporté des modifications + + + + + obsolete + obsolete + + + perm.part.show_history + Afficher l'historique + + + + + obsolete + obsolete + + + perm.part.name + Nom + + + + + obsolete + obsolete + + + perm.part.description + Description + + + + + obsolete + obsolete + + + perm.part.instock + En stock + + + + + obsolete + obsolete + + + perm.part.mininstock + Stock minimum + + + + + obsolete + obsolete + + + perm.part.comment + Commentaire + + + + + obsolete + obsolete + + + perm.part.storelocation + Emplacement de stockage + + + + + obsolete + obsolete + + + perm.part.manufacturer + Fabricant + + + + + obsolete + obsolete + + + perm.part.orderdetails + Informations pour la commande + + + + + obsolete + obsolete + + + perm.part.prices + Prix + + + + + obsolete + obsolete + + + perm.part.attachments + Fichiers joints + + + + + obsolete + obsolete + + + perm.part.order + Commandes + + + + + obsolete + obsolete + + + perm.storelocations + Emplacements de stockage + + + + + obsolete + obsolete + + + perm.move + Déplacer + + + + + obsolete + obsolete + + + perm.list_parts + Liste des composants + + + + + obsolete + obsolete + + + perm.part.footprints + Empreintes + + + + + obsolete + obsolete + + + perm.part.categories + Catégories + + + + + obsolete + obsolete + + + perm.part.supplier + Fournisseurs + + + + + obsolete + obsolete + + + perm.part.manufacturers + Fabricants + + + + + obsolete + obsolete + + + perm.part.attachment_types + Types de fichiers joints + + + + + obsolete + obsolete + + + perm.tools.import + Importer + + + + + obsolete + obsolete + + + perm.tools.labels + Étiquettes + + + + + obsolete + obsolete + + + perm.tools.calculator + Calculateur de résistance + + + + + obsolete + obsolete + + + perm.tools.footprints + Empreintes + + + + + obsolete + obsolete + + + perm.tools.ic_logos + Logos CI + + + + + obsolete + obsolete + + + perm.tools.statistics + Statistiques + + + + + obsolete + obsolete + + + perm.edit_permissions + Éditer les autorisations + + + + + obsolete + obsolete + + + perm.users.edit_user_name + Modifier le nom d'utilisateur + + + + + obsolete + obsolete + + + perm.users.edit_change_group + Modifier le groupe + + + + + obsolete + obsolete + + + perm.users.edit_infos + Editer les informations + + + + + obsolete + obsolete + + + perm.users.edit_permissions + Modifier les autorisations + + + + + obsolete + obsolete + + + perm.users.set_password + Définir le mot de passe + + + + + obsolete + obsolete + + + perm.users.change_user_settings + Changer les paramètres utilisateur + + + + + obsolete + obsolete + + + perm.database.see_status + Afficher l’état + + + + + obsolete + obsolete + + + perm.database.update_db + Actualiser la base de données + + + + + obsolete + obsolete + + + perm.database.read_db_settings + Lecture des paramètres de la base de donnée + + + + + obsolete + obsolete + + + perm.database.write_db_settings + Modifier les paramètres de la base de données + + + + + obsolete + obsolete + + + perm.config.read_config + Lecture de la configuration + + + + + obsolete + obsolete + + + perm.config.edit_config + Modifier la configuration + + + + + obsolete + obsolete + + + perm.config.server_info + Informations sur le serveur + + + + + obsolete + obsolete + + + perm.config.use_debug + Utiliser les outils de débogage + + + + + obsolete + obsolete + + + perm.show_logs + Afficher les logs + + + + + obsolete + obsolete + + + perm.delete_logs + Supprimer les logs + + + + + obsolete + obsolete + + + perm.self.edit_infos + Modifier les informations + + + + + obsolete + obsolete + + + perm.self.edit_username + Modifier le nom d'utilisateur + + + + + obsolete + obsolete + + + perm.self.show_permissions + Voir les autorisations + + + + + obsolete + obsolete + + + perm.self.show_logs + Afficher ses propres logs + + + + + obsolete + obsolete + + + perm.self.create_labels + Créer des étiquettes + + + + + obsolete + obsolete + + + perm.self.edit_options + Modifier les options + + + + + obsolete + obsolete + + + perm.self.delete_profiles + Supprimer les profils + + + + + obsolete + obsolete + + + perm.self.edit_profiles + Modifier les profils + + + + + obsolete + obsolete + + + perm.part.tools + Outils + + + + + obsolete + obsolete + + + perm.groups + Groupes + + + + + obsolete + obsolete + + + perm.users + Utilisateurs + + + + + obsolete + obsolete + + + perm.database + Base de données + + + + + obsolete + obsolete + + + perm.config + Configuration + + + + + obsolete + obsolete + + + perm.system + Système + + + + + obsolete + obsolete + + + perm.self + Propre utilisateur + + + + + obsolete + obsolete + + + perm.labels + Étiquettes + + + + + obsolete + obsolete + + + perm.part.category + Catégorie + + + + + obsolete + obsolete + + + perm.part.minamount + Quantité minimum + + + + + obsolete + obsolete + + + perm.part.footprint + Empreinte + + + + + obsolete + obsolete + + + perm.part.mpn + MPN + + + + + obsolete + obsolete + + + perm.part.status + État de la fabrication + + + + + obsolete + obsolete + + + perm.part.tags + Tags + + + + + obsolete + obsolete + + + perm.part.unit + Unité + + + + + obsolete + obsolete + + + perm.part.mass + Poids + + + + + obsolete + obsolete + + + perm.part.lots + Lots de composants + + + + + obsolete + obsolete + + + perm.show_users + Afficher le dernier utilisateur ayant apporté des modifications + + + + + obsolete + obsolete + + + perm.currencies + Devises + + + + + obsolete + obsolete + + + perm.measurement_units + Unités de mesure + + + + + perm.part_custom_states + État personnalisé du composant + + + + + obsolete + obsolete + + + user.settings.pw_old.label + Ancien mot de passe + + + + + obsolete + obsolete + + + pw_reset.submit + Réinitialiser le mot de passe + + + + + obsolete + obsolete + + + u2f_two_factor + Clé de sécurité (U2F) + + + + + obsolete + obsolete + + + google + google + + + + + obsolete + obsolete + + + tfa.provider.google + Application d'authentification + + + + + obsolete + obsolete + + + Login successful + Connexion réussie + + + + + obsolete + obsolete + + + log.type.exception + Exception + + + + + obsolete + obsolete + + + log.type.user_login + Connexion utilisateur + + + + + obsolete + obsolete + + + log.type.user_logout + Déconnexion de l’utilisateur + + + + + obsolete + obsolete + + + log.type.unknown + Inconnu + + + + + obsolete + obsolete + + + log.type.element_created + Élément créé + + + + + obsolete + obsolete + + + log.type.element_edited + Élément modifié + + + + + obsolete + obsolete + + + log.type.element_deleted + Élément supprimé + + + + + obsolete + obsolete + + + log.type.database_updated + Base de données mise à jour + + + + + obsolete + + + perm.revert_elements + Restaurer les éléments + + + + + obsolete + + + perm.show_history + Afficher l'historique + + + + + obsolete + + + perm.tools.lastActivity + Afficher l'activité récente + + + + + obsolete + + + perm.tools.timeTravel + Afficher les anciennes versions des éléments (Time travel) + + + + + obsolete + + + tfa_u2f.key_added_successful + Clé de sécurité ajoutée avec succès. + + + + + obsolete + + + Username + Nom d'utilisateur + + + + + obsolete + + + log.type.security.google_disabled + Application d'authentification désactivée + + + + + obsolete + + + log.type.security.u2f_removed + Clé de sécurité enlevée + + + + + obsolete + + + log.type.security.u2f_added + Clé de sécurité ajoutée + + + + + obsolete + + + log.type.security.backup_keys_reset + Clés de sauvegarde régénérées + + + + + obsolete + + + log.type.security.google_enabled + Application Authenticator activée + + + + + obsolete + + + log.type.security.password_changed + Mot de passe modifié + + + + + obsolete + + + log.type.security.trusted_device_reset + Appareils de confiance réinitialisés + + + + + obsolete + + + log.type.collection_element_deleted + Élément de collecte supprimé + + + + + obsolete + + + log.type.security.password_reset + Réinitialisation du mot de passe + + + + + obsolete + + + log.type.security.2fa_admin_reset + Réinitialisation à deux facteurs par l'administrateur + + + + + obsolete + + + log.type.user_not_allowed + Tentative d'accès non autorisé + + + + + obsolete + + + log.database_updated.success + Succès + + + + + obsolete + + + label_options.barcode_type.2D + 2D + + + + + obsolete + + + label_options.barcode_type.1D + 1D + + + + + obsolete + + + perm.part.parameters + Caractéristiques + + + + + obsolete + + + perm.attachment_show_private + Voir les pièces jointes privées + + + + + obsolete + + + perm.tools.label_scanner + Lecteur d'étiquettes + + + + + obsolete + + + perm.self.read_profiles + Lire les profils + + + + + obsolete + + + perm.self.create_profiles + Créer des profils + + + + + obsolete + + + perm.labels.use_twig + Utiliser le mode twig + + + + + label_profile.showInDropdown + Afficher en sélection rapide + + + + + group.edit.enforce_2fa + Imposer l'authentification à deux facteurs (2FA) + + + + + group.edit.enforce_2fa.help + Si cette option est activée, chaque membre direct de ce groupe doit configurer au moins un deuxième facteur d'authentification. Recommandé pour les groupes administratifs ayant beaucoup de permissions. + + + + + selectpicker.empty + Rien n'est sélectionné + + + + + selectpicker.nothing_selected + Rien n'est sélectionné + + + + + entity.delete.must_not_contain_parts + L'élement contient encore des parties ! Vous devez déplacer les parties pour pouvoir supprimer cet élément. + + + + + entity.delete.must_not_contain_attachments + Le type de pièce jointe contient toujours des pièces jointes. Changez leur type, pour pouvoir supprimer ce type de pièce jointe. + + + + + entity.delete.must_not_contain_prices + La devise contient encore des prix. Vous devez changer leur devise pour pouvoir supprimer cet élément. + + + + + entity.delete.must_not_contain_users + Des utilisateurs utilisent toujours ce groupe ! Changez les de groupe pour pouvoir supprimer ce groupe. + + + + + part.table.edit + Modifier + + + + + part.table.edit.title + Modifier composant + + + + + part_list.action.action.title + Sélectionnez une action + + + + + part_list.action.action.group.favorite + Statut favori + + + + + part_list.action.action.favorite + Favorable + + + + + part_list.action.action.unfavorite + Défavorable + + + + + part_list.action.action.group.change_field + Modifier le champ + + + + + part_list.action.action.change_category + Modifier la catégorie + + + + + part_list.action.action.change_footprint + Modifier l'empreinte + + + + + part_list.action.action.change_manufacturer + Modifier le fabricant + + + + + part_list.action.action.change_unit + Modifier l'unité + + + + + part_list.action.action.delete + Supprimer + + + + + part_list.action.submit + Soumettre + + + + + part_list.action.part_count + %count% composants sélectionnés + + + + + company.edit.quick.website + Ouvrir le site web + + + + + company.edit.quick.email + Envoyer un e-mail + + + + + company.edit.quick.phone + Téléphoner + + + + + company.edit.quick.fax + Envoyer une télécopie + + + + + company.fax_number.placeholder + ex. +33 12 34 56 78 90 + + + + + part.edit.save_and_clone + Sauvegarder et dupliquer + + + + + validator.file_ext_not_allowed + L'extension de fichier n'est pas autorisée pour ce type de pièce jointe. + + + + + tools.reel_calc.title + Calculateur de bobines CMS + + + + + tools.reel_calc.inner_dia + Diamètre intérieur + + + + + tools.reel_calc.outer_dia + Diamètre extérieur + + + + + tools.reel_calc.tape_thick + Épaisseur du ruban + + + + + tools.reel_calc.part_distance + Distance entre les composants + + + + + tools.reel_calc.update + Actualiser + + + + + tools.reel_calc.parts_per_meter + Composants par mètre + + + + + tools.reel_calc.result_length + Longueur de la bande + + + + + tools.reel_calc.result_amount + Nbre approximatif de composants + + + + + tools.reel_calc.outer_greater_inner_error + Erreur : Le diamètre extérieur doit être supérieur au diamètre intérieur ! + + + + + tools.reel_calc.missing_values.error + Veuillez remplir toutes les valeurs ! + + + + + tools.reel_calc.load_preset + Charger la présélection + + + + + tools.reel_calc.explanation + Ce calculateur vous donne une estimation du nombre de pièces qui restent sur une bobine de CMS. Mesurez les dimensions notées sur la bobine (ou utilisez certains des préréglages) et cliquez sur "Actualiser" pour obtenir un résultat. + + + + + perm.tools.reel_calculator + Calculateur de bobines CMS + + + + + tree.tools.tools.reel_calculator + Calculateur de bobines CMS + + + + + currency.edit.update_rate + Taux de rafraîchissement + + + + + currency.edit.exchange_rate_update.unsupported_currency + Devise non prise en charge + + + + + currency.edit.exchange_rate_update.generic_error + Erreur générique + + + + + currency.edit.exchange_rate_updated.success + Succès + + + + + homepage.forum.text + Si vous avez des questions à propos de Part-DB , rendez vous sur <a href="%href%" class="link-external" target="_blank">Github</a> + + + + + part_custom_state.new + Nouveau statut personnalisé du composant + + + + + part_custom_state.edit + Modifier le statut personnalisé du composant + + + + + log.element_edited.changed_fields.partCustomState + État personnalisé de la pièce + + + + + category.edit.part_ipn_prefix.placeholder + par ex. "B12A" + + + + + category.edit.part_ipn_prefix.help + Un préfixe suggéré lors de la saisie de l'IPN d'une pièce. + + + + diff --git a/translations/security.fr.xlf b/translations/security.fr.xlf index 337509be..334f9c21 100644 --- a/translations/security.fr.xlf +++ b/translations/security.fr.xlf @@ -10,13 +10,13 @@ saml.error.cannot_login_local_user_per_saml - Impossible de se connecter via le SSO (Single Sign On) ! + Vous ne pouvez-pas vous connecter comme utilisateur local via le SSO ! Utilisez votre mot de passe local à la place. saml.error.cannot_login_saml_user_locally - Vous ne pouvez pas utiliser l'authentification par mot de passe ! Veuillez utiliser le SSO! + Vous ne pouvez pas utiliser la connexion locale pour vous connecter via un utilisateur SAML ! Utilisez le SSO à la place. diff --git a/translations/validators.fr.xlf b/translations/validators.fr.xlf index e86ab9cc..45c992c0 100644 --- a/translations/validators.fr.xlf +++ b/translations/validators.fr.xlf @@ -1,7 +1,7 @@ - + Part-DB1\src\Entity\Attachments\AttachmentContainingDBElement.php:0 Part-DB1\src\Entity\Attachments\AttachmentType.php:0 @@ -42,7 +42,7 @@ La pièce jointe de l'aperçu doit être une image valide ! - + Part-DB1\src\Entity\Attachments\AttachmentType.php:0 Part-DB1\src\Entity\Base\AbstractCompany.php:0 @@ -87,7 +87,7 @@ Un élément portant ce nom existe déjà à ce niveau ! - + Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 @@ -107,7 +107,7 @@ La valeur doit être inférieure ou égale à la valeur type ({{ compared_value }}). - + Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 @@ -127,7 +127,7 @@ La valeur doit être inférieure à la valeur maximale ({{ compared_value }}). - + Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 @@ -147,7 +147,7 @@ La valeur doit être supérieure ou égale à la valeur type ({{ compared_value)}}. - + Part-DB1\src\Entity\UserSystem\User.php:0 Part-DB1\src\Entity\UserSystem\User.php:0 @@ -157,7 +157,7 @@ Un utilisateur portant ce nom existe déjà - + Part-DB1\src\Entity\UserSystem\User.php:0 Part-DB1\src\Entity\UserSystem\User.php:0 @@ -167,7 +167,7 @@ Le nom d'utilisateur ne doit contenir que des lettres, des chiffres, des traits de soulignement, des points, des plus ou des moins. - + obsolete @@ -176,7 +176,7 @@ Un élément ne peut pas être son propre parent. - + obsolete @@ -185,23 +185,185 @@ Le parent ne peut pas être un de ses propres enfants. - + + + validator.select_valid_category + Sélectionnez une catégorie valide ! + + + validator.part_lot.only_existing L'emplacement de stockage a été marqué comme "uniquement existant", donc aucun nouveau composant ne peut être ajouté. - + + + validator.part_lot.location_full.no_increase + Le lieu de stockage est complet, le stock ne peut donc pas être augmenté. (Nouveau stock maximum {{old_amount}}) + + + validator.part_lot.location_full L'emplacement de stockage est plein, c'est pourquoi aucun nouveau composant ne peut être ajouté. - + validator.part_lot.single_part L'emplacement de stockage a été marqué comme "Composant seul", par conséquent aucun nouveau composant ne peut être ajouté. + + + validator.attachment.must_not_be_null + La pièce jointe ne doit pas être vide ! + + + + + validator.orderdetail.supplier_must_not_be_null + Le fournisseur ne doit pas être nul ! + + + + + validator.measurement_unit.use_si_prefix_needs_unit + Pour activer les préfixes SI, il faut choisir un symbole unitaire ! + + + + + part.ipn.must_be_unique + Le numéro de pièce interne doit être unique.{{ value }} est déjà utilisé ! + + + + + validator.project.bom_entry.name_or_part_needed + Vous devez sélectionner un composant ou attribuer un nom à une entrée BOM qui n'indique pas de composant. + + + + + project.bom_entry.name_already_in_bom + Il y a déjà une entrée de BOM avec ce nom ! + + + + + project.bom_entry.part_already_in_bom + Ce composant existe déjà dans la BOM ! + + + + + project.bom_entry.mountnames_quantity_mismatch + Le nombre de noms de composants doit correspondre aux quantités de la BOM ! + + + + + project.bom_entry.can_not_add_own_builds_part + Vous ne pouvez pas ajouter un composant du projet lui-même a la BOM. + + + + + project.bom_has_to_include_all_subelement_parts + La BOM du projet dois inclure tous les composants des sous-projets. Composant %part_name% du projet %project_name% manquant ! + + + + + project.bom_entry.price_not_allowed_on_parts + Les prix ne sont pas autorisés dans les entrées de la BOM associés avec un composant. Définissez un prix sur le composant a la place. + + + + + validator.project_build.lot_bigger_than_needed + Vous avez sélectionné plus de quantités à retirer que nécessaire ! Enlevez les quantités non nécessaires. + + + + + validator.project_build.lot_smaller_than_needed + Vous avez sélectionné moins de quantités à retirer que nécessaire ! Ajoutez les quantités requises. + + + + + part.name.must_match_category_regex + Le nom du composant ne correspond pas à l'expression régulière dictée par la catégorie : %regex% + + + + + validator.attachment.name_not_blank + Rentrez une valeur ici, ou uploadez un fichier pour utiliser automatiquement le nom de fichier comme nom de pièce jointe. + + + + + validator.part_lot.owner_must_match_storage_location_owner + Le propriétaire de ce lot doit correspondre au propriétaire de l'emplacement de stockage (%owner_name%) ! + + + + + validator.part_lot.owner_must_not_be_anonymous + Un propriétaire de lot ne peut être l'utilisateur anonyme ! + + + + + validator.part_association.must_set_an_value_if_type_is_other + Si vous choisissez le type "autre", alors vous devez mettre une valeur de description pour celui-ci ! + + + + + validator.part_association.part_cannot_be_associated_with_itself + Un composant ne peut être associée à lui-même ! + + + + + validator.part_association.already_exists + L'association avec ce composant existe déjà ! + + + + + validator.part_lot.vendor_barcode_must_be_unique + Le code barre doit être unique + + + + + validator.year_2038_bug_on_32bit + Suite à des limitations techniques, il n'est pas possible de sélectionner une date après le 19-01-2038 sur les systèmes 32-bit ! + + + + + validator.fileSize.invalidFormat + Taille de fichier invalide. Utilisez un nombre avec le suffixe K, G, M pour Kilo, Mega ou Gigabytes. + + + + + validator.invalid_range + L'écart fournit est invalide ! + + + + + validator.google_code.wrong_code + Code invalide. Vérifiez que votre application d'authentification est paramétrée correctement que le serveur et périphérique d'authentification ont l'heure correcte. + + From 54f318ecac8811e021ecd36bc97c86329b4caa82 Mon Sep 17 00:00:00 2001 From: "web-devinition.de" <58172018+webdevinition@users.noreply.github.com> Date: Wed, 12 Nov 2025 21:35:02 +0100 Subject: [PATCH 006/235] Implemented the ability to set user-defined synonyms/labels for internal element types MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Implementiere bevorzugte Sprachauswahl und Datenquellen-Synonyme Die Spracheinstellungen/System-Settings wurden um die Möglichkeit ergänzt, bevorzugte Sprachen für die Dropdown-Menüs festzulegen. Zudem wurde ein Datenquellen-Synonymsystem implementiert, um benutzerfreundlichere Bezeichnungen anzuzeigen und zu personalisieren. * Anpassung aus Analyse * Entferne alten JSON-basierten Datenquellen-Synonym-Handler Die Verwaltung der Datenquellen-Synonyme wurde überarbeitet, um ein flexibleres und strukturiertes Konzept zu ermöglichen. Der bestehende JSON-basierte Ansatz wurde durch eine neue Service-basierte Architektur ersetzt, die eine bessere Handhabung und Erweiterbarkeit erlaubt. * Ermögliche Rückgabe aller möglichen Sprachoptionen in Verbindung mit den vom Nutzer freigeschalteten. * Removed unnecessary service definition The tag is applied via autoconfiguration * Use default translations for the NotBlank constraint * Started refactoring ElementTypeNameGenerator * Made ElementTypeNameGenerator class readonly * Modified form to work properly with new datastructure * Made the form more beautiful and space saving * Made synonym form even more space saving * Allow to define overrides for any element label there is * Use defined synonyms in ElementTypeNameGenerator * Use ElementTypeNameGenerator where possible * Register synonyms for element types as global translation parameters * Revert changes done to permission layout * Use new synonym system for admin page titles * Removed now unnecessary services * Reworked settings name and translation * Renamed all files to Synonyms * Removed unnecessary translations * Removed unnecessary translations * Fixed duplicate check * Renamed synoynms translations * Use our synonyms for permission translations * Fixed phpstan issue * Added tests --------- Co-authored-by: Marcel Diegelmann Co-authored-by: Jan Böhmer --- .../pages/synonyms_collection_controller.js | 68 ++++ config/packages/translation.yaml | 2 +- config/packages/twig.yaml | 4 +- config/permissions.yaml | 24 +- src/Controller/SettingsController.php | 2 +- ...ynonymsAsTranslationParametersListener.php | 93 ++++++ .../LanguageMenuEntriesType.php | 3 +- src/Form/Settings/TypeSynonymRowType.php | 142 ++++++++ .../Settings/TypeSynonymsCollectionType.php | 223 +++++++++++++ src/Form/Type/LocaleSelectType.php | 1 - src/Services/ElementTypeNameGenerator.php | 133 ++++---- src/Services/ElementTypes.php | 229 +++++++++++++ src/Services/Trees/ToolsTreeBuilder.php | 35 +- src/Services/Trees/TreeViewGenerator.php | 13 +- src/Settings/AppSettings.php | 6 + src/Settings/SynonymSettings.php | 116 +++++++ .../SystemSettings/LocalizationSettings.php | 2 +- .../SystemSettings/SystemSettings.php | 2 + src/Twig/EntityExtension.php | 2 + .../admin/attachment_type_admin.html.twig | 2 +- templates/admin/category_admin.html.twig | 4 +- templates/admin/currency_admin.html.twig | 4 +- templates/admin/footprint_admin.html.twig | 4 +- templates/admin/group_admin.html.twig | 4 +- templates/admin/label_profile_admin.html.twig | 4 +- templates/admin/manufacturer_admin.html.twig | 4 +- .../admin/measurement_unit_admin.html.twig | 2 +- .../admin/part_custom_state_admin.html.twig | 2 +- templates/admin/project_admin.html.twig | 4 +- templates/admin/storelocation_admin.html.twig | 4 +- templates/admin/supplier_admin.html.twig | 4 +- templates/admin/user_admin.html.twig | 4 +- templates/components/tree_macros.html.twig | 35 +- templates/form/synonyms_collection.html.twig | 59 ++++ .../form/vertical_bootstrap_layout.html.twig | 26 ++ templates/settings/settings.html.twig | 2 +- ...terSynonymsAsTranslationParametersTest.php | 49 +++ .../Services/ElementTypeNameGeneratorTest.php | 41 ++- tests/Services/ElementTypesTest.php | 79 +++++ tests/Settings/SynonymSettingsTest.php | 76 +++++ translations/messages.en.xlf | 312 +++++++----------- translations/messages.ru.xlf | 4 +- translations/validators.en.xlf | 10 +- 43 files changed, 1504 insertions(+), 335 deletions(-) create mode 100644 assets/controllers/pages/synonyms_collection_controller.js create mode 100644 src/EventListener/RegisterSynonymsAsTranslationParametersListener.php rename src/Form/{Type => Settings}/LanguageMenuEntriesType.php (95%) create mode 100644 src/Form/Settings/TypeSynonymRowType.php create mode 100644 src/Form/Settings/TypeSynonymsCollectionType.php create mode 100644 src/Services/ElementTypes.php create mode 100644 src/Settings/SynonymSettings.php create mode 100644 templates/form/synonyms_collection.html.twig create mode 100644 templates/form/vertical_bootstrap_layout.html.twig create mode 100644 tests/EventListener/RegisterSynonymsAsTranslationParametersTest.php create mode 100644 tests/Services/ElementTypesTest.php create mode 100644 tests/Settings/SynonymSettingsTest.php diff --git a/assets/controllers/pages/synonyms_collection_controller.js b/assets/controllers/pages/synonyms_collection_controller.js new file mode 100644 index 00000000..6b2f4811 --- /dev/null +++ b/assets/controllers/pages/synonyms_collection_controller.js @@ -0,0 +1,68 @@ +/* + * This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony). + * + * Copyright (C) 2019 - 2022 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'; + +export default class extends Controller { + static targets = ['items']; + static values = { + prototype: String, + prototypeName: { type: String, default: '__name__' }, + index: { type: Number, default: 0 }, + }; + + connect() { + if (!this.hasIndexValue || Number.isNaN(this.indexValue)) { + this.indexValue = this.itemsTarget?.children.length || 0; + } + } + + add(event) { + event.preventDefault(); + + const encodedProto = this.prototypeValue || ''; + const placeholder = this.prototypeNameValue || '__name__'; + if (!encodedProto || !this.itemsTarget) return; + + const protoHtml = this._decodeHtmlAttribute(encodedProto); + + const idx = this.indexValue; + const html = protoHtml.replace(new RegExp(placeholder, 'g'), String(idx)); + + const wrapper = document.createElement('div'); + wrapper.innerHTML = html; + const newItem = wrapper.firstElementChild; + if (newItem) { + this.itemsTarget.appendChild(newItem); + this.indexValue = idx + 1; + } + } + + remove(event) { + event.preventDefault(); + const row = event.currentTarget.closest('.tc-item'); + if (row) row.remove(); + } + + _decodeHtmlAttribute(str) { + const tmp = document.createElement('textarea'); + tmp.innerHTML = str; + return tmp.value || tmp.textContent || ''; + } +} diff --git a/config/packages/translation.yaml b/config/packages/translation.yaml index cbc1cd7e..a3f529e3 100644 --- a/config/packages/translation.yaml +++ b/config/packages/translation.yaml @@ -1,7 +1,7 @@ framework: default_locale: 'en' # Just enable the locales we need for performance reasons. - enabled_locale: '%partdb.locale_menu%' + enabled_locale: ['en', 'de', 'it', 'fr', 'ru', 'ja', 'cs', 'da', 'zh', 'pl'] translator: default_path: '%kernel.project_dir%/translations' fallbacks: diff --git a/config/packages/twig.yaml b/config/packages/twig.yaml index 674aa317..95ae4f3b 100644 --- a/config/packages/twig.yaml +++ b/config/packages/twig.yaml @@ -1,6 +1,6 @@ twig: default_path: '%kernel.project_dir%/templates' - form_themes: ['bootstrap_5_horizontal_layout.html.twig', 'form/extended_bootstrap_layout.html.twig', 'form/permission_layout.html.twig', 'form/filter_types_layout.html.twig'] + form_themes: ['bootstrap_5_horizontal_layout.html.twig', 'form/extended_bootstrap_layout.html.twig', 'form/permission_layout.html.twig', 'form/filter_types_layout.html.twig', 'form/synonyms_collection.html.twig'] paths: '%kernel.project_dir%/assets/css': css @@ -20,4 +20,4 @@ twig: when@test: twig: - strict_variables: true \ No newline at end of file + strict_variables: true diff --git a/config/permissions.yaml b/config/permissions.yaml index 7acee7f0..5adfb79d 100644 --- a/config/permissions.yaml +++ b/config/permissions.yaml @@ -18,7 +18,7 @@ perms: # Here comes a list with all Permission names (they have a perm_[name] co parts: # e.g. this maps to perms_parts in User/Group database group: "data" - label: "perm.parts" + label: "{{part}}" operations: # Here are all possible operations are listed => the op name is mapped to bit value read: label: "perm.read" @@ -71,7 +71,7 @@ perms: # Here comes a list with all Permission names (they have a perm_[name] co storelocations: &PART_CONTAINING - label: "perm.storelocations" + label: "{{storage_location}}" group: "data" operations: read: @@ -103,39 +103,39 @@ perms: # Here comes a list with all Permission names (they have a perm_[name] co footprints: <<: *PART_CONTAINING - label: "perm.part.footprints" + label: "{{footprint}}" categories: <<: *PART_CONTAINING - label: "perm.part.categories" + label: "{{category}}" suppliers: <<: *PART_CONTAINING - label: "perm.part.supplier" + label: "{{supplier}}" manufacturers: <<: *PART_CONTAINING - label: "perm.part.manufacturers" + label: "{{manufacturer}}" projects: <<: *PART_CONTAINING - label: "perm.projects" + label: "{{project}}" attachment_types: <<: *PART_CONTAINING - label: "perm.part.attachment_types" + label: "{{attachment_type}}" currencies: <<: *PART_CONTAINING - label: "perm.currencies" + label: "{{currency}}" measurement_units: <<: *PART_CONTAINING - label: "perm.measurement_units" + label: "{{measurement_unit}}" part_custom_states: <<: *PART_CONTAINING - label: "perm.part_custom_states" + label: "{{part_custom_state}}" tools: label: "perm.part.tools" @@ -377,4 +377,4 @@ perms: # Here comes a list with all Permission names (they have a perm_[name] co manage_tokens: label: "perm.api.manage_tokens" alsoSet: ['access_api'] - apiTokenRole: ROLE_API_FULL \ No newline at end of file + apiTokenRole: ROLE_API_FULL diff --git a/src/Controller/SettingsController.php b/src/Controller/SettingsController.php index 3479cf84..15c945f6 100644 --- a/src/Controller/SettingsController.php +++ b/src/Controller/SettingsController.php @@ -64,7 +64,7 @@ class SettingsController extends AbstractController $this->settingsManager->save($settings); //It might be possible, that the tree settings have changed, so clear the cache - $cache->invalidateTags(['tree_treeview', 'sidebar_tree_update']); + $cache->invalidateTags(['tree_tools', 'tree_treeview', 'sidebar_tree_update', 'synonyms']); $this->addFlash('success', t('settings.flash.saved')); } diff --git a/src/EventListener/RegisterSynonymsAsTranslationParametersListener.php b/src/EventListener/RegisterSynonymsAsTranslationParametersListener.php new file mode 100644 index 00000000..b216aad4 --- /dev/null +++ b/src/EventListener/RegisterSynonymsAsTranslationParametersListener.php @@ -0,0 +1,93 @@ +. + */ + +declare(strict_types=1); + + +namespace App\EventListener; + +use App\Services\ElementTypeNameGenerator; +use App\Services\ElementTypes; +use Symfony\Component\DependencyInjection\Attribute\Autowire; +use Symfony\Component\EventDispatcher\Attribute\AsEventListener; +use Symfony\Component\HttpKernel\Event\RequestEvent; +use Symfony\Component\Translation\Translator; +use Symfony\Contracts\Cache\CacheInterface; +use Symfony\Contracts\Cache\ItemInterface; +use Symfony\Contracts\Cache\TagAwareCacheInterface; +use Symfony\Contracts\Translation\TranslatorInterface; + +#[AsEventListener] +readonly class RegisterSynonymsAsTranslationParametersListener +{ + private Translator $translator; + + public function __construct( + #[Autowire(service: 'translator.default')] TranslatorInterface $translator, + private TagAwareCacheInterface $cache, + private ElementTypeNameGenerator $typeNameGenerator) + { + if (!$translator instanceof Translator) { + throw new \RuntimeException('Translator must be an instance of Symfony\Component\Translation\Translator or this listener cannot be used.'); + } + $this->translator = $translator; + } + + public function getSynonymPlaceholders(): array + { + return $this->cache->get('partdb_synonym_placeholders', function (ItemInterface $item) { + $item->tag('synonyms'); + + + $placeholders = []; + + //Generate a placeholder for each element type + foreach (ElementTypes::cases() as $elementType) { + //We have a placeholder for singular + $placeholders['{' . $elementType->value . '}'] = $this->typeNameGenerator->typeLabel($elementType); + //We have a placeholder for plural + $placeholders['{{' . $elementType->value . '}}'] = $this->typeNameGenerator->typeLabelPlural($elementType); + + //And we have lowercase versions for both + $placeholders['[' . $elementType->value . ']'] = mb_strtolower($this->typeNameGenerator->typeLabel($elementType)); + $placeholders['[[' . $elementType->value . ']]'] = mb_strtolower($this->typeNameGenerator->typeLabelPlural($elementType)); + } + + return $placeholders; + }); + } + + public function __invoke(RequestEvent $event): void + { + //If we already added the parameters, skip adding them again + if (isset($this->translator->getGlobalParameters()['@@partdb_synonyms_registered@@'])) { + return; + } + + //Register all placeholders for synonyms + $placeholders = $this->getSynonymPlaceholders(); + foreach ($placeholders as $key => $value) { + $this->translator->addGlobalParameter($key, $value); + } + + //Register the marker parameter to avoid double registration + $this->translator->addGlobalParameter('@@partdb_synonyms_registered@@', 'registered'); + } +} diff --git a/src/Form/Type/LanguageMenuEntriesType.php b/src/Form/Settings/LanguageMenuEntriesType.php similarity index 95% rename from src/Form/Type/LanguageMenuEntriesType.php rename to src/Form/Settings/LanguageMenuEntriesType.php index a3bba77f..9bc2e850 100644 --- a/src/Form/Type/LanguageMenuEntriesType.php +++ b/src/Form/Settings/LanguageMenuEntriesType.php @@ -21,12 +21,11 @@ declare(strict_types=1); -namespace App\Form\Type; +namespace App\Form\Settings; use Symfony\Component\DependencyInjection\Attribute\Autowire; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\LanguageType; -use Symfony\Component\Form\Extension\Core\Type\LocaleType; use Symfony\Component\Intl\Languages; use Symfony\Component\OptionsResolver\OptionsResolver; diff --git a/src/Form/Settings/TypeSynonymRowType.php b/src/Form/Settings/TypeSynonymRowType.php new file mode 100644 index 00000000..332db907 --- /dev/null +++ b/src/Form/Settings/TypeSynonymRowType.php @@ -0,0 +1,142 @@ +. + */ + +declare(strict_types=1); + +namespace App\Form\Settings; + +use App\Services\ElementTypes; +use App\Settings\SystemSettings\LocalizationSettings; +use Symfony\Component\DependencyInjection\Attribute\Autowire; +use Symfony\Component\Form\AbstractType; +use Symfony\Component\Form\Extension\Core\Type\EnumType; +use Symfony\Component\Form\Extension\Core\Type\LocaleType; +use Symfony\Component\Form\Extension\Core\Type\TextType; +use Symfony\Component\Form\FormBuilderInterface; +use Symfony\Component\Intl\Locales; +use Symfony\Component\Validator\Constraints as Assert; + +/** + * A single translation row: data source + language + translations (singular/plural). + */ +class TypeSynonymRowType extends AbstractType +{ + + private const PREFERRED_TYPES = [ + ElementTypes::CATEGORY, + ElementTypes::STORAGE_LOCATION, + ElementTypes::FOOTPRINT, + ElementTypes::MANUFACTURER, + ElementTypes::SUPPLIER, + ElementTypes::PROJECT, + ]; + + public function __construct( + private readonly LocalizationSettings $localizationSettings, + #[Autowire(param: 'partdb.locale_menu')] private readonly array $preferredLanguagesParam, + ) { + } + + public function buildForm(FormBuilderInterface $builder, array $options): void + { + $builder + ->add('dataSource', EnumType::class, [ + 'class' => ElementTypes::class, + 'label' => false, + 'required' => true, + 'constraints' => [ + new Assert\NotBlank(), + ], + 'row_attr' => ['class' => 'mb-0'], + 'attr' => ['class' => 'form-select-sm'], + 'preferred_choices' => self::PREFERRED_TYPES + ]) + ->add('locale', LocaleType::class, [ + 'label' => false, + 'required' => true, + // Restrict to languages configured in the language menu: disable ChoiceLoader and provide explicit choices + 'choice_loader' => null, + 'choices' => $this->buildLocaleChoices(true), + 'preferred_choices' => $this->getPreferredLocales(), + 'constraints' => [ + new Assert\NotBlank(), + ], + 'row_attr' => ['class' => 'mb-0'], + 'attr' => ['class' => 'form-select-sm'] + ]) + ->add('translation_singular', TextType::class, [ + 'label' => false, + 'required' => true, + 'empty_data' => '', + 'constraints' => [ + new Assert\NotBlank(), + ], + 'row_attr' => ['class' => 'mb-0'], + 'attr' => ['class' => 'form-select-sm'] + ]) + ->add('translation_plural', TextType::class, [ + 'label' => false, + 'required' => true, + 'empty_data' => '', + 'constraints' => [ + new Assert\NotBlank(), + ], + 'row_attr' => ['class' => 'mb-0'], + 'attr' => ['class' => 'form-select-sm'] + ]); + } + + + /** + * Returns only locales configured in the language menu (settings) or falls back to the parameter. + * Format: ['German (DE)' => 'de', ...] + */ + private function buildLocaleChoices(bool $returnPossible = false): array + { + $locales = $this->getPreferredLocales(); + + if ($returnPossible) { + $locales = $this->getPossibleLocales(); + } + + $choices = []; + foreach ($locales as $code) { + $label = Locales::getName($code); + $choices[$label . ' (' . strtoupper($code) . ')'] = $code; + } + return $choices; + } + + /** + * Source of allowed locales: + * 1) LocalizationSettings->languageMenuEntries (if set) + * 2) Fallback: parameter partdb.locale_menu + */ + private function getPreferredLocales(): array + { + $fromSettings = $this->localizationSettings->languageMenuEntries ?? []; + return !empty($fromSettings) ? array_values($fromSettings) : array_values($this->preferredLanguagesParam); + } + + private function getPossibleLocales(): array + { + return array_values($this->preferredLanguagesParam); + } +} diff --git a/src/Form/Settings/TypeSynonymsCollectionType.php b/src/Form/Settings/TypeSynonymsCollectionType.php new file mode 100644 index 00000000..4756930a --- /dev/null +++ b/src/Form/Settings/TypeSynonymsCollectionType.php @@ -0,0 +1,223 @@ +. + */ + +declare(strict_types=1); + +namespace App\Form\Settings; + +use App\Services\ElementTypes; +use Symfony\Component\Form\AbstractType; +use Symfony\Component\Form\CallbackTransformer; +use Symfony\Component\Form\Extension\Core\Type\CollectionType; +use Symfony\Component\Form\FormBuilderInterface; +use Symfony\Component\Form\FormError; +use Symfony\Component\Form\FormEvent; +use Symfony\Component\Form\FormEvents; +use Symfony\Component\Intl\Locales; +use Symfony\Component\OptionsResolver\OptionsResolver; +use Symfony\Contracts\Translation\TranslatorInterface; + +/** + * Flat collection of translation rows. + * View data: list [{dataSource, locale, translation_singular, translation_plural}, ...] + * Model data: same structure (list). Optionally expands a nested map to a list. + */ +class TypeSynonymsCollectionType extends AbstractType +{ + public function __construct(private readonly TranslatorInterface $translator) + { + } + + private function flattenStructure(array $modelValue): array + { + //If the model is already flattened, return as is + if (array_is_list($modelValue)) { + return $modelValue; + } + + $out = []; + foreach ($modelValue as $dataSource => $locales) { + if (!is_array($locales)) { + continue; + } + foreach ($locales as $locale => $translations) { + if (!is_array($translations)) { + continue; + } + $out[] = [ + //Convert string to enum value + 'dataSource' => ElementTypes::from($dataSource), + 'locale' => $locale, + 'translation_singular' => $translations['singular'] ?? '', + 'translation_plural' => $translations['plural'] ?? '', + ]; + } + } + return $out; + } + + public function buildForm(FormBuilderInterface $builder, array $options): void + { + $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event): void { + //Flatten the structure + $data = $event->getData(); + $event->setData($this->flattenStructure($data)); + }); + + $builder->addModelTransformer(new CallbackTransformer( + // Model -> View + $this->flattenStructure(...), + // View -> Model (keep list; let existing behavior unchanged) + function (array $viewValue) { + //Turn our flat list back into the structured array + + $out = []; + + foreach ($viewValue as $row) { + if (!is_array($row)) { + continue; + } + $dataSource = $row['dataSource'] ?? null; + $locale = $row['locale'] ?? null; + $translation_singular = $row['translation_singular'] ?? null; + $translation_plural = $row['translation_plural'] ?? null; + + if ($dataSource === null || + !is_string($locale) || $locale === '' + ) { + continue; + } + + $out[$dataSource->value][$locale] = [ + 'singular' => is_string($translation_singular) ? $translation_singular : '', + 'plural' => is_string($translation_plural) ? $translation_plural : '', + ]; + } + + return $out; + } + )); + + // Validation and normalization (duplicates + sorting) during SUBMIT + $builder->addEventListener(FormEvents::SUBMIT, function (FormEvent $event): void { + $form = $event->getForm(); + $rows = $event->getData(); + + if (!is_array($rows)) { + return; + } + + // Duplicate check: (dataSource, locale) must be unique + $seen = []; + $hasDuplicate = false; + + foreach ($rows as $idx => $row) { + if (!is_array($row)) { + continue; + } + $ds = $row['dataSource'] ?? null; + $loc = $row['locale'] ?? null; + + if ($ds !== null && is_string($loc) && $loc !== '') { + $key = $ds->value . '|' . $loc; + if (isset($seen[$key])) { + $hasDuplicate = true; + + if ($form->has((string)$idx)) { + $child = $form->get((string)$idx); + + if ($child->has('dataSource')) { + $child->get('dataSource')->addError( + new FormError($this->translator->trans( + 'settings.synonyms.type_synonyms.collection_type.duplicate', + [], 'validators' + )) + ); + } + if ($child->has('locale')) { + $child->get('locale')->addError( + new FormError($this->translator->trans( + 'settings.synonyms.type_synonyms.collection_type.duplicate', + [], 'validators' + )) + ); + } + } + } else { + $seen[$key] = true; + } + } + } + + if ($hasDuplicate) { + return; + } + + // Overall sort: first by dataSource key, then by localized language name + $sortable = $rows; + + usort($sortable, static function ($a, $b) { + $aDs = $a['dataSource']->value ?? ''; + $bDs = $b['dataSource']->value ?? ''; + + $cmpDs = strcasecmp($aDs, $bDs); + if ($cmpDs !== 0) { + return $cmpDs; + } + + $aLoc = (string)($a['locale'] ?? ''); + $bLoc = (string)($b['locale'] ?? ''); + + $aName = Locales::getName($aLoc); + $bName = Locales::getName($bLoc); + + return strcasecmp($aName, $bName); + }); + + $event->setData($sortable); + }); + } + + public function configureOptions(OptionsResolver $resolver): void + { + + // Defaults for the collection and entry type + $resolver->setDefaults([ + 'entry_type' => TypeSynonymRowType::class, + 'allow_add' => true, + 'allow_delete' => true, + 'by_reference' => false, + 'required' => false, + 'prototype' => true, + 'empty_data' => [], + 'entry_options' => ['label' => false], + ]); + } + + public function getParent(): ?string + { + return CollectionType::class; + } + + public function getBlockPrefix(): string + { + return 'type_synonyms_collection'; + } +} diff --git a/src/Form/Type/LocaleSelectType.php b/src/Form/Type/LocaleSelectType.php index d47fb57f..6dc6f9fc 100644 --- a/src/Form/Type/LocaleSelectType.php +++ b/src/Form/Type/LocaleSelectType.php @@ -30,7 +30,6 @@ use Symfony\Component\OptionsResolver\OptionsResolver; /** * A locale select field that uses the preferred languages from the configuration. - */ class LocaleSelectType extends AbstractType { diff --git a/src/Services/ElementTypeNameGenerator.php b/src/Services/ElementTypeNameGenerator.php index deb4cf30..19bb19f5 100644 --- a/src/Services/ElementTypeNameGenerator.php +++ b/src/Services/ElementTypeNameGenerator.php @@ -24,68 +24,31 @@ namespace App\Services; use App\Entity\Attachments\Attachment; use App\Entity\Attachments\AttachmentContainingDBElement; -use App\Entity\Attachments\AttachmentType; use App\Entity\Base\AbstractDBElement; use App\Entity\Contracts\NamedElementInterface; -use App\Entity\InfoProviderSystem\BulkInfoProviderImportJob; -use App\Entity\InfoProviderSystem\BulkInfoProviderImportJobPart; -use App\Entity\LabelSystem\LabelProfile; use App\Entity\Parameters\AbstractParameter; -use App\Entity\Parts\Category; -use App\Entity\Parts\Footprint; -use App\Entity\Parts\Manufacturer; -use App\Entity\Parts\MeasurementUnit; use App\Entity\Parts\Part; -use App\Entity\Parts\PartAssociation; -use App\Entity\Parts\PartCustomState; use App\Entity\Parts\PartLot; -use App\Entity\Parts\StorageLocation; -use App\Entity\Parts\Supplier; -use App\Entity\PriceInformations\Currency; use App\Entity\PriceInformations\Orderdetail; use App\Entity\PriceInformations\Pricedetail; use App\Entity\ProjectSystem\Project; use App\Entity\ProjectSystem\ProjectBOMEntry; -use App\Entity\UserSystem\Group; -use App\Entity\UserSystem\User; use App\Exceptions\EntityNotSupportedException; +use App\Settings\SynonymSettings; use Symfony\Contracts\Translation\TranslatorInterface; /** * @see \App\Tests\Services\ElementTypeNameGeneratorTest */ -class ElementTypeNameGenerator +final readonly class ElementTypeNameGenerator { - protected array $mapping; - public function __construct(protected TranslatorInterface $translator, private readonly EntityURLGenerator $entityURLGenerator) + public function __construct( + private TranslatorInterface $translator, + private EntityURLGenerator $entityURLGenerator, + private SynonymSettings $synonymsSettings, + ) { - //Child classes has to become before parent classes - $this->mapping = [ - Attachment::class => $this->translator->trans('attachment.label'), - Category::class => $this->translator->trans('category.label'), - AttachmentType::class => $this->translator->trans('attachment_type.label'), - Project::class => $this->translator->trans('project.label'), - ProjectBOMEntry::class => $this->translator->trans('project_bom_entry.label'), - Footprint::class => $this->translator->trans('footprint.label'), - Manufacturer::class => $this->translator->trans('manufacturer.label'), - MeasurementUnit::class => $this->translator->trans('measurement_unit.label'), - Part::class => $this->translator->trans('part.label'), - PartLot::class => $this->translator->trans('part_lot.label'), - StorageLocation::class => $this->translator->trans('storelocation.label'), - Supplier::class => $this->translator->trans('supplier.label'), - Currency::class => $this->translator->trans('currency.label'), - Orderdetail::class => $this->translator->trans('orderdetail.label'), - Pricedetail::class => $this->translator->trans('pricedetail.label'), - Group::class => $this->translator->trans('group.label'), - User::class => $this->translator->trans('user.label'), - AbstractParameter::class => $this->translator->trans('parameter.label'), - LabelProfile::class => $this->translator->trans('label_profile.label'), - PartAssociation::class => $this->translator->trans('part_association.label'), - BulkInfoProviderImportJob::class => $this->translator->trans('bulk_info_provider_import_job.label'), - BulkInfoProviderImportJobPart::class => $this->translator->trans('bulk_info_provider_import_job_part.label'), - PartCustomState::class => $this->translator->trans('part_custom_state.label'), - ]; } /** @@ -99,27 +62,69 @@ class ElementTypeNameGenerator * @return string the localized label for the entity type * * @throws EntityNotSupportedException when the passed entity is not supported + * @deprecated Use label() instead */ public function getLocalizedTypeLabel(object|string $entity): string { - $class = is_string($entity) ? $entity : $entity::class; - - //Check if we have a direct array entry for our entity class, then we can use it - if (isset($this->mapping[$class])) { - return $this->mapping[$class]; - } - - //Otherwise iterate over array and check for inheritance (needed when the proxy element from doctrine are passed) - foreach ($this->mapping as $class_to_check => $translation) { - if (is_a($entity, $class_to_check, true)) { - return $translation; - } - } - - //When nothing was found throw an exception - throw new EntityNotSupportedException(sprintf('No localized label for the element with type %s was found!', is_object($entity) ? $entity::class : (string) $entity)); + return $this->typeLabel($entity); } + private function resolveSynonymLabel(ElementTypes $type, ?string $locale, bool $plural): ?string + { + $locale ??= $this->translator->getLocale(); + + if ($this->synonymsSettings->isSynonymDefinedForType($type)) { + if ($plural) { + $syn = $this->synonymsSettings->getPluralSynonymForType($type, $locale); + } else { + $syn = $this->synonymsSettings->getSingularSynonymForType($type, $locale); + } + + if ($syn === null) { + //Try to fall back to english + if ($plural) { + $syn = $this->synonymsSettings->getPluralSynonymForType($type, 'en'); + } else { + $syn = $this->synonymsSettings->getSingularSynonymForType($type, 'en'); + } + } + + return $syn; + } + + return null; + } + + /** + * Gets a localized label for the type of the entity. If user defined synonyms are defined, + * these are used instead of the default labels. + * @param object|string $entity + * @param string|null $locale + * @return string + */ + public function typeLabel(object|string $entity, ?string $locale = null): string + { + $type = ElementTypes::fromValue($entity); + + return $this->resolveSynonymLabel($type, $locale, false) + ?? $this->translator->trans($type->getDefaultLabelKey(), locale: $locale); + } + + /** + * Similar to label(), but returns the plural version of the label. + * @param object|string $entity + * @param string|null $locale + * @return string + */ + public function typeLabelPlural(object|string $entity, ?string $locale = null): string + { + $type = ElementTypes::fromValue($entity); + + return $this->resolveSynonymLabel($type, $locale, true) + ?? $this->translator->trans($type->getDefaultPluralLabelKey(), locale: $locale); + } + + /** * Returns a string like in the format ElementType: ElementName. * For example this could be something like: "Part: BC547". @@ -134,7 +139,7 @@ class ElementTypeNameGenerator */ public function getTypeNameCombination(NamedElementInterface $entity, bool $use_html = false): string { - $type = $this->getLocalizedTypeLabel($entity); + $type = $this->typeLabel($entity); if ($use_html) { return '' . $type . ': ' . htmlspecialchars($entity->getName()); } @@ -144,7 +149,7 @@ class ElementTypeNameGenerator /** - * Returns a HTML formatted label for the given enitity in the format "Type: Name" (on elements with a name) and + * Returns a HTML formatted label for the given entity in the format "Type: Name" (on elements with a name) and * "Type: ID" (on elements without a name). If possible the value is given as a link to the element. * @param AbstractDBElement $entity The entity for which the label should be generated * @param bool $include_associated If set to true, the associated entity (like the part belonging to a part lot) is included in the label to give further information @@ -165,7 +170,7 @@ class ElementTypeNameGenerator } else { //Target does not have a name $tmp = sprintf( '%s: %s', - $this->getLocalizedTypeLabel($entity), + $this->typeLabel($entity), $entity->getID() ); } @@ -209,7 +214,7 @@ class ElementTypeNameGenerator { return sprintf( '%s: %s [%s]', - $this->getLocalizedTypeLabel($class), + $this->typeLabel($class), $id, $this->translator->trans('log.target_deleted') ); diff --git a/src/Services/ElementTypes.php b/src/Services/ElementTypes.php new file mode 100644 index 00000000..6ce8f851 --- /dev/null +++ b/src/Services/ElementTypes.php @@ -0,0 +1,229 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Services; + +use App\Entity\Attachments\Attachment; +use App\Entity\Attachments\AttachmentType; +use App\Entity\InfoProviderSystem\BulkInfoProviderImportJob; +use App\Entity\InfoProviderSystem\BulkInfoProviderImportJobPart; +use App\Entity\LabelSystem\LabelProfile; +use App\Entity\Parameters\AbstractParameter; +use App\Entity\Parts\Category; +use App\Entity\Parts\Footprint; +use App\Entity\Parts\Manufacturer; +use App\Entity\Parts\MeasurementUnit; +use App\Entity\Parts\Part; +use App\Entity\Parts\PartAssociation; +use App\Entity\Parts\PartCustomState; +use App\Entity\Parts\PartLot; +use App\Entity\Parts\StorageLocation; +use App\Entity\Parts\Supplier; +use App\Entity\PriceInformations\Currency; +use App\Entity\PriceInformations\Orderdetail; +use App\Entity\PriceInformations\Pricedetail; +use App\Entity\ProjectSystem\Project; +use App\Entity\ProjectSystem\ProjectBOMEntry; +use App\Entity\UserSystem\Group; +use App\Entity\UserSystem\User; +use App\Exceptions\EntityNotSupportedException; +use Symfony\Contracts\Translation\TranslatableInterface; +use Symfony\Contracts\Translation\TranslatorInterface; + +enum ElementTypes: string implements TranslatableInterface +{ + case ATTACHMENT = "attachment"; + case CATEGORY = "category"; + case ATTACHMENT_TYPE = "attachment_type"; + case PROJECT = "project"; + case PROJECT_BOM_ENTRY = "project_bom_entry"; + case FOOTPRINT = "footprint"; + case MANUFACTURER = "manufacturer"; + case MEASUREMENT_UNIT = "measurement_unit"; + case PART = "part"; + case PART_LOT = "part_lot"; + case STORAGE_LOCATION = "storage_location"; + case SUPPLIER = "supplier"; + case CURRENCY = "currency"; + case ORDERDETAIL = "orderdetail"; + case PRICEDETAIL = "pricedetail"; + case GROUP = "group"; + case USER = "user"; + case PARAMETER = "parameter"; + case LABEL_PROFILE = "label_profile"; + case PART_ASSOCIATION = "part_association"; + case BULK_INFO_PROVIDER_IMPORT_JOB = "bulk_info_provider_import_job"; + case BULK_INFO_PROVIDER_IMPORT_JOB_PART = "bulk_info_provider_import_job_part"; + case PART_CUSTOM_STATE = "part_custom_state"; + + //Child classes has to become before parent classes + private const CLASS_MAPPING = [ + Attachment::class => self::ATTACHMENT, + Category::class => self::CATEGORY, + AttachmentType::class => self::ATTACHMENT_TYPE, + Project::class => self::PROJECT, + ProjectBOMEntry::class => self::PROJECT_BOM_ENTRY, + Footprint::class => self::FOOTPRINT, + Manufacturer::class => self::MANUFACTURER, + MeasurementUnit::class => self::MEASUREMENT_UNIT, + Part::class => self::PART, + PartLot::class => self::PART_LOT, + StorageLocation::class => self::STORAGE_LOCATION, + Supplier::class => self::SUPPLIER, + Currency::class => self::CURRENCY, + Orderdetail::class => self::ORDERDETAIL, + Pricedetail::class => self::PRICEDETAIL, + Group::class => self::GROUP, + User::class => self::USER, + AbstractParameter::class => self::PARAMETER, + LabelProfile::class => self::LABEL_PROFILE, + PartAssociation::class => self::PART_ASSOCIATION, + BulkInfoProviderImportJob::class => self::BULK_INFO_PROVIDER_IMPORT_JOB, + BulkInfoProviderImportJobPart::class => self::BULK_INFO_PROVIDER_IMPORT_JOB_PART, + PartCustomState::class => self::PART_CUSTOM_STATE, + ]; + + /** + * Gets the default translation key for the label of the element type (singular form). + */ + public function getDefaultLabelKey(): string + { + return match ($this) { + self::ATTACHMENT => 'attachment.label', + self::CATEGORY => 'category.label', + self::ATTACHMENT_TYPE => 'attachment_type.label', + self::PROJECT => 'project.label', + self::PROJECT_BOM_ENTRY => 'project_bom_entry.label', + self::FOOTPRINT => 'footprint.label', + self::MANUFACTURER => 'manufacturer.label', + self::MEASUREMENT_UNIT => 'measurement_unit.label', + self::PART => 'part.label', + self::PART_LOT => 'part_lot.label', + self::STORAGE_LOCATION => 'storelocation.label', + self::SUPPLIER => 'supplier.label', + self::CURRENCY => 'currency.label', + self::ORDERDETAIL => 'orderdetail.label', + self::PRICEDETAIL => 'pricedetail.label', + self::GROUP => 'group.label', + self::USER => 'user.label', + self::PARAMETER => 'parameter.label', + self::LABEL_PROFILE => 'label_profile.label', + self::PART_ASSOCIATION => 'part_association.label', + self::BULK_INFO_PROVIDER_IMPORT_JOB => 'bulk_info_provider_import_job.label', + self::BULK_INFO_PROVIDER_IMPORT_JOB_PART => 'bulk_info_provider_import_job_part.label', + self::PART_CUSTOM_STATE => 'part_custom_state.label', + }; + } + + public function getDefaultPluralLabelKey(): string + { + return match ($this) { + self::ATTACHMENT => 'attachment.labelp', + self::CATEGORY => 'category.labelp', + self::ATTACHMENT_TYPE => 'attachment_type.labelp', + self::PROJECT => 'project.labelp', + self::PROJECT_BOM_ENTRY => 'project_bom_entry.labelp', + self::FOOTPRINT => 'footprint.labelp', + self::MANUFACTURER => 'manufacturer.labelp', + self::MEASUREMENT_UNIT => 'measurement_unit.labelp', + self::PART => 'part.labelp', + self::PART_LOT => 'part_lot.labelp', + self::STORAGE_LOCATION => 'storelocation.labelp', + self::SUPPLIER => 'supplier.labelp', + self::CURRENCY => 'currency.labelp', + self::ORDERDETAIL => 'orderdetail.labelp', + self::PRICEDETAIL => 'pricedetail.labelp', + self::GROUP => 'group.labelp', + self::USER => 'user.labelp', + self::PARAMETER => 'parameter.labelp', + self::LABEL_PROFILE => 'label_profile.labelp', + self::PART_ASSOCIATION => 'part_association.labelp', + self::BULK_INFO_PROVIDER_IMPORT_JOB => 'bulk_info_provider_import_job.labelp', + self::BULK_INFO_PROVIDER_IMPORT_JOB_PART => 'bulk_info_provider_import_job_part.labelp', + self::PART_CUSTOM_STATE => 'part_custom_state.labelp', + }; + } + + /** + * Used to get a user-friendly representation of the object that can be translated. + * For this the singular default label key is used. + * @param TranslatorInterface $translator + * @param string|null $locale + * @return string + */ + public function trans(TranslatorInterface $translator, ?string $locale = null): string + { + return $translator->trans($this->getDefaultLabelKey(), locale: $locale); + } + + /** + * Determines the ElementType from a value, which can either be an enum value, an ElementTypes instance, a class name or an object instance. + * @param string|object $value + * @return self + */ + public static function fromValue(string|object $value): self + { + if ($value instanceof self) { + return $value; + } + if (is_object($value)) { + return self::fromClass($value); + } + + + //Otherwise try to parse it as enum value first + $enumValue = self::tryFrom($value); + + //Otherwise try to get it from class name + return $enumValue ?? self::fromClass($value); + } + + /** + * Determines the ElementType from a class name or object instance. + * @param string|object $class + * @throws EntityNotSupportedException if the class is not supported + * @return self + */ + public static function fromClass(string|object $class): self + { + if (is_object($class)) { + $className = get_class($class); + } else { + $className = $class; + } + + if (array_key_exists($className, self::CLASS_MAPPING)) { + return self::CLASS_MAPPING[$className]; + } + + //Otherwise we need to check for inheritance + foreach (self::CLASS_MAPPING as $entityClass => $elementType) { + if (is_a($className, $entityClass, true)) { + return $elementType; + } + } + + throw new EntityNotSupportedException(sprintf('No localized label for the element with type %s was found!', $className)); + } + +} diff --git a/src/Services/Trees/ToolsTreeBuilder.php b/src/Services/Trees/ToolsTreeBuilder.php index 56064ba4..37a09b09 100644 --- a/src/Services/Trees/ToolsTreeBuilder.php +++ b/src/Services/Trees/ToolsTreeBuilder.php @@ -38,6 +38,7 @@ use App\Entity\UserSystem\Group; use App\Entity\UserSystem\User; use App\Helpers\Trees\TreeViewNode; use App\Services\Cache\UserCacheKeyGenerator; +use App\Services\ElementTypeNameGenerator; use Symfony\Bundle\SecurityBundle\Security; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use Symfony\Contracts\Cache\ItemInterface; @@ -50,8 +51,14 @@ use Symfony\Contracts\Translation\TranslatorInterface; */ class ToolsTreeBuilder { - public function __construct(protected TranslatorInterface $translator, protected UrlGeneratorInterface $urlGenerator, protected TagAwareCacheInterface $cache, protected UserCacheKeyGenerator $keyGenerator, protected Security $security) - { + public function __construct( + protected TranslatorInterface $translator, + protected UrlGeneratorInterface $urlGenerator, + protected TagAwareCacheInterface $cache, + protected UserCacheKeyGenerator $keyGenerator, + protected Security $security, + private readonly ElementTypeNameGenerator $elementTypeNameGenerator, + ) { } /** @@ -139,7 +146,7 @@ class ToolsTreeBuilder $this->translator->trans('info_providers.search.title'), $this->urlGenerator->generate('info_providers_search') ))->setIcon('fa-treeview fa-fw fa-solid fa-cloud-arrow-down'); - + $nodes[] = (new TreeViewNode( $this->translator->trans('info_providers.bulk_import.manage_jobs'), $this->urlGenerator->generate('bulk_info_provider_manage') @@ -160,67 +167,67 @@ class ToolsTreeBuilder if ($this->security->isGranted('read', new AttachmentType())) { $nodes[] = (new TreeViewNode( - $this->translator->trans('tree.tools.edit.attachment_types'), + $this->elementTypeNameGenerator->typeLabelPlural(AttachmentType::class), $this->urlGenerator->generate('attachment_type_new') ))->setIcon('fa-fw fa-treeview fa-solid fa-file-alt'); } if ($this->security->isGranted('read', new Category())) { $nodes[] = (new TreeViewNode( - $this->translator->trans('tree.tools.edit.categories'), + $this->elementTypeNameGenerator->typeLabelPlural(Category::class), $this->urlGenerator->generate('category_new') ))->setIcon('fa-fw fa-treeview fa-solid fa-tags'); } if ($this->security->isGranted('read', new Project())) { $nodes[] = (new TreeViewNode( - $this->translator->trans('tree.tools.edit.projects'), + $this->elementTypeNameGenerator->typeLabelPlural(Project::class), $this->urlGenerator->generate('project_new') ))->setIcon('fa-fw fa-treeview fa-solid fa-archive'); } if ($this->security->isGranted('read', new Supplier())) { $nodes[] = (new TreeViewNode( - $this->translator->trans('tree.tools.edit.suppliers'), + $this->elementTypeNameGenerator->typeLabelPlural(Supplier::class), $this->urlGenerator->generate('supplier_new') ))->setIcon('fa-fw fa-treeview fa-solid fa-truck'); } if ($this->security->isGranted('read', new Manufacturer())) { $nodes[] = (new TreeViewNode( - $this->translator->trans('tree.tools.edit.manufacturer'), + $this->elementTypeNameGenerator->typeLabelPlural(Manufacturer::class), $this->urlGenerator->generate('manufacturer_new') ))->setIcon('fa-fw fa-treeview fa-solid fa-industry'); } if ($this->security->isGranted('read', new StorageLocation())) { $nodes[] = (new TreeViewNode( - $this->translator->trans('tree.tools.edit.storelocation'), + $this->elementTypeNameGenerator->typeLabelPlural(StorageLocation::class), $this->urlGenerator->generate('store_location_new') ))->setIcon('fa-fw fa-treeview fa-solid fa-cube'); } if ($this->security->isGranted('read', new Footprint())) { $nodes[] = (new TreeViewNode( - $this->translator->trans('tree.tools.edit.footprint'), + $this->elementTypeNameGenerator->typeLabelPlural(Footprint::class), $this->urlGenerator->generate('footprint_new') ))->setIcon('fa-fw fa-treeview fa-solid fa-microchip'); } if ($this->security->isGranted('read', new Currency())) { $nodes[] = (new TreeViewNode( - $this->translator->trans('tree.tools.edit.currency'), + $this->elementTypeNameGenerator->typeLabelPlural(Currency::class), $this->urlGenerator->generate('currency_new') ))->setIcon('fa-fw fa-treeview fa-solid fa-coins'); } if ($this->security->isGranted('read', new MeasurementUnit())) { $nodes[] = (new TreeViewNode( - $this->translator->trans('tree.tools.edit.measurement_unit'), + $this->elementTypeNameGenerator->typeLabelPlural(MeasurementUnit::class), $this->urlGenerator->generate('measurement_unit_new') ))->setIcon('fa-fw fa-treeview fa-solid fa-balance-scale'); } if ($this->security->isGranted('read', new LabelProfile())) { $nodes[] = (new TreeViewNode( - $this->translator->trans('tree.tools.edit.label_profile'), + $this->elementTypeNameGenerator->typeLabelPlural(LabelProfile::class), $this->urlGenerator->generate('label_profile_new') ))->setIcon('fa-fw fa-treeview fa-solid fa-qrcode'); } if ($this->security->isGranted('read', new PartCustomState())) { $nodes[] = (new TreeViewNode( - $this->translator->trans('tree.tools.edit.part_custom_state'), + $this->elementTypeNameGenerator->typeLabelPlural(PartCustomState::class), $this->urlGenerator->generate('part_custom_state_new') ))->setIcon('fa-fw fa-treeview fa-solid fa-tools'); } diff --git a/src/Services/Trees/TreeViewGenerator.php b/src/Services/Trees/TreeViewGenerator.php index 73ffa5ba..d55c87b7 100644 --- a/src/Services/Trees/TreeViewGenerator.php +++ b/src/Services/Trees/TreeViewGenerator.php @@ -34,9 +34,9 @@ use App\Entity\ProjectSystem\Project; use App\Helpers\Trees\TreeViewNode; use App\Helpers\Trees\TreeViewNodeIterator; use App\Repository\NamedDBElementRepository; -use App\Repository\StructuralDBElementRepository; use App\Services\Cache\ElementCacheTagGenerator; use App\Services\Cache\UserCacheKeyGenerator; +use App\Services\ElementTypeNameGenerator; use App\Services\EntityURLGenerator; use App\Settings\BehaviorSettings\SidebarSettings; use Doctrine\ORM\EntityManagerInterface; @@ -67,6 +67,7 @@ class TreeViewGenerator protected TranslatorInterface $translator, private readonly UrlGeneratorInterface $router, private readonly SidebarSettings $sidebarSettings, + private readonly ElementTypeNameGenerator $elementTypeNameGenerator ) { $this->rootNodeEnabled = $this->sidebarSettings->rootNodeEnabled; $this->rootNodeExpandedByDefault = $this->sidebarSettings->rootNodeExpanded; @@ -212,15 +213,7 @@ class TreeViewGenerator protected function entityClassToRootNodeString(string $class): string { - return match ($class) { - Category::class => $this->translator->trans('category.labelp'), - StorageLocation::class => $this->translator->trans('storelocation.labelp'), - Footprint::class => $this->translator->trans('footprint.labelp'), - Manufacturer::class => $this->translator->trans('manufacturer.labelp'), - Supplier::class => $this->translator->trans('supplier.labelp'), - Project::class => $this->translator->trans('project.labelp'), - default => $this->translator->trans('tree.root_node.text'), - }; + return $this->elementTypeNameGenerator->typeLabelPlural($class); } protected function entityClassToRootNodeIcon(string $class): ?string diff --git a/src/Settings/AppSettings.php b/src/Settings/AppSettings.php index 42831d08..14d9395e 100644 --- a/src/Settings/AppSettings.php +++ b/src/Settings/AppSettings.php @@ -47,6 +47,12 @@ class AppSettings #[EmbeddedSettings()] public ?InfoProviderSettings $infoProviders = null; + #[EmbeddedSettings] + public ?SynonymSettings $synonyms = null; + #[EmbeddedSettings()] public ?MiscSettings $miscSettings = null; + + + } diff --git a/src/Settings/SynonymSettings.php b/src/Settings/SynonymSettings.php new file mode 100644 index 00000000..25fc87e9 --- /dev/null +++ b/src/Settings/SynonymSettings.php @@ -0,0 +1,116 @@ +. + */ + +declare(strict_types=1); + +namespace App\Settings; + +use App\Form\Settings\TypeSynonymsCollectionType; +use App\Services\ElementTypes; +use Jbtronics\SettingsBundle\ParameterTypes\ArrayType; +use Jbtronics\SettingsBundle\ParameterTypes\SerializeType; +use Jbtronics\SettingsBundle\Settings\Settings; +use Jbtronics\SettingsBundle\Settings\SettingsParameter; +use Jbtronics\SettingsBundle\Settings\SettingsTrait; +use Symfony\Component\Translation\TranslatableMessage as TM; +use Symfony\Component\Validator\Constraints as Assert; + +#[Settings(label: new TM("settings.synonyms"), description: "settings.synonyms.help")] +#[SettingsIcon("fa-language")] +class SynonymSettings +{ + use SettingsTrait; + + #[SettingsParameter( + ArrayType::class, + label: new TM("settings.synonyms.type_synonyms"), + description: new TM("settings.synonyms.type_synonyms.help"), + options: ['type' => SerializeType::class], + formType: TypeSynonymsCollectionType::class, + formOptions: [ + 'required' => false, + ], + )] + #[Assert\Type('array')] + #[Assert\All([new Assert\Type('array')])] + /** + * @var array> $typeSynonyms + * An array of the form: [ + * 'category' => [ + * 'en' => ['singular' => 'Category', 'plural' => 'Categories'], + * 'de' => ['singular' => 'Kategorie', 'plural' => 'Kategorien'], + * ], + * 'manufacturer' => [ + * 'en' => ['singular' => 'Manufacturer', 'plural' =>'Manufacturers'], + * ], + * ] + */ + public array $typeSynonyms = []; + + /** + * Checks if there is any synonym defined for the given type (no matter which language). + * @param ElementTypes $type + * @return bool + */ + public function isSynonymDefinedForType(ElementTypes $type): bool + { + return isset($this->typeSynonyms[$type->value]) && count($this->typeSynonyms[$type->value]) > 0; + } + + /** + * Returns the singular synonym for the given type and locale, or null if none is defined. + * @param ElementTypes $type + * @param string $locale + * @return string|null + */ + public function getSingularSynonymForType(ElementTypes $type, string $locale): ?string + { + return $this->typeSynonyms[$type->value][$locale]['singular'] ?? null; + } + + /** + * Returns the plural synonym for the given type and locale, or null if none is defined. + * @param ElementTypes $type + * @param string|null $locale + * @return string|null + */ + public function getPluralSynonymForType(ElementTypes $type, ?string $locale): ?string + { + return $this->typeSynonyms[$type->value][$locale]['plural'] + ?? $this->typeSynonyms[$type->value][$locale]['singular'] + ?? null; + } + + /** + * Sets a synonym for the given type and locale. + * @param ElementTypes $type + * @param string $locale + * @param string $singular + * @param string $plural + * @return void + */ + public function setSynonymForType(ElementTypes $type, string $locale, string $singular, string $plural): void + { + $this->typeSynonyms[$type->value][$locale] = [ + 'singular' => $singular, + 'plural' => $plural, + ]; + } +} diff --git a/src/Settings/SystemSettings/LocalizationSettings.php b/src/Settings/SystemSettings/LocalizationSettings.php index 7c83d1ef..c6780c6c 100644 --- a/src/Settings/SystemSettings/LocalizationSettings.php +++ b/src/Settings/SystemSettings/LocalizationSettings.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace App\Settings\SystemSettings; -use App\Form\Type\LanguageMenuEntriesType; +use App\Form\Settings\LanguageMenuEntriesType; use App\Form\Type\LocaleSelectType; use App\Settings\SettingsIcon; use Jbtronics\SettingsBundle\Metadata\EnvVarMode; diff --git a/src/Settings/SystemSettings/SystemSettings.php b/src/Settings/SystemSettings/SystemSettings.php index 71dd963d..8cbeb560 100644 --- a/src/Settings/SystemSettings/SystemSettings.php +++ b/src/Settings/SystemSettings/SystemSettings.php @@ -33,6 +33,8 @@ class SystemSettings #[EmbeddedSettings()] public ?LocalizationSettings $localization = null; + + #[EmbeddedSettings()] public ?CustomizationSettings $customization = null; diff --git a/src/Twig/EntityExtension.php b/src/Twig/EntityExtension.php index b5e5c3ca..427a39b5 100644 --- a/src/Twig/EntityExtension.php +++ b/src/Twig/EntityExtension.php @@ -76,6 +76,8 @@ final class EntityExtension extends AbstractExtension /* Gets a human readable label for the type of the given entity */ new TwigFunction('entity_type_label', fn(object|string $entity): string => $this->nameGenerator->getLocalizedTypeLabel($entity)), + new TwigFunction('type_label', fn(object|string $entity): string => $this->nameGenerator->typeLabel($entity)), + new TwigFunction('type_label_p', fn(object|string $entity): string => $this->nameGenerator->typeLabelPlural($entity)), ]; } diff --git a/templates/admin/attachment_type_admin.html.twig b/templates/admin/attachment_type_admin.html.twig index 06a8c09d..87a053af 100644 --- a/templates/admin/attachment_type_admin.html.twig +++ b/templates/admin/attachment_type_admin.html.twig @@ -15,4 +15,4 @@ {% block new_title %} {% trans %}attachment_type.new{% endtrans %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/admin/category_admin.html.twig b/templates/admin/category_admin.html.twig index d87cee7f..3ddc1472 100644 --- a/templates/admin/category_admin.html.twig +++ b/templates/admin/category_admin.html.twig @@ -1,7 +1,7 @@ {% extends "admin/base_admin.html.twig" %} {% block card_title %} - {% trans %}category.labelp{% endtrans %} + {{ type_label_p(entity) }} {% endblock %} {% block additional_pills %} @@ -61,4 +61,4 @@ {{ form_row(form.eda_info.kicad_symbol) }} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/admin/currency_admin.html.twig b/templates/admin/currency_admin.html.twig index fbd3822c..a5d59970 100644 --- a/templates/admin/currency_admin.html.twig +++ b/templates/admin/currency_admin.html.twig @@ -3,7 +3,7 @@ {% import "vars.macro.twig" as vars %} {% block card_title %} - {% trans %}currency.caption{% endtrans %} + {{ type_label_p(entity) }} {% endblock %} {% block additional_controls %} @@ -41,4 +41,4 @@ {% block new_title %} {% trans %}currency.new{% endtrans %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/admin/footprint_admin.html.twig b/templates/admin/footprint_admin.html.twig index a2c3e4af..1ed39e9f 100644 --- a/templates/admin/footprint_admin.html.twig +++ b/templates/admin/footprint_admin.html.twig @@ -1,7 +1,7 @@ {% extends "admin/base_admin.html.twig" %} {% block card_title %} - {% trans %}footprint.labelp{% endtrans %} + {{ type_label_p(entity) }} {% endblock %} {% block master_picture_block %} @@ -34,4 +34,4 @@ {{ form_row(form.eda_info.kicad_footprint) }} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/admin/group_admin.html.twig b/templates/admin/group_admin.html.twig index 91975524..831c08d5 100644 --- a/templates/admin/group_admin.html.twig +++ b/templates/admin/group_admin.html.twig @@ -1,7 +1,7 @@ {% extends "admin/base_admin.html.twig" %} {% block card_title %} - {% trans %}group.edit.caption{% endtrans %} + {{ type_label_p(entity) }} {% endblock %} @@ -27,4 +27,4 @@ {% block new_title %} {% trans %}group.new{% endtrans %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/admin/label_profile_admin.html.twig b/templates/admin/label_profile_admin.html.twig index 10c2320f..8702b18a 100644 --- a/templates/admin/label_profile_admin.html.twig +++ b/templates/admin/label_profile_admin.html.twig @@ -1,7 +1,7 @@ {% extends "admin/base_admin.html.twig" %} {% block card_title %} - {% trans %}label_profile.caption{% endtrans %} + {{ type_label_p(entity) }} {% endblock %} {% block additional_pills %} @@ -58,4 +58,4 @@ {% block new_title %} {% trans %}label_profile.new{% endtrans %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/admin/manufacturer_admin.html.twig b/templates/admin/manufacturer_admin.html.twig index 5db892c0..4f8f1c2b 100644 --- a/templates/admin/manufacturer_admin.html.twig +++ b/templates/admin/manufacturer_admin.html.twig @@ -1,7 +1,7 @@ {% extends "admin/base_company_admin.html.twig" %} {% block card_title %} - {% trans %}manufacturer.caption{% endtrans %} + {{ type_label_p(entity) }} {% endblock %} {% block edit_title %} @@ -10,4 +10,4 @@ {% block new_title %} {% trans %}manufacturer.new{% endtrans %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/admin/measurement_unit_admin.html.twig b/templates/admin/measurement_unit_admin.html.twig index 31748509..14df7364 100644 --- a/templates/admin/measurement_unit_admin.html.twig +++ b/templates/admin/measurement_unit_admin.html.twig @@ -1,7 +1,7 @@ {% extends "admin/base_admin.html.twig" %} {% block card_title %} - {% trans %}measurement_unit.caption{% endtrans %} + {{ type_label_p(entity) }} {% endblock %} {% block edit_title %} diff --git a/templates/admin/part_custom_state_admin.html.twig b/templates/admin/part_custom_state_admin.html.twig index 004ceb65..9d857646 100644 --- a/templates/admin/part_custom_state_admin.html.twig +++ b/templates/admin/part_custom_state_admin.html.twig @@ -1,7 +1,7 @@ {% extends "admin/base_admin.html.twig" %} {% block card_title %} - {% trans %}part_custom_state.caption{% endtrans %} + {{ type_label_p(entity) }} {% endblock %} {% block edit_title %} diff --git a/templates/admin/project_admin.html.twig b/templates/admin/project_admin.html.twig index 1a995069..d199b63c 100644 --- a/templates/admin/project_admin.html.twig +++ b/templates/admin/project_admin.html.twig @@ -3,7 +3,7 @@ {# @var entity App\Entity\ProjectSystem\Project #} {% block card_title %} - {% trans %}project.caption{% endtrans %} + {{ type_label_p(entity) }} {% endblock %} {% block edit_title %} @@ -59,4 +59,4 @@ {% endif %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/admin/storelocation_admin.html.twig b/templates/admin/storelocation_admin.html.twig index c93339dc..b01ecc73 100644 --- a/templates/admin/storelocation_admin.html.twig +++ b/templates/admin/storelocation_admin.html.twig @@ -2,7 +2,7 @@ {% import "label_system/dropdown_macro.html.twig" as dropdown %} {% block card_title %} - {% trans %}storelocation.labelp{% endtrans %} + {{ type_label_p(entity) }} {% endblock %} {% block additional_controls %} @@ -38,4 +38,4 @@ {% block new_title %} {% trans %}storelocation.new{% endtrans %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/admin/supplier_admin.html.twig b/templates/admin/supplier_admin.html.twig index ce38a5ca..d0ca85aa 100644 --- a/templates/admin/supplier_admin.html.twig +++ b/templates/admin/supplier_admin.html.twig @@ -1,7 +1,7 @@ {% extends "admin/base_company_admin.html.twig" %} {% block card_title %} - {% trans %}supplier.caption{% endtrans %} + {{ type_label_p(entity) }} {% endblock %} {% block additional_panes %} @@ -19,4 +19,4 @@ {% block new_title %} {% trans %}supplier.new{% endtrans %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/admin/user_admin.html.twig b/templates/admin/user_admin.html.twig index 772b42d9..9b241e56 100644 --- a/templates/admin/user_admin.html.twig +++ b/templates/admin/user_admin.html.twig @@ -5,7 +5,7 @@ {# @var entity \App\Entity\UserSystem\User #} {% block card_title %} - {% trans %}user.edit.caption{% endtrans %} + {{ type_label_p(entity) }} {% endblock %} {% block comment %}{% endblock %} @@ -111,4 +111,4 @@ {% block preview_picture %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/components/tree_macros.html.twig b/templates/components/tree_macros.html.twig index 366d42fe..aaa871ea 100644 --- a/templates/components/tree_macros.html.twig +++ b/templates/components/tree_macros.html.twig @@ -1,13 +1,15 @@ {% macro sidebar_dropdown() %} + {% set currentLocale = app.request.locale %} + {# Format is [mode, route, label, show_condition] #} {% set data_sources = [ - ['categories', path('tree_category_root'), 'category.labelp', is_granted('@categories.read') and is_granted('@parts.read')], - ['locations', path('tree_location_root'), 'storelocation.labelp', is_granted('@storelocations.read') and is_granted('@parts.read')], - ['footprints', path('tree_footprint_root'), 'footprint.labelp', is_granted('@footprints.read') and is_granted('@parts.read')], - ['manufacturers', path('tree_manufacturer_root'), 'manufacturer.labelp', is_granted('@manufacturers.read') and is_granted('@parts.read')], - ['suppliers', path('tree_supplier_root'), 'supplier.labelp', is_granted('@suppliers.read') and is_granted('@parts.read')], - ['projects', path('tree_device_root'), 'project.labelp', is_granted('@projects.read')], - ['tools', path('tree_tools'), 'tools.label', true], + ['categories', path('tree_category_root'), '@category@@', is_granted('@categories.read') and is_granted('@parts.read')], + ['locations', path('tree_location_root'), '@storage_location@@', is_granted('@storelocations.read') and is_granted('@parts.read'), ], + ['footprints', path('tree_footprint_root'), '@footprint@@', is_granted('@footprints.read') and is_granted('@parts.read')], + ['manufacturers', path('tree_manufacturer_root'), '@manufacturer@@', is_granted('@manufacturers.read') and is_granted('@parts.read'), 'manufacturer'], + ['suppliers', path('tree_supplier_root'), '@supplier@@', is_granted('@suppliers.read') and is_granted('@parts.read'), 'supplier'], + ['projects', path('tree_device_root'), '@project@@', is_granted('@projects.read'), 'project'], + ['tools', path('tree_tools'), 'tools.label', true, 'tool'], ] %} @@ -18,9 +20,20 @@ {% for source in data_sources %} {% if source[3] %} {# show_condition #} -
  • +
  • + {% if source[2] starts with '@' %} + {% set label = type_label_p(source[2]|replace({'@': ''})) %} + {% else %} + {% set label = source[2]|trans %} + {% endif %} + + +
  • {% endif %} {% endfor %} {% endmacro %} @@ -61,4 +74,4 @@
    -{% endmacro %} \ No newline at end of file +{% endmacro %} diff --git a/templates/form/synonyms_collection.html.twig b/templates/form/synonyms_collection.html.twig new file mode 100644 index 00000000..ee69dffc --- /dev/null +++ b/templates/form/synonyms_collection.html.twig @@ -0,0 +1,59 @@ +{% macro renderForm(child) %} +
    + {% form_theme child "form/vertical_bootstrap_layout.html.twig" %} +
    +
    {{ form_row(child.dataSource) }}
    +
    {{ form_row(child.locale) }}
    +
    {{ form_row(child.translation_singular) }}
    +
    {{ form_row(child.translation_plural) }}
    +
    + +
    +
    +
    +{% endmacro %} + +{% block type_synonyms_collection_widget %} + {% set _attrs = attr|default({}) %} + {% set _attrs = _attrs|merge({ + class: (_attrs.class|default('') ~ ' type_synonyms_collection-widget')|trim + }) %} + + {% set has_proto = prototype is defined %} + {% if has_proto %} + {% set __proto %} + {{- _self.renderForm(prototype) -}} + {% endset %} + {% set _proto_html = __proto|e('html_attr') %} + {% set _proto_name = form.vars.prototype_name|default('__name__') %} + {% set _index = form|length %} + {% endif %} + +
    +
    +
    {% trans%}settings.synonyms.type_synonym.type{% endtrans%}
    +
    {% trans%}settings.synonyms.type_synonym.language{% endtrans%}
    +
    {% trans%}settings.synonyms.type_synonym.translation_singular{% endtrans%}
    +
    {% trans%}settings.synonyms.type_synonym.translation_plural{% endtrans%}
    +
    +
    + +
    + {% for child in form %} + {{ _self.renderForm(child) }} + {% endfor %} +
    + +
    +{% endblock %} diff --git a/templates/form/vertical_bootstrap_layout.html.twig b/templates/form/vertical_bootstrap_layout.html.twig new file mode 100644 index 00000000..5f41d82e --- /dev/null +++ b/templates/form/vertical_bootstrap_layout.html.twig @@ -0,0 +1,26 @@ +{% extends 'bootstrap_5_layout.html.twig' %} + + +{%- block choice_widget_collapsed -%} + {# Only add the BS5 form-select class if we dont use bootstrap-selectpicker #} + {# {% if attr["data-controller"] is defined and attr["data-controller"] not in ["elements--selectpicker"] %} + {%- set attr = attr|merge({class: (attr.class|default('') ~ ' form-select')|trim}) -%} + {% else %} + {# If it is an selectpicker add form-control class to fill whole width + {%- set attr = attr|merge({class: (attr.class|default('') ~ ' form-control')|trim}) -%} + {% endif %} + #} + + {%- set attr = attr|merge({class: (attr.class|default('') ~ ' form-select')|trim}) -%} + + {# If no data-controller was explictly defined add data-controller=elements--select #} + {% if attr["data-controller"] is not defined %} + {%- set attr = attr|merge({"data-controller": "elements--select"}) -%} + + {% if attr["data-empty-message"] is not defined %} + {%- set attr = attr|merge({"data-empty-message": ("selectpicker.nothing_selected"|trans)}) -%} + {% endif %} + {% endif %} + + {{- block("choice_widget_collapsed", "bootstrap_base_layout.html.twig") -}} +{%- endblock choice_widget_collapsed -%} diff --git a/templates/settings/settings.html.twig b/templates/settings/settings.html.twig index 5ddbd900..96e0f209 100644 --- a/templates/settings/settings.html.twig +++ b/templates/settings/settings.html.twig @@ -36,7 +36,7 @@ {% for section_widget in tab_widget %} {% set settings_object = section_widget.vars.value %} - {% if section_widget.vars.compound ?? false %} + {% if section_widget.vars.embedded_settings_metadata is defined %} {# Check if we have nested embedded settings or not #}
    diff --git a/tests/EventListener/RegisterSynonymsAsTranslationParametersTest.php b/tests/EventListener/RegisterSynonymsAsTranslationParametersTest.php new file mode 100644 index 00000000..d08edecb --- /dev/null +++ b/tests/EventListener/RegisterSynonymsAsTranslationParametersTest.php @@ -0,0 +1,49 @@ +. + */ + +namespace App\Tests\EventListener; + +use App\EventListener\RegisterSynonymsAsTranslationParametersListener; +use PHPUnit\Framework\TestCase; +use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; + +class RegisterSynonymsAsTranslationParametersTest extends KernelTestCase +{ + + private RegisterSynonymsAsTranslationParametersListener $listener; + + public function setUp(): void + { + self::bootKernel(); + $this->listener = self::getContainer()->get(RegisterSynonymsAsTranslationParametersListener::class); + } + + public function testGetSynonymPlaceholders(): void + { + $placeholders = $this->listener->getSynonymPlaceholders(); + + $this->assertIsArray($placeholders); + $this->assertSame('Part', $placeholders['{part}']); + $this->assertSame('Parts', $placeholders['{{part}}']); + //Lowercase versions: + $this->assertSame('part', $placeholders['[part]']); + $this->assertSame('parts', $placeholders['[[part]]']); + } +} diff --git a/tests/Services/ElementTypeNameGeneratorTest.php b/tests/Services/ElementTypeNameGeneratorTest.php index f99b0676..8739dd06 100644 --- a/tests/Services/ElementTypeNameGeneratorTest.php +++ b/tests/Services/ElementTypeNameGeneratorTest.php @@ -30,20 +30,27 @@ use App\Entity\Parts\Category; use App\Entity\Parts\Part; use App\Exceptions\EntityNotSupportedException; use App\Services\ElementTypeNameGenerator; +use App\Services\ElementTypes; use App\Services\Formatters\AmountFormatter; +use App\Settings\SynonymSettings; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class ElementTypeNameGeneratorTest extends WebTestCase { - /** - * @var AmountFormatter - */ - protected $service; + protected ElementTypeNameGenerator $service; + private SynonymSettings $synonymSettings; protected function setUp(): void { //Get an service instance. $this->service = self::getContainer()->get(ElementTypeNameGenerator::class); + $this->synonymSettings = self::getContainer()->get(SynonymSettings::class); + } + + protected function tearDown(): void + { + //Clean up synonym settings + $this->synonymSettings->typeSynonyms = []; } public function testGetLocalizedTypeNameCombination(): void @@ -84,4 +91,30 @@ class ElementTypeNameGeneratorTest extends WebTestCase } }); } + + public function testTypeLabel(): void + { + //If no synonym is defined, the default label should be used + $this->assertSame('Part', $this->service->typeLabel(Part::class)); + $this->assertSame('Part', $this->service->typeLabel(new Part())); + $this->assertSame('Part', $this->service->typeLabel(ElementTypes::PART)); + $this->assertSame('Part', $this->service->typeLabel('part')); + + //Define a synonym for parts in english + $this->synonymSettings->setSynonymForType(ElementTypes::PART, 'en', 'Singular', 'Plurals'); + $this->assertSame('Singular', $this->service->typeLabel(Part::class)); + } + + public function testTypeLabelPlural(): void + { + //If no synonym is defined, the default label should be used + $this->assertSame('Parts', $this->service->typeLabelPlural(Part::class)); + $this->assertSame('Parts', $this->service->typeLabelPlural(new Part())); + $this->assertSame('Parts', $this->service->typeLabelPlural(ElementTypes::PART)); + $this->assertSame('Parts', $this->service->typeLabelPlural('part')); + + //Define a synonym for parts in english + $this->synonymSettings->setSynonymForType(ElementTypes::PART, 'en', 'Singular', 'Plurals'); + $this->assertSame('Plurals', $this->service->typeLabelPlural(Part::class)); + } } diff --git a/tests/Services/ElementTypesTest.php b/tests/Services/ElementTypesTest.php new file mode 100644 index 00000000..d4fa77ff --- /dev/null +++ b/tests/Services/ElementTypesTest.php @@ -0,0 +1,79 @@ +. + */ + +namespace App\Tests\Services; + +use App\Entity\Parameters\CategoryParameter; +use App\Entity\Parts\Category; +use App\Exceptions\EntityNotSupportedException; +use App\Services\ElementTypes; +use PHPUnit\Framework\TestCase; + +class ElementTypesTest extends TestCase +{ + + public function testFromClass(): void + { + $this->assertSame(ElementTypes::CATEGORY, ElementTypes::fromClass(Category::class)); + $this->assertSame(ElementTypes::CATEGORY, ElementTypes::fromClass(new Category())); + + //Should also work with subclasses + $this->assertSame(ElementTypes::PARAMETER, ElementTypes::fromClass(CategoryParameter::class)); + $this->assertSame(ElementTypes::PARAMETER, ElementTypes::fromClass(new CategoryParameter())); + } + + public function testFromClassNotExisting(): void + { + $this->expectException(EntityNotSupportedException::class); + ElementTypes::fromClass(\LogicException::class); + } + + public function testFromValue(): void + { + //By enum value + $this->assertSame(ElementTypes::CATEGORY, ElementTypes::fromValue('category')); + $this->assertSame(ElementTypes::ATTACHMENT, ElementTypes::fromValue('attachment')); + + //From enum instance + $this->assertSame(ElementTypes::CATEGORY, ElementTypes::fromValue(ElementTypes::CATEGORY)); + + //From class string + $this->assertSame(ElementTypes::CATEGORY, ElementTypes::fromValue(Category::class)); + $this->assertSame(ElementTypes::PARAMETER, ElementTypes::fromValue(CategoryParameter::class)); + + //From class instance + $this->assertSame(ElementTypes::CATEGORY, ElementTypes::fromValue(new Category())); + $this->assertSame(ElementTypes::PARAMETER, ElementTypes::fromValue(new CategoryParameter())); + } + + public function testGetDefaultLabelKey(): void + { + $this->assertSame('category.label', ElementTypes::CATEGORY->getDefaultLabelKey()); + $this->assertSame('attachment.label', ElementTypes::ATTACHMENT->getDefaultLabelKey()); + } + + public function testGetDefaultPluralLabelKey(): void + { + $this->assertSame('category.labelp', ElementTypes::CATEGORY->getDefaultPluralLabelKey()); + $this->assertSame('attachment.labelp', ElementTypes::ATTACHMENT->getDefaultPluralLabelKey()); + } + + +} diff --git a/tests/Settings/SynonymSettingsTest.php b/tests/Settings/SynonymSettingsTest.php new file mode 100644 index 00000000..2d1407ac --- /dev/null +++ b/tests/Settings/SynonymSettingsTest.php @@ -0,0 +1,76 @@ +. + */ + +namespace App\Tests\Settings; + +use App\Services\ElementTypes; +use App\Settings\SynonymSettings; +use App\Tests\SettingsTestHelper; +use PHPUnit\Framework\TestCase; + +class SynonymSettingsTest extends TestCase +{ + + public function testGetSingularSynonymForType(): void + { + $settings = SettingsTestHelper::createSettingsDummy(SynonymSettings::class); + $settings->typeSynonyms['category'] = [ + 'en' => ['singular' => 'Category', 'plural' => 'Categories'], + 'de' => ['singular' => 'Kategorie', 'plural' => 'Kategorien'], + ]; + + $this->assertEquals('Category', $settings->getSingularSynonymForType(ElementTypes::CATEGORY, 'en')); + $this->assertEquals('Kategorie', $settings->getSingularSynonymForType(ElementTypes::CATEGORY, 'de')); + + //If no synonym is defined, it should return null + $this->assertNull($settings->getSingularSynonymForType(ElementTypes::MANUFACTURER, 'en')); + } + + public function testIsSynonymDefinedForType(): void + { + $settings = SettingsTestHelper::createSettingsDummy(SynonymSettings::class); + $settings->typeSynonyms['category'] = [ + 'en' => ['singular' => 'Category', 'plural' => 'Categories'], + 'de' => ['singular' => 'Kategorie', 'plural' => 'Kategorien'], + ]; + + $settings->typeSynonyms['supplier'] = []; + + $this->assertTrue($settings->isSynonymDefinedForType(ElementTypes::CATEGORY)); + $this->assertFalse($settings->isSynonymDefinedForType(ElementTypes::FOOTPRINT)); + $this->assertFalse($settings->isSynonymDefinedForType(ElementTypes::SUPPLIER)); + } + + public function testGetPluralSynonymForType(): void + { + $settings = SettingsTestHelper::createSettingsDummy(SynonymSettings::class); + $settings->typeSynonyms['category'] = [ + 'en' => ['singular' => 'Category', 'plural' => 'Categories'], + 'de' => ['singular' => 'Kategorie',], + ]; + + $this->assertEquals('Categories', $settings->getPluralSynonymForType(ElementTypes::CATEGORY, 'en')); + //Fallback to singular if no plural is defined + $this->assertEquals('Kategorie', $settings->getPluralSynonymForType(ElementTypes::CATEGORY, 'de')); + + //If no synonym is defined, it should return null + $this->assertNull($settings->getPluralSynonymForType(ElementTypes::MANUFACTURER, 'en')); + } +} diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index a5d86338..db4370f4 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -97,16 +97,6 @@ New category - - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - - - currency.caption - Currency - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 @@ -418,16 +408,6 @@ New footprint - - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - - - group.edit.caption - Groups - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 @@ -460,15 +440,6 @@ New group - - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:4 - - - label_profile.caption - Label profiles - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:8 @@ -507,17 +478,6 @@ New label profile - - - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - templates\AdminPages\ManufacturerAdmin.html.twig:4 - - - manufacturer.caption - Manufacturers - - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:8 @@ -538,22 +498,6 @@ New manufacturer - - - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - - - measurement_unit.caption - Measurement Unit - - - - - part_custom_state.caption - Custom part states - - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:5 @@ -620,16 +564,6 @@ New supplier - - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - - - user.edit.caption - Users - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 @@ -4897,7 +4831,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Measurement Unit - + part.table.partCustomState Custom part state @@ -5767,7 +5701,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Measuring unit - + part.edit.partCustomState Custom part state @@ -6060,7 +5994,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Measurement unit - + part_custom_state.label Custom part state @@ -6309,7 +6243,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Measurement Unit - + tree.tools.edit.part_custom_state Custom part states @@ -7724,16 +7658,6 @@ Element 1 -> Element 1.2]]> System - - - obsolete - obsolete - - - perm.parts - Parts - - obsolete @@ -7994,16 +7918,6 @@ Element 1 -> Element 1.2]]> Orders - - - obsolete - obsolete - - - perm.storelocations - Storage locations - - obsolete @@ -8024,66 +7938,6 @@ Element 1 -> Element 1.2]]> List parts - - - obsolete - obsolete - - - perm.part.footprints - Footprints - - - - - obsolete - obsolete - - - perm.part.categories - Categories - - - - - obsolete - obsolete - - - perm.part.supplier - Suppliers - - - - - obsolete - obsolete - - - perm.part.manufacturers - Manufacturers - - - - - obsolete - obsolete - - - perm.projects - Projects - - - - - obsolete - obsolete - - - perm.part.attachment_types - Attachment types - - obsolete @@ -8594,12 +8448,6 @@ Element 1 -> Element 1.2]]> Measurement unit - - - perm.part_custom_states - Custom part state - - obsolete @@ -10995,7 +10843,7 @@ Element 1 -> Element 1.2]]> Measuring Unit - + log.element_edited.changed_fields.partCustomState Custom part state @@ -11265,13 +11113,13 @@ Element 1 -> Element 1.2]]> Edit Measurement Unit - + part_custom_state.new New custom part state - + part_custom_state.edit Edit custom part state @@ -14406,31 +14254,6 @@ Please note, that you can not impersonate a disabled user. If you try you will g - - - project.builds.no_bom_entries - Project has no BOM entries - - - - - settings.behavior.sidebar.data_structure_nodes_table_include_children - Tables should include children nodes by default - - - - - settings.behavior.sidebar.data_structure_nodes_table_include_children.help - If checked, the part tables for categories, footprints, etc. should include all parts of child categories. If not checked, only parts that strictly belong to the clicked node are shown. - - - - - info_providers.search.error.oauth_reconnect - You need to reconnect OAuth for following providers: %provider% -You can do this in the provider info list. - - project.builds.no_bom_entries @@ -14468,5 +14291,126 @@ You can do this in the provider info list. A PCRE-compatible regular expression every IPN has to fulfill. Leave empty to allow all everything as IPN. + + + user.labelp + Users + + + + + currency.labelp + Currencies + + + + + measurement_unit.labelp + Measurement units + + + + + attachment_type.labelp + Attachment types + + + + + label_profile.labelp + Label profiles + + + + + part_custom_state.labelp + Custom part states + + + + + group.labelp + Groups + + + + + settings.synonyms.type_synonym.type + Type + + + + + settings.synonyms.type_synonym.language + Language + + + + + settings.synonyms.type_synonym.translation_singular + Translation Singular + + + + + settings.synonyms.type_synonym.translation_plural + Translation Plural + + + + + settings.synonyms.type_synonym.add_entry + Add entry + + + + + settings.synonyms.type_synonym.remove_entry + Remove entry + + + + + settings.synonyms + Synonyms + + + + + settings.synonyms.help + The synonyms systems allow overriding how Part-DB call certain things. This can be useful, especially if Part-DB is used in a different context than electronics. +Please note that this system is currently experimental, and the synonyms defined here might not show up at all places. + + + + + settings.synonyms.type_synonyms + Type synonyms + + + + + settings.synonyms.type_synonyms.help + Type synonyms allow you to replace the labels of built-in data types. For example, you can rename "Footprint" to something else. + + + + + {{part}} + Parts + + + + + log.element_edited.changed_fields.part_ipn_prefix + IPN prefix + + + + + part.labelp + Parts + + diff --git a/translations/messages.ru.xlf b/translations/messages.ru.xlf index 9c91a4b1..0fbf7a42 100644 --- a/translations/messages.ru.xlf +++ b/translations/messages.ru.xlf @@ -737,7 +737,7 @@ user.edit.tfa.disable_tfa_message - Это выключит <b>все активные двухфакторной способы аутентификации пользователя</b>и удалит <b>резервные коды</b>! + Это выключит <b>все активные двухфакторной способы аутентификации пользователя</b>и удалит <b>резервные коды</b>! <br> Пользователь должен будет снова настроить все методы двухфакторной аутентификации и распечатать новые резервные коды! <br><br> <b>Делайте это только в том случае, если вы абсолютно уверены в личности пользователя (обращающегося за помощью), в противном случае учетная запись может быть взломана злоумышленником!</b> @@ -3806,7 +3806,7 @@ tfa_backup.reset_codes.confirm_message - Это удалит все предыдущие коды и создаст набор новых. Это не может быть отменено. + Это удалит все предыдущие коды и создаст набор новых. Это не может быть отменено. Не забудьте распечатать новы кода и хранить их в безопасном месте! diff --git a/translations/validators.en.xlf b/translations/validators.en.xlf index 6ad14460..86045227 100644 --- a/translations/validators.en.xlf +++ b/translations/validators.en.xlf @@ -347,13 +347,13 @@ Due to technical limitations, it is not possible to select dates after the 2038-01-19 on 32-bit systems! - + validator.fileSize.invalidFormat Invalid file size format. Use an integer number plus K, M, G as suffix for Kilo, Mega or Gigabytes. - + validator.invalid_range The given range is not valid! @@ -365,5 +365,11 @@ Invalid code. Check that your authenticator app is set up correctly and that both the server and authentication device has the time set correctly. + + + settings.synonyms.type_synonyms.collection_type.duplicate + There is already a translation defined for this type and language! + + From f184afc918957b364157001b8420753495256dd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 12 Nov 2025 21:49:44 +0100 Subject: [PATCH 007/235] Updated dependencies --- composer.lock | 380 ++++++------- yarn.lock | 1404 ++++++++++++++++++++++++------------------------- 2 files changed, 892 insertions(+), 892 deletions(-) diff --git a/composer.lock b/composer.lock index 28b0e8ef..187c5155 100644 --- a/composer.lock +++ b/composer.lock @@ -2390,16 +2390,16 @@ }, { "name": "composer/ca-bundle", - "version": "1.5.8", + "version": "1.5.9", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "719026bb30813accb68271fee7e39552a58e9f65" + "reference": "1905981ee626e6f852448b7aaa978f8666c5bc54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/719026bb30813accb68271fee7e39552a58e9f65", - "reference": "719026bb30813accb68271fee7e39552a58e9f65", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/1905981ee626e6f852448b7aaa978f8666c5bc54", + "reference": "1905981ee626e6f852448b7aaa978f8666c5bc54", "shasum": "" }, "require": { @@ -2446,7 +2446,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.5.8" + "source": "https://github.com/composer/ca-bundle/tree/1.5.9" }, "funding": [ { @@ -2458,7 +2458,7 @@ "type": "github" } ], - "time": "2025-08-20T18:49:47+00:00" + "time": "2025-11-06T11:46:17+00:00" }, { "name": "composer/package-versions-deprecated", @@ -3147,16 +3147,16 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "2.18.0", + "version": "2.18.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "cd5d4da6a5f7cf3d8708e17211234657b5eb4e95" + "reference": "b769877014de053da0e5cbbb63d0ea2f3b2fea76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/cd5d4da6a5f7cf3d8708e17211234657b5eb4e95", - "reference": "cd5d4da6a5f7cf3d8708e17211234657b5eb4e95", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/b769877014de053da0e5cbbb63d0ea2f3b2fea76", + "reference": "b769877014de053da0e5cbbb63d0ea2f3b2fea76", "shasum": "" }, "require": { @@ -3248,7 +3248,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.18.0" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.18.1" }, "funding": [ { @@ -3264,20 +3264,20 @@ "type": "tidelift" } ], - "time": "2025-10-11T04:43:27+00:00" + "time": "2025-11-05T14:42:10+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.5.0", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "71c81279ca0e907c3edc718418b93fd63074856c" + "reference": "49ecc564568d7da101779112579e78b677fbc94a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/71c81279ca0e907c3edc718418b93fd63074856c", - "reference": "71c81279ca0e907c3edc718418b93fd63074856c", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/49ecc564568d7da101779112579e78b677fbc94a", + "reference": "49ecc564568d7da101779112579e78b677fbc94a", "shasum": "" }, "require": { @@ -3285,7 +3285,7 @@ "doctrine/migrations": "^3.2", "php": "^7.2 || ^8.0", "symfony/deprecation-contracts": "^2.1 || ^3", - "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0 || ^8.0" }, "require-dev": { "composer/semver": "^3.0", @@ -3297,8 +3297,8 @@ "phpstan/phpstan-strict-rules": "^1.1 || ^2", "phpstan/phpstan-symfony": "^1.3 || ^2", "phpunit/phpunit": "^8.5 || ^9.5", - "symfony/phpunit-bridge": "^6.3 || ^7", - "symfony/var-exporter": "^5.4 || ^6 || ^7" + "symfony/phpunit-bridge": "^6.3 || ^7 || ^8", + "symfony/var-exporter": "^5.4 || ^6 || ^7 || ^8" }, "type": "symfony-bundle", "autoload": { @@ -3333,7 +3333,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.5.0" + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.6.0" }, "funding": [ { @@ -3349,7 +3349,7 @@ "type": "tidelift" } ], - "time": "2025-10-12T17:06:40+00:00" + "time": "2025-11-07T19:40:03+00:00" }, { "name": "doctrine/event-manager", @@ -3784,16 +3784,16 @@ }, { "name": "doctrine/orm", - "version": "3.5.3", + "version": "3.5.7", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "1220edf9535303feb6dbfcf171beeef842fc9e1c" + "reference": "f18de9d569f00ed6eb9dac4b33c7844d705d17da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/1220edf9535303feb6dbfcf171beeef842fc9e1c", - "reference": "1220edf9535303feb6dbfcf171beeef842fc9e1c", + "url": "https://api.github.com/repos/doctrine/orm/zipball/f18de9d569f00ed6eb9dac4b33c7844d705d17da", + "reference": "f18de9d569f00ed6eb9dac4b33c7844d705d17da", "shasum": "" }, "require": { @@ -3817,7 +3817,7 @@ "phpbench/phpbench": "^1.0", "phpdocumentor/guides-cli": "^1.4", "phpstan/extension-installer": "^1.4", - "phpstan/phpstan": "2.1.22", + "phpstan/phpstan": "2.1.23", "phpstan/phpstan-deprecation-rules": "^2", "phpunit/phpunit": "^10.5.0 || ^11.5", "psr/log": "^1 || ^2 || ^3", @@ -3867,9 +3867,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/3.5.3" + "source": "https://github.com/doctrine/orm/tree/3.5.7" }, - "time": "2025-10-27T22:06:52+00:00" + "time": "2025-11-11T18:27:40+00:00" }, { "name": "doctrine/persistence", @@ -9969,40 +9969,28 @@ }, { "name": "spomky-labs/cbor-php", - "version": "3.1.1", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/Spomky-Labs/cbor-php.git", - "reference": "5404f3e21cbe72f5cf612aa23db2b922fd2f43bf" + "reference": "53b2adc63d126ddd062016969ce2bad5871fda6c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/cbor-php/zipball/5404f3e21cbe72f5cf612aa23db2b922fd2f43bf", - "reference": "5404f3e21cbe72f5cf612aa23db2b922fd2f43bf", + "url": "https://api.github.com/repos/Spomky-Labs/cbor-php/zipball/53b2adc63d126ddd062016969ce2bad5871fda6c", + "reference": "53b2adc63d126ddd062016969ce2bad5871fda6c", "shasum": "" }, "require": { - "brick/math": "^0.9|^0.10|^0.11|^0.12|^0.13", + "brick/math": "^0.9|^0.10|^0.11|^0.12|^0.13|^0.14", "ext-mbstring": "*", "php": ">=8.0" }, "require-dev": { - "deptrac/deptrac": "^3.0", - "ekino/phpstan-banned-code": "^1.0|^2.0|^3.0", "ext-json": "*", - "infection/infection": "^0.29", - "php-parallel-lint/php-parallel-lint": "^1.3", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.0|^2.0", - "phpstan/phpstan-beberlei-assert": "^1.0|^2.0", - "phpstan/phpstan-deprecation-rules": "^1.0|^2.0", - "phpstan/phpstan-phpunit": "^1.0|^2.0", - "phpstan/phpstan-strict-rules": "^1.0|^2.0", - "phpunit/phpunit": "^10.1|^11.0|^12.0", - "rector/rector": "^1.0|^2.0", "roave/security-advisories": "dev-latest", - "symfony/var-dumper": "^6.0|^7.0", - "symplify/easy-coding-standard": "^12.0" + "symfony/error-handler": "^6.4|^7.1|^8.0", + "symfony/var-dumper": "^6.4|^7.1|^8.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", @@ -10036,7 +10024,7 @@ ], "support": { "issues": "https://github.com/Spomky-Labs/cbor-php/issues", - "source": "https://github.com/Spomky-Labs/cbor-php/tree/3.1.1" + "source": "https://github.com/Spomky-Labs/cbor-php/tree/3.2.0" }, "funding": [ { @@ -10048,7 +10036,7 @@ "type": "patreon" } ], - "time": "2025-06-13T11:57:55+00:00" + "time": "2025-11-07T09:45:05+00:00" }, { "name": "spomky-labs/otphp", @@ -10338,16 +10326,16 @@ }, { "name": "symfony/cache", - "version": "v7.3.5", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "4a55feb59664f49042a0824c0f955e2f4c1412ad" + "reference": "1277a1ec61c8d93ea61b2a59738f1deb9bfb6701" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/4a55feb59664f49042a0824c0f955e2f4c1412ad", - "reference": "4a55feb59664f49042a0824c0f955e2f4c1412ad", + "url": "https://api.github.com/repos/symfony/cache/zipball/1277a1ec61c8d93ea61b2a59738f1deb9bfb6701", + "reference": "1277a1ec61c8d93ea61b2a59738f1deb9bfb6701", "shasum": "" }, "require": { @@ -10416,7 +10404,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.3.5" + "source": "https://github.com/symfony/cache/tree/v7.3.6" }, "funding": [ { @@ -10436,7 +10424,7 @@ "type": "tidelift" } ], - "time": "2025-10-16T13:55:38+00:00" + "time": "2025-10-30T13:22:58+00:00" }, { "name": "symfony/cache-contracts", @@ -10590,16 +10578,16 @@ }, { "name": "symfony/config", - "version": "v7.3.4", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "8a09223170046d2cfda3d2e11af01df2c641e961" + "reference": "9d18eba95655a3152ae4c1d53c6cc34eb4d4a0b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/8a09223170046d2cfda3d2e11af01df2c641e961", - "reference": "8a09223170046d2cfda3d2e11af01df2c641e961", + "url": "https://api.github.com/repos/symfony/config/zipball/9d18eba95655a3152ae4c1d53c6cc34eb4d4a0b7", + "reference": "9d18eba95655a3152ae4c1d53c6cc34eb4d4a0b7", "shasum": "" }, "require": { @@ -10645,7 +10633,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/v7.3.4" + "source": "https://github.com/symfony/config/tree/v7.3.6" }, "funding": [ { @@ -10665,20 +10653,20 @@ "type": "tidelift" } ], - "time": "2025-09-22T12:46:16+00:00" + "time": "2025-11-02T08:04:43+00:00" }, { "name": "symfony/console", - "version": "v7.3.5", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "cdb80fa5869653c83cfe1a9084a673b6daf57ea7" + "reference": "c28ad91448f86c5f6d9d2c70f0cf68bf135f252a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/cdb80fa5869653c83cfe1a9084a673b6daf57ea7", - "reference": "cdb80fa5869653c83cfe1a9084a673b6daf57ea7", + "url": "https://api.github.com/repos/symfony/console/zipball/c28ad91448f86c5f6d9d2c70f0cf68bf135f252a", + "reference": "c28ad91448f86c5f6d9d2c70f0cf68bf135f252a", "shasum": "" }, "require": { @@ -10743,7 +10731,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.3.5" + "source": "https://github.com/symfony/console/tree/v7.3.6" }, "funding": [ { @@ -10763,20 +10751,20 @@ "type": "tidelift" } ], - "time": "2025-10-14T15:46:26+00:00" + "time": "2025-11-04T01:21:42+00:00" }, { "name": "symfony/css-selector", - "version": "v7.3.0", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2" + "reference": "84321188c4754e64273b46b406081ad9b18e8614" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/601a5ce9aaad7bf10797e3663faefce9e26c24e2", - "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/84321188c4754e64273b46b406081ad9b18e8614", + "reference": "84321188c4754e64273b46b406081ad9b18e8614", "shasum": "" }, "require": { @@ -10812,7 +10800,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.3.0" + "source": "https://github.com/symfony/css-selector/tree/v7.3.6" }, "funding": [ { @@ -10823,25 +10811,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2025-10-29T17:24:25+00:00" }, { "name": "symfony/dependency-injection", - "version": "v7.3.4", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "82119812ab0bf3425c1234d413efd1b19bb92ae4" + "reference": "98af8bb46c56aedd9dd5a7f0414fc72bf2dcfe69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/82119812ab0bf3425c1234d413efd1b19bb92ae4", - "reference": "82119812ab0bf3425c1234d413efd1b19bb92ae4", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/98af8bb46c56aedd9dd5a7f0414fc72bf2dcfe69", + "reference": "98af8bb46c56aedd9dd5a7f0414fc72bf2dcfe69", "shasum": "" }, "require": { @@ -10892,7 +10884,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/v7.3.4" + "source": "https://github.com/symfony/dependency-injection/tree/v7.3.6" }, "funding": [ { @@ -10912,7 +10904,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-10-31T10:11:11+00:00" }, { "name": "symfony/deprecation-contracts", @@ -11245,16 +11237,16 @@ }, { "name": "symfony/error-handler", - "version": "v7.3.4", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "99f81bc944ab8e5dae4f21b4ca9972698bbad0e4" + "reference": "bbe40bfab84323d99dab491b716ff142410a92a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/99f81bc944ab8e5dae4f21b4ca9972698bbad0e4", - "reference": "99f81bc944ab8e5dae4f21b4ca9972698bbad0e4", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/bbe40bfab84323d99dab491b716ff142410a92a8", + "reference": "bbe40bfab84323d99dab491b716ff142410a92a8", "shasum": "" }, "require": { @@ -11302,7 +11294,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/v7.3.4" + "source": "https://github.com/symfony/error-handler/tree/v7.3.6" }, "funding": [ { @@ -11322,7 +11314,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-10-31T19:12:50+00:00" }, { "name": "symfony/event-dispatcher", @@ -11554,16 +11546,16 @@ }, { "name": "symfony/filesystem", - "version": "v7.3.2", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd" + "reference": "e9bcfd7837928ab656276fe00464092cc9e1826a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/edcbb768a186b5c3f25d0643159a787d3e63b7fd", - "reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/e9bcfd7837928ab656276fe00464092cc9e1826a", + "reference": "e9bcfd7837928ab656276fe00464092cc9e1826a", "shasum": "" }, "require": { @@ -11600,7 +11592,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.3.2" + "source": "https://github.com/symfony/filesystem/tree/v7.3.6" }, "funding": [ { @@ -11620,7 +11612,7 @@ "type": "tidelift" } ], - "time": "2025-07-07T08:17:47+00:00" + "time": "2025-11-05T09:52:27+00:00" }, { "name": "symfony/finder", @@ -11764,16 +11756,16 @@ }, { "name": "symfony/form", - "version": "v7.3.5", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "c8032766d5b198865d00b7d4471fc787a0a7f5e4" + "reference": "a8f32aa19b322bf46cbaaafa89c132eb662ecfe5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/c8032766d5b198865d00b7d4471fc787a0a7f5e4", - "reference": "c8032766d5b198865d00b7d4471fc787a0a7f5e4", + "url": "https://api.github.com/repos/symfony/form/zipball/a8f32aa19b322bf46cbaaafa89c132eb662ecfe5", + "reference": "a8f32aa19b322bf46cbaaafa89c132eb662ecfe5", "shasum": "" }, "require": { @@ -11841,7 +11833,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v7.3.5" + "source": "https://github.com/symfony/form/tree/v7.3.6" }, "funding": [ { @@ -11861,20 +11853,20 @@ "type": "tidelift" } ], - "time": "2025-10-10T11:54:12+00:00" + "time": "2025-10-31T09:25:04+00:00" }, { "name": "symfony/framework-bundle", - "version": "v7.3.5", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "ebd42b1fc2652b96d33520195ea0f6e55c36f09d" + "reference": "cabfdfa82bc4f75d693a329fe263d96937636b77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/ebd42b1fc2652b96d33520195ea0f6e55c36f09d", - "reference": "ebd42b1fc2652b96d33520195ea0f6e55c36f09d", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/cabfdfa82bc4f75d693a329fe263d96937636b77", + "reference": "cabfdfa82bc4f75d693a329fe263d96937636b77", "shasum": "" }, "require": { @@ -11999,7 +11991,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/v7.3.5" + "source": "https://github.com/symfony/framework-bundle/tree/v7.3.6" }, "funding": [ { @@ -12019,20 +12011,20 @@ "type": "tidelift" } ], - "time": "2025-10-16T16:16:53+00:00" + "time": "2025-10-30T09:42:24+00:00" }, { "name": "symfony/http-client", - "version": "v7.3.4", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "4b62871a01c49457cf2a8e560af7ee8a94b87a62" + "reference": "3c0a55a2c8e21e30a37022801c11c7ab5a6cb2de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/4b62871a01c49457cf2a8e560af7ee8a94b87a62", - "reference": "4b62871a01c49457cf2a8e560af7ee8a94b87a62", + "url": "https://api.github.com/repos/symfony/http-client/zipball/3c0a55a2c8e21e30a37022801c11c7ab5a6cb2de", + "reference": "3c0a55a2c8e21e30a37022801c11c7ab5a6cb2de", "shasum": "" }, "require": { @@ -12099,7 +12091,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v7.3.4" + "source": "https://github.com/symfony/http-client/tree/v7.3.6" }, "funding": [ { @@ -12119,7 +12111,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-11-05T17:41:46+00:00" }, { "name": "symfony/http-client-contracts", @@ -12201,16 +12193,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.3.5", + "version": "v7.3.7", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "ce31218c7cac92eab280762c4375fb70a6f4f897" + "reference": "db488a62f98f7a81d5746f05eea63a74e55bb7c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ce31218c7cac92eab280762c4375fb70a6f4f897", - "reference": "ce31218c7cac92eab280762c4375fb70a6f4f897", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/db488a62f98f7a81d5746f05eea63a74e55bb7c4", + "reference": "db488a62f98f7a81d5746f05eea63a74e55bb7c4", "shasum": "" }, "require": { @@ -12260,7 +12252,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.3.5" + "source": "https://github.com/symfony/http-foundation/tree/v7.3.7" }, "funding": [ { @@ -12280,20 +12272,20 @@ "type": "tidelift" } ], - "time": "2025-10-24T21:42:11+00:00" + "time": "2025-11-08T16:41:12+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.3.5", + "version": "v7.3.7", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "24fd3f123532e26025f49f1abefcc01a69ef15ab" + "reference": "10b8e9b748ea95fa4539c208e2487c435d3c87ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/24fd3f123532e26025f49f1abefcc01a69ef15ab", - "reference": "24fd3f123532e26025f49f1abefcc01a69ef15ab", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/10b8e9b748ea95fa4539c208e2487c435d3c87ce", + "reference": "10b8e9b748ea95fa4539c208e2487c435d3c87ce", "shasum": "" }, "require": { @@ -12378,7 +12370,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/v7.3.5" + "source": "https://github.com/symfony/http-kernel/tree/v7.3.7" }, "funding": [ { @@ -12398,7 +12390,7 @@ "type": "tidelift" } ], - "time": "2025-10-28T10:19:01+00:00" + "time": "2025-11-12T11:38:40+00:00" }, { "name": "symfony/intl", @@ -12664,16 +12656,16 @@ }, { "name": "symfony/monolog-bridge", - "version": "v7.3.5", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "c66a65049c75f3ddf03d73c8c9ed61405779ce47" + "reference": "48e8542ba35afd2293a8c8fd4bcf8abe46357ddf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/c66a65049c75f3ddf03d73c8c9ed61405779ce47", - "reference": "c66a65049c75f3ddf03d73c8c9ed61405779ce47", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/48e8542ba35afd2293a8c8fd4bcf8abe46357ddf", + "reference": "48e8542ba35afd2293a8c8fd4bcf8abe46357ddf", "shasum": "" }, "require": { @@ -12722,7 +12714,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v7.3.5" + "source": "https://github.com/symfony/monolog-bridge/tree/v7.3.6" }, "funding": [ { @@ -12742,7 +12734,7 @@ "type": "tidelift" } ], - "time": "2025-10-14T19:16:15+00:00" + "time": "2025-11-01T09:17:24+00:00" }, { "name": "symfony/monolog-bundle", @@ -14279,16 +14271,16 @@ }, { "name": "symfony/routing", - "version": "v7.3.4", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "8dc648e159e9bac02b703b9fbd937f19ba13d07c" + "reference": "c97abe725f2a1a858deca629a6488c8fc20c3091" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/8dc648e159e9bac02b703b9fbd937f19ba13d07c", - "reference": "8dc648e159e9bac02b703b9fbd937f19ba13d07c", + "url": "https://api.github.com/repos/symfony/routing/zipball/c97abe725f2a1a858deca629a6488c8fc20c3091", + "reference": "c97abe725f2a1a858deca629a6488c8fc20c3091", "shasum": "" }, "require": { @@ -14340,7 +14332,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.3.4" + "source": "https://github.com/symfony/routing/tree/v7.3.6" }, "funding": [ { @@ -14360,7 +14352,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-11-05T07:57:47+00:00" }, { "name": "symfony/runtime", @@ -14913,16 +14905,16 @@ }, { "name": "symfony/service-contracts", - "version": "v3.6.0", + "version": "v3.6.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", - "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43", "shasum": "" }, "require": { @@ -14976,7 +14968,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.6.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.6.1" }, "funding": [ { @@ -14987,12 +14979,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-04-25T09:37:31+00:00" + "time": "2025-07-15T11:30:57+00:00" }, { "name": "symfony/stimulus-bundle", @@ -15321,16 +15317,16 @@ }, { "name": "symfony/translation-contracts", - "version": "v3.6.0", + "version": "v3.6.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d" + "reference": "65a8bc82080447fae78373aa10f8d13b38338977" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/df210c7a2573f1913b2d17cc95f90f53a73d8f7d", - "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/65a8bc82080447fae78373aa10f8d13b38338977", + "reference": "65a8bc82080447fae78373aa10f8d13b38338977", "shasum": "" }, "require": { @@ -15379,7 +15375,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.6.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.6.1" }, "funding": [ { @@ -15390,25 +15386,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-27T08:32:26+00:00" + "time": "2025-07-15T13:41:35+00:00" }, { "name": "symfony/twig-bridge", - "version": "v7.3.3", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "33558f013b7f6ed72805527c8405cae0062e47c5" + "reference": "d1aaec8eee1f5591f56b9efe00194d73a8e38319" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/33558f013b7f6ed72805527c8405cae0062e47c5", - "reference": "33558f013b7f6ed72805527c8405cae0062e47c5", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/d1aaec8eee1f5591f56b9efe00194d73a8e38319", + "reference": "d1aaec8eee1f5591f56b9efe00194d73a8e38319", "shasum": "" }, "require": { @@ -15490,7 +15490,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v7.3.3" + "source": "https://github.com/symfony/twig-bridge/tree/v7.3.6" }, "funding": [ { @@ -15510,7 +15510,7 @@ "type": "tidelift" } ], - "time": "2025-08-18T13:10:53+00:00" + "time": "2025-11-04T15:37:51+00:00" }, { "name": "symfony/twig-bundle", @@ -15943,16 +15943,16 @@ }, { "name": "symfony/validator", - "version": "v7.3.5", + "version": "v7.3.7", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "724086992fb7c7882d05c9d2219d70401ab9fdda" + "reference": "8290a095497c3fe5046db21888d1f75b54ddf39d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/724086992fb7c7882d05c9d2219d70401ab9fdda", - "reference": "724086992fb7c7882d05c9d2219d70401ab9fdda", + "url": "https://api.github.com/repos/symfony/validator/zipball/8290a095497c3fe5046db21888d1f75b54ddf39d", + "reference": "8290a095497c3fe5046db21888d1f75b54ddf39d", "shasum": "" }, "require": { @@ -16021,7 +16021,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.3.5" + "source": "https://github.com/symfony/validator/tree/v7.3.7" }, "funding": [ { @@ -16041,7 +16041,7 @@ "type": "tidelift" } ], - "time": "2025-10-24T14:27:20+00:00" + "time": "2025-11-08T16:29:29+00:00" }, { "name": "symfony/var-dumper", @@ -18300,11 +18300,11 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.31", + "version": "2.1.32", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ead89849d879fe203ce9292c6ef5e7e76f867b96", - "reference": "ead89849d879fe203ce9292c6ef5e7e76f867b96", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e126cad1e30a99b137b8ed75a85a676450ebb227", + "reference": "e126cad1e30a99b137b8ed75a85a676450ebb227", "shasum": "" }, "require": { @@ -18349,20 +18349,20 @@ "type": "github" } ], - "time": "2025-10-10T14:14:11+00:00" + "time": "2025-11-11T15:18:17+00:00" }, { "name": "phpstan/phpstan-doctrine", - "version": "2.0.10", + "version": "2.0.11", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "5eaf37b87288474051469aee9f937fc9d862f330" + "reference": "368ad1c713a6d95763890bc2292694a603ece7c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/5eaf37b87288474051469aee9f937fc9d862f330", - "reference": "5eaf37b87288474051469aee9f937fc9d862f330", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/368ad1c713a6d95763890bc2292694a603ece7c8", + "reference": "368ad1c713a6d95763890bc2292694a603ece7c8", "shasum": "" }, "require": { @@ -18392,7 +18392,7 @@ "nesbot/carbon": "^2.49", "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/phpstan-deprecation-rules": "^2.0.2", - "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-phpunit": "^2.0.8", "phpstan/phpstan-strict-rules": "^2.0", "phpunit/phpunit": "^9.6.20", "ramsey/uuid": "^4.2", @@ -18420,9 +18420,9 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/2.0.10" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/2.0.11" }, - "time": "2025-10-06T10:01:02+00:00" + "time": "2025-11-04T09:55:35+00:00" }, { "name": "phpstan/phpstan-strict-rules", @@ -18989,21 +18989,21 @@ }, { "name": "rector/rector", - "version": "2.2.7", + "version": "2.2.8", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "022038537838bc8a4e526af86c2d6e38eaeff7ef" + "reference": "303aa811649ccd1d32e51e62d5c85949d01b5f1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/022038537838bc8a4e526af86c2d6e38eaeff7ef", - "reference": "022038537838bc8a4e526af86c2d6e38eaeff7ef", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/303aa811649ccd1d32e51e62d5c85949d01b5f1b", + "reference": "303aa811649ccd1d32e51e62d5c85949d01b5f1b", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "phpstan/phpstan": "^2.1.26" + "phpstan/phpstan": "^2.1.32" }, "conflict": { "rector/rector-doctrine": "*", @@ -19037,7 +19037,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.2.7" + "source": "https://github.com/rectorphp/rector/tree/2.2.8" }, "funding": [ { @@ -19045,7 +19045,7 @@ "type": "github" } ], - "time": "2025-10-29T15:46:12+00:00" + "time": "2025-11-12T18:38:00+00:00" }, { "name": "roave/security-advisories", @@ -19053,12 +19053,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "d2e1583e5f89f53f7882861c1639c14c9a154585" + "reference": "ccc4996aff4ff810b514472932f677753ee5d8a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/d2e1583e5f89f53f7882861c1639c14c9a154585", - "reference": "d2e1583e5f89f53f7882861c1639c14c9a154585", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/ccc4996aff4ff810b514472932f677753ee5d8a4", + "reference": "ccc4996aff4ff810b514472932f677753ee5d8a4", "shasum": "" }, "conflict": { @@ -19493,7 +19493,7 @@ "maikuolan/phpmussel": ">=1,<1.6", "mainwp/mainwp": "<=4.4.3.3", "manogi/nova-tiptap": "<=3.2.6", - "mantisbt/mantisbt": "<=2.26.3", + "mantisbt/mantisbt": "<2.27.2", "marcwillmann/turn": "<0.3.3", "marshmallow/nova-tiptap": "<5.7", "matomo/matomo": "<1.11", @@ -19581,7 +19581,7 @@ "open-web-analytics/open-web-analytics": "<1.8.1", "opencart/opencart": ">=0", "openid/php-openid": "<2.3", - "openmage/magento-lts": "<20.12.3", + "openmage/magento-lts": "<20.16", "opensolutions/vimbadmin": "<=3.0.15", "opensource-workshop/connect-cms": "<1.8.7|>=2,<2.4.7", "orchid/platform": ">=8,<14.43", @@ -19800,7 +19800,7 @@ "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<5.3.15|>=5.4.3,<5.4.4|>=6.0.3,<6.0.4", "symfony/http-client": ">=4.3,<5.4.47|>=6,<6.4.15|>=7,<7.1.8", - "symfony/http-foundation": "<5.4.46|>=6,<6.4.14|>=7,<7.1.7", + "symfony/http-foundation": "<5.4.50|>=6,<6.4.29|>=7,<7.3.7", "symfony/http-kernel": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", "symfony/maker-bundle": ">=1.27,<1.29.2|>=1.30,<1.31.1", @@ -19819,7 +19819,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.4.47|>=6,<6.4.15|>=7,<7.1.8", "symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12", - "symfony/symfony": "<5.4.47|>=6,<6.4.15|>=7,<7.1.8", + "symfony/symfony": "<5.4.50|>=6,<6.4.29|>=7,<7.3.7", "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", @@ -19854,7 +19854,7 @@ "topthink/framework": "<6.0.17|>=6.1,<=8.0.4", "topthink/think": "<=6.1.1", "topthink/thinkphp": "<=3.2.3|>=6.1.3,<=8.0.4", - "torrentpier/torrentpier": "<=2.4.3", + "torrentpier/torrentpier": "<=2.8.8", "tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2", "tribalsystems/zenario": "<=9.7.61188", "truckersmp/phpwhois": "<=4.3.1", @@ -20036,7 +20036,7 @@ "type": "tidelift" } ], - "time": "2025-10-30T18:07:16+00:00" + "time": "2025-11-12T14:06:11+00:00" }, { "name": "sebastian/cli-parser", @@ -21078,16 +21078,16 @@ }, { "name": "symfony/browser-kit", - "version": "v7.3.2", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "f0b889b73a845cddef1d25fe207b37fd04cb5419" + "reference": "e9a9fd604296b17bf90939c3647069f1f16ef04e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/f0b889b73a845cddef1d25fe207b37fd04cb5419", - "reference": "f0b889b73a845cddef1d25fe207b37fd04cb5419", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/e9a9fd604296b17bf90939c3647069f1f16ef04e", + "reference": "e9a9fd604296b17bf90939c3647069f1f16ef04e", "shasum": "" }, "require": { @@ -21126,7 +21126,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/v7.3.2" + "source": "https://github.com/symfony/browser-kit/tree/v7.3.6" }, "funding": [ { @@ -21146,7 +21146,7 @@ "type": "tidelift" } ], - "time": "2025-07-10T08:47:49+00:00" + "time": "2025-11-05T07:57:47+00:00" }, { "name": "symfony/debug-bundle", diff --git a/yarn.lock b/yarn.lock index 0896bc62..b3636d6c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -837,159 +837,159 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.28.5" -"@ckeditor/ckeditor5-adapter-ckfinder@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-adapter-ckfinder/-/ckeditor5-adapter-ckfinder-47.1.0.tgz#95c3435d09ec58c6c90b2cfddec471f1414cf3ac" - integrity sha512-h/ClAZBbqz0q5332OPLCQXBOx5EH3GHykJrGAK2+Wtx3CuhzJV+RhgEj3KLMQ2SaAR4DaLKamzCAiR2jIH6Y6Q== +"@ckeditor/ckeditor5-adapter-ckfinder@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-adapter-ckfinder/-/ckeditor5-adapter-ckfinder-47.2.0.tgz#10ced491bd112a4633ed9f543b96eaf41e1bd807" + integrity sha512-zzuINBzWuheU76Ans9m59VCVMiljESoKxzpMh0aYu+M3YB5IDctOPU8pdOpXPIdBwoYv64+ioZE/T5TyZDckSw== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-upload" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-upload" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-alignment@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-alignment/-/ckeditor5-alignment-47.1.0.tgz#109ed02f520b103e4ab8d978984857f39c894fbf" - integrity sha512-oE6PLT5MRBayw87jOv5DgR0p6TU7mX18MJkaGEz98vuLW3npo1GEdkBtw72+05FwkKr2QCCZUZpg12DTf9Mc/g== +"@ckeditor/ckeditor5-alignment@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-alignment/-/ckeditor5-alignment-47.2.0.tgz#64f527d7571acd543a3a9e74ed528a7b4aca0639" + integrity sha512-lfcJAC8yJOQux3t33ikJrWRsZvywLr2zmU6mDR96SuCmeCyAN3UGXzCNa8kWPExpFGV01ZR61EZkjTah8LP2sQ== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-autoformat@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-autoformat/-/ckeditor5-autoformat-47.1.0.tgz#b6bb33cb40223c55543b0e6b2ddc8049a39b0ba5" - integrity sha512-vnP5CNEDriVgFwUVocXyQ++yGrJnkp8V5YCQZv76nZPSed02soL62MRm6M9A4GOAXpEJMe7d5NWom73ieRfcVA== +"@ckeditor/ckeditor5-autoformat@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-autoformat/-/ckeditor5-autoformat-47.2.0.tgz#78887a9ba872d806805fc4cde229414426de4128" + integrity sha512-d9ZwAB8JwWlgLK2Um+u3ctiCtv5bkBHGk/rSdXB6D/V7QHCl31NyPFYByxTyCOY9SsoNn1l/8zbJfvp89LJm2w== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-heading" "47.1.0" - "@ckeditor/ckeditor5-typing" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-heading" "47.2.0" + "@ckeditor/ckeditor5-typing" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-autosave@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-autosave/-/ckeditor5-autosave-47.1.0.tgz#f3e16f63c7d3da92df51ea571aa6b20a98322ae6" - integrity sha512-3wjI/RNSgXZhG4RMTwl/LByaZyHLV+cixKN0hRqkjULj/i0H05A4Gu485v62FDwBlil1NhPTfKyrmiM/N/7n8g== +"@ckeditor/ckeditor5-autosave@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-autosave/-/ckeditor5-autosave-47.2.0.tgz#4cbc1af19d358e991b5f57c9c1dbbfd30de9ebb9" + integrity sha512-44nGL/M0qLURA1BEFkqZg6JzpjtvGyWJEluv728vb29JNQUGx0iNykjHBgtPX5s1Ztblx5ZwqFiuNiLkpmHptg== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-basic-styles@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-basic-styles/-/ckeditor5-basic-styles-47.1.0.tgz#3cfe4cc736d7833e3df82682990e8dcd9c191af7" - integrity sha512-WxiFFKUlisz8B3ymeBFijshDWmqX649TEA+1nxgjXHr0L0UONCJfBExanrRUJND6AwHIh1n2IIAXwXvYMdqZbw== +"@ckeditor/ckeditor5-basic-styles@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-basic-styles/-/ckeditor5-basic-styles-47.2.0.tgz#ab1abe2306c6e6cec62393adc04b07997869351a" + integrity sha512-a8pPHq3CXmyxPPXPQZ8C92OOyBoCfpY8M30dS7et/dLXW3nuVo9VVLMw0vR1j+zcKXClp3+/odyw2/rxP+qntA== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-typing" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-typing" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-block-quote@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-block-quote/-/ckeditor5-block-quote-47.1.0.tgz#f2f2d20060b11bdb4ae966aa5a8aeeea6442f321" - integrity sha512-h+p/pFm0wNmozhFZcxxh6DmkGQCE3Jpukju0ovxiPnRO49PN+0cUsdbHuKYtJK6jxLfqwjfdHVOn1m+LyRRmkg== +"@ckeditor/ckeditor5-block-quote@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-block-quote/-/ckeditor5-block-quote-47.2.0.tgz#39f9efd80f5a2b8cfa5ec438ee5bec25fd82f70f" + integrity sha512-BlFFfunyWpYcGhLsOmCR0yEz5VgrOmHREHQZIRcL6fKzXJwdpA/VFWPirotwF/QErJjguhhDZ5a3PBEnUAmW/A== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-enter" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-typing" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-enter" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-typing" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-bookmark@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-bookmark/-/ckeditor5-bookmark-47.1.0.tgz#666b88e660a839b171df25da804052752e249eca" - integrity sha512-B7Q0IzaN6iA80B3YkXihXo7gRad5TpKyhTI9x3XvbpCDzO+sBNyOEAy6d6CWmlhQsIZ6mn+hUn2q9N4nACybiw== +"@ckeditor/ckeditor5-bookmark@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-bookmark/-/ckeditor5-bookmark-47.2.0.tgz#b370892c4cbb4570c2c526546ff14dd37cfb3df6" + integrity sha512-FDFDZXm8MqktIt3x0WVrYFuXy9sxcCH31Cpa0/mV19lW8CzoCZCAfvXNzPWsz2eFo8qOsna2c/e55ax8OM/Ncg== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-link" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - "@ckeditor/ckeditor5-widget" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-link" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + "@ckeditor/ckeditor5-widget" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-ckbox@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ckbox/-/ckeditor5-ckbox-47.1.0.tgz#1650eaa59f94ce5b12e155055248befcf509d03c" - integrity sha512-DgTxePr5fE7yaQCjaSMlKNf5j38NGjywg9//l7XeVvxLmJJgQrN7G7xaX/vl55H2jGZF0LrM4IyS9mbyfUj1bQ== +"@ckeditor/ckeditor5-ckbox@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ckbox/-/ckeditor5-ckbox-47.2.0.tgz#98a3400167f62dfb080d83a8d753647debcb12a3" + integrity sha512-Cu+nJTXhcmdE8DWHoTY1nrrjxyG4pfxMrEcO/PNV28cojwtOQaWGt4EbWlXOfZZTEWlZO18JIw/YrxYXwx5mTA== dependencies: - "@ckeditor/ckeditor5-cloud-services" "47.1.0" - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-image" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-upload" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" + "@ckeditor/ckeditor5-cloud-services" "47.2.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-image" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-upload" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" blurhash "2.0.5" - ckeditor5 "47.1.0" + ckeditor5 "47.2.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-ckfinder@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ckfinder/-/ckeditor5-ckfinder-47.1.0.tgz#1a1fc4a34d9167c132c35aa1848b6f7d84b5d9e3" - integrity sha512-eQPgvW+cSA2p5EVyoJv0NIOYorS5DoAxKdcBcxrKc433yuC7fKsZ1awp5aWJOUOfRzGLAa1WYikR7OKvmTjzYg== +"@ckeditor/ckeditor5-ckfinder@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ckfinder/-/ckeditor5-ckfinder-47.2.0.tgz#2f3be378adfa40d718d8a05d91fd304068f22943" + integrity sha512-nsxn9weZNwdplW/BHfEJ/rvb+wZj0KECN2Av9zFRekTxE1mp0hTShQ9MNlKImRQ4X2UV6bGN6+DXwJJIU0smlQ== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-image" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-image" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-clipboard@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-clipboard/-/ckeditor5-clipboard-47.1.0.tgz#4b7eec58bc6956f6267025f6798050d53cf1171e" - integrity sha512-xxF9TuV6pWfos1okaS20CFTQN1CD3lOSyZXIJ/IodznpF7f9GYzhhvyOYXJO5fH6T8F0BbR5P94gon8QnAMivg== +"@ckeditor/ckeditor5-clipboard@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-clipboard/-/ckeditor5-clipboard-47.2.0.tgz#668117643acceb343b764b07a26410ef70841ea7" + integrity sha512-x/ehXk+ga5tnumA8TenrZRU684DvpzzhTLfZScRxX3/3BJPYlFp7BWx60KJPQHKXYgb+I0qkQrgxuBXp83ed2g== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - "@ckeditor/ckeditor5-widget" "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + "@ckeditor/ckeditor5-widget" "47.2.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-cloud-services@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-cloud-services/-/ckeditor5-cloud-services-47.1.0.tgz#91b43f3e1501df2c3e79913c509a47c62c94d6ed" - integrity sha512-yLH1eTxWMrzF16CFdu/RJAwzcGYaKKS+gQfX3aRjIphtkY9ebnS1SbelP12ZXUBp/vcTguSYjUrPUwnstoadew== +"@ckeditor/ckeditor5-cloud-services@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-cloud-services/-/ckeditor5-cloud-services-47.2.0.tgz#119a004b2f7a72664c05351e6dd72dcc43d0d8fc" + integrity sha512-794mxJ8MFhz2SxSjlMSp4cZbyBBpVjinQ3GxOS5VqO7H4m/iT2hdSPJaWpML53soxpEoG/6ax4vVKe5d0+xoqA== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-code-block@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-code-block/-/ckeditor5-code-block-47.1.0.tgz#bac7fa799cee6d71e27da7d93ccd450fcc663a3b" - integrity sha512-FGQD/B5BXHesqgijjBV3wm4tBDNKMjGodsTPjW++NkezgBgzOWdBnl6svpMns+xjtEVFnhkjA9hQt6vbHevJmA== +"@ckeditor/ckeditor5-code-block@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-code-block/-/ckeditor5-code-block-47.2.0.tgz#9fbeb02ff87a798d624d2c461a86ce7b9c5edc2d" + integrity sha512-8SH10L7i+wirkouDmg4MdBN4R3AZDyutsuSCwDPALoKSHQs7KlYB+8TJxcejt/dSBd0JWgrBi7rVu9Arkk3I1A== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.1.0" - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-enter" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-clipboard" "47.2.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-enter" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-core@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-core/-/ckeditor5-core-47.1.0.tgz#7ee7fa6e5710f1f50f7893d03448c10286a31ab3" - integrity sha512-CKE/cxzyAECL9rXMCTiQfNtIwy8x24zSyjQgU44FB59H/eUksw9FYaDdRgNs/PvW/gdW7JdCPiaOI3m28wYmHg== +"@ckeditor/ckeditor5-core@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-core/-/ckeditor5-core-47.2.0.tgz#90976e6e8b18008ead5c8a33fee690d8ddf297f0" + integrity sha512-NwUNa25g//ScxaVPASalcGfMDhUSv7nIpxC07oVv99zJjk64RTBr4TZHpjKLCVqN9gAn3phAtjtkxa2KOgOMtQ== dependencies: - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - "@ckeditor/ckeditor5-watchdog" "47.1.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + "@ckeditor/ckeditor5-watchdog" "47.2.0" es-toolkit "1.39.5" "@ckeditor/ckeditor5-dev-translations@^43.0.1", "@ckeditor/ckeditor5-dev-translations@^43.1.0": @@ -1033,316 +1033,316 @@ terser-webpack-plugin "^4.2.3" through2 "^3.0.1" -"@ckeditor/ckeditor5-easy-image@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-easy-image/-/ckeditor5-easy-image-47.1.0.tgz#261bc7b9e0a71547b7d6c28e9c305064a1785104" - integrity sha512-V/8nSXle8D/XzC6NSmNatcYoZzy7SXOsNFbLgXN+2gOFguhexmgVagBAiHgGCUpZTNTmkQRTI5VpiI5mfAHt+g== +"@ckeditor/ckeditor5-easy-image@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-easy-image/-/ckeditor5-easy-image-47.2.0.tgz#03e8be382b9ab2a281dab18703bc66a1b4c9735f" + integrity sha512-lSnbiGDzYdu9GeOaYjVpowaZWDJbrb7NHCuUN5Af2474jXTDyYmG7qOm39fWEBlcxjMTzDR8fFzPcRNhOvSRRA== dependencies: - "@ckeditor/ckeditor5-cloud-services" "47.1.0" - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-upload" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-cloud-services" "47.2.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-upload" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-editor-balloon@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-balloon/-/ckeditor5-editor-balloon-47.1.0.tgz#52a48193e0b4c3c984ba15703309904c3e614684" - integrity sha512-M/d8zWQgGbtQPKAyYOBZdEeDBaQXiXmwUIi1rMULL7IGxQDvfHAHB6T7mu3GU39oay0HkM+LGWnz5GZ8oG7HNw== +"@ckeditor/ckeditor5-editor-balloon@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-balloon/-/ckeditor5-editor-balloon-47.2.0.tgz#2207ec688750ad70dbbbd08f9a7f767be09c46fa" + integrity sha512-szIx59pnw6kgxYuAyqecMnSlwtwWu2q23XV4TpKF/V3NlHs9ZeIFusTX3icO8JLQR4ExsYa0bsYpabGdZdx2Ug== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-editor-classic@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-classic/-/ckeditor5-editor-classic-47.1.0.tgz#e8a043d479512601a13a403952594eddb72f5612" - integrity sha512-x4aegRral5LTV1kURmjnp/tLSE1nttH+MsVkrVLWJd0j2A0qj88BLSccmY71ybFgMcDKlwJD6kVT0ZNKsvRogw== +"@ckeditor/ckeditor5-editor-classic@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-classic/-/ckeditor5-editor-classic-47.2.0.tgz#13c8b376341475940e8d42a642f598a453a0bf24" + integrity sha512-fYy4RKmvM4kYvUgCRuBdUqVLE8ts1Kj4q1Caaq5VZyBudmaj/RZqQBSdiu5pZgKMdj1oMaIQ5Gextg96iJ3LTw== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-editor-decoupled@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-decoupled/-/ckeditor5-editor-decoupled-47.1.0.tgz#0a680fe62e0afc98dea137789bb6f02d57a4c5ee" - integrity sha512-rqTmzMot1rjCz3cqtQkVRou8RgVFItRXeCNY0Ljg3aLcAaNcbwYSYSeJtQpMoyhasSh3cCUqyG9PRnfNYpzTNQ== +"@ckeditor/ckeditor5-editor-decoupled@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-decoupled/-/ckeditor5-editor-decoupled-47.2.0.tgz#7ed46a30eff38893d88094d4863709b2a77a9239" + integrity sha512-h1Yw6/XHeEe5aW/4VV0njAGe5nsuIBkARCun039noA+b2bq+Qb9bAExzaSHULf7nZW4HHVJMcYvb2HwcX8MZ6g== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-editor-inline@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-inline/-/ckeditor5-editor-inline-47.1.0.tgz#8669730ba1e0ba15d39655fa970e269c31a2f17e" - integrity sha512-By4mi4p7oReWx8SAyUtq7cIhF1BH63DABJLbj7kaT3MsFlMXOp4FheZpGEMFJbOt8jKx9Du1EU/PFWlUeNoPLw== +"@ckeditor/ckeditor5-editor-inline@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-inline/-/ckeditor5-editor-inline-47.2.0.tgz#1c82e1713d7e03bb97904704fcc8c949aa0703f5" + integrity sha512-6kGG8Q4ggOim7KU/J3iMvmf5/faNjYL/ucg2RPMvzhH/eTqlZBlMdDid86b0YAW0fbKPvIIACifoOBHIGlcZyA== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-editor-multi-root@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-multi-root/-/ckeditor5-editor-multi-root-47.1.0.tgz#3abcbb1a155c7a0a2e9190fe44f9eae3d4a786f8" - integrity sha512-BjAOWtAOg8g1E8WJoRj73RoRpyTb1nLtHU2AgxLlaYubGcXfokVvyPz4VU2cDTUq3Zg6chjPeRw74ybLmI2LBg== +"@ckeditor/ckeditor5-editor-multi-root@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-multi-root/-/ckeditor5-editor-multi-root-47.2.0.tgz#03dcca7fad6e91851e1cd128168049587df5833a" + integrity sha512-bIkPzkpLGznNnDLAuSkVNP+LfICLbUj80IdkVLB9KeXnuZ1WKYkLqBGfDv6y70iJnANAiiP6Z8EaucBNzfjS7g== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-emoji@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-emoji/-/ckeditor5-emoji-47.1.0.tgz#848a78183d6cfc1f2101d69a05a773e3e276b376" - integrity sha512-8Kicj1md0PfdGtlUxK0kTrLJncYnrhj7OzVqen42ygxiU3PrZrdSApDBg0a8DVb0Skvjb2GhOcBCN7UZptK7LQ== +"@ckeditor/ckeditor5-emoji@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-emoji/-/ckeditor5-emoji-47.2.0.tgz#22b7809008dcf9fe0726b899d2f29edfe425a22f" + integrity sha512-pS1G0QVFOK2Z+BLrVmm6pVjFZRpkC95YgQeASuuIySLZBllYD3+tlys2lPt3el5PAd0IQB7s85XuTdbCXDFr6A== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-mention" "47.1.0" - "@ckeditor/ckeditor5-typing" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-mention" "47.2.0" + "@ckeditor/ckeditor5-typing" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" es-toolkit "1.39.5" fuzzysort "3.1.0" -"@ckeditor/ckeditor5-engine@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-47.1.0.tgz#a1b258b5122caa105f0a32ab4998305a6faac440" - integrity sha512-uXlD+UKSb6wC5OBzQm5Sn0PYTYNpa4Jccdk61Z6U9h1lAZI4KV4SU12vRL5XG20bI0PIQvBo7Lhy7Va635kiqw== +"@ckeditor/ckeditor5-engine@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-47.2.0.tgz#578446d200a16d5f25de3a558085501f14a60f72" + integrity sha512-T3pFgycam60ytkbLOo2r99UPkbalLfzp4e6QrDVdZnloY7BO46zAbU5p3TqgfCdxODPhZh7srFGzANh6IsLMeg== dependencies: - "@ckeditor/ckeditor5-utils" "47.1.0" + "@ckeditor/ckeditor5-utils" "47.2.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-enter@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-47.1.0.tgz#817bc9daba3ece88d1e00f82b6aca241db04bdd0" - integrity sha512-Vkm4rPCTrimJ3LcdPPXQZc86Wb920kish6ckXTSkoPPAe9Ef2fVlKZYggWrXBI4VZ6tegTepSFpZiMqa1/a00w== +"@ckeditor/ckeditor5-enter@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-47.2.0.tgz#775fc49e28c64c90d4286341f983982be3c2fda1" + integrity sha512-7ZHfrxDSs55IXgs5yAX6Nl8COY1dqefZ5HiWT/UM0cOP/4aMffp5I1yYYP7NVfBkTW9DlUoeAkHFTv2miTwclQ== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" -"@ckeditor/ckeditor5-essentials@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-essentials/-/ckeditor5-essentials-47.1.0.tgz#fcb712c32daa498239b4abe844c32ec32c5a5f47" - integrity sha512-lpXxfBQ7GocQ4klO2GTZYSxJFhymI2WwxaKklI+rh729dcxsIsjih1sXwSLM6kqwPbveF/9WgDBy3I6kqzRmqg== +"@ckeditor/ckeditor5-essentials@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-essentials/-/ckeditor5-essentials-47.2.0.tgz#8b1850ddd0725709a4acf65d55bfe6ccbc39b227" + integrity sha512-d3hHtkuLhvI+RvsDU7cKFc/K9uD27Tvi4NVjALcN1Ybr0k8dkJFGU1nUwXuo6zcdqRnkIJMWxIR+cwteuMCGQg== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.1.0" - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-enter" "47.1.0" - "@ckeditor/ckeditor5-select-all" "47.1.0" - "@ckeditor/ckeditor5-typing" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-undo" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-clipboard" "47.2.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-enter" "47.2.0" + "@ckeditor/ckeditor5-select-all" "47.2.0" + "@ckeditor/ckeditor5-typing" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-undo" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-find-and-replace@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-find-and-replace/-/ckeditor5-find-and-replace-47.1.0.tgz#cc5bc8ea00970000356f65e9641d305687fdc04a" - integrity sha512-H3c69XM7fLdlnt20gdNSU1fMwA+1yYfboFWQ07PlA8M/D9H7ZKUmBlI846flSssFp1kPLGhPDTryun6c7zERPg== +"@ckeditor/ckeditor5-find-and-replace@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-find-and-replace/-/ckeditor5-find-and-replace-47.2.0.tgz#d2fcc24d6be08d56c1e195bd03625e4acc2911c1" + integrity sha512-34Uzpbxi+/eJx/0CR9/T92wDaw67KLaYcm39+RY4OUCxC9EywEFruIJEg/M/Xu4iTVjdVKbpQ3ovGBuciiL1vQ== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-font@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-font/-/ckeditor5-font-47.1.0.tgz#702ad5d62999e685cd1e7a45ce3b67d9861ac31c" - integrity sha512-QiKlsqbcMAAlVAoxrBBxe062adBfTfTKHBLJ/VbBMBYszYaWNoG5VJKLQbXnKBVGWD07rE7rXa/vnenCvpT8hQ== +"@ckeditor/ckeditor5-font@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-font/-/ckeditor5-font-47.2.0.tgz#19402eb3a8c397657e1f7767ddb807e63bc62009" + integrity sha512-X/AYeNHc3Hibd56OfPwOEdYRIGX3eWtGQ/qIAEVkS2xCEDPhM0fTHpLTEpDsMukw9NRAqmhnQHIp2amGaOwY8g== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-fullscreen@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-fullscreen/-/ckeditor5-fullscreen-47.1.0.tgz#65070903598e5f3640887bf1040f90b5135bcc81" - integrity sha512-LSC62HAW2cmThX2bJOPXcUrxy3sULGStj5G//PdTuxz1z6WbPbF4xst1ockHmaRJeoJUcdt89Qv7C0WFl3j4lw== +"@ckeditor/ckeditor5-fullscreen@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-fullscreen/-/ckeditor5-fullscreen-47.2.0.tgz#7ac86bd80b3ff33ab600cc662cd35eb4b47936f5" + integrity sha512-Kf//0eQIuslGNVSbNkHXBELn/jZT+OsTIeo8PulZEbVI5do0vB/52w0F40rhgk8EudlGTxEmMOi0x/jrdR0MHg== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-editor-classic" "47.1.0" - "@ckeditor/ckeditor5-editor-decoupled" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-editor-classic" "47.2.0" + "@ckeditor/ckeditor5-editor-decoupled" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-heading@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-heading/-/ckeditor5-heading-47.1.0.tgz#de9465cfb770b28fa0b4210c3e727b0d38c183a6" - integrity sha512-HD+mWG5W5kk5fE2G9TFP/ktiU1CU8sA6mOyO6epd+0nsSwacTynKJkszgTVsd9HeY6wZopdqTHa1Dun/9wsxPA== +"@ckeditor/ckeditor5-heading@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-heading/-/ckeditor5-heading-47.2.0.tgz#0487b8bb36936409d8cbf4da067ca18976b7f525" + integrity sha512-m1zSERVh7gdVXwLLYgcAsy7lkIOuadmA5YuwyPpR/g3oa0j1gcuNm5y/73MTOPflPUn0g0Y9DzocF2G1WY2NiQ== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-paragraph" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-paragraph" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-highlight@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-highlight/-/ckeditor5-highlight-47.1.0.tgz#05bf9f1f3c7efbcdde89d0873b9dbac2445405ff" - integrity sha512-K5sO/etY+Nh67r3dsXArPWI5UjOGKQdbS4k5AU30m0vCK9IfGO9BLCUzBnxo6JM91lfOhY96yCqg3zaOU/C0wg== +"@ckeditor/ckeditor5-highlight@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-highlight/-/ckeditor5-highlight-47.2.0.tgz#1e9c0d4c13602ba76dea0f03e4fc5fb0cbf4a1d3" + integrity sha512-Fp59HRybXJpJl/DtliMTjiVrIA95jmm0SptvXtIucD0hdP9ZX6TOFPTzrRl29LZGITNuYDulPqvNTpFoechRmQ== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-horizontal-line@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-horizontal-line/-/ckeditor5-horizontal-line-47.1.0.tgz#aedc19c369dbc660ad84e1ef2f870abb3d761f60" - integrity sha512-ex+g4L0QvteKHtXGJXMu72wjCrMhQw+mEBWLZm20jLeaPf0eSkQ34ilTRFGwZTw/zfgqy69vMTbVV/SIDiYxvg== +"@ckeditor/ckeditor5-horizontal-line@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-horizontal-line/-/ckeditor5-horizontal-line-47.2.0.tgz#b0a10cff4f2dddb78e0c9a130a4790e8efb27302" + integrity sha512-/DHVMhI9vNs/NI+NQBbUXdzsXHj9hGKihtNDmbV5UP3Hy7l32Gv8k9nJVnBlDbBbHI6Wpxjj6GUxAiLZ46mc1Q== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - "@ckeditor/ckeditor5-widget" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + "@ckeditor/ckeditor5-widget" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-html-embed@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-html-embed/-/ckeditor5-html-embed-47.1.0.tgz#74911d9914937c1a56b66ead4bf0b7ffccc33a80" - integrity sha512-HMfnHzSRrpKDealBWtq3cpvRGZuODBssw7f1paQxML2W/pRLd6eSb/Rc9a0O3DB2/NhXq8Bbl9aDv9ungz+SLg== +"@ckeditor/ckeditor5-html-embed@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-html-embed/-/ckeditor5-html-embed-47.2.0.tgz#8dd20d32775aad62a21c1197d3209b5c438411cb" + integrity sha512-VhI789/KDKmQhz9nQqq64odOtLpwjJbPQ/Pf54J2d7AGDvbuNVkjAMVdj5xXXzb/nXdys6zM8lPQZfQGI/Ya8A== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - "@ckeditor/ckeditor5-widget" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + "@ckeditor/ckeditor5-widget" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-html-support@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-html-support/-/ckeditor5-html-support-47.1.0.tgz#c7a81d0d56e817ef834c4bb559330694154d4be3" - integrity sha512-TBnmlJ1JjMO973Q4A/e+UEv99CMhBezUAdLKqQ3+EztivTEeEb6YV+pmli8HPf7n0DI6UbkU0Kj/mdFUNiIzog== +"@ckeditor/ckeditor5-html-support@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-html-support/-/ckeditor5-html-support-47.2.0.tgz#d9bef384af7e4535b570a4d52acc539a1745d13e" + integrity sha512-IwaFBdv0qQQXfnA1LHL2BVQoioNJa9T8NIKDq2OG3mXg02jJvhJl84QADJ0ro36igjKsyfttsl8lM1pf00XAhA== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-enter" "47.1.0" - "@ckeditor/ckeditor5-heading" "47.1.0" - "@ckeditor/ckeditor5-image" "47.1.0" - "@ckeditor/ckeditor5-list" "47.1.0" - "@ckeditor/ckeditor5-remove-format" "47.1.0" - "@ckeditor/ckeditor5-table" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - "@ckeditor/ckeditor5-widget" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-enter" "47.2.0" + "@ckeditor/ckeditor5-heading" "47.2.0" + "@ckeditor/ckeditor5-image" "47.2.0" + "@ckeditor/ckeditor5-list" "47.2.0" + "@ckeditor/ckeditor5-remove-format" "47.2.0" + "@ckeditor/ckeditor5-table" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + "@ckeditor/ckeditor5-widget" "47.2.0" + ckeditor5 "47.2.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-icons@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-icons/-/ckeditor5-icons-47.1.0.tgz#ee6820a01e4b6222155e1b2bc64a22176c9e94ce" - integrity sha512-2tlGXuQrXiQFxb2U+67kzlkl4/4IlDEt6R+sPQnP+QR7wJNXQnK9zk4M2bc30r91/91iuCjx+AIzKerm0VwFJg== +"@ckeditor/ckeditor5-icons@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-icons/-/ckeditor5-icons-47.2.0.tgz#0721f47f2ea7e8ae729f44e5a9815cc87e30571d" + integrity sha512-9rxAWNQEjZBHyMBQ8XXwfa+ubPBzQntd+nkWBAGTK6ddqHZIaQLsiLrUAdR5tyKKK9tnTkwyx1jycGRspZnoxw== -"@ckeditor/ckeditor5-image@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-image/-/ckeditor5-image-47.1.0.tgz#2653db9c464d270b35c7e9d881b36b37b89d7487" - integrity sha512-BoVwiXD/l0yUxUsF9wLajo5p3b7TKamkKP7wAA/dkCUlWYzvzjQKwLwYoknNf3GgHLYuY5n6iRPvYQGvNsn6hg== +"@ckeditor/ckeditor5-image@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-image/-/ckeditor5-image-47.2.0.tgz#4c7a50a05cebccc9e084269cbac1e22524e85203" + integrity sha512-XbXvRS++kFku0l7GABhsribmQTBC/SOAfimDNKjg5rayhAXCfovys7YmmU0eicydpo4//fAaa8zvDYc8uXWZGA== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.1.0" - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-typing" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-undo" "47.1.0" - "@ckeditor/ckeditor5-upload" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - "@ckeditor/ckeditor5-widget" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-clipboard" "47.2.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-typing" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-undo" "47.2.0" + "@ckeditor/ckeditor5-upload" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + "@ckeditor/ckeditor5-widget" "47.2.0" + ckeditor5 "47.2.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-indent@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-indent/-/ckeditor5-indent-47.1.0.tgz#de34853071ec0ccbacd4fb2a48efdd7a18e0975c" - integrity sha512-iqYlsdOGsTjuJ+xUx0ee8aAVh9sDPishKx1UHJbwetlPyM1kUADvVNONVBHV5YLgT0M7Bk5/MzGwlyQAuVipxg== +"@ckeditor/ckeditor5-indent@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-indent/-/ckeditor5-indent-47.2.0.tgz#39fef07c6b789fbcdb122ee37317f212b57ee92d" + integrity sha512-Q85+b+o+nonhJ/I9K9wB9XeZ5W8rS9k66VvoDHxL3jJ6g6C+oyEAOomooTDCvJvBgDN6vGpcwzznKp0Q8baoCQ== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-heading" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-list" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-heading" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-list" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-language@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-language/-/ckeditor5-language-47.1.0.tgz#d3438e523c2d4bcba57e0d632e71afde2210f709" - integrity sha512-nZJlfefKtf0sWvyQdTB361mQMSGSlYj2WbHV3gpabkgkE/ZCbL/Tr5aCJ2ulQo2/ksL2s7nDHFIWu8UUEeVhbw== +"@ckeditor/ckeditor5-language@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-language/-/ckeditor5-language-47.2.0.tgz#f31dfc03ef5f56985b6329875fca0e0200b86a6e" + integrity sha512-kc5MqQnvQtUPuvRJfdqXHQZNQyHVy/ZZv5laPY1AKrsKqc5SJO4y3v//4yHvdn45V4QKLwMOy4yC365Sdq0UpA== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-link@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-link/-/ckeditor5-link-47.1.0.tgz#cf6d02d4208968420dd7df7c82c4d4900cb3edf7" - integrity sha512-8XwnVPnp2GaNzcyXEahDYM8Qjh/qkU/R1VyjMh7EKSnlZOdget/jKXltNNwJpX0ofPMcY0CnvqGGF42gM3Tlcg== +"@ckeditor/ckeditor5-link@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-link/-/ckeditor5-link-47.2.0.tgz#72c6ba684db256d4a2bb481689236335435f7bcc" + integrity sha512-ijaF1Ic23FH9qulW2ZuaxecmdT0JuK/4XNkdaoRntloHiVZ/tFAu+o/6st/pDXfutDBmnEXwrNGVtzO/JTPhrw== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.1.0" - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-image" "47.1.0" - "@ckeditor/ckeditor5-typing" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - "@ckeditor/ckeditor5-widget" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-clipboard" "47.2.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-image" "47.2.0" + "@ckeditor/ckeditor5-typing" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + "@ckeditor/ckeditor5-widget" "47.2.0" + ckeditor5 "47.2.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-list@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-list/-/ckeditor5-list-47.1.0.tgz#21dd745b3bfe37cc9e411eb62c1d1acddfd4224f" - integrity sha512-P18ZXzJcAGoA6+nIoXkZ27/Ny80HCcrH36ay1MwSxsuQKO8S894kEZb+QS/HvePsX2tso+bQsWw4WWBzbLfP2g== +"@ckeditor/ckeditor5-list@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-list/-/ckeditor5-list-47.2.0.tgz#ec5940d8d8d941b9c9e7bb578ce72e64141e4fbe" + integrity sha512-PDjTQLn2CqrZ4XuAAJWY2vA5bkVu8UHKQZa1+ddfS4FbvfF2QR3eDX5axywpuaCb2Dm2ZQoqxpA5GQmt1fUehg== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.1.0" - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-enter" "47.1.0" - "@ckeditor/ckeditor5-font" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-typing" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-clipboard" "47.2.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-enter" "47.2.0" + "@ckeditor/ckeditor5-font" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-typing" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-markdown-gfm@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-markdown-gfm/-/ckeditor5-markdown-gfm-47.1.0.tgz#93a2222358bbe7b6d38d76d18ff0f71ac588d0f0" - integrity sha512-oZh2sUX7VvI24ijosvilRqfrRkmUYdDaKdKxDfH8OBKiLnCPOccAhOMVy2LSBY1yvEEIUe2yq79nTC3i0uUkdg== +"@ckeditor/ckeditor5-markdown-gfm@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-markdown-gfm/-/ckeditor5-markdown-gfm-47.2.0.tgz#2b88dc114bacf7fa03f9dbc0413a799657954343" + integrity sha512-mt47/GMxrsAL3u/aBjOuH5ETSLH0knoYJpchYb7sXzIuQlY7xPqvcONyD9700TAN30FV7qpOVKUqI7tRyLL5uA== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.1.0" - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" + "@ckeditor/ckeditor5-clipboard" "47.2.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" "@types/hast" "3.0.4" - ckeditor5 "47.1.0" + ckeditor5 "47.2.0" hast-util-from-dom "5.0.1" hast-util-to-html "9.0.5" hast-util-to-mdast "10.1.2" @@ -1358,271 +1358,271 @@ unified "11.0.5" unist-util-visit "5.0.0" -"@ckeditor/ckeditor5-media-embed@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-media-embed/-/ckeditor5-media-embed-47.1.0.tgz#c162aeee05b03e260b224e93ce5ab5a94b13e067" - integrity sha512-ZbCYrJpEoKnXFLIwTeCqL6au/irByQq4UhElWFECMUchk3ZlJiSbTrVgrMxtzNdYxvlRGkNIizqPlukt4Xf5ig== +"@ckeditor/ckeditor5-media-embed@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-media-embed/-/ckeditor5-media-embed-47.2.0.tgz#1bba0974808cd4c23a07a092030c136274b2873d" + integrity sha512-lATTMej9pBsZk4qm8cOqLXhmrCq/t+HpP/zg3DWnYbiD6zclO69PSJxD09l9NsyOo0YZb8SYAsVISoKNaIOr0A== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.1.0" - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-typing" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-undo" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - "@ckeditor/ckeditor5-widget" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-clipboard" "47.2.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-typing" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-undo" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + "@ckeditor/ckeditor5-widget" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-mention@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-mention/-/ckeditor5-mention-47.1.0.tgz#afe28fedf85e94d8701593cd1289d85be02ebe18" - integrity sha512-5Bsf9224WU/ORVoOZnWWqaGA06DTs/+VLQvZhu5qmh17zL1o/JpSA0SrS9mQcf2StCW4HhX89MZhFSLb+2oOvQ== +"@ckeditor/ckeditor5-mention@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-mention/-/ckeditor5-mention-47.2.0.tgz#db7a21e6b4189f197c03398f0c2cf28dd0717d77" + integrity sha512-ZPvVwEQxcCUI0SvJa28JUULww/SCXiiZpfnMtaneMxsIOqesAFxPqMXA9HkyLotikuK1sezu5XzgJ2S5gdqw3A== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-typing" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-typing" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-minimap@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-minimap/-/ckeditor5-minimap-47.1.0.tgz#d3b360e516898fa582fee3dfe979453695ba23f0" - integrity sha512-fh3f0WTrULjd8rm/VWhVem/VYJgPjf+h+Zrnu8MeX0DHqRsNINdIUHNtYk2wUbIzQSgGtIVktK0LhLlN/XxRTA== +"@ckeditor/ckeditor5-minimap@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-minimap/-/ckeditor5-minimap-47.2.0.tgz#a47b83ed042a528b25dc1e09c7e8830222640d7b" + integrity sha512-Th6HspywP3JeGBMRUmpAuIyFa8XtrpMiGdsjazlKcHaitT6bHBTzaTjaWVnOuVY3gBdFAKsalv2ZEk8vIPqkhg== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-page-break@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-page-break/-/ckeditor5-page-break-47.1.0.tgz#ded8470a7828e5a31574238c8453bcb9fb108a91" - integrity sha512-PrCugSPny2icLp/ZKx1r6mkgtP1jJmc+kB4w56Dsmgf1ZorWniI53wmemaTDhIgGwnNfO9CjYdSy8Vb4vyB1ZA== +"@ckeditor/ckeditor5-page-break@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-page-break/-/ckeditor5-page-break-47.2.0.tgz#c08dfee03ffe14a0694a4f1bb14231c1eaeb8935" + integrity sha512-DosfUorg3wZ3a6yM/ymsJQ1E2Rbqi08RFOQ4oQLPPAi2VRdTLt0BiqQPFMKJmy2T2k5K4TLc7bs0s3E96aQyXg== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - "@ckeditor/ckeditor5-widget" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + "@ckeditor/ckeditor5-widget" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-paragraph@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paragraph/-/ckeditor5-paragraph-47.1.0.tgz#ea0aa0b2393e14e7f797537a7c425d71edaab3ef" - integrity sha512-B1tY1+kEncLFrGoD3YkpJIMNFSQvB4t8SVSei6+upD3YGkyf/VhmtYlnqBLRK2znQTlg76EJJcWlGv9zCJ9edw== +"@ckeditor/ckeditor5-paragraph@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paragraph/-/ckeditor5-paragraph-47.2.0.tgz#7d5242d38b2986e9da627859ad4a744285801a44" + integrity sha512-x6nqRQjlAcOhirOE9umNdK8WckWcz7JPVU7IlPTzlrVAYCq+wiz6rgpuh4COUHnee4c31fF21On+OVyqgu7JvQ== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" -"@ckeditor/ckeditor5-paste-from-office@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paste-from-office/-/ckeditor5-paste-from-office-47.1.0.tgz#2d0117bcae3ee83d06c396f51dc2facee2b96486" - integrity sha512-+96rw8TkId8o/im4zvq2EtdDzHHaP/+29PMcJ5ACmvq32tJgFsLCyo10asEWV+U/SiWUHNKBPgGLJeh/MdzlAw== +"@ckeditor/ckeditor5-paste-from-office@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paste-from-office/-/ckeditor5-paste-from-office-47.2.0.tgz#3b0dccca78353dc477d5658d5877c06e91bfc04d" + integrity sha512-DGGNGNhl25ub8dFBKJF4jfMBoSSbF5uKzFShMNIaAVAagV6kkDWR0HJWAir5CuFrElzWTkPd0ZC5RNL76yTbtg== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.1.0" - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-clipboard" "47.2.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-remove-format@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-remove-format/-/ckeditor5-remove-format-47.1.0.tgz#37e2d3eba344988edd8a41ea74ec9263723dcb41" - integrity sha512-JShEW29roO0PyQKBCDUS6cACGuYWxnUhCRcBt+DFUhS5t51XPpDXasdYfGfeUJ9DeNL/0iPjKtQxcGUoMa5NtQ== +"@ckeditor/ckeditor5-remove-format@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-remove-format/-/ckeditor5-remove-format-47.2.0.tgz#d1631b3b7ba7d8560522e5cc4aa0c123cbd21432" + integrity sha512-CRWs7Osok8k3Oi2N7RvA12ECxi47wIyrDTsJ3lJYo8zDIbZdOXlv5o+In+mbsZ7lzNKLhKMAgRcF/PrGWcAaUg== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-restricted-editing@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-restricted-editing/-/ckeditor5-restricted-editing-47.1.0.tgz#ddd3c7742ecfed8841d14315dacbccb5fada1bea" - integrity sha512-vEBZKc3vkvFKOVfPn56Wl76YPCn73QmkkUMLGN2tf2ntvSoVEmlk+HTWaXYRG8bsbj2JtdijgW3wckCvNRW8ow== +"@ckeditor/ckeditor5-restricted-editing@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-restricted-editing/-/ckeditor5-restricted-editing-47.2.0.tgz#6d5513f535db2570ec626b29fed997f7461e2ce9" + integrity sha512-ziFgoZCHaHzzrLeQ6XIlrcEazoGF6IC2+qzxGnO1A1NKY/8WVLmokKFLmUgDMnPLrhvz5Qqldj0dSS2pKhj6QQ== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-select-all@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-select-all/-/ckeditor5-select-all-47.1.0.tgz#c40ad89efb7466ade836b28637171826c357694d" - integrity sha512-3k7TgWjcx7FFm0t6bS8Uc6YOhqehf815SsmtFN+JISoL9Ojm1yqLEUOOYuYPy0Voed70Mk2HBQvdEnuP9m6X1g== +"@ckeditor/ckeditor5-select-all@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-select-all/-/ckeditor5-select-all-47.2.0.tgz#61d2bb5c0dd4f16403828f0ae7bb7ce90f557e37" + integrity sha512-4kswe9jmKp6y1hTwWfJBxF8XuX1pgZxraAlm+ugJLhjsus/vGBVXBFNN7kH+RoNxC6tf1ZXly69dGTG4P/nXrg== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" -"@ckeditor/ckeditor5-show-blocks@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-show-blocks/-/ckeditor5-show-blocks-47.1.0.tgz#2d8c3d22394ad982cbaf2519fc44365e0f7011f4" - integrity sha512-8ogD671z7j2DwlOa1W0KX7jcorTHbrLxqLYtiCeJljJv/sfHMtzfXc8PL81eiKDfSZwoNY2k5pwTWPyv30MRAg== +"@ckeditor/ckeditor5-show-blocks@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-show-blocks/-/ckeditor5-show-blocks-47.2.0.tgz#4096372e2bb52e04cc1d2316f6c36e266b948c43" + integrity sha512-eIzvA5zQEWNGVXhkCTYVfw32tpsFEx4nTPAVpsFEv0hb1sAMaOv5fIoFmwcx/C8CmN9sBiZtuovXGM5i/pwoTQ== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-source-editing@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-source-editing/-/ckeditor5-source-editing-47.1.0.tgz#e9af36b59f8d3d08800096498a2b2c588b3a48d4" - integrity sha512-/UzbN04b3gK4FdY9nS6bdmh1KlkhHTOglCnvKDlx6XvC+E6qW2OzfU7D1b/k7sINSmVRGkt5L2NuZCHeAgX2/Q== +"@ckeditor/ckeditor5-source-editing@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-source-editing/-/ckeditor5-source-editing-47.2.0.tgz#6d521c9abdb79e8232279410a54654d73dff2a77" + integrity sha512-B82fbUiTBWYR3XTfUk/30Hsk9PAmPkmraKNJKGDoch0NXduPz8ehpCwbnrJdIvm7pozbgB11RjWzq56VcBX2Qw== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-theme-lark" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-theme-lark" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-special-characters@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-special-characters/-/ckeditor5-special-characters-47.1.0.tgz#ee699082b9bb89175336f08ea2d572053364e379" - integrity sha512-r/FW9Xz589nLcr5pXOyhCPNLQp7XkjR17PgHTgJcQmJuEo396UTvoPz7eBfGkCDMjINmZj1cTNdJSL7/Xpqk5g== +"@ckeditor/ckeditor5-special-characters@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-special-characters/-/ckeditor5-special-characters-47.2.0.tgz#08e4f476216d3a5fe9d359a38c1694c163ede818" + integrity sha512-aH1E1SEMRUF6gMdqPuFeDZvZRCUNJ/n8RWwXHFicsJArYDGOiATxVZQZbwk50duAsWcxxj0uTSHGwFXBL9evyQ== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-typing" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-typing" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" -"@ckeditor/ckeditor5-style@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-style/-/ckeditor5-style-47.1.0.tgz#cf694876f913b4ab272b4acfa453f2772f3bd90a" - integrity sha512-Mt40tqRfgebkbHVXq+8nD19gyIsNgnITiQoT+tFZynSlQieaifDo+9D3Aq70KdrxlHW4Muw5ryYe14Xy7Y+rwA== +"@ckeditor/ckeditor5-style@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-style/-/ckeditor5-style-47.2.0.tgz#939b39f42db67dfa91c51ddde2efa9fc28dffc0d" + integrity sha512-XAIl8oNHpFxTRbGIE+2vpKLgrP3VnknUTyasvL/HeS3iUHKLDRlh9d3ghozhuUqQaF5rnkzUQEBv/fv+4u3Y7A== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-html-support" "47.1.0" - "@ckeditor/ckeditor5-list" "47.1.0" - "@ckeditor/ckeditor5-table" "47.1.0" - "@ckeditor/ckeditor5-typing" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-html-support" "47.2.0" + "@ckeditor/ckeditor5-list" "47.2.0" + "@ckeditor/ckeditor5-table" "47.2.0" + "@ckeditor/ckeditor5-typing" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-table@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-table/-/ckeditor5-table-47.1.0.tgz#dd89a38b7950954d60e5c0fa93b5c8ef6de7766c" - integrity sha512-49g66He4BFzfh/8m23BBhfxk/0FnJnEZ07SiQBWdAMfZSFubTz0/tCm38imf79h4bawUcaLSGP+UJBc6x/gg4w== +"@ckeditor/ckeditor5-table@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-table/-/ckeditor5-table-47.2.0.tgz#d08098760bc5dca1289a98fcb06a3a6bccd0c4d1" + integrity sha512-zxNHpl4L7HsOLCYiKrbyyHoM2dMGetgP4eTjYyWfn9gf+ydVs7o+LJVN5bsWt3J4ToamCj5G7VHZUmqUcPbN6A== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.1.0" - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - "@ckeditor/ckeditor5-widget" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-clipboard" "47.2.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + "@ckeditor/ckeditor5-widget" "47.2.0" + ckeditor5 "47.2.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-theme-lark@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-theme-lark/-/ckeditor5-theme-lark-47.1.0.tgz#9819ebf013f26d1500188c3882e71d5f3064bcb5" - integrity sha512-gUAPApFbsViLKGgwHtCLigBYziFUmXDBa9UFmZUNSTZPWpTz/uxOOhwjrQvGqwAH/0W9pKR5TsxWaE2sJZaJPQ== +"@ckeditor/ckeditor5-theme-lark@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-theme-lark/-/ckeditor5-theme-lark-47.2.0.tgz#10260a70b0c12f668593506e51ebd8b7eaa76dba" + integrity sha512-5Guefuo+Nllq4FMaFnLJlU/fICy2IQYw3T+0PTYjFqd59xTx6suwjv2ou41HKPfJ1b6NCbmkbhuaC59lGIfBtQ== dependencies: - "@ckeditor/ckeditor5-ui" "47.1.0" + "@ckeditor/ckeditor5-ui" "47.2.0" -"@ckeditor/ckeditor5-typing@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-47.1.0.tgz#f18c0d1430177c677f7020c269b48d6331abc3e7" - integrity sha512-teg0UA6AWEMraXAsXYB8372ogIXfFaakOv6Vz8ppIsuKPZfHKJC5ixUd+oUzk03nv3QdtalQAALY8I8dnwl6dQ== +"@ckeditor/ckeditor5-typing@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-47.2.0.tgz#6f5ac014e3104cedc54cc79213d24ea871d24122" + integrity sha512-BDJLlaX9SHFUfZegOEW7ZeJ0o/TBgabINNxa3CwtGuGBLHUAQ3IAFJ0Cd6jHq12J2kRDwiXZzvvgMyCH7jeeUQ== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-ui@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-47.1.0.tgz#2c691666fd679736fc3ebf629f2c27d1c10fd6db" - integrity sha512-fV/9LPGZgnWBFQcHq29idZI34OZoO5ej72asf0X+A2rMgdCrHPlVeVwiy6THLRE5CFn9qdramYB27eESxOPi6A== +"@ckeditor/ckeditor5-ui@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-47.2.0.tgz#e3d7f5ab66a5426f79afa560c1e01bfd41abf88c" + integrity sha512-/yd1/JmIqJybqBRZvk/QGzeY6DZlJvPtyEqq9Ay+U4bUftr2DOrfOikM62okepYRCCtMQ4nQk3c2eFmacfym2A== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-editor-multi-root" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-editor-multi-root" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" "@types/color-convert" "2.0.4" color-convert "3.1.0" color-parse "2.0.2" es-toolkit "1.39.5" vanilla-colorful "0.7.2" -"@ckeditor/ckeditor5-undo@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-undo/-/ckeditor5-undo-47.1.0.tgz#e31a947a890af2c1f94ebd81643ef6f4eb146cc3" - integrity sha512-e+GyEZLlx2LhHbaegWri3p1zgX6fjvQH7fzmFG2NZ5h1bgbsCW/+vHv5/r9cwU2/SudJqOeoQRXGQ8PHBp6/ZA== +"@ckeditor/ckeditor5-undo@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-undo/-/ckeditor5-undo-47.2.0.tgz#94af4ec59d65f88dbb3500316784fa5ba897417e" + integrity sha512-smq5O3GdqJXB+9o54BTn/LyB52OHiW9ekzacOuMNxtuA/KBwHpdsPFMcGFGH04W9O0qUtSdt3fYC0i+SJjYAww== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" -"@ckeditor/ckeditor5-upload@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-upload/-/ckeditor5-upload-47.1.0.tgz#37cd923c0e23070c9a0e61f4529d0c1d250a0272" - integrity sha512-JP6Ao5xbNPoxKv4zWgYbVBA6u8CmOSkvLYp+P3+i4MCcwva4NH/dKwJL+Wqk8XxZ8eavhXNgMGs22Oqq2v18/Q== +"@ckeditor/ckeditor5-upload@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-upload/-/ckeditor5-upload-47.2.0.tgz#6c0caa82be97e1149c03a2d96da242d0a4a613ee" + integrity sha512-uE4FwVtmJ6UACDC9N+H6HHGhlpAF8Fk2QCF/iBboh4VqhlFbFjMbXCAbsWrDik6C/p9r4Iv+IEmbpjsRTD+9SQ== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" -"@ckeditor/ckeditor5-utils@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-47.1.0.tgz#b0038703d874029ebf15636d6b7aa75c3634da4e" - integrity sha512-tx2AHkx8dqVp4YKieGbNmSZy88ekmsMIQyHMD04n6oMFz16a3mmqFCm9WJRpTaNvniGKh6TCxA48Kf2zwn7EmQ== +"@ckeditor/ckeditor5-utils@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-47.2.0.tgz#6d80dc08564d34db04b8799eff2897b9cc1d9e17" + integrity sha512-1b9SWtGuPZApm9065swh+fivxQMvuAsVXHuo26OGV2EnQK//w7kHsxKhVGJMzfHeuev5KvhJ2zdo8SUvePfBoA== dependencies: - "@ckeditor/ckeditor5-ui" "47.1.0" + "@ckeditor/ckeditor5-ui" "47.2.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-watchdog@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-watchdog/-/ckeditor5-watchdog-47.1.0.tgz#207a54f21b60fafdad9acbf33857eda82c0dc8cd" - integrity sha512-3cK0GKi8Et3dHln1E36Wmk30SzgLd2dgWDGaNUvfygQT9hBeKnWZ//cp/ZlBwbfEwJth/jAlcXUHsFR9T2Uwjw== +"@ckeditor/ckeditor5-watchdog@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-watchdog/-/ckeditor5-watchdog-47.2.0.tgz#67fc6af5205f8da246752e97d8a4e907cc18373f" + integrity sha512-C1AT7OqLBkPCUm4pjJe4n64qj+5vvMdQb2+lLMSz0SMsBqmYFrVYMlZWW4LjpaYUAYEmvTPcyDoqukBKRWNrRQ== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-editor-multi-root" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-editor-multi-root" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-widget@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-47.1.0.tgz#d201efc67d812e0b3356d5de4a88116857bf4b7b" - integrity sha512-S04Ry1eVMyLV7yyc8bpmAY/7/bmD8FsrV5Gfk3ftL+voJi0+3B1WmptOcpkyiCC5PbbgjNX3f0NPYufEjjPNtQ== +"@ckeditor/ckeditor5-widget@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-47.2.0.tgz#3c38db32b0e4d2ec0e78a053fda04d68f2542bf5" + integrity sha512-1vhfdeVPNc6UtCPAC+aKDNIi0EDxpAJ7TudepJVLXnS752V5rnArjPrYBfH6dkpHYV920CuxxsoS1sSuVVMrkA== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-enter" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-typing" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-enter" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-typing" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-word-count@47.1.0": - version "47.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-word-count/-/ckeditor5-word-count-47.1.0.tgz#d09a3fa80e0fe07560148b8d62efe01c97016907" - integrity sha512-e9sx/EUONwbdZFGU6bcJmrLMw18Fugecs3LiMQVVoVrFpMEywPhzzeRZUN6XX70qPXWHkDRQRnNSQXqhJ2lpxg== +"@ckeditor/ckeditor5-word-count@47.2.0": + version "47.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-word-count/-/ckeditor5-word-count-47.2.0.tgz#42577d55113f63c4953f7549f1eff8b7de653950" + integrity sha512-1ouy59G1Qxf6hTRnW9tSL7Xjsx8kGfTJvrH9mZWGIpmNo0pIM6Ts96U/qgr5RB0LbhYtqhbDq87F9QjMcfYUjQ== dependencies: - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - ckeditor5 "47.1.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + ckeditor5 "47.2.0" es-toolkit "1.39.5" "@csstools/selector-resolve-nested@^3.1.0": @@ -2075,7 +2075,7 @@ dependencies: "@types/ms" "*" -"@types/emscripten@^1.41.2": +"@types/emscripten@^1.41.5": version "1.41.5" resolved "https://registry.yarnpkg.com/@types/emscripten/-/emscripten-1.41.5.tgz#5670e4b52b098691cb844b84ee48c9176699b68d" integrity sha512-cMQm7pxu6BxtHyqJ7mQZ2kXWV5SLmugybFdHCBbJ5eHzOo6VhBckEgAT3//rP5FwPHNPeEiq4SmQ5ucBwsOo4Q== @@ -2160,9 +2160,9 @@ integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== "@types/node@*": - version "24.9.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-24.9.2.tgz#90ded2422dbfcafcf72080f28975adc21366148d" - integrity sha512-uWN8YqxXxqFMX2RqGOrumsKeti4LlmIMIyV0lgut4jx7KQBcBiW6vkDtIBvHnHIquwNfJhk8v2OtmO8zXWHfPA== + version "24.10.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.10.1.tgz#91e92182c93db8bd6224fca031e2370cef9a8f01" + integrity sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ== dependencies: undici-types "~7.16.0" @@ -2596,11 +2596,11 @@ balanced-match@^1.0.0: integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== barcode-detector@^3.0.0, barcode-detector@^3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/barcode-detector/-/barcode-detector-3.0.6.tgz#87f8ef762acb56a7f761ac91cf6c8d64ad327fe7" - integrity sha512-v4xTr6B+FINl/p1RDl38qzIwF+Repfo+k/a/HlKTJKAJpNvACD6v7AH7LSPvfR4AdzXXuwai04huA4TWn02Znw== + version "3.0.7" + resolved "https://registry.yarnpkg.com/barcode-detector/-/barcode-detector-3.0.7.tgz#bc5784c2d8263df85c7722cd25c36fd9b3c23edc" + integrity sha512-91Pu2iuw1CS/P/Uqvbh7/tHGU2gbAr4+qRRegfKa87uonQZpVfVy7Q16HQCCqMhq7DURHdk8s3FVAkqoeBRZ3g== dependencies: - zxing-wasm "2.2.2" + zxing-wasm "2.2.3" base64-js@1.3.1: version "1.3.1" @@ -2612,10 +2612,10 @@ base64-js@^1.1.2, base64-js@^1.3.0: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -baseline-browser-mapping@^2.8.19: - version "2.8.23" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.23.tgz#cd43e17eff5cbfb67c92153e7fe856cf6d426421" - integrity sha512-616V5YX4bepJFzNyOfce5Fa8fDJMfoxzOIzDCZwaGL8MKVpFrXqfNUoIpRn9YMI5pXf/VKgzjB4htFMsFKKdiQ== +baseline-browser-mapping@^2.8.25: + version "2.8.27" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.27.tgz#d15ab8face053137f8eb4c028455024787515d5d" + integrity sha512-2CXFpkjVnY2FT+B6GrSYxzYf65BJWEqz5tIRHCvNsZZ2F3CmsCB37h8SpYgKG7y9C4YAeTipIPWG7EmFmhAeXA== big.js@^5.2.2: version "5.2.2" @@ -2680,14 +2680,14 @@ browser-stdout@1.3.1: integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.26.3, browserslist@^4.27.0: - version "4.27.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.27.0.tgz#755654744feae978fbb123718b2f139bc0fa6697" - integrity sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw== + version "4.28.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.0.tgz#9cefece0a386a17a3cd3d22ebf67b9deca1b5929" + integrity sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ== dependencies: - baseline-browser-mapping "^2.8.19" - caniuse-lite "^1.0.30001751" - electron-to-chromium "^1.5.238" - node-releases "^2.0.26" + baseline-browser-mapping "^2.8.25" + caniuse-lite "^1.0.30001754" + electron-to-chromium "^1.5.249" + node-releases "^2.0.27" update-browserslist-db "^1.1.4" bs-custom-file-input@^1.3.4: @@ -2775,10 +2775,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.30001751: - version "1.0.30001753" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001753.tgz#419f8fc9bab6f1a1d10d9574d0b3374f823c5b00" - integrity sha512-Bj5H35MD/ebaOV4iDLqPEtiliTN29qkGtEHCwawWn4cYm+bPJM2NsaP30vtZcnERClMzp52J4+aw2UNbK4o+zw== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001754: + version "1.0.30001754" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001754.tgz#7758299d9a72cce4e6b038788a15b12b44002759" + integrity sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg== ccount@^2.0.0: version "2.0.1" @@ -2855,72 +2855,72 @@ ci-info@^3.2.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== -ckeditor5@47.1.0, ckeditor5@^47.0.0: - version "47.1.0" - resolved "https://registry.yarnpkg.com/ckeditor5/-/ckeditor5-47.1.0.tgz#f050ccfaf46163dec914fd30410deae7866d869f" - integrity sha512-Vnmt6eKIpiM+EpJSwxzCjJC5/9ykUhegwqWS9znAuAz2ZgBiVUFt54Y+CBhVpMru3z4zQ+NncVgCqoiU3ocHGQ== +ckeditor5@47.2.0, ckeditor5@^47.0.0: + version "47.2.0" + resolved "https://registry.yarnpkg.com/ckeditor5/-/ckeditor5-47.2.0.tgz#8aeb6466c6dbb1d3b990f9a52c114fbe12fee498" + integrity sha512-mrG9UdpT4JC0I44vK1DV5UwfGhruEG/FMXIWwGv+LWYrKt4aLL/5NyNpW86UDO9YAFSaw6IdEcbJGC/WkMJJjA== dependencies: - "@ckeditor/ckeditor5-adapter-ckfinder" "47.1.0" - "@ckeditor/ckeditor5-alignment" "47.1.0" - "@ckeditor/ckeditor5-autoformat" "47.1.0" - "@ckeditor/ckeditor5-autosave" "47.1.0" - "@ckeditor/ckeditor5-basic-styles" "47.1.0" - "@ckeditor/ckeditor5-block-quote" "47.1.0" - "@ckeditor/ckeditor5-bookmark" "47.1.0" - "@ckeditor/ckeditor5-ckbox" "47.1.0" - "@ckeditor/ckeditor5-ckfinder" "47.1.0" - "@ckeditor/ckeditor5-clipboard" "47.1.0" - "@ckeditor/ckeditor5-cloud-services" "47.1.0" - "@ckeditor/ckeditor5-code-block" "47.1.0" - "@ckeditor/ckeditor5-core" "47.1.0" - "@ckeditor/ckeditor5-easy-image" "47.1.0" - "@ckeditor/ckeditor5-editor-balloon" "47.1.0" - "@ckeditor/ckeditor5-editor-classic" "47.1.0" - "@ckeditor/ckeditor5-editor-decoupled" "47.1.0" - "@ckeditor/ckeditor5-editor-inline" "47.1.0" - "@ckeditor/ckeditor5-editor-multi-root" "47.1.0" - "@ckeditor/ckeditor5-emoji" "47.1.0" - "@ckeditor/ckeditor5-engine" "47.1.0" - "@ckeditor/ckeditor5-enter" "47.1.0" - "@ckeditor/ckeditor5-essentials" "47.1.0" - "@ckeditor/ckeditor5-find-and-replace" "47.1.0" - "@ckeditor/ckeditor5-font" "47.1.0" - "@ckeditor/ckeditor5-fullscreen" "47.1.0" - "@ckeditor/ckeditor5-heading" "47.1.0" - "@ckeditor/ckeditor5-highlight" "47.1.0" - "@ckeditor/ckeditor5-horizontal-line" "47.1.0" - "@ckeditor/ckeditor5-html-embed" "47.1.0" - "@ckeditor/ckeditor5-html-support" "47.1.0" - "@ckeditor/ckeditor5-icons" "47.1.0" - "@ckeditor/ckeditor5-image" "47.1.0" - "@ckeditor/ckeditor5-indent" "47.1.0" - "@ckeditor/ckeditor5-language" "47.1.0" - "@ckeditor/ckeditor5-link" "47.1.0" - "@ckeditor/ckeditor5-list" "47.1.0" - "@ckeditor/ckeditor5-markdown-gfm" "47.1.0" - "@ckeditor/ckeditor5-media-embed" "47.1.0" - "@ckeditor/ckeditor5-mention" "47.1.0" - "@ckeditor/ckeditor5-minimap" "47.1.0" - "@ckeditor/ckeditor5-page-break" "47.1.0" - "@ckeditor/ckeditor5-paragraph" "47.1.0" - "@ckeditor/ckeditor5-paste-from-office" "47.1.0" - "@ckeditor/ckeditor5-remove-format" "47.1.0" - "@ckeditor/ckeditor5-restricted-editing" "47.1.0" - "@ckeditor/ckeditor5-select-all" "47.1.0" - "@ckeditor/ckeditor5-show-blocks" "47.1.0" - "@ckeditor/ckeditor5-source-editing" "47.1.0" - "@ckeditor/ckeditor5-special-characters" "47.1.0" - "@ckeditor/ckeditor5-style" "47.1.0" - "@ckeditor/ckeditor5-table" "47.1.0" - "@ckeditor/ckeditor5-theme-lark" "47.1.0" - "@ckeditor/ckeditor5-typing" "47.1.0" - "@ckeditor/ckeditor5-ui" "47.1.0" - "@ckeditor/ckeditor5-undo" "47.1.0" - "@ckeditor/ckeditor5-upload" "47.1.0" - "@ckeditor/ckeditor5-utils" "47.1.0" - "@ckeditor/ckeditor5-watchdog" "47.1.0" - "@ckeditor/ckeditor5-widget" "47.1.0" - "@ckeditor/ckeditor5-word-count" "47.1.0" + "@ckeditor/ckeditor5-adapter-ckfinder" "47.2.0" + "@ckeditor/ckeditor5-alignment" "47.2.0" + "@ckeditor/ckeditor5-autoformat" "47.2.0" + "@ckeditor/ckeditor5-autosave" "47.2.0" + "@ckeditor/ckeditor5-basic-styles" "47.2.0" + "@ckeditor/ckeditor5-block-quote" "47.2.0" + "@ckeditor/ckeditor5-bookmark" "47.2.0" + "@ckeditor/ckeditor5-ckbox" "47.2.0" + "@ckeditor/ckeditor5-ckfinder" "47.2.0" + "@ckeditor/ckeditor5-clipboard" "47.2.0" + "@ckeditor/ckeditor5-cloud-services" "47.2.0" + "@ckeditor/ckeditor5-code-block" "47.2.0" + "@ckeditor/ckeditor5-core" "47.2.0" + "@ckeditor/ckeditor5-easy-image" "47.2.0" + "@ckeditor/ckeditor5-editor-balloon" "47.2.0" + "@ckeditor/ckeditor5-editor-classic" "47.2.0" + "@ckeditor/ckeditor5-editor-decoupled" "47.2.0" + "@ckeditor/ckeditor5-editor-inline" "47.2.0" + "@ckeditor/ckeditor5-editor-multi-root" "47.2.0" + "@ckeditor/ckeditor5-emoji" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-enter" "47.2.0" + "@ckeditor/ckeditor5-essentials" "47.2.0" + "@ckeditor/ckeditor5-find-and-replace" "47.2.0" + "@ckeditor/ckeditor5-font" "47.2.0" + "@ckeditor/ckeditor5-fullscreen" "47.2.0" + "@ckeditor/ckeditor5-heading" "47.2.0" + "@ckeditor/ckeditor5-highlight" "47.2.0" + "@ckeditor/ckeditor5-horizontal-line" "47.2.0" + "@ckeditor/ckeditor5-html-embed" "47.2.0" + "@ckeditor/ckeditor5-html-support" "47.2.0" + "@ckeditor/ckeditor5-icons" "47.2.0" + "@ckeditor/ckeditor5-image" "47.2.0" + "@ckeditor/ckeditor5-indent" "47.2.0" + "@ckeditor/ckeditor5-language" "47.2.0" + "@ckeditor/ckeditor5-link" "47.2.0" + "@ckeditor/ckeditor5-list" "47.2.0" + "@ckeditor/ckeditor5-markdown-gfm" "47.2.0" + "@ckeditor/ckeditor5-media-embed" "47.2.0" + "@ckeditor/ckeditor5-mention" "47.2.0" + "@ckeditor/ckeditor5-minimap" "47.2.0" + "@ckeditor/ckeditor5-page-break" "47.2.0" + "@ckeditor/ckeditor5-paragraph" "47.2.0" + "@ckeditor/ckeditor5-paste-from-office" "47.2.0" + "@ckeditor/ckeditor5-remove-format" "47.2.0" + "@ckeditor/ckeditor5-restricted-editing" "47.2.0" + "@ckeditor/ckeditor5-select-all" "47.2.0" + "@ckeditor/ckeditor5-show-blocks" "47.2.0" + "@ckeditor/ckeditor5-source-editing" "47.2.0" + "@ckeditor/ckeditor5-special-characters" "47.2.0" + "@ckeditor/ckeditor5-style" "47.2.0" + "@ckeditor/ckeditor5-table" "47.2.0" + "@ckeditor/ckeditor5-theme-lark" "47.2.0" + "@ckeditor/ckeditor5-typing" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-undo" "47.2.0" + "@ckeditor/ckeditor5-upload" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.2.0" + "@ckeditor/ckeditor5-watchdog" "47.2.0" + "@ckeditor/ckeditor5-widget" "47.2.0" + "@ckeditor/ckeditor5-word-count" "47.2.0" clean-stack@^2.0.0: version "2.2.0" @@ -2998,9 +2998,9 @@ color-name@1.1.3: integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-2.0.2.tgz#85054825a23e6d6f81d3503f660c4c4a2a15f04f" - integrity sha512-9vEt7gE16EW7Eu7pvZnR0abW9z6ufzhXxGXZEVU9IqPdlsUiMwJeJfRtq0zePUmnbHGT9zajca7mX8zgoayo4A== + version "2.1.0" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-2.1.0.tgz#0b677385c1c4b4edfdeaf77e38fa338e3a40b693" + integrity sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg== color-name@~1.1.4: version "1.1.4" @@ -3661,10 +3661,10 @@ duplexer@^0.1.2: resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -electron-to-chromium@^1.5.238: - version "1.5.244" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.244.tgz#b9b61e3d24ef4203489951468614f2a360763820" - integrity sha512-OszpBN7xZX4vWMPJwB9illkN/znA8M36GQqQxi6MNy9axWxhOfJyZZJtSLQCpEFLHP2xK33BiWx9aIuIEXVCcw== +electron-to-chromium@^1.5.249: + version "1.5.250" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.250.tgz#0b40436fa41ae7cbac3d2f60ef0411a698eb72a7" + integrity sha512-/5UMj9IiGDMOFBnN4i7/Ry5onJrAGSbOGo3s9FEKmwobGq6xw832ccET0CE3CkkMBZ8GJSlUIesZofpyurqDXw== emoji-regex@^7.0.1: version "7.0.3" @@ -5082,21 +5082,21 @@ markdown-table@^3.0.0: integrity sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw== marked-gfm-heading-id@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/marked-gfm-heading-id/-/marked-gfm-heading-id-4.1.2.tgz#65c5e28bce7581206a2073e4d2df8e02daceb2fb" - integrity sha512-EQ1WiEGHJh0C8viU+hbXbhHyWTDgEia2i96fiSemm2wdYER6YBw/9QI5TB6YFTqFfmMOxBFXPcPJtlgD0fVV2w== + version "4.1.3" + resolved "https://registry.yarnpkg.com/marked-gfm-heading-id/-/marked-gfm-heading-id-4.1.3.tgz#6b3e0bc2bc69d5124823e93ee00f05f5c6f90a5f" + integrity sha512-aR0i63LmFbuxU/gAgrgz1Ir+8HK6zAIFXMlckeKHpV+qKbYaOP95L4Ux5Gi+sKmCZU5qnN2rdKpvpb7PnUBIWg== dependencies: github-slugger "^2.0.0" marked-mangle@^1.0.1: - version "1.1.11" - resolved "https://registry.yarnpkg.com/marked-mangle/-/marked-mangle-1.1.11.tgz#d743093b5f48ce964e5594764915abdf05c364f6" - integrity sha512-BUZiRqPooKZZhC7e8aDlzqkZt4MKkbJ/VY22b8iqrI3fJdnWmSyc7/uujDkrMszZrKURrXsYVUfgdWG6gEspcA== + version "1.1.12" + resolved "https://registry.yarnpkg.com/marked-mangle/-/marked-mangle-1.1.12.tgz#7ecc1dab1e03695f3b8b9d606e8becfba8277496" + integrity sha512-bRrqNcfU9v3iRECb7YPvA+/xKZMjHojd9R92YwHbFjdPQ+Wc7vozkbGKAv4U8AUl798mNUuY3DTBQkedsV3TeQ== marked@^16.1.1: - version "16.4.1" - resolved "https://registry.yarnpkg.com/marked/-/marked-16.4.1.tgz#db37c878cfa28fa57b8dd471fe92a83282911052" - integrity sha512-ntROs7RaN3EvWfy3EZi14H4YxmT6A5YvywfhO+0pm+cH/dnSQRmdAmoFIc3B9aiwTehyk7pESH4ofyBY+V5hZg== + version "16.4.2" + resolved "https://registry.yarnpkg.com/marked/-/marked-16.4.2.tgz#4959a64be6c486f0db7467ead7ce288de54290a3" + integrity sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA== math-intrinsics@^1.1.0: version "1.1.0" @@ -5734,7 +5734,7 @@ node-notifier@^9.0.0: uuid "^8.3.0" which "^2.0.2" -node-releases@^2.0.26: +node-releases@^2.0.27: version "2.0.27" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.27.tgz#eedca519205cf20f650f61d56b070db111231e4e" integrity sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA== @@ -6901,9 +6901,9 @@ safe-regex-test@^1.1.0: integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sax@^1.2.4, sax@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" - integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== + version "1.4.3" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.3.tgz#fcebae3b756cdc8428321805f4b70f16ec0ab5db" + integrity sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ== schema-utils@^3.0.0: version "3.3.0" @@ -7402,9 +7402,9 @@ terser-webpack-plugin@^5.3.0, terser-webpack-plugin@^5.3.11: terser "^5.31.1" terser@^5.3.4, terser@^5.31.1: - version "5.44.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.44.0.tgz#ebefb8e5b8579d93111bfdfc39d2cf63879f4a82" - integrity sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w== + version "5.44.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.44.1.tgz#e391e92175c299b8c284ad6ded609e37303b0a9c" + integrity sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.15.0" @@ -7485,10 +7485,10 @@ tslib@^2.8.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== -type-fest@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-5.1.0.tgz#30ba6dc2acde4f73732417031f8ac19a0afcb5b7" - integrity sha512-wQ531tuWvB6oK+pchHIu5lHe5f5wpSCqB8Kf4dWQRbOYc9HTge7JL0G4Qd44bh6QuJCccIzL3bugb8GI0MwHrg== +type-fest@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-5.2.0.tgz#7dd671273eb6bcba71af0babe303e8dbab60f795" + integrity sha512-xxCJm+Bckc6kQBknN7i9fnP/xobQRsRQxR01CztFkp/h++yfVxUUcmMgfR2HttJx/dpWjS9ubVuyspJv24Q9DA== dependencies: tagged-tag "^1.0.0" @@ -8030,10 +8030,10 @@ zwitch@^2.0.0, zwitch@^2.0.4: resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A== -zxing-wasm@2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/zxing-wasm/-/zxing-wasm-2.2.2.tgz#b2ad711f3f241757e822baebbc617bac5723898f" - integrity sha512-Q9/B9whEwAUABvr7ScHl36wVZTBWVHAaumx45uGQLl2GGRp5ZRtDtwbz5scOwl/xzL07fximIqoQqqmzf9eJJA== +zxing-wasm@2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/zxing-wasm/-/zxing-wasm-2.2.3.tgz#365ff73d84a44bc2e81b10e622baed2b764caaf5" + integrity sha512-fz0WwsJi6sNZtfqmHb4cCNzih0Fvz+RIh7jL5wAwQEt+S+GCr6pV+PRDLNYKWgrAtR0y2hKQCLSbZDRk8hfehA== dependencies: - "@types/emscripten" "^1.41.2" - type-fest "^5.0.1" + "@types/emscripten" "^1.41.5" + type-fest "^5.2.0" From 95c5ab7b8b487be3d48c98ac442a3f9117949634 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 12 Nov 2025 21:54:41 +0100 Subject: [PATCH 008/235] Removed unnecessary polyfills --- composer.json | 7 ++ composer.lock | 251 +------------------------------------------------- symfony.lock | 6 -- 3 files changed, 8 insertions(+), 256 deletions(-) diff --git a/composer.json b/composer.json index f53130d4..1c6eafc7 100644 --- a/composer.json +++ b/composer.json @@ -118,6 +118,13 @@ "symfony/stopwatch": "7.3.*", "symfony/web-profiler-bundle": "7.3.*" }, + "replace": { + "symfony/polyfill-mbstring": "*", + "symfony/polyfill-php74": "*", + "symfony/polyfill-php80": "*", + "symfony/polyfill-php81": "*", + "symfony/polyfill-php82": "*" + }, "suggest": { "ext-bcmath": "Used to improve price calculation performance", "ext-gmp": "Used to improve price calculation performanice" diff --git a/composer.lock b/composer.lock index 187c5155..d0142b5f 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "3b5a603cc4c289262a2e58b0f37ee42e", + "content-hash": "7e6a6a56cfdcc08fc186bb3894ae00e0", "packages": [ { "name": "amphp/amp", @@ -13385,255 +13385,6 @@ ], "time": "2024-09-09T11:45:10+00:00" }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.33.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", - "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", - "shasum": "" - }, - "require": { - "ext-iconv": "*", - "php": ">=7.2" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-12-23T08:48:59+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.33.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", - "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2025-01-02T08:10:11+00:00" - }, - { - "name": "symfony/polyfill-php82", - "version": "v1.33.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php82.git", - "reference": "5d2ed36f7734637dacc025f179698031951b1692" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php82/zipball/5d2ed36f7734637dacc025f179698031951b1692", - "reference": "5d2ed36f7734637dacc025f179698031951b1692", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php82\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php82/tree/v1.33.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-09T11:45:10+00:00" - }, { "name": "symfony/polyfill-php83", "version": "v1.33.0", diff --git a/symfony.lock b/symfony.lock index 7c136b4b..2cff2c00 100644 --- a/symfony.lock +++ b/symfony.lock @@ -592,12 +592,6 @@ "symfony/polyfill-intl-normalizer": { "version": "v1.17.0" }, - "symfony/polyfill-mbstring": { - "version": "v1.10.0" - }, - "symfony/polyfill-php80": { - "version": "v1.17.0" - }, "symfony/process": { "version": "v4.2.3" }, From bee1542cce64003889d246fc387c059954397647 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 12 Nov 2025 22:31:25 +0100 Subject: [PATCH 009/235] New translations messages.en.xlf (English) --- translations/messages.en.xlf | 146 +++++++++++++++++------------------ 1 file changed, 73 insertions(+), 73 deletions(-) diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index db4370f4..ca05bee9 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -232,7 +232,7 @@ 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> @@ -671,10 +671,10 @@ 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>
    @@ -825,9 +825,9 @@ The user will have to set up all two-factor authentication methods again and pri entity.delete.message - -Sub elements will be moved upwards.]]> + This can not be undone! +<br> +Sub elements will be moved upwards. @@ -1381,7 +1381,7 @@ Sub elements will be moved upwards.]]> 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> @@ -1403,7 +1403,7 @@ Sub elements will be moved upwards.]]> 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> @@ -1645,7 +1645,7 @@ Sub elements will be moved upwards.]]> 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 @@ -1675,7 +1675,7 @@ Sub elements will be moved upwards.]]> email.pw_reset.valid_unit %date% - %date%.]]> + The reset token will be valid until <i>%date%</i>. @@ -3578,8 +3578,8 @@ Sub elements will be moved upwards.]]> tfa_google.disable.confirm_message - -Also note that without two-factor authentication, your account is no longer 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 no longer as well protected against attackers! @@ -3599,7 +3599,7 @@ Also note that without two-factor authentication, your account is no longer as w 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>) @@ -3841,8 +3841,8 @@ Also note that without two-factor authentication, your account is no longer as w 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. @@ -5319,7 +5319,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can 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. @@ -7187,15 +7187,15 @@ Exampletown mass_creation.lines.placeholder - Element 1 Element 1.1 Element 1.1.1 Element 1.2 Element 2 Element 3 -Element 1 -> Element 1.1 -Element 1 -> Element 1.2]]> +Element 1 -> Element 1.1 +Element 1 -> Element 1.2 @@ -9394,25 +9394,25 @@ Element 1 -> Element 1.2]]> 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 >= @@ -9520,7 +9520,7 @@ Element 1 -> Element 1.2]]> parts_list.search.searching_for - %keyword%]]> + Searching parts with keyword <b>%keyword%</b> @@ -10180,13 +10180,13 @@ Element 1 -> Element 1.2]]> 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! @@ -10300,7 +10300,7 @@ Element 1 -> Element 1.2]]> 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" @@ -10324,13 +10324,13 @@ Element 1 -> Element 1.2]]> 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>. @@ -10342,7 +10342,7 @@ Element 1 -> Element 1.2]]> homepage.forum.text - discussion forum]]> + For questions about Part-DB use the <a href="%href%" class="link-external" target="_blank">discussion forum</a> @@ -11008,7 +11008,7 @@ Element 1 -> Element 1.2]]> 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. @@ -11200,7 +11200,7 @@ Element 1 -> Element 1.2]]> part.filter.lessThanDesired - + In stock less than desired (total amount < min. amount) @@ -12012,13 +12012,13 @@ Please note, that you can not impersonate a disabled user. If you try you will g 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. @@ -12372,7 +12372,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.element14.apiKey.help - https://partner.element14.com/.]]> + You can register for an API key on <a href="https://partner.element14.com/">https://partner.element14.com/</a>. @@ -12384,7 +12384,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.element14.storeId.help - here for a list of valid domains.]]> + The store domain to retrieve the data from. This decides the language and currency of results. See <a href="https://partner.element14.com/docs/Product_Search_API_REST__Description">here</a> for a list of valid domains. @@ -12402,7 +12402,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.tme.token.help - https://developers.tme.eu/en/.]]> + You can get an API token and secret on <a href="https://developers.tme.eu/en/">https://developers.tme.eu/en/</a>. @@ -12450,7 +12450,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.mouser.apiKey.help - https://eu.mouser.com/api-hub/.]]> + You can register for an API key on <a href="https://eu.mouser.com/api-hub/">https://eu.mouser.com/api-hub/</a>. @@ -12528,7 +12528,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.system.attachments - + Attachments & Files @@ -12552,7 +12552,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.system.attachments.allowDownloads.help - Attention: This can be a security issue, as it might allow users to access intranet ressources via Part-DB!]]> + With this option users can download external files into Part-DB by providing an URL. <b>Attention: This can be a security issue, as it might allow users to access intranet ressources via Part-DB!</b> @@ -12726,8 +12726,8 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.system.localization.base_currency_description - Please note that the currencies are not converted, when changing this value. So changing the default currency after you already added price information, will result in wrong prices!]]> + The currency that is used to store price information and exchange rates in. This currency is assumed, when no currency is set for a price information. +<b>Please note that the currencies are not converted, when changing this value. So changing the default currency after you already added price information, will result in wrong prices!</b> @@ -12757,7 +12757,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.misc.kicad_eda.category_depth.help - 0 to show more levels. Set to -1, to show all parts of Part-DB inside a sigle cnategory in KiCad.]]> + This value determines the depth of the category tree, that is visible inside KiCad. 0 means that only the top level categories are visible. Set to a value > 0 to show more levels. Set to -1, to show all parts of Part-DB inside a sigle cnategory in KiCad. @@ -12775,7 +12775,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.behavior.sidebar.items.help - + The menus which appear at the sidebar by default. Order of items can be changed via drag & drop. @@ -12823,7 +12823,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.behavior.table.parts_default_columns.help - + The columns to show by default in part tables. Order of items can be changed via drag & drop. @@ -12877,7 +12877,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.oemsecrets.sortMode.M - + Completeness & Manufacturer name @@ -13537,7 +13537,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.behavior.homepage.items.help - + The items to show at the homepage. Order can be changed via drag & drop. @@ -14251,7 +14251,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.system.localization.language_menu_entries.description - + The languages to show in the language drop-down menu. Order can be changed via drag & drop. Leave empty to show all available languages. @@ -14280,134 +14280,134 @@ You can do this in the provider info list. - + settings.misc.ipn_suggest.useDuplicateDescription.help When enabled, the part’s description is used to find existing parts with the same description and to determine the next available IPN by incrementing their numeric suffix for the suggestion list. - + settings.misc.ipn_suggest.regex.help - A PCRE-compatible regular expression every IPN has to fulfill. Leave empty to allow all everything as IPN. + A PCRE-compatible regular expression every IPN has to fulfill. Leave empty to allow all everything as IPN. - + user.labelp Users - + currency.labelp Currencies - + measurement_unit.labelp Measurement units - + attachment_type.labelp Attachment types - + label_profile.labelp Label profiles - + part_custom_state.labelp Custom part states - + group.labelp Groups - + settings.synonyms.type_synonym.type Type - + settings.synonyms.type_synonym.language Language - + settings.synonyms.type_synonym.translation_singular Translation Singular - + settings.synonyms.type_synonym.translation_plural Translation Plural - + settings.synonyms.type_synonym.add_entry Add entry - + settings.synonyms.type_synonym.remove_entry Remove entry - + settings.synonyms Synonyms - + settings.synonyms.help The synonyms systems allow overriding how Part-DB call certain things. This can be useful, especially if Part-DB is used in a different context than electronics. Please note that this system is currently experimental, and the synonyms defined here might not show up at all places. - + settings.synonyms.type_synonyms Type synonyms - + settings.synonyms.type_synonyms.help Type synonyms allow you to replace the labels of built-in data types. For example, you can rename "Footprint" to something else. - + {{part}} Parts - + log.element_edited.changed_fields.part_ipn_prefix IPN prefix - + part.labelp Parts From 6a5039326c5d64dfed65260e9a5fb4b4377fc3c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 12 Nov 2025 22:31:26 +0100 Subject: [PATCH 010/235] New translations validators.en.xlf (English) --- translations/validators.en.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/validators.en.xlf b/translations/validators.en.xlf index 86045227..30c50bec 100644 --- a/translations/validators.en.xlf +++ b/translations/validators.en.xlf @@ -366,7 +366,7 @@ - + settings.synonyms.type_synonyms.collection_type.duplicate There is already a translation defined for this type and language! From 819a8cc56d78453dc4278edc28a4f223d9bf1153 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 14:02:42 +0100 Subject: [PATCH 011/235] Fixed category field in part edit page not being correctly rendered --- src/Form/Type/StructuralEntityType.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Form/Type/StructuralEntityType.php b/src/Form/Type/StructuralEntityType.php index 1018eeeb..51eb21a1 100644 --- a/src/Form/Type/StructuralEntityType.php +++ b/src/Form/Type/StructuralEntityType.php @@ -110,8 +110,10 @@ class StructuralEntityType extends AbstractType //If no help text is explicitly set, we use the dto value as help text and show it as html $resolver->setDefault('help', fn(Options $options) => $this->dtoText($options['dto_value'])); $resolver->setDefault('help_html', fn(Options $options) => $options['dto_value'] !== null); + - $resolver->setDefault('attr', function (Options $options) { + //Normalize the attr to merge custom attributes + $resolver->setNormalizer('attr', function (Options $options, $value) { $tmp = [ 'data-controller' => $options['controller'], 'data-allow-add' => $options['allow_add'] ? 'true' : 'false', @@ -121,7 +123,7 @@ class StructuralEntityType extends AbstractType $tmp['data-empty-message'] = $options['empty_message']; } - return $tmp; + return array_merge($tmp, $value); }); } From 3459731ca825b5ba92f64c2957ab22dbabe473ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 14:16:54 +0100 Subject: [PATCH 012/235] Show plural translation for entity type labels in synonym settings --- src/Form/Settings/TypeSynonymRowType.php | 5 +++ translations/messages.en.xlf | 50 +++++++++++++++++++++++- 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/src/Form/Settings/TypeSynonymRowType.php b/src/Form/Settings/TypeSynonymRowType.php index 332db907..234a7691 100644 --- a/src/Form/Settings/TypeSynonymRowType.php +++ b/src/Form/Settings/TypeSynonymRowType.php @@ -32,6 +32,7 @@ use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Intl\Locales; use Symfony\Component\Validator\Constraints as Assert; +use Symfony\Contracts\Translation\TranslatorInterface; /** * A single translation row: data source + language + translations (singular/plural). @@ -50,6 +51,7 @@ class TypeSynonymRowType extends AbstractType public function __construct( private readonly LocalizationSettings $localizationSettings, + private readonly TranslatorInterface $translator, #[Autowire(param: 'partdb.locale_menu')] private readonly array $preferredLanguagesParam, ) { } @@ -64,6 +66,9 @@ class TypeSynonymRowType extends AbstractType 'constraints' => [ new Assert\NotBlank(), ], + 'choice_label' => function (ElementTypes $choice) { + return $this->translator->trans($choice->getDefaultLabelKey()) . ' (' . $this->translator->trans($choice->getDefaultPluralLabelKey()) . ')'; + }, 'row_attr' => ['class' => 'mb-0'], 'attr' => ['class' => 'form-select-sm'], 'preferred_choices' => self::PREFERRED_TYPES diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index db4370f4..77169792 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -3448,7 +3448,7 @@ Sub elements will be moved upwards.]]> group.label - Group: + Group @@ -14412,5 +14412,53 @@ Please note that this system is currently experimental, and the synonyms defined Parts + + + project_bom_entry.labelp + BOM entries + + + + + part_lot.labelp + Part lots + + + + + orderdetail.labelp + Order details + + + + + pricedetail.labelp + Price details + + + + + parameter.labelp + Parameters + + + + + part_association.labelp + Part associations + + + + + bulk_info_provider_import_job.labelp + Bulk info provider imports + + + + + bulk_info_provider_import_job_part.labelp + Bulk import job part + + From 84e35603b1b334a61f6e8f0d320292f06c0aa93a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 14:20:50 +0100 Subject: [PATCH 013/235] Made sidebar toggle button smaller --- assets/css/app/layout.css | 2 +- templates/base.html.twig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/css/app/layout.css b/assets/css/app/layout.css index 4be123a7..58808926 100644 --- a/assets/css/app/layout.css +++ b/assets/css/app/layout.css @@ -133,7 +133,7 @@ showing the sidebar (on devices with md or higher) */ #sidebar-toggle-button { position: fixed; - left: 3px; + left: 2px; bottom: 50%; } diff --git a/templates/base.html.twig b/templates/base.html.twig index 58cccec5..2db726ee 100644 --- a/templates/base.html.twig +++ b/templates/base.html.twig @@ -120,7 +120,7 @@ {# Must be outside of the sidebar or it will be hidden too #} From e513960401e97f86f8538f1d634352fd38a3e292 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 14:26:37 +0100 Subject: [PATCH 014/235] Updated dependencies --- composer.lock | 1025 +++++++++++++++++++++++++------------------------ yarn.lock | 126 +++--- 2 files changed, 584 insertions(+), 567 deletions(-) diff --git a/composer.lock b/composer.lock index d0142b5f..932aaa5e 100644 --- a/composer.lock +++ b/composer.lock @@ -968,21 +968,21 @@ }, { "name": "api-platform/doctrine-common", - "version": "v4.2.3", + "version": "v4.2.6", "source": { "type": "git", "url": "https://github.com/api-platform/doctrine-common.git", - "reference": "8acbed7c2768f7c15a5b030018132e454f895e55" + "reference": "84d9335ca30fbf0b20a83416bb54abe8ca4854b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/doctrine-common/zipball/8acbed7c2768f7c15a5b030018132e454f895e55", - "reference": "8acbed7c2768f7c15a5b030018132e454f895e55", + "url": "https://api.github.com/repos/api-platform/doctrine-common/zipball/84d9335ca30fbf0b20a83416bb54abe8ca4854b6", + "reference": "84d9335ca30fbf0b20a83416bb54abe8ca4854b6", "shasum": "" }, "require": { - "api-platform/metadata": "^4.1.11", - "api-platform/state": "^4.1.11", + "api-platform/metadata": "^4.2", + "api-platform/state": "^4.2.4", "doctrine/collections": "^2.1", "doctrine/common": "^3.2.2", "doctrine/persistence": "^3.2 || ^4.0", @@ -1052,28 +1052,28 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/doctrine-common/tree/v4.2.3" + "source": "https://github.com/api-platform/doctrine-common/tree/v4.2.6" }, - "time": "2025-08-27T12:34:14+00:00" + "time": "2025-11-13T15:51:59+00:00" }, { "name": "api-platform/doctrine-orm", - "version": "v4.2.3", + "version": "v4.2.6", "source": { "type": "git", "url": "https://github.com/api-platform/doctrine-orm.git", - "reference": "f30b580379ea16f6de3e27ecf8e474335af011f9" + "reference": "2ed31aa0b21e2bb5a7c35309d04268cdeb46a1ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/doctrine-orm/zipball/f30b580379ea16f6de3e27ecf8e474335af011f9", - "reference": "f30b580379ea16f6de3e27ecf8e474335af011f9", + "url": "https://api.github.com/repos/api-platform/doctrine-orm/zipball/2ed31aa0b21e2bb5a7c35309d04268cdeb46a1ee", + "reference": "2ed31aa0b21e2bb5a7c35309d04268cdeb46a1ee", "shasum": "" }, "require": { "api-platform/doctrine-common": "^4.2.0-alpha.3@alpha", - "api-platform/metadata": "^4.1.11", - "api-platform/state": "^4.1.11", + "api-platform/metadata": "^4.2", + "api-platform/state": "^4.2.4", "doctrine/orm": "^2.17 || ^3.0", "php": ">=8.2", "symfony/type-info": "^7.3" @@ -1090,7 +1090,7 @@ "symfony/property-info": "^6.4 || ^7.1", "symfony/serializer": "^6.4 || ^7.0", "symfony/uid": "^6.4 || ^7.0", - "symfony/validator": "^6.4 || ^7.0", + "symfony/validator": "^6.4.11 || ^7.0", "symfony/yaml": "^6.4 || ^7.0" }, "type": "library", @@ -1139,26 +1139,26 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/doctrine-orm/tree/v4.2.3" + "source": "https://github.com/api-platform/doctrine-orm/tree/v4.2.6" }, - "time": "2025-10-31T11:51:24+00:00" + "time": "2025-11-13T16:02:47+00:00" }, { "name": "api-platform/documentation", - "version": "v4.2.3", + "version": "v4.2.6", "source": { "type": "git", "url": "https://github.com/api-platform/documentation.git", - "reference": "c5a54336d8c51271aa5d54e57147cdee7162ab3a" + "reference": "5181186d9d0da3a2aaa449747af55bee1759969b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/documentation/zipball/c5a54336d8c51271aa5d54e57147cdee7162ab3a", - "reference": "c5a54336d8c51271aa5d54e57147cdee7162ab3a", + "url": "https://api.github.com/repos/api-platform/documentation/zipball/5181186d9d0da3a2aaa449747af55bee1759969b", + "reference": "5181186d9d0da3a2aaa449747af55bee1759969b", "shasum": "" }, "require": { - "api-platform/metadata": "^4.1.11", + "api-platform/metadata": "^4.2", "php": ">=8.2" }, "require-dev": { @@ -1202,29 +1202,29 @@ ], "description": "API Platform documentation controller.", "support": { - "source": "https://github.com/api-platform/documentation/tree/v4.2.3" + "source": "https://github.com/api-platform/documentation/tree/v4.2.6" }, - "time": "2025-08-19T08:04:29+00:00" + "time": "2025-10-31T16:12:05+00:00" }, { "name": "api-platform/http-cache", - "version": "v4.2.3", + "version": "v4.2.6", "source": { "type": "git", "url": "https://github.com/api-platform/http-cache.git", - "reference": "aef434b026b861ea451d814c86838b5470b8bfb4" + "reference": "05000f1faf8e3b970665b9edd1d1816d2e6b0958" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/http-cache/zipball/aef434b026b861ea451d814c86838b5470b8bfb4", - "reference": "aef434b026b861ea451d814c86838b5470b8bfb4", + "url": "https://api.github.com/repos/api-platform/http-cache/zipball/05000f1faf8e3b970665b9edd1d1816d2e6b0958", + "reference": "05000f1faf8e3b970665b9edd1d1816d2e6b0958", "shasum": "" }, "require": { - "api-platform/metadata": "^4.1.11", - "api-platform/state": "^4.1.11", + "api-platform/metadata": "^4.2", + "api-platform/state": "^4.2.4", "php": ">=8.2", - "symfony/http-foundation": "^6.4 || ^7.0" + "symfony/http-foundation": "^6.4.14 || ^7.0" }, "require-dev": { "guzzlehttp/guzzle": "^6.0 || ^7.0", @@ -1282,39 +1282,39 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/http-cache/tree/v4.2.3" + "source": "https://github.com/api-platform/http-cache/tree/v4.2.6" }, - "time": "2025-09-16T12:51:08+00:00" + "time": "2025-11-13T16:02:47+00:00" }, { "name": "api-platform/hydra", - "version": "v4.2.3", + "version": "v4.2.6", "source": { "type": "git", "url": "https://github.com/api-platform/hydra.git", - "reference": "3ffe1232babfbba29ffbf52af1080aef5a015c65" + "reference": "59672d9b2bd2c9ddc679f32c60459c17b0a803c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/hydra/zipball/3ffe1232babfbba29ffbf52af1080aef5a015c65", - "reference": "3ffe1232babfbba29ffbf52af1080aef5a015c65", + "url": "https://api.github.com/repos/api-platform/hydra/zipball/59672d9b2bd2c9ddc679f32c60459c17b0a803c3", + "reference": "59672d9b2bd2c9ddc679f32c60459c17b0a803c3", "shasum": "" }, "require": { - "api-platform/documentation": "^4.1", - "api-platform/json-schema": "^4.2@beta", - "api-platform/jsonld": "^4.1", - "api-platform/metadata": "^4.2@beta", - "api-platform/serializer": "^4.1", - "api-platform/state": "^4.1.8", + "api-platform/documentation": "^4.2", + "api-platform/json-schema": "^4.2", + "api-platform/jsonld": "^4.2", + "api-platform/metadata": "^4.2", + "api-platform/serializer": "^4.2.4", + "api-platform/state": "^4.2.4", "php": ">=8.2", "symfony/type-info": "^7.3", "symfony/web-link": "^6.4 || ^7.1" }, "require-dev": { - "api-platform/doctrine-common": "^4.1", - "api-platform/doctrine-odm": "^4.1", - "api-platform/doctrine-orm": "^4.1", + "api-platform/doctrine-common": "^4.2", + "api-platform/doctrine-odm": "^4.2", + "api-platform/doctrine-orm": "^4.2", "phpspec/prophecy": "^1.19", "phpspec/prophecy-phpunit": "^2.2", "phpunit/phpunit": "11.5.x-dev" @@ -1369,33 +1369,33 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/hydra/tree/v4.2.3" + "source": "https://github.com/api-platform/hydra/tree/v4.2.6" }, - "time": "2025-10-24T09:59:50+00:00" + "time": "2025-11-13T15:51:59+00:00" }, { "name": "api-platform/json-api", - "version": "v4.2.3", + "version": "v4.2.6", "source": { "type": "git", "url": "https://github.com/api-platform/json-api.git", - "reference": "e8da698d55fb1702b25c63d7c821d1760159912e" + "reference": "eaef5f0bde86b37b40969762d2534243f929fea8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/json-api/zipball/e8da698d55fb1702b25c63d7c821d1760159912e", - "reference": "e8da698d55fb1702b25c63d7c821d1760159912e", + "url": "https://api.github.com/repos/api-platform/json-api/zipball/eaef5f0bde86b37b40969762d2534243f929fea8", + "reference": "eaef5f0bde86b37b40969762d2534243f929fea8", "shasum": "" }, "require": { - "api-platform/documentation": "^4.1.11", - "api-platform/json-schema": "^4.2@beta", - "api-platform/metadata": "^4.2@beta", - "api-platform/serializer": "^4.1.11", - "api-platform/state": "^4.1.11", + "api-platform/documentation": "^4.2", + "api-platform/json-schema": "^4.2", + "api-platform/metadata": "^4.2", + "api-platform/serializer": "^4.2.4", + "api-platform/state": "^4.2.4", "php": ">=8.2", "symfony/error-handler": "^6.4 || ^7.0", - "symfony/http-foundation": "^6.4 || ^7.0", + "symfony/http-foundation": "^6.4.14 || ^7.0", "symfony/type-info": "^7.3" }, "require-dev": { @@ -1451,22 +1451,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/json-api/tree/v4.2.3" + "source": "https://github.com/api-platform/json-api/tree/v4.2.6" }, - "time": "2025-09-16T12:49:22+00:00" + "time": "2025-11-13T16:02:47+00:00" }, { "name": "api-platform/json-schema", - "version": "v4.2.3", + "version": "v4.2.6", "source": { "type": "git", "url": "https://github.com/api-platform/json-schema.git", - "reference": "aa8fe10d527e0ecb946ee4b873cfa97e02fb13c3" + "reference": "fe68500b06d4a3d1f022119a7a9b99b904c5882e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/json-schema/zipball/aa8fe10d527e0ecb946ee4b873cfa97e02fb13c3", - "reference": "aa8fe10d527e0ecb946ee4b873cfa97e02fb13c3", + "url": "https://api.github.com/repos/api-platform/json-schema/zipball/fe68500b06d4a3d1f022119a7a9b99b904c5882e", + "reference": "fe68500b06d4a3d1f022119a7a9b99b904c5882e", "shasum": "" }, "require": { @@ -1532,28 +1532,28 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/json-schema/tree/v4.2.3" + "source": "https://github.com/api-platform/json-schema/tree/v4.2.6" }, - "time": "2025-10-31T08:51:19+00:00" + "time": "2025-11-07T11:21:39+00:00" }, { "name": "api-platform/jsonld", - "version": "v4.2.3", + "version": "v4.2.6", "source": { "type": "git", "url": "https://github.com/api-platform/jsonld.git", - "reference": "774b460273177983c52540a479ea9e9f940d7a1b" + "reference": "083e9fcdb0b81dbf1045e489e6d6149b4ee11e54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/jsonld/zipball/774b460273177983c52540a479ea9e9f940d7a1b", - "reference": "774b460273177983c52540a479ea9e9f940d7a1b", + "url": "https://api.github.com/repos/api-platform/jsonld/zipball/083e9fcdb0b81dbf1045e489e6d6149b4ee11e54", + "reference": "083e9fcdb0b81dbf1045e489e6d6149b4ee11e54", "shasum": "" }, "require": { - "api-platform/metadata": "^4.1.11", - "api-platform/serializer": "^4.1.11", - "api-platform/state": "^4.1.11", + "api-platform/metadata": "^4.2", + "api-platform/serializer": "^4.2.4", + "api-platform/state": "^4.2.4", "php": ">=8.2" }, "require-dev": { @@ -1612,22 +1612,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/jsonld/tree/v4.2.3" + "source": "https://github.com/api-platform/jsonld/tree/v4.2.6" }, - "time": "2025-09-25T19:30:56+00:00" + "time": "2025-11-13T15:51:59+00:00" }, { "name": "api-platform/metadata", - "version": "v4.2.3", + "version": "v4.2.6", "source": { "type": "git", "url": "https://github.com/api-platform/metadata.git", - "reference": "4a7676a1787b71730e1bcce83fc8987df745cb2c" + "reference": "e785a782e033e2a080bd7d545916f0623c6a8546" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/metadata/zipball/4a7676a1787b71730e1bcce83fc8987df745cb2c", - "reference": "4a7676a1787b71730e1bcce83fc8987df745cb2c", + "url": "https://api.github.com/repos/api-platform/metadata/zipball/e785a782e033e2a080bd7d545916f0623c6a8546", + "reference": "e785a782e033e2a080bd7d545916f0623c6a8546", "shasum": "" }, "require": { @@ -1640,9 +1640,9 @@ "symfony/type-info": "^7.3" }, "require-dev": { - "api-platform/json-schema": "^4.1.11", - "api-platform/openapi": "^4.1.11", - "api-platform/state": "^4.1.11", + "api-platform/json-schema": "^4.2", + "api-platform/openapi": "^4.2", + "api-platform/state": "^4.2.4", "phpspec/prophecy-phpunit": "^2.2", "phpstan/phpdoc-parser": "^1.29 || ^2.0", "phpunit/phpunit": "11.5.x-dev", @@ -1710,28 +1710,28 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/metadata/tree/v4.2.3" + "source": "https://github.com/api-platform/metadata/tree/v4.2.6" }, - "time": "2025-10-31T08:55:46+00:00" + "time": "2025-11-17T17:31:39+00:00" }, { "name": "api-platform/openapi", - "version": "v4.2.3", + "version": "v4.2.6", "source": { "type": "git", "url": "https://github.com/api-platform/openapi.git", - "reference": "2545f2be06eed0f9a121d631b8f1db22212a7826" + "reference": "48b0b697619d9cab6b2c6bce59b1fd42f12c4d16" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/openapi/zipball/2545f2be06eed0f9a121d631b8f1db22212a7826", - "reference": "2545f2be06eed0f9a121d631b8f1db22212a7826", + "url": "https://api.github.com/repos/api-platform/openapi/zipball/48b0b697619d9cab6b2c6bce59b1fd42f12c4d16", + "reference": "48b0b697619d9cab6b2c6bce59b1fd42f12c4d16", "shasum": "" }, "require": { - "api-platform/json-schema": "^4.2@beta", - "api-platform/metadata": "^4.2@beta", - "api-platform/state": "^4.2@beta", + "api-platform/json-schema": "^4.2", + "api-platform/metadata": "^4.2", + "api-platform/state": "^4.2.4", "php": ">=8.2", "symfony/console": "^6.4 || ^7.0", "symfony/filesystem": "^6.4 || ^7.0", @@ -1740,9 +1740,9 @@ "symfony/type-info": "^7.3" }, "require-dev": { - "api-platform/doctrine-common": "^4.1", - "api-platform/doctrine-odm": "^4.1", - "api-platform/doctrine-orm": "^4.1", + "api-platform/doctrine-common": "^4.2", + "api-platform/doctrine-odm": "^4.2", + "api-platform/doctrine-orm": "^4.2", "phpspec/prophecy-phpunit": "^2.2", "phpunit/phpunit": "11.5.x-dev", "symfony/type-info": "^7.3" @@ -1800,39 +1800,39 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/openapi/tree/v4.2.3" + "source": "https://github.com/api-platform/openapi/tree/v4.2.6" }, - "time": "2025-09-30T12:06:50+00:00" + "time": "2025-11-13T15:51:59+00:00" }, { "name": "api-platform/serializer", - "version": "v4.2.3", + "version": "v4.2.6", "source": { "type": "git", "url": "https://github.com/api-platform/serializer.git", - "reference": "50255df8751ffa81aea0eb0455bd248e9c8c2aa7" + "reference": "90939274d2cf90c40bdab8d4b6243d18d2e71434" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/serializer/zipball/50255df8751ffa81aea0eb0455bd248e9c8c2aa7", - "reference": "50255df8751ffa81aea0eb0455bd248e9c8c2aa7", + "url": "https://api.github.com/repos/api-platform/serializer/zipball/90939274d2cf90c40bdab8d4b6243d18d2e71434", + "reference": "90939274d2cf90c40bdab8d4b6243d18d2e71434", "shasum": "" }, "require": { - "api-platform/metadata": "^4.2.0", - "api-platform/state": "^4.1.11", + "api-platform/metadata": "^4.2", + "api-platform/state": "^4.2.4", "php": ">=8.2", "symfony/property-access": "^6.4 || ^7.0", "symfony/property-info": "^6.4 || ^7.1", "symfony/serializer": "^6.4 || ^7.0", - "symfony/validator": "^6.4 || ^7.0" + "symfony/validator": "^6.4.11 || ^7.0" }, "require-dev": { - "api-platform/doctrine-common": "^4.1", - "api-platform/doctrine-odm": "^4.1", - "api-platform/doctrine-orm": "^4.1", - "api-platform/json-schema": "^4.1", - "api-platform/openapi": "^4.1", + "api-platform/doctrine-common": "^4.2", + "api-platform/doctrine-odm": "^4.2", + "api-platform/doctrine-orm": "^4.2", + "api-platform/json-schema": "^4.2", + "api-platform/openapi": "^4.2", "doctrine/collections": "^2.1", "phpspec/prophecy-phpunit": "^2.2", "phpunit/phpunit": "11.5.x-dev", @@ -1893,26 +1893,26 @@ "serializer" ], "support": { - "source": "https://github.com/api-platform/serializer/tree/v4.2.3" + "source": "https://github.com/api-platform/serializer/tree/v4.2.6" }, - "time": "2025-10-31T14:00:01+00:00" + "time": "2025-11-13T16:02:47+00:00" }, { "name": "api-platform/state", - "version": "v4.2.3", + "version": "v4.2.6", "source": { "type": "git", "url": "https://github.com/api-platform/state.git", - "reference": "5a74ea2ca36d0651bf637b0da6c10db4383172bf" + "reference": "21a97e0ef1f906f49221480ae187e906120b8dc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/state/zipball/5a74ea2ca36d0651bf637b0da6c10db4383172bf", - "reference": "5a74ea2ca36d0651bf637b0da6c10db4383172bf", + "url": "https://api.github.com/repos/api-platform/state/zipball/21a97e0ef1f906f49221480ae187e906120b8dc5", + "reference": "21a97e0ef1f906f49221480ae187e906120b8dc5", "shasum": "" }, "require": { - "api-platform/metadata": "^4.1.18", + "api-platform/metadata": "^4.2.3", "php": ">=8.2", "psr/container": "^1.0 || ^2.0", "symfony/http-kernel": "^6.4 || ^7.0", @@ -1920,12 +1920,12 @@ "symfony/translation-contracts": "^3.0" }, "require-dev": { - "api-platform/serializer": "^4.1", - "api-platform/validator": "^4.1", + "api-platform/serializer": "^4.2.4", + "api-platform/validator": "^4.2.4", "phpunit/phpunit": "11.5.x-dev", - "symfony/http-foundation": "^6.4 || ^7.0", + "symfony/http-foundation": "^6.4.14 || ^7.0", "symfony/object-mapper": "^7.3", - "symfony/type-info": "^7.3", + "symfony/type-info": "^7.3 || 7.4.x-dev", "symfony/web-link": "^6.4 || ^7.1", "willdurand/negotiation": "^3.1" }, @@ -1989,35 +1989,35 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/state/tree/v4.2.3" + "source": "https://github.com/api-platform/state/tree/v4.2.6" }, - "time": "2025-10-31T10:04:25+00:00" + "time": "2025-11-17T17:31:39+00:00" }, { "name": "api-platform/symfony", - "version": "v4.2.3", + "version": "v4.2.6", "source": { "type": "git", "url": "https://github.com/api-platform/symfony.git", - "reference": "a07233f9a1cb20dcb141056ac767c28c62c74269" + "reference": "60f80b128b564c276ccfde5ee795566409cc8c94" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/symfony/zipball/a07233f9a1cb20dcb141056ac767c28c62c74269", - "reference": "a07233f9a1cb20dcb141056ac767c28c62c74269", + "url": "https://api.github.com/repos/api-platform/symfony/zipball/60f80b128b564c276ccfde5ee795566409cc8c94", + "reference": "60f80b128b564c276ccfde5ee795566409cc8c94", "shasum": "" }, "require": { - "api-platform/documentation": "^4.1.11", - "api-platform/http-cache": "^4.1.11", - "api-platform/hydra": "^4.1.11", - "api-platform/json-schema": "^4.1.11", - "api-platform/jsonld": "^4.1.11", - "api-platform/metadata": "^4.2@beta", - "api-platform/openapi": "^4.1.11", - "api-platform/serializer": "^4.1.11", - "api-platform/state": "^4.2@beta", - "api-platform/validator": "^4.1.11", + "api-platform/documentation": "^4.2.3", + "api-platform/http-cache": "^4.2.3", + "api-platform/hydra": "^4.2.3", + "api-platform/json-schema": "^4.2.3", + "api-platform/jsonld": "^4.2.3", + "api-platform/metadata": "^4.2.3", + "api-platform/openapi": "^4.2.3", + "api-platform/serializer": "^4.2.4", + "api-platform/state": "^4.2.4", + "api-platform/validator": "^4.2.3", "php": ">=8.2", "symfony/asset": "^6.4 || ^7.0", "symfony/finder": "^6.4 || ^7.0", @@ -2028,12 +2028,11 @@ "willdurand/negotiation": "^3.1" }, "require-dev": { - "api-platform/doctrine-common": "^4.1", - "api-platform/doctrine-odm": "^4.1", - "api-platform/doctrine-orm": "^4.1", - "api-platform/elasticsearch": "^4.1", - "api-platform/graphql": "^4.1", - "api-platform/parameter-validator": "^3.1", + "api-platform/doctrine-common": "^4.2.3", + "api-platform/doctrine-odm": "^4.2.3", + "api-platform/doctrine-orm": "^4.2.3", + "api-platform/elasticsearch": "^4.2.3", + "api-platform/graphql": "^4.2.3", "phpspec/prophecy-phpunit": "^2.2", "phpunit/phpunit": "11.5.x-dev", "symfony/expression-language": "^6.4 || ^7.0", @@ -2042,7 +2041,7 @@ "symfony/object-mapper": "^7.0", "symfony/routing": "^6.4 || ^7.0", "symfony/type-info": "^7.3", - "symfony/validator": "^6.4 || ^7.0", + "symfony/validator": "^6.4.11 || ^7.0", "webonyx/graphql-php": "^15.0" }, "suggest": { @@ -2075,9 +2074,6 @@ "require": "^6.4 || ^7.0" }, "branch-alias": { - "dev-3.4": "3.4.x-dev", - "dev-4.1": "4.1.x-dev", - "dev-4.2": "4.2.x-dev", "dev-main": "4.3.x-dev" } }, @@ -2119,31 +2115,31 @@ "symfony" ], "support": { - "source": "https://github.com/api-platform/symfony/tree/v4.2.3" + "source": "https://github.com/api-platform/symfony/tree/v4.2.6" }, - "time": "2025-10-31T08:55:46+00:00" + "time": "2025-11-17T17:31:39+00:00" }, { "name": "api-platform/validator", - "version": "v4.2.3", + "version": "v4.2.6", "source": { "type": "git", "url": "https://github.com/api-platform/validator.git", - "reference": "bb8697d3676f9034865dfbf96df9e55734aecad5" + "reference": "bdeaa42a40cbac7cecb677566e940c3d75b7001a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/validator/zipball/bb8697d3676f9034865dfbf96df9e55734aecad5", - "reference": "bb8697d3676f9034865dfbf96df9e55734aecad5", + "url": "https://api.github.com/repos/api-platform/validator/zipball/bdeaa42a40cbac7cecb677566e940c3d75b7001a", + "reference": "bdeaa42a40cbac7cecb677566e940c3d75b7001a", "shasum": "" }, "require": { - "api-platform/metadata": "^4.1.11", + "api-platform/metadata": "^4.2", "php": ">=8.2", "symfony/http-kernel": "^6.4 || ^7.1", "symfony/serializer": "^6.4 || ^7.1", "symfony/type-info": "^7.3", - "symfony/validator": "^6.4 || ^7.1", + "symfony/validator": "^6.4.11 || ^7.1", "symfony/web-link": "^6.4 || ^7.1" }, "require-dev": { @@ -2195,9 +2191,9 @@ "validator" ], "support": { - "source": "https://github.com/api-platform/validator/tree/v4.2.3" + "source": "https://github.com/api-platform/validator/tree/v4.2.6" }, - "time": "2025-10-31T11:51:24+00:00" + "time": "2025-11-13T16:02:47+00:00" }, { "name": "beberlei/assert", @@ -2993,16 +2989,16 @@ }, { "name": "doctrine/dbal", - "version": "4.3.4", + "version": "4.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "1a2fbd0e93b8dec7c3d1ac2b6396a7b929b130dc" + "reference": "e8c5163fbec0f34e357431bd1e5fc4056cdf4fdc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/1a2fbd0e93b8dec7c3d1ac2b6396a7b929b130dc", - "reference": "1a2fbd0e93b8dec7c3d1ac2b6396a7b929b130dc", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/e8c5163fbec0f34e357431bd1e5fc4056cdf4fdc", + "reference": "e8c5163fbec0f34e357431bd1e5fc4056cdf4fdc", "shasum": "" }, "require": { @@ -3021,8 +3017,8 @@ "phpunit/phpunit": "11.5.23", "slevomat/coding-standard": "8.24.0", "squizlabs/php_codesniffer": "4.0.0", - "symfony/cache": "^6.3.8|^7.0", - "symfony/console": "^5.4|^6.3|^7.0" + "symfony/cache": "^6.3.8|^7.0|^8.0", + "symfony/console": "^5.4|^6.3|^7.0|^8.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -3079,7 +3075,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/4.3.4" + "source": "https://github.com/doctrine/dbal/tree/4.4.0" }, "funding": [ { @@ -3095,7 +3091,7 @@ "type": "tidelift" } ], - "time": "2025-10-09T09:11:36+00:00" + "time": "2025-11-29T12:17:09+00:00" }, { "name": "doctrine/deprecations", @@ -3268,16 +3264,16 @@ }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.6.0", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "49ecc564568d7da101779112579e78b677fbc94a" + "reference": "1e380c6dd8ac8488217f39cff6b77e367f1a644b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/49ecc564568d7da101779112579e78b677fbc94a", - "reference": "49ecc564568d7da101779112579e78b677fbc94a", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/1e380c6dd8ac8488217f39cff6b77e367f1a644b", + "reference": "1e380c6dd8ac8488217f39cff6b77e367f1a644b", "shasum": "" }, "require": { @@ -3333,7 +3329,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.6.0" + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.7.0" }, "funding": [ { @@ -3349,7 +3345,7 @@ "type": "tidelift" } ], - "time": "2025-11-07T19:40:03+00:00" + "time": "2025-11-15T19:02:59+00:00" }, { "name": "doctrine/event-manager", @@ -3681,16 +3677,16 @@ }, { "name": "doctrine/migrations", - "version": "3.9.4", + "version": "3.9.5", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "1b88fcb812f2cd6e77c83d16db60e3cf1e35c66c" + "reference": "1b823afbc40f932dae8272574faee53f2755eac5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/1b88fcb812f2cd6e77c83d16db60e3cf1e35c66c", - "reference": "1b88fcb812f2cd6e77c83d16db60e3cf1e35c66c", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/1b823afbc40f932dae8272574faee53f2755eac5", + "reference": "1b823afbc40f932dae8272574faee53f2755eac5", "shasum": "" }, "require": { @@ -3700,15 +3696,15 @@ "doctrine/event-manager": "^1.2 || ^2.0", "php": "^8.1", "psr/log": "^1.1.3 || ^2 || ^3", - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", - "symfony/var-exporter": "^6.2 || ^7.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/var-exporter": "^6.2 || ^7.0 || ^8.0" }, "conflict": { "doctrine/orm": "<2.12 || >=4" }, "require-dev": { - "doctrine/coding-standard": "^13", + "doctrine/coding-standard": "^14", "doctrine/orm": "^2.13 || ^3", "doctrine/persistence": "^2 || ^3 || ^4", "doctrine/sql-formatter": "^1.0", @@ -3720,9 +3716,9 @@ "phpstan/phpstan-strict-rules": "^2", "phpstan/phpstan-symfony": "^2", "phpunit/phpunit": "^10.3 || ^11.0 || ^12.0", - "symfony/cache": "^5.4 || ^6.0 || ^7.0", - "symfony/process": "^5.4 || ^6.0 || ^7.0", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + "symfony/cache": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/process": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0 || ^8.0" }, "suggest": { "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", @@ -3764,7 +3760,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.9.4" + "source": "https://github.com/doctrine/migrations/tree/3.9.5" }, "funding": [ { @@ -3780,20 +3776,20 @@ "type": "tidelift" } ], - "time": "2025-08-19T06:41:07+00:00" + "time": "2025-11-20T11:15:36+00:00" }, { "name": "doctrine/orm", - "version": "3.5.7", + "version": "3.5.8", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "f18de9d569f00ed6eb9dac4b33c7844d705d17da" + "reference": "78dd074266e8b47a83bcf60ab5fe06c91a639168" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/f18de9d569f00ed6eb9dac4b33c7844d705d17da", - "reference": "f18de9d569f00ed6eb9dac4b33c7844d705d17da", + "url": "https://api.github.com/repos/doctrine/orm/zipball/78dd074266e8b47a83bcf60ab5fe06c91a639168", + "reference": "78dd074266e8b47a83bcf60ab5fe06c91a639168", "shasum": "" }, "require": { @@ -3809,19 +3805,18 @@ "ext-ctype": "*", "php": "^8.1", "psr/cache": "^1 || ^2 || ^3", - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/var-exporter": "^6.3.9 || ^7.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/var-exporter": "^6.3.9 || ^7.0 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^14.0", "phpbench/phpbench": "^1.0", - "phpdocumentor/guides-cli": "^1.4", "phpstan/extension-installer": "^1.4", "phpstan/phpstan": "2.1.23", "phpstan/phpstan-deprecation-rules": "^2", "phpunit/phpunit": "^10.5.0 || ^11.5", "psr/log": "^1 || ^2 || ^3", - "symfony/cache": "^5.4 || ^6.2 || ^7.0" + "symfony/cache": "^5.4 || ^6.2 || ^7.0 || ^8.0" }, "suggest": { "ext-dom": "Provides support for XSD validation for XML mapping files", @@ -3867,9 +3862,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/3.5.7" + "source": "https://github.com/doctrine/orm/tree/3.5.8" }, - "time": "2025-11-11T18:27:40+00:00" + "time": "2025-11-29T23:11:02+00:00" }, { "name": "doctrine/persistence", @@ -5380,31 +5375,32 @@ }, { "name": "knpuniversity/oauth2-client-bundle", - "version": "v2.19.0", + "version": "v2.20.0", "source": { "type": "git", "url": "https://github.com/knpuniversity/oauth2-client-bundle.git", - "reference": "cd1cb6945a46df81be6e94944872546ca4bf335c" + "reference": "cee929516df679473b42765ed3d50c5aa7e9a837" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/knpuniversity/oauth2-client-bundle/zipball/cd1cb6945a46df81be6e94944872546ca4bf335c", - "reference": "cd1cb6945a46df81be6e94944872546ca4bf335c", + "url": "https://api.github.com/repos/knpuniversity/oauth2-client-bundle/zipball/cee929516df679473b42765ed3d50c5aa7e9a837", + "reference": "cee929516df679473b42765ed3d50c5aa7e9a837", "shasum": "" }, "require": { "league/oauth2-client": "^2.0", "php": ">=8.1", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/framework-bundle": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/routing": "^5.4|^6.0|^7.0" + "symfony/dependency-injection": "^6.4|^7.3|^8.0", + "symfony/framework-bundle": "^6.4|^7.3|^8.0", + "symfony/http-foundation": "^6.4|^7.3|^8.0", + "symfony/routing": "^6.4|^7.3|^8.0", + "symfony/security-core": "^6.4|^7.3|^8.0", + "symfony/security-http": "^6.4|^7.3|^8.0" }, "require-dev": { "league/oauth2-facebook": "^1.1|^2.0", - "symfony/phpunit-bridge": "^5.4|^6.0|^7.0", - "symfony/security-guard": "^5.4", - "symfony/yaml": "^5.4|^6.0|^7.0" + "symfony/phpunit-bridge": "^7.3", + "symfony/yaml": "^6.4|^7.3|^8.0" }, "suggest": { "symfony/security-guard": "For integration with Symfony's Guard Security layer" @@ -5433,9 +5429,9 @@ ], "support": { "issues": "https://github.com/knpuniversity/oauth2-client-bundle/issues", - "source": "https://github.com/knpuniversity/oauth2-client-bundle/tree/v2.19.0" + "source": "https://github.com/knpuniversity/oauth2-client-bundle/tree/v2.20.0" }, - "time": "2025-09-17T15:00:36+00:00" + "time": "2025-11-07T10:44:56+00:00" }, { "name": "lcobucci/clock", @@ -5576,16 +5572,16 @@ }, { "name": "league/commonmark", - "version": "2.7.1", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "10732241927d3971d28e7ea7b5712721fa2296ca" + "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/10732241927d3971d28e7ea7b5712721fa2296ca", - "reference": "10732241927d3971d28e7ea7b5712721fa2296ca", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/4efa10c1e56488e658d10adf7b7b7dcd19940bfb", + "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb", "shasum": "" }, "require": { @@ -5622,7 +5618,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.8-dev" + "dev-main": "2.9-dev" } }, "autoload": { @@ -5679,7 +5675,7 @@ "type": "tidelift" } ], - "time": "2025-07-20T12:47:49+00:00" + "time": "2025-11-26T21:48:24+00:00" }, { "name": "league/config", @@ -5945,22 +5941,22 @@ }, { "name": "league/oauth2-client", - "version": "2.8.1", + "version": "2.9.0", "source": { "type": "git", "url": "https://github.com/thephpleague/oauth2-client.git", - "reference": "9df2924ca644736c835fc60466a3a60390d334f9" + "reference": "26e8c5da4f3d78cede7021e09b1330a0fc093d5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth2-client/zipball/9df2924ca644736c835fc60466a3a60390d334f9", - "reference": "9df2924ca644736c835fc60466a3a60390d334f9", + "url": "https://api.github.com/repos/thephpleague/oauth2-client/zipball/26e8c5da4f3d78cede7021e09b1330a0fc093d5e", + "reference": "26e8c5da4f3d78cede7021e09b1330a0fc093d5e", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", - "php": "^7.1 || >=8.0.0 <8.5.0" + "php": "^7.1 || >=8.0.0 <8.6.0" }, "require-dev": { "mockery/mockery": "^1.3.5", @@ -6004,39 +6000,44 @@ ], "support": { "issues": "https://github.com/thephpleague/oauth2-client/issues", - "source": "https://github.com/thephpleague/oauth2-client/tree/2.8.1" + "source": "https://github.com/thephpleague/oauth2-client/tree/2.9.0" }, - "time": "2025-02-26T04:37:30+00:00" + "time": "2025-11-25T22:17:17+00:00" }, { "name": "league/uri", - "version": "7.5.1", + "version": "7.6.0", "source": { "type": "git", "url": "https://github.com/thephpleague/uri.git", - "reference": "81fb5145d2644324614cc532b28efd0215bda430" + "reference": "f625804987a0a9112d954f9209d91fec52182344" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri/zipball/81fb5145d2644324614cc532b28efd0215bda430", - "reference": "81fb5145d2644324614cc532b28efd0215bda430", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/f625804987a0a9112d954f9209d91fec52182344", + "reference": "f625804987a0a9112d954f9209d91fec52182344", "shasum": "" }, "require": { - "league/uri-interfaces": "^7.5", - "php": "^8.1" + "league/uri-interfaces": "^7.6", + "php": "^8.1", + "psr/http-factory": "^1" }, "conflict": { "league/uri-schemes": "^1.0" }, "suggest": { "ext-bcmath": "to improve IPV4 host parsing", + "ext-dom": "to convert the URI into an HTML anchor tag", "ext-fileinfo": "to create Data URI from file contennts", "ext-gmp": "to improve IPV4 host parsing", "ext-intl": "to handle IDN host with the best performance", + "ext-uri": "to use the PHP native URI class", "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", "league/uri-components": "Needed to easily manipulate URI objects components", + "league/uri-polyfill": "Needed to backport the PHP URI extension for older versions of PHP", "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle WHATWG URL", "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" }, "type": "library", @@ -6064,6 +6065,7 @@ "description": "URI manipulation library", "homepage": "https://uri.thephpleague.com", "keywords": [ + "URN", "data-uri", "file-uri", "ftp", @@ -6076,9 +6078,11 @@ "psr-7", "query-string", "querystring", + "rfc2141", "rfc3986", "rfc3987", "rfc6570", + "rfc8141", "uri", "uri-template", "url", @@ -6088,7 +6092,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri/tree/7.5.1" + "source": "https://github.com/thephpleague/uri/tree/7.6.0" }, "funding": [ { @@ -6096,34 +6100,37 @@ "type": "github" } ], - "time": "2024-12-08T08:40:02+00:00" + "time": "2025-11-18T12:17:23+00:00" }, { "name": "league/uri-components", - "version": "7.5.1", + "version": "7.6.0", "source": { "type": "git", "url": "https://github.com/thephpleague/uri-components.git", - "reference": "4aabf0e2f2f9421ffcacab35be33e4fb5e63c44f" + "reference": "ffa1215dbee72ee4b7bc08d983d25293812456c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri-components/zipball/4aabf0e2f2f9421ffcacab35be33e4fb5e63c44f", - "reference": "4aabf0e2f2f9421ffcacab35be33e4fb5e63c44f", + "url": "https://api.github.com/repos/thephpleague/uri-components/zipball/ffa1215dbee72ee4b7bc08d983d25293812456c2", + "reference": "ffa1215dbee72ee4b7bc08d983d25293812456c2", "shasum": "" }, "require": { - "league/uri": "^7.5", + "league/uri": "^7.6", "php": "^8.1" }, "suggest": { + "bakame/aide-uri": "A polyfill for PHP8.1 until PHP8.4 to add support to PHP Native URI parser", "ext-bcmath": "to improve IPV4 host parsing", "ext-fileinfo": "to create Data URI from file contennts", "ext-gmp": "to improve IPV4 host parsing", "ext-intl": "to handle IDN host with the best performance", "ext-mbstring": "to use the sorting algorithm of URLSearchParams", "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", + "league/uri-polyfill": "Needed to backport the PHP URI extension for older versions of PHP", "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle WHATWG URL", "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" }, "type": "library", @@ -6170,7 +6177,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri-components/tree/7.5.1" + "source": "https://github.com/thephpleague/uri-components/tree/7.6.0" }, "funding": [ { @@ -6178,26 +6185,25 @@ "type": "github" } ], - "time": "2024-12-08T08:40:02+00:00" + "time": "2025-11-18T12:17:23+00:00" }, { "name": "league/uri-interfaces", - "version": "7.5.0", + "version": "7.6.0", "source": { "type": "git", "url": "https://github.com/thephpleague/uri-interfaces.git", - "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742" + "reference": "ccbfb51c0445298e7e0b7f4481b942f589665368" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", - "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/ccbfb51c0445298e7e0b7f4481b942f589665368", + "reference": "ccbfb51c0445298e7e0b7f4481b942f589665368", "shasum": "" }, "require": { "ext-filter": "*", "php": "^8.1", - "psr/http-factory": "^1", "psr/http-message": "^1.1 || ^2.0" }, "suggest": { @@ -6205,6 +6211,7 @@ "ext-gmp": "to improve IPV4 host parsing", "ext-intl": "to handle IDN host with the best performance", "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle WHATWG URL", "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" }, "type": "library", @@ -6229,7 +6236,7 @@ "homepage": "https://nyamsprod.com" } ], - "description": "Common interfaces and classes for URI representation and interaction", + "description": "Common tools for parsing and resolving RFC3987/RFC3986 URI", "homepage": "https://uri.thephpleague.com", "keywords": [ "data-uri", @@ -6254,7 +6261,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri-interfaces/tree/7.5.0" + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.6.0" }, "funding": [ { @@ -6262,7 +6269,7 @@ "type": "github" } ], - "time": "2024-12-08T08:18:47+00:00" + "time": "2025-11-18T12:17:23+00:00" }, { "name": "liip/imagine-bundle", @@ -7181,16 +7188,16 @@ }, { "name": "nette/utils", - "version": "v4.0.8", + "version": "v4.0.9", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede" + "reference": "505a30ad386daa5211f08a318e47015b501cad30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/c930ca4e3cf4f17dcfb03037703679d2396d2ede", - "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede", + "url": "https://api.github.com/repos/nette/utils/zipball/505a30ad386daa5211f08a318e47015b501cad30", + "reference": "505a30ad386daa5211f08a318e47015b501cad30", "shasum": "" }, "require": { @@ -7264,9 +7271,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.8" + "source": "https://github.com/nette/utils/tree/v4.0.9" }, - "time": "2025-08-06T21:43:34+00:00" + "time": "2025-10-31T00:45:47+00:00" }, { "name": "nikolaposa/version", @@ -7409,63 +7416,63 @@ }, { "name": "omines/datatables-bundle", - "version": "0.10.3", + "version": "0.10.7", "source": { "type": "git", "url": "https://github.com/omines/datatables-bundle.git", - "reference": "d64e7d5c72303995ada7365b467166f3cdf4757c" + "reference": "4cd6d27b12c79a1ed72b4953a86aedf289e8701d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/omines/datatables-bundle/zipball/d64e7d5c72303995ada7365b467166f3cdf4757c", - "reference": "d64e7d5c72303995ada7365b467166f3cdf4757c", + "url": "https://api.github.com/repos/omines/datatables-bundle/zipball/4cd6d27b12c79a1ed72b4953a86aedf289e8701d", + "reference": "4cd6d27b12c79a1ed72b4953a86aedf289e8701d", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/event-dispatcher": "^6.4|^7.1", - "symfony/framework-bundle": "^6.4|^7.1", - "symfony/options-resolver": "^6.4|^7.1", + "symfony/event-dispatcher": "^6.4|^7.3|^8.0", + "symfony/framework-bundle": "^6.4|^7.3|^8.0", + "symfony/options-resolver": "^6.4|^7.3|^8.0", "symfony/polyfill-mbstring": "^1.31.0", - "symfony/property-access": "^6.4|^7.1", - "symfony/translation": "^6.4|^7.1" + "symfony/property-access": "^6.4|^7.3|^8.0", + "symfony/translation": "^6.4|^7.3|^8.0" }, "conflict": { "doctrine/orm": "^3.0 <3.3" }, "require-dev": { "doctrine/common": "^3.5.0", - "doctrine/doctrine-bundle": "^2.15.0", - "doctrine/orm": "^2.19.3|^3.4.1", - "doctrine/persistence": "^3.4.0|^4.0.0", + "doctrine/doctrine-bundle": "^2.18.1|^3.0.0@dev", + "doctrine/orm": "^2.19.3|^3.5.7@dev", + "doctrine/persistence": "^3.4.0|^4.1.1", "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", "ext-mongodb": "*", "ext-pdo_sqlite": "*", "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.75.0", - "mongodb/mongodb": "^1.20.0|^2.1.0", - "ocramius/package-versions": "^2.9", - "openspout/openspout": "^4.23", - "phpoffice/phpspreadsheet": "^2.3.3|^3.9.2|^4.4.0", + "friendsofphp/php-cs-fixer": "^3.90.0", + "mongodb/mongodb": "^1.20.0|^2.1.2", + "openspout/openspout": "^4.28.5", + "phpoffice/phpspreadsheet": "^2.3.3|^3.9.2|^4.5.0|^5.2.0", "phpstan/extension-installer": "^1.4.3", - "phpstan/phpstan": "^2.1.17", - "phpstan/phpstan-doctrine": "^2.0.3", - "phpstan/phpstan-phpunit": "^2.0.6", - "phpstan/phpstan-symfony": "^2.0.6", - "phpunit/phpunit": "^10.5.38|^11.5.24", + "phpstan/phpstan": "^2.1.32", + "phpstan/phpstan-doctrine": "^2.0.11", + "phpstan/phpstan-phpunit": "^2.0.8", + "phpstan/phpstan-symfony": "^2.0.8", + "phpunit/phpunit": "^11.5.44|^12.4.4", "ruflin/elastica": "^7.3.2", - "symfony/browser-kit": "^6.4.13|^7.3", - "symfony/css-selector": "^6.4.13|^7.3", - "symfony/doctrine-bridge": "^6.4.13|^7.3", - "symfony/dom-crawler": "^6.4.13|^7.3", - "symfony/intl": "^6.4.13|^7.3", - "symfony/mime": "^6.4.13|^7.3", - "symfony/phpunit-bridge": "^7.3", - "symfony/twig-bundle": "^6.4|^7.3", - "symfony/var-dumper": "^6.4.13|^7.3", - "symfony/yaml": "^6.4.13|^7.3" + "symfony/browser-kit": "^6.4.13|^7.3|^8.0", + "symfony/css-selector": "^6.4.13|^7.3|^8.0", + "symfony/doctrine-bridge": "^6.4.13|^7.3|^8.0", + "symfony/dom-crawler": "^6.4.13|^7.3|^8.0", + "symfony/intl": "^6.4.13|^7.3|^8.0", + "symfony/mime": "^6.4.13|^7.3|^8.0", + "symfony/phpunit-bridge": "^7.3|^8.0", + "symfony/twig-bundle": "^6.4|^7.3|^8.0", + "symfony/var-dumper": "^6.4.13|^7.3|^8.0", + "symfony/var-exporter": "^v6.4.26|^7.3", + "symfony/yaml": "^6.4.13|^7.3|^8.0" }, "suggest": { "doctrine/doctrine-bundle": "For integrated access to Doctrine object managers", @@ -7517,7 +7524,7 @@ ], "support": { "issues": "https://github.com/omines/datatables-bundle/issues", - "source": "https://github.com/omines/datatables-bundle/tree/0.10.3" + "source": "https://github.com/omines/datatables-bundle/tree/0.10.7" }, "funding": [ { @@ -7525,7 +7532,7 @@ "type": "github" } ], - "time": "2025-07-24T19:50:46+00:00" + "time": "2025-11-28T21:20:14+00:00" }, { "name": "onelogin/php-saml", @@ -8352,16 +8359,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.6.3", + "version": "5.6.5", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "94f8051919d1b0369a6bcc7931d679a511c03fe9" + "reference": "90614c73d3800e187615e2dd236ad0e2a01bf761" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94f8051919d1b0369a6bcc7931d679a511c03fe9", - "reference": "94f8051919d1b0369a6bcc7931d679a511c03fe9", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/90614c73d3800e187615e2dd236ad0e2a01bf761", + "reference": "90614c73d3800e187615e2dd236ad0e2a01bf761", "shasum": "" }, "require": { @@ -8410,22 +8417,22 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.3" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.5" }, - "time": "2025-08-01T19:43:32+00:00" + "time": "2025-11-27T19:50:05+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.10.0", + "version": "1.12.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a" + "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/679e3ce485b99e84c775d28e2e96fade9a7fb50a", - "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/92a98ada2b93d9b201a613cb5a33584dde25f195", + "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195", "shasum": "" }, "require": { @@ -8468,22 +8475,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.10.0" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.12.0" }, - "time": "2024-11-09T15:12:26+00:00" + "time": "2025-11-21T15:09:14+00:00" }, { "name": "phpoffice/phpspreadsheet", - "version": "5.2.0", + "version": "5.3.0", "source": { "type": "git", "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", - "reference": "3b8994b3aac4b61018bc04fc8c441f4fd68c18eb" + "reference": "4d597c1aacdde1805a33c525b9758113ea0d90df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/3b8994b3aac4b61018bc04fc8c441f4fd68c18eb", - "reference": "3b8994b3aac4b61018bc04fc8c441f4fd68c18eb", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/4d597c1aacdde1805a33c525b9758113ea0d90df", + "reference": "4d597c1aacdde1805a33c525b9758113ea0d90df", "shasum": "" }, "require": { @@ -8525,7 +8532,7 @@ }, "suggest": { "dompdf/dompdf": "Option for rendering PDF with PDF Writer", - "ext-intl": "PHP Internationalization Functions, regquired for NumberFormat Wizard", + "ext-intl": "PHP Internationalization Functions, required for NumberFormat Wizard", "mitoteam/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers", "mpdf/mpdf": "Option for rendering PDF with PDF Writer", "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer" @@ -8574,9 +8581,9 @@ ], "support": { "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", - "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/5.2.0" + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/5.3.0" }, - "time": "2025-10-26T15:54:22+00:00" + "time": "2025-11-24T15:47:10+00:00" }, { "name": "phpstan/phpdoc-parser", @@ -9188,16 +9195,16 @@ }, { "name": "revolt/event-loop", - "version": "v1.0.7", + "version": "v1.0.8", "source": { "type": "git", "url": "https://github.com/revoltphp/event-loop.git", - "reference": "09bf1bf7f7f574453efe43044b06fafe12216eb3" + "reference": "b6fc06dce8e9b523c9946138fa5e62181934f91c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/revoltphp/event-loop/zipball/09bf1bf7f7f574453efe43044b06fafe12216eb3", - "reference": "09bf1bf7f7f574453efe43044b06fafe12216eb3", + "url": "https://api.github.com/repos/revoltphp/event-loop/zipball/b6fc06dce8e9b523c9946138fa5e62181934f91c", + "reference": "b6fc06dce8e9b523c9946138fa5e62181934f91c", "shasum": "" }, "require": { @@ -9254,22 +9261,22 @@ ], "support": { "issues": "https://github.com/revoltphp/event-loop/issues", - "source": "https://github.com/revoltphp/event-loop/tree/v1.0.7" + "source": "https://github.com/revoltphp/event-loop/tree/v1.0.8" }, - "time": "2025-01-25T19:27:39+00:00" + "time": "2025-08-27T21:33:23+00:00" }, { "name": "rhukster/dom-sanitizer", - "version": "1.0.7", + "version": "1.0.8", "source": { "type": "git", "url": "https://github.com/rhukster/dom-sanitizer.git", - "reference": "c2a98f27ad742668b254282ccc5581871d0fb601" + "reference": "757e4d6ac03afe9afa4f97cbef453fc5c25f0729" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rhukster/dom-sanitizer/zipball/c2a98f27ad742668b254282ccc5581871d0fb601", - "reference": "c2a98f27ad742668b254282ccc5581871d0fb601", + "url": "https://api.github.com/repos/rhukster/dom-sanitizer/zipball/757e4d6ac03afe9afa4f97cbef453fc5c25f0729", + "reference": "757e4d6ac03afe9afa4f97cbef453fc5c25f0729", "shasum": "" }, "require": { @@ -9299,9 +9306,9 @@ "description": "A simple but effective DOM/SVG/MathML Sanitizer for PHP 7.4+", "support": { "issues": "https://github.com/rhukster/dom-sanitizer/issues", - "source": "https://github.com/rhukster/dom-sanitizer/tree/1.0.7" + "source": "https://github.com/rhukster/dom-sanitizer/tree/1.0.8" }, - "time": "2023-11-06T16:46:48+00:00" + "time": "2024-04-15T08:48:55+00:00" }, { "name": "robrichards/xmlseclibs", @@ -9487,16 +9494,16 @@ }, { "name": "s9e/text-formatter", - "version": "2.19.1", + "version": "2.19.3", "source": { "type": "git", "url": "https://github.com/s9e/TextFormatter.git", - "reference": "47c8324f370cc23e72190f00a4ffb18f50516452" + "reference": "aee579c12d05ca3053f9b9abdb8c479c0f2fbe69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/s9e/TextFormatter/zipball/47c8324f370cc23e72190f00a4ffb18f50516452", - "reference": "47c8324f370cc23e72190f00a4ffb18f50516452", + "url": "https://api.github.com/repos/s9e/TextFormatter/zipball/aee579c12d05ca3053f9b9abdb8c479c0f2fbe69", + "reference": "aee579c12d05ca3053f9b9abdb8c479c0f2fbe69", "shasum": "" }, "require": { @@ -9524,7 +9531,7 @@ }, "type": "library", "extra": { - "version": "2.19.1" + "version": "2.19.3" }, "autoload": { "psr-4": { @@ -9556,9 +9563,9 @@ ], "support": { "issues": "https://github.com/s9e/TextFormatter/issues", - "source": "https://github.com/s9e/TextFormatter/tree/2.19.1" + "source": "https://github.com/s9e/TextFormatter/tree/2.19.3" }, - "time": "2025-10-26T07:38:53+00:00" + "time": "2025-11-14T21:26:59+00:00" }, { "name": "sabberworm/php-css-parser", @@ -9628,20 +9635,20 @@ }, { "name": "scheb/2fa-backup-code", - "version": "v7.11.0", + "version": "v7.12.1", "source": { "type": "git", "url": "https://github.com/scheb/2fa-backup-code.git", - "reference": "62c6099b179903db5ab03b8059068cdb28659294" + "reference": "35f1ace4be7be2c10158d2bb8284208499111db8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scheb/2fa-backup-code/zipball/62c6099b179903db5ab03b8059068cdb28659294", - "reference": "62c6099b179903db5ab03b8059068cdb28659294", + "url": "https://api.github.com/repos/scheb/2fa-backup-code/zipball/35f1ace4be7be2c10158d2bb8284208499111db8", + "reference": "35f1ace4be7be2c10158d2bb8284208499111db8", "shasum": "" }, "require": { - "php": "~8.2.0 || ~8.3.0 || ~8.4.0", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", "scheb/2fa-bundle": "self.version" }, "type": "library", @@ -9671,27 +9678,27 @@ "two-step" ], "support": { - "source": "https://github.com/scheb/2fa-backup-code/tree/v7.11.0" + "source": "https://github.com/scheb/2fa-backup-code/tree/v7.12.1" }, - "time": "2025-04-20T08:27:40+00:00" + "time": "2025-11-20T13:35:24+00:00" }, { "name": "scheb/2fa-bundle", - "version": "v7.11.0", + "version": "v7.12.1", "source": { "type": "git", "url": "https://github.com/scheb/2fa-bundle.git", - "reference": "06a343d14dad8cdd1670157d384738f9cfba29e5" + "reference": "2056c313e4ceff8098f970d99d428ddd2a3bfbf5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scheb/2fa-bundle/zipball/06a343d14dad8cdd1670157d384738f9cfba29e5", - "reference": "06a343d14dad8cdd1670157d384738f9cfba29e5", + "url": "https://api.github.com/repos/scheb/2fa-bundle/zipball/2056c313e4ceff8098f970d99d428ddd2a3bfbf5", + "reference": "2056c313e4ceff8098f970d99d428ddd2a3bfbf5", "shasum": "" }, "require": { "ext-json": "*", - "php": "~8.2.0 || ~8.3.0 || ~8.4.0", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", "symfony/config": "^6.4 || ^7.0", "symfony/dependency-injection": "^6.4 || ^7.0", "symfony/event-dispatcher": "^6.4 || ^7.0", @@ -9739,26 +9746,26 @@ "two-step" ], "support": { - "source": "https://github.com/scheb/2fa-bundle/tree/v7.11.0" + "source": "https://github.com/scheb/2fa-bundle/tree/v7.12.1" }, - "time": "2025-06-27T12:14:20+00:00" + "time": "2025-11-25T15:24:27+00:00" }, { "name": "scheb/2fa-google-authenticator", - "version": "v7.11.0", + "version": "v7.12.1", "source": { "type": "git", "url": "https://github.com/scheb/2fa-google-authenticator.git", - "reference": "01a446eb68a76c3d0528a190029afa5e6ce5c384" + "reference": "230cf3404d56f3311a6b2da0c161db33941dba2f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scheb/2fa-google-authenticator/zipball/01a446eb68a76c3d0528a190029afa5e6ce5c384", - "reference": "01a446eb68a76c3d0528a190029afa5e6ce5c384", + "url": "https://api.github.com/repos/scheb/2fa-google-authenticator/zipball/230cf3404d56f3311a6b2da0c161db33941dba2f", + "reference": "230cf3404d56f3311a6b2da0c161db33941dba2f", "shasum": "" }, "require": { - "php": "~8.2.0 || ~8.3.0 || ~8.4.0", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", "scheb/2fa-bundle": "self.version", "spomky-labs/otphp": "^11.0" }, @@ -9789,28 +9796,28 @@ "two-step" ], "support": { - "source": "https://github.com/scheb/2fa-google-authenticator/tree/v7.11.0" + "source": "https://github.com/scheb/2fa-google-authenticator/tree/v7.12.1" }, - "time": "2025-04-20T08:38:44+00:00" + "time": "2025-11-20T13:35:24+00:00" }, { "name": "scheb/2fa-trusted-device", - "version": "v7.11.0", + "version": "v7.12.1", "source": { "type": "git", "url": "https://github.com/scheb/2fa-trusted-device.git", - "reference": "6ab98fdee3aa001ca6598eeb422d9abf2c85b5b3" + "reference": "e1026a977d9cdb794f349b828ab956e9341d7790" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scheb/2fa-trusted-device/zipball/6ab98fdee3aa001ca6598eeb422d9abf2c85b5b3", - "reference": "6ab98fdee3aa001ca6598eeb422d9abf2c85b5b3", + "url": "https://api.github.com/repos/scheb/2fa-trusted-device/zipball/e1026a977d9cdb794f349b828ab956e9341d7790", + "reference": "e1026a977d9cdb794f349b828ab956e9341d7790", "shasum": "" }, "require": { "lcobucci/clock": "^3.0", "lcobucci/jwt": "^5.0", - "php": "~8.2.0 || ~8.3.0 || ~8.4.0", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", "scheb/2fa-bundle": "self.version" }, "type": "library", @@ -9840,9 +9847,9 @@ "two-step" ], "support": { - "source": "https://github.com/scheb/2fa-trusted-device/tree/v7.11.0" + "source": "https://github.com/scheb/2fa-trusted-device/tree/v7.12.1" }, - "time": "2025-06-27T12:14:20+00:00" + "time": "2025-11-20T13:35:24+00:00" }, { "name": "shivas/versioning-bundle", @@ -9906,21 +9913,21 @@ }, { "name": "spatie/db-dumper", - "version": "3.8.0", + "version": "3.8.1", "source": { "type": "git", "url": "https://github.com/spatie/db-dumper.git", - "reference": "91e1fd4dc000aefc9753cda2da37069fc996baee" + "reference": "e974cc7862b8de1bd3b7ea7d4839ba7167acb546" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/db-dumper/zipball/91e1fd4dc000aefc9753cda2da37069fc996baee", - "reference": "91e1fd4dc000aefc9753cda2da37069fc996baee", + "url": "https://api.github.com/repos/spatie/db-dumper/zipball/e974cc7862b8de1bd3b7ea7d4839ba7167acb546", + "reference": "e974cc7862b8de1bd3b7ea7d4839ba7167acb546", "shasum": "" }, "require": { "php": "^8.0", - "symfony/process": "^5.0|^6.0|^7.0" + "symfony/process": "^5.0|^6.0|^7.0|^8.0" }, "require-dev": { "pestphp/pest": "^1.22" @@ -9953,7 +9960,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/db-dumper/tree/3.8.0" + "source": "https://github.com/spatie/db-dumper/tree/3.8.1" }, "funding": [ { @@ -9965,20 +9972,20 @@ "type": "github" } ], - "time": "2025-02-14T15:04:22+00:00" + "time": "2025-11-26T09:51:23+00:00" }, { "name": "spomky-labs/cbor-php", - "version": "3.2.0", + "version": "3.2.2", "source": { "type": "git", "url": "https://github.com/Spomky-Labs/cbor-php.git", - "reference": "53b2adc63d126ddd062016969ce2bad5871fda6c" + "reference": "2a5fb86aacfe1004611370ead6caa2bfc88435d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/cbor-php/zipball/53b2adc63d126ddd062016969ce2bad5871fda6c", - "reference": "53b2adc63d126ddd062016969ce2bad5871fda6c", + "url": "https://api.github.com/repos/Spomky-Labs/cbor-php/zipball/2a5fb86aacfe1004611370ead6caa2bfc88435d0", + "reference": "2a5fb86aacfe1004611370ead6caa2bfc88435d0", "shasum": "" }, "require": { @@ -10024,7 +10031,7 @@ ], "support": { "issues": "https://github.com/Spomky-Labs/cbor-php/issues", - "source": "https://github.com/Spomky-Labs/cbor-php/tree/3.2.0" + "source": "https://github.com/Spomky-Labs/cbor-php/tree/3.2.2" }, "funding": [ { @@ -10036,7 +10043,7 @@ "type": "patreon" } ], - "time": "2025-11-07T09:45:05+00:00" + "time": "2025-11-13T13:00:34+00:00" }, { "name": "spomky-labs/otphp", @@ -11684,16 +11691,16 @@ }, { "name": "symfony/flex", - "version": "v2.9.0", + "version": "v2.10.0", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "94b37978c9982dc41c5b6a4147892d2d3d1b9ce6" + "reference": "9cd384775973eabbf6e8b05784dda279fc67c28d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/94b37978c9982dc41c5b6a4147892d2d3d1b9ce6", - "reference": "94b37978c9982dc41c5b6a4147892d2d3d1b9ce6", + "url": "https://api.github.com/repos/symfony/flex/zipball/9cd384775973eabbf6e8b05784dda279fc67c28d", + "reference": "9cd384775973eabbf6e8b05784dda279fc67c28d", "shasum": "" }, "require": { @@ -11701,7 +11708,8 @@ "php": ">=8.1" }, "conflict": { - "composer/semver": "<1.7.2" + "composer/semver": "<1.7.2", + "symfony/dotenv": "<5.4" }, "require-dev": { "composer/composer": "^2.1", @@ -11732,7 +11740,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v2.9.0" + "source": "https://github.com/symfony/flex/tree/v2.10.0" }, "funding": [ { @@ -11752,7 +11760,7 @@ "type": "tidelift" } ], - "time": "2025-10-31T15:22:50+00:00" + "time": "2025-11-16T09:38:19+00:00" }, { "name": "symfony/form", @@ -12738,44 +12746,39 @@ }, { "name": "symfony/monolog-bundle", - "version": "v3.10.0", + "version": "v3.11.0", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181" + "reference": "e12eb92655b234cd50c21cda648088847a7ec777" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", - "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/e12eb92655b234cd50c21cda648088847a7ec777", + "reference": "e12eb92655b234cd50c21cda648088847a7ec777", "shasum": "" }, "require": { + "composer-runtime-api": "^2.0", "monolog/monolog": "^1.25.1 || ^2.0 || ^3.0", - "php": ">=7.2.5", - "symfony/config": "^5.4 || ^6.0 || ^7.0", - "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", - "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0", - "symfony/monolog-bridge": "^5.4 || ^6.0 || ^7.0" + "php": ">=8.1", + "symfony/config": "^6.4 || ^7.0", + "symfony/dependency-injection": "^6.4 || ^7.0", + "symfony/deprecation-contracts": "^2.5 || ^3.0", + "symfony/http-kernel": "^6.4 || ^7.0", + "symfony/monolog-bridge": "^6.4 || ^7.0", + "symfony/polyfill-php84": "^1.30" }, "require-dev": { - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/phpunit-bridge": "^6.3 || ^7.0", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + "symfony/console": "^6.4 || ^7.0", + "symfony/phpunit-bridge": "^7.3.3", + "symfony/yaml": "^6.4 || ^7.0" }, "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, "autoload": { "psr-4": { - "Symfony\\Bundle\\MonologBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Bundle\\MonologBundle\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -12799,7 +12802,7 @@ ], "support": { "issues": "https://github.com/symfony/monolog-bundle/issues", - "source": "https://github.com/symfony/monolog-bundle/tree/v3.10.0" + "source": "https://github.com/symfony/monolog-bundle/tree/v3.11.0" }, "funding": [ { @@ -12810,12 +12813,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-11-06T17:08:13+00:00" + "time": "2025-11-27T09:16:19+00:00" }, { "name": "symfony/options-resolver", @@ -16260,16 +16267,16 @@ }, { "name": "tecnickcom/tc-lib-barcode", - "version": "2.4.8", + "version": "2.4.11", "source": { "type": "git", "url": "https://github.com/tecnickcom/tc-lib-barcode.git", - "reference": "f238ffd120d98a34df6573590e7ed02f766a91c4" + "reference": "c6d1060abaa9b540d7cd86ced827653196541e84" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tecnickcom/tc-lib-barcode/zipball/f238ffd120d98a34df6573590e7ed02f766a91c4", - "reference": "f238ffd120d98a34df6573590e7ed02f766a91c4", + "url": "https://api.github.com/repos/tecnickcom/tc-lib-barcode/zipball/c6d1060abaa9b540d7cd86ced827653196541e84", + "reference": "c6d1060abaa9b540d7cd86ced827653196541e84", "shasum": "" }, "require": { @@ -16283,8 +16290,8 @@ "require-dev": { "pdepend/pdepend": "2.16.2", "phpmd/phpmd": "2.15.0", - "phpunit/phpunit": "12.2.0 || 11.5.7 || 10.5.40", - "squizlabs/php_codesniffer": "3.13.0" + "phpunit/phpunit": "12.4.4 || 11.5.44 || 10.5.58", + "squizlabs/php_codesniffer": "4.0.1" }, "type": "library", "autoload": { @@ -16348,7 +16355,7 @@ ], "support": { "issues": "https://github.com/tecnickcom/tc-lib-barcode/issues", - "source": "https://github.com/tecnickcom/tc-lib-barcode/tree/2.4.8" + "source": "https://github.com/tecnickcom/tc-lib-barcode/tree/2.4.11" }, "funding": [ { @@ -16356,20 +16363,20 @@ "type": "custom" } ], - "time": "2025-06-06T11:35:02+00:00" + "time": "2025-11-28T18:43:32+00:00" }, { "name": "tecnickcom/tc-lib-color", - "version": "2.2.13", + "version": "2.2.16", "source": { "type": "git", "url": "https://github.com/tecnickcom/tc-lib-color.git", - "reference": "85d1366fb33813aa521d30e3d7c7d7d82a8103a6" + "reference": "f11b2fd7f72ac9d49642a7af2ec854dd09a76b62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tecnickcom/tc-lib-color/zipball/85d1366fb33813aa521d30e3d7c7d7d82a8103a6", - "reference": "85d1366fb33813aa521d30e3d7c7d7d82a8103a6", + "url": "https://api.github.com/repos/tecnickcom/tc-lib-color/zipball/f11b2fd7f72ac9d49642a7af2ec854dd09a76b62", + "reference": "f11b2fd7f72ac9d49642a7af2ec854dd09a76b62", "shasum": "" }, "require": { @@ -16379,8 +16386,8 @@ "require-dev": { "pdepend/pdepend": "2.16.2", "phpmd/phpmd": "2.15.0", - "phpunit/phpunit": "12.2.0 || 11.5.7 || 10.5.40", - "squizlabs/php_codesniffer": "3.13.0" + "phpunit/phpunit": "12.4.4 || 11.5.44 || 10.5.58", + "squizlabs/php_codesniffer": "4.0.1" }, "type": "library", "autoload": { @@ -16417,7 +16424,7 @@ ], "support": { "issues": "https://github.com/tecnickcom/tc-lib-color/issues", - "source": "https://github.com/tecnickcom/tc-lib-color/tree/2.2.13" + "source": "https://github.com/tecnickcom/tc-lib-color/tree/2.2.16" }, "funding": [ { @@ -16425,7 +16432,7 @@ "type": "custom" } ], - "time": "2025-06-06T11:33:19+00:00" + "time": "2025-11-28T18:42:01+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -16553,22 +16560,22 @@ }, { "name": "twig/extra-bundle", - "version": "v3.22.0", + "version": "v3.22.1", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "6d253f0fe28a83a045497c8fb3ea9bfe84e82cf4" + "reference": "b6534bc925bec930004facca92fccebd0c809247" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/6d253f0fe28a83a045497c8fb3ea9bfe84e82cf4", - "reference": "6d253f0fe28a83a045497c8fb3ea9bfe84e82cf4", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/b6534bc925bec930004facca92fccebd0c809247", + "reference": "b6534bc925bec930004facca92fccebd0c809247", "shasum": "" }, "require": { "php": ">=8.1.0", - "symfony/framework-bundle": "^5.4|^6.4|^7.0", - "symfony/twig-bundle": "^5.4|^6.4|^7.0", + "symfony/framework-bundle": "^5.4|^6.4|^7.0|^8.0", + "symfony/twig-bundle": "^5.4|^6.4|^7.0|^8.0", "twig/twig": "^3.2|^4.0" }, "require-dev": { @@ -16611,7 +16618,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.22.0" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.22.1" }, "funding": [ { @@ -16623,26 +16630,26 @@ "type": "tidelift" } ], - "time": "2025-09-15T05:57:37+00:00" + "time": "2025-11-02T11:00:49+00:00" }, { "name": "twig/html-extra", - "version": "v3.22.0", + "version": "v3.22.1", "source": { "type": "git", "url": "https://github.com/twigphp/html-extra.git", - "reference": "5442dd707601c83b8cd4233e37bb10ab8489a90f" + "reference": "d56d33315bce2b19ed815f8feedce85448736568" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/html-extra/zipball/5442dd707601c83b8cd4233e37bb10ab8489a90f", - "reference": "5442dd707601c83b8cd4233e37bb10ab8489a90f", + "url": "https://api.github.com/repos/twigphp/html-extra/zipball/d56d33315bce2b19ed815f8feedce85448736568", + "reference": "d56d33315bce2b19ed815f8feedce85448736568", "shasum": "" }, "require": { "php": ">=8.1.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/mime": "^5.4|^6.4|^7.0", + "symfony/mime": "^5.4|^6.4|^7.0|^8.0", "twig/twig": "^3.13|^4.0" }, "require-dev": { @@ -16679,7 +16686,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/html-extra/tree/v3.22.0" + "source": "https://github.com/twigphp/html-extra/tree/v3.22.1" }, "funding": [ { @@ -16691,7 +16698,7 @@ "type": "tidelift" } ], - "time": "2025-02-19T14:29:33+00:00" + "time": "2025-11-02T11:00:49+00:00" }, { "name": "twig/inky-extra", @@ -16765,21 +16772,21 @@ }, { "name": "twig/intl-extra", - "version": "v3.22.0", + "version": "v3.22.1", "source": { "type": "git", "url": "https://github.com/twigphp/intl-extra.git", - "reference": "7393fc911c7315db18a805d3a541ac7bb9e4fdc0" + "reference": "93ac31e53cdd3f2e541f42690cd0c54ca8138ab1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/7393fc911c7315db18a805d3a541ac7bb9e4fdc0", - "reference": "7393fc911c7315db18a805d3a541ac7bb9e4fdc0", + "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/93ac31e53cdd3f2e541f42690cd0c54ca8138ab1", + "reference": "93ac31e53cdd3f2e541f42690cd0c54ca8138ab1", "shasum": "" }, "require": { "php": ">=8.1.0", - "symfony/intl": "^5.4|^6.4|^7.0", + "symfony/intl": "^5.4|^6.4|^7.0|^8.0", "twig/twig": "^3.13|^4.0" }, "require-dev": { @@ -16813,7 +16820,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/intl-extra/tree/v3.22.0" + "source": "https://github.com/twigphp/intl-extra/tree/v3.22.1" }, "funding": [ { @@ -16825,7 +16832,7 @@ "type": "tidelift" } ], - "time": "2025-09-15T06:05:04+00:00" + "time": "2025-11-02T11:00:49+00:00" }, { "name": "twig/markdown-extra", @@ -16901,21 +16908,21 @@ }, { "name": "twig/string-extra", - "version": "v3.22.0", + "version": "v3.22.1", "source": { "type": "git", "url": "https://github.com/twigphp/string-extra.git", - "reference": "4b3337544ac8f76c280def94e32b53acfaec0589" + "reference": "d5f16e0bec548bc96cce255b5f43d90492b8ce13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/string-extra/zipball/4b3337544ac8f76c280def94e32b53acfaec0589", - "reference": "4b3337544ac8f76c280def94e32b53acfaec0589", + "url": "https://api.github.com/repos/twigphp/string-extra/zipball/d5f16e0bec548bc96cce255b5f43d90492b8ce13", + "reference": "d5f16e0bec548bc96cce255b5f43d90492b8ce13", "shasum": "" }, "require": { "php": ">=8.1.0", - "symfony/string": "^5.4|^6.4|^7.0", + "symfony/string": "^5.4|^6.4|^7.0|^8.0", "symfony/translation-contracts": "^1.1|^2|^3", "twig/twig": "^3.13|^4.0" }, @@ -16952,7 +16959,7 @@ "unicode" ], "support": { - "source": "https://github.com/twigphp/string-extra/tree/v3.22.0" + "source": "https://github.com/twigphp/string-extra/tree/v3.22.1" }, "funding": [ { @@ -16964,20 +16971,20 @@ "type": "tidelift" } ], - "time": "2025-01-31T20:45:36+00:00" + "time": "2025-11-02T11:00:49+00:00" }, { "name": "twig/twig", - "version": "v3.22.0", + "version": "v3.22.1", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "4509984193026de413baf4ba80f68590a7f2c51d" + "reference": "1de2ec1fc43ab58a4b7e80b214b96bfc895750f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/4509984193026de413baf4ba80f68590a7f2c51d", - "reference": "4509984193026de413baf4ba80f68590a7f2c51d", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/1de2ec1fc43ab58a4b7e80b214b96bfc895750f3", + "reference": "1de2ec1fc43ab58a4b7e80b214b96bfc895750f3", "shasum": "" }, "require": { @@ -17031,7 +17038,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.22.0" + "source": "https://github.com/twigphp/Twig/tree/v3.22.1" }, "funding": [ { @@ -17043,7 +17050,7 @@ "type": "tidelift" } ], - "time": "2025-10-29T15:56:47+00:00" + "time": "2025-11-16T16:01:12+00:00" }, { "name": "ua-parser/uap-php", @@ -18225,16 +18232,16 @@ }, { "name": "phpstan/phpstan-symfony", - "version": "2.0.8", + "version": "2.0.9", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-symfony.git", - "reference": "8820c22d785c235f69bb48da3d41e688bc8a1796" + "reference": "24d8c157aa483141b0579d705ef0aac9e1b95436" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/8820c22d785c235f69bb48da3d41e688bc8a1796", - "reference": "8820c22d785c235f69bb48da3d41e688bc8a1796", + "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/24d8c157aa483141b0579d705ef0aac9e1b95436", + "reference": "24d8c157aa483141b0579d705ef0aac9e1b95436", "shasum": "" }, "require": { @@ -18247,7 +18254,7 @@ }, "require-dev": { "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-phpunit": "^2.0.8", "phpstan/phpstan-strict-rules": "^2.0", "phpunit/phpunit": "^9.6", "psr/container": "1.1.2", @@ -18290,9 +18297,9 @@ "description": "Symfony Framework extensions and rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-symfony/issues", - "source": "https://github.com/phpstan/phpstan-symfony/tree/2.0.8" + "source": "https://github.com/phpstan/phpstan-symfony/tree/2.0.9" }, - "time": "2025-09-07T06:55:50+00:00" + "time": "2025-11-29T11:17:28+00:00" }, { "name": "phpunit/php-code-coverage", @@ -18631,16 +18638,16 @@ }, { "name": "phpunit/phpunit", - "version": "11.5.43", + "version": "11.5.44", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "c6b89b6cf4324a8b4cb86e1f5dfdd6c9e0371924" + "reference": "c346885c95423eda3f65d85a194aaa24873cda82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c6b89b6cf4324a8b4cb86e1f5dfdd6c9e0371924", - "reference": "c6b89b6cf4324a8b4cb86e1f5dfdd6c9e0371924", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c346885c95423eda3f65d85a194aaa24873cda82", + "reference": "c346885c95423eda3f65d85a194aaa24873cda82", "shasum": "" }, "require": { @@ -18712,7 +18719,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.43" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.44" }, "funding": [ { @@ -18736,20 +18743,20 @@ "type": "tidelift" } ], - "time": "2025-10-30T08:39:39+00:00" + "time": "2025-11-13T07:17:35+00:00" }, { "name": "rector/rector", - "version": "2.2.8", + "version": "2.2.9", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "303aa811649ccd1d32e51e62d5c85949d01b5f1b" + "reference": "0b8e49ec234877b83244d2ecd0df7a4c16471f05" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/303aa811649ccd1d32e51e62d5c85949d01b5f1b", - "reference": "303aa811649ccd1d32e51e62d5c85949d01b5f1b", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/0b8e49ec234877b83244d2ecd0df7a4c16471f05", + "reference": "0b8e49ec234877b83244d2ecd0df7a4c16471f05", "shasum": "" }, "require": { @@ -18788,7 +18795,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.2.8" + "source": "https://github.com/rectorphp/rector/tree/2.2.9" }, "funding": [ { @@ -18796,7 +18803,7 @@ "type": "github" } ], - "time": "2025-11-12T18:38:00+00:00" + "time": "2025-11-28T14:21:22+00:00" }, { "name": "roave/security-advisories", @@ -18804,12 +18811,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "ccc4996aff4ff810b514472932f677753ee5d8a4" + "reference": "3f393e137e490ecb2ac77989a692129c31192de7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/ccc4996aff4ff810b514472932f677753ee5d8a4", - "reference": "ccc4996aff4ff810b514472932f677753ee5d8a4", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/3f393e137e490ecb2ac77989a692129c31192de7", + "reference": "3f393e137e490ecb2ac77989a692129c31192de7", "shasum": "" }, "conflict": { @@ -18862,7 +18869,7 @@ "aws/aws-sdk-php": "<3.288.1", "azuracast/azuracast": "<0.18.3", "b13/seo_basics": "<0.8.2", - "backdrop/backdrop": "<1.27.3|>=1.28,<1.28.2", + "backdrop/backdrop": "<=1.32", "backpack/crud": "<3.4.9", "backpack/filemanager": "<2.0.2|>=3,<3.0.9", "bacula-web/bacula-web": "<9.7.1", @@ -18925,6 +18932,7 @@ "codeigniter4/shield": "<1.0.0.0-beta8", "codiad/codiad": "<=2.8.4", "codingms/additional-tca": ">=1.7,<1.15.17|>=1.16,<1.16.9", + "codingms/modules": "<4.3.11|>=5,<5.7.4|>=6,<6.4.2|>=7,<7.5.5", "commerceteam/commerce": ">=0.9.6,<0.9.9", "components/jquery": ">=1.0.3,<3.5", "composer/composer": "<1.10.27|>=2,<2.2.24|>=2.3,<2.7.7", @@ -18934,7 +18942,7 @@ "contao/comments-bundle": ">=2,<4.13.40|>=5.0.0.0-RC1-dev,<5.3.4", "contao/contao": ">=3,<3.5.37|>=4,<4.4.56|>=4.5,<4.13.56|>=5,<5.3.38|>=5.4.0.0-RC1-dev,<5.6.1", "contao/core": "<3.5.39", - "contao/core-bundle": "<4.13.56|>=5,<5.3.38|>=5.4,<5.6.1", + "contao/core-bundle": "<4.13.57|>=5,<5.3.42|>=5.4,<5.6.5", "contao/listing-bundle": ">=3,<=3.5.30|>=4,<4.4.8", "contao/managed-edition": "<=1.5", "corveda/phpsandbox": "<1.3.5", @@ -18958,6 +18966,7 @@ "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1|>=7,<7.4", "desperado/xml-bundle": "<=0.1.7", "dev-lancer/minecraft-motd-parser": "<=1.0.5", + "devcode-it/openstamanager": "<=2.9.4", "devgroup/dotplant": "<2020.09.14-dev", "digimix/wp-svg-upload": "<=1", "directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2", @@ -18987,10 +18996,11 @@ "drupal/commerce_alphabank_redirect": "<1.0.3", "drupal/commerce_eurobank_redirect": "<2.1.1", "drupal/config_split": "<1.10|>=2,<2.0.2", - "drupal/core": ">=6,<6.38|>=7,<7.102|>=8,<10.3.14|>=10.4,<10.4.5|>=11,<11.0.13|>=11.1,<11.1.5", + "drupal/core": ">=6,<6.38|>=7,<7.102|>=8,<10.4.9|>=10.5,<10.5.6|>=11,<11.1.9|>=11.2,<11.2.8", "drupal/core-recommended": ">=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8", "drupal/currency": "<3.5", "drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8", + "drupal/email_tfa": "<2.0.6", "drupal/formatter_suite": "<2.1", "drupal/gdpr": "<3.0.1|>=3.1,<3.1.2", "drupal/google_tag": "<1.8|>=2,<2.0.8", @@ -19006,6 +19016,7 @@ "drupal/quick_node_block": "<2", "drupal/rapidoc_elements_field_formatter": "<1.0.1", "drupal/reverse_proxy_header": "<1.1.2", + "drupal/simple_multistep": "<2", "drupal/simple_oauth": ">=6,<6.0.7", "drupal/spamspan": "<3.2.1", "drupal/tfa": "<1.10", @@ -19096,9 +19107,9 @@ "genix/cms": "<=1.1.11", "georgringer/news": "<1.3.3", "geshi/geshi": "<=1.0.9.1", - "getformwork/formwork": "<1.13.1|>=2.0.0.0-beta1,<2.0.0.0-beta4", + "getformwork/formwork": "<2.2", "getgrav/grav": "<1.7.46", - "getkirby/cms": "<3.9.8.3-dev|>=3.10,<3.10.1.2-dev|>=4,<4.7.1", + "getkirby/cms": "<3.9.8.3-dev|>=3.10,<3.10.1.2-dev|>=4,<4.7.1|>=5,<5.1.4", "getkirby/kirby": "<3.9.8.3-dev|>=3.10,<3.10.1.2-dev|>=4,<4.7.1", "getkirby/panel": "<2.5.14", "getkirby/starterkit": "<=3.7.0.2", @@ -19278,6 +19289,7 @@ "modx/revolution": "<=3.1", "mojo42/jirafeau": "<4.4", "mongodb/mongodb": ">=1,<1.9.2", + "mongodb/mongodb-extension": "<1.21.2", "monolog/monolog": ">=1.8,<1.12", "moodle/moodle": "<4.4.11|>=4.5.0.0-beta,<4.5.7|>=5.0.0.0-beta,<5.0.3", "moonshine/moonshine": "<=3.12.5", @@ -19285,10 +19297,9 @@ "movim/moxl": ">=0.8,<=0.10", "movingbytes/social-network": "<=1.2.1", "mpdf/mpdf": "<=7.1.7", - "munkireport/comment": "<4.1", + "munkireport/comment": "<4", "munkireport/managedinstalls": "<2.6", "munkireport/munki_facts": "<1.5", - "munkireport/munkireport": ">=2.5.3,<5.6.3", "munkireport/reportdata": "<3.5", "munkireport/softwareupdate": "<1.6", "mustache/mustache": ">=2,<2.14.1", @@ -19373,11 +19384,12 @@ "phpmailer/phpmailer": "<6.5", "phpmussel/phpmussel": ">=1,<1.6", "phpmyadmin/phpmyadmin": "<5.2.2", - "phpmyfaq/phpmyfaq": "<3.2.5|==3.2.5|>=3.2.10,<=4.0.1", + "phpmyfaq/phpmyfaq": "<=4.0.13", "phpoffice/common": "<0.2.9", "phpoffice/math": "<=0.2", "phpoffice/phpexcel": "<=1.8.2", "phpoffice/phpspreadsheet": "<1.30|>=2,<2.1.12|>=2.2,<2.4|>=3,<3.10|>=4,<5", + "phppgadmin/phppgadmin": "<=7.13", "phpseclib/phpseclib": "<2.0.47|>=3,<3.0.36", "phpservermon/phpservermon": "<3.6", "phpsysinfo/phpsysinfo": "<3.4.3", @@ -19413,7 +19425,7 @@ "prestashop/ps_emailsubscription": "<2.6.1", "prestashop/ps_facetedsearch": "<3.4.1", "prestashop/ps_linklist": "<3.1", - "privatebin/privatebin": "<1.4|>=1.5,<1.7.4|>=1.7.7,<2.0.2", + "privatebin/privatebin": "<1.4|>=1.5,<1.7.4|>=1.7.7,<2.0.3", "processwire/processwire": "<=3.0.246", "propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7", "propel/propel1": ">=1,<=1.7.1", @@ -19435,7 +19447,7 @@ "rap2hpoutre/laravel-log-viewer": "<0.13", "react/http": ">=0.7,<1.9", "really-simple-plugins/complianz-gdpr": "<6.4.2", - "redaxo/source": "<5.18.3", + "redaxo/source": "<5.20.1", "remdex/livehelperchat": "<4.29", "renolit/reint-downloadmanager": "<4.0.2|>=5,<5.0.1", "reportico-web/reportico": "<=8.1", @@ -19457,7 +19469,7 @@ "setasign/fpdi": "<2.6.4", "sfroemken/url_redirect": "<=1.2.1", "sheng/yiicms": "<1.2.1", - "shopware/core": "<6.6.10.7-dev|>=6.7,<6.7.3.1-dev", + "shopware/core": "<6.6.10.9-dev|>=6.7,<6.7.4.1-dev", "shopware/platform": "<6.6.10.7-dev|>=6.7,<6.7.3.1-dev", "shopware/production": "<=6.3.5.2", "shopware/shopware": "<=5.7.17|>=6.7,<6.7.2.1-dev", @@ -19502,7 +19514,7 @@ "slim/slim": "<2.6", "slub/slub-events": "<3.0.3", "smarty/smarty": "<4.5.3|>=5,<5.1.1", - "snipe/snipe-it": "<8.1.18", + "snipe/snipe-it": "<=8.3.4", "socalnick/scn-social-auth": "<1.15.2", "socialiteproviders/steam": "<1.1", "solspace/craft-freeform": ">=5,<5.10.16", @@ -19594,7 +19606,7 @@ "thelia/thelia": ">=2.1,<2.1.3", "theonedemon/phpwhois": "<=4.2.5", "thinkcmf/thinkcmf": "<6.0.8", - "thorsten/phpmyfaq": "<=4.0.1|>=4.0.7,<4.0.13", + "thorsten/phpmyfaq": "<=4.0.13", "tikiwiki/tiki-manager": "<=17.1", "timber/timber": ">=0.16.6,<1.23.1|>=1.24,<1.24.1|>=2,<2.1", "tinymce/tinymce": "<7.2", @@ -19787,7 +19799,7 @@ "type": "tidelift" } ], - "time": "2025-11-12T14:06:11+00:00" + "time": "2025-11-26T00:22:38+00:00" }, { "name": "sebastian/cli-parser", @@ -20976,31 +20988,31 @@ }, { "name": "symfony/maker-bundle", - "version": "v1.64.0", + "version": "v1.65.0", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "c86da84640b0586e92aee2b276ee3638ef2f425a" + "reference": "9a0276d7486b29cae641b4a0a85d5e5cc149bff2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/c86da84640b0586e92aee2b276ee3638ef2f425a", - "reference": "c86da84640b0586e92aee2b276ee3638ef2f425a", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/9a0276d7486b29cae641b4a0a85d5e5cc149bff2", + "reference": "9a0276d7486b29cae641b4a0a85d5e5cc149bff2", "shasum": "" }, "require": { "doctrine/inflector": "^2.0", "nikic/php-parser": "^5.0", "php": ">=8.1", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", "symfony/deprecation-contracts": "^2.2|^3", - "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" + "symfony/filesystem": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0" }, "conflict": { "doctrine/doctrine-bundle": "<2.10", @@ -21008,13 +21020,14 @@ }, "require-dev": { "composer/semver": "^3.0", - "doctrine/doctrine-bundle": "^2.5.0", + "doctrine/doctrine-bundle": "^2.5.0|^3.0.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/security-http": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0", + "doctrine/persistence": "^3.1|^4.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/phpunit-bridge": "^6.4.1|^7.0|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/security-http": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0", "twig/twig": "^3.0|^4.x-dev" }, "type": "symfony-bundle", @@ -21049,7 +21062,7 @@ ], "support": { "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.64.0" + "source": "https://github.com/symfony/maker-bundle/tree/v1.65.0" }, "funding": [ { @@ -21060,12 +21073,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-23T16:12:08+00:00" + "time": "2025-11-24T15:41:51+00:00" }, { "name": "symfony/phpunit-bridge", @@ -21247,16 +21264,16 @@ }, { "name": "theseer/tokenizer", - "version": "1.2.3", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c", + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c", "shasum": "" }, "require": { @@ -21285,7 +21302,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.3" + "source": "https://github.com/theseer/tokenizer/tree/1.3.1" }, "funding": [ { @@ -21293,7 +21310,7 @@ "type": "github" } ], - "time": "2024-03-03T12:36:25+00:00" + "time": "2025-11-17T20:03:58+00:00" } ], "aliases": [], diff --git a/yarn.lock b/yarn.lock index b3636d6c..aab5cd5a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2030,9 +2030,9 @@ version "2.30.0" "@symfony/webpack-encore@^5.0.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@symfony/webpack-encore/-/webpack-encore-5.2.0.tgz#a1a6db817da33bc8454bfff3b7c68d2cc7439850" - integrity sha512-AGSdYBFgWqiZDFn6LAtoGYGys/XRdGpoGoEzt5m4FKkan20oGfmFfHJfemyLW7/OzQkRi1RM2F0RsIlZ73pmAw== + version "5.3.1" + resolved "https://registry.yarnpkg.com/@symfony/webpack-encore/-/webpack-encore-5.3.1.tgz#a8b183bb8ba9f8ce0aa47be5f520ae194ffa1412" + integrity sha512-fNevCvcFMWrY63b901F2mvuECFUqwrQUUEJ9TZkO42lc81F0D6yiTMCFpzTKNrUIO7JSoD8aQxAWJbI5Kly4yg== dependencies: "@nuxt/friendly-errors-webpack-plugin" "^2.5.1" babel-loader "^9.1.3 || ^10.0.0" @@ -2047,7 +2047,7 @@ style-loader "^3.3.0 || ^4.0.0" tapable "^2.2.1" terser-webpack-plugin "^5.3.0" - tmp "^0.2.1" + tmp "^0.2.5" webpack-manifest-plugin "^5.0.1" yargs-parser "^21.0.0" @@ -2192,9 +2192,9 @@ integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== "@types/yargs@^17.0.8": - version "17.0.34" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.34.tgz#1c2f9635b71d5401827373a01ce2e8a7670ea839" - integrity sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A== + version "17.0.35" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.35.tgz#07013e46aa4d7d7d50a49e15604c1c5340d4eb24" + integrity sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg== dependencies: "@types/yargs-parser" "*" @@ -2596,11 +2596,11 @@ balanced-match@^1.0.0: integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== barcode-detector@^3.0.0, barcode-detector@^3.0.5: - version "3.0.7" - resolved "https://registry.yarnpkg.com/barcode-detector/-/barcode-detector-3.0.7.tgz#bc5784c2d8263df85c7722cd25c36fd9b3c23edc" - integrity sha512-91Pu2iuw1CS/P/Uqvbh7/tHGU2gbAr4+qRRegfKa87uonQZpVfVy7Q16HQCCqMhq7DURHdk8s3FVAkqoeBRZ3g== + version "3.0.8" + resolved "https://registry.yarnpkg.com/barcode-detector/-/barcode-detector-3.0.8.tgz#09a3363cb24699d1d6389a291383113c44420324" + integrity sha512-Z9jzzE8ngEDyN9EU7lWdGgV07mcnEQnrX8W9WecXDqD2v+5CcVjt9+a134a5zb+kICvpsrDx6NYA6ay4LGFs8A== dependencies: - zxing-wasm "2.2.3" + zxing-wasm "2.2.4" base64-js@1.3.1: version "1.3.1" @@ -2613,9 +2613,9 @@ base64-js@^1.1.2, base64-js@^1.3.0: integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== baseline-browser-mapping@^2.8.25: - version "2.8.27" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.27.tgz#d15ab8face053137f8eb4c028455024787515d5d" - integrity sha512-2CXFpkjVnY2FT+B6GrSYxzYf65BJWEqz5tIRHCvNsZZ2F3CmsCB37h8SpYgKG7y9C4YAeTipIPWG7EmFmhAeXA== + version "2.8.32" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.32.tgz#5de72358cf363ac41e7d642af239f6ac5ed1270a" + integrity sha512-OPz5aBThlyLFgxyhdwf/s2+8ab3OvT7AdTNvKHBwpXomIYeXqpUUuT8LrdtxZSsWJ4R4CU1un4XGh5Ez3nlTpw== big.js@^5.2.2: version "5.2.2" @@ -2679,7 +2679,7 @@ browser-stdout@1.3.1: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.26.3, browserslist@^4.27.0: +browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.26.3, browserslist@^4.27.0, browserslist@^4.28.0: version "4.28.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.0.tgz#9cefece0a386a17a3cd3d22ebf67b9deca1b5929" integrity sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ== @@ -2776,9 +2776,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001754: - version "1.0.30001754" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001754.tgz#7758299d9a72cce4e6b038788a15b12b44002759" - integrity sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg== + version "1.0.30001757" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001757.tgz#a46ff91449c69522a462996c6aac4ef95d7ccc5e" + integrity sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ== ccount@^2.0.0: version "2.0.1" @@ -3088,16 +3088,16 @@ convert-source-map@^2.0.0: integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== core-js-compat@^3.43.0: - version "3.46.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.46.0.tgz#0c87126a19a1af00371e12b02a2b088a40f3c6f7" - integrity sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law== + version "3.47.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.47.0.tgz#698224bbdbb6f2e3f39decdda4147b161e3772a3" + integrity sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ== dependencies: - browserslist "^4.26.3" + browserslist "^4.28.0" core-js@^3.23.0: - version "3.46.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.46.0.tgz#323a092b96381a9184d0cd49ee9083b2f93373bb" - integrity sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA== + version "3.47.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.47.0.tgz#436ef07650e191afeb84c24481b298bd60eb4a17" + integrity sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg== core-util-is@~1.0.0: version "1.0.3" @@ -3365,11 +3365,11 @@ data-view-byte-offset@^1.0.1: is-data-view "^1.0.1" datatables.net-bs5@^2, datatables.net-bs5@^2.0.0: - version "2.3.4" - resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-2.3.4.tgz#63326190c20552c8c2c4d19a57ecdd10f0fe27ff" - integrity sha512-OSoPWhNfiU71VjNP604uTmFRxiX32U7SCW0KRZ2X6z3ZYbIwjjoWcMEjjPWOH3uOqaI0OTDBgOgOs5G28VaJog== + version "2.3.5" + resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-2.3.5.tgz#96f76dce12b1554664b06bd85f6b3be8d6da509f" + integrity sha512-2JA2WZz1tBxdVpYAspiqI8POdqEoAZZzqp7tISKaof2P5ufBJb+OLaahxwuB0sF9qcQh1azlU+JH1zsLBXVwXg== dependencies: - datatables.net "2.3.4" + datatables.net "2.3.5" jquery ">=1.7" datatables.net-buttons-bs5@^3.0.0: @@ -3407,18 +3407,18 @@ datatables.net-colreorder@2.1.2: jquery ">=1.7" datatables.net-fixedheader-bs5@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/datatables.net-fixedheader-bs5/-/datatables.net-fixedheader-bs5-4.0.4.tgz#530581ff74739c93d0793e927754cafb6cceb75c" - integrity sha512-rcwCFQ0EyeimbkCqdy6yY8aShKNX7CliAIOgvJ9Bs/mMysZiePl3zGwDNmd6ut6fx3dXM6+Tm7Yyz7Gj5TAFTw== + version "4.0.5" + resolved "https://registry.yarnpkg.com/datatables.net-fixedheader-bs5/-/datatables.net-fixedheader-bs5-4.0.5.tgz#84f405e7351ac719022db6f97c5027b5bce5143a" + integrity sha512-R0m4Mntda7wfRCpyjGS2RWFw2861X8e4trn6SnBHID2htuMPPdk11bK4RVJMipgFDxdMfJbvEMH5Hkx5XKrNuA== dependencies: datatables.net-bs5 "^2" - datatables.net-fixedheader "4.0.4" + datatables.net-fixedheader "4.0.5" jquery ">=1.7" -datatables.net-fixedheader@4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/datatables.net-fixedheader/-/datatables.net-fixedheader-4.0.4.tgz#f2f8813a24139ce7c06e0d17834da9174b2cb831" - integrity sha512-O3/A+4afoVd/j5VaLpKClivxaLQUi3KVb5vihPz1h63fCJHTz4/BDxkaeDmxIZkjh5AlCaOTWFdTHc5v30jq5w== +datatables.net-fixedheader@4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/datatables.net-fixedheader/-/datatables.net-fixedheader-4.0.5.tgz#075fff97f47efac9f3ba72d34f8f0ea67470f165" + integrity sha512-cobQhOhjzqIYXTvMRrHUulULS8Re+hd2mmgFiOGKcZwHV0mofIwBlgiU3Ol4LHikHUCvsGnTEXoI+C7Ozma5sA== dependencies: datatables.net "^2" jquery ">=1.7" @@ -3457,10 +3457,10 @@ datatables.net-select@3.1.3: datatables.net "^2" jquery ">=1.7" -datatables.net@2.3.4, datatables.net@^2, datatables.net@^2.0.0: - version "2.3.4" - resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-2.3.4.tgz#8cf69f2e6cb8d271be3d5c4f75a479684d20f253" - integrity sha512-fKuRlrBIdpAl2uIFgl9enKecHB41QmFd/2nN9LBbOvItV/JalAxLcyqdZXex7wX4ZXjnJQEnv6xeS9veOpKzSw== +datatables.net@2.3.5, datatables.net@^2, datatables.net@^2.0.0: + version "2.3.5" + resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-2.3.5.tgz#a35cc1209edb7525ea68ebc3e7d3af6e3f30a758" + integrity sha512-Qrwc+vuw8GHo42u1usWTuriNAMW0VvLPSW3j8g3GxvatiD8wS/ZGW32VAYLLfmF4Hz0C/fo2KB3xZBfcpqqVTQ== dependencies: jquery ">=1.7" @@ -3662,9 +3662,9 @@ duplexer@^0.1.2: integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== electron-to-chromium@^1.5.249: - version "1.5.250" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.250.tgz#0b40436fa41ae7cbac3d2f60ef0411a698eb72a7" - integrity sha512-/5UMj9IiGDMOFBnN4i7/Ry5onJrAGSbOGo3s9FEKmwobGq6xw832ccET0CE3CkkMBZ8GJSlUIesZofpyurqDXw== + version "1.5.262" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.262.tgz#c31eed591c6628908451c9ca0f0758ed514aa003" + integrity sha512-NlAsMteRHek05jRUxUR0a5jpjYq9ykk6+kO0yRaMi5moe7u0fVIOeQ3Y30A8dIiWFBNUoQGi1ljb1i5VtS9WQQ== emoji-regex@^7.0.1: version "7.0.3" @@ -3700,9 +3700,9 @@ entities@^4.2.0: integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== envinfo@^7.7.3: - version "7.20.0" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.20.0.tgz#3fd9de69fb6af3e777a017dfa033676368d67dd7" - integrity sha512-+zUomDcLXsVkQ37vUqWBvQwLaLlj8eZPSi61llaEFAVBY5mhcXdaSw1pSJVl4yTYD5g/gEfpNl28YYk4IPvrrg== + version "7.21.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.21.0.tgz#04a251be79f92548541f37d13c8b6f22940c3bae" + integrity sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow== error-ex@^1.3.1: version "1.3.4" @@ -4982,7 +4982,7 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -loader-runner@^4.2.0: +loader-runner@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.1.tgz#6c76ed29b0ccce9af379208299f07f876de737e3" integrity sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q== @@ -5213,9 +5213,9 @@ mdast-util-phrasing@^4.0.0: unist-util-is "^6.0.0" mdast-util-to-hast@^13.0.0: - version "13.2.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz#5ca58e5b921cc0a3ded1bc02eed79a4fe4fe41f4" - integrity sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA== + version "13.2.1" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz#d7ff84ca499a57e2c060ae67548ad950e689a053" + integrity sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA== dependencies: "@types/hast" "^3.0.0" "@types/mdast" "^4.0.0" @@ -6443,9 +6443,9 @@ postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.16: util-deprecate "^1.0.2" postcss-selector-parser@^7.0.0, postcss-selector-parser@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz#4d6af97eba65d73bc4d84bcb343e865d7dd16262" - integrity sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA== + version "7.1.1" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz#e75d2e0d843f620e5df69076166f4e16f891cb9f" + integrity sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -7429,7 +7429,7 @@ tiny-inflate@^1.0.0, tiny-inflate@^1.0.2: resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz#122715494913a1805166aaf7c93467933eea26c4" integrity sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw== -tmp@^0.2.1: +tmp@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.5.tgz#b06bcd23f0f3c8357b426891726d16015abfd8f8" integrity sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow== @@ -7822,9 +7822,9 @@ webpack-sources@^3.3.3: integrity sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg== webpack@^5.74.0: - version "5.102.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.102.1.tgz#1003a3024741a96ba99c37431938bf61aad3d988" - integrity sha512-7h/weGm9d/ywQ6qzJ+Xy+r9n/3qgp/thalBbpOi5i223dPXKi04IBtqPN9nTd+jBc7QKfvDbaBnFipYp4sJAUQ== + version "5.103.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.103.0.tgz#17a7c5a5020d5a3a37c118d002eade5ee2c6f3da" + integrity sha512-HU1JOuV1OavsZ+mfigY0j8d1TgQgbZ6M+J75zDkpEAwYeXjWSqrGJtgnPblJjd/mAyTNQ7ygw0MiKOn6etz8yw== dependencies: "@types/eslint-scope" "^3.7.7" "@types/estree" "^1.0.8" @@ -7843,7 +7843,7 @@ webpack@^5.74.0: glob-to-regexp "^0.4.1" graceful-fs "^4.2.11" json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" + loader-runner "^4.3.1" mime-types "^2.1.27" neo-async "^2.6.2" schema-utils "^4.3.3" @@ -8030,10 +8030,10 @@ zwitch@^2.0.0, zwitch@^2.0.4: resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A== -zxing-wasm@2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/zxing-wasm/-/zxing-wasm-2.2.3.tgz#365ff73d84a44bc2e81b10e622baed2b764caaf5" - integrity sha512-fz0WwsJi6sNZtfqmHb4cCNzih0Fvz+RIh7jL5wAwQEt+S+GCr6pV+PRDLNYKWgrAtR0y2hKQCLSbZDRk8hfehA== +zxing-wasm@2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/zxing-wasm/-/zxing-wasm-2.2.4.tgz#06b73db93c5a980d4441f357c0a1f8483c7af691" + integrity sha512-1gq5zs4wuNTs5umWLypzNNeuJoluFvwmvjiiT3L9z/TMlVveeJRWy7h90xyUqCe+Qq0zL0w7o5zkdDMWDr9aZA== dependencies: "@types/emscripten" "^1.41.5" type-fest "^5.2.0" From e4f8252e0f3bc752e8b0a29c05f151d9a8260a81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 14:30:04 +0100 Subject: [PATCH 015/235] Upgraded to symfony 7.4 --- composer.json | 61 +- composer.lock | 1588 ++++++++++++----------- config/reference.php | 2896 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 3784 insertions(+), 761 deletions(-) create mode 100644 config/reference.php diff --git a/composer.json b/composer.json index 1c6eafc7..57240fed 100644 --- a/composer.json +++ b/composer.json @@ -57,36 +57,35 @@ "shivas/versioning-bundle": "^4.0", "spatie/db-dumper": "^3.3.1", "symfony/apache-pack": "^1.0", - "symfony/asset": "7.3.*", - "symfony/console": "7.3.*", - "symfony/css-selector": "7.3.*", - "symfony/dom-crawler": "7.3.*", - "symfony/dotenv": "7.3.*", - "symfony/expression-language": "7.3.*", + "symfony/asset": "7.4.*", + "symfony/console": "7.4.*", + "symfony/css-selector": "7.4.*", + "symfony/dom-crawler": "7.4.*", + "symfony/dotenv": "7.4.*", + "symfony/expression-language": "7.4.*", "symfony/flex": "^v2.3.1", - "symfony/form": "7.3.*", - "symfony/framework-bundle": "7.3.*", - "symfony/http-client": "7.3.*", - "symfony/http-kernel": "7.3.*", - "symfony/mailer": "7.3.*", + "symfony/form": "7.4.*", + "symfony/framework-bundle": "7.4.*", + "symfony/http-client": "7.4.*", + "symfony/http-kernel": "7.4.*", + "symfony/mailer": "7.4.*", "symfony/monolog-bundle": "^3.1", - "symfony/polyfill-php82": "^1.28", - "symfony/process": "7.3.*", - "symfony/property-access": "7.3.*", - "symfony/property-info": "7.3.*", - "symfony/rate-limiter": "7.3.*", - "symfony/runtime": "7.3.*", - "symfony/security-bundle": "7.3.*", - "symfony/serializer": "7.3.*", - "symfony/string": "7.3.*", - "symfony/translation": "7.3.*", - "symfony/twig-bundle": "7.3.*", + "symfony/process": "7.4.*", + "symfony/property-access": "7.4.*", + "symfony/property-info": "7.4.*", + "symfony/rate-limiter": "7.4.*", + "symfony/runtime": "7.4.*", + "symfony/security-bundle": "7.4.*", + "symfony/serializer": "7.4.*", + "symfony/string": "7.4.*", + "symfony/translation": "7.4.*", + "symfony/twig-bundle": "7.4.*", "symfony/ux-translator": "^2.10", "symfony/ux-turbo": "^2.0", - "symfony/validator": "7.3.*", - "symfony/web-link": "7.3.*", + "symfony/validator": "7.4.*", + "symfony/web-link": "7.4.*", "symfony/webpack-encore-bundle": "^v2.0.1", - "symfony/yaml": "7.3.*", + "symfony/yaml": "7.4.*", "symplify/easy-coding-standard": "^12.5.20", "tecnickcom/tc-lib-barcode": "^2.1.4", "twig/cssinliner-extra": "^3.0", @@ -111,12 +110,12 @@ "phpunit/phpunit": "^11.5.0", "rector/rector": "^2.0.4", "roave/security-advisories": "dev-latest", - "symfony/browser-kit": "7.3.*", - "symfony/debug-bundle": "7.3.*", + "symfony/browser-kit": "7.4.*", + "symfony/debug-bundle": "7.4.*", "symfony/maker-bundle": "^1.13", - "symfony/phpunit-bridge": "7.3.*", - "symfony/stopwatch": "7.3.*", - "symfony/web-profiler-bundle": "7.3.*" + "symfony/phpunit-bridge": "7.4.*", + "symfony/stopwatch": "7.4.*", + "symfony/web-profiler-bundle": "7.4.*" }, "replace": { "symfony/polyfill-mbstring": "*", @@ -174,7 +173,7 @@ "extra": { "symfony": { "allow-contrib": false, - "require": "7.3.*", + "require": "7.4.*", "docker": true } } diff --git a/composer.lock b/composer.lock index 932aaa5e..4ee20816 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7e6a6a56cfdcc08fc186bb3894ae00e0", + "content-hash": "32a2a07bf006ee140ea1a8b6e1aabee6", "packages": [ { "name": "amphp/amp", @@ -10264,16 +10264,16 @@ }, { "name": "symfony/asset", - "version": "v7.3.0", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "56c4d9f759247c4e07d8549e3baf7493cb9c3e4b" + "reference": "0f7bccb9ffa1f373cbd659774d90629b2773464f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/56c4d9f759247c4e07d8549e3baf7493cb9c3e4b", - "reference": "56c4d9f759247c4e07d8549e3baf7493cb9c3e4b", + "url": "https://api.github.com/repos/symfony/asset/zipball/0f7bccb9ffa1f373cbd659774d90629b2773464f", + "reference": "0f7bccb9ffa1f373cbd659774d90629b2773464f", "shasum": "" }, "require": { @@ -10283,9 +10283,9 @@ "symfony/http-foundation": "<6.4" }, "require-dev": { - "symfony/http-client": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0" + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -10313,7 +10313,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/v7.3.0" + "source": "https://github.com/symfony/asset/tree/v7.4.0" }, "funding": [ { @@ -10324,25 +10324,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-03-05T10:15:41+00:00" + "time": "2025-08-04T07:05:15+00:00" }, { "name": "symfony/cache", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "1277a1ec61c8d93ea61b2a59738f1deb9bfb6701" + "reference": "a7a1325a5de2e54ddb45fda002ff528162e48293" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/1277a1ec61c8d93ea61b2a59738f1deb9bfb6701", - "reference": "1277a1ec61c8d93ea61b2a59738f1deb9bfb6701", + "url": "https://api.github.com/repos/symfony/cache/zipball/a7a1325a5de2e54ddb45fda002ff528162e48293", + "reference": "a7a1325a5de2e54ddb45fda002ff528162e48293", "shasum": "" }, "require": { @@ -10350,12 +10354,14 @@ "psr/cache": "^2.0|^3.0", "psr/log": "^1.1|^2|^3", "symfony/cache-contracts": "^3.6", - "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/service-contracts": "^2.5|^3", - "symfony/var-exporter": "^6.4|^7.0" + "symfony/var-exporter": "^6.4|^7.0|^8.0" }, "conflict": { "doctrine/dbal": "<3.6", + "ext-redis": "<6.1", + "ext-relay": "<0.12.1", "symfony/dependency-injection": "<6.4", "symfony/http-kernel": "<6.4", "symfony/var-dumper": "<6.4" @@ -10370,13 +10376,13 @@ "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", "psr/simple-cache": "^1.0|^2.0|^3.0", - "symfony/clock": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/filesystem": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/filesystem": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -10411,7 +10417,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.3.6" + "source": "https://github.com/symfony/cache/tree/v7.4.0" }, "funding": [ { @@ -10431,7 +10437,7 @@ "type": "tidelift" } ], - "time": "2025-10-30T13:22:58+00:00" + "time": "2025-11-16T10:14:42+00:00" }, { "name": "symfony/cache-contracts", @@ -10511,16 +10517,16 @@ }, { "name": "symfony/clock", - "version": "v7.3.0", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", - "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24" + "reference": "9169f24776edde469914c1e7a1442a50f7a4e110" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", - "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", + "url": "https://api.github.com/repos/symfony/clock/zipball/9169f24776edde469914c1e7a1442a50f7a4e110", + "reference": "9169f24776edde469914c1e7a1442a50f7a4e110", "shasum": "" }, "require": { @@ -10565,7 +10571,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v7.3.0" + "source": "https://github.com/symfony/clock/tree/v7.4.0" }, "funding": [ { @@ -10576,31 +10582,35 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2025-11-12T15:39:26+00:00" }, { "name": "symfony/config", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "9d18eba95655a3152ae4c1d53c6cc34eb4d4a0b7" + "reference": "f76c74e93bce2b9285f2dad7fbd06fa8182a7a41" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/9d18eba95655a3152ae4c1d53c6cc34eb4d4a0b7", - "reference": "9d18eba95655a3152ae4c1d53c6cc34eb4d4a0b7", + "url": "https://api.github.com/repos/symfony/config/zipball/f76c74e93bce2b9285f2dad7fbd06fa8182a7a41", + "reference": "f76c74e93bce2b9285f2dad7fbd06fa8182a7a41", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/filesystem": "^7.1", + "symfony/filesystem": "^7.1|^8.0", "symfony/polyfill-ctype": "~1.8" }, "conflict": { @@ -10608,11 +10618,11 @@ "symfony/service-contracts": "<2.5" }, "require-dev": { - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^6.4|^7.0" + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -10640,7 +10650,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/v7.3.6" + "source": "https://github.com/symfony/config/tree/v7.4.0" }, "funding": [ { @@ -10660,20 +10670,20 @@ "type": "tidelift" } ], - "time": "2025-11-02T08:04:43+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "symfony/console", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "c28ad91448f86c5f6d9d2c70f0cf68bf135f252a" + "reference": "0bc0f45254b99c58d45a8fbf9fb955d46cbd1bb8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/c28ad91448f86c5f6d9d2c70f0cf68bf135f252a", - "reference": "c28ad91448f86c5f6d9d2c70f0cf68bf135f252a", + "url": "https://api.github.com/repos/symfony/console/zipball/0bc0f45254b99c58d45a8fbf9fb955d46cbd1bb8", + "reference": "0bc0f45254b99c58d45a8fbf9fb955d46cbd1bb8", "shasum": "" }, "require": { @@ -10681,7 +10691,7 @@ "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^7.2" + "symfony/string": "^7.2|^8.0" }, "conflict": { "symfony/dependency-injection": "<6.4", @@ -10695,16 +10705,16 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -10738,7 +10748,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.3.6" + "source": "https://github.com/symfony/console/tree/v7.4.0" }, "funding": [ { @@ -10758,20 +10768,20 @@ "type": "tidelift" } ], - "time": "2025-11-04T01:21:42+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "symfony/css-selector", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "84321188c4754e64273b46b406081ad9b18e8614" + "reference": "ab862f478513e7ca2fe9ec117a6f01a8da6e1135" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/84321188c4754e64273b46b406081ad9b18e8614", - "reference": "84321188c4754e64273b46b406081ad9b18e8614", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/ab862f478513e7ca2fe9ec117a6f01a8da6e1135", + "reference": "ab862f478513e7ca2fe9ec117a6f01a8da6e1135", "shasum": "" }, "require": { @@ -10807,7 +10817,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.3.6" + "source": "https://github.com/symfony/css-selector/tree/v7.4.0" }, "funding": [ { @@ -10827,28 +10837,28 @@ "type": "tidelift" } ], - "time": "2025-10-29T17:24:25+00:00" + "time": "2025-10-30T13:39:42+00:00" }, { "name": "symfony/dependency-injection", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "98af8bb46c56aedd9dd5a7f0414fc72bf2dcfe69" + "reference": "3972ca7bbd649467b21a54870721b9e9f3652f9b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/98af8bb46c56aedd9dd5a7f0414fc72bf2dcfe69", - "reference": "98af8bb46c56aedd9dd5a7f0414fc72bf2dcfe69", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/3972ca7bbd649467b21a54870721b9e9f3652f9b", + "reference": "3972ca7bbd649467b21a54870721b9e9f3652f9b", "shasum": "" }, "require": { "php": ">=8.2", "psr/container": "^1.1|^2.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/service-contracts": "^3.5", - "symfony/var-exporter": "^6.4.20|^7.2.5" + "symfony/service-contracts": "^3.6", + "symfony/var-exporter": "^6.4.20|^7.2.5|^8.0" }, "conflict": { "ext-psr": "<1.1|>=2", @@ -10861,9 +10871,9 @@ "symfony/service-implementation": "1.1|2.0|3.0" }, "require-dev": { - "symfony/config": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0" + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -10891,7 +10901,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/v7.3.6" + "source": "https://github.com/symfony/dependency-injection/tree/v7.4.0" }, "funding": [ { @@ -10911,7 +10921,7 @@ "type": "tidelift" } ], - "time": "2025-10-31T10:11:11+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "symfony/deprecation-contracts", @@ -10982,16 +10992,16 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "e7d308bd44ff8673a259e2727d13af6a93a5d83e" + "reference": "7b511891a81ca14e993b6c88fd35d6bf656085f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/e7d308bd44ff8673a259e2727d13af6a93a5d83e", - "reference": "e7d308bd44ff8673a259e2727d13af6a93a5d83e", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/7b511891a81ca14e993b6c88fd35d6bf656085f7", + "reference": "7b511891a81ca14e993b6c88fd35d6bf656085f7", "shasum": "" }, "require": { @@ -11018,7 +11028,7 @@ "symfony/property-info": "<6.4", "symfony/security-bundle": "<6.4", "symfony/security-core": "<6.4", - "symfony/validator": "<6.4" + "symfony/validator": "<7.4" }, "require-dev": { "doctrine/collections": "^1.8|^2.0", @@ -11026,24 +11036,24 @@ "doctrine/dbal": "^3.6|^4", "doctrine/orm": "^2.15|^3", "psr/log": "^1|^2|^3", - "symfony/cache": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/doctrine-messenger": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/form": "^6.4.6|^7.0.6", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/security-core": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", - "symfony/type-info": "^7.1.8", - "symfony/uid": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/doctrine-messenger": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/form": "^7.2|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/type-info": "^7.1.8|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "symfony-bridge", "autoload": { @@ -11071,7 +11081,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v7.3.5" + "source": "https://github.com/symfony/doctrine-bridge/tree/v7.4.0" }, "funding": [ { @@ -11091,30 +11101,31 @@ "type": "tidelift" } ], - "time": "2025-09-27T09:00:46+00:00" + "time": "2025-11-04T03:05:49+00:00" }, { "name": "symfony/dom-crawler", - "version": "v7.3.3", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "efa076ea0eeff504383ff0dcf827ea5ce15690ba" + "reference": "8f3e7464fe7e77294686e935956a6a8ccf7442c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/efa076ea0eeff504383ff0dcf827ea5ce15690ba", - "reference": "efa076ea0eeff504383ff0dcf827ea5ce15690ba", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/8f3e7464fe7e77294686e935956a6a8ccf7442c4", + "reference": "8f3e7464fe7e77294686e935956a6a8ccf7442c4", "shasum": "" }, "require": { "masterminds/html5": "^2.6", "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { - "symfony/css-selector": "^6.4|^7.0" + "symfony/css-selector": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -11142,7 +11153,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v7.3.3" + "source": "https://github.com/symfony/dom-crawler/tree/v7.4.0" }, "funding": [ { @@ -11162,20 +11173,20 @@ "type": "tidelift" } ], - "time": "2025-08-06T20:13:54+00:00" + "time": "2025-10-31T09:30:03+00:00" }, { "name": "symfony/dotenv", - "version": "v7.3.2", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "2192790a11f9e22cbcf9dc705a3ff22a5503923a" + "reference": "1658a4d34df028f3d93bcdd8e81f04423925a364" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/2192790a11f9e22cbcf9dc705a3ff22a5503923a", - "reference": "2192790a11f9e22cbcf9dc705a3ff22a5503923a", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/1658a4d34df028f3d93bcdd8e81f04423925a364", + "reference": "1658a4d34df028f3d93bcdd8e81f04423925a364", "shasum": "" }, "require": { @@ -11186,8 +11197,8 @@ "symfony/process": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -11220,7 +11231,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v7.3.2" + "source": "https://github.com/symfony/dotenv/tree/v7.4.0" }, "funding": [ { @@ -11240,36 +11251,37 @@ "type": "tidelift" } ], - "time": "2025-07-10T08:29:33+00:00" + "time": "2025-11-16T10:14:42+00:00" }, { "name": "symfony/error-handler", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "bbe40bfab84323d99dab491b716ff142410a92a8" + "reference": "48be2b0653594eea32dcef130cca1c811dcf25c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/bbe40bfab84323d99dab491b716ff142410a92a8", - "reference": "bbe40bfab84323d99dab491b716ff142410a92a8", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/48be2b0653594eea32dcef130cca1c811dcf25c2", + "reference": "48be2b0653594eea32dcef130cca1c811dcf25c2", "shasum": "" }, "require": { "php": ">=8.2", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/polyfill-php85": "^1.32", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "conflict": { "symfony/deprecation-contracts": "<2.5", "symfony/http-kernel": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0|^8.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", "symfony/webpack-encore-bundle": "^1.0|^2.0" }, "bin": [ @@ -11301,7 +11313,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/v7.3.6" + "source": "https://github.com/symfony/error-handler/tree/v7.4.0" }, "funding": [ { @@ -11321,20 +11333,20 @@ "type": "tidelift" } ], - "time": "2025-10-31T19:12:50+00:00" + "time": "2025-11-05T14:29:59+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.3.3", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191" + "reference": "9dddcddff1ef974ad87b3708e4b442dc38b2261d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b7dc69e71de420ac04bc9ab830cf3ffebba48191", - "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9dddcddff1ef974ad87b3708e4b442dc38b2261d", + "reference": "9dddcddff1ef974ad87b3708e4b442dc38b2261d", "shasum": "" }, "require": { @@ -11351,13 +11363,14 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/error-handler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^6.4|^7.0" + "symfony/stopwatch": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -11385,7 +11398,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/v7.3.3" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.0" }, "funding": [ { @@ -11405,7 +11418,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T11:49:31+00:00" + "time": "2025-10-28T09:38:46+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -11485,21 +11498,21 @@ }, { "name": "symfony/expression-language", - "version": "v7.3.2", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "32d2d19c62e58767e6552166c32fb259975d2b23" + "reference": "8b9bbbb8c71f79a09638f6ea77c531e511139efa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/32d2d19c62e58767e6552166c32fb259975d2b23", - "reference": "32d2d19c62e58767e6552166c32fb259975d2b23", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/8b9bbbb8c71f79a09638f6ea77c531e511139efa", + "reference": "8b9bbbb8c71f79a09638f6ea77c531e511139efa", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/cache": "^6.4|^7.0", + "symfony/cache": "^6.4|^7.0|^8.0", "symfony/deprecation-contracts": "^2.5|^3", "symfony/service-contracts": "^2.5|^3" }, @@ -11529,7 +11542,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v7.3.2" + "source": "https://github.com/symfony/expression-language/tree/v7.4.0" }, "funding": [ { @@ -11549,20 +11562,20 @@ "type": "tidelift" } ], - "time": "2025-07-10T08:29:33+00:00" + "time": "2025-11-12T15:39:26+00:00" }, { "name": "symfony/filesystem", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "e9bcfd7837928ab656276fe00464092cc9e1826a" + "reference": "d551b38811096d0be9c4691d406991b47c0c630a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/e9bcfd7837928ab656276fe00464092cc9e1826a", - "reference": "e9bcfd7837928ab656276fe00464092cc9e1826a", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/d551b38811096d0be9c4691d406991b47c0c630a", + "reference": "d551b38811096d0be9c4691d406991b47c0c630a", "shasum": "" }, "require": { @@ -11571,7 +11584,7 @@ "symfony/polyfill-mbstring": "~1.8" }, "require-dev": { - "symfony/process": "^6.4|^7.0" + "symfony/process": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -11599,7 +11612,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.3.6" + "source": "https://github.com/symfony/filesystem/tree/v7.4.0" }, "funding": [ { @@ -11619,27 +11632,27 @@ "type": "tidelift" } ], - "time": "2025-11-05T09:52:27+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "symfony/finder", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "9f696d2f1e340484b4683f7853b273abff94421f" + "reference": "340b9ed7320570f319028a2cbec46d40535e94bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/9f696d2f1e340484b4683f7853b273abff94421f", - "reference": "9f696d2f1e340484b4683f7853b273abff94421f", + "url": "https://api.github.com/repos/symfony/finder/zipball/340b9ed7320570f319028a2cbec46d40535e94bd", + "reference": "340b9ed7320570f319028a2cbec46d40535e94bd", "shasum": "" }, "require": { "php": ">=8.2" }, "require-dev": { - "symfony/filesystem": "^6.4|^7.0" + "symfony/filesystem": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -11667,7 +11680,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.3.5" + "source": "https://github.com/symfony/finder/tree/v7.4.0" }, "funding": [ { @@ -11687,7 +11700,7 @@ "type": "tidelift" } ], - "time": "2025-10-15T18:45:57+00:00" + "time": "2025-11-05T05:42:40+00:00" }, { "name": "symfony/flex", @@ -11764,27 +11777,27 @@ }, { "name": "symfony/form", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "a8f32aa19b322bf46cbaaafa89c132eb662ecfe5" + "reference": "00b8d61709b323749aef317950abd276f309597b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/a8f32aa19b322bf46cbaaafa89c132eb662ecfe5", - "reference": "a8f32aa19b322bf46cbaaafa89c132eb662ecfe5", + "url": "https://api.github.com/repos/symfony/form/zipball/00b8d61709b323749aef317950abd276f309597b", + "reference": "00b8d61709b323749aef317950abd276f309597b", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/options-resolver": "^7.3", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/options-resolver": "^7.3|^8.0", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-icu": "^1.21", "symfony/polyfill-mbstring": "~1.0", - "symfony/property-access": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -11794,26 +11807,28 @@ "symfony/error-handler": "<6.4", "symfony/framework-bundle": "<6.4", "symfony/http-kernel": "<6.4", + "symfony/intl": "<7.4", "symfony/translation": "<6.4.3|>=7.0,<7.0.3", "symfony/translation-contracts": "<2.5", "symfony/twig-bridge": "<6.4" }, "require-dev": { "doctrine/collections": "^1.0|^2.0", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/html-sanitizer": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", - "symfony/security-core": "^6.4|^7.0", - "symfony/security-csrf": "^6.4|^7.0", - "symfony/translation": "^6.4.3|^7.0.3", - "symfony/uid": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/html-sanitizer": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/intl": "^7.4|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/security-csrf": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4.3|^7.0.3|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4.12|^7.1.5|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -11841,7 +11856,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v7.3.6" + "source": "https://github.com/symfony/form/tree/v7.4.0" }, "funding": [ { @@ -11861,38 +11876,39 @@ "type": "tidelift" } ], - "time": "2025-10-31T09:25:04+00:00" + "time": "2025-11-20T12:20:24+00:00" }, { "name": "symfony/framework-bundle", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "cabfdfa82bc4f75d693a329fe263d96937636b77" + "reference": "3c62a3437267ac55bcd40175689c74772250e943" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/cabfdfa82bc4f75d693a329fe263d96937636b77", - "reference": "cabfdfa82bc4f75d693a329fe263d96937636b77", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/3c62a3437267ac55bcd40175689c74772250e943", + "reference": "3c62a3437267ac55bcd40175689c74772250e943", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "ext-xml": "*", "php": ">=8.2", - "symfony/cache": "^6.4|^7.0", - "symfony/config": "^7.3", - "symfony/dependency-injection": "^7.2", + "symfony/cache": "^6.4.12|^7.0|^8.0", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^7.3", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/filesystem": "^7.1", - "symfony/finder": "^6.4|^7.0", - "symfony/http-foundation": "^7.3", - "symfony/http-kernel": "^7.2", + "symfony/error-handler": "^7.3|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/filesystem": "^7.1|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", "symfony/polyfill-mbstring": "~1.0", - "symfony/routing": "^6.4|^7.0" + "symfony/polyfill-php85": "^1.32", + "symfony/routing": "^7.4|^8.0" }, "conflict": { "doctrine/persistence": "<1.3", @@ -11904,14 +11920,12 @@ "symfony/console": "<6.4", "symfony/dom-crawler": "<6.4", "symfony/dotenv": "<6.4", - "symfony/form": "<6.4", + "symfony/form": "<7.4", "symfony/http-client": "<6.4", - "symfony/json-streamer": ">=7.4", "symfony/lock": "<6.4", "symfony/mailer": "<6.4", - "symfony/messenger": "<6.4", + "symfony/messenger": "<7.4", "symfony/mime": "<6.4", - "symfony/object-mapper": ">=7.4", "symfony/property-access": "<6.4", "symfony/property-info": "<6.4", "symfony/runtime": "<6.4.13|>=7.0,<7.1.6", @@ -11926,51 +11940,52 @@ "symfony/validator": "<6.4", "symfony/web-profiler-bundle": "<6.4", "symfony/webhook": "<7.2", - "symfony/workflow": "<7.3.0-beta2" + "symfony/workflow": "<7.4" }, "require-dev": { "doctrine/persistence": "^1.3|^2|^3", "dragonmantank/cron-expression": "^3.1", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", "seld/jsonlint": "^1.10", - "symfony/asset": "^6.4|^7.0", - "symfony/asset-mapper": "^6.4|^7.0", - "symfony/browser-kit": "^6.4|^7.0", - "symfony/clock": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/css-selector": "^6.4|^7.0", - "symfony/dom-crawler": "^6.4|^7.0", - "symfony/dotenv": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/form": "^6.4|^7.0", - "symfony/html-sanitizer": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/json-streamer": "7.3.*", - "symfony/lock": "^6.4|^7.0", - "symfony/mailer": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/notifier": "^6.4|^7.0", - "symfony/object-mapper": "^v7.3.0-beta2", + "symfony/asset": "^6.4|^7.0|^8.0", + "symfony/asset-mapper": "^6.4|^7.0|^8.0", + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/dom-crawler": "^6.4|^7.0|^8.0", + "symfony/dotenv": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/form": "^7.4|^8.0", + "symfony/html-sanitizer": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/json-streamer": "^7.3|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/mailer": "^6.4|^7.0|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/notifier": "^6.4|^7.0|^8.0", + "symfony/object-mapper": "^7.3|^8.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/rate-limiter": "^6.4|^7.0", - "symfony/scheduler": "^6.4.4|^7.0.4", - "symfony/security-bundle": "^6.4|^7.0", - "symfony/semaphore": "^6.4|^7.0", - "symfony/serializer": "^7.2.5", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/string": "^6.4|^7.0", - "symfony/translation": "^7.3", - "symfony/twig-bundle": "^6.4|^7.0", - "symfony/type-info": "^7.1.8", - "symfony/uid": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/web-link": "^6.4|^7.0", - "symfony/webhook": "^7.2", - "symfony/workflow": "^7.3", - "symfony/yaml": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6|^8.0", + "symfony/scheduler": "^6.4.4|^7.0.4|^8.0", + "symfony/security-bundle": "^6.4|^7.0|^8.0", + "symfony/semaphore": "^6.4|^7.0|^8.0", + "symfony/serializer": "^7.2.5|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/translation": "^7.3|^8.0", + "symfony/twig-bundle": "^6.4|^7.0|^8.0", + "symfony/type-info": "^7.1.8|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/web-link": "^6.4|^7.0|^8.0", + "symfony/webhook": "^7.2|^8.0", + "symfony/workflow": "^7.4|^8.0", + "symfony/yaml": "^7.3|^8.0", "twig/twig": "^3.12" }, "type": "symfony-bundle", @@ -11999,7 +12014,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/v7.3.6" + "source": "https://github.com/symfony/framework-bundle/tree/v7.4.0" }, "funding": [ { @@ -12019,20 +12034,20 @@ "type": "tidelift" } ], - "time": "2025-10-30T09:42:24+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "symfony/http-client", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "3c0a55a2c8e21e30a37022801c11c7ab5a6cb2de" + "reference": "ee5e0e0139ab506f6063a230e631bed677c650a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/3c0a55a2c8e21e30a37022801c11c7ab5a6cb2de", - "reference": "3c0a55a2c8e21e30a37022801c11c7ab5a6cb2de", + "url": "https://api.github.com/repos/symfony/http-client/zipball/ee5e0e0139ab506f6063a230e631bed677c650a4", + "reference": "ee5e0e0139ab506f6063a230e631bed677c650a4", "shasum": "" }, "require": { @@ -12063,12 +12078,13 @@ "php-http/httplug": "^1.0|^2.0", "psr/http-client": "^1.0", "symfony/amphp-http-client-meta": "^1.0|^2.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/rate-limiter": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0" + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -12099,7 +12115,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v7.3.6" + "source": "https://github.com/symfony/http-client/tree/v7.4.0" }, "funding": [ { @@ -12119,7 +12135,7 @@ "type": "tidelift" } ], - "time": "2025-11-05T17:41:46+00:00" + "time": "2025-11-20T12:32:50+00:00" }, { "name": "symfony/http-client-contracts", @@ -12201,23 +12217,22 @@ }, { "name": "symfony/http-foundation", - "version": "v7.3.7", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "db488a62f98f7a81d5746f05eea63a74e55bb7c4" + "reference": "769c1720b68e964b13b58529c17d4a385c62167b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/db488a62f98f7a81d5746f05eea63a74e55bb7c4", - "reference": "db488a62f98f7a81d5746f05eea63a74e55bb7c4", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/769c1720b68e964b13b58529c17d4a385c62167b", + "reference": "769c1720b68e964b13b58529c17d4a385c62167b", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3.0", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php83": "^1.27" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "^1.1" }, "conflict": { "doctrine/dbal": "<3.6", @@ -12226,13 +12241,13 @@ "require-dev": { "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.4.12|^7.1.5", - "symfony/clock": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/rate-limiter": "^6.4|^7.0" + "symfony/cache": "^6.4.12|^7.1.5|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -12260,7 +12275,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.3.7" + "source": "https://github.com/symfony/http-foundation/tree/v7.4.0" }, "funding": [ { @@ -12280,29 +12295,29 @@ "type": "tidelift" } ], - "time": "2025-11-08T16:41:12+00:00" + "time": "2025-11-13T08:49:24+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.3.7", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "10b8e9b748ea95fa4539c208e2487c435d3c87ce" + "reference": "7348193cd384495a755554382e4526f27c456085" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/10b8e9b748ea95fa4539c208e2487c435d3c87ce", - "reference": "10b8e9b748ea95fa4539c208e2487c435d3c87ce", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/7348193cd384495a755554382e4526f27c456085", + "reference": "7348193cd384495a755554382e4526f27c456085", "shasum": "" }, "require": { "php": ">=8.2", "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^6.4|^7.0", - "symfony/event-dispatcher": "^7.3", - "symfony/http-foundation": "^7.3", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^7.3|^8.0", + "symfony/http-foundation": "^7.4|^8.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -12312,6 +12327,7 @@ "symfony/console": "<6.4", "symfony/dependency-injection": "<6.4", "symfony/doctrine-bridge": "<6.4", + "symfony/flex": "<2.10", "symfony/form": "<6.4", "symfony/http-client": "<6.4", "symfony/http-client-contracts": "<2.5", @@ -12329,27 +12345,27 @@ }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^6.4|^7.0", - "symfony/clock": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/css-selector": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/dom-crawler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/dom-crawler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^6.4|^7.0", - "symfony/property-access": "^7.1", - "symfony/routing": "^6.4|^7.0", - "symfony/serializer": "^7.1", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^7.1|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/serializer": "^7.1|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0", - "symfony/var-exporter": "^6.4|^7.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0", "twig/twig": "^3.12" }, "type": "library", @@ -12378,7 +12394,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/v7.3.7" + "source": "https://github.com/symfony/http-kernel/tree/v7.4.0" }, "funding": [ { @@ -12398,20 +12414,20 @@ "type": "tidelift" } ], - "time": "2025-11-12T11:38:40+00:00" + "time": "2025-11-27T13:38:24+00:00" }, { "name": "symfony/intl", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "9eccaaa94ac6f9deb3620c9d47a057d965baeabf" + "reference": "2fa074de6c7faa6b54f2891fc22708f42245ed5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/9eccaaa94ac6f9deb3620c9d47a057d965baeabf", - "reference": "9eccaaa94ac6f9deb3620c9d47a057d965baeabf", + "url": "https://api.github.com/repos/symfony/intl/zipball/2fa074de6c7faa6b54f2891fc22708f42245ed5c", + "reference": "2fa074de6c7faa6b54f2891fc22708f42245ed5c", "shasum": "" }, "require": { @@ -12422,8 +12438,8 @@ "symfony/string": "<7.1" }, "require-dev": { - "symfony/filesystem": "^6.4|^7.0", - "symfony/var-exporter": "^6.4|^7.0" + "symfony/filesystem": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -12468,7 +12484,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v7.3.5" + "source": "https://github.com/symfony/intl/tree/v7.4.0" }, "funding": [ { @@ -12488,20 +12504,20 @@ "type": "tidelift" } ], - "time": "2025-10-01T06:11:17+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "symfony/mailer", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "fd497c45ba9c10c37864e19466b090dcb60a50ba" + "reference": "a3d9eea8cfa467ece41f0f54ba28185d74bd53fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/fd497c45ba9c10c37864e19466b090dcb60a50ba", - "reference": "fd497c45ba9c10c37864e19466b090dcb60a50ba", + "url": "https://api.github.com/repos/symfony/mailer/zipball/a3d9eea8cfa467ece41f0f54ba28185d74bd53fd", + "reference": "a3d9eea8cfa467ece41f0f54ba28185d74bd53fd", "shasum": "" }, "require": { @@ -12509,8 +12525,8 @@ "php": ">=8.2", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/mime": "^7.2", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/mime": "^7.2|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -12521,10 +12537,10 @@ "symfony/twig-bridge": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/twig-bridge": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/twig-bridge": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -12552,7 +12568,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.3.5" + "source": "https://github.com/symfony/mailer/tree/v7.4.0" }, "funding": [ { @@ -12572,24 +12588,25 @@ "type": "tidelift" } ], - "time": "2025-10-24T14:27:20+00:00" + "time": "2025-11-21T15:26:00+00:00" }, { "name": "symfony/mime", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35" + "reference": "bdb02729471be5d047a3ac4a69068748f1a6be7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/b1b828f69cbaf887fa835a091869e55df91d0e35", - "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35", + "url": "https://api.github.com/repos/symfony/mime/zipball/bdb02729471be5d047a3ac4a69068748f1a6be7a", + "reference": "bdb02729471be5d047a3ac4a69068748f1a6be7a", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, @@ -12604,11 +12621,11 @@ "egulias/email-validator": "^2.1.10|^3.1|^4", "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/serializer": "^6.4.3|^7.0.3" + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4.3|^7.0.3|^8.0" }, "type": "library", "autoload": { @@ -12640,7 +12657,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.3.4" + "source": "https://github.com/symfony/mime/tree/v7.4.0" }, "funding": [ { @@ -12660,26 +12677,27 @@ "type": "tidelift" } ], - "time": "2025-09-16T08:38:17+00:00" + "time": "2025-11-16T10:14:42+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "48e8542ba35afd2293a8c8fd4bcf8abe46357ddf" + "reference": "189d16466ff83d9c51fad26382bf0beeb41bda21" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/48e8542ba35afd2293a8c8fd4bcf8abe46357ddf", - "reference": "48e8542ba35afd2293a8c8fd4bcf8abe46357ddf", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/189d16466ff83d9c51fad26382bf0beeb41bda21", + "reference": "189d16466ff83d9c51fad26382bf0beeb41bda21", "shasum": "" }, "require": { "monolog/monolog": "^3", "php": ">=8.2", - "symfony/http-kernel": "^6.4|^7.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -12688,13 +12706,13 @@ "symfony/security-core": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/mailer": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/security-core": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/mailer": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "symfony-bridge", "autoload": { @@ -12722,7 +12740,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v7.3.6" + "source": "https://github.com/symfony/monolog-bridge/tree/v7.4.0" }, "funding": [ { @@ -12742,7 +12760,7 @@ "type": "tidelift" } ], - "time": "2025-11-01T09:17:24+00:00" + "time": "2025-11-01T09:17:33+00:00" }, { "name": "symfony/monolog-bundle", @@ -12826,16 +12844,16 @@ }, { "name": "symfony/options-resolver", - "version": "v7.3.3", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "0ff2f5c3df08a395232bbc3c2eb7e84912df911d" + "reference": "b38026df55197f9e39a44f3215788edf83187b80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/0ff2f5c3df08a395232bbc3c2eb7e84912df911d", - "reference": "0ff2f5c3df08a395232bbc3c2eb7e84912df911d", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/b38026df55197f9e39a44f3215788edf83187b80", + "reference": "b38026df55197f9e39a44f3215788edf83187b80", "shasum": "" }, "require": { @@ -12873,7 +12891,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.3.3" + "source": "https://github.com/symfony/options-resolver/tree/v7.4.0" }, "funding": [ { @@ -12893,20 +12911,20 @@ "type": "tidelift" } ], - "time": "2025-08-05T10:16:07+00:00" + "time": "2025-11-12T15:39:26+00:00" }, { "name": "symfony/password-hasher", - "version": "v7.3.0", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "31fbe66af859582a20b803f38be96be8accdf2c3" + "reference": "aa075ce6f54fe931f03c1e382597912f4fd94e1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/31fbe66af859582a20b803f38be96be8accdf2c3", - "reference": "31fbe66af859582a20b803f38be96be8accdf2c3", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/aa075ce6f54fe931f03c1e382597912f4fd94e1e", + "reference": "aa075ce6f54fe931f03c1e382597912f4fd94e1e", "shasum": "" }, "require": { @@ -12916,8 +12934,8 @@ "symfony/security-core": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/security-core": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -12949,7 +12967,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v7.3.0" + "source": "https://github.com/symfony/password-hasher/tree/v7.4.0" }, "funding": [ { @@ -12960,12 +12978,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-02-04T08:22:58+00:00" + "time": "2025-08-13T16:46:49+00:00" }, { "name": "symfony/polyfill-ctype", @@ -13552,6 +13574,86 @@ ], "time": "2025-06-24T13:30:11+00:00" }, + { + "name": "symfony/polyfill-php85", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php85.git", + "reference": "d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91", + "reference": "d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php85\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.5+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php85/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-06-23T16:12:55+00:00" + }, { "name": "symfony/polyfill-uuid", "version": "v1.33.0", @@ -13637,16 +13739,16 @@ }, { "name": "symfony/process", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b" + "reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/f24f8f316367b30810810d4eb30c543d7003ff3b", - "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b", + "url": "https://api.github.com/repos/symfony/process/zipball/7ca8dc2d0dcf4882658313aba8be5d9fd01026c8", + "reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8", "shasum": "" }, "require": { @@ -13678,7 +13780,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.3.4" + "source": "https://github.com/symfony/process/tree/v7.4.0" }, "funding": [ { @@ -13698,28 +13800,29 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-10-16T11:21:06+00:00" }, { "name": "symfony/property-access", - "version": "v7.3.3", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7" + "reference": "537626149d2910ca43eb9ce465654366bf4442f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7", - "reference": "4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7", + "url": "https://api.github.com/repos/symfony/property-access/zipball/537626149d2910ca43eb9ce465654366bf4442f4", + "reference": "537626149d2910ca43eb9ce465654366bf4442f4", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/property-info": "^6.4|^7.0" + "symfony/property-info": "^6.4|^7.0|^8.0" }, "require-dev": { - "symfony/cache": "^6.4|^7.0" + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4.1|^7.0.1|^8.0" }, "type": "library", "autoload": { @@ -13758,7 +13861,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v7.3.3" + "source": "https://github.com/symfony/property-access/tree/v7.4.0" }, "funding": [ { @@ -13778,27 +13881,27 @@ "type": "tidelift" } ], - "time": "2025-08-04T15:15:28+00:00" + "time": "2025-09-08T21:14:32+00:00" }, { "name": "symfony/property-info", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "0b346ed259dc5da43535caf243005fe7d4b0f051" + "reference": "c3c686e3d3a33a99f6967e69d6d5832acb7c25a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/0b346ed259dc5da43535caf243005fe7d4b0f051", - "reference": "0b346ed259dc5da43535caf243005fe7d4b0f051", + "url": "https://api.github.com/repos/symfony/property-info/zipball/c3c686e3d3a33a99f6967e69d6d5832acb7c25a1", + "reference": "c3c686e3d3a33a99f6967e69d6d5832acb7c25a1", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/string": "^6.4|^7.0", - "symfony/type-info": "^7.3.5" + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/type-info": "^7.3.5|^8.0" }, "conflict": { "phpdocumentor/reflection-docblock": "<5.2", @@ -13810,9 +13913,9 @@ "require-dev": { "phpdocumentor/reflection-docblock": "^5.2", "phpstan/phpdoc-parser": "^1.0|^2.0", - "symfony/cache": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0" + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -13848,7 +13951,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.3.5" + "source": "https://github.com/symfony/property-info/tree/v7.4.0" }, "funding": [ { @@ -13868,26 +13971,26 @@ "type": "tidelift" } ], - "time": "2025-10-05T22:12:41+00:00" + "time": "2025-11-13T08:38:49+00:00" }, { "name": "symfony/psr-http-message-bridge", - "version": "v7.3.0", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "03f2f72319e7acaf2a9f6fcbe30ef17eec51594f" + "reference": "0101ff8bd0506703b045b1670960302d302a726c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/03f2f72319e7acaf2a9f6fcbe30ef17eec51594f", - "reference": "03f2f72319e7acaf2a9f6fcbe30ef17eec51594f", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/0101ff8bd0506703b045b1670960302d302a726c", + "reference": "0101ff8bd0506703b045b1670960302d302a726c", "shasum": "" }, "require": { "php": ">=8.2", "psr/http-message": "^1.0|^2.0", - "symfony/http-foundation": "^6.4|^7.0" + "symfony/http-foundation": "^6.4|^7.0|^8.0" }, "conflict": { "php-http/discovery": "<1.15", @@ -13897,11 +14000,12 @@ "nyholm/psr7": "^1.1", "php-http/discovery": "^1.15", "psr/log": "^1.1.4|^2|^3", - "symfony/browser-kit": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/framework-bundle": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0" + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4.13|^7.1.6|^8.0", + "symfony/http-kernel": "^6.4.13|^7.1.6|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6|^8.0" }, "type": "symfony-bridge", "autoload": { @@ -13935,7 +14039,7 @@ "psr-7" ], "support": { - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v7.3.0" + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v7.4.0" }, "funding": [ { @@ -13946,34 +14050,38 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-26T08:57:56+00:00" + "time": "2025-11-13T08:38:49+00:00" }, { "name": "symfony/rate-limiter", - "version": "v7.3.2", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/rate-limiter.git", - "reference": "7e855541d302ba752f86fb0e97932e7969fe9c04" + "reference": "5c6df5bc10308505bb0fa8d1388bc6bd8a628ba8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/rate-limiter/zipball/7e855541d302ba752f86fb0e97932e7969fe9c04", - "reference": "7e855541d302ba752f86fb0e97932e7969fe9c04", + "url": "https://api.github.com/repos/symfony/rate-limiter/zipball/5c6df5bc10308505bb0fa8d1388bc6bd8a628ba8", + "reference": "5c6df5bc10308505bb0fa8d1388bc6bd8a628ba8", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/options-resolver": "^7.3" + "symfony/options-resolver": "^7.3|^8.0" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/lock": "^6.4|^7.0" + "symfony/lock": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -14005,7 +14113,7 @@ "rate-limiter" ], "support": { - "source": "https://github.com/symfony/rate-limiter/tree/v7.3.2" + "source": "https://github.com/symfony/rate-limiter/tree/v7.4.0" }, "funding": [ { @@ -14025,20 +14133,20 @@ "type": "tidelift" } ], - "time": "2025-07-07T08:17:57+00:00" + "time": "2025-08-04T07:05:15+00:00" }, { "name": "symfony/routing", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "c97abe725f2a1a858deca629a6488c8fc20c3091" + "reference": "4720254cb2644a0b876233d258a32bf017330db7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/c97abe725f2a1a858deca629a6488c8fc20c3091", - "reference": "c97abe725f2a1a858deca629a6488c8fc20c3091", + "url": "https://api.github.com/repos/symfony/routing/zipball/4720254cb2644a0b876233d258a32bf017330db7", + "reference": "4720254cb2644a0b876233d258a32bf017330db7", "shasum": "" }, "require": { @@ -14052,11 +14160,11 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0" + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -14090,7 +14198,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.3.6" + "source": "https://github.com/symfony/routing/tree/v7.4.0" }, "funding": [ { @@ -14110,20 +14218,20 @@ "type": "tidelift" } ], - "time": "2025-11-05T07:57:47+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "symfony/runtime", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "3550e2711e30bfa5d808514781cd52d1cc1d9e9f" + "reference": "e3dd6c0f46a6810b3245726e8452cee45754e628" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/3550e2711e30bfa5d808514781cd52d1cc1d9e9f", - "reference": "3550e2711e30bfa5d808514781cd52d1cc1d9e9f", + "url": "https://api.github.com/repos/symfony/runtime/zipball/e3dd6c0f46a6810b3245726e8452cee45754e628", + "reference": "e3dd6c0f46a6810b3245726e8452cee45754e628", "shasum": "" }, "require": { @@ -14135,10 +14243,10 @@ }, "require-dev": { "composer/composer": "^2.6", - "symfony/console": "^6.4|^7.0", - "symfony/dotenv": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dotenv": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0" }, "type": "composer-plugin", "extra": { @@ -14173,7 +14281,7 @@ "runtime" ], "support": { - "source": "https://github.com/symfony/runtime/tree/v7.3.4" + "source": "https://github.com/symfony/runtime/tree/v7.4.0" }, "funding": [ { @@ -14193,36 +14301,37 @@ "type": "tidelift" } ], - "time": "2025-09-11T15:31:28+00:00" + "time": "2025-11-04T03:05:49+00:00" }, { "name": "symfony/security-bundle", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "f750d9abccbeaa433c56f6a4eb2073166476a75a" + "reference": "48a64e746857464a5e8fd7bab84b31c9ba967eb9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/f750d9abccbeaa433c56f6a4eb2073166476a75a", - "reference": "f750d9abccbeaa433c56f6a4eb2073166476a75a", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/48a64e746857464a5e8fd7bab84b31c9ba967eb9", + "reference": "48a64e746857464a5e8fd7bab84b31c9ba967eb9", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "ext-xml": "*", "php": ">=8.2", - "symfony/clock": "^6.4|^7.0", - "symfony/config": "^7.3", - "symfony/dependency-injection": "^6.4.11|^7.1.4", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/password-hasher": "^6.4|^7.0", - "symfony/security-core": "^7.3", - "symfony/security-csrf": "^6.4|^7.0", - "symfony/security-http": "^7.3", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^6.4.11|^7.1.4|^8.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4.13|^7.1.6|^8.0", + "symfony/password-hasher": "^6.4|^7.0|^8.0", + "symfony/security-core": "^7.4|^8.0", + "symfony/security-csrf": "^6.4|^7.0|^8.0", + "symfony/security-http": "^7.4|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -14236,25 +14345,26 @@ "symfony/validator": "<6.4" }, "require-dev": { - "symfony/asset": "^6.4|^7.0", - "symfony/browser-kit": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/css-selector": "^6.4|^7.0", - "symfony/dom-crawler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/form": "^6.4|^7.0", - "symfony/framework-bundle": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/ldap": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/rate-limiter": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", - "symfony/twig-bridge": "^6.4|^7.0", - "symfony/twig-bundle": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0", - "twig/twig": "^3.12", + "symfony/asset": "^6.4|^7.0|^8.0", + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/dom-crawler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/form": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4.13|^7.1.6|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/ldap": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/twig-bridge": "^6.4|^7.0|^8.0", + "symfony/twig-bundle": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0", + "twig/twig": "^3.15", "web-token/jwt-library": "^3.3.2|^4.0" }, "type": "symfony-bundle", @@ -14283,7 +14393,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/v7.3.4" + "source": "https://github.com/symfony/security-bundle/tree/v7.4.0" }, "funding": [ { @@ -14303,27 +14413,27 @@ "type": "tidelift" } ], - "time": "2025-09-22T15:31:00+00:00" + "time": "2025-11-14T09:57:20+00:00" }, { "name": "symfony/security-core", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "772a7c1eddd8bf8a977a67e6e8adc59650c604eb" + "reference": "fe4d25e5700a2f3b605bf23f520be57504ae5c51" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/772a7c1eddd8bf8a977a67e6e8adc59650c604eb", - "reference": "772a7c1eddd8bf8a977a67e6e8adc59650c604eb", + "url": "https://api.github.com/repos/symfony/security-core/zipball/fe4d25e5700a2f3b605bf23f520be57504ae5c51", + "reference": "fe4d25e5700a2f3b605bf23f520be57504ae5c51", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/event-dispatcher-contracts": "^2.5|^3", - "symfony/password-hasher": "^6.4|^7.0", + "symfony/password-hasher": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -14338,15 +14448,15 @@ "psr/cache": "^1.0|^2.0|^3.0", "psr/container": "^1.1|^2.0", "psr/log": "^1|^2|^3", - "symfony/cache": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/ldap": "^6.4|^7.0", - "symfony/string": "^6.4|^7.0", - "symfony/translation": "^6.4.3|^7.0.3", - "symfony/validator": "^6.4|^7.0" + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/ldap": "^6.4|^7.0|^8.0", + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4.3|^7.0.3|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -14374,7 +14484,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v7.3.5" + "source": "https://github.com/symfony/security-core/tree/v7.4.0" }, "funding": [ { @@ -14394,33 +14504,33 @@ "type": "tidelift" } ], - "time": "2025-10-24T14:27:20+00:00" + "time": "2025-11-21T15:26:00+00:00" }, { "name": "symfony/security-csrf", - "version": "v7.3.0", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "2b4b0c46c901729e4e90719eacd980381f53e0a3" + "reference": "ec41009e83589d0b3d86bd131d07e6fc8ecf35ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/2b4b0c46c901729e4e90719eacd980381f53e0a3", - "reference": "2b4b0c46c901729e4e90719eacd980381f53e0a3", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/ec41009e83589d0b3d86bd131d07e6fc8ecf35ab", + "reference": "ec41009e83589d0b3d86bd131d07e6fc8ecf35ab", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/security-core": "^6.4|^7.0" + "symfony/security-core": "^6.4|^7.0|^8.0" }, "conflict": { "symfony/http-foundation": "<6.4" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0" + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -14448,7 +14558,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v7.3.0" + "source": "https://github.com/symfony/security-csrf/tree/v7.4.0" }, "funding": [ { @@ -14459,55 +14569,59 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-01-02T18:42:10+00:00" + "time": "2025-11-21T15:26:00+00:00" }, { "name": "symfony/security-http", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "e79a63fd5dec6e5b1ba31227e98d860a4f8ba95c" + "reference": "92f9cc6494f3d29042ac35c2ee5209191bbbb781" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/e79a63fd5dec6e5b1ba31227e98d860a4f8ba95c", - "reference": "e79a63fd5dec6e5b1ba31227e98d860a4f8ba95c", + "url": "https://api.github.com/repos/symfony/security-http/zipball/92f9cc6494f3d29042ac35c2ee5209191bbbb781", + "reference": "92f9cc6494f3d29042ac35c2ee5209191bbbb781", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", "symfony/polyfill-mbstring": "~1.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/security-core": "^7.3", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/security-core": "^7.3|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { "symfony/clock": "<6.4", - "symfony/event-dispatcher": "<6.4", "symfony/http-client-contracts": "<3.0", "symfony/security-bundle": "<6.4", "symfony/security-csrf": "<6.4" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/cache": "^6.4|^7.0", - "symfony/clock": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", "symfony/http-client-contracts": "^3.0", - "symfony/rate-limiter": "^6.4|^7.0", - "symfony/routing": "^6.4|^7.0", - "symfony/security-csrf": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/security-csrf": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", "web-token/jwt-library": "^3.3.2|^4.0" }, "type": "library", @@ -14536,7 +14650,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v7.3.5" + "source": "https://github.com/symfony/security-http/tree/v7.4.0" }, "funding": [ { @@ -14556,20 +14670,20 @@ "type": "tidelift" } ], - "time": "2025-10-13T09:30:10+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "symfony/serializer", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "ba2e50a5f2870c93f0f47ca1a4e56e4bbe274035" + "reference": "5a3bbf317b3f1025126b6d9debce53515601ab43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/ba2e50a5f2870c93f0f47ca1a4e56e4bbe274035", - "reference": "ba2e50a5f2870c93f0f47ca1a4e56e4bbe274035", + "url": "https://api.github.com/repos/symfony/serializer/zipball/5a3bbf317b3f1025126b6d9debce53515601ab43", + "reference": "5a3bbf317b3f1025126b6d9debce53515601ab43", "shasum": "" }, "require": { @@ -14592,26 +14706,26 @@ "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", "phpstan/phpdoc-parser": "^1.0|^2.0", "seld/jsonlint": "^1.10", - "symfony/cache": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^7.2", - "symfony/error-handler": "^6.4|^7.0", - "symfony/filesystem": "^6.4|^7.0", - "symfony/form": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^7.2|^8.0", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/filesystem": "^6.4|^7.0|^8.0", + "symfony/form": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", "symfony/translation-contracts": "^2.5|^3", - "symfony/type-info": "^7.1.8", - "symfony/uid": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0", - "symfony/var-exporter": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0" + "symfony/type-info": "^7.1.8|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -14639,7 +14753,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/v7.3.5" + "source": "https://github.com/symfony/serializer/tree/v7.4.0" }, "funding": [ { @@ -14659,7 +14773,7 @@ "type": "tidelift" } ], - "time": "2025-10-08T11:26:21+00:00" + "time": "2025-11-18T13:23:20+00:00" }, { "name": "symfony/service-contracts", @@ -14823,16 +14937,16 @@ }, { "name": "symfony/stopwatch", - "version": "v7.3.0", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd" + "reference": "8a24af0a2e8a872fb745047180649b8418303084" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", - "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/8a24af0a2e8a872fb745047180649b8418303084", + "reference": "8a24af0a2e8a872fb745047180649b8418303084", "shasum": "" }, "require": { @@ -14865,7 +14979,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.3.0" + "source": "https://github.com/symfony/stopwatch/tree/v7.4.0" }, "funding": [ { @@ -14876,31 +14990,36 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-02-24T10:49:57+00:00" + "time": "2025-08-04T07:05:15+00:00" }, { "name": "symfony/string", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f96476035142921000338bad71e5247fbc138872" + "reference": "d50e862cb0a0e0886f73ca1f31b865efbb795003" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f96476035142921000338bad71e5247fbc138872", - "reference": "f96476035142921000338bad71e5247fbc138872", + "url": "https://api.github.com/repos/symfony/string/zipball/d50e862cb0a0e0886f73ca1f31b865efbb795003", + "reference": "d50e862cb0a0e0886f73ca1f31b865efbb795003", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-grapheme": "~1.33", "symfony/polyfill-intl-normalizer": "~1.0", "symfony/polyfill-mbstring": "~1.0" }, @@ -14908,11 +15027,11 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/emoji": "^7.1", - "symfony/http-client": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", + "symfony/emoji": "^7.1|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.4|^7.0" + "symfony/var-exporter": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -14951,7 +15070,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.3.4" + "source": "https://github.com/symfony/string/tree/v7.4.0" }, "funding": [ { @@ -14971,27 +15090,27 @@ "type": "tidelift" } ], - "time": "2025-09-11T14:36:48+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "symfony/translation", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "ec25870502d0c7072d086e8ffba1420c85965174" + "reference": "2d01ca0da3f092f91eeedb46f24aa30d2fca8f68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/ec25870502d0c7072d086e8ffba1420c85965174", - "reference": "ec25870502d0c7072d086e8ffba1420c85965174", + "url": "https://api.github.com/repos/symfony/translation/zipball/2d01ca0da3f092f91eeedb46f24aa30d2fca8f68", + "reference": "2d01ca0da3f092f91eeedb46f24aa30d2fca8f68", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.5|^3.0" + "symfony/translation-contracts": "^2.5.3|^3.3" }, "conflict": { "nikic/php-parser": "<5.0", @@ -15010,17 +15129,17 @@ "require-dev": { "nikic/php-parser": "^5.0", "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", "symfony/http-client-contracts": "^2.5|^3.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^6.4|^7.0", + "symfony/routing": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^6.4|^7.0" + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -15051,7 +15170,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.3.4" + "source": "https://github.com/symfony/translation/tree/v7.4.0" }, "funding": [ { @@ -15071,7 +15190,7 @@ "type": "tidelift" } ], - "time": "2025-09-07T11:39:36+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "symfony/translation-contracts", @@ -15157,16 +15276,16 @@ }, { "name": "symfony/twig-bridge", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "d1aaec8eee1f5591f56b9efe00194d73a8e38319" + "reference": "e96998da928007554b8b8c02e677861877daced9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/d1aaec8eee1f5591f56b9efe00194d73a8e38319", - "reference": "d1aaec8eee1f5591f56b9efe00194d73a8e38319", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/e96998da928007554b8b8c02e677861877daced9", + "reference": "e96998da928007554b8b8c02e677861877daced9", "shasum": "" }, "require": { @@ -15191,33 +15310,33 @@ "egulias/email-validator": "^2.1.10|^3|^4", "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^6.4|^7.0", - "symfony/asset-mapper": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/emoji": "^7.1", - "symfony/expression-language": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", - "symfony/form": "^6.4.20|^7.2.5", - "symfony/html-sanitizer": "^6.4|^7.0", - "symfony/http-foundation": "^7.3", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", + "symfony/asset": "^6.4|^7.0|^8.0", + "symfony/asset-mapper": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/emoji": "^7.1|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/form": "^6.4.20|^7.2.5|^8.0", + "symfony/html-sanitizer": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^7.3|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/routing": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", "symfony/security-acl": "^2.8|^3.0", - "symfony/security-core": "^6.4|^7.0", - "symfony/security-csrf": "^6.4|^7.0", - "symfony/security-http": "^6.4|^7.0", - "symfony/serializer": "^6.4.3|^7.0.3", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/web-link": "^6.4|^7.0", - "symfony/workflow": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0", + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/security-csrf": "^6.4|^7.0|^8.0", + "symfony/security-http": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4.3|^7.0.3|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/web-link": "^6.4|^7.0|^8.0", + "symfony/workflow": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0", "twig/cssinliner-extra": "^3", "twig/inky-extra": "^3", "twig/markdown-extra": "^3" @@ -15248,7 +15367,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v7.3.6" + "source": "https://github.com/symfony/twig-bridge/tree/v7.4.0" }, "funding": [ { @@ -15268,30 +15387,30 @@ "type": "tidelift" } ], - "time": "2025-11-04T15:37:51+00:00" + "time": "2025-11-05T14:29:59+00:00" }, { "name": "symfony/twig-bundle", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "da5c778a8416fcce5318737c4d944f6fa2bb3f81" + "reference": "f83f530d00d1bbc6f7fafeb433077887c83326ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/da5c778a8416fcce5318737c4d944f6fa2bb3f81", - "reference": "da5c778a8416fcce5318737c4d944f6fa2bb3f81", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/f83f530d00d1bbc6f7fafeb433077887c83326ef", + "reference": "f83f530d00d1bbc6f7fafeb433077887c83326ef", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "php": ">=8.2", - "symfony/config": "^7.3", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/twig-bridge": "^7.3", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4.13|^7.1.6|^8.0", + "symfony/twig-bridge": "^7.3|^8.0", "twig/twig": "^3.12" }, "conflict": { @@ -15299,16 +15418,17 @@ "symfony/translation": "<6.4" }, "require-dev": { - "symfony/asset": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", - "symfony/form": "^6.4|^7.0", - "symfony/framework-bundle": "^6.4|^7.0", - "symfony/routing": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", - "symfony/web-link": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0" + "symfony/asset": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/form": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4.13|^7.1.6|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/web-link": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "symfony-bundle", "autoload": { @@ -15336,7 +15456,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/v7.3.4" + "source": "https://github.com/symfony/twig-bundle/tree/v7.4.0" }, "funding": [ { @@ -15356,20 +15476,20 @@ "type": "tidelift" } ], - "time": "2025-09-10T12:00:31+00:00" + "time": "2025-10-02T07:41:02+00:00" }, { "name": "symfony/type-info", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/type-info.git", - "reference": "8b36f41421160db56914f897b57eaa6a830758b3" + "reference": "7f9743e921abcce92a03fc693530209c59e73076" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/type-info/zipball/8b36f41421160db56914f897b57eaa6a830758b3", - "reference": "8b36f41421160db56914f897b57eaa6a830758b3", + "url": "https://api.github.com/repos/symfony/type-info/zipball/7f9743e921abcce92a03fc693530209c59e73076", + "reference": "7f9743e921abcce92a03fc693530209c59e73076", "shasum": "" }, "require": { @@ -15419,7 +15539,7 @@ "type" ], "support": { - "source": "https://github.com/symfony/type-info/tree/v7.3.5" + "source": "https://github.com/symfony/type-info/tree/v7.4.0" }, "funding": [ { @@ -15439,20 +15559,20 @@ "type": "tidelift" } ], - "time": "2025-10-16T12:30:12+00:00" + "time": "2025-11-07T09:36:46+00:00" }, { "name": "symfony/uid", - "version": "v7.3.1", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "a69f69f3159b852651a6bf45a9fdd149520525bb" + "reference": "2498e9f81b7baa206f44de583f2f48350b90142c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/a69f69f3159b852651a6bf45a9fdd149520525bb", - "reference": "a69f69f3159b852651a6bf45a9fdd149520525bb", + "url": "https://api.github.com/repos/symfony/uid/zipball/2498e9f81b7baa206f44de583f2f48350b90142c", + "reference": "2498e9f81b7baa206f44de583f2f48350b90142c", "shasum": "" }, "require": { @@ -15460,7 +15580,7 @@ "symfony/polyfill-uuid": "^1.15" }, "require-dev": { - "symfony/console": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -15497,7 +15617,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v7.3.1" + "source": "https://github.com/symfony/uid/tree/v7.4.0" }, "funding": [ { @@ -15508,12 +15628,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-27T19:55:54+00:00" + "time": "2025-09-25T11:02:55+00:00" }, { "name": "symfony/ux-translator", @@ -15701,16 +15825,16 @@ }, { "name": "symfony/validator", - "version": "v7.3.7", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "8290a095497c3fe5046db21888d1f75b54ddf39d" + "reference": "829d4acbecc6a9c097ca9cb118d7f96f46d33da9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/8290a095497c3fe5046db21888d1f75b54ddf39d", - "reference": "8290a095497c3fe5046db21888d1f75b54ddf39d", + "url": "https://api.github.com/repos/symfony/validator/zipball/829d4acbecc6a9c097ca9cb118d7f96f46d33da9", + "reference": "829d4acbecc6a9c097ca9cb118d7f96f46d33da9", "shasum": "" }, "require": { @@ -15730,27 +15854,29 @@ "symfony/intl": "<6.4", "symfony/property-info": "<6.4", "symfony/translation": "<6.4.3|>=7.0,<7.0.3", + "symfony/var-exporter": "<6.4.25|>=7.0,<7.3.3", "symfony/yaml": "<6.4" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3|^4", - "symfony/cache": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/string": "^6.4|^7.0", - "symfony/translation": "^6.4.3|^7.0.3", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4.3|^7.0.3|^8.0", "symfony/type-info": "^7.1.8", - "symfony/yaml": "^6.4|^7.0" + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -15779,7 +15905,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.3.7" + "source": "https://github.com/symfony/validator/tree/v7.4.0" }, "funding": [ { @@ -15799,20 +15925,20 @@ "type": "tidelift" } ], - "time": "2025-11-08T16:29:29+00:00" + "time": "2025-11-18T13:23:20+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "476c4ae17f43a9a36650c69879dcf5b1e6ae724d" + "reference": "41fd6c4ae28c38b294b42af6db61446594a0dece" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/476c4ae17f43a9a36650c69879dcf5b1e6ae724d", - "reference": "476c4ae17f43a9a36650c69879dcf5b1e6ae724d", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/41fd6c4ae28c38b294b42af6db61446594a0dece", + "reference": "41fd6c4ae28c38b294b42af6db61446594a0dece", "shasum": "" }, "require": { @@ -15824,10 +15950,10 @@ "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/uid": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", "twig/twig": "^3.12" }, "bin": [ @@ -15866,7 +15992,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.3.5" + "source": "https://github.com/symfony/var-dumper/tree/v7.4.0" }, "funding": [ { @@ -15886,20 +16012,20 @@ "type": "tidelift" } ], - "time": "2025-09-27T09:00:46+00:00" + "time": "2025-10-27T20:36:44+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "0f020b544a30a7fe8ba972e53ee48a74c0bc87f4" + "reference": "03a60f169c79a28513a78c967316fbc8bf17816f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/0f020b544a30a7fe8ba972e53ee48a74c0bc87f4", - "reference": "0f020b544a30a7fe8ba972e53ee48a74c0bc87f4", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/03a60f169c79a28513a78c967316fbc8bf17816f", + "reference": "03a60f169c79a28513a78c967316fbc8bf17816f", "shasum": "" }, "require": { @@ -15907,9 +16033,9 @@ "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { - "symfony/property-access": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -15947,7 +16073,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.3.4" + "source": "https://github.com/symfony/var-exporter/tree/v7.4.0" }, "funding": [ { @@ -15967,20 +16093,20 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-09-11T10:15:23+00:00" }, { "name": "symfony/web-link", - "version": "v7.3.0", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/web-link.git", - "reference": "7697f74fce67555665339423ce453cc8216a98ff" + "reference": "c62edd6b52e31cf2f6f38fd3386725f364f19942" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-link/zipball/7697f74fce67555665339423ce453cc8216a98ff", - "reference": "7697f74fce67555665339423ce453cc8216a98ff", + "url": "https://api.github.com/repos/symfony/web-link/zipball/c62edd6b52e31cf2f6f38fd3386725f364f19942", + "reference": "c62edd6b52e31cf2f6f38fd3386725f364f19942", "shasum": "" }, "require": { @@ -15994,7 +16120,7 @@ "psr/link-implementation": "1.0|2.0" }, "require-dev": { - "symfony/http-kernel": "^6.4|^7.0" + "symfony/http-kernel": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -16034,7 +16160,7 @@ "push" ], "support": { - "source": "https://github.com/symfony/web-link/tree/v7.3.0" + "source": "https://github.com/symfony/web-link/tree/v7.4.0" }, "funding": [ { @@ -16045,12 +16171,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-05-19T13:28:18+00:00" + "time": "2025-08-04T07:05:15+00:00" }, { "name": "symfony/webpack-encore-bundle", @@ -16130,28 +16260,28 @@ }, { "name": "symfony/yaml", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "90208e2fc6f68f613eae7ca25a2458a931b1bacc" + "reference": "6c84a4b55aee4cd02034d1c528e83f69ddf63810" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/90208e2fc6f68f613eae7ca25a2458a931b1bacc", - "reference": "90208e2fc6f68f613eae7ca25a2458a931b1bacc", + "url": "https://api.github.com/repos/symfony/yaml/zipball/6c84a4b55aee4cd02034d1c528e83f69ddf63810", + "reference": "6c84a4b55aee4cd02034d1c528e83f69ddf63810", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8" }, "conflict": { "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -16182,7 +16312,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.3.5" + "source": "https://github.com/symfony/yaml/tree/v7.4.0" }, "funding": [ { @@ -16202,7 +16332,7 @@ "type": "tidelift" } ], - "time": "2025-09-27T09:00:46+00:00" + "time": "2025-11-16T10:14:42+00:00" }, { "name": "symplify/easy-coding-standard", @@ -20841,27 +20971,28 @@ }, { "name": "symfony/browser-kit", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "e9a9fd604296b17bf90939c3647069f1f16ef04e" + "reference": "3bb26dafce31633b1f699894c86379eefc8af5bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/e9a9fd604296b17bf90939c3647069f1f16ef04e", - "reference": "e9a9fd604296b17bf90939c3647069f1f16ef04e", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/3bb26dafce31633b1f699894c86379eefc8af5bb", + "reference": "3bb26dafce31633b1f699894c86379eefc8af5bb", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/dom-crawler": "^6.4|^7.0" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/dom-crawler": "^6.4|^7.0|^8.0" }, "require-dev": { - "symfony/css-selector": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0" + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -20889,7 +21020,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/v7.3.6" + "source": "https://github.com/symfony/browser-kit/tree/v7.4.0" }, "funding": [ { @@ -20909,34 +21040,34 @@ "type": "tidelift" } ], - "time": "2025-11-05T07:57:47+00:00" + "time": "2025-11-05T14:29:59+00:00" }, { "name": "symfony/debug-bundle", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/debug-bundle.git", - "reference": "0aee008fb501677fa5b62ea5f65cabcf041629ef" + "reference": "329383fb895353e3c8ab792cc35c4a7e7b17881b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/0aee008fb501677fa5b62ea5f65cabcf041629ef", - "reference": "0aee008fb501677fa5b62ea5f65cabcf041629ef", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/329383fb895353e3c8ab792cc35c4a7e7b17881b", + "reference": "329383fb895353e3c8ab792cc35c4a7e7b17881b", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "ext-xml": "*", "php": ">=8.2", - "symfony/config": "^7.3", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/twig-bridge": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/config": "^7.3|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/twig-bridge": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "require-dev": { - "symfony/web-profiler-bundle": "^6.4|^7.0" + "symfony/web-profiler-bundle": "^6.4|^7.0|^8.0" }, "type": "symfony-bundle", "autoload": { @@ -20964,7 +21095,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/v7.3.5" + "source": "https://github.com/symfony/debug-bundle/tree/v7.4.0" }, "funding": [ { @@ -20984,7 +21115,7 @@ "type": "tidelift" } ], - "time": "2025-10-13T11:49:56+00:00" + "time": "2025-10-24T13:56:35+00:00" }, { "name": "symfony/maker-bundle", @@ -21086,28 +21217,24 @@ }, { "name": "symfony/phpunit-bridge", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "ed77a629c13979e051b7000a317966474d566398" + "reference": "059b051b38f2138ef104dd848fa48f0cbbb7d78b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/ed77a629c13979e051b7000a317966474d566398", - "reference": "ed77a629c13979e051b7000a317966474d566398", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/059b051b38f2138ef104dd848fa48f0cbbb7d78b", + "reference": "059b051b38f2138ef104dd848fa48f0cbbb7d78b", "shasum": "" }, "require": { - "php": ">=7.2.5" - }, - "conflict": { - "phpunit/phpunit": "<7.5|9.1.2" + "php": ">=8.1.0" }, "require-dev": { - "symfony/deprecation-contracts": "^2.5|^3.0", - "symfony/error-handler": "^5.4|^6.4|^7.0", - "symfony/polyfill-php81": "^1.27" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4.3|^7.0.3|^8.0" }, "bin": [ "bin/simple-phpunit" @@ -21151,7 +21278,7 @@ "testing" ], "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v7.3.4" + "source": "https://github.com/symfony/phpunit-bridge/tree/v7.4.0" }, "funding": [ { @@ -21171,32 +21298,32 @@ "type": "tidelift" } ], - "time": "2025-09-12T12:18:52+00:00" + "time": "2025-10-28T22:44:23+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "c2ed11cc0e9093fe0425ad52498d26a458842e0c" + "reference": "dcd955ca9c60f2942194854518049f8ae4dbd696" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/c2ed11cc0e9093fe0425ad52498d26a458842e0c", - "reference": "c2ed11cc0e9093fe0425ad52498d26a458842e0c", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/dcd955ca9c60f2942194854518049f8ae4dbd696", + "reference": "dcd955ca9c60f2942194854518049f8ae4dbd696", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "php": ">=8.2", - "symfony/config": "^7.3", + "symfony/config": "^7.3|^8.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/framework-bundle": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/routing": "^6.4|^7.0", - "symfony/twig-bundle": "^6.4|^7.0", - "twig/twig": "^3.12" + "symfony/framework-bundle": "^6.4.13|^7.1.6|^8.0", + "symfony/http-kernel": "^6.4.13|^7.1.6|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/twig-bundle": "^6.4|^7.0|^8.0", + "twig/twig": "^3.15" }, "conflict": { "symfony/form": "<6.4", @@ -21206,10 +21333,11 @@ "symfony/workflow": "<7.3" }, "require-dev": { - "symfony/browser-kit": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/css-selector": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0" + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0" }, "type": "symfony-bundle", "autoload": { @@ -21240,7 +21368,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.3.5" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.4.0" }, "funding": [ { @@ -21260,7 +21388,7 @@ "type": "tidelift" } ], - "time": "2025-10-06T13:36:11+00:00" + "time": "2025-11-19T14:48:01+00:00" }, { "name": "theseer/tokenizer", diff --git a/config/reference.php b/config/reference.php new file mode 100644 index 00000000..6ea52419 --- /dev/null +++ b/config/reference.php @@ -0,0 +1,2896 @@ + [ + * 'App\\' => [ + * 'resource' => '../src/', + * ], + * ], + * ]); + * ``` + * + * @psalm-type ImportsConfig = list + * @psalm-type ParametersConfig = array|null>|null> + * @psalm-type ArgumentsType = list|array + * @psalm-type CallType = array|array{0:string, 1?:ArgumentsType, 2?:bool}|array{method:string, arguments?:ArgumentsType, returns_clone?:bool} + * @psalm-type TagsType = list>> // arrays inside the list must have only one element, with the tag name as the key + * @psalm-type CallbackType = string|array{0:string|ReferenceConfigurator,1:string}|\Closure|ReferenceConfigurator|ExpressionConfigurator + * @psalm-type DeprecationType = array{package: string, version: string, message?: string} + * @psalm-type DefaultsType = array{ + * public?: bool, + * tags?: TagsType, + * resource_tags?: TagsType, + * autowire?: bool, + * autoconfigure?: bool, + * bind?: array, + * } + * @psalm-type InstanceofType = array{ + * shared?: bool, + * lazy?: bool|string, + * public?: bool, + * properties?: array, + * configurator?: CallbackType, + * calls?: list, + * tags?: TagsType, + * resource_tags?: TagsType, + * autowire?: bool, + * bind?: array, + * constructor?: string, + * } + * @psalm-type DefinitionType = array{ + * class?: string, + * file?: string, + * parent?: string, + * shared?: bool, + * synthetic?: bool, + * lazy?: bool|string, + * public?: bool, + * abstract?: bool, + * deprecated?: DeprecationType, + * factory?: CallbackType, + * configurator?: CallbackType, + * arguments?: ArgumentsType, + * properties?: array, + * calls?: list, + * tags?: TagsType, + * resource_tags?: TagsType, + * decorates?: string, + * decoration_inner_name?: string, + * decoration_priority?: int, + * decoration_on_invalid?: 'exception'|'ignore'|null, + * autowire?: bool, + * autoconfigure?: bool, + * bind?: array, + * constructor?: string, + * from_callable?: CallbackType, + * } + * @psalm-type AliasType = string|array{ + * alias: string, + * public?: bool, + * deprecated?: DeprecationType, + * } + * @psalm-type PrototypeType = array{ + * resource: string, + * namespace?: string, + * exclude?: string|list, + * parent?: string, + * shared?: bool, + * lazy?: bool|string, + * public?: bool, + * abstract?: bool, + * deprecated?: DeprecationType, + * factory?: CallbackType, + * arguments?: ArgumentsType, + * properties?: array, + * configurator?: CallbackType, + * calls?: list, + * tags?: TagsType, + * resource_tags?: TagsType, + * autowire?: bool, + * autoconfigure?: bool, + * bind?: array, + * constructor?: string, + * } + * @psalm-type StackType = array{ + * stack: list>, + * public?: bool, + * deprecated?: DeprecationType, + * } + * @psalm-type ServicesConfig = array{ + * _defaults?: DefaultsType, + * _instanceof?: InstanceofType, + * ... + * } + * @psalm-type ExtensionType = array + * @psalm-type FrameworkConfig = array{ + * secret?: scalar|null, + * http_method_override?: bool, // Set true to enable support for the '_method' request parameter to determine the intended HTTP method on POST requests. // Default: false + * allowed_http_method_override?: list|null, + * trust_x_sendfile_type_header?: scalar|null, // Set true to enable support for xsendfile in binary file responses. // Default: "%env(bool:default::SYMFONY_TRUST_X_SENDFILE_TYPE_HEADER)%" + * ide?: scalar|null, // Default: "%env(default::SYMFONY_IDE)%" + * test?: bool, + * default_locale?: scalar|null, // Default: "en" + * set_locale_from_accept_language?: bool, // Whether to use the Accept-Language HTTP header to set the Request locale (only when the "_locale" request attribute is not passed). // Default: false + * set_content_language_from_locale?: bool, // Whether to set the Content-Language HTTP header on the Response using the Request locale. // Default: false + * enabled_locales?: list, + * trusted_hosts?: list, + * trusted_proxies?: mixed, // Default: ["%env(default::SYMFONY_TRUSTED_PROXIES)%"] + * trusted_headers?: list, + * error_controller?: scalar|null, // Default: "error_controller" + * handle_all_throwables?: bool, // HttpKernel will handle all kinds of \Throwable. // Default: true + * csrf_protection?: bool|array{ + * enabled?: scalar|null, // Default: null + * stateless_token_ids?: list, + * check_header?: scalar|null, // Whether to check the CSRF token in a header in addition to a cookie when using stateless protection. // Default: false + * cookie_name?: scalar|null, // The name of the cookie to use when using stateless protection. // Default: "csrf-token" + * }, + * form?: bool|array{ // Form configuration + * enabled?: bool, // Default: true + * csrf_protection?: array{ + * enabled?: scalar|null, // Default: null + * token_id?: scalar|null, // Default: null + * field_name?: scalar|null, // Default: "_token" + * field_attr?: array, + * }, + * }, + * http_cache?: bool|array{ // HTTP cache configuration + * enabled?: bool, // Default: false + * debug?: bool, // Default: "%kernel.debug%" + * trace_level?: "none"|"short"|"full", + * trace_header?: scalar|null, + * default_ttl?: int, + * private_headers?: list, + * skip_response_headers?: list, + * allow_reload?: bool, + * allow_revalidate?: bool, + * stale_while_revalidate?: int, + * stale_if_error?: int, + * terminate_on_cache_hit?: bool, + * }, + * esi?: bool|array{ // ESI configuration + * enabled?: bool, // Default: false + * }, + * ssi?: bool|array{ // SSI configuration + * enabled?: bool, // Default: false + * }, + * fragments?: bool|array{ // Fragments configuration + * enabled?: bool, // Default: false + * hinclude_default_template?: scalar|null, // Default: null + * path?: scalar|null, // Default: "/_fragment" + * }, + * profiler?: bool|array{ // Profiler configuration + * enabled?: bool, // Default: false + * collect?: bool, // Default: true + * collect_parameter?: scalar|null, // The name of the parameter to use to enable or disable collection on a per request basis. // Default: null + * only_exceptions?: bool, // Default: false + * only_main_requests?: bool, // Default: false + * dsn?: scalar|null, // Default: "file:%kernel.cache_dir%/profiler" + * collect_serializer_data?: bool, // Enables the serializer data collector and profiler panel. // Default: false + * }, + * workflows?: bool|array{ + * enabled?: bool, // Default: false + * workflows?: array, + * definition_validators?: list, + * support_strategy?: scalar|null, + * initial_marking?: list, + * events_to_dispatch?: list|null, + * places?: list, + * }>, + * transitions: list, + * to?: list, + * weight?: int, // Default: 1 + * metadata?: list, + * }>, + * metadata?: list, + * }>, + * }, + * router?: bool|array{ // Router configuration + * enabled?: bool, // Default: false + * resource: scalar|null, + * type?: scalar|null, + * cache_dir?: scalar|null, // Deprecated: Setting the "framework.router.cache_dir.cache_dir" configuration option is deprecated. It will be removed in version 8.0. // Default: "%kernel.build_dir%" + * default_uri?: scalar|null, // The default URI used to generate URLs in a non-HTTP context. // Default: null + * http_port?: scalar|null, // Default: 80 + * https_port?: scalar|null, // Default: 443 + * strict_requirements?: scalar|null, // set to true to throw an exception when a parameter does not match the requirements set to false to disable exceptions when a parameter does not match the requirements (and return null instead) set to null to disable parameter checks against requirements 'true' is the preferred configuration in development mode, while 'false' or 'null' might be preferred in production // Default: true + * utf8?: bool, // Default: true + * }, + * session?: bool|array{ // Session configuration + * enabled?: bool, // Default: false + * storage_factory_id?: scalar|null, // Default: "session.storage.factory.native" + * handler_id?: scalar|null, // Defaults to using the native session handler, or to the native *file* session handler if "save_path" is not null. + * name?: scalar|null, + * cookie_lifetime?: scalar|null, + * cookie_path?: scalar|null, + * cookie_domain?: scalar|null, + * cookie_secure?: true|false|"auto", // Default: "auto" + * cookie_httponly?: bool, // Default: true + * cookie_samesite?: null|"lax"|"strict"|"none", // Default: "lax" + * use_cookies?: bool, + * gc_divisor?: scalar|null, + * gc_probability?: scalar|null, + * gc_maxlifetime?: scalar|null, + * save_path?: scalar|null, // Defaults to "%kernel.cache_dir%/sessions" if the "handler_id" option is not null. + * metadata_update_threshold?: int, // Seconds to wait between 2 session metadata updates. // Default: 0 + * sid_length?: int, // Deprecated: Setting the "framework.session.sid_length.sid_length" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option. + * sid_bits_per_character?: int, // Deprecated: Setting the "framework.session.sid_bits_per_character.sid_bits_per_character" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option. + * }, + * request?: bool|array{ // Request configuration + * enabled?: bool, // Default: false + * formats?: array>, + * }, + * assets?: bool|array{ // Assets configuration + * enabled?: bool, // Default: true + * strict_mode?: bool, // Throw an exception if an entry is missing from the manifest.json. // Default: false + * version_strategy?: scalar|null, // Default: null + * version?: scalar|null, // Default: null + * version_format?: scalar|null, // Default: "%%s?%%s" + * json_manifest_path?: scalar|null, // Default: null + * base_path?: scalar|null, // Default: "" + * base_urls?: list, + * packages?: array, + * }>, + * }, + * asset_mapper?: bool|array{ // Asset Mapper configuration + * enabled?: bool, // Default: false + * paths?: array, + * excluded_patterns?: list, + * exclude_dotfiles?: bool, // If true, any files starting with "." will be excluded from the asset mapper. // Default: true + * server?: bool, // If true, a "dev server" will return the assets from the public directory (true in "debug" mode only by default). // Default: true + * public_prefix?: scalar|null, // The public path where the assets will be written to (and served from when "server" is true). // Default: "/assets/" + * missing_import_mode?: "strict"|"warn"|"ignore", // Behavior if an asset cannot be found when imported from JavaScript or CSS files - e.g. "import './non-existent.js'". "strict" means an exception is thrown, "warn" means a warning is logged, "ignore" means the import is left as-is. // Default: "warn" + * extensions?: array, + * importmap_path?: scalar|null, // The path of the importmap.php file. // Default: "%kernel.project_dir%/importmap.php" + * importmap_polyfill?: scalar|null, // The importmap name that will be used to load the polyfill. Set to false to disable. // Default: "es-module-shims" + * importmap_script_attributes?: array, + * vendor_dir?: scalar|null, // The directory to store JavaScript vendors. // Default: "%kernel.project_dir%/assets/vendor" + * precompress?: bool|array{ // Precompress assets with Brotli, Zstandard and gzip. + * enabled?: bool, // Default: false + * formats?: list, + * extensions?: list, + * }, + * }, + * translator?: bool|array{ // Translator configuration + * enabled?: bool, // Default: true + * fallbacks?: list, + * logging?: bool, // Default: false + * formatter?: scalar|null, // Default: "translator.formatter.default" + * cache_dir?: scalar|null, // Default: "%kernel.cache_dir%/translations" + * default_path?: scalar|null, // The default path used to load translations. // Default: "%kernel.project_dir%/translations" + * paths?: list, + * pseudo_localization?: bool|array{ + * enabled?: bool, // Default: false + * accents?: bool, // Default: true + * expansion_factor?: float, // Default: 1.0 + * brackets?: bool, // Default: true + * parse_html?: bool, // Default: false + * localizable_html_attributes?: list, + * }, + * providers?: array, + * locales?: list, + * }>, + * globals?: array, + * domain?: string, + * }>, + * }, + * validation?: bool|array{ // Validation configuration + * enabled?: bool, // Default: true + * cache?: scalar|null, // Deprecated: Setting the "framework.validation.cache.cache" configuration option is deprecated. It will be removed in version 8.0. + * enable_attributes?: bool, // Default: true + * static_method?: list, + * translation_domain?: scalar|null, // Default: "validators" + * email_validation_mode?: "html5"|"html5-allow-no-tld"|"strict"|"loose", // Default: "html5" + * mapping?: array{ + * paths?: list, + * }, + * not_compromised_password?: bool|array{ + * enabled?: bool, // When disabled, compromised passwords will be accepted as valid. // Default: true + * endpoint?: scalar|null, // API endpoint for the NotCompromisedPassword Validator. // Default: null + * }, + * disable_translation?: bool, // Default: false + * auto_mapping?: array, + * }>, + * }, + * annotations?: bool|array{ + * enabled?: bool, // Default: false + * }, + * serializer?: bool|array{ // Serializer configuration + * enabled?: bool, // Default: true + * enable_attributes?: bool, // Default: true + * name_converter?: scalar|null, + * circular_reference_handler?: scalar|null, + * max_depth_handler?: scalar|null, + * mapping?: array{ + * paths?: list, + * }, + * default_context?: list, + * named_serializers?: array, + * include_built_in_normalizers?: bool, // Whether to include the built-in normalizers // Default: true + * include_built_in_encoders?: bool, // Whether to include the built-in encoders // Default: true + * }>, + * }, + * property_access?: bool|array{ // Property access configuration + * enabled?: bool, // Default: true + * magic_call?: bool, // Default: false + * magic_get?: bool, // Default: true + * magic_set?: bool, // Default: true + * throw_exception_on_invalid_index?: bool, // Default: false + * throw_exception_on_invalid_property_path?: bool, // Default: true + * }, + * type_info?: bool|array{ // Type info configuration + * enabled?: bool, // Default: true + * aliases?: array, + * }, + * property_info?: bool|array{ // Property info configuration + * enabled?: bool, // Default: true + * with_constructor_extractor?: bool, // Registers the constructor extractor. + * }, + * cache?: array{ // Cache configuration + * prefix_seed?: scalar|null, // Used to namespace cache keys when using several apps with the same shared backend. // Default: "_%kernel.project_dir%.%kernel.container_class%" + * app?: scalar|null, // App related cache pools configuration. // Default: "cache.adapter.filesystem" + * system?: scalar|null, // System related cache pools configuration. // Default: "cache.adapter.system" + * directory?: scalar|null, // Default: "%kernel.share_dir%/pools/app" + * default_psr6_provider?: scalar|null, + * default_redis_provider?: scalar|null, // Default: "redis://localhost" + * default_valkey_provider?: scalar|null, // Default: "valkey://localhost" + * default_memcached_provider?: scalar|null, // Default: "memcached://localhost" + * default_doctrine_dbal_provider?: scalar|null, // Default: "database_connection" + * default_pdo_provider?: scalar|null, // Default: null + * pools?: array, + * tags?: scalar|null, // Default: null + * public?: bool, // Default: false + * default_lifetime?: scalar|null, // Default lifetime of the pool. + * provider?: scalar|null, // Overwrite the setting from the default provider for this adapter. + * early_expiration_message_bus?: scalar|null, + * clearer?: scalar|null, + * }>, + * }, + * php_errors?: array{ // PHP errors handling configuration + * log?: mixed, // Use the application logger instead of the PHP logger for logging PHP errors. // Default: true + * throw?: bool, // Throw PHP errors as \ErrorException instances. // Default: true + * }, + * exceptions?: array, + * web_link?: bool|array{ // Web links configuration + * enabled?: bool, // Default: true + * }, + * lock?: bool|string|array{ // Lock configuration + * enabled?: bool, // Default: false + * resources?: array>, + * }, + * semaphore?: bool|string|array{ // Semaphore configuration + * enabled?: bool, // Default: false + * resources?: array, + * }, + * messenger?: bool|array{ // Messenger configuration + * enabled?: bool, // Default: false + * routing?: array, + * }>, + * serializer?: array{ + * default_serializer?: scalar|null, // Service id to use as the default serializer for the transports. // Default: "messenger.transport.native_php_serializer" + * symfony_serializer?: array{ + * format?: scalar|null, // Serialization format for the messenger.transport.symfony_serializer service (which is not the serializer used by default). // Default: "json" + * context?: array, + * }, + * }, + * transports?: array, + * failure_transport?: scalar|null, // Transport name to send failed messages to (after all retries have failed). // Default: null + * retry_strategy?: string|array{ + * service?: scalar|null, // Service id to override the retry strategy entirely. // Default: null + * max_retries?: int, // Default: 3 + * delay?: int, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * multiplier?: float, // If greater than 1, delay will grow exponentially for each retry: this delay = (delay * (multiple ^ retries)). // Default: 2 + * max_delay?: int, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * jitter?: float, // Randomness to apply to the delay (between 0 and 1). // Default: 0.1 + * }, + * rate_limiter?: scalar|null, // Rate limiter name to use when processing messages. // Default: null + * }>, + * failure_transport?: scalar|null, // Transport name to send failed messages to (after all retries have failed). // Default: null + * stop_worker_on_signals?: list, + * default_bus?: scalar|null, // Default: null + * buses?: array, + * }>, + * }>, + * }, + * scheduler?: bool|array{ // Scheduler configuration + * enabled?: bool, // Default: false + * }, + * disallow_search_engine_index?: bool, // Enabled by default when debug is enabled. // Default: true + * http_client?: bool|array{ // HTTP Client configuration + * enabled?: bool, // Default: true + * max_host_connections?: int, // The maximum number of connections to a single host. + * default_options?: array{ + * headers?: array, + * vars?: list, + * max_redirects?: int, // The maximum number of redirects to follow. + * http_version?: scalar|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. + * resolve?: array, + * proxy?: scalar|null, // The URL of the proxy to pass requests through or null for automatic detection. + * no_proxy?: scalar|null, // A comma separated list of hosts that do not require a proxy to be reached. + * timeout?: float, // The idle timeout, defaults to the "default_socket_timeout" ini parameter. + * max_duration?: float, // The maximum execution time for the request+response as a whole. + * bindto?: scalar|null, // A network interface name, IP address, a host name or a UNIX socket to bind to. + * verify_peer?: bool, // Indicates if the peer should be verified in a TLS context. + * verify_host?: bool, // Indicates if the host should exist as a certificate common name. + * cafile?: scalar|null, // A certificate authority file. + * capath?: scalar|null, // A directory that contains multiple certificate authority files. + * local_cert?: scalar|null, // A PEM formatted certificate file. + * local_pk?: scalar|null, // A private key file. + * passphrase?: scalar|null, // The passphrase used to encrypt the "local_pk" file. + * ciphers?: scalar|null, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...) + * peer_fingerprint?: array{ // Associative array: hashing algorithm => hash(es). + * sha1?: mixed, + * pin-sha256?: mixed, + * md5?: mixed, + * }, + * crypto_method?: scalar|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. + * extra?: list, + * rate_limiter?: scalar|null, // Rate limiter name to use for throttling requests. // Default: null + * caching?: bool|array{ // Caching configuration. + * enabled?: bool, // Default: false + * cache_pool?: string, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" + * shared?: bool, // Indicates whether the cache is shared (public) or private. // Default: true + * max_ttl?: int, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null + * }, + * retry_failed?: bool|array{ + * enabled?: bool, // Default: false + * retry_strategy?: scalar|null, // service id to override the retry strategy. // Default: null + * http_codes?: array, + * }>, + * max_retries?: int, // Default: 3 + * delay?: int, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * multiplier?: float, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2 + * max_delay?: int, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * jitter?: float, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 + * }, + * }, + * mock_response_factory?: scalar|null, // The id of the service that should generate mock responses. It should be either an invokable or an iterable. + * scoped_clients?: array, + * headers?: array, + * max_redirects?: int, // The maximum number of redirects to follow. + * http_version?: scalar|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. + * resolve?: array, + * proxy?: scalar|null, // The URL of the proxy to pass requests through or null for automatic detection. + * no_proxy?: scalar|null, // A comma separated list of hosts that do not require a proxy to be reached. + * timeout?: float, // The idle timeout, defaults to the "default_socket_timeout" ini parameter. + * max_duration?: float, // The maximum execution time for the request+response as a whole. + * bindto?: scalar|null, // A network interface name, IP address, a host name or a UNIX socket to bind to. + * verify_peer?: bool, // Indicates if the peer should be verified in a TLS context. + * verify_host?: bool, // Indicates if the host should exist as a certificate common name. + * cafile?: scalar|null, // A certificate authority file. + * capath?: scalar|null, // A directory that contains multiple certificate authority files. + * local_cert?: scalar|null, // A PEM formatted certificate file. + * local_pk?: scalar|null, // A private key file. + * passphrase?: scalar|null, // The passphrase used to encrypt the "local_pk" file. + * ciphers?: scalar|null, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...). + * peer_fingerprint?: array{ // Associative array: hashing algorithm => hash(es). + * sha1?: mixed, + * pin-sha256?: mixed, + * md5?: mixed, + * }, + * crypto_method?: scalar|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. + * extra?: list, + * rate_limiter?: scalar|null, // Rate limiter name to use for throttling requests. // Default: null + * caching?: bool|array{ // Caching configuration. + * enabled?: bool, // Default: false + * cache_pool?: string, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" + * shared?: bool, // Indicates whether the cache is shared (public) or private. // Default: true + * max_ttl?: int, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null + * }, + * retry_failed?: bool|array{ + * enabled?: bool, // Default: false + * retry_strategy?: scalar|null, // service id to override the retry strategy. // Default: null + * http_codes?: array, + * }>, + * max_retries?: int, // Default: 3 + * delay?: int, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * multiplier?: float, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2 + * max_delay?: int, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * jitter?: float, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 + * }, + * }>, + * }, + * mailer?: bool|array{ // Mailer configuration + * enabled?: bool, // Default: true + * message_bus?: scalar|null, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null + * dsn?: scalar|null, // Default: null + * transports?: array, + * envelope?: array{ // Mailer Envelope configuration + * sender?: scalar|null, + * recipients?: list, + * allowed_recipients?: list, + * }, + * headers?: array, + * dkim_signer?: bool|array{ // DKIM signer configuration + * enabled?: bool, // Default: false + * key?: scalar|null, // Key content, or path to key (in PEM format with the `file://` prefix) // Default: "" + * domain?: scalar|null, // Default: "" + * select?: scalar|null, // Default: "" + * passphrase?: scalar|null, // The private key passphrase // Default: "" + * options?: array, + * }, + * smime_signer?: bool|array{ // S/MIME signer configuration + * enabled?: bool, // Default: false + * key?: scalar|null, // Path to key (in PEM format) // Default: "" + * certificate?: scalar|null, // Path to certificate (in PEM format without the `file://` prefix) // Default: "" + * passphrase?: scalar|null, // The private key passphrase // Default: null + * extra_certificates?: scalar|null, // Default: null + * sign_options?: int, // Default: null + * }, + * smime_encrypter?: bool|array{ // S/MIME encrypter configuration + * enabled?: bool, // Default: false + * repository?: scalar|null, // S/MIME certificate repository service. This service shall implement the `Symfony\Component\Mailer\EventListener\SmimeCertificateRepositoryInterface`. // Default: "" + * cipher?: int, // A set of algorithms used to encrypt the message // Default: null + * }, + * }, + * secrets?: bool|array{ + * enabled?: bool, // Default: true + * vault_directory?: scalar|null, // Default: "%kernel.project_dir%/config/secrets/%kernel.runtime_environment%" + * local_dotenv_file?: scalar|null, // Default: "%kernel.project_dir%/.env.%kernel.runtime_environment%.local" + * decryption_env_var?: scalar|null, // Default: "base64:default::SYMFONY_DECRYPTION_SECRET" + * }, + * notifier?: bool|array{ // Notifier configuration + * enabled?: bool, // Default: false + * message_bus?: scalar|null, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null + * chatter_transports?: array, + * texter_transports?: array, + * notification_on_failed_messages?: bool, // Default: false + * channel_policy?: array>, + * admin_recipients?: list, + * }, + * rate_limiter?: bool|array{ // Rate limiter configuration + * enabled?: bool, // Default: true + * limiters?: array, + * limit?: int, // The maximum allowed hits in a fixed interval or burst. + * interval?: scalar|null, // Configures the fixed interval if "policy" is set to "fixed_window" or "sliding_window". The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). + * rate?: array{ // Configures the fill rate if "policy" is set to "token_bucket". + * interval?: scalar|null, // Configures the rate interval. The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). + * amount?: int, // Amount of tokens to add each interval. // Default: 1 + * }, + * }>, + * }, + * uid?: bool|array{ // Uid configuration + * enabled?: bool, // Default: true + * default_uuid_version?: 7|6|4|1, // Default: 7 + * name_based_uuid_version?: 5|3, // Default: 5 + * name_based_uuid_namespace?: scalar|null, + * time_based_uuid_version?: 7|6|1, // Default: 7 + * time_based_uuid_node?: scalar|null, + * }, + * html_sanitizer?: bool|array{ // HtmlSanitizer configuration + * enabled?: bool, // Default: false + * sanitizers?: array, + * block_elements?: list, + * drop_elements?: list, + * allow_attributes?: array, + * drop_attributes?: array, + * force_attributes?: array>, + * force_https_urls?: bool, // Transforms URLs using the HTTP scheme to use the HTTPS scheme instead. // Default: false + * allowed_link_schemes?: list, + * allowed_link_hosts?: list|null, + * allow_relative_links?: bool, // Allows relative URLs to be used in links href attributes. // Default: false + * allowed_media_schemes?: list, + * allowed_media_hosts?: list|null, + * allow_relative_medias?: bool, // Allows relative URLs to be used in media source attributes (img, audio, video, ...). // Default: false + * with_attribute_sanitizers?: list, + * without_attribute_sanitizers?: list, + * max_input_length?: int, // The maximum length allowed for the sanitized input. // Default: 0 + * }>, + * }, + * webhook?: bool|array{ // Webhook configuration + * enabled?: bool, // Default: false + * message_bus?: scalar|null, // The message bus to use. // Default: "messenger.default_bus" + * routing?: array, + * }, + * remote-event?: bool|array{ // RemoteEvent configuration + * enabled?: bool, // Default: false + * }, + * json_streamer?: bool|array{ // JSON streamer configuration + * enabled?: bool, // Default: false + * }, + * } + * @psalm-type DoctrineConfig = array{ + * dbal?: array{ + * default_connection?: scalar|null, + * types?: array, + * driver_schemes?: array, + * connections?: array, + * mapping_types?: array, + * default_table_options?: array, + * schema_manager_factory?: scalar|null, // Default: "doctrine.dbal.default_schema_manager_factory" + * result_cache?: scalar|null, + * slaves?: array, + * replicas?: array, + * }>, + * }, + * orm?: array{ + * default_entity_manager?: scalar|null, + * auto_generate_proxy_classes?: scalar|null, // Auto generate mode possible values are: "NEVER", "ALWAYS", "FILE_NOT_EXISTS", "EVAL", "FILE_NOT_EXISTS_OR_CHANGED", this option is ignored when the "enable_native_lazy_objects" option is true // Default: false + * enable_lazy_ghost_objects?: bool, // Enables the new implementation of proxies based on lazy ghosts instead of using the legacy implementation // Default: true + * enable_native_lazy_objects?: bool, // Enables the new native implementation of PHP lazy objects instead of generated proxies // Default: false + * proxy_dir?: scalar|null, // Configures the path where generated proxy classes are saved when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true // Default: "%kernel.build_dir%/doctrine/orm/Proxies" + * proxy_namespace?: scalar|null, // Defines the root namespace for generated proxy classes when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true // Default: "Proxies" + * controller_resolver?: bool|array{ + * enabled?: bool, // Default: true + * auto_mapping?: bool|null, // Set to false to disable using route placeholders as lookup criteria when the primary key doesn't match the argument name // Default: null + * evict_cache?: bool, // Set to true to fetch the entity from the database instead of using the cache, if any // Default: false + * }, + * entity_managers?: array, + * }>, + * }>, + * }, + * connection?: scalar|null, + * class_metadata_factory_name?: scalar|null, // Default: "Doctrine\\ORM\\Mapping\\ClassMetadataFactory" + * default_repository_class?: scalar|null, // Default: "Doctrine\\ORM\\EntityRepository" + * auto_mapping?: scalar|null, // Default: false + * naming_strategy?: scalar|null, // Default: "doctrine.orm.naming_strategy.default" + * quote_strategy?: scalar|null, // Default: "doctrine.orm.quote_strategy.default" + * typed_field_mapper?: scalar|null, // Default: "doctrine.orm.typed_field_mapper.default" + * entity_listener_resolver?: scalar|null, // Default: null + * fetch_mode_subselect_batch_size?: scalar|null, + * repository_factory?: scalar|null, // Default: "doctrine.orm.container_repository_factory" + * schema_ignore_classes?: list, + * report_fields_where_declared?: bool, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.16 and will be mandatory in ORM 3.0. See https://github.com/doctrine/orm/pull/10455. // Default: true + * validate_xml_mapping?: bool, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.14. See https://github.com/doctrine/orm/pull/6728. // Default: false + * second_level_cache?: array{ + * region_cache_driver?: string|array{ + * type?: scalar|null, // Default: null + * id?: scalar|null, + * pool?: scalar|null, + * }, + * region_lock_lifetime?: scalar|null, // Default: 60 + * log_enabled?: bool, // Default: true + * region_lifetime?: scalar|null, // Default: 3600 + * enabled?: bool, // Default: true + * factory?: scalar|null, + * regions?: array, + * loggers?: array, + * }, + * hydrators?: array, + * mappings?: array, + * dql?: array{ + * string_functions?: array, + * numeric_functions?: array, + * datetime_functions?: array, + * }, + * filters?: array, + * }>, + * identity_generation_preferences?: array, + * }>, + * resolve_target_entities?: array, + * }, + * } + * @psalm-type DoctrineMigrationsConfig = array{ + * enable_service_migrations?: bool, // Whether to enable fetching migrations from the service container. // Default: false + * migrations_paths?: array, + * services?: array, + * factories?: array, + * storage?: array{ // Storage to use for migration status metadata. + * table_storage?: array{ // The default metadata storage, implemented as a table in the database. + * table_name?: scalar|null, // Default: null + * version_column_name?: scalar|null, // Default: null + * version_column_length?: scalar|null, // Default: null + * executed_at_column_name?: scalar|null, // Default: null + * execution_time_column_name?: scalar|null, // Default: null + * }, + * }, + * migrations?: list, + * connection?: scalar|null, // Connection name to use for the migrations database. // Default: null + * em?: scalar|null, // Entity manager name to use for the migrations database (available when doctrine/orm is installed). // Default: null + * all_or_nothing?: scalar|null, // Run all migrations in a transaction. // Default: false + * check_database_platform?: scalar|null, // Adds an extra check in the generated migrations to allow execution only on the same platform as they were initially generated on. // Default: true + * custom_template?: scalar|null, // Custom template path for generated migration classes. // Default: null + * organize_migrations?: scalar|null, // Organize migrations mode. Possible values are: "BY_YEAR", "BY_YEAR_AND_MONTH", false // Default: false + * enable_profiler?: bool, // Whether or not to enable the profiler collector to calculate and visualize migration status. This adds some queries overhead. // Default: false + * transactional?: bool, // Whether or not to wrap migrations in a single transaction. // Default: true + * } + * @psalm-type SecurityConfig = array{ + * access_denied_url?: scalar|null, // Default: null + * session_fixation_strategy?: "none"|"migrate"|"invalidate", // Default: "migrate" + * hide_user_not_found?: bool, // Deprecated: The "hide_user_not_found" option is deprecated and will be removed in 8.0. Use the "expose_security_errors" option instead. + * expose_security_errors?: \Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::None|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::AccountStatus|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::All, // Default: "none" + * erase_credentials?: bool, // Default: true + * access_decision_manager?: array{ + * strategy?: "affirmative"|"consensus"|"unanimous"|"priority", + * service?: scalar|null, + * strategy_service?: scalar|null, + * allow_if_all_abstain?: bool, // Default: false + * allow_if_equal_granted_denied?: bool, // Default: true + * }, + * password_hashers?: array, + * hash_algorithm?: scalar|null, // Name of hashing algorithm for PBKDF2 (i.e. sha256, sha512, etc..) See hash_algos() for a list of supported algorithms. // Default: "sha512" + * key_length?: scalar|null, // Default: 40 + * ignore_case?: bool, // Default: false + * encode_as_base64?: bool, // Default: true + * iterations?: scalar|null, // Default: 5000 + * cost?: int, // Default: null + * memory_cost?: scalar|null, // Default: null + * time_cost?: scalar|null, // Default: null + * id?: scalar|null, + * }>, + * providers?: array, + * }, + * entity?: array{ + * class: scalar|null, // The full entity class name of your user class. + * property?: scalar|null, // Default: null + * manager_name?: scalar|null, // Default: null + * }, + * memory?: array{ + * users?: array, + * }>, + * }, + * ldap?: array{ + * service: scalar|null, + * base_dn: scalar|null, + * search_dn?: scalar|null, // Default: null + * search_password?: scalar|null, // Default: null + * extra_fields?: list, + * default_roles?: list, + * role_fetcher?: scalar|null, // Default: null + * uid_key?: scalar|null, // Default: "sAMAccountName" + * filter?: scalar|null, // Default: "({uid_key}={user_identifier})" + * password_attribute?: scalar|null, // Default: null + * }, + * saml?: array{ + * user_class: scalar|null, + * default_roles?: list, + * }, + * }>, + * firewalls: array, + * security?: bool, // Default: true + * user_checker?: scalar|null, // The UserChecker to use when authenticating users in this firewall. // Default: "security.user_checker" + * request_matcher?: scalar|null, + * access_denied_url?: scalar|null, + * access_denied_handler?: scalar|null, + * entry_point?: scalar|null, // An enabled authenticator name or a service id that implements "Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface". + * provider?: scalar|null, + * stateless?: bool, // Default: false + * lazy?: bool, // Default: false + * context?: scalar|null, + * logout?: array{ + * enable_csrf?: bool|null, // Default: null + * csrf_token_id?: scalar|null, // Default: "logout" + * csrf_parameter?: scalar|null, // Default: "_csrf_token" + * csrf_token_manager?: scalar|null, + * path?: scalar|null, // Default: "/logout" + * target?: scalar|null, // Default: "/" + * invalidate_session?: bool, // Default: true + * clear_site_data?: list<"*"|"cache"|"cookies"|"storage"|"executionContexts">, + * delete_cookies?: array, + * }, + * switch_user?: array{ + * provider?: scalar|null, + * parameter?: scalar|null, // Default: "_switch_user" + * role?: scalar|null, // Default: "ROLE_ALLOWED_TO_SWITCH" + * target_route?: scalar|null, // Default: null + * }, + * required_badges?: list, + * custom_authenticators?: list, + * login_throttling?: array{ + * limiter?: scalar|null, // A service id implementing "Symfony\Component\HttpFoundation\RateLimiter\RequestRateLimiterInterface". + * max_attempts?: int, // Default: 5 + * interval?: scalar|null, // Default: "1 minute" + * lock_factory?: scalar|null, // The service ID of the lock factory used by the login rate limiter (or null to disable locking). // Default: null + * cache_pool?: string, // The cache pool to use for storing the limiter state // Default: "cache.rate_limiter" + * storage_service?: string, // The service ID of a custom storage implementation, this precedes any configured "cache_pool" // Default: null + * }, + * two_factor?: array{ + * check_path?: scalar|null, // Default: "/2fa_check" + * post_only?: bool, // Default: true + * auth_form_path?: scalar|null, // Default: "/2fa" + * always_use_default_target_path?: bool, // Default: false + * default_target_path?: scalar|null, // Default: "/" + * success_handler?: scalar|null, // Default: null + * failure_handler?: scalar|null, // Default: null + * authentication_required_handler?: scalar|null, // Default: null + * auth_code_parameter_name?: scalar|null, // Default: "_auth_code" + * trusted_parameter_name?: scalar|null, // Default: "_trusted" + * remember_me_sets_trusted?: scalar|null, // Default: false + * multi_factor?: bool, // Default: false + * prepare_on_login?: bool, // Default: false + * prepare_on_access_denied?: bool, // Default: false + * enable_csrf?: scalar|null, // Default: false + * csrf_parameter?: scalar|null, // Default: "_csrf_token" + * csrf_token_id?: scalar|null, // Default: "two_factor" + * csrf_header?: scalar|null, // Default: null + * csrf_token_manager?: scalar|null, // Default: "scheb_two_factor.csrf_token_manager" + * provider?: scalar|null, // Default: null + * }, + * webauthn?: array{ + * user_provider?: scalar|null, // Default: null + * options_storage?: scalar|null, // Deprecated: The child node "options_storage" at path "security.firewalls..webauthn.options_storage" is deprecated. Please use the root option "options_storage" instead. // Default: null + * success_handler?: scalar|null, // Default: "Webauthn\\Bundle\\Security\\Handler\\DefaultSuccessHandler" + * failure_handler?: scalar|null, // Default: "Webauthn\\Bundle\\Security\\Handler\\DefaultFailureHandler" + * secured_rp_ids?: array, + * authentication?: bool|array{ + * enabled?: bool, // Default: true + * profile?: scalar|null, // Default: "default" + * options_builder?: scalar|null, // Default: null + * routes?: array{ + * host?: scalar|null, // Default: null + * options_method?: scalar|null, // Default: "POST" + * options_path?: scalar|null, // Default: "/login/options" + * result_method?: scalar|null, // Default: "POST" + * result_path?: scalar|null, // Default: "/login" + * }, + * options_handler?: scalar|null, // Default: "Webauthn\\Bundle\\Security\\Handler\\DefaultRequestOptionsHandler" + * }, + * registration?: bool|array{ + * enabled?: bool, // Default: false + * profile?: scalar|null, // Default: "default" + * options_builder?: scalar|null, // Default: null + * routes?: array{ + * host?: scalar|null, // Default: null + * options_method?: scalar|null, // Default: "POST" + * options_path?: scalar|null, // Default: "/register/options" + * result_method?: scalar|null, // Default: "POST" + * result_path?: scalar|null, // Default: "/register" + * }, + * options_handler?: scalar|null, // Default: "Webauthn\\Bundle\\Security\\Handler\\DefaultCreationOptionsHandler" + * }, + * }, + * x509?: array{ + * provider?: scalar|null, + * user?: scalar|null, // Default: "SSL_CLIENT_S_DN_Email" + * credentials?: scalar|null, // Default: "SSL_CLIENT_S_DN" + * user_identifier?: scalar|null, // Default: "emailAddress" + * }, + * remote_user?: array{ + * provider?: scalar|null, + * user?: scalar|null, // Default: "REMOTE_USER" + * }, + * saml?: array{ + * provider?: scalar|null, + * remember_me?: bool, // Default: true + * success_handler?: scalar|null, // Default: "Nbgrp\\OneloginSamlBundle\\Security\\Http\\Authentication\\SamlAuthenticationSuccessHandler" + * failure_handler?: scalar|null, + * check_path?: scalar|null, // Default: "/login_check" + * use_forward?: bool, // Default: false + * login_path?: scalar|null, // Default: "/login" + * identifier_attribute?: scalar|null, // Default: null + * use_attribute_friendly_name?: bool, // Default: false + * user_factory?: scalar|null, // Default: null + * token_factory?: scalar|null, // Default: null + * persist_user?: bool, // Default: false + * always_use_default_target_path?: bool, // Default: false + * default_target_path?: scalar|null, // Default: "/" + * target_path_parameter?: scalar|null, // Default: "_target_path" + * use_referer?: bool, // Default: false + * failure_path?: scalar|null, // Default: null + * failure_forward?: bool, // Default: false + * failure_path_parameter?: scalar|null, // Default: "_failure_path" + * }, + * login_link?: array{ + * check_route: scalar|null, // Route that will validate the login link - e.g. "app_login_link_verify". + * check_post_only?: scalar|null, // If true, only HTTP POST requests to "check_route" will be handled by the authenticator. // Default: false + * signature_properties: list, + * lifetime?: int, // The lifetime of the login link in seconds. // Default: 600 + * max_uses?: int, // Max number of times a login link can be used - null means unlimited within lifetime. // Default: null + * used_link_cache?: scalar|null, // Cache service id used to expired links of max_uses is set. + * success_handler?: scalar|null, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface. + * failure_handler?: scalar|null, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface. + * provider?: scalar|null, // The user provider to load users from. + * secret?: scalar|null, // Default: "%kernel.secret%" + * always_use_default_target_path?: bool, // Default: false + * default_target_path?: scalar|null, // Default: "/" + * login_path?: scalar|null, // Default: "/login" + * target_path_parameter?: scalar|null, // Default: "_target_path" + * use_referer?: bool, // Default: false + * failure_path?: scalar|null, // Default: null + * failure_forward?: bool, // Default: false + * failure_path_parameter?: scalar|null, // Default: "_failure_path" + * }, + * form_login?: array{ + * provider?: scalar|null, + * remember_me?: bool, // Default: true + * success_handler?: scalar|null, + * failure_handler?: scalar|null, + * check_path?: scalar|null, // Default: "/login_check" + * use_forward?: bool, // Default: false + * login_path?: scalar|null, // Default: "/login" + * username_parameter?: scalar|null, // Default: "_username" + * password_parameter?: scalar|null, // Default: "_password" + * csrf_parameter?: scalar|null, // Default: "_csrf_token" + * csrf_token_id?: scalar|null, // Default: "authenticate" + * enable_csrf?: bool, // Default: false + * post_only?: bool, // Default: true + * form_only?: bool, // Default: false + * always_use_default_target_path?: bool, // Default: false + * default_target_path?: scalar|null, // Default: "/" + * target_path_parameter?: scalar|null, // Default: "_target_path" + * use_referer?: bool, // Default: false + * failure_path?: scalar|null, // Default: null + * failure_forward?: bool, // Default: false + * failure_path_parameter?: scalar|null, // Default: "_failure_path" + * }, + * form_login_ldap?: array{ + * provider?: scalar|null, + * remember_me?: bool, // Default: true + * success_handler?: scalar|null, + * failure_handler?: scalar|null, + * check_path?: scalar|null, // Default: "/login_check" + * use_forward?: bool, // Default: false + * login_path?: scalar|null, // Default: "/login" + * username_parameter?: scalar|null, // Default: "_username" + * password_parameter?: scalar|null, // Default: "_password" + * csrf_parameter?: scalar|null, // Default: "_csrf_token" + * csrf_token_id?: scalar|null, // Default: "authenticate" + * enable_csrf?: bool, // Default: false + * post_only?: bool, // Default: true + * form_only?: bool, // Default: false + * always_use_default_target_path?: bool, // Default: false + * default_target_path?: scalar|null, // Default: "/" + * target_path_parameter?: scalar|null, // Default: "_target_path" + * use_referer?: bool, // Default: false + * failure_path?: scalar|null, // Default: null + * failure_forward?: bool, // Default: false + * failure_path_parameter?: scalar|null, // Default: "_failure_path" + * service?: scalar|null, // Default: "ldap" + * dn_string?: scalar|null, // Default: "{user_identifier}" + * query_string?: scalar|null, + * search_dn?: scalar|null, // Default: "" + * search_password?: scalar|null, // Default: "" + * }, + * json_login?: array{ + * provider?: scalar|null, + * remember_me?: bool, // Default: true + * success_handler?: scalar|null, + * failure_handler?: scalar|null, + * check_path?: scalar|null, // Default: "/login_check" + * use_forward?: bool, // Default: false + * login_path?: scalar|null, // Default: "/login" + * username_path?: scalar|null, // Default: "username" + * password_path?: scalar|null, // Default: "password" + * }, + * json_login_ldap?: array{ + * provider?: scalar|null, + * remember_me?: bool, // Default: true + * success_handler?: scalar|null, + * failure_handler?: scalar|null, + * check_path?: scalar|null, // Default: "/login_check" + * use_forward?: bool, // Default: false + * login_path?: scalar|null, // Default: "/login" + * username_path?: scalar|null, // Default: "username" + * password_path?: scalar|null, // Default: "password" + * service?: scalar|null, // Default: "ldap" + * dn_string?: scalar|null, // Default: "{user_identifier}" + * query_string?: scalar|null, + * search_dn?: scalar|null, // Default: "" + * search_password?: scalar|null, // Default: "" + * }, + * access_token?: array{ + * provider?: scalar|null, + * remember_me?: bool, // Default: true + * success_handler?: scalar|null, + * failure_handler?: scalar|null, + * realm?: scalar|null, // Default: null + * token_extractors?: list, + * token_handler: string|array{ + * id?: scalar|null, + * oidc_user_info?: string|array{ + * base_uri: scalar|null, // Base URI of the userinfo endpoint on the OIDC server, or the OIDC server URI to use the discovery (require "discovery" to be configured). + * discovery?: array{ // Enable the OIDC discovery. + * cache?: array{ + * id: scalar|null, // Cache service id to use to cache the OIDC discovery configuration. + * }, + * }, + * claim?: scalar|null, // Claim which contains the user identifier (e.g. sub, email, etc.). // Default: "sub" + * client?: scalar|null, // HttpClient service id to use to call the OIDC server. + * }, + * oidc?: array{ + * discovery?: array{ // Enable the OIDC discovery. + * base_uri: list, + * cache?: array{ + * id: scalar|null, // Cache service id to use to cache the OIDC discovery configuration. + * }, + * }, + * claim?: scalar|null, // Claim which contains the user identifier (e.g.: sub, email..). // Default: "sub" + * audience: scalar|null, // Audience set in the token, for validation purpose. + * issuers: list, + * algorithm?: array, + * algorithms: list, + * key?: scalar|null, // Deprecated: The "key" option is deprecated and will be removed in 8.0. Use the "keyset" option instead. // JSON-encoded JWK used to sign the token (must contain a "kty" key). + * keyset?: scalar|null, // JSON-encoded JWKSet used to sign the token (must contain a list of valid public keys). + * encryption?: bool|array{ + * enabled?: bool, // Default: false + * enforce?: bool, // When enabled, the token shall be encrypted. // Default: false + * algorithms: list, + * keyset: scalar|null, // JSON-encoded JWKSet used to decrypt the token (must contain a list of valid private keys). + * }, + * }, + * cas?: array{ + * validation_url: scalar|null, // CAS server validation URL + * prefix?: scalar|null, // CAS prefix // Default: "cas" + * http_client?: scalar|null, // HTTP Client service // Default: null + * }, + * oauth2?: scalar|null, + * }, + * }, + * http_basic?: array{ + * provider?: scalar|null, + * realm?: scalar|null, // Default: "Secured Area" + * }, + * http_basic_ldap?: array{ + * provider?: scalar|null, + * realm?: scalar|null, // Default: "Secured Area" + * service?: scalar|null, // Default: "ldap" + * dn_string?: scalar|null, // Default: "{user_identifier}" + * query_string?: scalar|null, + * search_dn?: scalar|null, // Default: "" + * search_password?: scalar|null, // Default: "" + * }, + * remember_me?: array{ + * secret?: scalar|null, // Default: "%kernel.secret%" + * service?: scalar|null, + * user_providers?: list, + * catch_exceptions?: bool, // Default: true + * signature_properties?: list, + * token_provider?: string|array{ + * service?: scalar|null, // The service ID of a custom remember-me token provider. + * doctrine?: bool|array{ + * enabled?: bool, // Default: false + * connection?: scalar|null, // Default: null + * }, + * }, + * token_verifier?: scalar|null, // The service ID of a custom rememberme token verifier. + * name?: scalar|null, // Default: "REMEMBERME" + * lifetime?: int, // Default: 31536000 + * path?: scalar|null, // Default: "/" + * domain?: scalar|null, // Default: null + * secure?: true|false|"auto", // Default: null + * httponly?: bool, // Default: true + * samesite?: null|"lax"|"strict"|"none", // Default: "lax" + * always_remember_me?: bool, // Default: false + * remember_me_parameter?: scalar|null, // Default: "_remember_me" + * }, + * }>, + * access_control?: list, + * attributes?: array, + * route?: scalar|null, // Default: null + * methods?: list, + * allow_if?: scalar|null, // Default: null + * roles?: list, + * }>, + * role_hierarchy?: array>, + * } + * @psalm-type TwigConfig = array{ + * form_themes?: list, + * globals?: array, + * autoescape_service?: scalar|null, // Default: null + * autoescape_service_method?: scalar|null, // Default: null + * base_template_class?: scalar|null, // Deprecated: The child node "base_template_class" at path "twig.base_template_class" is deprecated. + * cache?: scalar|null, // Default: true + * charset?: scalar|null, // Default: "%kernel.charset%" + * debug?: bool, // Default: "%kernel.debug%" + * strict_variables?: bool, // Default: "%kernel.debug%" + * auto_reload?: scalar|null, + * optimizations?: int, + * default_path?: scalar|null, // The default path used to load templates. // Default: "%kernel.project_dir%/templates" + * file_name_pattern?: list, + * paths?: array, + * date?: array{ // The default format options used by the date filter. + * format?: scalar|null, // Default: "F j, Y H:i" + * interval_format?: scalar|null, // Default: "%d days" + * timezone?: scalar|null, // The timezone used when formatting dates, when set to null, the timezone returned by date_default_timezone_get() is used. // Default: null + * }, + * number_format?: array{ // The default format options for the number_format filter. + * decimals?: int, // Default: 0 + * decimal_point?: scalar|null, // Default: "." + * thousands_separator?: scalar|null, // Default: "," + * }, + * mailer?: array{ + * html_to_text_converter?: scalar|null, // A service implementing the "Symfony\Component\Mime\HtmlToTextConverter\HtmlToTextConverterInterface". // Default: null + * }, + * } + * @psalm-type WebProfilerConfig = array{ + * toolbar?: bool|array{ // Profiler toolbar configuration + * enabled?: bool, // Default: false + * ajax_replace?: bool, // Replace toolbar on AJAX requests // Default: false + * }, + * intercept_redirects?: bool, // Default: false + * excluded_ajax_paths?: scalar|null, // Default: "^/((index|app(_[\\w]+)?)\\.php/)?_wdt" + * } + * @psalm-type MonologConfig = array{ + * use_microseconds?: scalar|null, // Default: true + * channels?: list, + * handlers?: array, + * excluded_http_codes?: list, + * }>, + * accepted_levels?: list, + * min_level?: scalar|null, // Default: "DEBUG" + * max_level?: scalar|null, // Default: "EMERGENCY" + * buffer_size?: scalar|null, // Default: 0 + * flush_on_overflow?: bool, // Default: false + * handler?: scalar|null, + * url?: scalar|null, + * exchange?: scalar|null, + * exchange_name?: scalar|null, // Default: "log" + * room?: scalar|null, + * message_format?: scalar|null, // Default: "text" + * api_version?: scalar|null, // Default: null + * channel?: scalar|null, // Default: null + * bot_name?: scalar|null, // Default: "Monolog" + * use_attachment?: scalar|null, // Default: true + * use_short_attachment?: scalar|null, // Default: false + * include_extra?: scalar|null, // Default: false + * icon_emoji?: scalar|null, // Default: null + * webhook_url?: scalar|null, + * exclude_fields?: list, + * team?: scalar|null, + * notify?: scalar|null, // Default: false + * nickname?: scalar|null, // Default: "Monolog" + * token?: scalar|null, + * region?: scalar|null, + * source?: scalar|null, + * use_ssl?: bool, // Default: true + * user?: mixed, + * title?: scalar|null, // Default: null + * host?: scalar|null, // Default: null + * port?: scalar|null, // Default: 514 + * config?: list, + * members?: list, + * connection_string?: scalar|null, + * timeout?: scalar|null, + * time?: scalar|null, // Default: 60 + * deduplication_level?: scalar|null, // Default: 400 + * store?: scalar|null, // Default: null + * connection_timeout?: scalar|null, + * persistent?: bool, + * dsn?: scalar|null, + * hub_id?: scalar|null, // Default: null + * client_id?: scalar|null, // Default: null + * auto_log_stacks?: scalar|null, // Default: false + * release?: scalar|null, // Default: null + * environment?: scalar|null, // Default: null + * message_type?: scalar|null, // Default: 0 + * parse_mode?: scalar|null, // Default: null + * disable_webpage_preview?: bool|null, // Default: null + * disable_notification?: bool|null, // Default: null + * split_long_messages?: bool, // Default: false + * delay_between_messages?: bool, // Default: false + * topic?: int, // Default: null + * factor?: int, // Default: 1 + * tags?: list, + * console_formater_options?: mixed, // Deprecated: "monolog.handlers..console_formater_options.console_formater_options" is deprecated, use "monolog.handlers..console_formater_options.console_formatter_options" instead. + * console_formatter_options?: mixed, // Default: [] + * formatter?: scalar|null, + * nested?: bool, // Default: false + * publisher?: string|array{ + * id?: scalar|null, + * hostname?: scalar|null, + * port?: scalar|null, // Default: 12201 + * chunk_size?: scalar|null, // Default: 1420 + * encoder?: "json"|"compressed_json", + * }, + * mongo?: string|array{ + * id?: scalar|null, + * host?: scalar|null, + * port?: scalar|null, // Default: 27017 + * user?: scalar|null, + * pass?: scalar|null, + * database?: scalar|null, // Default: "monolog" + * collection?: scalar|null, // Default: "logs" + * }, + * mongodb?: string|array{ + * id?: scalar|null, // ID of a MongoDB\Client service + * uri?: scalar|null, + * username?: scalar|null, + * password?: scalar|null, + * database?: scalar|null, // Default: "monolog" + * collection?: scalar|null, // Default: "logs" + * }, + * elasticsearch?: string|array{ + * id?: scalar|null, + * hosts?: list, + * host?: scalar|null, + * port?: scalar|null, // Default: 9200 + * transport?: scalar|null, // Default: "Http" + * user?: scalar|null, // Default: null + * password?: scalar|null, // Default: null + * }, + * index?: scalar|null, // Default: "monolog" + * document_type?: scalar|null, // Default: "logs" + * ignore_error?: scalar|null, // Default: false + * redis?: string|array{ + * id?: scalar|null, + * host?: scalar|null, + * password?: scalar|null, // Default: null + * port?: scalar|null, // Default: 6379 + * database?: scalar|null, // Default: 0 + * key_name?: scalar|null, // Default: "monolog_redis" + * }, + * predis?: string|array{ + * id?: scalar|null, + * host?: scalar|null, + * }, + * from_email?: scalar|null, + * to_email?: list, + * subject?: scalar|null, + * content_type?: scalar|null, // Default: null + * headers?: list, + * mailer?: scalar|null, // Default: null + * email_prototype?: string|array{ + * id: scalar|null, + * method?: scalar|null, // Default: null + * }, + * lazy?: bool, // Default: true + * verbosity_levels?: array{ + * VERBOSITY_QUIET?: scalar|null, // Default: "ERROR" + * VERBOSITY_NORMAL?: scalar|null, // Default: "WARNING" + * VERBOSITY_VERBOSE?: scalar|null, // Default: "NOTICE" + * VERBOSITY_VERY_VERBOSE?: scalar|null, // Default: "INFO" + * VERBOSITY_DEBUG?: scalar|null, // Default: "DEBUG" + * }, + * channels?: string|array{ + * type?: scalar|null, + * elements?: list, + * }, + * }>, + * } + * @psalm-type DebugConfig = array{ + * max_items?: int, // Max number of displayed items past the first level, -1 means no limit. // Default: 2500 + * min_depth?: int, // Minimum tree depth to clone all the items, 1 is default. // Default: 1 + * max_string_length?: int, // Max length of displayed strings, -1 means no limit. // Default: -1 + * dump_destination?: scalar|null, // A stream URL where dumps should be written to. // Default: null + * theme?: "dark"|"light", // Changes the color of the dump() output when rendered directly on the templating. "dark" (default) or "light". // Default: "dark" + * } + * @psalm-type MakerConfig = array{ + * root_namespace?: scalar|null, // Default: "App" + * generate_final_classes?: bool, // Default: true + * generate_final_entities?: bool, // Default: false + * } + * @psalm-type WebpackEncoreConfig = array{ + * output_path: scalar|null, // The path where Encore is building the assets - i.e. Encore.setOutputPath() + * crossorigin?: false|"anonymous"|"use-credentials", // crossorigin value when Encore.enableIntegrityHashes() is used, can be false (default), anonymous or use-credentials // Default: false + * preload?: bool, // preload all rendered script and link tags automatically via the http2 Link header. // Default: false + * cache?: bool, // Enable caching of the entry point file(s) // Default: false + * strict_mode?: bool, // Throw an exception if the entrypoints.json file is missing or an entry is missing from the data // Default: true + * builds?: array, + * script_attributes?: array, + * link_attributes?: array, + * } + * @psalm-type DatatablesConfig = array{ + * language_from_cdn?: bool, // Load i18n data from DataTables CDN or locally // Default: true + * persist_state?: "none"|"query"|"fragment"|"local"|"session", // Where to persist the current table state automatically // Default: "fragment" + * method?: "GET"|"POST", // Default HTTP method to be used for callbacks // Default: "POST" + * options?: array, + * renderer?: scalar|null, // Default service used to render templates, built-in TwigRenderer uses global Twig environment // Default: "Omines\\DataTablesBundle\\Twig\\TwigRenderer" + * template?: scalar|null, // Default template to be used for DataTables HTML // Default: "@DataTables/datatable_html.html.twig" + * template_parameters?: array{ // Default parameters to be passed to the template + * className?: scalar|null, // Default class attribute to apply to the root table elements // Default: "table table-bordered" + * columnFilter?: "thead"|"tfoot"|"both"|null, // If and where to enable the DataTables Filter module // Default: null + * ... + * }, + * translation_domain?: scalar|null, // Default translation domain to be used // Default: "messages" + * } + * @psalm-type LiipImagineConfig = array{ + * resolvers?: array, + * get_options?: array, + * put_options?: array, + * proxies?: array, + * }, + * flysystem?: array{ + * filesystem_service: scalar|null, + * cache_prefix?: scalar|null, // Default: "" + * root_url: scalar|null, + * visibility?: "public"|"private"|"noPredefinedVisibility", // Default: "public" + * }, + * }>, + * loaders?: array, + * allow_unresolvable_data_roots?: bool, // Default: false + * bundle_resources?: array{ + * enabled?: bool, // Default: false + * access_control_type?: "blacklist"|"whitelist", // Sets the access control method applied to bundle names in "access_control_list" into a blacklist or whitelist. // Default: "blacklist" + * access_control_list?: list, + * }, + * }, + * flysystem?: array{ + * filesystem_service: scalar|null, + * }, + * chain?: array{ + * loaders: list, + * }, + * }>, + * driver?: scalar|null, // Default: "gd" + * cache?: scalar|null, // Default: "default" + * cache_base_path?: scalar|null, // Default: "" + * data_loader?: scalar|null, // Default: "default" + * default_image?: scalar|null, // Default: null + * default_filter_set_settings?: array{ + * quality?: scalar|null, // Default: 100 + * jpeg_quality?: scalar|null, // Default: null + * png_compression_level?: scalar|null, // Default: null + * png_compression_filter?: scalar|null, // Default: null + * format?: scalar|null, // Default: null + * animated?: bool, // Default: false + * cache?: scalar|null, // Default: null + * data_loader?: scalar|null, // Default: null + * default_image?: scalar|null, // Default: null + * filters?: array>, + * post_processors?: array>, + * }, + * controller?: array{ + * filter_action?: scalar|null, // Default: "Liip\\ImagineBundle\\Controller\\ImagineController::filterAction" + * filter_runtime_action?: scalar|null, // Default: "Liip\\ImagineBundle\\Controller\\ImagineController::filterRuntimeAction" + * redirect_response_code?: int, // Default: 302 + * }, + * filter_sets?: array>, + * post_processors?: array>, + * }>, + * twig?: array{ + * mode?: "none"|"lazy"|"legacy", // Twig mode: none/lazy/legacy (default) // Default: "legacy" + * assets_version?: scalar|null, // Default: null + * }, + * enqueue?: bool, // Enables integration with enqueue if set true. Allows resolve image caches in background by sending messages to MQ. // Default: false + * messenger?: bool|array{ // Enables integration with symfony/messenger if set true. Warmup image caches in background by sending messages to MQ. + * enabled?: bool, // Default: false + * }, + * templating?: bool, // Enables integration with symfony/templating component // Default: true + * webp?: array{ + * generate?: bool, // Default: false + * quality?: int, // Default: 100 + * cache?: scalar|null, // Default: null + * data_loader?: scalar|null, // Default: null + * post_processors?: array>, + * }, + * } + * @psalm-type TwigExtraConfig = array{ + * cache?: bool|array{ + * enabled?: bool, // Default: false + * }, + * html?: bool|array{ + * enabled?: bool, // Default: true + * }, + * markdown?: bool|array{ + * enabled?: bool, // Default: true + * }, + * intl?: bool|array{ + * enabled?: bool, // Default: true + * }, + * cssinliner?: bool|array{ + * enabled?: bool, // Default: true + * }, + * inky?: bool|array{ + * enabled?: bool, // Default: true + * }, + * string?: bool|array{ + * enabled?: bool, // Default: true + * }, + * commonmark?: array{ + * renderer?: array{ // Array of options for rendering HTML. + * block_separator?: scalar|null, + * inner_separator?: scalar|null, + * soft_break?: scalar|null, + * }, + * html_input?: "strip"|"allow"|"escape", // How to handle HTML input. + * allow_unsafe_links?: bool, // Remove risky link and image URLs by setting this to false. // Default: true + * max_nesting_level?: int, // The maximum nesting level for blocks. // Default: 9223372036854775807 + * max_delimiters_per_line?: int, // The maximum number of strong/emphasis delimiters per line. // Default: 9223372036854775807 + * slug_normalizer?: array{ // Array of options for configuring how URL-safe slugs are created. + * instance?: mixed, + * max_length?: int, // Default: 255 + * unique?: mixed, + * }, + * commonmark?: array{ // Array of options for configuring the CommonMark core extension. + * enable_em?: bool, // Default: true + * enable_strong?: bool, // Default: true + * use_asterisk?: bool, // Default: true + * use_underscore?: bool, // Default: true + * unordered_list_markers?: list, + * }, + * ... + * }, + * } + * @psalm-type GregwarCaptchaConfig = array{ + * length?: scalar|null, // Default: 5 + * width?: scalar|null, // Default: 130 + * height?: scalar|null, // Default: 50 + * font?: scalar|null, // Default: "C:\\Users\\mail\\Documents\\PHP\\Part-DB-server\\vendor\\gregwar\\captcha-bundle\\DependencyInjection/../Generator/Font/captcha.ttf" + * keep_value?: scalar|null, // Default: false + * charset?: scalar|null, // Default: "abcdefhjkmnprstuvwxyz23456789" + * as_file?: scalar|null, // Default: false + * as_url?: scalar|null, // Default: false + * reload?: scalar|null, // Default: false + * image_folder?: scalar|null, // Default: "captcha" + * web_path?: scalar|null, // Default: "%kernel.project_dir%/public" + * gc_freq?: scalar|null, // Default: 100 + * expiration?: scalar|null, // Default: 60 + * quality?: scalar|null, // Default: 50 + * invalid_message?: scalar|null, // Default: "Bad code value" + * bypass_code?: scalar|null, // Default: null + * whitelist_key?: scalar|null, // Default: "captcha_whitelist_key" + * humanity?: scalar|null, // Default: 0 + * distortion?: scalar|null, // Default: true + * max_front_lines?: scalar|null, // Default: null + * max_behind_lines?: scalar|null, // Default: null + * interpolation?: scalar|null, // Default: true + * text_color?: list, + * background_color?: list, + * background_images?: list, + * disabled?: scalar|null, // Default: false + * ignore_all_effects?: scalar|null, // Default: false + * session_key?: scalar|null, // Default: "captcha" + * } + * @psalm-type FlorianvSwapConfig = array{ + * cache?: array{ + * ttl?: int, // Default: 3600 + * type?: scalar|null, // A cache type or service id // Default: null + * }, + * providers?: array{ + * apilayer_fixer?: array{ + * priority?: int, // Default: 0 + * api_key: scalar|null, + * }, + * apilayer_currency_data?: array{ + * priority?: int, // Default: 0 + * api_key: scalar|null, + * }, + * apilayer_exchange_rates_data?: array{ + * priority?: int, // Default: 0 + * api_key: scalar|null, + * }, + * abstract_api?: array{ + * priority?: int, // Default: 0 + * api_key: scalar|null, + * }, + * fixer?: array{ + * priority?: int, // Default: 0 + * access_key: scalar|null, + * enterprise?: bool, // Default: false + * }, + * cryptonator?: array{ + * priority?: int, // Default: 0 + * }, + * exchange_rates_api?: array{ + * priority?: int, // Default: 0 + * access_key: scalar|null, + * enterprise?: bool, // Default: false + * }, + * webservicex?: array{ + * priority?: int, // Default: 0 + * }, + * central_bank_of_czech_republic?: array{ + * priority?: int, // Default: 0 + * }, + * central_bank_of_republic_turkey?: array{ + * priority?: int, // Default: 0 + * }, + * european_central_bank?: array{ + * priority?: int, // Default: 0 + * }, + * national_bank_of_romania?: array{ + * priority?: int, // Default: 0 + * }, + * russian_central_bank?: array{ + * priority?: int, // Default: 0 + * }, + * frankfurter?: array{ + * priority?: int, // Default: 0 + * }, + * fawazahmed_currency_api?: array{ + * priority?: int, // Default: 0 + * }, + * bulgarian_national_bank?: array{ + * priority?: int, // Default: 0 + * }, + * national_bank_of_ukraine?: array{ + * priority?: int, // Default: 0 + * }, + * currency_data_feed?: array{ + * priority?: int, // Default: 0 + * api_key: scalar|null, + * }, + * currency_layer?: array{ + * priority?: int, // Default: 0 + * access_key: scalar|null, + * enterprise?: bool, // Default: false + * }, + * forge?: array{ + * priority?: int, // Default: 0 + * api_key: scalar|null, + * }, + * open_exchange_rates?: array{ + * priority?: int, // Default: 0 + * app_id: scalar|null, + * enterprise?: bool, // Default: false + * }, + * xignite?: array{ + * priority?: int, // Default: 0 + * token: scalar|null, + * }, + * xchangeapi?: array{ + * priority?: int, // Default: 0 + * api_key: scalar|null, + * }, + * currency_converter?: array{ + * priority?: int, // Default: 0 + * access_key: scalar|null, + * enterprise?: bool, // Default: false + * }, + * array?: array{ + * priority?: int, // Default: 0 + * latestRates: mixed, + * historicalRates?: mixed, + * }, + * }, + * } + * @psalm-type NelmioSecurityConfig = array{ + * signed_cookie?: array{ + * names?: list, + * secret?: scalar|null, // Default: "%kernel.secret%" + * hash_algo?: scalar|null, + * legacy_hash_algo?: scalar|null, // Fallback algorithm to allow for frictionless hash algorithm upgrades. Use with caution and as a temporary measure as it allows for downgrade attacks. // Default: null + * separator?: scalar|null, // Default: "." + * }, + * clickjacking?: array{ + * hosts?: list, + * paths?: array, + * content_types?: list, + * }, + * external_redirects?: array{ + * abort?: bool, // Default: false + * override?: scalar|null, // Default: null + * forward_as?: scalar|null, // Default: null + * log?: bool, // Default: false + * allow_list?: list, + * }, + * flexible_ssl?: bool|array{ + * enabled?: bool, // Default: false + * cookie_name?: scalar|null, // Default: "auth" + * unsecured_logout?: bool, // Default: false + * }, + * forced_ssl?: bool|array{ + * enabled?: bool, // Default: false + * hsts_max_age?: scalar|null, // Default: null + * hsts_subdomains?: bool, // Default: false + * hsts_preload?: bool, // Default: false + * allow_list?: list, + * hosts?: list, + * redirect_status_code?: scalar|null, // Default: 302 + * }, + * content_type?: array{ + * nosniff?: bool, // Default: false + * }, + * xss_protection?: array{ // Deprecated: The "xss_protection" option is deprecated, use Content Security Policy without allowing "unsafe-inline" scripts instead. + * enabled?: bool, // Default: false + * mode_block?: bool, // Default: false + * report_uri?: scalar|null, // Default: null + * }, + * csp?: bool|array{ + * enabled?: bool, // Default: true + * request_matcher?: scalar|null, // Default: null + * hosts?: list, + * content_types?: list, + * report_endpoint?: array{ + * log_channel?: scalar|null, // Default: null + * log_formatter?: scalar|null, // Default: "nelmio_security.csp_report.log_formatter" + * log_level?: "alert"|"critical"|"debug"|"emergency"|"error"|"info"|"notice"|"warning", // Default: "notice" + * filters?: array{ + * domains?: bool, // Default: true + * schemes?: bool, // Default: true + * browser_bugs?: bool, // Default: true + * injected_scripts?: bool, // Default: true + * }, + * dismiss?: list>, + * }, + * compat_headers?: bool, // Default: true + * report_logger_service?: scalar|null, // Default: "logger" + * hash?: array{ + * algorithm?: "sha256"|"sha384"|"sha512", // The algorithm to use for hashes // Default: "sha256" + * }, + * report?: array{ + * level1_fallback?: bool, // Provides CSP Level 1 fallback when using hash or nonce (CSP level 2) by adding 'unsafe-inline' source. See https://www.w3.org/TR/CSP2/#directive-script-src and https://www.w3.org/TR/CSP2/#directive-style-src // Default: true + * browser_adaptive?: bool|array{ // Do not send directives that browser do not support + * enabled?: bool, // Default: false + * parser?: scalar|null, // Default: "nelmio_security.ua_parser.ua_php" + * }, + * default-src?: list, + * base-uri?: list, + * block-all-mixed-content?: bool, // Default: false + * child-src?: list, + * connect-src?: list, + * font-src?: list, + * form-action?: list, + * frame-ancestors?: list, + * frame-src?: list, + * img-src?: list, + * manifest-src?: list, + * media-src?: list, + * object-src?: list, + * plugin-types?: list, + * script-src?: list, + * style-src?: list, + * upgrade-insecure-requests?: bool, // Default: false + * report-uri?: list, + * worker-src?: list, + * prefetch-src?: list, + * report-to?: scalar|null, + * }, + * enforce?: array{ + * level1_fallback?: bool, // Provides CSP Level 1 fallback when using hash or nonce (CSP level 2) by adding 'unsafe-inline' source. See https://www.w3.org/TR/CSP2/#directive-script-src and https://www.w3.org/TR/CSP2/#directive-style-src // Default: true + * browser_adaptive?: bool|array{ // Do not send directives that browser do not support + * enabled?: bool, // Default: false + * parser?: scalar|null, // Default: "nelmio_security.ua_parser.ua_php" + * }, + * default-src?: list, + * base-uri?: list, + * block-all-mixed-content?: bool, // Default: false + * child-src?: list, + * connect-src?: list, + * font-src?: list, + * form-action?: list, + * frame-ancestors?: list, + * frame-src?: list, + * img-src?: list, + * manifest-src?: list, + * media-src?: list, + * object-src?: list, + * plugin-types?: list, + * script-src?: list, + * style-src?: list, + * upgrade-insecure-requests?: bool, // Default: false + * report-uri?: list, + * worker-src?: list, + * prefetch-src?: list, + * report-to?: scalar|null, + * }, + * }, + * referrer_policy?: bool|array{ + * enabled?: bool, // Default: false + * policies?: list, + * }, + * permissions_policy?: bool|array{ + * enabled?: bool, // Default: false + * policies?: array{ + * accelerometer?: mixed, // Default: null + * ambient_light_sensor?: mixed, // Default: null + * attribution_reporting?: mixed, // Default: null + * autoplay?: mixed, // Default: null + * bluetooth?: mixed, // Default: null + * browsing_topics?: mixed, // Default: null + * camera?: mixed, // Default: null + * captured_surface_control?: mixed, // Default: null + * compute_pressure?: mixed, // Default: null + * cross_origin_isolated?: mixed, // Default: null + * deferred_fetch?: mixed, // Default: null + * deferred_fetch_minimal?: mixed, // Default: null + * display_capture?: mixed, // Default: null + * encrypted_media?: mixed, // Default: null + * fullscreen?: mixed, // Default: null + * gamepad?: mixed, // Default: null + * geolocation?: mixed, // Default: null + * gyroscope?: mixed, // Default: null + * hid?: mixed, // Default: null + * identity_credentials_get?: mixed, // Default: null + * idle_detection?: mixed, // Default: null + * interest_cohort?: mixed, // Default: null + * language_detector?: mixed, // Default: null + * local_fonts?: mixed, // Default: null + * magnetometer?: mixed, // Default: null + * microphone?: mixed, // Default: null + * midi?: mixed, // Default: null + * otp_credentials?: mixed, // Default: null + * payment?: mixed, // Default: null + * picture_in_picture?: mixed, // Default: null + * publickey_credentials_create?: mixed, // Default: null + * publickey_credentials_get?: mixed, // Default: null + * screen_wake_lock?: mixed, // Default: null + * serial?: mixed, // Default: null + * speaker_selection?: mixed, // Default: null + * storage_access?: mixed, // Default: null + * summarizer?: mixed, // Default: null + * translator?: mixed, // Default: null + * usb?: mixed, // Default: null + * web_share?: mixed, // Default: null + * window_management?: mixed, // Default: null + * xr_spatial_tracking?: mixed, // Default: null + * }, + * }, + * } + * @psalm-type TurboConfig = array{ + * broadcast?: bool|array{ + * enabled?: bool, // Default: true + * entity_template_prefixes?: list, + * doctrine_orm?: bool|array{ // Enable the Doctrine ORM integration + * enabled?: bool, // Default: true + * }, + * }, + * default_transport?: scalar|null, // Default: "default" + * } + * @psalm-type TfaWebauthnConfig = array{ + * enabled?: scalar|null, // Default: false + * timeout?: int, // Default: 60000 + * rpID?: scalar|null, // Default: null + * rpName?: scalar|null, // Default: "Webauthn Application" + * rpIcon?: scalar|null, // Default: null + * template?: scalar|null, // Default: "@TFAWebauthn/Authentication/form.html.twig" + * U2FAppID?: scalar|null, // Default: null + * } + * @psalm-type SchebTwoFactorConfig = array{ + * persister?: scalar|null, // Default: "scheb_two_factor.persister.doctrine" + * model_manager_name?: scalar|null, // Default: null + * security_tokens?: list, + * ip_whitelist?: list, + * ip_whitelist_provider?: scalar|null, // Default: "scheb_two_factor.default_ip_whitelist_provider" + * two_factor_token_factory?: scalar|null, // Default: "scheb_two_factor.default_token_factory" + * two_factor_provider_decider?: scalar|null, // Default: "scheb_two_factor.default_provider_decider" + * two_factor_condition?: scalar|null, // Default: null + * code_reuse_cache?: scalar|null, // Default: null + * code_reuse_cache_duration?: int, // Default: 60 + * code_reuse_default_handler?: scalar|null, // Default: null + * trusted_device?: bool|array{ + * enabled?: scalar|null, // Default: false + * manager?: scalar|null, // Default: "scheb_two_factor.default_trusted_device_manager" + * lifetime?: int, // Default: 5184000 + * extend_lifetime?: bool, // Default: false + * key?: scalar|null, // Default: null + * cookie_name?: scalar|null, // Default: "trusted_device" + * cookie_secure?: true|false|"auto", // Default: "auto" + * cookie_domain?: scalar|null, // Default: null + * cookie_path?: scalar|null, // Default: "/" + * cookie_same_site?: scalar|null, // Default: "lax" + * }, + * backup_codes?: bool|array{ + * enabled?: scalar|null, // Default: false + * manager?: scalar|null, // Default: "scheb_two_factor.default_backup_code_manager" + * }, + * google?: bool|array{ + * enabled?: scalar|null, // Default: false + * form_renderer?: scalar|null, // Default: null + * issuer?: scalar|null, // Default: null + * server_name?: scalar|null, // Default: null + * template?: scalar|null, // Default: "@SchebTwoFactor/Authentication/form.html.twig" + * digits?: int, // Default: 6 + * leeway?: int, // Default: 0 + * }, + * } + * @psalm-type WebauthnConfig = array{ + * fake_credential_generator?: scalar|null, // A service that implements the FakeCredentialGenerator to generate fake credentials for preventing username enumeration. // Default: "Webauthn\\SimpleFakeCredentialGenerator" + * clock?: scalar|null, // PSR-20 Clock service. // Default: "webauthn.clock.default" + * options_storage?: scalar|null, // Service responsible of the options/user entity storage during the ceremony // Default: "Webauthn\\Bundle\\Security\\Storage\\SessionStorage" + * event_dispatcher?: scalar|null, // PSR-14 Event Dispatcher service. // Default: "Psr\\EventDispatcher\\EventDispatcherInterface" + * http_client?: scalar|null, // A Symfony HTTP client. // Default: "webauthn.http_client.default" + * logger?: scalar|null, // A PSR-3 logger to receive logs during the processes // Default: "webauthn.logger.default" + * credential_repository?: scalar|null, // This repository is responsible of the credential storage // Default: "Webauthn\\Bundle\\Repository\\DummyPublicKeyCredentialSourceRepository" + * user_repository?: scalar|null, // This repository is responsible of the user storage // Default: "Webauthn\\Bundle\\Repository\\DummyPublicKeyCredentialUserEntityRepository" + * allowed_origins?: array, + * allow_subdomains?: bool, // Default: false + * secured_rp_ids?: array, + * counter_checker?: scalar|null, // This service will check if the counter is valid. By default it throws an exception (recommended). // Default: "Webauthn\\Counter\\ThrowExceptionIfInvalid" + * top_origin_validator?: scalar|null, // For cross origin (e.g. iframe), this service will be in charge of verifying the top origin. // Default: null + * creation_profiles?: array, + * public_key_credential_parameters?: list, + * attestation_conveyance?: scalar|null, // Default: "none" + * }>, + * request_profiles?: array, + * }>, + * metadata?: bool|array{ // Enable the support of the Metadata Statements. Please read the documentation for this feature. + * enabled?: bool, // Default: false + * mds_repository: scalar|null, // The Metadata Statement repository. + * status_report_repository: scalar|null, // The Status Report repository. + * certificate_chain_checker?: scalar|null, // A Certificate Chain checker. // Default: "Webauthn\\MetadataService\\CertificateChain\\PhpCertificateChainValidator" + * }, + * controllers?: bool|array{ + * enabled?: bool, // Default: false + * creation?: array, + * allow_subdomains?: bool, // Default: false + * secured_rp_ids?: array, + * }>, + * request?: array, + * allow_subdomains?: bool, // Default: false + * secured_rp_ids?: array, + * }>, + * }, + * } + * @psalm-type NbgrpOneloginSamlConfig = array{ // nb:group OneLogin PHP Symfony Bundle configuration + * onelogin_settings?: array/saml/" + * strict?: bool, + * debug?: bool, + * idp: array{ + * entityId: scalar|null, + * singleSignOnService: array{ + * url: scalar|null, + * binding?: scalar|null, + * }, + * singleLogoutService?: array{ + * url?: scalar|null, + * responseUrl?: scalar|null, + * binding?: scalar|null, + * }, + * x509cert?: scalar|null, + * certFingerprint?: scalar|null, + * certFingerprintAlgorithm?: "sha1"|"sha256"|"sha384"|"sha512", + * x509certMulti?: array{ + * signing?: list, + * encryption?: list, + * }, + * }, + * sp?: array{ + * entityId?: scalar|null, // Default: "/saml/metadata" + * assertionConsumerService?: array{ + * url?: scalar|null, // Default: "/saml/acs" + * binding?: scalar|null, + * }, + * attributeConsumingService?: array{ + * serviceName?: scalar|null, + * serviceDescription?: scalar|null, + * requestedAttributes?: list, + * }>, + * }, + * singleLogoutService?: array{ + * url?: scalar|null, // Default: "/saml/logout" + * binding?: scalar|null, + * }, + * NameIDFormat?: scalar|null, + * x509cert?: scalar|null, + * privateKey?: scalar|null, + * x509certNew?: scalar|null, + * }, + * compress?: array{ + * requests?: bool, + * responses?: bool, + * }, + * security?: array{ + * nameIdEncrypted?: bool, + * authnRequestsSigned?: bool, + * logoutRequestSigned?: bool, + * logoutResponseSigned?: bool, + * signMetadata?: bool, + * wantMessagesSigned?: bool, + * wantAssertionsEncrypted?: bool, + * wantAssertionsSigned?: bool, + * wantNameId?: bool, + * wantNameIdEncrypted?: bool, + * requestedAuthnContext?: mixed, + * requestedAuthnContextComparison?: "exact"|"minimum"|"maximum"|"better", + * wantXMLValidation?: bool, + * relaxDestinationValidation?: bool, + * destinationStrictlyMatches?: bool, + * allowRepeatAttributeName?: bool, + * rejectUnsolicitedResponsesWithInResponseTo?: bool, + * signatureAlgorithm?: "http:\/\/www.w3.org\/2000\/09\/xmldsig#rsa-sha1"|"http:\/\/www.w3.org\/2000\/09\/xmldsig#dsa-sha1"|"http:\/\/www.w3.org\/2001\/04\/xmldsig-more#rsa-sha256"|"http:\/\/www.w3.org\/2001\/04\/xmldsig-more#rsa-sha384"|"http:\/\/www.w3.org\/2001\/04\/xmldsig-more#rsa-sha512", + * digestAlgorithm?: "http:\/\/www.w3.org\/2000\/09\/xmldsig#sha1"|"http:\/\/www.w3.org\/2001\/04\/xmlenc#sha256"|"http:\/\/www.w3.org\/2001\/04\/xmldsig-more#sha384"|"http:\/\/www.w3.org\/2001\/04\/xmlenc#sha512", + * encryption_algorithm?: "http:\/\/www.w3.org\/2001\/04\/xmlenc#tripledes-cbc"|"http:\/\/www.w3.org\/2001\/04\/xmlenc#aes128-cbc"|"http:\/\/www.w3.org\/2001\/04\/xmlenc#aes192-cbc"|"http:\/\/www.w3.org\/2001\/04\/xmlenc#aes256-cbc"|"http:\/\/www.w3.org\/2009\/xmlenc11#aes128-gcm"|"http:\/\/www.w3.org\/2009\/xmlenc11#aes192-gcm"|"http:\/\/www.w3.org\/2009\/xmlenc11#aes256-gcm", + * lowercaseUrlencoding?: bool, + * }, + * contactPerson?: array{ + * technical?: array{ + * givenName: scalar|null, + * emailAddress: scalar|null, + * }, + * support?: array{ + * givenName: scalar|null, + * emailAddress: scalar|null, + * }, + * administrative?: array{ + * givenName: scalar|null, + * emailAddress: scalar|null, + * }, + * billing?: array{ + * givenName: scalar|null, + * emailAddress: scalar|null, + * }, + * other?: array{ + * givenName: scalar|null, + * emailAddress: scalar|null, + * }, + * }, + * organization?: list, + * }>, + * use_proxy_vars?: bool, // Default: false + * idp_parameter_name?: scalar|null, // Default: "idp" + * entity_manager_name?: scalar|null, + * authn_request?: array{ + * parameters?: list, + * forceAuthn?: bool, // Default: false + * isPassive?: bool, // Default: false + * setNameIdPolicy?: bool, // Default: true + * nameIdValueReq?: scalar|null, // Default: null + * }, + * } + * @psalm-type StimulusConfig = array{ + * controller_paths?: list, + * controllers_json?: scalar|null, // Default: "%kernel.project_dir%/assets/controllers.json" + * } + * @psalm-type UxTranslatorConfig = array{ + * dump_directory?: scalar|null, // Default: "%kernel.project_dir%/var/translations" + * domains?: string|array{ // List of domains to include/exclude from the generated translations. Prefix with a `!` to exclude a domain. + * type?: scalar|null, + * elements?: list, + * }, + * } + * @psalm-type DompdfFontLoaderConfig = array{ + * autodiscovery?: bool|array{ + * paths?: list, + * exclude_patterns?: list, + * file_pattern?: scalar|null, // Default: "/\\.(ttf)$/" + * enabled?: bool, // Default: true + * }, + * auto_install?: bool, // Default: false + * fonts?: list, + * } + * @psalm-type KnpuOauth2ClientConfig = array{ + * http_client?: scalar|null, // Service id of HTTP client to use (must implement GuzzleHttp\ClientInterface) // Default: null + * http_client_options?: array{ + * timeout?: int, + * proxy?: scalar|null, + * verify?: bool, // Use only with proxy option set + * }, + * clients?: array>, + * } + * @psalm-type NelmioCorsConfig = array{ + * defaults?: array{ + * allow_credentials?: bool, // Default: false + * allow_origin?: list, + * allow_headers?: list, + * allow_methods?: list, + * allow_private_network?: bool, // Default: false + * expose_headers?: list, + * max_age?: scalar|null, // Default: 0 + * hosts?: list, + * origin_regex?: bool, // Default: false + * forced_allow_origin_value?: scalar|null, // Default: null + * skip_same_as_origin?: bool, // Default: true + * }, + * paths?: array, + * allow_headers?: list, + * allow_methods?: list, + * allow_private_network?: bool, + * expose_headers?: list, + * max_age?: scalar|null, // Default: 0 + * hosts?: list, + * origin_regex?: bool, + * forced_allow_origin_value?: scalar|null, // Default: null + * skip_same_as_origin?: bool, + * }>, + * } + * @psalm-type JbtronicsSettingsConfig = array{ + * search_paths?: list, + * proxy_dir?: scalar|null, // Default: "%kernel.cache_dir%/jbtronics_settings/proxies" + * proxy_namespace?: scalar|null, // Default: "Jbtronics\\SettingsBundle\\Proxies" + * default_storage_adapter?: scalar|null, // Default: null + * save_after_migration?: bool, // Default: true + * file_storage?: array{ + * storage_directory?: scalar|null, // Default: "%kernel.project_dir%/var/jbtronics_settings/" + * default_filename?: scalar|null, // Default: "settings" + * }, + * orm_storage?: array{ + * default_entity_class?: scalar|null, // Default: null + * prefetch_all?: bool, // Default: true + * }, + * cache?: array{ + * service?: scalar|null, // Default: "cache.app.taggable" + * default_cacheable?: bool, // Default: false + * ttl?: int, // Default: 0 + * invalidate_on_env_change?: bool, // Default: true + * }, + * } + * @psalm-type JbtronicsTranslationEditorConfig = array{ + * translations_path?: scalar|null, // Default: "%translator.default_path%" + * format?: scalar|null, // Default: "xlf" + * xliff_version?: scalar|null, // Default: "2.0" + * use_intl_icu_format?: bool, // Default: false + * writer_options?: list, + * } + * @psalm-type ApiPlatformConfig = array{ + * title?: scalar|null, // The title of the API. // Default: "" + * description?: scalar|null, // The description of the API. // Default: "" + * version?: scalar|null, // The version of the API. // Default: "0.0.0" + * show_webby?: bool, // If true, show Webby on the documentation page // Default: true + * use_symfony_listeners?: bool, // Uses Symfony event listeners instead of the ApiPlatform\Symfony\Controller\MainController. // Default: false + * name_converter?: scalar|null, // Specify a name converter to use. // Default: null + * asset_package?: scalar|null, // Specify an asset package name to use. // Default: null + * path_segment_name_generator?: scalar|null, // Specify a path name generator to use. // Default: "api_platform.metadata.path_segment_name_generator.underscore" + * inflector?: scalar|null, // Specify an inflector to use. // Default: "api_platform.metadata.inflector" + * validator?: array{ + * serialize_payload_fields?: mixed, // Set to null to serialize all payload fields when a validation error is thrown, or set the fields you want to include explicitly. // Default: [] + * query_parameter_validation?: bool, // Deprecated: Will be removed in API Platform 5.0. // Default: true + * }, + * eager_loading?: bool|array{ + * enabled?: bool, // Default: true + * fetch_partial?: bool, // Fetch only partial data according to serialization groups. If enabled, Doctrine ORM entities will not work as expected if any of the other fields are used. // Default: false + * max_joins?: int, // Max number of joined relations before EagerLoading throws a RuntimeException // Default: 30 + * force_eager?: bool, // Force join on every relation. If disabled, it will only join relations having the EAGER fetch mode. // Default: true + * }, + * handle_symfony_errors?: bool, // Allows to handle symfony exceptions. // Default: false + * enable_swagger?: bool, // Enable the Swagger documentation and export. // Default: true + * enable_json_streamer?: bool, // Enable json streamer. // Default: false + * enable_swagger_ui?: bool, // Enable Swagger UI // Default: true + * enable_re_doc?: bool, // Enable ReDoc // Default: true + * enable_entrypoint?: bool, // Enable the entrypoint // Default: true + * enable_docs?: bool, // Enable the docs // Default: true + * enable_profiler?: bool, // Enable the data collector and the WebProfilerBundle integration. // Default: true + * enable_phpdoc_parser?: bool, // Enable resource metadata collector using PHPStan PhpDocParser. // Default: true + * enable_link_security?: bool, // Enable security for Links (sub resources) // Default: false + * collection?: array{ + * exists_parameter_name?: scalar|null, // The name of the query parameter to filter on nullable field values. // Default: "exists" + * order?: scalar|null, // The default order of results. // Default: "ASC" + * order_parameter_name?: scalar|null, // The name of the query parameter to order results. // Default: "order" + * order_nulls_comparison?: "nulls_smallest"|"nulls_largest"|"nulls_always_first"|"nulls_always_last"|null, // The nulls comparison strategy. // Default: null + * pagination?: bool|array{ + * enabled?: bool, // Default: true + * page_parameter_name?: scalar|null, // The default name of the parameter handling the page number. // Default: "page" + * enabled_parameter_name?: scalar|null, // The name of the query parameter to enable or disable pagination. // Default: "pagination" + * items_per_page_parameter_name?: scalar|null, // The name of the query parameter to set the number of items per page. // Default: "itemsPerPage" + * partial_parameter_name?: scalar|null, // The name of the query parameter to enable or disable partial pagination. // Default: "partial" + * }, + * }, + * mapping?: array{ + * imports?: list, + * paths?: list, + * }, + * resource_class_directories?: list, + * serializer?: array{ + * hydra_prefix?: bool, // Use the "hydra:" prefix. // Default: false + * }, + * doctrine?: bool|array{ + * enabled?: bool, // Default: true + * }, + * doctrine_mongodb_odm?: bool|array{ + * enabled?: bool, // Default: false + * }, + * oauth?: bool|array{ + * enabled?: bool, // Default: false + * clientId?: scalar|null, // The oauth client id. // Default: "" + * clientSecret?: scalar|null, // The OAuth client secret. Never use this parameter in your production environment. It exposes crucial security information. This feature is intended for dev/test environments only. Enable "oauth.pkce" instead // Default: "" + * pkce?: bool, // Enable the oauth PKCE. // Default: false + * type?: scalar|null, // The oauth type. // Default: "oauth2" + * flow?: scalar|null, // The oauth flow grant type. // Default: "application" + * tokenUrl?: scalar|null, // The oauth token url. // Default: "" + * authorizationUrl?: scalar|null, // The oauth authentication url. // Default: "" + * refreshUrl?: scalar|null, // The oauth refresh url. // Default: "" + * scopes?: list, + * }, + * graphql?: bool|array{ + * enabled?: bool, // Default: false + * default_ide?: scalar|null, // Default: "graphiql" + * graphiql?: bool|array{ + * enabled?: bool, // Default: false + * }, + * introspection?: bool|array{ + * enabled?: bool, // Default: true + * }, + * max_query_depth?: int, // Default: 20 + * graphql_playground?: array, + * max_query_complexity?: int, // Default: 500 + * nesting_separator?: scalar|null, // The separator to use to filter nested fields. // Default: "_" + * collection?: array{ + * pagination?: bool|array{ + * enabled?: bool, // Default: true + * }, + * }, + * }, + * swagger?: array{ + * persist_authorization?: bool, // Persist the SwaggerUI Authorization in the localStorage. // Default: false + * versions?: list, + * api_keys?: array, + * http_auth?: array, + * swagger_ui_extra_configuration?: mixed, // To pass extra configuration to Swagger UI, like docExpansion or filter. // Default: [] + * }, + * http_cache?: array{ + * public?: bool|null, // To make all responses public by default. // Default: null + * invalidation?: bool|array{ // Enable the tags-based cache invalidation system. + * enabled?: bool, // Default: false + * varnish_urls?: list, + * urls?: list, + * scoped_clients?: list, + * max_header_length?: int, // Max header length supported by the cache server. // Default: 7500 + * request_options?: mixed, // To pass options to the client charged with the request. // Default: [] + * purger?: scalar|null, // Specify a purger to use (available values: "api_platform.http_cache.purger.varnish.ban", "api_platform.http_cache.purger.varnish.xkey", "api_platform.http_cache.purger.souin"). // Default: "api_platform.http_cache.purger.varnish" + * xkey?: array{ // Deprecated: The "xkey" configuration is deprecated, use your own purger to customize surrogate keys or the appropriate paramters. + * glue?: scalar|null, // xkey glue between keys // Default: " " + * }, + * }, + * }, + * mercure?: bool|array{ + * enabled?: bool, // Default: false + * hub_url?: scalar|null, // The URL sent in the Link HTTP header. If not set, will default to the URL for MercureBundle's default hub. // Default: null + * include_type?: bool, // Always include @type in updates (including delete ones). // Default: false + * }, + * messenger?: bool|array{ + * enabled?: bool, // Default: false + * }, + * elasticsearch?: bool|array{ + * enabled?: bool, // Default: false + * hosts?: list, + * }, + * openapi?: array{ + * contact?: array{ + * name?: scalar|null, // The identifying name of the contact person/organization. // Default: null + * url?: scalar|null, // The URL pointing to the contact information. MUST be in the format of a URL. // Default: null + * email?: scalar|null, // The email address of the contact person/organization. MUST be in the format of an email address. // Default: null + * }, + * termsOfService?: scalar|null, // A URL to the Terms of Service for the API. MUST be in the format of a URL. // Default: null + * tags?: list, + * license?: array{ + * name?: scalar|null, // The license name used for the API. // Default: null + * url?: scalar|null, // URL to the license used for the API. MUST be in the format of a URL. // Default: null + * identifier?: scalar|null, // An SPDX license expression for the API. The identifier field is mutually exclusive of the url field. // Default: null + * }, + * swagger_ui_extra_configuration?: mixed, // To pass extra configuration to Swagger UI, like docExpansion or filter. // Default: [] + * overrideResponses?: bool, // Whether API Platform adds automatic responses to the OpenAPI documentation. // Default: true + * error_resource_class?: scalar|null, // The class used to represent errors in the OpenAPI documentation. // Default: null + * validation_error_resource_class?: scalar|null, // The class used to represent validation errors in the OpenAPI documentation. // Default: null + * }, + * maker?: bool|array{ + * enabled?: bool, // Default: true + * }, + * exception_to_status?: array, + * formats?: array, + * }>, + * patch_formats?: array, + * }>, + * docs_formats?: array, + * }>, + * error_formats?: array, + * }>, + * jsonschema_formats?: list, + * defaults?: array{ + * uri_template?: mixed, + * short_name?: mixed, + * description?: mixed, + * types?: mixed, + * operations?: mixed, + * formats?: mixed, + * input_formats?: mixed, + * output_formats?: mixed, + * uri_variables?: mixed, + * route_prefix?: mixed, + * defaults?: mixed, + * requirements?: mixed, + * options?: mixed, + * stateless?: mixed, + * sunset?: mixed, + * accept_patch?: mixed, + * status?: mixed, + * host?: mixed, + * schemes?: mixed, + * condition?: mixed, + * controller?: mixed, + * class?: mixed, + * url_generation_strategy?: mixed, + * deprecation_reason?: mixed, + * headers?: mixed, + * cache_headers?: mixed, + * normalization_context?: mixed, + * denormalization_context?: mixed, + * collect_denormalization_errors?: mixed, + * hydra_context?: mixed, + * openapi?: mixed, + * validation_context?: mixed, + * filters?: mixed, + * mercure?: mixed, + * messenger?: mixed, + * input?: mixed, + * output?: mixed, + * order?: mixed, + * fetch_partial?: mixed, + * force_eager?: mixed, + * pagination_client_enabled?: mixed, + * pagination_client_items_per_page?: mixed, + * pagination_client_partial?: mixed, + * pagination_via_cursor?: mixed, + * pagination_enabled?: mixed, + * pagination_fetch_join_collection?: mixed, + * pagination_use_output_walkers?: mixed, + * pagination_items_per_page?: mixed, + * pagination_maximum_items_per_page?: mixed, + * pagination_partial?: mixed, + * pagination_type?: mixed, + * security?: mixed, + * security_message?: mixed, + * security_post_denormalize?: mixed, + * security_post_denormalize_message?: mixed, + * security_post_validation?: mixed, + * security_post_validation_message?: mixed, + * composite_identifier?: mixed, + * exception_to_status?: mixed, + * query_parameter_validation_enabled?: mixed, + * links?: mixed, + * graph_ql_operations?: mixed, + * provider?: mixed, + * processor?: mixed, + * state_options?: mixed, + * rules?: mixed, + * policy?: mixed, + * middleware?: mixed, + * parameters?: mixed, + * strict_query_parameter_validation?: mixed, + * hide_hydra_operation?: mixed, + * json_stream?: mixed, + * extra_properties?: mixed, + * map?: mixed, + * route_name?: mixed, + * errors?: mixed, + * read?: mixed, + * deserialize?: mixed, + * validate?: mixed, + * write?: mixed, + * serialize?: mixed, + * priority?: mixed, + * name?: mixed, + * allow_create?: mixed, + * item_uri_template?: mixed, + * ... + * }, + * } + * @psalm-type DamaDoctrineTestConfig = array{ + * enable_static_connection?: mixed, // Default: true + * enable_static_meta_data_cache?: bool, // Default: true + * enable_static_query_cache?: bool, // Default: true + * connection_keys?: list, + * } + * @psalm-type ConfigType = array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * doctrine?: DoctrineConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * security?: SecurityConfig, + * twig?: TwigConfig, + * monolog?: MonologConfig, + * webpack_encore?: WebpackEncoreConfig, + * datatables?: DatatablesConfig, + * liip_imagine?: LiipImagineConfig, + * twig_extra?: TwigExtraConfig, + * gregwar_captcha?: GregwarCaptchaConfig, + * florianv_swap?: FlorianvSwapConfig, + * nelmio_security?: NelmioSecurityConfig, + * turbo?: TurboConfig, + * tfa_webauthn?: TfaWebauthnConfig, + * scheb_two_factor?: SchebTwoFactorConfig, + * webauthn?: WebauthnConfig, + * nbgrp_onelogin_saml?: NbgrpOneloginSamlConfig, + * stimulus?: StimulusConfig, + * ux_translator?: UxTranslatorConfig, + * dompdf_font_loader?: DompdfFontLoaderConfig, + * knpu_oauth2_client?: KnpuOauth2ClientConfig, + * nelmio_cors?: NelmioCorsConfig, + * jbtronics_settings?: JbtronicsSettingsConfig, + * api_platform?: ApiPlatformConfig, + * "when@dev"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * doctrine?: DoctrineConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * security?: SecurityConfig, + * twig?: TwigConfig, + * web_profiler?: WebProfilerConfig, + * monolog?: MonologConfig, + * debug?: DebugConfig, + * maker?: MakerConfig, + * webpack_encore?: WebpackEncoreConfig, + * datatables?: DatatablesConfig, + * liip_imagine?: LiipImagineConfig, + * twig_extra?: TwigExtraConfig, + * gregwar_captcha?: GregwarCaptchaConfig, + * florianv_swap?: FlorianvSwapConfig, + * nelmio_security?: NelmioSecurityConfig, + * turbo?: TurboConfig, + * tfa_webauthn?: TfaWebauthnConfig, + * scheb_two_factor?: SchebTwoFactorConfig, + * webauthn?: WebauthnConfig, + * nbgrp_onelogin_saml?: NbgrpOneloginSamlConfig, + * stimulus?: StimulusConfig, + * ux_translator?: UxTranslatorConfig, + * dompdf_font_loader?: DompdfFontLoaderConfig, + * knpu_oauth2_client?: KnpuOauth2ClientConfig, + * nelmio_cors?: NelmioCorsConfig, + * jbtronics_settings?: JbtronicsSettingsConfig, + * jbtronics_translation_editor?: JbtronicsTranslationEditorConfig, + * api_platform?: ApiPlatformConfig, + * }, + * "when@docker"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * doctrine?: DoctrineConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * security?: SecurityConfig, + * twig?: TwigConfig, + * monolog?: MonologConfig, + * webpack_encore?: WebpackEncoreConfig, + * datatables?: DatatablesConfig, + * liip_imagine?: LiipImagineConfig, + * twig_extra?: TwigExtraConfig, + * gregwar_captcha?: GregwarCaptchaConfig, + * florianv_swap?: FlorianvSwapConfig, + * nelmio_security?: NelmioSecurityConfig, + * turbo?: TurboConfig, + * tfa_webauthn?: TfaWebauthnConfig, + * scheb_two_factor?: SchebTwoFactorConfig, + * webauthn?: WebauthnConfig, + * nbgrp_onelogin_saml?: NbgrpOneloginSamlConfig, + * stimulus?: StimulusConfig, + * ux_translator?: UxTranslatorConfig, + * dompdf_font_loader?: DompdfFontLoaderConfig, + * knpu_oauth2_client?: KnpuOauth2ClientConfig, + * nelmio_cors?: NelmioCorsConfig, + * jbtronics_settings?: JbtronicsSettingsConfig, + * api_platform?: ApiPlatformConfig, + * }, + * "when@prod"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * doctrine?: DoctrineConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * security?: SecurityConfig, + * twig?: TwigConfig, + * monolog?: MonologConfig, + * webpack_encore?: WebpackEncoreConfig, + * datatables?: DatatablesConfig, + * liip_imagine?: LiipImagineConfig, + * twig_extra?: TwigExtraConfig, + * gregwar_captcha?: GregwarCaptchaConfig, + * florianv_swap?: FlorianvSwapConfig, + * nelmio_security?: NelmioSecurityConfig, + * turbo?: TurboConfig, + * tfa_webauthn?: TfaWebauthnConfig, + * scheb_two_factor?: SchebTwoFactorConfig, + * webauthn?: WebauthnConfig, + * nbgrp_onelogin_saml?: NbgrpOneloginSamlConfig, + * stimulus?: StimulusConfig, + * ux_translator?: UxTranslatorConfig, + * dompdf_font_loader?: DompdfFontLoaderConfig, + * knpu_oauth2_client?: KnpuOauth2ClientConfig, + * nelmio_cors?: NelmioCorsConfig, + * jbtronics_settings?: JbtronicsSettingsConfig, + * api_platform?: ApiPlatformConfig, + * }, + * "when@test"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * doctrine?: DoctrineConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * security?: SecurityConfig, + * twig?: TwigConfig, + * web_profiler?: WebProfilerConfig, + * monolog?: MonologConfig, + * debug?: DebugConfig, + * webpack_encore?: WebpackEncoreConfig, + * datatables?: DatatablesConfig, + * liip_imagine?: LiipImagineConfig, + * dama_doctrine_test?: DamaDoctrineTestConfig, + * twig_extra?: TwigExtraConfig, + * gregwar_captcha?: GregwarCaptchaConfig, + * florianv_swap?: FlorianvSwapConfig, + * nelmio_security?: NelmioSecurityConfig, + * turbo?: TurboConfig, + * tfa_webauthn?: TfaWebauthnConfig, + * scheb_two_factor?: SchebTwoFactorConfig, + * webauthn?: WebauthnConfig, + * nbgrp_onelogin_saml?: NbgrpOneloginSamlConfig, + * stimulus?: StimulusConfig, + * ux_translator?: UxTranslatorConfig, + * dompdf_font_loader?: DompdfFontLoaderConfig, + * knpu_oauth2_client?: KnpuOauth2ClientConfig, + * nelmio_cors?: NelmioCorsConfig, + * jbtronics_settings?: JbtronicsSettingsConfig, + * api_platform?: ApiPlatformConfig, + * }, + * ..., + * }> + * } + */ +final class App +{ + /** + * @param ConfigType $config + * + * @psalm-return ConfigType + */ + public static function config(array $config): array + { + return AppReference::config($config); + } +} + +namespace Symfony\Component\Routing\Loader\Configurator; + +/** + * This class provides array-shapes for configuring the routes of an application. + * + * Example: + * + * ```php + * // config/routes.php + * namespace Symfony\Component\Routing\Loader\Configurator; + * + * return Routes::config([ + * 'controllers' => [ + * 'resource' => 'routing.controllers', + * ], + * ]); + * ``` + * + * @psalm-type RouteConfig = array{ + * path: string|array, + * controller?: string, + * methods?: string|list, + * requirements?: array, + * defaults?: array, + * options?: array, + * host?: string|array, + * schemes?: string|list, + * condition?: string, + * locale?: string, + * format?: string, + * utf8?: bool, + * stateless?: bool, + * } + * @psalm-type ImportConfig = array{ + * resource: string, + * type?: string, + * exclude?: string|list, + * prefix?: string|array, + * name_prefix?: string, + * trailing_slash_on_root?: bool, + * controller?: string, + * methods?: string|list, + * requirements?: array, + * defaults?: array, + * options?: array, + * host?: string|array, + * schemes?: string|list, + * condition?: string, + * locale?: string, + * format?: string, + * utf8?: bool, + * stateless?: bool, + * } + * @psalm-type AliasConfig = array{ + * alias: string, + * deprecated?: array{package:string, version:string, message?:string}, + * } + * @psalm-type RoutesConfig = array{ + * "when@dev"?: array, + * "when@docker"?: array, + * "when@prod"?: array, + * "when@test"?: array, + * ... + * } + */ +final class Routes +{ + /** + * @param RoutesConfig $config + * + * @psalm-return RoutesConfig + */ + public static function config(array $config): array + { + return $config; + } +} From 171508fcadeb3507bf5ef0b5af27f5de074afcbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 14:34:45 +0100 Subject: [PATCH 016/235] Fixed deprecated csv reader usage --- src/Services/ImportExportSystem/BOMImporter.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Services/ImportExportSystem/BOMImporter.php b/src/Services/ImportExportSystem/BOMImporter.php index 862fa463..e511c04d 100644 --- a/src/Services/ImportExportSystem/BOMImporter.php +++ b/src/Services/ImportExportSystem/BOMImporter.php @@ -134,7 +134,7 @@ class BOMImporter private function parseKiCADPCB(string $data): array { - $csv = Reader::createFromString($data); + $csv = Reader::fromString($data); $csv->setDelimiter(';'); $csv->setHeaderOffset(0); @@ -175,7 +175,7 @@ class BOMImporter */ private function validateKiCADPCB(string $data): array { - $csv = Reader::createFromString($data); + $csv = Reader::fromString($data); $csv->setDelimiter(';'); $csv->setHeaderOffset(0); @@ -202,7 +202,7 @@ class BOMImporter // Handle potential BOM (Byte Order Mark) at the beginning $data = preg_replace('/^\xEF\xBB\xBF/', '', $data); - $csv = Reader::createFromString($data); + $csv = Reader::fromString($data); $csv->setDelimiter($delimiter); $csv->setHeaderOffset(0); @@ -262,7 +262,7 @@ class BOMImporter // Handle potential BOM (Byte Order Mark) at the beginning $data = preg_replace('/^\xEF\xBB\xBF/', '', $data); - $csv = Reader::createFromString($data); + $csv = Reader::fromString($data); $csv->setDelimiter($delimiter); $csv->setHeaderOffset(0); From 4eac63b6833fde3e7357845ab8081c5901e69521 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 14:45:40 +0100 Subject: [PATCH 017/235] Fixed phpunit deprecations --- .../Controller/BulkInfoProviderImportControllerTest.php | 7 +++---- tests/Controller/PartControllerTest.php | 7 +++---- .../InfoProviderSystem/GlobalFieldMappingTypeTest.php | 9 ++++----- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/tests/Controller/BulkInfoProviderImportControllerTest.php b/tests/Controller/BulkInfoProviderImportControllerTest.php index e71a5fa2..8961d23b 100644 --- a/tests/Controller/BulkInfoProviderImportControllerTest.php +++ b/tests/Controller/BulkInfoProviderImportControllerTest.php @@ -30,13 +30,12 @@ use App\Services\InfoProviderSystem\DTOs\BulkSearchPartResultDTO; use App\Services\InfoProviderSystem\DTOs\BulkSearchPartResultsDTO; use App\Services\InfoProviderSystem\DTOs\BulkSearchResponseDTO; use App\Services\InfoProviderSystem\DTOs\SearchResultDTO; +use PHPUnit\Framework\Attributes\Group; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; use Symfony\Component\HttpFoundation\Response; -/** - * @group slow - * @group DB - */ +#[Group("slow")] +#[Group("DB")] class BulkInfoProviderImportControllerTest extends WebTestCase { public function testStep1WithoutIds(): void diff --git a/tests/Controller/PartControllerTest.php b/tests/Controller/PartControllerTest.php index c47c62f8..8c9f3729 100644 --- a/tests/Controller/PartControllerTest.php +++ b/tests/Controller/PartControllerTest.php @@ -32,13 +32,12 @@ use App\Entity\Parts\StorageLocation; use App\Entity\Parts\Supplier; use App\Entity\UserSystem\User; use App\Services\InfoProviderSystem\DTOs\BulkSearchResponseDTO; +use PHPUnit\Framework\Attributes\Group; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; use Symfony\Component\HttpFoundation\Response; -/** - * @group slow - * @group DB - */ +#[Group("slow")] +#[Group("DB")] class PartControllerTest extends WebTestCase { public function testShowPart(): void diff --git a/tests/Form/InfoProviderSystem/GlobalFieldMappingTypeTest.php b/tests/Form/InfoProviderSystem/GlobalFieldMappingTypeTest.php index 52e0b1d2..89e362e4 100644 --- a/tests/Form/InfoProviderSystem/GlobalFieldMappingTypeTest.php +++ b/tests/Form/InfoProviderSystem/GlobalFieldMappingTypeTest.php @@ -23,13 +23,12 @@ declare(strict_types=1); namespace App\Tests\Form\InfoProviderSystem; use App\Form\InfoProviderSystem\GlobalFieldMappingType; +use PHPUnit\Framework\Attributes\Group; use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; use Symfony\Component\Form\FormFactoryInterface; -/** - * @group slow - * @group DB - */ +#[Group("slow")] +#[Group("DB")] class GlobalFieldMappingTypeTest extends KernelTestCase { private FormFactoryInterface $formFactory; @@ -65,4 +64,4 @@ class GlobalFieldMappingTypeTest extends KernelTestCase $view = $form->createView(); $this->assertFalse($view['prefetch_details']->vars['required']); } -} \ No newline at end of file +} From 5fa2167755a604e014a792d73d8bb9ae3bf5fd45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 14:45:49 +0100 Subject: [PATCH 018/235] config/references update --- config/reference.php | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/config/reference.php b/config/reference.php index 6ea52419..5d58153f 100644 --- a/config/reference.php +++ b/config/reference.php @@ -1548,11 +1548,6 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * dump_destination?: scalar|null, // A stream URL where dumps should be written to. // Default: null * theme?: "dark"|"light", // Changes the color of the dump() output when rendered directly on the templating. "dark" (default) or "light". // Default: "dark" * } - * @psalm-type MakerConfig = array{ - * root_namespace?: scalar|null, // Default: "App" - * generate_final_classes?: bool, // Default: true - * generate_final_entities?: bool, // Default: false - * } * @psalm-type WebpackEncoreConfig = array{ * output_path: scalar|null, // The path where Encore is building the assets - i.e. Encore.setOutputPath() * crossorigin?: false|"anonymous"|"use-credentials", // crossorigin value when Encore.enableIntegrityHashes() is used, can be false (default), anonymous or use-credentials // Default: false @@ -1677,6 +1672,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * post_processors?: array>, * }, * } + * @psalm-type DamaDoctrineTestConfig = array{ + * enable_static_connection?: mixed, // Default: true + * enable_static_meta_data_cache?: bool, // Default: true + * enable_static_query_cache?: bool, // Default: true + * connection_keys?: list, + * } * @psalm-type TwigExtraConfig = array{ * cache?: bool|array{ * enabled?: bool, // Default: false @@ -2372,13 +2373,6 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * invalidate_on_env_change?: bool, // Default: true * }, * } - * @psalm-type JbtronicsTranslationEditorConfig = array{ - * translations_path?: scalar|null, // Default: "%translator.default_path%" - * format?: scalar|null, // Default: "xlf" - * xliff_version?: scalar|null, // Default: "2.0" - * use_intl_icu_format?: bool, // Default: false - * writer_options?: list, - * } * @psalm-type ApiPlatformConfig = array{ * title?: scalar|null, // The title of the API. // Default: "" * description?: scalar|null, // The description of the API. // Default: "" @@ -2634,11 +2628,17 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * ... * }, * } - * @psalm-type DamaDoctrineTestConfig = array{ - * enable_static_connection?: mixed, // Default: true - * enable_static_meta_data_cache?: bool, // Default: true - * enable_static_query_cache?: bool, // Default: true - * connection_keys?: list, + * @psalm-type MakerConfig = array{ + * root_namespace?: scalar|null, // Default: "App" + * generate_final_classes?: bool, // Default: true + * generate_final_entities?: bool, // Default: false + * } + * @psalm-type JbtronicsTranslationEditorConfig = array{ + * translations_path?: scalar|null, // Default: "%translator.default_path%" + * format?: scalar|null, // Default: "xlf" + * xliff_version?: scalar|null, // Default: "2.0" + * use_intl_icu_format?: bool, // Default: false + * writer_options?: list, * } * @psalm-type ConfigType = array{ * imports?: ImportsConfig, From 57dc4242b20748145bd20e57c6a2431982d18732 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 14:48:00 +0100 Subject: [PATCH 019/235] Updated phpunit bridge recipe --- bin/phpunit | 21 +-------------------- symfony.lock | 2 +- 2 files changed, 2 insertions(+), 21 deletions(-) diff --git a/bin/phpunit b/bin/phpunit index 692baccb..ac5eef11 100755 --- a/bin/phpunit +++ b/bin/phpunit @@ -1,23 +1,4 @@ #!/usr/bin/env php = 80000) { - require dirname(__DIR__).'/vendor/phpunit/phpunit/phpunit'; - } else { - define('PHPUNIT_COMPOSER_INSTALL', dirname(__DIR__).'/vendor/autoload.php'); - require PHPUNIT_COMPOSER_INSTALL; - PHPUnit\TextUI\Command::main(); - } -} else { - if (!is_file(dirname(__DIR__).'/vendor/symfony/phpunit-bridge/bin/simple-phpunit.php')) { - echo "Unable to find the `simple-phpunit.php` script in `vendor/symfony/phpunit-bridge/bin/`.\n"; - exit(1); - } - - require dirname(__DIR__).'/vendor/symfony/phpunit-bridge/bin/simple-phpunit.php'; -} +require dirname(__DIR__).'/vendor/phpunit/phpunit/phpunit'; diff --git a/symfony.lock b/symfony.lock index 2cff2c00..e4ff0c04 100644 --- a/symfony.lock +++ b/symfony.lock @@ -305,7 +305,7 @@ "repo": "github.com/symfony/recipes", "branch": "main", "version": "11.1", - "ref": "c6658a60fc9d594805370eacdf542c3d6b5c0869" + "ref": "1117deb12541f35793eec9fff7494d7aa12283fc" }, "files": [ ".env.test", From 070ce800d5ec2b5dde46a672289612291661463c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 14:50:46 +0100 Subject: [PATCH 020/235] Updated framework bundle recipe --- .env | 1 + config/services.yaml | 3 +++ symfony.lock | 6 +++--- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.env b/.env index 982d4bbd..190afef0 100644 --- a/.env +++ b/.env @@ -134,4 +134,5 @@ CORS_ALLOW_ORIGIN='^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$' ###> symfony/framework-bundle ### APP_ENV=prod APP_SECRET=a03498528f5a5fc089273ec9ae5b2849 +APP_SHARE_DIR=var/share ###< symfony/framework-bundle ### diff --git a/config/services.yaml b/config/services.yaml index b48b3eff..57dddc66 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -1,5 +1,8 @@ +# yaml-language-server: $schema=../vendor/symfony/dependency-injection/Loader/schema/services.schema.json + # This file is the entry point to configure your own services. # Files in the packages/ subdirectory configure your dependencies. +# See also https://symfony.com/doc/current/service_container/import.html # Put parameters here that don't need to change on each machine where the app is deployed # https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration diff --git a/symfony.lock b/symfony.lock index e4ff0c04..e3a59833 100644 --- a/symfony.lock +++ b/symfony.lock @@ -488,12 +488,12 @@ ] }, "symfony/framework-bundle": { - "version": "7.3", + "version": "7.4", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", - "version": "7.3", - "ref": "5a1497d539f691b96afd45ae397ce5fe30beb4b9" + "version": "7.4", + "ref": "09f6e081c763a206802674ce0cb34a022f0ffc6d" }, "files": [ ".editorconfig", From 3dc66542b2f775df6956800afbcd14e6cee7be52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 14:51:56 +0100 Subject: [PATCH 021/235] Updated monolog recipe --- config/packages/monolog.yaml | 9 +-------- symfony.lock | 6 +++--- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/config/packages/monolog.yaml b/config/packages/monolog.yaml index 725ebd7c..387d71ad 100644 --- a/config/packages/monolog.yaml +++ b/config/packages/monolog.yaml @@ -10,14 +10,6 @@ when@dev: path: "%kernel.logs_dir%/%kernel.environment%.log" level: debug channels: ["!event"] - # uncomment to get logging in your browser - # you may have to allow bigger header sizes in your Web server configuration - #firephp: - # type: firephp - # level: info - #chromephp: - # type: chromephp - # level: info console: type: console process_psr_3_messages: false @@ -45,6 +37,7 @@ when@prod: action_level: error handler: nested excluded_http_codes: [404, 405] + channels: ["!deprecation"] buffer_size: 50 # How many messages should be saved? Prevent memory leaks nested: type: stream diff --git a/symfony.lock b/symfony.lock index e3a59833..b0b46a52 100644 --- a/symfony.lock +++ b/symfony.lock @@ -550,15 +550,15 @@ "version": "v4.4.2" }, "symfony/monolog-bundle": { - "version": "3.10", + "version": "3.11", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", "version": "3.7", - "ref": "aff23899c4440dd995907613c1dd709b6f59503f" + "ref": "1b9efb10c54cb51c713a9391c9300ff8bceda459" }, "files": [ - "./config/packages/monolog.yaml" + "config/packages/monolog.yaml" ] }, "symfony/options-resolver": { From 045362de0ec1599a1ec0c507cb869bb6193e7dfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 14:53:03 +0100 Subject: [PATCH 022/235] New translations messages.en.xlf (English) --- translations/messages.en.xlf | 50 +++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index ca05bee9..a03d2e33 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -3448,7 +3448,7 @@ Sub elements will be moved upwards. group.label - Group: + Group @@ -14412,5 +14412,53 @@ Please note that this system is currently experimental, and the synonyms defined Parts + + + project_bom_entry.labelp + BOM entries + + + + + part_lot.labelp + Part lots + + + + + orderdetail.labelp + Order details + + + + + pricedetail.labelp + Price details + + + + + parameter.labelp + Parameters + + + + + part_association.labelp + Part associations + + + + + bulk_info_provider_import_job.labelp + Bulk info provider imports + + + + + bulk_info_provider_import_job_part.labelp + Bulk import job part + + From bb650c2218701c1ea4595ff53c63d5e527dd436b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 15:01:37 +0100 Subject: [PATCH 023/235] Updated routing recipe --- .env | 2 +- config/reference.php | 34 +++++++++++++++++----------------- config/routes.yaml | 11 ++++++++++- symfony.lock | 6 +++--- 4 files changed, 31 insertions(+), 22 deletions(-) diff --git a/.env b/.env index 190afef0..89dc55d5 100644 --- a/.env +++ b/.env @@ -31,7 +31,7 @@ DATABASE_EMULATE_NATURAL_SORT=0 # General settings ################################################################################### -# The public reachable URL of this Part-DB installation. This is used for generating links in SAML and email templates +# The public reachable URL of this Part-DB installation. This is used for generating links in SAML and email templates or when no request context is available. # This must end with a slash! DEFAULT_URI="https://partdb.changeme.invalid/" diff --git a/config/reference.php b/config/reference.php index 5d58153f..6ea52419 100644 --- a/config/reference.php +++ b/config/reference.php @@ -1548,6 +1548,11 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * dump_destination?: scalar|null, // A stream URL where dumps should be written to. // Default: null * theme?: "dark"|"light", // Changes the color of the dump() output when rendered directly on the templating. "dark" (default) or "light". // Default: "dark" * } + * @psalm-type MakerConfig = array{ + * root_namespace?: scalar|null, // Default: "App" + * generate_final_classes?: bool, // Default: true + * generate_final_entities?: bool, // Default: false + * } * @psalm-type WebpackEncoreConfig = array{ * output_path: scalar|null, // The path where Encore is building the assets - i.e. Encore.setOutputPath() * crossorigin?: false|"anonymous"|"use-credentials", // crossorigin value when Encore.enableIntegrityHashes() is used, can be false (default), anonymous or use-credentials // Default: false @@ -1672,12 +1677,6 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * post_processors?: array>, * }, * } - * @psalm-type DamaDoctrineTestConfig = array{ - * enable_static_connection?: mixed, // Default: true - * enable_static_meta_data_cache?: bool, // Default: true - * enable_static_query_cache?: bool, // Default: true - * connection_keys?: list, - * } * @psalm-type TwigExtraConfig = array{ * cache?: bool|array{ * enabled?: bool, // Default: false @@ -2373,6 +2372,13 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * invalidate_on_env_change?: bool, // Default: true * }, * } + * @psalm-type JbtronicsTranslationEditorConfig = array{ + * translations_path?: scalar|null, // Default: "%translator.default_path%" + * format?: scalar|null, // Default: "xlf" + * xliff_version?: scalar|null, // Default: "2.0" + * use_intl_icu_format?: bool, // Default: false + * writer_options?: list, + * } * @psalm-type ApiPlatformConfig = array{ * title?: scalar|null, // The title of the API. // Default: "" * description?: scalar|null, // The description of the API. // Default: "" @@ -2628,17 +2634,11 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * ... * }, * } - * @psalm-type MakerConfig = array{ - * root_namespace?: scalar|null, // Default: "App" - * generate_final_classes?: bool, // Default: true - * generate_final_entities?: bool, // Default: false - * } - * @psalm-type JbtronicsTranslationEditorConfig = array{ - * translations_path?: scalar|null, // Default: "%translator.default_path%" - * format?: scalar|null, // Default: "xlf" - * xliff_version?: scalar|null, // Default: "2.0" - * use_intl_icu_format?: bool, // Default: false - * writer_options?: list, + * @psalm-type DamaDoctrineTestConfig = array{ + * enable_static_connection?: mixed, // Default: true + * enable_static_meta_data_cache?: bool, // Default: true + * enable_static_query_cache?: bool, // Default: true + * connection_keys?: list, * } * @psalm-type ConfigType = array{ * imports?: ImportsConfig, diff --git a/config/routes.yaml b/config/routes.yaml index 8b38fa71..4830b774 100644 --- a/config/routes.yaml +++ b/config/routes.yaml @@ -1,3 +1,12 @@ +# yaml-language-server: $schema=../vendor/symfony/routing/Loader/schema/routing.schema.json + +# This file is the entry point to configure the routes of your app. +# Methods with the #[Route] attribute are automatically imported. +# See also https://symfony.com/doc/current/routing.html + +# To list all registered routes, run the following command: +# bin/console debug:router + # Redirect every url without an locale to the locale of the user/the global base locale scan_qr: @@ -16,4 +25,4 @@ redirector: url: ".*" controller: App\Controller\RedirectController::addLocalePart # Dont match localized routes (no redirection loop, if no root with that name exists) or API prefixed routes - condition: "not (request.getPathInfo() matches '/^\\\\/([a-z]{2}(_[A-Z]{2})?|api)\\\\//')" \ No newline at end of file + condition: "not (request.getPathInfo() matches '/^\\\\/([a-z]{2}(_[A-Z]{2})?|api)\\\\//')" diff --git a/symfony.lock b/symfony.lock index b0b46a52..e572d253 100644 --- a/symfony.lock +++ b/symfony.lock @@ -611,12 +611,12 @@ ] }, "symfony/routing": { - "version": "7.3", + "version": "7.4", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", - "version": "7.0", - "ref": "21b72649d5622d8f7da329ffb5afb232a023619d" + "version": "7.4", + "ref": "bc94c4fd86f393f3ab3947c18b830ea343e51ded" }, "files": [ "config/packages/routing.yaml", From 52a997576922e1560f5c3d0ff55a50c305ac63da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 15:03:23 +0100 Subject: [PATCH 024/235] Updated security recipe --- symfony.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/symfony.lock b/symfony.lock index e572d253..bd8f9964 100644 --- a/symfony.lock +++ b/symfony.lock @@ -627,12 +627,12 @@ "version": "v5.3.4" }, "symfony/security-bundle": { - "version": "6.4", + "version": "7.4", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", - "version": "6.4", - "ref": "2ae08430db28c8eb4476605894296c82a642028f" + "version": "7.4", + "ref": "c42fee7802181cdd50f61b8622715829f5d2335c" }, "files": [ "config/packages/security.yaml", From 4750a50fb9a925b9f13d3e93a4d333a45eeff9d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 15:07:27 +0100 Subject: [PATCH 025/235] Updated stimulus recipe --- assets/controllers/csrf_protection_controller.js | 4 +++- assets/js/app.js | 2 +- assets/{bootstrap.js => stimulus_bootstrap.js} | 0 symfony.lock | 10 +++++----- webpack.config.js | 2 +- 5 files changed, 10 insertions(+), 8 deletions(-) rename assets/{bootstrap.js => stimulus_bootstrap.js} (100%) diff --git a/assets/controllers/csrf_protection_controller.js b/assets/controllers/csrf_protection_controller.js index c722f024..511fffa5 100644 --- a/assets/controllers/csrf_protection_controller.js +++ b/assets/controllers/csrf_protection_controller.js @@ -2,6 +2,8 @@ const nameCheck = /^[-_a-zA-Z0-9]{4,22}$/; const tokenCheck = /^[-_/+a-zA-Z0-9]{24,}$/; // Generate and double-submit a CSRF token in a form field and a cookie, as defined by Symfony's SameOriginCsrfTokenManager +// Use `form.requestSubmit()` to ensure that the submit event is triggered. Using `form.submit()` will not trigger the event +// and thus this event-listener will not be executed. document.addEventListener('submit', function (event) { generateCsrfToken(event.target); }, true); @@ -33,8 +35,8 @@ export function generateCsrfToken (formElement) { if (!csrfCookie && nameCheck.test(csrfToken)) { csrfField.setAttribute('data-csrf-protection-cookie-value', csrfCookie = csrfToken); csrfField.defaultValue = csrfToken = btoa(String.fromCharCode.apply(null, (window.crypto || window.msCrypto).getRandomValues(new Uint8Array(18)))); - csrfField.dispatchEvent(new Event('change', { bubbles: true })); } + csrfField.dispatchEvent(new Event('change', { bubbles: true })); if (csrfCookie && tokenCheck.test(csrfToken)) { const cookie = csrfCookie + '_' + csrfToken + '=' + csrfCookie + '; path=/; samesite=strict'; diff --git a/assets/js/app.js b/assets/js/app.js index 54b73676..c0550373 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -28,7 +28,7 @@ import '../css/app/treeview.css'; import '../css/app/images.css'; // start the Stimulus application -import '../bootstrap'; +import '../stimulus_bootstrap'; // Need jQuery? Install it with "yarn add jquery", then uncomment to require it. const $ = require('jquery'); diff --git a/assets/bootstrap.js b/assets/stimulus_bootstrap.js similarity index 100% rename from assets/bootstrap.js rename to assets/stimulus_bootstrap.js diff --git a/symfony.lock b/symfony.lock index bd8f9964..3d3e71de 100644 --- a/symfony.lock +++ b/symfony.lock @@ -655,18 +655,18 @@ "version": "v1.1.5" }, "symfony/stimulus-bundle": { - "version": "2.27", + "version": "2.31", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", - "version": "2.20", - "ref": "e058471c5502e549c1404ebdd510099107bb5549" + "version": "2.24", + "ref": "3357f2fa6627b93658d8e13baa416b2a94a50c5f" }, "files": [ - "assets/bootstrap.js", "assets/controllers.json", "assets/controllers/csrf_protection_controller.js", - "assets/controllers/hello_controller.js" + "assets/controllers/hello_controller.js", + "assets/stimulus_bootstrap.js" ] }, "symfony/stopwatch": { diff --git a/webpack.config.js b/webpack.config.js index 05f9514e..50bd3d39 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -71,7 +71,7 @@ Encore // When enabled, Webpack "splits" your files into smaller pieces for greater optimization. .splitEntryChunks() - // enables the Symfony UX Stimulus bridge (used in assets/bootstrap.js) + // enables the Symfony UX Stimulus bridge (used in assets/stimulus_bootstrap.js) .enableStimulusBridge('./assets/controllers.json') // will require an extra script tag for runtime.js From 3518321f0ee6a3640978189f1d2b95964a355415 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 15:10:13 +0100 Subject: [PATCH 026/235] Updated webpack-encore bundle --- package.json | 4 ++-- symfony.lock | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index f2fbebcd..a58b3aa4 100644 --- a/package.json +++ b/package.json @@ -9,9 +9,9 @@ "@symfony/stimulus-bridge": "^4.0.0", "@symfony/ux-translator": "file:vendor/symfony/ux-translator/assets", "@symfony/ux-turbo": "file:vendor/symfony/ux-turbo/assets", - "@symfony/webpack-encore": "^5.0.0", + "@symfony/webpack-encore": "^5.1.0", "bootstrap": "^5.1.3", - "core-js": "^3.23.0", + "core-js": "^3.38.0", "intl-messageformat": "^10.2.5", "jquery": "^3.5.1", "popper.js": "^1.14.7", diff --git a/symfony.lock b/symfony.lock index 3d3e71de..3fce7c93 100644 --- a/symfony.lock +++ b/symfony.lock @@ -779,12 +779,12 @@ ] }, "symfony/webpack-encore-bundle": { - "version": "2.2", + "version": "2.3", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", "version": "2.0", - "ref": "9ef5412a4a2a8415aca3a3f2b4edd3866aab9a19" + "ref": "719f6110345acb6495e496601fc1b4977d7102b3" }, "files": [ "assets/app.js", From e112a8dbe0e08c1315d7e562ffb0e4ed839172f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 15:17:37 +0100 Subject: [PATCH 027/235] Use static message in settings to remove translation editor clutter --- src/Form/Settings/TypeSynonymRowType.php | 5 ++++- src/Settings/MiscSettings/IpnSuggestSettings.php | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Form/Settings/TypeSynonymRowType.php b/src/Form/Settings/TypeSynonymRowType.php index 234a7691..f3b8f0b6 100644 --- a/src/Form/Settings/TypeSynonymRowType.php +++ b/src/Form/Settings/TypeSynonymRowType.php @@ -31,6 +31,7 @@ use Symfony\Component\Form\Extension\Core\Type\LocaleType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Intl\Locales; +use Symfony\Component\Translation\StaticMessage; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Contracts\Translation\TranslatorInterface; @@ -67,7 +68,9 @@ class TypeSynonymRowType extends AbstractType new Assert\NotBlank(), ], 'choice_label' => function (ElementTypes $choice) { - return $this->translator->trans($choice->getDefaultLabelKey()) . ' (' . $this->translator->trans($choice->getDefaultPluralLabelKey()) . ')'; + return new StaticMessage( + $this->translator->trans($choice->getDefaultLabelKey()) . ' (' . $this->translator->trans($choice->getDefaultPluralLabelKey()) . ')' + ); }, 'row_attr' => ['class' => 'mb-0'], 'attr' => ['class' => 'form-select-sm'], diff --git a/src/Settings/MiscSettings/IpnSuggestSettings.php b/src/Settings/MiscSettings/IpnSuggestSettings.php index 891b885c..6094b035 100644 --- a/src/Settings/MiscSettings/IpnSuggestSettings.php +++ b/src/Settings/MiscSettings/IpnSuggestSettings.php @@ -30,6 +30,7 @@ use Jbtronics\SettingsBundle\ParameterTypes\StringType; use Jbtronics\SettingsBundle\Settings\Settings; use Jbtronics\SettingsBundle\Settings\SettingsParameter; use Jbtronics\SettingsBundle\Settings\SettingsTrait; +use Symfony\Component\Translation\StaticMessage; use Symfony\Component\Translation\TranslatableMessage as TM; use Symfony\Component\Validator\Constraints as Assert; @@ -43,7 +44,7 @@ class IpnSuggestSettings label: new TM("settings.misc.ipn_suggest.regex"), description: new TM("settings.misc.ipn_suggest.regex.help"), options: ['type' => StringType::class], - formOptions: ['attr' => ['placeholder' => '^[A-Za-z0-9]{3,4}(?:-[A-Za-z0-9]{3,4})*-\d{4}$']], + formOptions: ['attr' => ['placeholder' => new StaticMessage( '^[A-Za-z0-9]{3,4}(?:-[A-Za-z0-9]{3,4})*-\d{4}$')]], envVar: "IPN_SUGGEST_REGEX", envVarMode: EnvVarMode::OVERWRITE, )] public ?string $regex = null; From 8e11e06077a96c001220d8ee2195e65ed019e5b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 15:28:22 +0100 Subject: [PATCH 028/235] Fixed multi translation of env var tooltip to remove clutter in translation editor --- templates/form/settings_form.html.twig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/form/settings_form.html.twig b/templates/form/settings_form.html.twig index 9e1a8c4f..8f76720e 100644 --- a/templates/form/settings_form.html.twig +++ b/templates/form/settings_form.html.twig @@ -3,7 +3,7 @@ {% block form_label %} {# If parameter_envvar exists on form then show it as tooltip #} {% if parameter_envvar is defined and parameter_envvar is not null %} - {%- set label_attr = label_attr|merge({title: 'settings.tooltip.overrideable_by_env'|trans(arguments = {'%env%': (parameter_envvar)|trim})}) -%} + {%- set label_attr = label_attr|merge({title: t('settings.tooltip.overrideable_by_env', {'%env%': (parameter_envvar)|trim})}) -%} {% endif %} {{- parent() -}} {% endblock %} @@ -11,7 +11,7 @@ {% block checkbox_radio_label %} {# If parameter_envvar exists on form then show it as tooltip #} {% if parameter_envvar is defined and parameter_envvar is not null %} - {%- set label_attr = label_attr|merge({title: 'settings.tooltip.overrideable_by_env'|trans(arguments = {'%env%': (parameter_envvar)|trim})}) -%} + {%- set label_attr = label_attr|merge({title: t('settings.tooltip.overrideable_by_env', {'%env%': (parameter_envvar)|trim})}) -%} {% endif %} {{- parent() -}} {% endblock %} @@ -19,7 +19,7 @@ {% block tristate_label %} {# If parameter_envvar exists on form then show it as tooltip #} {% if parameter_envvar is defined and parameter_envvar is not null %} - {%- set label_attr = label_attr|merge({title: 'settings.tooltip.overrideable_by_env'|trans(arguments = {'%env%': (parameter_envvar)|trim})}) -%} + {%- set label_attr = label_attr|merge({title: t('settings.tooltip.overrideable_by_env', {'%env%': (parameter_envvar)|trim})}) -%} {% endif %} {{- parent() -}} {% endblock %} From d55d9b43f96c1deb6d53f8d2b5f65fa874893c98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 15:33:52 +0100 Subject: [PATCH 029/235] Removed more clutter in settings form translation --- src/Form/InfoProviderSystem/ProviderSelectType.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Form/InfoProviderSystem/ProviderSelectType.php b/src/Form/InfoProviderSystem/ProviderSelectType.php index 95e10791..74a3c28c 100644 --- a/src/Form/InfoProviderSystem/ProviderSelectType.php +++ b/src/Form/InfoProviderSystem/ProviderSelectType.php @@ -30,6 +30,7 @@ use Symfony\Component\Form\ChoiceList\ChoiceList; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\OptionsResolver\Options; use Symfony\Component\OptionsResolver\OptionsResolver; +use Symfony\Component\Translation\StaticMessage; class ProviderSelectType extends AbstractType { @@ -70,7 +71,9 @@ class ProviderSelectType extends AbstractType //The choice_label and choice_value only needs to be set if we want the objects $resolver->setDefault('choice_label', function (Options $options){ if ('object' === $options['input']) { - return ChoiceList::label($this, static fn (?InfoProviderInterface $choice) => $choice?->getProviderInfo()['name']); + return ChoiceList::label($this, static fn (?InfoProviderInterface $choice) => new StaticMessage($choice?->getProviderInfo()['name'])); + } else { + return static fn ($choice, $key, $value) => new StaticMessage($key); } return null; From 3649fffde16190598d7326d5c9b571f38946982e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 15:36:54 +0100 Subject: [PATCH 030/235] Made password toggle buttons labels translatable --- src/Form/Extension/TogglePasswordTypeExtension.php | 4 ++-- translations/messages.en.xlf | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/Form/Extension/TogglePasswordTypeExtension.php b/src/Form/Extension/TogglePasswordTypeExtension.php index 8f7320df..fec4c0b3 100644 --- a/src/Form/Extension/TogglePasswordTypeExtension.php +++ b/src/Form/Extension/TogglePasswordTypeExtension.php @@ -46,8 +46,8 @@ final class TogglePasswordTypeExtension extends AbstractTypeExtension { $resolver->setDefaults([ 'toggle' => false, - 'hidden_label' => 'Hide', - 'visible_label' => 'Show', + 'hidden_label' => new TranslatableMessage('password_toggle.hide'), + 'visible_label' => new TranslatableMessage('password_toggle.show'), 'hidden_icon' => 'Default', 'visible_icon' => 'Default', 'button_classes' => ['toggle-password-button'], diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 77169792..cf1d5400 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -14460,5 +14460,17 @@ Please note that this system is currently experimental, and the synonyms defined Bulk import job part + + + password_toggle.hide + Hide + + + + + password_toggle.show + Show + + From 161a9e930d166d0678e4d6cee3db933c50b30359 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 15:38:46 +0100 Subject: [PATCH 031/235] Made IPN format help placeholder translatable --- src/Settings/MiscSettings/IpnSuggestSettings.php | 2 +- translations/messages.en.xlf | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Settings/MiscSettings/IpnSuggestSettings.php b/src/Settings/MiscSettings/IpnSuggestSettings.php index 6094b035..44c4e24e 100644 --- a/src/Settings/MiscSettings/IpnSuggestSettings.php +++ b/src/Settings/MiscSettings/IpnSuggestSettings.php @@ -53,7 +53,7 @@ class IpnSuggestSettings label: new TM("settings.misc.ipn_suggest.regex_help"), description: new TM("settings.misc.ipn_suggest.regex_help_description"), options: ['type' => StringType::class], - formOptions: ['attr' => ['placeholder' => 'Format: 3–4 alphanumeric segments (any number) separated by "-", followed by "-" and 4 digits, e.g., PCOM-RES-0001']], + formOptions: ['attr' => ['placeholder' => new TM('settings.misc.ipn_suggest.regex.help.placeholder')]], envVar: "IPN_SUGGEST_REGEX_HELP", envVarMode: EnvVarMode::OVERWRITE, )] public ?string $regexHelp = null; diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index cf1d5400..6e938601 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -14472,5 +14472,11 @@ Please note that this system is currently experimental, and the synonyms defined Show + + + settings.misc.ipn_suggest.regex.help.placeholder + e.g. Format: 3–4 alphanumeric segments (any number) separated by "-", followed by "-" and 4 digits, e.g., PCOM-RES-0001 + + From 3b4a099285adca1957af77375d97a927943972ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 15:43:25 +0100 Subject: [PATCH 032/235] Use AutowireIterator instead of deprecated TaggedIterator --- src/Services/EntityMergers/EntityMerger.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Services/EntityMergers/EntityMerger.php b/src/Services/EntityMergers/EntityMerger.php index c0be84ee..f8cf8a11 100644 --- a/src/Services/EntityMergers/EntityMerger.php +++ b/src/Services/EntityMergers/EntityMerger.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace App\Services\EntityMergers; use App\Services\EntityMergers\Mergers\EntityMergerInterface; -use Symfony\Component\DependencyInjection\Attribute\TaggedIterator; +use Symfony\Component\DependencyInjection\Attribute\AutowireIterator; /** * This service is used to merge two entities together. @@ -32,7 +32,7 @@ use Symfony\Component\DependencyInjection\Attribute\TaggedIterator; */ class EntityMerger { - public function __construct(#[TaggedIterator('app.entity_merger')] protected iterable $mergers) + public function __construct(#[AutowireIterator('app.entity_merger')] protected iterable $mergers) { } @@ -73,4 +73,4 @@ class EntityMerger } return $merger->merge($target, $other, $context); } -} \ No newline at end of file +} From b1210bc3b5fc31cf39faabff34f46bd76db13dba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 15:57:13 +0100 Subject: [PATCH 033/235] New translations messages.en.xlf (English) --- translations/messages.en.xlf | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index a03d2e33..2555fbdf 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -14460,5 +14460,23 @@ Please note that this system is currently experimental, and the synonyms defined Bulk import job part + + + password_toggle.hide + Hide + + + + + password_toggle.show + Show + + + + + settings.misc.ipn_suggest.regex.help.placeholder + e.g. Format: 3–4 alphanumeric segments (any number) separated by "-", followed by "-" and 4 digits, e.g., PCOM-RES-0001 + + From d89a76bdc302dbeff5efd708636897b6c6aa7994 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 21:30:00 +0100 Subject: [PATCH 034/235] Removed unnecessary frankenphp-symfony runtime, as it is now part of symonfy 7.4 --- composer.json | 1 - 1 file changed, 1 deletion(-) diff --git a/composer.json b/composer.json index 57240fed..872edf95 100644 --- a/composer.json +++ b/composer.json @@ -48,7 +48,6 @@ "part-db/swap-bundle": "^6.0.0", "phpoffice/phpspreadsheet": "^5.0.0", "rhukster/dom-sanitizer": "^1.0", - "runtime/frankenphp-symfony": "^0.2.0", "s9e/text-formatter": "^2.1", "scheb/2fa-backup-code": "^v7.11.0", "scheb/2fa-bundle": "^v7.11.0", From d8ec65461ef058887f0e0709903e58e5b0692ba4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 21:30:17 +0100 Subject: [PATCH 035/235] fixed error messages related to datafixtures in prod --- composer.lock | 395 +++++++++++++++++++------------------------ config/reference.php | 56 +----- config/services.yaml | 20 ++- 3 files changed, 196 insertions(+), 275 deletions(-) diff --git a/composer.lock b/composer.lock index 4ee20816..bb07d531 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "32a2a07bf006ee140ea1a8b6e1aabee6", + "content-hash": "624cf08821477aa7b8f6efc0d4300087", "packages": [ { "name": "amphp/amp", @@ -968,16 +968,16 @@ }, { "name": "api-platform/doctrine-common", - "version": "v4.2.6", + "version": "v4.2.7", "source": { "type": "git", "url": "https://github.com/api-platform/doctrine-common.git", - "reference": "84d9335ca30fbf0b20a83416bb54abe8ca4854b6" + "reference": "76ce957843cd050ccd9119915d2cbf9eb5f5ac5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/doctrine-common/zipball/84d9335ca30fbf0b20a83416bb54abe8ca4854b6", - "reference": "84d9335ca30fbf0b20a83416bb54abe8ca4854b6", + "url": "https://api.github.com/repos/api-platform/doctrine-common/zipball/76ce957843cd050ccd9119915d2cbf9eb5f5ac5c", + "reference": "76ce957843cd050ccd9119915d2cbf9eb5f5ac5c", "shasum": "" }, "require": { @@ -996,7 +996,7 @@ "doctrine/orm": "^2.17 || ^3.0", "phpspec/prophecy-phpunit": "^2.2", "phpunit/phpunit": "11.5.x-dev", - "symfony/type-info": "^7.3" + "symfony/type-info": "^7.3 || ^8.0" }, "suggest": { "api-platform/graphql": "For GraphQl mercure subscriptions.", @@ -1013,7 +1013,7 @@ "name": "api-platform/api-platform" }, "symfony": { - "require": "^6.4 || ^7.0" + "require": "^6.4 || ^7.0 || ^8.0" }, "branch-alias": { "dev-3.4": "3.4.x-dev", @@ -1052,22 +1052,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/doctrine-common/tree/v4.2.6" + "source": "https://github.com/api-platform/doctrine-common/tree/v4.2.7" }, - "time": "2025-11-13T15:51:59+00:00" + "time": "2025-11-30T12:55:42+00:00" }, { "name": "api-platform/doctrine-orm", - "version": "v4.2.6", + "version": "v4.2.7", "source": { "type": "git", "url": "https://github.com/api-platform/doctrine-orm.git", - "reference": "2ed31aa0b21e2bb5a7c35309d04268cdeb46a1ee" + "reference": "74c91e76bc2e26592f80b3f872f3f97903cc3055" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/doctrine-orm/zipball/2ed31aa0b21e2bb5a7c35309d04268cdeb46a1ee", - "reference": "2ed31aa0b21e2bb5a7c35309d04268cdeb46a1ee", + "url": "https://api.github.com/repos/api-platform/doctrine-orm/zipball/74c91e76bc2e26592f80b3f872f3f97903cc3055", + "reference": "74c91e76bc2e26592f80b3f872f3f97903cc3055", "shasum": "" }, "require": { @@ -1075,23 +1075,23 @@ "api-platform/metadata": "^4.2", "api-platform/state": "^4.2.4", "doctrine/orm": "^2.17 || ^3.0", - "php": ">=8.2", - "symfony/type-info": "^7.3" + "php": ">=8.2" }, "require-dev": { - "doctrine/doctrine-bundle": "^2.11", + "doctrine/doctrine-bundle": "^2.11 || ^3.1", "phpspec/prophecy-phpunit": "^2.2", "phpunit/phpunit": "11.5.x-dev", "ramsey/uuid": "^4.7", "ramsey/uuid-doctrine": "^2.0", - "symfony/cache": "^6.4 || ^7.0", - "symfony/framework-bundle": "^6.4 || ^7.0", - "symfony/property-access": "^6.4 || ^7.0", - "symfony/property-info": "^6.4 || ^7.1", - "symfony/serializer": "^6.4 || ^7.0", - "symfony/uid": "^6.4 || ^7.0", - "symfony/validator": "^6.4.11 || ^7.0", - "symfony/yaml": "^6.4 || ^7.0" + "symfony/cache": "^6.4 || ^7.0 || ^8.0", + "symfony/framework-bundle": "^6.4 || ^7.0 || ^8.0", + "symfony/property-access": "^6.4 || ^7.0 || ^8.0", + "symfony/property-info": "^6.4 || ^7.1 || ^8.0", + "symfony/serializer": "^6.4 || ^7.0 || ^8.0", + "symfony/type-info": "^7.3 || ^8.0", + "symfony/uid": "^6.4 || ^7.0 || ^8.0", + "symfony/validator": "^6.4.11 || ^7.0 || ^8.0", + "symfony/yaml": "^6.4 || ^7.0 || ^8.0" }, "type": "library", "extra": { @@ -1100,7 +1100,7 @@ "name": "api-platform/api-platform" }, "symfony": { - "require": "^6.4 || ^7.0" + "require": "^6.4 || ^7.0 || ^8.0" }, "branch-alias": { "dev-3.4": "3.4.x-dev", @@ -1139,22 +1139,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/doctrine-orm/tree/v4.2.6" + "source": "https://github.com/api-platform/doctrine-orm/tree/v4.2.7" }, - "time": "2025-11-13T16:02:47+00:00" + "time": "2025-11-30T12:55:42+00:00" }, { "name": "api-platform/documentation", - "version": "v4.2.6", + "version": "v4.2.7", "source": { "type": "git", "url": "https://github.com/api-platform/documentation.git", - "reference": "5181186d9d0da3a2aaa449747af55bee1759969b" + "reference": "8910f2a0aa7910ed807f128510553b24152e5ea5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/documentation/zipball/5181186d9d0da3a2aaa449747af55bee1759969b", - "reference": "5181186d9d0da3a2aaa449747af55bee1759969b", + "url": "https://api.github.com/repos/api-platform/documentation/zipball/8910f2a0aa7910ed807f128510553b24152e5ea5", + "reference": "8910f2a0aa7910ed807f128510553b24152e5ea5", "shasum": "" }, "require": { @@ -1171,7 +1171,7 @@ "name": "api-platform/api-platform" }, "symfony": { - "require": "^6.4 || ^7.0" + "require": "^6.4 || ^7.0 || ^8.0" }, "branch-alias": { "dev-3.4": "3.4.x-dev", @@ -1202,37 +1202,37 @@ ], "description": "API Platform documentation controller.", "support": { - "source": "https://github.com/api-platform/documentation/tree/v4.2.6" + "source": "https://github.com/api-platform/documentation/tree/v4.2.7" }, - "time": "2025-10-31T16:12:05+00:00" + "time": "2025-11-30T12:55:42+00:00" }, { "name": "api-platform/http-cache", - "version": "v4.2.6", + "version": "v4.2.7", "source": { "type": "git", "url": "https://github.com/api-platform/http-cache.git", - "reference": "05000f1faf8e3b970665b9edd1d1816d2e6b0958" + "reference": "4bb2eab81407f493f54f51be7aa1918f362c14b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/http-cache/zipball/05000f1faf8e3b970665b9edd1d1816d2e6b0958", - "reference": "05000f1faf8e3b970665b9edd1d1816d2e6b0958", + "url": "https://api.github.com/repos/api-platform/http-cache/zipball/4bb2eab81407f493f54f51be7aa1918f362c14b5", + "reference": "4bb2eab81407f493f54f51be7aa1918f362c14b5", "shasum": "" }, "require": { "api-platform/metadata": "^4.2", "api-platform/state": "^4.2.4", "php": ">=8.2", - "symfony/http-foundation": "^6.4.14 || ^7.0" + "symfony/http-foundation": "^6.4.14 || ^7.0 || ^8.0" }, "require-dev": { - "guzzlehttp/guzzle": "^6.0 || ^7.0", + "guzzlehttp/guzzle": "^6.0 || ^7.0 || ^8.0", "phpspec/prophecy-phpunit": "^2.2", "phpunit/phpunit": "11.5.x-dev", - "symfony/dependency-injection": "^6.4 || ^7.0", - "symfony/http-client": "^6.4 || ^7.0", - "symfony/type-info": "^7.3" + "symfony/dependency-injection": "^6.4 || ^7.0 || ^8.0", + "symfony/http-client": "^6.4 || ^7.0 || ^8.0", + "symfony/type-info": "^7.3 || ^8.0" }, "type": "library", "extra": { @@ -1241,7 +1241,7 @@ "name": "api-platform/api-platform" }, "symfony": { - "require": "^6.4 || ^7.0" + "require": "^6.4 || ^7.0 || ^8.0" }, "branch-alias": { "dev-3.4": "3.4.x-dev", @@ -1282,22 +1282,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/http-cache/tree/v4.2.6" + "source": "https://github.com/api-platform/http-cache/tree/v4.2.7" }, - "time": "2025-11-13T16:02:47+00:00" + "time": "2025-11-30T12:55:42+00:00" }, { "name": "api-platform/hydra", - "version": "v4.2.6", + "version": "v4.2.7", "source": { "type": "git", "url": "https://github.com/api-platform/hydra.git", - "reference": "59672d9b2bd2c9ddc679f32c60459c17b0a803c3" + "reference": "ce704a53789ac279e0f7aafac48a8b1005df36e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/hydra/zipball/59672d9b2bd2c9ddc679f32c60459c17b0a803c3", - "reference": "59672d9b2bd2c9ddc679f32c60459c17b0a803c3", + "url": "https://api.github.com/repos/api-platform/hydra/zipball/ce704a53789ac279e0f7aafac48a8b1005df36e3", + "reference": "ce704a53789ac279e0f7aafac48a8b1005df36e3", "shasum": "" }, "require": { @@ -1308,8 +1308,8 @@ "api-platform/serializer": "^4.2.4", "api-platform/state": "^4.2.4", "php": ">=8.2", - "symfony/type-info": "^7.3", - "symfony/web-link": "^6.4 || ^7.1" + "symfony/type-info": "^7.3 || ^8.0", + "symfony/web-link": "^6.4 || ^7.1 || ^8.0" }, "require-dev": { "api-platform/doctrine-common": "^4.2", @@ -1326,7 +1326,7 @@ "name": "api-platform/api-platform" }, "symfony": { - "require": "^6.4 || ^7.0" + "require": "^6.4 || ^7.0 || ^8.0" }, "branch-alias": { "dev-3.4": "3.4.x-dev", @@ -1369,22 +1369,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/hydra/tree/v4.2.6" + "source": "https://github.com/api-platform/hydra/tree/v4.2.7" }, - "time": "2025-11-13T15:51:59+00:00" + "time": "2025-11-30T12:55:42+00:00" }, { "name": "api-platform/json-api", - "version": "v4.2.6", + "version": "v4.2.7", "source": { "type": "git", "url": "https://github.com/api-platform/json-api.git", - "reference": "eaef5f0bde86b37b40969762d2534243f929fea8" + "reference": "f7a0680c1183795c46bc2e55a69acb94735cfbe9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/json-api/zipball/eaef5f0bde86b37b40969762d2534243f929fea8", - "reference": "eaef5f0bde86b37b40969762d2534243f929fea8", + "url": "https://api.github.com/repos/api-platform/json-api/zipball/f7a0680c1183795c46bc2e55a69acb94735cfbe9", + "reference": "f7a0680c1183795c46bc2e55a69acb94735cfbe9", "shasum": "" }, "require": { @@ -1394,15 +1394,15 @@ "api-platform/serializer": "^4.2.4", "api-platform/state": "^4.2.4", "php": ">=8.2", - "symfony/error-handler": "^6.4 || ^7.0", - "symfony/http-foundation": "^6.4.14 || ^7.0", - "symfony/type-info": "^7.3" + "symfony/error-handler": "^6.4 || ^7.0 || ^8.0", + "symfony/http-foundation": "^6.4.14 || ^7.0 || ^8.0", + "symfony/type-info": "^7.3 || ^8.0" }, "require-dev": { "phpspec/prophecy": "^1.19", "phpspec/prophecy-phpunit": "^2.2", "phpunit/phpunit": "11.5.x-dev", - "symfony/type-info": "^7.3" + "symfony/type-info": "^7.3 || ^8.0" }, "type": "library", "extra": { @@ -1411,7 +1411,7 @@ "name": "api-platform/api-platform" }, "symfony": { - "require": "^6.4 || ^7.0" + "require": "^6.4 || ^7.0 || ^8.0" }, "branch-alias": { "dev-3.4": "3.4.x-dev", @@ -1451,32 +1451,32 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/json-api/tree/v4.2.6" + "source": "https://github.com/api-platform/json-api/tree/v4.2.7" }, - "time": "2025-11-13T16:02:47+00:00" + "time": "2025-11-30T12:55:42+00:00" }, { "name": "api-platform/json-schema", - "version": "v4.2.6", + "version": "v4.2.7", "source": { "type": "git", "url": "https://github.com/api-platform/json-schema.git", - "reference": "fe68500b06d4a3d1f022119a7a9b99b904c5882e" + "reference": "b95eec54ae0353fc068a77fe481c7f4e2e983f33" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/json-schema/zipball/fe68500b06d4a3d1f022119a7a9b99b904c5882e", - "reference": "fe68500b06d4a3d1f022119a7a9b99b904c5882e", + "url": "https://api.github.com/repos/api-platform/json-schema/zipball/b95eec54ae0353fc068a77fe481c7f4e2e983f33", + "reference": "b95eec54ae0353fc068a77fe481c7f4e2e983f33", "shasum": "" }, "require": { "api-platform/metadata": "^4.2", "php": ">=8.2", - "symfony/console": "^6.4 || ^7.0", - "symfony/property-info": "^6.4 || ^7.1", - "symfony/serializer": "^6.4 || ^7.0", - "symfony/type-info": "^7.3", - "symfony/uid": "^6.4 || ^7.0" + "symfony/console": "^6.4 || ^7.0 || ^8.0", + "symfony/property-info": "^6.4 || ^7.1 || ^8.0", + "symfony/serializer": "^6.4 || ^7.0 || ^8.0", + "symfony/type-info": "^7.3 || ^8.0", + "symfony/uid": "^6.4 || ^7.0 || ^8.0" }, "require-dev": { "phpspec/prophecy-phpunit": "^2.2", @@ -1489,7 +1489,7 @@ "name": "api-platform/api-platform" }, "symfony": { - "require": "^6.4 || ^7.0" + "require": "^6.4 || ^7.0 || ^8.0" }, "branch-alias": { "dev-3.4": "3.4.x-dev", @@ -1532,22 +1532,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/json-schema/tree/v4.2.6" + "source": "https://github.com/api-platform/json-schema/tree/v4.2.7" }, - "time": "2025-11-07T11:21:39+00:00" + "time": "2025-11-30T12:55:42+00:00" }, { "name": "api-platform/jsonld", - "version": "v4.2.6", + "version": "v4.2.7", "source": { "type": "git", "url": "https://github.com/api-platform/jsonld.git", - "reference": "083e9fcdb0b81dbf1045e489e6d6149b4ee11e54" + "reference": "c8896d5a3ddf67ac8aa74bb54199b13153fa39c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/jsonld/zipball/083e9fcdb0b81dbf1045e489e6d6149b4ee11e54", - "reference": "083e9fcdb0b81dbf1045e489e6d6149b4ee11e54", + "url": "https://api.github.com/repos/api-platform/jsonld/zipball/c8896d5a3ddf67ac8aa74bb54199b13153fa39c3", + "reference": "c8896d5a3ddf67ac8aa74bb54199b13153fa39c3", "shasum": "" }, "require": { @@ -1558,7 +1558,7 @@ }, "require-dev": { "phpunit/phpunit": "11.5.x-dev", - "symfony/type-info": "^7.3" + "symfony/type-info": "^7.3 || ^8.0" }, "type": "library", "extra": { @@ -1567,7 +1567,7 @@ "name": "api-platform/api-platform" }, "symfony": { - "require": "^6.4 || ^7.0" + "require": "^6.4 || ^7.0 || ^8.0" }, "branch-alias": { "dev-3.4": "3.4.x-dev", @@ -1612,22 +1612,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/jsonld/tree/v4.2.6" + "source": "https://github.com/api-platform/jsonld/tree/v4.2.7" }, - "time": "2025-11-13T15:51:59+00:00" + "time": "2025-11-30T12:55:42+00:00" }, { "name": "api-platform/metadata", - "version": "v4.2.6", + "version": "v4.2.7", "source": { "type": "git", "url": "https://github.com/api-platform/metadata.git", - "reference": "e785a782e033e2a080bd7d545916f0623c6a8546" + "reference": "68e5edff897d4f3bf95ccf1eed464d6e3900a8b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/metadata/zipball/e785a782e033e2a080bd7d545916f0623c6a8546", - "reference": "e785a782e033e2a080bd7d545916f0623c6a8546", + "url": "https://api.github.com/repos/api-platform/metadata/zipball/68e5edff897d4f3bf95ccf1eed464d6e3900a8b2", + "reference": "68e5edff897d4f3bf95ccf1eed464d6e3900a8b2", "shasum": "" }, "require": { @@ -1635,9 +1635,9 @@ "php": ">=8.2", "psr/cache": "^1.0 || ^2.0 || ^3.0", "psr/log": "^1.0 || ^2.0 || ^3.0", - "symfony/property-info": "^6.4 || ^7.1", - "symfony/string": "^6.4 || ^7.0", - "symfony/type-info": "^7.3" + "symfony/property-info": "^6.4 || ^7.1 || ^8.0", + "symfony/string": "^6.4 || ^7.0 || ^8.0", + "symfony/type-info": "^7.3 || ^8.0" }, "require-dev": { "api-platform/json-schema": "^4.2", @@ -1646,11 +1646,11 @@ "phpspec/prophecy-phpunit": "^2.2", "phpstan/phpdoc-parser": "^1.29 || ^2.0", "phpunit/phpunit": "11.5.x-dev", - "symfony/config": "^6.4 || ^7.0", - "symfony/routing": "^6.4 || ^7.0", - "symfony/var-dumper": "^6.4 || ^7.0", - "symfony/web-link": "^6.4 || ^7.1", - "symfony/yaml": "^6.4 || ^7.0" + "symfony/config": "^6.4 || ^7.0 || ^8.0", + "symfony/routing": "^6.4 || ^7.0 || ^8.0", + "symfony/var-dumper": "^6.4 || ^7.0 || ^8.0", + "symfony/web-link": "^6.4 || ^7.1 || ^8.0", + "symfony/yaml": "^6.4 || ^7.0 || ^8.0" }, "suggest": { "phpstan/phpdoc-parser": "For PHP documentation support.", @@ -1664,7 +1664,7 @@ "name": "api-platform/api-platform" }, "symfony": { - "require": "^6.4 || ^7.0" + "require": "^6.4 || ^7.0 || ^8.0" }, "branch-alias": { "dev-3.4": "3.4.x-dev", @@ -1710,22 +1710,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/metadata/tree/v4.2.6" + "source": "https://github.com/api-platform/metadata/tree/v4.2.7" }, - "time": "2025-11-17T17:31:39+00:00" + "time": "2025-11-30T13:04:03+00:00" }, { "name": "api-platform/openapi", - "version": "v4.2.6", + "version": "v4.2.7", "source": { "type": "git", "url": "https://github.com/api-platform/openapi.git", - "reference": "48b0b697619d9cab6b2c6bce59b1fd42f12c4d16" + "reference": "ea49d6d7170f8ecc1c239e7769708628183096b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/openapi/zipball/48b0b697619d9cab6b2c6bce59b1fd42f12c4d16", - "reference": "48b0b697619d9cab6b2c6bce59b1fd42f12c4d16", + "url": "https://api.github.com/repos/api-platform/openapi/zipball/ea49d6d7170f8ecc1c239e7769708628183096b8", + "reference": "ea49d6d7170f8ecc1c239e7769708628183096b8", "shasum": "" }, "require": { @@ -1733,11 +1733,11 @@ "api-platform/metadata": "^4.2", "api-platform/state": "^4.2.4", "php": ">=8.2", - "symfony/console": "^6.4 || ^7.0", - "symfony/filesystem": "^6.4 || ^7.0", - "symfony/property-access": "^6.4 || ^7.0", - "symfony/serializer": "^6.4 || ^7.0", - "symfony/type-info": "^7.3" + "symfony/console": "^6.4 || ^7.0 || ^8.0", + "symfony/filesystem": "^6.4 || ^7.0 || ^8.0", + "symfony/property-access": "^6.4 || ^7.0 || ^8.0", + "symfony/serializer": "^6.4 || ^7.0 || ^8.0", + "symfony/type-info": "^7.3 || ^8.0" }, "require-dev": { "api-platform/doctrine-common": "^4.2", @@ -1745,7 +1745,7 @@ "api-platform/doctrine-orm": "^4.2", "phpspec/prophecy-phpunit": "^2.2", "phpunit/phpunit": "11.5.x-dev", - "symfony/type-info": "^7.3" + "symfony/type-info": "^7.3 || ^8.0" }, "type": "library", "extra": { @@ -1754,7 +1754,7 @@ "name": "api-platform/api-platform" }, "symfony": { - "require": "^6.4 || ^7.0" + "require": "^6.4 || ^7.0 || ^8.0" }, "branch-alias": { "dev-3.4": "3.4.x-dev", @@ -1800,32 +1800,32 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/openapi/tree/v4.2.6" + "source": "https://github.com/api-platform/openapi/tree/v4.2.7" }, - "time": "2025-11-13T15:51:59+00:00" + "time": "2025-11-30T12:55:42+00:00" }, { "name": "api-platform/serializer", - "version": "v4.2.6", + "version": "v4.2.7", "source": { "type": "git", "url": "https://github.com/api-platform/serializer.git", - "reference": "90939274d2cf90c40bdab8d4b6243d18d2e71434" + "reference": "c3ea805273d5646a0eabb0161850b4e382bb96ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/serializer/zipball/90939274d2cf90c40bdab8d4b6243d18d2e71434", - "reference": "90939274d2cf90c40bdab8d4b6243d18d2e71434", + "url": "https://api.github.com/repos/api-platform/serializer/zipball/c3ea805273d5646a0eabb0161850b4e382bb96ef", + "reference": "c3ea805273d5646a0eabb0161850b4e382bb96ef", "shasum": "" }, "require": { "api-platform/metadata": "^4.2", "api-platform/state": "^4.2.4", "php": ">=8.2", - "symfony/property-access": "^6.4 || ^7.0", - "symfony/property-info": "^6.4 || ^7.1", - "symfony/serializer": "^6.4 || ^7.0", - "symfony/validator": "^6.4.11 || ^7.0" + "symfony/property-access": "^6.4 || ^7.0 || ^8.0", + "symfony/property-info": "^6.4 || ^7.1 || ^8.0", + "symfony/serializer": "^6.4 || ^7.0 || ^8.0", + "symfony/validator": "^6.4.11 || ^7.0 || ^8.0" }, "require-dev": { "api-platform/doctrine-common": "^4.2", @@ -1837,9 +1837,9 @@ "phpspec/prophecy-phpunit": "^2.2", "phpunit/phpunit": "11.5.x-dev", "symfony/mercure-bundle": "*", - "symfony/type-info": "^7.3", - "symfony/var-dumper": "^6.4 || ^7.0", - "symfony/yaml": "^6.4 || ^7.0" + "symfony/type-info": "^7.3 || ^8.0", + "symfony/var-dumper": "^6.4 || ^7.0 || ^8.0", + "symfony/yaml": "^6.4 || ^7.0 || ^8.0" }, "suggest": { "api-platform/doctrine-odm": "To support Doctrine MongoDB ODM state options.", @@ -1852,7 +1852,7 @@ "name": "api-platform/api-platform" }, "symfony": { - "require": "^6.4 || ^7.0" + "require": "^6.4 || ^7.0 || ^8.0" }, "branch-alias": { "dev-3.4": "3.4.x-dev", @@ -1893,40 +1893,41 @@ "serializer" ], "support": { - "source": "https://github.com/api-platform/serializer/tree/v4.2.6" + "source": "https://github.com/api-platform/serializer/tree/v4.2.7" }, - "time": "2025-11-13T16:02:47+00:00" + "time": "2025-11-30T12:55:42+00:00" }, { "name": "api-platform/state", - "version": "v4.2.6", + "version": "v4.2.7", "source": { "type": "git", "url": "https://github.com/api-platform/state.git", - "reference": "21a97e0ef1f906f49221480ae187e906120b8dc5" + "reference": "b46ec9e09dd6be3e44461d18097025cf449d23b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/state/zipball/21a97e0ef1f906f49221480ae187e906120b8dc5", - "reference": "21a97e0ef1f906f49221480ae187e906120b8dc5", + "url": "https://api.github.com/repos/api-platform/state/zipball/b46ec9e09dd6be3e44461d18097025cf449d23b6", + "reference": "b46ec9e09dd6be3e44461d18097025cf449d23b6", "shasum": "" }, "require": { "api-platform/metadata": "^4.2.3", "php": ">=8.2", "psr/container": "^1.0 || ^2.0", - "symfony/http-kernel": "^6.4 || ^7.0", - "symfony/serializer": "^6.4 || ^7.0", + "symfony/deprecation-contracts": "^3.1", + "symfony/http-kernel": "^6.4 || ^7.0 || ^8.0", + "symfony/serializer": "^6.4 || ^7.0 || ^8.0", "symfony/translation-contracts": "^3.0" }, "require-dev": { "api-platform/serializer": "^4.2.4", "api-platform/validator": "^4.2.4", "phpunit/phpunit": "11.5.x-dev", - "symfony/http-foundation": "^6.4.14 || ^7.0", - "symfony/object-mapper": "^7.3", - "symfony/type-info": "^7.3 || 7.4.x-dev", - "symfony/web-link": "^6.4 || ^7.1", + "symfony/http-foundation": "^6.4.14 || ^7.0 || ^8.0", + "symfony/object-mapper": "^7.4 || ^8.0", + "symfony/type-info": "^7.4 || ^8.0", + "symfony/web-link": "^6.4 || ^7.1 || ^8.0", "willdurand/negotiation": "^3.1" }, "suggest": { @@ -1943,7 +1944,7 @@ "name": "api-platform/api-platform" }, "symfony": { - "require": "^6.4 || ^7.0" + "require": "^6.4 || ^7.0 || ^8.0" }, "branch-alias": { "dev-3.4": "3.4.x-dev", @@ -1989,22 +1990,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/state/tree/v4.2.6" + "source": "https://github.com/api-platform/state/tree/v4.2.7" }, - "time": "2025-11-17T17:31:39+00:00" + "time": "2025-11-30T13:03:35+00:00" }, { "name": "api-platform/symfony", - "version": "v4.2.6", + "version": "v4.2.7", "source": { "type": "git", "url": "https://github.com/api-platform/symfony.git", - "reference": "60f80b128b564c276ccfde5ee795566409cc8c94" + "reference": "1e16952c5cccbd7dd65936a4cefb66a10c72c26f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/symfony/zipball/60f80b128b564c276ccfde5ee795566409cc8c94", - "reference": "60f80b128b564c276ccfde5ee795566409cc8c94", + "url": "https://api.github.com/repos/api-platform/symfony/zipball/1e16952c5cccbd7dd65936a4cefb66a10c72c26f", + "reference": "1e16952c5cccbd7dd65936a4cefb66a10c72c26f", "shasum": "" }, "require": { @@ -2019,12 +2020,12 @@ "api-platform/state": "^4.2.4", "api-platform/validator": "^4.2.3", "php": ">=8.2", - "symfony/asset": "^6.4 || ^7.0", - "symfony/finder": "^6.4 || ^7.0", - "symfony/property-access": "^6.4 || ^7.0", + "symfony/asset": "^6.4 || ^7.0 || ^8.0", + "symfony/finder": "^6.4 || ^7.0 || ^8.0", + "symfony/property-access": "^6.4 || ^7.0 || ^8.0", "symfony/property-info": "^6.4 || ^7.1", - "symfony/security-core": "^6.4 || ^7.0", - "symfony/serializer": "^6.4 || ^7.0", + "symfony/security-core": "^6.4 || ^7.0 || ^8.0", + "symfony/serializer": "^6.4 || ^7.0 || ^8.0", "willdurand/negotiation": "^3.1" }, "require-dev": { @@ -2035,13 +2036,13 @@ "api-platform/graphql": "^4.2.3", "phpspec/prophecy-phpunit": "^2.2", "phpunit/phpunit": "11.5.x-dev", - "symfony/expression-language": "^6.4 || ^7.0", - "symfony/intl": "^6.4 || ^7.0", + "symfony/expression-language": "^6.4 || ^7.0 || ^8.0", + "symfony/intl": "^6.4 || ^7.0 || ^8.0", "symfony/mercure-bundle": "*", - "symfony/object-mapper": "^7.0", - "symfony/routing": "^6.4 || ^7.0", - "symfony/type-info": "^7.3", - "symfony/validator": "^6.4.11 || ^7.0", + "symfony/object-mapper": "^7.0 || ^8.0", + "symfony/routing": "^6.4 || ^7.0 || ^8.0", + "symfony/type-info": "^7.3 || ^8.0", + "symfony/validator": "^6.4.11 || ^7.0 || ^8.0", "webonyx/graphql-php": "^15.0" }, "suggest": { @@ -2071,7 +2072,7 @@ "name": "api-platform/api-platform" }, "symfony": { - "require": "^6.4 || ^7.0" + "require": "^6.4 || ^7.0 || ^8.0" }, "branch-alias": { "dev-main": "4.3.x-dev" @@ -2115,32 +2116,32 @@ "symfony" ], "support": { - "source": "https://github.com/api-platform/symfony/tree/v4.2.6" + "source": "https://github.com/api-platform/symfony/tree/v4.2.7" }, - "time": "2025-11-17T17:31:39+00:00" + "time": "2025-11-30T13:03:06+00:00" }, { "name": "api-platform/validator", - "version": "v4.2.6", + "version": "v4.2.7", "source": { "type": "git", "url": "https://github.com/api-platform/validator.git", - "reference": "bdeaa42a40cbac7cecb677566e940c3d75b7001a" + "reference": "a29ba03fa64f4db7522aa19d40c4fe8500b3f160" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/validator/zipball/bdeaa42a40cbac7cecb677566e940c3d75b7001a", - "reference": "bdeaa42a40cbac7cecb677566e940c3d75b7001a", + "url": "https://api.github.com/repos/api-platform/validator/zipball/a29ba03fa64f4db7522aa19d40c4fe8500b3f160", + "reference": "a29ba03fa64f4db7522aa19d40c4fe8500b3f160", "shasum": "" }, "require": { "api-platform/metadata": "^4.2", "php": ">=8.2", - "symfony/http-kernel": "^6.4 || ^7.1", - "symfony/serializer": "^6.4 || ^7.1", - "symfony/type-info": "^7.3", - "symfony/validator": "^6.4.11 || ^7.1", - "symfony/web-link": "^6.4 || ^7.1" + "symfony/http-kernel": "^6.4 || ^7.1 || ^8.0", + "symfony/serializer": "^6.4 || ^7.1 || ^8.0", + "symfony/type-info": "^7.3 || ^8.0", + "symfony/validator": "^6.4.11 || ^7.1 || ^8.0", + "symfony/web-link": "^6.4 || ^7.1 || ^8.0" }, "require-dev": { "phpspec/prophecy-phpunit": "^2.2", @@ -2153,7 +2154,7 @@ "name": "api-platform/api-platform" }, "symfony": { - "require": "^6.4 || ^7.0" + "require": "^6.4 || ^7.0 || ^8.0" }, "branch-alias": { "dev-3.4": "3.4.x-dev", @@ -2191,9 +2192,9 @@ "validator" ], "support": { - "source": "https://github.com/api-platform/validator/tree/v4.2.6" + "source": "https://github.com/api-platform/validator/tree/v4.2.7" }, - "time": "2025-11-13T16:02:47+00:00" + "time": "2025-11-30T12:55:42+00:00" }, { "name": "beberlei/assert", @@ -9352,58 +9353,6 @@ }, "time": "2024-11-20T21:13:56+00:00" }, - { - "name": "runtime/frankenphp-symfony", - "version": "0.2.0", - "source": { - "type": "git", - "url": "https://github.com/php-runtime/frankenphp-symfony.git", - "reference": "56822c3631d9522a3136a4c33082d006bdfe4bad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-runtime/frankenphp-symfony/zipball/56822c3631d9522a3136a4c33082d006bdfe4bad", - "reference": "56822c3631d9522a3136a4c33082d006bdfe4bad", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", - "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0", - "symfony/runtime": "^5.4 || ^6.0 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Runtime\\FrankenPhpSymfony\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kévin Dunglas", - "email": "kevin@dunglas.dev" - } - ], - "description": "FrankenPHP runtime for Symfony", - "support": { - "issues": "https://github.com/php-runtime/frankenphp-symfony/issues", - "source": "https://github.com/php-runtime/frankenphp-symfony/tree/0.2.0" - }, - "funding": [ - { - "url": "https://github.com/nyholm", - "type": "github" - } - ], - "time": "2023-12-12T12:06:11+00:00" - }, { "name": "s9e/regexp-builder", "version": "1.4.6", diff --git a/config/reference.php b/config/reference.php index 6ea52419..3fe3d205 100644 --- a/config/reference.php +++ b/config/reference.php @@ -128,7 +128,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * http_method_override?: bool, // Set true to enable support for the '_method' request parameter to determine the intended HTTP method on POST requests. // Default: false * allowed_http_method_override?: list|null, * trust_x_sendfile_type_header?: scalar|null, // Set true to enable support for xsendfile in binary file responses. // Default: "%env(bool:default::SYMFONY_TRUST_X_SENDFILE_TYPE_HEADER)%" - * ide?: scalar|null, // Default: "%env(default::SYMFONY_IDE)%" + * ide?: scalar|null, // Default: null * test?: bool, * default_locale?: scalar|null, // Default: "en" * set_locale_from_accept_language?: bool, // Whether to use the Accept-Language HTTP header to set the Request locale (only when the "_locale" request attribute is not passed). // Default: false @@ -285,7 +285,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * paths?: array, * excluded_patterns?: list, * exclude_dotfiles?: bool, // If true, any files starting with "." will be excluded from the asset mapper. // Default: true - * server?: bool, // If true, a "dev server" will return the assets from the public directory (true in "debug" mode only by default). // Default: true + * server?: bool, // If true, a "dev server" will return the assets from the public directory (true in "debug" mode only by default). // Default: false * public_prefix?: scalar|null, // The public path where the assets will be written to (and served from when "server" is true). // Default: "/assets/" * missing_import_mode?: "strict"|"warn"|"ignore", // Behavior if an asset cannot be found when imported from JavaScript or CSS files - e.g. "import './non-existent.js'". "strict" means an exception is thrown, "warn" means a warning is logged, "ignore" means the import is left as-is. // Default: "warn" * extensions?: array, @@ -405,7 +405,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * }, * php_errors?: array{ // PHP errors handling configuration * log?: mixed, // Use the application logger instead of the PHP logger for logging PHP errors. // Default: true - * throw?: bool, // Throw PHP errors as \ErrorException instances. // Default: true + * throw?: bool, // Throw PHP errors as \ErrorException instances. // Default: false * }, * exceptions?: array, @@ -1541,18 +1533,6 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * }, * }>, * } - * @psalm-type DebugConfig = array{ - * max_items?: int, // Max number of displayed items past the first level, -1 means no limit. // Default: 2500 - * min_depth?: int, // Minimum tree depth to clone all the items, 1 is default. // Default: 1 - * max_string_length?: int, // Max length of displayed strings, -1 means no limit. // Default: -1 - * dump_destination?: scalar|null, // A stream URL where dumps should be written to. // Default: null - * theme?: "dark"|"light", // Changes the color of the dump() output when rendered directly on the templating. "dark" (default) or "light". // Default: "dark" - * } - * @psalm-type MakerConfig = array{ - * root_namespace?: scalar|null, // Default: "App" - * generate_final_classes?: bool, // Default: true - * generate_final_entities?: bool, // Default: false - * } * @psalm-type WebpackEncoreConfig = array{ * output_path: scalar|null, // The path where Encore is building the assets - i.e. Encore.setOutputPath() * crossorigin?: false|"anonymous"|"use-credentials", // crossorigin value when Encore.enableIntegrityHashes() is used, can be false (default), anonymous or use-credentials // Default: false @@ -2372,13 +2352,6 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * invalidate_on_env_change?: bool, // Default: true * }, * } - * @psalm-type JbtronicsTranslationEditorConfig = array{ - * translations_path?: scalar|null, // Default: "%translator.default_path%" - * format?: scalar|null, // Default: "xlf" - * xliff_version?: scalar|null, // Default: "2.0" - * use_intl_icu_format?: bool, // Default: false - * writer_options?: list, - * } * @psalm-type ApiPlatformConfig = array{ * title?: scalar|null, // The title of the API. // Default: "" * description?: scalar|null, // The description of the API. // Default: "" @@ -2529,7 +2502,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * validation_error_resource_class?: scalar|null, // The class used to represent validation errors in the OpenAPI documentation. // Default: null * }, * maker?: bool|array{ - * enabled?: bool, // Default: true + * enabled?: bool, // Default: false * }, * exception_to_status?: array, * formats?: array * }, * } - * @psalm-type DamaDoctrineTestConfig = array{ - * enable_static_connection?: mixed, // Default: true - * enable_static_meta_data_cache?: bool, // Default: true - * enable_static_query_cache?: bool, // Default: true - * connection_keys?: list, - * } * @psalm-type ConfigType = array{ * imports?: ImportsConfig, * parameters?: ParametersConfig, @@ -2678,10 +2645,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * doctrine_migrations?: DoctrineMigrationsConfig, * security?: SecurityConfig, * twig?: TwigConfig, - * web_profiler?: WebProfilerConfig, * monolog?: MonologConfig, - * debug?: DebugConfig, - * maker?: MakerConfig, * webpack_encore?: WebpackEncoreConfig, * datatables?: DatatablesConfig, * liip_imagine?: LiipImagineConfig, @@ -2700,7 +2664,6 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * knpu_oauth2_client?: KnpuOauth2ClientConfig, * nelmio_cors?: NelmioCorsConfig, * jbtronics_settings?: JbtronicsSettingsConfig, - * jbtronics_translation_editor?: JbtronicsTranslationEditorConfig, * api_platform?: ApiPlatformConfig, * }, * "when@docker"?: array{ @@ -2772,13 +2735,10 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * doctrine_migrations?: DoctrineMigrationsConfig, * security?: SecurityConfig, * twig?: TwigConfig, - * web_profiler?: WebProfilerConfig, * monolog?: MonologConfig, - * debug?: DebugConfig, * webpack_encore?: WebpackEncoreConfig, * datatables?: DatatablesConfig, * liip_imagine?: LiipImagineConfig, - * dama_doctrine_test?: DamaDoctrineTestConfig, * twig_extra?: TwigExtraConfig, * gregwar_captcha?: GregwarCaptchaConfig, * florianv_swap?: FlorianvSwapConfig, diff --git a/config/services.yaml b/config/services.yaml index 57dddc66..f117b372 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -32,6 +32,9 @@ services: # this creates a service per class whose id is the fully-qualified class name App\: resource: '../src/' + exclude: + - '../src/DataFixtures/' + - '../src/Doctrine/Purger/' # controllers are imported separately to make sure services can be injected # as action arguments even if you don't extend any base controller class @@ -230,10 +233,6 @@ services: arguments: $enforce_index_php: '%env(bool:NO_URL_REWRITE_AVAILABLE)%' - App\Doctrine\Purger\ResetAutoIncrementPurgerFactory: - tags: - - { name: 'doctrine.fixtures.purger_factory', alias: 'reset_autoincrement_purger' } - App\Repository\PartRepository: arguments: $translator: '@translator' @@ -277,6 +276,14 @@ services: when@test: services: + + App\Doctrine\Purger\: + resource: '../src/Doctrine/Purger/' + + App\Doctrine\Purger\ResetAutoIncrementPurgerFactory: + tags: + - { name: 'doctrine.fixtures.purger_factory', alias: 'reset_autoincrement_purger' } + # Decorate the doctrine fixtures load command to use our custom purger by default doctrine.fixtures_load_command.custom: decorates: doctrine.fixtures_load_command @@ -285,3 +292,8 @@ when@test: - '@doctrine.fixtures.loader' - '@doctrine' - { default: '@App\Doctrine\Purger\DoNotUsePurgerFactory' } + +when@dev: + services: + App\DataFixtures\: + resource: '../src/DataFixtures/' From 1596b4d7ea333e2b9f423bb70053d9f3100a8c46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 23:27:27 +0100 Subject: [PATCH 036/235] Updated jbtronics/settings-bundle for fixing compatibility issues with symfony 7.4 --- composer.lock | 76 ++++++++++++++++++++++---------------------- config/reference.php | 56 +++++++++++++++++++++++++++----- 2 files changed, 86 insertions(+), 46 deletions(-) diff --git a/composer.lock b/composer.lock index bb07d531..e127d1ed 100644 --- a/composer.lock +++ b/composer.lock @@ -4940,24 +4940,24 @@ }, { "name": "jbtronics/dompdf-font-loader-bundle", - "version": "v1.1.5", + "version": "v1.1.6", "source": { "type": "git", "url": "https://github.com/jbtronics/dompdf-font-loader-bundle.git", - "reference": "83a0e50ecceefea0a63915dae758e00788fd067e" + "reference": "5fb434f35544d5757292cd5471768dda3862c932" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jbtronics/dompdf-font-loader-bundle/zipball/83a0e50ecceefea0a63915dae758e00788fd067e", - "reference": "83a0e50ecceefea0a63915dae758e00788fd067e", + "url": "https://api.github.com/repos/jbtronics/dompdf-font-loader-bundle/zipball/5fb434f35544d5757292cd5471768dda3862c932", + "reference": "5fb434f35544d5757292cd5471768dda3862c932", "shasum": "" }, "require": { "dompdf/dompdf": "^1.0.0|^2.0.0|^3.0.0", "ext-json": "*", "php": "^8.1", - "symfony/finder": "^6.0|^7.0", - "symfony/framework-bundle": "^6.0|^7.0" + "symfony/finder": "^6.0|^7.0|^8.0", + "symfony/framework-bundle": "^6.0|^7.0|^8.0" }, "require-dev": { "phpunit/phpunit": "^9.5", @@ -4989,22 +4989,22 @@ ], "support": { "issues": "https://github.com/jbtronics/dompdf-font-loader-bundle/issues", - "source": "https://github.com/jbtronics/dompdf-font-loader-bundle/tree/v1.1.5" + "source": "https://github.com/jbtronics/dompdf-font-loader-bundle/tree/v1.1.6" }, - "time": "2025-07-25T20:29:05+00:00" + "time": "2025-11-30T22:19:12+00:00" }, { "name": "jbtronics/settings-bundle", - "version": "v3.1.1", + "version": "v3.1.2", "source": { "type": "git", "url": "https://github.com/jbtronics/settings-bundle.git", - "reference": "1067dd3d816cd0a6be7ac3d3989587ea05040bd4" + "reference": "f16bce21b54d202baabfe05cb7c64a14d43b9671" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jbtronics/settings-bundle/zipball/1067dd3d816cd0a6be7ac3d3989587ea05040bd4", - "reference": "1067dd3d816cd0a6be7ac3d3989587ea05040bd4", + "url": "https://api.github.com/repos/jbtronics/settings-bundle/zipball/f16bce21b54d202baabfe05cb7c64a14d43b9671", + "reference": "f16bce21b54d202baabfe05cb7c64a14d43b9671", "shasum": "" }, "require": { @@ -5012,11 +5012,11 @@ "ext-json": "*", "php": "^8.1", "symfony/deprecation-contracts": "^3.4", - "symfony/form": "^6.4|^7.0", - "symfony/framework-bundle": "^6.4|^7.0", - "symfony/translation": "^7.0|^6.4", + "symfony/form": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/translation": "^7.0|^6.4|^8.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/validator": "^6.4|^7.0", + "symfony/validator": "^6.4|^7.0|^8.0", "symfony/var-exporter": "^6.4|^7.0" }, "require-dev": { @@ -5030,10 +5030,10 @@ "phpstan/phpstan-symfony": "^1.3", "phpunit/phpunit": "^9.5", "roave/security-advisories": "dev-latest", - "symfony/console": "^6.4|^7.0", - "symfony/phpunit-bridge": "^6.4|^7.0", - "symfony/security-csrf": "^7.0|^6.4", - "symfony/twig-bridge": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/phpunit-bridge": "^6.4|^7.0|^8.0", + "symfony/security-csrf": "^7.0|^6.4|^8.0", + "symfony/twig-bridge": "^6.4|^7.0|^8.0" }, "suggest": { "doctrine/doctrine-bundle": "To use the doctrine ORM storage", @@ -5065,7 +5065,7 @@ ], "support": { "issues": "https://github.com/jbtronics/settings-bundle/issues", - "source": "https://github.com/jbtronics/settings-bundle/tree/v3.1.1" + "source": "https://github.com/jbtronics/settings-bundle/tree/v3.1.2" }, "funding": [ { @@ -5077,7 +5077,7 @@ "type": "github" } ], - "time": "2025-09-22T22:00:15+00:00" + "time": "2025-11-30T22:22:49+00:00" }, { "name": "jfcherng/php-color-output", @@ -16133,16 +16133,16 @@ }, { "name": "symfony/webpack-encore-bundle", - "version": "v2.3.0", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/symfony/webpack-encore-bundle.git", - "reference": "7ae70d44c24c3b913f308af8396169b5c6d9e0f5" + "reference": "5b932e0feddd81aaf0ecd7d5fcd2e450e5a7817e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/7ae70d44c24c3b913f308af8396169b5c6d9e0f5", - "reference": "7ae70d44c24c3b913f308af8396169b5c6d9e0f5", + "url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/5b932e0feddd81aaf0ecd7d5fcd2e450e5a7817e", + "reference": "5b932e0feddd81aaf0ecd7d5fcd2e450e5a7817e", "shasum": "" }, "require": { @@ -16185,7 +16185,7 @@ "description": "Integration of your Symfony app with Webpack Encore", "support": { "issues": "https://github.com/symfony/webpack-encore-bundle/issues", - "source": "https://github.com/symfony/webpack-encore-bundle/tree/v2.3.0" + "source": "https://github.com/symfony/webpack-encore-bundle/tree/v2.4.0" }, "funding": [ { @@ -16205,7 +16205,7 @@ "type": "tidelift" } ], - "time": "2025-08-05T11:43:32+00:00" + "time": "2025-11-27T13:41:46+00:00" }, { "name": "symfony/yaml", @@ -17783,27 +17783,27 @@ }, { "name": "jbtronics/translation-editor-bundle", - "version": "v1.1.2", + "version": "v1.1.3", "source": { "type": "git", "url": "https://github.com/jbtronics/translation-editor-bundle.git", - "reference": "bab5dd6ef41e87ba3d60c6363793e1cdf5cb6249" + "reference": "36bfb256e11d231d185bc2491323b041ba731257" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jbtronics/translation-editor-bundle/zipball/bab5dd6ef41e87ba3d60c6363793e1cdf5cb6249", - "reference": "bab5dd6ef41e87ba3d60c6363793e1cdf5cb6249", + "url": "https://api.github.com/repos/jbtronics/translation-editor-bundle/zipball/36bfb256e11d231d185bc2491323b041ba731257", + "reference": "36bfb256e11d231d185bc2491323b041ba731257", "shasum": "" }, "require": { "ext-json": "*", "php": "^8.1", "symfony/deprecation-contracts": "^3.4", - "symfony/framework-bundle": "^6.4|^7.0", - "symfony/translation": "^7.0|^6.4", + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/translation": "^7.0|^6.4|^8.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/twig-bundle": "^7.0|^6.4", - "symfony/web-profiler-bundle": "^7.0|^6.4" + "symfony/twig-bundle": "^7.0|^6.4|^8.0", + "symfony/web-profiler-bundle": "^7.0|^6.4|^8.0" }, "require-dev": { "ekino/phpstan-banned-code": "^1.0", @@ -17837,7 +17837,7 @@ ], "support": { "issues": "https://github.com/jbtronics/translation-editor-bundle/issues", - "source": "https://github.com/jbtronics/translation-editor-bundle/tree/v1.1.2" + "source": "https://github.com/jbtronics/translation-editor-bundle/tree/v1.1.3" }, "funding": [ { @@ -17849,7 +17849,7 @@ "type": "github" } ], - "time": "2025-07-28T09:19:13+00:00" + "time": "2025-11-30T22:23:47+00:00" }, { "name": "myclabs/deep-copy", diff --git a/config/reference.php b/config/reference.php index 3fe3d205..6ea52419 100644 --- a/config/reference.php +++ b/config/reference.php @@ -128,7 +128,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * http_method_override?: bool, // Set true to enable support for the '_method' request parameter to determine the intended HTTP method on POST requests. // Default: false * allowed_http_method_override?: list|null, * trust_x_sendfile_type_header?: scalar|null, // Set true to enable support for xsendfile in binary file responses. // Default: "%env(bool:default::SYMFONY_TRUST_X_SENDFILE_TYPE_HEADER)%" - * ide?: scalar|null, // Default: null + * ide?: scalar|null, // Default: "%env(default::SYMFONY_IDE)%" * test?: bool, * default_locale?: scalar|null, // Default: "en" * set_locale_from_accept_language?: bool, // Whether to use the Accept-Language HTTP header to set the Request locale (only when the "_locale" request attribute is not passed). // Default: false @@ -285,7 +285,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * paths?: array, * excluded_patterns?: list, * exclude_dotfiles?: bool, // If true, any files starting with "." will be excluded from the asset mapper. // Default: true - * server?: bool, // If true, a "dev server" will return the assets from the public directory (true in "debug" mode only by default). // Default: false + * server?: bool, // If true, a "dev server" will return the assets from the public directory (true in "debug" mode only by default). // Default: true * public_prefix?: scalar|null, // The public path where the assets will be written to (and served from when "server" is true). // Default: "/assets/" * missing_import_mode?: "strict"|"warn"|"ignore", // Behavior if an asset cannot be found when imported from JavaScript or CSS files - e.g. "import './non-existent.js'". "strict" means an exception is thrown, "warn" means a warning is logged, "ignore" means the import is left as-is. // Default: "warn" * extensions?: array, @@ -405,7 +405,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * }, * php_errors?: array{ // PHP errors handling configuration * log?: mixed, // Use the application logger instead of the PHP logger for logging PHP errors. // Default: true - * throw?: bool, // Throw PHP errors as \ErrorException instances. // Default: false + * throw?: bool, // Throw PHP errors as \ErrorException instances. // Default: true * }, * exceptions?: array, @@ -1533,6 +1541,18 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * }, * }>, * } + * @psalm-type DebugConfig = array{ + * max_items?: int, // Max number of displayed items past the first level, -1 means no limit. // Default: 2500 + * min_depth?: int, // Minimum tree depth to clone all the items, 1 is default. // Default: 1 + * max_string_length?: int, // Max length of displayed strings, -1 means no limit. // Default: -1 + * dump_destination?: scalar|null, // A stream URL where dumps should be written to. // Default: null + * theme?: "dark"|"light", // Changes the color of the dump() output when rendered directly on the templating. "dark" (default) or "light". // Default: "dark" + * } + * @psalm-type MakerConfig = array{ + * root_namespace?: scalar|null, // Default: "App" + * generate_final_classes?: bool, // Default: true + * generate_final_entities?: bool, // Default: false + * } * @psalm-type WebpackEncoreConfig = array{ * output_path: scalar|null, // The path where Encore is building the assets - i.e. Encore.setOutputPath() * crossorigin?: false|"anonymous"|"use-credentials", // crossorigin value when Encore.enableIntegrityHashes() is used, can be false (default), anonymous or use-credentials // Default: false @@ -2352,6 +2372,13 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * invalidate_on_env_change?: bool, // Default: true * }, * } + * @psalm-type JbtronicsTranslationEditorConfig = array{ + * translations_path?: scalar|null, // Default: "%translator.default_path%" + * format?: scalar|null, // Default: "xlf" + * xliff_version?: scalar|null, // Default: "2.0" + * use_intl_icu_format?: bool, // Default: false + * writer_options?: list, + * } * @psalm-type ApiPlatformConfig = array{ * title?: scalar|null, // The title of the API. // Default: "" * description?: scalar|null, // The description of the API. // Default: "" @@ -2502,7 +2529,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * validation_error_resource_class?: scalar|null, // The class used to represent validation errors in the OpenAPI documentation. // Default: null * }, * maker?: bool|array{ - * enabled?: bool, // Default: false + * enabled?: bool, // Default: true * }, * exception_to_status?: array, * formats?: array * }, * } + * @psalm-type DamaDoctrineTestConfig = array{ + * enable_static_connection?: mixed, // Default: true + * enable_static_meta_data_cache?: bool, // Default: true + * enable_static_query_cache?: bool, // Default: true + * connection_keys?: list, + * } * @psalm-type ConfigType = array{ * imports?: ImportsConfig, * parameters?: ParametersConfig, @@ -2645,7 +2678,10 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * doctrine_migrations?: DoctrineMigrationsConfig, * security?: SecurityConfig, * twig?: TwigConfig, + * web_profiler?: WebProfilerConfig, * monolog?: MonologConfig, + * debug?: DebugConfig, + * maker?: MakerConfig, * webpack_encore?: WebpackEncoreConfig, * datatables?: DatatablesConfig, * liip_imagine?: LiipImagineConfig, @@ -2664,6 +2700,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * knpu_oauth2_client?: KnpuOauth2ClientConfig, * nelmio_cors?: NelmioCorsConfig, * jbtronics_settings?: JbtronicsSettingsConfig, + * jbtronics_translation_editor?: JbtronicsTranslationEditorConfig, * api_platform?: ApiPlatformConfig, * }, * "when@docker"?: array{ @@ -2735,10 +2772,13 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * doctrine_migrations?: DoctrineMigrationsConfig, * security?: SecurityConfig, * twig?: TwigConfig, + * web_profiler?: WebProfilerConfig, * monolog?: MonologConfig, + * debug?: DebugConfig, * webpack_encore?: WebpackEncoreConfig, * datatables?: DatatablesConfig, * liip_imagine?: LiipImagineConfig, + * dama_doctrine_test?: DamaDoctrineTestConfig, * twig_extra?: TwigExtraConfig, * gregwar_captcha?: GregwarCaptchaConfig, * florianv_swap?: FlorianvSwapConfig, From 8efc1ab07d4cd9ed49b2f1a5740c8a26c26b045a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 23:33:11 +0100 Subject: [PATCH 037/235] Save changes to yarn.lock --- yarn.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yarn.lock b/yarn.lock index aab5cd5a..164347fb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2029,7 +2029,7 @@ "@symfony/ux-turbo@file:vendor/symfony/ux-turbo/assets": version "2.30.0" -"@symfony/webpack-encore@^5.0.0": +"@symfony/webpack-encore@^5.1.0": version "5.3.1" resolved "https://registry.yarnpkg.com/@symfony/webpack-encore/-/webpack-encore-5.3.1.tgz#a8b183bb8ba9f8ce0aa47be5f520ae194ffa1412" integrity sha512-fNevCvcFMWrY63b901F2mvuECFUqwrQUUEJ9TZkO42lc81F0D6yiTMCFpzTKNrUIO7JSoD8aQxAWJbI5Kly4yg== @@ -3094,7 +3094,7 @@ core-js-compat@^3.43.0: dependencies: browserslist "^4.28.0" -core-js@^3.23.0: +core-js@^3.38.0: version "3.47.0" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.47.0.tgz#436ef07650e191afeb84c24481b298bd60eb4a17" integrity sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg== From 9f2989444ac8d0af7dd67a0ae8d6cfede07bf0c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 23:37:34 +0100 Subject: [PATCH 038/235] Fixed phpstan issues --- src/Entity/Parameters/AbstractParameter.php | 8 ++++---- src/Form/InfoProviderSystem/ProviderSelectType.php | 4 +--- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/Entity/Parameters/AbstractParameter.php b/src/Entity/Parameters/AbstractParameter.php index 388745d4..d84e68ad 100644 --- a/src/Entity/Parameters/AbstractParameter.php +++ b/src/Entity/Parameters/AbstractParameter.php @@ -124,7 +124,7 @@ abstract class AbstractParameter extends AbstractNamedDBElement implements Uniqu /** * @var float|null the guaranteed minimum value of this property */ - #[Assert\Type(['float', null])] + #[Assert\Type(['float', 'null'])] #[Assert\LessThanOrEqual(propertyPath: 'value_typical', message: 'parameters.validator.min_lesser_typical')] #[Assert\LessThan(propertyPath: 'value_max', message: 'parameters.validator.min_lesser_max')] #[Groups(['full', 'parameter:read', 'parameter:write', 'import'])] @@ -134,7 +134,7 @@ abstract class AbstractParameter extends AbstractNamedDBElement implements Uniqu /** * @var float|null the typical value of this property */ - #[Assert\Type([null, 'float'])] + #[Assert\Type(['null', 'float'])] #[Groups(['full', 'parameter:read', 'parameter:write', 'import'])] #[ORM\Column(type: Types::FLOAT, nullable: true)] protected ?float $value_typical = null; @@ -142,7 +142,7 @@ abstract class AbstractParameter extends AbstractNamedDBElement implements Uniqu /** * @var float|null the maximum value of this property */ - #[Assert\Type(['float', null])] + #[Assert\Type(['float', 'null'])] #[Assert\GreaterThanOrEqual(propertyPath: 'value_typical', message: 'parameters.validator.max_greater_typical')] #[Groups(['full', 'parameter:read', 'parameter:write', 'import'])] #[ORM\Column(type: Types::FLOAT, nullable: true)] @@ -461,7 +461,7 @@ abstract class AbstractParameter extends AbstractNamedDBElement implements Uniqu return $str; } - + /** * Returns the class of the element that is allowed to be associated with this attachment. * @return string diff --git a/src/Form/InfoProviderSystem/ProviderSelectType.php b/src/Form/InfoProviderSystem/ProviderSelectType.php index 74a3c28c..bad3edaa 100644 --- a/src/Form/InfoProviderSystem/ProviderSelectType.php +++ b/src/Form/InfoProviderSystem/ProviderSelectType.php @@ -72,11 +72,9 @@ class ProviderSelectType extends AbstractType $resolver->setDefault('choice_label', function (Options $options){ if ('object' === $options['input']) { return ChoiceList::label($this, static fn (?InfoProviderInterface $choice) => new StaticMessage($choice?->getProviderInfo()['name'])); - } else { - return static fn ($choice, $key, $value) => new StaticMessage($key); } - return null; + return static fn ($choice, $key, $value) => new StaticMessage($key); }); $resolver->setDefault('choice_value', function (Options $options) { if ('object' === $options['input']) { From f27f0ab12d077b8e918718bddc18d3ad2bf3f1cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 30 Nov 2025 23:40:53 +0100 Subject: [PATCH 039/235] Fixed fixtures loading --- config/reference.php | 34 +++++++++++++++++----------------- config/services.yaml | 9 +++++---- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/config/reference.php b/config/reference.php index 6ea52419..5d58153f 100644 --- a/config/reference.php +++ b/config/reference.php @@ -1548,11 +1548,6 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * dump_destination?: scalar|null, // A stream URL where dumps should be written to. // Default: null * theme?: "dark"|"light", // Changes the color of the dump() output when rendered directly on the templating. "dark" (default) or "light". // Default: "dark" * } - * @psalm-type MakerConfig = array{ - * root_namespace?: scalar|null, // Default: "App" - * generate_final_classes?: bool, // Default: true - * generate_final_entities?: bool, // Default: false - * } * @psalm-type WebpackEncoreConfig = array{ * output_path: scalar|null, // The path where Encore is building the assets - i.e. Encore.setOutputPath() * crossorigin?: false|"anonymous"|"use-credentials", // crossorigin value when Encore.enableIntegrityHashes() is used, can be false (default), anonymous or use-credentials // Default: false @@ -1677,6 +1672,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * post_processors?: array>, * }, * } + * @psalm-type DamaDoctrineTestConfig = array{ + * enable_static_connection?: mixed, // Default: true + * enable_static_meta_data_cache?: bool, // Default: true + * enable_static_query_cache?: bool, // Default: true + * connection_keys?: list, + * } * @psalm-type TwigExtraConfig = array{ * cache?: bool|array{ * enabled?: bool, // Default: false @@ -2372,13 +2373,6 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * invalidate_on_env_change?: bool, // Default: true * }, * } - * @psalm-type JbtronicsTranslationEditorConfig = array{ - * translations_path?: scalar|null, // Default: "%translator.default_path%" - * format?: scalar|null, // Default: "xlf" - * xliff_version?: scalar|null, // Default: "2.0" - * use_intl_icu_format?: bool, // Default: false - * writer_options?: list, - * } * @psalm-type ApiPlatformConfig = array{ * title?: scalar|null, // The title of the API. // Default: "" * description?: scalar|null, // The description of the API. // Default: "" @@ -2634,11 +2628,17 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * ... * }, * } - * @psalm-type DamaDoctrineTestConfig = array{ - * enable_static_connection?: mixed, // Default: true - * enable_static_meta_data_cache?: bool, // Default: true - * enable_static_query_cache?: bool, // Default: true - * connection_keys?: list, + * @psalm-type MakerConfig = array{ + * root_namespace?: scalar|null, // Default: "App" + * generate_final_classes?: bool, // Default: true + * generate_final_entities?: bool, // Default: false + * } + * @psalm-type JbtronicsTranslationEditorConfig = array{ + * translations_path?: scalar|null, // Default: "%translator.default_path%" + * format?: scalar|null, // Default: "xlf" + * xliff_version?: scalar|null, // Default: "2.0" + * use_intl_icu_format?: bool, // Default: false + * writer_options?: list, * } * @psalm-type ConfigType = array{ * imports?: ImportsConfig, diff --git a/config/services.yaml b/config/services.yaml index f117b372..12e2e8b0 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -274,9 +274,12 @@ services: tags: - { name: monolog.processor } -when@test: +when@test: &test services: + App\DataFixtures\: + resource: '../src/DataFixtures/' + App\Doctrine\Purger\: resource: '../src/Doctrine/Purger/' @@ -294,6 +297,4 @@ when@test: - { default: '@App\Doctrine\Purger\DoNotUsePurgerFactory' } when@dev: - services: - App\DataFixtures\: - resource: '../src/DataFixtures/' + *test From 9a1961bcd7784c7a764645de65b057a7f93335c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 1 Dec 2025 22:56:47 +0100 Subject: [PATCH 040/235] Fixed fixtures loading (for real now hopefully) --- config/services.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/services.yaml b/config/services.yaml index 12e2e8b0..4ba33456 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -279,6 +279,8 @@ when@test: &test App\DataFixtures\: resource: '../src/DataFixtures/' + autoconfigure: true + autowire: true App\Doctrine\Purger\: resource: '../src/Doctrine/Purger/' From 023d38d170655b684db23cac839d69f3809a8d0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 1 Dec 2025 23:56:36 +0100 Subject: [PATCH 041/235] Allow to configure seperators, category fallback and a global prefix for IPN generation Translations still missing --- config/reference.php | 34 +++++------ src/Repository/PartRepository.php | 60 ++++++++++++++++--- .../MiscSettings/IpnSuggestSettings.php | 28 +++++++++ translations/messages.en.xlf | 6 ++ 4 files changed, 102 insertions(+), 26 deletions(-) diff --git a/config/reference.php b/config/reference.php index 5d58153f..6ea52419 100644 --- a/config/reference.php +++ b/config/reference.php @@ -1548,6 +1548,11 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * dump_destination?: scalar|null, // A stream URL where dumps should be written to. // Default: null * theme?: "dark"|"light", // Changes the color of the dump() output when rendered directly on the templating. "dark" (default) or "light". // Default: "dark" * } + * @psalm-type MakerConfig = array{ + * root_namespace?: scalar|null, // Default: "App" + * generate_final_classes?: bool, // Default: true + * generate_final_entities?: bool, // Default: false + * } * @psalm-type WebpackEncoreConfig = array{ * output_path: scalar|null, // The path where Encore is building the assets - i.e. Encore.setOutputPath() * crossorigin?: false|"anonymous"|"use-credentials", // crossorigin value when Encore.enableIntegrityHashes() is used, can be false (default), anonymous or use-credentials // Default: false @@ -1672,12 +1677,6 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * post_processors?: array>, * }, * } - * @psalm-type DamaDoctrineTestConfig = array{ - * enable_static_connection?: mixed, // Default: true - * enable_static_meta_data_cache?: bool, // Default: true - * enable_static_query_cache?: bool, // Default: true - * connection_keys?: list, - * } * @psalm-type TwigExtraConfig = array{ * cache?: bool|array{ * enabled?: bool, // Default: false @@ -2373,6 +2372,13 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * invalidate_on_env_change?: bool, // Default: true * }, * } + * @psalm-type JbtronicsTranslationEditorConfig = array{ + * translations_path?: scalar|null, // Default: "%translator.default_path%" + * format?: scalar|null, // Default: "xlf" + * xliff_version?: scalar|null, // Default: "2.0" + * use_intl_icu_format?: bool, // Default: false + * writer_options?: list, + * } * @psalm-type ApiPlatformConfig = array{ * title?: scalar|null, // The title of the API. // Default: "" * description?: scalar|null, // The description of the API. // Default: "" @@ -2628,17 +2634,11 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * ... * }, * } - * @psalm-type MakerConfig = array{ - * root_namespace?: scalar|null, // Default: "App" - * generate_final_classes?: bool, // Default: true - * generate_final_entities?: bool, // Default: false - * } - * @psalm-type JbtronicsTranslationEditorConfig = array{ - * translations_path?: scalar|null, // Default: "%translator.default_path%" - * format?: scalar|null, // Default: "xlf" - * xliff_version?: scalar|null, // Default: "2.0" - * use_intl_icu_format?: bool, // Default: false - * writer_options?: list, + * @psalm-type DamaDoctrineTestConfig = array{ + * enable_static_connection?: mixed, // Default: true + * enable_static_meta_data_cache?: bool, // Default: true + * enable_static_query_cache?: bool, // Default: true + * connection_keys?: list, * } * @psalm-type ConfigType = array{ * imports?: ImportsConfig, diff --git a/src/Repository/PartRepository.php b/src/Repository/PartRepository.php index 3c83001a..9d5fee5e 100644 --- a/src/Repository/PartRepository.php +++ b/src/Repository/PartRepository.php @@ -132,6 +132,20 @@ class PartRepository extends NamedDBElementRepository $category = $part->getCategory(); $ipnSuggestions = ['commonPrefixes' => [], 'prefixesPartIncrement' => []]; + //Show global prefix first if configured + if ($this->ipnSuggestSettings->globalPrefix !== null && $this->ipnSuggestSettings->globalPrefix !== '') { + $ipnSuggestions['commonPrefixes'][] = [ + 'title' => $this->ipnSuggestSettings->globalPrefix, + 'description' => $this->translator->trans('part.edit.tab.advanced.ipn.prefix.global_prefix') + ]; + + $increment = $this->generateNextPossibleGlobalIncrement(); + $ipnSuggestions['prefixesPartIncrement'][] = [ + 'title' => $this->ipnSuggestSettings->globalPrefix . $increment, + 'description' => $this->translator->trans('part.edit.tab.advanced.ipn.prefix.global_prefix') + ]; + } + if (strlen($description) > 150) { $description = substr($description, 0, 150); } @@ -160,17 +174,17 @@ class PartRepository extends NamedDBElementRepository if ($category instanceof Category) { $currentPath = $category->getPartIpnPrefix(); $directIpnPrefixEmpty = $category->getPartIpnPrefix() === ''; - $currentPath = $currentPath === '' ? 'n.a.' : $currentPath; + $currentPath = $currentPath === '' ? $this->ipnSuggestSettings->fallbackPrefix : $currentPath; $increment = $this->generateNextPossiblePartIncrement($currentPath, $part, $suggestPartDigits); $ipnSuggestions['commonPrefixes'][] = [ - 'title' => $currentPath . '-', + 'title' => $currentPath . $this->ipnSuggestSettings->numberSeparator, 'description' => $directIpnPrefixEmpty ? $this->translator->trans('part.edit.tab.advanced.ipn.prefix_empty.direct_category', ['%name%' => $category->getName()]) : $this->translator->trans('part.edit.tab.advanced.ipn.prefix.direct_category') ]; $ipnSuggestions['prefixesPartIncrement'][] = [ - 'title' => $currentPath . '-' . $increment, + 'title' => $currentPath . $this->ipnSuggestSettings->numberSeparator . $increment, 'description' => $directIpnPrefixEmpty ? $this->translator->trans('part.edit.tab.advanced.ipn.prefix_empty.direct_category', ['%name%' => $category->getName()]) : $this->translator->trans('part.edit.tab.advanced.ipn.prefix.direct_category.increment') ]; @@ -179,18 +193,19 @@ class PartRepository extends NamedDBElementRepository while ($parentCategory instanceof Category) { // Prepend the parent category's prefix to the current path - $currentPath = $parentCategory->getPartIpnPrefix() . '-' . $currentPath; - $currentPath = $parentCategory->getPartIpnPrefix() === '' ? 'n.a.-' . $currentPath : $currentPath; + $effectiveIPNPrefix = $parentCategory->getPartIpnPrefix() === '' ? $this->ipnSuggestSettings->fallbackPrefix : $parentCategory->getPartIpnPrefix(); + + $currentPath = $effectiveIPNPrefix . $this->ipnSuggestSettings->categorySeparator . $currentPath; $ipnSuggestions['commonPrefixes'][] = [ - 'title' => $currentPath . '-', + 'title' => $currentPath . $this->ipnSuggestSettings->numberSeparator, 'description' => $this->translator->trans('part.edit.tab.advanced.ipn.prefix.hierarchical.no_increment') ]; $increment = $this->generateNextPossiblePartIncrement($currentPath, $part, $suggestPartDigits); $ipnSuggestions['prefixesPartIncrement'][] = [ - 'title' => $currentPath . '-' . $increment, + 'title' => $currentPath . $this->ipnSuggestSettings->numberSeparator . $increment, 'description' => $this->translator->trans('part.edit.tab.advanced.ipn.prefix.hierarchical.increment') ]; @@ -199,7 +214,7 @@ class PartRepository extends NamedDBElementRepository } } elseif ($part->getID() === null) { $ipnSuggestions['commonPrefixes'][] = [ - 'title' => 'n.a.', + 'title' => $this->ipnSuggestSettings->fallbackPrefix, 'description' => $this->translator->trans('part.edit.tab.advanced.ipn.prefix.not_saved') ]; } @@ -246,6 +261,33 @@ class PartRepository extends NamedDBElementRepository return $this->getNextIpnSuggestion($givenIpnsWithSameDescription); } + private function generateNextPossibleGlobalIncrement(): string + { + $qb = $this->createQueryBuilder('part'); + + + $qb->select('part.ipn') + ->where('REGEXP(part.ipn, :ipnPattern) = TRUE') + ->setParameter('ipnPattern', '^' . preg_quote($this->ipnSuggestSettings->globalPrefix, '/') . '\d+$') + ->orderBy('NATSORT(part.ipn)', 'DESC') + ->setMaxResults(1) + ; + + $highestIPN = $qb->getQuery()->getOneOrNullResult(); + if ($highestIPN !== null) { + //Remove the prefix and extract the increment part + $incrementPart = substr($highestIPN['ipn'], strlen($this->ipnSuggestSettings->globalPrefix)); + //Extract a number using regex + preg_match('/(\d+)$/', $incrementPart, $matches); + $incrementInt = isset($matches[1]) ? (int) $matches[1] + 1 : 0; + } else { + $incrementInt = 1; + } + + + return str_pad((string) $incrementInt, $this->ipnSuggestSettings->suggestPartDigits, '0', STR_PAD_LEFT); + } + /** * Generates the next possible increment for a part within a given category, while ensuring uniqueness. * @@ -266,7 +308,7 @@ class PartRepository extends NamedDBElementRepository { $qb = $this->createQueryBuilder('part'); - $expectedLength = strlen($currentPath) + 1 + $suggestPartDigits; // Path + '-' + $suggestPartDigits digits + $expectedLength = strlen($currentPath) + strlen($this->ipnSuggestSettings->categorySeparator) + $suggestPartDigits; // Path + '-' + $suggestPartDigits digits // Fetch all parts in the given category, sorted by their ID in ascending order $qb->select('part') diff --git a/src/Settings/MiscSettings/IpnSuggestSettings.php b/src/Settings/MiscSettings/IpnSuggestSettings.php index 44c4e24e..16face21 100644 --- a/src/Settings/MiscSettings/IpnSuggestSettings.php +++ b/src/Settings/MiscSettings/IpnSuggestSettings.php @@ -78,4 +78,32 @@ class IpnSuggestSettings envVar: "bool:IPN_USE_DUPLICATE_DESCRIPTION", envVarMode: EnvVarMode::OVERWRITE, )] public bool $useDuplicateDescription = false; + + #[SettingsParameter( + label: new TM("settings.misc.ipn_suggest.fallbackPrefix"), + description: new TM("settings.misc.ipn_suggest.fallbackPrefix.help"), + options: ['type' => StringType::class], + )] + public string $fallbackPrefix = 'N.A.'; + + #[SettingsParameter( + label: new TM("settings.misc.ipn_suggest.numberSeparator"), + description: new TM("settings.misc.ipn_suggest.numberSeparator.help"), + options: ['type' => StringType::class], + )] + public ?string $numberSeparator = '-'; + + #[SettingsParameter( + label: new TM("settings.misc.ipn_suggest.categorySeparator"), + description: new TM("settings.misc.ipn_suggest.categorySeparator.help"), + options: ['type' => StringType::class], + )] + public ?string $categorySeparator = '-'; + + #[SettingsParameter( + label: new TM("settings.misc.ipn_suggest.globalPrefix"), + description: new TM("settings.misc.ipn_suggest.globalPrefix.help"), + options: ['type' => StringType::class], + )] + public ?string $globalPrefix = null; } diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 6e938601..5b7749e1 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -14478,5 +14478,11 @@ Please note that this system is currently experimental, and the synonyms defined e.g. Format: 3–4 alphanumeric segments (any number) separated by "-", followed by "-" and 4 digits, e.g., PCOM-RES-0001 + + + part.edit.tab.advanced.ipn.prefix.global_prefix + The global IPN prefix, common across all parts + + From d42f728fadbb7d4962e08a75fe35109054a81a75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 2 Dec 2025 00:13:06 +0100 Subject: [PATCH 042/235] New translations messages.en.xlf (English) --- translations/messages.en.xlf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 2555fbdf..c63eb275 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -14478,5 +14478,11 @@ Please note that this system is currently experimental, and the synonyms defined e.g. Format: 3–4 alphanumeric segments (any number) separated by "-", followed by "-" and 4 digits, e.g., PCOM-RES-0001 + + + part.edit.tab.advanced.ipn.prefix.global_prefix + The global IPN prefix, common across all parts + + From 1925a71f30dada3e094472e1fca27939ada88c7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 3 Dec 2025 21:52:48 +0100 Subject: [PATCH 043/235] Added translations for new IPN suggestion settings --- .../MiscSettings/IpnSuggestSettings.php | 6 +-- translations/messages.en.xlf | 48 +++++++++++++++++++ 2 files changed, 51 insertions(+), 3 deletions(-) diff --git a/src/Settings/MiscSettings/IpnSuggestSettings.php b/src/Settings/MiscSettings/IpnSuggestSettings.php index 16face21..2c2cb21a 100644 --- a/src/Settings/MiscSettings/IpnSuggestSettings.php +++ b/src/Settings/MiscSettings/IpnSuggestSettings.php @@ -35,7 +35,7 @@ use Symfony\Component\Translation\TranslatableMessage as TM; use Symfony\Component\Validator\Constraints as Assert; #[Settings(label: new TM("settings.misc.ipn_suggest"))] -#[SettingsIcon("fa-list")] +#[SettingsIcon("fa-arrow-up-1-9")] class IpnSuggestSettings { use SettingsTrait; @@ -91,14 +91,14 @@ class IpnSuggestSettings description: new TM("settings.misc.ipn_suggest.numberSeparator.help"), options: ['type' => StringType::class], )] - public ?string $numberSeparator = '-'; + public string $numberSeparator = '-'; #[SettingsParameter( label: new TM("settings.misc.ipn_suggest.categorySeparator"), description: new TM("settings.misc.ipn_suggest.categorySeparator.help"), options: ['type' => StringType::class], )] - public ?string $categorySeparator = '-'; + public string $categorySeparator = '-'; #[SettingsParameter( label: new TM("settings.misc.ipn_suggest.globalPrefix"), diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 5b7749e1..d6092f03 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -14484,5 +14484,53 @@ Please note that this system is currently experimental, and the synonyms defined The global IPN prefix, common across all parts + + + settings.misc.ipn_suggest.fallbackPrefix + Fallback prefix + + + + + settings.misc.ipn_suggest.fallbackPrefix.help + The IPN prefix that should be used, if a category has no prefix defined. + + + + + settings.misc.ipn_suggest.numberSeparator + Number separator + + + + + settings.misc.ipn_suggest.numberSeparator.help + The separator character used to separate the IPN number from the prefix. + + + + + settings.misc.ipn_suggest.categorySeparator + Category separator + + + + + settings.misc.ipn_suggest.categorySeparator.help + The separator character used to separate different levels of category prefixes. + + + + + settings.misc.ipn_suggest.globalPrefix + Global prefix + + + + + settings.misc.ipn_suggest.globalPrefix.help + If enabled, an option for to generate IPN with this global prefix, shared across parts in all categories. + + From 68217f50c4035e2c28e855d35705bda932084307 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 3 Dec 2025 22:01:49 +0100 Subject: [PATCH 044/235] New translations messages.en.xlf (English) --- translations/messages.en.xlf | 48 ++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index c63eb275..5643d455 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -14484,5 +14484,53 @@ Please note that this system is currently experimental, and the synonyms defined The global IPN prefix, common across all parts + + + settings.misc.ipn_suggest.fallbackPrefix + Fallback prefix + + + + + settings.misc.ipn_suggest.fallbackPrefix.help + The IPN prefix that should be used, if a category has no prefix defined. + + + + + settings.misc.ipn_suggest.numberSeparator + Number separator + + + + + settings.misc.ipn_suggest.numberSeparator.help + The separator character used to separate the IPN number from the prefix. + + + + + settings.misc.ipn_suggest.categorySeparator + Category separator + + + + + settings.misc.ipn_suggest.categorySeparator.help + The separator character used to separate different levels of category prefixes. + + + + + settings.misc.ipn_suggest.globalPrefix + Global prefix + + + + + settings.misc.ipn_suggest.globalPrefix.help + If enabled, an option for to generate IPN with this global prefix, shared across parts in all categories. + + From 36e1fcfbed28d2004eb49d7a9278cbd9b262a5d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 3 Dec 2025 22:22:21 +0100 Subject: [PATCH 045/235] Fixed bulk provider imports, issue described in #869 This makes PR #1110 obsolete --- .../DTOs/BulkSearchFieldMappingDTO.php | 21 +++++++++++++++++-- .../DTOs/BulkSearchFieldMappingDTOTest.php | 9 ++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/Services/InfoProviderSystem/DTOs/BulkSearchFieldMappingDTO.php b/src/Services/InfoProviderSystem/DTOs/BulkSearchFieldMappingDTO.php index 50b7f4cf..47d8ac69 100644 --- a/src/Services/InfoProviderSystem/DTOs/BulkSearchFieldMappingDTO.php +++ b/src/Services/InfoProviderSystem/DTOs/BulkSearchFieldMappingDTO.php @@ -22,24 +22,41 @@ declare(strict_types=1); namespace App\Services\InfoProviderSystem\DTOs; +use App\Services\InfoProviderSystem\Providers\InfoProviderInterface; + /** * Represents a mapping between a part field and the info providers that should search in that field. */ readonly class BulkSearchFieldMappingDTO { + /** @var string[] $providers Array of provider keys to search with (e.g., ['digikey', 'farnell']) */ + public array $providers; + /** * @param string $field The field to search in (e.g., 'mpn', 'name', or supplier-specific fields like 'digikey_spn') - * @param string[] $providers Array of provider keys to search with (e.g., ['digikey', 'farnell']) + * @param string[]|InfoProviderInterface[] $providers Array of provider keys to search with (e.g., ['digikey', 'farnell']) * @param int $priority Priority for this field mapping (1-10, lower numbers = higher priority) */ public function __construct( public string $field, - public array $providers, + array $providers = [], public int $priority = 1 ) { if ($priority < 1 || $priority > 10) { throw new \InvalidArgumentException('Priority must be between 1 and 10'); } + + //Ensure that providers are provided as keys + foreach ($providers as &$provider) { + if ($provider instanceof InfoProviderInterface) { + $provider = $provider->getProviderKey(); + } + if (!is_string($provider)) { + throw new \InvalidArgumentException('Providers must be provided as strings or InfoProviderInterface instances'); + } + } + unset($provider); + $this->providers = $providers; } /** diff --git a/tests/Services/InfoProviderSystem/DTOs/BulkSearchFieldMappingDTOTest.php b/tests/Services/InfoProviderSystem/DTOs/BulkSearchFieldMappingDTOTest.php index a2101938..e300e2bf 100644 --- a/tests/Services/InfoProviderSystem/DTOs/BulkSearchFieldMappingDTOTest.php +++ b/tests/Services/InfoProviderSystem/DTOs/BulkSearchFieldMappingDTOTest.php @@ -26,6 +26,15 @@ use PHPUnit\Framework\TestCase; class BulkSearchFieldMappingDTOTest extends TestCase { + public function testProviderInstanceNormalization(): void + { + $mockProvider = $this->createMock(\App\Services\InfoProviderSystem\Providers\InfoProviderInterface::class); + $mockProvider->method('getProviderKey')->willReturn('mock_provider'); + + $fieldMapping = new BulkSearchFieldMappingDTO(field: 'mpn', providers: ['provider1', $mockProvider], priority: 5); + $this->assertSame(['provider1', 'mock_provider'], $fieldMapping->providers); + } + public function testIsSupplierPartNumberField(): void { $fieldMapping = new BulkSearchFieldMappingDTO(field: 'reichelt_spn', providers: ['provider1'], priority: 1); From a3d6f77fda8694557c7517ba44d063ad03031bcd Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Thu, 4 Dec 2025 22:33:59 +0100 Subject: [PATCH 046/235] Add missing German translations to messages.de.xlf (#1124) * Initial plan * Add 41 missing German translations to messages.de.xlf Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> --- translations/messages.de.xlf | 247 +++++++++++++++++++++++++++++++++++ 1 file changed, 247 insertions(+) diff --git a/translations/messages.de.xlf b/translations/messages.de.xlf index 806c2e52..f81dc44e 100644 --- a/translations/messages.de.xlf +++ b/translations/messages.de.xlf @@ -14436,5 +14436,252 @@ Dies ist auf der Informationsquellen Übersichtsseite möglich. Wenn aktiviert, wird die Bauteil-Beschreibung verwendet, um vorhandene Teile mit derselben Beschreibung zu finden und die nächste verfügbare IPN für die Vorschlagsliste zu ermitteln, indem der numerische Suffix entsprechend erhöht wird. + + + settings.misc.ipn_suggest.regex.help + Ein PCRE-kompatibler regulärer Ausdruck, den jede IPN erfüllen muss. Leer lassen, um alles als IPN zu erlauben. + + + + + user.labelp + Benutzer + + + + + currency.labelp + Währungen + + + + + measurement_unit.labelp + Maßeinheiten + + + + + attachment_type.labelp + Dateitypen + + + + + label_profile.labelp + Labelprofile + + + + + part_custom_state.labelp + Benutzerdefinierte Bauteilstatus + + + + + group.labelp + Gruppen + + + + + settings.synonyms.type_synonym.type + Typ + + + + + settings.synonyms.type_synonym.language + Sprache + + + + + settings.synonyms.type_synonym.translation_singular + Übersetzung Singular + + + + + settings.synonyms.type_synonym.translation_plural + Übersetzung Plural + + + + + settings.synonyms.type_synonym.add_entry + Eintrag hinzufügen + + + + + settings.synonyms.type_synonym.remove_entry + Eintrag entfernen + + + + + settings.synonyms + Synonyme + + + + + settings.synonyms.help + Das Synonymsystem ermöglicht es, zu überschreiben, wie Part-DB bestimmte Dinge benennt. Dies kann nützlich sein, insbesondere wenn Part-DB in einem anderen Kontext als Elektronik verwendet wird. +Bitte beachten Sie, dass dieses System derzeit experimentell ist und die hier definierten Synonyme möglicherweise nicht an allen Stellen angezeigt werden. + + + + + settings.synonyms.type_synonyms + Typsynonyme + + + + + settings.synonyms.type_synonyms.help + Mit Typsynonymen können Sie die Bezeichnungen von integrierten Datentypen ersetzen. Zum Beispiel können Sie „Footprint" in etwas anderes umbenennen. + + + + + {{part}} + Bauteile + + + + + log.element_edited.changed_fields.part_ipn_prefix + IPN-Präfix + + + + + part.labelp + Bauteile + + + + + project_bom_entry.labelp + BOM-Einträge + + + + + part_lot.labelp + Bauteilbestände + + + + + orderdetail.labelp + Bestellinformationen + + + + + pricedetail.labelp + Preisinformationen + + + + + parameter.labelp + Parameter + + + + + part_association.labelp + Bauteilzuordnungen + + + + + bulk_info_provider_import_job.labelp + Massenimporte von Informationsquellen + + + + + bulk_info_provider_import_job_part.labelp + Massenimportauftrag Bauteil + + + + + password_toggle.hide + Ausblenden + + + + + password_toggle.show + Anzeigen + + + + + settings.misc.ipn_suggest.regex.help.placeholder + z.B. Format: 3–4 alphanumerische Segmente getrennt durch „-", gefolgt von „-" und 4 Ziffern, z.B. PCOM-RES-0001 + + + + + part.edit.tab.advanced.ipn.prefix.global_prefix + Das globale IPN-Präfix, das für alle Bauteile gilt + + + + + settings.misc.ipn_suggest.fallbackPrefix + Fallback-Präfix + + + + + settings.misc.ipn_suggest.fallbackPrefix.help + Das IPN-Präfix, das verwendet werden soll, wenn eine Kategorie kein Präfix definiert hat. + + + + + settings.misc.ipn_suggest.numberSeparator + Nummerntrennzeichen + + + + + settings.misc.ipn_suggest.numberSeparator.help + Das Trennzeichen, das verwendet wird, um die IPN-Nummer vom Präfix zu trennen. + + + + + settings.misc.ipn_suggest.categorySeparator + Kategorietrennzeichen + + + + + settings.misc.ipn_suggest.categorySeparator.help + Das Trennzeichen, das verwendet wird, um verschiedene Ebenen von Kategoriepräfixen zu trennen. + + + + + settings.misc.ipn_suggest.globalPrefix + Globales Präfix + + + + + settings.misc.ipn_suggest.globalPrefix.help + Wenn aktiviert, wird eine Option zur Generierung einer IPN mit diesem globalen Präfix angeboten, das für Bauteile in allen Kategorien gilt. + + From 17f9755b868b56fbf0b64927f5237298906c4ba6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Dec 2025 22:41:11 +0100 Subject: [PATCH 047/235] Bump actions/checkout from 5 to 6 (#1116) Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' 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/assets_artifact_build.yml | 2 +- .github/workflows/docker_build.yml | 2 +- .github/workflows/docker_frankenphp.yml | 2 +- .github/workflows/static_analysis.yml | 2 +- .github/workflows/tests.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/assets_artifact_build.yml b/.github/workflows/assets_artifact_build.yml index 3c7b2522..8ce7ccf6 100644 --- a/.github/workflows/assets_artifact_build.yml +++ b/.github/workflows/assets_artifact_build.yml @@ -22,7 +22,7 @@ jobs: APP_ENV: prod steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Setup PHP uses: shivammathur/setup-php@v2 diff --git a/.github/workflows/docker_build.yml b/.github/workflows/docker_build.yml index c912e769..ce3243ca 100644 --- a/.github/workflows/docker_build.yml +++ b/.github/workflows/docker_build.yml @@ -20,7 +20,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Docker meta id: docker_meta diff --git a/.github/workflows/docker_frankenphp.yml b/.github/workflows/docker_frankenphp.yml index 0b2eb874..1180f0c5 100644 --- a/.github/workflows/docker_frankenphp.yml +++ b/.github/workflows/docker_frankenphp.yml @@ -20,7 +20,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Docker meta id: docker_meta diff --git a/.github/workflows/static_analysis.yml b/.github/workflows/static_analysis.yml index 1de98ee9..d8b099eb 100644 --- a/.github/workflows/static_analysis.yml +++ b/.github/workflows/static_analysis.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Setup PHP uses: shivammathur/setup-php@v2 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index fee987ae..822f5af6 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -46,7 +46,7 @@ jobs: if: matrix.db-type == 'postgres' - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Setup PHP uses: shivammathur/setup-php@v2 From a5275f7be73a399fdec5e3cd27b7eb7c900059e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 4 Dec 2025 23:04:32 +0100 Subject: [PATCH 048/235] Increase DB field length for URLs to 2048 chars This fixes issue #1122 --- migrations/Version20251204215443.php | 156 +++++++++++++++++++++ src/Entity/Attachments/Attachment.php | 7 +- src/Entity/Base/AbstractCompany.php | 8 +- src/Entity/Parts/InfoProviderReference.php | 4 +- 4 files changed, 166 insertions(+), 9 deletions(-) create mode 100644 migrations/Version20251204215443.php diff --git a/migrations/Version20251204215443.php b/migrations/Version20251204215443.php new file mode 100644 index 00000000..3cee0035 --- /dev/null +++ b/migrations/Version20251204215443.php @@ -0,0 +1,156 @@ +addSql('ALTER TABLE attachments CHANGE external_path external_path VARCHAR(2048) DEFAULT NULL'); + $this->addSql('ALTER TABLE manufacturers CHANGE website website VARCHAR(2048) NOT NULL, CHANGE auto_product_url auto_product_url VARCHAR(2048) NOT NULL'); + $this->addSql('ALTER TABLE parts CHANGE provider_reference_provider_url provider_reference_provider_url VARCHAR(2048) DEFAULT NULL'); + $this->addSql('ALTER TABLE suppliers CHANGE website website VARCHAR(2048) NOT NULL, CHANGE auto_product_url auto_product_url VARCHAR(2048) NOT NULL'); + } + + public function mySQLDown(Schema $schema): void + { + $this->addSql('ALTER TABLE `attachments` CHANGE external_path external_path VARCHAR(255) DEFAULT NULL'); + $this->addSql('ALTER TABLE `manufacturers` CHANGE website website VARCHAR(255) NOT NULL, CHANGE auto_product_url auto_product_url VARCHAR(255) NOT NULL'); + $this->addSql('ALTER TABLE `parts` CHANGE provider_reference_provider_url provider_reference_provider_url VARCHAR(255) DEFAULT NULL'); + $this->addSql('ALTER TABLE `suppliers` CHANGE website website VARCHAR(255) NOT NULL, CHANGE auto_product_url auto_product_url VARCHAR(255) NOT NULL'); + } + + public function sqLiteUp(Schema $schema): void + { + $this->addSql('CREATE TEMPORARY TABLE __temp__attachments AS SELECT id, type_id, original_filename, show_in_table, name, last_modified, datetime_added, class_name, element_id, internal_path, external_path FROM attachments'); + $this->addSql('DROP TABLE attachments'); + $this->addSql('CREATE TABLE attachments (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, type_id INTEGER NOT NULL, original_filename VARCHAR(255) DEFAULT NULL, show_in_table BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, class_name VARCHAR(255) NOT NULL, element_id INTEGER NOT NULL, internal_path VARCHAR(255) DEFAULT NULL, external_path VARCHAR(2048) DEFAULT NULL, CONSTRAINT FK_47C4FAD6C54C8C93 FOREIGN KEY (type_id) REFERENCES attachment_types (id) ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE)'); + $this->addSql('INSERT INTO attachments (id, type_id, original_filename, show_in_table, name, last_modified, datetime_added, class_name, element_id, internal_path, external_path) SELECT id, type_id, original_filename, show_in_table, name, last_modified, datetime_added, class_name, element_id, internal_path, external_path FROM __temp__attachments'); + $this->addSql('DROP TABLE __temp__attachments'); + $this->addSql('CREATE INDEX attachment_element_idx ON attachments (class_name, element_id)'); + $this->addSql('CREATE INDEX attachment_name_idx ON attachments (name)'); + $this->addSql('CREATE INDEX attachments_idx_class_name_id ON attachments (class_name, id)'); + $this->addSql('CREATE INDEX attachments_idx_id_element_id_class_name ON attachments (id, element_id, class_name)'); + $this->addSql('CREATE INDEX IDX_47C4FAD6C54C8C93 ON attachments (type_id)'); + $this->addSql('CREATE INDEX IDX_47C4FAD61F1F2A24 ON attachments (element_id)'); + $this->addSql('CREATE TEMPORARY TABLE __temp__manufacturers AS SELECT id, parent_id, id_preview_attachment, address, phone_number, fax_number, email_address, website, auto_product_url, comment, not_selectable, name, last_modified, datetime_added, alternative_names FROM manufacturers'); + $this->addSql('DROP TABLE manufacturers'); + $this->addSql('CREATE TABLE manufacturers (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, parent_id INTEGER DEFAULT NULL, id_preview_attachment INTEGER DEFAULT NULL, address VARCHAR(255) NOT NULL, phone_number VARCHAR(255) NOT NULL, fax_number VARCHAR(255) NOT NULL, email_address VARCHAR(255) NOT NULL, website VARCHAR(2048) NOT NULL, auto_product_url VARCHAR(2048) NOT NULL, comment CLOB NOT NULL, not_selectable BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, alternative_names CLOB DEFAULT NULL, CONSTRAINT FK_94565B12727ACA70 FOREIGN KEY (parent_id) REFERENCES manufacturers (id) ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_94565B12EA7100A1 FOREIGN KEY (id_preview_attachment) REFERENCES attachments (id) ON UPDATE NO ACTION ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE)'); + $this->addSql('INSERT INTO manufacturers (id, parent_id, id_preview_attachment, address, phone_number, fax_number, email_address, website, auto_product_url, comment, not_selectable, name, last_modified, datetime_added, alternative_names) SELECT id, parent_id, id_preview_attachment, address, phone_number, fax_number, email_address, website, auto_product_url, comment, not_selectable, name, last_modified, datetime_added, alternative_names FROM __temp__manufacturers'); + $this->addSql('DROP TABLE __temp__manufacturers'); + $this->addSql('CREATE INDEX IDX_94565B12EA7100A1 ON manufacturers (id_preview_attachment)'); + $this->addSql('CREATE INDEX IDX_94565B12727ACA70 ON manufacturers (parent_id)'); + $this->addSql('CREATE INDEX manufacturer_name ON manufacturers (name)'); + $this->addSql('CREATE INDEX manufacturer_idx_parent_name ON manufacturers (parent_id, name)'); + $this->addSql('CREATE TEMPORARY TABLE __temp__parts AS SELECT id, id_preview_attachment, id_category, id_footprint, id_part_unit, id_manufacturer, id_part_custom_state, order_orderdetails_id, built_project_id, datetime_added, name, last_modified, needs_review, tags, mass, description, comment, visible, favorite, minamount, manufacturer_product_url, manufacturer_product_number, manufacturing_status, order_quantity, manual_order, ipn, provider_reference_provider_key, provider_reference_provider_id, provider_reference_provider_url, provider_reference_last_updated, eda_info_reference_prefix, eda_info_value, eda_info_invisible, eda_info_exclude_from_bom, eda_info_exclude_from_board, eda_info_exclude_from_sim, eda_info_kicad_symbol, eda_info_kicad_footprint FROM parts'); + $this->addSql('DROP TABLE parts'); + $this->addSql('CREATE TABLE parts (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, id_preview_attachment INTEGER DEFAULT NULL, id_category INTEGER NOT NULL, id_footprint INTEGER DEFAULT NULL, id_part_unit INTEGER DEFAULT NULL, id_manufacturer INTEGER DEFAULT NULL, id_part_custom_state INTEGER DEFAULT NULL, order_orderdetails_id INTEGER DEFAULT NULL, built_project_id INTEGER DEFAULT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, needs_review BOOLEAN NOT NULL, tags CLOB NOT NULL, mass DOUBLE PRECISION DEFAULT NULL, description CLOB NOT NULL, comment CLOB NOT NULL, visible BOOLEAN NOT NULL, favorite BOOLEAN NOT NULL, minamount DOUBLE PRECISION NOT NULL, manufacturer_product_url CLOB NOT NULL, manufacturer_product_number VARCHAR(255) NOT NULL, manufacturing_status VARCHAR(255) DEFAULT NULL, order_quantity INTEGER NOT NULL, manual_order BOOLEAN NOT NULL, ipn VARCHAR(100) DEFAULT NULL, provider_reference_provider_key VARCHAR(255) DEFAULT NULL, provider_reference_provider_id VARCHAR(255) DEFAULT NULL, provider_reference_provider_url VARCHAR(2048) DEFAULT NULL, provider_reference_last_updated DATETIME DEFAULT NULL, eda_info_reference_prefix VARCHAR(255) DEFAULT NULL, eda_info_value VARCHAR(255) DEFAULT NULL, eda_info_invisible BOOLEAN DEFAULT NULL, eda_info_exclude_from_bom BOOLEAN DEFAULT NULL, eda_info_exclude_from_board BOOLEAN DEFAULT NULL, eda_info_exclude_from_sim BOOLEAN DEFAULT NULL, eda_info_kicad_symbol VARCHAR(255) DEFAULT NULL, eda_info_kicad_footprint VARCHAR(255) DEFAULT NULL, CONSTRAINT FK_6940A7FEEA7100A1 FOREIGN KEY (id_preview_attachment) REFERENCES attachments (id) ON UPDATE NO ACTION ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_6940A7FE5697F554 FOREIGN KEY (id_category) REFERENCES categories (id) ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_6940A7FE7E371A10 FOREIGN KEY (id_footprint) REFERENCES footprints (id) ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_6940A7FE2626CEF9 FOREIGN KEY (id_part_unit) REFERENCES measurement_units (id) ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_6940A7FE1ECB93AE FOREIGN KEY (id_manufacturer) REFERENCES manufacturers (id) ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_6940A7FEA3ED1215 FOREIGN KEY (id_part_custom_state) REFERENCES part_custom_states (id) ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_6940A7FE81081E9B FOREIGN KEY (order_orderdetails_id) REFERENCES orderdetails (id) ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_6940A7FEE8AE70D9 FOREIGN KEY (built_project_id) REFERENCES projects (id) ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE)'); + $this->addSql('INSERT INTO parts (id, id_preview_attachment, id_category, id_footprint, id_part_unit, id_manufacturer, id_part_custom_state, order_orderdetails_id, built_project_id, datetime_added, name, last_modified, needs_review, tags, mass, description, comment, visible, favorite, minamount, manufacturer_product_url, manufacturer_product_number, manufacturing_status, order_quantity, manual_order, ipn, provider_reference_provider_key, provider_reference_provider_id, provider_reference_provider_url, provider_reference_last_updated, eda_info_reference_prefix, eda_info_value, eda_info_invisible, eda_info_exclude_from_bom, eda_info_exclude_from_board, eda_info_exclude_from_sim, eda_info_kicad_symbol, eda_info_kicad_footprint) SELECT id, id_preview_attachment, id_category, id_footprint, id_part_unit, id_manufacturer, id_part_custom_state, order_orderdetails_id, built_project_id, datetime_added, name, last_modified, needs_review, tags, mass, description, comment, visible, favorite, minamount, manufacturer_product_url, manufacturer_product_number, manufacturing_status, order_quantity, manual_order, ipn, provider_reference_provider_key, provider_reference_provider_id, provider_reference_provider_url, provider_reference_last_updated, eda_info_reference_prefix, eda_info_value, eda_info_invisible, eda_info_exclude_from_bom, eda_info_exclude_from_board, eda_info_exclude_from_sim, eda_info_kicad_symbol, eda_info_kicad_footprint FROM __temp__parts'); + $this->addSql('DROP TABLE __temp__parts'); + $this->addSql('CREATE INDEX IDX_6940A7FEA3ED1215 ON parts (id_part_custom_state)'); + $this->addSql('CREATE INDEX IDX_6940A7FE1ECB93AE ON parts (id_manufacturer)'); + $this->addSql('CREATE INDEX IDX_6940A7FE2626CEF9 ON parts (id_part_unit)'); + $this->addSql('CREATE INDEX IDX_6940A7FE5697F554 ON parts (id_category)'); + $this->addSql('CREATE INDEX IDX_6940A7FE7E371A10 ON parts (id_footprint)'); + $this->addSql('CREATE INDEX IDX_6940A7FEEA7100A1 ON parts (id_preview_attachment)'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_6940A7FE3D721C14 ON parts (ipn)'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_6940A7FE81081E9B ON parts (order_orderdetails_id)'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_6940A7FEE8AE70D9 ON parts (built_project_id)'); + $this->addSql('CREATE INDEX parts_idx_datet_name_last_id_needs ON parts (datetime_added, name, last_modified, id, needs_review)'); + $this->addSql('CREATE INDEX parts_idx_ipn ON parts (ipn)'); + $this->addSql('CREATE INDEX parts_idx_name ON parts (name)'); + $this->addSql('CREATE TEMPORARY TABLE __temp__suppliers AS SELECT id, parent_id, default_currency_id, id_preview_attachment, shipping_costs, address, phone_number, fax_number, email_address, website, auto_product_url, comment, not_selectable, name, last_modified, datetime_added, alternative_names FROM suppliers'); + $this->addSql('DROP TABLE suppliers'); + $this->addSql('CREATE TABLE suppliers (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, parent_id INTEGER DEFAULT NULL, default_currency_id INTEGER DEFAULT NULL, id_preview_attachment INTEGER DEFAULT NULL, shipping_costs NUMERIC(11, 5) DEFAULT NULL, address VARCHAR(255) NOT NULL, phone_number VARCHAR(255) NOT NULL, fax_number VARCHAR(255) NOT NULL, email_address VARCHAR(255) NOT NULL, website VARCHAR(2048) NOT NULL, auto_product_url VARCHAR(2048) NOT NULL, comment CLOB NOT NULL, not_selectable BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, alternative_names CLOB DEFAULT NULL, CONSTRAINT FK_AC28B95C727ACA70 FOREIGN KEY (parent_id) REFERENCES suppliers (id) ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_AC28B95CECD792C0 FOREIGN KEY (default_currency_id) REFERENCES currencies (id) ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_AC28B95CEA7100A1 FOREIGN KEY (id_preview_attachment) REFERENCES attachments (id) ON UPDATE NO ACTION ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE)'); + $this->addSql('INSERT INTO suppliers (id, parent_id, default_currency_id, id_preview_attachment, shipping_costs, address, phone_number, fax_number, email_address, website, auto_product_url, comment, not_selectable, name, last_modified, datetime_added, alternative_names) SELECT id, parent_id, default_currency_id, id_preview_attachment, shipping_costs, address, phone_number, fax_number, email_address, website, auto_product_url, comment, not_selectable, name, last_modified, datetime_added, alternative_names FROM __temp__suppliers'); + $this->addSql('DROP TABLE __temp__suppliers'); + $this->addSql('CREATE INDEX IDX_AC28B95CECD792C0 ON suppliers (default_currency_id)'); + $this->addSql('CREATE INDEX IDX_AC28B95C727ACA70 ON suppliers (parent_id)'); + $this->addSql('CREATE INDEX supplier_idx_name ON suppliers (name)'); + $this->addSql('CREATE INDEX supplier_idx_parent_name ON suppliers (parent_id, name)'); + $this->addSql('CREATE INDEX IDX_AC28B95CEA7100A1 ON suppliers (id_preview_attachment)'); + } + + public function sqLiteDown(Schema $schema): void + { + $this->addSql('CREATE TEMPORARY TABLE __temp__attachments AS SELECT id, name, last_modified, datetime_added, original_filename, internal_path, external_path, show_in_table, type_id, class_name, element_id FROM "attachments"'); + $this->addSql('DROP TABLE "attachments"'); + $this->addSql('CREATE TABLE "attachments" (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, original_filename VARCHAR(255) DEFAULT NULL, internal_path VARCHAR(255) DEFAULT NULL, external_path VARCHAR(255) DEFAULT NULL, show_in_table BOOLEAN NOT NULL, type_id INTEGER NOT NULL, class_name VARCHAR(255) NOT NULL, element_id INTEGER NOT NULL, CONSTRAINT FK_47C4FAD6C54C8C93 FOREIGN KEY (type_id) REFERENCES "attachment_types" (id) NOT DEFERRABLE INITIALLY IMMEDIATE)'); + $this->addSql('INSERT INTO "attachments" (id, name, last_modified, datetime_added, original_filename, internal_path, external_path, show_in_table, type_id, class_name, element_id) SELECT id, name, last_modified, datetime_added, original_filename, internal_path, external_path, show_in_table, type_id, class_name, element_id FROM __temp__attachments'); + $this->addSql('DROP TABLE __temp__attachments'); + $this->addSql('CREATE INDEX IDX_47C4FAD6C54C8C93 ON "attachments" (type_id)'); + $this->addSql('CREATE INDEX IDX_47C4FAD61F1F2A24 ON "attachments" (element_id)'); + $this->addSql('CREATE INDEX attachments_idx_id_element_id_class_name ON "attachments" (id, element_id, class_name)'); + $this->addSql('CREATE INDEX attachments_idx_class_name_id ON "attachments" (class_name, id)'); + $this->addSql('CREATE INDEX attachment_name_idx ON "attachments" (name)'); + $this->addSql('CREATE INDEX attachment_element_idx ON "attachments" (class_name, element_id)'); + $this->addSql('CREATE TEMPORARY TABLE __temp__manufacturers AS SELECT id, name, last_modified, datetime_added, comment, not_selectable, alternative_names, address, phone_number, fax_number, email_address, website, auto_product_url, parent_id, id_preview_attachment FROM "manufacturers"'); + $this->addSql('DROP TABLE "manufacturers"'); + $this->addSql('CREATE TABLE "manufacturers" (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, comment CLOB NOT NULL, not_selectable BOOLEAN NOT NULL, alternative_names CLOB DEFAULT NULL, address VARCHAR(255) NOT NULL, phone_number VARCHAR(255) NOT NULL, fax_number VARCHAR(255) NOT NULL, email_address VARCHAR(255) NOT NULL, website VARCHAR(255) NOT NULL, auto_product_url VARCHAR(255) NOT NULL, parent_id INTEGER DEFAULT NULL, id_preview_attachment INTEGER DEFAULT NULL, CONSTRAINT FK_94565B12727ACA70 FOREIGN KEY (parent_id) REFERENCES "manufacturers" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_94565B12EA7100A1 FOREIGN KEY (id_preview_attachment) REFERENCES "attachments" (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE)'); + $this->addSql('INSERT INTO "manufacturers" (id, name, last_modified, datetime_added, comment, not_selectable, alternative_names, address, phone_number, fax_number, email_address, website, auto_product_url, parent_id, id_preview_attachment) SELECT id, name, last_modified, datetime_added, comment, not_selectable, alternative_names, address, phone_number, fax_number, email_address, website, auto_product_url, parent_id, id_preview_attachment FROM __temp__manufacturers'); + $this->addSql('DROP TABLE __temp__manufacturers'); + $this->addSql('CREATE INDEX IDX_94565B12727ACA70 ON "manufacturers" (parent_id)'); + $this->addSql('CREATE INDEX IDX_94565B12EA7100A1 ON "manufacturers" (id_preview_attachment)'); + $this->addSql('CREATE INDEX manufacturer_name ON "manufacturers" (name)'); + $this->addSql('CREATE INDEX manufacturer_idx_parent_name ON "manufacturers" (parent_id, name)'); + $this->addSql('CREATE TEMPORARY TABLE __temp__parts AS SELECT id, name, last_modified, datetime_added, needs_review, tags, mass, ipn, description, comment, visible, favorite, minamount, manufacturer_product_url, manufacturer_product_number, manufacturing_status, order_quantity, manual_order, provider_reference_provider_key, provider_reference_provider_id, provider_reference_provider_url, provider_reference_last_updated, eda_info_reference_prefix, eda_info_value, eda_info_invisible, eda_info_exclude_from_bom, eda_info_exclude_from_board, eda_info_exclude_from_sim, eda_info_kicad_symbol, eda_info_kicad_footprint, id_preview_attachment, id_part_custom_state, id_category, id_footprint, id_part_unit, id_manufacturer, order_orderdetails_id, built_project_id FROM "parts"'); + $this->addSql('DROP TABLE "parts"'); + $this->addSql('CREATE TABLE "parts" (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, needs_review BOOLEAN NOT NULL, tags CLOB NOT NULL, mass DOUBLE PRECISION DEFAULT NULL, ipn VARCHAR(100) DEFAULT NULL, description CLOB NOT NULL, comment CLOB NOT NULL, visible BOOLEAN NOT NULL, favorite BOOLEAN NOT NULL, minamount DOUBLE PRECISION NOT NULL, manufacturer_product_url CLOB NOT NULL, manufacturer_product_number VARCHAR(255) NOT NULL, manufacturing_status VARCHAR(255) DEFAULT NULL, order_quantity INTEGER NOT NULL, manual_order BOOLEAN NOT NULL, provider_reference_provider_key VARCHAR(255) DEFAULT NULL, provider_reference_provider_id VARCHAR(255) DEFAULT NULL, provider_reference_provider_url VARCHAR(255) DEFAULT NULL, provider_reference_last_updated DATETIME DEFAULT NULL, eda_info_reference_prefix VARCHAR(255) DEFAULT NULL, eda_info_value VARCHAR(255) DEFAULT NULL, eda_info_invisible BOOLEAN DEFAULT NULL, eda_info_exclude_from_bom BOOLEAN DEFAULT NULL, eda_info_exclude_from_board BOOLEAN DEFAULT NULL, eda_info_exclude_from_sim BOOLEAN DEFAULT NULL, eda_info_kicad_symbol VARCHAR(255) DEFAULT NULL, eda_info_kicad_footprint VARCHAR(255) DEFAULT NULL, id_preview_attachment INTEGER DEFAULT NULL, id_part_custom_state INTEGER DEFAULT NULL, id_category INTEGER NOT NULL, id_footprint INTEGER DEFAULT NULL, id_part_unit INTEGER DEFAULT NULL, id_manufacturer INTEGER DEFAULT NULL, order_orderdetails_id INTEGER DEFAULT NULL, built_project_id INTEGER DEFAULT NULL, CONSTRAINT FK_6940A7FEEA7100A1 FOREIGN KEY (id_preview_attachment) REFERENCES "attachments" (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_6940A7FEA3ED1215 FOREIGN KEY (id_part_custom_state) REFERENCES "part_custom_states" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_6940A7FE5697F554 FOREIGN KEY (id_category) REFERENCES "categories" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_6940A7FE7E371A10 FOREIGN KEY (id_footprint) REFERENCES "footprints" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_6940A7FE2626CEF9 FOREIGN KEY (id_part_unit) REFERENCES "measurement_units" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_6940A7FE1ECB93AE FOREIGN KEY (id_manufacturer) REFERENCES "manufacturers" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_6940A7FE81081E9B FOREIGN KEY (order_orderdetails_id) REFERENCES "orderdetails" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_6940A7FEE8AE70D9 FOREIGN KEY (built_project_id) REFERENCES projects (id) NOT DEFERRABLE INITIALLY IMMEDIATE)'); + $this->addSql('INSERT INTO "parts" (id, name, last_modified, datetime_added, needs_review, tags, mass, ipn, description, comment, visible, favorite, minamount, manufacturer_product_url, manufacturer_product_number, manufacturing_status, order_quantity, manual_order, provider_reference_provider_key, provider_reference_provider_id, provider_reference_provider_url, provider_reference_last_updated, eda_info_reference_prefix, eda_info_value, eda_info_invisible, eda_info_exclude_from_bom, eda_info_exclude_from_board, eda_info_exclude_from_sim, eda_info_kicad_symbol, eda_info_kicad_footprint, id_preview_attachment, id_part_custom_state, id_category, id_footprint, id_part_unit, id_manufacturer, order_orderdetails_id, built_project_id) SELECT id, name, last_modified, datetime_added, needs_review, tags, mass, ipn, description, comment, visible, favorite, minamount, manufacturer_product_url, manufacturer_product_number, manufacturing_status, order_quantity, manual_order, provider_reference_provider_key, provider_reference_provider_id, provider_reference_provider_url, provider_reference_last_updated, eda_info_reference_prefix, eda_info_value, eda_info_invisible, eda_info_exclude_from_bom, eda_info_exclude_from_board, eda_info_exclude_from_sim, eda_info_kicad_symbol, eda_info_kicad_footprint, id_preview_attachment, id_part_custom_state, id_category, id_footprint, id_part_unit, id_manufacturer, order_orderdetails_id, built_project_id FROM __temp__parts'); + $this->addSql('DROP TABLE __temp__parts'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_6940A7FE3D721C14 ON "parts" (ipn)'); + $this->addSql('CREATE INDEX IDX_6940A7FEEA7100A1 ON "parts" (id_preview_attachment)'); + $this->addSql('CREATE INDEX IDX_6940A7FEA3ED1215 ON "parts" (id_part_custom_state)'); + $this->addSql('CREATE INDEX IDX_6940A7FE5697F554 ON "parts" (id_category)'); + $this->addSql('CREATE INDEX IDX_6940A7FE7E371A10 ON "parts" (id_footprint)'); + $this->addSql('CREATE INDEX IDX_6940A7FE2626CEF9 ON "parts" (id_part_unit)'); + $this->addSql('CREATE INDEX IDX_6940A7FE1ECB93AE ON "parts" (id_manufacturer)'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_6940A7FE81081E9B ON "parts" (order_orderdetails_id)'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_6940A7FEE8AE70D9 ON "parts" (built_project_id)'); + $this->addSql('CREATE INDEX parts_idx_datet_name_last_id_needs ON "parts" (datetime_added, name, last_modified, id, needs_review)'); + $this->addSql('CREATE INDEX parts_idx_name ON "parts" (name)'); + $this->addSql('CREATE INDEX parts_idx_ipn ON "parts" (ipn)'); + $this->addSql('CREATE TEMPORARY TABLE __temp__suppliers AS SELECT id, name, last_modified, datetime_added, comment, not_selectable, alternative_names, address, phone_number, fax_number, email_address, website, auto_product_url, shipping_costs, parent_id, default_currency_id, id_preview_attachment FROM "suppliers"'); + $this->addSql('DROP TABLE "suppliers"'); + $this->addSql('CREATE TABLE "suppliers" (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, comment CLOB NOT NULL, not_selectable BOOLEAN NOT NULL, alternative_names CLOB DEFAULT NULL, address VARCHAR(255) NOT NULL, phone_number VARCHAR(255) NOT NULL, fax_number VARCHAR(255) NOT NULL, email_address VARCHAR(255) NOT NULL, website VARCHAR(255) NOT NULL, auto_product_url VARCHAR(255) NOT NULL, shipping_costs NUMERIC(11, 5) DEFAULT NULL, parent_id INTEGER DEFAULT NULL, default_currency_id INTEGER DEFAULT NULL, id_preview_attachment INTEGER DEFAULT NULL, CONSTRAINT FK_AC28B95C727ACA70 FOREIGN KEY (parent_id) REFERENCES "suppliers" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_AC28B95CECD792C0 FOREIGN KEY (default_currency_id) REFERENCES currencies (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_AC28B95CEA7100A1 FOREIGN KEY (id_preview_attachment) REFERENCES "attachments" (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE)'); + $this->addSql('INSERT INTO "suppliers" (id, name, last_modified, datetime_added, comment, not_selectable, alternative_names, address, phone_number, fax_number, email_address, website, auto_product_url, shipping_costs, parent_id, default_currency_id, id_preview_attachment) SELECT id, name, last_modified, datetime_added, comment, not_selectable, alternative_names, address, phone_number, fax_number, email_address, website, auto_product_url, shipping_costs, parent_id, default_currency_id, id_preview_attachment FROM __temp__suppliers'); + $this->addSql('DROP TABLE __temp__suppliers'); + $this->addSql('CREATE INDEX IDX_AC28B95C727ACA70 ON "suppliers" (parent_id)'); + $this->addSql('CREATE INDEX IDX_AC28B95CECD792C0 ON "suppliers" (default_currency_id)'); + $this->addSql('CREATE INDEX IDX_AC28B95CEA7100A1 ON "suppliers" (id_preview_attachment)'); + $this->addSql('CREATE INDEX supplier_idx_name ON "suppliers" (name)'); + $this->addSql('CREATE INDEX supplier_idx_parent_name ON "suppliers" (parent_id, name)'); + } + + public function postgreSQLUp(Schema $schema): void + { + // this up() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER TABLE attachments ALTER external_path TYPE VARCHAR(2048)'); + $this->addSql('ALTER TABLE manufacturers ALTER website TYPE VARCHAR(2048)'); + $this->addSql('ALTER TABLE manufacturers ALTER auto_product_url TYPE VARCHAR(2048)'); + $this->addSql('ALTER TABLE parts ALTER provider_reference_provider_url TYPE VARCHAR(2048)'); + $this->addSql('ALTER TABLE suppliers ALTER website TYPE VARCHAR(2048)'); + $this->addSql('ALTER TABLE suppliers ALTER auto_product_url TYPE VARCHAR(2048)'); + } + + public function postgreSQLDown(Schema $schema): void + { + $this->addSql('ALTER TABLE "attachments" ALTER external_path TYPE VARCHAR(255)'); + $this->addSql('ALTER TABLE "manufacturers" ALTER website TYPE VARCHAR(255)'); + $this->addSql('ALTER TABLE "manufacturers" ALTER auto_product_url TYPE VARCHAR(255)'); + $this->addSql('ALTER TABLE "parts" ALTER provider_reference_provider_url TYPE VARCHAR(255)'); + $this->addSql('ALTER TABLE "suppliers" ALTER website TYPE VARCHAR(255)'); + $this->addSql('ALTER TABLE "suppliers" ALTER auto_product_url TYPE VARCHAR(255)'); + } +} diff --git a/src/Entity/Attachments/Attachment.php b/src/Entity/Attachments/Attachment.php index 35a6a529..08aacaa0 100644 --- a/src/Entity/Attachments/Attachment.php +++ b/src/Entity/Attachments/Attachment.php @@ -166,9 +166,10 @@ abstract class Attachment extends AbstractNamedDBElement * @var string|null The path to the external source if the file is stored externally or was downloaded from an * external source. Null if there is no external source. */ - #[ORM\Column(type: Types::STRING, nullable: true)] + #[ORM\Column(type: Types::STRING, length: 2048, nullable: true)] #[Groups(['attachment:read'])] #[ApiProperty(example: 'http://example.com/image.jpg')] + #[Assert\Length(2048)] protected ?string $external_path = null; /** @@ -551,8 +552,8 @@ abstract class Attachment extends AbstractNamedDBElement */ #[Groups(['attachment:write'])] #[SerializedName('url')] - #[ApiProperty(description: 'Set the path of the attachment here. - Provide either an external URL, a path to a builtin file (like %FOOTPRINTS%/Active/ICs/IC_DFS.png) or an empty + #[ApiProperty(description: 'Set the path of the attachment here. + Provide either an external URL, a path to a builtin file (like %FOOTPRINTS%/Active/ICs/IC_DFS.png) or an empty string if the attachment has an internal file associated and you\'d like to reset the external source. If you set a new (nonempty) file path any associated internal file will be removed!')] public function setURL(?string $url): self diff --git a/src/Entity/Base/AbstractCompany.php b/src/Entity/Base/AbstractCompany.php index 57a3f722..7d05c93f 100644 --- a/src/Entity/Base/AbstractCompany.php +++ b/src/Entity/Base/AbstractCompany.php @@ -83,8 +83,8 @@ abstract class AbstractCompany extends AbstractPartsContainingDBElement */ #[Assert\Url(requireTld: false)] #[Groups(['full', 'company:read', 'company:write', 'import', 'extended'])] - #[ORM\Column(type: Types::STRING)] - #[Assert\Length(max: 255)] + #[ORM\Column(type: Types::STRING, length: 2048)] + #[Assert\Length(max: 2048)] protected string $website = ''; #[Groups(['company:read', 'company:write', 'import', 'full', 'extended'])] @@ -93,8 +93,8 @@ abstract class AbstractCompany extends AbstractPartsContainingDBElement /** * @var string The link to the website of an article. Use %PARTNUMBER% as placeholder for the part number. */ - #[ORM\Column(type: Types::STRING)] - #[Assert\Length(max: 255)] + #[ORM\Column(type: Types::STRING, length: 2048)] + #[Assert\Length(max: 2048)] #[Groups(['full', 'company:read', 'company:write', 'import', 'extended'])] protected string $auto_product_url = ''; diff --git a/src/Entity/Parts/InfoProviderReference.php b/src/Entity/Parts/InfoProviderReference.php index bfa62f32..810aef0c 100644 --- a/src/Entity/Parts/InfoProviderReference.php +++ b/src/Entity/Parts/InfoProviderReference.php @@ -50,7 +50,7 @@ class InfoProviderReference /** * @var string|null The url of this part inside the provider system or null if this info is not existing */ - #[Column(type: Types::STRING, nullable: true)] + #[Column(type: Types::STRING, length: 2048, nullable: true)] #[Groups(['provider_reference:read', 'full'])] private ?string $provider_url = null; @@ -157,4 +157,4 @@ class InfoProviderReference $ref->last_updated = new \DateTimeImmutable(); return $ref; } -} \ No newline at end of file +} From fd7106af28147df16a56484f4994c117681e5d30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 4 Dec 2025 23:31:42 +0100 Subject: [PATCH 049/235] Allow that the DEFAULT_URI does not end with a slash We normalize the url with an env var processor before passing it to the saml lib, to avoid an error. Fixes issue #1118 --- .env | 1 - config/parameters.yaml | 2 +- .../AddSlashEnvVarProcessor.php | 49 +++++++++++++++++++ .../CustomEnvVarProcessor.php | 2 +- .../AddSlashEnvVarProcessorTest.php | 44 +++++++++++++++++ 5 files changed, 95 insertions(+), 3 deletions(-) create mode 100644 src/EnvVarProcessors/AddSlashEnvVarProcessor.php rename src/{Services => EnvVarProcessors}/CustomEnvVarProcessor.php (98%) create mode 100644 tests/EnvVarProcessors/AddSlashEnvVarProcessorTest.php diff --git a/.env b/.env index 89dc55d5..9a6ce846 100644 --- a/.env +++ b/.env @@ -32,7 +32,6 @@ DATABASE_EMULATE_NATURAL_SORT=0 ################################################################################### # The public reachable URL of this Part-DB installation. This is used for generating links in SAML and email templates or when no request context is available. -# This must end with a slash! DEFAULT_URI="https://partdb.changeme.invalid/" ################################################################################### diff --git a/config/parameters.yaml b/config/parameters.yaml index d4fe7581..b79e2b88 100644 --- a/config/parameters.yaml +++ b/config/parameters.yaml @@ -10,7 +10,7 @@ parameters: partdb.title: '%env(string:settings:customization:instanceName)%' # The title shown inside of Part-DB (e.g. in the navbar and on homepage) partdb.locale_menu: ['en', 'de', 'it', 'fr', 'ru', 'ja', 'cs', 'da', 'zh', 'pl', 'hu'] # The languages that are shown in user drop down menu - 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 + partdb.default_uri: '%env(addSlash: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 partdb.db.emulate_natural_sort: '%env(bool:DATABASE_EMULATE_NATURAL_SORT)%' # If this is set to true, natural sorting is emulated on platforms that do not support it natively. This can be slow on large datasets. diff --git a/src/EnvVarProcessors/AddSlashEnvVarProcessor.php b/src/EnvVarProcessors/AddSlashEnvVarProcessor.php new file mode 100644 index 00000000..aaf0abc9 --- /dev/null +++ b/src/EnvVarProcessors/AddSlashEnvVarProcessor.php @@ -0,0 +1,49 @@ +. + */ + +declare(strict_types=1); + + +namespace App\EnvVarProcessors; + +use Symfony\Component\DependencyInjection\EnvVarProcessorInterface; + +/** + * Env var processor that adds a trailing slash to a string if not already present. + */ +final class AddSlashEnvVarProcessor implements EnvVarProcessorInterface +{ + + public function getEnv(string $prefix, string $name, \Closure $getEnv): mixed + { + $env = $getEnv($name); + if (!is_string($env)) { + throw new \InvalidArgumentException(sprintf('The "addSlash" env var processor only works with strings, got %s.', gettype($env))); + } + return rtrim($env, '/') . '/'; + } + + public static function getProvidedTypes(): array + { + return [ + 'addSlash' => 'string', + ]; + } +} diff --git a/src/Services/CustomEnvVarProcessor.php b/src/EnvVarProcessors/CustomEnvVarProcessor.php similarity index 98% rename from src/Services/CustomEnvVarProcessor.php rename to src/EnvVarProcessors/CustomEnvVarProcessor.php index f269cc7d..55a6b94d 100644 --- a/src/Services/CustomEnvVarProcessor.php +++ b/src/EnvVarProcessors/CustomEnvVarProcessor.php @@ -20,7 +20,7 @@ declare(strict_types=1); -namespace App\Services; +namespace App\EnvVarProcessors; use Closure; use Symfony\Component\DependencyInjection\EnvVarProcessorInterface; diff --git a/tests/EnvVarProcessors/AddSlashEnvVarProcessorTest.php b/tests/EnvVarProcessors/AddSlashEnvVarProcessorTest.php new file mode 100644 index 00000000..4099f0ee --- /dev/null +++ b/tests/EnvVarProcessors/AddSlashEnvVarProcessorTest.php @@ -0,0 +1,44 @@ +. + */ + +namespace App\Tests\EnvVarProcessors; + +use App\EnvVarProcessors\AddSlashEnvVarProcessor; +use PHPUnit\Framework\TestCase; + +class AddSlashEnvVarProcessorTest extends TestCase +{ + protected AddSlashEnvVarProcessor $processor; + + protected function setUp(): void + { + $this->processor = new AddSlashEnvVarProcessor(); + } + + public function testGetEnv(): void + { + $getEnv = function ($name) { + return $name; + }; + + $this->assertEquals('http://example.com/', $this->processor->getEnv('addSlash', 'http://example.com', $getEnv)); + $this->assertEquals('http://example.com/', $this->processor->getEnv('addSlash', 'http://example.com/', $getEnv)); + } +} From 9a1dbe06dc0f3c0304e4811256a742a899bbae7e Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Thu, 4 Dec 2025 23:44:03 +0100 Subject: [PATCH 050/235] Fix spelling and grammar mistakes in German and English translations (#1125) * Initial plan * Fix spelling and grammar mistakes in German and English translations Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> --- translations/messages.de.xlf | 2 +- translations/messages.en.xlf | 2 +- translations/security.de.xlf | 2 +- translations/validators.en.xlf | 8 ++++---- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/translations/messages.de.xlf b/translations/messages.de.xlf index f81dc44e..d187d4c7 100644 --- a/translations/messages.de.xlf +++ b/translations/messages.de.xlf @@ -14318,7 +14318,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön info_providers.bulk_import.priority_system.description - Lower numbers = higher priority. Same priority = combine results. Different priorities = try highest first, fallback if no results. + Niedrigere Zahlen = höhere Priorität. Gleiche Priorität = Ergebnisse kombinieren. Unterschiedliche Prioritäten = zuerst die höchste versuchen, bei fehlenden Ergebnissen auf die niedrigere zurückgreifen. diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index d6092f03..917d2675 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -14288,7 +14288,7 @@ You can do this in the provider info list. settings.misc.ipn_suggest.regex.help - A PCRE-compatible regular expression every IPN has to fulfill. Leave empty to allow all everything as IPN. + A PCRE-compatible regular expression every IPN has to fulfill. Leave empty to allow everything as IPN. diff --git a/translations/security.de.xlf b/translations/security.de.xlf index 4f905fd1..927f8f9c 100644 --- a/translations/security.de.xlf +++ b/translations/security.de.xlf @@ -4,7 +4,7 @@ user.login_error.user_disabled - Ihr Account ist deaktiviert! Kontaktiere einen Administrator, wenn Sie denken, dass dies ein Fehler ist. + Ihr Account ist deaktiviert! Kontaktieren Sie einen Administrator, wenn Sie denken, dass dies ein Fehler ist. diff --git a/translations/validators.en.xlf b/translations/validators.en.xlf index 86045227..d52f9c30 100644 --- a/translations/validators.en.xlf +++ b/translations/validators.en.xlf @@ -104,7 +104,7 @@ parameters.validator.min_lesser_typical - Value must be lesser or equal the the typical value ({{ compared_value }}). + Value must be less than or equal to the typical value ({{ compared_value }}). @@ -124,7 +124,7 @@ parameters.validator.min_lesser_max - Value must be lesser than the maximum value ({{ compared_value }}). + Value must be less than the maximum value ({{ compared_value }}). @@ -144,7 +144,7 @@ parameters.validator.max_greater_typical - Value must be greater or equal than the typical value ({{ compared_value }}). + Value must be greater than or equal to the typical value ({{ compared_value }}). @@ -154,7 +154,7 @@ validator.user.username_already_used - A user with this name is already exisiting + A user with this name already exists From 0000cd7a02650eccbcb6d7dbec968c3262ca6a81 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Fri, 5 Dec 2025 00:05:31 +0100 Subject: [PATCH 051/235] Fix spelling and grammar mistakes in documentation (#1127) * Initial plan * Fix spelling and grammar mistakes in documentation Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> --- CONTRIBUTING.md | 4 ++-- README.md | 4 ++-- docs/api/intro.md | 6 +++--- docs/concepts.md | 2 +- docs/configuration.md | 6 +++--- docs/index.md | 5 ++--- docs/installation/choosing_database.md | 8 ++++---- docs/installation/email.md | 2 +- docs/installation/installation_docker.md | 6 +++--- docs/installation/nginx.md | 2 +- docs/installation/saml_sso.md | 6 +++--- docs/troubleshooting.md | 2 +- docs/upgrade/1_to_2.md | 8 ++++---- docs/upgrade/index.md | 2 +- docs/upgrade/upgrade_legacy.md | 2 +- docs/usage/backup_restore.md | 6 +++--- docs/usage/eda_integration.md | 2 +- docs/usage/getting_started.md | 2 +- docs/usage/import_export.md | 2 +- docs/usage/information_provider_system.md | 12 ++++++------ docs/usage/labels.md | 2 +- docs/usage/tips_tricks.md | 6 +++--- 22 files changed, 48 insertions(+), 49 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d31c904e..86dce560 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -20,7 +20,7 @@ was translated in other languages (this is possible via the "Other languages" dr ## Project structure Part-DB uses symfony's recommended [project structure](https://symfony.com/doc/current/best_practices.html). Interesting folders are: -* `public`: Everything in this directory will be publicy accessible via web. Use this folder to serve static images. +* `public`: Everything in this directory will be publicly accessible via web. Use this folder to serve static images. * `assets`: The frontend assets are saved here. You can find the javascript and CSS code here. * `src`: Part-DB's PHP code is saved here. Note that the sub directories are structured by the classes purposes (so use `Controller` Controllers, `Entities` for Database models, etc.) * `translations`: The translations used in Part-DB are saved here @@ -49,7 +49,7 @@ Part-DB uses GitHub actions to run various tests and checks on the code: * PHPunit tests run successful * Config files, translations and templates has valid syntax * Doctrine schema valid -* No known vulnerable dependecies are used +* No known vulnerable dependencies are used * Static analysis successful (phpstan with `--level=2`) Further the code coverage of the PHPunit tests is determined and uploaded to [CodeCov](https://codecov.io/gh/Part-DB/Part-DB-server). diff --git a/README.md b/README.md index 291b574a..de8e6291 100644 --- a/README.md +++ b/README.md @@ -29,8 +29,8 @@ 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 -may not completely stable. Please mind, that the free Heroku instance is used, so it can take some time when loading +Every change to the master branch gets automatically deployed, so it represents the current development progress and +may not be 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. diff --git a/docs/api/intro.md b/docs/api/intro.md index 78a8d2c1..2ad261b5 100644 --- a/docs/api/intro.md +++ b/docs/api/intro.md @@ -17,7 +17,7 @@ This allows external applications to interact with Part-DB, extend it or integra > Some features might be missing or not working yet. > Also be aware, that there might be security issues in the API, which could allow attackers to access or edit data via > the API, which -> they normally should be able to access. So currently you should only use the API with trusted users and trusted +> they normally should not be able to access. So currently you should only use the API with trusted users and trusted > applications. Part-DB uses [API Platform](https://api-platform.com/) to provide the API, which allows for easy creation of REST APIs @@ -106,11 +106,11 @@ This is a great way to test the API and see how it works, without having to writ By default, all list endpoints are paginated, which means only a certain number of results is returned per request. To get another page of the results, you have to use the `page` query parameter, which contains the page number you want -to get (e.g. `/api/categoues/?page=2`). +to get (e.g. `/api/categories/?page=2`). When using JSONLD, the links to the next page are also included in the `hydra:view` property of the response. To change the size of the pages (the number of items in a single page) use the `itemsPerPage` query parameter ( -e.g. `/api/categoues/?itemsPerPage=50`). +e.g. `/api/categories/?itemsPerPage=50`). See [API Platform docs](https://api-platform.com/docs/core/pagination) for more infos. diff --git a/docs/concepts.md b/docs/concepts.md index ddf38633..c8649be2 100644 --- a/docs/concepts.md +++ b/docs/concepts.md @@ -28,7 +28,7 @@ A part entity has many fields, which can be used to describe it better. Most of 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 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 + but tags are much less strict and formal (they don't have to be defined beforehand) 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. diff --git a/docs/configuration.md b/docs/configuration.md index 4bb46d08..07f3c291 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -10,7 +10,7 @@ Part-DBs behavior can be configured to your needs. There are different kinds of 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 configruation +## User configuration 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 @@ -43,7 +43,7 @@ options listed, see `.env` file for the full list of possible env variables. Environment variables allow to overwrite settings in the web interface. This is useful, if you want to enforce certain settings to be unchangable by users, or if you want to configure settings in a central place in a deployed environment. On the settings page, you can hover over a setting to see, which environment variable can be used to overwrite it, it -is shown as tooltip. API keys or similar sensitve data which is overwritten by env variables, are redacted on the web +is shown as tooltip. API keys or similar sensitive data which is overwritten by env variables, are redacted on the web interface, so that even administrators cannot see them (only the last 2 characters and the length). For technical and security reasons some settings can only be configured via environment variables and not via the web @@ -116,7 +116,7 @@ bundled with Part-DB. Set `DATABASE_MYSQL_SSL_VERIFY_CERT` if you want to accept value should be handled as confidential data and not shared publicly. * `SHOW_PART_IMAGE_OVERLAY`: Set to 0 to disable the part image overlay, which appears if you hover over an image in the part image gallery -* `IPN_SUGGEST_REGEX`: A global regular expression, that part IPNs have to fullfill. Enforce your own format for your users. +* `IPN_SUGGEST_REGEX`: A global regular expression, that part IPNs have to fulfill. Enforce your own format for your users. * `IPN_SUGGEST_REGEX_HELP`: Define your own user help text for the Regex format specification. * `IPN_AUTO_APPEND_SUFFIX`: When enabled, an incremental suffix will be added to the user input when entering an existing * IPN again upon saving. diff --git a/docs/index.md b/docs/index.md index d732f31d..0894cde5 100644 --- a/docs/index.md +++ b/docs/index.md @@ -18,8 +18,7 @@ It is installed on a web server and so can be accessed with any browser without > You can log in with username: **user** and password: **user**, to change/create data. > > 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 be 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. @@ -53,7 +52,7 @@ It is installed on a web server and so can be accessed with any browser without 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. +or makerspaces, 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. diff --git a/docs/installation/choosing_database.md b/docs/installation/choosing_database.md index cd9657d4..8a070120 100644 --- a/docs/installation/choosing_database.md +++ b/docs/installation/choosing_database.md @@ -38,7 +38,7 @@ you have started creating data**. So you should choose the database type for you * **Performance**: SQLite is not as fast as MySQL or PostgreSQL, especially when using complex queries or many users. * **Emulated RegEx search**: SQLite does not support RegEx search natively. Part-DB can emulate it, however that is pretty slow. -* **Emualted natural sorting**: SQLite does not support natural sorting natively. Part-DB can emulate it, but it is pretty slow. +* **Emulated natural sorting**: SQLite does not support natural sorting natively. Part-DB can emulate it, but it is pretty slow. * **Limitations with Unicode**: 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. @@ -131,7 +131,7 @@ The host (here 127.0.0.1) and port should also be specified according to your My In the `serverVersion` parameter you can specify the version of the MySQL/MariaDB server you are using, in the way the server returns it (e.g. `8.0.37` for MySQL and `10.4.14-MariaDB`). If you do not know it, you can leave the default value. -If you want to use a unix socket for the connection instead of a TCP connnection, you can specify the socket path in the `unix_socket` parameter. +If you want to use a unix socket for the connection instead of a TCP connection, you can specify the socket path in the `unix_socket` parameter. ```shell DATABASE_URL="mysql://user:password@localhost/database?serverVersion=8.0.37&unix_socket=/var/run/mysqld/mysqld.sock" ``` @@ -150,7 +150,7 @@ In the `serverVersion` parameter you can specify the version of the PostgreSQL s The `charset` parameter specify the character set of the database. It should be set to `utf8` to ensure that all characters are stored correctly. -If you want to use a unix socket for the connection instead of a TCP connnection, you can specify the socket path in the `host` parameter. +If you want to use a unix socket for the connection instead of a TCP connection, you can specify the socket path in the `host` parameter. ```shell DATABASE_URL="postgresql://db_user@localhost/db_name?serverVersion=16.6&charset=utf8&host=/var/run/postgresql" ``` @@ -177,6 +177,6 @@ In natural sorting, it would be sorted as: Part-DB can sort names in part tables and tree views naturally. PostgreSQL and MariaDB 10.7+ support natural sorting natively, and it is automatically used if available. -For SQLite and MySQL < 10.7 it has to be emulated if wanted, which is pretty slow. Therefore it has to be explicity enabled by setting the +For SQLite and MySQL < 10.7 it has to be emulated if wanted, which is pretty slow. Therefore it has to be explicitly enabled by setting the `DATABASE_EMULATE_NATURAL_SORT` environment variable to `1`. If it is 0 the classical binary sorting is used, on these databases. The emulations might have some quirks and issues, so it is recommended to use a database which supports natural sorting natively, if you want to use it. diff --git a/docs/installation/email.md b/docs/installation/email.md index c9feaba6..0418fb4a 100644 --- a/docs/installation/email.md +++ b/docs/installation/email.md @@ -19,7 +19,7 @@ automatic mail providers (like MailChimp or SendGrid). If you want to use one of Mailer documentation for more information. We will only cover the configuration of an SMTP provider here, which is sufficient for most use-cases. -You will need an email account, which you can use send emails from via password-bases SMTP authentication, this account +You will need an email account, which you can use to send emails from via password-based SMTP authentication, this account should be dedicated to Part-DB. To configure the SMTP provider, you have to set the following environment variables: diff --git a/docs/installation/installation_docker.md b/docs/installation/installation_docker.md index 232633ab..2313cf7f 100644 --- a/docs/installation/installation_docker.md +++ b/docs/installation/installation_docker.md @@ -143,11 +143,11 @@ services: # - DB_AUTOMIGRATE=true # You can configure Part-DB using the webUI or environment variables - # However you can add add any other environment configuration you want here + # However you can add any other environment configuration you want here # See .env file for all available options or https://docs.part-db.de/configuration.html - # Override value if you want to show to show a given text on homepage. - # When this is outcommented the webUI can be used to configure the banner + # Override value if you want to show a given text on homepage. + # When this is commented out the webUI can be used to configure the banner #- BANNER=This is a test banner
    with a line break database: diff --git a/docs/installation/nginx.md b/docs/installation/nginx.md index 84305975..db209d92 100644 --- a/docs/installation/nginx.md +++ b/docs/installation/nginx.md @@ -7,7 +7,7 @@ nav_order: 10 # Nginx -You can also use [nginx](https://www.nginx.com/) as webserver for Part-DB. Setup Part-DB with apache is a bit easier, so +You can also use [nginx](https://www.nginx.com/) as webserver for Part-DB. Setting up Part-DB with Apache is a bit easier, so this is the method shown in the guides. This guide assumes that you already have a working nginx installation with PHP configured. diff --git a/docs/installation/saml_sso.md b/docs/installation/saml_sso.md index d2e65e7f..f9752546 100644 --- a/docs/installation/saml_sso.md +++ b/docs/installation/saml_sso.md @@ -21,7 +21,7 @@ LDAP or Active Directory server. {: .warning } > This feature is currently in beta. Please report any bugs you find. -> So far it has only tested with Keycloak, but it should work with any SAML 2.0 compatible identity provider. +> So far it has only been tested with Keycloak, but it should work with any SAML 2.0 compatible identity provider. This guide will show you how to configure Part-DB with [Keycloak](https://www.keycloak.org/) as the SAML identity provider, but it should work with any SAML 2.0 compatible identity provider. @@ -75,8 +75,8 @@ the [Keycloak Getting Started Guide](https://www.keycloak.org/docs/latest/gettin ### Configure Part-DB to use SAML -1. Open the `.env.local` file of Part-DB (or the docker-compose.yaml) for edit -2. Set the `SAMLP_SP_PRIVATE_KEY` environment variable to the content of the private key file you downloaded in the +1. Open the `.env.local` file of Part-DB (or the docker-compose.yaml) for editing +2. Set the `SAML_SP_PRIVATE_KEY` environment variable to the content of the private key file you downloaded in the previous step. It should start with `MIEE` and end with `=`. 3. Set the `SAML_SP_X509_CERT` environment variable to the content of the Certificate field shown in the `Keys` tab of the SAML client in Keycloak. It should start with `MIIC` and end with `=`. diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index f20a7f22..b848ced5 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -9,7 +9,7 @@ Sometimes things go wrong and Part-DB shows an error message. This page should h ## Error messages -When a common, easy fixable error occurs (like a non-up-to-date database), Part-DB will show you some short instructions +When a common, easily fixable error occurs (like a non-up-to-date database), Part-DB will show you some short instructions on how to fix the problem. If you have a problem that is not listed here, please open an issue on GitHub. ## General procedure diff --git a/docs/upgrade/1_to_2.md b/docs/upgrade/1_to_2.md index c333136a..ef0f4575 100644 --- a/docs/upgrade/1_to_2.md +++ b/docs/upgrade/1_to_2.md @@ -27,7 +27,7 @@ about the requirements at all. ## Changes * Configuration is now preferably done via a web settings interface. You can still use environment variables, these overwrite -the settings in the web interface. Existing configuration will still work, but you should consider migriting them to the +the settings in the web interface. Existing configuration will still work, but you should consider migrating them to the web interface as described below. * The `config/banner.md` file that could been used to customize the banner text, was removed. You can now set the banner text directly in the admin interface, or by setting the `BANNER` environment variable. If you want to keep your existing @@ -43,7 +43,7 @@ The upgrade process works very similar to a normal (minor release) upgrade. ### Direct installation -**Be sure to execute the following steps as the user that owns the Part-DB files (e.g. `www-data`, or your webserver user). So prepend a `sudo -u wwww-data` where necessary.** +**Be sure to execute the following steps as the user that owns the Part-DB files (e.g. `www-data`, or your webserver user). So prepend a `sudo -u www-data` where necessary.** 1. Make a backup of your existing Part-DB installation, including the database, data directories and the configuration files and `.env.local` file. The `php bin/console partdb:backup` command can help you with this. @@ -51,7 +51,7 @@ The `php bin/console partdb:backup` command can help you with this. 3. Remove the `var/cache/` directory inside the Part-DB installation to ensure that no old cache files remain. 4. Run `composer install --no-dev -o` to update the dependencies. 5. Run `yarn install` and `yarn build` to update the frontend assets. -6. Rund `php bin/console doctrine:migrations:migrate` to update the database schema. +6. Run `php bin/console doctrine:migrations:migrate` to update the database schema. 7. Clear the cache with `php bin/console cache:clear`. 8. Open your Part-DB instance in the browser and log in as an admin user. 9. Go to the user or group permissions page, and give yourself (and other administrators) the right to change system settings (under "System" and "Configuration"). @@ -79,7 +79,7 @@ To change it, you must migrate your environment variable configuration to the ne For this there is the new console command `settings:migrate-env-to-settings`, which reads in all environment variables used to overwrite settings and write them to the database, so that you can safely delete them from your environment variable configuration afterwards, without -loosing your configuration. +losing your configuration. To run the command, execute `php bin/console settings:migrate-env-to-settings --all` as webserver user (or run `docker exec --user=www-data -it partdb php bin/console settings:migrate-env-to-settings --all` for docker containers). It will list you all environment variables, it found and ask you for confirmation to migrate them. Answer with `yes` to migrate them and hit enter. diff --git a/docs/upgrade/index.md b/docs/upgrade/index.md index 95a9cc33..bbe4378d 100644 --- a/docs/upgrade/index.md +++ b/docs/upgrade/index.md @@ -6,4 +6,4 @@ has_children: true --- This section provides information on how to upgrade Part-DB to the latest version. -This is intended for major release upgrades, where requirements or things changes significantly. +This is intended for major release upgrades, where requirements or things change significantly. diff --git a/docs/upgrade/upgrade_legacy.md b/docs/upgrade/upgrade_legacy.md index 4dd29e4d..b83661f3 100644 --- a/docs/upgrade/upgrade_legacy.md +++ b/docs/upgrade/upgrade_legacy.md @@ -24,7 +24,7 @@ sections carefully before proceeding to upgrade. 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`. + via `php bin/console partdb:migrations:convert-bbcode`. * 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 diff --git a/docs/usage/backup_restore.md b/docs/usage/backup_restore.md index bef3792d..6a9c6db5 100644 --- a/docs/usage/backup_restore.md +++ b/docs/usage/backup_restore.md @@ -27,7 +27,7 @@ for more info about these options. ## Backup (manual) -3 parts have to be backup-ed: The configuration files, which contain the instance-specific options, the +3 parts have to be backed up: 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. @@ -56,7 +56,7 @@ interface (`mysqldump -uBACKUP -pPASSWORD DATABASE`) ## Restore 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. +have to use the same database type (SQLite or MySQL) as on the backed up server instance. ### Restore configuration @@ -71,7 +71,7 @@ Copy the `uploads/` and the `public/media/` folder from your backup into your ne #### SQLite -Copy the backup-ed `app.db` into the database folder normally `var/app.db` in Part-DB root folder. +Copy the backed up `app.db` into the database folder normally `var/app.db` in Part-DB root folder. #### MySQL / MariaDB diff --git a/docs/usage/eda_integration.md b/docs/usage/eda_integration.md index 9444e55f..0d765bd1 100644 --- a/docs/usage/eda_integration.md +++ b/docs/usage/eda_integration.md @@ -60,7 +60,7 @@ If you type in a character, you will get an autocomplete list of all symbols and ### 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, +Only parts and their categories on which there is any kind of EDA metadata 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 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. diff --git a/docs/usage/getting_started.md b/docs/usage/getting_started.md index 4b9a809a..8534a5e9 100644 --- a/docs/usage/getting_started.md +++ b/docs/usage/getting_started.md @@ -6,7 +6,7 @@ nav_order: 4 # Getting started -After Part-DB you should begin with customizing the settings, and setting up the basic structures. +After Part-DB you should begin with customizing the settings and setting up the basic structures. Before starting, it's useful to read a bit about the [concepts of Part-DB]({% link concepts.md %}). 1. TOC diff --git a/docs/usage/import_export.md b/docs/usage/import_export.md index 136624e2..8c938732 100644 --- a/docs/usage/import_export.md +++ b/docs/usage/import_export.md @@ -49,7 +49,7 @@ You can upload the file that should be imported here and choose various options review" after the import. This can be useful if you want to review all imported parts before using them. * **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. + existing data structures will be used and if no matching data structure 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 diff --git a/docs/usage/information_provider_system.md b/docs/usage/information_provider_system.md index bc6fe76e..c3873c05 100644 --- a/docs/usage/information_provider_system.md +++ b/docs/usage/information_provider_system.md @@ -78,7 +78,7 @@ results will be shown. ## Data providers 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. +Each information source is called an "info provider" and handles the communication with the external source. 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. @@ -157,7 +157,7 @@ again, to establish a new connection. ### TME -The TME provider uses 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 get 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 @@ -176,10 +176,10 @@ The following env configuration options are available: ### Farnell / Element14 / Newark -The Farnell provider uses the [Farnell API](https://partner.element14.com/) to search for parts and getting shopping +The Farnell provider uses the [Farnell API](https://partner.element14.com/) to search for parts and get shopping information from [Farnell](https://www.farnell.com/). You have to create an account at Farnell and get an API key on the [Farnell API page](https://partner.element14.com/). -Register a new application there (settings does not matter, as long as you select the "Product Search API") and you will +Register a new application there (settings do not matter, as long as you select the "Product Search API") and you will get an API key. The following env configuration options are available: @@ -191,7 +191,7 @@ The following env configuration options are available: ### Mouser -The Mouser provider uses the [Mouser API](https://www.mouser.de/api-home/) to search for parts and getting shopping +The Mouser provider uses the [Mouser API](https://www.mouser.de/api-home/) to search for parts and get shopping 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/). @@ -226,7 +226,7 @@ An API key is not required, it is enough to enable the provider using the follow ### OEMsecrets -The oemsecrets provider uses the [oemsecrets API](https://www.oemsecrets.com/) to search for parts and getting shopping +The oemsecrets provider uses the [oemsecrets API](https://www.oemsecrets.com/) to search for parts and get shopping information from them. Similar to octopart it aggregates offers from different distributors. You can apply for a free API key on the [oemsecrets API page](https://www.oemsecrets.com/api/) and put the key you get diff --git a/docs/usage/labels.md b/docs/usage/labels.md index e84f4d7f..d46d944c 100644 --- a/docs/usage/labels.md +++ b/docs/usage/labels.md @@ -6,7 +6,7 @@ parent: Usage # Labels -Part-DB support the generation and printing of labels for parts, part lots and storage locations. +Part-DB supports 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 define label templates by creating Label profiles. This way you can create many similar-looking labels with for diff --git a/docs/usage/tips_tricks.md b/docs/usage/tips_tricks.md index 6eda718d..139cbf59 100644 --- a/docs/usage/tips_tricks.md +++ b/docs/usage/tips_tricks.md @@ -88,9 +88,9 @@ the user as "owner" of a part lot. This way, only he is allowed to add or remove ## Update notifications -Part-DB can show you a notification that there is a newer version than currently installed available. The notification +Part-DB can show you a notification that there is a newer version than currently installed. The notification will be shown on the homepage and the server info page. -It is only be shown to users which has the `Show available Part-DB updates` permission. +It is only shown to users which have the `Show available Part-DB updates` permission. For the notification to work, Part-DB queries the GitHub API every 2 days to check for new releases. No data is sent to GitHub besides the metadata required for the connection (so the public IP address of your computer running Part-DB). @@ -98,6 +98,6 @@ If you don't want Part-DB to query the GitHub API, or if your server can not rea update notifications by setting the `CHECK_FOR_UPDATES` option to `false`. ## Internet access via proxy -If you server running Part-DB does not have direct access to the internet, but has to use a proxy server, you can configure +If your server running Part-DB does not have direct access to the internet, but has to use a proxy server, you can configure the proxy settings in the `.env.local` file (or docker env config). You can set the `HTTP_PROXY` and `HTTPS_PROXY` environment variables to the URL of your proxy server. If your proxy server requires authentication, you can include the username and password in the URL. From 77819af9a8b370eaef385f4c459b6ab3e74342e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 5 Dec 2025 00:40:26 +0100 Subject: [PATCH 052/235] New translations security.en.xlf (German) --- translations/security.de.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/security.de.xlf b/translations/security.de.xlf index 4f905fd1..927f8f9c 100644 --- a/translations/security.de.xlf +++ b/translations/security.de.xlf @@ -4,7 +4,7 @@ user.login_error.user_disabled - Ihr Account ist deaktiviert! Kontaktiere einen Administrator, wenn Sie denken, dass dies ein Fehler ist. + Ihr Account ist deaktiviert! Kontaktieren Sie einen Administrator, wenn Sie denken, dass dies ein Fehler ist. From 854823752285e91196247419db4b55bf71f6ad33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 5 Dec 2025 00:40:28 +0100 Subject: [PATCH 053/235] New translations messages.en.xlf (English) --- translations/messages.en.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 5643d455..5641f711 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -14288,7 +14288,7 @@ You can do this in the provider info list. settings.misc.ipn_suggest.regex.help - A PCRE-compatible regular expression every IPN has to fulfill. Leave empty to allow all everything as IPN. + A PCRE-compatible regular expression every IPN has to fulfill. Leave empty to allow everything as IPN. From fb805e2e0a5cc6b6db4b03e7132628489706574b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 5 Dec 2025 00:40:29 +0100 Subject: [PATCH 054/235] New translations validators.en.xlf (English) --- translations/validators.en.xlf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/translations/validators.en.xlf b/translations/validators.en.xlf index 30c50bec..c1d6f6b8 100644 --- a/translations/validators.en.xlf +++ b/translations/validators.en.xlf @@ -104,7 +104,7 @@ parameters.validator.min_lesser_typical - Value must be lesser or equal the the typical value ({{ compared_value }}). + Value must be less than or equal to the typical value ({{ compared_value }}). @@ -124,7 +124,7 @@ parameters.validator.min_lesser_max - Value must be lesser than the maximum value ({{ compared_value }}). + Value must be less than the maximum value ({{ compared_value }}). @@ -144,7 +144,7 @@ parameters.validator.max_greater_typical - Value must be greater or equal than the typical value ({{ compared_value }}). + Value must be greater than or equal to the typical value ({{ compared_value }}). @@ -154,7 +154,7 @@ validator.user.username_already_used - A user with this name is already exisiting + A user with this name already exists From d244400f4f58d4d871c70b57ddb89e7472f06c5b Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Sat, 6 Dec 2025 22:24:14 +0100 Subject: [PATCH 055/235] Add missing plural label translations to 12 language files (#1126) * Initial plan * Add missing plural label translations to 12 language files Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> --- translations/messages.cs.xlf | 84 +++++++++++++++++++++++++++++++++ translations/messages.da.xlf | 84 +++++++++++++++++++++++++++++++++ translations/messages.el.xlf | 12 +++++ translations/messages.es.xlf | 84 +++++++++++++++++++++++++++++++++ translations/messages.fr.xlf | 72 +++++++++++++++++++++++++++++ translations/messages.hu.xlf | 90 ++++++++++++++++++++++++++++++++++++ translations/messages.it.xlf | 84 +++++++++++++++++++++++++++++++++ translations/messages.ja.xlf | 72 +++++++++++++++++++++++++++++ translations/messages.nl.xlf | 6 +++ translations/messages.pl.xlf | 84 +++++++++++++++++++++++++++++++++ translations/messages.ru.xlf | 84 +++++++++++++++++++++++++++++++++ translations/messages.zh.xlf | 84 +++++++++++++++++++++++++++++++++ 12 files changed, 840 insertions(+) diff --git a/translations/messages.cs.xlf b/translations/messages.cs.xlf index cd572dae..20fdb442 100644 --- a/translations/messages.cs.xlf +++ b/translations/messages.cs.xlf @@ -13659,5 +13659,89 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz Minimální šířka náhledu (px) + + + attachment_type.labelp + Typy příloh + + + + + currency.labelp + Měny + + + + + group.labelp + Skupiny + + + + + label_profile.labelp + Profily štítků + + + + + measurement_unit.labelp + Měrné jednotky + + + + + orderdetail.labelp + Detaily objednávek + + + + + parameter.labelp + Parametry + + + + + part.labelp + Díly + + + + + part_association.labelp + Spojení dílů + + + + + part_custom_state.labelp + Vlastní stavy součástí + + + + + part_lot.labelp + Inventáře + + + + + pricedetail.labelp + Detaily cen + + + + + project_bom_entry.labelp + Položky BOM + + + + + user.labelp + Uživatelé + + diff --git a/translations/messages.da.xlf b/translations/messages.da.xlf index 530d91aa..9f15310d 100644 --- a/translations/messages.da.xlf +++ b/translations/messages.da.xlf @@ -12328,5 +12328,89 @@ Bemærk venligst, at du ikke kan kopiere fra deaktiveret bruger. Hvis du prøver Du forsøgte at fjerne/tilføje en mængde sat til nul! Der blev ikke foretaget nogen handling. + + + attachment_type.labelp + Bilagstyper + + + + + currency.labelp + Valutaer + + + + + group.labelp + Grupper + + + + + label_profile.labelp + Labelprofiler + + + + + measurement_unit.labelp + Måleenheder + + + + + orderdetail.labelp + Bestillingsoplysninger + + + + + parameter.labelp + Parametre + + + + + part.labelp + Komponenter + + + + + part_association.labelp + Komponentforbindelser + + + + + part_custom_state.labelp + Brugerdefinerede deltilstande + + + + + part_lot.labelp + Komponentbeholdninger + + + + + pricedetail.labelp + Prisinformationer + + + + + project_bom_entry.labelp + BOM-registreringer + + + + + user.labelp + Brugere + + diff --git a/translations/messages.el.xlf b/translations/messages.el.xlf index 3618fa3d..6ab0a13b 100644 --- a/translations/messages.el.xlf +++ b/translations/messages.el.xlf @@ -1667,5 +1667,17 @@ Δημιουργήστε πρώτα ένα εξάρτημα και αντιστοιχίστε το σε μια κατηγορία: με τις υπάρχουσες κατηγορίες και τα δικά τους προθέματα IPN, η ονομασία IPN για το εξάρτημα μπορεί να προταθεί αυτόματα
    + + + part_custom_state.labelp + Προσαρμοσμένες καταστάσεις μερών + + + + + manufacturer.labelp + Κατασκευαστές + + diff --git a/translations/messages.es.xlf b/translations/messages.es.xlf index 57ac5c85..541102b1 100644 --- a/translations/messages.es.xlf +++ b/translations/messages.es.xlf @@ -12500,5 +12500,89 @@ Por favor ten en cuenta que no puedes personificar a un usuario deshabilitado. S Este componente contiene más de un stock. Cambie la ubicación manualmente para seleccionar el stock deseado.
    + + + attachment_type.labelp + Tipos de adjuntos + + + + + currency.labelp + Divisas + + + + + group.labelp + Grupos + + + + + label_profile.labelp + Perfiles de etiquetas + + + + + measurement_unit.labelp + Unidades de medida + + + + + orderdetail.labelp + Informaciones del pedido + + + + + parameter.labelp + Parámetros + + + + + part.labelp + Componentes + + + + + part_association.labelp + Asociaciones de componentes + + + + + part_custom_state.labelp + Estados personalizados de las piezas + + + + + part_lot.labelp + Lotes del componente + + + + + pricedetail.labelp + Informaciones del precio + + + + + project_bom_entry.labelp + Entradas BOM + + + + + user.labelp + Usuarios + + diff --git a/translations/messages.fr.xlf b/translations/messages.fr.xlf index 8ed971b8..7bce333b 100644 --- a/translations/messages.fr.xlf +++ b/translations/messages.fr.xlf @@ -9229,5 +9229,77 @@ exemple de ville Un préfixe suggéré lors de la saisie de l'IPN d'une pièce.
    + + + attachment_type.labelp + Types de fichiers joints + + + + + currency.labelp + Devises + + + + + group.labelp + Groupes + + + + + label_profile.labelp + Profils d'étiquettes + + + + + measurement_unit.labelp + Unités de mesure + + + + + orderdetail.labelp + Informations de commandes + + + + + parameter.labelp + Caractéristiques + + + + + part.labelp + Composants + + + + + part_custom_state.labelp + États personnalisés de la pièce + + + + + part_lot.labelp + Lots de composants + + + + + pricedetail.labelp + Informations sur les prix + + + + + user.labelp + Utilisateurs + + diff --git a/translations/messages.hu.xlf b/translations/messages.hu.xlf index f189d8ec..ee7832b0 100644 --- a/translations/messages.hu.xlf +++ b/translations/messages.hu.xlf @@ -14207,5 +14207,95 @@ settings.system.localization.language_menu_entries.description
    + + + attachment_type.labelp + Melléklet típusok + + + + + currency.labelp + Pénznemek + + + + + group.labelp + Csoportok + + + + + label_profile.labelp + Címkeprofilok + + + + + measurement_unit.labelp + Mértékegységek + + + + + orderdetail.labelp + Rendelési részletek + + + + + parameter.labelp + Paraméterek + + + + + part.labelp + Alkatrészek + + + + + part_association.labelp + Alkatrész társítások + + + + + part_lot.labelp + Alkatrész tételek + + + + + pricedetail.labelp + Ár részletek + + + + + project_bom_entry.labelp + BOM bejegyzések + + + + + user.labelp + Felhasználók + + + + + bulk_info_provider_import_job.labelp + Tömeges információszolgáltató importálások + + + + + bulk_info_provider_import_job_part.labelp + Tömeges importálási feladat alkatrészek + + diff --git a/translations/messages.it.xlf b/translations/messages.it.xlf index 34540da1..f56e1bc9 100644 --- a/translations/messages.it.xlf +++ b/translations/messages.it.xlf @@ -12502,5 +12502,89 @@ Notare che non è possibile impersonare un utente disattivato. Quando si prova a Questo componente contiene più di uno stock. Cambia manualmente la posizione per selezionare quale stock scegliere.
    + + + attachment_type.labelp + Tipi di allegati + + + + + currency.labelp + Valute + + + + + group.labelp + Gruppi + + + + + label_profile.labelp + Profili di etichette + + + + + measurement_unit.labelp + Unità di misura + + + + + orderdetail.labelp + Dettagli dell'ordine + + + + + parameter.labelp + Parametri + + + + + part.labelp + Componenti + + + + + part_association.labelp + Associazioni di componenti + + + + + part_custom_state.labelp + Stati personalizzati della parte + + + + + part_lot.labelp + Lotti di componenti + + + + + pricedetail.labelp + Informazioni sui prezzi + + + + + project_bom_entry.labelp + Voci della BOM + + + + + user.labelp + Utenti + + diff --git a/translations/messages.ja.xlf b/translations/messages.ja.xlf index 668c51c1..4559d175 100644 --- a/translations/messages.ja.xlf +++ b/translations/messages.ja.xlf @@ -8966,5 +8966,77 @@ Exampletown 部品のIPN入力時に提案される接頭辞。
    + + + attachment_type.labelp + 添付ファイルの種類 + + + + + currency.labelp + 通貨 + + + + + group.labelp + グループ + + + + + label_profile.labelp + ラベルプロファイル + + + + + measurement_unit.labelp + 単位 + + + + + orderdetail.labelp + 注文詳細 + + + + + parameter.labelp + パラメーター + + + + + part.labelp + 部品 + + + + + part_custom_state.labelp + 部品のカスタム状態 + + + + + part_lot.labelp + 部品ロット + + + + + pricedetail.labelp + 価格詳細 + + + + + user.labelp + ユーザー + + diff --git a/translations/messages.nl.xlf b/translations/messages.nl.xlf index 1c063187..8075a5b3 100644 --- a/translations/messages.nl.xlf +++ b/translations/messages.nl.xlf @@ -856,5 +856,11 @@ Maak eerst een component en wijs het toe aan een categorie: met de bestaande categorieën en hun eigen IPN-prefixen kan de IPN voor het component automatisch worden voorgesteld
    + + + part_custom_state.labelp + Aangepaste staten van onderdelen + + diff --git a/translations/messages.pl.xlf b/translations/messages.pl.xlf index 0a9353fb..85554aaa 100644 --- a/translations/messages.pl.xlf +++ b/translations/messages.pl.xlf @@ -12355,5 +12355,89 @@ Należy pamiętać, że nie możesz udawać nieaktywnych użytkowników. Jeśli Wygenerowany kod
    + + + attachment_type.labelp + Typy załączników + + + + + currency.labelp + Waluty + + + + + group.labelp + Grupy + + + + + label_profile.labelp + Profile etykiet + + + + + measurement_unit.labelp + Jednostki pomiarowe + + + + + orderdetail.labelp + Szczegóły zamówień + + + + + parameter.labelp + Parametry + + + + + part.labelp + Komponenty + + + + + part_association.labelp + Powiązania części + + + + + part_custom_state.labelp + Własne stany części + + + + + part_lot.labelp + Spisy komponentów + + + + + pricedetail.labelp + Szczegóły cen + + + + + project_bom_entry.labelp + Wpisy BOM + + + + + user.labelp + Użytkownicy + + diff --git a/translations/messages.ru.xlf b/translations/messages.ru.xlf index 0fbf7a42..61a950c5 100644 --- a/translations/messages.ru.xlf +++ b/translations/messages.ru.xlf @@ -12455,5 +12455,89 @@ Профиль сохранен!
    + + + attachment_type.labelp + Типы вложений + + + + + currency.labelp + Валюты + + + + + group.labelp + Группы + + + + + label_profile.labelp + Профили этикеток + + + + + measurement_unit.labelp + Единицы измерения + + + + + orderdetail.labelp + Детали заказов + + + + + parameter.labelp + Параметры + + + + + part.labelp + Компоненты + + + + + part_association.labelp + Связи компонентов + + + + + part_custom_state.labelp + Пользовательские состояния деталей + + + + + part_lot.labelp + Лоты компонентов + + + + + pricedetail.labelp + Детали цен + + + + + project_bom_entry.labelp + BOM записи + + + + + user.labelp + Пользователи + + diff --git a/translations/messages.zh.xlf b/translations/messages.zh.xlf index ee912800..61232dfe 100644 --- a/translations/messages.zh.xlf +++ b/translations/messages.zh.xlf @@ -12340,5 +12340,89 @@ Element 3 成功创建 %COUNT% 个元素。
    + + + attachment_type.labelp + 附件类型 + + + + + currency.labelp + 货币 + + + + + group.labelp + + + + + + label_profile.labelp + 标签配置 + + + + + measurement_unit.labelp + 计量单位 + + + + + orderdetail.labelp + 订单详情 + + + + + parameter.labelp + 参数 + + + + + part.labelp + 部件 + + + + + part_association.labelp + 部件关联 + + + + + part_custom_state.labelp + 部件自定义状态 + + + + + part_lot.labelp + 部件批次 + + + + + pricedetail.labelp + 价格详情 + + + + + project_bom_entry.labelp + BOM条目 + + + + + user.labelp + 用户 + + From 02b1f7aa164a33ff569d001e7d24848193b5ecf7 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Sat, 6 Dec 2025 22:40:45 +0100 Subject: [PATCH 056/235] Improve documentation clarity and fix outdated information (#1129) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Initial plan * Improve documentation clarity, fix typos, and update outdated information Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Replace LCSC with Mouser in cloud providers list per d-buchmann's review Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Remove outdated Mouser API issue notice Removed outdated information about the Mouser API's current issues with datasheets and part specifications. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> Co-authored-by: Jan Böhmer --- CONTRIBUTING.md | 44 +++++++++++------------ README.md | 2 +- docs/api/intro.md | 4 +-- docs/concepts.md | 14 ++++---- docs/configuration.md | 24 ++++++------- docs/index.md | 24 ++++++------- docs/installation/index.md | 2 +- docs/installation/installation_docker.md | 2 +- docs/troubleshooting.md | 6 ++-- docs/upgrade/index.md | 2 ++ docs/usage/backup_restore.md | 6 ++-- docs/usage/console_commands.md | 14 ++++---- docs/usage/eda_integration.md | 12 +++---- docs/usage/getting_started.md | 18 +++++----- docs/usage/import_export.md | 8 ++--- docs/usage/information_provider_system.md | 6 +--- docs/usage/labels.md | 2 +- docs/usage/tips_tricks.md | 2 +- 18 files changed, 95 insertions(+), 97 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 86dce560..5994a115 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,7 +1,7 @@ # How to contribute -Thank you for consider to contribute to Part-DB! -Please read the text below, so your contributed content can be contributed easily to Part-DB. +Thank you for considering contributing to Part-DB! +Please read the text below, so your contributed content can be incorporated into Part-DB easily. You can contribute to Part-DB in various ways: * Report bugs and request new features via [issues](https://github.com/Part-DB/Part-DB-server/issues) @@ -18,38 +18,38 @@ Part-DB uses translation keys (e.g. part.info.title) that are sorted by their us was translated in other languages (this is possible via the "Other languages" dropdown in the translation editor). ## Project structure -Part-DB uses symfony's recommended [project structure](https://symfony.com/doc/current/best_practices.html). +Part-DB uses Symfony's recommended [project structure](https://symfony.com/doc/current/best_practices.html). Interesting folders are: * `public`: Everything in this directory will be publicly accessible via web. Use this folder to serve static images. -* `assets`: The frontend assets are saved here. You can find the javascript and CSS code here. -* `src`: Part-DB's PHP code is saved here. Note that the sub directories are structured by the classes purposes (so use `Controller` Controllers, `Entities` for Database models, etc.) -* `translations`: The translations used in Part-DB are saved here +* `assets`: The frontend assets are saved here. You can find the JavaScript and CSS code here. +* `src`: Part-DB's PHP code is saved here. Note that the subdirectories are structured by the classes' purposes (so use `Controller` for Controllers, `Entity` for Database models, etc.) +* `translations`: The translations used in Part-DB are saved here. * `templates`: The templates (HTML) that are used by Twig to render the different pages. Email templates are also saved here. -* `tests/`: Tests that can be run by PHPunit. +* `tests/`: Tests that can be run by PHPUnit. ## Development environment -For setting up an development you will need to install PHP, composer, a database server (MySQL or MariaDB) and yarn (which needs an nodejs environment). -* Copy `.env` to `.env.local` and change `APP_ENV` to `APP_ENV=dev`. That way you will get development tools (symfony profiler) and other features that +For setting up a development environment, you will need to install PHP, Composer, a database server (MySQL or MariaDB) and yarn (which needs a Node.js environment). +* Copy `.env` to `.env.local` and change `APP_ENV` to `APP_ENV=dev`. That way you will get development tools (Symfony profiler) and other features that will simplify development. -* Run `composer install` (without -o) to install PHP dependencies and `yarn install` to install frontend dependencies -* Run `yarn watch`. The program will run in the background and compile the frontend files whenever you change something in the CSS or TypeScript files -* For running Part-DB it is recommended to use [Symfony CLI](https://symfony.com/download). -That way you can run a correct configured webserver with `symfony serve` +* Run `composer install` (without -o) to install PHP dependencies and `yarn install` to install frontend dependencies. +* Run `yarn watch`. The program will run in the background and compile the frontend files whenever you change something in the CSS or TypeScript files. +* For running Part-DB, it is recommended to use [Symfony CLI](https://symfony.com/download). +That way you can run a correctly configured webserver with `symfony serve`. ## Coding style -Code should follow the [PSR12-Standard](https://www.php-fig.org/psr/psr-12/) and symfony's [coding standards](https://symfony.com/doc/current/contributing/code/standards.html). +Code should follow the [PSR-12 Standard](https://www.php-fig.org/psr/psr-12/) and Symfony's [coding standards](https://symfony.com/doc/current/contributing/code/standards.html). Part-DB uses [Easy Coding Standard](https://github.com/symplify/easy-coding-standard) to check and fix coding style violations: -* To check your code for valid code style run `vendor/bin/ecs check src/` -* To fix violations run `vendor/bin/ecs check src/` (please checks afterwards if the code is valid afterwards) +* To check your code for valid code style, run `vendor/bin/ecs check src/` +* To fix violations, run `vendor/bin/ecs check src/ --fix` (please check afterwards if the code is still valid) ## GitHub actions -Part-DB uses GitHub actions to run various tests and checks on the code: +Part-DB uses GitHub Actions to run various tests and checks on the code: * Yarn dependencies can compile -* PHPunit tests run successful -* Config files, translations and templates has valid syntax -* Doctrine schema valid +* PHPUnit tests run successfully +* Config files, translations, and templates have valid syntax +* Doctrine schema is valid * No known vulnerable dependencies are used -* Static analysis successful (phpstan with `--level=2`) +* Static analysis is successful (phpstan with `--level=2`) -Further the code coverage of the PHPunit tests is determined and uploaded to [CodeCov](https://codecov.io/gh/Part-DB/Part-DB-server). +Further, the code coverage of the PHPUnit tests is determined and uploaded to [CodeCov](https://codecov.io/gh/Part-DB/Part-DB-server). diff --git a/README.md b/README.md index de8e6291..993a1a9c 100644 --- a/README.md +++ b/README.md @@ -142,7 +142,7 @@ There you will find various methods to support development on a monthly or a one ## Built with -* [Symfony 5](https://symfony.com/): The main framework used for the serverside PHP +* [Symfony 6](https://symfony.com/): The main framework used for the serverside PHP * [Bootstrap 5](https://getbootstrap.com/) and [Bootswatch](https://bootswatch.com/): Used as website theme * [Fontawesome](https://fontawesome.com/): Used as icon set * [Hotwire Stimulus](https://stimulus.hotwired.dev/) and [Hotwire Turbo](https://turbo.hotwired.dev/): Frontend diff --git a/docs/api/intro.md b/docs/api/intro.md index 2ad261b5..283afbe6 100644 --- a/docs/api/intro.md +++ b/docs/api/intro.md @@ -46,7 +46,7 @@ See [Authentication chapter]({% link api/authentication.md %}) for more details. The API is split into different endpoints, which are reachable under the `/api/` path of your Part-DB instance ( 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`. +There are various endpoints for each entity type (like `parts`, `manufacturers`, 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 path and the HTTP method used, you can read, create, update or delete categories. @@ -56,7 +56,7 @@ For most entities, there are endpoints like this: * **POST**: `/api/categories/` - Create a new category * **GET**: `/api/categories/{id}` - Get a specific category by its ID * **DELETE**: `/api/categories/{id}` - Delete a specific category by its ID -* **UPDATE**: `/api/categories/{id}` - Update a specific category by its ID. Only the fields which are sent in the +* **PATCH**: `/api/categories/{id}` - Update a specific category by its ID. Only the fields which are sent in the request are updated, all other fields are left unchanged. Be aware that you have to set the [JSON Merge Patch](https://datatracker.ietf.org/doc/html/rfc7386) content type header (`Content-Type: application/merge-patch+json`) for this to work. diff --git a/docs/concepts.md b/docs/concepts.md index c8649be2..8a3551bd 100644 --- a/docs/concepts.md +++ b/docs/concepts.md @@ -23,14 +23,14 @@ each other so that it does not matter which one of your 1000 things of Part you 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 yourself. Each name needs to be unique and must exist in a single category. + name you thought of yourself. Each name needs to be unique and must exist in a single category only. * **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 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 beforehand) 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 +* **Min Instock**: *Not fully 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 explicitly defined preview picture, the preview picture of its @@ -48,9 +48,9 @@ A part entity has many fields, which can be used to describe it better. Most of 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 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. +* **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 cannot 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 @@ -99,12 +99,12 @@ possible category tree could look like this: ### Supplier -A Supplier is a vendor/distributor where you can buy/order parts. Price information of parts is 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 manufacturers/builds various parts (not necessarily sell them). If the +A manufacturer represents the company that manufactures/builds various parts (not necessarily sells them). If the manufacturer also sells the parts, you have to create a supplier for that. ### Storage location diff --git a/docs/configuration.md b/docs/configuration.md index 07f3c291..709c39b3 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -6,7 +6,7 @@ nav_order: 5 # Configuration -Part-DBs behavior can be configured to your needs. There are different kinds of configuration options: Options, which are +Part-DB's behavior can be configured to your needs. There are different kinds of configuration options: Options that 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. @@ -40,8 +40,8 @@ The following configuration options can only be changed by the server administra 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 the full list of possible env variables. -Environment variables allow to overwrite settings in the web interface. This is useful, if you want to enforce certain -settings to be unchangable by users, or if you want to configure settings in a central place in a deployed environment. +Environment variables allow you to overwrite settings in the web interface. This is useful if you want to enforce certain +settings to be unchangeable by users, or if you want to configure settings in a central place in a deployed environment. On the settings page, you can hover over a setting to see, which environment variable can be used to overwrite it, it is shown as tooltip. API keys or similar sensitive data which is overwritten by env variables, are redacted on the web interface, so that even administrators cannot see them (only the last 2 characters and the length). @@ -105,11 +105,11 @@ bundled with Part-DB. Set `DATABASE_MYSQL_SSL_VERIFY_CERT` if you want to accept * `part_delete`: Delete operation of an existing part * `part_create`: Creation of a new part * `part_stock_operation`: Stock operation on a part (therefore withdraw, add or move stock) - * `datastructure_edit`: Edit operation of an existing datastructure (e.g. category, manufacturer, ...) - * `datastructure_delete`: Delete operation of a existing datastructure (e.g. category, manufacturer, ...) - * `datastructure_create`: Creation of a new datastructure (e.g. category, manufacturer, ...) -* `CHECK_FOR_UPDATES` (default `1`): Set this to 0, if you do not want Part-DB to connect to GitHub to check for new - versions, or if your server can not connect to the internet. + * `datastructure_edit`: Edit operation of an existing data structure (e.g. category, manufacturer, ...) + * `datastructure_delete`: Delete operation of an existing data structure (e.g. category, manufacturer, ...) + * `datastructure_create`: Creation of a new data structure (e.g. category, manufacturer, ...) +* `CHECK_FOR_UPDATES` (default `1`): Set this to 0 if you do not want Part-DB to connect to GitHub to check for new + versions, or if your server cannot connect to the internet. * `APP_SECRET` (env only): This variable is a configuration parameter used for various security-related purposes, particularly for securing and protecting various aspects of your application. It's a secret key that is used for cryptographic operations and security measures (session management, CSRF protection, etc..). Therefore this @@ -262,10 +262,10 @@ markdown (and even some subset of HTML) syntax to format the text. ## parameters.yaml -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 be completely removed in future versions of Part-DB. +You can also configure some options via the `config/parameters.yaml` file. This should normally not be needed, +and you should know what you are doing when you change something here. You should expect that you will have to do some +manual merges 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 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 0894cde5..c2128946 100644 --- a/docs/index.md +++ b/docs/index.md @@ -27,31 +27,31 @@ It is installed on a web server and so can be accessed with any browser without * 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)) -* 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. +* 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 built-in barcode scanner +* User system with groups and detailed (fine-grained) 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 * 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. +* Responsive design: You can use Part-DB on your PC, your tablet, and your smartphone using the same interface. * MySQL, SQLite and PostgreSQL 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) * 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, Mouser, 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 - KiCad and see available parts from Part-DB directly inside KiCad. +* [Integration with KiCad]({%link usage/eda_integration.md %}): 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, +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 should have (controlled) access to the shared inventory. Part-DB is also used by small companies and universities for managing their inventory. @@ -67,11 +67,11 @@ See [LICENSE](https://github.com/Part-DB/Part-DB-symfony/blob/master/LICENSE) fo ## 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 basis. ## Built with -* [Symfony 5](https://symfony.com/): The main framework used for the serverside PHP +* [Symfony 6](https://symfony.com/): The main framework used for the serverside PHP * [Bootstrap 5](https://getbootstrap.com/) and [Bootswatch](https://bootswatch.com/): Used as website theme * [Fontawesome](https://fontawesome.com/): Used as icon set * [Hotwire Stimulus](https://stimulus.hotwired.dev/) and [Hotwire Turbo](https://turbo.hotwired.dev/): Frontend diff --git a/docs/installation/index.md b/docs/installation/index.md index 217f702a..aa12e582 100644 --- a/docs/installation/index.md +++ b/docs/installation/index.md @@ -8,4 +8,4 @@ has_children: true # Installation Below you can find some guides to install Part-DB. -For the hobbyists without much experience, we recommend the docker installation or direct installation on debian. \ No newline at end of file +For hobbyists without much experience, we recommend the Docker installation or direct installation on Debian. \ No newline at end of file diff --git a/docs/installation/installation_docker.md b/docs/installation/installation_docker.md index 2313cf7f..347c2451 100644 --- a/docs/installation/installation_docker.md +++ b/docs/installation/installation_docker.md @@ -136,7 +136,7 @@ services: # In docker env logs will be redirected to stderr - APP_ENV=docker - # Uncomment this, if you want to use the automatic database migration feature. With this you have you do not have to + # Uncomment this, if you want to use the automatic database migration feature. With this you do not have to # run the doctrine:migrations:migrate commands on installation or upgrade. A database backup is written to the uploads/ # folder (under .automigration-backup), so you can restore it, if the migration fails. # This feature is currently experimental, so use it at your own risk! diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index b848ced5..74f9875e 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -28,9 +28,9 @@ php bin/console cache:clear 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). +If this does not help, please [open an issue on GitHub](https://github.com/Part-DB/Part-DB-server). -## Search for the user and reset the password: +## Search for a 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 @@ -52,4 +52,4 @@ Please include the error logs in your issue on GitHub, if you open an issue. ## Report Issue -If an error occurs, or you found a bug, please [open an issue on GitHub](https://github.com/Part-DB/Part-DB-symfony). +If an error occurs, or you found a bug, please [open an issue on GitHub](https://github.com/Part-DB/Part-DB-server). diff --git a/docs/upgrade/index.md b/docs/upgrade/index.md index bbe4378d..4462f0dd 100644 --- a/docs/upgrade/index.md +++ b/docs/upgrade/index.md @@ -5,5 +5,7 @@ nav_order: 7 has_children: true --- +# Upgrade + This section provides information on how to upgrade Part-DB to the latest version. This is intended for major release upgrades, where requirements or things change significantly. diff --git a/docs/usage/backup_restore.md b/docs/usage/backup_restore.md index 6a9c6db5..c4444d24 100644 --- a/docs/usage/backup_restore.md +++ b/docs/usage/backup_restore.md @@ -6,7 +6,7 @@ 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 +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. @@ -27,7 +27,7 @@ for more info about these options. ## Backup (manual) -3 parts have to be backed up: The configuration files, which contain the instance-specific options, the +Three parts have to be backed up: 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. @@ -44,7 +44,7 @@ You have to recursively copy the `uploads/` folder and the `public/media` folder #### SQLite -If you are using sqlite, it is sufficient to just copy your `app.db` from your database location (normally `var/app.db`) +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. #### MySQL / MariaDB diff --git a/docs/usage/console_commands.md b/docs/usage/console_commands.md index 173f7b78..2ca35ec4 100644 --- a/docs/usage/console_commands.md +++ b/docs/usage/console_commands.md @@ -8,7 +8,7 @@ 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 web server user (so usually the webserver user), so you may have to use `sudo` or `su` to execute the commands: ```bash sudo -u www-data php bin/console [command] @@ -17,8 +17,8 @@ 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 +If you are running Part-DB in a Docker container, you must either execute the commands from a shell inside the container, +or use the `docker exec` command to execute the command directly inside the container. For example, if your Docker container is named `partdb`, you can execute the command `php bin/console cache:clear` with the following command: ```bash @@ -61,7 +61,7 @@ docker exec --user=www-data partdb php bin/console cache:clear * `partdb:attachments:clean-unused`: Remove all attachments which are not used by any database entry (e.g. orphaned attachments) * `partdb:cache:clear`: Clears all caches, so the next page load will be slower, but the cache will be rebuilt. This can - maybe fix some issues, when the cache were corrupted. This command is also needed after changing things in + maybe fix some issues when the cache was corrupted. This command is also needed after changing things in the `parameters.yaml` file or upgrading Part-DB. * `partdb:migrations:import-partkeepr`: Imports a mysqldump XML dump of a PartKeepr database into Part-DB. This is only needed for users, which want to migrate from PartKeepr to Part-DB. *All existing data in the Part-DB database is @@ -76,6 +76,6 @@ The value of the environment variable is copied to the settings database, so the ## Attachment commands -* `php bin/console partdb:attachments:download`: Download all attachments, which are not already downloaded, to the - local filesystem. This is useful to create local backups of the attachments, no matter what happens on the remote and - also makes pictures thumbnails available for the frontend for them +* `php bin/console partdb:attachments:download`: Download all attachments that are not already downloaded to the + local filesystem. This is useful to create local backups of the attachments, no matter what happens on the remote, and + also makes picture thumbnails available for the frontend for them. diff --git a/docs/usage/eda_integration.md b/docs/usage/eda_integration.md index 0d765bd1..f8988763 100644 --- a/docs/usage/eda_integration.md +++ b/docs/usage/eda_integration.md @@ -17,14 +17,14 @@ This also allows to configure available and usable parts and their properties in ## KiCad Setup {: .important } -> 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 uses the HTTP library feature of KiCad, which was experimental in earlier versions. If you want to use this feature, you need to install KiCad 8 or newer. -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 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. +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 permission to access the Part-DB API and create API tokens. Every user can have their own account, or you set up a shared read-only account. 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 a read-only scope is enough. +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 the 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: ``` @@ -54,7 +54,7 @@ Part-DB doesn't save any concrete footprints or symbols for the part. Instead, P 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 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. +For example, to configure the values for a BC547 transistor you would put `Transistor_BJT:BC547` in the part's KiCad symbol field 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. @@ -65,7 +65,7 @@ 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 visible 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 that would change the visible categories in KiCad, you have to reload Eeschema to see the changes.* ### Category depth in KiCad diff --git a/docs/usage/getting_started.md b/docs/usage/getting_started.md index 8534a5e9..8772130c 100644 --- a/docs/usage/getting_started.md +++ b/docs/usage/getting_started.md @@ -6,7 +6,7 @@ nav_order: 4 # Getting started -After Part-DB you should begin with customizing the settings and setting up the basic structures. +After installing Part-DB, you should begin with customizing the settings and setting up the basic structures. Before starting, it's useful to read a bit about the [concepts of Part-DB]({% link concepts.md %}). 1. TOC @@ -14,8 +14,8 @@ Before starting, it's useful to read a bit about the [concepts of Part-DB]({% li ## Customize system settings -Before starting creating datastructures, you should check the system settings to ensure that they fit your needs. -After login as an administrator, you can find the settings in the sidebar under `Tools -> System -> Settings`. +Before starting creating data structures, you should check the system settings to ensure that they fit your needs. +After logging in as an administrator, you can find the settings in the sidebar under `Tools -> System -> Settings`. ![image]({% link assets/getting_started/system_settings.png %}) Here you can change various settings, like the name of your Part-DB instance (which is shown in the title bar of the @@ -35,9 +35,9 @@ 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 +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) +can even be enforced for all members of a user group) 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 @@ -64,7 +64,7 @@ $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`. 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 +For each user who should use Part-DB, you should set up their own account so that tracking of what each user did works properly. ![image]({% link assets/getting_started/user_admin.png %}) @@ -207,7 +207,7 @@ You have to enter at least a name for the part and choose a category for it, the However, it is recommended to fill out as much information as possible, as this will make it easier to find the part later. -You can choose from your created datastructures to add manufacturer information, supplier information, etc. to the part. -You can also create new datastructures on the fly, if you want to add additional information to the part, by typing the -name of the new datastructure in the field and select the "New ..." option in the dropdown menu. See [tips]({% link +You can choose from your created data structures to add manufacturer information, supplier information, etc. to the part. +You can also create new data structures on the fly if you want to add additional information to the part, by typing the +name of the new data structure in the field and selecting the "New ..." option in the dropdown menu. See [tips]({% link usage/tips_tricks.md %}) for more information. diff --git a/docs/usage/import_export.md b/docs/usage/import_export.md index 8c938732..f4d8d91c 100644 --- a/docs/usage/import_export.md +++ b/docs/usage/import_export.md @@ -20,7 +20,7 @@ Part-DB. Data can also be exported from Part-DB into various formats. > individually in the permissions settings. If you want to import data from PartKeepr you might want to look into the [PartKeepr migration guide]({% link -upgrade/upgrade_legacy.md %}). +partkeepr_migration.md %}). ### Import parts @@ -47,9 +47,9 @@ You can upload the file that should be imported here and choose various options 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 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 structure is found, the imported parts field will be empty. +* **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 exist. If this is not selected, only + existing data structures will be used, and if no matching data structure 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 diff --git a/docs/usage/information_provider_system.md b/docs/usage/information_provider_system.md index c3873c05..c6d4c83f 100644 --- a/docs/usage/information_provider_system.md +++ b/docs/usage/information_provider_system.md @@ -198,10 +198,6 @@ 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 info. - Following env configuration options are available: * `PROVIDER_MOUSER_KEY`: The API key you got from Mouser (mandatory) @@ -217,7 +213,7 @@ Following env configuration options are available: 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.** +**Please note that the use of this internal API is not intended or endorsed by LCSC 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: diff --git a/docs/usage/labels.md b/docs/usage/labels.md index d46d944c..4c3f8b32 100644 --- a/docs/usage/labels.md +++ b/docs/usage/labels.md @@ -9,7 +9,7 @@ parent: Usage Part-DB supports 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 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 for many parts. The content of the labels is defined by the template's content field. You can use the WYSIWYG editor to create and style diff --git a/docs/usage/tips_tricks.md b/docs/usage/tips_tricks.md index 139cbf59..cab05620 100644 --- a/docs/usage/tips_tricks.md +++ b/docs/usage/tips_tricks.md @@ -65,7 +65,7 @@ $$E=mc^2$$ ## Update currency exchange rates automatically Part-DB can update the currency exchange rates of all defined currencies programmatically -by calling the `php bin/console partdb:currencies:update-exchange-rates`. +by calling `php bin/console partdb:currencies:update-exchange-rates`. If you call this command regularly (e.g. with a cronjob), you can keep the exchange rates up-to-date. From 9dc17ad9d03e080e5bd24886bbb52b1abd9c37f8 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Sat, 6 Dec 2025 22:55:02 +0100 Subject: [PATCH 057/235] Remove 25 unused/obsolete translation keys (#1131) * Initial plan * Remove 25 unused/obsolete translation keys from all message files Removed keys: - admin.comment - api_tokens.added_date - attachment.external_file - attachment.table.filename - datatable.datatable.lengthMenu - delete.caption - edit.caption_short - part.add.caption - part.add.comment - part.description.placeholder - part.edited_flash.invalid - part.instock.placeholder - part.mininstock.placeholder - part.order.price_per - part.withdraw.btn - part.withdraw.caption - part.withdraw.comment: - project.caption - r_u2f_two_factor.name - search.deactivateBarcode - selectpicker.empty - supplier.caption - tfa_u2f.key_added_successful - tree.root_node.text - validator.part_lot.location_full.no_increasment (typo of fixed key) These keys have zero occurrences in the codebase and are safe to remove. Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> --- translations/messages.cs.xlf | 252 +------------------------ translations/messages.da.xlf | 252 +------------------------ translations/messages.de.xlf | 344 +++++----------------------------- translations/messages.el.xlf | 45 +---- translations/messages.en.xlf | 352 ++++++----------------------------- translations/messages.es.xlf | 252 +------------------------ translations/messages.fr.xlf | 229 +---------------------- translations/messages.hu.xlf | 252 +------------------------ translations/messages.it.xlf | 252 +------------------------ translations/messages.ja.xlf | 229 +---------------------- translations/messages.nl.xlf | 26 +-- translations/messages.pl.xlf | 256 +------------------------ translations/messages.ru.xlf | 252 +------------------------ translations/messages.zh.xlf | 252 +------------------------ 14 files changed, 126 insertions(+), 3119 deletions(-) diff --git a/translations/messages.cs.xlf b/translations/messages.cs.xlf index 20fdb442..26562830 100644 --- a/translations/messages.cs.xlf +++ b/translations/messages.cs.xlf @@ -1,4 +1,4 @@ - + @@ -147,17 +147,6 @@ Nová měna - - - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 - templates\AdminPages\DeviceAdmin.html.twig:4 - - - project.caption - Projekt - - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 @@ -589,17 +578,6 @@ Nové umístění - - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - templates\AdminPages\SupplierAdmin.html.twig:4 - - - supplier.caption - Dodavatelé - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 @@ -2431,26 +2409,6 @@ Související prvky budou přesunuty nahoru. Jednotková cena - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - - - edit.caption_short - Upravit - - - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - - - delete.caption - Smazat - - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 @@ -3063,16 +3021,6 @@ Související prvky budou přesunuty nahoru. Pro zajištění přístupu i v případě ztráty klíče doporučujeme zaregistrovat druhý klíč jako zálohu a uložit jej na bezpečném místě! - - - 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 - Zobrazený název klíče (např. Záloha) - - Part-DB1\templates\security\U2F\u2f_register.html.twig:19 @@ -4066,17 +4014,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn Dodavatel - - - Part-DB1\templates\_navbar_search.html.twig:57 - Part-DB1\templates\_navbar_search.html.twig:52 - templates\base.html.twig:75 - - - search.deactivateBarcode - Deaktivovat čárový kód - - Part-DB1\templates\_navbar_search.html.twig:61 @@ -4368,16 +4305,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn Uložené změny! - - - Part-DB1\src\Controller\PartController.php:186 - Part-DB1\src\Controller\PartController.php:186 - - - part.edited_flash.invalid - Chyba při ukládání: Zkontrolujte prosím své zadání! - - Part-DB1\src\Controller\PartController.php:216 @@ -4611,16 +4538,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn Nové záložní kódy byly úspěšně vygenerovány. - - - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - - - attachment.table.filename - Název souboru - - Part-DB1\src\DataTables\AttachmentDataTable.php:153 @@ -6408,16 +6325,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn Nový prvek - - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:34 - obsolete - - - attachment.external_file - Externí soubor - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 @@ -6688,16 +6595,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn Rodič nemůže být jedním ze svých potomků. - - - obsolete - obsolete - - - validator.part_lot.location_full.no_increasment - Místo je obsazeno. Množství nelze navýšit (nová hodnota musí být menší než {{ old_amount }}). - - obsolete @@ -7551,39 +7448,6 @@ Element 3 Zrušit změny - - - templates\Parts\show_part_info.html.twig:166 - obsolete - obsolete - - - part.withdraw.btn - Stáhnout - - - - - templates\Parts\show_part_info.html.twig:171 - obsolete - obsolete - - - part.withdraw.comment: - Komentář/účel - - - - - templates\Parts\show_part_info.html.twig:189 - obsolete - obsolete - - - part.add.caption - Přidání dílů - - templates\Parts\show_part_info.html.twig:194 @@ -7595,28 +7459,6 @@ Element 3 Přidat - - - templates\Parts\show_part_info.html.twig:199 - obsolete - obsolete - - - part.add.comment - Komentář/účel - - - - - templates\AdminPages\CompanyAdminBase.html.twig:15 - obsolete - obsolete - - - admin.comment - Poznámky - - src\Form\PartType.php:83 @@ -7628,69 +7470,6 @@ Element 3 Odkaz na výrobce - - - src\Form\PartType.php:66 - obsolete - obsolete - - - part.description.placeholder - např. NPN 45V 0,1A 0,5W - - - - - src\Form\PartType.php:69 - obsolete - obsolete - - - part.instock.placeholder - např. 10 - - - - - src\Form\PartType.php:72 - obsolete - obsolete - - - part.mininstock.placeholder - např. 5 - - - - - obsolete - obsolete - - - part.order.price_per - Cena za - - - - - obsolete - obsolete - - - part.withdraw.caption - Odebrání dílů - - - - - obsolete - obsolete - - - datatable.datatable.lengthMenu - _MENU_ - - obsolete @@ -8769,15 +8548,6 @@ Element 3 Zobrazit staré verze prvků (cestování v čase) - - - obsolete - - - tfa_u2f.key_added_successful - Bezpečnostní klíč byl úspěšně přidán. - - obsolete @@ -8976,12 +8746,6 @@ Element 3 Pokud je tato možnost povolena, musí každý přímý člen této skupiny nakonfigurovat alespoň jeden druhý faktor pro ověření. Doporučeno pro skupiny správců s velkým počtem oprávnění. - - - selectpicker.empty - Nic není vybráno - - selectpicker.nothing_selected @@ -9234,12 +8998,6 @@ Element 3 Vaše heslo je třeba změnit! Nastavte prosím nové heslo. - - - tree.root_node.text - Kořenový uzel - - part_list.action.select_null @@ -11738,12 +11496,6 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz Datum vypršení platnosti - - - api_tokens.added_date - Přidáno v - - api_tokens.last_time_used @@ -13744,4 +13496,4 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz - + \ No newline at end of file diff --git a/translations/messages.da.xlf b/translations/messages.da.xlf index 9f15310d..11fb5438 100644 --- a/translations/messages.da.xlf +++ b/translations/messages.da.xlf @@ -1,4 +1,4 @@ - + @@ -147,17 +147,6 @@ Ny valuta - - - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 - templates\AdminPages\DeviceAdmin.html.twig:4 - - - project.caption - Projekt - - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 @@ -589,17 +578,6 @@ Ny lagerlokation - - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - templates\AdminPages\SupplierAdmin.html.twig:4 - - - supplier.caption - Leverandører - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 @@ -2439,26 +2417,6 @@ Underelementer vil blive flyttet opad. Enhedspris - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - - - edit.caption_short - Ret - - - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - - - delete.caption - Slet - - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 @@ -3071,16 +3029,6 @@ Underelementer vil blive flyttet opad. For at sikre adgang, selvom nøglen går tabt, anbefales det at registrere en anden nøgle som backup og opbevare den et sikkert sted! - - - 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 - Vist nøglenavn (f.eks. backup) - - Part-DB1\templates\security\U2F\u2f_register.html.twig:19 @@ -4073,17 +4021,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Leverandør - - - Part-DB1\templates\_navbar_search.html.twig:57 - Part-DB1\templates\_navbar_search.html.twig:52 - templates\base.html.twig:75 - - - search.deactivateBarcode - Deakt. stregkode - - Part-DB1\templates\_navbar_search.html.twig:61 @@ -4375,16 +4312,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Ændringer gemt! - - - Part-DB1\src\Controller\PartController.php:186 - Part-DB1\src\Controller\PartController.php:186 - - - part.edited_flash.invalid - Fejl ved lagring: Tjek dine indtastninger! - - Part-DB1\src\Controller\PartController.php:216 @@ -4618,16 +4545,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Nye backupkoder blev oprettet. - - - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - - - attachment.table.filename - Filnavn - - Part-DB1\src\DataTables\AttachmentDataTable.php:153 @@ -6415,16 +6332,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Nyt element - - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:34 - obsolete - - - attachment.external_file - Ekstern fil - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 @@ -6695,16 +6602,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Et underordnet element kan ikke være det overordnede element! - - - obsolete - obsolete - - - validator.part_lot.location_full.no_increasment - Den anvendte lagerlokation er markeret som fuld, derfor kan beholdningen ikke øges. (Nyt lager maksimum {{ old_amount }}) - - obsolete @@ -7558,39 +7455,6 @@ Element 3 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 @@ -7602,28 +7466,6 @@ Element 3 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 @@ -7635,69 +7477,6 @@ Element 3 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 @@ -8786,15 +8565,6 @@ Element 3 Vis tidligere versioner (tidsrejser) - - - obsolete - - - tfa_u2f.key_added_successful - Sikkerhedsnøgle tilføjet - - obsolete @@ -9002,12 +8772,6 @@ Element 3 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 @@ -9260,12 +9024,6 @@ Element 3 Ændring af password påkrævet! Venligst vælg et nyt password. - - - tree.root_node.text - Rod - - part_list.action.select_null @@ -11770,12 +11528,6 @@ Bemærk venligst, at du ikke kan kopiere fra deaktiveret bruger. Hvis du prøver Udløbsdato - - - api_tokens.added_date - Oprettet den - - api_tokens.last_time_used @@ -12413,4 +12165,4 @@ Bemærk venligst, at du ikke kan kopiere fra deaktiveret bruger. Hvis du prøver - + \ No newline at end of file diff --git a/translations/messages.de.xlf b/translations/messages.de.xlf index d187d4c7..7a8bbd01 100644 --- a/translations/messages.de.xlf +++ b/translations/messages.de.xlf @@ -1,4 +1,4 @@ - + @@ -147,17 +147,6 @@ Neue Währung - - - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 - templates\AdminPages\DeviceAdmin.html.twig:4 - - - project.caption - Projekte - - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 @@ -242,7 +231,7 @@ part.info.timetravel_hint - Beachten Sie, dass dieses Feature experimentell ist und die angezeigten Infos daher nicht unbedingt korrekt sind.]]> + So sah das Bauteil vor %timestamp% aus. <i>Beachten Sie, dass dieses Feature experimentell ist und die angezeigten Infos daher nicht unbedingt korrekt sind.</i> @@ -589,17 +578,6 @@ Neuer Lagerort - - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - templates\AdminPages\SupplierAdmin.html.twig:4 - - - supplier.caption - Lieferanten - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 @@ -737,9 +715,9 @@ user.edit.tfa.disable_tfa_message - alle aktiven Zwei-Faktor-Authentifizierungsmethoden des Nutzers deaktivieren und die Backupcodes löschen!
    -Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müssen und neue Backupcodes ausdrucken müssen!

    -Führen sie dies nur durch, wenn Sie über die Identität des (um Hilfe suchenden) Benutzers absolut sicher sind, da ansonsten eine Kompromittierung des Accounts durch einen Angreifer erfolgen könnte!]]>
    + Dies wird <b>alle aktiven Zwei-Faktor-Authentifizierungsmethoden des Nutzers deaktivieren</b> und die <b>Backupcodes löschen</b>! <br> +Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müssen und neue Backupcodes ausdrucken müssen! <br><br> +<b>Führen sie dies nur durch, wenn Sie über die Identität des (um Hilfe suchenden) Benutzers absolut sicher sind, da ansonsten eine Kompromittierung des Accounts durch einen Angreifer erfolgen könnte!</b>
    @@ -1446,7 +1424,7 @@ Subelemente werden beim Löschen nach oben verschoben. homepage.github.text - GitHub Projektseite]]> + Quellcode, Downloads, Bugreports, ToDo-Liste usw. gibts auf der <a class="link-external" target="_blank" href="%href%">GitHub Projektseite</a> @@ -1468,7 +1446,7 @@ Subelemente werden beim Löschen nach oben verschoben. homepage.help.text - Wiki der GitHub Seite.]]> + Hilfe und Tipps finden sie im <a class="link-external" rel="noopener" target="_blank" href="%href%">Wiki</a> der GitHub Seite. @@ -1710,7 +1688,7 @@ Subelemente werden beim Löschen nach oben verschoben. email.pw_reset.fallback - %url% auf und geben Sie die folgenden Daten ein]]> + Wenn dies nicht funktioniert, rufen Sie <a href="%url%">%url%</a> auf und geben Sie die folgenden Daten ein @@ -1740,7 +1718,7 @@ Subelemente werden beim Löschen nach oben verschoben. email.pw_reset.valid_unit %date% - %date%]]> + Das Reset-Token ist gültig bis <i>%date%</i> @@ -2430,26 +2408,6 @@ Subelemente werden beim Löschen nach oben verschoben. Stückpreis - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - - - edit.caption_short - Bearbeiten - - - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - - - delete.caption - Löschen - - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 @@ -3062,16 +3020,6 @@ Subelemente werden beim Löschen nach oben verschoben. Um den Zugang auch bei Verlust des Schlüssels zu gewährleisten, ist es empfehlenswert einen zweiten Schlüssel als Backup zu registrieren und diesen an einem sicheren Ort zu lagern! - - - 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 - Anzeigename des Schlüssels (z.B. Backup) - - Part-DB1\templates\security\U2F\u2f_register.html.twig:19 @@ -3643,8 +3591,8 @@ Subelemente werden beim Löschen nach oben verschoben. tfa_google.disable.confirm_message - -Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nicht mehr so gut gegen Angreifer geschützt ist!]]> + Wenn Sie die Authenticator App deaktivieren, werden alle Backupcodes gelöscht, daher sie müssen sie evtl. neu ausdrucken.<br> +Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nicht mehr so gut gegen Angreifer geschützt ist! @@ -3664,7 +3612,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich tfa_google.step.download - Google Authenticator oder FreeOTP Authenticator)]]> + Laden Sie eine Authenticator App herunter (z.B. <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>) @@ -3906,8 +3854,8 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich tfa_trustedDevices.explanation - aller Computer zurücksetzen.]]> + Bei der Überprüfung des zweiten Faktors, kann der aktuelle Computer als vertrauenswürdig gekennzeichnet werden, daher werden keine Zwei-Faktor-Überprüfungen mehr an diesem Computer benötigt. +Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertrauenswürdig ist, können Sie hier den Status <i>aller </i>Computer zurücksetzen. @@ -4065,17 +4013,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Lieferant - - - Part-DB1\templates\_navbar_search.html.twig:57 - Part-DB1\templates\_navbar_search.html.twig:52 - templates\base.html.twig:75 - - - search.deactivateBarcode - Deakt. Barcode - - Part-DB1\templates\_navbar_search.html.twig:61 @@ -4367,16 +4304,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Änderungen gespeichert! - - - Part-DB1\src\Controller\PartController.php:186 - Part-DB1\src\Controller\PartController.php:186 - - - part.edited_flash.invalid - Fehler beim Speichern: Überprüfen Sie ihre Eingaben! - - Part-DB1\src\Controller\PartController.php:216 @@ -4610,16 +4537,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Neue Backupcodes erfolgreich erzeugt. - - - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - - - attachment.table.filename - Dateiname - - Part-DB1\src\DataTables\AttachmentDataTable.php:153 @@ -5384,7 +5301,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr label_options.lines_mode.help - Twig Dokumentation und dem Wiki.]]> + Wenn Sie hier Twig auswählen, wird das Contentfeld als Twig-Template interpretiert. Weitere Hilfe gibt es in der <a href="https://twig.symfony.com/doc/3.x/templates.html">Twig Dokumentation</a> und dem <a href="https://docs.part-db.de/usage/labels.html#twig-mode">Wiki</a>. @@ -6407,16 +6324,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Neues Element - - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:34 - obsolete - - - attachment.external_file - Externe Datei - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 @@ -6687,16 +6594,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Ein Kindelement kann nicht das übergeordnete Element sein! - - - obsolete - obsolete - - - validator.part_lot.location_full.no_increasment - Der verwendete Lagerort wurde als voll markiert, daher kann der Bestand nicht erhöht werden. (Neuer Bestand maximal {{ old_amount }}) - - obsolete @@ -7252,15 +7149,15 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr mass_creation.lines.placeholder - Element 1 Element 1.1 Element 1.1.1 Element 1.2 Element 2 Element 3 -Element 1 -> Element 1.1 -Element 1 -> Element 1.2]]> +Element 1 -> Element 1.1 +Element 1 -> Element 1.2 @@ -7553,39 +7450,6 @@ Element 1 -> Element 1.2]]> Änderungen verwerfen - - - templates\Parts\show_part_info.html.twig:166 - obsolete - obsolete - - - part.withdraw.btn - Entnehmen - - - - - templates\Parts\show_part_info.html.twig:171 - obsolete - obsolete - - - part.withdraw.comment: - Kommentar/Zweck - - - - - templates\Parts\show_part_info.html.twig:189 - obsolete - obsolete - - - part.add.caption - Bauteil hinzufügen - - templates\Parts\show_part_info.html.twig:194 @@ -7597,28 +7461,6 @@ Element 1 -> Element 1.2]]> Hinzufügen - - - templates\Parts\show_part_info.html.twig:199 - obsolete - obsolete - - - part.add.comment - Kommentar/Zweck - - - - - templates\AdminPages\CompanyAdminBase.html.twig:15 - obsolete - obsolete - - - admin.comment - Notizen - - src\Form\PartType.php:83 @@ -7630,69 +7472,6 @@ Element 1 -> Element 1.2]]> Herstellerlink - - - src\Form\PartType.php:66 - obsolete - obsolete - - - part.description.placeholder - z.B. NPN 45V 0,1A 0,5W - - - - - src\Form\PartType.php:69 - obsolete - obsolete - - - part.instock.placeholder - z.B. 12 - - - - - src\Form\PartType.php:72 - obsolete - obsolete - - - part.mininstock.placeholder - z.B. 10 - - - - - obsolete - obsolete - - - part.order.price_per - pro - - - - - obsolete - obsolete - - - part.withdraw.caption - Bauteile entnehmen - - - - - obsolete - obsolete - - - datatable.datatable.lengthMenu - _MENU_ - - obsolete @@ -8771,15 +8550,6 @@ Element 1 -> Element 1.2]]> Alte Versionsstände anzeigen (Zeitreisen) - - - obsolete - - - tfa_u2f.key_added_successful - Sicherheitsschlüssel erfolgreich hinzugefügt. - - obsolete @@ -8978,12 +8748,6 @@ Element 1 -> Element 1.2]]> Wenn diese Option aktiv ist, muss jedes direkte Mitglied dieser Gruppe, mindestens einen zweiten Faktor zur Authentifizierung einrichten. Empfohlen z.B. für administrative Gruppen mit weitreichenden Berechtigungen. - - - selectpicker.empty - Nichts ausgewählt - - selectpicker.nothing_selected @@ -9242,12 +9006,6 @@ Element 1 -> Element 1.2]]> Passwortänderung nötig! Bitte setze ein neues Passwort. - - - tree.root_node.text - Wurzel - - part_list.action.select_null @@ -9545,25 +9303,25 @@ Element 1 -> Element 1.2]]> filter.parameter_value_constraint.operator.< - + Typ. Wert < filter.parameter_value_constraint.operator.> - ]]> + Typ. Wert > filter.parameter_value_constraint.operator.<= - + Typ. Wert <= filter.parameter_value_constraint.operator.>= - =]]> + Typ. Wert >= @@ -9671,7 +9429,7 @@ Element 1 -> Element 1.2]]> parts_list.search.searching_for - %keyword%]]> + Suche Teile mit dem Suchbegriff <b>%keyword%</b> @@ -10331,13 +10089,13 @@ Element 1 -> Element 1.2]]> project.builds.number_of_builds_possible - %max_builds% Exemplare dieses Projektes zu bauen.]]> + Sie haben genug Bauteile auf Lager, um <b>%max_builds%</b> Exemplare dieses Projektes zu bauen. project.builds.check_project_status - "%project_status%". Sie sollten überprüfen, ob sie das Projekt mit diesem Status wirklich bauen wollen!]]> + Der aktuelle Projektstatus ist <b>"%project_status%"</b>. Sie sollten überprüfen, ob sie das Projekt mit diesem Status wirklich bauen wollen! @@ -10451,7 +10209,7 @@ Element 1 -> Element 1.2]]> entity.select.add_hint - um verschachtelte Strukturen anzulegen, z.B. "Element 1->Element 1.1"]]> + Nutzen Sie -> um verschachtelte Strukturen anzulegen, z.B. "Element 1->Element 1.1" @@ -10475,13 +10233,13 @@ Element 1 -> Element 1.2]]> homepage.first_steps.introduction - Dokumentation lesen oder anfangen, die folgenden Datenstrukturen anzulegen.]]> + Die Datenbank ist momentan noch leer. Sie möchten möglicherweise die <a href="%url%">Dokumentation</a> lesen oder anfangen, die folgenden Datenstrukturen anzulegen. homepage.first_steps.create_part - neues Bauteil erstellen.]]> + Oder Sie können direkt ein <a href="%url%">neues Bauteil erstellen</a>. @@ -10493,7 +10251,7 @@ Element 1 -> Element 1.2]]> homepage.forum.text - Diskussionsforum]]> + Für Fragen rund um Part-DB, nutze das <a class="link-external" rel="noopener" target="_blank" href="%href%">Diskussionsforum</a> @@ -11159,7 +10917,7 @@ Element 1 -> Element 1.2]]> parts.import.help_documentation - Dokumentation für weiter Informationen über das Dateiformat.]]> + Konsultieren Sie die <a href="%link%">Dokumentation</a> für weiter Informationen über das Dateiformat. @@ -11351,7 +11109,7 @@ Element 1 -> Element 1.2]]> part.filter.lessThanDesired - + Weniger vorhanden als gewünscht (Gesamtmenge < Mindestmenge) @@ -11818,12 +11576,6 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön Ablaufdatum - - - api_tokens.added_date - Erstellt am - - api_tokens.last_time_used @@ -12163,13 +11915,13 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön part.merge.confirm.title - %other% in %target% zusammenführen?]]> + Möchten Sie wirklich <b>%other%</b> in <b>%target%</b> zusammenführen? part.merge.confirm.message - %other% wird gelöscht, und das aktuelle Bauteil wird mit den angezeigten Daten gespeichert.]]> + <b>%other%</b> wird gelöscht, und das aktuelle Bauteil wird mit den angezeigten Daten gespeichert. @@ -12523,7 +12275,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.element14.apiKey.help - https://partner.element14.com/ für einen API-Schlüssel registrieren.]]> + Sie können sich unter <a href="https://partner.element14.com/">https://partner.element14.com/</a> für einen API-Schlüssel registrieren. @@ -12535,7 +12287,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.element14.storeId.help - hier.]]> + Die Domain des Shops, aus dem die Daten abgerufen werden sollen. Diese bestimmt die Sprache und Währung der Ergebnisse. Eine Liste der gültigen Domains finden Sie <a href="https://partner.element14.com/docs/Product_Search_API_REST__Description">hier</a>. @@ -12553,7 +12305,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.tme.token.help - https://developers.tme.eu/en/ erhalten.]]> + Sie können einen API-Token und einen geheimen Schlüssel unter <a href="https://developers.tme.eu/en/">https://developers.tme.eu/en/</a> erhalten. @@ -12601,7 +12353,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.mouser.apiKey.help - https://eu.mouser.com/api-hub/ für einen API-Schlüssel registrieren.]]> + Sie können sich unter <a href="https://eu.mouser.com/api-hub/">https://eu.mouser.com/api-hub/</a> für einen API-Schlüssel registrieren. @@ -12649,7 +12401,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.mouser.searchOptions.rohsAndInStock - + Sofort verfügbar & RoHS konform @@ -12679,7 +12431,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.system.attachments - + Anhänge & Dateien @@ -12703,7 +12455,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.system.attachments.allowDownloads.help - Achtung: Dies kann ein Sicherheitsrisiko darstellen, da Benutzer dadurch möglicherweise über die Part-DB auf Intranet-Ressourcen zugreifen können!]]> + Mit dieser Option können Benutzer externe Dateien in die Part-DB herunterladen, indem sie eine URL angeben. <b>Achtung: Dies kann ein Sicherheitsrisiko darstellen, da Benutzer dadurch möglicherweise über die Part-DB auf Intranet-Ressourcen zugreifen können!</b> @@ -12877,8 +12629,8 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.system.localization.base_currency_description - Bitte beachten Sie, dass die Währungen bei einer Änderung dieses Wertes nicht umgerechnet werden. Wenn Sie also die Basiswährung ändern, nachdem Sie bereits Preisinformationen hinzugefügt haben, führt dies zu falschen Preisen!]]> + Die Währung, in der Preisinformationen und Wechselkurse gespeichert werden. Diese Währung wird angenommen, wenn für eine Preisinformation keine Währung festgelegt ist. +<b>Bitte beachten Sie, dass die Währungen bei einer Änderung dieses Wertes nicht umgerechnet werden. Wenn Sie also die Basiswährung ändern, nachdem Sie bereits Preisinformationen hinzugefügt haben, führt dies zu falschen Preisen!</b> @@ -12908,7 +12660,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.misc.kicad_eda.category_depth.help - 0, um weitere Ebenen anzuzeigen. Setzen Sie den Wert auf -1, um alle Teile der Part-DB innerhalb einer einzigen Kategorie in KiCad anzuzeigen.]]> + Dieser Wert bestimmt die Tiefe des Kategoriebaums, der in KiCad sichtbar ist. 0 bedeutet, dass nur die Kategorien der obersten Ebene sichtbar sind. Setzen Sie den Wert auf > 0, um weitere Ebenen anzuzeigen. Setzen Sie den Wert auf -1, um alle Teile der Part-DB innerhalb einer einzigen Kategorie in KiCad anzuzeigen. @@ -12926,7 +12678,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.behavior.sidebar.items.help - + Die Menüs, die standardmäßig in der Seitenleiste angezeigt werden. Die Reihenfolge der Elemente kann per Drag & Drop geändert werden. @@ -12974,7 +12726,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.behavior.table.parts_default_columns.help - + Die Spalten, die standardmäßig in Bauteiltabellen angezeigt werden sollen. Die Reihenfolge der Elemente kann per Drag & Drop geändert werden. @@ -13028,7 +12780,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.oemsecrets.sortMode.M - + Vollständigkeit & Herstellername @@ -13688,7 +13440,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.behavior.homepage.items.help - + Die Elemente, die auf der Startseite angezeigt werden sollen. Die Reihenfolge kann per Drag & Drop geändert werden. @@ -14684,4 +14436,4 @@ Bitte beachten Sie, dass dieses System derzeit experimentell ist und die hier de
    -
    + \ No newline at end of file diff --git a/translations/messages.el.xlf b/translations/messages.el.xlf index 6ab0a13b..481f45cd 100644 --- a/translations/messages.el.xlf +++ b/translations/messages.el.xlf @@ -1,4 +1,4 @@ - + @@ -339,17 +339,6 @@ Χώροι αποθήκευσης - - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - templates\AdminPages\SupplierAdmin.html.twig:4 - - - supplier.caption - Προμηθευτές - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 @@ -1208,26 +1197,6 @@ Τιμή μονάδας - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - - - edit.caption_short - Επεξεργασία - - - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - - - delete.caption - Διαγραφή - - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 @@ -1521,16 +1490,6 @@ Συνηθισμένος - - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:34 - obsolete - - - attachment.external_file - Εξωτερικό αρχείο - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 @@ -1680,4 +1639,4 @@ - + \ No newline at end of file diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 917d2675..0a029070 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -1,4 +1,4 @@ - + @@ -137,17 +137,6 @@ New currency - - - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 - templates\AdminPages\DeviceAdmin.html.twig:4 - - - project.caption - Project - - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 @@ -232,7 +221,7 @@ 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> @@ -533,17 +522,6 @@ New storage location - - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - templates\AdminPages\SupplierAdmin.html.twig:4 - - - supplier.caption - Suppliers - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 @@ -671,10 +649,10 @@ 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>
    @@ -825,9 +803,9 @@ The user will have to set up all two-factor authentication methods again and pri entity.delete.message - -Sub elements will be moved upwards.]]> + This can not be undone! +<br> +Sub elements will be moved upwards. @@ -1381,7 +1359,7 @@ Sub elements will be moved upwards.]]> 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> @@ -1403,7 +1381,7 @@ Sub elements will be moved upwards.]]> 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> @@ -1645,7 +1623,7 @@ Sub elements will be moved upwards.]]> 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 @@ -1675,7 +1653,7 @@ Sub elements will be moved upwards.]]> email.pw_reset.valid_unit %date% - %date%.]]> + The reset token will be valid until <i>%date%</i>. @@ -2365,26 +2343,6 @@ Sub elements will be moved upwards.]]> Unit Price - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - - - edit.caption_short - Edit - - - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - - - delete.caption - Delete - - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 @@ -2997,16 +2955,6 @@ Sub elements will be moved upwards.]]> 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! - - - 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) - - Part-DB1\templates\security\U2F\u2f_register.html.twig:19 @@ -3578,8 +3526,8 @@ Sub elements will be moved upwards.]]> tfa_google.disable.confirm_message - -Also note that without two-factor authentication, your account is no longer 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 no longer as well protected against attackers! @@ -3599,7 +3547,7 @@ Also note that without two-factor authentication, your account is no longer as w 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>) @@ -3841,8 +3789,8 @@ Also note that without two-factor authentication, your account is no longer as w 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. @@ -4000,17 +3948,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Supplier - - - Part-DB1\templates\_navbar_search.html.twig:57 - Part-DB1\templates\_navbar_search.html.twig:52 - templates\base.html.twig:75 - - - search.deactivateBarcode - Deact. Barcode - - Part-DB1\templates\_navbar_search.html.twig:61 @@ -4302,16 +4239,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Saved changes! - - - 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! - - Part-DB1\src\Controller\PartController.php:216 @@ -4545,16 +4472,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can New backup codes successfully generated. - - - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - - - attachment.table.filename - File name - - Part-DB1\src\DataTables\AttachmentDataTable.php:153 @@ -5319,7 +5236,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can 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. @@ -6342,16 +6259,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can New Element - - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:34 - obsolete - - - attachment.external_file - External file - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 @@ -6622,16 +6529,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can The parent can not be one of the children of itself. - - - 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 }}) - - obsolete @@ -7187,15 +7084,15 @@ Exampletown mass_creation.lines.placeholder - Element 1 Element 1.1 Element 1.1.1 Element 1.2 Element 2 Element 3 -Element 1 -> Element 1.1 -Element 1 -> Element 1.2]]> +Element 1 -> Element 1.1 +Element 1 -> Element 1.2 @@ -7488,39 +7385,6 @@ Element 1 -> Element 1.2]]> Discard changes - - - templates\Parts\show_part_info.html.twig:166 - obsolete - obsolete - - - part.withdraw.btn - Withdraw - - - - - templates\Parts\show_part_info.html.twig:171 - obsolete - obsolete - - - part.withdraw.comment: - Comment/Purpose - - - - - templates\Parts\show_part_info.html.twig:189 - obsolete - obsolete - - - part.add.caption - Add parts - - templates\Parts\show_part_info.html.twig:194 @@ -7532,28 +7396,6 @@ Element 1 -> Element 1.2]]> Add - - - templates\Parts\show_part_info.html.twig:199 - obsolete - obsolete - - - part.add.comment - Comment/Purpose - - - - - templates\AdminPages\CompanyAdminBase.html.twig:15 - obsolete - obsolete - - - admin.comment - Notes - - src\Form\PartType.php:83 @@ -7565,69 +7407,6 @@ Element 1 -> Element 1.2]]> Manufacturer link - - - src\Form\PartType.php:66 - obsolete - obsolete - - - part.description.placeholder - e.g. NPN 45V 0,1A 0,5W - - - - - src\Form\PartType.php:69 - obsolete - obsolete - - - part.instock.placeholder - e.g. 10 - - - - - src\Form\PartType.php:72 - obsolete - obsolete - - - part.mininstock.placeholder - e.g. 5 - - - - - obsolete - obsolete - - - part.order.price_per - Price per - - - - - obsolete - obsolete - - - part.withdraw.caption - Withdraw parts - - - - - obsolete - obsolete - - - datatable.datatable.lengthMenu - _MENU_ - - obsolete @@ -8620,15 +8399,6 @@ Element 1 -> Element 1.2]]> Show old element versions (time travel) - - - obsolete - - - tfa_u2f.key_added_successful - Security key added successfully. - - obsolete @@ -8827,12 +8597,6 @@ Element 1 -> Element 1.2]]> 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 @@ -9091,12 +8855,6 @@ Element 1 -> Element 1.2]]> Your password needs to be changed! Please set a new password. - - - tree.root_node.text - Root node - - part_list.action.select_null @@ -9394,25 +9152,25 @@ Element 1 -> Element 1.2]]> 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 >= @@ -9520,7 +9278,7 @@ Element 1 -> Element 1.2]]> parts_list.search.searching_for - %keyword%]]> + Searching parts with keyword <b>%keyword%</b> @@ -10180,13 +9938,13 @@ Element 1 -> Element 1.2]]> 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! @@ -10300,7 +10058,7 @@ Element 1 -> Element 1.2]]> 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" @@ -10324,13 +10082,13 @@ Element 1 -> Element 1.2]]> 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>. @@ -10342,7 +10100,7 @@ Element 1 -> Element 1.2]]> homepage.forum.text - discussion forum]]> + For questions about Part-DB use the <a href="%href%" class="link-external" target="_blank">discussion forum</a> @@ -11008,7 +10766,7 @@ Element 1 -> Element 1.2]]> 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. @@ -11200,7 +10958,7 @@ Element 1 -> Element 1.2]]> part.filter.lessThanDesired - + In stock less than desired (total amount < min. amount) @@ -11667,12 +11425,6 @@ Please note, that you can not impersonate a disabled user. If you try you will g Expiration date - - - api_tokens.added_date - Added at - - api_tokens.last_time_used @@ -12012,13 +11764,13 @@ Please note, that you can not impersonate a disabled user. If you try you will g 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. @@ -12372,7 +12124,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.element14.apiKey.help - https://partner.element14.com/.]]> + You can register for an API key on <a href="https://partner.element14.com/">https://partner.element14.com/</a>. @@ -12384,7 +12136,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.element14.storeId.help - here for a list of valid domains.]]> + The store domain to retrieve the data from. This decides the language and currency of results. See <a href="https://partner.element14.com/docs/Product_Search_API_REST__Description">here</a> for a list of valid domains. @@ -12402,7 +12154,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.tme.token.help - https://developers.tme.eu/en/.]]> + You can get an API token and secret on <a href="https://developers.tme.eu/en/">https://developers.tme.eu/en/</a>. @@ -12450,7 +12202,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.mouser.apiKey.help - https://eu.mouser.com/api-hub/.]]> + You can register for an API key on <a href="https://eu.mouser.com/api-hub/">https://eu.mouser.com/api-hub/</a>. @@ -12528,7 +12280,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.system.attachments - + Attachments & Files @@ -12552,7 +12304,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.system.attachments.allowDownloads.help - Attention: This can be a security issue, as it might allow users to access intranet ressources via Part-DB!]]> + With this option users can download external files into Part-DB by providing an URL. <b>Attention: This can be a security issue, as it might allow users to access intranet ressources via Part-DB!</b> @@ -12726,8 +12478,8 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.system.localization.base_currency_description - Please note that the currencies are not converted, when changing this value. So changing the default currency after you already added price information, will result in wrong prices!]]> + The currency that is used to store price information and exchange rates in. This currency is assumed, when no currency is set for a price information. +<b>Please note that the currencies are not converted, when changing this value. So changing the default currency after you already added price information, will result in wrong prices!</b> @@ -12757,7 +12509,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.misc.kicad_eda.category_depth.help - 0 to show more levels. Set to -1, to show all parts of Part-DB inside a sigle cnategory in KiCad.]]> + This value determines the depth of the category tree, that is visible inside KiCad. 0 means that only the top level categories are visible. Set to a value > 0 to show more levels. Set to -1, to show all parts of Part-DB inside a sigle cnategory in KiCad. @@ -12775,7 +12527,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.behavior.sidebar.items.help - + The menus which appear at the sidebar by default. Order of items can be changed via drag & drop. @@ -12823,7 +12575,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.behavior.table.parts_default_columns.help - + The columns to show by default in part tables. Order of items can be changed via drag & drop. @@ -12877,7 +12629,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.oemsecrets.sortMode.M - + Completeness & Manufacturer name @@ -13537,7 +13289,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.behavior.homepage.items.help - + The items to show at the homepage. Order can be changed via drag & drop. @@ -14251,7 +14003,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.system.localization.language_menu_entries.description - + The languages to show in the language drop-down menu. Order can be changed via drag & drop. Leave empty to show all available languages. @@ -14533,4 +14285,4 @@ Please note that this system is currently experimental, and the synonyms defined
    -
    + \ No newline at end of file diff --git a/translations/messages.es.xlf b/translations/messages.es.xlf index 541102b1..fe96d9e8 100644 --- a/translations/messages.es.xlf +++ b/translations/messages.es.xlf @@ -1,4 +1,4 @@ - + @@ -147,17 +147,6 @@ Nueva divisa - - - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 - templates\AdminPages\DeviceAdmin.html.twig:4 - - - project.caption - Proyecto - - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 @@ -589,17 +578,6 @@ Nueva ubicación de almacén - - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - templates\AdminPages\SupplierAdmin.html.twig:4 - - - supplier.caption - Proveedores - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 @@ -2431,26 +2409,6 @@ Subelementos serán desplazados hacia arriba. Precio unitario - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - - - edit.caption_short - Editar - - - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - - - delete.caption - Eliminar - - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 @@ -3063,16 +3021,6 @@ Subelementos serán desplazados hacia arriba. Para garantizar el acceso incluso si has perdido la clave, ¡se recomienda registrar una segunda clave como copia de seguridad y guardarla en un lugar seguro! - - - 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 - Nombre de la clave vista (e.g. Backup) - - Part-DB1\templates\security\U2F\u2f_register.html.twig:19 @@ -4065,17 +4013,6 @@ Subelementos serán desplazados hacia arriba. Proveedor - - - Part-DB1\templates\_navbar_search.html.twig:57 - Part-DB1\templates\_navbar_search.html.twig:52 - templates\base.html.twig:75 - - - search.deactivateBarcode - Desactivar código de barras - - Part-DB1\templates\_navbar_search.html.twig:61 @@ -4367,16 +4304,6 @@ Subelementos serán desplazados hacia arriba. ¡Los cambios han sido guardados! - - - Part-DB1\src\Controller\PartController.php:186 - Part-DB1\src\Controller\PartController.php:186 - - - part.edited_flash.invalid - Error en el guardado: ¡Por favor, comprueba los datos! - - Part-DB1\src\Controller\PartController.php:216 @@ -4610,16 +4537,6 @@ Subelementos serán desplazados hacia arriba. Se han generado nuevos códigos backup con éxito. - - - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - - - attachment.table.filename - Nombre del archivo - - Part-DB1\src\DataTables\AttachmentDataTable.php:153 @@ -6407,16 +6324,6 @@ Subelementos serán desplazados hacia arriba. Nuevo elemento - - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:34 - obsolete - - - attachment.external_file - Archivo externo - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 @@ -6687,16 +6594,6 @@ Subelementos serán desplazados hacia arriba. El elemento padre no puede ser uno de sus propios hijos. - - - obsolete - obsolete - - - validator.part_lot.location_full.no_increasment - La ubicación de almacenaje ha sido marcada como llena, así que no puedes incrementar la cantidad de instock. (Nueva cantidad máxima. {{ old_amount }}) - - obsolete @@ -7550,39 +7447,6 @@ Elemento 3 Descartar cambios - - - templates\Parts\show_part_info.html.twig:166 - obsolete - obsolete - - - part.withdraw.btn - Retirar - - - - - templates\Parts\show_part_info.html.twig:171 - obsolete - obsolete - - - part.withdraw.comment: - Comentario/Propósito - - - - - templates\Parts\show_part_info.html.twig:189 - obsolete - obsolete - - - part.add.caption - Añadir componentes - - templates\Parts\show_part_info.html.twig:194 @@ -7594,28 +7458,6 @@ Elemento 3 Agregar - - - templates\Parts\show_part_info.html.twig:199 - obsolete - obsolete - - - part.add.comment - Comentario/Propósito - - - - - templates\AdminPages\CompanyAdminBase.html.twig:15 - obsolete - obsolete - - - admin.comment - Notas - - src\Form\PartType.php:83 @@ -7627,69 +7469,6 @@ Elemento 3 Enlace al fabricante - - - src\Form\PartType.php:66 - obsolete - obsolete - - - part.description.placeholder - ej. NPN 45V 0,1A 0,5W - - - - - src\Form\PartType.php:69 - obsolete - obsolete - - - part.instock.placeholder - ej. 10 - - - - - src\Form\PartType.php:72 - obsolete - obsolete - - - part.mininstock.placeholder - ej. 5 - - - - - obsolete - obsolete - - - part.order.price_per - Precio por - - - - - obsolete - obsolete - - - part.withdraw.caption - Retirar componentes - - - - - obsolete - obsolete - - - datatable.datatable.lengthMenu - _MENU_ - - obsolete @@ -8778,15 +8557,6 @@ Elemento 3 Mostrar versiones antiguas de elementos (time travel) - - - obsolete - - - tfa_u2f.key_added_successful - Clave de seguridad añadida correctamente - - obsolete @@ -8994,12 +8764,6 @@ Elemento 3 Si está opción está activada, todos los miembros directos de este grupo tendrá que configurar como mínimo un factor de autenticación de dos pasos. Recomendado para grupos administrativos con muchos permisos. - - - selectpicker.empty - Nada seleccionado - - selectpicker.nothing_selected @@ -9252,12 +9016,6 @@ Elemento 3 ¡Tienes que cambiar tu contraseña! Por favor establece una nueva contraseña. - - - tree.root_node.text - Nodo raíz - - part_list.action.select_null @@ -11756,12 +11514,6 @@ Por favor ten en cuenta que no puedes personificar a un usuario deshabilitado. S Fecha de caducidad - - - api_tokens.added_date - Añadido a - - api_tokens.last_time_used @@ -12585,4 +12337,4 @@ Por favor ten en cuenta que no puedes personificar a un usuario deshabilitado. S - + \ No newline at end of file diff --git a/translations/messages.fr.xlf b/translations/messages.fr.xlf index 7bce333b..4abfaa7a 100644 --- a/translations/messages.fr.xlf +++ b/translations/messages.fr.xlf @@ -1,4 +1,4 @@ - + @@ -558,17 +558,6 @@ Nouvel emplacement de stockage - - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - templates\AdminPages\SupplierAdmin.html.twig:4 - - - supplier.caption - Fournisseurs - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 @@ -2409,26 +2398,6 @@ Show/Hide sidebar Prix unitaire - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - - - edit.caption_short - Éditer - - - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - - - delete.caption - Supprimer - - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 @@ -3041,16 +3010,6 @@ Show/Hide sidebar Pour garantir l'accès même en cas de perte de la clé, il est recommandé d'enregistrer une deuxième clé en guise de sauvegarde et de la conserver dans un endroit sûr ! - - - 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 - Afficher le nom de la clé (par exemple, sauvegarde) - - Part-DB1\templates\security\U2F\u2f_register.html.twig:19 @@ -4044,17 +4003,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia Fournisseur - - - Part-DB1\templates\_navbar_search.html.twig:57 - Part-DB1\templates\_navbar_search.html.twig:52 - templates\base.html.twig:75 - - - search.deactivateBarcode - Désa. Code barres - - Part-DB1\templates\_navbar_search.html.twig:61 @@ -4330,16 +4278,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia Changements sauvegardés ! - - - Part-DB1\src\Controller\PartController.php:186 - Part-DB1\src\Controller\PartController.php:186 - - - part.edited_flash.invalid - Erreur lors de l'enregistrement : Vérifiez vos données ! - - Part-DB1\src\Controller\PartController.php:216 @@ -4573,16 +4511,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia De nouveaux codes de secours ont été générés avec succès. - - - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - - - attachment.table.filename - Nom du fichier - - Part-DB1\src\DataTables\AttachmentDataTable.php:153 @@ -6349,16 +6277,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia Nouvel élément - - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:34 - obsolete - - - attachment.external_file - Fichier extérieur - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 @@ -6629,16 +6547,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia Le parent ne peut pas être un de ses propres enfants. - - - obsolete - obsolete - - - validator.part_lot.location_full.no_increasment - Le lieu de stockage utilisé a été marqué comme étant plein, le stock ne peut donc pas être augmenté. (Nouveau stock maximum {{old_amount}}) - - obsolete @@ -7489,39 +7397,6 @@ exemple de ville Rejeter les modifications - - - templates\Parts\show_part_info.html.twig:166 - obsolete - obsolete - - - part.withdraw.btn - Retrait - - - - - templates\Parts\show_part_info.html.twig:171 - obsolete - obsolete - - - part.withdraw.comment: - Commentaire/objet - - - - - templates\Parts\show_part_info.html.twig:189 - obsolete - obsolete - - - part.add.caption - Ajouter composants - - templates\Parts\show_part_info.html.twig:194 @@ -7533,28 +7408,6 @@ exemple de ville Ajouter - - - templates\Parts\show_part_info.html.twig:199 - obsolete - obsolete - - - part.add.comment - Commentaire/objet - - - - - templates\AdminPages\CompanyAdminBase.html.twig:15 - obsolete - obsolete - - - admin.comment - Commentaire - - src\Form\PartType.php:83 @@ -7566,69 +7419,6 @@ exemple de ville Lien vers le site du fabricant - - - src\Form\PartType.php:66 - obsolete - obsolete - - - part.description.placeholder - Ex. NPN 45V 0,1A 0,5W - - - - - src\Form\PartType.php:69 - obsolete - obsolete - - - part.instock.placeholder - Ex. 10 - - - - - src\Form\PartType.php:72 - obsolete - obsolete - - - part.mininstock.placeholder - Ex. 10 - - - - - obsolete - obsolete - - - part.order.price_per - Prix par - - - - - obsolete - obsolete - - - part.withdraw.caption - Retrait de composants - - - - - obsolete - obsolete - - - datatable.datatable.lengthMenu - _MENU_ - - obsolete @@ -8701,15 +8491,6 @@ exemple de ville Afficher les anciennes versions des éléments (Time travel) - - - obsolete - - - tfa_u2f.key_added_successful - Clé de sécurité ajoutée avec succès. - - obsolete @@ -8917,12 +8698,6 @@ exemple de ville Si cette option est activée, chaque membre direct de ce groupe doit configurer au moins un deuxième facteur d'authentification. Recommandé pour les groupes administratifs ayant beaucoup de permissions. - - - selectpicker.empty - Rien n'est sélectionné - - selectpicker.nothing_selected @@ -9302,4 +9077,4 @@ exemple de ville - + \ No newline at end of file diff --git a/translations/messages.hu.xlf b/translations/messages.hu.xlf index ee7832b0..f4dadc24 100644 --- a/translations/messages.hu.xlf +++ b/translations/messages.hu.xlf @@ -1,4 +1,4 @@ - + @@ -147,17 +147,6 @@ Új pénznem - - - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 - templates\AdminPages\DeviceAdmin.html.twig:4 - - - project.caption - Projekt - - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 @@ -583,17 +572,6 @@ Új tárolási helyszín - - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - templates\AdminPages\SupplierAdmin.html.twig:4 - - - supplier.caption - Beszállítók - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 @@ -2360,26 +2338,6 @@ Egységár - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - - - edit.caption_short - Szerkesztés - - - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - - - delete.caption - Törlés - - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 @@ -2992,16 +2950,6 @@ Az elérhetőség biztosítása érdekében, ha a kulcs elveszik, ajánlott egy második kulcsot is regisztrálni tartalékként, és biztonságos helyen tárolni! - - - 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 - Megjelenített kulcs neve (például Tartalék) - - Part-DB1\templates\security\U2F\u2f_register.html.twig:19 @@ -3993,17 +3941,6 @@ Beszállító - - - Part-DB1\templates\_navbar_search.html.twig:57 - Part-DB1\templates\_navbar_search.html.twig:52 - templates\base.html.twig:75 - - - search.deactivateBarcode - Vonalkód deaktiválása - - Part-DB1\templates\_navbar_search.html.twig:61 @@ -4295,16 +4232,6 @@ Változtatások mentve! - - - Part-DB1\src\Controller\PartController.php:186 - Part-DB1\src\Controller\PartController.php:186 - - - part.edited_flash.invalid - Hiba mentés közben: Kérjük, ellenőrizd az adatbevitelt! - - Part-DB1\src\Controller\PartController.php:216 @@ -4538,16 +4465,6 @@ Új biztonsági kódok sikeresen generálva. - - - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - - - attachment.table.filename - Fájlnév - - Part-DB1\src\DataTables\AttachmentDataTable.php:153 @@ -6311,16 +6228,6 @@ Új elem - - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:34 - obsolete - - - attachment.external_file - Külső fájl - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 @@ -6591,16 +6498,6 @@ A szülő nem lehet saját gyermeke. - - - obsolete - obsolete - - - validator.part_lot.location_full.no_increasment - A tárolási helyszín tele van jelölve, így nem növelheted a készlet mennyiségét. (Új mennyiség max. {{ old_amount }}) - - obsolete @@ -7442,39 +7339,6 @@ Változtatások elvetése - - - templates\Parts\show_part_info.html.twig:166 - obsolete - obsolete - - - part.withdraw.btn - Visszavonás - - - - - templates\Parts\show_part_info.html.twig:171 - obsolete - obsolete - - - part.withdraw.comment: - Megjegyzés/Cél - - - - - templates\Parts\show_part_info.html.twig:189 - obsolete - obsolete - - - part.add.caption - Alkatrészek hozzáadása - - templates\Parts\show_part_info.html.twig:194 @@ -7486,28 +7350,6 @@ Hozzáadás - - - templates\Parts\show_part_info.html.twig:199 - obsolete - obsolete - - - part.add.comment - Megjegyzés/Cél - - - - - templates\AdminPages\CompanyAdminBase.html.twig:15 - obsolete - obsolete - - - admin.comment - Jegyzetek - - src\Form\PartType.php:83 @@ -7519,69 +7361,6 @@ Gyártói link - - - src\Form\PartType.php:66 - obsolete - obsolete - - - part.description.placeholder - e.g. NPN 45V 0,1A 0,5W - - - - - src\Form\PartType.php:69 - obsolete - obsolete - - - part.instock.placeholder - e.g. 10 - - - - - src\Form\PartType.php:72 - obsolete - obsolete - - - part.mininstock.placeholder - e.g. 5 - - - - - obsolete - obsolete - - - part.order.price_per - Ár per - - - - - obsolete - obsolete - - - part.withdraw.caption - Alkatrészek kivonása - - - - - obsolete - obsolete - - - datatable.datatable.lengthMenu - _MENU_ - - obsolete @@ -8654,15 +8433,6 @@ Régi elemverziók megjelenítése (időutazás) - - - obsolete - - - tfa_u2f.key_added_successful - Biztonsági kulcs sikeresen hozzáadva. - - obsolete @@ -8861,12 +8631,6 @@ Ha ez az opció engedélyezve van, a csoport minden közvetlen tagjának be kell állítania legalább egy második faktort a hitelesítéshez. Ajánlott adminisztratív csoportok számára, amelyek sok jogosultsággal rendelkeznek. - - - selectpicker.empty - Semmi nincs kiválasztva - - selectpicker.nothing_selected @@ -9125,12 +8889,6 @@ A jelszavadat meg kell változtatnod! Kérjük, állíts be új jelszót. - - - tree.root_node.text - Gyökércsomópont - - part_list.action.select_null @@ -11669,12 +11427,6 @@ Lejárati dátum - - - api_tokens.added_date - Hozzáadva - - api_tokens.last_time_used @@ -14298,4 +14050,4 @@ - + \ No newline at end of file diff --git a/translations/messages.it.xlf b/translations/messages.it.xlf index f56e1bc9..0724355a 100644 --- a/translations/messages.it.xlf +++ b/translations/messages.it.xlf @@ -1,4 +1,4 @@ - + @@ -147,17 +147,6 @@ Nuova valuta - - - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 - templates\AdminPages\DeviceAdmin.html.twig:4 - - - project.caption - Progetto - - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 @@ -589,17 +578,6 @@ Nuova ubicazione - - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - templates\AdminPages\SupplierAdmin.html.twig:4 - - - supplier.caption - Fornitori - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 @@ -2431,26 +2409,6 @@ I sub elementi saranno spostati verso l'alto. Prezzo unitario - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - - - edit.caption_short - Modificare - - - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - - - delete.caption - Eliminare - - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 @@ -3063,16 +3021,6 @@ I sub elementi saranno spostati verso l'alto. Per garantire l'accesso anche se la chiave viene persa, si consiglia di registrare una seconda chiave come backup e conservarla in un luogo sicuro! - - - 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 - Nome della chiave visualizzato (ad es. Backup) - - Part-DB1\templates\security\U2F\u2f_register.html.twig:19 @@ -4067,17 +4015,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi Fornitore - - - Part-DB1\templates\_navbar_search.html.twig:57 - Part-DB1\templates\_navbar_search.html.twig:52 - templates\base.html.twig:75 - - - search.deactivateBarcode - Disatt. Barcode - - Part-DB1\templates\_navbar_search.html.twig:61 @@ -4369,16 +4306,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi Modifiche salvate! - - - Part-DB1\src\Controller\PartController.php:186 - Part-DB1\src\Controller\PartController.php:186 - - - part.edited_flash.invalid - Errore durante il salvataggio: per favore controllare i dati immessi! - - Part-DB1\src\Controller\PartController.php:216 @@ -4612,16 +4539,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi I nuovi codici di backup sono stati generati. - - - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - - - attachment.table.filename - Nome del file - - Part-DB1\src\DataTables\AttachmentDataTable.php:153 @@ -6409,16 +6326,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi Nuovo elemento - - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:34 - obsolete - - - attachment.external_file - File esterno - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 @@ -6689,16 +6596,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi Un elemento figlio non può essere anche elemento padre! - - - obsolete - obsolete - - - validator.part_lot.location_full.no_increasment - L'ubicazione è stata contrassegnata come piena, quindi non è possibile aumentare la quantità di scorte. (Nuova q.tà max. {{ old_amount }}) - - obsolete @@ -7552,39 +7449,6 @@ Element 3 Scartare le modifiche - - - templates\Parts\show_part_info.html.twig:166 - obsolete - obsolete - - - part.withdraw.btn - Prelevare - - - - - templates\Parts\show_part_info.html.twig:171 - obsolete - obsolete - - - part.withdraw.comment: - Commento/Oggetto - - - - - templates\Parts\show_part_info.html.twig:189 - obsolete - obsolete - - - part.add.caption - Aggiungere componenti - - templates\Parts\show_part_info.html.twig:194 @@ -7596,28 +7460,6 @@ Element 3 Aggiungere - - - templates\Parts\show_part_info.html.twig:199 - obsolete - obsolete - - - part.add.comment - Commento/Oggetto - - - - - templates\AdminPages\CompanyAdminBase.html.twig:15 - obsolete - obsolete - - - admin.comment - Note - - src\Form\PartType.php:83 @@ -7629,69 +7471,6 @@ Element 3 Link al sito del produttore - - - src\Form\PartType.php:66 - obsolete - obsolete - - - part.description.placeholder - es. NPN 45V 0,1A 0,5W - - - - - src\Form\PartType.php:69 - obsolete - obsolete - - - part.instock.placeholder - es. 10 - - - - - src\Form\PartType.php:72 - obsolete - obsolete - - - part.mininstock.placeholder - es. 5 - - - - - obsolete - obsolete - - - part.order.price_per - Prezzo per - - - - - obsolete - obsolete - - - part.withdraw.caption - Prelevare componenti - - - - - obsolete - obsolete - - - datatable.datatable.lengthMenu - _MENU_ - - obsolete @@ -8780,15 +8559,6 @@ Element 3 Mostra gli stati delle vecchie versioni (viaggio nel tempo) - - - obsolete - - - tfa_u2f.key_added_successful - Chiave di sicurezza aggiunta con successo. - - obsolete @@ -8996,12 +8766,6 @@ Element 3 Quando questa opzione è attiva, ogni membro diretto del gruppo deve impostare almeno un secondo fattore per l'autenticazione. Raccomandato ad es. per gruppi amministrativi con autorizzazioni di vasta portata. - - - selectpicker.empty - Niente selezionato - - selectpicker.nothing_selected @@ -9254,12 +9018,6 @@ Element 3 È necessario cambiare la password! Impostare una nuova password. - - - tree.root_node.text - Radice - - part_list.action.select_null @@ -11758,12 +11516,6 @@ Notare che non è possibile impersonare un utente disattivato. Quando si prova a Data di scadenza - - - api_tokens.added_date - Aggiunto il - - api_tokens.last_time_used @@ -12587,4 +12339,4 @@ Notare che non è possibile impersonare un utente disattivato. Quando si prova a - + \ No newline at end of file diff --git a/translations/messages.ja.xlf b/translations/messages.ja.xlf index 4559d175..aa562a4e 100644 --- a/translations/messages.ja.xlf +++ b/translations/messages.ja.xlf @@ -1,4 +1,4 @@ - + @@ -558,17 +558,6 @@ 保管場所を新規作成 - - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - templates\AdminPages\SupplierAdmin.html.twig:4 - - - supplier.caption - サプライヤー - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 @@ -2409,26 +2398,6 @@ 単価 - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - - - edit.caption_short - 編集 - - - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - - - delete.caption - 削除 - - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 @@ -3041,16 +3010,6 @@ 鍵を紛失しても確実にアクセスできるように、別のキーををバックアップとして登録し、大切に保管しておくことをおすすめします。 - - - 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 - 表示されているキー名(例: バックアップ) - - Part-DB1\templates\security\U2F\u2f_register.html.twig:19 @@ -4044,17 +4003,6 @@ サプライヤー - - - Part-DB1\templates\_navbar_search.html.twig:57 - Part-DB1\templates\_navbar_search.html.twig:52 - templates\base.html.twig:75 - - - search.deactivateBarcode - バーコードを無効化 - - Part-DB1\templates\_navbar_search.html.twig:61 @@ -4330,16 +4278,6 @@ 変更を保存しました。 - - - Part-DB1\src\Controller\PartController.php:186 - Part-DB1\src\Controller\PartController.php:186 - - - part.edited_flash.invalid - 保存中のエラー: 入力を確認してください - - Part-DB1\src\Controller\PartController.php:216 @@ -4573,16 +4511,6 @@ 新しいバックアップ コードが正常に生成されました。 - - - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - - - attachment.table.filename - ファイル名 - - Part-DB1\src\DataTables\AttachmentDataTable.php:153 @@ -6349,16 +6277,6 @@ 新規作成 - - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:34 - obsolete - - - attachment.external_file - 外部ファイル - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 @@ -6629,16 +6547,6 @@ 要素は自身の子とすることはできません。 - - - obsolete - obsolete - - - validator.part_lot.location_full.no_increasment - 在庫数量を増やせません。保管場所が満杯とマークされています。 (新しい数量の最大 {{ old_amount }}) - - obsolete @@ -7490,39 +7398,6 @@ Exampletown 変更を破棄 - - - 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 @@ -7534,28 +7409,6 @@ Exampletown 追加 - - - 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 @@ -7567,69 +7420,6 @@ Exampletown メーカーへのリンク - - - src\Form\PartType.php:66 - obsolete - obsolete - - - part.description.placeholder - 例: NPN 45V 0,1A 0,5W - - - - - src\Form\PartType.php:69 - obsolete - obsolete - - - part.instock.placeholder - 例: 10 - - - - - src\Form\PartType.php:72 - obsolete - obsolete - - - part.mininstock.placeholder - 例: 5 - - - - - obsolete - obsolete - - - part.order.price_per - あたりの価格: - - - - - obsolete - obsolete - - - part.withdraw.caption - 部品を撤回する - - - - - obsolete - obsolete - - - datatable.datatable.lengthMenu - _MENU_ - - obsolete @@ -8702,15 +8492,6 @@ Exampletown 要素の以前のバージョンを表示する (タイムトラベル) - - - obsolete - - - tfa_u2f.key_added_successful - セキュリティー キーの追加に成功しました。 - - obsolete @@ -8918,12 +8699,6 @@ Exampletown このオプションを選択すると、このグループの直接のメンバーは2番目の認証要素を少なくとも1つ設定する必要があります。権限を厳密に管理するグループに推奨されます。 - - - selectpicker.empty - 未選択 - - selectpicker.nothing_selected @@ -9039,4 +8814,4 @@ Exampletown - + \ No newline at end of file diff --git a/translations/messages.nl.xlf b/translations/messages.nl.xlf index 8075a5b3..875fe4b8 100644 --- a/translations/messages.nl.xlf +++ b/translations/messages.nl.xlf @@ -1,4 +1,4 @@ - + @@ -147,17 +147,6 @@ Nieuwe valuta - - - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 - templates\AdminPages\DeviceAdmin.html.twig:4 - - - project.caption - Project - - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 @@ -589,17 +578,6 @@ Nieuwe opslag locatie - - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - templates\AdminPages\SupplierAdmin.html.twig:4 - - - supplier.caption - Leveranciers - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 @@ -863,4 +841,4 @@ - + \ No newline at end of file diff --git a/translations/messages.pl.xlf b/translations/messages.pl.xlf index 85554aaa..875e5190 100644 --- a/translations/messages.pl.xlf +++ b/translations/messages.pl.xlf @@ -1,4 +1,4 @@ - + @@ -147,17 +147,6 @@ Nowa waluta - - - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 - templates\AdminPages\DeviceAdmin.html.twig:4 - - - project.caption - Projekt - - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 @@ -589,17 +578,6 @@ Nowa lokalizacja miejsca przechowywania - - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - templates\AdminPages\SupplierAdmin.html.twig:4 - - - supplier.caption - Dostawcy - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 @@ -2436,26 +2414,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. Cena jednostkowa - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - - - edit.caption_short - Edycja - - - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - - - delete.caption - Usuń - - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 @@ -3068,16 +3026,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. Aby mieć pewność dostępu nawet w przypadku zgubienia klucza, zaleca się zarejestrowanie drugiego klucza jako kopię zapasową i przechowywanie go w bezpiecznym miejscu! - - - 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 - Wyświetlana nazwa klucza (np. Backup) - - Part-DB1\templates\security\U2F\u2f_register.html.twig:19 @@ -4070,17 +4018,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo Dostawca - - - Part-DB1\templates\_navbar_search.html.twig:57 - Part-DB1\templates\_navbar_search.html.twig:52 - templates\base.html.twig:75 - - - search.deactivateBarcode - Dezaktywuj kod kreskowy - - Part-DB1\templates\_navbar_search.html.twig:61 @@ -4372,16 +4309,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo Zmiany zapisane! - - - Part-DB1\src\Controller\PartController.php:186 - Part-DB1\src\Controller\PartController.php:186 - - - part.edited_flash.invalid - Błąd podczas zapisywania: Sprawdź wprowadzone dane! - - Part-DB1\src\Controller\PartController.php:216 @@ -4615,16 +4542,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo Pomyślnie wygenerowano nowe kody zapasowe. - - - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - - - attachment.table.filename - Nazwa pliku - - Part-DB1\src\DataTables\AttachmentDataTable.php:153 @@ -6412,16 +6329,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo Nowy element - - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:34 - obsolete - - - attachment.external_file - Plik zewnętrzny - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 @@ -6692,16 +6599,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo Nie możesz przypisać elementu podrzędnego jako elementu nadrzędnego (spowodowałoby to pętle)! - - - obsolete - obsolete - - - validator.part_lot.location_full.no_increasment - Miejsce przechowywania zostało oznaczone jako pełne, więc nie można zwiększyć ilości w magazynie. (Nowa ilość maksymalna {{ old_amount }}) - - obsolete @@ -7555,39 +7452,6 @@ Element 3 Porzuć zmiany - - - templates\Parts\show_part_info.html.twig:166 - obsolete - obsolete - - - part.withdraw.btn - Usunąć - - - - - templates\Parts\show_part_info.html.twig:171 - obsolete - obsolete - - - part.withdraw.comment: - Komentarz/Cel - - - - - templates\Parts\show_part_info.html.twig:189 - obsolete - obsolete - - - part.add.caption - Dodaj komponent - - templates\Parts\show_part_info.html.twig:194 @@ -7599,28 +7463,6 @@ Element 3 Dodaj - - - templates\Parts\show_part_info.html.twig:199 - obsolete - obsolete - - - part.add.comment - Komentarz/Cel - - - - - templates\AdminPages\CompanyAdminBase.html.twig:15 - obsolete - obsolete - - - admin.comment - Komentarz - - src\Form\PartType.php:83 @@ -7632,69 +7474,6 @@ Element 3 Adres URL producenta - - - src\Form\PartType.php:66 - obsolete - obsolete - - - part.description.placeholder - np. NPN 45V 0,1A 0,5W - - - - - src\Form\PartType.php:69 - obsolete - obsolete - - - part.instock.placeholder - np. 10 - - - - - src\Form\PartType.php:72 - obsolete - obsolete - - - part.mininstock.placeholder - np. 5 - - - - - obsolete - obsolete - - - part.order.price_per - Cena za - - - - - obsolete - obsolete - - - part.withdraw.caption - Usuń komponent - - - - - obsolete - obsolete - - - datatable.datatable.lengthMenu - _MENU_ - - obsolete @@ -8783,15 +8562,6 @@ Element 3 Pokaż stare wersje elementów (podróż w czasie) - - - obsolete - - - tfa_u2f.key_added_successful - Klucz bezpieczeństwa został dodany pomyślnie. - - obsolete @@ -8999,12 +8769,6 @@ Element 3 Jeśli ta opcja jest włączona, każdy bezpośredni członek tej grupy musi skonfigurować co najmniej jeden drugi czynnik uwierzytelniania. Zalecane dla grup administracyjnych z wieloma uprawnieniami. - - - selectpicker.empty - Nic nie wybrano - - selectpicker.nothing_selected @@ -9257,12 +9021,6 @@ Element 3 Twoje hasło musi zostać zmienione! Ustaw nowe hasło. - - - tree.root_node.text - Węzeł główny - - part_list.action.select_null @@ -10328,7 +10086,7 @@ Element 3 project.build.add_builds_to_builds_part - + @@ -10550,7 +10308,7 @@ Element 3 log.element_edited.changed_fields.mountnames - + @@ -11761,12 +11519,6 @@ Należy pamiętać, że nie możesz udawać nieaktywnych użytkowników. Jeśli Data wygaśnięcia - - - api_tokens.added_date - Utworzono - - api_tokens.last_time_used @@ -12440,4 +12192,4 @@ Należy pamiętać, że nie możesz udawać nieaktywnych użytkowników. Jeśli - + \ No newline at end of file diff --git a/translations/messages.ru.xlf b/translations/messages.ru.xlf index 61a950c5..85faf05b 100644 --- a/translations/messages.ru.xlf +++ b/translations/messages.ru.xlf @@ -1,4 +1,4 @@ - + @@ -147,17 +147,6 @@ Новая валюта - - - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 - templates\AdminPages\DeviceAdmin.html.twig:4 - - - project.caption - Проект - - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 @@ -589,17 +578,6 @@ Новое место хранения - - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - templates\AdminPages\SupplierAdmin.html.twig:4 - - - supplier.caption - Поставщики - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 @@ -2439,26 +2417,6 @@ Цена за единицу - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - - - edit.caption_short - Редакт. - - - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - - - delete.caption - Удалить - - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 @@ -3072,16 +3030,6 @@ Чтобы не утратить доступ в случае потери ключа мы рекомендуем зарегистрировать еще один как резервный и хранить его в безопасном месте! - - - 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 - Отображаемое имя ключа (напр. Резервный) - - Part-DB1\templates\security\U2F\u2f_register.html.twig:19 @@ -4076,17 +4024,6 @@ Поставщик - - - Part-DB1\templates\_navbar_search.html.twig:57 - Part-DB1\templates\_navbar_search.html.twig:52 - templates\base.html.twig:75 - - - search.deactivateBarcode - Деактивировать штрих-код - - Part-DB1\templates\_navbar_search.html.twig:61 @@ -4378,16 +4315,6 @@ Изменения сохранены! - - - Part-DB1\src\Controller\PartController.php:186 - Part-DB1\src\Controller\PartController.php:186 - - - part.edited_flash.invalid - Ошибка при сохранении: проверьте введенные данные! - - Part-DB1\src\Controller\PartController.php:216 @@ -4621,16 +4548,6 @@ Новые резервные коды успешно сгенерированы. - - - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - - - attachment.table.filename - Имя файла - - Part-DB1\src\DataTables\AttachmentDataTable.php:153 @@ -6418,16 +6335,6 @@ Новый Элемент - - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:34 - obsolete - - - attachment.external_file - Внешний файл - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 @@ -6698,16 +6605,6 @@ Родитель не может быть дочерним по отношению к себе - - - obsolete - obsolete - - - validator.part_lot.location_full.no_increasment - Вы не можете увеличивать складские объемы в хранилище помеченном как "полное". (Новое макс. количество {{ old_amount }}) - - obsolete @@ -7559,39 +7456,6 @@ Отменить изменения - - - 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 @@ -7603,28 +7467,6 @@ Добавить - - - 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 @@ -7636,69 +7478,6 @@ Ссылка на производителя - - - src\Form\PartType.php:66 - obsolete - obsolete - - - part.description.placeholder - н.р. NNPN 45V 0,1A 0,5W - - - - - src\Form\PartType.php:69 - obsolete - obsolete - - - part.instock.placeholder - н.р. 10 - - - - - src\Form\PartType.php:72 - obsolete - obsolete - - - part.mininstock.placeholder - н.р. 5 - - - - - obsolete - obsolete - - - part.order.price_per - Цена на - - - - - obsolete - obsolete - - - part.withdraw.caption - Изъять компоненты - - - - - obsolete - obsolete - - - datatable.datatable.lengthMenu - _MENU_ - - obsolete @@ -8787,15 +8566,6 @@ Показать предыдущие версии элемента - - - obsolete - - - tfa_u2f.key_added_successful -  Ключ безопасности успешно добавлен. - - obsolete @@ -9003,12 +8773,6 @@ Если эта опция разрешена, каждый член данной группы обязан сконфигурировать как минимум один вторичный способ аутентификации. Рекомендовано для административных групп с большими правами. - - - selectpicker.empty - Ничего не выбрано - - selectpicker.nothing_selected @@ -9261,12 +9025,6 @@ Вам нужно сменить пароль! Пожалуйста, задайте новый. - - - tree.root_node.text - Корень - - part_list.action.select_null @@ -11765,12 +11523,6 @@ Дата истечения срока действия - - - api_tokens.added_date - Добавлен - - api_tokens.last_time_used @@ -12540,4 +12292,4 @@ - + \ No newline at end of file diff --git a/translations/messages.zh.xlf b/translations/messages.zh.xlf index 61232dfe..24dffc82 100644 --- a/translations/messages.zh.xlf +++ b/translations/messages.zh.xlf @@ -1,4 +1,4 @@ - + @@ -147,17 +147,6 @@ 新建货币 - - - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 - templates\AdminPages\DeviceAdmin.html.twig:4 - - - project.caption - 项目 - - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 @@ -589,17 +578,6 @@ 新建存储位置 - - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - templates\AdminPages\SupplierAdmin.html.twig:4 - - - supplier.caption - 供应商 - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 @@ -2439,26 +2417,6 @@ 单价 - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - - - edit.caption_short - 编辑 - - - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - - - delete.caption - 删除 - - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 @@ -3071,16 +3029,6 @@ 为了确保即使密钥丢失也能访问,建议注册第二个密钥作为备份并将其存放在安全的地方! - - - 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 - 显示的密钥名称(例如备份) - - Part-DB1\templates\security\U2F\u2f_register.html.twig:19 @@ -4074,17 +4022,6 @@ 供应商 - - - Part-DB1\templates\_navbar_search.html.twig:57 - Part-DB1\templates\_navbar_search.html.twig:52 - templates\base.html.twig:75 - - - search.deactivateBarcode - 停用条码 - - Part-DB1\templates\_navbar_search.html.twig:61 @@ -4376,16 +4313,6 @@ 已保存更改。 - - - Part-DB1\src\Controller\PartController.php:186 - Part-DB1\src\Controller\PartController.php:186 - - - part.edited_flash.invalid - 保存时出错。请检查输入 - - Part-DB1\src\Controller\PartController.php:216 @@ -4619,16 +4546,6 @@ 成功生成新备份代码。 - - - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - - - attachment.table.filename - 文件名 - - Part-DB1\src\DataTables\AttachmentDataTable.php:153 @@ -6416,16 +6333,6 @@ 新建 - - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:34 - obsolete - - - attachment.external_file - 外部文件 - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 @@ -6696,16 +6603,6 @@ 父元素不能是它的子元素。 - - - obsolete - obsolete - - - validator.part_lot.location_full.no_increasment - 存储位置已标记为已满,无法增加库存量。(新的库存上限 {{ old_amount }}) - - obsolete @@ -7558,39 +7455,6 @@ Element 3 放弃更改 - - - 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 @@ -7602,28 +7466,6 @@ Element 3 增加 - - - 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 @@ -7635,69 +7477,6 @@ Element 3 制造商链接 - - - 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 @@ -8786,15 +8565,6 @@ Element 3 显示旧元素版本(时间旅行) - - - obsolete - - - tfa_u2f.key_added_successful - 安全密钥添加成功。 - - obsolete @@ -9002,12 +8772,6 @@ Element 3 该组的每个直接成员都必须配置至少一个的第二因素进行身份验证。 - - - selectpicker.empty - 未选择任何内容 - - selectpicker.nothing_selected @@ -9260,12 +9024,6 @@ Element 3 密码需要更改。请设置新密码 - - - tree.root_node.text - 根节点 - - part_list.action.select_null @@ -11764,12 +11522,6 @@ Element 3 有效期 - - - api_tokens.added_date - 添加于 - - api_tokens.last_time_used @@ -12425,4 +12177,4 @@ Element 3 - + \ No newline at end of file From 443cb57ce8fda5deaa8e559af10050a3f14379b9 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Sat, 6 Dec 2025 22:57:48 +0100 Subject: [PATCH 058/235] Add Copilot instructions for repository (#1135) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Initial plan * Add comprehensive Copilot instructions for Part-DB Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Fix Symfony version and fixtures command in Copilot instructions Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Remove PHP code style check instructions Removed code style check instructions for PHP. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> Co-authored-by: Jan Böhmer --- .github/copilot-instructions.md | 186 ++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 .github/copilot-instructions.md diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 00000000..637a66b5 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,186 @@ +# Copilot Instructions for Part-DB + +Part-DB is an Open-Source inventory management system for electronic components built with Symfony 7.4 and modern web technologies. + +## Technology Stack + +- **Backend**: PHP 8.2+, Symfony 7.4, Doctrine ORM +- **Frontend**: Bootstrap 5, Hotwire Stimulus/Turbo, TypeScript, Webpack Encore +- **Database**: MySQL 5.7+/MariaDB 10.4+/PostgreSQL 10+/SQLite +- **Testing**: PHPUnit with DAMA Doctrine Test Bundle +- **Code Quality**: Easy Coding Standard (ECS), PHPStan (level 5) + +## Project Structure + +- `src/`: PHP application code organized by purpose (Controller, Entity, Service, Form, etc.) +- `assets/`: Frontend TypeScript/JavaScript and CSS files +- `templates/`: Twig templates for views +- `tests/`: PHPUnit tests mirroring the `src/` structure +- `config/`: Symfony configuration files +- `public/`: Web-accessible files +- `translations/`: Translation files for multi-language support + +## Coding Standards + +### PHP Code + +- Follow [PSR-12](https://www.php-fig.org/psr/psr-12/) and [Symfony coding standards](https://symfony.com/doc/current/contributing/code/standards.html) +- Use type hints for all parameters and return types +- Always declare strict types: `declare(strict_types=1);` at the top of PHP files +- Use PHPDoc blocks for complex logic or when type information is needed + +### TypeScript/JavaScript + +- Use TypeScript for new frontend code +- Follow existing Stimulus controller patterns in `assets/controllers/` +- Use Bootstrap 5 components and utilities +- Leverage Hotwire Turbo for dynamic page updates + +### Naming Conventions + +- Entities: Use descriptive names that reflect database models (e.g., `Part`, `StorageLocation`) +- Controllers: Suffix with `Controller` (e.g., `PartController`) +- Services: Descriptive names reflecting their purpose (e.g., `PartService`, `LabelGenerator`) +- Tests: Match the class being tested with `Test` suffix (e.g., `PartTest`, `PartControllerTest`) + +## Development Workflow + +### Dependencies + +- Install PHP dependencies: `composer install` +- Install JS dependencies: `yarn install` +- Build frontend assets: `yarn build` (production) or `yarn watch` (development) + +### Database + +- Create database: `php bin/console doctrine:database:create --env=dev` +- Run migrations: `php bin/console doctrine:migrations:migrate --env=dev` +- Load fixtures: `php bin/console partdb:fixtures:load -n --env=dev` + +Or use Makefile shortcuts: +- `make dev-setup`: Complete development environment setup +- `make dev-reset`: Reset development environment (cache clear + migrate) + +### Testing + +- Set up test environment: `make test-setup` +- Run all tests: `php bin/phpunit` +- Run specific test: `php bin/phpunit tests/Path/To/SpecificTest.php` +- Run tests with coverage: `php bin/phpunit --coverage-html var/coverage` +- Test environment uses SQLite by default for speed + +### Static Analysis + +- Run PHPStan: `composer phpstan` or `COMPOSER_MEMORY_LIMIT=-1 php -d memory_limit=1G vendor/bin/phpstan analyse src --level 5` +- PHPStan configuration is in `phpstan.dist.neon` + +### Running the Application + +- Development server: `symfony serve` (requires Symfony CLI) +- Or configure Apache/nginx to serve from `public/` directory +- Set `APP_ENV=dev` in `.env.local` for development mode + +## Best Practices + +### Security + +- Always sanitize user input +- Use Symfony's security component for authentication/authorization +- Check permissions using the permission system before allowing actions +- Never expose sensitive data in logs or error messages +- Use parameterized queries (Doctrine handles this automatically) + +### Performance + +- Use Doctrine query builder for complex queries instead of DQL when possible +- Lazy load relationships to avoid N+1 queries +- Cache results when appropriate using Symfony's cache component +- Use pagination for large result sets (DataTables integration available) + +### Database + +- Always create migrations for schema changes: `php bin/console make:migration` +- Review migration files before running them +- Use Doctrine annotations or attributes for entity mapping +- Follow existing entity patterns for relationships and lifecycle callbacks + +### Frontend + +- Use Stimulus controllers for interactive components +- Leverage Turbo for dynamic page updates without full page reloads +- Use Bootstrap 5 classes for styling +- Keep JavaScript modular and organized in controllers +- Use the translation system for user-facing strings + +### Translations + +- Use translation keys, not hardcoded strings: `{{ 'part.info.title'|trans }}` +- Add new translation keys to `translations/` files +- Primary language is English (en) +- Translations are managed via Crowdin, but can be edited locally if needed + +### Testing + +- Write unit tests for services and helpers +- Write functional tests for controllers +- Use fixtures for test data +- Tests should be isolated and not depend on execution order +- Mock external dependencies when appropriate +- Follow existing test patterns in the repository + +## Common Patterns + +### Creating an Entity + +1. Create entity class in `src/Entity/` with Doctrine attributes +2. Generate migration: `php bin/console make:migration` +3. Review and run migration: `php bin/console doctrine:migrations:migrate` +4. Create repository if needed in `src/Repository/` +5. Add fixtures in `src/DataFixtures/` for testing + +### Adding a Form + +1. Create form type in `src/Form/` +2. Extend `AbstractType` and implement `buildForm()` and `configureOptions()` +3. Use in controller and render in Twig template +4. Follow existing form patterns for consistency + +### Creating a Controller Action + +1. Add method to appropriate controller in `src/Controller/` +2. Use route attributes for routing +3. Check permissions using security voters +4. Return Response or render Twig template +5. Add corresponding template in `templates/` + +### Adding a Service + +1. Create service class in `src/Services/` +2. Use dependency injection via constructor +3. Tag service in `config/services.yaml` if needed +4. Services are autowired by default + +## Important Notes + +- Part-DB uses fine-grained permissions - always check user permissions before actions +- Multi-language support is critical - use translation keys everywhere +- The application supports multiple database backends - write portable code +- Responsive design is important - test on mobile/tablet viewports +- Event system is used for logging changes - emit events when appropriate +- API Platform is integrated for REST API endpoints + +## Multi-tenancy Considerations + +- Part-DB is designed as a single-tenant application with multiple users +- User groups have different permission levels +- Always scope queries to respect user permissions +- Use the security context to get current user information + +## Resources + +- [Documentation](https://docs.part-db.de/) +- [Contributing Guide](CONTRIBUTING.md) +- [Symfony Documentation](https://symfony.com/doc/current/index.html) +- [Doctrine Documentation](https://www.doctrine-project.org/projects/doctrine-orm/en/current/) +- [Bootstrap 5 Documentation](https://getbootstrap.com/docs/5.1/) +- [Hotwire Documentation](https://hotwired.dev/) From a356eecd74818de1d2a3d44251593d5348f8e599 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Sat, 6 Dec 2025 23:29:32 +0100 Subject: [PATCH 059/235] Replace type synonym placeholders with bracket notation for better DX (#1133) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Initial plan * Replace placeholder syntax for type synonyms to be more DX friendly Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Update translation files to use new placeholder syntax Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Use mb_strtoupper with mb_substr for Unicode consistency Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Make placeholder generation right * Removed obsolete transltions --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> Co-authored-by: Jan Böhmer --- config/permissions.yaml | 22 +++++++++---------- ...ynonymsAsTranslationParametersListener.php | 8 +++---- ...terSynonymsAsTranslationParametersTest.php | 7 +++--- translations/messages.de.xlf | 6 ----- translations/messages.en.xlf | 6 ----- 5 files changed, 19 insertions(+), 30 deletions(-) diff --git a/config/permissions.yaml b/config/permissions.yaml index 5adfb79d..8c6a145e 100644 --- a/config/permissions.yaml +++ b/config/permissions.yaml @@ -18,7 +18,7 @@ perms: # Here comes a list with all Permission names (they have a perm_[name] co parts: # e.g. this maps to perms_parts in User/Group database group: "data" - label: "{{part}}" + label: "[[Part]]" operations: # Here are all possible operations are listed => the op name is mapped to bit value read: label: "perm.read" @@ -71,7 +71,7 @@ perms: # Here comes a list with all Permission names (they have a perm_[name] co storelocations: &PART_CONTAINING - label: "{{storage_location}}" + label: "[[Storage_location]]" group: "data" operations: read: @@ -103,39 +103,39 @@ perms: # Here comes a list with all Permission names (they have a perm_[name] co footprints: <<: *PART_CONTAINING - label: "{{footprint}}" + label: "[[Footprint]]" categories: <<: *PART_CONTAINING - label: "{{category}}" + label: "[[Category]]" suppliers: <<: *PART_CONTAINING - label: "{{supplier}}" + label: "[[Supplier]]" manufacturers: <<: *PART_CONTAINING - label: "{{manufacturer}}" + label: "[[Manufacturer]]" projects: <<: *PART_CONTAINING - label: "{{project}}" + label: "[[Project]]" attachment_types: <<: *PART_CONTAINING - label: "{{attachment_type}}" + label: "[[Attachment_type]]" currencies: <<: *PART_CONTAINING - label: "{{currency}}" + label: "[[Currency]]" measurement_units: <<: *PART_CONTAINING - label: "{{measurement_unit}}" + label: "[[Measurement_unit]]" part_custom_states: <<: *PART_CONTAINING - label: "{{part_custom_state}}" + label: "[[Part_custom_state]]" tools: label: "perm.part.tools" diff --git a/src/EventListener/RegisterSynonymsAsTranslationParametersListener.php b/src/EventListener/RegisterSynonymsAsTranslationParametersListener.php index b216aad4..e7ac7300 100644 --- a/src/EventListener/RegisterSynonymsAsTranslationParametersListener.php +++ b/src/EventListener/RegisterSynonymsAsTranslationParametersListener.php @@ -60,10 +60,10 @@ readonly class RegisterSynonymsAsTranslationParametersListener //Generate a placeholder for each element type foreach (ElementTypes::cases() as $elementType) { - //We have a placeholder for singular - $placeholders['{' . $elementType->value . '}'] = $this->typeNameGenerator->typeLabel($elementType); - //We have a placeholder for plural - $placeholders['{{' . $elementType->value . '}}'] = $this->typeNameGenerator->typeLabelPlural($elementType); + //Versions with capitalized first letter + $capitalized = ucfirst($elementType->value); //We have only ASCII element type values, so this is sufficient + $placeholders['[' . $capitalized . ']'] = $this->typeNameGenerator->typeLabel($elementType); + $placeholders['[[' . $capitalized . ']]'] = $this->typeNameGenerator->typeLabelPlural($elementType); //And we have lowercase versions for both $placeholders['[' . $elementType->value . ']'] = mb_strtolower($this->typeNameGenerator->typeLabel($elementType)); diff --git a/tests/EventListener/RegisterSynonymsAsTranslationParametersTest.php b/tests/EventListener/RegisterSynonymsAsTranslationParametersTest.php index d08edecb..4f49284a 100644 --- a/tests/EventListener/RegisterSynonymsAsTranslationParametersTest.php +++ b/tests/EventListener/RegisterSynonymsAsTranslationParametersTest.php @@ -40,10 +40,11 @@ class RegisterSynonymsAsTranslationParametersTest extends KernelTestCase $placeholders = $this->listener->getSynonymPlaceholders(); $this->assertIsArray($placeholders); - $this->assertSame('Part', $placeholders['{part}']); - $this->assertSame('Parts', $placeholders['{{part}}']); - //Lowercase versions: + // Curly braces for lowercase versions $this->assertSame('part', $placeholders['[part]']); $this->assertSame('parts', $placeholders['[[part]]']); + // Square brackets for capitalized versions (with capital first letter in placeholder) + $this->assertSame('Part', $placeholders['[Part]']); + $this->assertSame('Parts', $placeholders['[[Part]]']); } } diff --git a/translations/messages.de.xlf b/translations/messages.de.xlf index 7a8bbd01..a401724f 100644 --- a/translations/messages.de.xlf +++ b/translations/messages.de.xlf @@ -14297,12 +14297,6 @@ Bitte beachten Sie, dass dieses System derzeit experimentell ist und die hier de Mit Typsynonymen können Sie die Bezeichnungen von integrierten Datentypen ersetzen. Zum Beispiel können Sie „Footprint" in etwas anderes umbenennen.
    - - - {{part}} - Bauteile - - log.element_edited.changed_fields.part_ipn_prefix diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 0a029070..a8ca83fd 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -14146,12 +14146,6 @@ Please note that this system is currently experimental, and the synonyms defined Type synonyms allow you to replace the labels of built-in data types. For example, you can rename "Footprint" to something else. - - - {{part}} - Parts - - log.element_edited.changed_fields.part_ipn_prefix From 225e347c24b14d3e36739ce5e1b78419839165bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 6 Dec 2025 23:32:23 +0100 Subject: [PATCH 060/235] New translations messages.en.xlf (English) --- translations/messages.en.xlf | 254 ----------------------------------- 1 file changed, 254 deletions(-) diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 5641f711..be59c710 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -137,17 +137,6 @@ New currency - - - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 - templates\AdminPages\DeviceAdmin.html.twig:4 - - - project.caption - Project - - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 @@ -533,17 +522,6 @@ New storage location - - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 - templates\AdminPages\SupplierAdmin.html.twig:4 - - - supplier.caption - Suppliers - - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 @@ -2365,26 +2343,6 @@ Sub elements will be moved upwards. Unit Price - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - - - edit.caption_short - Edit - - - - - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - - - delete.caption - Delete - - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 @@ -2997,16 +2955,6 @@ Sub elements will be moved upwards. 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! - - - 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) - - Part-DB1\templates\security\U2F\u2f_register.html.twig:19 @@ -4000,17 +3948,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Supplier - - - Part-DB1\templates\_navbar_search.html.twig:57 - Part-DB1\templates\_navbar_search.html.twig:52 - templates\base.html.twig:75 - - - search.deactivateBarcode - Deact. Barcode - - Part-DB1\templates\_navbar_search.html.twig:61 @@ -4302,16 +4239,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Saved changes! - - - 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! - - Part-DB1\src\Controller\PartController.php:216 @@ -4545,16 +4472,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can New backup codes successfully generated. - - - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - Part-DB1\src\DataTables\AttachmentDataTable.php:148 - - - attachment.table.filename - File name - - Part-DB1\src\DataTables\AttachmentDataTable.php:153 @@ -6342,16 +6259,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can New Element - - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:34 - obsolete - - - attachment.external_file - External file - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 @@ -6622,16 +6529,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can The parent can not be one of the children of itself. - - - 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 }}) - - obsolete @@ -7488,39 +7385,6 @@ Element 1 -> Element 1.2 Discard changes - - - templates\Parts\show_part_info.html.twig:166 - obsolete - obsolete - - - part.withdraw.btn - Withdraw - - - - - templates\Parts\show_part_info.html.twig:171 - obsolete - obsolete - - - part.withdraw.comment: - Comment/Purpose - - - - - templates\Parts\show_part_info.html.twig:189 - obsolete - obsolete - - - part.add.caption - Add parts - - templates\Parts\show_part_info.html.twig:194 @@ -7532,28 +7396,6 @@ Element 1 -> Element 1.2 Add - - - templates\Parts\show_part_info.html.twig:199 - obsolete - obsolete - - - part.add.comment - Comment/Purpose - - - - - templates\AdminPages\CompanyAdminBase.html.twig:15 - obsolete - obsolete - - - admin.comment - Notes - - src\Form\PartType.php:83 @@ -7565,69 +7407,6 @@ Element 1 -> Element 1.2 Manufacturer link - - - src\Form\PartType.php:66 - obsolete - obsolete - - - part.description.placeholder - e.g. NPN 45V 0,1A 0,5W - - - - - src\Form\PartType.php:69 - obsolete - obsolete - - - part.instock.placeholder - e.g. 10 - - - - - src\Form\PartType.php:72 - obsolete - obsolete - - - part.mininstock.placeholder - e.g. 5 - - - - - obsolete - obsolete - - - part.order.price_per - Price per - - - - - obsolete - obsolete - - - part.withdraw.caption - Withdraw parts - - - - - obsolete - obsolete - - - datatable.datatable.lengthMenu - _MENU_ - - obsolete @@ -8620,15 +8399,6 @@ Element 1 -> Element 1.2 Show old element versions (time travel) - - - obsolete - - - tfa_u2f.key_added_successful - Security key added successfully. - - obsolete @@ -8827,12 +8597,6 @@ Element 1 -> Element 1.2 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 @@ -9091,12 +8855,6 @@ Element 1 -> Element 1.2 Your password needs to be changed! Please set a new password. - - - tree.root_node.text - Root node - - part_list.action.select_null @@ -11667,12 +11425,6 @@ Please note, that you can not impersonate a disabled user. If you try you will g Expiration date - - - api_tokens.added_date - Added at - - api_tokens.last_time_used @@ -14394,12 +14146,6 @@ Please note that this system is currently experimental, and the synonyms defined Type synonyms allow you to replace the labels of built-in data types. For example, you can rename "Footprint" to something else. - - - {{part}} - Parts - - log.element_edited.changed_fields.part_ipn_prefix From 60ff727896b4b26f10e1e87a7f7c6c4db72225d4 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Sun, 7 Dec 2025 14:09:22 +0100 Subject: [PATCH 061/235] Replace hardcoded entity type names with synonym placeholders in English and German translations (#1128) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Initial plan * Initial plan for replacing entity type names with placeholders Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Replace entity type names with synonym placeholders in English translations Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Add more synonym placeholders for storage location, project, and part patterns Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Update tree navigation labels with synonym placeholders Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Fix remaining entity type placeholders identified in code review Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Fix placeholder syntax: use [Type]/[[Type]] instead of {type}/{{type}} and add German translations Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Fix German translation to avoid awkward word concatenation with placeholder Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Use capitalized placeholders in German translations (nouns are always capitalized in German) Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Fixed length menu for datatable views * Capitalize placeholders at the beginning of sentences/titles in English translations Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Ensure that synonym placeholders get cached on a per locale level --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> Co-authored-by: Jan Böhmer --- ...ynonymsAsTranslationParametersListener.php | 14 +- ...terSynonymsAsTranslationParametersTest.php | 2 +- translations/messages.cs.xlf | 11 +- translations/messages.da.xlf | 11 +- translations/messages.de.xlf | 119 +++++---- translations/messages.el.xlf | 11 +- translations/messages.en.xlf | 243 +++++++++--------- translations/messages.es.xlf | 11 +- translations/messages.fr.xlf | 11 +- translations/messages.hu.xlf | 11 +- translations/messages.it.xlf | 11 +- translations/messages.ja.xlf | 11 +- translations/messages.nl.xlf | 11 +- translations/messages.pl.xlf | 11 +- translations/messages.ru.xlf | 11 +- translations/messages.zh.xlf | 11 +- 16 files changed, 318 insertions(+), 192 deletions(-) diff --git a/src/EventListener/RegisterSynonymsAsTranslationParametersListener.php b/src/EventListener/RegisterSynonymsAsTranslationParametersListener.php index e7ac7300..5862fa33 100644 --- a/src/EventListener/RegisterSynonymsAsTranslationParametersListener.php +++ b/src/EventListener/RegisterSynonymsAsTranslationParametersListener.php @@ -50,9 +50,9 @@ readonly class RegisterSynonymsAsTranslationParametersListener $this->translator = $translator; } - public function getSynonymPlaceholders(): array + public function getSynonymPlaceholders(string $locale): array { - return $this->cache->get('partdb_synonym_placeholders', function (ItemInterface $item) { + return $this->cache->get('partdb_synonym_placeholders' . '_' . $locale, function (ItemInterface $item) use ($locale) { $item->tag('synonyms'); @@ -62,12 +62,12 @@ readonly class RegisterSynonymsAsTranslationParametersListener foreach (ElementTypes::cases() as $elementType) { //Versions with capitalized first letter $capitalized = ucfirst($elementType->value); //We have only ASCII element type values, so this is sufficient - $placeholders['[' . $capitalized . ']'] = $this->typeNameGenerator->typeLabel($elementType); - $placeholders['[[' . $capitalized . ']]'] = $this->typeNameGenerator->typeLabelPlural($elementType); + $placeholders['[' . $capitalized . ']'] = $this->typeNameGenerator->typeLabel($elementType, $locale); + $placeholders['[[' . $capitalized . ']]'] = $this->typeNameGenerator->typeLabelPlural($elementType, $locale); //And we have lowercase versions for both - $placeholders['[' . $elementType->value . ']'] = mb_strtolower($this->typeNameGenerator->typeLabel($elementType)); - $placeholders['[[' . $elementType->value . ']]'] = mb_strtolower($this->typeNameGenerator->typeLabelPlural($elementType)); + $placeholders['[' . $elementType->value . ']'] = mb_strtolower($this->typeNameGenerator->typeLabel($elementType, $locale)); + $placeholders['[[' . $elementType->value . ']]'] = mb_strtolower($this->typeNameGenerator->typeLabelPlural($elementType, $locale)); } return $placeholders; @@ -82,7 +82,7 @@ readonly class RegisterSynonymsAsTranslationParametersListener } //Register all placeholders for synonyms - $placeholders = $this->getSynonymPlaceholders(); + $placeholders = $this->getSynonymPlaceholders($event->getRequest()->getLocale()); foreach ($placeholders as $key => $value) { $this->translator->addGlobalParameter($key, $value); } diff --git a/tests/EventListener/RegisterSynonymsAsTranslationParametersTest.php b/tests/EventListener/RegisterSynonymsAsTranslationParametersTest.php index 4f49284a..58573ae6 100644 --- a/tests/EventListener/RegisterSynonymsAsTranslationParametersTest.php +++ b/tests/EventListener/RegisterSynonymsAsTranslationParametersTest.php @@ -37,7 +37,7 @@ class RegisterSynonymsAsTranslationParametersTest extends KernelTestCase public function testGetSynonymPlaceholders(): void { - $placeholders = $this->listener->getSynonymPlaceholders(); + $placeholders = $this->listener->getSynonymPlaceholders('en'); $this->assertIsArray($placeholders); // Curly braces for lowercase versions diff --git a/translations/messages.cs.xlf b/translations/messages.cs.xlf index 26562830..096bf247 100644 --- a/translations/messages.cs.xlf +++ b/translations/messages.cs.xlf @@ -13495,5 +13495,14 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz Uživatelé + + + Do not remove! Used for datatables rendering. + + + datatable.datatable.lengthMenu + _MENU_ + + - \ No newline at end of file + diff --git a/translations/messages.da.xlf b/translations/messages.da.xlf index 11fb5438..ca536a5d 100644 --- a/translations/messages.da.xlf +++ b/translations/messages.da.xlf @@ -12164,5 +12164,14 @@ Bemærk venligst, at du ikke kan kopiere fra deaktiveret bruger. Hvis du prøver Brugere
    + + + Do not remove! Used for datatables rendering. + + + datatable.datatable.lengthMenu + _MENU_ + + - \ No newline at end of file + diff --git a/translations/messages.de.xlf b/translations/messages.de.xlf index a401724f..933214a0 100644 --- a/translations/messages.de.xlf +++ b/translations/messages.de.xlf @@ -19,7 +19,7 @@ attachment_type.edit - Bearbeite Dateityp + Bearbeite [Attachment_type]
    @@ -29,7 +29,7 @@ attachment_type.new - Neuer Dateityp + Neuer [Attachment_type] @@ -84,7 +84,7 @@ category.edit - Bearbeite Kategorie + Bearbeite [Category] @@ -94,7 +94,7 @@ category.new - Neue Kategorie + Neue [Category] @@ -134,7 +134,7 @@ currency.edit - Bearbeite Währung + Bearbeite [Currency] @@ -144,7 +144,7 @@ currency.new - Neue Währung + Neue [Currency] @@ -154,7 +154,7 @@ project.edit - Bearbeite Projekt + Bearbeite [Project] @@ -164,7 +164,7 @@ project.new - Neues Projekt + Neues [Project] @@ -394,7 +394,7 @@ footprint.edit - Bearbeite Footprint + Bearbeite [Footprint] @@ -404,7 +404,7 @@ footprint.new - Neuer Footprint + Neuer [Footprint] @@ -436,7 +436,7 @@ group.edit - Bearbeite Gruppe + Bearbeite [Group] @@ -446,7 +446,7 @@ group.new - Neue Gruppe + Neue [Group] @@ -483,7 +483,7 @@ label_profile.edit - Bearbeite Labelprofil + Bearbeite [Label_profile] @@ -493,7 +493,7 @@ label_profile.new - Neues Labelprofil + Neues [Label_profile] @@ -514,7 +514,7 @@ manufacturer.edit - Bearbeite Hersteller + Bearbeite [Manufacturer] @@ -524,7 +524,7 @@ manufacturer.new - Neuer Hersteller + Neuer [Manufacturer] @@ -565,7 +565,7 @@ storelocation.edit - Bearbeite Lagerort + Bearbeite [Storage_location] @@ -575,7 +575,7 @@ storelocation.new - Neuer Lagerort + Neuer [Storage_location] @@ -585,7 +585,7 @@ supplier.edit - Bearbeite Lieferant + Bearbeite [Supplier] @@ -595,7 +595,7 @@ supplier.new - Neuer Lieferant + Neuer [Supplier] @@ -737,7 +737,7 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs user.edit - Bearbeite Benutzer + Bearbeite [User] @@ -747,7 +747,7 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs user.new - Neuer Benutzer + Neuer [User] @@ -1781,7 +1781,7 @@ Subelemente werden beim Löschen nach oben verschoben. part.edit.title - Bearbeite Bauteil %name% + Bearbeite [Part] %name% @@ -1942,7 +1942,7 @@ Subelemente werden beim Löschen nach oben verschoben. part.new.card_title - Neues Bauteil erstellen + Neues [Part] erstellen @@ -3124,7 +3124,7 @@ Subelemente werden beim Löschen nach oben verschoben. statistics.distinct_parts_count - Anzahl verschiedener Bauteile + Anzahl verschiedener [[Part]] @@ -3135,7 +3135,7 @@ Subelemente werden beim Löschen nach oben verschoben. statistics.parts_instock_sum - Summe aller vorhanden Bauteilebestände + Summe aller vorhandenen Bestände an [[Part]] @@ -3146,7 +3146,7 @@ Subelemente werden beim Löschen nach oben verschoben. statistics.parts_with_price - Bauteile mit Preisinformationen + [[Part]] mit Preisinformationen @@ -3157,7 +3157,7 @@ Subelemente werden beim Löschen nach oben verschoben. statistics.categories_count - Anzahl Kategorien + Anzahl [[Category]] @@ -3168,7 +3168,7 @@ Subelemente werden beim Löschen nach oben verschoben. statistics.footprints_count - Anzahl Footprints + Anzahl [[Footprint]] @@ -3179,7 +3179,7 @@ Subelemente werden beim Löschen nach oben verschoben. statistics.manufacturers_count - Anzahl Hersteller + Anzahl [[Manufacturer]] @@ -3190,7 +3190,7 @@ Subelemente werden beim Löschen nach oben verschoben. statistics.storelocations_count - Anzahl Lagerorte + Anzahl [[Storage_location]] @@ -3201,7 +3201,7 @@ Subelemente werden beim Löschen nach oben verschoben. statistics.suppliers_count - Anzahl Lieferanten + Anzahl [[Supplier]] @@ -3212,7 +3212,7 @@ Subelemente werden beim Löschen nach oben verschoben. statistics.currencies_count - Anzahl Währungen + Anzahl [[Currency]] @@ -3223,7 +3223,7 @@ Subelemente werden beim Löschen nach oben verschoben. statistics.measurement_units_count - Anzahl Maßeinheiten + Anzahl [[Measurement_unit]] @@ -3234,7 +3234,7 @@ Subelemente werden beim Löschen nach oben verschoben. statistics.devices_count - Anzahl Baugruppen + Anzahl [[Project]] @@ -3245,7 +3245,7 @@ Subelemente werden beim Löschen nach oben verschoben. statistics.attachment_types_count - Anzahl Anhangstypen + Anzahl [[Attachment_type]] @@ -6138,7 +6138,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr tree.tools.edit.attachment_types - Dateitypen + [[Attachment_type]] @@ -6149,7 +6149,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr tree.tools.edit.categories - Kategorien + [[Category]] @@ -6160,7 +6160,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr tree.tools.edit.projects - Projekte + [[Project]] @@ -6171,7 +6171,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr tree.tools.edit.suppliers - Lieferanten + [[Supplier]] @@ -6182,7 +6182,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr tree.tools.edit.manufacturer - Hersteller + [[Manufacturer]] @@ -6192,7 +6192,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr tree.tools.edit.storelocation - Lagerorte + [[Storage_location]] @@ -6202,7 +6202,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr tree.tools.edit.footprint - Footprints + [[Footprint]] @@ -6212,7 +6212,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr tree.tools.edit.currency - Währungen + [[Currency]] @@ -6222,13 +6222,13 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr tree.tools.edit.measurement_unit - Maßeinheiten + [[Measurement_unit]] tree.tools.edit.part_custom_state - Benutzerdefinierter Bauteilstatus + [[Part_custom_state]] @@ -6237,7 +6237,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr tree.tools.edit.label_profile - Labelprofil + [[Label_profile]] @@ -6247,7 +6247,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr tree.tools.edit.part - Neues Bauteil + Neues [Part] @@ -6289,7 +6289,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr tree.tools.system.users - Benutzer + [[User]] @@ -6299,7 +6299,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr tree.tools.system.groups - Gruppen + [[Group]] @@ -11013,25 +11013,25 @@ Element 1 -> Element 1.2 measurement_unit.new - Neue Maßeinheit + Neue [Measurement_unit] measurement_unit.edit - Bearbeite Maßeinheit + Bearbeite [Measurement_unit] part_custom_state.new - Neuer benutzerdefinierter Bauteilstatus + Neuer [Part_custom_state] part_custom_state.edit - Bearbeite benutzerdefinierten Bauteilstatus + Bearbeite [Part_custom_state] @@ -14429,5 +14429,14 @@ Bitte beachten Sie, dass dieses System derzeit experimentell ist und die hier de Wenn aktiviert, wird eine Option zur Generierung einer IPN mit diesem globalen Präfix angeboten, das für Bauteile in allen Kategorien gilt. + + + Do not remove! Used for datatables rendering. + + + datatable.datatable.lengthMenu + _MENU_ + + - \ No newline at end of file + diff --git a/translations/messages.el.xlf b/translations/messages.el.xlf index 481f45cd..5ce8f565 100644 --- a/translations/messages.el.xlf +++ b/translations/messages.el.xlf @@ -1638,5 +1638,14 @@ Κατασκευαστές + + + Do not remove! Used for datatables rendering. + + + datatable.datatable.lengthMenu + _MENU_ + + - \ No newline at end of file + diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index a8ca83fd..0be77adb 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -19,7 +19,7 @@ attachment_type.edit - Edit file type + Edit [attachment_type]
    @@ -29,7 +29,7 @@ attachment_type.new - New file type + New [attachment_type] @@ -84,7 +84,7 @@ category.edit - Edit category + Edit [category] @@ -94,7 +94,7 @@ category.new - New category + New [category] @@ -124,7 +124,7 @@ currency.edit - Edit currency + Edit [currency] @@ -134,7 +134,7 @@ currency.new - New currency + New [currency] @@ -144,7 +144,7 @@ project.edit - Edit project + Edit [project] @@ -154,7 +154,7 @@ project.new - New project + New [project] @@ -384,7 +384,7 @@ footprint.edit - Edit footprint + Edit [footprint] @@ -394,7 +394,7 @@ footprint.new - New footprint + New [footprint] @@ -416,7 +416,7 @@ group.edit - Edit group + Edit [group] @@ -426,7 +426,7 @@ group.new - New group + New [group] @@ -454,7 +454,7 @@ label_profile.edit - Edit label profile + Edit [label_profile] @@ -464,7 +464,7 @@ label_profile.new - New label profile + New [label_profile] @@ -474,7 +474,7 @@ manufacturer.edit - Edit manufacturer + Edit [manufacturer] @@ -484,7 +484,7 @@ manufacturer.new - New manufacturer + New [manufacturer] @@ -509,7 +509,7 @@ storelocation.edit - Edit storage location + Edit [storage_location] @@ -519,7 +519,7 @@ storelocation.new - New storage location + New [storage_location] @@ -529,7 +529,7 @@ supplier.edit - Edit supplier + Edit [supplier] @@ -539,7 +539,7 @@ supplier.new - New supplier + New [supplier] @@ -672,7 +672,7 @@ The user will have to set up all two-factor authentication methods again and pri user.edit - Edit user + Edit [user] @@ -682,7 +682,7 @@ The user will have to set up all two-factor authentication methods again and pri user.new - New user + New [user] @@ -1002,7 +1002,7 @@ Sub elements will be moved upwards. entity.info.parts_count - Number of parts with this element + Number of [[part]] with this element @@ -1716,7 +1716,7 @@ Sub elements will be moved upwards. part.edit.title - Edit part + Edit [part] @@ -1727,7 +1727,7 @@ Sub elements will be moved upwards. part.edit.card_title - Edit part + Edit [part] @@ -1877,7 +1877,7 @@ Sub elements will be moved upwards. part.new.card_title - Create new part + Create new [part] @@ -1941,7 +1941,7 @@ Sub elements will be moved upwards. part.info.title - Detail info for part + Detail info for [part] @@ -2107,7 +2107,7 @@ Sub elements will be moved upwards. user.creating_user - User who created this part + User who created this [part] @@ -2145,7 +2145,7 @@ Sub elements will be moved upwards. user.last_editing_user - User who edited this part last + User who edited this [part] last @@ -2509,7 +2509,7 @@ Sub elements will be moved upwards. part.edit.btn - Edit part + Edit [part] @@ -2520,7 +2520,7 @@ Sub elements will be moved upwards. part.clone.btn - Clone part + Clone [part] @@ -2531,7 +2531,7 @@ Sub elements will be moved upwards. part.create.btn - Create new part + Create new [part] @@ -2541,7 +2541,7 @@ Sub elements will be moved upwards. part.delete.confirm_title - Do you really want to delete this part? + Do you really want to delete this [part]? @@ -2551,7 +2551,7 @@ Sub elements will be moved upwards. part.delete.message - This part and any associated information (like attachments, price information, etc.) will be deleted. This can not be undone! + This [part] and any associated information (like attachments, price information, etc.) will be deleted. This can not be undone! @@ -2561,7 +2561,7 @@ Sub elements will be moved upwards. part.delete - Delete part + Delete [part] @@ -2571,7 +2571,7 @@ Sub elements will be moved upwards. parts_list.all.title - All parts + All [[part]] @@ -2581,7 +2581,7 @@ Sub elements will be moved upwards. parts_list.category.title - Parts with category + [[Part]] with [category] @@ -2591,7 +2591,7 @@ Sub elements will be moved upwards. parts_list.footprint.title - Parts with footprint + [[Part]] with [footprint] @@ -2601,7 +2601,7 @@ Sub elements will be moved upwards. parts_list.manufacturer.title - Parts with manufacturer + [[Part]] with [manufacturer] @@ -2611,7 +2611,7 @@ Sub elements will be moved upwards. parts_list.search.title - Search Parts + Search [[part]] @@ -2621,7 +2621,7 @@ Sub elements will be moved upwards. parts_list.storelocation.title - Parts with storage locations + [[Part]] with [[storage_location]] @@ -2631,7 +2631,7 @@ Sub elements will be moved upwards. parts_list.supplier.title - Parts with supplier + [[Part]] with [supplier] @@ -3059,7 +3059,7 @@ Sub elements will be moved upwards. statistics.distinct_parts_count - Number of distinct parts + Number of distinct [[part]] @@ -3070,7 +3070,7 @@ Sub elements will be moved upwards. statistics.parts_instock_sum - Sum of all parts stocks + Sum of all [[part]] stocks @@ -3081,7 +3081,7 @@ Sub elements will be moved upwards. statistics.parts_with_price - Number of parts with price information + Number of [[part]] with price information @@ -3092,7 +3092,7 @@ Sub elements will be moved upwards. statistics.categories_count - Number of categories + Number of [[category]] @@ -3103,7 +3103,7 @@ Sub elements will be moved upwards. statistics.footprints_count - Number of footprints + Number of [[footprint]] @@ -3114,7 +3114,7 @@ Sub elements will be moved upwards. statistics.manufacturers_count - Number of manufacturers + Number of [[manufacturer]] @@ -3125,7 +3125,7 @@ Sub elements will be moved upwards. statistics.storelocations_count - Number of storage locations + Number of [[storage_location]] @@ -3136,7 +3136,7 @@ Sub elements will be moved upwards. statistics.suppliers_count - Number of suppliers + Number of [[supplier]] @@ -3147,7 +3147,7 @@ Sub elements will be moved upwards. statistics.currencies_count - Number of currencies + Number of [[currency]] @@ -3158,7 +3158,7 @@ Sub elements will be moved upwards. statistics.measurement_units_count - Number of measurement units + Number of [[measurement_unit]] @@ -3169,7 +3169,7 @@ Sub elements will be moved upwards. statistics.devices_count - Number of projects + Number of [[project]] @@ -3180,7 +3180,7 @@ Sub elements will be moved upwards. statistics.attachment_types_count - Number of attachment types + Number of [[attachment_type]] @@ -6073,7 +6073,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.edit.attachment_types - Attachment types + [[Attachment_type]] @@ -6084,7 +6084,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.edit.categories - Categories + [[Category]] @@ -6095,7 +6095,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.edit.projects - Projects + [[Project]] @@ -6106,7 +6106,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.edit.suppliers - Suppliers + [[Supplier]] @@ -6117,7 +6117,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.edit.manufacturer - Manufacturers + [[Manufacturer]] @@ -6127,7 +6127,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.edit.storelocation - Storage locations + [[Storage_location]] @@ -6137,7 +6137,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.edit.footprint - Footprints + [[Footprint]] @@ -6147,7 +6147,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.edit.currency - Currencies + [[Currency]] @@ -6157,13 +6157,13 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.edit.measurement_unit - Measurement Unit + [[Measurement_unit]] tree.tools.edit.part_custom_state - Custom part states + [[Part_custom_state]] @@ -6172,7 +6172,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.edit.label_profile - Label profiles + [[Label_profile]] @@ -6182,7 +6182,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.edit.part - New part + New [part] @@ -6193,7 +6193,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.show.all_parts - Show all parts + Show all [[part]] @@ -6224,7 +6224,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.system.users - Users + [[User]] @@ -6234,7 +6234,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.system.groups - Groups + [[Group]] @@ -6536,7 +6536,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can validator.part_lot.location_full - The storage location was marked as full, so you can not add a new part to it. + The [storage_location] was marked as full, so you can not add a new [part] to it. @@ -6546,7 +6546,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can validator.part_lot.only_existing - The storage location was marked as "only existing", so you can not add new part to it. + The [storage_location] was marked as "only existing", so you can not add new [part] to it. @@ -6556,7 +6556,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can validator.part_lot.single_part - The storage location was marked as "single part", so you can not add a new part to it. + The [storage_location] was marked as "single [part]", so you can not add a new [part] to it. @@ -6737,7 +6737,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can 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. + If this option is activated, this element can not be assigned to a [part] property. Useful if this element is just used for grouping. @@ -6777,7 +6777,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can category.edit.disable_footprints - Disable footprints + Disable [[footprint]] @@ -6787,7 +6787,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can category.edit.disable_footprints.help - If this option is activated, the footprint property is disabled for all parts with this category. + If this option is activated, the [footprint] property is disabled for all [[part]] with this [category]. @@ -6797,7 +6797,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can category.edit.disable_manufacturers - Disable manufacturers + Disable [[manufacturer]] @@ -6807,7 +6807,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can category.edit.disable_manufacturers.help - If this option is activated, the manufacturer property is disabled for all parts with this category. + If this option is activated, the [manufacturer] property is disabled for all [[part]] with this [category]. @@ -6827,7 +6827,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can category.edit.disable_autodatasheets.help - If this option is activated, no automatic links to datasheets are created for parts with this category. + If this option is activated, no automatic links to datasheets are created for [[part]] with this [category]. @@ -6847,7 +6847,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can category.edit.disable_properties.help - If this option is activated, the part properties are disabled for parts with this category. + If this option is activated, the [part] properties are disabled for [[part]] with this [category]. @@ -7182,7 +7182,7 @@ Element 1 -> Element 1.2 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. + If this option is selected, it is neither possible to add new [[part]] to this storelocation or to increase the amount of existing [[part]]. @@ -7192,7 +7192,7 @@ Element 1 -> Element 1.2 storelocation.limit_to_existing.label - Limit to existing parts + Limit to existing [[part]] @@ -7202,7 +7202,7 @@ Element 1 -> Element 1.2 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. + If this option is activated, it is not possible to add new [[part]] to this storelocation, but the amount of existing [[part]] can be increased. @@ -7212,7 +7212,7 @@ Element 1 -> Element 1.2 storelocation.only_single_part.label - Only single part + Only single [part] @@ -7222,7 +7222,7 @@ Element 1 -> Element 1.2 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. + 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. @@ -7242,7 +7242,7 @@ Element 1 -> Element 1.2 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 + You can select a [measurement_unit] here, which a [part] must have to be able to be assigned to this [storage_location] @@ -7504,7 +7504,7 @@ Element 1 -> Element 1.2 perm.part.all_parts - List all parts + List all [[part]] @@ -7514,7 +7514,7 @@ Element 1 -> Element 1.2 perm.part.no_price_parts - List parts without price info + List [[part]] without price info @@ -7524,7 +7524,7 @@ Element 1 -> Element 1.2 perm.part.obsolete_parts - List obsolete parts + List obsolete [[part]] @@ -8636,7 +8636,7 @@ Element 1 -> Element 1.2 part.table.edit.title - Edit part + Edit [part] @@ -9362,7 +9362,7 @@ Element 1 -> Element 1.2 entity.info.parts_count_recursive - Number of parts with this element or its sub elements + Number of [[part]] with this element or its sub elements @@ -9596,13 +9596,13 @@ Element 1 -> Element 1.2 project.add_parts_to_project - Add parts to project BOM + Add [[part]] to [project] BOM part.info.add_part_to_project - Add this part to a project + Add this [part] to a [project] @@ -9650,43 +9650,43 @@ Element 1 -> Element 1.2 part.new_build_part.error.build_part_already_exists - The project already has a build part! + The [project] already has a build [part]! project.edit.associated_build_part - Associated builds part + Associated builds [part] project.edit.associated_build_part.add - Add builds part + Add builds [part] project.edit.associated_build.hint - This part represents the builds of this project, which are stored somewhere. + 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 + This [part] represents the builds of the following [project] and is associated with it part.is_build_part - Is project builds part + Is [project] builds [part] project.info.title - Project info + [Project] info @@ -9884,13 +9884,13 @@ Element 1 -> Element 1.2 part_list.action.projects.generate_label - Generate labels (for parts) + Generate labels (for [[part]]) part_list.action.projects.generate_label_lot - Generate labels (for part lots) + Generate labels (for [[part_lot]]) @@ -9914,7 +9914,7 @@ Element 1 -> Element 1.2 project.builds.following_bom_entries_miss_instock - The following parts have not enough stock to build this project at least once: + The following [[part]] have not enough stock to build this [project] at least once: @@ -9938,19 +9938,19 @@ Element 1 -> Element 1.2 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: + You do not have enough [[part]] stocked to build this [project] %number_of_builds% times. The following [[part]] have missing instock: @@ -9974,7 +9974,7 @@ Element 1 -> Element 1.2 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. + Choose from which [[part_lot]] 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 [[part]], or use the top checkbox to check all boxes at once. @@ -10244,13 +10244,13 @@ Element 1 -> Element 1.2 log.element_edited.changed_fields.disable_footprints - Disable footprints + Disable [[footprint]] log.element_edited.changed_fields.disable_manufacturers - Disable manufacturers + Disable [[manufacturer]] @@ -10862,25 +10862,25 @@ Element 1 -> Element 1.2 measurement_unit.new - New Measurement Unit + New [measurement_unit] measurement_unit.edit - Edit Measurement Unit + Edit [measurement_unit] part_custom_state.new - New custom part state + New [part_custom_state] part_custom_state.edit - Edit custom part state + Edit [part_custom_state] @@ -10898,7 +10898,7 @@ Element 1 -> Element 1.2 storelocation.part_owner_must_match.label - Part Lot owner must match storage location owner + [Part_lot] owner must match [storage_location] owner @@ -10934,7 +10934,7 @@ Element 1 -> Element 1.2 part.withdraw.access_denied - Not allowed to do the desired action. Please check your permissions and the owner of the part lots. + Not allowed to do the desired action. Please check your permissions and the owner of the [[part_lot]]. @@ -10952,7 +10952,7 @@ Element 1 -> Element 1.2 log.element_edited.changed_fields.part_owner_must_match - Part owner must match storage location owner + [Part] owner must match [storage_location] owner @@ -11524,7 +11524,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g 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. + If this option is selected, the given withdraw quantities are used as given, no matter if more or less [[part]] are actually required to build this [project]. @@ -14278,5 +14278,14 @@ Please note that this system is currently experimental, and the synonyms defined If enabled, an option for to generate IPN with this global prefix, shared across parts in all categories. + + + Do not remove! Used for datatables rendering. + + + datatable.datatable.lengthMenu + _MENU_ + + - \ No newline at end of file + diff --git a/translations/messages.es.xlf b/translations/messages.es.xlf index fe96d9e8..8e3057ac 100644 --- a/translations/messages.es.xlf +++ b/translations/messages.es.xlf @@ -12336,5 +12336,14 @@ Por favor ten en cuenta que no puedes personificar a un usuario deshabilitado. S Usuarios + + + Do not remove! Used for datatables rendering. + + + datatable.datatable.lengthMenu + _MENU_ + + - \ No newline at end of file + diff --git a/translations/messages.fr.xlf b/translations/messages.fr.xlf index 4abfaa7a..7428ca38 100644 --- a/translations/messages.fr.xlf +++ b/translations/messages.fr.xlf @@ -9076,5 +9076,14 @@ exemple de ville Utilisateurs + + + Do not remove! Used for datatables rendering. + + + datatable.datatable.lengthMenu + _MENU_ + + - \ No newline at end of file + diff --git a/translations/messages.hu.xlf b/translations/messages.hu.xlf index f4dadc24..c06475ea 100644 --- a/translations/messages.hu.xlf +++ b/translations/messages.hu.xlf @@ -14049,5 +14049,14 @@ Tömeges importálási feladat alkatrészek + + + Do not remove! Used for datatables rendering. + + + datatable.datatable.lengthMenu + _MENU_ + + - \ No newline at end of file + diff --git a/translations/messages.it.xlf b/translations/messages.it.xlf index 0724355a..372ca686 100644 --- a/translations/messages.it.xlf +++ b/translations/messages.it.xlf @@ -12338,5 +12338,14 @@ Notare che non è possibile impersonare un utente disattivato. Quando si prova a Utenti + + + Do not remove! Used for datatables rendering. + + + datatable.datatable.lengthMenu + _MENU_ + + - \ No newline at end of file + diff --git a/translations/messages.ja.xlf b/translations/messages.ja.xlf index aa562a4e..569c7fc9 100644 --- a/translations/messages.ja.xlf +++ b/translations/messages.ja.xlf @@ -8813,5 +8813,14 @@ Exampletown ユーザー + + + Do not remove! Used for datatables rendering. + + + datatable.datatable.lengthMenu + _MENU_ + + - \ No newline at end of file + diff --git a/translations/messages.nl.xlf b/translations/messages.nl.xlf index 875fe4b8..58cd8599 100644 --- a/translations/messages.nl.xlf +++ b/translations/messages.nl.xlf @@ -840,5 +840,14 @@ Aangepaste staten van onderdelen + + + Do not remove! Used for datatables rendering. + + + datatable.datatable.lengthMenu + _MENU_ + + - \ No newline at end of file + diff --git a/translations/messages.pl.xlf b/translations/messages.pl.xlf index 875e5190..4fd30d6e 100644 --- a/translations/messages.pl.xlf +++ b/translations/messages.pl.xlf @@ -12191,5 +12191,14 @@ Należy pamiętać, że nie możesz udawać nieaktywnych użytkowników. Jeśli Użytkownicy + + + Do not remove! Used for datatables rendering. + + + datatable.datatable.lengthMenu + _MENU_ + + - \ No newline at end of file + diff --git a/translations/messages.ru.xlf b/translations/messages.ru.xlf index 85faf05b..3055fc31 100644 --- a/translations/messages.ru.xlf +++ b/translations/messages.ru.xlf @@ -12291,5 +12291,14 @@ Пользователи + + + Do not remove! Used for datatables rendering. + + + datatable.datatable.lengthMenu + _MENU_ + + - \ No newline at end of file + diff --git a/translations/messages.zh.xlf b/translations/messages.zh.xlf index 24dffc82..5e1c8538 100644 --- a/translations/messages.zh.xlf +++ b/translations/messages.zh.xlf @@ -12176,5 +12176,14 @@ Element 3 用户 + + + Do not remove! Used for datatables rendering. + + + datatable.datatable.lengthMenu + _MENU_ + + - \ No newline at end of file + From 6fcdc0b0c3d4658373fcbd9c963214ce8e3a1024 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 7 Dec 2025 14:12:08 +0100 Subject: [PATCH 062/235] New translations messages.en.xlf (English) --- translations/messages.en.xlf | 241 ++++++++++++++++++----------------- 1 file changed, 125 insertions(+), 116 deletions(-) diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index be59c710..92926658 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -19,7 +19,7 @@ attachment_type.edit - Edit file type + Edit [attachment_type] @@ -29,7 +29,7 @@ attachment_type.new - New file type + New [attachment_type] @@ -84,7 +84,7 @@ category.edit - Edit category + Edit [category] @@ -94,7 +94,7 @@ category.new - New category + New [category] @@ -124,7 +124,7 @@ currency.edit - Edit currency + Edit [currency] @@ -134,7 +134,7 @@ currency.new - New currency + New [currency] @@ -144,7 +144,7 @@ project.edit - Edit project + Edit [project] @@ -154,7 +154,7 @@ project.new - New project + New [project] @@ -384,7 +384,7 @@ footprint.edit - Edit footprint + Edit [footprint] @@ -394,7 +394,7 @@ footprint.new - New footprint + New [footprint] @@ -416,7 +416,7 @@ group.edit - Edit group + Edit [group] @@ -426,7 +426,7 @@ group.new - New group + New [group] @@ -454,7 +454,7 @@ label_profile.edit - Edit label profile + Edit [label_profile] @@ -464,7 +464,7 @@ label_profile.new - New label profile + New [label_profile] @@ -474,7 +474,7 @@ manufacturer.edit - Edit manufacturer + Edit [manufacturer] @@ -484,7 +484,7 @@ manufacturer.new - New manufacturer + New [manufacturer] @@ -509,7 +509,7 @@ storelocation.edit - Edit storage location + Edit [storage_location] @@ -519,7 +519,7 @@ storelocation.new - New storage location + New [storage_location] @@ -529,7 +529,7 @@ supplier.edit - Edit supplier + Edit [supplier] @@ -539,7 +539,7 @@ supplier.new - New supplier + New [supplier] @@ -672,7 +672,7 @@ The user will have to set up all two-factor authentication methods again and pri user.edit - Edit user + Edit [user] @@ -682,7 +682,7 @@ The user will have to set up all two-factor authentication methods again and pri user.new - New user + New [user] @@ -1002,7 +1002,7 @@ Sub elements will be moved upwards. entity.info.parts_count - Number of parts with this element + Number of [[part]] with this element @@ -1716,7 +1716,7 @@ Sub elements will be moved upwards. part.edit.title - Edit part + Edit [part] @@ -1727,7 +1727,7 @@ Sub elements will be moved upwards. part.edit.card_title - Edit part + Edit [part] @@ -1877,7 +1877,7 @@ Sub elements will be moved upwards. part.new.card_title - Create new part + Create new [part] @@ -1941,7 +1941,7 @@ Sub elements will be moved upwards. part.info.title - Detail info for part + Detail info for [part] @@ -2107,7 +2107,7 @@ Sub elements will be moved upwards. user.creating_user - User who created this part + User who created this [part] @@ -2145,7 +2145,7 @@ Sub elements will be moved upwards. user.last_editing_user - User who edited this part last + User who edited this [part] last @@ -2509,7 +2509,7 @@ Sub elements will be moved upwards. part.edit.btn - Edit part + Edit [part] @@ -2520,7 +2520,7 @@ Sub elements will be moved upwards. part.clone.btn - Clone part + Clone [part] @@ -2531,7 +2531,7 @@ Sub elements will be moved upwards. part.create.btn - Create new part + Create new [part] @@ -2541,7 +2541,7 @@ Sub elements will be moved upwards. part.delete.confirm_title - Do you really want to delete this part? + Do you really want to delete this [part]? @@ -2551,7 +2551,7 @@ Sub elements will be moved upwards. part.delete.message - This part and any associated information (like attachments, price information, etc.) will be deleted. This can not be undone! + This [part] and any associated information (like attachments, price information, etc.) will be deleted. This can not be undone! @@ -2561,7 +2561,7 @@ Sub elements will be moved upwards. part.delete - Delete part + Delete [part] @@ -2571,7 +2571,7 @@ Sub elements will be moved upwards. parts_list.all.title - All parts + All [[part]] @@ -2581,7 +2581,7 @@ Sub elements will be moved upwards. parts_list.category.title - Parts with category + [[Part]] with [category] @@ -2591,7 +2591,7 @@ Sub elements will be moved upwards. parts_list.footprint.title - Parts with footprint + [[Part]] with [footprint] @@ -2601,7 +2601,7 @@ Sub elements will be moved upwards. parts_list.manufacturer.title - Parts with manufacturer + [[Part]] with [manufacturer] @@ -2611,7 +2611,7 @@ Sub elements will be moved upwards. parts_list.search.title - Search Parts + Search [[part]] @@ -2621,7 +2621,7 @@ Sub elements will be moved upwards. parts_list.storelocation.title - Parts with storage locations + [[Part]] with [[storage_location]] @@ -2631,7 +2631,7 @@ Sub elements will be moved upwards. parts_list.supplier.title - Parts with supplier + [[Part]] with [supplier] @@ -3059,7 +3059,7 @@ Sub elements will be moved upwards. statistics.distinct_parts_count - Number of distinct parts + Number of distinct [[part]] @@ -3070,7 +3070,7 @@ Sub elements will be moved upwards. statistics.parts_instock_sum - Sum of all parts stocks + Sum of all [[part]] stocks @@ -3081,7 +3081,7 @@ Sub elements will be moved upwards. statistics.parts_with_price - Number of parts with price information + Number of [[part]] with price information @@ -3092,7 +3092,7 @@ Sub elements will be moved upwards. statistics.categories_count - Number of categories + Number of [[category]] @@ -3103,7 +3103,7 @@ Sub elements will be moved upwards. statistics.footprints_count - Number of footprints + Number of [[footprint]] @@ -3114,7 +3114,7 @@ Sub elements will be moved upwards. statistics.manufacturers_count - Number of manufacturers + Number of [[manufacturer]] @@ -3125,7 +3125,7 @@ Sub elements will be moved upwards. statistics.storelocations_count - Number of storage locations + Number of [[storage_location]] @@ -3136,7 +3136,7 @@ Sub elements will be moved upwards. statistics.suppliers_count - Number of suppliers + Number of [[supplier]] @@ -3147,7 +3147,7 @@ Sub elements will be moved upwards. statistics.currencies_count - Number of currencies + Number of [[currency]] @@ -3158,7 +3158,7 @@ Sub elements will be moved upwards. statistics.measurement_units_count - Number of measurement units + Number of [[measurement_unit]] @@ -3169,7 +3169,7 @@ Sub elements will be moved upwards. statistics.devices_count - Number of projects + Number of [[project]] @@ -3180,7 +3180,7 @@ Sub elements will be moved upwards. statistics.attachment_types_count - Number of attachment types + Number of [[attachment_type]] @@ -6073,7 +6073,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.edit.attachment_types - Attachment types + [[Attachment_type]] @@ -6084,7 +6084,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.edit.categories - Categories + [[Category]] @@ -6095,7 +6095,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.edit.projects - Projects + [[Project]] @@ -6106,7 +6106,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.edit.suppliers - Suppliers + [[Supplier]] @@ -6117,7 +6117,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.edit.manufacturer - Manufacturers + [[Manufacturer]] @@ -6127,7 +6127,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.edit.storelocation - Storage locations + [[Storage_location]] @@ -6137,7 +6137,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.edit.footprint - Footprints + [[Footprint]] @@ -6147,7 +6147,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.edit.currency - Currencies + [[Currency]] @@ -6157,13 +6157,13 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.edit.measurement_unit - Measurement Unit + [[Measurement_unit]] tree.tools.edit.part_custom_state - Custom part states + [[Part_custom_state]] @@ -6172,7 +6172,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.edit.label_profile - Label profiles + [[Label_profile]] @@ -6182,7 +6182,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.edit.part - New part + New [part] @@ -6193,7 +6193,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.show.all_parts - Show all parts + Show all [[part]] @@ -6224,7 +6224,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.system.users - Users + [[User]] @@ -6234,7 +6234,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can tree.tools.system.groups - Groups + [[Group]] @@ -6536,7 +6536,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can validator.part_lot.location_full - The storage location was marked as full, so you can not add a new part to it. + The [storage_location] was marked as full, so you can not add a new [part] to it. @@ -6546,7 +6546,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can validator.part_lot.only_existing - The storage location was marked as "only existing", so you can not add new part to it. + The [storage_location] was marked as "only existing", so you can not add new [part] to it. @@ -6556,7 +6556,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can validator.part_lot.single_part - The storage location was marked as "single part", so you can not add a new part to it. + The [storage_location] was marked as "single [part]", so you can not add a new [part] to it. @@ -6737,7 +6737,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can 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. + If this option is activated, this element can not be assigned to a [part] property. Useful if this element is just used for grouping. @@ -6777,7 +6777,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can category.edit.disable_footprints - Disable footprints + Disable [[footprint]] @@ -6787,7 +6787,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can category.edit.disable_footprints.help - If this option is activated, the footprint property is disabled for all parts with this category. + If this option is activated, the [footprint] property is disabled for all [[part]] with this [category]. @@ -6797,7 +6797,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can category.edit.disable_manufacturers - Disable manufacturers + Disable [[manufacturer]] @@ -6807,7 +6807,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can category.edit.disable_manufacturers.help - If this option is activated, the manufacturer property is disabled for all parts with this category. + If this option is activated, the [manufacturer] property is disabled for all [[part]] with this [category]. @@ -6827,7 +6827,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can category.edit.disable_autodatasheets.help - If this option is activated, no automatic links to datasheets are created for parts with this category. + If this option is activated, no automatic links to datasheets are created for [[part]] with this [category]. @@ -6847,7 +6847,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can category.edit.disable_properties.help - If this option is activated, the part properties are disabled for parts with this category. + If this option is activated, the [part] properties are disabled for [[part]] with this [category]. @@ -7182,7 +7182,7 @@ Element 1 -> Element 1.2 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. + If this option is selected, it is neither possible to add new [[part]] to this storelocation or to increase the amount of existing [[part]]. @@ -7192,7 +7192,7 @@ Element 1 -> Element 1.2 storelocation.limit_to_existing.label - Limit to existing parts + Limit to existing [[part]] @@ -7202,7 +7202,7 @@ Element 1 -> Element 1.2 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. + If this option is activated, it is not possible to add new [[part]] to this storelocation, but the amount of existing [[part]] can be increased. @@ -7212,7 +7212,7 @@ Element 1 -> Element 1.2 storelocation.only_single_part.label - Only single part + Only single [part] @@ -7222,7 +7222,7 @@ Element 1 -> Element 1.2 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. + 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. @@ -7242,7 +7242,7 @@ Element 1 -> Element 1.2 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 + You can select a [measurement_unit] here, which a [part] must have to be able to be assigned to this [storage_location] @@ -7504,7 +7504,7 @@ Element 1 -> Element 1.2 perm.part.all_parts - List all parts + List all [[part]] @@ -7514,7 +7514,7 @@ Element 1 -> Element 1.2 perm.part.no_price_parts - List parts without price info + List [[part]] without price info @@ -7524,7 +7524,7 @@ Element 1 -> Element 1.2 perm.part.obsolete_parts - List obsolete parts + List obsolete [[part]] @@ -8636,7 +8636,7 @@ Element 1 -> Element 1.2 part.table.edit.title - Edit part + Edit [part] @@ -9362,7 +9362,7 @@ Element 1 -> Element 1.2 entity.info.parts_count_recursive - Number of parts with this element or its sub elements + Number of [[part]] with this element or its sub elements @@ -9596,13 +9596,13 @@ Element 1 -> Element 1.2 project.add_parts_to_project - Add parts to project BOM + Add [[part]] to [project] BOM part.info.add_part_to_project - Add this part to a project + Add this [part] to a [project] @@ -9650,43 +9650,43 @@ Element 1 -> Element 1.2 part.new_build_part.error.build_part_already_exists - The project already has a build part! + The [project] already has a build [part]! project.edit.associated_build_part - Associated builds part + Associated builds [part] project.edit.associated_build_part.add - Add builds part + Add builds [part] project.edit.associated_build.hint - This part represents the builds of this project, which are stored somewhere. + 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 + This [part] represents the builds of the following [project] and is associated with it part.is_build_part - Is project builds part + Is [project] builds [part] project.info.title - Project info + [Project] info @@ -9884,13 +9884,13 @@ Element 1 -> Element 1.2 part_list.action.projects.generate_label - Generate labels (for parts) + Generate labels (for [[part]]) part_list.action.projects.generate_label_lot - Generate labels (for part lots) + Generate labels (for [[part_lot]]) @@ -9914,7 +9914,7 @@ Element 1 -> Element 1.2 project.builds.following_bom_entries_miss_instock - The following parts have not enough stock to build this project at least once: + The following [[part]] have not enough stock to build this [project] at least once: @@ -9938,19 +9938,19 @@ Element 1 -> Element 1.2 project.builds.number_of_builds_possible - You have enough stocked to build <b>%max_builds%</b> builds of this project. + You have enough stocked to build <b>%max_builds%</b> 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! + 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: + You do not have enough [[part]] stocked to build this [project] %number_of_builds% times. The following [[part]] have missing instock: @@ -9974,7 +9974,7 @@ Element 1 -> Element 1.2 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. + Choose from which [[part_lot]] 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 [[part]], or use the top checkbox to check all boxes at once. @@ -10244,13 +10244,13 @@ Element 1 -> Element 1.2 log.element_edited.changed_fields.disable_footprints - Disable footprints + Disable [[footprint]] log.element_edited.changed_fields.disable_manufacturers - Disable manufacturers + Disable [[manufacturer]] @@ -10862,25 +10862,25 @@ Element 1 -> Element 1.2 measurement_unit.new - New Measurement Unit + New [measurement_unit] measurement_unit.edit - Edit Measurement Unit + Edit [measurement_unit] part_custom_state.new - New custom part state + New [part_custom_state] part_custom_state.edit - Edit custom part state + Edit [part_custom_state] @@ -10898,7 +10898,7 @@ Element 1 -> Element 1.2 storelocation.part_owner_must_match.label - Part Lot owner must match storage location owner + [Part_lot] owner must match [storage_location] owner @@ -10934,7 +10934,7 @@ Element 1 -> Element 1.2 part.withdraw.access_denied - Not allowed to do the desired action. Please check your permissions and the owner of the part lots. + Not allowed to do the desired action. Please check your permissions and the owner of the [[part_lot]]. @@ -10952,7 +10952,7 @@ Element 1 -> Element 1.2 log.element_edited.changed_fields.part_owner_must_match - Part owner must match storage location owner + [Part] owner must match [storage_location] owner @@ -11524,7 +11524,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g 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. + If this option is selected, the given withdraw quantities are used as given, no matter if more or less [[part]] are actually required to build this [project]. @@ -14278,5 +14278,14 @@ Please note that this system is currently experimental, and the synonyms defined If enabled, an option for to generate IPN with this global prefix, shared across parts in all categories. + + + Do not remove! Used for datatables rendering. + + + datatable.datatable.lengthMenu + _MENU_ + + From 0ac23cdf21ae655d5590948a89e87478a3de6d4c Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Sun, 7 Dec 2025 18:38:59 +0100 Subject: [PATCH 063/235] Add COMPOSER_EXTRA_PACKAGES env var for runtime package installation in Docker (#1138) * Initial plan * Add COMPOSER_EXTRA_PACKAGES environment variable support for Docker containers Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Add shellcheck disable comment for intentional word splitting Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Add documentation for installing mailer packages in email.md Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Add --no-dev flag to composer require to prevent dev packages installation Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Use --no-install with require and run separate install command Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> --- .docker/frankenphp/docker-entrypoint.sh | 22 ++++++++ .docker/partdb-entrypoint.sh | 22 ++++++++ docs/installation/email.md | 64 +++++++++++++++++++++++- docs/installation/installation_docker.md | 41 ++++++++++++++- 4 files changed, 147 insertions(+), 2 deletions(-) diff --git a/.docker/frankenphp/docker-entrypoint.sh b/.docker/frankenphp/docker-entrypoint.sh index 1655af5a..56b3bc31 100644 --- a/.docker/frankenphp/docker-entrypoint.sh +++ b/.docker/frankenphp/docker-entrypoint.sh @@ -26,6 +26,28 @@ if [ "$1" = 'frankenphp' ] || [ "$1" = 'php' ] || [ "$1" = 'bin/console' ]; then composer install --prefer-dist --no-progress --no-interaction fi + # Install additional composer packages if COMPOSER_EXTRA_PACKAGES is set + if [ -n "$COMPOSER_EXTRA_PACKAGES" ]; then + echo "Installing additional composer packages: $COMPOSER_EXTRA_PACKAGES" + # Note: COMPOSER_EXTRA_PACKAGES is intentionally not quoted to allow word splitting + # This enables passing multiple package names separated by spaces + # shellcheck disable=SC2086 + composer require $COMPOSER_EXTRA_PACKAGES --no-install --no-interaction --no-progress + if [ $? -eq 0 ]; then + echo "Running composer install to install packages without dev dependencies..." + composer install --no-dev --no-interaction --no-progress --optimize-autoloader + if [ $? -eq 0 ]; then + echo "Successfully installed additional composer packages" + else + echo "Failed to install composer dependencies" + exit 1 + fi + else + echo "Failed to add additional composer packages to composer.json" + exit 1 + fi + fi + if grep -q ^DATABASE_URL= .env; then echo "Waiting for database to be ready..." ATTEMPTS_LEFT_TO_REACH_DATABASE=60 diff --git a/.docker/partdb-entrypoint.sh b/.docker/partdb-entrypoint.sh index f5071e22..61e8d1e6 100644 --- a/.docker/partdb-entrypoint.sh +++ b/.docker/partdb-entrypoint.sh @@ -39,6 +39,28 @@ if [ -d /var/www/html/var/db ]; then fi fi +# Install additional composer packages if COMPOSER_EXTRA_PACKAGES is set +if [ -n "$COMPOSER_EXTRA_PACKAGES" ]; then + echo "Installing additional composer packages: $COMPOSER_EXTRA_PACKAGES" + # Note: COMPOSER_EXTRA_PACKAGES is intentionally not quoted to allow word splitting + # This enables passing multiple package names separated by spaces + # shellcheck disable=SC2086 + sudo -E -u www-data composer require $COMPOSER_EXTRA_PACKAGES --no-install --no-interaction --no-progress + if [ $? -eq 0 ]; then + echo "Running composer install to install packages without dev dependencies..." + sudo -E -u www-data composer install --no-dev --no-interaction --no-progress --optimize-autoloader + if [ $? -eq 0 ]; then + echo "Successfully installed additional composer packages" + else + echo "Failed to install composer dependencies" + exit 1 + fi + else + echo "Failed to add additional composer packages to composer.json" + exit 1 + fi +fi + # Start PHP-FPM (the PHP_VERSION is replaced by the configured version in the Dockerfile) php-fpmPHP_VERSION -F & diff --git a/docs/installation/email.md b/docs/installation/email.md index 0418fb4a..228825a5 100644 --- a/docs/installation/email.md +++ b/docs/installation/email.md @@ -15,13 +15,75 @@ To make emails work you have to properly configure a mail provider in Part-DB. ## Configuration Part-DB uses [Symfony Mailer](https://symfony.com/doc/current/mailer.html) to send emails, which supports multiple -automatic mail providers (like MailChimp or SendGrid). If you want to use one of these providers, check the Symfony +mail providers (like Mailgun, SendGrid, or Brevo). If you want to use one of these providers, check the Symfony Mailer documentation for more information. We will only cover the configuration of an SMTP provider here, which is sufficient for most use-cases. You will need an email account, which you can use to send emails from via password-based SMTP authentication, this account should be dedicated to Part-DB. +### Using specialized mail providers (Mailgun, SendGrid, etc.) + +If you want to use a specialized mail provider like Mailgun, SendGrid, Brevo (formerly Sendinblue), Amazon SES, or +Postmark instead of SMTP, you need to install the corresponding Symfony mailer package first. + +#### Docker installation + +If you are using Part-DB in Docker, you can install additional mailer packages by setting the `COMPOSER_EXTRA_PACKAGES` +environment variable in your `docker-compose.yaml`: + +```yaml +environment: + - COMPOSER_EXTRA_PACKAGES=symfony/mailgun-mailer + - MAILER_DSN=mailgun+api://API_KEY:DOMAIN@default + - EMAIL_SENDER_EMAIL=noreply@yourdomain.com + - EMAIL_SENDER_NAME=Part-DB + - ALLOW_EMAIL_PW_RESET=1 +``` + +You can install multiple packages by separating them with spaces: + +```yaml +environment: + - COMPOSER_EXTRA_PACKAGES=symfony/mailgun-mailer symfony/sendgrid-mailer +``` + +The packages will be installed automatically when the container starts. + +Common mailer packages: +- `symfony/mailgun-mailer` - For [Mailgun](https://www.mailgun.com/) +- `symfony/sendgrid-mailer` - For [SendGrid](https://sendgrid.com/) +- `symfony/brevo-mailer` - For [Brevo](https://www.brevo.com/) (formerly Sendinblue) +- `symfony/amazon-mailer` - For [Amazon SES](https://aws.amazon.com/ses/) +- `symfony/postmark-mailer` - For [Postmark](https://postmarkapp.com/) + +#### Direct installation (non-Docker) + +If you have installed Part-DB directly on your server (not in Docker), you need to manually install the required +mailer package using composer. + +Navigate to your Part-DB installation directory and run: + +```bash +# Install the package as the web server user +sudo -u www-data composer require symfony/mailgun-mailer + +# Clear the cache +sudo -u www-data php bin/console cache:clear +``` + +Replace `symfony/mailgun-mailer` with the package you need. You can install multiple packages at once: + +```bash +sudo -u www-data composer require symfony/mailgun-mailer symfony/sendgrid-mailer +``` + +After installing the package, configure the `MAILER_DSN` in your `.env.local` file according to the provider's +documentation (see [Symfony Mailer documentation](https://symfony.com/doc/current/mailer.html) for DSN format for +each provider). + +## SMTP Configuration + To configure the SMTP provider, you have to set the following environment variables: `MAILER_DSN`: You have to provide the SMTP server address and the credentials for the email account here. The format is diff --git a/docs/installation/installation_docker.md b/docs/installation/installation_docker.md index 347c2451..b7048169 100644 --- a/docs/installation/installation_docker.md +++ b/docs/installation/installation_docker.md @@ -80,7 +80,11 @@ services: #- BANNER=This is a test banner
    with a line break # If you use a reverse proxy in front of Part-DB, you must configure the trusted proxies IP addresses here (see reverse proxy documentation for more information): - # - TRUSTED_PROXIES=127.0.0.0/8,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 + # - TRUSTED_PROXIES=127.0.0.0/8,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 + + # If you need to install additional composer packages (e.g., for specific mailer transports), you can specify them here: + # The packages will be installed automatically when the container starts + # - COMPOSER_EXTRA_PACKAGES=symfony/mailgun-mailer symfony/sendgrid-mailer ``` 4. Customize the settings by changing the environment variables (or adding new ones). See [Configuration]({% link @@ -149,6 +153,9 @@ services: # Override value if you want to show a given text on homepage. # When this is commented out the webUI can be used to configure the banner #- BANNER=This is a test banner
    with a line break + + # If you need to install additional composer packages (e.g., for specific mailer transports), you can specify them here: + # - COMPOSER_EXTRA_PACKAGES=symfony/mailgun-mailer symfony/sendgrid-mailer database: container_name: partdb_database @@ -169,6 +176,38 @@ services: ``` +### Installing additional composer packages + +If you need to use specific mailer transports or other functionality that requires additional composer packages, you can +install them automatically at container startup using the `COMPOSER_EXTRA_PACKAGES` environment variable. + +For example, if you want to use Mailgun as your email provider, you need to install the `symfony/mailgun-mailer` package. +Add the following to your docker-compose.yaml environment section: + +```yaml +environment: + - COMPOSER_EXTRA_PACKAGES=symfony/mailgun-mailer + - MAILER_DSN=mailgun+api://API_KEY:DOMAIN@default +``` + +You can specify multiple packages by separating them with spaces: + +```yaml +environment: + - COMPOSER_EXTRA_PACKAGES=symfony/mailgun-mailer symfony/sendgrid-mailer +``` + +{: .info } +> The packages will be installed when the container starts. This may increase the container startup time on the first run. +> The installed packages will persist in the container until it is recreated. + +Common mailer packages you might need: +- `symfony/mailgun-mailer` - For Mailgun email service +- `symfony/sendgrid-mailer` - For SendGrid email service +- `symfony/brevo-mailer` - For Brevo (formerly Sendinblue) email service +- `symfony/amazon-mailer` - For Amazon SES email service +- `symfony/postmark-mailer` - For Postmark email service + ### Update Part-DB You can update Part-DB by pulling the latest image and restarting the container. From 061bd9fd107a1bf7ceb610ffef95b7fce3543105 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 7 Dec 2025 18:47:27 +0100 Subject: [PATCH 064/235] Updated composer dependencies --- composer.lock | 612 ++++++++++++++++++++++--------------------- config/reference.php | 24 +- 2 files changed, 321 insertions(+), 315 deletions(-) diff --git a/composer.lock b/composer.lock index e127d1ed..8b5443d2 100644 --- a/composer.lock +++ b/composer.lock @@ -968,16 +968,16 @@ }, { "name": "api-platform/doctrine-common", - "version": "v4.2.7", + "version": "v4.2.9", "source": { "type": "git", "url": "https://github.com/api-platform/doctrine-common.git", - "reference": "76ce957843cd050ccd9119915d2cbf9eb5f5ac5c" + "reference": "281f2ef1433253ec63a4f845622639665c1d68c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/doctrine-common/zipball/76ce957843cd050ccd9119915d2cbf9eb5f5ac5c", - "reference": "76ce957843cd050ccd9119915d2cbf9eb5f5ac5c", + "url": "https://api.github.com/repos/api-platform/doctrine-common/zipball/281f2ef1433253ec63a4f845622639665c1d68c5", + "reference": "281f2ef1433253ec63a4f845622639665c1d68c5", "shasum": "" }, "require": { @@ -1052,26 +1052,26 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/doctrine-common/tree/v4.2.7" + "source": "https://github.com/api-platform/doctrine-common/tree/v4.2.9" }, - "time": "2025-11-30T12:55:42+00:00" + "time": "2025-12-04T14:20:26+00:00" }, { "name": "api-platform/doctrine-orm", - "version": "v4.2.7", + "version": "v4.2.9", "source": { "type": "git", "url": "https://github.com/api-platform/doctrine-orm.git", - "reference": "74c91e76bc2e26592f80b3f872f3f97903cc3055" + "reference": "6ea550f2db2db04979aefd654c115ecd6f897039" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/doctrine-orm/zipball/74c91e76bc2e26592f80b3f872f3f97903cc3055", - "reference": "74c91e76bc2e26592f80b3f872f3f97903cc3055", + "url": "https://api.github.com/repos/api-platform/doctrine-orm/zipball/6ea550f2db2db04979aefd654c115ecd6f897039", + "reference": "6ea550f2db2db04979aefd654c115ecd6f897039", "shasum": "" }, "require": { - "api-platform/doctrine-common": "^4.2.0-alpha.3@alpha", + "api-platform/doctrine-common": "^4.2.9", "api-platform/metadata": "^4.2", "api-platform/state": "^4.2.4", "doctrine/orm": "^2.17 || ^3.0", @@ -1139,13 +1139,13 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/doctrine-orm/tree/v4.2.7" + "source": "https://github.com/api-platform/doctrine-orm/tree/v4.2.9" }, - "time": "2025-11-30T12:55:42+00:00" + "time": "2025-12-04T14:20:26+00:00" }, { "name": "api-platform/documentation", - "version": "v4.2.7", + "version": "v4.2.9", "source": { "type": "git", "url": "https://github.com/api-platform/documentation.git", @@ -1202,13 +1202,13 @@ ], "description": "API Platform documentation controller.", "support": { - "source": "https://github.com/api-platform/documentation/tree/v4.2.7" + "source": "https://github.com/api-platform/documentation/tree/v4.2.9" }, "time": "2025-11-30T12:55:42+00:00" }, { "name": "api-platform/http-cache", - "version": "v4.2.7", + "version": "v4.2.9", "source": { "type": "git", "url": "https://github.com/api-platform/http-cache.git", @@ -1282,22 +1282,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/http-cache/tree/v4.2.7" + "source": "https://github.com/api-platform/http-cache/tree/v4.2.9" }, "time": "2025-11-30T12:55:42+00:00" }, { "name": "api-platform/hydra", - "version": "v4.2.7", + "version": "v4.2.9", "source": { "type": "git", "url": "https://github.com/api-platform/hydra.git", - "reference": "ce704a53789ac279e0f7aafac48a8b1005df36e3" + "reference": "904b3caf457aa49bc302b46b01456799fbb82304" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/hydra/zipball/ce704a53789ac279e0f7aafac48a8b1005df36e3", - "reference": "ce704a53789ac279e0f7aafac48a8b1005df36e3", + "url": "https://api.github.com/repos/api-platform/hydra/zipball/904b3caf457aa49bc302b46b01456799fbb82304", + "reference": "904b3caf457aa49bc302b46b01456799fbb82304", "shasum": "" }, "require": { @@ -1369,22 +1369,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/hydra/tree/v4.2.7" + "source": "https://github.com/api-platform/hydra/tree/v4.2.9" }, - "time": "2025-11-30T12:55:42+00:00" + "time": "2025-12-04T14:20:26+00:00" }, { "name": "api-platform/json-api", - "version": "v4.2.7", + "version": "v4.2.9", "source": { "type": "git", "url": "https://github.com/api-platform/json-api.git", - "reference": "f7a0680c1183795c46bc2e55a69acb94735cfbe9" + "reference": "0b5a7c14cc97daae2b720cf0e888059944e106df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/json-api/zipball/f7a0680c1183795c46bc2e55a69acb94735cfbe9", - "reference": "f7a0680c1183795c46bc2e55a69acb94735cfbe9", + "url": "https://api.github.com/repos/api-platform/json-api/zipball/0b5a7c14cc97daae2b720cf0e888059944e106df", + "reference": "0b5a7c14cc97daae2b720cf0e888059944e106df", "shasum": "" }, "require": { @@ -1451,22 +1451,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/json-api/tree/v4.2.7" + "source": "https://github.com/api-platform/json-api/tree/v4.2.9" }, - "time": "2025-11-30T12:55:42+00:00" + "time": "2025-12-04T14:20:26+00:00" }, { "name": "api-platform/json-schema", - "version": "v4.2.7", + "version": "v4.2.9", "source": { "type": "git", "url": "https://github.com/api-platform/json-schema.git", - "reference": "b95eec54ae0353fc068a77fe481c7f4e2e983f33" + "reference": "6a5f901a744018e48b8b94bbf798cd4f617cfcde" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/json-schema/zipball/b95eec54ae0353fc068a77fe481c7f4e2e983f33", - "reference": "b95eec54ae0353fc068a77fe481c7f4e2e983f33", + "url": "https://api.github.com/repos/api-platform/json-schema/zipball/6a5f901a744018e48b8b94bbf798cd4f617cfcde", + "reference": "6a5f901a744018e48b8b94bbf798cd4f617cfcde", "shasum": "" }, "require": { @@ -1532,13 +1532,13 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/json-schema/tree/v4.2.7" + "source": "https://github.com/api-platform/json-schema/tree/v4.2.9" }, - "time": "2025-11-30T12:55:42+00:00" + "time": "2025-12-02T13:32:19+00:00" }, { "name": "api-platform/jsonld", - "version": "v4.2.7", + "version": "v4.2.9", "source": { "type": "git", "url": "https://github.com/api-platform/jsonld.git", @@ -1612,22 +1612,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/jsonld/tree/v4.2.7" + "source": "https://github.com/api-platform/jsonld/tree/v4.2.9" }, "time": "2025-11-30T12:55:42+00:00" }, { "name": "api-platform/metadata", - "version": "v4.2.7", + "version": "v4.2.9", "source": { "type": "git", "url": "https://github.com/api-platform/metadata.git", - "reference": "68e5edff897d4f3bf95ccf1eed464d6e3900a8b2" + "reference": "c9953fbbbb02ec9f6d4ccfff30b5904c643c4c64" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/metadata/zipball/68e5edff897d4f3bf95ccf1eed464d6e3900a8b2", - "reference": "68e5edff897d4f3bf95ccf1eed464d6e3900a8b2", + "url": "https://api.github.com/repos/api-platform/metadata/zipball/c9953fbbbb02ec9f6d4ccfff30b5904c643c4c64", + "reference": "c9953fbbbb02ec9f6d4ccfff30b5904c643c4c64", "shasum": "" }, "require": { @@ -1710,13 +1710,13 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/metadata/tree/v4.2.7" + "source": "https://github.com/api-platform/metadata/tree/v4.2.9" }, - "time": "2025-11-30T13:04:03+00:00" + "time": "2025-12-04T14:20:26+00:00" }, { "name": "api-platform/openapi", - "version": "v4.2.7", + "version": "v4.2.9", "source": { "type": "git", "url": "https://github.com/api-platform/openapi.git", @@ -1800,13 +1800,13 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/openapi/tree/v4.2.7" + "source": "https://github.com/api-platform/openapi/tree/v4.2.9" }, "time": "2025-11-30T12:55:42+00:00" }, { "name": "api-platform/serializer", - "version": "v4.2.7", + "version": "v4.2.9", "source": { "type": "git", "url": "https://github.com/api-platform/serializer.git", @@ -1893,22 +1893,22 @@ "serializer" ], "support": { - "source": "https://github.com/api-platform/serializer/tree/v4.2.7" + "source": "https://github.com/api-platform/serializer/tree/v4.2.9" }, "time": "2025-11-30T12:55:42+00:00" }, { "name": "api-platform/state", - "version": "v4.2.7", + "version": "v4.2.9", "source": { "type": "git", "url": "https://github.com/api-platform/state.git", - "reference": "b46ec9e09dd6be3e44461d18097025cf449d23b6" + "reference": "ade7d1103e3fa2adec29acd723e12ece8ec58c99" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/state/zipball/b46ec9e09dd6be3e44461d18097025cf449d23b6", - "reference": "b46ec9e09dd6be3e44461d18097025cf449d23b6", + "url": "https://api.github.com/repos/api-platform/state/zipball/ade7d1103e3fa2adec29acd723e12ece8ec58c99", + "reference": "ade7d1103e3fa2adec29acd723e12ece8ec58c99", "shasum": "" }, "require": { @@ -1990,22 +1990,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/state/tree/v4.2.7" + "source": "https://github.com/api-platform/state/tree/v4.2.9" }, - "time": "2025-11-30T13:03:35+00:00" + "time": "2025-12-04T14:20:26+00:00" }, { "name": "api-platform/symfony", - "version": "v4.2.7", + "version": "v4.2.9", "source": { "type": "git", "url": "https://github.com/api-platform/symfony.git", - "reference": "1e16952c5cccbd7dd65936a4cefb66a10c72c26f" + "reference": "a5f7792da555461e2adaf4bb92d8441c3ce83241" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/symfony/zipball/1e16952c5cccbd7dd65936a4cefb66a10c72c26f", - "reference": "1e16952c5cccbd7dd65936a4cefb66a10c72c26f", + "url": "https://api.github.com/repos/api-platform/symfony/zipball/a5f7792da555461e2adaf4bb92d8441c3ce83241", + "reference": "a5f7792da555461e2adaf4bb92d8441c3ce83241", "shasum": "" }, "require": { @@ -2023,7 +2023,7 @@ "symfony/asset": "^6.4 || ^7.0 || ^8.0", "symfony/finder": "^6.4 || ^7.0 || ^8.0", "symfony/property-access": "^6.4 || ^7.0 || ^8.0", - "symfony/property-info": "^6.4 || ^7.1", + "symfony/property-info": "^6.4 || ^7.0 || ^8.0", "symfony/security-core": "^6.4 || ^7.0 || ^8.0", "symfony/serializer": "^6.4 || ^7.0 || ^8.0", "willdurand/negotiation": "^3.1" @@ -2116,22 +2116,22 @@ "symfony" ], "support": { - "source": "https://github.com/api-platform/symfony/tree/v4.2.7" + "source": "https://github.com/api-platform/symfony/tree/v4.2.9" }, - "time": "2025-11-30T13:03:06+00:00" + "time": "2025-12-05T14:44:12+00:00" }, { "name": "api-platform/validator", - "version": "v4.2.7", + "version": "v4.2.9", "source": { "type": "git", "url": "https://github.com/api-platform/validator.git", - "reference": "a29ba03fa64f4db7522aa19d40c4fe8500b3f160" + "reference": "850035ba6165e2452c1777bee2272205bf8c771e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/validator/zipball/a29ba03fa64f4db7522aa19d40c4fe8500b3f160", - "reference": "a29ba03fa64f4db7522aa19d40c4fe8500b3f160", + "url": "https://api.github.com/repos/api-platform/validator/zipball/850035ba6165e2452c1777bee2272205bf8c771e", + "reference": "850035ba6165e2452c1777bee2272205bf8c771e", "shasum": "" }, "require": { @@ -2192,9 +2192,9 @@ "validator" ], "support": { - "source": "https://github.com/api-platform/validator/tree/v4.2.7" + "source": "https://github.com/api-platform/validator/tree/v4.2.9" }, - "time": "2025-11-30T12:55:42+00:00" + "time": "2025-12-04T14:20:26+00:00" }, { "name": "beberlei/assert", @@ -2990,16 +2990,16 @@ }, { "name": "doctrine/dbal", - "version": "4.4.0", + "version": "4.4.1", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "e8c5163fbec0f34e357431bd1e5fc4056cdf4fdc" + "reference": "3d544473fb93f5c25b483ea4f4ce99f8c4d9d44c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/e8c5163fbec0f34e357431bd1e5fc4056cdf4fdc", - "reference": "e8c5163fbec0f34e357431bd1e5fc4056cdf4fdc", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/3d544473fb93f5c25b483ea4f4ce99f8c4d9d44c", + "reference": "3d544473fb93f5c25b483ea4f4ce99f8c4d9d44c", "shasum": "" }, "require": { @@ -3076,7 +3076,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/4.4.0" + "source": "https://github.com/doctrine/dbal/tree/4.4.1" }, "funding": [ { @@ -3092,7 +3092,7 @@ "type": "tidelift" } ], - "time": "2025-11-29T12:17:09+00:00" + "time": "2025-12-04T10:11:03+00:00" }, { "name": "doctrine/deprecations", @@ -5376,16 +5376,16 @@ }, { "name": "knpuniversity/oauth2-client-bundle", - "version": "v2.20.0", + "version": "v2.20.1", "source": { "type": "git", "url": "https://github.com/knpuniversity/oauth2-client-bundle.git", - "reference": "cee929516df679473b42765ed3d50c5aa7e9a837" + "reference": "d59e4dc61484e777b6f19df2efcf8b1bcc03828a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/knpuniversity/oauth2-client-bundle/zipball/cee929516df679473b42765ed3d50c5aa7e9a837", - "reference": "cee929516df679473b42765ed3d50c5aa7e9a837", + "url": "https://api.github.com/repos/knpuniversity/oauth2-client-bundle/zipball/d59e4dc61484e777b6f19df2efcf8b1bcc03828a", + "reference": "d59e4dc61484e777b6f19df2efcf8b1bcc03828a", "shasum": "" }, "require": { @@ -5430,9 +5430,9 @@ ], "support": { "issues": "https://github.com/knpuniversity/oauth2-client-bundle/issues", - "source": "https://github.com/knpuniversity/oauth2-client-bundle/tree/v2.20.0" + "source": "https://github.com/knpuniversity/oauth2-client-bundle/tree/v2.20.1" }, - "time": "2025-11-07T10:44:56+00:00" + "time": "2025-12-04T15:46:43+00:00" }, { "name": "lcobucci/clock", @@ -6274,29 +6274,30 @@ }, { "name": "liip/imagine-bundle", - "version": "2.15.0", + "version": "2.16.0", "source": { "type": "git", "url": "https://github.com/liip/LiipImagineBundle.git", - "reference": "f8c98a5a962806f26571db219412b64266c763d8" + "reference": "335121ef65d9841af9b40a850aa143cd6b61f847" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/liip/LiipImagineBundle/zipball/f8c98a5a962806f26571db219412b64266c763d8", - "reference": "f8c98a5a962806f26571db219412b64266c763d8", + "url": "https://api.github.com/repos/liip/LiipImagineBundle/zipball/335121ef65d9841af9b40a850aa143cd6b61f847", + "reference": "335121ef65d9841af9b40a850aa143cd6b61f847", "shasum": "" }, "require": { "ext-mbstring": "*", "imagine/imagine": "^1.3.2", "php": "^7.2|^8.0", + "symfony/dependency-injection": "^5.4|^6.4|^7.4|^8.0", "symfony/deprecation-contracts": "^2.5 || ^3", - "symfony/filesystem": "^3.4|^4.4|^5.3|^6.0|^7.0", - "symfony/finder": "^3.4|^4.4|^5.3|^6.0|^7.0", - "symfony/framework-bundle": "^3.4.23|^4.4|^5.3|^6.0|^7.0", - "symfony/mime": "^4.4|^5.3|^6.0|^7.0", - "symfony/options-resolver": "^3.4|^4.4|^5.3|^6.0|^7.0", - "symfony/process": "^3.4|^4.4|^5.3|^6.0|^7.0", + "symfony/filesystem": "^5.4|^6.4|^7.3|^8.0", + "symfony/finder": "^5.4|^6.4|^7.3|^8.0", + "symfony/framework-bundle": "^5.4|^6.4|^7.3|^8.0", + "symfony/mime": "^5.4|^6.4|^7.3|^8.0", + "symfony/options-resolver": "^5.4|^6.4|^7.3|^8.0", + "symfony/process": "^5.4|^6.4|^7.3|^8.0", "twig/twig": "^1.44|^2.9|^3.0" }, "require-dev": { @@ -6310,17 +6311,16 @@ "phpstan/phpstan": "^1.10.0", "psr/cache": "^1.0|^2.0|^3.0", "psr/log": "^1.0", - "symfony/asset": "^3.4|^4.4|^5.3|^6.0|^7.0", - "symfony/browser-kit": "^3.4|^4.4|^5.3|^6.0|^7.0", - "symfony/cache": "^3.4|^4.4|^5.3|^6.0|^7.0", - "symfony/console": "^3.4|^4.4|^5.3|^6.0|^7.0", - "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": "^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" + "symfony/asset": "^5.4|^6.4|^7.3|^8.0", + "symfony/browser-kit": "^5.4|^6.4|^7.3|^8.0", + "symfony/cache": "^5.4|^6.4|^7.3|^8.0", + "symfony/console": "^5.4|^6.4|^7.3|^8.0", + "symfony/form": "^5.4|^6.4|^7.3|^8.0", + "symfony/messenger": "^5.4|^6.4|^7.3|^8.0", + "symfony/phpunit-bridge": "^7.3", + "symfony/templating": "^5.4|^6.4|^7.3|^8.0", + "symfony/validator": "^5.4|^6.4|^7.3|^8.0", + "symfony/yaml": "^5.4|^6.4|^7.3|^8.0" }, "suggest": { "alcaeus/mongo-php-adapter": "required for mongodb components", @@ -6375,9 +6375,9 @@ ], "support": { "issues": "https://github.com/liip/LiipImagineBundle/issues", - "source": "https://github.com/liip/LiipImagineBundle/tree/2.15.0" + "source": "https://github.com/liip/LiipImagineBundle/tree/2.16.0" }, - "time": "2025-10-09T06:49:28+00:00" + "time": "2025-12-01T10:49:05+00:00" }, { "name": "lorenzo/pinky", @@ -7189,20 +7189,20 @@ }, { "name": "nette/utils", - "version": "v4.0.9", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "505a30ad386daa5211f08a318e47015b501cad30" + "reference": "fa1f0b8261ed150447979eb22e373b7b7ad5a8e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/505a30ad386daa5211f08a318e47015b501cad30", - "reference": "505a30ad386daa5211f08a318e47015b501cad30", + "url": "https://api.github.com/repos/nette/utils/zipball/fa1f0b8261ed150447979eb22e373b7b7ad5a8e0", + "reference": "fa1f0b8261ed150447979eb22e373b7b7ad5a8e0", "shasum": "" }, "require": { - "php": "8.0 - 8.5" + "php": "8.2 - 8.5" }, "conflict": { "nette/finder": "<3", @@ -7225,7 +7225,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -7272,9 +7272,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.9" + "source": "https://github.com/nette/utils/tree/v4.1.0" }, - "time": "2025-10-31T00:45:47+00:00" + "time": "2025-12-01T17:49:23+00:00" }, { "name": "nikolaposa/version", @@ -9584,7 +9584,7 @@ }, { "name": "scheb/2fa-backup-code", - "version": "v7.12.1", + "version": "v7.13.0", "source": { "type": "git", "url": "https://github.com/scheb/2fa-backup-code.git", @@ -9627,22 +9627,22 @@ "two-step" ], "support": { - "source": "https://github.com/scheb/2fa-backup-code/tree/v7.12.1" + "source": "https://github.com/scheb/2fa-backup-code/tree/v7.13.0" }, "time": "2025-11-20T13:35:24+00:00" }, { "name": "scheb/2fa-bundle", - "version": "v7.12.1", + "version": "v7.13.0", "source": { "type": "git", "url": "https://github.com/scheb/2fa-bundle.git", - "reference": "2056c313e4ceff8098f970d99d428ddd2a3bfbf5" + "reference": "c4bbc31e8270cd18e88baf060157edd03ebf203d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scheb/2fa-bundle/zipball/2056c313e4ceff8098f970d99d428ddd2a3bfbf5", - "reference": "2056c313e4ceff8098f970d99d428ddd2a3bfbf5", + "url": "https://api.github.com/repos/scheb/2fa-bundle/zipball/c4bbc31e8270cd18e88baf060157edd03ebf203d", + "reference": "c4bbc31e8270cd18e88baf060157edd03ebf203d", "shasum": "" }, "require": { @@ -9695,22 +9695,22 @@ "two-step" ], "support": { - "source": "https://github.com/scheb/2fa-bundle/tree/v7.12.1" + "source": "https://github.com/scheb/2fa-bundle/tree/v7.13.0" }, - "time": "2025-11-25T15:24:27+00:00" + "time": "2025-12-04T15:55:14+00:00" }, { "name": "scheb/2fa-google-authenticator", - "version": "v7.12.1", + "version": "v7.13.0", "source": { "type": "git", "url": "https://github.com/scheb/2fa-google-authenticator.git", - "reference": "230cf3404d56f3311a6b2da0c161db33941dba2f" + "reference": "7ad34bbde343a0770571464127ee072aacb70a58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scheb/2fa-google-authenticator/zipball/230cf3404d56f3311a6b2da0c161db33941dba2f", - "reference": "230cf3404d56f3311a6b2da0c161db33941dba2f", + "url": "https://api.github.com/repos/scheb/2fa-google-authenticator/zipball/7ad34bbde343a0770571464127ee072aacb70a58", + "reference": "7ad34bbde343a0770571464127ee072aacb70a58", "shasum": "" }, "require": { @@ -9718,6 +9718,9 @@ "scheb/2fa-bundle": "self.version", "spomky-labs/otphp": "^11.0" }, + "suggest": { + "symfony/validator": "Needed if you want to use the Google Authenticator TOTP validator constraint" + }, "type": "library", "autoload": { "psr-4": { @@ -9745,22 +9748,22 @@ "two-step" ], "support": { - "source": "https://github.com/scheb/2fa-google-authenticator/tree/v7.12.1" + "source": "https://github.com/scheb/2fa-google-authenticator/tree/v7.13.0" }, - "time": "2025-11-20T13:35:24+00:00" + "time": "2025-12-04T15:55:14+00:00" }, { "name": "scheb/2fa-trusted-device", - "version": "v7.12.1", + "version": "v7.13.0", "source": { "type": "git", "url": "https://github.com/scheb/2fa-trusted-device.git", - "reference": "e1026a977d9cdb794f349b828ab956e9341d7790" + "reference": "ae3a5819faccbf151af078f432e4e6c97bb44ebf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scheb/2fa-trusted-device/zipball/e1026a977d9cdb794f349b828ab956e9341d7790", - "reference": "e1026a977d9cdb794f349b828ab956e9341d7790", + "url": "https://api.github.com/repos/scheb/2fa-trusted-device/zipball/ae3a5819faccbf151af078f432e4e6c97bb44ebf", + "reference": "ae3a5819faccbf151af078f432e4e6c97bb44ebf", "shasum": "" }, "require": { @@ -9796,9 +9799,9 @@ "two-step" ], "support": { - "source": "https://github.com/scheb/2fa-trusted-device/tree/v7.12.1" + "source": "https://github.com/scheb/2fa-trusted-device/tree/v7.13.0" }, - "time": "2025-11-20T13:35:24+00:00" + "time": "2025-12-01T15:40:59+00:00" }, { "name": "shivas/versioning-bundle", @@ -10286,16 +10289,16 @@ }, { "name": "symfony/cache", - "version": "v7.4.0", + "version": "v7.4.1", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "a7a1325a5de2e54ddb45fda002ff528162e48293" + "reference": "21e0755783bbbab58f2bb6a7a57896d21d27a366" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/a7a1325a5de2e54ddb45fda002ff528162e48293", - "reference": "a7a1325a5de2e54ddb45fda002ff528162e48293", + "url": "https://api.github.com/repos/symfony/cache/zipball/21e0755783bbbab58f2bb6a7a57896d21d27a366", + "reference": "21e0755783bbbab58f2bb6a7a57896d21d27a366", "shasum": "" }, "require": { @@ -10366,7 +10369,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.4.0" + "source": "https://github.com/symfony/cache/tree/v7.4.1" }, "funding": [ { @@ -10386,7 +10389,7 @@ "type": "tidelift" } ], - "time": "2025-11-16T10:14:42+00:00" + "time": "2025-12-04T18:11:45+00:00" }, { "name": "symfony/cache-contracts", @@ -10544,16 +10547,16 @@ }, { "name": "symfony/config", - "version": "v7.4.0", + "version": "v7.4.1", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "f76c74e93bce2b9285f2dad7fbd06fa8182a7a41" + "reference": "2c323304c354a43a48b61c5fa760fc4ed60ce495" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/f76c74e93bce2b9285f2dad7fbd06fa8182a7a41", - "reference": "f76c74e93bce2b9285f2dad7fbd06fa8182a7a41", + "url": "https://api.github.com/repos/symfony/config/zipball/2c323304c354a43a48b61c5fa760fc4ed60ce495", + "reference": "2c323304c354a43a48b61c5fa760fc4ed60ce495", "shasum": "" }, "require": { @@ -10599,7 +10602,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/v7.4.0" + "source": "https://github.com/symfony/config/tree/v7.4.1" }, "funding": [ { @@ -10619,20 +10622,20 @@ "type": "tidelift" } ], - "time": "2025-11-27T13:27:24+00:00" + "time": "2025-12-05T07:52:08+00:00" }, { "name": "symfony/console", - "version": "v7.4.0", + "version": "v7.4.1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "0bc0f45254b99c58d45a8fbf9fb955d46cbd1bb8" + "reference": "6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/0bc0f45254b99c58d45a8fbf9fb955d46cbd1bb8", - "reference": "0bc0f45254b99c58d45a8fbf9fb955d46cbd1bb8", + "url": "https://api.github.com/repos/symfony/console/zipball/6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e", + "reference": "6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e", "shasum": "" }, "require": { @@ -10697,7 +10700,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.4.0" + "source": "https://github.com/symfony/console/tree/v7.4.1" }, "funding": [ { @@ -10717,7 +10720,7 @@ "type": "tidelift" } ], - "time": "2025-11-27T13:27:24+00:00" + "time": "2025-12-05T15:23:39+00:00" }, { "name": "symfony/css-selector", @@ -10790,16 +10793,16 @@ }, { "name": "symfony/dependency-injection", - "version": "v7.4.0", + "version": "v7.4.1", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "3972ca7bbd649467b21a54870721b9e9f3652f9b" + "reference": "a09a0a424008e48bc68b1998648f2b4cab9e94c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/3972ca7bbd649467b21a54870721b9e9f3652f9b", - "reference": "3972ca7bbd649467b21a54870721b9e9f3652f9b", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/a09a0a424008e48bc68b1998648f2b4cab9e94c7", + "reference": "a09a0a424008e48bc68b1998648f2b4cab9e94c7", "shasum": "" }, "require": { @@ -10850,7 +10853,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/v7.4.0" + "source": "https://github.com/symfony/dependency-injection/tree/v7.4.1" }, "funding": [ { @@ -10870,7 +10873,7 @@ "type": "tidelift" } ], - "time": "2025-11-27T13:27:24+00:00" + "time": "2025-12-07T09:37:31+00:00" }, { "name": "symfony/deprecation-contracts", @@ -10941,16 +10944,16 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v7.4.0", + "version": "v7.4.1", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "7b511891a81ca14e993b6c88fd35d6bf656085f7" + "reference": "7acd7ce1b71601b25d698bc2da6b52e43f3c72b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/7b511891a81ca14e993b6c88fd35d6bf656085f7", - "reference": "7b511891a81ca14e993b6c88fd35d6bf656085f7", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/7acd7ce1b71601b25d698bc2da6b52e43f3c72b3", + "reference": "7acd7ce1b71601b25d698bc2da6b52e43f3c72b3", "shasum": "" }, "require": { @@ -11030,7 +11033,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v7.4.0" + "source": "https://github.com/symfony/doctrine-bridge/tree/v7.4.1" }, "funding": [ { @@ -11050,20 +11053,20 @@ "type": "tidelift" } ], - "time": "2025-11-04T03:05:49+00:00" + "time": "2025-12-04T17:15:58+00:00" }, { "name": "symfony/dom-crawler", - "version": "v7.4.0", + "version": "v7.4.1", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "8f3e7464fe7e77294686e935956a6a8ccf7442c4" + "reference": "0c5e8f20c74c78172a8ee72b125909b505033597" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/8f3e7464fe7e77294686e935956a6a8ccf7442c4", - "reference": "8f3e7464fe7e77294686e935956a6a8ccf7442c4", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/0c5e8f20c74c78172a8ee72b125909b505033597", + "reference": "0c5e8f20c74c78172a8ee72b125909b505033597", "shasum": "" }, "require": { @@ -11102,7 +11105,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v7.4.0" + "source": "https://github.com/symfony/dom-crawler/tree/v7.4.1" }, "funding": [ { @@ -11122,7 +11125,7 @@ "type": "tidelift" } ], - "time": "2025-10-31T09:30:03+00:00" + "time": "2025-12-06T15:47:47+00:00" }, { "name": "symfony/dotenv", @@ -11726,16 +11729,16 @@ }, { "name": "symfony/form", - "version": "v7.4.0", + "version": "v7.4.1", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "00b8d61709b323749aef317950abd276f309597b" + "reference": "04984c79b08c70dc106498fc250917060d88aee2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/00b8d61709b323749aef317950abd276f309597b", - "reference": "00b8d61709b323749aef317950abd276f309597b", + "url": "https://api.github.com/repos/symfony/form/zipball/04984c79b08c70dc106498fc250917060d88aee2", + "reference": "04984c79b08c70dc106498fc250917060d88aee2", "shasum": "" }, "require": { @@ -11805,7 +11808,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v7.4.0" + "source": "https://github.com/symfony/form/tree/v7.4.1" }, "funding": [ { @@ -11825,20 +11828,20 @@ "type": "tidelift" } ], - "time": "2025-11-20T12:20:24+00:00" + "time": "2025-12-05T14:04:53+00:00" }, { "name": "symfony/framework-bundle", - "version": "v7.4.0", + "version": "v7.4.1", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "3c62a3437267ac55bcd40175689c74772250e943" + "reference": "2fa3b3ad6ed75ce0cc8cad8a5027b4f25b990bc3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/3c62a3437267ac55bcd40175689c74772250e943", - "reference": "3c62a3437267ac55bcd40175689c74772250e943", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/2fa3b3ad6ed75ce0cc8cad8a5027b4f25b990bc3", + "reference": "2fa3b3ad6ed75ce0cc8cad8a5027b4f25b990bc3", "shasum": "" }, "require": { @@ -11963,7 +11966,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/v7.4.0" + "source": "https://github.com/symfony/framework-bundle/tree/v7.4.1" }, "funding": [ { @@ -11983,20 +11986,20 @@ "type": "tidelift" } ], - "time": "2025-11-27T13:27:24+00:00" + "time": "2025-12-05T14:04:53+00:00" }, { "name": "symfony/http-client", - "version": "v7.4.0", + "version": "v7.4.1", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "ee5e0e0139ab506f6063a230e631bed677c650a4" + "reference": "26cc224ea7103dda90e9694d9e139a389092d007" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/ee5e0e0139ab506f6063a230e631bed677c650a4", - "reference": "ee5e0e0139ab506f6063a230e631bed677c650a4", + "url": "https://api.github.com/repos/symfony/http-client/zipball/26cc224ea7103dda90e9694d9e139a389092d007", + "reference": "26cc224ea7103dda90e9694d9e139a389092d007", "shasum": "" }, "require": { @@ -12064,7 +12067,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v7.4.0" + "source": "https://github.com/symfony/http-client/tree/v7.4.1" }, "funding": [ { @@ -12084,7 +12087,7 @@ "type": "tidelift" } ], - "time": "2025-11-20T12:32:50+00:00" + "time": "2025-12-04T21:12:57+00:00" }, { "name": "symfony/http-client-contracts", @@ -12166,16 +12169,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.4.0", + "version": "v7.4.1", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "769c1720b68e964b13b58529c17d4a385c62167b" + "reference": "bd1af1e425811d6f077db240c3a588bdb405cd27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/769c1720b68e964b13b58529c17d4a385c62167b", - "reference": "769c1720b68e964b13b58529c17d4a385c62167b", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/bd1af1e425811d6f077db240c3a588bdb405cd27", + "reference": "bd1af1e425811d6f077db240c3a588bdb405cd27", "shasum": "" }, "require": { @@ -12224,7 +12227,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.4.0" + "source": "https://github.com/symfony/http-foundation/tree/v7.4.1" }, "funding": [ { @@ -12244,20 +12247,20 @@ "type": "tidelift" } ], - "time": "2025-11-13T08:49:24+00:00" + "time": "2025-12-07T11:13:10+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.4.0", + "version": "v7.4.1", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "7348193cd384495a755554382e4526f27c456085" + "reference": "171d2ec4002012a023e042c6041d7fde58b143c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/7348193cd384495a755554382e4526f27c456085", - "reference": "7348193cd384495a755554382e4526f27c456085", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/171d2ec4002012a023e042c6041d7fde58b143c6", + "reference": "171d2ec4002012a023e042c6041d7fde58b143c6", "shasum": "" }, "require": { @@ -12343,7 +12346,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/v7.4.0" + "source": "https://github.com/symfony/http-kernel/tree/v7.4.1" }, "funding": [ { @@ -12363,7 +12366,7 @@ "type": "tidelift" } ], - "time": "2025-11-27T13:38:24+00:00" + "time": "2025-12-07T16:28:51+00:00" }, { "name": "symfony/intl", @@ -13834,23 +13837,23 @@ }, { "name": "symfony/property-info", - "version": "v7.4.0", + "version": "v7.4.1", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "c3c686e3d3a33a99f6967e69d6d5832acb7c25a1" + "reference": "912aafe70bee5cfd09fec5916fe35b83f04ae6ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/c3c686e3d3a33a99f6967e69d6d5832acb7c25a1", - "reference": "c3c686e3d3a33a99f6967e69d6d5832acb7c25a1", + "url": "https://api.github.com/repos/symfony/property-info/zipball/912aafe70bee5cfd09fec5916fe35b83f04ae6ae", + "reference": "912aafe70bee5cfd09fec5916fe35b83f04ae6ae", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/string": "^6.4|^7.0|^8.0", - "symfony/type-info": "^7.3.5|^8.0" + "symfony/type-info": "~7.3.8|^7.4.1|^8.0.1" }, "conflict": { "phpdocumentor/reflection-docblock": "<5.2", @@ -13900,7 +13903,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.4.0" + "source": "https://github.com/symfony/property-info/tree/v7.4.1" }, "funding": [ { @@ -13920,7 +13923,7 @@ "type": "tidelift" } ], - "time": "2025-11-13T08:38:49+00:00" + "time": "2025-12-05T14:04:53+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -14171,16 +14174,16 @@ }, { "name": "symfony/runtime", - "version": "v7.4.0", + "version": "v7.4.1", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "e3dd6c0f46a6810b3245726e8452cee45754e628" + "reference": "876f902a6cb6b26c003de244188c06b2ba1c172f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/e3dd6c0f46a6810b3245726e8452cee45754e628", - "reference": "e3dd6c0f46a6810b3245726e8452cee45754e628", + "url": "https://api.github.com/repos/symfony/runtime/zipball/876f902a6cb6b26c003de244188c06b2ba1c172f", + "reference": "876f902a6cb6b26c003de244188c06b2ba1c172f", "shasum": "" }, "require": { @@ -14230,7 +14233,7 @@ "runtime" ], "support": { - "source": "https://github.com/symfony/runtime/tree/v7.4.0" + "source": "https://github.com/symfony/runtime/tree/v7.4.1" }, "funding": [ { @@ -14250,7 +14253,7 @@ "type": "tidelift" } ], - "time": "2025-11-04T03:05:49+00:00" + "time": "2025-12-05T14:04:53+00:00" }, { "name": "symfony/security-bundle", @@ -14531,16 +14534,16 @@ }, { "name": "symfony/security-http", - "version": "v7.4.0", + "version": "v7.4.1", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "92f9cc6494f3d29042ac35c2ee5209191bbbb781" + "reference": "46a4432ad2fab65735216d113e18f1f9eb6d28ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/92f9cc6494f3d29042ac35c2ee5209191bbbb781", - "reference": "92f9cc6494f3d29042ac35c2ee5209191bbbb781", + "url": "https://api.github.com/repos/symfony/security-http/zipball/46a4432ad2fab65735216d113e18f1f9eb6d28ea", + "reference": "46a4432ad2fab65735216d113e18f1f9eb6d28ea", "shasum": "" }, "require": { @@ -14599,7 +14602,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v7.4.0" + "source": "https://github.com/symfony/security-http/tree/v7.4.1" }, "funding": [ { @@ -14619,7 +14622,7 @@ "type": "tidelift" } ], - "time": "2025-11-27T13:27:24+00:00" + "time": "2025-12-05T08:41:26+00:00" }, { "name": "symfony/serializer", @@ -15225,16 +15228,16 @@ }, { "name": "symfony/twig-bridge", - "version": "v7.4.0", + "version": "v7.4.1", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "e96998da928007554b8b8c02e677861877daced9" + "reference": "9103559ef3e9f06708d8bff6810f6335b8f1eee8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/e96998da928007554b8b8c02e677861877daced9", - "reference": "e96998da928007554b8b8c02e677861877daced9", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/9103559ef3e9f06708d8bff6810f6335b8f1eee8", + "reference": "9103559ef3e9f06708d8bff6810f6335b8f1eee8", "shasum": "" }, "require": { @@ -15266,7 +15269,7 @@ "symfony/emoji": "^7.1|^8.0", "symfony/expression-language": "^6.4|^7.0|^8.0", "symfony/finder": "^6.4|^7.0|^8.0", - "symfony/form": "^6.4.20|^7.2.5|^8.0", + "symfony/form": "^6.4.30|~7.3.8|^7.4.1|^8.0.1", "symfony/html-sanitizer": "^6.4|^7.0|^8.0", "symfony/http-foundation": "^7.3|^8.0", "symfony/http-kernel": "^6.4|^7.0|^8.0", @@ -15316,7 +15319,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v7.4.0" + "source": "https://github.com/symfony/twig-bridge/tree/v7.4.1" }, "funding": [ { @@ -15336,7 +15339,7 @@ "type": "tidelift" } ], - "time": "2025-11-05T14:29:59+00:00" + "time": "2025-12-05T14:04:53+00:00" }, { "name": "symfony/twig-bundle", @@ -15429,16 +15432,16 @@ }, { "name": "symfony/type-info", - "version": "v7.4.0", + "version": "v7.4.1", "source": { "type": "git", "url": "https://github.com/symfony/type-info.git", - "reference": "7f9743e921abcce92a03fc693530209c59e73076" + "reference": "ac5ab66b21c758df71b7210cf1033d1ac807f202" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/type-info/zipball/7f9743e921abcce92a03fc693530209c59e73076", - "reference": "7f9743e921abcce92a03fc693530209c59e73076", + "url": "https://api.github.com/repos/symfony/type-info/zipball/ac5ab66b21c758df71b7210cf1033d1ac807f202", + "reference": "ac5ab66b21c758df71b7210cf1033d1ac807f202", "shasum": "" }, "require": { @@ -15488,7 +15491,7 @@ "type" ], "support": { - "source": "https://github.com/symfony/type-info/tree/v7.4.0" + "source": "https://github.com/symfony/type-info/tree/v7.4.1" }, "funding": [ { @@ -15508,7 +15511,7 @@ "type": "tidelift" } ], - "time": "2025-11-07T09:36:46+00:00" + "time": "2025-12-05T14:04:53+00:00" }, { "name": "symfony/uid", @@ -15774,16 +15777,16 @@ }, { "name": "symfony/validator", - "version": "v7.4.0", + "version": "v7.4.1", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "829d4acbecc6a9c097ca9cb118d7f96f46d33da9" + "reference": "fde121bfa6ff3c85edade1afdca204243fe1fda1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/829d4acbecc6a9c097ca9cb118d7f96f46d33da9", - "reference": "829d4acbecc6a9c097ca9cb118d7f96f46d33da9", + "url": "https://api.github.com/repos/symfony/validator/zipball/fde121bfa6ff3c85edade1afdca204243fe1fda1", + "reference": "fde121bfa6ff3c85edade1afdca204243fe1fda1", "shasum": "" }, "require": { @@ -15854,7 +15857,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.4.0" + "source": "https://github.com/symfony/validator/tree/v7.4.1" }, "funding": [ { @@ -15874,7 +15877,7 @@ "type": "tidelift" } ], - "time": "2025-11-18T13:23:20+00:00" + "time": "2025-12-05T14:04:53+00:00" }, { "name": "symfony/var-dumper", @@ -16209,16 +16212,16 @@ }, { "name": "symfony/yaml", - "version": "v7.4.0", + "version": "v7.4.1", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "6c84a4b55aee4cd02034d1c528e83f69ddf63810" + "reference": "24dd4de28d2e3988b311751ac49e684d783e2345" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/6c84a4b55aee4cd02034d1c528e83f69ddf63810", - "reference": "6c84a4b55aee4cd02034d1c528e83f69ddf63810", + "url": "https://api.github.com/repos/symfony/yaml/zipball/24dd4de28d2e3988b311751ac49e684d783e2345", + "reference": "24dd4de28d2e3988b311751ac49e684d783e2345", "shasum": "" }, "require": { @@ -16261,7 +16264,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.4.0" + "source": "https://github.com/symfony/yaml/tree/v7.4.1" }, "funding": [ { @@ -16281,7 +16284,7 @@ "type": "tidelift" } ], - "time": "2025-11-16T10:14:42+00:00" + "time": "2025-12-04T18:11:45+00:00" }, { "name": "symplify/easy-coding-standard", @@ -16346,16 +16349,16 @@ }, { "name": "tecnickcom/tc-lib-barcode", - "version": "2.4.11", + "version": "2.4.14", "source": { "type": "git", "url": "https://github.com/tecnickcom/tc-lib-barcode.git", - "reference": "c6d1060abaa9b540d7cd86ced827653196541e84" + "reference": "7faeded20731bc0ca0776c0f52052f4ba422549d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tecnickcom/tc-lib-barcode/zipball/c6d1060abaa9b540d7cd86ced827653196541e84", - "reference": "c6d1060abaa9b540d7cd86ced827653196541e84", + "url": "https://api.github.com/repos/tecnickcom/tc-lib-barcode/zipball/7faeded20731bc0ca0776c0f52052f4ba422549d", + "reference": "7faeded20731bc0ca0776c0f52052f4ba422549d", "shasum": "" }, "require": { @@ -16434,7 +16437,7 @@ ], "support": { "issues": "https://github.com/tecnickcom/tc-lib-barcode/issues", - "source": "https://github.com/tecnickcom/tc-lib-barcode/tree/2.4.11" + "source": "https://github.com/tecnickcom/tc-lib-barcode/tree/2.4.14" }, "funding": [ { @@ -16442,20 +16445,20 @@ "type": "custom" } ], - "time": "2025-11-28T18:43:32+00:00" + "time": "2025-12-04T16:37:15+00:00" }, { "name": "tecnickcom/tc-lib-color", - "version": "2.2.16", + "version": "2.2.19", "source": { "type": "git", "url": "https://github.com/tecnickcom/tc-lib-color.git", - "reference": "f11b2fd7f72ac9d49642a7af2ec854dd09a76b62" + "reference": "8191ec9906ce0695bb4f9663ec28fdd2bd4ba96d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tecnickcom/tc-lib-color/zipball/f11b2fd7f72ac9d49642a7af2ec854dd09a76b62", - "reference": "f11b2fd7f72ac9d49642a7af2ec854dd09a76b62", + "url": "https://api.github.com/repos/tecnickcom/tc-lib-color/zipball/8191ec9906ce0695bb4f9663ec28fdd2bd4ba96d", + "reference": "8191ec9906ce0695bb4f9663ec28fdd2bd4ba96d", "shasum": "" }, "require": { @@ -16503,7 +16506,7 @@ ], "support": { "issues": "https://github.com/tecnickcom/tc-lib-color/issues", - "source": "https://github.com/tecnickcom/tc-lib-color/tree/2.2.16" + "source": "https://github.com/tecnickcom/tc-lib-color/tree/2.2.19" }, "funding": [ { @@ -16511,7 +16514,7 @@ "type": "custom" } ], - "time": "2025-11-28T18:42:01+00:00" + "time": "2025-12-04T16:35:40+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -17631,16 +17634,16 @@ }, { "name": "doctrine/doctrine-fixtures-bundle", - "version": "4.3.0", + "version": "4.3.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", - "reference": "11941deb6f2899b91e8b8680b07ffe63899d864b" + "reference": "9e013ed10d49bf7746b07204d336384a7d9b5a4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/11941deb6f2899b91e8b8680b07ffe63899d864b", - "reference": "11941deb6f2899b91e8b8680b07ffe63899d864b", + "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/9e013ed10d49bf7746b07204d336384a7d9b5a4d", + "reference": "9e013ed10d49bf7746b07204d336384a7d9b5a4d", "shasum": "" }, "require": { @@ -17650,12 +17653,12 @@ "doctrine/persistence": "^2.4 || ^3.0 || ^4.0", "php": "^8.1", "psr/log": "^2 || ^3", - "symfony/config": "^6.4 || ^7.0", - "symfony/console": "^6.4 || ^7.0", - "symfony/dependency-injection": "^6.4 || ^7.0", + "symfony/config": "^6.4 || ^7.0 || ^8.0", + "symfony/console": "^6.4 || ^7.0 || ^8.0", + "symfony/dependency-injection": "^6.4 || ^7.0 || ^8.0", "symfony/deprecation-contracts": "^2.1 || ^3", - "symfony/doctrine-bridge": "^6.4.16 || ^7.1.9", - "symfony/http-kernel": "^6.4 || ^7.0" + "symfony/doctrine-bridge": "^6.4.16 || ^7.1.9 || ^8.0", + "symfony/http-kernel": "^6.4 || ^7.0 || ^8.0" }, "conflict": { "doctrine/dbal": "< 3" @@ -17697,7 +17700,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues", - "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/4.3.0" + "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/4.3.1" }, "funding": [ { @@ -17713,7 +17716,7 @@ "type": "tidelift" } ], - "time": "2025-10-20T06:18:40+00:00" + "time": "2025-12-03T16:05:42+00:00" }, { "name": "ekino/phpstan-banned-code", @@ -17913,16 +17916,16 @@ }, { "name": "nikic/php-parser", - "version": "v5.6.2", + "version": "v5.7.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "3a454ca033b9e06b63282ce19562e892747449bb" + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/3a454ca033b9e06b63282ce19562e892747449bb", - "reference": "3a454ca033b9e06b63282ce19562e892747449bb", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", "shasum": "" }, "require": { @@ -17965,9 +17968,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" }, - "time": "2025-10-21T19:32:17+00:00" + "time": "2025-12-06T11:56:16+00:00" }, { "name": "phar-io/manifest", @@ -18137,11 +18140,11 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.32", + "version": "2.1.33", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e126cad1e30a99b137b8ed75a85a676450ebb227", - "reference": "e126cad1e30a99b137b8ed75a85a676450ebb227", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9e800e6bee7d5bd02784d4c6069b48032d16224f", + "reference": "9e800e6bee7d5bd02784d4c6069b48032d16224f", "shasum": "" }, "require": { @@ -18186,20 +18189,20 @@ "type": "github" } ], - "time": "2025-11-11T15:18:17+00:00" + "time": "2025-12-05T10:24:31+00:00" }, { "name": "phpstan/phpstan-doctrine", - "version": "2.0.11", + "version": "2.0.12", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "368ad1c713a6d95763890bc2292694a603ece7c8" + "reference": "d20ee0373d22735271f1eb4d631856b5f847d399" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/368ad1c713a6d95763890bc2292694a603ece7c8", - "reference": "368ad1c713a6d95763890bc2292694a603ece7c8", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/d20ee0373d22735271f1eb4d631856b5f847d399", + "reference": "d20ee0373d22735271f1eb4d631856b5f847d399", "shasum": "" }, "require": { @@ -18257,9 +18260,9 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/2.0.11" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/2.0.12" }, - "time": "2025-11-04T09:55:35+00:00" + "time": "2025-12-01T11:34:02+00:00" }, { "name": "phpstan/phpstan-strict-rules", @@ -18717,16 +18720,16 @@ }, { "name": "phpunit/phpunit", - "version": "11.5.44", + "version": "11.5.46", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "c346885c95423eda3f65d85a194aaa24873cda82" + "reference": "75dfe79a2aa30085b7132bb84377c24062193f33" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c346885c95423eda3f65d85a194aaa24873cda82", - "reference": "c346885c95423eda3f65d85a194aaa24873cda82", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/75dfe79a2aa30085b7132bb84377c24062193f33", + "reference": "75dfe79a2aa30085b7132bb84377c24062193f33", "shasum": "" }, "require": { @@ -18798,7 +18801,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.44" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.46" }, "funding": [ { @@ -18822,20 +18825,20 @@ "type": "tidelift" } ], - "time": "2025-11-13T07:17:35+00:00" + "time": "2025-12-06T08:01:15+00:00" }, { "name": "rector/rector", - "version": "2.2.9", + "version": "2.2.11", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "0b8e49ec234877b83244d2ecd0df7a4c16471f05" + "reference": "7bd21a40b0332b93d4bfee284093d7400696902d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/0b8e49ec234877b83244d2ecd0df7a4c16471f05", - "reference": "0b8e49ec234877b83244d2ecd0df7a4c16471f05", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/7bd21a40b0332b93d4bfee284093d7400696902d", + "reference": "7bd21a40b0332b93d4bfee284093d7400696902d", "shasum": "" }, "require": { @@ -18874,7 +18877,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.2.9" + "source": "https://github.com/rectorphp/rector/tree/2.2.11" }, "funding": [ { @@ -18882,7 +18885,7 @@ "type": "github" } ], - "time": "2025-11-28T14:21:22+00:00" + "time": "2025-12-02T11:23:46+00:00" }, { "name": "roave/security-advisories", @@ -18890,12 +18893,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "3f393e137e490ecb2ac77989a692129c31192de7" + "reference": "10c1e6abcb8094a428b92e7d8c3126371f9f9126" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/3f393e137e490ecb2ac77989a692129c31192de7", - "reference": "3f393e137e490ecb2ac77989a692129c31192de7", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/10c1e6abcb8094a428b92e7d8c3126371f9f9126", + "reference": "10c1e6abcb8094a428b92e7d8c3126371f9f9126", "shasum": "" }, "conflict": { @@ -18907,6 +18910,7 @@ "aimeos/ai-admin-graphql": ">=2022.04.1,<2022.10.10|>=2023.04.1,<2023.10.6|>=2024.04.1,<2024.07.2", "aimeos/ai-admin-jsonadm": "<2020.10.13|>=2021.04.1,<2021.10.6|>=2022.04.1,<2022.10.3|>=2023.04.1,<2023.10.4|==2024.04.1", "aimeos/ai-client-html": ">=2020.04.1,<2020.10.27|>=2021.04.1,<2021.10.22|>=2022.04.1,<2022.10.13|>=2023.04.1,<2023.10.15|>=2024.04.1,<2024.04.7", + "aimeos/ai-cms-grapesjs": ">=2021.04.1,<2021.10.8|>=2022.04.1,<2022.10.9|>=2023.04.1,<2023.10.15|>=2024.04.1,<2024.10.8|>=2025.04.1,<2025.10.2", "aimeos/ai-controller-frontend": "<2020.10.15|>=2021.04.1,<2021.10.8|>=2022.04.1,<2022.10.8|>=2023.04.1,<2023.10.9|==2024.04.1", "aimeos/aimeos-core": ">=2022.04.1,<2022.10.17|>=2023.04.1,<2023.10.17|>=2024.04.1,<2024.04.7", "aimeos/aimeos-typo3": "<19.10.12|>=20,<20.10.5", @@ -18914,6 +18918,7 @@ "akaunting/akaunting": "<2.1.13", "akeneo/pim-community-dev": "<5.0.119|>=6,<6.0.53", "alextselegidis/easyappointments": "<1.5.2.0-beta1", + "alexusmai/laravel-file-manager": "<=3.3.1", "alt-design/alt-redirect": "<1.6.4", "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", "amazing/media2click": ">=1,<1.3.3", @@ -19187,7 +19192,7 @@ "georgringer/news": "<1.3.3", "geshi/geshi": "<=1.0.9.1", "getformwork/formwork": "<2.2", - "getgrav/grav": "<1.7.46", + "getgrav/grav": "<1.11.0.0-beta1", "getkirby/cms": "<3.9.8.3-dev|>=3.10,<3.10.1.2-dev|>=4,<4.7.1|>=5,<5.1.4", "getkirby/kirby": "<3.9.8.3-dev|>=3.10,<3.10.1.2-dev|>=4,<4.7.1", "getkirby/panel": "<2.5.14", @@ -19309,7 +19314,7 @@ "leantime/leantime": "<3.3", "lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3", "libreform/libreform": ">=2,<=2.0.8", - "librenms/librenms": "<2017.08.18", + "librenms/librenms": "<25.11", "liftkit/database": "<2.13.2", "lightsaml/lightsaml": "<1.3.5", "limesurvey/limesurvey": "<6.5.12", @@ -19339,8 +19344,9 @@ "marshmallow/nova-tiptap": "<5.7", "matomo/matomo": "<1.11", "matyhtf/framework": "<3.0.6", - "mautic/core": "<5.2.8|>=6.0.0.0-alpha,<6.0.5", + "mautic/core": "<5.2.9|>=6,<6.0.7", "mautic/core-lib": ">=1.0.0.0-beta,<4.4.13|>=5.0.0.0-alpha,<5.1.1", + "mautic/grapes-js-builder-bundle": ">=4,<4.4.18|>=5,<5.2.9|>=6,<6.0.7", "maximebf/debugbar": "<1.19", "mdanter/ecc": "<2", "mediawiki/abuse-filter": "<1.39.9|>=1.40,<1.41.3|>=1.42,<1.42.2", @@ -19878,7 +19884,7 @@ "type": "tidelift" } ], - "time": "2025-11-26T00:22:38+00:00" + "time": "2025-12-05T21:05:14+00:00" }, { "name": "sebastian/cli-parser", @@ -21068,16 +21074,16 @@ }, { "name": "symfony/maker-bundle", - "version": "v1.65.0", + "version": "v1.65.1", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "9a0276d7486b29cae641b4a0a85d5e5cc149bff2" + "reference": "eba30452d212769c9a5bcf0716959fd8ba1e54e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/9a0276d7486b29cae641b4a0a85d5e5cc149bff2", - "reference": "9a0276d7486b29cae641b4a0a85d5e5cc149bff2", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/eba30452d212769c9a5bcf0716959fd8ba1e54e3", + "reference": "eba30452d212769c9a5bcf0716959fd8ba1e54e3", "shasum": "" }, "require": { @@ -21142,7 +21148,7 @@ ], "support": { "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.65.0" + "source": "https://github.com/symfony/maker-bundle/tree/v1.65.1" }, "funding": [ { @@ -21162,7 +21168,7 @@ "type": "tidelift" } ], - "time": "2025-11-24T15:41:51+00:00" + "time": "2025-12-02T07:14:37+00:00" }, { "name": "symfony/phpunit-bridge", diff --git a/config/reference.php b/config/reference.php index 6ea52419..f39fefc4 100644 --- a/config/reference.php +++ b/config/reference.php @@ -474,7 +474,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * max_host_connections?: int, // The maximum number of connections to a single host. * default_options?: array{ * headers?: array, - * vars?: list, + * vars?: array, * max_redirects?: int, // The maximum number of redirects to follow. * http_version?: scalar|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. * resolve?: array, @@ -497,7 +497,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * md5?: mixed, * }, * crypto_method?: scalar|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. - * extra?: list, + * extra?: array, * rate_limiter?: scalar|null, // Rate limiter name to use for throttling requests. // Default: null * caching?: bool|array{ // Caching configuration. * enabled?: bool, // Default: false @@ -550,7 +550,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * md5?: mixed, * }, * crypto_method?: scalar|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. - * extra?: list, + * extra?: array, * rate_limiter?: scalar|null, // Rate limiter name to use for throttling requests. // Default: null * caching?: bool|array{ // Caching configuration. * enabled?: bool, // Default: false @@ -1677,6 +1677,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * post_processors?: array>, * }, * } + * @psalm-type DamaDoctrineTestConfig = array{ + * enable_static_connection?: mixed, // Default: true + * enable_static_meta_data_cache?: bool, // Default: true + * enable_static_query_cache?: bool, // Default: true + * connection_keys?: list, + * } * @psalm-type TwigExtraConfig = array{ * cache?: bool|array{ * enabled?: bool, // Default: false @@ -2244,9 +2250,9 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * destinationStrictlyMatches?: bool, * allowRepeatAttributeName?: bool, * rejectUnsolicitedResponsesWithInResponseTo?: bool, - * signatureAlgorithm?: "http:\/\/www.w3.org\/2000\/09\/xmldsig#rsa-sha1"|"http:\/\/www.w3.org\/2000\/09\/xmldsig#dsa-sha1"|"http:\/\/www.w3.org\/2001\/04\/xmldsig-more#rsa-sha256"|"http:\/\/www.w3.org\/2001\/04\/xmldsig-more#rsa-sha384"|"http:\/\/www.w3.org\/2001\/04\/xmldsig-more#rsa-sha512", - * digestAlgorithm?: "http:\/\/www.w3.org\/2000\/09\/xmldsig#sha1"|"http:\/\/www.w3.org\/2001\/04\/xmlenc#sha256"|"http:\/\/www.w3.org\/2001\/04\/xmldsig-more#sha384"|"http:\/\/www.w3.org\/2001\/04\/xmlenc#sha512", - * encryption_algorithm?: "http:\/\/www.w3.org\/2001\/04\/xmlenc#tripledes-cbc"|"http:\/\/www.w3.org\/2001\/04\/xmlenc#aes128-cbc"|"http:\/\/www.w3.org\/2001\/04\/xmlenc#aes192-cbc"|"http:\/\/www.w3.org\/2001\/04\/xmlenc#aes256-cbc"|"http:\/\/www.w3.org\/2009\/xmlenc11#aes128-gcm"|"http:\/\/www.w3.org\/2009\/xmlenc11#aes192-gcm"|"http:\/\/www.w3.org\/2009\/xmlenc11#aes256-gcm", + * signatureAlgorithm?: "http://www.w3.org/2000/09/xmldsig#rsa-sha1"|"http://www.w3.org/2000/09/xmldsig#dsa-sha1"|"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"|"http://www.w3.org/2001/04/xmldsig-more#rsa-sha384"|"http://www.w3.org/2001/04/xmldsig-more#rsa-sha512", + * digestAlgorithm?: "http://www.w3.org/2000/09/xmldsig#sha1"|"http://www.w3.org/2001/04/xmlenc#sha256"|"http://www.w3.org/2001/04/xmldsig-more#sha384"|"http://www.w3.org/2001/04/xmlenc#sha512", + * encryption_algorithm?: "http://www.w3.org/2001/04/xmlenc#tripledes-cbc"|"http://www.w3.org/2001/04/xmlenc#aes128-cbc"|"http://www.w3.org/2001/04/xmlenc#aes192-cbc"|"http://www.w3.org/2001/04/xmlenc#aes256-cbc"|"http://www.w3.org/2009/xmlenc11#aes128-gcm"|"http://www.w3.org/2009/xmlenc11#aes192-gcm"|"http://www.w3.org/2009/xmlenc11#aes256-gcm", * lowercaseUrlencoding?: bool, * }, * contactPerson?: array{ @@ -2634,12 +2640,6 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * ... * }, * } - * @psalm-type DamaDoctrineTestConfig = array{ - * enable_static_connection?: mixed, // Default: true - * enable_static_meta_data_cache?: bool, // Default: true - * enable_static_query_cache?: bool, // Default: true - * connection_keys?: list, - * } * @psalm-type ConfigType = array{ * imports?: ImportsConfig, * parameters?: ParametersConfig, From fb51548eccee7f149cda8f8e556f24743a0f4530 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 7 Dec 2025 18:50:48 +0100 Subject: [PATCH 065/235] Upgraded yarn dependencies --- yarn.lock | 1484 +++++++++++++++++++++++++++-------------------------- 1 file changed, 752 insertions(+), 732 deletions(-) diff --git a/yarn.lock b/yarn.lock index 164347fb..9d2e2ada 100644 --- a/yarn.lock +++ b/yarn.lock @@ -837,159 +837,159 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.28.5" -"@ckeditor/ckeditor5-adapter-ckfinder@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-adapter-ckfinder/-/ckeditor5-adapter-ckfinder-47.2.0.tgz#10ced491bd112a4633ed9f543b96eaf41e1bd807" - integrity sha512-zzuINBzWuheU76Ans9m59VCVMiljESoKxzpMh0aYu+M3YB5IDctOPU8pdOpXPIdBwoYv64+ioZE/T5TyZDckSw== +"@ckeditor/ckeditor5-adapter-ckfinder@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-adapter-ckfinder/-/ckeditor5-adapter-ckfinder-47.3.0.tgz#bd60873b87e6c3e3d62cf2ddc3dda572fc2b3771" + integrity sha512-I0oE2wuyGSwCirHRj5i+IvBRKUrlmGCP7HMGv7fzXcHS1MW43LV0t9L8PQ/aKQX3gNmiqlfj631y/S7s5nqR8A== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-upload" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-upload" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-alignment@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-alignment/-/ckeditor5-alignment-47.2.0.tgz#64f527d7571acd543a3a9e74ed528a7b4aca0639" - integrity sha512-lfcJAC8yJOQux3t33ikJrWRsZvywLr2zmU6mDR96SuCmeCyAN3UGXzCNa8kWPExpFGV01ZR61EZkjTah8LP2sQ== +"@ckeditor/ckeditor5-alignment@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-alignment/-/ckeditor5-alignment-47.3.0.tgz#f5ea4fe5e3adce297732543658c0eb025d0c4d36" + integrity sha512-T01xV7UsS4D1VbyRdWxc68Wl4NN/Ov/4+2EsbjYF7O0UA0pJs8dWZJOZ+yGFJ6p8Aask991eu91vy3r/nq3d+g== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-autoformat@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-autoformat/-/ckeditor5-autoformat-47.2.0.tgz#78887a9ba872d806805fc4cde229414426de4128" - integrity sha512-d9ZwAB8JwWlgLK2Um+u3ctiCtv5bkBHGk/rSdXB6D/V7QHCl31NyPFYByxTyCOY9SsoNn1l/8zbJfvp89LJm2w== +"@ckeditor/ckeditor5-autoformat@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-autoformat/-/ckeditor5-autoformat-47.3.0.tgz#b5096c419298ec5aa76f5508c435bc078826c690" + integrity sha512-1Np63YOsNMddrVHtsAPZUQvVuhMyvmwPwnPO3EHudPPDg8c5p+fbSb7DSUSPCUmkIKS8RJ8tv/3eDpS7y+EEXg== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-heading" "47.2.0" - "@ckeditor/ckeditor5-typing" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-heading" "47.3.0" + "@ckeditor/ckeditor5-typing" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-autosave@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-autosave/-/ckeditor5-autosave-47.2.0.tgz#4cbc1af19d358e991b5f57c9c1dbbfd30de9ebb9" - integrity sha512-44nGL/M0qLURA1BEFkqZg6JzpjtvGyWJEluv728vb29JNQUGx0iNykjHBgtPX5s1Ztblx5ZwqFiuNiLkpmHptg== +"@ckeditor/ckeditor5-autosave@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-autosave/-/ckeditor5-autosave-47.3.0.tgz#cdb6cfa38dcc6751e5e277165c4e9b47611b5698" + integrity sha512-ctYdlBcJ/CPUUcpRzCbCp3oG2HWn8gy7GZUL95C1BIZTH08cLKZgkX0TySSUHygMvVymgvWq3LrmwByWri9AvQ== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-basic-styles@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-basic-styles/-/ckeditor5-basic-styles-47.2.0.tgz#ab1abe2306c6e6cec62393adc04b07997869351a" - integrity sha512-a8pPHq3CXmyxPPXPQZ8C92OOyBoCfpY8M30dS7et/dLXW3nuVo9VVLMw0vR1j+zcKXClp3+/odyw2/rxP+qntA== +"@ckeditor/ckeditor5-basic-styles@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-basic-styles/-/ckeditor5-basic-styles-47.3.0.tgz#d70613743e711ef01c498b06bdf37dafede8a36f" + integrity sha512-KGDZLyhVc+sF9o8XTiupNRdroALhLpfOssWQv8zzyu7Ak2LFYXCrrr3abscbIX2whL/X92sted11ktLaLmgL0w== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-typing" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-typing" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-block-quote@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-block-quote/-/ckeditor5-block-quote-47.2.0.tgz#39f9efd80f5a2b8cfa5ec438ee5bec25fd82f70f" - integrity sha512-BlFFfunyWpYcGhLsOmCR0yEz5VgrOmHREHQZIRcL6fKzXJwdpA/VFWPirotwF/QErJjguhhDZ5a3PBEnUAmW/A== +"@ckeditor/ckeditor5-block-quote@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-block-quote/-/ckeditor5-block-quote-47.3.0.tgz#04a77edcfa099c80f8a3f19748873b2b4e6d74f7" + integrity sha512-Ik3buFYNpEYVkI5LnimDbHTOgHAYtkZ2qTwGT47wAvyScgQ9Jx0fcUBA6EjX2EuGr6w/snZfXkI4WsZqrMYp+g== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-enter" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-typing" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-enter" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-typing" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-bookmark@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-bookmark/-/ckeditor5-bookmark-47.2.0.tgz#b370892c4cbb4570c2c526546ff14dd37cfb3df6" - integrity sha512-FDFDZXm8MqktIt3x0WVrYFuXy9sxcCH31Cpa0/mV19lW8CzoCZCAfvXNzPWsz2eFo8qOsna2c/e55ax8OM/Ncg== +"@ckeditor/ckeditor5-bookmark@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-bookmark/-/ckeditor5-bookmark-47.3.0.tgz#e29a0cf99af562e07828802f72b293dc93f42505" + integrity sha512-Cn+O/Ayr9zcKk/v9dyP1SXbpFslLGCiinS6Nb8jQOS+pmxb1s32W/ycZBtAg0EYmTMskoVEkpwz6ugogNAzmaw== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-link" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - "@ckeditor/ckeditor5-widget" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-link" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + "@ckeditor/ckeditor5-widget" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-ckbox@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ckbox/-/ckeditor5-ckbox-47.2.0.tgz#98a3400167f62dfb080d83a8d753647debcb12a3" - integrity sha512-Cu+nJTXhcmdE8DWHoTY1nrrjxyG4pfxMrEcO/PNV28cojwtOQaWGt4EbWlXOfZZTEWlZO18JIw/YrxYXwx5mTA== +"@ckeditor/ckeditor5-ckbox@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ckbox/-/ckeditor5-ckbox-47.3.0.tgz#5a1da5d697745d7a41566840a68ab400f6c5921b" + integrity sha512-SVF3CGH7/DBSrsV/vMFIzyvSPAoD1Qg12A5dS+ySnG46XC8ou9uQXXAfIGzAvwajC8GF3LJf9nG4+vJx3tIE/A== dependencies: - "@ckeditor/ckeditor5-cloud-services" "47.2.0" - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-image" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-upload" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" + "@ckeditor/ckeditor5-cloud-services" "47.3.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-image" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-upload" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" blurhash "2.0.5" - ckeditor5 "47.2.0" + ckeditor5 "47.3.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-ckfinder@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ckfinder/-/ckeditor5-ckfinder-47.2.0.tgz#2f3be378adfa40d718d8a05d91fd304068f22943" - integrity sha512-nsxn9weZNwdplW/BHfEJ/rvb+wZj0KECN2Av9zFRekTxE1mp0hTShQ9MNlKImRQ4X2UV6bGN6+DXwJJIU0smlQ== +"@ckeditor/ckeditor5-ckfinder@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ckfinder/-/ckeditor5-ckfinder-47.3.0.tgz#2a41fc097c77d16bbf967c9e60d7010a5fd30192" + integrity sha512-OIDpmoHsw+ZRbhso3EvnSDEKkXZBgZTq7TQT7+TAg264SWuGB7y6UCKMMoA5OWpuqDJh/Wp8wBubTWqA3OwYmw== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-image" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-image" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-clipboard@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-clipboard/-/ckeditor5-clipboard-47.2.0.tgz#668117643acceb343b764b07a26410ef70841ea7" - integrity sha512-x/ehXk+ga5tnumA8TenrZRU684DvpzzhTLfZScRxX3/3BJPYlFp7BWx60KJPQHKXYgb+I0qkQrgxuBXp83ed2g== +"@ckeditor/ckeditor5-clipboard@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-clipboard/-/ckeditor5-clipboard-47.3.0.tgz#f19789ebe4729585f7fce11d44f302018b402399" + integrity sha512-fVBBWyWIaLTTUZglvOz+ld0QfQR8yr9TVwgk0XFN90S3UxFiYYkxgDAeef/o51qBhBGotgw8hGYYbY4k4G10mA== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - "@ckeditor/ckeditor5-widget" "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + "@ckeditor/ckeditor5-widget" "47.3.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-cloud-services@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-cloud-services/-/ckeditor5-cloud-services-47.2.0.tgz#119a004b2f7a72664c05351e6dd72dcc43d0d8fc" - integrity sha512-794mxJ8MFhz2SxSjlMSp4cZbyBBpVjinQ3GxOS5VqO7H4m/iT2hdSPJaWpML53soxpEoG/6ax4vVKe5d0+xoqA== +"@ckeditor/ckeditor5-cloud-services@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-cloud-services/-/ckeditor5-cloud-services-47.3.0.tgz#5f4a647ee6709153e7062b1de268ed84bf86bc8f" + integrity sha512-oFHz/Aavs6IDU6XwQD9NUgssJs3hSv4Vu2Np5rkZIyhabKRJcNma7fwM+gmmvQJupltv0uG/0ldMigjfEqHAQA== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-code-block@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-code-block/-/ckeditor5-code-block-47.2.0.tgz#9fbeb02ff87a798d624d2c461a86ce7b9c5edc2d" - integrity sha512-8SH10L7i+wirkouDmg4MdBN4R3AZDyutsuSCwDPALoKSHQs7KlYB+8TJxcejt/dSBd0JWgrBi7rVu9Arkk3I1A== +"@ckeditor/ckeditor5-code-block@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-code-block/-/ckeditor5-code-block-47.3.0.tgz#ea5552fe3f4cd1f2d3d6c382ba7ff2dea062a2b3" + integrity sha512-zgzlCFqqJxWRTvuIGl9jJ0KYGZIjsCOYHjj1s3+asXjuskRoSip6yzcPK/LPaQXkUYf9zTGJHQ9tqmiNbRQBiA== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.2.0" - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-enter" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-clipboard" "47.3.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-enter" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-core@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-core/-/ckeditor5-core-47.2.0.tgz#90976e6e8b18008ead5c8a33fee690d8ddf297f0" - integrity sha512-NwUNa25g//ScxaVPASalcGfMDhUSv7nIpxC07oVv99zJjk64RTBr4TZHpjKLCVqN9gAn3phAtjtkxa2KOgOMtQ== +"@ckeditor/ckeditor5-core@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-core/-/ckeditor5-core-47.3.0.tgz#7aa71f6174e05aa94102d24b412740c4851580e7" + integrity sha512-jLawN3a8yL5lbwG8gZeJihcVKkDgq+rAFeXc+Rd+nw+c5uGCdkc5F7PCRjhw+JOGruXUhNsbiF/4iNv3hUcO/A== dependencies: - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - "@ckeditor/ckeditor5-watchdog" "47.2.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + "@ckeditor/ckeditor5-watchdog" "47.3.0" es-toolkit "1.39.5" "@ckeditor/ckeditor5-dev-translations@^43.0.1", "@ckeditor/ckeditor5-dev-translations@^43.1.0": @@ -1033,316 +1033,316 @@ terser-webpack-plugin "^4.2.3" through2 "^3.0.1" -"@ckeditor/ckeditor5-easy-image@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-easy-image/-/ckeditor5-easy-image-47.2.0.tgz#03e8be382b9ab2a281dab18703bc66a1b4c9735f" - integrity sha512-lSnbiGDzYdu9GeOaYjVpowaZWDJbrb7NHCuUN5Af2474jXTDyYmG7qOm39fWEBlcxjMTzDR8fFzPcRNhOvSRRA== +"@ckeditor/ckeditor5-easy-image@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-easy-image/-/ckeditor5-easy-image-47.3.0.tgz#f08994188ff8c5de6b56c0f0834f2b12828e313c" + integrity sha512-pdQHtLBdkDuY59FzzgyTjS6XM5aJlSUW33sOSfN0I/iROl6LpSr1kHjf6ybJAAWEhSD6B+o6hv4+K+tx184UpA== dependencies: - "@ckeditor/ckeditor5-cloud-services" "47.2.0" - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-upload" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-cloud-services" "47.3.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-upload" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-editor-balloon@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-balloon/-/ckeditor5-editor-balloon-47.2.0.tgz#2207ec688750ad70dbbbd08f9a7f767be09c46fa" - integrity sha512-szIx59pnw6kgxYuAyqecMnSlwtwWu2q23XV4TpKF/V3NlHs9ZeIFusTX3icO8JLQR4ExsYa0bsYpabGdZdx2Ug== +"@ckeditor/ckeditor5-editor-balloon@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-balloon/-/ckeditor5-editor-balloon-47.3.0.tgz#100bd48cdf643cdf854501ecff3b284d77ba0f30" + integrity sha512-8EzuV48gTuqrNd5rt58rp7eWf8B5q1PeRUS2f5fAF6RwDS6HsBDeqmEic8JPxOh+30pvAcR6UiylSYe6S+H9bg== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-editor-classic@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-classic/-/ckeditor5-editor-classic-47.2.0.tgz#13c8b376341475940e8d42a642f598a453a0bf24" - integrity sha512-fYy4RKmvM4kYvUgCRuBdUqVLE8ts1Kj4q1Caaq5VZyBudmaj/RZqQBSdiu5pZgKMdj1oMaIQ5Gextg96iJ3LTw== +"@ckeditor/ckeditor5-editor-classic@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-classic/-/ckeditor5-editor-classic-47.3.0.tgz#03412d376358395071ccb0eff83329801e2c8a83" + integrity sha512-uCA8cr23LSJf8POkg2c403zS+xWjbE8Ucu521PQPcxrTMyTI6rYfjnuZ6vT/qzqAwZrLpiNZucJIQxRDFhLWGQ== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-editor-decoupled@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-decoupled/-/ckeditor5-editor-decoupled-47.2.0.tgz#7ed46a30eff38893d88094d4863709b2a77a9239" - integrity sha512-h1Yw6/XHeEe5aW/4VV0njAGe5nsuIBkARCun039noA+b2bq+Qb9bAExzaSHULf7nZW4HHVJMcYvb2HwcX8MZ6g== +"@ckeditor/ckeditor5-editor-decoupled@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-decoupled/-/ckeditor5-editor-decoupled-47.3.0.tgz#f5c430d40b17fb98e9dbe2e23452ca73cd3b6d79" + integrity sha512-G4szgSWluqNG/wv+JQxiZv1lzwUzTxdPZWO/mL8pi3sc69vp30QYT+I4TOTLpfBdISBPkWajn/hfEXJPS1hCXw== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-editor-inline@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-inline/-/ckeditor5-editor-inline-47.2.0.tgz#1c82e1713d7e03bb97904704fcc8c949aa0703f5" - integrity sha512-6kGG8Q4ggOim7KU/J3iMvmf5/faNjYL/ucg2RPMvzhH/eTqlZBlMdDid86b0YAW0fbKPvIIACifoOBHIGlcZyA== +"@ckeditor/ckeditor5-editor-inline@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-inline/-/ckeditor5-editor-inline-47.3.0.tgz#1990a71af5ae8b60d22140d60a8adbea4c3d0cef" + integrity sha512-ie66wno1gbxNuoqGJ7iSDIz4gydPxJtSE5F9kb3NjfwecQxjj/0yBS+HsbZhqbFFNdJ01KZOtbAxNXQ0r1OW2g== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-editor-multi-root@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-multi-root/-/ckeditor5-editor-multi-root-47.2.0.tgz#03dcca7fad6e91851e1cd128168049587df5833a" - integrity sha512-bIkPzkpLGznNnDLAuSkVNP+LfICLbUj80IdkVLB9KeXnuZ1WKYkLqBGfDv6y70iJnANAiiP6Z8EaucBNzfjS7g== +"@ckeditor/ckeditor5-editor-multi-root@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-multi-root/-/ckeditor5-editor-multi-root-47.3.0.tgz#4cb0016a55458545cc426fb7b71c74e3e500fb9a" + integrity sha512-PRxVNpoo7YiECugo9rPsUmuTL3f2xUwvHSUKh6FvPneQS4oFIdMNJrg/Hhn02sEOe6+ScFIi4X06ryK+/N6zOA== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-emoji@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-emoji/-/ckeditor5-emoji-47.2.0.tgz#22b7809008dcf9fe0726b899d2f29edfe425a22f" - integrity sha512-pS1G0QVFOK2Z+BLrVmm6pVjFZRpkC95YgQeASuuIySLZBllYD3+tlys2lPt3el5PAd0IQB7s85XuTdbCXDFr6A== +"@ckeditor/ckeditor5-emoji@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-emoji/-/ckeditor5-emoji-47.3.0.tgz#f6d5f2d3e84844f63c93b9601b90a1d61a18425a" + integrity sha512-3xmB9VKShWmK2x1qZ7BecfqaxAGP6Ys1/UEPhBhoFyRK34UvtA9KrK0G+KWF4kwA5OgkoqnQRmVkMEO6mKXMnw== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-mention" "47.2.0" - "@ckeditor/ckeditor5-typing" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-mention" "47.3.0" + "@ckeditor/ckeditor5-typing" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" es-toolkit "1.39.5" fuzzysort "3.1.0" -"@ckeditor/ckeditor5-engine@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-47.2.0.tgz#578446d200a16d5f25de3a558085501f14a60f72" - integrity sha512-T3pFgycam60ytkbLOo2r99UPkbalLfzp4e6QrDVdZnloY7BO46zAbU5p3TqgfCdxODPhZh7srFGzANh6IsLMeg== +"@ckeditor/ckeditor5-engine@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-47.3.0.tgz#bf4409390be95a85309019e47351558f1f029153" + integrity sha512-op/9TsJgFtWctfUd/QY41HYyFZd5hfSK6hBTJh0Xpz2XAfvpWsVim27FyWX0yIhyMLmtwDETDq8iBaH5kEZ15g== dependencies: - "@ckeditor/ckeditor5-utils" "47.2.0" + "@ckeditor/ckeditor5-utils" "47.3.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-enter@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-47.2.0.tgz#775fc49e28c64c90d4286341f983982be3c2fda1" - integrity sha512-7ZHfrxDSs55IXgs5yAX6Nl8COY1dqefZ5HiWT/UM0cOP/4aMffp5I1yYYP7NVfBkTW9DlUoeAkHFTv2miTwclQ== +"@ckeditor/ckeditor5-enter@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-47.3.0.tgz#ea3d162cf19fd42594380ece10cdadb26bd9e8b3" + integrity sha512-gBsT2ffLKUQclJpWkjn8mggtmoa3AfYH6vjsfMefN3yov1FoGY65kQDXl9KOfdG71E/tRtOZkMUPXqZUlYrBlA== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" -"@ckeditor/ckeditor5-essentials@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-essentials/-/ckeditor5-essentials-47.2.0.tgz#8b1850ddd0725709a4acf65d55bfe6ccbc39b227" - integrity sha512-d3hHtkuLhvI+RvsDU7cKFc/K9uD27Tvi4NVjALcN1Ybr0k8dkJFGU1nUwXuo6zcdqRnkIJMWxIR+cwteuMCGQg== +"@ckeditor/ckeditor5-essentials@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-essentials/-/ckeditor5-essentials-47.3.0.tgz#51681029ae2af39f003235bfb545105014b59635" + integrity sha512-tLqgNXfdZJiBR56CHBNkrHWd7WCSPTIRxfqB9xoDvFD3AQngv1J3tIj3ye0WtTr8V23CCcXzz3v3NFZwtuDPBw== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.2.0" - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-enter" "47.2.0" - "@ckeditor/ckeditor5-select-all" "47.2.0" - "@ckeditor/ckeditor5-typing" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-undo" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-clipboard" "47.3.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-enter" "47.3.0" + "@ckeditor/ckeditor5-select-all" "47.3.0" + "@ckeditor/ckeditor5-typing" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-undo" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-find-and-replace@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-find-and-replace/-/ckeditor5-find-and-replace-47.2.0.tgz#d2fcc24d6be08d56c1e195bd03625e4acc2911c1" - integrity sha512-34Uzpbxi+/eJx/0CR9/T92wDaw67KLaYcm39+RY4OUCxC9EywEFruIJEg/M/Xu4iTVjdVKbpQ3ovGBuciiL1vQ== +"@ckeditor/ckeditor5-find-and-replace@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-find-and-replace/-/ckeditor5-find-and-replace-47.3.0.tgz#6e27bf44fddfec25d804fbc2d5f55095150958fa" + integrity sha512-jSbc4ss36ynQvyNYKNR4UXceoS8r2JE9fjedHZbMPpFRPlypCC2oc21WhWa/Fo+PcfAIV7q2izNDclcFtEFB/A== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-font@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-font/-/ckeditor5-font-47.2.0.tgz#19402eb3a8c397657e1f7767ddb807e63bc62009" - integrity sha512-X/AYeNHc3Hibd56OfPwOEdYRIGX3eWtGQ/qIAEVkS2xCEDPhM0fTHpLTEpDsMukw9NRAqmhnQHIp2amGaOwY8g== +"@ckeditor/ckeditor5-font@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-font/-/ckeditor5-font-47.3.0.tgz#68e1c772aa0ccde4fc266cbf421eed05f223805f" + integrity sha512-J1QhW0Z6LfU0Mc3cITw21vPTIv1sGtlyO7JSFU9rQUkF1p2PCMQ/SvEja3bdz8LipidoDUh+QCeT2z9TSt1VDA== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-fullscreen@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-fullscreen/-/ckeditor5-fullscreen-47.2.0.tgz#7ac86bd80b3ff33ab600cc662cd35eb4b47936f5" - integrity sha512-Kf//0eQIuslGNVSbNkHXBELn/jZT+OsTIeo8PulZEbVI5do0vB/52w0F40rhgk8EudlGTxEmMOi0x/jrdR0MHg== +"@ckeditor/ckeditor5-fullscreen@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-fullscreen/-/ckeditor5-fullscreen-47.3.0.tgz#552253beeede6673ab34b2840cbf617537c58c91" + integrity sha512-lSge/Lw30GYkztAWifZYOpc5Q9tjuT73gq0Hcs1tDpiIIt63CM7AfIS/sjiTUus0ZSG8fjLdd3ivSf4TiE/kOg== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-editor-classic" "47.2.0" - "@ckeditor/ckeditor5-editor-decoupled" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-editor-classic" "47.3.0" + "@ckeditor/ckeditor5-editor-decoupled" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-heading@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-heading/-/ckeditor5-heading-47.2.0.tgz#0487b8bb36936409d8cbf4da067ca18976b7f525" - integrity sha512-m1zSERVh7gdVXwLLYgcAsy7lkIOuadmA5YuwyPpR/g3oa0j1gcuNm5y/73MTOPflPUn0g0Y9DzocF2G1WY2NiQ== +"@ckeditor/ckeditor5-heading@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-heading/-/ckeditor5-heading-47.3.0.tgz#e45707f8bcc03a143e6665de93c1a86e81e59dbe" + integrity sha512-sCBpuGTY+RGnE45r1cgFfe29cW6hmVQo+4HGppyErj7Sac5f1PCG84/DSTP1n+6LPiA51Yh2Z/VtQdYKMRNnmQ== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-paragraph" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-paragraph" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-highlight@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-highlight/-/ckeditor5-highlight-47.2.0.tgz#1e9c0d4c13602ba76dea0f03e4fc5fb0cbf4a1d3" - integrity sha512-Fp59HRybXJpJl/DtliMTjiVrIA95jmm0SptvXtIucD0hdP9ZX6TOFPTzrRl29LZGITNuYDulPqvNTpFoechRmQ== +"@ckeditor/ckeditor5-highlight@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-highlight/-/ckeditor5-highlight-47.3.0.tgz#9f364b193587f4601bc80f670830e7b3894c3da4" + integrity sha512-wlT7R+7LVp0LmCyKIRN+U6+3FJqw6NpmfHhidSZnTRd9qzGnZ2EMxdEIkfOyCZd2CYH/gxtf/QFGik+DTjV/ow== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-horizontal-line@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-horizontal-line/-/ckeditor5-horizontal-line-47.2.0.tgz#b0a10cff4f2dddb78e0c9a130a4790e8efb27302" - integrity sha512-/DHVMhI9vNs/NI+NQBbUXdzsXHj9hGKihtNDmbV5UP3Hy7l32Gv8k9nJVnBlDbBbHI6Wpxjj6GUxAiLZ46mc1Q== +"@ckeditor/ckeditor5-horizontal-line@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-horizontal-line/-/ckeditor5-horizontal-line-47.3.0.tgz#5d2e4b8e1ec31c57333f1b6975df68fc2bba6eaf" + integrity sha512-F0QlRncwX/wvUN/LtZjpdsld9qT3jDxrniv4a/nz4LIotTVAsw2tMy9y8Sw2TNjIrOY5cCytxG91kzc+WNwUlA== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - "@ckeditor/ckeditor5-widget" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + "@ckeditor/ckeditor5-widget" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-html-embed@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-html-embed/-/ckeditor5-html-embed-47.2.0.tgz#8dd20d32775aad62a21c1197d3209b5c438411cb" - integrity sha512-VhI789/KDKmQhz9nQqq64odOtLpwjJbPQ/Pf54J2d7AGDvbuNVkjAMVdj5xXXzb/nXdys6zM8lPQZfQGI/Ya8A== +"@ckeditor/ckeditor5-html-embed@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-html-embed/-/ckeditor5-html-embed-47.3.0.tgz#2a7285ec8af6781e672a3182dcbe0968bb2852ea" + integrity sha512-B8xgh/4fUoccNhTKajBFlWWgz03G0QS41iXGtEoDY74Z1Ewx8zKccw4kPcyowIsrM7iq8w8tmo7uHJQaB5rhlA== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - "@ckeditor/ckeditor5-widget" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + "@ckeditor/ckeditor5-widget" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-html-support@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-html-support/-/ckeditor5-html-support-47.2.0.tgz#d9bef384af7e4535b570a4d52acc539a1745d13e" - integrity sha512-IwaFBdv0qQQXfnA1LHL2BVQoioNJa9T8NIKDq2OG3mXg02jJvhJl84QADJ0ro36igjKsyfttsl8lM1pf00XAhA== +"@ckeditor/ckeditor5-html-support@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-html-support/-/ckeditor5-html-support-47.3.0.tgz#e521de883323c83dc571550d73d05eedbdf73388" + integrity sha512-sdqB2NPlCy4UC6Wgi1RzW/kzeWd9zIgf8s/bx4KzGbWekAvfnJWUVAYkkziM+7N6NhXTKDx8Wu2Zh/66pIo1XA== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-enter" "47.2.0" - "@ckeditor/ckeditor5-heading" "47.2.0" - "@ckeditor/ckeditor5-image" "47.2.0" - "@ckeditor/ckeditor5-list" "47.2.0" - "@ckeditor/ckeditor5-remove-format" "47.2.0" - "@ckeditor/ckeditor5-table" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - "@ckeditor/ckeditor5-widget" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-enter" "47.3.0" + "@ckeditor/ckeditor5-heading" "47.3.0" + "@ckeditor/ckeditor5-image" "47.3.0" + "@ckeditor/ckeditor5-list" "47.3.0" + "@ckeditor/ckeditor5-remove-format" "47.3.0" + "@ckeditor/ckeditor5-table" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + "@ckeditor/ckeditor5-widget" "47.3.0" + ckeditor5 "47.3.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-icons@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-icons/-/ckeditor5-icons-47.2.0.tgz#0721f47f2ea7e8ae729f44e5a9815cc87e30571d" - integrity sha512-9rxAWNQEjZBHyMBQ8XXwfa+ubPBzQntd+nkWBAGTK6ddqHZIaQLsiLrUAdR5tyKKK9tnTkwyx1jycGRspZnoxw== +"@ckeditor/ckeditor5-icons@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-icons/-/ckeditor5-icons-47.3.0.tgz#e8adb3991e523ba6feca4f7d30116bf45548c345" + integrity sha512-erpbkXiPtA3Bu8a8ZLQjPYpX4W0WoT3OFZElHZgXOmVl8xQAefp2q+lFYKgzsqB757/zZO7i/B6U9czNv6lPmw== -"@ckeditor/ckeditor5-image@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-image/-/ckeditor5-image-47.2.0.tgz#4c7a50a05cebccc9e084269cbac1e22524e85203" - integrity sha512-XbXvRS++kFku0l7GABhsribmQTBC/SOAfimDNKjg5rayhAXCfovys7YmmU0eicydpo4//fAaa8zvDYc8uXWZGA== +"@ckeditor/ckeditor5-image@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-image/-/ckeditor5-image-47.3.0.tgz#3f90466a565a3c0d053da27c4c98010f586675a7" + integrity sha512-KnsQUv1itQdKJIAlj3GSTETuaiyFq7ggMsK7UVJFTk0yCiIi+oSEkrIn5r+p1e98QYEYjArS2SwOIxDsxDM2sQ== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.2.0" - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-typing" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-undo" "47.2.0" - "@ckeditor/ckeditor5-upload" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - "@ckeditor/ckeditor5-widget" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-clipboard" "47.3.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-typing" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-undo" "47.3.0" + "@ckeditor/ckeditor5-upload" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + "@ckeditor/ckeditor5-widget" "47.3.0" + ckeditor5 "47.3.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-indent@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-indent/-/ckeditor5-indent-47.2.0.tgz#39fef07c6b789fbcdb122ee37317f212b57ee92d" - integrity sha512-Q85+b+o+nonhJ/I9K9wB9XeZ5W8rS9k66VvoDHxL3jJ6g6C+oyEAOomooTDCvJvBgDN6vGpcwzznKp0Q8baoCQ== +"@ckeditor/ckeditor5-indent@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-indent/-/ckeditor5-indent-47.3.0.tgz#5934ac5ed590ac3aed241ad8d1834705eb52086d" + integrity sha512-kIpuMrTrtf7YhOBYre2Ny7NnL/x6sqMzdaxy4LN+4Sa9+Cw+KR2QJij2d0VkwDzV+z2B8GZ1mNZvCzpEwWDUUA== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-heading" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-list" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-heading" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-list" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-language@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-language/-/ckeditor5-language-47.2.0.tgz#f31dfc03ef5f56985b6329875fca0e0200b86a6e" - integrity sha512-kc5MqQnvQtUPuvRJfdqXHQZNQyHVy/ZZv5laPY1AKrsKqc5SJO4y3v//4yHvdn45V4QKLwMOy4yC365Sdq0UpA== +"@ckeditor/ckeditor5-language@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-language/-/ckeditor5-language-47.3.0.tgz#7a5268f78675dceec2d68d8d34eb7865f62a0a73" + integrity sha512-sPAgbKYT3NpofS2FWphkgiPzD2YqbTpxpLyzHymDJo7s2LQWj5FUGacZiiddGPOdzicSasZ6qHvcHIMHCmLBpg== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-link@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-link/-/ckeditor5-link-47.2.0.tgz#72c6ba684db256d4a2bb481689236335435f7bcc" - integrity sha512-ijaF1Ic23FH9qulW2ZuaxecmdT0JuK/4XNkdaoRntloHiVZ/tFAu+o/6st/pDXfutDBmnEXwrNGVtzO/JTPhrw== +"@ckeditor/ckeditor5-link@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-link/-/ckeditor5-link-47.3.0.tgz#eaf1b67a1d5c100912904ee55b4abc35d54f11bf" + integrity sha512-YbxZQHi36EF/O7deiDlrM8Xnw/J18x4dQgxaiHKTSHu7/4sZuVfJFAzF6afdt1uQ+8yeX3+q60jkJr2mm1zOEw== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.2.0" - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-image" "47.2.0" - "@ckeditor/ckeditor5-typing" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - "@ckeditor/ckeditor5-widget" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-clipboard" "47.3.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-image" "47.3.0" + "@ckeditor/ckeditor5-typing" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + "@ckeditor/ckeditor5-widget" "47.3.0" + ckeditor5 "47.3.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-list@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-list/-/ckeditor5-list-47.2.0.tgz#ec5940d8d8d941b9c9e7bb578ce72e64141e4fbe" - integrity sha512-PDjTQLn2CqrZ4XuAAJWY2vA5bkVu8UHKQZa1+ddfS4FbvfF2QR3eDX5axywpuaCb2Dm2ZQoqxpA5GQmt1fUehg== +"@ckeditor/ckeditor5-list@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-list/-/ckeditor5-list-47.3.0.tgz#8c71e9f4c40eab840bdf2edbcf6112118218c8ae" + integrity sha512-iOJ4prpoqf1UamKztQ0If/k638+NGSPsFaGGjOqhGPcIJxTtscs4c34uNUH6yCXDNF1ZaET2FxFckAQvrb0DFQ== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.2.0" - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-enter" "47.2.0" - "@ckeditor/ckeditor5-font" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-typing" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-clipboard" "47.3.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-enter" "47.3.0" + "@ckeditor/ckeditor5-font" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-typing" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-markdown-gfm@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-markdown-gfm/-/ckeditor5-markdown-gfm-47.2.0.tgz#2b88dc114bacf7fa03f9dbc0413a799657954343" - integrity sha512-mt47/GMxrsAL3u/aBjOuH5ETSLH0knoYJpchYb7sXzIuQlY7xPqvcONyD9700TAN30FV7qpOVKUqI7tRyLL5uA== +"@ckeditor/ckeditor5-markdown-gfm@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-markdown-gfm/-/ckeditor5-markdown-gfm-47.3.0.tgz#22e4df0d5ccca82cea77f034371a7262343106ae" + integrity sha512-PyRXnwnUmwW7pxe8DaV1sle/g45fp/e+1vzXgFIvLYWJO5i2Sych1yDbAU1RGbJr5R05eFS7Fov3bowzRE2ICA== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.2.0" - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" + "@ckeditor/ckeditor5-clipboard" "47.3.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" "@types/hast" "3.0.4" - ckeditor5 "47.2.0" + ckeditor5 "47.3.0" hast-util-from-dom "5.0.1" hast-util-to-html "9.0.5" hast-util-to-mdast "10.1.2" @@ -1358,271 +1358,271 @@ unified "11.0.5" unist-util-visit "5.0.0" -"@ckeditor/ckeditor5-media-embed@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-media-embed/-/ckeditor5-media-embed-47.2.0.tgz#1bba0974808cd4c23a07a092030c136274b2873d" - integrity sha512-lATTMej9pBsZk4qm8cOqLXhmrCq/t+HpP/zg3DWnYbiD6zclO69PSJxD09l9NsyOo0YZb8SYAsVISoKNaIOr0A== +"@ckeditor/ckeditor5-media-embed@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-media-embed/-/ckeditor5-media-embed-47.3.0.tgz#e88ad49979d804976486b6a2e8f114be6bd0f1d8" + integrity sha512-c0wP3VZp6409VMMRYL4z2ZiqCsP2p4RyHcfH8TZSy3g25pZnUbYpdMepHCxT0U5wLVdqhGMn7cW+k5Fq6Mp/hA== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.2.0" - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-typing" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-undo" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - "@ckeditor/ckeditor5-widget" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-clipboard" "47.3.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-typing" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-undo" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + "@ckeditor/ckeditor5-widget" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-mention@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-mention/-/ckeditor5-mention-47.2.0.tgz#db7a21e6b4189f197c03398f0c2cf28dd0717d77" - integrity sha512-ZPvVwEQxcCUI0SvJa28JUULww/SCXiiZpfnMtaneMxsIOqesAFxPqMXA9HkyLotikuK1sezu5XzgJ2S5gdqw3A== +"@ckeditor/ckeditor5-mention@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-mention/-/ckeditor5-mention-47.3.0.tgz#7262434b8c5df7d76c8e7e450b8d1eab20febff2" + integrity sha512-yIRbRSd0b66kUlur80kiskVMyymHvtg96endZ8FuGDjKgdLApFnkonNmpCNLAxGuwJDMfDyvyEikZy1i0bgWlg== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-typing" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-typing" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-minimap@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-minimap/-/ckeditor5-minimap-47.2.0.tgz#a47b83ed042a528b25dc1e09c7e8830222640d7b" - integrity sha512-Th6HspywP3JeGBMRUmpAuIyFa8XtrpMiGdsjazlKcHaitT6bHBTzaTjaWVnOuVY3gBdFAKsalv2ZEk8vIPqkhg== +"@ckeditor/ckeditor5-minimap@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-minimap/-/ckeditor5-minimap-47.3.0.tgz#a131d2ce6a479fa52beb1f4aae7fb8cdff1daaba" + integrity sha512-8JrmRwEMdIVoSp5Xms8sWHxlXcBPwhf7HjY35ptbS2sMQQ4RC9o5tbyLe8V2kGt8Qgmvx3F2H2VT9VFpQCUmFg== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-page-break@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-page-break/-/ckeditor5-page-break-47.2.0.tgz#c08dfee03ffe14a0694a4f1bb14231c1eaeb8935" - integrity sha512-DosfUorg3wZ3a6yM/ymsJQ1E2Rbqi08RFOQ4oQLPPAi2VRdTLt0BiqQPFMKJmy2T2k5K4TLc7bs0s3E96aQyXg== +"@ckeditor/ckeditor5-page-break@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-page-break/-/ckeditor5-page-break-47.3.0.tgz#3bd6cbac2cea9040be054f6de926220cb242dc27" + integrity sha512-ZvLfObeXnhYKs8+kcVBbjpAWQnGelVopnEIC0Ljds2cxyeUJ25pnLAZGKMcEOFvdm8Hh1OKnlfPWj3VRZMkrVw== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - "@ckeditor/ckeditor5-widget" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + "@ckeditor/ckeditor5-widget" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-paragraph@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paragraph/-/ckeditor5-paragraph-47.2.0.tgz#7d5242d38b2986e9da627859ad4a744285801a44" - integrity sha512-x6nqRQjlAcOhirOE9umNdK8WckWcz7JPVU7IlPTzlrVAYCq+wiz6rgpuh4COUHnee4c31fF21On+OVyqgu7JvQ== +"@ckeditor/ckeditor5-paragraph@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paragraph/-/ckeditor5-paragraph-47.3.0.tgz#dd32ac01641738128fd68802f7d9c1e1f6e996e2" + integrity sha512-CCnCd57ySxYrb6XCocAzj49PH6jOc+YbsgVVQ4+4sMyOQR/d5VdgJAkQKO7m288nwvE+Ai9gMAl5rqiph+PcMg== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" -"@ckeditor/ckeditor5-paste-from-office@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paste-from-office/-/ckeditor5-paste-from-office-47.2.0.tgz#3b0dccca78353dc477d5658d5877c06e91bfc04d" - integrity sha512-DGGNGNhl25ub8dFBKJF4jfMBoSSbF5uKzFShMNIaAVAagV6kkDWR0HJWAir5CuFrElzWTkPd0ZC5RNL76yTbtg== +"@ckeditor/ckeditor5-paste-from-office@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paste-from-office/-/ckeditor5-paste-from-office-47.3.0.tgz#6a35af1321d57ff9062a93de52e38fd023e23129" + integrity sha512-8M7pKMAI0cwviVx/QWYQRDfy9GLUUBVKrqBFuOu/lcxfsncL7BUJYVVvaOC+iN0I9Mi513XHz78FLi4PbRoC0A== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.2.0" - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-clipboard" "47.3.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-remove-format@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-remove-format/-/ckeditor5-remove-format-47.2.0.tgz#d1631b3b7ba7d8560522e5cc4aa0c123cbd21432" - integrity sha512-CRWs7Osok8k3Oi2N7RvA12ECxi47wIyrDTsJ3lJYo8zDIbZdOXlv5o+In+mbsZ7lzNKLhKMAgRcF/PrGWcAaUg== +"@ckeditor/ckeditor5-remove-format@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-remove-format/-/ckeditor5-remove-format-47.3.0.tgz#4c1455b791f1312e8b6060b9246695c7d6c11bf6" + integrity sha512-tGBSxVKu2fUO7oH2U4QyAb6+/47YFkEVwRPGvpwg4QUQn670qAJJenJBWqXEYFHK6V5mLDfD5xmKdTk79OXgTw== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-restricted-editing@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-restricted-editing/-/ckeditor5-restricted-editing-47.2.0.tgz#6d5513f535db2570ec626b29fed997f7461e2ce9" - integrity sha512-ziFgoZCHaHzzrLeQ6XIlrcEazoGF6IC2+qzxGnO1A1NKY/8WVLmokKFLmUgDMnPLrhvz5Qqldj0dSS2pKhj6QQ== +"@ckeditor/ckeditor5-restricted-editing@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-restricted-editing/-/ckeditor5-restricted-editing-47.3.0.tgz#11011b9e1928ea04c667c1a483352ae1b3b50eaa" + integrity sha512-DoJFgX7RXapubLnulcW6aFuTQD25jSPWMJA25EXHTHMq9ZQP69ey2kJgp2iioas0zpsKhnVzioUyIiGe28ufng== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-select-all@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-select-all/-/ckeditor5-select-all-47.2.0.tgz#61d2bb5c0dd4f16403828f0ae7bb7ce90f557e37" - integrity sha512-4kswe9jmKp6y1hTwWfJBxF8XuX1pgZxraAlm+ugJLhjsus/vGBVXBFNN7kH+RoNxC6tf1ZXly69dGTG4P/nXrg== +"@ckeditor/ckeditor5-select-all@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-select-all/-/ckeditor5-select-all-47.3.0.tgz#a35a2b4edc36d2e0912f262fb607e0f5217e88e6" + integrity sha512-pMWVdKDlLowiwnVGycJd0mW2jQ3HdlzzstfIhawhU2jspSY4Byk8XiPZ9Dyq6aAwEtdJOShLLau1dcVnB2OltA== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" -"@ckeditor/ckeditor5-show-blocks@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-show-blocks/-/ckeditor5-show-blocks-47.2.0.tgz#4096372e2bb52e04cc1d2316f6c36e266b948c43" - integrity sha512-eIzvA5zQEWNGVXhkCTYVfw32tpsFEx4nTPAVpsFEv0hb1sAMaOv5fIoFmwcx/C8CmN9sBiZtuovXGM5i/pwoTQ== +"@ckeditor/ckeditor5-show-blocks@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-show-blocks/-/ckeditor5-show-blocks-47.3.0.tgz#8820630061f44895a39b727eaafd88693ed0ae51" + integrity sha512-vgmH/FqCHproRvVqXYLQrDeDgc5D+2iEK/MB7sRH75w+ZjP495XUYRtoZWud59yQ8P3kCgywycR74iyenxntlw== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-source-editing@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-source-editing/-/ckeditor5-source-editing-47.2.0.tgz#6d521c9abdb79e8232279410a54654d73dff2a77" - integrity sha512-B82fbUiTBWYR3XTfUk/30Hsk9PAmPkmraKNJKGDoch0NXduPz8ehpCwbnrJdIvm7pozbgB11RjWzq56VcBX2Qw== +"@ckeditor/ckeditor5-source-editing@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-source-editing/-/ckeditor5-source-editing-47.3.0.tgz#650515f93506cf8c1ea1c5cf90b06edb0891752e" + integrity sha512-a2hFkyUzDJBpPh5jF3+LUO356PeQ84/Amqp9Y8oqzk6nKXlfr5IdPU1kQTkwDxee7F85EUNd2/wRZm4tLKL02A== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-theme-lark" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-theme-lark" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-special-characters@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-special-characters/-/ckeditor5-special-characters-47.2.0.tgz#08e4f476216d3a5fe9d359a38c1694c163ede818" - integrity sha512-aH1E1SEMRUF6gMdqPuFeDZvZRCUNJ/n8RWwXHFicsJArYDGOiATxVZQZbwk50duAsWcxxj0uTSHGwFXBL9evyQ== +"@ckeditor/ckeditor5-special-characters@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-special-characters/-/ckeditor5-special-characters-47.3.0.tgz#40e8e4e0e2677ac8bf2819c61513427202df3d01" + integrity sha512-kh9gONY8HqP1hQ5AImLzYyiecyVRHmyGE9xc1koyOV5HvZ3X+ogTWuAFqG5e3zjLaVCeKQKXkbuBS6/+Gi2NxQ== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-typing" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-typing" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" -"@ckeditor/ckeditor5-style@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-style/-/ckeditor5-style-47.2.0.tgz#939b39f42db67dfa91c51ddde2efa9fc28dffc0d" - integrity sha512-XAIl8oNHpFxTRbGIE+2vpKLgrP3VnknUTyasvL/HeS3iUHKLDRlh9d3ghozhuUqQaF5rnkzUQEBv/fv+4u3Y7A== +"@ckeditor/ckeditor5-style@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-style/-/ckeditor5-style-47.3.0.tgz#450756719867dc6781bcb25a4e50afb592202e1d" + integrity sha512-EsQ3ZZccrsniKadcfjBI7HJgsNbZAl6NomQBKauvTQzmOoL90Ouffp6yIQTIQkIgm/xzIh2zVhGTcw84VoioJw== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-html-support" "47.2.0" - "@ckeditor/ckeditor5-list" "47.2.0" - "@ckeditor/ckeditor5-table" "47.2.0" - "@ckeditor/ckeditor5-typing" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-html-support" "47.3.0" + "@ckeditor/ckeditor5-list" "47.3.0" + "@ckeditor/ckeditor5-table" "47.3.0" + "@ckeditor/ckeditor5-typing" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-table@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-table/-/ckeditor5-table-47.2.0.tgz#d08098760bc5dca1289a98fcb06a3a6bccd0c4d1" - integrity sha512-zxNHpl4L7HsOLCYiKrbyyHoM2dMGetgP4eTjYyWfn9gf+ydVs7o+LJVN5bsWt3J4ToamCj5G7VHZUmqUcPbN6A== +"@ckeditor/ckeditor5-table@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-table/-/ckeditor5-table-47.3.0.tgz#cabe9f43f10edda8faa83af0e7a3e2ea125ff3fe" + integrity sha512-YVupV2lEvE8tJi2tSnrthT1GCdzA0+zv4x0AQR5fBKfu82fux7vxKb222UnHkHhazrR3dGY5MSBRjIaDerY3TA== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.2.0" - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - "@ckeditor/ckeditor5-widget" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-clipboard" "47.3.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + "@ckeditor/ckeditor5-widget" "47.3.0" + ckeditor5 "47.3.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-theme-lark@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-theme-lark/-/ckeditor5-theme-lark-47.2.0.tgz#10260a70b0c12f668593506e51ebd8b7eaa76dba" - integrity sha512-5Guefuo+Nllq4FMaFnLJlU/fICy2IQYw3T+0PTYjFqd59xTx6suwjv2ou41HKPfJ1b6NCbmkbhuaC59lGIfBtQ== +"@ckeditor/ckeditor5-theme-lark@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-theme-lark/-/ckeditor5-theme-lark-47.3.0.tgz#35749a9d94ddb7ad4d59fb11a31a7111a0560b88" + integrity sha512-ovaRKQAVTqlmYlpo3y9q1iu+5SKmmdjBTFDRGRgZ9nXNuD2vmikJA4pG5A4aNKLl/d3/LIkPfbn2g2w9VIlb7Q== dependencies: - "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.3.0" -"@ckeditor/ckeditor5-typing@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-47.2.0.tgz#6f5ac014e3104cedc54cc79213d24ea871d24122" - integrity sha512-BDJLlaX9SHFUfZegOEW7ZeJ0o/TBgabINNxa3CwtGuGBLHUAQ3IAFJ0Cd6jHq12J2kRDwiXZzvvgMyCH7jeeUQ== +"@ckeditor/ckeditor5-typing@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-47.3.0.tgz#737e7b8298008b49d1df4dbd5e9fc906e3d62002" + integrity sha512-hxwdd4hcCXLMFehS9/DLlcl+Bx+TlF+gG8f1DqNmpmqRbbVtfMFfMlHuqKC7+0c3TLJz7f0F5ih681s2H4t9RA== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-ui@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-47.2.0.tgz#e3d7f5ab66a5426f79afa560c1e01bfd41abf88c" - integrity sha512-/yd1/JmIqJybqBRZvk/QGzeY6DZlJvPtyEqq9Ay+U4bUftr2DOrfOikM62okepYRCCtMQ4nQk3c2eFmacfym2A== +"@ckeditor/ckeditor5-ui@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-47.3.0.tgz#8f9d8e1e88eb3ad93bc40174d2040641c0cee73c" + integrity sha512-dDHvfIxNfo3z00KwDO6nHCx9ZC2vVEQ+lMmpjbMD8P3FzGRPRd7NqzRbPoieDKlgAiG6Sa2CLThqA+71C+RMfw== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-editor-multi-root" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-editor-multi-root" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" "@types/color-convert" "2.0.4" color-convert "3.1.0" color-parse "2.0.2" es-toolkit "1.39.5" vanilla-colorful "0.7.2" -"@ckeditor/ckeditor5-undo@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-undo/-/ckeditor5-undo-47.2.0.tgz#94af4ec59d65f88dbb3500316784fa5ba897417e" - integrity sha512-smq5O3GdqJXB+9o54BTn/LyB52OHiW9ekzacOuMNxtuA/KBwHpdsPFMcGFGH04W9O0qUtSdt3fYC0i+SJjYAww== +"@ckeditor/ckeditor5-undo@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-undo/-/ckeditor5-undo-47.3.0.tgz#36653b37e34aa3a482f1b0888ecb85c146e4b3e1" + integrity sha512-vO0WCOQBC1Cj7hCxh3+VhQNrANiBjj+8561XkLGhDpQt/lpzuEqXn11Rx4BXjSzpuDZvNnMNO9duzXfEfVjAzw== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" -"@ckeditor/ckeditor5-upload@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-upload/-/ckeditor5-upload-47.2.0.tgz#6c0caa82be97e1149c03a2d96da242d0a4a613ee" - integrity sha512-uE4FwVtmJ6UACDC9N+H6HHGhlpAF8Fk2QCF/iBboh4VqhlFbFjMbXCAbsWrDik6C/p9r4Iv+IEmbpjsRTD+9SQ== +"@ckeditor/ckeditor5-upload@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-upload/-/ckeditor5-upload-47.3.0.tgz#732e721ea1f741d824b5e94afe0bc0be14107e07" + integrity sha512-j4GngBlxg/tjztS/B67RD/OUrTYQhrwDYSpAjXV6shabwEbtEadsKLYgpXPR12ENB30mmrYKIRC/pgT5/wXc6Q== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" -"@ckeditor/ckeditor5-utils@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-47.2.0.tgz#6d80dc08564d34db04b8799eff2897b9cc1d9e17" - integrity sha512-1b9SWtGuPZApm9065swh+fivxQMvuAsVXHuo26OGV2EnQK//w7kHsxKhVGJMzfHeuev5KvhJ2zdo8SUvePfBoA== +"@ckeditor/ckeditor5-utils@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-47.3.0.tgz#04ad3fb365bfe2c61d6137dd30805ec4ef49e931" + integrity sha512-RF5iAkI7NpVYZW1Fo+BhIQmPNLqA6iRVNoqo43P7vE8QfvG0fYB1Ff3jsEeM4UVV/G6pABBhE+9UMpwJcBuxWw== dependencies: - "@ckeditor/ckeditor5-ui" "47.2.0" + "@ckeditor/ckeditor5-ui" "47.3.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-watchdog@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-watchdog/-/ckeditor5-watchdog-47.2.0.tgz#67fc6af5205f8da246752e97d8a4e907cc18373f" - integrity sha512-C1AT7OqLBkPCUm4pjJe4n64qj+5vvMdQb2+lLMSz0SMsBqmYFrVYMlZWW4LjpaYUAYEmvTPcyDoqukBKRWNrRQ== +"@ckeditor/ckeditor5-watchdog@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-watchdog/-/ckeditor5-watchdog-47.3.0.tgz#3f0f200e1f5b61c56fb1a83a50d67e6f46ed8298" + integrity sha512-gurXEgfiIvnmmd7u68PdffdAaYFuNuAE8fJoWeJFMzrrFGuG7TvGmulXG/Wom2D4D+eW7wQE93Sisx9wIfAcPQ== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-editor-multi-root" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-editor-multi-root" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-widget@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-47.2.0.tgz#3c38db32b0e4d2ec0e78a053fda04d68f2542bf5" - integrity sha512-1vhfdeVPNc6UtCPAC+aKDNIi0EDxpAJ7TudepJVLXnS752V5rnArjPrYBfH6dkpHYV920CuxxsoS1sSuVVMrkA== +"@ckeditor/ckeditor5-widget@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-47.3.0.tgz#c15f87b47200bef75bcb501e117d0d811440097a" + integrity sha512-8IagE3JdKLM04KB3XR2SCDJTIlmtGOhkfWZBn9kwy7g8SIjI2bJARA/0wgXMGlzUV2AMbbxb0HdkMEK6Xxg/nQ== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-enter" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-typing" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-enter" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-typing" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-word-count@47.2.0": - version "47.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-word-count/-/ckeditor5-word-count-47.2.0.tgz#42577d55113f63c4953f7549f1eff8b7de653950" - integrity sha512-1ouy59G1Qxf6hTRnW9tSL7Xjsx8kGfTJvrH9mZWGIpmNo0pIM6Ts96U/qgr5RB0LbhYtqhbDq87F9QjMcfYUjQ== +"@ckeditor/ckeditor5-word-count@47.3.0": + version "47.3.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-word-count/-/ckeditor5-word-count-47.3.0.tgz#7765599663fe9f0a3fac5b74e2535f96a5f3b2ee" + integrity sha512-VluTjPWaJnYS6uoJfi8XJZIBPzfrARH4RBEHOBto4SM1jNdSV0gltz6jfNSteGXm4Bl+VdBgltzRAXqsugi2Vg== dependencies: - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - ckeditor5 "47.2.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + ckeditor5 "47.3.0" es-toolkit "1.39.5" "@csstools/selector-resolve-nested@^3.1.0": @@ -1871,24 +1871,33 @@ 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" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" - integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== +"@jest/pattern@30.0.1": + version "30.0.1" + resolved "https://registry.yarnpkg.com/@jest/pattern/-/pattern-30.0.1.tgz#d5304147f49a052900b4b853dedb111d080e199f" + integrity sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA== dependencies: - "@sinclair/typebox" "^0.27.8" - -"@jest/types@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" - integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== - dependencies: - "@jest/schemas" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" + jest-regex-util "30.0.1" + +"@jest/schemas@30.0.5": + version "30.0.5" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-30.0.5.tgz#7bdf69fc5a368a5abdb49fd91036c55225846473" + integrity sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA== + dependencies: + "@sinclair/typebox" "^0.34.0" + +"@jest/types@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-30.2.0.tgz#1c678a7924b8f59eafd4c77d56b6d0ba976d62b8" + integrity sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg== + dependencies: + "@jest/pattern" "30.0.1" + "@jest/schemas" "30.0.5" + "@types/istanbul-lib-coverage" "^2.0.6" + "@types/istanbul-reports" "^3.0.4" + "@types/node" "*" + "@types/yargs" "^17.0.33" + chalk "^4.1.2" "@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.5": version "0.3.13" @@ -2008,10 +2017,10 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== -"@sinclair/typebox@^0.27.8": - version "0.27.8" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== +"@sinclair/typebox@^0.34.0": + version "0.34.41" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.34.41.tgz#aa51a6c1946df2c5a11494a2cdb9318e026db16c" + integrity sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g== "@symfony/stimulus-bridge@^4.0.0": version "4.0.1" @@ -2116,7 +2125,7 @@ dependencies: "@types/unist" "*" -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.6": version "2.0.6" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== @@ -2128,7 +2137,7 @@ dependencies: "@types/istanbul-lib-coverage" "*" -"@types/istanbul-reports@^3.0.0": +"@types/istanbul-reports@^3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== @@ -2191,14 +2200,14 @@ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== -"@types/yargs@^17.0.8": +"@types/yargs@^17.0.33": version "17.0.35" resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.35.tgz#07013e46aa4d7d7d50a49e15604c1c5340d4eb24" integrity sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg== dependencies: "@types/yargs-parser" "*" -"@ungap/structured-clone@^1.0.0": +"@ungap/structured-clone@^1.0.0", "@ungap/structured-clone@^1.3.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== @@ -2612,10 +2621,10 @@ base64-js@^1.1.2, base64-js@^1.3.0: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -baseline-browser-mapping@^2.8.25: - version "2.8.32" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.32.tgz#5de72358cf363ac41e7d642af239f6ac5ed1270a" - integrity sha512-OPz5aBThlyLFgxyhdwf/s2+8ab3OvT7AdTNvKHBwpXomIYeXqpUUuT8LrdtxZSsWJ4R4CU1un4XGh5Ez3nlTpw== +baseline-browser-mapping@^2.9.0: + version "2.9.4" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.4.tgz#a010e50ea6da48fba78179aef9b6e771d00fff42" + integrity sha512-ZCQ9GEWl73BVm8bu5Fts8nt7MHdbt5vY9bP6WGnUh+r3l8M7CgfyTlwsgCbMC66BNxPr6Xoce3j66Ms5YUQTNA== big.js@^5.2.2: version "5.2.2" @@ -2680,15 +2689,15 @@ browser-stdout@1.3.1: integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.26.3, browserslist@^4.27.0, browserslist@^4.28.0: - version "4.28.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.0.tgz#9cefece0a386a17a3cd3d22ebf67b9deca1b5929" - integrity sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ== + version "4.28.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.1.tgz#7f534594628c53c63101079e27e40de490456a95" + integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA== dependencies: - baseline-browser-mapping "^2.8.25" - caniuse-lite "^1.0.30001754" - electron-to-chromium "^1.5.249" + baseline-browser-mapping "^2.9.0" + caniuse-lite "^1.0.30001759" + electron-to-chromium "^1.5.263" node-releases "^2.0.27" - update-browserslist-db "^1.1.4" + update-browserslist-db "^1.2.0" bs-custom-file-input@^1.3.4: version "1.3.4" @@ -2775,10 +2784,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.30001754: - version "1.0.30001757" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001757.tgz#a46ff91449c69522a462996c6aac4ef95d7ccc5e" - integrity sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001759: + version "1.0.30001759" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001759.tgz#d569e7b010372c6b0ca3946e30dada0a2e9d5006" + integrity sha512-Pzfx9fOKoKvevQf8oCXoyNRQ5QyxJj+3O0Rqx2V5oxT61KGx8+n6hV/IUyJeifUci2clnmmKVpvtiqRzgiWjSw== ccount@^2.0.0: version "2.0.1" @@ -2802,7 +2811,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.1.0: +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -2850,77 +2859,77 @@ chrome-trace-event@^1.0.2: resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== -ci-info@^3.2.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" - integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== +ci-info@^4.2.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.3.1.tgz#355ad571920810b5623e11d40232f443f16f1daa" + integrity sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA== -ckeditor5@47.2.0, ckeditor5@^47.0.0: - version "47.2.0" - resolved "https://registry.yarnpkg.com/ckeditor5/-/ckeditor5-47.2.0.tgz#8aeb6466c6dbb1d3b990f9a52c114fbe12fee498" - integrity sha512-mrG9UdpT4JC0I44vK1DV5UwfGhruEG/FMXIWwGv+LWYrKt4aLL/5NyNpW86UDO9YAFSaw6IdEcbJGC/WkMJJjA== +ckeditor5@47.3.0, ckeditor5@^47.0.0: + version "47.3.0" + resolved "https://registry.yarnpkg.com/ckeditor5/-/ckeditor5-47.3.0.tgz#6378478ed869ccbb9885610d4d0d6223032627fc" + integrity sha512-3UDvnAi8TB/5i9flEFfOLIQAIWUoIbucvvFCqKWJqpfZy3F3k34GLEgDV/3VM6O6QV+UNHbzYaSTAl4yKVvoXg== dependencies: - "@ckeditor/ckeditor5-adapter-ckfinder" "47.2.0" - "@ckeditor/ckeditor5-alignment" "47.2.0" - "@ckeditor/ckeditor5-autoformat" "47.2.0" - "@ckeditor/ckeditor5-autosave" "47.2.0" - "@ckeditor/ckeditor5-basic-styles" "47.2.0" - "@ckeditor/ckeditor5-block-quote" "47.2.0" - "@ckeditor/ckeditor5-bookmark" "47.2.0" - "@ckeditor/ckeditor5-ckbox" "47.2.0" - "@ckeditor/ckeditor5-ckfinder" "47.2.0" - "@ckeditor/ckeditor5-clipboard" "47.2.0" - "@ckeditor/ckeditor5-cloud-services" "47.2.0" - "@ckeditor/ckeditor5-code-block" "47.2.0" - "@ckeditor/ckeditor5-core" "47.2.0" - "@ckeditor/ckeditor5-easy-image" "47.2.0" - "@ckeditor/ckeditor5-editor-balloon" "47.2.0" - "@ckeditor/ckeditor5-editor-classic" "47.2.0" - "@ckeditor/ckeditor5-editor-decoupled" "47.2.0" - "@ckeditor/ckeditor5-editor-inline" "47.2.0" - "@ckeditor/ckeditor5-editor-multi-root" "47.2.0" - "@ckeditor/ckeditor5-emoji" "47.2.0" - "@ckeditor/ckeditor5-engine" "47.2.0" - "@ckeditor/ckeditor5-enter" "47.2.0" - "@ckeditor/ckeditor5-essentials" "47.2.0" - "@ckeditor/ckeditor5-find-and-replace" "47.2.0" - "@ckeditor/ckeditor5-font" "47.2.0" - "@ckeditor/ckeditor5-fullscreen" "47.2.0" - "@ckeditor/ckeditor5-heading" "47.2.0" - "@ckeditor/ckeditor5-highlight" "47.2.0" - "@ckeditor/ckeditor5-horizontal-line" "47.2.0" - "@ckeditor/ckeditor5-html-embed" "47.2.0" - "@ckeditor/ckeditor5-html-support" "47.2.0" - "@ckeditor/ckeditor5-icons" "47.2.0" - "@ckeditor/ckeditor5-image" "47.2.0" - "@ckeditor/ckeditor5-indent" "47.2.0" - "@ckeditor/ckeditor5-language" "47.2.0" - "@ckeditor/ckeditor5-link" "47.2.0" - "@ckeditor/ckeditor5-list" "47.2.0" - "@ckeditor/ckeditor5-markdown-gfm" "47.2.0" - "@ckeditor/ckeditor5-media-embed" "47.2.0" - "@ckeditor/ckeditor5-mention" "47.2.0" - "@ckeditor/ckeditor5-minimap" "47.2.0" - "@ckeditor/ckeditor5-page-break" "47.2.0" - "@ckeditor/ckeditor5-paragraph" "47.2.0" - "@ckeditor/ckeditor5-paste-from-office" "47.2.0" - "@ckeditor/ckeditor5-remove-format" "47.2.0" - "@ckeditor/ckeditor5-restricted-editing" "47.2.0" - "@ckeditor/ckeditor5-select-all" "47.2.0" - "@ckeditor/ckeditor5-show-blocks" "47.2.0" - "@ckeditor/ckeditor5-source-editing" "47.2.0" - "@ckeditor/ckeditor5-special-characters" "47.2.0" - "@ckeditor/ckeditor5-style" "47.2.0" - "@ckeditor/ckeditor5-table" "47.2.0" - "@ckeditor/ckeditor5-theme-lark" "47.2.0" - "@ckeditor/ckeditor5-typing" "47.2.0" - "@ckeditor/ckeditor5-ui" "47.2.0" - "@ckeditor/ckeditor5-undo" "47.2.0" - "@ckeditor/ckeditor5-upload" "47.2.0" - "@ckeditor/ckeditor5-utils" "47.2.0" - "@ckeditor/ckeditor5-watchdog" "47.2.0" - "@ckeditor/ckeditor5-widget" "47.2.0" - "@ckeditor/ckeditor5-word-count" "47.2.0" + "@ckeditor/ckeditor5-adapter-ckfinder" "47.3.0" + "@ckeditor/ckeditor5-alignment" "47.3.0" + "@ckeditor/ckeditor5-autoformat" "47.3.0" + "@ckeditor/ckeditor5-autosave" "47.3.0" + "@ckeditor/ckeditor5-basic-styles" "47.3.0" + "@ckeditor/ckeditor5-block-quote" "47.3.0" + "@ckeditor/ckeditor5-bookmark" "47.3.0" + "@ckeditor/ckeditor5-ckbox" "47.3.0" + "@ckeditor/ckeditor5-ckfinder" "47.3.0" + "@ckeditor/ckeditor5-clipboard" "47.3.0" + "@ckeditor/ckeditor5-cloud-services" "47.3.0" + "@ckeditor/ckeditor5-code-block" "47.3.0" + "@ckeditor/ckeditor5-core" "47.3.0" + "@ckeditor/ckeditor5-easy-image" "47.3.0" + "@ckeditor/ckeditor5-editor-balloon" "47.3.0" + "@ckeditor/ckeditor5-editor-classic" "47.3.0" + "@ckeditor/ckeditor5-editor-decoupled" "47.3.0" + "@ckeditor/ckeditor5-editor-inline" "47.3.0" + "@ckeditor/ckeditor5-editor-multi-root" "47.3.0" + "@ckeditor/ckeditor5-emoji" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-enter" "47.3.0" + "@ckeditor/ckeditor5-essentials" "47.3.0" + "@ckeditor/ckeditor5-find-and-replace" "47.3.0" + "@ckeditor/ckeditor5-font" "47.3.0" + "@ckeditor/ckeditor5-fullscreen" "47.3.0" + "@ckeditor/ckeditor5-heading" "47.3.0" + "@ckeditor/ckeditor5-highlight" "47.3.0" + "@ckeditor/ckeditor5-horizontal-line" "47.3.0" + "@ckeditor/ckeditor5-html-embed" "47.3.0" + "@ckeditor/ckeditor5-html-support" "47.3.0" + "@ckeditor/ckeditor5-icons" "47.3.0" + "@ckeditor/ckeditor5-image" "47.3.0" + "@ckeditor/ckeditor5-indent" "47.3.0" + "@ckeditor/ckeditor5-language" "47.3.0" + "@ckeditor/ckeditor5-link" "47.3.0" + "@ckeditor/ckeditor5-list" "47.3.0" + "@ckeditor/ckeditor5-markdown-gfm" "47.3.0" + "@ckeditor/ckeditor5-media-embed" "47.3.0" + "@ckeditor/ckeditor5-mention" "47.3.0" + "@ckeditor/ckeditor5-minimap" "47.3.0" + "@ckeditor/ckeditor5-page-break" "47.3.0" + "@ckeditor/ckeditor5-paragraph" "47.3.0" + "@ckeditor/ckeditor5-paste-from-office" "47.3.0" + "@ckeditor/ckeditor5-remove-format" "47.3.0" + "@ckeditor/ckeditor5-restricted-editing" "47.3.0" + "@ckeditor/ckeditor5-select-all" "47.3.0" + "@ckeditor/ckeditor5-show-blocks" "47.3.0" + "@ckeditor/ckeditor5-source-editing" "47.3.0" + "@ckeditor/ckeditor5-special-characters" "47.3.0" + "@ckeditor/ckeditor5-style" "47.3.0" + "@ckeditor/ckeditor5-table" "47.3.0" + "@ckeditor/ckeditor5-theme-lark" "47.3.0" + "@ckeditor/ckeditor5-typing" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-undo" "47.3.0" + "@ckeditor/ckeditor5-upload" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.3.0" + "@ckeditor/ckeditor5-watchdog" "47.3.0" + "@ckeditor/ckeditor5-widget" "47.3.0" + "@ckeditor/ckeditor5-word-count" "47.3.0" clean-stack@^2.0.0: version "2.2.0" @@ -3165,13 +3174,13 @@ css-loader@^7.1.0: semver "^7.5.4" css-minimizer-webpack-plugin@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-7.0.2.tgz#aa1b01c6033f5b2f86ddb60c1f5bddd012b50cac" - integrity sha512-nBRWZtI77PBZQgcXMNqiIXVshiQOVLGSf2qX/WZfG8IQfMbeHUMXaBWQmiiSTmPJUflQxHjZjzAmuyO7tpL2Jg== + version "7.0.3" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-7.0.3.tgz#2da02f79ed5af0f81ac67a39a39bc430c75a0d0d" + integrity sha512-O99EbZ3P9YqfjWPvaL5Ndr54hP1V1N9IRKDLzKpEm1cw5eYF5KTFvz63Wm/AGDz841ceGmLvU1rdN8LrElMIiQ== dependencies: "@jridgewell/trace-mapping" "^0.3.25" cssnano "^7.0.4" - jest-worker "^29.7.0" + jest-worker "^30.0.5" postcss "^8.4.40" schema-utils "^4.2.0" serialize-javascript "^6.0.2" @@ -3661,10 +3670,10 @@ duplexer@^0.1.2: resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -electron-to-chromium@^1.5.249: - version "1.5.262" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.262.tgz#c31eed591c6628908451c9ca0f0758ed514aa003" - integrity sha512-NlAsMteRHek05jRUxUR0a5jpjYq9ykk6+kO0yRaMi5moe7u0fVIOeQ3Y30A8dIiWFBNUoQGi1ljb1i5VtS9WQQ== +electron-to-chromium@^1.5.263: + version "1.5.266" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.266.tgz#41ed029b3cf641c4ee071de42954b36dca8f5f4e" + integrity sha512-kgWEglXvkEfMH7rxP5OSZZwnaDWT7J9EoZCujhnpLbfi0bbNtRkgdX2E3gt0Uer11c61qCYktB3hwkAS325sJg== emoji-regex@^7.0.1: version "7.0.3" @@ -4218,7 +4227,7 @@ gopd@^1.0.1, gopd@^1.2.0: resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.2, graceful-fs@^4.2.4: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -4836,17 +4845,22 @@ javascript-stringify@^1.6.0: resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-1.6.0.tgz#142d111f3a6e3dae8f4a9afd77d45855b5a9cce3" integrity sha512-fnjC0up+0SjEJtgmmG+teeel68kutkvzfctO/KxE3qJlbunkJYAshgH3boU++gSBHP8z5/r0ts0qRIrHf0RTQQ== -jest-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" - integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== +jest-regex-util@30.0.1: + version "30.0.1" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-30.0.1.tgz#f17c1de3958b67dfe485354f5a10093298f2a49b" + integrity sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA== + +jest-util@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-30.2.0.tgz#5142adbcad6f4e53c2776c067a4db3c14f913705" + integrity sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA== dependencies: - "@jest/types" "^29.6.3" + "@jest/types" "30.2.0" "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" + chalk "^4.1.2" + ci-info "^4.2.0" + graceful-fs "^4.2.11" + picomatch "^4.0.2" jest-worker@^26.5.0: version "26.6.2" @@ -4866,15 +4880,16 @@ jest-worker@^27.4.5: merge-stream "^2.0.0" supports-color "^8.0.0" -jest-worker@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" - integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== +jest-worker@^30.0.5: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-30.2.0.tgz#fd5c2a36ff6058ec8f74366ec89538cc99539d26" + integrity sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g== dependencies: "@types/node" "*" - jest-util "^29.7.0" + "@ungap/structured-clone" "^1.3.0" + jest-util "30.2.0" merge-stream "^2.0.0" - supports-color "^8.0.0" + supports-color "^8.1.1" jpeg-exif@^1.1.4: version "1.1.4" @@ -4949,9 +4964,9 @@ jszip@^3.2.0: setimmediate "^1.0.5" katex@^0.16.0: - version "0.16.25" - resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.25.tgz#61699984277e3bdb3e89e0e446b83cd0a57d87db" - integrity sha512-woHRUZ/iF23GBP1dkDQMh1QBad9dmr8/PAwNA54VrSOVYgI12MAcE14TqnDdQOdzyEonGzMepYnqBMYdsoAr8Q== + version "0.16.26" + resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.26.tgz#7bfd7fd2ce10cffdf872a3a6c5a593c26d1bd084" + integrity sha512-LvYwQDwfcFB3rCkxwzqVFxhIB21x1JivrWAs3HT9NsmtgvQrcVCZ6xihnNwXwiQ8UhqRtDJRmwrRz5EgzQ2DuA== dependencies: commander "^8.3.0" @@ -5958,11 +5973,16 @@ picocolors@^1.0.0, picocolors@^1.1.0, picocolors@^1.1.1: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== -picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +picomatch@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -6500,9 +6520,9 @@ postcss@^8.2.14, postcss@^8.2.15, postcss@^8.4.12, postcss@^8.4.33, postcss@^8.4 source-map-js "^1.2.1" preact@^10.13.2: - version "10.27.2" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.27.2.tgz#19b9009c1be801a76a0aaf0fe5ba665985a09312" - integrity sha512-5SYSgFKSyhCbk6SrXyMpqjb5+MQBgfvEKE/OC+PujcY34sOpqtr+0AZQtPYx5IA6VxynQ7rUPCtKzyovpj9Bpg== + version "10.28.0" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.28.0.tgz#a851300df42842797046545e4172a4128d158755" + integrity sha512-rytDAoiXr3+t6OIP3WGlDd0ouCUG1iCWzkcY3++Nreuoi17y6T5i/zRhe6uYfoVcxq6YU+sBtJouuRDsq8vvqA== pretty-error@^4.0.0: version "4.0.0" @@ -7315,7 +7335,7 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^8.0.0: +supports-color@^8.0.0, supports-color@^8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== @@ -7391,9 +7411,9 @@ terser-webpack-plugin@^4.2.3: webpack-sources "^1.4.3" terser-webpack-plugin@^5.3.0, terser-webpack-plugin@^5.3.11: - version "5.3.14" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz#9031d48e57ab27567f02ace85c7d690db66c3e06" - integrity sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw== + version "5.3.15" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.15.tgz#0a26860b765eaffa8e840170aabc5b3a3f6f6bb9" + integrity sha512-PGkOdpRFK+rb1TzVz+msVhw4YMRT9txLF4kRqvJhGhCM324xuR3REBSHALN+l+sAhKUmz0aotnjp5D+P83mLhQ== dependencies: "@jridgewell/trace-mapping" "^0.3.25" jest-worker "^27.4.5" @@ -7486,9 +7506,9 @@ tslib@^2.8.0: integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== type-fest@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-5.2.0.tgz#7dd671273eb6bcba71af0babe303e8dbab60f795" - integrity sha512-xxCJm+Bckc6kQBknN7i9fnP/xobQRsRQxR01CztFkp/h++yfVxUUcmMgfR2HttJx/dpWjS9ubVuyspJv24Q9DA== + version "5.3.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-5.3.1.tgz#251b8d0a813c1dbccf1f9450ba5adcdf7072adc2" + integrity sha512-VCn+LMHbd4t6sF3wfU/+HKT63C9OoyrSIf4b+vtWHpt2U7/4InZG467YDNMFMR70DdHjAdpPWmw2lzRdg0Xqqg== dependencies: tagged-tag "^1.0.0" @@ -7674,10 +7694,10 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -update-browserslist-db@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz#7802aa2ae91477f255b86e0e46dbc787a206ad4a" - integrity sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A== +update-browserslist-db@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.2.tgz#cfb4358afa08b3d5731a2ecd95eebf4ddef8033e" + integrity sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA== dependencies: escalade "^3.2.0" picocolors "^1.1.1" From 5ab31a84e466354b902cbb89c37c9033c3bf2929 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 7 Dec 2025 19:10:05 +0100 Subject: [PATCH 066/235] Workaround for bug introduced with symfony 7.4.1 Hopefully gets fixed in next version: https://github.com/symfony/symfony/pull/62682 --- config/services.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/services.yaml b/config/services.yaml index 4ba33456..896cab32 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -35,6 +35,8 @@ services: exclude: - '../src/DataFixtures/' - '../src/Doctrine/Purger/' + - '../src/Entity/' + - '../src/Helpers/' # controllers are imported separately to make sure services can be injected # as action arguments even if you don't extend any base controller class From b1bf70c5311c0282543ead22720540f44308667e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 7 Dec 2025 19:15:47 +0100 Subject: [PATCH 067/235] Removed now unnecessary workaround for fixtures --- config/services.yaml | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/config/services.yaml b/config/services.yaml index 896cab32..5021c577 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -33,8 +33,6 @@ services: App\: resource: '../src/' exclude: - - '../src/DataFixtures/' - - '../src/Doctrine/Purger/' - '../src/Entity/' - '../src/Helpers/' @@ -276,21 +274,12 @@ services: tags: - { name: monolog.processor } + App\Doctrine\Purger\ResetAutoIncrementPurgerFactory: + tags: + - { name: 'doctrine.fixtures.purger_factory', alias: 'reset_autoincrement_purger' } + when@test: &test services: - - App\DataFixtures\: - resource: '../src/DataFixtures/' - autoconfigure: true - autowire: true - - App\Doctrine\Purger\: - resource: '../src/Doctrine/Purger/' - - App\Doctrine\Purger\ResetAutoIncrementPurgerFactory: - tags: - - { name: 'doctrine.fixtures.purger_factory', alias: 'reset_autoincrement_purger' } - # Decorate the doctrine fixtures load command to use our custom purger by default doctrine.fixtures_load_command.custom: decorates: doctrine.fixtures_load_command @@ -299,6 +288,3 @@ when@test: &test - '@doctrine.fixtures.loader' - '@doctrine' - { default: '@App\Doctrine\Purger\DoNotUsePurgerFactory' } - -when@dev: - *test From a66a1b1c334448c402068e7db57644849655051f Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Sun, 7 Dec 2025 19:31:16 +0100 Subject: [PATCH 068/235] Document KiCad's rejection of self-signed certificates (#1140) * Initial plan * Add documentation about KiCad self-signed certificate issues Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> --- docs/troubleshooting.md | 15 +++++++++++++++ docs/usage/eda_integration.md | 10 ++++++++++ 2 files changed, 25 insertions(+) diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 74f9875e..a5b1b1c8 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -50,6 +50,21 @@ docker-compose logs -f Please include the error logs in your issue on GitHub, if you open an issue. +## KiCad Integration Issues + +### "API responded with error code: 0: Unknown" + +If you get this error when trying to connect KiCad to Part-DB, it is most likely caused by KiCad not trusting your SSL/TLS certificate. + +**Cause:** KiCad does not trust self-signed SSL/TLS certificates. + +**Solutions:** +- Use HTTP instead of HTTPS for the `root_url` in your KiCad library configuration (only recommended for local networks) +- Use a certificate from a trusted Certificate Authority (CA) like [Let's Encrypt](https://letsencrypt.org/) +- Add your self-signed certificate to the system's trusted certificate store on the computer running KiCad (the exact steps depend on your operating system) + +For more information about KiCad integration, see the [EDA / KiCad integration](../usage/eda_integration.md) documentation. + ## Report Issue If an error occurs, or you found a bug, please [open an issue on GitHub](https://github.com/Part-DB/Part-DB-server). diff --git a/docs/usage/eda_integration.md b/docs/usage/eda_integration.md index f8988763..28386a91 100644 --- a/docs/usage/eda_integration.md +++ b/docs/usage/eda_integration.md @@ -22,6 +22,16 @@ This also allows to configure available and usable parts and their properties in 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 permission to access the Part-DB API and create API tokens. Every user can have their own account, or you set up a shared read-only account. +{: .warning } +> **HTTPS with Self-Signed Certificates** +> +> KiCad does not trust self-signed SSL/TLS certificates. If your Part-DB instance uses HTTPS with a self-signed certificate, KiCad will fail to connect and show an error like: `API responded with error code: 0: Unknown`. +> +> To resolve this issue, you have the following options: +> - Use HTTP instead of HTTPS for the `root_url` (only recommended for local networks) +> - Use a certificate from a trusted Certificate Authority (CA) like [Let's Encrypt](https://letsencrypt.org/) +> - Add your self-signed certificate to the system's trusted certificate store on the computer running KiCad (the exact steps depend on your operating system) + 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 the Part-DB database, so a token with a read-only scope is enough. From c60b406157a4cfcedca9e114216a2ab9a45a5a1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 7 Dec 2025 20:21:19 +0100 Subject: [PATCH 069/235] Fixed partkeepr import with databases that do not feature custom states --- .../PartKeeprImporter/PKDatastructureImporter.php | 2 +- .../ImportExportSystem/PartKeeprImporter/PKPartImporter.php | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Services/ImportExportSystem/PartKeeprImporter/PKDatastructureImporter.php b/src/Services/ImportExportSystem/PartKeeprImporter/PKDatastructureImporter.php index 9e674f05..ec23d34b 100644 --- a/src/Services/ImportExportSystem/PartKeeprImporter/PKDatastructureImporter.php +++ b/src/Services/ImportExportSystem/PartKeeprImporter/PKDatastructureImporter.php @@ -152,7 +152,7 @@ class PKDatastructureImporter public function importPartCustomStates(array $data): int { if (!isset($data['partcustomstate'])) { - throw new \RuntimeException('$data must contain a "partcustomstate" key!'); + return 0; //Not all PartKeepr installations have custom states } $partCustomStateData = $data['partcustomstate']; diff --git a/src/Services/ImportExportSystem/PartKeeprImporter/PKPartImporter.php b/src/Services/ImportExportSystem/PartKeeprImporter/PKPartImporter.php index ab06a134..cab5a49b 100644 --- a/src/Services/ImportExportSystem/PartKeeprImporter/PKPartImporter.php +++ b/src/Services/ImportExportSystem/PartKeeprImporter/PKPartImporter.php @@ -91,7 +91,10 @@ class PKPartImporter $this->setAssociationField($entity, 'partUnit', MeasurementUnit::class, $part['partUnit_id']); } - $this->setAssociationField($entity, 'partCustomState', MeasurementUnit::class, $part['partCustomState_id']); + if (isset($part['partCustomState_id'])) { + $this->setAssociationField($entity, 'partCustomState', MeasurementUnit::class, + $part['partCustomState_id']); + } //Create a part lot to store the stock level and location $lot = new PartLot(); From 39ff4f81c06b07b6fa0b60ad3c85f6da3d7a50cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 7 Dec 2025 20:25:39 +0100 Subject: [PATCH 070/235] Use image attachments as preview images for partkeepr imports Fixes issue #1115 --- .../PartKeeprImporter/PKImportHelperTrait.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Services/ImportExportSystem/PartKeeprImporter/PKImportHelperTrait.php b/src/Services/ImportExportSystem/PartKeeprImporter/PKImportHelperTrait.php index 1e4cd3ba..64127341 100644 --- a/src/Services/ImportExportSystem/PartKeeprImporter/PKImportHelperTrait.php +++ b/src/Services/ImportExportSystem/PartKeeprImporter/PKImportHelperTrait.php @@ -150,6 +150,11 @@ trait PKImportHelperTrait $target->addAttachment($attachment); $this->em->persist($attachment); + + //If the attachment is an image, and the target has no master picture yet, set it + if ($attachment->isPicture() && $target->getMasterPictureAttachment() === null) { + $target->setMasterPictureAttachment($attachment); + } } $this->em->flush(); From e1090d46e3a7d26e6ad124cc3e80393d2cd7c81a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 7 Dec 2025 20:34:47 +0100 Subject: [PATCH 071/235] Fixed error that attachment path had to have exactly 2048 chars --- src/Entity/Attachments/Attachment.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Entity/Attachments/Attachment.php b/src/Entity/Attachments/Attachment.php index 08aacaa0..259785cb 100644 --- a/src/Entity/Attachments/Attachment.php +++ b/src/Entity/Attachments/Attachment.php @@ -169,7 +169,7 @@ abstract class Attachment extends AbstractNamedDBElement #[ORM\Column(type: Types::STRING, length: 2048, nullable: true)] #[Groups(['attachment:read'])] #[ApiProperty(example: 'http://example.com/image.jpg')] - #[Assert\Length(2048)] + #[Assert\Length(max: 2048)] protected ?string $external_path = null; /** From 15243dbcc889d4fe1b13f6c424f67b0ee95b8be4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 7 Dec 2025 20:39:03 +0100 Subject: [PATCH 072/235] Allow to autodetermine categories and pathes from info provider import using a full path This fixes issue #1113 --- src/Repository/StructuralDBElementRepository.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/Repository/StructuralDBElementRepository.php b/src/Repository/StructuralDBElementRepository.php index 781c7622..7fc38671 100644 --- a/src/Repository/StructuralDBElementRepository.php +++ b/src/Repository/StructuralDBElementRepository.php @@ -243,6 +243,14 @@ class StructuralDBElementRepository extends AttachmentContainingDBElementReposit return $result[0]; } + //If the name contains category delimiters like ->, try to find the element by its full path + if (str_contains($name, '->')) { + $tmp = $this->getEntityByPath($name, '->'); + if (count($tmp) > 0) { + return $tmp[count($tmp) - 1]; + } + } + //If we find nothing, return null return null; } From 065396d1e92561cd3156ed7b89254c6307da925d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 7 Dec 2025 20:44:32 +0100 Subject: [PATCH 073/235] Correctly determine the number of mass created entities Fixes issue #1102 --- src/Controller/AdminPages/BaseAdminController.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Controller/AdminPages/BaseAdminController.php b/src/Controller/AdminPages/BaseAdminController.php index e7dd7421..558c7bb2 100644 --- a/src/Controller/AdminPages/BaseAdminController.php +++ b/src/Controller/AdminPages/BaseAdminController.php @@ -366,6 +366,14 @@ abstract class BaseAdminController extends AbstractController } } + //Count how many actual new entities were created (id is null until persisted) + $created_count = 0; + foreach ($results as $result) { + if (null === $result->getID()) { + $created_count++; + } + } + //Persist valid entities to DB foreach ($results as $result) { $em->persist($result); @@ -373,7 +381,7 @@ abstract class BaseAdminController extends AbstractController $em->flush(); if (count($results) > 0) { - $this->addFlash('success', t('entity.mass_creation_flash', ['%COUNT%' => count($results)])); + $this->addFlash('success', t('entity.mass_creation_flash', ['%COUNT%' => $created_count])); } } From 319ac406a818d63ba954af039c1af37ba5486f2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 7 Dec 2025 20:50:09 +0100 Subject: [PATCH 074/235] Update the mass creation form, so that you can see the newly created entities in dropdown Fixes issue #1103 --- src/Controller/AdminPages/BaseAdminController.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Controller/AdminPages/BaseAdminController.php b/src/Controller/AdminPages/BaseAdminController.php index 558c7bb2..b2c5e751 100644 --- a/src/Controller/AdminPages/BaseAdminController.php +++ b/src/Controller/AdminPages/BaseAdminController.php @@ -383,6 +383,9 @@ abstract class BaseAdminController extends AbstractController if (count($results) > 0) { $this->addFlash('success', t('entity.mass_creation_flash', ['%COUNT%' => $created_count])); } + + //Recreate mass creation form, so we get the updated parent list and empty lines + $mass_creation_form = $this->createForm(MassCreationForm::class, ['entity_class' => $this->entity_class]); } return $this->render($this->twig_template, [ From b457298152435455d76d218372148c3560da5a5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 7 Dec 2025 21:33:41 +0100 Subject: [PATCH 075/235] Do not clear the mass import form if errors appeared --- src/Controller/AdminPages/BaseAdminController.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Controller/AdminPages/BaseAdminController.php b/src/Controller/AdminPages/BaseAdminController.php index b2c5e751..4378f7a3 100644 --- a/src/Controller/AdminPages/BaseAdminController.php +++ b/src/Controller/AdminPages/BaseAdminController.php @@ -380,12 +380,15 @@ abstract class BaseAdminController extends AbstractController } $em->flush(); - if (count($results) > 0) { + if (count($created_count) > 0) { $this->addFlash('success', t('entity.mass_creation_flash', ['%COUNT%' => $created_count])); } - //Recreate mass creation form, so we get the updated parent list and empty lines - $mass_creation_form = $this->createForm(MassCreationForm::class, ['entity_class' => $this->entity_class]); + if (count($errors)) { + //Recreate mass creation form, so we get the updated parent list and empty lines + $mass_creation_form = $this->createForm(MassCreationForm::class, ['entity_class' => $this->entity_class]); + } + } return $this->render($this->twig_template, [ From 9565a9d548ea44317ec7cfc3744afd57b564dbcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 7 Dec 2025 21:40:57 +0100 Subject: [PATCH 076/235] Fixed error with mass creation, when elements on different level had the same name Fixes issue #1104 --- src/Controller/AdminPages/BaseAdminController.php | 2 +- src/Services/ImportExportSystem/EntityImporter.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Controller/AdminPages/BaseAdminController.php b/src/Controller/AdminPages/BaseAdminController.php index 4378f7a3..7c109751 100644 --- a/src/Controller/AdminPages/BaseAdminController.php +++ b/src/Controller/AdminPages/BaseAdminController.php @@ -380,7 +380,7 @@ abstract class BaseAdminController extends AbstractController } $em->flush(); - if (count($created_count) > 0) { + if (count($results) > 0) { $this->addFlash('success', t('entity.mass_creation_flash', ['%COUNT%' => $created_count])); } diff --git a/src/Services/ImportExportSystem/EntityImporter.php b/src/Services/ImportExportSystem/EntityImporter.php index 459866ba..a89be9dc 100644 --- a/src/Services/ImportExportSystem/EntityImporter.php +++ b/src/Services/ImportExportSystem/EntityImporter.php @@ -167,7 +167,7 @@ class EntityImporter } //Only return objects once - return array_values(array_unique($valid_entities)); + return array_values(array_unique($valid_entities, SORT_REGULAR)); } /** From e0feda4e466a9a764561f6556ddb70b12032ae12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 7 Dec 2025 22:47:27 +0100 Subject: [PATCH 077/235] Fixed 2DA login Fixes issue #1141 --- config/packages/translation.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/packages/translation.yaml b/config/packages/translation.yaml index a3f529e3..cbc1cd7e 100644 --- a/config/packages/translation.yaml +++ b/config/packages/translation.yaml @@ -1,7 +1,7 @@ framework: default_locale: 'en' # Just enable the locales we need for performance reasons. - enabled_locale: ['en', 'de', 'it', 'fr', 'ru', 'ja', 'cs', 'da', 'zh', 'pl'] + enabled_locale: '%partdb.locale_menu%' translator: default_path: '%kernel.project_dir%/translations' fallbacks: From 98b8c5b788aac772a66b4de1f92c356ddc776370 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 7 Dec 2025 22:47:59 +0100 Subject: [PATCH 078/235] Bump to version 2.3.0 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index c043eea7..276cbf9e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.2.1 +2.3.0 From f46700261948c0c23642692aabd73806c4524231 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 2 Jan 2026 18:35:31 +0100 Subject: [PATCH 079/235] Updated composer dependencies --- composer.lock | 1138 ++++++++------- config/reference.php | 3264 +++++++++++++++++++++--------------------- 2 files changed, 2284 insertions(+), 2118 deletions(-) diff --git a/composer.lock b/composer.lock index 8b5443d2..1875c03f 100644 --- a/composer.lock +++ b/composer.lock @@ -968,7 +968,7 @@ }, { "name": "api-platform/doctrine-common", - "version": "v4.2.9", + "version": "v4.2.11", "source": { "type": "git", "url": "https://github.com/api-platform/doctrine-common.git", @@ -1052,13 +1052,13 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/doctrine-common/tree/v4.2.9" + "source": "https://github.com/api-platform/doctrine-common/tree/v4.2.11" }, "time": "2025-12-04T14:20:26+00:00" }, { "name": "api-platform/doctrine-orm", - "version": "v4.2.9", + "version": "v4.2.11", "source": { "type": "git", "url": "https://github.com/api-platform/doctrine-orm.git", @@ -1139,13 +1139,13 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/doctrine-orm/tree/v4.2.9" + "source": "https://github.com/api-platform/doctrine-orm/tree/v4.2.11" }, "time": "2025-12-04T14:20:26+00:00" }, { "name": "api-platform/documentation", - "version": "v4.2.9", + "version": "v4.2.11", "source": { "type": "git", "url": "https://github.com/api-platform/documentation.git", @@ -1202,13 +1202,13 @@ ], "description": "API Platform documentation controller.", "support": { - "source": "https://github.com/api-platform/documentation/tree/v4.2.9" + "source": "https://github.com/api-platform/documentation/tree/v4.2.11" }, "time": "2025-11-30T12:55:42+00:00" }, { "name": "api-platform/http-cache", - "version": "v4.2.9", + "version": "v4.2.11", "source": { "type": "git", "url": "https://github.com/api-platform/http-cache.git", @@ -1282,22 +1282,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/http-cache/tree/v4.2.9" + "source": "https://github.com/api-platform/http-cache/tree/v4.2.11" }, "time": "2025-11-30T12:55:42+00:00" }, { "name": "api-platform/hydra", - "version": "v4.2.9", + "version": "v4.2.11", "source": { "type": "git", "url": "https://github.com/api-platform/hydra.git", - "reference": "904b3caf457aa49bc302b46b01456799fbb82304" + "reference": "80491f175647d0a63eb96035b2468fc1c2a76c37" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/hydra/zipball/904b3caf457aa49bc302b46b01456799fbb82304", - "reference": "904b3caf457aa49bc302b46b01456799fbb82304", + "url": "https://api.github.com/repos/api-platform/hydra/zipball/80491f175647d0a63eb96035b2468fc1c2a76c37", + "reference": "80491f175647d0a63eb96035b2468fc1c2a76c37", "shasum": "" }, "require": { @@ -1369,22 +1369,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/hydra/tree/v4.2.9" + "source": "https://github.com/api-platform/hydra/tree/v4.2.11" }, - "time": "2025-12-04T14:20:26+00:00" + "time": "2025-12-18T14:34:13+00:00" }, { "name": "api-platform/json-api", - "version": "v4.2.9", + "version": "v4.2.11", "source": { "type": "git", "url": "https://github.com/api-platform/json-api.git", - "reference": "0b5a7c14cc97daae2b720cf0e888059944e106df" + "reference": "2bb93263f900401c41476b93bcf03c386c9500d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/json-api/zipball/0b5a7c14cc97daae2b720cf0e888059944e106df", - "reference": "0b5a7c14cc97daae2b720cf0e888059944e106df", + "url": "https://api.github.com/repos/api-platform/json-api/zipball/2bb93263f900401c41476b93bcf03c386c9500d4", + "reference": "2bb93263f900401c41476b93bcf03c386c9500d4", "shasum": "" }, "require": { @@ -1451,13 +1451,13 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/json-api/tree/v4.2.9" + "source": "https://github.com/api-platform/json-api/tree/v4.2.11" }, - "time": "2025-12-04T14:20:26+00:00" + "time": "2025-12-19T14:13:59+00:00" }, { "name": "api-platform/json-schema", - "version": "v4.2.9", + "version": "v4.2.11", "source": { "type": "git", "url": "https://github.com/api-platform/json-schema.git", @@ -1532,22 +1532,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/json-schema/tree/v4.2.9" + "source": "https://github.com/api-platform/json-schema/tree/v4.2.11" }, "time": "2025-12-02T13:32:19+00:00" }, { "name": "api-platform/jsonld", - "version": "v4.2.9", + "version": "v4.2.11", "source": { "type": "git", "url": "https://github.com/api-platform/jsonld.git", - "reference": "c8896d5a3ddf67ac8aa74bb54199b13153fa39c3" + "reference": "3889b185376198a182d2527c48ec0b29b604505f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/jsonld/zipball/c8896d5a3ddf67ac8aa74bb54199b13153fa39c3", - "reference": "c8896d5a3ddf67ac8aa74bb54199b13153fa39c3", + "url": "https://api.github.com/repos/api-platform/jsonld/zipball/3889b185376198a182d2527c48ec0b29b604505f", + "reference": "3889b185376198a182d2527c48ec0b29b604505f", "shasum": "" }, "require": { @@ -1612,22 +1612,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/jsonld/tree/v4.2.9" + "source": "https://github.com/api-platform/jsonld/tree/v4.2.11" }, - "time": "2025-11-30T12:55:42+00:00" + "time": "2025-12-18T14:34:13+00:00" }, { "name": "api-platform/metadata", - "version": "v4.2.9", + "version": "v4.2.11", "source": { "type": "git", "url": "https://github.com/api-platform/metadata.git", - "reference": "c9953fbbbb02ec9f6d4ccfff30b5904c643c4c64" + "reference": "533774ca55a4f2be9da72da344d5e3e2982fbc86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/metadata/zipball/c9953fbbbb02ec9f6d4ccfff30b5904c643c4c64", - "reference": "c9953fbbbb02ec9f6d4ccfff30b5904c643c4c64", + "url": "https://api.github.com/repos/api-platform/metadata/zipball/533774ca55a4f2be9da72da344d5e3e2982fbc86", + "reference": "533774ca55a4f2be9da72da344d5e3e2982fbc86", "shasum": "" }, "require": { @@ -1710,13 +1710,13 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/metadata/tree/v4.2.9" + "source": "https://github.com/api-platform/metadata/tree/v4.2.11" }, - "time": "2025-12-04T14:20:26+00:00" + "time": "2025-12-18T14:34:13+00:00" }, { "name": "api-platform/openapi", - "version": "v4.2.9", + "version": "v4.2.11", "source": { "type": "git", "url": "https://github.com/api-platform/openapi.git", @@ -1800,22 +1800,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/openapi/tree/v4.2.9" + "source": "https://github.com/api-platform/openapi/tree/v4.2.11" }, "time": "2025-11-30T12:55:42+00:00" }, { "name": "api-platform/serializer", - "version": "v4.2.9", + "version": "v4.2.11", "source": { "type": "git", "url": "https://github.com/api-platform/serializer.git", - "reference": "c3ea805273d5646a0eabb0161850b4e382bb96ef" + "reference": "a511d4ba522c3ebbd78c9e1f05e0918978d72a43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/serializer/zipball/c3ea805273d5646a0eabb0161850b4e382bb96ef", - "reference": "c3ea805273d5646a0eabb0161850b4e382bb96ef", + "url": "https://api.github.com/repos/api-platform/serializer/zipball/a511d4ba522c3ebbd78c9e1f05e0918978d72a43", + "reference": "a511d4ba522c3ebbd78c9e1f05e0918978d72a43", "shasum": "" }, "require": { @@ -1893,22 +1893,22 @@ "serializer" ], "support": { - "source": "https://github.com/api-platform/serializer/tree/v4.2.9" + "source": "https://github.com/api-platform/serializer/tree/v4.2.11" }, - "time": "2025-11-30T12:55:42+00:00" + "time": "2025-12-18T14:36:58+00:00" }, { "name": "api-platform/state", - "version": "v4.2.9", + "version": "v4.2.11", "source": { "type": "git", "url": "https://github.com/api-platform/state.git", - "reference": "ade7d1103e3fa2adec29acd723e12ece8ec58c99" + "reference": "b9644669f953a76742c9f49d571ff42c68e581d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/state/zipball/ade7d1103e3fa2adec29acd723e12ece8ec58c99", - "reference": "ade7d1103e3fa2adec29acd723e12ece8ec58c99", + "url": "https://api.github.com/repos/api-platform/state/zipball/b9644669f953a76742c9f49d571ff42c68e581d1", + "reference": "b9644669f953a76742c9f49d571ff42c68e581d1", "shasum": "" }, "require": { @@ -1990,22 +1990,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/state/tree/v4.2.9" + "source": "https://github.com/api-platform/state/tree/v4.2.11" }, - "time": "2025-12-04T14:20:26+00:00" + "time": "2025-12-17T15:10:17+00:00" }, { "name": "api-platform/symfony", - "version": "v4.2.9", + "version": "v4.2.11", "source": { "type": "git", "url": "https://github.com/api-platform/symfony.git", - "reference": "a5f7792da555461e2adaf4bb92d8441c3ce83241" + "reference": "ab93a0043558beeb7ccd7f2c97304565d4872bb3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/symfony/zipball/a5f7792da555461e2adaf4bb92d8441c3ce83241", - "reference": "a5f7792da555461e2adaf4bb92d8441c3ce83241", + "url": "https://api.github.com/repos/api-platform/symfony/zipball/ab93a0043558beeb7ccd7f2c97304565d4872bb3", + "reference": "ab93a0043558beeb7ccd7f2c97304565d4872bb3", "shasum": "" }, "require": { @@ -2034,6 +2034,7 @@ "api-platform/doctrine-orm": "^4.2.3", "api-platform/elasticsearch": "^4.2.3", "api-platform/graphql": "^4.2.3", + "api-platform/hal": "^4.2.3", "phpspec/prophecy-phpunit": "^2.2", "phpunit/phpunit": "11.5.x-dev", "symfony/expression-language": "^6.4 || ^7.0 || ^8.0", @@ -2051,6 +2052,7 @@ "api-platform/elasticsearch": "To support Elasticsearch.", "api-platform/graphql": "To support GraphQL.", "api-platform/hal": "to support the HAL format", + "api-platform/json-api": "to support the JSON-API format", "api-platform/ramsey-uuid": "To support Ramsey's UUID identifiers.", "phpstan/phpdoc-parser": "To support extracting metadata from PHPDoc.", "psr/cache-implementation": "To use metadata caching.", @@ -2116,13 +2118,13 @@ "symfony" ], "support": { - "source": "https://github.com/api-platform/symfony/tree/v4.2.9" + "source": "https://github.com/api-platform/symfony/tree/v4.2.11" }, - "time": "2025-12-05T14:44:12+00:00" + "time": "2025-12-18T14:34:13+00:00" }, { "name": "api-platform/validator", - "version": "v4.2.9", + "version": "v4.2.11", "source": { "type": "git", "url": "https://github.com/api-platform/validator.git", @@ -2192,7 +2194,7 @@ "validator" ], "support": { - "source": "https://github.com/api-platform/validator/tree/v4.2.9" + "source": "https://github.com/api-platform/validator/tree/v4.2.11" }, "time": "2025-12-04T14:20:26+00:00" }, @@ -2387,16 +2389,16 @@ }, { "name": "composer/ca-bundle", - "version": "1.5.9", + "version": "1.5.10", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "1905981ee626e6f852448b7aaa978f8666c5bc54" + "reference": "961a5e4056dd2e4a2eedcac7576075947c28bf63" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/1905981ee626e6f852448b7aaa978f8666c5bc54", - "reference": "1905981ee626e6f852448b7aaa978f8666c5bc54", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/961a5e4056dd2e4a2eedcac7576075947c28bf63", + "reference": "961a5e4056dd2e4a2eedcac7576075947c28bf63", "shasum": "" }, "require": { @@ -2443,7 +2445,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.5.9" + "source": "https://github.com/composer/ca-bundle/tree/1.5.10" }, "funding": [ { @@ -2455,7 +2457,7 @@ "type": "github" } ], - "time": "2025-11-06T11:46:17+00:00" + "time": "2025-12-08T15:06:51+00:00" }, { "name": "composer/package-versions-deprecated", @@ -3144,16 +3146,16 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "2.18.1", + "version": "2.18.2", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "b769877014de053da0e5cbbb63d0ea2f3b2fea76" + "reference": "0ff098b29b8b3c68307c8987dcaed7fd829c6546" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/b769877014de053da0e5cbbb63d0ea2f3b2fea76", - "reference": "b769877014de053da0e5cbbb63d0ea2f3b2fea76", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/0ff098b29b8b3c68307c8987dcaed7fd829c6546", + "reference": "0ff098b29b8b3c68307c8987dcaed7fd829c6546", "shasum": "" }, "require": { @@ -3245,7 +3247,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.18.1" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.18.2" }, "funding": [ { @@ -3261,7 +3263,7 @@ "type": "tidelift" } ], - "time": "2025-11-05T14:42:10+00:00" + "time": "2025-12-20T21:35:32+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", @@ -3781,16 +3783,16 @@ }, { "name": "doctrine/orm", - "version": "3.5.8", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "78dd074266e8b47a83bcf60ab5fe06c91a639168" + "reference": "d4e9276e79602b1eb4c4029c6c999b0d93478e2f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/78dd074266e8b47a83bcf60ab5fe06c91a639168", - "reference": "78dd074266e8b47a83bcf60ab5fe06c91a639168", + "url": "https://api.github.com/repos/doctrine/orm/zipball/d4e9276e79602b1eb4c4029c6c999b0d93478e2f", + "reference": "d4e9276e79602b1eb4c4029c6c999b0d93478e2f", "shasum": "" }, "require": { @@ -3863,9 +3865,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/3.5.8" + "source": "https://github.com/doctrine/orm/tree/3.6.0" }, - "time": "2025-11-29T23:11:02+00:00" + "time": "2025-12-19T20:36:14+00:00" }, { "name": "doctrine/persistence", @@ -4126,25 +4128,25 @@ }, { "name": "dompdf/php-svg-lib", - "version": "1.0.0", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/dompdf/php-svg-lib.git", - "reference": "eb045e518185298eb6ff8d80d0d0c6b17aecd9af" + "reference": "8259ffb930817e72b1ff1caef5d226501f3dfeb1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/eb045e518185298eb6ff8d80d0d0c6b17aecd9af", - "reference": "eb045e518185298eb6ff8d80d0d0c6b17aecd9af", + "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/8259ffb930817e72b1ff1caef5d226501f3dfeb1", + "reference": "8259ffb930817e72b1ff1caef5d226501f3dfeb1", "shasum": "" }, "require": { "ext-mbstring": "*", "php": "^7.1 || ^8.0", - "sabberworm/php-css-parser": "^8.4" + "sabberworm/php-css-parser": "^8.4 || ^9.0" }, "require-dev": { - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5" + "phpunit/phpunit": "^7.5 || ^8 || ^9 || ^10 || ^11" }, "type": "library", "autoload": { @@ -4166,9 +4168,9 @@ "homepage": "https://github.com/dompdf/php-svg-lib", "support": { "issues": "https://github.com/dompdf/php-svg-lib/issues", - "source": "https://github.com/dompdf/php-svg-lib/tree/1.0.0" + "source": "https://github.com/dompdf/php-svg-lib/tree/1.0.2" }, - "time": "2024-04-29T13:26:35+00:00" + "time": "2026-01-02T16:01:13+00:00" }, { "name": "egulias/email-validator", @@ -4818,16 +4820,16 @@ }, { "name": "imagine/imagine", - "version": "1.5.0", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/php-imagine/Imagine.git", - "reference": "80ab21434890dee9ba54969d31c51ac8d4d551e0" + "reference": "8b130cd281efdea67e52d5f0f998572eb62d2f04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-imagine/Imagine/zipball/80ab21434890dee9ba54969d31c51ac8d4d551e0", - "reference": "80ab21434890dee9ba54969d31c51ac8d4d551e0", + "url": "https://api.github.com/repos/php-imagine/Imagine/zipball/8b130cd281efdea67e52d5f0f998572eb62d2f04", + "reference": "8b130cd281efdea67e52d5f0f998572eb62d2f04", "shasum": "" }, "require": { @@ -4874,9 +4876,9 @@ ], "support": { "issues": "https://github.com/php-imagine/Imagine/issues", - "source": "https://github.com/php-imagine/Imagine/tree/1.5.0" + "source": "https://github.com/php-imagine/Imagine/tree/1.5.1" }, - "time": "2024-12-03T14:37:55+00:00" + "time": "2025-12-09T15:27:47+00:00" }, { "name": "jbtronics/2fa-webauthn", @@ -5762,16 +5764,16 @@ }, { "name": "league/csv", - "version": "9.27.1", + "version": "9.28.0", "source": { "type": "git", "url": "https://github.com/thephpleague/csv.git", - "reference": "26de738b8fccf785397d05ee2fc07b6cd8749797" + "reference": "6582ace29ae09ba5b07049d40ea13eb19c8b5073" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/csv/zipball/26de738b8fccf785397d05ee2fc07b6cd8749797", - "reference": "26de738b8fccf785397d05ee2fc07b6cd8749797", + "url": "https://api.github.com/repos/thephpleague/csv/zipball/6582ace29ae09ba5b07049d40ea13eb19c8b5073", + "reference": "6582ace29ae09ba5b07049d40ea13eb19c8b5073", "shasum": "" }, "require": { @@ -5781,14 +5783,14 @@ "require-dev": { "ext-dom": "*", "ext-xdebug": "*", - "friendsofphp/php-cs-fixer": "^3.75.0", - "phpbench/phpbench": "^1.4.1", - "phpstan/phpstan": "^1.12.27", + "friendsofphp/php-cs-fixer": "^3.92.3", + "phpbench/phpbench": "^1.4.3", + "phpstan/phpstan": "^1.12.32", "phpstan/phpstan-deprecation-rules": "^1.2.1", "phpstan/phpstan-phpunit": "^1.4.2", "phpstan/phpstan-strict-rules": "^1.6.2", - "phpunit/phpunit": "^10.5.16 || ^11.5.22 || ^12.3.6", - "symfony/var-dumper": "^6.4.8 || ^7.3.0" + "phpunit/phpunit": "^10.5.16 || ^11.5.22 || ^12.5.4", + "symfony/var-dumper": "^6.4.8 || ^7.4.0 || ^8.0" }, "suggest": { "ext-dom": "Required to use the XMLConverter and the HTMLConverter classes", @@ -5849,7 +5851,7 @@ "type": "github" } ], - "time": "2025-10-25T08:35:20+00:00" + "time": "2025-12-27T15:18:42+00:00" }, { "name": "league/html-to-markdown", @@ -6007,20 +6009,20 @@ }, { "name": "league/uri", - "version": "7.6.0", + "version": "7.7.0", "source": { "type": "git", "url": "https://github.com/thephpleague/uri.git", - "reference": "f625804987a0a9112d954f9209d91fec52182344" + "reference": "8d587cddee53490f9b82bf203d3a9aa7ea4f9807" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri/zipball/f625804987a0a9112d954f9209d91fec52182344", - "reference": "f625804987a0a9112d954f9209d91fec52182344", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/8d587cddee53490f9b82bf203d3a9aa7ea4f9807", + "reference": "8d587cddee53490f9b82bf203d3a9aa7ea4f9807", "shasum": "" }, "require": { - "league/uri-interfaces": "^7.6", + "league/uri-interfaces": "^7.7", "php": "^8.1", "psr/http-factory": "^1" }, @@ -6093,7 +6095,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri/tree/7.6.0" + "source": "https://github.com/thephpleague/uri/tree/7.7.0" }, "funding": [ { @@ -6101,24 +6103,24 @@ "type": "github" } ], - "time": "2025-11-18T12:17:23+00:00" + "time": "2025-12-07T16:02:06+00:00" }, { "name": "league/uri-components", - "version": "7.6.0", + "version": "7.7.0", "source": { "type": "git", "url": "https://github.com/thephpleague/uri-components.git", - "reference": "ffa1215dbee72ee4b7bc08d983d25293812456c2" + "reference": "005f8693ce8c1f16f80e88a05cbf08da04c1c374" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri-components/zipball/ffa1215dbee72ee4b7bc08d983d25293812456c2", - "reference": "ffa1215dbee72ee4b7bc08d983d25293812456c2", + "url": "https://api.github.com/repos/thephpleague/uri-components/zipball/005f8693ce8c1f16f80e88a05cbf08da04c1c374", + "reference": "005f8693ce8c1f16f80e88a05cbf08da04c1c374", "shasum": "" }, "require": { - "league/uri": "^7.6", + "league/uri": "^7.7", "php": "^8.1" }, "suggest": { @@ -6178,7 +6180,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri-components/tree/7.6.0" + "source": "https://github.com/thephpleague/uri-components/tree/7.7.0" }, "funding": [ { @@ -6186,20 +6188,20 @@ "type": "github" } ], - "time": "2025-11-18T12:17:23+00:00" + "time": "2025-12-07T16:02:56+00:00" }, { "name": "league/uri-interfaces", - "version": "7.6.0", + "version": "7.7.0", "source": { "type": "git", "url": "https://github.com/thephpleague/uri-interfaces.git", - "reference": "ccbfb51c0445298e7e0b7f4481b942f589665368" + "reference": "62ccc1a0435e1c54e10ee6022df28d6c04c2946c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/ccbfb51c0445298e7e0b7f4481b942f589665368", - "reference": "ccbfb51c0445298e7e0b7f4481b942f589665368", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/62ccc1a0435e1c54e10ee6022df28d6c04c2946c", + "reference": "62ccc1a0435e1c54e10ee6022df28d6c04c2946c", "shasum": "" }, "require": { @@ -6262,7 +6264,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri-interfaces/tree/7.6.0" + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.7.0" }, "funding": [ { @@ -6270,7 +6272,7 @@ "type": "github" } ], - "time": "2025-11-18T12:17:23+00:00" + "time": "2025-12-07T16:03:21+00:00" }, { "name": "liip/imagine-bundle", @@ -6683,16 +6685,16 @@ }, { "name": "monolog/monolog", - "version": "3.9.0", + "version": "3.10.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6" + "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/10d85740180ecba7896c87e06a166e0c95a0e3b6", - "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/b321dd6749f0bf7189444158a3ce785cc16d69b0", + "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0", "shasum": "" }, "require": { @@ -6710,7 +6712,7 @@ "graylog2/gelf-php": "^1.4.2 || ^2.0", "guzzlehttp/guzzle": "^7.4.5", "guzzlehttp/psr7": "^2.2", - "mongodb/mongodb": "^1.8", + "mongodb/mongodb": "^1.8 || ^2.0", "php-amqplib/php-amqplib": "~2.4 || ^3", "php-console/php-console": "^3.1.8", "phpstan/phpstan": "^2", @@ -6770,7 +6772,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.9.0" + "source": "https://github.com/Seldaek/monolog/tree/3.10.0" }, "funding": [ { @@ -6782,7 +6784,7 @@ "type": "tidelift" } ], - "time": "2025-03-24T10:02:05+00:00" + "time": "2026-01-02T08:56:05+00:00" }, { "name": "myclabs/php-enum", @@ -7050,41 +7052,41 @@ }, { "name": "nelmio/security-bundle", - "version": "v3.6.0", + "version": "v3.7.0", "source": { "type": "git", "url": "https://github.com/nelmio/NelmioSecurityBundle.git", - "reference": "f3a7bf628a0873788172a0d05d20c0224080f5eb" + "reference": "9389ec28cd219d621d3d91c840a3df6f04c9f651" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/NelmioSecurityBundle/zipball/f3a7bf628a0873788172a0d05d20c0224080f5eb", - "reference": "f3a7bf628a0873788172a0d05d20c0224080f5eb", + "url": "https://api.github.com/repos/nelmio/NelmioSecurityBundle/zipball/9389ec28cd219d621d3d91c840a3df6f04c9f651", + "reference": "9389ec28cd219d621d3d91c840a3df6f04c9f651", "shasum": "" }, "require": { "php": "^7.4 || ^8.0", "symfony/deprecation-contracts": "^2.5 || ^3", - "symfony/framework-bundle": "^5.4 || ^6.3 || ^7.0", - "symfony/http-kernel": "^5.4 || ^6.3 || ^7.0", - "symfony/security-core": "^5.4 || ^6.3 || ^7.0", - "symfony/security-csrf": "^5.4 || ^6.3 || ^7.0", - "symfony/security-http": "^5.4 || ^6.3 || ^7.0", - "symfony/yaml": "^5.4 || ^6.3 || ^7.0", + "symfony/framework-bundle": "^5.4 || ^6.3 || ^7.0 || ^8.0", + "symfony/http-kernel": "^5.4 || ^6.3 || ^7.0 || ^8.0", + "symfony/security-core": "^5.4 || ^6.3 || ^7.0 || ^8.0", + "symfony/security-csrf": "^5.4 || ^6.3 || ^7.0 || ^8.0", + "symfony/security-http": "^5.4 || ^6.3 || ^7.0 || ^8.0", + "symfony/yaml": "^5.4 || ^6.3 || ^7.0 || ^8.0", "ua-parser/uap-php": "^3.4.4" }, "require-dev": { - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1.1", - "phpstan/phpstan-symfony": "^1.1", - "phpunit/phpunit": "^9.5", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-deprecation-rules": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpstan/phpstan-symfony": "^2.0", + "phpunit/phpunit": "^9.5 || ^10.1 || ^11.0", "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/browser-kit": "^5.4 || ^6.3 || ^7.0", - "symfony/cache": "^5.4 || ^6.3 || ^7.0", - "symfony/phpunit-bridge": "^6.3 || ^7.0", - "symfony/twig-bundle": "^5.4 || ^6.3 || ^7.0", + "symfony/browser-kit": "^5.4 || ^6.3 || ^7.0 || ^8.0", + "symfony/cache": "^5.4 || ^6.3 || ^7.0 || ^8.0", + "symfony/phpunit-bridge": "^6.3 || ^7.0 || ^8.0", + "symfony/twig-bundle": "^5.4 || ^6.3 || ^7.0 || ^8.0", "twig/twig": "^2.10 || ^3.0" }, "type": "symfony-bundle", @@ -7118,9 +7120,9 @@ ], "support": { "issues": "https://github.com/nelmio/NelmioSecurityBundle/issues", - "source": "https://github.com/nelmio/NelmioSecurityBundle/tree/v3.6.0" + "source": "https://github.com/nelmio/NelmioSecurityBundle/tree/v3.7.0" }, - "time": "2025-09-19T08:24:46+00:00" + "time": "2025-12-30T14:05:13+00:00" }, { "name": "nette/schema", @@ -7189,16 +7191,16 @@ }, { "name": "nette/utils", - "version": "v4.1.0", + "version": "v4.1.1", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "fa1f0b8261ed150447979eb22e373b7b7ad5a8e0" + "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/fa1f0b8261ed150447979eb22e373b7b7ad5a8e0", - "reference": "fa1f0b8261ed150447979eb22e373b7b7ad5a8e0", + "url": "https://api.github.com/repos/nette/utils/zipball/c99059c0315591f1a0db7ad6002000288ab8dc72", + "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72", "shasum": "" }, "require": { @@ -7272,9 +7274,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.1.0" + "source": "https://github.com/nette/utils/tree/v4.1.1" }, - "time": "2025-12-01T17:49:23+00:00" + "time": "2025-12-22T12:14:32+00:00" }, { "name": "nikolaposa/version", @@ -7537,21 +7539,21 @@ }, { "name": "onelogin/php-saml", - "version": "4.3.0", + "version": "4.3.1", "source": { "type": "git", "url": "https://github.com/SAML-Toolkits/php-saml.git", - "reference": "bf5efce9f2df5d489d05e78c27003a0fc8bc50f0" + "reference": "b009f160e4ac11f49366a45e0d45706b48429353" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/SAML-Toolkits/php-saml/zipball/bf5efce9f2df5d489d05e78c27003a0fc8bc50f0", - "reference": "bf5efce9f2df5d489d05e78c27003a0fc8bc50f0", + "url": "https://api.github.com/repos/SAML-Toolkits/php-saml/zipball/b009f160e4ac11f49366a45e0d45706b48429353", + "reference": "b009f160e4ac11f49366a45e0d45706b48429353", "shasum": "" }, "require": { "php": ">=7.3", - "robrichards/xmlseclibs": "^3.1" + "robrichards/xmlseclibs": ">=3.1.4" }, "require-dev": { "pdepend/pdepend": "^2.8.0", @@ -7597,7 +7599,7 @@ "type": "github" } ], - "time": "2025-05-25T14:28:00+00:00" + "time": "2025-12-09T10:50:49+00:00" }, { "name": "paragonie/constant_time_encoding", @@ -7720,16 +7722,16 @@ }, { "name": "paragonie/sodium_compat", - "version": "v1.23.0", + "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/paragonie/sodium_compat.git", - "reference": "b938a5c6844d222a26d46a6c7b80291e4cd8cfab" + "reference": "2cb48f26130919f92f30650bdcc30e6f4ebe45ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/b938a5c6844d222a26d46a6c7b80291e4cd8cfab", - "reference": "b938a5c6844d222a26d46a6c7b80291e4cd8cfab", + "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/2cb48f26130919f92f30650bdcc30e6f4ebe45ac", + "reference": "2cb48f26130919f92f30650bdcc30e6f4ebe45ac", "shasum": "" }, "require": { @@ -7800,9 +7802,9 @@ ], "support": { "issues": "https://github.com/paragonie/sodium_compat/issues", - "source": "https://github.com/paragonie/sodium_compat/tree/v1.23.0" + "source": "https://github.com/paragonie/sodium_compat/tree/v1.24.0" }, - "time": "2025-10-06T08:53:07+00:00" + "time": "2025-12-30T16:16:35+00:00" }, { "name": "part-db/exchanger", @@ -8360,16 +8362,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.6.5", + "version": "5.6.6", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "90614c73d3800e187615e2dd236ad0e2a01bf761" + "reference": "5cee1d3dfc2d2aa6599834520911d246f656bcb8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/90614c73d3800e187615e2dd236ad0e2a01bf761", - "reference": "90614c73d3800e187615e2dd236ad0e2a01bf761", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/5cee1d3dfc2d2aa6599834520911d246f656bcb8", + "reference": "5cee1d3dfc2d2aa6599834520911d246f656bcb8", "shasum": "" }, "require": { @@ -8379,7 +8381,7 @@ "phpdocumentor/reflection-common": "^2.2", "phpdocumentor/type-resolver": "^1.7", "phpstan/phpdoc-parser": "^1.7|^2.0", - "webmozart/assert": "^1.9.1" + "webmozart/assert": "^1.9.1 || ^2" }, "require-dev": { "mockery/mockery": "~1.3.5 || ~1.6.0", @@ -8418,9 +8420,9 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.5" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.6" }, - "time": "2025-11-27T19:50:05+00:00" + "time": "2025-12-22T21:13:58+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -9313,16 +9315,16 @@ }, { "name": "robrichards/xmlseclibs", - "version": "3.1.3", + "version": "3.1.4", "source": { "type": "git", "url": "https://github.com/robrichards/xmlseclibs.git", - "reference": "2bdfd742624d739dfadbd415f00181b4a77aaf07" + "reference": "bc87389224c6de95802b505e5265b0ec2c5bcdbd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/2bdfd742624d739dfadbd415f00181b4a77aaf07", - "reference": "2bdfd742624d739dfadbd415f00181b4a77aaf07", + "url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/bc87389224c6de95802b505e5265b0ec2c5bcdbd", + "reference": "bc87389224c6de95802b505e5265b0ec2c5bcdbd", "shasum": "" }, "require": { @@ -9349,9 +9351,9 @@ ], "support": { "issues": "https://github.com/robrichards/xmlseclibs/issues", - "source": "https://github.com/robrichards/xmlseclibs/tree/3.1.3" + "source": "https://github.com/robrichards/xmlseclibs/tree/3.1.4" }, - "time": "2024-11-20T21:13:56+00:00" + "time": "2025-12-08T11:57:53+00:00" }, { "name": "s9e/regexp-builder", @@ -9518,25 +9520,33 @@ }, { "name": "sabberworm/php-css-parser", - "version": "v8.9.0", + "version": "v9.1.0", "source": { "type": "git", "url": "https://github.com/MyIntervals/PHP-CSS-Parser.git", - "reference": "d8e916507b88e389e26d4ab03c904a082aa66bb9" + "reference": "1b363fdbdc6dd0ca0f4bf98d3a4d7f388133f1fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/d8e916507b88e389e26d4ab03c904a082aa66bb9", - "reference": "d8e916507b88e389e26d4ab03c904a082aa66bb9", + "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/1b363fdbdc6dd0ca0f4bf98d3a4d7f388133f1fb", + "reference": "1b363fdbdc6dd0ca0f4bf98d3a4d7f388133f1fb", "shasum": "" }, "require": { "ext-iconv": "*", - "php": "^5.6.20 || ^7.0.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + "php": "^7.2.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", + "thecodingmachine/safe": "^1.3 || ^2.5 || ^3.3" }, "require-dev": { - "phpunit/phpunit": "5.7.27 || 6.5.14 || 7.5.20 || 8.5.41", - "rawr/cross-data-providers": "^2.0.0" + "php-parallel-lint/php-parallel-lint": "1.4.0", + "phpstan/extension-installer": "1.4.3", + "phpstan/phpstan": "1.12.28 || 2.1.25", + "phpstan/phpstan-phpunit": "1.4.2 || 2.0.7", + "phpstan/phpstan-strict-rules": "1.6.2 || 2.0.6", + "phpunit/phpunit": "8.5.46", + "rawr/phpunit-data-provider": "3.3.1", + "rector/rector": "1.2.10 || 2.1.7", + "rector/type-perfect": "1.0.0 || 2.1.0" }, "suggest": { "ext-mbstring": "for parsing UTF-8 CSS" @@ -9544,7 +9554,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "9.0.x-dev" + "dev-main": "9.2.x-dev" } }, "autoload": { @@ -9578,13 +9588,13 @@ ], "support": { "issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues", - "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v8.9.0" + "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v9.1.0" }, - "time": "2025-07-11T13:20:48+00:00" + "time": "2025-09-14T07:37:21+00:00" }, { "name": "scheb/2fa-backup-code", - "version": "v7.13.0", + "version": "v7.13.1", "source": { "type": "git", "url": "https://github.com/scheb/2fa-backup-code.git", @@ -9627,22 +9637,22 @@ "two-step" ], "support": { - "source": "https://github.com/scheb/2fa-backup-code/tree/v7.13.0" + "source": "https://github.com/scheb/2fa-backup-code/tree/v7.13.1" }, "time": "2025-11-20T13:35:24+00:00" }, { "name": "scheb/2fa-bundle", - "version": "v7.13.0", + "version": "v7.13.1", "source": { "type": "git", "url": "https://github.com/scheb/2fa-bundle.git", - "reference": "c4bbc31e8270cd18e88baf060157edd03ebf203d" + "reference": "edcc14456b508aab37ec792cfc36793d04226784" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scheb/2fa-bundle/zipball/c4bbc31e8270cd18e88baf060157edd03ebf203d", - "reference": "c4bbc31e8270cd18e88baf060157edd03ebf203d", + "url": "https://api.github.com/repos/scheb/2fa-bundle/zipball/edcc14456b508aab37ec792cfc36793d04226784", + "reference": "edcc14456b508aab37ec792cfc36793d04226784", "shasum": "" }, "require": { @@ -9695,13 +9705,13 @@ "two-step" ], "support": { - "source": "https://github.com/scheb/2fa-bundle/tree/v7.13.0" + "source": "https://github.com/scheb/2fa-bundle/tree/v7.13.1" }, - "time": "2025-12-04T15:55:14+00:00" + "time": "2025-12-18T15:29:07+00:00" }, { "name": "scheb/2fa-google-authenticator", - "version": "v7.13.0", + "version": "v7.13.1", "source": { "type": "git", "url": "https://github.com/scheb/2fa-google-authenticator.git", @@ -9748,13 +9758,13 @@ "two-step" ], "support": { - "source": "https://github.com/scheb/2fa-google-authenticator/tree/v7.13.0" + "source": "https://github.com/scheb/2fa-google-authenticator/tree/v7.13.1" }, "time": "2025-12-04T15:55:14+00:00" }, { "name": "scheb/2fa-trusted-device", - "version": "v7.13.0", + "version": "v7.13.1", "source": { "type": "git", "url": "https://github.com/scheb/2fa-trusted-device.git", @@ -9799,7 +9809,7 @@ "two-step" ], "support": { - "source": "https://github.com/scheb/2fa-trusted-device/tree/v7.13.0" + "source": "https://github.com/scheb/2fa-trusted-device/tree/v7.13.1" }, "time": "2025-12-01T15:40:59+00:00" }, @@ -9865,16 +9875,16 @@ }, { "name": "spatie/db-dumper", - "version": "3.8.1", + "version": "3.8.2", "source": { "type": "git", "url": "https://github.com/spatie/db-dumper.git", - "reference": "e974cc7862b8de1bd3b7ea7d4839ba7167acb546" + "reference": "9519c64e4938f0b9e4498b8a8e572061bc6b7cfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/db-dumper/zipball/e974cc7862b8de1bd3b7ea7d4839ba7167acb546", - "reference": "e974cc7862b8de1bd3b7ea7d4839ba7167acb546", + "url": "https://api.github.com/repos/spatie/db-dumper/zipball/9519c64e4938f0b9e4498b8a8e572061bc6b7cfb", + "reference": "9519c64e4938f0b9e4498b8a8e572061bc6b7cfb", "shasum": "" }, "require": { @@ -9912,7 +9922,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/db-dumper/tree/3.8.1" + "source": "https://github.com/spatie/db-dumper/tree/3.8.2" }, "funding": [ { @@ -9924,7 +9934,7 @@ "type": "github" } ], - "time": "2025-11-26T09:51:23+00:00" + "time": "2025-12-10T09:29:52+00:00" }, { "name": "spomky-labs/cbor-php", @@ -10081,16 +10091,16 @@ }, { "name": "spomky-labs/pki-framework", - "version": "1.4.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/Spomky-Labs/pki-framework.git", - "reference": "bf6f55a9d9eb25b7781640221cb54f5c727850d7" + "reference": "f0e9a548df4e3942886adc9b7830581a46334631" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/pki-framework/zipball/bf6f55a9d9eb25b7781640221cb54f5c727850d7", - "reference": "bf6f55a9d9eb25b7781640221cb54f5c727850d7", + "url": "https://api.github.com/repos/Spomky-Labs/pki-framework/zipball/f0e9a548df4e3942886adc9b7830581a46334631", + "reference": "f0e9a548df4e3942886adc9b7830581a46334631", "shasum": "" }, "require": { @@ -10174,7 +10184,7 @@ ], "support": { "issues": "https://github.com/Spomky-Labs/pki-framework/issues", - "source": "https://github.com/Spomky-Labs/pki-framework/tree/1.4.0" + "source": "https://github.com/Spomky-Labs/pki-framework/tree/1.4.1" }, "funding": [ { @@ -10186,7 +10196,7 @@ "type": "patreon" } ], - "time": "2025-10-22T08:24:34+00:00" + "time": "2025-12-20T12:57:40+00:00" }, { "name": "symfony/apache-pack", @@ -10289,16 +10299,16 @@ }, { "name": "symfony/cache", - "version": "v7.4.1", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "21e0755783bbbab58f2bb6a7a57896d21d27a366" + "reference": "642117d18bc56832e74b68235359ccefab03dd11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/21e0755783bbbab58f2bb6a7a57896d21d27a366", - "reference": "21e0755783bbbab58f2bb6a7a57896d21d27a366", + "url": "https://api.github.com/repos/symfony/cache/zipball/642117d18bc56832e74b68235359ccefab03dd11", + "reference": "642117d18bc56832e74b68235359ccefab03dd11", "shasum": "" }, "require": { @@ -10369,7 +10379,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.4.1" + "source": "https://github.com/symfony/cache/tree/v7.4.3" }, "funding": [ { @@ -10389,7 +10399,7 @@ "type": "tidelift" } ], - "time": "2025-12-04T18:11:45+00:00" + "time": "2025-12-28T10:45:24+00:00" }, { "name": "symfony/cache-contracts", @@ -10547,16 +10557,16 @@ }, { "name": "symfony/config", - "version": "v7.4.1", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "2c323304c354a43a48b61c5fa760fc4ed60ce495" + "reference": "800ce889e358a53a9678b3212b0c8cecd8c6aace" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/2c323304c354a43a48b61c5fa760fc4ed60ce495", - "reference": "2c323304c354a43a48b61c5fa760fc4ed60ce495", + "url": "https://api.github.com/repos/symfony/config/zipball/800ce889e358a53a9678b3212b0c8cecd8c6aace", + "reference": "800ce889e358a53a9678b3212b0c8cecd8c6aace", "shasum": "" }, "require": { @@ -10602,7 +10612,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/v7.4.1" + "source": "https://github.com/symfony/config/tree/v7.4.3" }, "funding": [ { @@ -10622,20 +10632,20 @@ "type": "tidelift" } ], - "time": "2025-12-05T07:52:08+00:00" + "time": "2025-12-23T14:24:27+00:00" }, { "name": "symfony/console", - "version": "v7.4.1", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e" + "reference": "732a9ca6cd9dfd940c639062d5edbde2f6727fb6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e", - "reference": "6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e", + "url": "https://api.github.com/repos/symfony/console/zipball/732a9ca6cd9dfd940c639062d5edbde2f6727fb6", + "reference": "732a9ca6cd9dfd940c639062d5edbde2f6727fb6", "shasum": "" }, "require": { @@ -10700,7 +10710,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.4.1" + "source": "https://github.com/symfony/console/tree/v7.4.3" }, "funding": [ { @@ -10720,7 +10730,7 @@ "type": "tidelift" } ], - "time": "2025-12-05T15:23:39+00:00" + "time": "2025-12-23T14:50:43+00:00" }, { "name": "symfony/css-selector", @@ -10793,16 +10803,16 @@ }, { "name": "symfony/dependency-injection", - "version": "v7.4.1", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "a09a0a424008e48bc68b1998648f2b4cab9e94c7" + "reference": "54122901b6d772e94f1e71a75e0533bc16563499" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/a09a0a424008e48bc68b1998648f2b4cab9e94c7", - "reference": "a09a0a424008e48bc68b1998648f2b4cab9e94c7", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/54122901b6d772e94f1e71a75e0533bc16563499", + "reference": "54122901b6d772e94f1e71a75e0533bc16563499", "shasum": "" }, "require": { @@ -10853,7 +10863,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/v7.4.1" + "source": "https://github.com/symfony/dependency-injection/tree/v7.4.3" }, "funding": [ { @@ -10873,7 +10883,7 @@ "type": "tidelift" } ], - "time": "2025-12-07T09:37:31+00:00" + "time": "2025-12-28T10:55:46+00:00" }, { "name": "symfony/deprecation-contracts", @@ -10944,16 +10954,16 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v7.4.1", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "7acd7ce1b71601b25d698bc2da6b52e43f3c72b3" + "reference": "bd338ba08f5c47fe77e0a15e85ec3c5d070f9ceb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/7acd7ce1b71601b25d698bc2da6b52e43f3c72b3", - "reference": "7acd7ce1b71601b25d698bc2da6b52e43f3c72b3", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/bd338ba08f5c47fe77e0a15e85ec3c5d070f9ceb", + "reference": "bd338ba08f5c47fe77e0a15e85ec3c5d070f9ceb", "shasum": "" }, "require": { @@ -11033,7 +11043,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v7.4.1" + "source": "https://github.com/symfony/doctrine-bridge/tree/v7.4.3" }, "funding": [ { @@ -11053,7 +11063,7 @@ "type": "tidelift" } ], - "time": "2025-12-04T17:15:58+00:00" + "time": "2025-12-22T13:47:05+00:00" }, { "name": "symfony/dom-crawler", @@ -11588,16 +11598,16 @@ }, { "name": "symfony/finder", - "version": "v7.4.0", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "340b9ed7320570f319028a2cbec46d40535e94bd" + "reference": "fffe05569336549b20a1be64250b40516d6e8d06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/340b9ed7320570f319028a2cbec46d40535e94bd", - "reference": "340b9ed7320570f319028a2cbec46d40535e94bd", + "url": "https://api.github.com/repos/symfony/finder/zipball/fffe05569336549b20a1be64250b40516d6e8d06", + "reference": "fffe05569336549b20a1be64250b40516d6e8d06", "shasum": "" }, "require": { @@ -11632,7 +11642,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.4.0" + "source": "https://github.com/symfony/finder/tree/v7.4.3" }, "funding": [ { @@ -11652,7 +11662,7 @@ "type": "tidelift" } ], - "time": "2025-11-05T05:42:40+00:00" + "time": "2025-12-23T14:50:43+00:00" }, { "name": "symfony/flex", @@ -11729,16 +11739,16 @@ }, { "name": "symfony/form", - "version": "v7.4.1", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "04984c79b08c70dc106498fc250917060d88aee2" + "reference": "f7e147d3e57198122568f17909bc85266b0b2592" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/04984c79b08c70dc106498fc250917060d88aee2", - "reference": "04984c79b08c70dc106498fc250917060d88aee2", + "url": "https://api.github.com/repos/symfony/form/zipball/f7e147d3e57198122568f17909bc85266b0b2592", + "reference": "f7e147d3e57198122568f17909bc85266b0b2592", "shasum": "" }, "require": { @@ -11808,7 +11818,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v7.4.1" + "source": "https://github.com/symfony/form/tree/v7.4.3" }, "funding": [ { @@ -11828,20 +11838,20 @@ "type": "tidelift" } ], - "time": "2025-12-05T14:04:53+00:00" + "time": "2025-12-23T14:50:43+00:00" }, { "name": "symfony/framework-bundle", - "version": "v7.4.1", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "2fa3b3ad6ed75ce0cc8cad8a5027b4f25b990bc3" + "reference": "df908e8f9e5f6cc3c9e0d0172e030a5c1c280582" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/2fa3b3ad6ed75ce0cc8cad8a5027b4f25b990bc3", - "reference": "2fa3b3ad6ed75ce0cc8cad8a5027b4f25b990bc3", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/df908e8f9e5f6cc3c9e0d0172e030a5c1c280582", + "reference": "df908e8f9e5f6cc3c9e0d0172e030a5c1c280582", "shasum": "" }, "require": { @@ -11849,7 +11859,7 @@ "ext-xml": "*", "php": ">=8.2", "symfony/cache": "^6.4.12|^7.0|^8.0", - "symfony/config": "^7.4|^8.0", + "symfony/config": "^7.4.3|^8.0.3", "symfony/dependency-injection": "^7.4|^8.0", "symfony/deprecation-contracts": "^2.5|^3", "symfony/error-handler": "^7.3|^8.0", @@ -11966,7 +11976,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/v7.4.1" + "source": "https://github.com/symfony/framework-bundle/tree/v7.4.3" }, "funding": [ { @@ -11986,20 +11996,20 @@ "type": "tidelift" } ], - "time": "2025-12-05T14:04:53+00:00" + "time": "2025-12-29T09:31:36+00:00" }, { "name": "symfony/http-client", - "version": "v7.4.1", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "26cc224ea7103dda90e9694d9e139a389092d007" + "reference": "d01dfac1e0dc99f18da48b18101c23ce57929616" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/26cc224ea7103dda90e9694d9e139a389092d007", - "reference": "26cc224ea7103dda90e9694d9e139a389092d007", + "url": "https://api.github.com/repos/symfony/http-client/zipball/d01dfac1e0dc99f18da48b18101c23ce57929616", + "reference": "d01dfac1e0dc99f18da48b18101c23ce57929616", "shasum": "" }, "require": { @@ -12067,7 +12077,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v7.4.1" + "source": "https://github.com/symfony/http-client/tree/v7.4.3" }, "funding": [ { @@ -12087,7 +12097,7 @@ "type": "tidelift" } ], - "time": "2025-12-04T21:12:57+00:00" + "time": "2025-12-23T14:50:43+00:00" }, { "name": "symfony/http-client-contracts", @@ -12169,16 +12179,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.4.1", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "bd1af1e425811d6f077db240c3a588bdb405cd27" + "reference": "a70c745d4cea48dbd609f4075e5f5cbce453bd52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/bd1af1e425811d6f077db240c3a588bdb405cd27", - "reference": "bd1af1e425811d6f077db240c3a588bdb405cd27", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/a70c745d4cea48dbd609f4075e5f5cbce453bd52", + "reference": "a70c745d4cea48dbd609f4075e5f5cbce453bd52", "shasum": "" }, "require": { @@ -12227,7 +12237,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.4.1" + "source": "https://github.com/symfony/http-foundation/tree/v7.4.3" }, "funding": [ { @@ -12247,20 +12257,20 @@ "type": "tidelift" } ], - "time": "2025-12-07T11:13:10+00:00" + "time": "2025-12-23T14:23:49+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.4.1", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "171d2ec4002012a023e042c6041d7fde58b143c6" + "reference": "885211d4bed3f857b8c964011923528a55702aa5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/171d2ec4002012a023e042c6041d7fde58b143c6", - "reference": "171d2ec4002012a023e042c6041d7fde58b143c6", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/885211d4bed3f857b8c964011923528a55702aa5", + "reference": "885211d4bed3f857b8c964011923528a55702aa5", "shasum": "" }, "require": { @@ -12346,7 +12356,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/v7.4.1" + "source": "https://github.com/symfony/http-kernel/tree/v7.4.3" }, "funding": [ { @@ -12366,7 +12376,7 @@ "type": "tidelift" } ], - "time": "2025-12-07T16:28:51+00:00" + "time": "2025-12-31T08:43:57+00:00" }, { "name": "symfony/intl", @@ -12460,16 +12470,16 @@ }, { "name": "symfony/mailer", - "version": "v7.4.0", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "a3d9eea8cfa467ece41f0f54ba28185d74bd53fd" + "reference": "e472d35e230108231ccb7f51eb6b2100cac02ee4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/a3d9eea8cfa467ece41f0f54ba28185d74bd53fd", - "reference": "a3d9eea8cfa467ece41f0f54ba28185d74bd53fd", + "url": "https://api.github.com/repos/symfony/mailer/zipball/e472d35e230108231ccb7f51eb6b2100cac02ee4", + "reference": "e472d35e230108231ccb7f51eb6b2100cac02ee4", "shasum": "" }, "require": { @@ -12520,7 +12530,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.4.0" + "source": "https://github.com/symfony/mailer/tree/v7.4.3" }, "funding": [ { @@ -12540,7 +12550,7 @@ "type": "tidelift" } ], - "time": "2025-11-21T15:26:00+00:00" + "time": "2025-12-16T08:02:06+00:00" }, { "name": "symfony/mime", @@ -12716,16 +12726,16 @@ }, { "name": "symfony/monolog-bundle", - "version": "v3.11.0", + "version": "v3.11.1", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "e12eb92655b234cd50c21cda648088847a7ec777" + "reference": "0e675a6e08f791ef960dc9c7e392787111a3f0c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/e12eb92655b234cd50c21cda648088847a7ec777", - "reference": "e12eb92655b234cd50c21cda648088847a7ec777", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/0e675a6e08f791ef960dc9c7e392787111a3f0c1", + "reference": "0e675a6e08f791ef960dc9c7e392787111a3f0c1", "shasum": "" }, "require": { @@ -12772,7 +12782,7 @@ ], "support": { "issues": "https://github.com/symfony/monolog-bundle/issues", - "source": "https://github.com/symfony/monolog-bundle/tree/v3.11.0" + "source": "https://github.com/symfony/monolog-bundle/tree/v3.11.1" }, "funding": [ { @@ -12792,7 +12802,7 @@ "type": "tidelift" } ], - "time": "2025-11-27T09:16:19+00:00" + "time": "2025-12-08T07:58:26+00:00" }, { "name": "symfony/options-resolver", @@ -13691,16 +13701,16 @@ }, { "name": "symfony/process", - "version": "v7.4.0", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8" + "reference": "2f8e1a6cdf590ca63715da4d3a7a3327404a523f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/7ca8dc2d0dcf4882658313aba8be5d9fd01026c8", - "reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8", + "url": "https://api.github.com/repos/symfony/process/zipball/2f8e1a6cdf590ca63715da4d3a7a3327404a523f", + "reference": "2f8e1a6cdf590ca63715da4d3a7a3327404a523f", "shasum": "" }, "require": { @@ -13732,7 +13742,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.4.0" + "source": "https://github.com/symfony/process/tree/v7.4.3" }, "funding": [ { @@ -13752,25 +13762,25 @@ "type": "tidelift" } ], - "time": "2025-10-16T11:21:06+00:00" + "time": "2025-12-19T10:00:43+00:00" }, { "name": "symfony/property-access", - "version": "v7.4.0", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "537626149d2910ca43eb9ce465654366bf4442f4" + "reference": "30aff8455647be949fc2e8fcef2847d5a6743c98" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/537626149d2910ca43eb9ce465654366bf4442f4", - "reference": "537626149d2910ca43eb9ce465654366bf4442f4", + "url": "https://api.github.com/repos/symfony/property-access/zipball/30aff8455647be949fc2e8fcef2847d5a6743c98", + "reference": "30aff8455647be949fc2e8fcef2847d5a6743c98", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/property-info": "^6.4|^7.0|^8.0" + "symfony/property-info": "^6.4.31|~7.3.9|^7.4.2|^8.0.3" }, "require-dev": { "symfony/cache": "^6.4|^7.0|^8.0", @@ -13813,7 +13823,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v7.4.0" + "source": "https://github.com/symfony/property-access/tree/v7.4.3" }, "funding": [ { @@ -13833,20 +13843,20 @@ "type": "tidelift" } ], - "time": "2025-09-08T21:14:32+00:00" + "time": "2025-12-18T10:35:58+00:00" }, { "name": "symfony/property-info", - "version": "v7.4.1", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "912aafe70bee5cfd09fec5916fe35b83f04ae6ae" + "reference": "ea62b28cd68fb36e252abd77de61e505a0f2a7b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/912aafe70bee5cfd09fec5916fe35b83f04ae6ae", - "reference": "912aafe70bee5cfd09fec5916fe35b83f04ae6ae", + "url": "https://api.github.com/repos/symfony/property-info/zipball/ea62b28cd68fb36e252abd77de61e505a0f2a7b1", + "reference": "ea62b28cd68fb36e252abd77de61e505a0f2a7b1", "shasum": "" }, "require": { @@ -13903,7 +13913,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.4.1" + "source": "https://github.com/symfony/property-info/tree/v7.4.3" }, "funding": [ { @@ -13923,7 +13933,7 @@ "type": "tidelift" } ], - "time": "2025-12-05T14:04:53+00:00" + "time": "2025-12-18T08:28:41+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -14089,16 +14099,16 @@ }, { "name": "symfony/routing", - "version": "v7.4.0", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "4720254cb2644a0b876233d258a32bf017330db7" + "reference": "5d3fd7adf8896c2fdb54e2f0f35b1bcbd9e45090" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/4720254cb2644a0b876233d258a32bf017330db7", - "reference": "4720254cb2644a0b876233d258a32bf017330db7", + "url": "https://api.github.com/repos/symfony/routing/zipball/5d3fd7adf8896c2fdb54e2f0f35b1bcbd9e45090", + "reference": "5d3fd7adf8896c2fdb54e2f0f35b1bcbd9e45090", "shasum": "" }, "require": { @@ -14150,7 +14160,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.4.0" + "source": "https://github.com/symfony/routing/tree/v7.4.3" }, "funding": [ { @@ -14170,7 +14180,7 @@ "type": "tidelift" } ], - "time": "2025-11-27T13:27:24+00:00" + "time": "2025-12-19T10:00:43+00:00" }, { "name": "symfony/runtime", @@ -14369,16 +14379,16 @@ }, { "name": "symfony/security-core", - "version": "v7.4.0", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "fe4d25e5700a2f3b605bf23f520be57504ae5c51" + "reference": "be0b8585f2d69b48a9b1a6372aa48d23c7e7eeb4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/fe4d25e5700a2f3b605bf23f520be57504ae5c51", - "reference": "fe4d25e5700a2f3b605bf23f520be57504ae5c51", + "url": "https://api.github.com/repos/symfony/security-core/zipball/be0b8585f2d69b48a9b1a6372aa48d23c7e7eeb4", + "reference": "be0b8585f2d69b48a9b1a6372aa48d23c7e7eeb4", "shasum": "" }, "require": { @@ -14436,7 +14446,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v7.4.0" + "source": "https://github.com/symfony/security-core/tree/v7.4.3" }, "funding": [ { @@ -14456,20 +14466,20 @@ "type": "tidelift" } ], - "time": "2025-11-21T15:26:00+00:00" + "time": "2025-12-19T23:18:26+00:00" }, { "name": "symfony/security-csrf", - "version": "v7.4.0", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "ec41009e83589d0b3d86bd131d07e6fc8ecf35ab" + "reference": "d526fa61963d926e91c9fb22edf829d9f8793dfe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/ec41009e83589d0b3d86bd131d07e6fc8ecf35ab", - "reference": "ec41009e83589d0b3d86bd131d07e6fc8ecf35ab", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/d526fa61963d926e91c9fb22edf829d9f8793dfe", + "reference": "d526fa61963d926e91c9fb22edf829d9f8793dfe", "shasum": "" }, "require": { @@ -14510,7 +14520,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v7.4.0" + "source": "https://github.com/symfony/security-csrf/tree/v7.4.3" }, "funding": [ { @@ -14530,20 +14540,20 @@ "type": "tidelift" } ], - "time": "2025-11-21T15:26:00+00:00" + "time": "2025-12-23T15:24:11+00:00" }, { "name": "symfony/security-http", - "version": "v7.4.1", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "46a4432ad2fab65735216d113e18f1f9eb6d28ea" + "reference": "72f3b3fa9f322c9579d5246895a09f945cc33e36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/46a4432ad2fab65735216d113e18f1f9eb6d28ea", - "reference": "46a4432ad2fab65735216d113e18f1f9eb6d28ea", + "url": "https://api.github.com/repos/symfony/security-http/zipball/72f3b3fa9f322c9579d5246895a09f945cc33e36", + "reference": "72f3b3fa9f322c9579d5246895a09f945cc33e36", "shasum": "" }, "require": { @@ -14602,7 +14612,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v7.4.1" + "source": "https://github.com/symfony/security-http/tree/v7.4.3" }, "funding": [ { @@ -14622,20 +14632,20 @@ "type": "tidelift" } ], - "time": "2025-12-05T08:41:26+00:00" + "time": "2025-12-19T23:18:26+00:00" }, { "name": "symfony/serializer", - "version": "v7.4.0", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "5a3bbf317b3f1025126b6d9debce53515601ab43" + "reference": "af01e99d6fc63549063fb9e849ce1240cfef5c4a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/5a3bbf317b3f1025126b6d9debce53515601ab43", - "reference": "5a3bbf317b3f1025126b6d9debce53515601ab43", + "url": "https://api.github.com/repos/symfony/serializer/zipball/af01e99d6fc63549063fb9e849ce1240cfef5c4a", + "reference": "af01e99d6fc63549063fb9e849ce1240cfef5c4a", "shasum": "" }, "require": { @@ -14705,7 +14715,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/v7.4.0" + "source": "https://github.com/symfony/serializer/tree/v7.4.3" }, "funding": [ { @@ -14725,7 +14735,7 @@ "type": "tidelift" } ], - "time": "2025-11-18T13:23:20+00:00" + "time": "2025-12-23T14:50:43+00:00" }, { "name": "symfony/service-contracts", @@ -15046,16 +15056,16 @@ }, { "name": "symfony/translation", - "version": "v7.4.0", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "2d01ca0da3f092f91eeedb46f24aa30d2fca8f68" + "reference": "7ef27c65d78886f7599fdd5c93d12c9243ecf44d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/2d01ca0da3f092f91eeedb46f24aa30d2fca8f68", - "reference": "2d01ca0da3f092f91eeedb46f24aa30d2fca8f68", + "url": "https://api.github.com/repos/symfony/translation/zipball/7ef27c65d78886f7599fdd5c93d12c9243ecf44d", + "reference": "7ef27c65d78886f7599fdd5c93d12c9243ecf44d", "shasum": "" }, "require": { @@ -15122,7 +15132,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.4.0" + "source": "https://github.com/symfony/translation/tree/v7.4.3" }, "funding": [ { @@ -15142,7 +15152,7 @@ "type": "tidelift" } ], - "time": "2025-11-27T13:27:24+00:00" + "time": "2025-12-29T09:31:36+00:00" }, { "name": "symfony/translation-contracts", @@ -15228,16 +15238,16 @@ }, { "name": "symfony/twig-bridge", - "version": "v7.4.1", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "9103559ef3e9f06708d8bff6810f6335b8f1eee8" + "reference": "43c922fce020060c65b0fd54bfd8def3b38949b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/9103559ef3e9f06708d8bff6810f6335b8f1eee8", - "reference": "9103559ef3e9f06708d8bff6810f6335b8f1eee8", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/43c922fce020060c65b0fd54bfd8def3b38949b6", + "reference": "43c922fce020060c65b0fd54bfd8def3b38949b6", "shasum": "" }, "require": { @@ -15319,7 +15329,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v7.4.1" + "source": "https://github.com/symfony/twig-bridge/tree/v7.4.3" }, "funding": [ { @@ -15339,20 +15349,20 @@ "type": "tidelift" } ], - "time": "2025-12-05T14:04:53+00:00" + "time": "2025-12-16T08:02:06+00:00" }, { "name": "symfony/twig-bundle", - "version": "v7.4.0", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "f83f530d00d1bbc6f7fafeb433077887c83326ef" + "reference": "9e1f5fd2668ed26c60d17d63f15fe270ed8da5e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/f83f530d00d1bbc6f7fafeb433077887c83326ef", - "reference": "f83f530d00d1bbc6f7fafeb433077887c83326ef", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/9e1f5fd2668ed26c60d17d63f15fe270ed8da5e6", + "reference": "9e1f5fd2668ed26c60d17d63f15fe270ed8da5e6", "shasum": "" }, "require": { @@ -15360,6 +15370,7 @@ "php": ">=8.2", "symfony/config": "^7.4|^8.0", "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-foundation": "^6.4|^7.0|^8.0", "symfony/http-kernel": "^6.4.13|^7.1.6|^8.0", "symfony/twig-bridge": "^7.3|^8.0", @@ -15408,7 +15419,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/v7.4.0" + "source": "https://github.com/symfony/twig-bundle/tree/v7.4.3" }, "funding": [ { @@ -15428,7 +15439,7 @@ "type": "tidelift" } ], - "time": "2025-10-02T07:41:02+00:00" + "time": "2025-12-19T10:00:43+00:00" }, { "name": "symfony/type-info", @@ -15777,16 +15788,16 @@ }, { "name": "symfony/validator", - "version": "v7.4.1", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "fde121bfa6ff3c85edade1afdca204243fe1fda1" + "reference": "9670bedf4c454b21d1e04606b6c227990da8bebe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/fde121bfa6ff3c85edade1afdca204243fe1fda1", - "reference": "fde121bfa6ff3c85edade1afdca204243fe1fda1", + "url": "https://api.github.com/repos/symfony/validator/zipball/9670bedf4c454b21d1e04606b6c227990da8bebe", + "reference": "9670bedf4c454b21d1e04606b6c227990da8bebe", "shasum": "" }, "require": { @@ -15857,7 +15868,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.4.1" + "source": "https://github.com/symfony/validator/tree/v7.4.3" }, "funding": [ { @@ -15877,20 +15888,20 @@ "type": "tidelift" } ], - "time": "2025-12-05T14:04:53+00:00" + "time": "2025-12-27T17:05:22+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.4.0", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "41fd6c4ae28c38b294b42af6db61446594a0dece" + "reference": "7e99bebcb3f90d8721890f2963463280848cba92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/41fd6c4ae28c38b294b42af6db61446594a0dece", - "reference": "41fd6c4ae28c38b294b42af6db61446594a0dece", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7e99bebcb3f90d8721890f2963463280848cba92", + "reference": "7e99bebcb3f90d8721890f2963463280848cba92", "shasum": "" }, "require": { @@ -15944,7 +15955,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.4.0" + "source": "https://github.com/symfony/var-dumper/tree/v7.4.3" }, "funding": [ { @@ -15964,7 +15975,7 @@ "type": "tidelift" } ], - "time": "2025-10-27T20:36:44+00:00" + "time": "2025-12-18T07:04:31+00:00" }, { "name": "symfony/var-exporter", @@ -16349,16 +16360,16 @@ }, { "name": "tecnickcom/tc-lib-barcode", - "version": "2.4.14", + "version": "2.4.18", "source": { "type": "git", "url": "https://github.com/tecnickcom/tc-lib-barcode.git", - "reference": "7faeded20731bc0ca0776c0f52052f4ba422549d" + "reference": "338095651126ec4207f98e5221beea30b27c0fe9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tecnickcom/tc-lib-barcode/zipball/7faeded20731bc0ca0776c0f52052f4ba422549d", - "reference": "7faeded20731bc0ca0776c0f52052f4ba422549d", + "url": "https://api.github.com/repos/tecnickcom/tc-lib-barcode/zipball/338095651126ec4207f98e5221beea30b27c0fe9", + "reference": "338095651126ec4207f98e5221beea30b27c0fe9", "shasum": "" }, "require": { @@ -16367,10 +16378,11 @@ "ext-gd": "*", "ext-pcre": "*", "php": ">=8.1", - "tecnickcom/tc-lib-color": "^2.2" + "tecnickcom/tc-lib-color": "^2.3" }, "require-dev": { "pdepend/pdepend": "2.16.2", + "phpcompatibility/php-compatibility": "^10.0.0@dev", "phpmd/phpmd": "2.15.0", "phpunit/phpunit": "12.4.4 || 11.5.44 || 10.5.58", "squizlabs/php_codesniffer": "4.0.1" @@ -16437,7 +16449,7 @@ ], "support": { "issues": "https://github.com/tecnickcom/tc-lib-barcode/issues", - "source": "https://github.com/tecnickcom/tc-lib-barcode/tree/2.4.14" + "source": "https://github.com/tecnickcom/tc-lib-barcode/tree/2.4.18" }, "funding": [ { @@ -16445,20 +16457,20 @@ "type": "custom" } ], - "time": "2025-12-04T16:37:15+00:00" + "time": "2025-12-11T12:48:04+00:00" }, { "name": "tecnickcom/tc-lib-color", - "version": "2.2.19", + "version": "2.3.2", "source": { "type": "git", "url": "https://github.com/tecnickcom/tc-lib-color.git", - "reference": "8191ec9906ce0695bb4f9663ec28fdd2bd4ba96d" + "reference": "4a70cf68cd9fd4082b1b6d16234876a66649be0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tecnickcom/tc-lib-color/zipball/8191ec9906ce0695bb4f9663ec28fdd2bd4ba96d", - "reference": "8191ec9906ce0695bb4f9663ec28fdd2bd4ba96d", + "url": "https://api.github.com/repos/tecnickcom/tc-lib-color/zipball/4a70cf68cd9fd4082b1b6d16234876a66649be0b", + "reference": "4a70cf68cd9fd4082b1b6d16234876a66649be0b", "shasum": "" }, "require": { @@ -16467,6 +16479,7 @@ }, "require-dev": { "pdepend/pdepend": "2.16.2", + "phpcompatibility/php-compatibility": "^10.0.0@dev", "phpmd/phpmd": "2.15.0", "phpunit/phpunit": "12.4.4 || 11.5.44 || 10.5.58", "squizlabs/php_codesniffer": "4.0.1" @@ -16506,7 +16519,7 @@ ], "support": { "issues": "https://github.com/tecnickcom/tc-lib-color/issues", - "source": "https://github.com/tecnickcom/tc-lib-color/tree/2.2.19" + "source": "https://github.com/tecnickcom/tc-lib-color/tree/2.3.2" }, "funding": [ { @@ -16514,27 +16527,166 @@ "type": "custom" } ], - "time": "2025-12-04T16:35:40+00:00" + "time": "2025-12-11T12:13:39+00:00" }, { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "v2.3.0", + "name": "thecodingmachine/safe", + "version": "v3.3.0", "source": { "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "0d72ac1c00084279c1816675284073c5a337c20d" + "url": "https://github.com/thecodingmachine/safe.git", + "reference": "2cdd579eeaa2e78e51c7509b50cc9fb89a956236" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0d72ac1c00084279c1816675284073c5a337c20d", - "reference": "0d72ac1c00084279c1816675284073c5a337c20d", + "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/2cdd579eeaa2e78e51c7509b50cc9fb89a956236", + "reference": "2cdd579eeaa2e78e51c7509b50cc9fb89a956236", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpstan/phpstan": "^2", + "phpunit/phpunit": "^10", + "squizlabs/php_codesniffer": "^3.2" + }, + "type": "library", + "autoload": { + "files": [ + "lib/special_cases.php", + "generated/apache.php", + "generated/apcu.php", + "generated/array.php", + "generated/bzip2.php", + "generated/calendar.php", + "generated/classobj.php", + "generated/com.php", + "generated/cubrid.php", + "generated/curl.php", + "generated/datetime.php", + "generated/dir.php", + "generated/eio.php", + "generated/errorfunc.php", + "generated/exec.php", + "generated/fileinfo.php", + "generated/filesystem.php", + "generated/filter.php", + "generated/fpm.php", + "generated/ftp.php", + "generated/funchand.php", + "generated/gettext.php", + "generated/gmp.php", + "generated/gnupg.php", + "generated/hash.php", + "generated/ibase.php", + "generated/ibmDb2.php", + "generated/iconv.php", + "generated/image.php", + "generated/imap.php", + "generated/info.php", + "generated/inotify.php", + "generated/json.php", + "generated/ldap.php", + "generated/libxml.php", + "generated/lzf.php", + "generated/mailparse.php", + "generated/mbstring.php", + "generated/misc.php", + "generated/mysql.php", + "generated/mysqli.php", + "generated/network.php", + "generated/oci8.php", + "generated/opcache.php", + "generated/openssl.php", + "generated/outcontrol.php", + "generated/pcntl.php", + "generated/pcre.php", + "generated/pgsql.php", + "generated/posix.php", + "generated/ps.php", + "generated/pspell.php", + "generated/readline.php", + "generated/rnp.php", + "generated/rpminfo.php", + "generated/rrd.php", + "generated/sem.php", + "generated/session.php", + "generated/shmop.php", + "generated/sockets.php", + "generated/sodium.php", + "generated/solr.php", + "generated/spl.php", + "generated/sqlsrv.php", + "generated/ssdeep.php", + "generated/ssh2.php", + "generated/stream.php", + "generated/strings.php", + "generated/swoole.php", + "generated/uodbc.php", + "generated/uopz.php", + "generated/url.php", + "generated/var.php", + "generated/xdiff.php", + "generated/xml.php", + "generated/xmlrpc.php", + "generated/yaml.php", + "generated/yaz.php", + "generated/zip.php", + "generated/zlib.php" + ], + "classmap": [ + "lib/DateTime.php", + "lib/DateTimeImmutable.php", + "lib/Exceptions/", + "generated/Exceptions/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHP core functions that throw exceptions instead of returning FALSE on error", + "support": { + "issues": "https://github.com/thecodingmachine/safe/issues", + "source": "https://github.com/thecodingmachine/safe/tree/v3.3.0" + }, + "funding": [ + { + "url": "https://github.com/OskarStark", + "type": "github" + }, + { + "url": "https://github.com/shish", + "type": "github" + }, + { + "url": "https://github.com/staabm", + "type": "github" + } + ], + "time": "2025-05-14T06:15:44+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "f0292ccf0ec75843d65027214426b6b163b48b41" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/f0292ccf0ec75843d65027214426b6b163b48b41", + "reference": "f0292ccf0ec75843d65027214426b6b163b48b41", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "php": "^7.4 || ^8.0", - "symfony/css-selector": "^5.4 || ^6.0 || ^7.0" + "symfony/css-selector": "^5.4 || ^6.0 || ^7.0 || ^8.0" }, "require-dev": { "phpstan/phpstan": "^2.0", @@ -16567,9 +16719,9 @@ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "support": { "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.3.0" + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.4.0" }, - "time": "2024-12-21T16:25:41+00:00" + "time": "2025-12-02T11:56:42+00:00" }, { "name": "twig/cssinliner-extra", @@ -16642,16 +16794,16 @@ }, { "name": "twig/extra-bundle", - "version": "v3.22.1", + "version": "v3.22.2", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "b6534bc925bec930004facca92fccebd0c809247" + "reference": "09de9be7f6c0d19ede7b5a1dbfcfb2e9d1e0ea9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/b6534bc925bec930004facca92fccebd0c809247", - "reference": "b6534bc925bec930004facca92fccebd0c809247", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/09de9be7f6c0d19ede7b5a1dbfcfb2e9d1e0ea9e", + "reference": "09de9be7f6c0d19ede7b5a1dbfcfb2e9d1e0ea9e", "shasum": "" }, "require": { @@ -16700,7 +16852,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.22.1" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.22.2" }, "funding": [ { @@ -16712,7 +16864,7 @@ "type": "tidelift" } ], - "time": "2025-11-02T11:00:49+00:00" + "time": "2025-12-05T08:51:53+00:00" }, { "name": "twig/html-extra", @@ -17057,16 +17209,16 @@ }, { "name": "twig/twig", - "version": "v3.22.1", + "version": "v3.22.2", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "1de2ec1fc43ab58a4b7e80b214b96bfc895750f3" + "reference": "946ddeafa3c9f4ce279d1f34051af041db0e16f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/1de2ec1fc43ab58a4b7e80b214b96bfc895750f3", - "reference": "1de2ec1fc43ab58a4b7e80b214b96bfc895750f3", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/946ddeafa3c9f4ce279d1f34051af041db0e16f2", + "reference": "946ddeafa3c9f4ce279d1f34051af041db0e16f2", "shasum": "" }, "require": { @@ -17120,7 +17272,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.22.1" + "source": "https://github.com/twigphp/Twig/tree/v3.22.2" }, "funding": [ { @@ -17132,7 +17284,7 @@ "type": "tidelift" } ], - "time": "2025-11-16T16:01:12+00:00" + "time": "2025-12-14T11:28:47+00:00" }, { "name": "ua-parser/uap-php", @@ -17281,16 +17433,16 @@ }, { "name": "web-auth/webauthn-lib", - "version": "5.2.2", + "version": "5.2.3", "source": { "type": "git", "url": "https://github.com/web-auth/webauthn-lib.git", - "reference": "8937c397c8ae91b5af422ca8aa915c756062da74" + "reference": "8782f575032fedc36e2eb27c39c736054e2b6867" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/web-auth/webauthn-lib/zipball/8937c397c8ae91b5af422ca8aa915c756062da74", - "reference": "8937c397c8ae91b5af422ca8aa915c756062da74", + "url": "https://api.github.com/repos/web-auth/webauthn-lib/zipball/8782f575032fedc36e2eb27c39c736054e2b6867", + "reference": "8782f575032fedc36e2eb27c39c736054e2b6867", "shasum": "" }, "require": { @@ -17351,7 +17503,7 @@ "webauthn" ], "support": { - "source": "https://github.com/web-auth/webauthn-lib/tree/5.2.2" + "source": "https://github.com/web-auth/webauthn-lib/tree/5.2.3" }, "funding": [ { @@ -17363,20 +17515,20 @@ "type": "patreon" } ], - "time": "2025-03-16T14:38:43+00:00" + "time": "2025-12-20T10:54:02+00:00" }, { "name": "web-auth/webauthn-symfony-bundle", - "version": "5.2.2", + "version": "5.2.3", "source": { "type": "git", "url": "https://github.com/web-auth/webauthn-symfony-bundle.git", - "reference": "aebb0315b43728a92973cc3d4d471cbe414baa54" + "reference": "91f0aff70703e20d84251c83e238da1f8fc53b24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/web-auth/webauthn-symfony-bundle/zipball/aebb0315b43728a92973cc3d4d471cbe414baa54", - "reference": "aebb0315b43728a92973cc3d4d471cbe414baa54", + "url": "https://api.github.com/repos/web-auth/webauthn-symfony-bundle/zipball/91f0aff70703e20d84251c83e238da1f8fc53b24", + "reference": "91f0aff70703e20d84251c83e238da1f8fc53b24", "shasum": "" }, "require": { @@ -17433,7 +17585,7 @@ "webauthn" ], "support": { - "source": "https://github.com/web-auth/webauthn-symfony-bundle/tree/5.2.2" + "source": "https://github.com/web-auth/webauthn-symfony-bundle/tree/5.2.3" }, "funding": [ { @@ -17445,27 +17597,27 @@ "type": "patreon" } ], - "time": "2025-03-24T12:00:00+00:00" + "time": "2025-12-20T10:20:41+00:00" }, { "name": "webmozart/assert", - "version": "1.12.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "9be6926d8b485f55b9229203f962b51ed377ba68" + "reference": "1b34b004e35a164bc5bb6ebd33c844b2d8069a54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/9be6926d8b485f55b9229203f962b51ed377ba68", - "reference": "9be6926d8b485f55b9229203f962b51ed377ba68", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/1b34b004e35a164bc5bb6ebd33c844b2d8069a54", + "reference": "1b34b004e35a164bc5bb6ebd33c844b2d8069a54", "shasum": "" }, "require": { "ext-ctype": "*", "ext-date": "*", "ext-filter": "*", - "php": "^7.2 || ^8.0" + "php": "^8.2" }, "suggest": { "ext-intl": "", @@ -17475,7 +17627,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.10-dev" + "dev-feature/2-0": "2.0-dev" } }, "autoload": { @@ -17491,6 +17643,10 @@ { "name": "Bernhard Schussek", "email": "bschussek@gmail.com" + }, + { + "name": "Woody Gilk", + "email": "woody.gilk@gmail.com" } ], "description": "Assertions to validate method input/output with nice error messages.", @@ -17501,9 +17657,9 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.12.1" + "source": "https://github.com/webmozarts/assert/tree/2.0.0" }, - "time": "2025-10-29T15:56:20+00:00" + "time": "2025-12-16T21:36:00+00:00" }, { "name": "willdurand/negotiation", @@ -17565,16 +17721,16 @@ "packages-dev": [ { "name": "dama/doctrine-test-bundle", - "version": "v8.4.0", + "version": "v8.4.1", "source": { "type": "git", "url": "https://github.com/dmaicher/doctrine-test-bundle.git", - "reference": "ce7cd44126c36694e2f2d92c4aedd4fc5b0874f2" + "reference": "d9f4fb01a43da2e279ca190fa25ab9e26f15a0c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dmaicher/doctrine-test-bundle/zipball/ce7cd44126c36694e2f2d92c4aedd4fc5b0874f2", - "reference": "ce7cd44126c36694e2f2d92c4aedd4fc5b0874f2", + "url": "https://api.github.com/repos/dmaicher/doctrine-test-bundle/zipball/d9f4fb01a43da2e279ca190fa25ab9e26f15a0c8", + "reference": "d9f4fb01a43da2e279ca190fa25ab9e26f15a0c8", "shasum": "" }, "require": { @@ -17628,9 +17784,9 @@ ], "support": { "issues": "https://github.com/dmaicher/doctrine-test-bundle/issues", - "source": "https://github.com/dmaicher/doctrine-test-bundle/tree/v8.4.0" + "source": "https://github.com/dmaicher/doctrine-test-bundle/tree/v8.4.1" }, - "time": "2025-10-11T15:24:02+00:00" + "time": "2025-12-07T21:48:15+00:00" }, { "name": "doctrine/doctrine-fixtures-bundle", @@ -18385,35 +18541,35 @@ }, { "name": "phpunit/php-code-coverage", - "version": "11.0.11", + "version": "11.0.12", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "4f7722aa9a7b76aa775e2d9d4e95d1ea16eeeef4" + "reference": "2c1ed04922802c15e1de5d7447b4856de949cf56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/4f7722aa9a7b76aa775e2d9d4e95d1ea16eeeef4", - "reference": "4f7722aa9a7b76aa775e2d9d4e95d1ea16eeeef4", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2c1ed04922802c15e1de5d7447b4856de949cf56", + "reference": "2c1ed04922802c15e1de5d7447b4856de949cf56", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^5.4.0", + "nikic/php-parser": "^5.7.0", "php": ">=8.2", "phpunit/php-file-iterator": "^5.1.0", "phpunit/php-text-template": "^4.0.1", "sebastian/code-unit-reverse-lookup": "^4.0.1", "sebastian/complexity": "^4.0.1", - "sebastian/environment": "^7.2.0", + "sebastian/environment": "^7.2.1", "sebastian/lines-of-code": "^3.0.1", "sebastian/version": "^5.0.2", - "theseer/tokenizer": "^1.2.3" + "theseer/tokenizer": "^1.3.1" }, "require-dev": { - "phpunit/phpunit": "^11.5.2" + "phpunit/phpunit": "^11.5.46" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -18451,7 +18607,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.11" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.12" }, "funding": [ { @@ -18471,7 +18627,7 @@ "type": "tidelift" } ], - "time": "2025-08-27T14:37:49+00:00" + "time": "2025-12-24T07:01:01+00:00" }, { "name": "phpunit/php-file-iterator", @@ -18829,21 +18985,21 @@ }, { "name": "rector/rector", - "version": "2.2.11", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "7bd21a40b0332b93d4bfee284093d7400696902d" + "reference": "f7166355dcf47482f27be59169b0825995f51c7d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/7bd21a40b0332b93d4bfee284093d7400696902d", - "reference": "7bd21a40b0332b93d4bfee284093d7400696902d", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/f7166355dcf47482f27be59169b0825995f51c7d", + "reference": "f7166355dcf47482f27be59169b0825995f51c7d", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "phpstan/phpstan": "^2.1.32" + "phpstan/phpstan": "^2.1.33" }, "conflict": { "rector/rector-doctrine": "*", @@ -18877,7 +19033,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.2.11" + "source": "https://github.com/rectorphp/rector/tree/2.3.0" }, "funding": [ { @@ -18885,7 +19041,7 @@ "type": "github" } ], - "time": "2025-12-02T11:23:46+00:00" + "time": "2025-12-25T22:00:18+00:00" }, { "name": "roave/security-advisories", @@ -18893,12 +19049,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "10c1e6abcb8094a428b92e7d8c3126371f9f9126" + "reference": "412d91dc6342787fd733523797d9c9faf2ad3ea5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/10c1e6abcb8094a428b92e7d8c3126371f9f9126", - "reference": "10c1e6abcb8094a428b92e7d8c3126371f9f9126", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/412d91dc6342787fd733523797d9c9faf2ad3ea5", + "reference": "412d91dc6342787fd733523797d9c9faf2ad3ea5", "shasum": "" }, "conflict": { @@ -18920,6 +19076,7 @@ "alextselegidis/easyappointments": "<1.5.2.0-beta1", "alexusmai/laravel-file-manager": "<=3.3.1", "alt-design/alt-redirect": "<1.6.4", + "altcha-org/altcha": "<1.3.1", "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", "amazing/media2click": ">=1,<1.3.3", "ameos/ameos_tarteaucitron": "<1.2.23", @@ -18943,15 +19100,15 @@ "athlon1600/php-proxy-app": "<=3", "athlon1600/youtube-downloader": "<=4", "austintoddj/canvas": "<=3.4.2", - "auth0/auth0-php": ">=3.3,<=8.16", - "auth0/login": "<=7.18", - "auth0/symfony": "<=5.4.1", - "auth0/wordpress": "<=5.3", + "auth0/auth0-php": ">=3.3,<8.18", + "auth0/login": "<7.20", + "auth0/symfony": "<=5.5", + "auth0/wordpress": "<=5.4", "automad/automad": "<2.0.0.0-alpha5", "automattic/jetpack": "<9.8", "awesome-support/awesome-support": "<=6.0.7", - "aws/aws-sdk-php": "<3.288.1", - "azuracast/azuracast": "<0.18.3", + "aws/aws-sdk-php": "<3.368", + "azuracast/azuracast": "<=0.23.1", "b13/seo_basics": "<0.8.2", "backdrop/backdrop": "<=1.32", "backpack/crud": "<3.4.9", @@ -18990,6 +19147,7 @@ "bvbmedia/multishop": "<2.0.39", "bytefury/crater": "<6.0.2", "cachethq/cachet": "<2.5.1", + "cadmium-org/cadmium-cms": "<=0.4.9", "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", "cakephp/database": ">=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", "cardgate/magento2": "<2.0.33", @@ -19019,7 +19177,7 @@ "codingms/modules": "<4.3.11|>=5,<5.7.4|>=6,<6.4.2|>=7,<7.5.5", "commerceteam/commerce": ">=0.9.6,<0.9.9", "components/jquery": ">=1.0.3,<3.5", - "composer/composer": "<1.10.27|>=2,<2.2.24|>=2.3,<2.7.7", + "composer/composer": "<1.10.27|>=2,<2.2.26|>=2.3,<2.9.3", "concrete5/concrete5": "<9.4.3", "concrete5/core": "<8.5.8|>=9,<9.1", "contao-components/mediaelement": ">=2.14.2,<2.21.1", @@ -19033,7 +19191,7 @@ "cosenary/instagram": "<=2.3", "couleurcitron/tarteaucitron-wp": "<0.3", "craftcms/cms": "<=4.16.5|>=5,<=5.8.6", - "croogo/croogo": "<4", + "croogo/croogo": "<=4.0.7", "cuyz/valinor": "<0.12", "czim/file-handling": "<1.5|>=2,<2.3", "czproject/git-php": "<4.0.3", @@ -19144,12 +19302,13 @@ "ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15", "ezyang/htmlpurifier": "<=4.2", "facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2", - "facturascripts/facturascripts": "<=2022.08", + "facturascripts/facturascripts": "<=2025.4|==2025.11|==2025.41|==2025.43", "fastly/magento2": "<1.2.26", "feehi/cms": "<=2.1.1", "feehi/feehicms": "<=2.1.1", "fenom/fenom": "<=2.12.1", "filament/actions": ">=3.2,<3.2.123", + "filament/filament": ">=4,<4.3.1", "filament/infolists": ">=3,<3.2.115", "filament/tables": ">=3,<3.2.115", "filegator/filegator": "<7.8", @@ -19168,6 +19327,7 @@ "floriangaerber/magnesium": "<0.3.1", "fluidtypo3/vhs": "<5.1.1", "fof/byobu": ">=0.3.0.0-beta2,<1.1.7", + "fof/pretty-mail": "<=1.1.2", "fof/upload": "<1.2.3", "foodcoopshop/foodcoopshop": ">=3.2,<3.6.1", "fooman/tcpdf": "<6.2.22", @@ -19231,7 +19391,7 @@ "ibexa/http-cache": ">=4.6,<4.6.14", "ibexa/post-install": "<1.0.16|>=4.6,<4.6.14", "ibexa/solr": ">=4.5,<4.5.4", - "ibexa/user": ">=4,<4.4.3|>=5,<5.0.3", + "ibexa/user": ">=4,<4.4.3|>=5,<5.0.4", "icecoder/icecoder": "<=8.1", "idno/known": "<=1.3.1", "ilicmiljan/secure-props": ">=1.2,<1.2.2", @@ -19314,7 +19474,7 @@ "leantime/leantime": "<3.3", "lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3", "libreform/libreform": ">=2,<=2.0.8", - "librenms/librenms": "<25.11", + "librenms/librenms": "<25.12", "liftkit/database": "<2.13.2", "lightsaml/lightsaml": "<1.3.5", "limesurvey/limesurvey": "<6.5.12", @@ -19368,6 +19528,7 @@ "microsoft/microsoft-graph-core": "<2.0.2", "microweber/microweber": "<=2.0.19", "mikehaertl/php-shellcommand": "<1.6.1", + "mineadmin/mineadmin": "<=3.0.9", "miniorange/miniorange-saml": "<1.4.3", "mittwald/typo3_forum": "<1.2.1", "mobiledetect/mobiledetectlib": "<2.8.32", @@ -19404,6 +19565,7 @@ "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", "nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13", + "neuron-core/neuron-ai": "<=2.8.11", "nilsteampassnet/teampass": "<3.1.3.1-dev", "nitsan/ns-backup": "<13.0.1", "nonfiction/nterchange": "<4.1.1", @@ -19423,7 +19585,7 @@ "october/system": "<3.7.5", "oliverklee/phpunit": "<3.5.15", "omeka/omeka-s": "<4.0.3", - "onelogin/php-saml": "<2.10.4", + "onelogin/php-saml": "<2.21.1|>=3,<3.8.1|>=4,<4.3.1", "oneup/uploader-bundle": ">=1,<1.9.3|>=2,<2.1.5", "open-web-analytics/open-web-analytics": "<1.8.1", "opencart/opencart": ">=0", @@ -19447,6 +19609,7 @@ "pagekit/pagekit": "<=1.0.18", "paragonie/ecc": "<2.0.1", "paragonie/random_compat": "<2", + "paragonie/sodium_compat": "<1.24|>=2,<2.5", "passbolt/passbolt_api": "<4.6.2", "paypal/adaptivepayments-sdk-php": "<=3.9.2", "paypal/invoice-sdk-php": "<=3.9", @@ -19514,7 +19677,7 @@ "processwire/processwire": "<=3.0.246", "propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7", "propel/propel1": ">=1,<=1.7.1", - "pterodactyl/panel": "<=1.11.10", + "pterodactyl/panel": "<1.12", "ptheofan/yii2-statemachine": ">=2.0.0.0-RC1-dev,<=2", "ptrofimov/beanstalk_console": "<1.7.14", "pubnub/pubnub": "<6.1", @@ -19538,7 +19701,7 @@ "reportico-web/reportico": "<=8.1", "rhukster/dom-sanitizer": "<1.0.7", "rmccue/requests": ">=1.6,<1.8", - "robrichards/xmlseclibs": ">=1,<3.0.4", + "robrichards/xmlseclibs": "<=3.1.3", "roots/soil": "<4.1", "roundcube/roundcubemail": "<1.5.10|>=1.6,<1.6.11", "rudloff/alltube": "<3.0.3", @@ -19557,8 +19720,8 @@ "shopware/core": "<6.6.10.9-dev|>=6.7,<6.7.4.1-dev", "shopware/platform": "<6.6.10.7-dev|>=6.7,<6.7.3.1-dev", "shopware/production": "<=6.3.5.2", - "shopware/shopware": "<=5.7.17|>=6.7,<6.7.2.1-dev", - "shopware/storefront": "<=6.4.8.1|>=6.5.8,<6.5.8.7-dev", + "shopware/shopware": "<=5.7.17|>=6.4.6,<6.6.10.10-dev|>=6.7,<6.7.5.1-dev", + "shopware/storefront": "<6.6.10.10-dev|>=6.7,<6.7.5.1-dev", "shopxo/shopxo": "<=6.4", "showdoc/showdoc": "<2.10.4", "shuchkin/simplexlsx": ">=1.0.12,<1.1.13", @@ -19691,7 +19854,7 @@ "thelia/thelia": ">=2.1,<2.1.3", "theonedemon/phpwhois": "<=4.2.5", "thinkcmf/thinkcmf": "<6.0.8", - "thorsten/phpmyfaq": "<=4.0.13", + "thorsten/phpmyfaq": "<4.0.16|>=4.1.0.0-alpha,<=4.1.0.0-beta2", "tikiwiki/tiki-manager": "<=17.1", "timber/timber": ">=0.16.6,<1.23.1|>=1.24,<1.24.1|>=2,<2.1", "tinymce/tinymce": "<7.2", @@ -19807,8 +19970,9 @@ "yiisoft/yii2-redis": "<2.0.20", "yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6", "yoast-seo-for-typo3/yoast_seo": "<7.2.3", - "yourls/yourls": "<=1.8.2", + "yourls/yourls": "<=1.10.2", "yuan1994/tpadmin": "<=1.3.12", + "yungifez/skuul": "<=2.6.5", "z-push/z-push-dev": "<2.7.6", "zencart/zencart": "<=1.5.7.0-beta", "zendesk/zendesk_api_client_php": "<2.2.11", @@ -19884,7 +20048,7 @@ "type": "tidelift" } ], - "time": "2025-12-05T21:05:14+00:00" + "time": "2025-12-30T23:05:26+00:00" }, { "name": "sebastian/cli-parser", @@ -20926,16 +21090,16 @@ }, { "name": "symfony/browser-kit", - "version": "v7.4.0", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "3bb26dafce31633b1f699894c86379eefc8af5bb" + "reference": "d5b5c731005f224fbc25289587a8538e4f62c762" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/3bb26dafce31633b1f699894c86379eefc8af5bb", - "reference": "3bb26dafce31633b1f699894c86379eefc8af5bb", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/d5b5c731005f224fbc25289587a8538e4f62c762", + "reference": "d5b5c731005f224fbc25289587a8538e4f62c762", "shasum": "" }, "require": { @@ -20975,7 +21139,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/v7.4.0" + "source": "https://github.com/symfony/browser-kit/tree/v7.4.3" }, "funding": [ { @@ -20995,7 +21159,7 @@ "type": "tidelift" } ], - "time": "2025-11-05T14:29:59+00:00" + "time": "2025-12-16T08:02:06+00:00" }, { "name": "symfony/debug-bundle", @@ -21172,16 +21336,16 @@ }, { "name": "symfony/phpunit-bridge", - "version": "v7.4.0", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "059b051b38f2138ef104dd848fa48f0cbbb7d78b" + "reference": "f933e68bb9df29d08077a37e1515a23fea8562ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/059b051b38f2138ef104dd848fa48f0cbbb7d78b", - "reference": "059b051b38f2138ef104dd848fa48f0cbbb7d78b", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/f933e68bb9df29d08077a37e1515a23fea8562ab", + "reference": "f933e68bb9df29d08077a37e1515a23fea8562ab", "shasum": "" }, "require": { @@ -21233,7 +21397,7 @@ "testing" ], "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v7.4.0" + "source": "https://github.com/symfony/phpunit-bridge/tree/v7.4.3" }, "funding": [ { @@ -21253,20 +21417,20 @@ "type": "tidelift" } ], - "time": "2025-10-28T22:44:23+00:00" + "time": "2025-12-09T15:33:45+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v7.4.0", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "dcd955ca9c60f2942194854518049f8ae4dbd696" + "reference": "5220b59d06f6554658a0dc4d6bd4497a789e51dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/dcd955ca9c60f2942194854518049f8ae4dbd696", - "reference": "dcd955ca9c60f2942194854518049f8ae4dbd696", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/5220b59d06f6554658a0dc4d6bd4497a789e51dd", + "reference": "5220b59d06f6554658a0dc4d6bd4497a789e51dd", "shasum": "" }, "require": { @@ -21323,7 +21487,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.4.0" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.4.3" }, "funding": [ { @@ -21343,7 +21507,7 @@ "type": "tidelift" } ], - "time": "2025-11-19T14:48:01+00:00" + "time": "2025-12-27T17:05:22+00:00" }, { "name": "theseer/tokenizer", diff --git a/config/reference.php b/config/reference.php index f39fefc4..3ed46fd1 100644 --- a/config/reference.php +++ b/config/reference.php @@ -4,6 +4,8 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use Symfony\Component\Config\Loader\ParamConfigurator as Param; + /** * This class provides array-shapes for configuring the services and bundles of an application. * @@ -124,1740 +126,1740 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * } * @psalm-type ExtensionType = array * @psalm-type FrameworkConfig = array{ - * secret?: scalar|null, - * http_method_override?: bool, // Set true to enable support for the '_method' request parameter to determine the intended HTTP method on POST requests. // Default: false - * allowed_http_method_override?: list|null, - * trust_x_sendfile_type_header?: scalar|null, // Set true to enable support for xsendfile in binary file responses. // Default: "%env(bool:default::SYMFONY_TRUST_X_SENDFILE_TYPE_HEADER)%" - * ide?: scalar|null, // Default: "%env(default::SYMFONY_IDE)%" - * test?: bool, - * default_locale?: scalar|null, // Default: "en" - * set_locale_from_accept_language?: bool, // Whether to use the Accept-Language HTTP header to set the Request locale (only when the "_locale" request attribute is not passed). // Default: false - * set_content_language_from_locale?: bool, // Whether to set the Content-Language HTTP header on the Response using the Request locale. // Default: false - * enabled_locales?: list, - * trusted_hosts?: list, + * secret?: scalar|null|Param, + * http_method_override?: bool|Param, // Set true to enable support for the '_method' request parameter to determine the intended HTTP method on POST requests. // Default: false + * allowed_http_method_override?: list|null, + * trust_x_sendfile_type_header?: scalar|null|Param, // Set true to enable support for xsendfile in binary file responses. // Default: "%env(bool:default::SYMFONY_TRUST_X_SENDFILE_TYPE_HEADER)%" + * ide?: scalar|null|Param, // Default: "%env(default::SYMFONY_IDE)%" + * test?: bool|Param, + * default_locale?: scalar|null|Param, // Default: "en" + * set_locale_from_accept_language?: bool|Param, // Whether to use the Accept-Language HTTP header to set the Request locale (only when the "_locale" request attribute is not passed). // Default: false + * set_content_language_from_locale?: bool|Param, // Whether to set the Content-Language HTTP header on the Response using the Request locale. // Default: false + * enabled_locales?: list, + * trusted_hosts?: list, * trusted_proxies?: mixed, // Default: ["%env(default::SYMFONY_TRUSTED_PROXIES)%"] - * trusted_headers?: list, - * error_controller?: scalar|null, // Default: "error_controller" - * handle_all_throwables?: bool, // HttpKernel will handle all kinds of \Throwable. // Default: true + * trusted_headers?: list, + * error_controller?: scalar|null|Param, // Default: "error_controller" + * handle_all_throwables?: bool|Param, // HttpKernel will handle all kinds of \Throwable. // Default: true * csrf_protection?: bool|array{ - * enabled?: scalar|null, // Default: null - * stateless_token_ids?: list, - * check_header?: scalar|null, // Whether to check the CSRF token in a header in addition to a cookie when using stateless protection. // Default: false - * cookie_name?: scalar|null, // The name of the cookie to use when using stateless protection. // Default: "csrf-token" + * enabled?: scalar|null|Param, // Default: null + * stateless_token_ids?: list, + * check_header?: scalar|null|Param, // Whether to check the CSRF token in a header in addition to a cookie when using stateless protection. // Default: false + * cookie_name?: scalar|null|Param, // The name of the cookie to use when using stateless protection. // Default: "csrf-token" * }, * form?: bool|array{ // Form configuration - * enabled?: bool, // Default: true + * enabled?: bool|Param, // Default: true * csrf_protection?: array{ - * enabled?: scalar|null, // Default: null - * token_id?: scalar|null, // Default: null - * field_name?: scalar|null, // Default: "_token" - * field_attr?: array, + * enabled?: scalar|null|Param, // Default: null + * token_id?: scalar|null|Param, // Default: null + * field_name?: scalar|null|Param, // Default: "_token" + * field_attr?: array, * }, * }, * http_cache?: bool|array{ // HTTP cache configuration - * enabled?: bool, // Default: false - * debug?: bool, // Default: "%kernel.debug%" - * trace_level?: "none"|"short"|"full", - * trace_header?: scalar|null, - * default_ttl?: int, - * private_headers?: list, - * skip_response_headers?: list, - * allow_reload?: bool, - * allow_revalidate?: bool, - * stale_while_revalidate?: int, - * stale_if_error?: int, - * terminate_on_cache_hit?: bool, + * enabled?: bool|Param, // Default: false + * debug?: bool|Param, // Default: "%kernel.debug%" + * trace_level?: "none"|"short"|"full"|Param, + * trace_header?: scalar|null|Param, + * default_ttl?: int|Param, + * private_headers?: list, + * skip_response_headers?: list, + * allow_reload?: bool|Param, + * allow_revalidate?: bool|Param, + * stale_while_revalidate?: int|Param, + * stale_if_error?: int|Param, + * terminate_on_cache_hit?: bool|Param, * }, * esi?: bool|array{ // ESI configuration - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * }, * ssi?: bool|array{ // SSI configuration - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * }, * fragments?: bool|array{ // Fragments configuration - * enabled?: bool, // Default: false - * hinclude_default_template?: scalar|null, // Default: null - * path?: scalar|null, // Default: "/_fragment" + * enabled?: bool|Param, // Default: false + * hinclude_default_template?: scalar|null|Param, // Default: null + * path?: scalar|null|Param, // Default: "/_fragment" * }, * profiler?: bool|array{ // Profiler configuration - * enabled?: bool, // Default: false - * collect?: bool, // Default: true - * collect_parameter?: scalar|null, // The name of the parameter to use to enable or disable collection on a per request basis. // Default: null - * only_exceptions?: bool, // Default: false - * only_main_requests?: bool, // Default: false - * dsn?: scalar|null, // Default: "file:%kernel.cache_dir%/profiler" - * collect_serializer_data?: bool, // Enables the serializer data collector and profiler panel. // Default: false + * enabled?: bool|Param, // Default: false + * collect?: bool|Param, // Default: true + * collect_parameter?: scalar|null|Param, // The name of the parameter to use to enable or disable collection on a per request basis. // Default: null + * only_exceptions?: bool|Param, // Default: false + * only_main_requests?: bool|Param, // Default: false + * dsn?: scalar|null|Param, // Default: "file:%kernel.cache_dir%/profiler" + * collect_serializer_data?: bool|Param, // Enables the serializer data collector and profiler panel. // Default: false * }, * workflows?: bool|array{ - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * workflows?: array, - * definition_validators?: list, - * support_strategy?: scalar|null, - * initial_marking?: list, - * events_to_dispatch?: list|null, + * supports?: list, + * definition_validators?: list, + * support_strategy?: scalar|null|Param, + * initial_marking?: list, + * events_to_dispatch?: list|null, * places?: list, * }>, * transitions: list, * to?: list, - * weight?: int, // Default: 1 + * weight?: int|Param, // Default: 1 * metadata?: list, * }>, * metadata?: list, * }>, * }, * router?: bool|array{ // Router configuration - * enabled?: bool, // Default: false - * resource: scalar|null, - * type?: scalar|null, - * cache_dir?: scalar|null, // Deprecated: Setting the "framework.router.cache_dir.cache_dir" configuration option is deprecated. It will be removed in version 8.0. // Default: "%kernel.build_dir%" - * default_uri?: scalar|null, // The default URI used to generate URLs in a non-HTTP context. // Default: null - * http_port?: scalar|null, // Default: 80 - * https_port?: scalar|null, // Default: 443 - * strict_requirements?: scalar|null, // set to true to throw an exception when a parameter does not match the requirements set to false to disable exceptions when a parameter does not match the requirements (and return null instead) set to null to disable parameter checks against requirements 'true' is the preferred configuration in development mode, while 'false' or 'null' might be preferred in production // Default: true - * utf8?: bool, // Default: true + * enabled?: bool|Param, // Default: false + * resource: scalar|null|Param, + * type?: scalar|null|Param, + * cache_dir?: scalar|null|Param, // Deprecated: Setting the "framework.router.cache_dir.cache_dir" configuration option is deprecated. It will be removed in version 8.0. // Default: "%kernel.build_dir%" + * default_uri?: scalar|null|Param, // The default URI used to generate URLs in a non-HTTP context. // Default: null + * http_port?: scalar|null|Param, // Default: 80 + * https_port?: scalar|null|Param, // Default: 443 + * strict_requirements?: scalar|null|Param, // set to true to throw an exception when a parameter does not match the requirements set to false to disable exceptions when a parameter does not match the requirements (and return null instead) set to null to disable parameter checks against requirements 'true' is the preferred configuration in development mode, while 'false' or 'null' might be preferred in production // Default: true + * utf8?: bool|Param, // Default: true * }, * session?: bool|array{ // Session configuration - * enabled?: bool, // Default: false - * storage_factory_id?: scalar|null, // Default: "session.storage.factory.native" - * handler_id?: scalar|null, // Defaults to using the native session handler, or to the native *file* session handler if "save_path" is not null. - * name?: scalar|null, - * cookie_lifetime?: scalar|null, - * cookie_path?: scalar|null, - * cookie_domain?: scalar|null, - * cookie_secure?: true|false|"auto", // Default: "auto" - * cookie_httponly?: bool, // Default: true - * cookie_samesite?: null|"lax"|"strict"|"none", // Default: "lax" - * use_cookies?: bool, - * gc_divisor?: scalar|null, - * gc_probability?: scalar|null, - * gc_maxlifetime?: scalar|null, - * save_path?: scalar|null, // Defaults to "%kernel.cache_dir%/sessions" if the "handler_id" option is not null. - * metadata_update_threshold?: int, // Seconds to wait between 2 session metadata updates. // Default: 0 - * sid_length?: int, // Deprecated: Setting the "framework.session.sid_length.sid_length" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option. - * sid_bits_per_character?: int, // Deprecated: Setting the "framework.session.sid_bits_per_character.sid_bits_per_character" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option. + * enabled?: bool|Param, // Default: false + * storage_factory_id?: scalar|null|Param, // Default: "session.storage.factory.native" + * handler_id?: scalar|null|Param, // Defaults to using the native session handler, or to the native *file* session handler if "save_path" is not null. + * name?: scalar|null|Param, + * cookie_lifetime?: scalar|null|Param, + * cookie_path?: scalar|null|Param, + * cookie_domain?: scalar|null|Param, + * cookie_secure?: true|false|"auto"|Param, // Default: "auto" + * cookie_httponly?: bool|Param, // Default: true + * cookie_samesite?: null|"lax"|"strict"|"none"|Param, // Default: "lax" + * use_cookies?: bool|Param, + * gc_divisor?: scalar|null|Param, + * gc_probability?: scalar|null|Param, + * gc_maxlifetime?: scalar|null|Param, + * save_path?: scalar|null|Param, // Defaults to "%kernel.cache_dir%/sessions" if the "handler_id" option is not null. + * metadata_update_threshold?: int|Param, // Seconds to wait between 2 session metadata updates. // Default: 0 + * sid_length?: int|Param, // Deprecated: Setting the "framework.session.sid_length.sid_length" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option. + * sid_bits_per_character?: int|Param, // Deprecated: Setting the "framework.session.sid_bits_per_character.sid_bits_per_character" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option. * }, * request?: bool|array{ // Request configuration - * enabled?: bool, // Default: false - * formats?: array>, + * enabled?: bool|Param, // Default: false + * formats?: array>, * }, * assets?: bool|array{ // Assets configuration - * enabled?: bool, // Default: true - * strict_mode?: bool, // Throw an exception if an entry is missing from the manifest.json. // Default: false - * version_strategy?: scalar|null, // Default: null - * version?: scalar|null, // Default: null - * version_format?: scalar|null, // Default: "%%s?%%s" - * json_manifest_path?: scalar|null, // Default: null - * base_path?: scalar|null, // Default: "" - * base_urls?: list, + * enabled?: bool|Param, // Default: true + * strict_mode?: bool|Param, // Throw an exception if an entry is missing from the manifest.json. // Default: false + * version_strategy?: scalar|null|Param, // Default: null + * version?: scalar|null|Param, // Default: null + * version_format?: scalar|null|Param, // Default: "%%s?%%s" + * json_manifest_path?: scalar|null|Param, // Default: null + * base_path?: scalar|null|Param, // Default: "" + * base_urls?: list, * packages?: array, + * strict_mode?: bool|Param, // Throw an exception if an entry is missing from the manifest.json. // Default: false + * version_strategy?: scalar|null|Param, // Default: null + * version?: scalar|null|Param, + * version_format?: scalar|null|Param, // Default: null + * json_manifest_path?: scalar|null|Param, // Default: null + * base_path?: scalar|null|Param, // Default: "" + * base_urls?: list, * }>, * }, * asset_mapper?: bool|array{ // Asset Mapper configuration - * enabled?: bool, // Default: false - * paths?: array, - * excluded_patterns?: list, - * exclude_dotfiles?: bool, // If true, any files starting with "." will be excluded from the asset mapper. // Default: true - * server?: bool, // If true, a "dev server" will return the assets from the public directory (true in "debug" mode only by default). // Default: true - * public_prefix?: scalar|null, // The public path where the assets will be written to (and served from when "server" is true). // Default: "/assets/" - * missing_import_mode?: "strict"|"warn"|"ignore", // Behavior if an asset cannot be found when imported from JavaScript or CSS files - e.g. "import './non-existent.js'". "strict" means an exception is thrown, "warn" means a warning is logged, "ignore" means the import is left as-is. // Default: "warn" - * extensions?: array, - * importmap_path?: scalar|null, // The path of the importmap.php file. // Default: "%kernel.project_dir%/importmap.php" - * importmap_polyfill?: scalar|null, // The importmap name that will be used to load the polyfill. Set to false to disable. // Default: "es-module-shims" - * importmap_script_attributes?: array, - * vendor_dir?: scalar|null, // The directory to store JavaScript vendors. // Default: "%kernel.project_dir%/assets/vendor" + * enabled?: bool|Param, // Default: false + * paths?: array, + * excluded_patterns?: list, + * exclude_dotfiles?: bool|Param, // If true, any files starting with "." will be excluded from the asset mapper. // Default: true + * server?: bool|Param, // If true, a "dev server" will return the assets from the public directory (true in "debug" mode only by default). // Default: true + * public_prefix?: scalar|null|Param, // The public path where the assets will be written to (and served from when "server" is true). // Default: "/assets/" + * missing_import_mode?: "strict"|"warn"|"ignore"|Param, // Behavior if an asset cannot be found when imported from JavaScript or CSS files - e.g. "import './non-existent.js'". "strict" means an exception is thrown, "warn" means a warning is logged, "ignore" means the import is left as-is. // Default: "warn" + * extensions?: array, + * importmap_path?: scalar|null|Param, // The path of the importmap.php file. // Default: "%kernel.project_dir%/importmap.php" + * importmap_polyfill?: scalar|null|Param, // The importmap name that will be used to load the polyfill. Set to false to disable. // Default: "es-module-shims" + * importmap_script_attributes?: array, + * vendor_dir?: scalar|null|Param, // The directory to store JavaScript vendors. // Default: "%kernel.project_dir%/assets/vendor" * precompress?: bool|array{ // Precompress assets with Brotli, Zstandard and gzip. - * enabled?: bool, // Default: false - * formats?: list, - * extensions?: list, + * enabled?: bool|Param, // Default: false + * formats?: list, + * extensions?: list, * }, * }, * translator?: bool|array{ // Translator configuration - * enabled?: bool, // Default: true - * fallbacks?: list, - * logging?: bool, // Default: false - * formatter?: scalar|null, // Default: "translator.formatter.default" - * cache_dir?: scalar|null, // Default: "%kernel.cache_dir%/translations" - * default_path?: scalar|null, // The default path used to load translations. // Default: "%kernel.project_dir%/translations" - * paths?: list, + * enabled?: bool|Param, // Default: true + * fallbacks?: list, + * logging?: bool|Param, // Default: false + * formatter?: scalar|null|Param, // Default: "translator.formatter.default" + * cache_dir?: scalar|null|Param, // Default: "%kernel.cache_dir%/translations" + * default_path?: scalar|null|Param, // The default path used to load translations. // Default: "%kernel.project_dir%/translations" + * paths?: list, * pseudo_localization?: bool|array{ - * enabled?: bool, // Default: false - * accents?: bool, // Default: true - * expansion_factor?: float, // Default: 1.0 - * brackets?: bool, // Default: true - * parse_html?: bool, // Default: false - * localizable_html_attributes?: list, + * enabled?: bool|Param, // Default: false + * accents?: bool|Param, // Default: true + * expansion_factor?: float|Param, // Default: 1.0 + * brackets?: bool|Param, // Default: true + * parse_html?: bool|Param, // Default: false + * localizable_html_attributes?: list, * }, * providers?: array, - * locales?: list, + * dsn?: scalar|null|Param, + * domains?: list, + * locales?: list, * }>, * globals?: array, - * domain?: string, + * message?: string|Param, + * parameters?: array, + * domain?: string|Param, * }>, * }, * validation?: bool|array{ // Validation configuration - * enabled?: bool, // Default: true - * cache?: scalar|null, // Deprecated: Setting the "framework.validation.cache.cache" configuration option is deprecated. It will be removed in version 8.0. - * enable_attributes?: bool, // Default: true - * static_method?: list, - * translation_domain?: scalar|null, // Default: "validators" - * email_validation_mode?: "html5"|"html5-allow-no-tld"|"strict"|"loose", // Default: "html5" + * enabled?: bool|Param, // Default: true + * cache?: scalar|null|Param, // Deprecated: Setting the "framework.validation.cache.cache" configuration option is deprecated. It will be removed in version 8.0. + * enable_attributes?: bool|Param, // Default: true + * static_method?: list, + * translation_domain?: scalar|null|Param, // Default: "validators" + * email_validation_mode?: "html5"|"html5-allow-no-tld"|"strict"|"loose"|Param, // Default: "html5" * mapping?: array{ - * paths?: list, + * paths?: list, * }, * not_compromised_password?: bool|array{ - * enabled?: bool, // When disabled, compromised passwords will be accepted as valid. // Default: true - * endpoint?: scalar|null, // API endpoint for the NotCompromisedPassword Validator. // Default: null + * enabled?: bool|Param, // When disabled, compromised passwords will be accepted as valid. // Default: true + * endpoint?: scalar|null|Param, // API endpoint for the NotCompromisedPassword Validator. // Default: null * }, - * disable_translation?: bool, // Default: false + * disable_translation?: bool|Param, // Default: false * auto_mapping?: array, + * services?: list, * }>, * }, * annotations?: bool|array{ - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * }, * serializer?: bool|array{ // Serializer configuration - * enabled?: bool, // Default: true - * enable_attributes?: bool, // Default: true - * name_converter?: scalar|null, - * circular_reference_handler?: scalar|null, - * max_depth_handler?: scalar|null, + * enabled?: bool|Param, // Default: true + * enable_attributes?: bool|Param, // Default: true + * name_converter?: scalar|null|Param, + * circular_reference_handler?: scalar|null|Param, + * max_depth_handler?: scalar|null|Param, * mapping?: array{ - * paths?: list, + * paths?: list, * }, * default_context?: list, * named_serializers?: array, - * include_built_in_normalizers?: bool, // Whether to include the built-in normalizers // Default: true - * include_built_in_encoders?: bool, // Whether to include the built-in encoders // Default: true + * include_built_in_normalizers?: bool|Param, // Whether to include the built-in normalizers // Default: true + * include_built_in_encoders?: bool|Param, // Whether to include the built-in encoders // Default: true * }>, * }, * property_access?: bool|array{ // Property access configuration - * enabled?: bool, // Default: true - * magic_call?: bool, // Default: false - * magic_get?: bool, // Default: true - * magic_set?: bool, // Default: true - * throw_exception_on_invalid_index?: bool, // Default: false - * throw_exception_on_invalid_property_path?: bool, // Default: true + * enabled?: bool|Param, // Default: true + * magic_call?: bool|Param, // Default: false + * magic_get?: bool|Param, // Default: true + * magic_set?: bool|Param, // Default: true + * throw_exception_on_invalid_index?: bool|Param, // Default: false + * throw_exception_on_invalid_property_path?: bool|Param, // Default: true * }, * type_info?: bool|array{ // Type info configuration - * enabled?: bool, // Default: true - * aliases?: array, + * enabled?: bool|Param, // Default: true + * aliases?: array, * }, * property_info?: bool|array{ // Property info configuration - * enabled?: bool, // Default: true - * with_constructor_extractor?: bool, // Registers the constructor extractor. + * enabled?: bool|Param, // Default: true + * with_constructor_extractor?: bool|Param, // Registers the constructor extractor. * }, * cache?: array{ // Cache configuration - * prefix_seed?: scalar|null, // Used to namespace cache keys when using several apps with the same shared backend. // Default: "_%kernel.project_dir%.%kernel.container_class%" - * app?: scalar|null, // App related cache pools configuration. // Default: "cache.adapter.filesystem" - * system?: scalar|null, // System related cache pools configuration. // Default: "cache.adapter.system" - * directory?: scalar|null, // Default: "%kernel.share_dir%/pools/app" - * default_psr6_provider?: scalar|null, - * default_redis_provider?: scalar|null, // Default: "redis://localhost" - * default_valkey_provider?: scalar|null, // Default: "valkey://localhost" - * default_memcached_provider?: scalar|null, // Default: "memcached://localhost" - * default_doctrine_dbal_provider?: scalar|null, // Default: "database_connection" - * default_pdo_provider?: scalar|null, // Default: null + * prefix_seed?: scalar|null|Param, // Used to namespace cache keys when using several apps with the same shared backend. // Default: "_%kernel.project_dir%.%kernel.container_class%" + * app?: scalar|null|Param, // App related cache pools configuration. // Default: "cache.adapter.filesystem" + * system?: scalar|null|Param, // System related cache pools configuration. // Default: "cache.adapter.system" + * directory?: scalar|null|Param, // Default: "%kernel.share_dir%/pools/app" + * default_psr6_provider?: scalar|null|Param, + * default_redis_provider?: scalar|null|Param, // Default: "redis://localhost" + * default_valkey_provider?: scalar|null|Param, // Default: "valkey://localhost" + * default_memcached_provider?: scalar|null|Param, // Default: "memcached://localhost" + * default_doctrine_dbal_provider?: scalar|null|Param, // Default: "database_connection" + * default_pdo_provider?: scalar|null|Param, // Default: null * pools?: array, - * tags?: scalar|null, // Default: null - * public?: bool, // Default: false - * default_lifetime?: scalar|null, // Default lifetime of the pool. - * provider?: scalar|null, // Overwrite the setting from the default provider for this adapter. - * early_expiration_message_bus?: scalar|null, - * clearer?: scalar|null, + * adapters?: list, + * tags?: scalar|null|Param, // Default: null + * public?: bool|Param, // Default: false + * default_lifetime?: scalar|null|Param, // Default lifetime of the pool. + * provider?: scalar|null|Param, // Overwrite the setting from the default provider for this adapter. + * early_expiration_message_bus?: scalar|null|Param, + * clearer?: scalar|null|Param, * }>, * }, * php_errors?: array{ // PHP errors handling configuration * log?: mixed, // Use the application logger instead of the PHP logger for logging PHP errors. // Default: true - * throw?: bool, // Throw PHP errors as \ErrorException instances. // Default: true + * throw?: bool|Param, // Throw PHP errors as \ErrorException instances. // Default: true * }, * exceptions?: array, * web_link?: bool|array{ // Web links configuration - * enabled?: bool, // Default: true + * enabled?: bool|Param, // Default: true * }, * lock?: bool|string|array{ // Lock configuration - * enabled?: bool, // Default: false - * resources?: array>, + * enabled?: bool|Param, // Default: false + * resources?: array>, * }, * semaphore?: bool|string|array{ // Semaphore configuration - * enabled?: bool, // Default: false - * resources?: array, + * enabled?: bool|Param, // Default: false + * resources?: array, * }, * messenger?: bool|array{ // Messenger configuration - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * routing?: array, + * senders?: list, * }>, * serializer?: array{ - * default_serializer?: scalar|null, // Service id to use as the default serializer for the transports. // Default: "messenger.transport.native_php_serializer" + * default_serializer?: scalar|null|Param, // Service id to use as the default serializer for the transports. // Default: "messenger.transport.native_php_serializer" * symfony_serializer?: array{ - * format?: scalar|null, // Serialization format for the messenger.transport.symfony_serializer service (which is not the serializer used by default). // Default: "json" + * format?: scalar|null|Param, // Serialization format for the messenger.transport.symfony_serializer service (which is not the serializer used by default). // Default: "json" * context?: array, * }, * }, * transports?: array, - * failure_transport?: scalar|null, // Transport name to send failed messages to (after all retries have failed). // Default: null + * failure_transport?: scalar|null|Param, // Transport name to send failed messages to (after all retries have failed). // Default: null * retry_strategy?: string|array{ - * service?: scalar|null, // Service id to override the retry strategy entirely. // Default: null - * max_retries?: int, // Default: 3 - * delay?: int, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 - * multiplier?: float, // If greater than 1, delay will grow exponentially for each retry: this delay = (delay * (multiple ^ retries)). // Default: 2 - * max_delay?: int, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 - * jitter?: float, // Randomness to apply to the delay (between 0 and 1). // Default: 0.1 + * service?: scalar|null|Param, // Service id to override the retry strategy entirely. // Default: null + * max_retries?: int|Param, // Default: 3 + * delay?: int|Param, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * multiplier?: float|Param, // If greater than 1, delay will grow exponentially for each retry: this delay = (delay * (multiple ^ retries)). // Default: 2 + * max_delay?: int|Param, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * jitter?: float|Param, // Randomness to apply to the delay (between 0 and 1). // Default: 0.1 * }, - * rate_limiter?: scalar|null, // Rate limiter name to use when processing messages. // Default: null + * rate_limiter?: scalar|null|Param, // Rate limiter name to use when processing messages. // Default: null * }>, - * failure_transport?: scalar|null, // Transport name to send failed messages to (after all retries have failed). // Default: null - * stop_worker_on_signals?: list, - * default_bus?: scalar|null, // Default: null + * failure_transport?: scalar|null|Param, // Transport name to send failed messages to (after all retries have failed). // Default: null + * stop_worker_on_signals?: list, + * default_bus?: scalar|null|Param, // Default: null * buses?: array, * }>, * }>, * }, * scheduler?: bool|array{ // Scheduler configuration - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * }, - * disallow_search_engine_index?: bool, // Enabled by default when debug is enabled. // Default: true + * disallow_search_engine_index?: bool|Param, // Enabled by default when debug is enabled. // Default: true * http_client?: bool|array{ // HTTP Client configuration - * enabled?: bool, // Default: true - * max_host_connections?: int, // The maximum number of connections to a single host. + * enabled?: bool|Param, // Default: true + * max_host_connections?: int|Param, // The maximum number of connections to a single host. * default_options?: array{ * headers?: array, * vars?: array, - * max_redirects?: int, // The maximum number of redirects to follow. - * http_version?: scalar|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. - * resolve?: array, - * proxy?: scalar|null, // The URL of the proxy to pass requests through or null for automatic detection. - * no_proxy?: scalar|null, // A comma separated list of hosts that do not require a proxy to be reached. - * timeout?: float, // The idle timeout, defaults to the "default_socket_timeout" ini parameter. - * max_duration?: float, // The maximum execution time for the request+response as a whole. - * bindto?: scalar|null, // A network interface name, IP address, a host name or a UNIX socket to bind to. - * verify_peer?: bool, // Indicates if the peer should be verified in a TLS context. - * verify_host?: bool, // Indicates if the host should exist as a certificate common name. - * cafile?: scalar|null, // A certificate authority file. - * capath?: scalar|null, // A directory that contains multiple certificate authority files. - * local_cert?: scalar|null, // A PEM formatted certificate file. - * local_pk?: scalar|null, // A private key file. - * passphrase?: scalar|null, // The passphrase used to encrypt the "local_pk" file. - * ciphers?: scalar|null, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...) + * max_redirects?: int|Param, // The maximum number of redirects to follow. + * http_version?: scalar|null|Param, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. + * resolve?: array, + * proxy?: scalar|null|Param, // The URL of the proxy to pass requests through or null for automatic detection. + * no_proxy?: scalar|null|Param, // A comma separated list of hosts that do not require a proxy to be reached. + * timeout?: float|Param, // The idle timeout, defaults to the "default_socket_timeout" ini parameter. + * max_duration?: float|Param, // The maximum execution time for the request+response as a whole. + * bindto?: scalar|null|Param, // A network interface name, IP address, a host name or a UNIX socket to bind to. + * verify_peer?: bool|Param, // Indicates if the peer should be verified in a TLS context. + * verify_host?: bool|Param, // Indicates if the host should exist as a certificate common name. + * cafile?: scalar|null|Param, // A certificate authority file. + * capath?: scalar|null|Param, // A directory that contains multiple certificate authority files. + * local_cert?: scalar|null|Param, // A PEM formatted certificate file. + * local_pk?: scalar|null|Param, // A private key file. + * passphrase?: scalar|null|Param, // The passphrase used to encrypt the "local_pk" file. + * ciphers?: scalar|null|Param, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...) * peer_fingerprint?: array{ // Associative array: hashing algorithm => hash(es). * sha1?: mixed, * pin-sha256?: mixed, * md5?: mixed, * }, - * crypto_method?: scalar|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. + * crypto_method?: scalar|null|Param, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. * extra?: array, - * rate_limiter?: scalar|null, // Rate limiter name to use for throttling requests. // Default: null + * rate_limiter?: scalar|null|Param, // Rate limiter name to use for throttling requests. // Default: null * caching?: bool|array{ // Caching configuration. - * enabled?: bool, // Default: false - * cache_pool?: string, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" - * shared?: bool, // Indicates whether the cache is shared (public) or private. // Default: true - * max_ttl?: int, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null + * enabled?: bool|Param, // Default: false + * cache_pool?: string|Param, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" + * shared?: bool|Param, // Indicates whether the cache is shared (public) or private. // Default: true + * max_ttl?: int|Param, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null * }, * retry_failed?: bool|array{ - * enabled?: bool, // Default: false - * retry_strategy?: scalar|null, // service id to override the retry strategy. // Default: null + * enabled?: bool|Param, // Default: false + * retry_strategy?: scalar|null|Param, // service id to override the retry strategy. // Default: null * http_codes?: array, + * code?: int|Param, + * methods?: list, * }>, - * max_retries?: int, // Default: 3 - * delay?: int, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 - * multiplier?: float, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2 - * max_delay?: int, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 - * jitter?: float, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 + * max_retries?: int|Param, // Default: 3 + * delay?: int|Param, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * multiplier?: float|Param, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2 + * max_delay?: int|Param, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * jitter?: float|Param, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 * }, * }, - * mock_response_factory?: scalar|null, // The id of the service that should generate mock responses. It should be either an invokable or an iterable. + * mock_response_factory?: scalar|null|Param, // The id of the service that should generate mock responses. It should be either an invokable or an iterable. * scoped_clients?: array, + * scope?: scalar|null|Param, // The regular expression that the request URL must match before adding the other options. When none is provided, the base URI is used instead. + * base_uri?: scalar|null|Param, // The URI to resolve relative URLs, following rules in RFC 3985, section 2. + * auth_basic?: scalar|null|Param, // An HTTP Basic authentication "username:password". + * auth_bearer?: scalar|null|Param, // A token enabling HTTP Bearer authorization. + * auth_ntlm?: scalar|null|Param, // A "username:password" pair to use Microsoft NTLM authentication (requires the cURL extension). + * query?: array, * headers?: array, - * max_redirects?: int, // The maximum number of redirects to follow. - * http_version?: scalar|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. - * resolve?: array, - * proxy?: scalar|null, // The URL of the proxy to pass requests through or null for automatic detection. - * no_proxy?: scalar|null, // A comma separated list of hosts that do not require a proxy to be reached. - * timeout?: float, // The idle timeout, defaults to the "default_socket_timeout" ini parameter. - * max_duration?: float, // The maximum execution time for the request+response as a whole. - * bindto?: scalar|null, // A network interface name, IP address, a host name or a UNIX socket to bind to. - * verify_peer?: bool, // Indicates if the peer should be verified in a TLS context. - * verify_host?: bool, // Indicates if the host should exist as a certificate common name. - * cafile?: scalar|null, // A certificate authority file. - * capath?: scalar|null, // A directory that contains multiple certificate authority files. - * local_cert?: scalar|null, // A PEM formatted certificate file. - * local_pk?: scalar|null, // A private key file. - * passphrase?: scalar|null, // The passphrase used to encrypt the "local_pk" file. - * ciphers?: scalar|null, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...). + * max_redirects?: int|Param, // The maximum number of redirects to follow. + * http_version?: scalar|null|Param, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. + * resolve?: array, + * proxy?: scalar|null|Param, // The URL of the proxy to pass requests through or null for automatic detection. + * no_proxy?: scalar|null|Param, // A comma separated list of hosts that do not require a proxy to be reached. + * timeout?: float|Param, // The idle timeout, defaults to the "default_socket_timeout" ini parameter. + * max_duration?: float|Param, // The maximum execution time for the request+response as a whole. + * bindto?: scalar|null|Param, // A network interface name, IP address, a host name or a UNIX socket to bind to. + * verify_peer?: bool|Param, // Indicates if the peer should be verified in a TLS context. + * verify_host?: bool|Param, // Indicates if the host should exist as a certificate common name. + * cafile?: scalar|null|Param, // A certificate authority file. + * capath?: scalar|null|Param, // A directory that contains multiple certificate authority files. + * local_cert?: scalar|null|Param, // A PEM formatted certificate file. + * local_pk?: scalar|null|Param, // A private key file. + * passphrase?: scalar|null|Param, // The passphrase used to encrypt the "local_pk" file. + * ciphers?: scalar|null|Param, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...). * peer_fingerprint?: array{ // Associative array: hashing algorithm => hash(es). * sha1?: mixed, * pin-sha256?: mixed, * md5?: mixed, * }, - * crypto_method?: scalar|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. + * crypto_method?: scalar|null|Param, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. * extra?: array, - * rate_limiter?: scalar|null, // Rate limiter name to use for throttling requests. // Default: null + * rate_limiter?: scalar|null|Param, // Rate limiter name to use for throttling requests. // Default: null * caching?: bool|array{ // Caching configuration. - * enabled?: bool, // Default: false - * cache_pool?: string, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" - * shared?: bool, // Indicates whether the cache is shared (public) or private. // Default: true - * max_ttl?: int, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null + * enabled?: bool|Param, // Default: false + * cache_pool?: string|Param, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" + * shared?: bool|Param, // Indicates whether the cache is shared (public) or private. // Default: true + * max_ttl?: int|Param, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null * }, * retry_failed?: bool|array{ - * enabled?: bool, // Default: false - * retry_strategy?: scalar|null, // service id to override the retry strategy. // Default: null + * enabled?: bool|Param, // Default: false + * retry_strategy?: scalar|null|Param, // service id to override the retry strategy. // Default: null * http_codes?: array, + * code?: int|Param, + * methods?: list, * }>, - * max_retries?: int, // Default: 3 - * delay?: int, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 - * multiplier?: float, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2 - * max_delay?: int, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 - * jitter?: float, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 + * max_retries?: int|Param, // Default: 3 + * delay?: int|Param, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * multiplier?: float|Param, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2 + * max_delay?: int|Param, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * jitter?: float|Param, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 * }, * }>, * }, * mailer?: bool|array{ // Mailer configuration - * enabled?: bool, // Default: true - * message_bus?: scalar|null, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null - * dsn?: scalar|null, // Default: null - * transports?: array, + * enabled?: bool|Param, // Default: true + * message_bus?: scalar|null|Param, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null + * dsn?: scalar|null|Param, // Default: null + * transports?: array, * envelope?: array{ // Mailer Envelope configuration - * sender?: scalar|null, - * recipients?: list, - * allowed_recipients?: list, + * sender?: scalar|null|Param, + * recipients?: list, + * allowed_recipients?: list, * }, * headers?: array, * dkim_signer?: bool|array{ // DKIM signer configuration - * enabled?: bool, // Default: false - * key?: scalar|null, // Key content, or path to key (in PEM format with the `file://` prefix) // Default: "" - * domain?: scalar|null, // Default: "" - * select?: scalar|null, // Default: "" - * passphrase?: scalar|null, // The private key passphrase // Default: "" + * enabled?: bool|Param, // Default: false + * key?: scalar|null|Param, // Key content, or path to key (in PEM format with the `file://` prefix) // Default: "" + * domain?: scalar|null|Param, // Default: "" + * select?: scalar|null|Param, // Default: "" + * passphrase?: scalar|null|Param, // The private key passphrase // Default: "" * options?: array, * }, * smime_signer?: bool|array{ // S/MIME signer configuration - * enabled?: bool, // Default: false - * key?: scalar|null, // Path to key (in PEM format) // Default: "" - * certificate?: scalar|null, // Path to certificate (in PEM format without the `file://` prefix) // Default: "" - * passphrase?: scalar|null, // The private key passphrase // Default: null - * extra_certificates?: scalar|null, // Default: null - * sign_options?: int, // Default: null + * enabled?: bool|Param, // Default: false + * key?: scalar|null|Param, // Path to key (in PEM format) // Default: "" + * certificate?: scalar|null|Param, // Path to certificate (in PEM format without the `file://` prefix) // Default: "" + * passphrase?: scalar|null|Param, // The private key passphrase // Default: null + * extra_certificates?: scalar|null|Param, // Default: null + * sign_options?: int|Param, // Default: null * }, * smime_encrypter?: bool|array{ // S/MIME encrypter configuration - * enabled?: bool, // Default: false - * repository?: scalar|null, // S/MIME certificate repository service. This service shall implement the `Symfony\Component\Mailer\EventListener\SmimeCertificateRepositoryInterface`. // Default: "" - * cipher?: int, // A set of algorithms used to encrypt the message // Default: null + * enabled?: bool|Param, // Default: false + * repository?: scalar|null|Param, // S/MIME certificate repository service. This service shall implement the `Symfony\Component\Mailer\EventListener\SmimeCertificateRepositoryInterface`. // Default: "" + * cipher?: int|Param, // A set of algorithms used to encrypt the message // Default: null * }, * }, * secrets?: bool|array{ - * enabled?: bool, // Default: true - * vault_directory?: scalar|null, // Default: "%kernel.project_dir%/config/secrets/%kernel.runtime_environment%" - * local_dotenv_file?: scalar|null, // Default: "%kernel.project_dir%/.env.%kernel.runtime_environment%.local" - * decryption_env_var?: scalar|null, // Default: "base64:default::SYMFONY_DECRYPTION_SECRET" + * enabled?: bool|Param, // Default: true + * vault_directory?: scalar|null|Param, // Default: "%kernel.project_dir%/config/secrets/%kernel.runtime_environment%" + * local_dotenv_file?: scalar|null|Param, // Default: "%kernel.project_dir%/.env.%kernel.runtime_environment%.local" + * decryption_env_var?: scalar|null|Param, // Default: "base64:default::SYMFONY_DECRYPTION_SECRET" * }, * notifier?: bool|array{ // Notifier configuration - * enabled?: bool, // Default: false - * message_bus?: scalar|null, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null - * chatter_transports?: array, - * texter_transports?: array, - * notification_on_failed_messages?: bool, // Default: false - * channel_policy?: array>, + * enabled?: bool|Param, // Default: false + * message_bus?: scalar|null|Param, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null + * chatter_transports?: array, + * texter_transports?: array, + * notification_on_failed_messages?: bool|Param, // Default: false + * channel_policy?: array>, * admin_recipients?: list, * }, * rate_limiter?: bool|array{ // Rate limiter configuration - * enabled?: bool, // Default: true + * enabled?: bool|Param, // Default: true * limiters?: array, - * limit?: int, // The maximum allowed hits in a fixed interval or burst. - * interval?: scalar|null, // Configures the fixed interval if "policy" is set to "fixed_window" or "sliding_window". The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). + * lock_factory?: scalar|null|Param, // The service ID of the lock factory used by this limiter (or null to disable locking). // Default: "auto" + * cache_pool?: scalar|null|Param, // The cache pool to use for storing the current limiter state. // Default: "cache.rate_limiter" + * storage_service?: scalar|null|Param, // The service ID of a custom storage implementation, this precedes any configured "cache_pool". // Default: null + * policy: "fixed_window"|"token_bucket"|"sliding_window"|"compound"|"no_limit"|Param, // The algorithm to be used by this limiter. + * limiters?: list, + * limit?: int|Param, // The maximum allowed hits in a fixed interval or burst. + * interval?: scalar|null|Param, // Configures the fixed interval if "policy" is set to "fixed_window" or "sliding_window". The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). * rate?: array{ // Configures the fill rate if "policy" is set to "token_bucket". - * interval?: scalar|null, // Configures the rate interval. The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). - * amount?: int, // Amount of tokens to add each interval. // Default: 1 + * interval?: scalar|null|Param, // Configures the rate interval. The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). + * amount?: int|Param, // Amount of tokens to add each interval. // Default: 1 * }, * }>, * }, * uid?: bool|array{ // Uid configuration - * enabled?: bool, // Default: true - * default_uuid_version?: 7|6|4|1, // Default: 7 - * name_based_uuid_version?: 5|3, // Default: 5 - * name_based_uuid_namespace?: scalar|null, - * time_based_uuid_version?: 7|6|1, // Default: 7 - * time_based_uuid_node?: scalar|null, + * enabled?: bool|Param, // Default: true + * default_uuid_version?: 7|6|4|1|Param, // Default: 7 + * name_based_uuid_version?: 5|3|Param, // Default: 5 + * name_based_uuid_namespace?: scalar|null|Param, + * time_based_uuid_version?: 7|6|1|Param, // Default: 7 + * time_based_uuid_node?: scalar|null|Param, * }, * html_sanitizer?: bool|array{ // HtmlSanitizer configuration - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * sanitizers?: array, - * block_elements?: list, - * drop_elements?: list, + * block_elements?: list, + * drop_elements?: list, * allow_attributes?: array, * drop_attributes?: array, - * force_attributes?: array>, - * force_https_urls?: bool, // Transforms URLs using the HTTP scheme to use the HTTPS scheme instead. // Default: false - * allowed_link_schemes?: list, - * allowed_link_hosts?: list|null, - * allow_relative_links?: bool, // Allows relative URLs to be used in links href attributes. // Default: false - * allowed_media_schemes?: list, - * allowed_media_hosts?: list|null, - * allow_relative_medias?: bool, // Allows relative URLs to be used in media source attributes (img, audio, video, ...). // Default: false - * with_attribute_sanitizers?: list, - * without_attribute_sanitizers?: list, - * max_input_length?: int, // The maximum length allowed for the sanitized input. // Default: 0 + * force_attributes?: array>, + * force_https_urls?: bool|Param, // Transforms URLs using the HTTP scheme to use the HTTPS scheme instead. // Default: false + * allowed_link_schemes?: list, + * allowed_link_hosts?: list|null, + * allow_relative_links?: bool|Param, // Allows relative URLs to be used in links href attributes. // Default: false + * allowed_media_schemes?: list, + * allowed_media_hosts?: list|null, + * allow_relative_medias?: bool|Param, // Allows relative URLs to be used in media source attributes (img, audio, video, ...). // Default: false + * with_attribute_sanitizers?: list, + * without_attribute_sanitizers?: list, + * max_input_length?: int|Param, // The maximum length allowed for the sanitized input. // Default: 0 * }>, * }, * webhook?: bool|array{ // Webhook configuration - * enabled?: bool, // Default: false - * message_bus?: scalar|null, // The message bus to use. // Default: "messenger.default_bus" + * enabled?: bool|Param, // Default: false + * message_bus?: scalar|null|Param, // The message bus to use. // Default: "messenger.default_bus" * routing?: array, * }, * remote-event?: bool|array{ // RemoteEvent configuration - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * }, * json_streamer?: bool|array{ // JSON streamer configuration - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * }, * } * @psalm-type DoctrineConfig = array{ * dbal?: array{ - * default_connection?: scalar|null, + * default_connection?: scalar|null|Param, * types?: array, - * driver_schemes?: array, + * driver_schemes?: array, * connections?: array, - * mapping_types?: array, - * default_table_options?: array, - * schema_manager_factory?: scalar|null, // Default: "doctrine.dbal.default_schema_manager_factory" - * result_cache?: scalar|null, + * mapping_types?: array, + * default_table_options?: array, + * schema_manager_factory?: scalar|null|Param, // Default: "doctrine.dbal.default_schema_manager_factory" + * result_cache?: scalar|null|Param, * slaves?: array, * replicas?: array, * }>, * }, * orm?: array{ - * default_entity_manager?: scalar|null, - * auto_generate_proxy_classes?: scalar|null, // Auto generate mode possible values are: "NEVER", "ALWAYS", "FILE_NOT_EXISTS", "EVAL", "FILE_NOT_EXISTS_OR_CHANGED", this option is ignored when the "enable_native_lazy_objects" option is true // Default: false - * enable_lazy_ghost_objects?: bool, // Enables the new implementation of proxies based on lazy ghosts instead of using the legacy implementation // Default: true - * enable_native_lazy_objects?: bool, // Enables the new native implementation of PHP lazy objects instead of generated proxies // Default: false - * proxy_dir?: scalar|null, // Configures the path where generated proxy classes are saved when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true // Default: "%kernel.build_dir%/doctrine/orm/Proxies" - * proxy_namespace?: scalar|null, // Defines the root namespace for generated proxy classes when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true // Default: "Proxies" + * default_entity_manager?: scalar|null|Param, + * auto_generate_proxy_classes?: scalar|null|Param, // Auto generate mode possible values are: "NEVER", "ALWAYS", "FILE_NOT_EXISTS", "EVAL", "FILE_NOT_EXISTS_OR_CHANGED", this option is ignored when the "enable_native_lazy_objects" option is true // Default: false + * enable_lazy_ghost_objects?: bool|Param, // Enables the new implementation of proxies based on lazy ghosts instead of using the legacy implementation // Default: true + * enable_native_lazy_objects?: bool|Param, // Enables the new native implementation of PHP lazy objects instead of generated proxies // Default: false + * proxy_dir?: scalar|null|Param, // Configures the path where generated proxy classes are saved when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true // Default: "%kernel.build_dir%/doctrine/orm/Proxies" + * proxy_namespace?: scalar|null|Param, // Defines the root namespace for generated proxy classes when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true // Default: "Proxies" * controller_resolver?: bool|array{ - * enabled?: bool, // Default: true - * auto_mapping?: bool|null, // Set to false to disable using route placeholders as lookup criteria when the primary key doesn't match the argument name // Default: null - * evict_cache?: bool, // Set to true to fetch the entity from the database instead of using the cache, if any // Default: false + * enabled?: bool|Param, // Default: true + * auto_mapping?: bool|null|Param, // Set to false to disable using route placeholders as lookup criteria when the primary key doesn't match the argument name // Default: null + * evict_cache?: bool|Param, // Set to true to fetch the entity from the database instead of using the cache, if any // Default: false * }, * entity_managers?: array, * }>, * }>, * }, - * connection?: scalar|null, - * class_metadata_factory_name?: scalar|null, // Default: "Doctrine\\ORM\\Mapping\\ClassMetadataFactory" - * default_repository_class?: scalar|null, // Default: "Doctrine\\ORM\\EntityRepository" - * auto_mapping?: scalar|null, // Default: false - * naming_strategy?: scalar|null, // Default: "doctrine.orm.naming_strategy.default" - * quote_strategy?: scalar|null, // Default: "doctrine.orm.quote_strategy.default" - * typed_field_mapper?: scalar|null, // Default: "doctrine.orm.typed_field_mapper.default" - * entity_listener_resolver?: scalar|null, // Default: null - * fetch_mode_subselect_batch_size?: scalar|null, - * repository_factory?: scalar|null, // Default: "doctrine.orm.container_repository_factory" - * schema_ignore_classes?: list, - * report_fields_where_declared?: bool, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.16 and will be mandatory in ORM 3.0. See https://github.com/doctrine/orm/pull/10455. // Default: true - * validate_xml_mapping?: bool, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.14. See https://github.com/doctrine/orm/pull/6728. // Default: false + * connection?: scalar|null|Param, + * class_metadata_factory_name?: scalar|null|Param, // Default: "Doctrine\\ORM\\Mapping\\ClassMetadataFactory" + * default_repository_class?: scalar|null|Param, // Default: "Doctrine\\ORM\\EntityRepository" + * auto_mapping?: scalar|null|Param, // Default: false + * naming_strategy?: scalar|null|Param, // Default: "doctrine.orm.naming_strategy.default" + * quote_strategy?: scalar|null|Param, // Default: "doctrine.orm.quote_strategy.default" + * typed_field_mapper?: scalar|null|Param, // Default: "doctrine.orm.typed_field_mapper.default" + * entity_listener_resolver?: scalar|null|Param, // Default: null + * fetch_mode_subselect_batch_size?: scalar|null|Param, + * repository_factory?: scalar|null|Param, // Default: "doctrine.orm.container_repository_factory" + * schema_ignore_classes?: list, + * report_fields_where_declared?: bool|Param, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.16 and will be mandatory in ORM 3.0. See https://github.com/doctrine/orm/pull/10455. // Default: true + * validate_xml_mapping?: bool|Param, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.14. See https://github.com/doctrine/orm/pull/6728. // Default: false * second_level_cache?: array{ * region_cache_driver?: string|array{ - * type?: scalar|null, // Default: null - * id?: scalar|null, - * pool?: scalar|null, + * type?: scalar|null|Param, // Default: null + * id?: scalar|null|Param, + * pool?: scalar|null|Param, * }, - * region_lock_lifetime?: scalar|null, // Default: 60 - * log_enabled?: bool, // Default: true - * region_lifetime?: scalar|null, // Default: 3600 - * enabled?: bool, // Default: true - * factory?: scalar|null, + * region_lock_lifetime?: scalar|null|Param, // Default: 60 + * log_enabled?: bool|Param, // Default: true + * region_lifetime?: scalar|null|Param, // Default: 3600 + * enabled?: bool|Param, // Default: true + * factory?: scalar|null|Param, * regions?: array, * loggers?: array, * }, - * hydrators?: array, + * hydrators?: array, * mappings?: array, * dql?: array{ - * string_functions?: array, - * numeric_functions?: array, - * datetime_functions?: array, + * string_functions?: array, + * numeric_functions?: array, + * datetime_functions?: array, * }, * filters?: array, * }>, - * identity_generation_preferences?: array, + * identity_generation_preferences?: array, * }>, - * resolve_target_entities?: array, + * resolve_target_entities?: array, * }, * } * @psalm-type DoctrineMigrationsConfig = array{ - * enable_service_migrations?: bool, // Whether to enable fetching migrations from the service container. // Default: false - * migrations_paths?: array, - * services?: array, - * factories?: array, + * enable_service_migrations?: bool|Param, // Whether to enable fetching migrations from the service container. // Default: false + * migrations_paths?: array, + * services?: array, + * factories?: array, * storage?: array{ // Storage to use for migration status metadata. * table_storage?: array{ // The default metadata storage, implemented as a table in the database. - * table_name?: scalar|null, // Default: null - * version_column_name?: scalar|null, // Default: null - * version_column_length?: scalar|null, // Default: null - * executed_at_column_name?: scalar|null, // Default: null - * execution_time_column_name?: scalar|null, // Default: null + * table_name?: scalar|null|Param, // Default: null + * version_column_name?: scalar|null|Param, // Default: null + * version_column_length?: scalar|null|Param, // Default: null + * executed_at_column_name?: scalar|null|Param, // Default: null + * execution_time_column_name?: scalar|null|Param, // Default: null * }, * }, - * migrations?: list, - * connection?: scalar|null, // Connection name to use for the migrations database. // Default: null - * em?: scalar|null, // Entity manager name to use for the migrations database (available when doctrine/orm is installed). // Default: null - * all_or_nothing?: scalar|null, // Run all migrations in a transaction. // Default: false - * check_database_platform?: scalar|null, // Adds an extra check in the generated migrations to allow execution only on the same platform as they were initially generated on. // Default: true - * custom_template?: scalar|null, // Custom template path for generated migration classes. // Default: null - * organize_migrations?: scalar|null, // Organize migrations mode. Possible values are: "BY_YEAR", "BY_YEAR_AND_MONTH", false // Default: false - * enable_profiler?: bool, // Whether or not to enable the profiler collector to calculate and visualize migration status. This adds some queries overhead. // Default: false - * transactional?: bool, // Whether or not to wrap migrations in a single transaction. // Default: true + * migrations?: list, + * connection?: scalar|null|Param, // Connection name to use for the migrations database. // Default: null + * em?: scalar|null|Param, // Entity manager name to use for the migrations database (available when doctrine/orm is installed). // Default: null + * all_or_nothing?: scalar|null|Param, // Run all migrations in a transaction. // Default: false + * check_database_platform?: scalar|null|Param, // Adds an extra check in the generated migrations to allow execution only on the same platform as they were initially generated on. // Default: true + * custom_template?: scalar|null|Param, // Custom template path for generated migration classes. // Default: null + * organize_migrations?: scalar|null|Param, // Organize migrations mode. Possible values are: "BY_YEAR", "BY_YEAR_AND_MONTH", false // Default: false + * enable_profiler?: bool|Param, // Whether or not to enable the profiler collector to calculate and visualize migration status. This adds some queries overhead. // Default: false + * transactional?: bool|Param, // Whether or not to wrap migrations in a single transaction. // Default: true * } * @psalm-type SecurityConfig = array{ - * access_denied_url?: scalar|null, // Default: null - * session_fixation_strategy?: "none"|"migrate"|"invalidate", // Default: "migrate" - * hide_user_not_found?: bool, // Deprecated: The "hide_user_not_found" option is deprecated and will be removed in 8.0. Use the "expose_security_errors" option instead. - * expose_security_errors?: \Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::None|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::AccountStatus|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::All, // Default: "none" - * erase_credentials?: bool, // Default: true + * access_denied_url?: scalar|null|Param, // Default: null + * session_fixation_strategy?: "none"|"migrate"|"invalidate"|Param, // Default: "migrate" + * hide_user_not_found?: bool|Param, // Deprecated: The "hide_user_not_found" option is deprecated and will be removed in 8.0. Use the "expose_security_errors" option instead. + * expose_security_errors?: \Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::None|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::AccountStatus|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::All|Param, // Default: "none" + * erase_credentials?: bool|Param, // Default: true * access_decision_manager?: array{ - * strategy?: "affirmative"|"consensus"|"unanimous"|"priority", - * service?: scalar|null, - * strategy_service?: scalar|null, - * allow_if_all_abstain?: bool, // Default: false - * allow_if_equal_granted_denied?: bool, // Default: true + * strategy?: "affirmative"|"consensus"|"unanimous"|"priority"|Param, + * service?: scalar|null|Param, + * strategy_service?: scalar|null|Param, + * allow_if_all_abstain?: bool|Param, // Default: false + * allow_if_equal_granted_denied?: bool|Param, // Default: true * }, * password_hashers?: array, - * hash_algorithm?: scalar|null, // Name of hashing algorithm for PBKDF2 (i.e. sha256, sha512, etc..) See hash_algos() for a list of supported algorithms. // Default: "sha512" - * key_length?: scalar|null, // Default: 40 - * ignore_case?: bool, // Default: false - * encode_as_base64?: bool, // Default: true - * iterations?: scalar|null, // Default: 5000 - * cost?: int, // Default: null - * memory_cost?: scalar|null, // Default: null - * time_cost?: scalar|null, // Default: null - * id?: scalar|null, + * algorithm?: scalar|null|Param, + * migrate_from?: list, + * hash_algorithm?: scalar|null|Param, // Name of hashing algorithm for PBKDF2 (i.e. sha256, sha512, etc..) See hash_algos() for a list of supported algorithms. // Default: "sha512" + * key_length?: scalar|null|Param, // Default: 40 + * ignore_case?: bool|Param, // Default: false + * encode_as_base64?: bool|Param, // Default: true + * iterations?: scalar|null|Param, // Default: 5000 + * cost?: int|Param, // Default: null + * memory_cost?: scalar|null|Param, // Default: null + * time_cost?: scalar|null|Param, // Default: null + * id?: scalar|null|Param, * }>, * providers?: array, + * providers?: list, * }, * entity?: array{ - * class: scalar|null, // The full entity class name of your user class. - * property?: scalar|null, // Default: null - * manager_name?: scalar|null, // Default: null + * class: scalar|null|Param, // The full entity class name of your user class. + * property?: scalar|null|Param, // Default: null + * manager_name?: scalar|null|Param, // Default: null * }, * memory?: array{ * users?: array, + * password?: scalar|null|Param, // Default: null + * roles?: list, * }>, * }, * ldap?: array{ - * service: scalar|null, - * base_dn: scalar|null, - * search_dn?: scalar|null, // Default: null - * search_password?: scalar|null, // Default: null - * extra_fields?: list, - * default_roles?: list, - * role_fetcher?: scalar|null, // Default: null - * uid_key?: scalar|null, // Default: "sAMAccountName" - * filter?: scalar|null, // Default: "({uid_key}={user_identifier})" - * password_attribute?: scalar|null, // Default: null + * service: scalar|null|Param, + * base_dn: scalar|null|Param, + * search_dn?: scalar|null|Param, // Default: null + * search_password?: scalar|null|Param, // Default: null + * extra_fields?: list, + * default_roles?: list, + * role_fetcher?: scalar|null|Param, // Default: null + * uid_key?: scalar|null|Param, // Default: "sAMAccountName" + * filter?: scalar|null|Param, // Default: "({uid_key}={user_identifier})" + * password_attribute?: scalar|null|Param, // Default: null * }, * saml?: array{ - * user_class: scalar|null, - * default_roles?: list, + * user_class: scalar|null|Param, + * default_roles?: list, * }, * }>, * firewalls: array, - * security?: bool, // Default: true - * user_checker?: scalar|null, // The UserChecker to use when authenticating users in this firewall. // Default: "security.user_checker" - * request_matcher?: scalar|null, - * access_denied_url?: scalar|null, - * access_denied_handler?: scalar|null, - * entry_point?: scalar|null, // An enabled authenticator name or a service id that implements "Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface". - * provider?: scalar|null, - * stateless?: bool, // Default: false - * lazy?: bool, // Default: false - * context?: scalar|null, + * pattern?: scalar|null|Param, + * host?: scalar|null|Param, + * methods?: list, + * security?: bool|Param, // Default: true + * user_checker?: scalar|null|Param, // The UserChecker to use when authenticating users in this firewall. // Default: "security.user_checker" + * request_matcher?: scalar|null|Param, + * access_denied_url?: scalar|null|Param, + * access_denied_handler?: scalar|null|Param, + * entry_point?: scalar|null|Param, // An enabled authenticator name or a service id that implements "Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface". + * provider?: scalar|null|Param, + * stateless?: bool|Param, // Default: false + * lazy?: bool|Param, // Default: false + * context?: scalar|null|Param, * logout?: array{ - * enable_csrf?: bool|null, // Default: null - * csrf_token_id?: scalar|null, // Default: "logout" - * csrf_parameter?: scalar|null, // Default: "_csrf_token" - * csrf_token_manager?: scalar|null, - * path?: scalar|null, // Default: "/logout" - * target?: scalar|null, // Default: "/" - * invalidate_session?: bool, // Default: true - * clear_site_data?: list<"*"|"cache"|"cookies"|"storage"|"executionContexts">, + * enable_csrf?: bool|null|Param, // Default: null + * csrf_token_id?: scalar|null|Param, // Default: "logout" + * csrf_parameter?: scalar|null|Param, // Default: "_csrf_token" + * csrf_token_manager?: scalar|null|Param, + * path?: scalar|null|Param, // Default: "/logout" + * target?: scalar|null|Param, // Default: "/" + * invalidate_session?: bool|Param, // Default: true + * clear_site_data?: list<"*"|"cache"|"cookies"|"storage"|"executionContexts"|Param>, * delete_cookies?: array, * }, * switch_user?: array{ - * provider?: scalar|null, - * parameter?: scalar|null, // Default: "_switch_user" - * role?: scalar|null, // Default: "ROLE_ALLOWED_TO_SWITCH" - * target_route?: scalar|null, // Default: null + * provider?: scalar|null|Param, + * parameter?: scalar|null|Param, // Default: "_switch_user" + * role?: scalar|null|Param, // Default: "ROLE_ALLOWED_TO_SWITCH" + * target_route?: scalar|null|Param, // Default: null * }, - * required_badges?: list, - * custom_authenticators?: list, + * required_badges?: list, + * custom_authenticators?: list, * login_throttling?: array{ - * limiter?: scalar|null, // A service id implementing "Symfony\Component\HttpFoundation\RateLimiter\RequestRateLimiterInterface". - * max_attempts?: int, // Default: 5 - * interval?: scalar|null, // Default: "1 minute" - * lock_factory?: scalar|null, // The service ID of the lock factory used by the login rate limiter (or null to disable locking). // Default: null - * cache_pool?: string, // The cache pool to use for storing the limiter state // Default: "cache.rate_limiter" - * storage_service?: string, // The service ID of a custom storage implementation, this precedes any configured "cache_pool" // Default: null + * limiter?: scalar|null|Param, // A service id implementing "Symfony\Component\HttpFoundation\RateLimiter\RequestRateLimiterInterface". + * max_attempts?: int|Param, // Default: 5 + * interval?: scalar|null|Param, // Default: "1 minute" + * lock_factory?: scalar|null|Param, // The service ID of the lock factory used by the login rate limiter (or null to disable locking). // Default: null + * cache_pool?: string|Param, // The cache pool to use for storing the limiter state // Default: "cache.rate_limiter" + * storage_service?: string|Param, // The service ID of a custom storage implementation, this precedes any configured "cache_pool" // Default: null * }, * two_factor?: array{ - * check_path?: scalar|null, // Default: "/2fa_check" - * post_only?: bool, // Default: true - * auth_form_path?: scalar|null, // Default: "/2fa" - * always_use_default_target_path?: bool, // Default: false - * default_target_path?: scalar|null, // Default: "/" - * success_handler?: scalar|null, // Default: null - * failure_handler?: scalar|null, // Default: null - * authentication_required_handler?: scalar|null, // Default: null - * auth_code_parameter_name?: scalar|null, // Default: "_auth_code" - * trusted_parameter_name?: scalar|null, // Default: "_trusted" - * remember_me_sets_trusted?: scalar|null, // Default: false - * multi_factor?: bool, // Default: false - * prepare_on_login?: bool, // Default: false - * prepare_on_access_denied?: bool, // Default: false - * enable_csrf?: scalar|null, // Default: false - * csrf_parameter?: scalar|null, // Default: "_csrf_token" - * csrf_token_id?: scalar|null, // Default: "two_factor" - * csrf_header?: scalar|null, // Default: null - * csrf_token_manager?: scalar|null, // Default: "scheb_two_factor.csrf_token_manager" - * provider?: scalar|null, // Default: null + * check_path?: scalar|null|Param, // Default: "/2fa_check" + * post_only?: bool|Param, // Default: true + * auth_form_path?: scalar|null|Param, // Default: "/2fa" + * always_use_default_target_path?: bool|Param, // Default: false + * default_target_path?: scalar|null|Param, // Default: "/" + * success_handler?: scalar|null|Param, // Default: null + * failure_handler?: scalar|null|Param, // Default: null + * authentication_required_handler?: scalar|null|Param, // Default: null + * auth_code_parameter_name?: scalar|null|Param, // Default: "_auth_code" + * trusted_parameter_name?: scalar|null|Param, // Default: "_trusted" + * remember_me_sets_trusted?: scalar|null|Param, // Default: false + * multi_factor?: bool|Param, // Default: false + * prepare_on_login?: bool|Param, // Default: false + * prepare_on_access_denied?: bool|Param, // Default: false + * enable_csrf?: scalar|null|Param, // Default: false + * csrf_parameter?: scalar|null|Param, // Default: "_csrf_token" + * csrf_token_id?: scalar|null|Param, // Default: "two_factor" + * csrf_header?: scalar|null|Param, // Default: null + * csrf_token_manager?: scalar|null|Param, // Default: "scheb_two_factor.csrf_token_manager" + * provider?: scalar|null|Param, // Default: null * }, * webauthn?: array{ - * user_provider?: scalar|null, // Default: null - * options_storage?: scalar|null, // Deprecated: The child node "options_storage" at path "security.firewalls..webauthn.options_storage" is deprecated. Please use the root option "options_storage" instead. // Default: null - * success_handler?: scalar|null, // Default: "Webauthn\\Bundle\\Security\\Handler\\DefaultSuccessHandler" - * failure_handler?: scalar|null, // Default: "Webauthn\\Bundle\\Security\\Handler\\DefaultFailureHandler" - * secured_rp_ids?: array, + * user_provider?: scalar|null|Param, // Default: null + * options_storage?: scalar|null|Param, // Deprecated: The child node "options_storage" at path "security.firewalls..webauthn.options_storage" is deprecated. Please use the root option "options_storage" instead. // Default: null + * success_handler?: scalar|null|Param, // Default: "Webauthn\\Bundle\\Security\\Handler\\DefaultSuccessHandler" + * failure_handler?: scalar|null|Param, // Default: "Webauthn\\Bundle\\Security\\Handler\\DefaultFailureHandler" + * secured_rp_ids?: array, * authentication?: bool|array{ - * enabled?: bool, // Default: true - * profile?: scalar|null, // Default: "default" - * options_builder?: scalar|null, // Default: null + * enabled?: bool|Param, // Default: true + * profile?: scalar|null|Param, // Default: "default" + * options_builder?: scalar|null|Param, // Default: null * routes?: array{ - * host?: scalar|null, // Default: null - * options_method?: scalar|null, // Default: "POST" - * options_path?: scalar|null, // Default: "/login/options" - * result_method?: scalar|null, // Default: "POST" - * result_path?: scalar|null, // Default: "/login" + * host?: scalar|null|Param, // Default: null + * options_method?: scalar|null|Param, // Default: "POST" + * options_path?: scalar|null|Param, // Default: "/login/options" + * result_method?: scalar|null|Param, // Default: "POST" + * result_path?: scalar|null|Param, // Default: "/login" * }, - * options_handler?: scalar|null, // Default: "Webauthn\\Bundle\\Security\\Handler\\DefaultRequestOptionsHandler" + * options_handler?: scalar|null|Param, // Default: "Webauthn\\Bundle\\Security\\Handler\\DefaultRequestOptionsHandler" * }, * registration?: bool|array{ - * enabled?: bool, // Default: false - * profile?: scalar|null, // Default: "default" - * options_builder?: scalar|null, // Default: null + * enabled?: bool|Param, // Default: false + * profile?: scalar|null|Param, // Default: "default" + * options_builder?: scalar|null|Param, // Default: null * routes?: array{ - * host?: scalar|null, // Default: null - * options_method?: scalar|null, // Default: "POST" - * options_path?: scalar|null, // Default: "/register/options" - * result_method?: scalar|null, // Default: "POST" - * result_path?: scalar|null, // Default: "/register" + * host?: scalar|null|Param, // Default: null + * options_method?: scalar|null|Param, // Default: "POST" + * options_path?: scalar|null|Param, // Default: "/register/options" + * result_method?: scalar|null|Param, // Default: "POST" + * result_path?: scalar|null|Param, // Default: "/register" * }, - * options_handler?: scalar|null, // Default: "Webauthn\\Bundle\\Security\\Handler\\DefaultCreationOptionsHandler" + * options_handler?: scalar|null|Param, // Default: "Webauthn\\Bundle\\Security\\Handler\\DefaultCreationOptionsHandler" * }, * }, * x509?: array{ - * provider?: scalar|null, - * user?: scalar|null, // Default: "SSL_CLIENT_S_DN_Email" - * credentials?: scalar|null, // Default: "SSL_CLIENT_S_DN" - * user_identifier?: scalar|null, // Default: "emailAddress" + * provider?: scalar|null|Param, + * user?: scalar|null|Param, // Default: "SSL_CLIENT_S_DN_Email" + * credentials?: scalar|null|Param, // Default: "SSL_CLIENT_S_DN" + * user_identifier?: scalar|null|Param, // Default: "emailAddress" * }, * remote_user?: array{ - * provider?: scalar|null, - * user?: scalar|null, // Default: "REMOTE_USER" + * provider?: scalar|null|Param, + * user?: scalar|null|Param, // Default: "REMOTE_USER" * }, * saml?: array{ - * provider?: scalar|null, - * remember_me?: bool, // Default: true - * success_handler?: scalar|null, // Default: "Nbgrp\\OneloginSamlBundle\\Security\\Http\\Authentication\\SamlAuthenticationSuccessHandler" - * failure_handler?: scalar|null, - * check_path?: scalar|null, // Default: "/login_check" - * use_forward?: bool, // Default: false - * login_path?: scalar|null, // Default: "/login" - * identifier_attribute?: scalar|null, // Default: null - * use_attribute_friendly_name?: bool, // Default: false - * user_factory?: scalar|null, // Default: null - * token_factory?: scalar|null, // Default: null - * persist_user?: bool, // Default: false - * always_use_default_target_path?: bool, // Default: false - * default_target_path?: scalar|null, // Default: "/" - * target_path_parameter?: scalar|null, // Default: "_target_path" - * use_referer?: bool, // Default: false - * failure_path?: scalar|null, // Default: null - * failure_forward?: bool, // Default: false - * failure_path_parameter?: scalar|null, // Default: "_failure_path" + * provider?: scalar|null|Param, + * remember_me?: bool|Param, // Default: true + * success_handler?: scalar|null|Param, // Default: "Nbgrp\\OneloginSamlBundle\\Security\\Http\\Authentication\\SamlAuthenticationSuccessHandler" + * failure_handler?: scalar|null|Param, + * check_path?: scalar|null|Param, // Default: "/login_check" + * use_forward?: bool|Param, // Default: false + * login_path?: scalar|null|Param, // Default: "/login" + * identifier_attribute?: scalar|null|Param, // Default: null + * use_attribute_friendly_name?: bool|Param, // Default: false + * user_factory?: scalar|null|Param, // Default: null + * token_factory?: scalar|null|Param, // Default: null + * persist_user?: bool|Param, // Default: false + * always_use_default_target_path?: bool|Param, // Default: false + * default_target_path?: scalar|null|Param, // Default: "/" + * target_path_parameter?: scalar|null|Param, // Default: "_target_path" + * use_referer?: bool|Param, // Default: false + * failure_path?: scalar|null|Param, // Default: null + * failure_forward?: bool|Param, // Default: false + * failure_path_parameter?: scalar|null|Param, // Default: "_failure_path" * }, * login_link?: array{ - * check_route: scalar|null, // Route that will validate the login link - e.g. "app_login_link_verify". - * check_post_only?: scalar|null, // If true, only HTTP POST requests to "check_route" will be handled by the authenticator. // Default: false - * signature_properties: list, - * lifetime?: int, // The lifetime of the login link in seconds. // Default: 600 - * max_uses?: int, // Max number of times a login link can be used - null means unlimited within lifetime. // Default: null - * used_link_cache?: scalar|null, // Cache service id used to expired links of max_uses is set. - * success_handler?: scalar|null, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface. - * failure_handler?: scalar|null, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface. - * provider?: scalar|null, // The user provider to load users from. - * secret?: scalar|null, // Default: "%kernel.secret%" - * always_use_default_target_path?: bool, // Default: false - * default_target_path?: scalar|null, // Default: "/" - * login_path?: scalar|null, // Default: "/login" - * target_path_parameter?: scalar|null, // Default: "_target_path" - * use_referer?: bool, // Default: false - * failure_path?: scalar|null, // Default: null - * failure_forward?: bool, // Default: false - * failure_path_parameter?: scalar|null, // Default: "_failure_path" + * check_route: scalar|null|Param, // Route that will validate the login link - e.g. "app_login_link_verify". + * check_post_only?: scalar|null|Param, // If true, only HTTP POST requests to "check_route" will be handled by the authenticator. // Default: false + * signature_properties: list, + * lifetime?: int|Param, // The lifetime of the login link in seconds. // Default: 600 + * max_uses?: int|Param, // Max number of times a login link can be used - null means unlimited within lifetime. // Default: null + * used_link_cache?: scalar|null|Param, // Cache service id used to expired links of max_uses is set. + * success_handler?: scalar|null|Param, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface. + * failure_handler?: scalar|null|Param, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface. + * provider?: scalar|null|Param, // The user provider to load users from. + * secret?: scalar|null|Param, // Default: "%kernel.secret%" + * always_use_default_target_path?: bool|Param, // Default: false + * default_target_path?: scalar|null|Param, // Default: "/" + * login_path?: scalar|null|Param, // Default: "/login" + * target_path_parameter?: scalar|null|Param, // Default: "_target_path" + * use_referer?: bool|Param, // Default: false + * failure_path?: scalar|null|Param, // Default: null + * failure_forward?: bool|Param, // Default: false + * failure_path_parameter?: scalar|null|Param, // Default: "_failure_path" * }, * form_login?: array{ - * provider?: scalar|null, - * remember_me?: bool, // Default: true - * success_handler?: scalar|null, - * failure_handler?: scalar|null, - * check_path?: scalar|null, // Default: "/login_check" - * use_forward?: bool, // Default: false - * login_path?: scalar|null, // Default: "/login" - * username_parameter?: scalar|null, // Default: "_username" - * password_parameter?: scalar|null, // Default: "_password" - * csrf_parameter?: scalar|null, // Default: "_csrf_token" - * csrf_token_id?: scalar|null, // Default: "authenticate" - * enable_csrf?: bool, // Default: false - * post_only?: bool, // Default: true - * form_only?: bool, // Default: false - * always_use_default_target_path?: bool, // Default: false - * default_target_path?: scalar|null, // Default: "/" - * target_path_parameter?: scalar|null, // Default: "_target_path" - * use_referer?: bool, // Default: false - * failure_path?: scalar|null, // Default: null - * failure_forward?: bool, // Default: false - * failure_path_parameter?: scalar|null, // Default: "_failure_path" + * provider?: scalar|null|Param, + * remember_me?: bool|Param, // Default: true + * success_handler?: scalar|null|Param, + * failure_handler?: scalar|null|Param, + * check_path?: scalar|null|Param, // Default: "/login_check" + * use_forward?: bool|Param, // Default: false + * login_path?: scalar|null|Param, // Default: "/login" + * username_parameter?: scalar|null|Param, // Default: "_username" + * password_parameter?: scalar|null|Param, // Default: "_password" + * csrf_parameter?: scalar|null|Param, // Default: "_csrf_token" + * csrf_token_id?: scalar|null|Param, // Default: "authenticate" + * enable_csrf?: bool|Param, // Default: false + * post_only?: bool|Param, // Default: true + * form_only?: bool|Param, // Default: false + * always_use_default_target_path?: bool|Param, // Default: false + * default_target_path?: scalar|null|Param, // Default: "/" + * target_path_parameter?: scalar|null|Param, // Default: "_target_path" + * use_referer?: bool|Param, // Default: false + * failure_path?: scalar|null|Param, // Default: null + * failure_forward?: bool|Param, // Default: false + * failure_path_parameter?: scalar|null|Param, // Default: "_failure_path" * }, * form_login_ldap?: array{ - * provider?: scalar|null, - * remember_me?: bool, // Default: true - * success_handler?: scalar|null, - * failure_handler?: scalar|null, - * check_path?: scalar|null, // Default: "/login_check" - * use_forward?: bool, // Default: false - * login_path?: scalar|null, // Default: "/login" - * username_parameter?: scalar|null, // Default: "_username" - * password_parameter?: scalar|null, // Default: "_password" - * csrf_parameter?: scalar|null, // Default: "_csrf_token" - * csrf_token_id?: scalar|null, // Default: "authenticate" - * enable_csrf?: bool, // Default: false - * post_only?: bool, // Default: true - * form_only?: bool, // Default: false - * always_use_default_target_path?: bool, // Default: false - * default_target_path?: scalar|null, // Default: "/" - * target_path_parameter?: scalar|null, // Default: "_target_path" - * use_referer?: bool, // Default: false - * failure_path?: scalar|null, // Default: null - * failure_forward?: bool, // Default: false - * failure_path_parameter?: scalar|null, // Default: "_failure_path" - * service?: scalar|null, // Default: "ldap" - * dn_string?: scalar|null, // Default: "{user_identifier}" - * query_string?: scalar|null, - * search_dn?: scalar|null, // Default: "" - * search_password?: scalar|null, // Default: "" + * provider?: scalar|null|Param, + * remember_me?: bool|Param, // Default: true + * success_handler?: scalar|null|Param, + * failure_handler?: scalar|null|Param, + * check_path?: scalar|null|Param, // Default: "/login_check" + * use_forward?: bool|Param, // Default: false + * login_path?: scalar|null|Param, // Default: "/login" + * username_parameter?: scalar|null|Param, // Default: "_username" + * password_parameter?: scalar|null|Param, // Default: "_password" + * csrf_parameter?: scalar|null|Param, // Default: "_csrf_token" + * csrf_token_id?: scalar|null|Param, // Default: "authenticate" + * enable_csrf?: bool|Param, // Default: false + * post_only?: bool|Param, // Default: true + * form_only?: bool|Param, // Default: false + * always_use_default_target_path?: bool|Param, // Default: false + * default_target_path?: scalar|null|Param, // Default: "/" + * target_path_parameter?: scalar|null|Param, // Default: "_target_path" + * use_referer?: bool|Param, // Default: false + * failure_path?: scalar|null|Param, // Default: null + * failure_forward?: bool|Param, // Default: false + * failure_path_parameter?: scalar|null|Param, // Default: "_failure_path" + * service?: scalar|null|Param, // Default: "ldap" + * dn_string?: scalar|null|Param, // Default: "{user_identifier}" + * query_string?: scalar|null|Param, + * search_dn?: scalar|null|Param, // Default: "" + * search_password?: scalar|null|Param, // Default: "" * }, * json_login?: array{ - * provider?: scalar|null, - * remember_me?: bool, // Default: true - * success_handler?: scalar|null, - * failure_handler?: scalar|null, - * check_path?: scalar|null, // Default: "/login_check" - * use_forward?: bool, // Default: false - * login_path?: scalar|null, // Default: "/login" - * username_path?: scalar|null, // Default: "username" - * password_path?: scalar|null, // Default: "password" + * provider?: scalar|null|Param, + * remember_me?: bool|Param, // Default: true + * success_handler?: scalar|null|Param, + * failure_handler?: scalar|null|Param, + * check_path?: scalar|null|Param, // Default: "/login_check" + * use_forward?: bool|Param, // Default: false + * login_path?: scalar|null|Param, // Default: "/login" + * username_path?: scalar|null|Param, // Default: "username" + * password_path?: scalar|null|Param, // Default: "password" * }, * json_login_ldap?: array{ - * provider?: scalar|null, - * remember_me?: bool, // Default: true - * success_handler?: scalar|null, - * failure_handler?: scalar|null, - * check_path?: scalar|null, // Default: "/login_check" - * use_forward?: bool, // Default: false - * login_path?: scalar|null, // Default: "/login" - * username_path?: scalar|null, // Default: "username" - * password_path?: scalar|null, // Default: "password" - * service?: scalar|null, // Default: "ldap" - * dn_string?: scalar|null, // Default: "{user_identifier}" - * query_string?: scalar|null, - * search_dn?: scalar|null, // Default: "" - * search_password?: scalar|null, // Default: "" + * provider?: scalar|null|Param, + * remember_me?: bool|Param, // Default: true + * success_handler?: scalar|null|Param, + * failure_handler?: scalar|null|Param, + * check_path?: scalar|null|Param, // Default: "/login_check" + * use_forward?: bool|Param, // Default: false + * login_path?: scalar|null|Param, // Default: "/login" + * username_path?: scalar|null|Param, // Default: "username" + * password_path?: scalar|null|Param, // Default: "password" + * service?: scalar|null|Param, // Default: "ldap" + * dn_string?: scalar|null|Param, // Default: "{user_identifier}" + * query_string?: scalar|null|Param, + * search_dn?: scalar|null|Param, // Default: "" + * search_password?: scalar|null|Param, // Default: "" * }, * access_token?: array{ - * provider?: scalar|null, - * remember_me?: bool, // Default: true - * success_handler?: scalar|null, - * failure_handler?: scalar|null, - * realm?: scalar|null, // Default: null - * token_extractors?: list, + * provider?: scalar|null|Param, + * remember_me?: bool|Param, // Default: true + * success_handler?: scalar|null|Param, + * failure_handler?: scalar|null|Param, + * realm?: scalar|null|Param, // Default: null + * token_extractors?: list, * token_handler: string|array{ - * id?: scalar|null, + * id?: scalar|null|Param, * oidc_user_info?: string|array{ - * base_uri: scalar|null, // Base URI of the userinfo endpoint on the OIDC server, or the OIDC server URI to use the discovery (require "discovery" to be configured). + * base_uri: scalar|null|Param, // Base URI of the userinfo endpoint on the OIDC server, or the OIDC server URI to use the discovery (require "discovery" to be configured). * discovery?: array{ // Enable the OIDC discovery. * cache?: array{ - * id: scalar|null, // Cache service id to use to cache the OIDC discovery configuration. + * id: scalar|null|Param, // Cache service id to use to cache the OIDC discovery configuration. * }, * }, - * claim?: scalar|null, // Claim which contains the user identifier (e.g. sub, email, etc.). // Default: "sub" - * client?: scalar|null, // HttpClient service id to use to call the OIDC server. + * claim?: scalar|null|Param, // Claim which contains the user identifier (e.g. sub, email, etc.). // Default: "sub" + * client?: scalar|null|Param, // HttpClient service id to use to call the OIDC server. * }, * oidc?: array{ * discovery?: array{ // Enable the OIDC discovery. - * base_uri: list, + * base_uri: list, * cache?: array{ - * id: scalar|null, // Cache service id to use to cache the OIDC discovery configuration. + * id: scalar|null|Param, // Cache service id to use to cache the OIDC discovery configuration. * }, * }, - * claim?: scalar|null, // Claim which contains the user identifier (e.g.: sub, email..). // Default: "sub" - * audience: scalar|null, // Audience set in the token, for validation purpose. - * issuers: list, + * claim?: scalar|null|Param, // Claim which contains the user identifier (e.g.: sub, email..). // Default: "sub" + * audience: scalar|null|Param, // Audience set in the token, for validation purpose. + * issuers: list, * algorithm?: array, - * algorithms: list, - * key?: scalar|null, // Deprecated: The "key" option is deprecated and will be removed in 8.0. Use the "keyset" option instead. // JSON-encoded JWK used to sign the token (must contain a "kty" key). - * keyset?: scalar|null, // JSON-encoded JWKSet used to sign the token (must contain a list of valid public keys). + * algorithms: list, + * key?: scalar|null|Param, // Deprecated: The "key" option is deprecated and will be removed in 8.0. Use the "keyset" option instead. // JSON-encoded JWK used to sign the token (must contain a "kty" key). + * keyset?: scalar|null|Param, // JSON-encoded JWKSet used to sign the token (must contain a list of valid public keys). * encryption?: bool|array{ - * enabled?: bool, // Default: false - * enforce?: bool, // When enabled, the token shall be encrypted. // Default: false - * algorithms: list, - * keyset: scalar|null, // JSON-encoded JWKSet used to decrypt the token (must contain a list of valid private keys). + * enabled?: bool|Param, // Default: false + * enforce?: bool|Param, // When enabled, the token shall be encrypted. // Default: false + * algorithms: list, + * keyset: scalar|null|Param, // JSON-encoded JWKSet used to decrypt the token (must contain a list of valid private keys). * }, * }, * cas?: array{ - * validation_url: scalar|null, // CAS server validation URL - * prefix?: scalar|null, // CAS prefix // Default: "cas" - * http_client?: scalar|null, // HTTP Client service // Default: null + * validation_url: scalar|null|Param, // CAS server validation URL + * prefix?: scalar|null|Param, // CAS prefix // Default: "cas" + * http_client?: scalar|null|Param, // HTTP Client service // Default: null * }, - * oauth2?: scalar|null, + * oauth2?: scalar|null|Param, * }, * }, * http_basic?: array{ - * provider?: scalar|null, - * realm?: scalar|null, // Default: "Secured Area" + * provider?: scalar|null|Param, + * realm?: scalar|null|Param, // Default: "Secured Area" * }, * http_basic_ldap?: array{ - * provider?: scalar|null, - * realm?: scalar|null, // Default: "Secured Area" - * service?: scalar|null, // Default: "ldap" - * dn_string?: scalar|null, // Default: "{user_identifier}" - * query_string?: scalar|null, - * search_dn?: scalar|null, // Default: "" - * search_password?: scalar|null, // Default: "" + * provider?: scalar|null|Param, + * realm?: scalar|null|Param, // Default: "Secured Area" + * service?: scalar|null|Param, // Default: "ldap" + * dn_string?: scalar|null|Param, // Default: "{user_identifier}" + * query_string?: scalar|null|Param, + * search_dn?: scalar|null|Param, // Default: "" + * search_password?: scalar|null|Param, // Default: "" * }, * remember_me?: array{ - * secret?: scalar|null, // Default: "%kernel.secret%" - * service?: scalar|null, - * user_providers?: list, - * catch_exceptions?: bool, // Default: true - * signature_properties?: list, + * secret?: scalar|null|Param, // Default: "%kernel.secret%" + * service?: scalar|null|Param, + * user_providers?: list, + * catch_exceptions?: bool|Param, // Default: true + * signature_properties?: list, * token_provider?: string|array{ - * service?: scalar|null, // The service ID of a custom remember-me token provider. + * service?: scalar|null|Param, // The service ID of a custom remember-me token provider. * doctrine?: bool|array{ - * enabled?: bool, // Default: false - * connection?: scalar|null, // Default: null + * enabled?: bool|Param, // Default: false + * connection?: scalar|null|Param, // Default: null * }, * }, - * token_verifier?: scalar|null, // The service ID of a custom rememberme token verifier. - * name?: scalar|null, // Default: "REMEMBERME" - * lifetime?: int, // Default: 31536000 - * path?: scalar|null, // Default: "/" - * domain?: scalar|null, // Default: null - * secure?: true|false|"auto", // Default: null - * httponly?: bool, // Default: true - * samesite?: null|"lax"|"strict"|"none", // Default: "lax" - * always_remember_me?: bool, // Default: false - * remember_me_parameter?: scalar|null, // Default: "_remember_me" + * token_verifier?: scalar|null|Param, // The service ID of a custom rememberme token verifier. + * name?: scalar|null|Param, // Default: "REMEMBERME" + * lifetime?: int|Param, // Default: 31536000 + * path?: scalar|null|Param, // Default: "/" + * domain?: scalar|null|Param, // Default: null + * secure?: true|false|"auto"|Param, // Default: null + * httponly?: bool|Param, // Default: true + * samesite?: null|"lax"|"strict"|"none"|Param, // Default: "lax" + * always_remember_me?: bool|Param, // Default: false + * remember_me_parameter?: scalar|null|Param, // Default: "_remember_me" * }, * }>, * access_control?: list, - * attributes?: array, - * route?: scalar|null, // Default: null - * methods?: list, - * allow_if?: scalar|null, // Default: null - * roles?: list, + * request_matcher?: scalar|null|Param, // Default: null + * requires_channel?: scalar|null|Param, // Default: null + * path?: scalar|null|Param, // Use the urldecoded format. // Default: null + * host?: scalar|null|Param, // Default: null + * port?: int|Param, // Default: null + * ips?: list, + * attributes?: array, + * route?: scalar|null|Param, // Default: null + * methods?: list, + * allow_if?: scalar|null|Param, // Default: null + * roles?: list, * }>, - * role_hierarchy?: array>, + * role_hierarchy?: array>, * } * @psalm-type TwigConfig = array{ - * form_themes?: list, + * form_themes?: list, * globals?: array, - * autoescape_service?: scalar|null, // Default: null - * autoescape_service_method?: scalar|null, // Default: null - * base_template_class?: scalar|null, // Deprecated: The child node "base_template_class" at path "twig.base_template_class" is deprecated. - * cache?: scalar|null, // Default: true - * charset?: scalar|null, // Default: "%kernel.charset%" - * debug?: bool, // Default: "%kernel.debug%" - * strict_variables?: bool, // Default: "%kernel.debug%" - * auto_reload?: scalar|null, - * optimizations?: int, - * default_path?: scalar|null, // The default path used to load templates. // Default: "%kernel.project_dir%/templates" - * file_name_pattern?: list, + * autoescape_service?: scalar|null|Param, // Default: null + * autoescape_service_method?: scalar|null|Param, // Default: null + * base_template_class?: scalar|null|Param, // Deprecated: The child node "base_template_class" at path "twig.base_template_class" is deprecated. + * cache?: scalar|null|Param, // Default: true + * charset?: scalar|null|Param, // Default: "%kernel.charset%" + * debug?: bool|Param, // Default: "%kernel.debug%" + * strict_variables?: bool|Param, // Default: "%kernel.debug%" + * auto_reload?: scalar|null|Param, + * optimizations?: int|Param, + * default_path?: scalar|null|Param, // The default path used to load templates. // Default: "%kernel.project_dir%/templates" + * file_name_pattern?: list, * paths?: array, * date?: array{ // The default format options used by the date filter. - * format?: scalar|null, // Default: "F j, Y H:i" - * interval_format?: scalar|null, // Default: "%d days" - * timezone?: scalar|null, // The timezone used when formatting dates, when set to null, the timezone returned by date_default_timezone_get() is used. // Default: null + * format?: scalar|null|Param, // Default: "F j, Y H:i" + * interval_format?: scalar|null|Param, // Default: "%d days" + * timezone?: scalar|null|Param, // The timezone used when formatting dates, when set to null, the timezone returned by date_default_timezone_get() is used. // Default: null * }, * number_format?: array{ // The default format options for the number_format filter. - * decimals?: int, // Default: 0 - * decimal_point?: scalar|null, // Default: "." - * thousands_separator?: scalar|null, // Default: "," + * decimals?: int|Param, // Default: 0 + * decimal_point?: scalar|null|Param, // Default: "." + * thousands_separator?: scalar|null|Param, // Default: "," * }, * mailer?: array{ - * html_to_text_converter?: scalar|null, // A service implementing the "Symfony\Component\Mime\HtmlToTextConverter\HtmlToTextConverterInterface". // Default: null + * html_to_text_converter?: scalar|null|Param, // A service implementing the "Symfony\Component\Mime\HtmlToTextConverter\HtmlToTextConverterInterface". // Default: null * }, * } * @psalm-type WebProfilerConfig = array{ * toolbar?: bool|array{ // Profiler toolbar configuration - * enabled?: bool, // Default: false - * ajax_replace?: bool, // Replace toolbar on AJAX requests // Default: false + * enabled?: bool|Param, // Default: false + * ajax_replace?: bool|Param, // Replace toolbar on AJAX requests // Default: false * }, - * intercept_redirects?: bool, // Default: false - * excluded_ajax_paths?: scalar|null, // Default: "^/((index|app(_[\\w]+)?)\\.php/)?_wdt" + * intercept_redirects?: bool|Param, // Default: false + * excluded_ajax_paths?: scalar|null|Param, // Default: "^/((index|app(_[\\w]+)?)\\.php/)?_wdt" * } * @psalm-type MonologConfig = array{ - * use_microseconds?: scalar|null, // Default: true - * channels?: list, + * use_microseconds?: scalar|null|Param, // Default: true + * channels?: list, * handlers?: array, + * path?: scalar|null|Param, // Default: "%kernel.logs_dir%/%kernel.environment%.log" + * file_permission?: scalar|null|Param, // Default: null + * use_locking?: bool|Param, // Default: false + * filename_format?: scalar|null|Param, // Default: "{filename}-{date}" + * date_format?: scalar|null|Param, // Default: "Y-m-d" + * ident?: scalar|null|Param, // Default: false + * logopts?: scalar|null|Param, // Default: 1 + * facility?: scalar|null|Param, // Default: "user" + * max_files?: scalar|null|Param, // Default: 0 + * action_level?: scalar|null|Param, // Default: "WARNING" + * activation_strategy?: scalar|null|Param, // Default: null + * stop_buffering?: bool|Param, // Default: true + * passthru_level?: scalar|null|Param, // Default: null + * excluded_404s?: list, * excluded_http_codes?: list, + * code?: scalar|null|Param, + * urls?: list, * }>, - * accepted_levels?: list, - * min_level?: scalar|null, // Default: "DEBUG" - * max_level?: scalar|null, // Default: "EMERGENCY" - * buffer_size?: scalar|null, // Default: 0 - * flush_on_overflow?: bool, // Default: false - * handler?: scalar|null, - * url?: scalar|null, - * exchange?: scalar|null, - * exchange_name?: scalar|null, // Default: "log" - * room?: scalar|null, - * message_format?: scalar|null, // Default: "text" - * api_version?: scalar|null, // Default: null - * channel?: scalar|null, // Default: null - * bot_name?: scalar|null, // Default: "Monolog" - * use_attachment?: scalar|null, // Default: true - * use_short_attachment?: scalar|null, // Default: false - * include_extra?: scalar|null, // Default: false - * icon_emoji?: scalar|null, // Default: null - * webhook_url?: scalar|null, - * exclude_fields?: list, - * team?: scalar|null, - * notify?: scalar|null, // Default: false - * nickname?: scalar|null, // Default: "Monolog" - * token?: scalar|null, - * region?: scalar|null, - * source?: scalar|null, - * use_ssl?: bool, // Default: true + * accepted_levels?: list, + * min_level?: scalar|null|Param, // Default: "DEBUG" + * max_level?: scalar|null|Param, // Default: "EMERGENCY" + * buffer_size?: scalar|null|Param, // Default: 0 + * flush_on_overflow?: bool|Param, // Default: false + * handler?: scalar|null|Param, + * url?: scalar|null|Param, + * exchange?: scalar|null|Param, + * exchange_name?: scalar|null|Param, // Default: "log" + * room?: scalar|null|Param, + * message_format?: scalar|null|Param, // Default: "text" + * api_version?: scalar|null|Param, // Default: null + * channel?: scalar|null|Param, // Default: null + * bot_name?: scalar|null|Param, // Default: "Monolog" + * use_attachment?: scalar|null|Param, // Default: true + * use_short_attachment?: scalar|null|Param, // Default: false + * include_extra?: scalar|null|Param, // Default: false + * icon_emoji?: scalar|null|Param, // Default: null + * webhook_url?: scalar|null|Param, + * exclude_fields?: list, + * team?: scalar|null|Param, + * notify?: scalar|null|Param, // Default: false + * nickname?: scalar|null|Param, // Default: "Monolog" + * token?: scalar|null|Param, + * region?: scalar|null|Param, + * source?: scalar|null|Param, + * use_ssl?: bool|Param, // Default: true * user?: mixed, - * title?: scalar|null, // Default: null - * host?: scalar|null, // Default: null - * port?: scalar|null, // Default: 514 - * config?: list, - * members?: list, - * connection_string?: scalar|null, - * timeout?: scalar|null, - * time?: scalar|null, // Default: 60 - * deduplication_level?: scalar|null, // Default: 400 - * store?: scalar|null, // Default: null - * connection_timeout?: scalar|null, - * persistent?: bool, - * dsn?: scalar|null, - * hub_id?: scalar|null, // Default: null - * client_id?: scalar|null, // Default: null - * auto_log_stacks?: scalar|null, // Default: false - * release?: scalar|null, // Default: null - * environment?: scalar|null, // Default: null - * message_type?: scalar|null, // Default: 0 - * parse_mode?: scalar|null, // Default: null - * disable_webpage_preview?: bool|null, // Default: null - * disable_notification?: bool|null, // Default: null - * split_long_messages?: bool, // Default: false - * delay_between_messages?: bool, // Default: false - * topic?: int, // Default: null - * factor?: int, // Default: 1 - * tags?: list, + * title?: scalar|null|Param, // Default: null + * host?: scalar|null|Param, // Default: null + * port?: scalar|null|Param, // Default: 514 + * config?: list, + * members?: list, + * connection_string?: scalar|null|Param, + * timeout?: scalar|null|Param, + * time?: scalar|null|Param, // Default: 60 + * deduplication_level?: scalar|null|Param, // Default: 400 + * store?: scalar|null|Param, // Default: null + * connection_timeout?: scalar|null|Param, + * persistent?: bool|Param, + * dsn?: scalar|null|Param, + * hub_id?: scalar|null|Param, // Default: null + * client_id?: scalar|null|Param, // Default: null + * auto_log_stacks?: scalar|null|Param, // Default: false + * release?: scalar|null|Param, // Default: null + * environment?: scalar|null|Param, // Default: null + * message_type?: scalar|null|Param, // Default: 0 + * parse_mode?: scalar|null|Param, // Default: null + * disable_webpage_preview?: bool|null|Param, // Default: null + * disable_notification?: bool|null|Param, // Default: null + * split_long_messages?: bool|Param, // Default: false + * delay_between_messages?: bool|Param, // Default: false + * topic?: int|Param, // Default: null + * factor?: int|Param, // Default: 1 + * tags?: list, * console_formater_options?: mixed, // Deprecated: "monolog.handlers..console_formater_options.console_formater_options" is deprecated, use "monolog.handlers..console_formater_options.console_formatter_options" instead. * console_formatter_options?: mixed, // Default: [] - * formatter?: scalar|null, - * nested?: bool, // Default: false + * formatter?: scalar|null|Param, + * nested?: bool|Param, // Default: false * publisher?: string|array{ - * id?: scalar|null, - * hostname?: scalar|null, - * port?: scalar|null, // Default: 12201 - * chunk_size?: scalar|null, // Default: 1420 - * encoder?: "json"|"compressed_json", + * id?: scalar|null|Param, + * hostname?: scalar|null|Param, + * port?: scalar|null|Param, // Default: 12201 + * chunk_size?: scalar|null|Param, // Default: 1420 + * encoder?: "json"|"compressed_json"|Param, * }, * mongo?: string|array{ - * id?: scalar|null, - * host?: scalar|null, - * port?: scalar|null, // Default: 27017 - * user?: scalar|null, - * pass?: scalar|null, - * database?: scalar|null, // Default: "monolog" - * collection?: scalar|null, // Default: "logs" + * id?: scalar|null|Param, + * host?: scalar|null|Param, + * port?: scalar|null|Param, // Default: 27017 + * user?: scalar|null|Param, + * pass?: scalar|null|Param, + * database?: scalar|null|Param, // Default: "monolog" + * collection?: scalar|null|Param, // Default: "logs" * }, * mongodb?: string|array{ - * id?: scalar|null, // ID of a MongoDB\Client service - * uri?: scalar|null, - * username?: scalar|null, - * password?: scalar|null, - * database?: scalar|null, // Default: "monolog" - * collection?: scalar|null, // Default: "logs" + * id?: scalar|null|Param, // ID of a MongoDB\Client service + * uri?: scalar|null|Param, + * username?: scalar|null|Param, + * password?: scalar|null|Param, + * database?: scalar|null|Param, // Default: "monolog" + * collection?: scalar|null|Param, // Default: "logs" * }, * elasticsearch?: string|array{ - * id?: scalar|null, - * hosts?: list, - * host?: scalar|null, - * port?: scalar|null, // Default: 9200 - * transport?: scalar|null, // Default: "Http" - * user?: scalar|null, // Default: null - * password?: scalar|null, // Default: null + * id?: scalar|null|Param, + * hosts?: list, + * host?: scalar|null|Param, + * port?: scalar|null|Param, // Default: 9200 + * transport?: scalar|null|Param, // Default: "Http" + * user?: scalar|null|Param, // Default: null + * password?: scalar|null|Param, // Default: null * }, - * index?: scalar|null, // Default: "monolog" - * document_type?: scalar|null, // Default: "logs" - * ignore_error?: scalar|null, // Default: false + * index?: scalar|null|Param, // Default: "monolog" + * document_type?: scalar|null|Param, // Default: "logs" + * ignore_error?: scalar|null|Param, // Default: false * redis?: string|array{ - * id?: scalar|null, - * host?: scalar|null, - * password?: scalar|null, // Default: null - * port?: scalar|null, // Default: 6379 - * database?: scalar|null, // Default: 0 - * key_name?: scalar|null, // Default: "monolog_redis" + * id?: scalar|null|Param, + * host?: scalar|null|Param, + * password?: scalar|null|Param, // Default: null + * port?: scalar|null|Param, // Default: 6379 + * database?: scalar|null|Param, // Default: 0 + * key_name?: scalar|null|Param, // Default: "monolog_redis" * }, * predis?: string|array{ - * id?: scalar|null, - * host?: scalar|null, + * id?: scalar|null|Param, + * host?: scalar|null|Param, * }, - * from_email?: scalar|null, - * to_email?: list, - * subject?: scalar|null, - * content_type?: scalar|null, // Default: null - * headers?: list, - * mailer?: scalar|null, // Default: null + * from_email?: scalar|null|Param, + * to_email?: list, + * subject?: scalar|null|Param, + * content_type?: scalar|null|Param, // Default: null + * headers?: list, + * mailer?: scalar|null|Param, // Default: null * email_prototype?: string|array{ - * id: scalar|null, - * method?: scalar|null, // Default: null + * id: scalar|null|Param, + * method?: scalar|null|Param, // Default: null * }, - * lazy?: bool, // Default: true + * lazy?: bool|Param, // Default: true * verbosity_levels?: array{ - * VERBOSITY_QUIET?: scalar|null, // Default: "ERROR" - * VERBOSITY_NORMAL?: scalar|null, // Default: "WARNING" - * VERBOSITY_VERBOSE?: scalar|null, // Default: "NOTICE" - * VERBOSITY_VERY_VERBOSE?: scalar|null, // Default: "INFO" - * VERBOSITY_DEBUG?: scalar|null, // Default: "DEBUG" + * VERBOSITY_QUIET?: scalar|null|Param, // Default: "ERROR" + * VERBOSITY_NORMAL?: scalar|null|Param, // Default: "WARNING" + * VERBOSITY_VERBOSE?: scalar|null|Param, // Default: "NOTICE" + * VERBOSITY_VERY_VERBOSE?: scalar|null|Param, // Default: "INFO" + * VERBOSITY_DEBUG?: scalar|null|Param, // Default: "DEBUG" * }, * channels?: string|array{ - * type?: scalar|null, - * elements?: list, + * type?: scalar|null|Param, + * elements?: list, * }, * }>, * } * @psalm-type DebugConfig = array{ - * max_items?: int, // Max number of displayed items past the first level, -1 means no limit. // Default: 2500 - * min_depth?: int, // Minimum tree depth to clone all the items, 1 is default. // Default: 1 - * max_string_length?: int, // Max length of displayed strings, -1 means no limit. // Default: -1 - * dump_destination?: scalar|null, // A stream URL where dumps should be written to. // Default: null - * theme?: "dark"|"light", // Changes the color of the dump() output when rendered directly on the templating. "dark" (default) or "light". // Default: "dark" + * max_items?: int|Param, // Max number of displayed items past the first level, -1 means no limit. // Default: 2500 + * min_depth?: int|Param, // Minimum tree depth to clone all the items, 1 is default. // Default: 1 + * max_string_length?: int|Param, // Max length of displayed strings, -1 means no limit. // Default: -1 + * dump_destination?: scalar|null|Param, // A stream URL where dumps should be written to. // Default: null + * theme?: "dark"|"light"|Param, // Changes the color of the dump() output when rendered directly on the templating. "dark" (default) or "light". // Default: "dark" * } * @psalm-type MakerConfig = array{ - * root_namespace?: scalar|null, // Default: "App" - * generate_final_classes?: bool, // Default: true - * generate_final_entities?: bool, // Default: false + * root_namespace?: scalar|null|Param, // Default: "App" + * generate_final_classes?: bool|Param, // Default: true + * generate_final_entities?: bool|Param, // Default: false * } * @psalm-type WebpackEncoreConfig = array{ - * output_path: scalar|null, // The path where Encore is building the assets - i.e. Encore.setOutputPath() - * crossorigin?: false|"anonymous"|"use-credentials", // crossorigin value when Encore.enableIntegrityHashes() is used, can be false (default), anonymous or use-credentials // Default: false - * preload?: bool, // preload all rendered script and link tags automatically via the http2 Link header. // Default: false - * cache?: bool, // Enable caching of the entry point file(s) // Default: false - * strict_mode?: bool, // Throw an exception if the entrypoints.json file is missing or an entry is missing from the data // Default: true - * builds?: array, - * script_attributes?: array, - * link_attributes?: array, + * output_path: scalar|null|Param, // The path where Encore is building the assets - i.e. Encore.setOutputPath() + * crossorigin?: false|"anonymous"|"use-credentials"|Param, // crossorigin value when Encore.enableIntegrityHashes() is used, can be false (default), anonymous or use-credentials // Default: false + * preload?: bool|Param, // preload all rendered script and link tags automatically via the http2 Link header. // Default: false + * cache?: bool|Param, // Enable caching of the entry point file(s) // Default: false + * strict_mode?: bool|Param, // Throw an exception if the entrypoints.json file is missing or an entry is missing from the data // Default: true + * builds?: array, + * script_attributes?: array, + * link_attributes?: array, * } * @psalm-type DatatablesConfig = array{ - * language_from_cdn?: bool, // Load i18n data from DataTables CDN or locally // Default: true - * persist_state?: "none"|"query"|"fragment"|"local"|"session", // Where to persist the current table state automatically // Default: "fragment" - * method?: "GET"|"POST", // Default HTTP method to be used for callbacks // Default: "POST" + * language_from_cdn?: bool|Param, // Load i18n data from DataTables CDN or locally // Default: true + * persist_state?: "none"|"query"|"fragment"|"local"|"session"|Param, // Where to persist the current table state automatically // Default: "fragment" + * method?: "GET"|"POST"|Param, // Default HTTP method to be used for callbacks // Default: "POST" * options?: array, - * renderer?: scalar|null, // Default service used to render templates, built-in TwigRenderer uses global Twig environment // Default: "Omines\\DataTablesBundle\\Twig\\TwigRenderer" - * template?: scalar|null, // Default template to be used for DataTables HTML // Default: "@DataTables/datatable_html.html.twig" + * renderer?: scalar|null|Param, // Default service used to render templates, built-in TwigRenderer uses global Twig environment // Default: "Omines\\DataTablesBundle\\Twig\\TwigRenderer" + * template?: scalar|null|Param, // Default template to be used for DataTables HTML // Default: "@DataTables/datatable_html.html.twig" * template_parameters?: array{ // Default parameters to be passed to the template - * className?: scalar|null, // Default class attribute to apply to the root table elements // Default: "table table-bordered" - * columnFilter?: "thead"|"tfoot"|"both"|null, // If and where to enable the DataTables Filter module // Default: null + * className?: scalar|null|Param, // Default class attribute to apply to the root table elements // Default: "table table-bordered" + * columnFilter?: "thead"|"tfoot"|"both"|null|Param, // If and where to enable the DataTables Filter module // Default: null * ... * }, - * translation_domain?: scalar|null, // Default translation domain to be used // Default: "messages" + * translation_domain?: scalar|null|Param, // Default translation domain to be used // Default: "messages" * } * @psalm-type LiipImagineConfig = array{ * resolvers?: array, - * get_options?: array, - * put_options?: array, - * proxies?: array, + * get_options?: array, + * put_options?: array, + * proxies?: array, * }, * flysystem?: array{ - * filesystem_service: scalar|null, - * cache_prefix?: scalar|null, // Default: "" - * root_url: scalar|null, - * visibility?: "public"|"private"|"noPredefinedVisibility", // Default: "public" + * filesystem_service: scalar|null|Param, + * cache_prefix?: scalar|null|Param, // Default: "" + * root_url: scalar|null|Param, + * visibility?: "public"|"private"|"noPredefinedVisibility"|Param, // Default: "public" * }, * }>, * loaders?: array, - * allow_unresolvable_data_roots?: bool, // Default: false + * locator?: "filesystem"|"filesystem_insecure"|Param, // Using the "filesystem_insecure" locator is not recommended due to a less secure resolver mechanism, but is provided for those using heavily symlinked projects. // Default: "filesystem" + * data_root?: list, + * allow_unresolvable_data_roots?: bool|Param, // Default: false * bundle_resources?: array{ - * enabled?: bool, // Default: false - * access_control_type?: "blacklist"|"whitelist", // Sets the access control method applied to bundle names in "access_control_list" into a blacklist or whitelist. // Default: "blacklist" - * access_control_list?: list, + * enabled?: bool|Param, // Default: false + * access_control_type?: "blacklist"|"whitelist"|Param, // Sets the access control method applied to bundle names in "access_control_list" into a blacklist or whitelist. // Default: "blacklist" + * access_control_list?: list, * }, * }, * flysystem?: array{ - * filesystem_service: scalar|null, + * filesystem_service: scalar|null|Param, * }, * chain?: array{ - * loaders: list, + * loaders: list, * }, * }>, - * driver?: scalar|null, // Default: "gd" - * cache?: scalar|null, // Default: "default" - * cache_base_path?: scalar|null, // Default: "" - * data_loader?: scalar|null, // Default: "default" - * default_image?: scalar|null, // Default: null + * driver?: scalar|null|Param, // Default: "gd" + * cache?: scalar|null|Param, // Default: "default" + * cache_base_path?: scalar|null|Param, // Default: "" + * data_loader?: scalar|null|Param, // Default: "default" + * default_image?: scalar|null|Param, // Default: null * default_filter_set_settings?: array{ - * quality?: scalar|null, // Default: 100 - * jpeg_quality?: scalar|null, // Default: null - * png_compression_level?: scalar|null, // Default: null - * png_compression_filter?: scalar|null, // Default: null - * format?: scalar|null, // Default: null - * animated?: bool, // Default: false - * cache?: scalar|null, // Default: null - * data_loader?: scalar|null, // Default: null - * default_image?: scalar|null, // Default: null + * quality?: scalar|null|Param, // Default: 100 + * jpeg_quality?: scalar|null|Param, // Default: null + * png_compression_level?: scalar|null|Param, // Default: null + * png_compression_filter?: scalar|null|Param, // Default: null + * format?: scalar|null|Param, // Default: null + * animated?: bool|Param, // Default: false + * cache?: scalar|null|Param, // Default: null + * data_loader?: scalar|null|Param, // Default: null + * default_image?: scalar|null|Param, // Default: null * filters?: array>, * post_processors?: array>, * }, * controller?: array{ - * filter_action?: scalar|null, // Default: "Liip\\ImagineBundle\\Controller\\ImagineController::filterAction" - * filter_runtime_action?: scalar|null, // Default: "Liip\\ImagineBundle\\Controller\\ImagineController::filterRuntimeAction" - * redirect_response_code?: int, // Default: 302 + * filter_action?: scalar|null|Param, // Default: "Liip\\ImagineBundle\\Controller\\ImagineController::filterAction" + * filter_runtime_action?: scalar|null|Param, // Default: "Liip\\ImagineBundle\\Controller\\ImagineController::filterRuntimeAction" + * redirect_response_code?: int|Param, // Default: 302 * }, * filter_sets?: array>, * post_processors?: array>, * }>, * twig?: array{ - * mode?: "none"|"lazy"|"legacy", // Twig mode: none/lazy/legacy (default) // Default: "legacy" - * assets_version?: scalar|null, // Default: null + * mode?: "none"|"lazy"|"legacy"|Param, // Twig mode: none/lazy/legacy (default) // Default: "legacy" + * assets_version?: scalar|null|Param, // Default: null * }, - * enqueue?: bool, // Enables integration with enqueue if set true. Allows resolve image caches in background by sending messages to MQ. // Default: false + * enqueue?: bool|Param, // Enables integration with enqueue if set true. Allows resolve image caches in background by sending messages to MQ. // Default: false * messenger?: bool|array{ // Enables integration with symfony/messenger if set true. Warmup image caches in background by sending messages to MQ. - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * }, - * templating?: bool, // Enables integration with symfony/templating component // Default: true + * templating?: bool|Param, // Enables integration with symfony/templating component // Default: true * webp?: array{ - * generate?: bool, // Default: false - * quality?: int, // Default: 100 - * cache?: scalar|null, // Default: null - * data_loader?: scalar|null, // Default: null + * generate?: bool|Param, // Default: false + * quality?: int|Param, // Default: 100 + * cache?: scalar|null|Param, // Default: null + * data_loader?: scalar|null|Param, // Default: null * post_processors?: array>, * }, * } * @psalm-type DamaDoctrineTestConfig = array{ * enable_static_connection?: mixed, // Default: true - * enable_static_meta_data_cache?: bool, // Default: true - * enable_static_query_cache?: bool, // Default: true + * enable_static_meta_data_cache?: bool|Param, // Default: true + * enable_static_query_cache?: bool|Param, // Default: true * connection_keys?: list, * } * @psalm-type TwigExtraConfig = array{ * cache?: bool|array{ - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * }, * html?: bool|array{ - * enabled?: bool, // Default: true + * enabled?: bool|Param, // Default: true * }, * markdown?: bool|array{ - * enabled?: bool, // Default: true + * enabled?: bool|Param, // Default: true * }, * intl?: bool|array{ - * enabled?: bool, // Default: true + * enabled?: bool|Param, // Default: true * }, * cssinliner?: bool|array{ - * enabled?: bool, // Default: true + * enabled?: bool|Param, // Default: true * }, * inky?: bool|array{ - * enabled?: bool, // Default: true + * enabled?: bool|Param, // Default: true * }, * string?: bool|array{ - * enabled?: bool, // Default: true + * enabled?: bool|Param, // Default: true * }, * commonmark?: array{ * renderer?: array{ // Array of options for rendering HTML. - * block_separator?: scalar|null, - * inner_separator?: scalar|null, - * soft_break?: scalar|null, + * block_separator?: scalar|null|Param, + * inner_separator?: scalar|null|Param, + * soft_break?: scalar|null|Param, * }, - * html_input?: "strip"|"allow"|"escape", // How to handle HTML input. - * allow_unsafe_links?: bool, // Remove risky link and image URLs by setting this to false. // Default: true - * max_nesting_level?: int, // The maximum nesting level for blocks. // Default: 9223372036854775807 - * max_delimiters_per_line?: int, // The maximum number of strong/emphasis delimiters per line. // Default: 9223372036854775807 + * html_input?: "strip"|"allow"|"escape"|Param, // How to handle HTML input. + * allow_unsafe_links?: bool|Param, // Remove risky link and image URLs by setting this to false. // Default: true + * max_nesting_level?: int|Param, // The maximum nesting level for blocks. // Default: 9223372036854775807 + * max_delimiters_per_line?: int|Param, // The maximum number of strong/emphasis delimiters per line. // Default: 9223372036854775807 * slug_normalizer?: array{ // Array of options for configuring how URL-safe slugs are created. * instance?: mixed, - * max_length?: int, // Default: 255 + * max_length?: int|Param, // Default: 255 * unique?: mixed, * }, * commonmark?: array{ // Array of options for configuring the CommonMark core extension. - * enable_em?: bool, // Default: true - * enable_strong?: bool, // Default: true - * use_asterisk?: bool, // Default: true - * use_underscore?: bool, // Default: true - * unordered_list_markers?: list, + * enable_em?: bool|Param, // Default: true + * enable_strong?: bool|Param, // Default: true + * use_asterisk?: bool|Param, // Default: true + * use_underscore?: bool|Param, // Default: true + * unordered_list_markers?: list, * }, * ... * }, * } * @psalm-type GregwarCaptchaConfig = array{ - * length?: scalar|null, // Default: 5 - * width?: scalar|null, // Default: 130 - * height?: scalar|null, // Default: 50 - * font?: scalar|null, // Default: "C:\\Users\\mail\\Documents\\PHP\\Part-DB-server\\vendor\\gregwar\\captcha-bundle\\DependencyInjection/../Generator/Font/captcha.ttf" - * keep_value?: scalar|null, // Default: false - * charset?: scalar|null, // Default: "abcdefhjkmnprstuvwxyz23456789" - * as_file?: scalar|null, // Default: false - * as_url?: scalar|null, // Default: false - * reload?: scalar|null, // Default: false - * image_folder?: scalar|null, // Default: "captcha" - * web_path?: scalar|null, // Default: "%kernel.project_dir%/public" - * gc_freq?: scalar|null, // Default: 100 - * expiration?: scalar|null, // Default: 60 - * quality?: scalar|null, // Default: 50 - * invalid_message?: scalar|null, // Default: "Bad code value" - * bypass_code?: scalar|null, // Default: null - * whitelist_key?: scalar|null, // Default: "captcha_whitelist_key" - * humanity?: scalar|null, // Default: 0 - * distortion?: scalar|null, // Default: true - * max_front_lines?: scalar|null, // Default: null - * max_behind_lines?: scalar|null, // Default: null - * interpolation?: scalar|null, // Default: true - * text_color?: list, - * background_color?: list, - * background_images?: list, - * disabled?: scalar|null, // Default: false - * ignore_all_effects?: scalar|null, // Default: false - * session_key?: scalar|null, // Default: "captcha" + * length?: scalar|null|Param, // Default: 5 + * width?: scalar|null|Param, // Default: 130 + * height?: scalar|null|Param, // Default: 50 + * font?: scalar|null|Param, // Default: "C:\\Users\\mail\\Documents\\PHP\\Part-DB-server\\vendor\\gregwar\\captcha-bundle\\DependencyInjection/../Generator/Font/captcha.ttf" + * keep_value?: scalar|null|Param, // Default: false + * charset?: scalar|null|Param, // Default: "abcdefhjkmnprstuvwxyz23456789" + * as_file?: scalar|null|Param, // Default: false + * as_url?: scalar|null|Param, // Default: false + * reload?: scalar|null|Param, // Default: false + * image_folder?: scalar|null|Param, // Default: "captcha" + * web_path?: scalar|null|Param, // Default: "%kernel.project_dir%/public" + * gc_freq?: scalar|null|Param, // Default: 100 + * expiration?: scalar|null|Param, // Default: 60 + * quality?: scalar|null|Param, // Default: 50 + * invalid_message?: scalar|null|Param, // Default: "Bad code value" + * bypass_code?: scalar|null|Param, // Default: null + * whitelist_key?: scalar|null|Param, // Default: "captcha_whitelist_key" + * humanity?: scalar|null|Param, // Default: 0 + * distortion?: scalar|null|Param, // Default: true + * max_front_lines?: scalar|null|Param, // Default: null + * max_behind_lines?: scalar|null|Param, // Default: null + * interpolation?: scalar|null|Param, // Default: true + * text_color?: list, + * background_color?: list, + * background_images?: list, + * disabled?: scalar|null|Param, // Default: false + * ignore_all_effects?: scalar|null|Param, // Default: false + * session_key?: scalar|null|Param, // Default: "captcha" * } * @psalm-type FlorianvSwapConfig = array{ * cache?: array{ - * ttl?: int, // Default: 3600 - * type?: scalar|null, // A cache type or service id // Default: null + * ttl?: int|Param, // Default: 3600 + * type?: scalar|null|Param, // A cache type or service id // Default: null * }, * providers?: array{ * apilayer_fixer?: array{ - * priority?: int, // Default: 0 - * api_key: scalar|null, + * priority?: int|Param, // Default: 0 + * api_key: scalar|null|Param, * }, * apilayer_currency_data?: array{ - * priority?: int, // Default: 0 - * api_key: scalar|null, + * priority?: int|Param, // Default: 0 + * api_key: scalar|null|Param, * }, * apilayer_exchange_rates_data?: array{ - * priority?: int, // Default: 0 - * api_key: scalar|null, + * priority?: int|Param, // Default: 0 + * api_key: scalar|null|Param, * }, * abstract_api?: array{ - * priority?: int, // Default: 0 - * api_key: scalar|null, + * priority?: int|Param, // Default: 0 + * api_key: scalar|null|Param, * }, * fixer?: array{ - * priority?: int, // Default: 0 - * access_key: scalar|null, - * enterprise?: bool, // Default: false + * priority?: int|Param, // Default: 0 + * access_key: scalar|null|Param, + * enterprise?: bool|Param, // Default: false * }, * cryptonator?: array{ - * priority?: int, // Default: 0 + * priority?: int|Param, // Default: 0 * }, * exchange_rates_api?: array{ - * priority?: int, // Default: 0 - * access_key: scalar|null, - * enterprise?: bool, // Default: false + * priority?: int|Param, // Default: 0 + * access_key: scalar|null|Param, + * enterprise?: bool|Param, // Default: false * }, * webservicex?: array{ - * priority?: int, // Default: 0 + * priority?: int|Param, // Default: 0 * }, * central_bank_of_czech_republic?: array{ - * priority?: int, // Default: 0 + * priority?: int|Param, // Default: 0 * }, * central_bank_of_republic_turkey?: array{ - * priority?: int, // Default: 0 + * priority?: int|Param, // Default: 0 * }, * european_central_bank?: array{ - * priority?: int, // Default: 0 + * priority?: int|Param, // Default: 0 * }, * national_bank_of_romania?: array{ - * priority?: int, // Default: 0 + * priority?: int|Param, // Default: 0 * }, * russian_central_bank?: array{ - * priority?: int, // Default: 0 + * priority?: int|Param, // Default: 0 * }, * frankfurter?: array{ - * priority?: int, // Default: 0 + * priority?: int|Param, // Default: 0 * }, * fawazahmed_currency_api?: array{ - * priority?: int, // Default: 0 + * priority?: int|Param, // Default: 0 * }, * bulgarian_national_bank?: array{ - * priority?: int, // Default: 0 + * priority?: int|Param, // Default: 0 * }, * national_bank_of_ukraine?: array{ - * priority?: int, // Default: 0 + * priority?: int|Param, // Default: 0 * }, * currency_data_feed?: array{ - * priority?: int, // Default: 0 - * api_key: scalar|null, + * priority?: int|Param, // Default: 0 + * api_key: scalar|null|Param, * }, * currency_layer?: array{ - * priority?: int, // Default: 0 - * access_key: scalar|null, - * enterprise?: bool, // Default: false + * priority?: int|Param, // Default: 0 + * access_key: scalar|null|Param, + * enterprise?: bool|Param, // Default: false * }, * forge?: array{ - * priority?: int, // Default: 0 - * api_key: scalar|null, + * priority?: int|Param, // Default: 0 + * api_key: scalar|null|Param, * }, * open_exchange_rates?: array{ - * priority?: int, // Default: 0 - * app_id: scalar|null, - * enterprise?: bool, // Default: false + * priority?: int|Param, // Default: 0 + * app_id: scalar|null|Param, + * enterprise?: bool|Param, // Default: false * }, * xignite?: array{ - * priority?: int, // Default: 0 - * token: scalar|null, + * priority?: int|Param, // Default: 0 + * token: scalar|null|Param, * }, * xchangeapi?: array{ - * priority?: int, // Default: 0 - * api_key: scalar|null, + * priority?: int|Param, // Default: 0 + * api_key: scalar|null|Param, * }, * currency_converter?: array{ - * priority?: int, // Default: 0 - * access_key: scalar|null, - * enterprise?: bool, // Default: false + * priority?: int|Param, // Default: 0 + * access_key: scalar|null|Param, + * enterprise?: bool|Param, // Default: false * }, * array?: array{ - * priority?: int, // Default: 0 + * priority?: int|Param, // Default: 0 * latestRates: mixed, * historicalRates?: mixed, * }, @@ -1865,133 +1867,133 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * } * @psalm-type NelmioSecurityConfig = array{ * signed_cookie?: array{ - * names?: list, - * secret?: scalar|null, // Default: "%kernel.secret%" - * hash_algo?: scalar|null, - * legacy_hash_algo?: scalar|null, // Fallback algorithm to allow for frictionless hash algorithm upgrades. Use with caution and as a temporary measure as it allows for downgrade attacks. // Default: null - * separator?: scalar|null, // Default: "." + * names?: list, + * secret?: scalar|null|Param, // Default: "%kernel.secret%" + * hash_algo?: scalar|null|Param, + * legacy_hash_algo?: scalar|null|Param, // Fallback algorithm to allow for frictionless hash algorithm upgrades. Use with caution and as a temporary measure as it allows for downgrade attacks. // Default: null + * separator?: scalar|null|Param, // Default: "." * }, * clickjacking?: array{ - * hosts?: list, + * hosts?: list, * paths?: array, - * content_types?: list, + * content_types?: list, * }, * external_redirects?: array{ - * abort?: bool, // Default: false - * override?: scalar|null, // Default: null - * forward_as?: scalar|null, // Default: null - * log?: bool, // Default: false - * allow_list?: list, + * abort?: bool|Param, // Default: false + * override?: scalar|null|Param, // Default: null + * forward_as?: scalar|null|Param, // Default: null + * log?: bool|Param, // Default: false + * allow_list?: list, * }, * flexible_ssl?: bool|array{ - * enabled?: bool, // Default: false - * cookie_name?: scalar|null, // Default: "auth" - * unsecured_logout?: bool, // Default: false + * enabled?: bool|Param, // Default: false + * cookie_name?: scalar|null|Param, // Default: "auth" + * unsecured_logout?: bool|Param, // Default: false * }, * forced_ssl?: bool|array{ - * enabled?: bool, // Default: false - * hsts_max_age?: scalar|null, // Default: null - * hsts_subdomains?: bool, // Default: false - * hsts_preload?: bool, // Default: false - * allow_list?: list, - * hosts?: list, - * redirect_status_code?: scalar|null, // Default: 302 + * enabled?: bool|Param, // Default: false + * hsts_max_age?: scalar|null|Param, // Default: null + * hsts_subdomains?: bool|Param, // Default: false + * hsts_preload?: bool|Param, // Default: false + * allow_list?: list, + * hosts?: list, + * redirect_status_code?: scalar|null|Param, // Default: 302 * }, * content_type?: array{ - * nosniff?: bool, // Default: false + * nosniff?: bool|Param, // Default: false * }, * xss_protection?: array{ // Deprecated: The "xss_protection" option is deprecated, use Content Security Policy without allowing "unsafe-inline" scripts instead. - * enabled?: bool, // Default: false - * mode_block?: bool, // Default: false - * report_uri?: scalar|null, // Default: null + * enabled?: bool|Param, // Default: false + * mode_block?: bool|Param, // Default: false + * report_uri?: scalar|null|Param, // Default: null * }, * csp?: bool|array{ - * enabled?: bool, // Default: true - * request_matcher?: scalar|null, // Default: null - * hosts?: list, - * content_types?: list, + * enabled?: bool|Param, // Default: true + * request_matcher?: scalar|null|Param, // Default: null + * hosts?: list, + * content_types?: list, * report_endpoint?: array{ - * log_channel?: scalar|null, // Default: null - * log_formatter?: scalar|null, // Default: "nelmio_security.csp_report.log_formatter" - * log_level?: "alert"|"critical"|"debug"|"emergency"|"error"|"info"|"notice"|"warning", // Default: "notice" + * log_channel?: scalar|null|Param, // Default: null + * log_formatter?: scalar|null|Param, // Default: "nelmio_security.csp_report.log_formatter" + * log_level?: "alert"|"critical"|"debug"|"emergency"|"error"|"info"|"notice"|"warning"|Param, // Default: "notice" * filters?: array{ - * domains?: bool, // Default: true - * schemes?: bool, // Default: true - * browser_bugs?: bool, // Default: true - * injected_scripts?: bool, // Default: true + * domains?: bool|Param, // Default: true + * schemes?: bool|Param, // Default: true + * browser_bugs?: bool|Param, // Default: true + * injected_scripts?: bool|Param, // Default: true * }, - * dismiss?: list>, + * dismiss?: list>, * }, - * compat_headers?: bool, // Default: true - * report_logger_service?: scalar|null, // Default: "logger" + * compat_headers?: bool|Param, // Default: true + * report_logger_service?: scalar|null|Param, // Default: "logger" * hash?: array{ - * algorithm?: "sha256"|"sha384"|"sha512", // The algorithm to use for hashes // Default: "sha256" + * algorithm?: "sha256"|"sha384"|"sha512"|Param, // The algorithm to use for hashes // Default: "sha256" * }, * report?: array{ - * level1_fallback?: bool, // Provides CSP Level 1 fallback when using hash or nonce (CSP level 2) by adding 'unsafe-inline' source. See https://www.w3.org/TR/CSP2/#directive-script-src and https://www.w3.org/TR/CSP2/#directive-style-src // Default: true + * level1_fallback?: bool|Param, // Provides CSP Level 1 fallback when using hash or nonce (CSP level 2) by adding 'unsafe-inline' source. See https://www.w3.org/TR/CSP2/#directive-script-src and https://www.w3.org/TR/CSP2/#directive-style-src // Default: true * browser_adaptive?: bool|array{ // Do not send directives that browser do not support - * enabled?: bool, // Default: false - * parser?: scalar|null, // Default: "nelmio_security.ua_parser.ua_php" + * enabled?: bool|Param, // Default: false + * parser?: scalar|null|Param, // Default: "nelmio_security.ua_parser.ua_php" * }, - * default-src?: list, - * base-uri?: list, - * block-all-mixed-content?: bool, // Default: false - * child-src?: list, - * connect-src?: list, - * font-src?: list, - * form-action?: list, - * frame-ancestors?: list, - * frame-src?: list, - * img-src?: list, - * manifest-src?: list, - * media-src?: list, - * object-src?: list, - * plugin-types?: list, - * script-src?: list, - * style-src?: list, - * upgrade-insecure-requests?: bool, // Default: false - * report-uri?: list, - * worker-src?: list, - * prefetch-src?: list, - * report-to?: scalar|null, + * default-src?: list, + * base-uri?: list, + * block-all-mixed-content?: bool|Param, // Default: false + * child-src?: list, + * connect-src?: list, + * font-src?: list, + * form-action?: list, + * frame-ancestors?: list, + * frame-src?: list, + * img-src?: list, + * manifest-src?: list, + * media-src?: list, + * object-src?: list, + * plugin-types?: list, + * script-src?: list, + * style-src?: list, + * upgrade-insecure-requests?: bool|Param, // Default: false + * report-uri?: list, + * worker-src?: list, + * prefetch-src?: list, + * report-to?: scalar|null|Param, * }, * enforce?: array{ - * level1_fallback?: bool, // Provides CSP Level 1 fallback when using hash or nonce (CSP level 2) by adding 'unsafe-inline' source. See https://www.w3.org/TR/CSP2/#directive-script-src and https://www.w3.org/TR/CSP2/#directive-style-src // Default: true + * level1_fallback?: bool|Param, // Provides CSP Level 1 fallback when using hash or nonce (CSP level 2) by adding 'unsafe-inline' source. See https://www.w3.org/TR/CSP2/#directive-script-src and https://www.w3.org/TR/CSP2/#directive-style-src // Default: true * browser_adaptive?: bool|array{ // Do not send directives that browser do not support - * enabled?: bool, // Default: false - * parser?: scalar|null, // Default: "nelmio_security.ua_parser.ua_php" + * enabled?: bool|Param, // Default: false + * parser?: scalar|null|Param, // Default: "nelmio_security.ua_parser.ua_php" * }, - * default-src?: list, - * base-uri?: list, - * block-all-mixed-content?: bool, // Default: false - * child-src?: list, - * connect-src?: list, - * font-src?: list, - * form-action?: list, - * frame-ancestors?: list, - * frame-src?: list, - * img-src?: list, - * manifest-src?: list, - * media-src?: list, - * object-src?: list, - * plugin-types?: list, - * script-src?: list, - * style-src?: list, - * upgrade-insecure-requests?: bool, // Default: false - * report-uri?: list, - * worker-src?: list, - * prefetch-src?: list, - * report-to?: scalar|null, + * default-src?: list, + * base-uri?: list, + * block-all-mixed-content?: bool|Param, // Default: false + * child-src?: list, + * connect-src?: list, + * font-src?: list, + * form-action?: list, + * frame-ancestors?: list, + * frame-src?: list, + * img-src?: list, + * manifest-src?: list, + * media-src?: list, + * object-src?: list, + * plugin-types?: list, + * script-src?: list, + * style-src?: list, + * upgrade-insecure-requests?: bool|Param, // Default: false + * report-uri?: list, + * worker-src?: list, + * prefetch-src?: list, + * report-to?: scalar|null|Param, * }, * }, * referrer_policy?: bool|array{ - * enabled?: bool, // Default: false - * policies?: list, + * enabled?: bool|Param, // Default: false + * policies?: list, * }, * permissions_policy?: bool|array{ - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * policies?: array{ * accelerometer?: mixed, // Default: null * ambient_light_sensor?: mixed, // Default: null @@ -2040,517 +2042,517 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * } * @psalm-type TurboConfig = array{ * broadcast?: bool|array{ - * enabled?: bool, // Default: true - * entity_template_prefixes?: list, + * enabled?: bool|Param, // Default: true + * entity_template_prefixes?: list, * doctrine_orm?: bool|array{ // Enable the Doctrine ORM integration - * enabled?: bool, // Default: true + * enabled?: bool|Param, // Default: true * }, * }, - * default_transport?: scalar|null, // Default: "default" + * default_transport?: scalar|null|Param, // Default: "default" * } * @psalm-type TfaWebauthnConfig = array{ - * enabled?: scalar|null, // Default: false - * timeout?: int, // Default: 60000 - * rpID?: scalar|null, // Default: null - * rpName?: scalar|null, // Default: "Webauthn Application" - * rpIcon?: scalar|null, // Default: null - * template?: scalar|null, // Default: "@TFAWebauthn/Authentication/form.html.twig" - * U2FAppID?: scalar|null, // Default: null + * enabled?: scalar|null|Param, // Default: false + * timeout?: int|Param, // Default: 60000 + * rpID?: scalar|null|Param, // Default: null + * rpName?: scalar|null|Param, // Default: "Webauthn Application" + * rpIcon?: scalar|null|Param, // Default: null + * template?: scalar|null|Param, // Default: "@TFAWebauthn/Authentication/form.html.twig" + * U2FAppID?: scalar|null|Param, // Default: null * } * @psalm-type SchebTwoFactorConfig = array{ - * persister?: scalar|null, // Default: "scheb_two_factor.persister.doctrine" - * model_manager_name?: scalar|null, // Default: null - * security_tokens?: list, - * ip_whitelist?: list, - * ip_whitelist_provider?: scalar|null, // Default: "scheb_two_factor.default_ip_whitelist_provider" - * two_factor_token_factory?: scalar|null, // Default: "scheb_two_factor.default_token_factory" - * two_factor_provider_decider?: scalar|null, // Default: "scheb_two_factor.default_provider_decider" - * two_factor_condition?: scalar|null, // Default: null - * code_reuse_cache?: scalar|null, // Default: null - * code_reuse_cache_duration?: int, // Default: 60 - * code_reuse_default_handler?: scalar|null, // Default: null + * persister?: scalar|null|Param, // Default: "scheb_two_factor.persister.doctrine" + * model_manager_name?: scalar|null|Param, // Default: null + * security_tokens?: list, + * ip_whitelist?: list, + * ip_whitelist_provider?: scalar|null|Param, // Default: "scheb_two_factor.default_ip_whitelist_provider" + * two_factor_token_factory?: scalar|null|Param, // Default: "scheb_two_factor.default_token_factory" + * two_factor_provider_decider?: scalar|null|Param, // Default: "scheb_two_factor.default_provider_decider" + * two_factor_condition?: scalar|null|Param, // Default: null + * code_reuse_cache?: scalar|null|Param, // Default: null + * code_reuse_cache_duration?: int|Param, // Default: 60 + * code_reuse_default_handler?: scalar|null|Param, // Default: null * trusted_device?: bool|array{ - * enabled?: scalar|null, // Default: false - * manager?: scalar|null, // Default: "scheb_two_factor.default_trusted_device_manager" - * lifetime?: int, // Default: 5184000 - * extend_lifetime?: bool, // Default: false - * key?: scalar|null, // Default: null - * cookie_name?: scalar|null, // Default: "trusted_device" - * cookie_secure?: true|false|"auto", // Default: "auto" - * cookie_domain?: scalar|null, // Default: null - * cookie_path?: scalar|null, // Default: "/" - * cookie_same_site?: scalar|null, // Default: "lax" + * enabled?: scalar|null|Param, // Default: false + * manager?: scalar|null|Param, // Default: "scheb_two_factor.default_trusted_device_manager" + * lifetime?: int|Param, // Default: 5184000 + * extend_lifetime?: bool|Param, // Default: false + * key?: scalar|null|Param, // Default: null + * cookie_name?: scalar|null|Param, // Default: "trusted_device" + * cookie_secure?: true|false|"auto"|Param, // Default: "auto" + * cookie_domain?: scalar|null|Param, // Default: null + * cookie_path?: scalar|null|Param, // Default: "/" + * cookie_same_site?: scalar|null|Param, // Default: "lax" * }, * backup_codes?: bool|array{ - * enabled?: scalar|null, // Default: false - * manager?: scalar|null, // Default: "scheb_two_factor.default_backup_code_manager" + * enabled?: scalar|null|Param, // Default: false + * manager?: scalar|null|Param, // Default: "scheb_two_factor.default_backup_code_manager" * }, * google?: bool|array{ - * enabled?: scalar|null, // Default: false - * form_renderer?: scalar|null, // Default: null - * issuer?: scalar|null, // Default: null - * server_name?: scalar|null, // Default: null - * template?: scalar|null, // Default: "@SchebTwoFactor/Authentication/form.html.twig" - * digits?: int, // Default: 6 - * leeway?: int, // Default: 0 + * enabled?: scalar|null|Param, // Default: false + * form_renderer?: scalar|null|Param, // Default: null + * issuer?: scalar|null|Param, // Default: null + * server_name?: scalar|null|Param, // Default: null + * template?: scalar|null|Param, // Default: "@SchebTwoFactor/Authentication/form.html.twig" + * digits?: int|Param, // Default: 6 + * leeway?: int|Param, // Default: 0 * }, * } * @psalm-type WebauthnConfig = array{ - * fake_credential_generator?: scalar|null, // A service that implements the FakeCredentialGenerator to generate fake credentials for preventing username enumeration. // Default: "Webauthn\\SimpleFakeCredentialGenerator" - * clock?: scalar|null, // PSR-20 Clock service. // Default: "webauthn.clock.default" - * options_storage?: scalar|null, // Service responsible of the options/user entity storage during the ceremony // Default: "Webauthn\\Bundle\\Security\\Storage\\SessionStorage" - * event_dispatcher?: scalar|null, // PSR-14 Event Dispatcher service. // Default: "Psr\\EventDispatcher\\EventDispatcherInterface" - * http_client?: scalar|null, // A Symfony HTTP client. // Default: "webauthn.http_client.default" - * logger?: scalar|null, // A PSR-3 logger to receive logs during the processes // Default: "webauthn.logger.default" - * credential_repository?: scalar|null, // This repository is responsible of the credential storage // Default: "Webauthn\\Bundle\\Repository\\DummyPublicKeyCredentialSourceRepository" - * user_repository?: scalar|null, // This repository is responsible of the user storage // Default: "Webauthn\\Bundle\\Repository\\DummyPublicKeyCredentialUserEntityRepository" - * allowed_origins?: array, - * allow_subdomains?: bool, // Default: false - * secured_rp_ids?: array, - * counter_checker?: scalar|null, // This service will check if the counter is valid. By default it throws an exception (recommended). // Default: "Webauthn\\Counter\\ThrowExceptionIfInvalid" - * top_origin_validator?: scalar|null, // For cross origin (e.g. iframe), this service will be in charge of verifying the top origin. // Default: null + * fake_credential_generator?: scalar|null|Param, // A service that implements the FakeCredentialGenerator to generate fake credentials for preventing username enumeration. // Default: "Webauthn\\SimpleFakeCredentialGenerator" + * clock?: scalar|null|Param, // PSR-20 Clock service. // Default: "webauthn.clock.default" + * options_storage?: scalar|null|Param, // Service responsible of the options/user entity storage during the ceremony // Default: "Webauthn\\Bundle\\Security\\Storage\\SessionStorage" + * event_dispatcher?: scalar|null|Param, // PSR-14 Event Dispatcher service. // Default: "Psr\\EventDispatcher\\EventDispatcherInterface" + * http_client?: scalar|null|Param, // A Symfony HTTP client. // Default: "webauthn.http_client.default" + * logger?: scalar|null|Param, // A PSR-3 logger to receive logs during the processes // Default: "webauthn.logger.default" + * credential_repository?: scalar|null|Param, // This repository is responsible of the credential storage // Default: "Webauthn\\Bundle\\Repository\\DummyPublicKeyCredentialSourceRepository" + * user_repository?: scalar|null|Param, // This repository is responsible of the user storage // Default: "Webauthn\\Bundle\\Repository\\DummyPublicKeyCredentialUserEntityRepository" + * allowed_origins?: array, + * allow_subdomains?: bool|Param, // Default: false + * secured_rp_ids?: array, + * counter_checker?: scalar|null|Param, // This service will check if the counter is valid. By default it throws an exception (recommended). // Default: "Webauthn\\Counter\\ThrowExceptionIfInvalid" + * top_origin_validator?: scalar|null|Param, // For cross origin (e.g. iframe), this service will be in charge of verifying the top origin. // Default: null * creation_profiles?: array, - * public_key_credential_parameters?: list, - * attestation_conveyance?: scalar|null, // Default: "none" + * extensions?: array, + * public_key_credential_parameters?: list, + * attestation_conveyance?: scalar|null|Param, // Default: "none" * }>, * request_profiles?: array, + * rp_id?: scalar|null|Param, // Default: null + * challenge_length?: int|Param, // Default: 32 + * timeout?: int|Param, // Default: null + * user_verification?: scalar|null|Param, // Default: "preferred" + * extensions?: array, * }>, * metadata?: bool|array{ // Enable the support of the Metadata Statements. Please read the documentation for this feature. - * enabled?: bool, // Default: false - * mds_repository: scalar|null, // The Metadata Statement repository. - * status_report_repository: scalar|null, // The Status Report repository. - * certificate_chain_checker?: scalar|null, // A Certificate Chain checker. // Default: "Webauthn\\MetadataService\\CertificateChain\\PhpCertificateChainValidator" + * enabled?: bool|Param, // Default: false + * mds_repository: scalar|null|Param, // The Metadata Statement repository. + * status_report_repository: scalar|null|Param, // The Status Report repository. + * certificate_chain_checker?: scalar|null|Param, // A Certificate Chain checker. // Default: "Webauthn\\MetadataService\\CertificateChain\\PhpCertificateChainValidator" * }, * controllers?: bool|array{ - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * creation?: array, - * allow_subdomains?: bool, // Default: false - * secured_rp_ids?: array, + * options_method?: scalar|null|Param, // Default: "POST" + * options_path: scalar|null|Param, + * result_method?: scalar|null|Param, // Default: "POST" + * result_path?: scalar|null|Param, // Default: null + * host?: scalar|null|Param, // Default: null + * profile?: scalar|null|Param, // Default: "default" + * options_builder?: scalar|null|Param, // When set, corresponds to the ID of the Public Key Credential Creation Builder. The profile-based ebuilder is ignored. // Default: null + * user_entity_guesser: scalar|null|Param, + * hide_existing_credentials?: scalar|null|Param, // In order to prevent username enumeration, the existing credentials can be hidden. This is highly recommended when the attestation ceremony is performed by anonymous users. // Default: false + * options_storage?: scalar|null|Param, // Deprecated: The child node "options_storage" at path "webauthn.controllers.creation..options_storage" is deprecated. Please use the root option "options_storage" instead. // Service responsible of the options/user entity storage during the ceremony // Default: null + * success_handler?: scalar|null|Param, // Default: "Webauthn\\Bundle\\Service\\DefaultSuccessHandler" + * failure_handler?: scalar|null|Param, // Default: "Webauthn\\Bundle\\Service\\DefaultFailureHandler" + * options_handler?: scalar|null|Param, // Default: "Webauthn\\Bundle\\Security\\Handler\\DefaultCreationOptionsHandler" + * allowed_origins?: array, + * allow_subdomains?: bool|Param, // Default: false + * secured_rp_ids?: array, * }>, * request?: array, - * allow_subdomains?: bool, // Default: false - * secured_rp_ids?: array, + * options_method?: scalar|null|Param, // Default: "POST" + * options_path: scalar|null|Param, + * result_method?: scalar|null|Param, // Default: "POST" + * result_path?: scalar|null|Param, // Default: null + * host?: scalar|null|Param, // Default: null + * profile?: scalar|null|Param, // Default: "default" + * options_builder?: scalar|null|Param, // When set, corresponds to the ID of the Public Key Credential Creation Builder. The profile-based ebuilder is ignored. // Default: null + * options_storage?: scalar|null|Param, // Deprecated: The child node "options_storage" at path "webauthn.controllers.request..options_storage" is deprecated. Please use the root option "options_storage" instead. // Service responsible of the options/user entity storage during the ceremony // Default: null + * success_handler?: scalar|null|Param, // Default: "Webauthn\\Bundle\\Service\\DefaultSuccessHandler" + * failure_handler?: scalar|null|Param, // Default: "Webauthn\\Bundle\\Service\\DefaultFailureHandler" + * options_handler?: scalar|null|Param, // Default: "Webauthn\\Bundle\\Security\\Handler\\DefaultRequestOptionsHandler" + * allowed_origins?: array, + * allow_subdomains?: bool|Param, // Default: false + * secured_rp_ids?: array, * }>, * }, * } * @psalm-type NbgrpOneloginSamlConfig = array{ // nb:group OneLogin PHP Symfony Bundle configuration * onelogin_settings?: array/saml/" - * strict?: bool, - * debug?: bool, + * baseurl?: scalar|null|Param, // Default: "/saml/" + * strict?: bool|Param, + * debug?: bool|Param, * idp: array{ - * entityId: scalar|null, + * entityId: scalar|null|Param, * singleSignOnService: array{ - * url: scalar|null, - * binding?: scalar|null, + * url: scalar|null|Param, + * binding?: scalar|null|Param, * }, * singleLogoutService?: array{ - * url?: scalar|null, - * responseUrl?: scalar|null, - * binding?: scalar|null, + * url?: scalar|null|Param, + * responseUrl?: scalar|null|Param, + * binding?: scalar|null|Param, * }, - * x509cert?: scalar|null, - * certFingerprint?: scalar|null, - * certFingerprintAlgorithm?: "sha1"|"sha256"|"sha384"|"sha512", + * x509cert?: scalar|null|Param, + * certFingerprint?: scalar|null|Param, + * certFingerprintAlgorithm?: "sha1"|"sha256"|"sha384"|"sha512"|Param, * x509certMulti?: array{ - * signing?: list, - * encryption?: list, + * signing?: list, + * encryption?: list, * }, * }, * sp?: array{ - * entityId?: scalar|null, // Default: "/saml/metadata" + * entityId?: scalar|null|Param, // Default: "/saml/metadata" * assertionConsumerService?: array{ - * url?: scalar|null, // Default: "/saml/acs" - * binding?: scalar|null, + * url?: scalar|null|Param, // Default: "/saml/acs" + * binding?: scalar|null|Param, * }, * attributeConsumingService?: array{ - * serviceName?: scalar|null, - * serviceDescription?: scalar|null, + * serviceName?: scalar|null|Param, + * serviceDescription?: scalar|null|Param, * requestedAttributes?: list, * }>, * }, * singleLogoutService?: array{ - * url?: scalar|null, // Default: "/saml/logout" - * binding?: scalar|null, + * url?: scalar|null|Param, // Default: "/saml/logout" + * binding?: scalar|null|Param, * }, - * NameIDFormat?: scalar|null, - * x509cert?: scalar|null, - * privateKey?: scalar|null, - * x509certNew?: scalar|null, + * NameIDFormat?: scalar|null|Param, + * x509cert?: scalar|null|Param, + * privateKey?: scalar|null|Param, + * x509certNew?: scalar|null|Param, * }, * compress?: array{ - * requests?: bool, - * responses?: bool, + * requests?: bool|Param, + * responses?: bool|Param, * }, * security?: array{ - * nameIdEncrypted?: bool, - * authnRequestsSigned?: bool, - * logoutRequestSigned?: bool, - * logoutResponseSigned?: bool, - * signMetadata?: bool, - * wantMessagesSigned?: bool, - * wantAssertionsEncrypted?: bool, - * wantAssertionsSigned?: bool, - * wantNameId?: bool, - * wantNameIdEncrypted?: bool, + * nameIdEncrypted?: bool|Param, + * authnRequestsSigned?: bool|Param, + * logoutRequestSigned?: bool|Param, + * logoutResponseSigned?: bool|Param, + * signMetadata?: bool|Param, + * wantMessagesSigned?: bool|Param, + * wantAssertionsEncrypted?: bool|Param, + * wantAssertionsSigned?: bool|Param, + * wantNameId?: bool|Param, + * wantNameIdEncrypted?: bool|Param, * requestedAuthnContext?: mixed, - * requestedAuthnContextComparison?: "exact"|"minimum"|"maximum"|"better", - * wantXMLValidation?: bool, - * relaxDestinationValidation?: bool, - * destinationStrictlyMatches?: bool, - * allowRepeatAttributeName?: bool, - * rejectUnsolicitedResponsesWithInResponseTo?: bool, - * signatureAlgorithm?: "http://www.w3.org/2000/09/xmldsig#rsa-sha1"|"http://www.w3.org/2000/09/xmldsig#dsa-sha1"|"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"|"http://www.w3.org/2001/04/xmldsig-more#rsa-sha384"|"http://www.w3.org/2001/04/xmldsig-more#rsa-sha512", - * digestAlgorithm?: "http://www.w3.org/2000/09/xmldsig#sha1"|"http://www.w3.org/2001/04/xmlenc#sha256"|"http://www.w3.org/2001/04/xmldsig-more#sha384"|"http://www.w3.org/2001/04/xmlenc#sha512", - * encryption_algorithm?: "http://www.w3.org/2001/04/xmlenc#tripledes-cbc"|"http://www.w3.org/2001/04/xmlenc#aes128-cbc"|"http://www.w3.org/2001/04/xmlenc#aes192-cbc"|"http://www.w3.org/2001/04/xmlenc#aes256-cbc"|"http://www.w3.org/2009/xmlenc11#aes128-gcm"|"http://www.w3.org/2009/xmlenc11#aes192-gcm"|"http://www.w3.org/2009/xmlenc11#aes256-gcm", - * lowercaseUrlencoding?: bool, + * requestedAuthnContextComparison?: "exact"|"minimum"|"maximum"|"better"|Param, + * wantXMLValidation?: bool|Param, + * relaxDestinationValidation?: bool|Param, + * destinationStrictlyMatches?: bool|Param, + * allowRepeatAttributeName?: bool|Param, + * rejectUnsolicitedResponsesWithInResponseTo?: bool|Param, + * signatureAlgorithm?: "http://www.w3.org/2000/09/xmldsig#rsa-sha1"|"http://www.w3.org/2000/09/xmldsig#dsa-sha1"|"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"|"http://www.w3.org/2001/04/xmldsig-more#rsa-sha384"|"http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"|Param, + * digestAlgorithm?: "http://www.w3.org/2000/09/xmldsig#sha1"|"http://www.w3.org/2001/04/xmlenc#sha256"|"http://www.w3.org/2001/04/xmldsig-more#sha384"|"http://www.w3.org/2001/04/xmlenc#sha512"|Param, + * encryption_algorithm?: "http://www.w3.org/2001/04/xmlenc#tripledes-cbc"|"http://www.w3.org/2001/04/xmlenc#aes128-cbc"|"http://www.w3.org/2001/04/xmlenc#aes192-cbc"|"http://www.w3.org/2001/04/xmlenc#aes256-cbc"|"http://www.w3.org/2009/xmlenc11#aes128-gcm"|"http://www.w3.org/2009/xmlenc11#aes192-gcm"|"http://www.w3.org/2009/xmlenc11#aes256-gcm"|Param, + * lowercaseUrlencoding?: bool|Param, * }, * contactPerson?: array{ * technical?: array{ - * givenName: scalar|null, - * emailAddress: scalar|null, + * givenName: scalar|null|Param, + * emailAddress: scalar|null|Param, * }, * support?: array{ - * givenName: scalar|null, - * emailAddress: scalar|null, + * givenName: scalar|null|Param, + * emailAddress: scalar|null|Param, * }, * administrative?: array{ - * givenName: scalar|null, - * emailAddress: scalar|null, + * givenName: scalar|null|Param, + * emailAddress: scalar|null|Param, * }, * billing?: array{ - * givenName: scalar|null, - * emailAddress: scalar|null, + * givenName: scalar|null|Param, + * emailAddress: scalar|null|Param, * }, * other?: array{ - * givenName: scalar|null, - * emailAddress: scalar|null, + * givenName: scalar|null|Param, + * emailAddress: scalar|null|Param, * }, * }, * organization?: list, * }>, - * use_proxy_vars?: bool, // Default: false - * idp_parameter_name?: scalar|null, // Default: "idp" - * entity_manager_name?: scalar|null, + * use_proxy_vars?: bool|Param, // Default: false + * idp_parameter_name?: scalar|null|Param, // Default: "idp" + * entity_manager_name?: scalar|null|Param, * authn_request?: array{ - * parameters?: list, - * forceAuthn?: bool, // Default: false - * isPassive?: bool, // Default: false - * setNameIdPolicy?: bool, // Default: true - * nameIdValueReq?: scalar|null, // Default: null + * parameters?: list, + * forceAuthn?: bool|Param, // Default: false + * isPassive?: bool|Param, // Default: false + * setNameIdPolicy?: bool|Param, // Default: true + * nameIdValueReq?: scalar|null|Param, // Default: null * }, * } * @psalm-type StimulusConfig = array{ - * controller_paths?: list, - * controllers_json?: scalar|null, // Default: "%kernel.project_dir%/assets/controllers.json" + * controller_paths?: list, + * controllers_json?: scalar|null|Param, // Default: "%kernel.project_dir%/assets/controllers.json" * } * @psalm-type UxTranslatorConfig = array{ - * dump_directory?: scalar|null, // Default: "%kernel.project_dir%/var/translations" + * dump_directory?: scalar|null|Param, // Default: "%kernel.project_dir%/var/translations" * domains?: string|array{ // List of domains to include/exclude from the generated translations. Prefix with a `!` to exclude a domain. - * type?: scalar|null, - * elements?: list, + * type?: scalar|null|Param, + * elements?: list, * }, * } * @psalm-type DompdfFontLoaderConfig = array{ * autodiscovery?: bool|array{ - * paths?: list, - * exclude_patterns?: list, - * file_pattern?: scalar|null, // Default: "/\\.(ttf)$/" - * enabled?: bool, // Default: true + * paths?: list, + * exclude_patterns?: list, + * file_pattern?: scalar|null|Param, // Default: "/\\.(ttf)$/" + * enabled?: bool|Param, // Default: true * }, - * auto_install?: bool, // Default: false + * auto_install?: bool|Param, // Default: false * fonts?: list, * } * @psalm-type KnpuOauth2ClientConfig = array{ - * http_client?: scalar|null, // Service id of HTTP client to use (must implement GuzzleHttp\ClientInterface) // Default: null + * http_client?: scalar|null|Param, // Service id of HTTP client to use (must implement GuzzleHttp\ClientInterface) // Default: null * http_client_options?: array{ - * timeout?: int, - * proxy?: scalar|null, - * verify?: bool, // Use only with proxy option set + * timeout?: int|Param, + * proxy?: scalar|null|Param, + * verify?: bool|Param, // Use only with proxy option set * }, * clients?: array>, * } * @psalm-type NelmioCorsConfig = array{ * defaults?: array{ - * allow_credentials?: bool, // Default: false - * allow_origin?: list, - * allow_headers?: list, - * allow_methods?: list, - * allow_private_network?: bool, // Default: false - * expose_headers?: list, - * max_age?: scalar|null, // Default: 0 - * hosts?: list, - * origin_regex?: bool, // Default: false - * forced_allow_origin_value?: scalar|null, // Default: null - * skip_same_as_origin?: bool, // Default: true + * allow_credentials?: bool|Param, // Default: false + * allow_origin?: list, + * allow_headers?: list, + * allow_methods?: list, + * allow_private_network?: bool|Param, // Default: false + * expose_headers?: list, + * max_age?: scalar|null|Param, // Default: 0 + * hosts?: list, + * origin_regex?: bool|Param, // Default: false + * forced_allow_origin_value?: scalar|null|Param, // Default: null + * skip_same_as_origin?: bool|Param, // Default: true * }, * paths?: array, - * allow_headers?: list, - * allow_methods?: list, - * allow_private_network?: bool, - * expose_headers?: list, - * max_age?: scalar|null, // Default: 0 - * hosts?: list, - * origin_regex?: bool, - * forced_allow_origin_value?: scalar|null, // Default: null - * skip_same_as_origin?: bool, + * allow_credentials?: bool|Param, + * allow_origin?: list, + * allow_headers?: list, + * allow_methods?: list, + * allow_private_network?: bool|Param, + * expose_headers?: list, + * max_age?: scalar|null|Param, // Default: 0 + * hosts?: list, + * origin_regex?: bool|Param, + * forced_allow_origin_value?: scalar|null|Param, // Default: null + * skip_same_as_origin?: bool|Param, * }>, * } * @psalm-type JbtronicsSettingsConfig = array{ - * search_paths?: list, - * proxy_dir?: scalar|null, // Default: "%kernel.cache_dir%/jbtronics_settings/proxies" - * proxy_namespace?: scalar|null, // Default: "Jbtronics\\SettingsBundle\\Proxies" - * default_storage_adapter?: scalar|null, // Default: null - * save_after_migration?: bool, // Default: true + * search_paths?: list, + * proxy_dir?: scalar|null|Param, // Default: "%kernel.cache_dir%/jbtronics_settings/proxies" + * proxy_namespace?: scalar|null|Param, // Default: "Jbtronics\\SettingsBundle\\Proxies" + * default_storage_adapter?: scalar|null|Param, // Default: null + * save_after_migration?: bool|Param, // Default: true * file_storage?: array{ - * storage_directory?: scalar|null, // Default: "%kernel.project_dir%/var/jbtronics_settings/" - * default_filename?: scalar|null, // Default: "settings" + * storage_directory?: scalar|null|Param, // Default: "%kernel.project_dir%/var/jbtronics_settings/" + * default_filename?: scalar|null|Param, // Default: "settings" * }, * orm_storage?: array{ - * default_entity_class?: scalar|null, // Default: null - * prefetch_all?: bool, // Default: true + * default_entity_class?: scalar|null|Param, // Default: null + * prefetch_all?: bool|Param, // Default: true * }, * cache?: array{ - * service?: scalar|null, // Default: "cache.app.taggable" - * default_cacheable?: bool, // Default: false - * ttl?: int, // Default: 0 - * invalidate_on_env_change?: bool, // Default: true + * service?: scalar|null|Param, // Default: "cache.app.taggable" + * default_cacheable?: bool|Param, // Default: false + * ttl?: int|Param, // Default: 0 + * invalidate_on_env_change?: bool|Param, // Default: true * }, * } * @psalm-type JbtronicsTranslationEditorConfig = array{ - * translations_path?: scalar|null, // Default: "%translator.default_path%" - * format?: scalar|null, // Default: "xlf" - * xliff_version?: scalar|null, // Default: "2.0" - * use_intl_icu_format?: bool, // Default: false - * writer_options?: list, + * translations_path?: scalar|null|Param, // Default: "%translator.default_path%" + * format?: scalar|null|Param, // Default: "xlf" + * xliff_version?: scalar|null|Param, // Default: "2.0" + * use_intl_icu_format?: bool|Param, // Default: false + * writer_options?: list, * } * @psalm-type ApiPlatformConfig = array{ - * title?: scalar|null, // The title of the API. // Default: "" - * description?: scalar|null, // The description of the API. // Default: "" - * version?: scalar|null, // The version of the API. // Default: "0.0.0" - * show_webby?: bool, // If true, show Webby on the documentation page // Default: true - * use_symfony_listeners?: bool, // Uses Symfony event listeners instead of the ApiPlatform\Symfony\Controller\MainController. // Default: false - * name_converter?: scalar|null, // Specify a name converter to use. // Default: null - * asset_package?: scalar|null, // Specify an asset package name to use. // Default: null - * path_segment_name_generator?: scalar|null, // Specify a path name generator to use. // Default: "api_platform.metadata.path_segment_name_generator.underscore" - * inflector?: scalar|null, // Specify an inflector to use. // Default: "api_platform.metadata.inflector" + * title?: scalar|null|Param, // The title of the API. // Default: "" + * description?: scalar|null|Param, // The description of the API. // Default: "" + * version?: scalar|null|Param, // The version of the API. // Default: "0.0.0" + * show_webby?: bool|Param, // If true, show Webby on the documentation page // Default: true + * use_symfony_listeners?: bool|Param, // Uses Symfony event listeners instead of the ApiPlatform\Symfony\Controller\MainController. // Default: false + * name_converter?: scalar|null|Param, // Specify a name converter to use. // Default: null + * asset_package?: scalar|null|Param, // Specify an asset package name to use. // Default: null + * path_segment_name_generator?: scalar|null|Param, // Specify a path name generator to use. // Default: "api_platform.metadata.path_segment_name_generator.underscore" + * inflector?: scalar|null|Param, // Specify an inflector to use. // Default: "api_platform.metadata.inflector" * validator?: array{ * serialize_payload_fields?: mixed, // Set to null to serialize all payload fields when a validation error is thrown, or set the fields you want to include explicitly. // Default: [] - * query_parameter_validation?: bool, // Deprecated: Will be removed in API Platform 5.0. // Default: true + * query_parameter_validation?: bool|Param, // Deprecated: Will be removed in API Platform 5.0. // Default: true * }, * eager_loading?: bool|array{ - * enabled?: bool, // Default: true - * fetch_partial?: bool, // Fetch only partial data according to serialization groups. If enabled, Doctrine ORM entities will not work as expected if any of the other fields are used. // Default: false - * max_joins?: int, // Max number of joined relations before EagerLoading throws a RuntimeException // Default: 30 - * force_eager?: bool, // Force join on every relation. If disabled, it will only join relations having the EAGER fetch mode. // Default: true + * enabled?: bool|Param, // Default: true + * fetch_partial?: bool|Param, // Fetch only partial data according to serialization groups. If enabled, Doctrine ORM entities will not work as expected if any of the other fields are used. // Default: false + * max_joins?: int|Param, // Max number of joined relations before EagerLoading throws a RuntimeException // Default: 30 + * force_eager?: bool|Param, // Force join on every relation. If disabled, it will only join relations having the EAGER fetch mode. // Default: true * }, - * handle_symfony_errors?: bool, // Allows to handle symfony exceptions. // Default: false - * enable_swagger?: bool, // Enable the Swagger documentation and export. // Default: true - * enable_json_streamer?: bool, // Enable json streamer. // Default: false - * enable_swagger_ui?: bool, // Enable Swagger UI // Default: true - * enable_re_doc?: bool, // Enable ReDoc // Default: true - * enable_entrypoint?: bool, // Enable the entrypoint // Default: true - * enable_docs?: bool, // Enable the docs // Default: true - * enable_profiler?: bool, // Enable the data collector and the WebProfilerBundle integration. // Default: true - * enable_phpdoc_parser?: bool, // Enable resource metadata collector using PHPStan PhpDocParser. // Default: true - * enable_link_security?: bool, // Enable security for Links (sub resources) // Default: false + * handle_symfony_errors?: bool|Param, // Allows to handle symfony exceptions. // Default: false + * enable_swagger?: bool|Param, // Enable the Swagger documentation and export. // Default: true + * enable_json_streamer?: bool|Param, // Enable json streamer. // Default: false + * enable_swagger_ui?: bool|Param, // Enable Swagger UI // Default: true + * enable_re_doc?: bool|Param, // Enable ReDoc // Default: true + * enable_entrypoint?: bool|Param, // Enable the entrypoint // Default: true + * enable_docs?: bool|Param, // Enable the docs // Default: true + * enable_profiler?: bool|Param, // Enable the data collector and the WebProfilerBundle integration. // Default: true + * enable_phpdoc_parser?: bool|Param, // Enable resource metadata collector using PHPStan PhpDocParser. // Default: true + * enable_link_security?: bool|Param, // Enable security for Links (sub resources) // Default: false * collection?: array{ - * exists_parameter_name?: scalar|null, // The name of the query parameter to filter on nullable field values. // Default: "exists" - * order?: scalar|null, // The default order of results. // Default: "ASC" - * order_parameter_name?: scalar|null, // The name of the query parameter to order results. // Default: "order" - * order_nulls_comparison?: "nulls_smallest"|"nulls_largest"|"nulls_always_first"|"nulls_always_last"|null, // The nulls comparison strategy. // Default: null + * exists_parameter_name?: scalar|null|Param, // The name of the query parameter to filter on nullable field values. // Default: "exists" + * order?: scalar|null|Param, // The default order of results. // Default: "ASC" + * order_parameter_name?: scalar|null|Param, // The name of the query parameter to order results. // Default: "order" + * order_nulls_comparison?: "nulls_smallest"|"nulls_largest"|"nulls_always_first"|"nulls_always_last"|null|Param, // The nulls comparison strategy. // Default: null * pagination?: bool|array{ - * enabled?: bool, // Default: true - * page_parameter_name?: scalar|null, // The default name of the parameter handling the page number. // Default: "page" - * enabled_parameter_name?: scalar|null, // The name of the query parameter to enable or disable pagination. // Default: "pagination" - * items_per_page_parameter_name?: scalar|null, // The name of the query parameter to set the number of items per page. // Default: "itemsPerPage" - * partial_parameter_name?: scalar|null, // The name of the query parameter to enable or disable partial pagination. // Default: "partial" + * enabled?: bool|Param, // Default: true + * page_parameter_name?: scalar|null|Param, // The default name of the parameter handling the page number. // Default: "page" + * enabled_parameter_name?: scalar|null|Param, // The name of the query parameter to enable or disable pagination. // Default: "pagination" + * items_per_page_parameter_name?: scalar|null|Param, // The name of the query parameter to set the number of items per page. // Default: "itemsPerPage" + * partial_parameter_name?: scalar|null|Param, // The name of the query parameter to enable or disable partial pagination. // Default: "partial" * }, * }, * mapping?: array{ - * imports?: list, - * paths?: list, + * imports?: list, + * paths?: list, * }, - * resource_class_directories?: list, + * resource_class_directories?: list, * serializer?: array{ - * hydra_prefix?: bool, // Use the "hydra:" prefix. // Default: false + * hydra_prefix?: bool|Param, // Use the "hydra:" prefix. // Default: false * }, * doctrine?: bool|array{ - * enabled?: bool, // Default: true + * enabled?: bool|Param, // Default: true * }, * doctrine_mongodb_odm?: bool|array{ - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * }, * oauth?: bool|array{ - * enabled?: bool, // Default: false - * clientId?: scalar|null, // The oauth client id. // Default: "" - * clientSecret?: scalar|null, // The OAuth client secret. Never use this parameter in your production environment. It exposes crucial security information. This feature is intended for dev/test environments only. Enable "oauth.pkce" instead // Default: "" - * pkce?: bool, // Enable the oauth PKCE. // Default: false - * type?: scalar|null, // The oauth type. // Default: "oauth2" - * flow?: scalar|null, // The oauth flow grant type. // Default: "application" - * tokenUrl?: scalar|null, // The oauth token url. // Default: "" - * authorizationUrl?: scalar|null, // The oauth authentication url. // Default: "" - * refreshUrl?: scalar|null, // The oauth refresh url. // Default: "" - * scopes?: list, + * enabled?: bool|Param, // Default: false + * clientId?: scalar|null|Param, // The oauth client id. // Default: "" + * clientSecret?: scalar|null|Param, // The OAuth client secret. Never use this parameter in your production environment. It exposes crucial security information. This feature is intended for dev/test environments only. Enable "oauth.pkce" instead // Default: "" + * pkce?: bool|Param, // Enable the oauth PKCE. // Default: false + * type?: scalar|null|Param, // The oauth type. // Default: "oauth2" + * flow?: scalar|null|Param, // The oauth flow grant type. // Default: "application" + * tokenUrl?: scalar|null|Param, // The oauth token url. // Default: "" + * authorizationUrl?: scalar|null|Param, // The oauth authentication url. // Default: "" + * refreshUrl?: scalar|null|Param, // The oauth refresh url. // Default: "" + * scopes?: list, * }, * graphql?: bool|array{ - * enabled?: bool, // Default: false - * default_ide?: scalar|null, // Default: "graphiql" + * enabled?: bool|Param, // Default: false + * default_ide?: scalar|null|Param, // Default: "graphiql" * graphiql?: bool|array{ - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * }, * introspection?: bool|array{ - * enabled?: bool, // Default: true + * enabled?: bool|Param, // Default: true * }, - * max_query_depth?: int, // Default: 20 + * max_query_depth?: int|Param, // Default: 20 * graphql_playground?: array, - * max_query_complexity?: int, // Default: 500 - * nesting_separator?: scalar|null, // The separator to use to filter nested fields. // Default: "_" + * max_query_complexity?: int|Param, // Default: 500 + * nesting_separator?: scalar|null|Param, // The separator to use to filter nested fields. // Default: "_" * collection?: array{ * pagination?: bool|array{ - * enabled?: bool, // Default: true + * enabled?: bool|Param, // Default: true * }, * }, * }, * swagger?: array{ - * persist_authorization?: bool, // Persist the SwaggerUI Authorization in the localStorage. // Default: false - * versions?: list, + * persist_authorization?: bool|Param, // Persist the SwaggerUI Authorization in the localStorage. // Default: false + * versions?: list, * api_keys?: array, * http_auth?: array, * swagger_ui_extra_configuration?: mixed, // To pass extra configuration to Swagger UI, like docExpansion or filter. // Default: [] * }, * http_cache?: array{ - * public?: bool|null, // To make all responses public by default. // Default: null + * public?: bool|null|Param, // To make all responses public by default. // Default: null * invalidation?: bool|array{ // Enable the tags-based cache invalidation system. - * enabled?: bool, // Default: false - * varnish_urls?: list, - * urls?: list, - * scoped_clients?: list, - * max_header_length?: int, // Max header length supported by the cache server. // Default: 7500 + * enabled?: bool|Param, // Default: false + * varnish_urls?: list, + * urls?: list, + * scoped_clients?: list, + * max_header_length?: int|Param, // Max header length supported by the cache server. // Default: 7500 * request_options?: mixed, // To pass options to the client charged with the request. // Default: [] - * purger?: scalar|null, // Specify a purger to use (available values: "api_platform.http_cache.purger.varnish.ban", "api_platform.http_cache.purger.varnish.xkey", "api_platform.http_cache.purger.souin"). // Default: "api_platform.http_cache.purger.varnish" + * purger?: scalar|null|Param, // Specify a purger to use (available values: "api_platform.http_cache.purger.varnish.ban", "api_platform.http_cache.purger.varnish.xkey", "api_platform.http_cache.purger.souin"). // Default: "api_platform.http_cache.purger.varnish" * xkey?: array{ // Deprecated: The "xkey" configuration is deprecated, use your own purger to customize surrogate keys or the appropriate paramters. - * glue?: scalar|null, // xkey glue between keys // Default: " " + * glue?: scalar|null|Param, // xkey glue between keys // Default: " " * }, * }, * }, * mercure?: bool|array{ - * enabled?: bool, // Default: false - * hub_url?: scalar|null, // The URL sent in the Link HTTP header. If not set, will default to the URL for MercureBundle's default hub. // Default: null - * include_type?: bool, // Always include @type in updates (including delete ones). // Default: false + * enabled?: bool|Param, // Default: false + * hub_url?: scalar|null|Param, // The URL sent in the Link HTTP header. If not set, will default to the URL for MercureBundle's default hub. // Default: null + * include_type?: bool|Param, // Always include @type in updates (including delete ones). // Default: false * }, * messenger?: bool|array{ - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * }, * elasticsearch?: bool|array{ - * enabled?: bool, // Default: false - * hosts?: list, + * enabled?: bool|Param, // Default: false + * hosts?: list, * }, * openapi?: array{ * contact?: array{ - * name?: scalar|null, // The identifying name of the contact person/organization. // Default: null - * url?: scalar|null, // The URL pointing to the contact information. MUST be in the format of a URL. // Default: null - * email?: scalar|null, // The email address of the contact person/organization. MUST be in the format of an email address. // Default: null + * name?: scalar|null|Param, // The identifying name of the contact person/organization. // Default: null + * url?: scalar|null|Param, // The URL pointing to the contact information. MUST be in the format of a URL. // Default: null + * email?: scalar|null|Param, // The email address of the contact person/organization. MUST be in the format of an email address. // Default: null * }, - * termsOfService?: scalar|null, // A URL to the Terms of Service for the API. MUST be in the format of a URL. // Default: null + * termsOfService?: scalar|null|Param, // A URL to the Terms of Service for the API. MUST be in the format of a URL. // Default: null * tags?: list, * license?: array{ - * name?: scalar|null, // The license name used for the API. // Default: null - * url?: scalar|null, // URL to the license used for the API. MUST be in the format of a URL. // Default: null - * identifier?: scalar|null, // An SPDX license expression for the API. The identifier field is mutually exclusive of the url field. // Default: null + * name?: scalar|null|Param, // The license name used for the API. // Default: null + * url?: scalar|null|Param, // URL to the license used for the API. MUST be in the format of a URL. // Default: null + * identifier?: scalar|null|Param, // An SPDX license expression for the API. The identifier field is mutually exclusive of the url field. // Default: null * }, * swagger_ui_extra_configuration?: mixed, // To pass extra configuration to Swagger UI, like docExpansion or filter. // Default: [] - * overrideResponses?: bool, // Whether API Platform adds automatic responses to the OpenAPI documentation. // Default: true - * error_resource_class?: scalar|null, // The class used to represent errors in the OpenAPI documentation. // Default: null - * validation_error_resource_class?: scalar|null, // The class used to represent validation errors in the OpenAPI documentation. // Default: null + * overrideResponses?: bool|Param, // Whether API Platform adds automatic responses to the OpenAPI documentation. // Default: true + * error_resource_class?: scalar|null|Param, // The class used to represent errors in the OpenAPI documentation. // Default: null + * validation_error_resource_class?: scalar|null|Param, // The class used to represent validation errors in the OpenAPI documentation. // Default: null * }, * maker?: bool|array{ - * enabled?: bool, // Default: true + * enabled?: bool|Param, // Default: true * }, - * exception_to_status?: array, + * exception_to_status?: array, * formats?: array, + * mime_types?: list, * }>, * patch_formats?: array, + * mime_types?: list, * }>, * docs_formats?: array, + * mime_types?: list, * }>, * error_formats?: array, + * mime_types?: list, * }>, - * jsonschema_formats?: list, + * jsonschema_formats?: list, * defaults?: array{ * uri_template?: mixed, * short_name?: mixed, From 402edf096d217c169cb1634322b9ddaa7a3e8693 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 2 Jan 2026 18:50:34 +0100 Subject: [PATCH 080/235] Upgraded yarn dependencies --- yarn.lock | 216 +++++++++++++++++++++++++++--------------------------- 1 file changed, 108 insertions(+), 108 deletions(-) diff --git a/yarn.lock b/yarn.lock index 9d2e2ada..c7d8da50 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2018,9 +2018,9 @@ integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== "@sinclair/typebox@^0.34.0": - version "0.34.41" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.34.41.tgz#aa51a6c1946df2c5a11494a2cdb9318e026db16c" - integrity sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g== + version "0.34.46" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.34.46.tgz#33ea674ef3fbc46733c6d124ae94a6826abaf8cf" + integrity sha512-kiW7CtS/NkdvTUjkjUJo7d5JsFfbJ14YjdhDk9KoEgK6nFjKNXZPrX0jfLA8ZlET4cFLHxOZ/0vFKOP+bOxIOQ== "@symfony/stimulus-bridge@^4.0.0": version "4.0.1" @@ -2169,9 +2169,9 @@ integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== "@types/node@*": - version "24.10.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-24.10.1.tgz#91e92182c93db8bd6224fca031e2370cef9a8f01" - integrity sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ== + version "25.0.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-25.0.3.tgz#79b9ac8318f373fbfaaf6e2784893efa9701f269" + integrity sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA== dependencies: undici-types "~7.16.0" @@ -2524,7 +2524,7 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array.prototype.reduce@^1.0.6: +array.prototype.reduce@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.8.tgz#42f97f5078daedca687d4463fd3c05cbfd83da57" integrity sha512-DwuEqgXFBwbmZSRqt3BpQigWNUoqw9Ml2dTWdF3B2zQlQX4OeUE0zyuzX0fX0IbTvjdkZbcBTU3idgpO78qkTw== @@ -2622,9 +2622,9 @@ base64-js@^1.1.2, base64-js@^1.3.0: integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== baseline-browser-mapping@^2.9.0: - version "2.9.4" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.4.tgz#a010e50ea6da48fba78179aef9b6e771d00fff42" - integrity sha512-ZCQ9GEWl73BVm8bu5Fts8nt7MHdbt5vY9bP6WGnUh+r3l8M7CgfyTlwsgCbMC66BNxPr6Xoce3j66Ms5YUQTNA== + version "2.9.11" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.11.tgz#53724708c8db5f97206517ecfe362dbe5181deea" + integrity sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ== big.js@^5.2.2: version "5.2.2" @@ -2688,7 +2688,7 @@ browser-stdout@1.3.1: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.26.3, browserslist@^4.27.0, browserslist@^4.28.0: +browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.27.0, browserslist@^4.28.0, browserslist@^4.28.1: version "4.28.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.1.tgz#7f534594628c53c63101079e27e40de490456a95" integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA== @@ -2785,9 +2785,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001759: - version "1.0.30001759" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001759.tgz#d569e7b010372c6b0ca3946e30dada0a2e9d5006" - integrity sha512-Pzfx9fOKoKvevQf8oCXoyNRQ5QyxJj+3O0Rqx2V5oxT61KGx8+n6hV/IUyJeifUci2clnmmKVpvtiqRzgiWjSw== + version "1.0.30001762" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001762.tgz#e4dbfeda63d33258cdde93e53af2023a13ba27d4" + integrity sha512-PxZwGNvH7Ak8WX5iXzoK1KPZttBXNPuaOvI2ZYU7NrlM+d9Ov+TUvlLOBNGzVXAntMSMMlJPd+jY6ovrVjSmUw== ccount@^2.0.0: version "2.0.1" @@ -3139,9 +3139,9 @@ crypto-js@^4.2.0: integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q== css-declaration-sorter@^7.2.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-7.3.0.tgz#edc45c36bcdfea0788b1d4452829f142ef1c4a4a" - integrity sha512-LQF6N/3vkAMYF4xoHLJfG718HRJh34Z8BnNhd6bosOMIVjMlhuZK5++oZa3uYAgrI5+7x2o27gUqTR2U/KjUOQ== + version "7.3.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-7.3.1.tgz#acd204976d7ca5240b5579bfe6e73d4d088fd568" + integrity sha512-gz6x+KkgNCjxq3Var03pRYLhyNfwhkKF1g/yoLgDNtFvVu0/fOLV9C8fFEZRjACp/XQLumjAYo7JVjzH3wLbxA== css-loader@^5.2.7: version "5.2.7" @@ -3174,9 +3174,9 @@ css-loader@^7.1.0: semver "^7.5.4" css-minimizer-webpack-plugin@^7.0.0: - version "7.0.3" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-7.0.3.tgz#2da02f79ed5af0f81ac67a39a39bc430c75a0d0d" - integrity sha512-O99EbZ3P9YqfjWPvaL5Ndr54hP1V1N9IRKDLzKpEm1cw5eYF5KTFvz63Wm/AGDz841ceGmLvU1rdN8LrElMIiQ== + version "7.0.4" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-7.0.4.tgz#92d2643e3658e3f484a70382a5dba18e51997f2e" + integrity sha512-2iACis+P8qdLj1tHcShtztkGhCNIRUajJj7iX0IM9a5FA0wXGwjV8Nf6+HsBjBfb4LO8TTAVoetBbM54V6f3+Q== dependencies: "@jridgewell/trace-mapping" "^0.3.25" cssnano "^7.0.4" @@ -3374,26 +3374,26 @@ data-view-byte-offset@^1.0.1: is-data-view "^1.0.1" datatables.net-bs5@^2, datatables.net-bs5@^2.0.0: - version "2.3.5" - resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-2.3.5.tgz#96f76dce12b1554664b06bd85f6b3be8d6da509f" - integrity sha512-2JA2WZz1tBxdVpYAspiqI8POdqEoAZZzqp7tISKaof2P5ufBJb+OLaahxwuB0sF9qcQh1azlU+JH1zsLBXVwXg== + version "2.3.6" + resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-2.3.6.tgz#88e9b015cb3d260f3e874f0f9ad16dc566b997da" + integrity sha512-oUNGjZrpNC2fY3l/6V4ijTC9kyVKU4Raons+RFmq2J7590rPn0c+5WAYKBx0evgW/CW7WfhStGBrU7+WJig6Og== dependencies: - datatables.net "2.3.5" + datatables.net "2.3.6" jquery ">=1.7" datatables.net-buttons-bs5@^3.0.0: - version "3.2.5" - resolved "https://registry.yarnpkg.com/datatables.net-buttons-bs5/-/datatables.net-buttons-bs5-3.2.5.tgz#ab8b2d3cc674e7da3bbe44b600e04edd43c7e7f5" - integrity sha512-3eT/Sd90x7imq9MRcKP9X3j70qg/u+OvtZSNWJEihRf1Mb/Sr8NexQw/Bag/ui6GJHa5dhUeFrOgBSKtEW70iA== + version "3.2.6" + resolved "https://registry.yarnpkg.com/datatables.net-buttons-bs5/-/datatables.net-buttons-bs5-3.2.6.tgz#0d2fb80c8adc4823c9052e04f8e27a3f1a665bef" + integrity sha512-RJfbaxnAys0OtcZcJL58/3aMVVKs2yQDBI8PNA0h/4mdKaJ/dVezZTFy5CYLrO1HjAGosfL0iv4sIs/BafaW7w== dependencies: datatables.net-bs5 "^2" - datatables.net-buttons "3.2.5" + datatables.net-buttons "3.2.6" jquery ">=1.7" -datatables.net-buttons@3.2.5: - version "3.2.5" - resolved "https://registry.yarnpkg.com/datatables.net-buttons/-/datatables.net-buttons-3.2.5.tgz#e37fc4f06743e057e8e3e4abfda60c988e7c16da" - integrity sha512-OSTl7evbfe0SMee11lyzu5iv/z8Yp05eh3s1QBte/FNqHcoXN8hlAVSSGpYgk5pj8zwHPYIu6fHeMEue4ARUNg== +datatables.net-buttons@3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/datatables.net-buttons/-/datatables.net-buttons-3.2.6.tgz#dad80c8f28eb18741cec49fb33397073217ca63e" + integrity sha512-rLqkB3xLIAYwVLt+lUSxybo/1WqveTAxhQm6wj6yvXlJiWq+oJ8MKW6H1q90QrXbNp0fGngnfD0cmpMZnNnnNw== dependencies: datatables.net "^2" jquery ">=1.7" @@ -3466,10 +3466,10 @@ datatables.net-select@3.1.3: datatables.net "^2" jquery ">=1.7" -datatables.net@2.3.5, datatables.net@^2, datatables.net@^2.0.0: - version "2.3.5" - resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-2.3.5.tgz#a35cc1209edb7525ea68ebc3e7d3af6e3f30a758" - integrity sha512-Qrwc+vuw8GHo42u1usWTuriNAMW0VvLPSW3j8g3GxvatiD8wS/ZGW32VAYLLfmF4Hz0C/fo2KB3xZBfcpqqVTQ== +datatables.net@2.3.6, datatables.net@^2, datatables.net@^2.0.0: + version "2.3.6" + resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-2.3.6.tgz#a11be57a2b50d7231cae2980a8ff1df3c18b7b17" + integrity sha512-xQ/dCxrjfxM0XY70wSIzakkTZ6ghERwlLmAPyCnu8Sk5cyt9YvOVyOsFNOa/BZ/lM63Q3i2YSSvp/o7GXZGsbg== dependencies: jquery ">=1.7" @@ -3632,9 +3632,9 @@ domhandler@^5.0.2, domhandler@^5.0.3: domelementtype "^2.3.0" dompurify@^3.0.3: - version "3.3.0" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.3.0.tgz#aaaadbb83d87e1c2fbb066452416359e5b62ec97" - integrity sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ== + version "3.3.1" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.3.1.tgz#c7e1ddebfe3301eacd6c0c12a4af284936dbbb86" + integrity sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q== optionalDependencies: "@types/trusted-types" "^2.0.7" @@ -3671,9 +3671,9 @@ duplexer@^0.1.2: integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== electron-to-chromium@^1.5.263: - version "1.5.266" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.266.tgz#41ed029b3cf641c4ee071de42954b36dca8f5f4e" - integrity sha512-kgWEglXvkEfMH7rxP5OSZZwnaDWT7J9EoZCujhnpLbfi0bbNtRkgdX2E3gt0Uer11c61qCYktB3hwkAS325sJg== + version "1.5.267" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz#5d84f2df8cdb6bfe7e873706bb21bd4bfb574dc7" + integrity sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw== emoji-regex@^7.0.1: version "7.0.3" @@ -3690,10 +3690,10 @@ emojis-list@^3.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== -enhanced-resolve@^5.0.0, enhanced-resolve@^5.17.3: - version "5.18.3" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz#9b5f4c5c076b8787c78fe540392ce76a88855b44" - integrity sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww== +enhanced-resolve@^5.0.0, enhanced-resolve@^5.17.4: + version "5.18.4" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz#c22d33055f3952035ce6a144ce092447c525f828" + integrity sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -3727,10 +3727,10 @@ error-stack-parser@^2.1.4: dependencies: stackframe "^1.3.4" -es-abstract@^1.23.2, es-abstract@^1.23.5, es-abstract@^1.23.9: - version "1.24.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.0.tgz#c44732d2beb0acc1ed60df840869e3106e7af328" - integrity sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg== +es-abstract@^1.23.5, es-abstract@^1.23.9, es-abstract@^1.24.0: + version "1.24.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.1.tgz#f0c131ed5ea1bb2411134a8dd94def09c46c7899" + integrity sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw== dependencies: array-buffer-byte-length "^1.0.2" arraybuffer.prototype.slice "^1.0.4" @@ -3802,10 +3802,10 @@ es-errors@^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.7.0" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz#9159601561880a85f2734560a9099b2c31e5372a" - integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA== +es-module-lexer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-2.0.0.tgz#f657cd7a9448dcdda9c070a3cb75e5dc1e85f5b1" + integrity sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw== es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: version "1.1.1" @@ -3980,9 +3980,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.19.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5" - integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== + version "1.20.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.20.1.tgz#ca750a10dc925bc8b18839fd203e3ef4b3ced675" + integrity sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw== dependencies: reusify "^1.0.4" @@ -4045,9 +4045,9 @@ for-each@^0.3.3, for-each@^0.3.5: is-callable "^1.2.7" fs-extra@^11.2.0: - version "11.3.2" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.2.tgz#c838aeddc6f4a8c74dd15f85e11fe5511bfe02a4" - integrity sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A== + version "11.3.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.3.tgz#a27da23b72524e81ac6c3815cc0179b8c74c59ee" + integrity sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -4468,10 +4468,10 @@ htmlparser2@^6.1.0: domutils "^2.5.2" entities "^2.0.0" -iconv-lite@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== +iconv-lite@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.7.1.tgz#d4af1d2092f2bb05aab6296e5e7cd286d2f15432" + integrity sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" @@ -4964,9 +4964,9 @@ jszip@^3.2.0: setimmediate "^1.0.5" katex@^0.16.0: - version "0.16.26" - resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.26.tgz#7bfd7fd2ce10cffdf872a3a6c5a593c26d1bd084" - integrity sha512-LvYwQDwfcFB3rCkxwzqVFxhIB21x1JivrWAs3HT9NsmtgvQrcVCZ6xihnNwXwiQ8UhqRtDJRmwrRz5EgzQ2DuA== + version "0.16.27" + resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.27.tgz#4ecf6f620e0ca1c1a5de722e85fcdcec49086a48" + integrity sha512-aeQoDkuRWSqQN6nSvVCEFvfXdqo1OQiCmmW1kc9xSdjutPv7BGO7pqY9sQRJpMOGrEdfDgF2TfRXe5eUAD2Waw== dependencies: commander "^8.3.0" @@ -5807,17 +5807,17 @@ object.assign@^4.1.7: object-keys "^1.1.1" object.getownpropertydescriptors@^2.0.3: - version "2.1.8" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.8.tgz#2f1fe0606ec1a7658154ccd4f728504f69667923" - integrity sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A== + version "2.1.9" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.9.tgz#bf9e7520f14d50de88dee2b9c9eca841166322dc" + integrity sha512-mt8YM6XwsTTovI+kdZdHSxoyF2DI59up034orlC9NfweclcWOt7CVascNNLp6U+bjFVCVCIh9PwS76tDM/rH8g== dependencies: - array.prototype.reduce "^1.0.6" - call-bind "^1.0.7" + array.prototype.reduce "^1.0.8" + call-bind "^1.0.8" define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - gopd "^1.0.1" - safe-array-concat "^1.1.2" + es-abstract "^1.24.0" + es-object-atoms "^1.1.1" + gopd "^1.2.0" + safe-array-concat "^1.1.3" once@^1.3.0: version "1.4.0" @@ -5959,14 +5959,14 @@ path-type@^4.0.0: integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== pdfmake@^0.2.2: - version "0.2.20" - resolved "https://registry.yarnpkg.com/pdfmake/-/pdfmake-0.2.20.tgz#a2e37114e46247c9a295df2fc1c7184942de567e" - integrity sha512-bGbxbGFP5p8PWNT3Phsu1ZcRLnRfF6jmnuKTkgmt6i5PZzSdX6JaB+NeTz9q+aocfW8SE9GUjL3o/5GroBqGcQ== + version "0.2.21" + resolved "https://registry.yarnpkg.com/pdfmake/-/pdfmake-0.2.21.tgz#dbaadda4567d67c5be7feac54f6e8e23af776be6" + integrity sha512-kgBj6Bbj57vY/f0zpBz/OLmO4n248RopEEA+IRkfdKZtravqQL6lEkILYsdjiPFYCXImZA+62EtT2zjUVKb8YQ== dependencies: "@foliojs-fork/linebreak" "^1.1.2" "@foliojs-fork/pdfkit" "^0.15.3" - iconv-lite "^0.6.3" - xmldoc "^2.0.1" + iconv-lite "^0.7.1" + xmldoc "^2.0.3" picocolors@^1.0.0, picocolors@^1.1.0, picocolors@^1.1.1: version "1.1.1" @@ -6520,9 +6520,9 @@ postcss@^8.2.14, postcss@^8.2.15, postcss@^8.4.12, postcss@^8.4.33, postcss@^8.4 source-map-js "^1.2.1" preact@^10.13.2: - version "10.28.0" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.28.0.tgz#a851300df42842797046545e4172a4128d158755" - integrity sha512-rytDAoiXr3+t6OIP3WGlDd0ouCUG1iCWzkcY3++Nreuoi17y6T5i/zRhe6uYfoVcxq6YU+sBtJouuRDsq8vvqA== + version "10.28.1" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.28.1.tgz#83325f0141bc8c97977c64d532429d667a26b411" + integrity sha512-u1/ixq/lVQI0CakKNvLDEcW5zfCjUQfZdK9qqWuIJtsezuyG6pk9TWj75GMuI/EzRSZB/VAE43sNWWZfiy8psw== pretty-error@^4.0.0: version "4.0.0" @@ -6877,7 +6877,7 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -safe-array-concat@^1.1.2, safe-array-concat@^1.1.3: +safe-array-concat@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.3.tgz#c9e54ec4f603b0bbb8e7e5007a5ee7aecd1538c3" integrity sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q== @@ -6920,7 +6920,7 @@ safe-regex-test@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@^1.2.4, sax@^1.4.1: +sax@^1.4.1, sax@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.3.tgz#fcebae3b756cdc8428321805f4b70f16ec0ab5db" integrity sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ== @@ -7410,10 +7410,10 @@ 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.11: - version "5.3.15" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.15.tgz#0a26860b765eaffa8e840170aabc5b3a3f6f6bb9" - integrity sha512-PGkOdpRFK+rb1TzVz+msVhw4YMRT9txLF4kRqvJhGhCM324xuR3REBSHALN+l+sAhKUmz0aotnjp5D+P83mLhQ== +terser-webpack-plugin@^5.3.0, terser-webpack-plugin@^5.3.16: + version "5.3.16" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz#741e448cc3f93d8026ebe4f7ef9e4afacfd56330" + integrity sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q== dependencies: "@jridgewell/trace-mapping" "^0.3.25" jest-worker "^27.4.5" @@ -7695,9 +7695,9 @@ universalify@^2.0.0: integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== update-browserslist-db@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.2.tgz#cfb4358afa08b3d5731a2ecd95eebf4ddef8033e" - integrity sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA== + version "1.2.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz#64d76db58713136acbeb4c49114366cc6cc2e80d" + integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w== dependencies: escalade "^3.2.0" picocolors "^1.1.1" @@ -7746,9 +7746,9 @@ vfile@^6.0.0: vfile-message "^4.0.0" watchpack@^2.4.4: - version "2.4.4" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.4.tgz#473bda72f0850453da6425081ea46fc0d7602947" - integrity sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA== + version "2.5.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.5.0.tgz#fa115d5ccaa4bf3aa594f586257c0bc4768939fd" + integrity sha512-e6vZvY6xboSwLz2GD36c16+O/2Z6fKvIf4pOXptw2rY9MVwE/TXc6RGqxD3I3x0a28lwBY7DE+76uTPSsBrrCA== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" @@ -7842,9 +7842,9 @@ webpack-sources@^3.3.3: integrity sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg== webpack@^5.74.0: - version "5.103.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.103.0.tgz#17a7c5a5020d5a3a37c118d002eade5ee2c6f3da" - integrity sha512-HU1JOuV1OavsZ+mfigY0j8d1TgQgbZ6M+J75zDkpEAwYeXjWSqrGJtgnPblJjd/mAyTNQ7ygw0MiKOn6etz8yw== + version "5.104.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.104.1.tgz#94bd41eb5dbf06e93be165ba8be41b8260d4fb1a" + integrity sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA== dependencies: "@types/eslint-scope" "^3.7.7" "@types/estree" "^1.0.8" @@ -7854,10 +7854,10 @@ webpack@^5.74.0: "@webassemblyjs/wasm-parser" "^1.14.1" acorn "^8.15.0" acorn-import-phases "^1.0.3" - browserslist "^4.26.3" + browserslist "^4.28.1" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.17.3" - es-module-lexer "^1.2.1" + enhanced-resolve "^5.17.4" + es-module-lexer "^2.0.0" eslint-scope "5.1.1" events "^3.2.0" glob-to-regexp "^0.4.1" @@ -7868,7 +7868,7 @@ webpack@^5.74.0: neo-async "^2.6.2" schema-utils "^4.3.3" tapable "^2.3.0" - terser-webpack-plugin "^5.3.11" + terser-webpack-plugin "^5.3.16" watchpack "^2.4.4" webpack-sources "^3.3.3" @@ -7975,12 +7975,12 @@ ws@^7.3.1: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== -xmldoc@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/xmldoc/-/xmldoc-2.0.2.tgz#1ad89f9054cc8b1c500135e746da2a608b7bca6b" - integrity sha512-UiRwoSStEXS3R+YE8OqYv3jebza8cBBAI2y8g3B15XFkn3SbEOyyLnmPHjLBPZANrPJKEzxxB7A3XwcLikQVlQ== +xmldoc@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/xmldoc/-/xmldoc-2.0.3.tgz#65b4226b753ea6cd4601f3f56d52338941d38380" + integrity sha512-6gRk4NY/Jvg67xn7OzJuxLRsGgiXBaPUQplVJ/9l99uIugxh4FTOewYz5ic8WScj7Xx/2WvhENiQKwkK9RpE4w== dependencies: - sax "^1.2.4" + sax "^1.4.3" y18n@^4.0.0: version "4.0.3" From 2f580c92d1004f5f1e99ef9071a0029e4a352cf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 3 Jan 2026 00:47:49 +0100 Subject: [PATCH 081/235] Declare nativeType of parent property explicitly as workaround for bug in symfony TypeInfo Symfony/type-info returns an invalid property type for the parent property based on the @phpstan-var static phpdoc in the parent. It returns some App\Entity\Base\AttachmentType which does not exists. Symfony issue: https://github.com/symfony/symfony/issues/62922 --- src/Entity/Attachments/AttachmentType.php | 4 +++- src/Entity/Parts/Category.php | 4 +++- src/Entity/Parts/Footprint.php | 4 +++- src/Entity/Parts/Manufacturer.php | 4 +++- src/Entity/Parts/MeasurementUnit.php | 4 +++- src/Entity/Parts/PartCustomState.php | 4 +++- src/Entity/Parts/StorageLocation.php | 4 +++- src/Entity/Parts/Supplier.php | 4 +++- src/Entity/PriceInformations/Currency.php | 4 +++- src/Entity/ProjectSystem/Project.php | 4 +++- 10 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/Entity/Attachments/AttachmentType.php b/src/Entity/Attachments/AttachmentType.php index 22333c16..b5d1ff8c 100644 --- a/src/Entity/Attachments/AttachmentType.php +++ b/src/Entity/Attachments/AttachmentType.php @@ -47,6 +47,8 @@ use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Annotation\Groups; +use Symfony\Component\TypeInfo\Type\NullableType; +use Symfony\Component\TypeInfo\Type\ObjectType; use Symfony\Component\Validator\Constraints as Assert; /** @@ -93,7 +95,7 @@ class AttachmentType extends AbstractStructuralDBElement #[ORM\ManyToOne(targetEntity: AttachmentType::class, inversedBy: 'children')] #[ORM\JoinColumn(name: 'parent_id')] #[Groups(['attachment_type:read', 'attachment_type:write'])] - #[ApiProperty(readableLink: true, writableLink: false)] + #[ApiProperty(readableLink: true, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))] protected ?AbstractStructuralDBElement $parent = null; /** diff --git a/src/Entity/Parts/Category.php b/src/Entity/Parts/Category.php index 7fca81bc..a9efd2fa 100644 --- a/src/Entity/Parts/Category.php +++ b/src/Entity/Parts/Category.php @@ -50,6 +50,8 @@ use App\Entity\Parameters\CategoryParameter; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Annotation\Groups; +use Symfony\Component\TypeInfo\Type\NullableType; +use Symfony\Component\TypeInfo\Type\ObjectType; use Symfony\Component\Validator\Constraints as Assert; /** @@ -98,7 +100,7 @@ class Category extends AbstractPartsContainingDBElement #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\JoinColumn(name: 'parent_id')] #[Groups(['category:read', 'category:write'])] - #[ApiProperty(readableLink: false, writableLink: false)] + #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))] protected ?AbstractStructuralDBElement $parent = null; #[Groups(['category:read', 'category:write'])] diff --git a/src/Entity/Parts/Footprint.php b/src/Entity/Parts/Footprint.php index 6b043562..251232c1 100644 --- a/src/Entity/Parts/Footprint.php +++ b/src/Entity/Parts/Footprint.php @@ -49,6 +49,8 @@ use App\Entity\Parameters\FootprintParameter; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Annotation\Groups; +use Symfony\Component\TypeInfo\Type\NullableType; +use Symfony\Component\TypeInfo\Type\ObjectType; use Symfony\Component\Validator\Constraints as Assert; /** @@ -93,7 +95,7 @@ class Footprint extends AbstractPartsContainingDBElement #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\JoinColumn(name: 'parent_id')] #[Groups(['footprint:read', 'footprint:write'])] - #[ApiProperty(readableLink: false, writableLink: false)] + #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))] protected ?AbstractStructuralDBElement $parent = null; #[ORM\OneToMany(mappedBy: 'parent', targetEntity: self::class)] diff --git a/src/Entity/Parts/Manufacturer.php b/src/Entity/Parts/Manufacturer.php index 0edf8232..f7bee4b8 100644 --- a/src/Entity/Parts/Manufacturer.php +++ b/src/Entity/Parts/Manufacturer.php @@ -48,6 +48,8 @@ use App\Entity\Parameters\ManufacturerParameter; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Annotation\Groups; +use Symfony\Component\TypeInfo\Type\NullableType; +use Symfony\Component\TypeInfo\Type\ObjectType; use Symfony\Component\Validator\Constraints as Assert; /** @@ -92,7 +94,7 @@ class Manufacturer extends AbstractCompany #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\JoinColumn(name: 'parent_id')] #[Groups(['manufacturer:read', 'manufacturer:write'])] - #[ApiProperty(readableLink: false, writableLink: false)] + #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))] protected ?AbstractStructuralDBElement $parent = null; #[ORM\OneToMany(mappedBy: 'parent', targetEntity: self::class)] diff --git a/src/Entity/Parts/MeasurementUnit.php b/src/Entity/Parts/MeasurementUnit.php index 6dd0b9f2..dfb7e1d4 100644 --- a/src/Entity/Parts/MeasurementUnit.php +++ b/src/Entity/Parts/MeasurementUnit.php @@ -50,6 +50,8 @@ use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; use Symfony\Component\Serializer\Annotation\Groups; +use Symfony\Component\TypeInfo\Type\NullableType; +use Symfony\Component\TypeInfo\Type\ObjectType; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Constraints\Length; @@ -130,7 +132,7 @@ class MeasurementUnit extends AbstractPartsContainingDBElement #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\JoinColumn(name: 'parent_id')] #[Groups(['measurement_unit:read', 'measurement_unit:write'])] - #[ApiProperty(readableLink: false, writableLink: false)] + #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))] protected ?AbstractStructuralDBElement $parent = null; /** diff --git a/src/Entity/Parts/PartCustomState.php b/src/Entity/Parts/PartCustomState.php index 136ff984..77530ff6 100644 --- a/src/Entity/Parts/PartCustomState.php +++ b/src/Entity/Parts/PartCustomState.php @@ -46,6 +46,8 @@ use Doctrine\Common\Collections\Collection; use Doctrine\Common\Collections\Criteria; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Annotation\Groups; +use Symfony\Component\TypeInfo\Type\NullableType; +use Symfony\Component\TypeInfo\Type\ObjectType; use Symfony\Component\Validator\Constraints as Assert; /** @@ -87,7 +89,7 @@ class PartCustomState extends AbstractPartsContainingDBElement #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\JoinColumn(name: 'parent_id')] #[Groups(['part_custom_state:read', 'part_custom_state:write'])] - #[ApiProperty(readableLink: false, writableLink: false)] + #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))] protected ?AbstractStructuralDBElement $parent = null; /** diff --git a/src/Entity/Parts/StorageLocation.php b/src/Entity/Parts/StorageLocation.php index 6c455ae5..ca76df59 100644 --- a/src/Entity/Parts/StorageLocation.php +++ b/src/Entity/Parts/StorageLocation.php @@ -50,6 +50,8 @@ use App\Entity\UserSystem\User; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Annotation\Groups; +use Symfony\Component\TypeInfo\Type\NullableType; +use Symfony\Component\TypeInfo\Type\ObjectType; use Symfony\Component\Validator\Constraints as Assert; /** @@ -97,7 +99,7 @@ class StorageLocation extends AbstractPartsContainingDBElement #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\JoinColumn(name: 'parent_id')] #[Groups(['location:read', 'location:write'])] - #[ApiProperty(readableLink: false, writableLink: false)] + #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))] protected ?AbstractStructuralDBElement $parent = null; #[Groups(['location:read', 'location:write'])] diff --git a/src/Entity/Parts/Supplier.php b/src/Entity/Parts/Supplier.php index 2c004e9e..a073e9e4 100644 --- a/src/Entity/Parts/Supplier.php +++ b/src/Entity/Parts/Supplier.php @@ -53,6 +53,8 @@ use Brick\Math\BigDecimal; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Annotation\Groups; +use Symfony\Component\TypeInfo\Type\NullableType; +use Symfony\Component\TypeInfo\Type\ObjectType; use Symfony\Component\Validator\Constraints as Assert; /** @@ -99,7 +101,7 @@ class Supplier extends AbstractCompany #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\JoinColumn(name: 'parent_id')] #[Groups(['supplier:read', 'supplier:write'])] - #[ApiProperty(readableLink: false, writableLink: false)] + #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))] protected ?AbstractStructuralDBElement $parent = null; /** diff --git a/src/Entity/PriceInformations/Currency.php b/src/Entity/PriceInformations/Currency.php index ce20caf8..4bf9df4e 100644 --- a/src/Entity/PriceInformations/Currency.php +++ b/src/Entity/PriceInformations/Currency.php @@ -52,6 +52,8 @@ use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; use Symfony\Component\Serializer\Annotation\Groups; +use Symfony\Component\TypeInfo\Type\NullableType; +use Symfony\Component\TypeInfo\Type\ObjectType; use Symfony\Component\Validator\Constraints as Assert; /** @@ -125,7 +127,7 @@ class Currency extends AbstractStructuralDBElement #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\JoinColumn(name: 'parent_id')] #[Groups(['currency:read', 'currency:write'])] - #[ApiProperty(readableLink: false, writableLink: false)] + #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))] protected ?AbstractStructuralDBElement $parent = null; /** diff --git a/src/Entity/ProjectSystem/Project.php b/src/Entity/ProjectSystem/Project.php index a103d694..53f74af0 100644 --- a/src/Entity/ProjectSystem/Project.php +++ b/src/Entity/ProjectSystem/Project.php @@ -49,6 +49,8 @@ use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use InvalidArgumentException; use Symfony\Component\Serializer\Annotation\Groups; +use Symfony\Component\TypeInfo\Type\NullableType; +use Symfony\Component\TypeInfo\Type\ObjectType; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Context\ExecutionContextInterface; @@ -95,7 +97,7 @@ class Project extends AbstractStructuralDBElement #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\JoinColumn(name: 'parent_id')] #[Groups(['project:read', 'project:write'])] - #[ApiProperty(readableLink: false, writableLink: false)] + #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))] protected ?AbstractStructuralDBElement $parent = null; #[Groups(['project:read', 'project:write'])] From 641c8388c15d25e881dc592643409a3e9ff371e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 3 Jan 2026 00:55:49 +0100 Subject: [PATCH 082/235] Use xxh3 for generating hash keys instead of md5 as it offers better performance --- src/Doctrine/Helpers/FieldHelper.php | 4 ++-- src/Services/Attachments/FileTypeFilterTools.php | 2 +- .../InfoProviderSystem/Providers/OEMSecretsProvider.php | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Doctrine/Helpers/FieldHelper.php b/src/Doctrine/Helpers/FieldHelper.php index 11300db3..6b6583f7 100644 --- a/src/Doctrine/Helpers/FieldHelper.php +++ b/src/Doctrine/Helpers/FieldHelper.php @@ -104,7 +104,7 @@ final class FieldHelper { $db_platform = $qb->getEntityManager()->getConnection()->getDatabasePlatform(); - $key = 'field2_' . md5($field_expr); + $key = 'field2_' . hash('xxh3', $field_expr); //If we are on MySQL, we can just use the FIELD function if ($db_platform instanceof AbstractMySQLPlatform) { @@ -121,4 +121,4 @@ final class FieldHelper return $qb; } -} \ No newline at end of file +} diff --git a/src/Services/Attachments/FileTypeFilterTools.php b/src/Services/Attachments/FileTypeFilterTools.php index d689fda3..198d4f79 100644 --- a/src/Services/Attachments/FileTypeFilterTools.php +++ b/src/Services/Attachments/FileTypeFilterTools.php @@ -139,7 +139,7 @@ class FileTypeFilterTools { $filter = trim($filter); - return $this->cache->get('filter_exts_'.md5($filter), function (ItemInterface $item) use ($filter) { + return $this->cache->get('filter_exts_'.hash('xxh3', $filter), function (ItemInterface $item) use ($filter) { $elements = explode(',', $filter); $extensions = []; diff --git a/src/Services/InfoProviderSystem/Providers/OEMSecretsProvider.php b/src/Services/InfoProviderSystem/Providers/OEMSecretsProvider.php index b705e04a..48b6a6d8 100644 --- a/src/Services/InfoProviderSystem/Providers/OEMSecretsProvider.php +++ b/src/Services/InfoProviderSystem/Providers/OEMSecretsProvider.php @@ -397,13 +397,13 @@ class OEMSecretsProvider implements InfoProviderInterface * Generates a cache key for storing part details based on the provided provider ID. * * This method creates a unique cache key by prefixing the provider ID with 'part_details_' - * and hashing the provider ID using MD5 to ensure a consistent and compact key format. + * and hashing the provider ID using XXH3 to ensure a consistent and compact key format. * * @param string $provider_id The unique identifier of the provider or part. * @return string The generated cache key. */ private function getCacheKey(string $provider_id): string { - return 'oemsecrets_part_' . md5($provider_id); + return 'oemsecrets_part_' . hash('xxh3', $provider_id); } From 876cfc03750e8b128c9f4525039d6efabbaacfd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 3 Jan 2026 22:04:11 +0100 Subject: [PATCH 083/235] Updated dependencies --- composer.lock | 47 ++++++++++++++++++----------------------------- 1 file changed, 18 insertions(+), 29 deletions(-) diff --git a/composer.lock b/composer.lock index 1875c03f..bf7ecc7c 100644 --- a/composer.lock +++ b/composer.lock @@ -4997,16 +4997,16 @@ }, { "name": "jbtronics/settings-bundle", - "version": "v3.1.2", + "version": "v3.1.3", "source": { "type": "git", "url": "https://github.com/jbtronics/settings-bundle.git", - "reference": "f16bce21b54d202baabfe05cb7c64a14d43b9671" + "reference": "a99c6e4cde40b829c1643b89da506b9588b11eaf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jbtronics/settings-bundle/zipball/f16bce21b54d202baabfe05cb7c64a14d43b9671", - "reference": "f16bce21b54d202baabfe05cb7c64a14d43b9671", + "url": "https://api.github.com/repos/jbtronics/settings-bundle/zipball/a99c6e4cde40b829c1643b89da506b9588b11eaf", + "reference": "a99c6e4cde40b829c1643b89da506b9588b11eaf", "shasum": "" }, "require": { @@ -5067,7 +5067,7 @@ ], "support": { "issues": "https://github.com/jbtronics/settings-bundle/issues", - "source": "https://github.com/jbtronics/settings-bundle/tree/v3.1.2" + "source": "https://github.com/jbtronics/settings-bundle/tree/v3.1.3" }, "funding": [ { @@ -5079,7 +5079,7 @@ "type": "github" } ], - "time": "2025-11-30T22:22:49+00:00" + "time": "2026-01-02T23:58:02+00:00" }, { "name": "jfcherng/php-color-output", @@ -10009,16 +10009,16 @@ }, { "name": "spomky-labs/otphp", - "version": "11.3.0", + "version": "11.4.0", "source": { "type": "git", "url": "https://github.com/Spomky-Labs/otphp.git", - "reference": "2d8ccb5fc992b9cc65ef321fa4f00fefdb3f4b33" + "reference": "ec5ff751e87e67daca2b73a35cae0d0e1d20ad45" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/otphp/zipball/2d8ccb5fc992b9cc65ef321fa4f00fefdb3f4b33", - "reference": "2d8ccb5fc992b9cc65ef321fa4f00fefdb3f4b33", + "url": "https://api.github.com/repos/Spomky-Labs/otphp/zipball/ec5ff751e87e67daca2b73a35cae0d0e1d20ad45", + "reference": "ec5ff751e87e67daca2b73a35cae0d0e1d20ad45", "shasum": "" }, "require": { @@ -10029,18 +10029,7 @@ "symfony/deprecation-contracts": "^3.2" }, "require-dev": { - "ekino/phpstan-banned-code": "^1.0", - "infection/infection": "^0.26|^0.27|^0.28|^0.29", - "php-parallel-lint/php-parallel-lint": "^1.3", - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5.26|^10.0|^11.0", - "qossmic/deptrac-shim": "^1.0", - "rector/rector": "^1.0", - "symfony/phpunit-bridge": "^6.1|^7.0", - "symplify/easy-coding-standard": "^12.0" + "symfony/error-handler": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -10075,7 +10064,7 @@ ], "support": { "issues": "https://github.com/Spomky-Labs/otphp/issues", - "source": "https://github.com/Spomky-Labs/otphp/tree/11.3.0" + "source": "https://github.com/Spomky-Labs/otphp/tree/11.4.0" }, "funding": [ { @@ -10087,7 +10076,7 @@ "type": "patreon" } ], - "time": "2024-06-12T11:22:32+00:00" + "time": "2026-01-03T13:16:55+00:00" }, { "name": "spomky-labs/pki-framework", @@ -19049,12 +19038,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "412d91dc6342787fd733523797d9c9faf2ad3ea5" + "reference": "5ba14c800ff89c74333c22d56ca1c1f35c424805" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/412d91dc6342787fd733523797d9c9faf2ad3ea5", - "reference": "412d91dc6342787fd733523797d9c9faf2ad3ea5", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/5ba14c800ff89c74333c22d56ca1c1f35c424805", + "reference": "5ba14c800ff89c74333c22d56ca1c1f35c424805", "shasum": "" }, "conflict": { @@ -19115,7 +19104,7 @@ "backpack/filemanager": "<2.0.2|>=3,<3.0.9", "bacula-web/bacula-web": "<9.7.1", "badaso/core": "<=2.9.11", - "bagisto/bagisto": "<=2.3.7", + "bagisto/bagisto": "<2.3.10", "barrelstrength/sprout-base-email": "<1.2.7", "barrelstrength/sprout-forms": "<3.9", "barryvdh/laravel-translation-manager": "<0.6.8", @@ -20048,7 +20037,7 @@ "type": "tidelift" } ], - "time": "2025-12-30T23:05:26+00:00" + "time": "2026-01-02T22:05:49+00:00" }, { "name": "sebastian/cli-parser", From a5d7a5f1d32a4999ac329cb38c6a37c1e149015a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 3 Jan 2026 22:17:52 +0100 Subject: [PATCH 084/235] Downgrade symfony/type-info to 7.4.0 to prevent issue that fails proper type resolving of static --- composer.json | 1 + composer.lock | 42 +++++++++++++++++++++--------------------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/composer.json b/composer.json index 872edf95..20a5dcca 100644 --- a/composer.json +++ b/composer.json @@ -79,6 +79,7 @@ "symfony/string": "7.4.*", "symfony/translation": "7.4.*", "symfony/twig-bundle": "7.4.*", + "symfony/type-info": "7.4.0", "symfony/ux-translator": "^2.10", "symfony/ux-turbo": "^2.0", "symfony/validator": "7.4.*", diff --git a/composer.lock b/composer.lock index bf7ecc7c..3c3a201a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "624cf08821477aa7b8f6efc0d4300087", + "content-hash": "43757aac5f0141421893ff144ccc462f", "packages": [ { "name": "amphp/amp", @@ -13755,21 +13755,21 @@ }, { "name": "symfony/property-access", - "version": "v7.4.3", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "30aff8455647be949fc2e8fcef2847d5a6743c98" + "reference": "537626149d2910ca43eb9ce465654366bf4442f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/30aff8455647be949fc2e8fcef2847d5a6743c98", - "reference": "30aff8455647be949fc2e8fcef2847d5a6743c98", + "url": "https://api.github.com/repos/symfony/property-access/zipball/537626149d2910ca43eb9ce465654366bf4442f4", + "reference": "537626149d2910ca43eb9ce465654366bf4442f4", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/property-info": "^6.4.31|~7.3.9|^7.4.2|^8.0.3" + "symfony/property-info": "^6.4|^7.0|^8.0" }, "require-dev": { "symfony/cache": "^6.4|^7.0|^8.0", @@ -13812,7 +13812,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v7.4.3" + "source": "https://github.com/symfony/property-access/tree/v7.4.0" }, "funding": [ { @@ -13832,27 +13832,27 @@ "type": "tidelift" } ], - "time": "2025-12-18T10:35:58+00:00" + "time": "2025-09-08T21:14:32+00:00" }, { "name": "symfony/property-info", - "version": "v7.4.3", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "ea62b28cd68fb36e252abd77de61e505a0f2a7b1" + "reference": "c3c686e3d3a33a99f6967e69d6d5832acb7c25a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/ea62b28cd68fb36e252abd77de61e505a0f2a7b1", - "reference": "ea62b28cd68fb36e252abd77de61e505a0f2a7b1", + "url": "https://api.github.com/repos/symfony/property-info/zipball/c3c686e3d3a33a99f6967e69d6d5832acb7c25a1", + "reference": "c3c686e3d3a33a99f6967e69d6d5832acb7c25a1", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/string": "^6.4|^7.0|^8.0", - "symfony/type-info": "~7.3.8|^7.4.1|^8.0.1" + "symfony/type-info": "^7.3.5|^8.0" }, "conflict": { "phpdocumentor/reflection-docblock": "<5.2", @@ -13902,7 +13902,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.4.3" + "source": "https://github.com/symfony/property-info/tree/v7.4.0" }, "funding": [ { @@ -13922,7 +13922,7 @@ "type": "tidelift" } ], - "time": "2025-12-18T08:28:41+00:00" + "time": "2025-11-13T08:38:49+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -15432,16 +15432,16 @@ }, { "name": "symfony/type-info", - "version": "v7.4.1", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/type-info.git", - "reference": "ac5ab66b21c758df71b7210cf1033d1ac807f202" + "reference": "7f9743e921abcce92a03fc693530209c59e73076" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/type-info/zipball/ac5ab66b21c758df71b7210cf1033d1ac807f202", - "reference": "ac5ab66b21c758df71b7210cf1033d1ac807f202", + "url": "https://api.github.com/repos/symfony/type-info/zipball/7f9743e921abcce92a03fc693530209c59e73076", + "reference": "7f9743e921abcce92a03fc693530209c59e73076", "shasum": "" }, "require": { @@ -15491,7 +15491,7 @@ "type" ], "support": { - "source": "https://github.com/symfony/type-info/tree/v7.4.1" + "source": "https://github.com/symfony/type-info/tree/v7.4.0" }, "funding": [ { @@ -15511,7 +15511,7 @@ "type": "tidelift" } ], - "time": "2025-12-05T14:04:53+00:00" + "time": "2025-11-07T09:36:46+00:00" }, { "name": "symfony/uid", From 3e380f82d2477dc41d810cd990b574c149a1b442 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 3 Jan 2026 22:18:10 +0100 Subject: [PATCH 085/235] Revert "Declare nativeType of parent property explicitly as workaround for bug in symfony TypeInfo" This reverts commit 2f580c92d1004f5f1e99ef9071a0029e4a352cf6. --- src/Entity/Attachments/AttachmentType.php | 4 +--- src/Entity/Parts/Category.php | 4 +--- src/Entity/Parts/Footprint.php | 4 +--- src/Entity/Parts/Manufacturer.php | 4 +--- src/Entity/Parts/MeasurementUnit.php | 4 +--- src/Entity/Parts/PartCustomState.php | 4 +--- src/Entity/Parts/StorageLocation.php | 4 +--- src/Entity/Parts/Supplier.php | 4 +--- src/Entity/PriceInformations/Currency.php | 4 +--- src/Entity/ProjectSystem/Project.php | 4 +--- 10 files changed, 10 insertions(+), 30 deletions(-) diff --git a/src/Entity/Attachments/AttachmentType.php b/src/Entity/Attachments/AttachmentType.php index b5d1ff8c..22333c16 100644 --- a/src/Entity/Attachments/AttachmentType.php +++ b/src/Entity/Attachments/AttachmentType.php @@ -47,8 +47,6 @@ use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Annotation\Groups; -use Symfony\Component\TypeInfo\Type\NullableType; -use Symfony\Component\TypeInfo\Type\ObjectType; use Symfony\Component\Validator\Constraints as Assert; /** @@ -95,7 +93,7 @@ class AttachmentType extends AbstractStructuralDBElement #[ORM\ManyToOne(targetEntity: AttachmentType::class, inversedBy: 'children')] #[ORM\JoinColumn(name: 'parent_id')] #[Groups(['attachment_type:read', 'attachment_type:write'])] - #[ApiProperty(readableLink: true, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))] + #[ApiProperty(readableLink: true, writableLink: false)] protected ?AbstractStructuralDBElement $parent = null; /** diff --git a/src/Entity/Parts/Category.php b/src/Entity/Parts/Category.php index a9efd2fa..7fca81bc 100644 --- a/src/Entity/Parts/Category.php +++ b/src/Entity/Parts/Category.php @@ -50,8 +50,6 @@ use App\Entity\Parameters\CategoryParameter; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Annotation\Groups; -use Symfony\Component\TypeInfo\Type\NullableType; -use Symfony\Component\TypeInfo\Type\ObjectType; use Symfony\Component\Validator\Constraints as Assert; /** @@ -100,7 +98,7 @@ class Category extends AbstractPartsContainingDBElement #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\JoinColumn(name: 'parent_id')] #[Groups(['category:read', 'category:write'])] - #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))] + #[ApiProperty(readableLink: false, writableLink: false)] protected ?AbstractStructuralDBElement $parent = null; #[Groups(['category:read', 'category:write'])] diff --git a/src/Entity/Parts/Footprint.php b/src/Entity/Parts/Footprint.php index 251232c1..6b043562 100644 --- a/src/Entity/Parts/Footprint.php +++ b/src/Entity/Parts/Footprint.php @@ -49,8 +49,6 @@ use App\Entity\Parameters\FootprintParameter; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Annotation\Groups; -use Symfony\Component\TypeInfo\Type\NullableType; -use Symfony\Component\TypeInfo\Type\ObjectType; use Symfony\Component\Validator\Constraints as Assert; /** @@ -95,7 +93,7 @@ class Footprint extends AbstractPartsContainingDBElement #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\JoinColumn(name: 'parent_id')] #[Groups(['footprint:read', 'footprint:write'])] - #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))] + #[ApiProperty(readableLink: false, writableLink: false)] protected ?AbstractStructuralDBElement $parent = null; #[ORM\OneToMany(mappedBy: 'parent', targetEntity: self::class)] diff --git a/src/Entity/Parts/Manufacturer.php b/src/Entity/Parts/Manufacturer.php index f7bee4b8..0edf8232 100644 --- a/src/Entity/Parts/Manufacturer.php +++ b/src/Entity/Parts/Manufacturer.php @@ -48,8 +48,6 @@ use App\Entity\Parameters\ManufacturerParameter; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Annotation\Groups; -use Symfony\Component\TypeInfo\Type\NullableType; -use Symfony\Component\TypeInfo\Type\ObjectType; use Symfony\Component\Validator\Constraints as Assert; /** @@ -94,7 +92,7 @@ class Manufacturer extends AbstractCompany #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\JoinColumn(name: 'parent_id')] #[Groups(['manufacturer:read', 'manufacturer:write'])] - #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))] + #[ApiProperty(readableLink: false, writableLink: false)] protected ?AbstractStructuralDBElement $parent = null; #[ORM\OneToMany(mappedBy: 'parent', targetEntity: self::class)] diff --git a/src/Entity/Parts/MeasurementUnit.php b/src/Entity/Parts/MeasurementUnit.php index dfb7e1d4..6dd0b9f2 100644 --- a/src/Entity/Parts/MeasurementUnit.php +++ b/src/Entity/Parts/MeasurementUnit.php @@ -50,8 +50,6 @@ use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; use Symfony\Component\Serializer\Annotation\Groups; -use Symfony\Component\TypeInfo\Type\NullableType; -use Symfony\Component\TypeInfo\Type\ObjectType; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Constraints\Length; @@ -132,7 +130,7 @@ class MeasurementUnit extends AbstractPartsContainingDBElement #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\JoinColumn(name: 'parent_id')] #[Groups(['measurement_unit:read', 'measurement_unit:write'])] - #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))] + #[ApiProperty(readableLink: false, writableLink: false)] protected ?AbstractStructuralDBElement $parent = null; /** diff --git a/src/Entity/Parts/PartCustomState.php b/src/Entity/Parts/PartCustomState.php index 77530ff6..136ff984 100644 --- a/src/Entity/Parts/PartCustomState.php +++ b/src/Entity/Parts/PartCustomState.php @@ -46,8 +46,6 @@ use Doctrine\Common\Collections\Collection; use Doctrine\Common\Collections\Criteria; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Annotation\Groups; -use Symfony\Component\TypeInfo\Type\NullableType; -use Symfony\Component\TypeInfo\Type\ObjectType; use Symfony\Component\Validator\Constraints as Assert; /** @@ -89,7 +87,7 @@ class PartCustomState extends AbstractPartsContainingDBElement #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\JoinColumn(name: 'parent_id')] #[Groups(['part_custom_state:read', 'part_custom_state:write'])] - #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))] + #[ApiProperty(readableLink: false, writableLink: false)] protected ?AbstractStructuralDBElement $parent = null; /** diff --git a/src/Entity/Parts/StorageLocation.php b/src/Entity/Parts/StorageLocation.php index ca76df59..6c455ae5 100644 --- a/src/Entity/Parts/StorageLocation.php +++ b/src/Entity/Parts/StorageLocation.php @@ -50,8 +50,6 @@ use App\Entity\UserSystem\User; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Annotation\Groups; -use Symfony\Component\TypeInfo\Type\NullableType; -use Symfony\Component\TypeInfo\Type\ObjectType; use Symfony\Component\Validator\Constraints as Assert; /** @@ -99,7 +97,7 @@ class StorageLocation extends AbstractPartsContainingDBElement #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\JoinColumn(name: 'parent_id')] #[Groups(['location:read', 'location:write'])] - #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))] + #[ApiProperty(readableLink: false, writableLink: false)] protected ?AbstractStructuralDBElement $parent = null; #[Groups(['location:read', 'location:write'])] diff --git a/src/Entity/Parts/Supplier.php b/src/Entity/Parts/Supplier.php index a073e9e4..2c004e9e 100644 --- a/src/Entity/Parts/Supplier.php +++ b/src/Entity/Parts/Supplier.php @@ -53,8 +53,6 @@ use Brick\Math\BigDecimal; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Annotation\Groups; -use Symfony\Component\TypeInfo\Type\NullableType; -use Symfony\Component\TypeInfo\Type\ObjectType; use Symfony\Component\Validator\Constraints as Assert; /** @@ -101,7 +99,7 @@ class Supplier extends AbstractCompany #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\JoinColumn(name: 'parent_id')] #[Groups(['supplier:read', 'supplier:write'])] - #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))] + #[ApiProperty(readableLink: false, writableLink: false)] protected ?AbstractStructuralDBElement $parent = null; /** diff --git a/src/Entity/PriceInformations/Currency.php b/src/Entity/PriceInformations/Currency.php index 4bf9df4e..ce20caf8 100644 --- a/src/Entity/PriceInformations/Currency.php +++ b/src/Entity/PriceInformations/Currency.php @@ -52,8 +52,6 @@ use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; use Symfony\Component\Serializer\Annotation\Groups; -use Symfony\Component\TypeInfo\Type\NullableType; -use Symfony\Component\TypeInfo\Type\ObjectType; use Symfony\Component\Validator\Constraints as Assert; /** @@ -127,7 +125,7 @@ class Currency extends AbstractStructuralDBElement #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\JoinColumn(name: 'parent_id')] #[Groups(['currency:read', 'currency:write'])] - #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))] + #[ApiProperty(readableLink: false, writableLink: false)] protected ?AbstractStructuralDBElement $parent = null; /** diff --git a/src/Entity/ProjectSystem/Project.php b/src/Entity/ProjectSystem/Project.php index 53f74af0..a103d694 100644 --- a/src/Entity/ProjectSystem/Project.php +++ b/src/Entity/ProjectSystem/Project.php @@ -49,8 +49,6 @@ use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use InvalidArgumentException; use Symfony\Component\Serializer\Annotation\Groups; -use Symfony\Component\TypeInfo\Type\NullableType; -use Symfony\Component\TypeInfo\Type\ObjectType; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Context\ExecutionContextInterface; @@ -97,7 +95,7 @@ class Project extends AbstractStructuralDBElement #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\JoinColumn(name: 'parent_id')] #[Groups(['project:read', 'project:write'])] - #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))] + #[ApiProperty(readableLink: false, writableLink: false)] protected ?AbstractStructuralDBElement $parent = null; #[Groups(['project:read', 'project:write'])] From 0e61a84ea6209c2d5ebd90954537bc2a3a1e5c85 Mon Sep 17 00:00:00 2001 From: fsbrc Date: Sun, 4 Jan 2026 17:01:06 +0100 Subject: [PATCH 086/235] Allow to view part ID in project BOM MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * added feature of part-id in project bom view * Made part id column label translatable --------- Co-authored-by: Jan Böhmer --- src/DataTables/ProjectBomEntriesDataTable.php | 13 +- translations/messages.en.xlf | 118 +++++++++--------- 2 files changed, 73 insertions(+), 58 deletions(-) diff --git a/src/DataTables/ProjectBomEntriesDataTable.php b/src/DataTables/ProjectBomEntriesDataTable.php index fcb06984..96e69d9a 100644 --- a/src/DataTables/ProjectBomEntriesDataTable.php +++ b/src/DataTables/ProjectBomEntriesDataTable.php @@ -29,6 +29,7 @@ use App\DataTables\Helpers\PartDataTableHelper; use App\Entity\Attachments\Attachment; use App\Entity\Parts\Part; use App\Entity\ProjectSystem\ProjectBOMEntry; +use App\Services\ElementTypeNameGenerator; use App\Services\EntityURLGenerator; use App\Services\Formatters\AmountFormatter; use Doctrine\ORM\QueryBuilder; @@ -41,7 +42,8 @@ use Symfony\Contracts\Translation\TranslatorInterface; class ProjectBomEntriesDataTable implements DataTableTypeInterface { - public function __construct(protected TranslatorInterface $translator, protected PartDataTableHelper $partDataTableHelper, protected EntityURLGenerator $entityURLGenerator, protected AmountFormatter $amountFormatter) + public function __construct(protected TranslatorInterface $translator, protected PartDataTableHelper $partDataTableHelper, + protected EntityURLGenerator $entityURLGenerator, protected AmountFormatter $amountFormatter, private readonly ElementTypeNameGenerator $elementTypeNameGenerator) { } @@ -79,7 +81,14 @@ class ProjectBomEntriesDataTable implements DataTableTypeInterface return htmlspecialchars($this->amountFormatter->format($context->getQuantity(), $context->getPart()->getPartUnit())); }, ]) - + ->add('partId', TextColumn::class, [ + 'label' => $this->translator->trans('project.bom.part_id'), + 'visible' => true, + 'orderField' => 'part.id', + 'render' => function ($value, ProjectBOMEntry $context) { + return $context->getPart() instanceof Part ? (string) $context->getPart()->getId() : ''; + }, + ]) ->add('name', TextColumn::class, [ 'label' => $this->translator->trans('part.table.name'), 'orderField' => 'NATSORT(part.name)', diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 0be77adb..34957e7c 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -1,4 +1,4 @@ - + @@ -221,7 +221,7 @@ 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.]]> @@ -649,10 +649,10 @@ 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!]]>
    @@ -803,9 +803,9 @@ The user will have to set up all two-factor authentication methods again and pri entity.delete.message - This can not be undone! -<br> -Sub elements will be moved upwards. + +Sub elements will be moved upwards.]]> @@ -1359,7 +1359,7 @@ Sub elements will be moved upwards. 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]]> @@ -1381,7 +1381,7 @@ Sub elements will be moved upwards. 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]]> @@ -1623,7 +1623,7 @@ Sub elements will be moved upwards. 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]]> @@ -1653,7 +1653,7 @@ Sub elements will be moved upwards. email.pw_reset.valid_unit %date% - The reset token will be valid until <i>%date%</i>. + %date%.]]> @@ -3526,8 +3526,8 @@ Sub elements will be moved upwards. 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 no longer as well protected against attackers! + +Also note that without two-factor authentication, your account is no longer as well protected against attackers!]]> @@ -3547,7 +3547,7 @@ Also note that without two-factor authentication, your account is no longer as w 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)]]> @@ -3789,8 +3789,8 @@ Also note that without two-factor authentication, your account is no longer as w 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.]]> @@ -5236,7 +5236,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can 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.]]> @@ -7084,15 +7084,15 @@ Exampletown mass_creation.lines.placeholder - Element 1 + +Element 1 -> Element 1.1 +Element 1 -> Element 1.2]]> @@ -9152,25 +9152,25 @@ Element 1 -> Element 1.2 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 >= + =]]> @@ -9278,7 +9278,7 @@ Element 1 -> Element 1.2 parts_list.search.searching_for - Searching parts with keyword <b>%keyword%</b> + %keyword%]]> @@ -10058,7 +10058,7 @@ Element 1 -> Element 1.2 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"]]> @@ -10082,13 +10082,13 @@ Element 1 -> Element 1.2 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.]]> @@ -10100,7 +10100,7 @@ Element 1 -> Element 1.2 homepage.forum.text - For questions about Part-DB use the <a href="%href%" class="link-external" target="_blank">discussion forum</a> + discussion forum]]> @@ -10766,7 +10766,7 @@ Element 1 -> Element 1.2 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.]]> @@ -10958,7 +10958,7 @@ Element 1 -> Element 1.2 part.filter.lessThanDesired - In stock less than desired (total amount < min. amount) + @@ -11764,13 +11764,13 @@ Please note, that you can not impersonate a disabled user. If you try you will g 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.]]> @@ -12124,7 +12124,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.element14.apiKey.help - You can register for an API key on <a href="https://partner.element14.com/">https://partner.element14.com/</a>. + https://partner.element14.com/.]]> @@ -12136,7 +12136,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.element14.storeId.help - The store domain to retrieve the data from. This decides the language and currency of results. See <a href="https://partner.element14.com/docs/Product_Search_API_REST__Description">here</a> for a list of valid domains. + here for a list of valid domains.]]> @@ -12154,7 +12154,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.tme.token.help - You can get an API token and secret on <a href="https://developers.tme.eu/en/">https://developers.tme.eu/en/</a>. + https://developers.tme.eu/en/.]]> @@ -12202,7 +12202,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.mouser.apiKey.help - You can register for an API key on <a href="https://eu.mouser.com/api-hub/">https://eu.mouser.com/api-hub/</a>. + https://eu.mouser.com/api-hub/.]]> @@ -12280,7 +12280,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.system.attachments - Attachments & Files + @@ -12304,7 +12304,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.system.attachments.allowDownloads.help - With this option users can download external files into Part-DB by providing an URL. <b>Attention: This can be a security issue, as it might allow users to access intranet ressources via Part-DB!</b> + Attention: This can be a security issue, as it might allow users to access intranet ressources via Part-DB!]]> @@ -12478,8 +12478,8 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.system.localization.base_currency_description - The currency that is used to store price information and exchange rates in. This currency is assumed, when no currency is set for a price information. -<b>Please note that the currencies are not converted, when changing this value. So changing the default currency after you already added price information, will result in wrong prices!</b> + Please note that the currencies are not converted, when changing this value. So changing the default currency after you already added price information, will result in wrong prices!]]> @@ -12509,7 +12509,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.misc.kicad_eda.category_depth.help - This value determines the depth of the category tree, that is visible inside KiCad. 0 means that only the top level categories are visible. Set to a value > 0 to show more levels. Set to -1, to show all parts of Part-DB inside a sigle cnategory in KiCad. + 0 to show more levels. Set to -1, to show all parts of Part-DB inside a sigle cnategory in KiCad.]]> @@ -12527,7 +12527,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.behavior.sidebar.items.help - The menus which appear at the sidebar by default. Order of items can be changed via drag & drop. + @@ -12575,7 +12575,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.behavior.table.parts_default_columns.help - The columns to show by default in part tables. Order of items can be changed via drag & drop. + @@ -12629,7 +12629,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.oemsecrets.sortMode.M - Completeness & Manufacturer name + @@ -13289,7 +13289,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.behavior.homepage.items.help - The items to show at the homepage. Order can be changed via drag & drop. + @@ -14003,7 +14003,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.system.localization.language_menu_entries.description - The languages to show in the language drop-down menu. Order can be changed via drag & drop. Leave empty to show all available languages. + @@ -14279,13 +14279,19 @@ Please note that this system is currently experimental, and the synonyms defined - - Do not remove! Used for datatables rendering. - - - datatable.datatable.lengthMenu - _MENU_ - + + Do not remove! Used for datatables rendering. + + + datatable.datatable.lengthMenu + _MENU_ + + + + + project.bom.part_id + [Part] ID +
    From 74862c7bb8b88232c3f57a323a5fa9c759318948 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 4 Jan 2026 17:02:23 +0100 Subject: [PATCH 087/235] Bump actions/cache from 4 to 5 (#1163) Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5. - [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/v4...v5) --- updated-dependencies: - dependency-name: actions/cache dependency-version: '5' 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/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 8ce7ccf6..a1acd1fd 100644 --- a/.github/workflows/assets_artifact_build.yml +++ b/.github/workflows/assets_artifact_build.yml @@ -37,7 +37,7 @@ jobs: run: | echo "::set-output name=dir::$(composer config cache-files-dir)" - - uses: actions/cache@v4 + - uses: actions/cache@v5 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} @@ -51,7 +51,7 @@ jobs: id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - - uses: actions/cache@v4 + - uses: actions/cache@v5 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 d8b099eb..f47ce87b 100644 --- a/.github/workflows/static_analysis.yml +++ b/.github/workflows/static_analysis.yml @@ -34,7 +34,7 @@ jobs: run: | echo "::set-output name=dir::$(composer config cache-files-dir)" - - uses: actions/cache@v4 + - uses: actions/cache@v5 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 822f5af6..3df1955a 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -81,7 +81,7 @@ jobs: id: composer-cache run: | echo "::set-output name=dir::$(composer config cache-files-dir)" - - uses: actions/cache@v4 + - uses: actions/cache@v5 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} @@ -92,7 +92,7 @@ jobs: id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - - uses: actions/cache@v4 + - uses: actions/cache@v5 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 a23267130207081150d47f98c4fb89fe8fb40067 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 4 Jan 2026 17:05:03 +0100 Subject: [PATCH 088/235] Bump actions/upload-artifact from 5 to 6 (#1162) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '6' 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/assets_artifact_build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/assets_artifact_build.yml b/.github/workflows/assets_artifact_build.yml index a1acd1fd..3409b7fd 100644 --- a/.github/workflows/assets_artifact_build.yml +++ b/.github/workflows/assets_artifact_build.yml @@ -80,13 +80,13 @@ jobs: run: zip -r /tmp/partdb_assets.zip public/build/ vendor/ - name: Upload assets artifact - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v6 with: name: Only dependencies and built assets path: /tmp/partdb_assets.zip - name: Upload full artifact - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v6 with: name: Full Part-DB including dependencies and built assets path: /tmp/partdb_with_assets.zip From 8957e55a9e1e388dace98bd61e8095c6a242fc44 Mon Sep 17 00:00:00 2001 From: Marc Date: Sun, 4 Jan 2026 17:14:27 +0100 Subject: [PATCH 089/235] Increase default height of the PDF preview container from 250px to 280px and so Chromium-based browsers display the PDF toolbar by default. Fixes #1165. (#1171) --- templates/label_system/dialog.html.twig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/label_system/dialog.html.twig b/templates/label_system/dialog.html.twig index b9149aa3..11877a4c 100644 --- a/templates/label_system/dialog.html.twig +++ b/templates/label_system/dialog.html.twig @@ -135,8 +135,8 @@ {% block additional_content %} {% if pdf_data %} -
    - +
    +
    {% endif %} From eaaf3ac75c9a26cb2c2b9427ef3c61ea1a096143 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 4 Jan 2026 17:36:53 +0100 Subject: [PATCH 090/235] Bring provider capabilities into a fixed order for better comparison Fixes #1166 and made PR #1167 obsolete --- .../Providers/ProviderCapabilities.php | 21 ++++++++++++++++--- .../info_providers/providers.macro.html.twig | 2 +- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/Services/InfoProviderSystem/Providers/ProviderCapabilities.php b/src/Services/InfoProviderSystem/Providers/ProviderCapabilities.php index fd67cd2c..bced19de 100644 --- a/src/Services/InfoProviderSystem/Providers/ProviderCapabilities.php +++ b/src/Services/InfoProviderSystem/Providers/ProviderCapabilities.php @@ -31,9 +31,6 @@ enum ProviderCapabilities /** Basic information about a part, like the name, description, part number, manufacturer etc */ case BASIC; - /** Information about the footprint of a part */ - case FOOTPRINT; - /** Provider can provide a picture for a part */ case PICTURE; @@ -43,6 +40,24 @@ enum ProviderCapabilities /** Provider can provide prices for a part */ case PRICE; + /** Information about the footprint of a part */ + case FOOTPRINT; + + /** + * Get the order index for displaying capabilities in a stable order. + * @return int + */ + public function getOrderIndex(): int + { + return match($this) { + self::BASIC => 1, + self::PICTURE => 2, + self::DATASHEET => 3, + self::PRICE => 4, + self::FOOTPRINT => 5, + }; + } + public function getTranslationKey(): string { return 'info_providers.capabilities.' . match($this) { diff --git a/templates/info_providers/providers.macro.html.twig b/templates/info_providers/providers.macro.html.twig index bf530ebd..bec8f24b 100644 --- a/templates/info_providers/providers.macro.html.twig +++ b/templates/info_providers/providers.macro.html.twig @@ -27,7 +27,7 @@ title="{% trans %}info_providers.settings.title{% endtrans %}" > {% endif %} - {% for capability in provider.capabilities %} + {% for capability in provider.capabilities|sort((a, b) => a.orderIndex <=> b.orderIndex) %} {# @var capability \App\Services\InfoProviderSystem\Providers\ProviderCapabilities #} From c1d4ce77dbda1252d880bf1bdb52f61f42aced1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 4 Jan 2026 17:50:24 +0100 Subject: [PATCH 091/235] Fixed exception when digikey has no media available for a part Makes PR #1154 obsolete --- .../InfoProviderSystem/Providers/DigikeyProvider.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/Services/InfoProviderSystem/Providers/DigikeyProvider.php b/src/Services/InfoProviderSystem/Providers/DigikeyProvider.php index 423b5244..d7eb6e4f 100644 --- a/src/Services/InfoProviderSystem/Providers/DigikeyProvider.php +++ b/src/Services/InfoProviderSystem/Providers/DigikeyProvider.php @@ -311,6 +311,14 @@ class DigikeyProvider implements InfoProviderInterface 'auth_bearer' => $this->authTokenManager->getAlwaysValidTokenString(self::OAUTH_APP_NAME) ]); + if ($response->getStatusCode() === 404) { + //No media found + return [ + 'datasheets' => [], + 'images' => [], + ]; + } + $media_array = $response->toArray(); foreach ($media_array['MediaLinks'] as $media_link) { From 89322d329c7774bc69fdb1a0e08c03f2f84fc08d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 4 Jan 2026 18:00:49 +0100 Subject: [PATCH 092/235] New translations messages.en.xlf (English) --- translations/messages.en.xlf | 46 ++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index b651e94f..5ceb03f4 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -9938,13 +9938,13 @@ Element 1 -> Element 1.2 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! @@ -14159,121 +14159,121 @@ Please note that this system is currently experimental, and the synonyms defined - + project_bom_entry.labelp BOM entries - + part_lot.labelp Part lots - + orderdetail.labelp Order details - + pricedetail.labelp Price details - + parameter.labelp Parameters - + part_association.labelp Part associations - + bulk_info_provider_import_job.labelp Bulk info provider imports - + bulk_info_provider_import_job_part.labelp Bulk import job part - + password_toggle.hide Hide - + password_toggle.show Show - + settings.misc.ipn_suggest.regex.help.placeholder e.g. Format: 3–4 alphanumeric segments (any number) separated by "-", followed by "-" and 4 digits, e.g., PCOM-RES-0001 - + part.edit.tab.advanced.ipn.prefix.global_prefix The global IPN prefix, common across all parts - + settings.misc.ipn_suggest.fallbackPrefix Fallback prefix - + settings.misc.ipn_suggest.fallbackPrefix.help The IPN prefix that should be used, if a category has no prefix defined. - + settings.misc.ipn_suggest.numberSeparator Number separator - + settings.misc.ipn_suggest.numberSeparator.help The separator character used to separate the IPN number from the prefix. - + settings.misc.ipn_suggest.categorySeparator Category separator - + settings.misc.ipn_suggest.categorySeparator.help The separator character used to separate different levels of category prefixes. - + settings.misc.ipn_suggest.globalPrefix Global prefix - + settings.misc.ipn_suggest.globalPrefix.help If enabled, an option for to generate IPN with this global prefix, shared across parts in all categories. @@ -14288,7 +14288,7 @@ Please note that this system is currently experimental, and the synonyms defined - + project.bom.part_id [Part] ID From 7116c2ceb984296161d1d32167dfa9b7016ee2c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 4 Jan 2026 20:03:14 +0100 Subject: [PATCH 093/235] Removed unused service import --- src/DataTables/ProjectBomEntriesDataTable.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/DataTables/ProjectBomEntriesDataTable.php b/src/DataTables/ProjectBomEntriesDataTable.php index 96e69d9a..433f6f78 100644 --- a/src/DataTables/ProjectBomEntriesDataTable.php +++ b/src/DataTables/ProjectBomEntriesDataTable.php @@ -43,7 +43,7 @@ use Symfony\Contracts\Translation\TranslatorInterface; class ProjectBomEntriesDataTable implements DataTableTypeInterface { public function __construct(protected TranslatorInterface $translator, protected PartDataTableHelper $partDataTableHelper, - protected EntityURLGenerator $entityURLGenerator, protected AmountFormatter $amountFormatter, private readonly ElementTypeNameGenerator $elementTypeNameGenerator) + protected EntityURLGenerator $entityURLGenerator, protected AmountFormatter $amountFormatter) { } From be35c36c58ece478af73f7685d6bad8515fca8a6 Mon Sep 17 00:00:00 2001 From: Marc Date: Sun, 4 Jan 2026 21:05:47 +0100 Subject: [PATCH 094/235] Added info provider for Buerklin (#1151) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fixed Typos and mistranslations in GDPR mode (DSGVO Modus) Fixed Typo enviroment * Create BuerklinProvider based on LCSCProvider * Update GET URLs for Buerklin * Add getToken function analog to Octopart * Remove line break in docs * Remove trailing / in ENDPOINT_URL Use Autowire to use values of environment variables Remove unwanted Code from LCSC-Provider Map json response to DTO variables * Fix variable reference errors ($term → $keyword) Ensure array keys exist before accessing them Optimize API calls to prevent unnecessary requests Improve error handling for better debugging Enhance readability and maintainability of functions * Bumped version v1.16.2 * Update BuerklinProvider.php Change Order of Capabilities * Change order of capabilities in LCSCProvider.php * Change order of capabilities in PollinProvider.php * Try to fix getToken BuerklinProvider.php * Add ip_buerklin_oauth to knpu_oauth2_client.yaml * Update buerklin authorize URL in knpu_oauth2_client.yaml * Update knpu_oauth2_client.yaml * Adapt Buerklin InfoProvider to new Settings mechanism * According to Buerklin API spec it's really 'token' as urlAuthorize endpoint * Rückgabewert ist schon ein Array deshalb kein toArray * Fix API-Access, add image, price and parameter retrieval (Datasheets not yet implemented because it is not available in the API response) * Add Caching of requests, use default query params (language and currency) using a function, Fix Footprint assignment, translate German code comments * Remove DATASHEET from ProviderCapabilities because the Bürklin API doesn't include Datasheet URLs at the moment, more reverse engineering needed * Update BuerklinSettings with existing translatable strings * Improve Buerklin Settings Page * Added Translation strings for Buerklin Info Provider * Improve Buerklin Provider help message * Adapt Buerklin-provider to new settings system * Adapt Buerklin-provider to new settings system: add missing instance of BuerklinSettings * Improve Compliance Parameters parsing * Remove language-dependent RoHs Date code and use shortened ISO format, Add Customs Code without parseValueField * Fix no results for keyword search * Implement BatchInfoProviderInterface for Buerklin Provider * Rename searchBatch to searchByKeywordsBatch to correctly implement BatchInfoProviderInterface * Fix Bulk Info Provider Import for Buerklin * Tranlate comments to English to prepare for Pull-Request * Add phpUnit unit tests for BuerklinProvider * Try fixing PHPStan issues * Remove OAuthTokenManager from BuerklinProviderTest Removed OAuthTokenManager mock from BuerklinProviderTest setup. * Fix Settings must not be instantiated directly * Fix UnitTest for value_typ * https://github.com/Part-DB/Part-DB-server/pull/1151/files/edd5fb3319e9c8c4470476a70b6f398e3d545550#r2622249199 Revert "Change order of capabilities in LCSCProvider.php" This reverts commit dfd6f33e52299377f3537285b2ff0bc77fa6e1af. * https://github.com/Part-DB/Part-DB-server/pull/1151/files/edd5fb3319e9c8c4470476a70b6f398e3d545550#r2622249861 Revert "Change order of capabilities in PollinProvider.php" This reverts commit fc2e7265be3e7d76576ffa9a3630300190b41dd3. * Use language setting for ProductShortURL * Update default language for Buerklin provider to English in documentation * Add suggested improvements from SonarQube * Removed unused use directives * Revert SonarQube proposed change. Having more than one return is acceptable nowadays * Improve getProviderInfo: disable oauth_app_name, add settings_class, improve disabled_help * Implement retrieveROPCToken as proposed in https://github.com/Part-DB/Part-DB-server/pull/1151#discussion_r2622976206 * Add missing ) to retrieveROPCToken * add use OAuthTokenManager and create instance in constructor * Revert the following commits that tried to implement getToken using OAuthTokenManager Revert "add use OAuthTokenManager and create instance in constructor"This reverts commit 2a1e7c9b0974ebd7e082d5a2fa62753d6254a767.Revert "Add missing ) to retrieveROPCToken"This reverts commit 8df5cfc49e774127d906b99802211eb63ad7de04. Revert "Implement retrieveROPCToken as proposed in https://github.com/Part-DB/Part-DB-server/pull/1151#discussion_r2622976206" This reverts commit 66cc732082da07bcc689d278abc7c0bc128140b7. * Remove OAuthTokenManager leftovers * Disable buerklin provider if settings fields are empty * Improved docs * Added TODO comment --------- Co-authored-by: root Co-authored-by: Jan Böhmer --- config/packages/knpu_oauth2_client.yaml | 2 +- docs/usage/information_provider_system.md | 18 + .../Providers/BuerklinProvider.php | 639 ++++++++++++++++++ .../Providers/PollinProvider.php | 2 +- .../InfoProviderSystem/BuerklinSettings.php | 84 +++ .../InfoProviderSettings.php | 3 + .../Providers/BuerklinProviderTest.php | 271 ++++++++ translations/messages.de.xlf | 148 ++-- translations/messages.en.xlf | 117 ++-- 9 files changed, 1170 insertions(+), 114 deletions(-) create mode 100644 src/Services/InfoProviderSystem/Providers/BuerklinProvider.php create mode 100644 src/Settings/InfoProviderSystem/BuerklinSettings.php create mode 100644 tests/Services/InfoProviderSystem/Providers/BuerklinProviderTest.php diff --git a/config/packages/knpu_oauth2_client.yaml b/config/packages/knpu_oauth2_client.yaml index 5e56d5c5..4967684e 100644 --- a/config/packages/knpu_oauth2_client.yaml +++ b/config/packages/knpu_oauth2_client.yaml @@ -35,4 +35,4 @@ knpu_oauth2_client: provider_options: urlAuthorize: 'https://identity.nexar.com/connect/authorize' urlAccessToken: 'https://identity.nexar.com/connect/token' - urlResourceOwnerDetails: '' \ No newline at end of file + urlResourceOwnerDetails: '' diff --git a/docs/usage/information_provider_system.md b/docs/usage/information_provider_system.md index c6d4c83f..13df7f10 100644 --- a/docs/usage/information_provider_system.md +++ b/docs/usage/information_provider_system.md @@ -260,6 +260,24 @@ This is not an official API and could break at any time. So use it at your own r The following env configuration options are available: * `PROVIDER_POLLIN_ENABLED`: Set this to `1` to enable the Pollin provider +### Buerklin + +The Buerklin provider uses the [Buerklin API](https://www.buerklin.com/en/services/eprocurement/) to search for parts and get information. +To use it you have to request access to the API. +You will get an e-mail with the client ID and client secret, which you have to put in the Part-DB configuration (see below). + +Please note that the Buerklin API is limited to 100 requests/minute per IP address and +access to the Authentication server is limited to 10 requests/minute per IP address + +The following env configuration options are available: + +* `PROVIDER_BUERKLIN_CLIENT_ID`: The client ID you got from Buerklin (mandatory) +* `PROVIDER_BUERKLIN_SECRET`: The client secret you got from Buerklin (mandatory) +* `PROVIDER_BUERKLIN_USERNAME`: The username you got from Buerklin (mandatory) +* `PROVIDER_BUERKLIN_PASSWORD`: The password you got from Buerklin (mandatory) +* `PROVIDER_BUERKLIN_CURRENCY`: The currency you want to get prices in if available (optional, 3 letter ISO-code, default: `EUR`). +* `PROVIDER_BUERKLIN_LANGUAGE`: The language you want to get the descriptions in. Possible values: `de` = German, `en` = English. (optional, default: `en`) + ### Custom provider To create a custom provider, you have to create a new class implementing the `InfoProviderInterface` interface. As long diff --git a/src/Services/InfoProviderSystem/Providers/BuerklinProvider.php b/src/Services/InfoProviderSystem/Providers/BuerklinProvider.php new file mode 100644 index 00000000..07125c73 --- /dev/null +++ b/src/Services/InfoProviderSystem/Providers/BuerklinProvider.php @@ -0,0 +1,639 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Services\InfoProviderSystem\Providers; + +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\PurchaseInfoDTO; +use App\Services\InfoProviderSystem\DTOs\SearchResultDTO; +use App\Settings\InfoProviderSystem\BuerklinSettings; +use Psr\Cache\CacheItemPoolInterface; +use Symfony\Contracts\HttpClient\HttpClientInterface; + +class BuerklinProvider implements BatchInfoProviderInterface +{ + + private const ENDPOINT_URL = 'https://www.buerklin.com/buerklinws/v2/buerklin'; + + public const DISTRIBUTOR_NAME = 'Buerklin'; + + private const CACHE_TTL = 600; + /** + * Local in-request cache to avoid hitting the PSR cache repeatedly for the same product. + * @var array + */ + private array $productCache = []; + + public function __construct( + private readonly HttpClientInterface $client, + private readonly CacheItemPoolInterface $partInfoCache, + private readonly BuerklinSettings $settings, + ) { + + } + + /** + * Gets the latest OAuth token for the Buerklin API, or creates a new one if none is available + * TODO: Rework this to use the OAuth token manager system in the database... + * @return string + */ + private function getToken(): string + { + // Cache token to avoid hammering the auth server on every request + $cacheKey = 'buerklin.oauth.token'; + $item = $this->partInfoCache->getItem($cacheKey); + + if ($item->isHit()) { + $token = $item->get(); + if (is_string($token) && $token !== '') { + return $token; + } + } + + // Buerklin OAuth2 password grant (ROPC) + $resp = $this->client->request('POST', 'https://www.buerklin.com/authorizationserver/oauth/token/', [ + 'headers' => [ + 'Accept' => 'application/json', + 'Content-Type' => 'application/x-www-form-urlencoded', + ], + 'body' => [ + 'grant_type' => 'password', + 'client_id' => $this->settings->clientId, + 'client_secret' => $this->settings->secret, + 'username' => $this->settings->username, + 'password' => $this->settings->password, + ], + ]); + + $data = $resp->toArray(false); + + if (!isset($data['access_token'])) { + throw new \RuntimeException( + 'Invalid token response from Buerklin: HTTP ' . $resp->getStatusCode() . ' body=' . $resp->getContent(false) + ); + } + + $token = (string) $data['access_token']; + + // Cache for (expires_in - 30s) if available + $ttl = 300; + if (isset($data['expires_in']) && is_numeric($data['expires_in'])) { + $ttl = max(60, (int) $data['expires_in'] - 30); + } + + $item->set($token); + $item->expiresAfter($ttl); + $this->partInfoCache->save($item); + + return $token; + } + + private function getDefaultQueryParams(): array + { + return [ + 'curr' => $this->settings->currency ?: 'EUR', + 'language' => $this->settings->language ?: 'en', + ]; + } + + private function getProduct(string $code): array + { + $code = strtoupper(trim($code)); + if ($code === '') { + throw new \InvalidArgumentException('Product code must not be empty.'); + } + + $cacheKey = sprintf( + 'buerklin.product.%s', + md5($code . '|' . $this->settings->language . '|' . $this->settings->currency) + ); + + if (isset($this->productCache[$cacheKey])) { + return $this->productCache[$cacheKey]; + } + + $item = $this->partInfoCache->getItem($cacheKey); + if ($item->isHit() && is_array($cached = $item->get())) { + return $this->productCache[$cacheKey] = $cached; + } + + $product = $this->makeAPICall('/products/' . rawurlencode($code) . '/'); + + $item->set($product); + $item->expiresAfter(self::CACHE_TTL); + $this->partInfoCache->save($item); + + return $this->productCache[$cacheKey] = $product; + } + + private function makeAPICall(string $endpoint, array $queryParams = []): array + { + try { + $response = $this->client->request('GET', self::ENDPOINT_URL . $endpoint, [ + 'auth_bearer' => $this->getToken(), + 'headers' => ['Accept' => 'application/json'], + 'query' => array_merge($this->getDefaultQueryParams(), $queryParams), + ]); + + return $response->toArray(); + } catch (\Exception $e) { + throw new \RuntimeException("Buerklin API request failed: " . + "Endpoint: " . $endpoint . + "Token: [redacted] " . + "QueryParams: " . json_encode($queryParams, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . " " . + "Exception message: " . $e->getMessage()); + } + } + + + public function getProviderInfo(): array + { + return [ + 'name' => 'Buerklin', + 'description' => 'This provider uses the Buerklin API to search for parts.', + 'url' => 'https://www.buerklin.com/', + 'disabled_help' => 'Configure the API Client ID, Secret, Username and Password provided by Buerklin in the provider settings to enable.', + 'settings_class' => BuerklinSettings::class + ]; + } + + public function getProviderKey(): string + { + return 'buerklin'; + } + + // This provider is considered active if settings are present + public function isActive(): bool + { + // The client credentials and user credentials must be set + return $this->settings->clientId !== null && $this->settings->clientId !== '' + && $this->settings->secret !== null && $this->settings->secret !== '' + && $this->settings->username !== null && $this->settings->username !== '' + && $this->settings->password !== null && $this->settings->password !== ''; + } + + /** + * Sanitizes a field by removing any HTML tags and other unwanted characters + * @param string|null $field + * @return string|null + */ + private function sanitizeField(?string $field): ?string + { + if ($field === null) { + return null; + } + + return strip_tags($field); + } + + /** + * Takes a deserialized JSON object of the product and returns a PartDetailDTO + * @param array $product + * @return PartDetailDTO + */ + private function getPartDetail(array $product): PartDetailDTO + { + // If this is a search-result object, it may not contain prices/features/images -> reload full details. + if ((!isset($product['price']) && !isset($product['volumePrices'])) && isset($product['code'])) { + try { + $product = $this->getProduct((string) $product['code']); + } catch (\Throwable $e) { + // If reload fails, keep the partial product data and continue. + } + } + + // Extract images from API response + $productImages = $this->getProductImages($product['images'] ?? null); + + // Set preview image + $preview = $productImages[0]->url ?? null; + + // Extract features (parameters) from classifications[0].features of Buerklin JSON response + $features = $product['classifications'][0]['features'] ?? []; + + // Feature parameters (from classifications->features) + $featureParams = $this->attributesToParameters($features, ''); // leave group empty for normal parameters + + // Compliance parameters (from top-level fields like RoHS/SVHC/…) + $complianceParams = $this->complianceToParameters($product, 'Compliance'); + + // Merge all parameters + $allParams = array_merge($featureParams, $complianceParams); + + // Assign footprint: "Design" (en) / "Bauform" (de) / "Enclosure" (en) / "Gehäuse" (de) + $footprint = null; + if (is_array($features)) { + foreach ($features as $feature) { + $name = $feature['name'] ?? null; + if ($name === 'Design' || $name === 'Bauform' || $name === 'Enclosure' || $name === 'Gehäuse') { + $footprint = $feature['featureValues'][0]['value'] ?? null; + break; + } + } + } + + // Prices: prefer volumePrices, fallback to single price + $code = (string) ($product['orderNumber'] ?? $product['code'] ?? ''); + $prices = $product['volumePrices'] ?? null; + + if (!is_array($prices) || count($prices) === 0) { + $pVal = $product['price']['value'] ?? null; + $pCur = $product['price']['currencyIso'] ?? ($this->settings->currency ?: 'EUR'); + + if (is_numeric($pVal)) { + $prices = [ + [ + 'minQuantity' => 1, + 'value' => (float) $pVal, + 'currencyIso' => (string) $pCur, + ] + ]; + } else { + $prices = []; + } + } + + return new PartDetailDTO( + provider_key: $this->getProviderKey(), + provider_id: (string) ($product['code'] ?? $code), + + name: (string) ($product['manufacturerProductId'] ?? $code), + description: $this->sanitizeField($product['description'] ?? null), + + category: $this->sanitizeField($product['classifications'][0]['name'] ?? ($product['categories'][0]['name'] ?? null)), + manufacturer: $this->sanitizeField($product['manufacturer'] ?? null), + mpn: $this->sanitizeField($product['manufacturerProductId'] ?? null), + + preview_image_url: $preview, + manufacturing_status: null, + + provider_url: $this->getProductShortURL((string) ($product['code'] ?? $code)), + footprint: $footprint, + + datasheets: null, // not found in JSON response, the Buerklin website however has links to datasheets + images: $productImages, + + parameters: $allParams, + + vendor_infos: $this->pricesToVendorInfo( + sku: $code, + url: $this->getProductShortURL($code), + prices: $prices + ), + + mass: $product['weight'] ?? null, + ); + } + + /** + * 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 + { + $priceDTOs = array_map(function ($price) { + $val = $price['value'] ?? null; + $valStr = is_numeric($val) + ? number_format((float) $val, 6, '.', '') // 6 decimal places, trailing zeros are fine + : (string) $val; + + // Optional: softly trim unnecessary trailing zeros (e.g. 75.550000 -> 75.55) + $valStr = rtrim(rtrim($valStr, '0'), '.'); + + return new PriceDTO( + minimum_discount_amount: (float) ($price['minQuantity'] ?? 1), + price: $valStr, + currency_iso_code: (string) ($price['currencyIso'] ?? $this->settings->currency ?? 'EUR'), + includes_tax: false + ); + }, $prices); + + return [ + new PurchaseInfoDTO( + distributor_name: self::DISTRIBUTOR_NAME, + order_number: $sku, + prices: $priceDTOs, + product_url: $url, + ) + ]; + } + + + /** + * Returns a valid Buerklin product short URL from product code + * @param string $product_code + * @return string + */ + private function getProductShortURL(string $product_code): string + { + return 'https://www.buerklin.com/' . $this->settings->language . '/p/' . $product_code . '/'; + } + + /** + * Returns a deduplicated list of product images as FileDTOs. + * + * - takes only real image arrays (with 'url' field) + * - makes relative URLs absolute + * - deduplicates using URL + * - prefers 'zoom' format, then 'product' format, then all others + * + * @param array|null $images + * @return \App\Services\InfoProviderSystem\DTOs\FileDTO[] + */ + private function getProductImages(?array $images): array + { + if (!is_array($images)) { + return []; + } + + // 1) Only real image entries with URL + $imgs = array_values(array_filter($images, fn($i) => is_array($i) && !empty($i['url']))); + + // 2) Prefer zoom images + $zoom = array_values(array_filter($imgs, fn($i) => ($i['format'] ?? null) === 'zoom')); + $chosen = count($zoom) > 0 + ? $zoom + : array_values(array_filter($imgs, fn($i) => ($i['format'] ?? null) === 'product')); + + // 3) If still none, take all + if (count($chosen) === 0) { + $chosen = $imgs; + } + + // 4) Deduplicate by URL (after making absolute) + $byUrl = []; + foreach ($chosen as $img) { + $url = (string) $img['url']; + + if (!str_starts_with($url, 'http://') && !str_starts_with($url, 'https://')) { + $url = 'https://www.buerklin.com' . $url; + } + if (!filter_var($url, FILTER_VALIDATE_URL)) { + continue; + } + + $byUrl[$url] = $url; + } + + return array_map( + fn($url) => new FileDTO($url), + array_values($byUrl) + ); + } + + private function attributesToParameters(array $features, ?string $group = null): array + { + $out = []; + + foreach ($features as $f) { + if (!is_array($f)) { + continue; + } + + $name = $f['name'] ?? null; + if (!is_string($name) || trim($name) === '') { + continue; + } + + $vals = []; + foreach (($f['featureValues'] ?? []) as $fv) { + if (is_array($fv) && isset($fv['value']) && is_string($fv['value']) && trim($fv['value']) !== '') { + $vals[] = trim($fv['value']); + } + } + if (empty($vals)) { + continue; + } + + // Multiple values: join with comma + $value = implode(', ', array_values(array_unique($vals))); + + // Unit/symbol from Buerklin feature + $unit = $f['featureUnit']['symbol'] ?? null; + if (!is_string($unit) || trim($unit) === '') { + $unit = null; + } + + // ParameterDTO parses value field (handles value + unit) + $out[] = ParameterDTO::parseValueField( + name: $name, + value: $value, + unit: $unit, + symbol: null, + group: $group + ); + } + + // Deduplicate by name + $byName = []; + foreach ($out as $p) { + $byName[$p->name] ??= $p; + } + + return array_values($byName); + } + + /** + * @return PartDetailDTO[] + */ + public function searchByKeyword(string $keyword): array + { + $keyword = strtoupper(trim($keyword)); + if ($keyword === '') { + return []; + } + + $response = $this->makeAPICall('/products/search/', [ + 'pageSize' => 50, + 'currentPage' => 0, + 'query' => $keyword, + 'sort' => 'relevance', + ]); + + $products = $response['products'] ?? []; + + // Normal case: products found in search results + if (is_array($products) && !empty($products)) { + return array_map(fn($p) => $this->getPartDetail($p), $products); + } + + // Fallback: try direct lookup by code + try { + $product = $this->getProduct($keyword); + return [$this->getPartDetail($product)]; + } catch (\Throwable $e) { + return []; + } + } + + public function getDetails(string $id): PartDetailDTO + { + // Detail endpoint is /products/{code}/ + $response = $this->getProduct($id); + + return $this->getPartDetail($response); + } + + public function getCapabilities(): array + { + return [ + ProviderCapabilities::BASIC, + ProviderCapabilities::PICTURE, + //ProviderCapabilities::DATASHEET, // currently not implemented + ProviderCapabilities::PRICE, + ProviderCapabilities::FOOTPRINT, + ]; + } + + private function complianceToParameters(array $product, ?string $group = 'Compliance'): array + { + $params = []; + + $add = function (string $name, $value) use (&$params, $group) { + if ($value === null) { + return; + } + + if (is_bool($value)) { + $value = $value ? 'Yes' : 'No'; + } elseif (is_array($value) || is_object($value)) { + // Avoid dumping large or complex structures + return; + } else { + $value = trim((string) $value); + if ($value === '') { + return; + } + } + + $params[] = ParameterDTO::parseValueField( + name: $name, + value: (string) $value, + unit: null, + symbol: null, + group: $group + ); + }; + + $add('RoHS conform', $product['labelRoHS'] ?? null); // "yes"/"no" + + $rawRoHsDate = $product['dateRoHS'] ?? null; + // Try to parse and reformat date to Y-m-d (do not use language-dependent formats) + if (is_string($rawRoHsDate) && $rawRoHsDate !== '') { + try { + $dt = new \DateTimeImmutable($rawRoHsDate); + $formatted = $dt->format('Y-m-d'); + } catch (\Exception $e) { + $formatted = $rawRoHsDate; + } + // Always use the same parameter name (do not use language-dependent names) + $add('RoHS date', $formatted); + } + $add('SVHC free', $product['SVHC'] ?? null); // bool + $add('Hazardous good', $product['hazardousGood'] ?? null); // bool + $add('Hazardous materials', $product['hazardousMaterials'] ?? null); // bool + + $add('Country of origin', $product['countryOfOrigin'] ?? null); + // Customs tariff code must always be stored as string, otherwise "85411000" may be stored as "8.5411e+7" + if (isset($product['articleCustomsCode'])) { + // Raw value as string + $codeRaw = (string) $product['articleCustomsCode']; + + // Optionally keep only digits (in case of spaces or other characters) + $code = preg_replace('/\D/', '', $codeRaw) ?? $codeRaw; + $code = trim($code); + + if ($code !== '') { + $params[] = new ParameterDTO( + name: 'Customs code', + value_text: $code, + value_typ: null, + value_min: null, + value_max: null, + unit: null, + symbol: null, + group: $group + ); + } + } + + return $params; + } + + /** + * @param string[] $keywords + * @return array + */ + public function searchByKeywordsBatch(array $keywords): array + { + /** @var array $results */ + $results = []; + + foreach ($keywords as $keyword) { + $keyword = strtoupper(trim((string) $keyword)); + if ($keyword === '') { + continue; + } + + // Reuse existing single search -> returns PartDetailDTO[] + /** @var PartDetailDTO[] $partDetails */ + $partDetails = $this->searchByKeyword($keyword); + + // Convert to SearchResultDTO[] + $results[$keyword] = array_map( + fn(PartDetailDTO $detail) => $this->convertPartDetailToSearchResult($detail), + $partDetails + ); + } + + return $results; + } + + /** + * Converts a PartDetailDTO into a SearchResultDTO for bulk search. + */ + private function convertPartDetailToSearchResult(PartDetailDTO $detail): SearchResultDTO + { + return new SearchResultDTO( + provider_key: $detail->provider_key, + provider_id: $detail->provider_id, + name: $detail->name, + description: $detail->description ?? '', + category: $detail->category ?? null, + manufacturer: $detail->manufacturer ?? null, + mpn: $detail->mpn ?? null, + preview_image_url: $detail->preview_image_url ?? null, + manufacturing_status: $detail->manufacturing_status ?? null, + provider_url: $detail->provider_url ?? null, + footprint: $detail->footprint ?? null, + ); + } + +} diff --git a/src/Services/InfoProviderSystem/Providers/PollinProvider.php b/src/Services/InfoProviderSystem/Providers/PollinProvider.php index b74e0365..2c5d68a3 100644 --- a/src/Services/InfoProviderSystem/Providers/PollinProvider.php +++ b/src/Services/InfoProviderSystem/Providers/PollinProvider.php @@ -248,4 +248,4 @@ class PollinProvider implements InfoProviderInterface ProviderCapabilities::DATASHEET ]; } -} +} \ No newline at end of file diff --git a/src/Settings/InfoProviderSystem/BuerklinSettings.php b/src/Settings/InfoProviderSystem/BuerklinSettings.php new file mode 100644 index 00000000..c083c07a --- /dev/null +++ b/src/Settings/InfoProviderSystem/BuerklinSettings.php @@ -0,0 +1,84 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Settings\InfoProviderSystem; + +use App\Form\Type\APIKeyType; +use App\Settings\SettingsIcon; +use Jbtronics\SettingsBundle\Metadata\EnvVarMode; +use Jbtronics\SettingsBundle\Settings\Settings; +use Jbtronics\SettingsBundle\Settings\SettingsTrait; +use Symfony\Component\Form\Extension\Core\Type\CountryType; +use Symfony\Component\Form\Extension\Core\Type\CurrencyType; +use Symfony\Component\Form\Extension\Core\Type\LanguageType; +use Symfony\Component\Translation\TranslatableMessage as TM; +use Jbtronics\SettingsBundle\Settings\SettingsParameter; +use Symfony\Component\Validator\Constraints as Assert; + +#[Settings(label: new TM("settings.ips.buerklin"), description: new TM("settings.ips.buerklin.help"))] +#[SettingsIcon("fa-plug")] +class BuerklinSettings +{ + use SettingsTrait; + + #[SettingsParameter( + label: new TM("settings.ips.digikey.client_id"), + formType: APIKeyType::class, + envVar: "PROVIDER_BUERKLIN_CLIENT_ID", envVarMode: EnvVarMode::OVERWRITE + )] + public ?string $clientId = null; + + #[SettingsParameter( + label: new TM("settings.ips.digikey.secret"), + formType: APIKeyType::class, + envVar: "PROVIDER_BUERKLIN_SECRET", envVarMode: EnvVarMode::OVERWRITE + )] + public ?string $secret = null; + + #[SettingsParameter( + label: new TM("settings.ips.buerklin.username"), + formType: APIKeyType::class, + envVar: "PROVIDER_BUERKLIN_USER", envVarMode: EnvVarMode::OVERWRITE + )] + public ?string $username = null; + + #[SettingsParameter( + label: new TM("user.edit.password"), + formType: APIKeyType::class, + envVar: "PROVIDER_BUERKLIN_PASSWORD", envVarMode: EnvVarMode::OVERWRITE + )] + public ?string $password = null; + + #[SettingsParameter(label: new TM("settings.ips.tme.currency"), formType: CurrencyType::class, + formOptions: ["preferred_choices" => ["EUR"]], + envVar: "PROVIDER_BUERKLIN_CURRENCY", envVarMode: EnvVarMode::OVERWRITE)] + #[Assert\Currency()] + public string $currency = "EUR"; + + #[SettingsParameter(label: new TM("settings.ips.tme.language"), formType: LanguageType::class, + formOptions: ["preferred_choices" => ["en", "de"]], + envVar: "PROVIDER_BUERKLIN_LANGUAGE", envVarMode: EnvVarMode::OVERWRITE)] + #[Assert\Language] + public string $language = "en"; +} diff --git a/src/Settings/InfoProviderSystem/InfoProviderSettings.php b/src/Settings/InfoProviderSystem/InfoProviderSettings.php index e6e258f5..d4679e23 100644 --- a/src/Settings/InfoProviderSystem/InfoProviderSettings.php +++ b/src/Settings/InfoProviderSystem/InfoProviderSettings.php @@ -63,4 +63,7 @@ class InfoProviderSettings #[EmbeddedSettings] public ?PollinSettings $pollin = null; + + #[EmbeddedSettings] + public ?BuerklinSettings $buerklin = null; } diff --git a/tests/Services/InfoProviderSystem/Providers/BuerklinProviderTest.php b/tests/Services/InfoProviderSystem/Providers/BuerklinProviderTest.php new file mode 100644 index 00000000..3193db89 --- /dev/null +++ b/tests/Services/InfoProviderSystem/Providers/BuerklinProviderTest.php @@ -0,0 +1,271 @@ +httpClient = $this->createMock(HttpClientInterface::class); + + // Cache mock + $cacheItem = $this->createMock(CacheItemInterface::class); + $cacheItem->method('isHit')->willReturn(false); + $cacheItem->method('set')->willReturn($cacheItem); + + $this->cache = $this->createMock(CacheItemPoolInterface::class); + $this->cache->method('getItem')->willReturn($cacheItem); + + // IMPORTANT: Settings must not be instantiated directly (SettingsBundle forbids constructor) + $ref = new \ReflectionClass(BuerklinSettings::class); + /** @var BuerklinSettings $settings */ + $settings = $ref->newInstanceWithoutConstructor(); + + $settings->clientId = 'CID'; + $settings->secret = 'SECRET'; + $settings->username = 'USER'; + $settings->password = 'PASS'; + $settings->language = 'en'; + $settings->currency = 'EUR'; + + $this->settings = $settings; + + $this->provider = new BuerklinProvider( + client: $this->httpClient, + partInfoCache: $this->cache, + settings: $this->settings, + ); + } + + private function mockApi(string $expectedUrl, array $jsonResponse): void + { + $response = $this->createMock(ResponseInterface::class); + $response->method('toArray')->willReturn($jsonResponse); + + $this->httpClient + ->method('request') + ->with( + 'GET', + $this->callback(fn($url) => str_contains((string) $url, $expectedUrl)), + $this->anything() + ) + ->willReturn($response); + } + + public function testAttributesToParametersParsesUnitsAndValues(): void + { + $method = new \ReflectionMethod(BuerklinProvider::class, 'attributesToParameters'); + $method->setAccessible(true); + + $features = [ + [ + 'name' => 'Zener voltage', + 'featureUnit' => ['symbol' => 'V'], + 'featureValues' => [ + ['value' => '12'] + ] + ], + [ + 'name' => 'Length', + 'featureUnit' => ['symbol' => 'mm'], + 'featureValues' => [ + ['value' => '2.9'] + ] + ], + [ + 'name' => 'Assembly', + 'featureUnit' => [], + 'featureValues' => [ + ['value' => 'SMD'] + ] + ] + ]; + + $params = $method->invoke($this->provider, $features, ''); + + $this->assertCount(3, $params); + + $this->assertSame('Zener voltage', $params[0]->name); + $this->assertNull($params[0]->value_text); + $this->assertSame(12.0, $params[0]->value_typ); + $this->assertNull($params[0]->value_min); + $this->assertNull($params[0]->value_max); + $this->assertSame('V', $params[0]->unit); + + $this->assertSame('Length', $params[1]->name); + $this->assertNull($params[1]->value_text); + $this->assertSame(2.9, $params[1]->value_typ); + $this->assertSame('mm', $params[1]->unit); + + $this->assertSame('Assembly', $params[2]->name); + $this->assertSame('SMD', $params[2]->value_text); + $this->assertNull($params[2]->unit); + } + + public function testComplianceParameters(): void + { + $method = new \ReflectionMethod(BuerklinProvider::class, 'complianceToParameters'); + $method->setAccessible(true); + + $product = [ + 'labelRoHS' => 'Yes', + 'dateRoHS' => '2015-03-31T00:00+0000', + 'SVHC' => true, + 'hazardousGood' => false, + 'hazardousMaterials' => false, + 'countryOfOrigin' => 'China', + 'articleCustomsCode' => '85411000' + ]; + + $params = $method->invoke($this->provider, $product, 'Compliance'); + + $map = []; + foreach ($params as $p) { + $map[$p->name] = $p->value_text; + } + + $this->assertSame('Yes', $map['RoHS conform']); + $this->assertSame('2015-03-31', $map['RoHS date']); + $this->assertSame('Yes', $map['SVHC free']); + $this->assertSame('No', $map['Hazardous good']); + $this->assertSame('No', $map['Hazardous materials']); + $this->assertSame('China', $map['Country of origin']); + $this->assertSame('85411000', $map['Customs code']); + } + + public function testImageSelectionPrefersZoomAndDeduplicates(): void + { + $method = new \ReflectionMethod(BuerklinProvider::class, 'getProductImages'); + $method->setAccessible(true); + + $images = [ + ['format' => 'product', 'url' => '/img/a.webp'], + ['format' => 'zoom', 'url' => '/img/z.webp'], + ['format' => 'zoom', 'url' => '/img/z.webp'], // duplicate + ['format' => 'thumbnail', 'url' => '/img/t.webp'] + ]; + + $results = $method->invoke($this->provider, $images); + + $this->assertCount(1, $results); + $this->assertSame('https://www.buerklin.com/img/z.webp', $results[0]->url); + } + + public function testFootprintExtraction(): void + { + $method = new \ReflectionMethod(BuerklinProvider::class, 'getPartDetail'); + $method->setAccessible(true); + + $product = [ + 'code' => 'TEST1', + 'manufacturerProductId' => 'ABC', + 'description' => 'X', + 'images' => [], + 'classifications' => [ + [ + 'name' => 'Cat', + 'features' => [ + [ + 'name' => 'Enclosure', + 'featureValues' => [['value' => 'SOT-23']] + ] + ] + ] + ], + 'price' => ['value' => 1, 'currencyIso' => 'EUR'] + ]; + + $dto = $method->invoke($this->provider, $product); + $this->assertSame('SOT-23', $dto->footprint); + } + + public function testPriceFormatting(): void + { + $detailPrice = [ + [ + 'minQuantity' => 1, + 'value' => 0.0885, + 'currencyIso' => 'EUR' + ] + ]; + + $method = new \ReflectionMethod(BuerklinProvider::class, 'pricesToVendorInfo'); + $method->setAccessible(true); + + $vendorInfo = $method->invoke($this->provider, 'SKU1', 'https://x', $detailPrice); + + $price = $vendorInfo[0]->prices[0]; + $this->assertSame('0.0885', $price->price); + } + + public function testBatchSearchReturnsSearchResultDTO(): void + { + $mockDetail = new PartDetailDTO( + provider_key: 'buerklin', + provider_id: 'TESTID', + name: 'Zener', + description: 'Desc' + ); + + $provider = $this->getMockBuilder(BuerklinProvider::class) + ->setConstructorArgs([ + $this->httpClient, + $this->cache, + $this->settings + ]) + ->onlyMethods(['searchByKeyword']) + ->getMock(); + + $provider->method('searchByKeyword')->willReturn([$mockDetail]); + + $result = $provider->searchByKeywordsBatch(['ABC']); + + $this->assertArrayHasKey('ABC', $result); + $this->assertIsArray($result['ABC']); + $this->assertCount(1, $result['ABC']); + $this->assertInstanceOf(SearchResultDTO::class, $result['ABC'][0]); + $this->assertSame('Zener', $result['ABC'][0]->name); + } + + public function testConvertPartDetailToSearchResult(): void + { + $detail = new PartDetailDTO( + provider_key: 'buerklin', + provider_id: 'X1', + name: 'PartX', + description: 'D', + preview_image_url: 'https://img' + ); + + $method = new \ReflectionMethod(BuerklinProvider::class, 'convertPartDetailToSearchResult'); + $method->setAccessible(true); + + $dto = $method->invoke($this->provider, $detail); + + $this->assertInstanceOf(SearchResultDTO::class, $dto); + $this->assertSame('X1', $dto->provider_id); + $this->assertSame('PartX', $dto->name); + $this->assertSame('https://img', $dto->preview_image_url); + } +} diff --git a/translations/messages.de.xlf b/translations/messages.de.xlf index 933214a0..10c7e7a7 100644 --- a/translations/messages.de.xlf +++ b/translations/messages.de.xlf @@ -1,4 +1,4 @@ - + @@ -231,7 +231,7 @@ part.info.timetravel_hint - So sah das Bauteil vor %timestamp% aus. <i>Beachten Sie, dass dieses Feature experimentell ist und die angezeigten Infos daher nicht unbedingt korrekt sind.</i> + Beachten Sie, dass dieses Feature experimentell ist und die angezeigten Infos daher nicht unbedingt korrekt sind.]]> @@ -537,7 +537,7 @@ Maßeinheit - + part_custom_state.caption Benutzerdefinierter Bauteilstatus @@ -715,9 +715,9 @@ user.edit.tfa.disable_tfa_message - Dies wird <b>alle aktiven Zwei-Faktor-Authentifizierungsmethoden des Nutzers deaktivieren</b> und die <b>Backupcodes löschen</b>! <br> -Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müssen und neue Backupcodes ausdrucken müssen! <br><br> -<b>Führen sie dies nur durch, wenn Sie über die Identität des (um Hilfe suchenden) Benutzers absolut sicher sind, da ansonsten eine Kompromittierung des Accounts durch einen Angreifer erfolgen könnte!</b> + alle aktiven Zwei-Faktor-Authentifizierungsmethoden des Nutzers deaktivieren und die Backupcodes löschen!
    +Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müssen und neue Backupcodes ausdrucken müssen!

    +Führen sie dies nur durch, wenn Sie über die Identität des (um Hilfe suchenden) Benutzers absolut sicher sind, da ansonsten eine Kompromittierung des Accounts durch einen Angreifer erfolgen könnte!]]>
    @@ -1424,7 +1424,7 @@ Subelemente werden beim Löschen nach oben verschoben. homepage.github.text - Quellcode, Downloads, Bugreports, ToDo-Liste usw. gibts auf der <a class="link-external" target="_blank" href="%href%">GitHub Projektseite</a> + GitHub Projektseite]]> @@ -1446,7 +1446,7 @@ Subelemente werden beim Löschen nach oben verschoben. homepage.help.text - Hilfe und Tipps finden sie im <a class="link-external" rel="noopener" target="_blank" href="%href%">Wiki</a> der GitHub Seite. + Wiki der GitHub Seite.]]> @@ -1688,7 +1688,7 @@ Subelemente werden beim Löschen nach oben verschoben. email.pw_reset.fallback - Wenn dies nicht funktioniert, rufen Sie <a href="%url%">%url%</a> auf und geben Sie die folgenden Daten ein + %url% auf und geben Sie die folgenden Daten ein]]> @@ -1718,7 +1718,7 @@ Subelemente werden beim Löschen nach oben verschoben. email.pw_reset.valid_unit %date% - Das Reset-Token ist gültig bis <i>%date%</i> + %date%]]> @@ -3591,8 +3591,8 @@ Subelemente werden beim Löschen nach oben verschoben. tfa_google.disable.confirm_message - Wenn Sie die Authenticator App deaktivieren, werden alle Backupcodes gelöscht, daher sie müssen sie evtl. neu ausdrucken.<br> -Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nicht mehr so gut gegen Angreifer geschützt ist! + +Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nicht mehr so gut gegen Angreifer geschützt ist!]]> @@ -3612,7 +3612,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich tfa_google.step.download - Laden Sie eine Authenticator App herunter (z.B. <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)]]> @@ -3854,8 +3854,8 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich tfa_trustedDevices.explanation - Bei der Überprüfung des zweiten Faktors, kann der aktuelle Computer als vertrauenswürdig gekennzeichnet werden, daher werden keine Zwei-Faktor-Überprüfungen mehr an diesem Computer benötigt. -Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertrauenswürdig ist, können Sie hier den Status <i>aller </i>Computer zurücksetzen. + aller Computer zurücksetzen.]]> @@ -4813,7 +4813,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Maßeinheit - + part.table.partCustomState Benutzerdefinierter Bauteilstatus @@ -5301,7 +5301,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr label_options.lines_mode.help - Wenn Sie hier Twig auswählen, wird das Contentfeld als Twig-Template interpretiert. Weitere Hilfe gibt es in der <a href="https://twig.symfony.com/doc/3.x/templates.html">Twig Dokumentation</a> und dem <a href="https://docs.part-db.de/usage/labels.html#twig-mode">Wiki</a>. + Twig Dokumentation und dem Wiki.]]> @@ -5683,7 +5683,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Maßeinheit - + part.edit.partCustomState Benutzerdefinierter Bauteilstatus @@ -5976,7 +5976,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Maßeinheit - + part_custom_state.label Benutzerdefinierter Bauteilstatus @@ -6225,7 +6225,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr [[Measurement_unit]] - + tree.tools.edit.part_custom_state [[Part_custom_state]] @@ -7149,15 +7149,15 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr mass_creation.lines.placeholder - Element 1 + +Element 1 -> Element 1.1 +Element 1 -> Element 1.2]]> @@ -8372,7 +8372,7 @@ Element 1 -> Element 1.2 Maßeinheiten - + perm.part_custom_states Benutzerdefinierter Bauteilstatus @@ -9303,25 +9303,25 @@ Element 1 -> Element 1.2 filter.parameter_value_constraint.operator.< - Typ. Wert < + filter.parameter_value_constraint.operator.> - Typ. Wert > + ]]> filter.parameter_value_constraint.operator.<= - Typ. Wert <= + filter.parameter_value_constraint.operator.>= - Typ. Wert >= + =]]> @@ -9429,7 +9429,7 @@ Element 1 -> Element 1.2 parts_list.search.searching_for - Suche Teile mit dem Suchbegriff <b>%keyword%</b> + %keyword%]]> @@ -10089,13 +10089,13 @@ Element 1 -> Element 1.2 project.builds.number_of_builds_possible - Sie haben genug Bauteile auf Lager, um <b>%max_builds%</b> Exemplare dieses Projektes zu bauen. + %max_builds% Exemplare dieses Projektes zu bauen.]]> project.builds.check_project_status - Der aktuelle Projektstatus ist <b>"%project_status%"</b>. Sie sollten überprüfen, ob sie das Projekt mit diesem Status wirklich bauen wollen! + "%project_status%". Sie sollten überprüfen, ob sie das Projekt mit diesem Status wirklich bauen wollen!]]> @@ -10209,7 +10209,7 @@ Element 1 -> Element 1.2 entity.select.add_hint - Nutzen Sie -> um verschachtelte Strukturen anzulegen, z.B. "Element 1->Element 1.1" + um verschachtelte Strukturen anzulegen, z.B. "Element 1->Element 1.1"]]> @@ -10233,13 +10233,13 @@ Element 1 -> Element 1.2 homepage.first_steps.introduction - Die Datenbank ist momentan noch leer. Sie möchten möglicherweise die <a href="%url%">Dokumentation</a> lesen oder anfangen, die folgenden Datenstrukturen anzulegen. + Dokumentation lesen oder anfangen, die folgenden Datenstrukturen anzulegen.]]> homepage.first_steps.create_part - Oder Sie können direkt ein <a href="%url%">neues Bauteil erstellen</a>. + neues Bauteil erstellen.]]> @@ -10251,7 +10251,7 @@ Element 1 -> Element 1.2 homepage.forum.text - Für Fragen rund um Part-DB, nutze das <a class="link-external" rel="noopener" target="_blank" href="%href%">Diskussionsforum</a> + Diskussionsforum]]> @@ -10752,7 +10752,7 @@ Element 1 -> Element 1.2 Maßeinheit - + log.element_edited.changed_fields.partCustomState Benutzerdefinierter Bauteilstatus @@ -10917,7 +10917,7 @@ Element 1 -> Element 1.2 parts.import.help_documentation - Konsultieren Sie die <a href="%link%">Dokumentation</a> für weiter Informationen über das Dateiformat. + Dokumentation für weiter Informationen über das Dateiformat.]]> @@ -11022,13 +11022,13 @@ Element 1 -> Element 1.2 Bearbeite [Measurement_unit] - + part_custom_state.new Neuer [Part_custom_state] - + part_custom_state.edit Bearbeite [Part_custom_state] @@ -11109,7 +11109,7 @@ Element 1 -> Element 1.2 part.filter.lessThanDesired - Weniger vorhanden als gewünscht (Gesamtmenge < Mindestmenge) + @@ -11915,13 +11915,13 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön part.merge.confirm.title - Möchten Sie wirklich <b>%other%</b> in <b>%target%</b> zusammenführen? + %other% in %target% zusammenführen?]]> part.merge.confirm.message - <b>%other%</b> wird gelöscht, und das aktuelle Bauteil wird mit den angezeigten Daten gespeichert. + %other% wird gelöscht, und das aktuelle Bauteil wird mit den angezeigten Daten gespeichert.]]> @@ -12275,7 +12275,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.element14.apiKey.help - Sie können sich unter <a href="https://partner.element14.com/">https://partner.element14.com/</a> für einen API-Schlüssel registrieren. + https://partner.element14.com/ für einen API-Schlüssel registrieren.]]> @@ -12287,7 +12287,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.element14.storeId.help - Die Domain des Shops, aus dem die Daten abgerufen werden sollen. Diese bestimmt die Sprache und Währung der Ergebnisse. Eine Liste der gültigen Domains finden Sie <a href="https://partner.element14.com/docs/Product_Search_API_REST__Description">hier</a>. + hier.]]> @@ -12305,7 +12305,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.tme.token.help - Sie können einen API-Token und einen geheimen Schlüssel unter <a href="https://developers.tme.eu/en/">https://developers.tme.eu/en/</a> erhalten. + https://developers.tme.eu/en/ erhalten.]]> @@ -12353,7 +12353,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.mouser.apiKey.help - Sie können sich unter <a href="https://eu.mouser.com/api-hub/">https://eu.mouser.com/api-hub/</a> für einen API-Schlüssel registrieren. + https://eu.mouser.com/api-hub/ für einen API-Schlüssel registrieren.]]> @@ -12401,7 +12401,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.mouser.searchOptions.rohsAndInStock - Sofort verfügbar & RoHS konform + @@ -12431,7 +12431,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.system.attachments - Anhänge & Dateien + @@ -12455,7 +12455,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.system.attachments.allowDownloads.help - Mit dieser Option können Benutzer externe Dateien in die Part-DB herunterladen, indem sie eine URL angeben. <b>Achtung: Dies kann ein Sicherheitsrisiko darstellen, da Benutzer dadurch möglicherweise über die Part-DB auf Intranet-Ressourcen zugreifen können!</b> + Achtung: Dies kann ein Sicherheitsrisiko darstellen, da Benutzer dadurch möglicherweise über die Part-DB auf Intranet-Ressourcen zugreifen können!]]> @@ -12629,8 +12629,8 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.system.localization.base_currency_description - Die Währung, in der Preisinformationen und Wechselkurse gespeichert werden. Diese Währung wird angenommen, wenn für eine Preisinformation keine Währung festgelegt ist. -<b>Bitte beachten Sie, dass die Währungen bei einer Änderung dieses Wertes nicht umgerechnet werden. Wenn Sie also die Basiswährung ändern, nachdem Sie bereits Preisinformationen hinzugefügt haben, führt dies zu falschen Preisen!</b> + Bitte beachten Sie, dass die Währungen bei einer Änderung dieses Wertes nicht umgerechnet werden. Wenn Sie also die Basiswährung ändern, nachdem Sie bereits Preisinformationen hinzugefügt haben, führt dies zu falschen Preisen!]]> @@ -12660,7 +12660,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.misc.kicad_eda.category_depth.help - Dieser Wert bestimmt die Tiefe des Kategoriebaums, der in KiCad sichtbar ist. 0 bedeutet, dass nur die Kategorien der obersten Ebene sichtbar sind. Setzen Sie den Wert auf > 0, um weitere Ebenen anzuzeigen. Setzen Sie den Wert auf -1, um alle Teile der Part-DB innerhalb einer einzigen Kategorie in KiCad anzuzeigen. + 0, um weitere Ebenen anzuzeigen. Setzen Sie den Wert auf -1, um alle Teile der Part-DB innerhalb einer einzigen Kategorie in KiCad anzuzeigen.]]> @@ -12678,7 +12678,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.behavior.sidebar.items.help - Die Menüs, die standardmäßig in der Seitenleiste angezeigt werden. Die Reihenfolge der Elemente kann per Drag & Drop geändert werden. + @@ -12726,7 +12726,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.behavior.table.parts_default_columns.help - Die Spalten, die standardmäßig in Bauteiltabellen angezeigt werden sollen. Die Reihenfolge der Elemente kann per Drag & Drop geändert werden. + @@ -12780,7 +12780,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.oemsecrets.sortMode.M - Vollständigkeit & Herstellername + @@ -13440,7 +13440,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.behavior.homepage.items.help - Die Elemente, die auf der Startseite angezeigt werden sollen. Die Reihenfolge kann per Drag & Drop geändert werden. + @@ -14154,7 +14154,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.system.localization.language_menu_entries.description - Die Sprachen, die im Sprachen Dropdown-Menü angezeigt werden sollen. Die Reihenfolge kann via Drag&Drop geändert werden. Lassen Sie das Feld leer, um alle verfügbaren Sprachen anzuzeigen. + @@ -14430,13 +14430,33 @@ Bitte beachten Sie, dass dieses System derzeit experimentell ist und die hier de - - Do not remove! Used for datatables rendering. - - - datatable.datatable.lengthMenu - _MENU_ - + + Do not remove! Used for datatables rendering. + + + datatable.datatable.lengthMenu + _MENU_ + + + + + settings.ips.buerklin + Buerklin + + + + + settings.ips.buerklin.username + Benutzername + + + + + settings.ips.buerklin.help + Buerklin-API-Zugriffsbeschränkungen: 100 Requests/Minute pro IP-Adresse +Buerklin-API-Authentication-Server: +10 Requests/Minute pro IP-Adresse + diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index b651e94f..feea210a 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -221,7 +221,7 @@ 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.]]> @@ -649,10 +649,10 @@ 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!]]>
    @@ -803,9 +803,9 @@ The user will have to set up all two-factor authentication methods again and pri entity.delete.message - This can not be undone! -<br> -Sub elements will be moved upwards. + +Sub elements will be moved upwards.]]> @@ -1359,7 +1359,7 @@ Sub elements will be moved upwards. 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]]> @@ -1381,7 +1381,7 @@ Sub elements will be moved upwards. 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]]> @@ -1623,7 +1623,7 @@ Sub elements will be moved upwards. 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]]> @@ -1653,7 +1653,7 @@ Sub elements will be moved upwards. email.pw_reset.valid_unit %date% - The reset token will be valid until <i>%date%</i>. + %date%.]]> @@ -3526,8 +3526,8 @@ Sub elements will be moved upwards. 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 no longer as well protected against attackers! + +Also note that without two-factor authentication, your account is no longer as well protected against attackers!]]> @@ -3547,7 +3547,7 @@ Also note that without two-factor authentication, your account is no longer as w 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)]]> @@ -3789,8 +3789,8 @@ Also note that without two-factor authentication, your account is no longer as w 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.]]> @@ -5236,7 +5236,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can 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.]]> @@ -7084,15 +7084,15 @@ Exampletown mass_creation.lines.placeholder - Element 1 + +Element 1 -> Element 1.1 +Element 1 -> Element 1.2]]> @@ -9152,25 +9152,25 @@ Element 1 -> Element 1.2 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 >= + =]]> @@ -9278,7 +9278,7 @@ Element 1 -> Element 1.2 parts_list.search.searching_for - Searching parts with keyword <b>%keyword%</b> + %keyword%]]> @@ -10058,7 +10058,7 @@ Element 1 -> Element 1.2 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"]]> @@ -10082,13 +10082,13 @@ Element 1 -> Element 1.2 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.]]> @@ -10100,7 +10100,7 @@ Element 1 -> Element 1.2 homepage.forum.text - For questions about Part-DB use the <a href="%href%" class="link-external" target="_blank">discussion forum</a> + discussion forum]]> @@ -10766,7 +10766,7 @@ Element 1 -> Element 1.2 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.]]> @@ -10958,7 +10958,7 @@ Element 1 -> Element 1.2 part.filter.lessThanDesired - In stock less than desired (total amount < min. amount) + @@ -11764,13 +11764,13 @@ Please note, that you can not impersonate a disabled user. If you try you will g 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.]]> @@ -12124,7 +12124,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.element14.apiKey.help - You can register for an API key on <a href="https://partner.element14.com/">https://partner.element14.com/</a>. + https://partner.element14.com/.]]> @@ -12136,7 +12136,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.element14.storeId.help - The store domain to retrieve the data from. This decides the language and currency of results. See <a href="https://partner.element14.com/docs/Product_Search_API_REST__Description">here</a> for a list of valid domains. + here for a list of valid domains.]]> @@ -12154,7 +12154,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.tme.token.help - You can get an API token and secret on <a href="https://developers.tme.eu/en/">https://developers.tme.eu/en/</a>. + https://developers.tme.eu/en/.]]> @@ -12202,7 +12202,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.mouser.apiKey.help - You can register for an API key on <a href="https://eu.mouser.com/api-hub/">https://eu.mouser.com/api-hub/</a>. + https://eu.mouser.com/api-hub/.]]> @@ -12280,7 +12280,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.system.attachments - Attachments & Files + @@ -12304,7 +12304,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.system.attachments.allowDownloads.help - With this option users can download external files into Part-DB by providing an URL. <b>Attention: This can be a security issue, as it might allow users to access intranet ressources via Part-DB!</b> + Attention: This can be a security issue, as it might allow users to access intranet ressources via Part-DB!]]> @@ -12478,8 +12478,8 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.system.localization.base_currency_description - The currency that is used to store price information and exchange rates in. This currency is assumed, when no currency is set for a price information. -<b>Please note that the currencies are not converted, when changing this value. So changing the default currency after you already added price information, will result in wrong prices!</b> + Please note that the currencies are not converted, when changing this value. So changing the default currency after you already added price information, will result in wrong prices!]]> @@ -12509,7 +12509,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.misc.kicad_eda.category_depth.help - This value determines the depth of the category tree, that is visible inside KiCad. 0 means that only the top level categories are visible. Set to a value > 0 to show more levels. Set to -1, to show all parts of Part-DB inside a sigle cnategory in KiCad. + 0 to show more levels. Set to -1, to show all parts of Part-DB inside a sigle cnategory in KiCad.]]> @@ -12527,7 +12527,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.behavior.sidebar.items.help - The menus which appear at the sidebar by default. Order of items can be changed via drag & drop. + @@ -12575,7 +12575,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.behavior.table.parts_default_columns.help - The columns to show by default in part tables. Order of items can be changed via drag & drop. + @@ -12629,7 +12629,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.oemsecrets.sortMode.M - Completeness & Manufacturer name + @@ -13289,7 +13289,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.behavior.homepage.items.help - The items to show at the homepage. Order can be changed via drag & drop. + @@ -14003,7 +14003,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.system.localization.language_menu_entries.description - The languages to show in the language drop-down menu. Order can be changed via drag & drop. Leave empty to show all available languages. + @@ -14287,6 +14287,27 @@ Please note that this system is currently experimental, and the synonyms defined _MENU_ + + + settings.ips.buerklin + Buerklin + + + + + settings.ips.buerklin.username + User name + + + + + settings.ips.buerklin.help + Buerklin-API access limits: +100 requests/minute per IP address +Buerklin-API Authentication server: +10 requests/minute per IP address + + project.bom.part_id From 2157916e9bac67acc9fb9000137aae90e722b37c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 4 Jan 2026 21:53:44 +0100 Subject: [PATCH 095/235] Bumped version to 2.4.0 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 276cbf9e..197c4d5c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.3.0 +2.4.0 From 3e071f2b747c671b5822d851c62ecfba31bf5143 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 4 Jan 2026 22:00:55 +0100 Subject: [PATCH 096/235] New translations messages.en.xlf (English) --- translations/messages.en.xlf | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 5ceb03f4..9c0e4e26 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -14287,6 +14287,27 @@ Please note that this system is currently experimental, and the synonyms defined _MENU_ + + + settings.ips.buerklin + Buerklin + + + + + settings.ips.buerklin.username + User name + + + + + settings.ips.buerklin.help + Buerklin-API access limits: +100 requests/minute per IP address +Buerklin-API Authentication server: +10 requests/minute per IP address + + project.bom.part_id From 96a37a0cb0400d2f3c5699b40552f4728d28a80a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 5 Jan 2026 22:41:40 +0100 Subject: [PATCH 097/235] Implemented proof of concept to convert between database types --- config/packages/doctrine.yaml | 91 +++++++------ src/Command/Migrations/DBMigrationCommand.php | 121 ++++++++++++++++++ .../PartKeeprImporter/PKImportHelper.php | 4 +- 3 files changed, 166 insertions(+), 50 deletions(-) create mode 100644 src/Command/Migrations/DBMigrationCommand.php diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml index 5261c295..2952e516 100644 --- a/config/packages/doctrine.yaml +++ b/config/packages/doctrine.yaml @@ -1,61 +1,56 @@ doctrine: dbal: - url: '%env(resolve:DATABASE_URL)%' - - # Required for DAMA doctrine test bundle - use_savepoints: true - - # IMPORTANT: You MUST configure your server version, - # either here or in the DATABASE_URL env var (see .env file) - + # 1. GLOBAL SETTINGS (Apply to all connections) types: - # UTC datetimes - datetime: - class: App\Doctrine\Types\UTCDateTimeType - date: - class: App\Doctrine\Types\UTCDateTimeType + datetime: App\Doctrine\Types\UTCDateTimeType + date: App\Doctrine\Types\UTCDateTimeType + datetime_immutable: App\Doctrine\Types\UTCDateTimeImmutableType + date_immutable: App\Doctrine\Types\UTCDateTimeImmutableType + big_decimal: App\Doctrine\Types\BigDecimalType + tinyint: App\Doctrine\Types\TinyIntType - datetime_immutable: - class: App\Doctrine\Types\UTCDateTimeImmutableType - date_immutable: - class: App\Doctrine\Types\UTCDateTimeImmutableType + connections: + default: + use_savepoints: true + schema_filter: ~^(?!internal)~ + url: '%env(resolve:DATABASE_URL)%' - big_decimal: - class: App\Doctrine\Types\BigDecimalType - tinyint: - class: App\Doctrine\Types\TinyIntType - - schema_filter: ~^(?!internal)~ - # Only enable this when needed - profiling_collect_backtrace: false + migration_source: + use_savepoints: true + schema_filter: ~^(?!internal)~ + url: '%env(resolve:DB_MIGRATION_SOURCE)%' orm: auto_generate_proxy_classes: true enable_lazy_ghost_objects: true - report_fields_where_declared: true - validate_xml_mapping: true - naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware - identity_generation_preferences: - Doctrine\DBAL\Platforms\PostgreSQLPlatform: identity - auto_mapping: true - controller_resolver: - auto_mapping: true - mappings: - App: - type: attribute - is_bundle: false - dir: '%kernel.project_dir%/src/Entity' - prefix: 'App\Entity' - alias: App - dql: - string_functions: - regexp: App\Doctrine\Functions\Regexp - field: DoctrineExtensions\Query\Mysql\Field - field2: App\Doctrine\Functions\Field2 - natsort: App\Doctrine\Functions\Natsort - array_position: App\Doctrine\Functions\ArrayPosition - ilike: App\Doctrine\Functions\ILike + entity_managers: + default: &common_orm_settings + report_fields_where_declared: true + validate_xml_mapping: true + naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware + identity_generation_preferences: + Doctrine\DBAL\Platforms\PostgreSQLPlatform: identity + mappings: + App: + type: attribute + is_bundle: false + dir: '%kernel.project_dir%/src/Entity' + prefix: 'App\Entity' + alias: App + dql: + string_functions: + regexp: App\Doctrine\Functions\Regexp + field: DoctrineExtensions\Query\Mysql\Field + field2: App\Doctrine\Functions\Field2 + natsort: App\Doctrine\Functions\Natsort + array_position: App\Doctrine\Functions\ArrayPosition + ilike: App\Doctrine\Functions\ILike + connection: default + + migration_source: + <<: *common_orm_settings + connection: migration_source when@test: doctrine: diff --git a/src/Command/Migrations/DBMigrationCommand.php b/src/Command/Migrations/DBMigrationCommand.php new file mode 100644 index 00000000..5cd5808e --- /dev/null +++ b/src/Command/Migrations/DBMigrationCommand.php @@ -0,0 +1,121 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Command\Migrations; + +use App\DataTables\Helpers\ColumnSortHelper; +use App\Entity\Parts\Manufacturer; +use App\Services\ImportExportSystem\PartKeeprImporter\PKImportHelper; +use Doctrine\ORM\EntityManagerInterface; + +use Doctrine\ORM\Id\AssignedGenerator; +use Doctrine\ORM\Mapping\ClassMetadata; +use Doctrine\Persistence\ManagerRegistry; +use Doctrine\Persistence\ObjectManager; +use Symfony\Component\Console\Attribute\AsCommand; +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +#[AsCommand('partdb:migrate-db', 'Migrate the database to a different platform')] +class DBMigrationCommand extends Command +{ + private readonly EntityManagerInterface $sourceEM; + private readonly EntityManagerInterface $targetEM; + + public function __construct(private readonly ManagerRegistry $managerRegistry, + private readonly PKImportHelper $importHelper, + ) + { + $this->sourceEM = $this->managerRegistry->getManager('migration_source'); + $this->targetEM = $this->managerRegistry->getManager('default'); + + parent::__construct(); + } + + public function execute(InputInterface $input, OutputInterface $output): int + { + // Example migration logic (to be replaced with actual migration code) + $output->writeln('Starting database migration...'); + + //Disable all event listeners on target EM to avoid unwanted side effects + $eventManager = $this->targetEM->getEventManager(); + foreach ($eventManager->getAllListeners() as $event => $listeners) { + foreach ($listeners as $listener) { + $eventManager->removeEventListener($event, $listener); + } + } + + $output->writeln('Clear target database...'); + $this->importHelper->purgeDatabaseForImport($this->targetEM, ['internal', 'migration_versions']); + + $metadata = $this->targetEM->getMetadataFactory()->getAllMetadata(); + + //First we modify each entity metadata to have an persist cascade on all relations + foreach ($metadata as $metadatum) { + $entityClass = $metadatum->getName(); + $output->writeln('Modifying cascade and ID settings for entity: ' . $entityClass); + + foreach ($metadatum->getAssociationNames() as $fieldName) { + $mapping = $metadatum->getAssociationMapping($fieldName); + $mapping->cascade = array_unique(array_merge($mapping->cascade, ['persist'])); + + $metadatum->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE); + $metadatum->setIdGenerator(new AssignedGenerator()); + } + } + + + //Afterwards we migrate all entities + foreach ($metadata as $metadatum) { + //skip all superclasses + if ($metadatum->isMappedSuperclass) { + continue; + } + + $entityClass = $metadatum->getName(); + + $output->writeln('Migrating entity: ' . $entityClass); + + $repo = $this->sourceEM->getRepository($entityClass); + $items = $repo->findAll(); + foreach ($items as $item) { + $this->targetEM->persist($item); + } + $this->targetEM->flush(); + } + + //Migrate all manufacturers from source to target + /*$manufacturerRepo = $this->sourceEM->getRepository(Manufacturer::class); + $manufacturers = $manufacturerRepo->findAll(); + foreach ($manufacturers as $manufacturer) { + $this->targetEM->persist($manufacturer); + } + $this->targetEM->flush(); + */ + + $output->writeln('Database migration completed successfully.'); + + return Command::SUCCESS; + } +} diff --git a/src/Services/ImportExportSystem/PartKeeprImporter/PKImportHelper.php b/src/Services/ImportExportSystem/PartKeeprImporter/PKImportHelper.php index f36e48ce..880d77be 100644 --- a/src/Services/ImportExportSystem/PartKeeprImporter/PKImportHelper.php +++ b/src/Services/ImportExportSystem/PartKeeprImporter/PKImportHelper.php @@ -39,10 +39,10 @@ class PKImportHelper * Existing users and groups are not purged. * This is needed to avoid ID collisions. */ - public function purgeDatabaseForImport(): void + public function purgeDatabaseForImport(?EntityManagerInterface $entityManager = null, array $excluded_tables = ['users', 'groups', 'u2f_keys', 'internal', 'migration_versions']): void { //We use the ResetAutoIncrementORMPurger to reset the auto increment values of the tables. Also it normalizes table names before checking for exclusion. - $purger = new ResetAutoIncrementORMPurger($this->em, ['users', 'groups', 'u2f_keys', 'internal', 'migration_versions']); + $purger = new ResetAutoIncrementORMPurger($entityManager ?? $this->em, $excluded_tables); $purger->purge(); } From 3f0e4b09ce9cf318469d61c2d3fc933213b6f039 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 5 Jan 2026 23:14:40 +0100 Subject: [PATCH 098/235] Added a progress bar --- src/Command/Migrations/DBMigrationCommand.php | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/Command/Migrations/DBMigrationCommand.php b/src/Command/Migrations/DBMigrationCommand.php index 5cd5808e..c22f3db8 100644 --- a/src/Command/Migrations/DBMigrationCommand.php +++ b/src/Command/Migrations/DBMigrationCommand.php @@ -36,6 +36,7 @@ use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Style\SymfonyStyle; #[AsCommand('partdb:migrate-db', 'Migrate the database to a different platform')] class DBMigrationCommand extends Command @@ -55,8 +56,10 @@ class DBMigrationCommand extends Command public function execute(InputInterface $input, OutputInterface $output): int { + $io = new SymfonyStyle($input, $output); + // Example migration logic (to be replaced with actual migration code) - $output->writeln('Starting database migration...'); + $io->info('Starting database migration...'); //Disable all event listeners on target EM to avoid unwanted side effects $eventManager = $this->targetEM->getEventManager(); @@ -66,15 +69,16 @@ class DBMigrationCommand extends Command } } - $output->writeln('Clear target database...'); + $io->info('Clear target database...'); $this->importHelper->purgeDatabaseForImport($this->targetEM, ['internal', 'migration_versions']); $metadata = $this->targetEM->getMetadataFactory()->getAllMetadata(); + $io->info('Modifying entity metadata for migration...'); //First we modify each entity metadata to have an persist cascade on all relations foreach ($metadata as $metadatum) { $entityClass = $metadatum->getName(); - $output->writeln('Modifying cascade and ID settings for entity: ' . $entityClass); + $io->writeln('Modifying cascade and ID settings for entity: ' . $entityClass, OutputInterface::VERBOSITY_VERBOSE); foreach ($metadatum->getAssociationNames() as $fieldName) { $mapping = $metadatum->getAssociationMapping($fieldName); @@ -86,6 +90,8 @@ class DBMigrationCommand extends Command } + $io->progressStart(count($metadata)); + //Afterwards we migrate all entities foreach ($metadata as $metadatum) { //skip all superclasses @@ -95,16 +101,20 @@ class DBMigrationCommand extends Command $entityClass = $metadatum->getName(); - $output->writeln('Migrating entity: ' . $entityClass); + $io->note('Migrating entity: ' . $entityClass); $repo = $this->sourceEM->getRepository($entityClass); $items = $repo->findAll(); - foreach ($items as $item) { + foreach ($items as $index => $item) { $this->targetEM->persist($item); } $this->targetEM->flush(); + + $io-> } + $io->progressFinish(); + //Migrate all manufacturers from source to target /*$manufacturerRepo = $this->sourceEM->getRepository(Manufacturer::class); $manufacturers = $manufacturerRepo->findAll(); @@ -116,6 +126,10 @@ class DBMigrationCommand extends Command $output->writeln('Database migration completed successfully.'); + if ($io->isVerbose()) { + $io->info('Process took peak memory: ' . round(memory_get_peak_usage(true) / 1024 / 1024, 2) . ' MB'); + } + return Command::SUCCESS; } } From e0a25009d9b8df6706e6a7d48cbb48d1d260bcf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 5 Jan 2026 23:16:33 +0100 Subject: [PATCH 099/235] fixed --- src/Command/Migrations/DBMigrationCommand.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Command/Migrations/DBMigrationCommand.php b/src/Command/Migrations/DBMigrationCommand.php index c22f3db8..06aa3e00 100644 --- a/src/Command/Migrations/DBMigrationCommand.php +++ b/src/Command/Migrations/DBMigrationCommand.php @@ -109,8 +109,6 @@ class DBMigrationCommand extends Command $this->targetEM->persist($item); } $this->targetEM->flush(); - - $io-> } $io->progressFinish(); From 00b35e3306579ef42a45912aedc1507fe6678a2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 5 Jan 2026 23:25:53 +0100 Subject: [PATCH 100/235] Fix sequences of postgres after migration --- src/Command/Migrations/DBMigrationCommand.php | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/Command/Migrations/DBMigrationCommand.php b/src/Command/Migrations/DBMigrationCommand.php index 06aa3e00..0c58e6b9 100644 --- a/src/Command/Migrations/DBMigrationCommand.php +++ b/src/Command/Migrations/DBMigrationCommand.php @@ -26,6 +26,8 @@ namespace App\Command\Migrations; use App\DataTables\Helpers\ColumnSortHelper; use App\Entity\Parts\Manufacturer; use App\Services\ImportExportSystem\PartKeeprImporter\PKImportHelper; +use Doctrine\DBAL\Platforms\AbstractMySQLPlatform; +use Doctrine\DBAL\Platforms\PostgreSQLPlatform; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Id\AssignedGenerator; @@ -122,6 +124,10 @@ class DBMigrationCommand extends Command $this->targetEM->flush(); */ + //Fix sequences / auto increment values on target database + $io->info('Fixing sequences / auto increment values on target database...'); + $this->fixAutoIncrements($this->targetEM); + $output->writeln('Database migration completed successfully.'); if ($io->isVerbose()) { @@ -130,4 +136,33 @@ class DBMigrationCommand extends Command return Command::SUCCESS; } + + private function fixAutoIncrements(EntityManagerInterface $em): void + { + $connection = $em->getConnection(); + $platform = $connection->getDatabasePlatform(); + + if ($platform instanceof PostgreSQLPlatform) { + $connection->executeStatement( + //From: https://wiki.postgresql.org/wiki/Fixing_Sequences + << Date: Thu, 8 Jan 2026 21:03:38 +0100 Subject: [PATCH 101/235] Made DBMigrationCommand take a DB url so we do not need a special doctrine config --- config/packages/doctrine.yaml | 91 ++++++++++--------- config/reference.php | 5 +- src/Command/Migrations/DBMigrationCommand.php | 33 +++++-- 3 files changed, 79 insertions(+), 50 deletions(-) diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml index 2952e516..5261c295 100644 --- a/config/packages/doctrine.yaml +++ b/config/packages/doctrine.yaml @@ -1,56 +1,61 @@ doctrine: dbal: - # 1. GLOBAL SETTINGS (Apply to all connections) + url: '%env(resolve:DATABASE_URL)%' + + # Required for DAMA doctrine test bundle + use_savepoints: true + + # IMPORTANT: You MUST configure your server version, + # either here or in the DATABASE_URL env var (see .env file) + types: - datetime: App\Doctrine\Types\UTCDateTimeType - date: App\Doctrine\Types\UTCDateTimeType - datetime_immutable: App\Doctrine\Types\UTCDateTimeImmutableType - date_immutable: App\Doctrine\Types\UTCDateTimeImmutableType - big_decimal: App\Doctrine\Types\BigDecimalType - tinyint: App\Doctrine\Types\TinyIntType + # UTC datetimes + datetime: + class: App\Doctrine\Types\UTCDateTimeType + date: + class: App\Doctrine\Types\UTCDateTimeType - connections: - default: - use_savepoints: true - schema_filter: ~^(?!internal)~ - url: '%env(resolve:DATABASE_URL)%' + datetime_immutable: + class: App\Doctrine\Types\UTCDateTimeImmutableType + date_immutable: + class: App\Doctrine\Types\UTCDateTimeImmutableType - migration_source: - use_savepoints: true - schema_filter: ~^(?!internal)~ - url: '%env(resolve:DB_MIGRATION_SOURCE)%' + big_decimal: + class: App\Doctrine\Types\BigDecimalType + tinyint: + class: App\Doctrine\Types\TinyIntType + + schema_filter: ~^(?!internal)~ + # Only enable this when needed + profiling_collect_backtrace: false orm: auto_generate_proxy_classes: true enable_lazy_ghost_objects: true + report_fields_where_declared: true + validate_xml_mapping: true + naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware + identity_generation_preferences: + Doctrine\DBAL\Platforms\PostgreSQLPlatform: identity + auto_mapping: true + controller_resolver: + auto_mapping: true + mappings: + App: + type: attribute + is_bundle: false + dir: '%kernel.project_dir%/src/Entity' + prefix: 'App\Entity' + alias: App - entity_managers: - default: &common_orm_settings - report_fields_where_declared: true - validate_xml_mapping: true - naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware - identity_generation_preferences: - Doctrine\DBAL\Platforms\PostgreSQLPlatform: identity - mappings: - App: - type: attribute - is_bundle: false - dir: '%kernel.project_dir%/src/Entity' - prefix: 'App\Entity' - alias: App - dql: - string_functions: - regexp: App\Doctrine\Functions\Regexp - field: DoctrineExtensions\Query\Mysql\Field - field2: App\Doctrine\Functions\Field2 - natsort: App\Doctrine\Functions\Natsort - array_position: App\Doctrine\Functions\ArrayPosition - ilike: App\Doctrine\Functions\ILike - connection: default - - migration_source: - <<: *common_orm_settings - connection: migration_source + dql: + string_functions: + regexp: App\Doctrine\Functions\Regexp + field: DoctrineExtensions\Query\Mysql\Field + field2: App\Doctrine\Functions\Field2 + natsort: App\Doctrine\Functions\Natsort + array_position: App\Doctrine\Functions\ArrayPosition + ilike: App\Doctrine\Functions\ILike when@test: doctrine: diff --git a/config/reference.php b/config/reference.php index 3ed46fd1..756dc446 100644 --- a/config/reference.php +++ b/config/reference.php @@ -1622,6 +1622,7 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * flysystem?: array{ * filesystem_service: scalar|null|Param, * }, + * asset_mapper?: array, * chain?: array{ * loaders: list, * }, @@ -2301,11 +2302,13 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * controllers_json?: scalar|null|Param, // Default: "%kernel.project_dir%/assets/controllers.json" * } * @psalm-type UxTranslatorConfig = array{ - * dump_directory?: scalar|null|Param, // Default: "%kernel.project_dir%/var/translations" + * dump_directory?: scalar|null|Param, // The directory where translations and TypeScript types are dumped. // Default: "%kernel.project_dir%/var/translations" + * dump_typescript?: bool|Param, // Control whether TypeScript types are dumped alongside translations. Disable this if you do not use TypeScript (e.g. in production when using AssetMapper). // Default: true * domains?: string|array{ // List of domains to include/exclude from the generated translations. Prefix with a `!` to exclude a domain. * type?: scalar|null|Param, * elements?: list, * }, + * keys_patterns?: list, * } * @psalm-type DompdfFontLoaderConfig = array{ * autodiscovery?: bool|array{ diff --git a/src/Command/Migrations/DBMigrationCommand.php b/src/Command/Migrations/DBMigrationCommand.php index 0c58e6b9..812d1c36 100644 --- a/src/Command/Migrations/DBMigrationCommand.php +++ b/src/Command/Migrations/DBMigrationCommand.php @@ -26,8 +26,11 @@ namespace App\Command\Migrations; use App\DataTables\Helpers\ColumnSortHelper; use App\Entity\Parts\Manufacturer; use App\Services\ImportExportSystem\PartKeeprImporter\PKImportHelper; +use Doctrine\Bundle\DoctrineBundle\ConnectionFactory; use Doctrine\DBAL\Platforms\AbstractMySQLPlatform; use Doctrine\DBAL\Platforms\PostgreSQLPlatform; +use Doctrine\DBAL\Tools\DsnParser; +use Doctrine\ORM\EntityManager; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Id\AssignedGenerator; @@ -36,6 +39,7 @@ use Doctrine\Persistence\ManagerRegistry; use Doctrine\Persistence\ObjectManager; use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; @@ -43,23 +47,40 @@ use Symfony\Component\Console\Style\SymfonyStyle; #[AsCommand('partdb:migrate-db', 'Migrate the database to a different platform')] class DBMigrationCommand extends Command { - private readonly EntityManagerInterface $sourceEM; - private readonly EntityManagerInterface $targetEM; + private ?EntityManagerInterface $sourceEM = null; - public function __construct(private readonly ManagerRegistry $managerRegistry, + public function __construct( + private readonly EntityManagerInterface $targetEM, private readonly PKImportHelper $importHelper, ) { - $this->sourceEM = $this->managerRegistry->getManager('migration_source'); - $this->targetEM = $this->managerRegistry->getManager('default'); - parent::__construct(); } + public function configure(): void + { + $this-> + addArgument('url', InputArgument::REQUIRED, 'The database connection URL of the source database to migrate from'); + } + + /** + * Construct a source EntityManager based on the given connection URL + * @param string $url + * @return EntityManagerInterface + */ + private function getSourceEm(string $url): EntityManagerInterface + { + $connectionFactory = new ConnectionFactory(); + $connection = $connectionFactory->createConnection(['url' => $url]); + return new EntityManager($connection, $this->targetEM->getConfiguration()); + } + public function execute(InputInterface $input, OutputInterface $output): int { $io = new SymfonyStyle($input, $output); + $this->sourceEM = $this->getSourceEm($input->getArgument('url')); + // Example migration logic (to be replaced with actual migration code) $io->info('Starting database migration...'); From 343ad6beff4cfa492cb5941b0bbba856525ba903 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 8 Jan 2026 22:16:38 +0100 Subject: [PATCH 102/235] Check that databases are up to date --- ...mmand.php => DBPlatformConvertCommand.php} | 85 +++++++++++-------- 1 file changed, 50 insertions(+), 35 deletions(-) rename src/Command/Migrations/{DBMigrationCommand.php => DBPlatformConvertCommand.php} (70%) diff --git a/src/Command/Migrations/DBMigrationCommand.php b/src/Command/Migrations/DBPlatformConvertCommand.php similarity index 70% rename from src/Command/Migrations/DBMigrationCommand.php rename to src/Command/Migrations/DBPlatformConvertCommand.php index 812d1c36..61a34c31 100644 --- a/src/Command/Migrations/DBMigrationCommand.php +++ b/src/Command/Migrations/DBPlatformConvertCommand.php @@ -23,20 +23,17 @@ declare(strict_types=1); namespace App\Command\Migrations; -use App\DataTables\Helpers\ColumnSortHelper; -use App\Entity\Parts\Manufacturer; use App\Services\ImportExportSystem\PartKeeprImporter\PKImportHelper; use Doctrine\Bundle\DoctrineBundle\ConnectionFactory; use Doctrine\DBAL\Platforms\AbstractMySQLPlatform; use Doctrine\DBAL\Platforms\PostgreSQLPlatform; -use Doctrine\DBAL\Tools\DsnParser; +use Doctrine\Migrations\Configuration\EntityManager\ExistingEntityManager; +use Doctrine\Migrations\Configuration\Migration\ExistingConfiguration; use Doctrine\ORM\EntityManager; use Doctrine\ORM\EntityManagerInterface; - +use Doctrine\Migrations\DependencyFactory; use Doctrine\ORM\Id\AssignedGenerator; use Doctrine\ORM\Mapping\ClassMetadata; -use Doctrine\Persistence\ManagerRegistry; -use Doctrine\Persistence\ObjectManager; use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; @@ -44,14 +41,14 @@ use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; -#[AsCommand('partdb:migrate-db', 'Migrate the database to a different platform')] -class DBMigrationCommand extends Command +#[AsCommand('partdb:migrations:convert-db-platform', 'Convert the database to a different platform')] +class DBPlatformConvertCommand extends Command { - private ?EntityManagerInterface $sourceEM = null; public function __construct( private readonly EntityManagerInterface $targetEM, private readonly PKImportHelper $importHelper, + private readonly DependencyFactory $dependencyFactory, ) { parent::__construct(); @@ -60,26 +57,23 @@ class DBMigrationCommand extends Command public function configure(): void { $this-> - addArgument('url', InputArgument::REQUIRED, 'The database connection URL of the source database to migrate from'); - } - - /** - * Construct a source EntityManager based on the given connection URL - * @param string $url - * @return EntityManagerInterface - */ - private function getSourceEm(string $url): EntityManagerInterface - { - $connectionFactory = new ConnectionFactory(); - $connection = $connectionFactory->createConnection(['url' => $url]); - return new EntityManager($connection, $this->targetEM->getConfiguration()); + addArgument('url', InputArgument::REQUIRED, 'The database connection URL of the source database to migrate from'); } public function execute(InputInterface $input, OutputInterface $output): int { $io = new SymfonyStyle($input, $output); - $this->sourceEM = $this->getSourceEm($input->getArgument('url')); + $sourceEM = $this->getSourceEm($input->getArgument('url')); + + //Check that both databases are not using the same driver + if ($sourceEM->getConnection()->getDatabasePlatform()::class === $this->targetEM->getConnection()->getDatabasePlatform()::class) { + $io->error('Source and target database are using the same database platform / driver. This command is only intended to migrate between different database platforms (e.g. from MySQL to PostgreSQL).'); + return 1; + } + + + $this->ensureVersionUpToDate($sourceEM); // Example migration logic (to be replaced with actual migration code) $io->info('Starting database migration...'); @@ -115,7 +109,7 @@ class DBMigrationCommand extends Command $io->progressStart(count($metadata)); - //Afterwards we migrate all entities + //Afterward we migrate all entities foreach ($metadata as $metadatum) { //skip all superclasses if ($metadatum->isMappedSuperclass) { @@ -126,7 +120,7 @@ class DBMigrationCommand extends Command $io->note('Migrating entity: ' . $entityClass); - $repo = $this->sourceEM->getRepository($entityClass); + $repo = $sourceEM->getRepository($entityClass); $items = $repo->findAll(); foreach ($items as $index => $item) { $this->targetEM->persist($item); @@ -136,20 +130,12 @@ class DBMigrationCommand extends Command $io->progressFinish(); - //Migrate all manufacturers from source to target - /*$manufacturerRepo = $this->sourceEM->getRepository(Manufacturer::class); - $manufacturers = $manufacturerRepo->findAll(); - foreach ($manufacturers as $manufacturer) { - $this->targetEM->persist($manufacturer); - } - $this->targetEM->flush(); - */ //Fix sequences / auto increment values on target database $io->info('Fixing sequences / auto increment values on target database...'); $this->fixAutoIncrements($this->targetEM); - $output->writeln('Database migration completed successfully.'); + $io->success('Database migration completed successfully.'); if ($io->isVerbose()) { $io->info('Process took peak memory: ' . round(memory_get_peak_usage(true) / 1024 / 1024, 2) . ' MB'); @@ -158,6 +144,35 @@ class DBMigrationCommand extends Command return Command::SUCCESS; } + /** + * Construct a source EntityManager based on the given connection URL + * @param string $url + * @return EntityManagerInterface + */ + private function getSourceEm(string $url): EntityManagerInterface + { + $connectionFactory = new ConnectionFactory(); + $connection = $connectionFactory->createConnection(['url' => $url]); + return new EntityManager($connection, $this->targetEM->getConfiguration()); + } + + private function ensureVersionUpToDate(EntityManagerInterface $sourceEM): void + { + //Ensure that target database is up to date + $migrationStatusCalculator = $this->dependencyFactory->getMigrationStatusCalculator(); + $newMigrations = $migrationStatusCalculator->getNewMigrations(); + if (count($newMigrations->getItems()) > 0) { + throw new \RuntimeException("Target database is not up to date. Please run all migrations (with doctrine:migrations:migrate) before starting the migration process."); + } + + $sourceDependencyLoader = DependencyFactory::fromEntityManager(new ExistingConfiguration($this->dependencyFactory->getConfiguration()), new ExistingEntityManager($sourceEM)); + $sourceMigrationStatusCalculator = $sourceDependencyLoader->getMigrationStatusCalculator(); + $sourceNewMigrations = $sourceMigrationStatusCalculator->getNewMigrations(); + if (count($sourceNewMigrations->getItems()) > 0) { + throw new \RuntimeException("Source database is not up to date. Please run all migrations (with doctrine:migrations:migrate) on the source database before starting the migration process."); + } + } + private function fixAutoIncrements(EntityManagerInterface $em): void { $connection = $em->getConnection(); @@ -165,7 +180,7 @@ class DBMigrationCommand extends Command if ($platform instanceof PostgreSQLPlatform) { $connection->executeStatement( - //From: https://wiki.postgresql.org/wiki/Fixing_Sequences + //From: https://wiki.postgresql.org/wiki/Fixing_Sequences << Date: Thu, 8 Jan 2026 22:22:07 +0100 Subject: [PATCH 103/235] Support %kernel.project_dir% in db conversion tool --- .../Migrations/DBPlatformConvertCommand.php | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/Command/Migrations/DBPlatformConvertCommand.php b/src/Command/Migrations/DBPlatformConvertCommand.php index 61a34c31..91172920 100644 --- a/src/Command/Migrations/DBPlatformConvertCommand.php +++ b/src/Command/Migrations/DBPlatformConvertCommand.php @@ -40,6 +40,7 @@ use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; +use Symfony\Component\DependencyInjection\Attribute\Autowire; #[AsCommand('partdb:migrations:convert-db-platform', 'Convert the database to a different platform')] class DBPlatformConvertCommand extends Command @@ -49,6 +50,8 @@ class DBPlatformConvertCommand extends Command private readonly EntityManagerInterface $targetEM, private readonly PKImportHelper $importHelper, private readonly DependencyFactory $dependencyFactory, + #[Autowire('%kernel.project_dir%')] + private readonly string $kernelProjectDir, ) { parent::__construct(); @@ -57,7 +60,7 @@ class DBPlatformConvertCommand extends Command public function configure(): void { $this-> - addArgument('url', InputArgument::REQUIRED, 'The database connection URL of the source database to migrate from'); + addArgument('url', InputArgument::REQUIRED, 'The database connection URL of the source database to migrate from'); } public function execute(InputInterface $input, OutputInterface $output): int @@ -75,6 +78,19 @@ class DBPlatformConvertCommand extends Command $this->ensureVersionUpToDate($sourceEM); + $io->note('This command is still in development. If you encounter any problems, please report them to the issue tracker on GitHub.'); + $io->warning(sprintf('This command will delete all existing data in the target database "%s". Make sure that you have no important data in the database before you continue!', + $this->targetEM->getConnection()->getDatabase() ?? 'unknown' + )); + + $io->ask('Please type "DELETE ALL DATA" to continue.', '', function ($answer) { + if (strtoupper($answer) !== 'DELETE ALL DATA') { + throw new \RuntimeException('You did not type "DELETE ALL DATA"!'); + } + return $answer; + }); + + // Example migration logic (to be replaced with actual migration code) $io->info('Starting database migration...'); @@ -151,6 +167,9 @@ class DBPlatformConvertCommand extends Command */ private function getSourceEm(string $url): EntityManagerInterface { + //Replace any %kernel.project_dir% placeholders + $url = str_replace('%kernel.project_dir%', $this->kernelProjectDir, $url); + $connectionFactory = new ConnectionFactory(); $connection = $connectionFactory->createConnection(['url' => $url]); return new EntityManager($connection, $this->targetEM->getConfiguration()); From ddbfc87ce16c86977c0355d99cf5f7aca1726baa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 8 Jan 2026 22:22:47 +0100 Subject: [PATCH 104/235] Set help for DBPlatformConvertCommand --- src/Command/Migrations/DBPlatformConvertCommand.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Command/Migrations/DBPlatformConvertCommand.php b/src/Command/Migrations/DBPlatformConvertCommand.php index 91172920..80dc332e 100644 --- a/src/Command/Migrations/DBPlatformConvertCommand.php +++ b/src/Command/Migrations/DBPlatformConvertCommand.php @@ -59,8 +59,9 @@ class DBPlatformConvertCommand extends Command public function configure(): void { - $this-> - addArgument('url', InputArgument::REQUIRED, 'The database connection URL of the source database to migrate from'); + $this + ->setHelp('This command allows you to migrate the database from one database platform to another (e.g. from MySQL to PostgreSQL).') + ->addArgument('url', InputArgument::REQUIRED, 'The database connection URL of the source database to migrate from'); } public function execute(InputInterface $input, OutputInterface $output): int From 64efca4786044ef4a358c067938723a8723a2f74 Mon Sep 17 00:00:00 2001 From: kernchen-brc Date: Fri, 9 Jan 2026 11:37:30 +0100 Subject: [PATCH 105/235] Added ID to search options. Fixed seach option by using equal to instead of like for the ID. --- src/Controller/PartListsController.php | 1 + src/DataTables/Filters/PartSearchFilter.php | 69 +++++++++++++++------ templates/components/search.macro.html.twig | 4 ++ 3 files changed, 56 insertions(+), 18 deletions(-) diff --git a/src/Controller/PartListsController.php b/src/Controller/PartListsController.php index 808b0c5d..2210fc18 100644 --- a/src/Controller/PartListsController.php +++ b/src/Controller/PartListsController.php @@ -319,6 +319,7 @@ class PartListsController extends AbstractController //As an unchecked checkbox is not set in the query, the default value for all bools have to be false (which is the default argument value)! $filter->setName($request->query->getBoolean('name')); + $filter->setDbId($request->query->getBoolean('dbid')); $filter->setCategory($request->query->getBoolean('category')); $filter->setDescription($request->query->getBoolean('description')); $filter->setMpn($request->query->getBoolean('mpn')); diff --git a/src/DataTables/Filters/PartSearchFilter.php b/src/DataTables/Filters/PartSearchFilter.php index aa8c20f4..c0951d3a 100644 --- a/src/DataTables/Filters/PartSearchFilter.php +++ b/src/DataTables/Filters/PartSearchFilter.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace App\DataTables\Filters; use App\DataTables\Filters\Constraints\AbstractConstraint; use Doctrine\ORM\QueryBuilder; +use Doctrine\DBAL\ParameterType; class PartSearchFilter implements FilterInterface { @@ -33,6 +34,9 @@ class PartSearchFilter implements FilterInterface /** @var bool Use name field for searching */ protected bool $name = true; + /** @var bool Use id field for searching */ + protected bool $dbId = false; + /** @var bool Use category name for searching */ protected bool $category = true; @@ -120,33 +124,51 @@ class PartSearchFilter implements FilterInterface public function apply(QueryBuilder $queryBuilder): void { $fields_to_search = $this->getFieldsToSearch(); + $is_numeric = preg_match('/^\d+$/', $this->keyword) === 1; + + // Add exact ID match only when the keyword is numeric + $search_dbId = $is_numeric && (bool)$this->dbId; //If we have nothing to search for, do nothing - if ($fields_to_search === [] || $this->keyword === '') { + if (($fields_to_search === [] && !$search_dbId) || $this->keyword === '') { return; } - //Convert the fields to search to a list of expressions - $expressions = array_map(function (string $field): string { + $expressions = []; + + if($fields_to_search !== []) { + //Convert the fields to search to a list of expressions + $expressions = array_map(function (string $field): string { + if ($this->regex) { + return sprintf("REGEXP(%s, :search_query) = TRUE", $field); + } + + return sprintf("ILIKE(%s, :search_query) = TRUE", $field); + }, $fields_to_search); + + //For regex, we pass the query as is, for like we add % to the start and end as wildcards if ($this->regex) { - return sprintf("REGEXP(%s, :search_query) = TRUE", $field); + $queryBuilder->setParameter('search_query', $this->keyword); + } else { + //Escape % and _ characters in the keyword + $this->keyword = str_replace(['%', '_'], ['\%', '\_'], $this->keyword); + $queryBuilder->setParameter('search_query', '%' . $this->keyword . '%'); } + } - return sprintf("ILIKE(%s, :search_query) = TRUE", $field); - }, $fields_to_search); + //Use equal expression to just search for exact numeric matches + if ($search_dbId) { + $expressions[] = $queryBuilder->expr()->eq('part.id', ':id_exact'); + $queryBuilder->setParameter('id_exact', (int) $this->keyword, + \Doctrine\DBAL\ParameterType::INTEGER); + } - //Add Or concatenation of the expressions to our query - $queryBuilder->andWhere( - $queryBuilder->expr()->orX(...$expressions) - ); - - //For regex, we pass the query as is, for like we add % to the start and end as wildcards - if ($this->regex) { - $queryBuilder->setParameter('search_query', $this->keyword); - } else { - //Escape % and _ characters in the keyword - $this->keyword = str_replace(['%', '_'], ['\%', '\_'], $this->keyword); - $queryBuilder->setParameter('search_query', '%' . $this->keyword . '%'); + //Guard condition + if (!empty($expressions)) { + //Add Or concatenation of the expressions to our query + $queryBuilder->andWhere( + $queryBuilder->expr()->orX(...$expressions) + ); } } @@ -183,6 +205,17 @@ class PartSearchFilter implements FilterInterface return $this; } + public function isDbId(): bool + { + return $this->dbId; + } + + public function setDbId(bool $dbId): PartSearchFilter + { + $this->dbId = $dbId; + return $this; + } + public function isCategory(): bool { return $this->category; diff --git a/templates/components/search.macro.html.twig b/templates/components/search.macro.html.twig index e62af2b1..a324ad35 100644 --- a/templates/components/search.macro.html.twig +++ b/templates/components/search.macro.html.twig @@ -11,6 +11,10 @@ +
    + + +
    From 300ee33be27f08c3c0678a7c32fd154a9972e0e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 9 Jan 2026 19:46:09 +0100 Subject: [PATCH 106/235] Allow to continue even if source and target db platform are the same --- src/Command/Migrations/DBPlatformConvertCommand.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Command/Migrations/DBPlatformConvertCommand.php b/src/Command/Migrations/DBPlatformConvertCommand.php index 80dc332e..256a4db1 100644 --- a/src/Command/Migrations/DBPlatformConvertCommand.php +++ b/src/Command/Migrations/DBPlatformConvertCommand.php @@ -72,8 +72,11 @@ class DBPlatformConvertCommand extends Command //Check that both databases are not using the same driver if ($sourceEM->getConnection()->getDatabasePlatform()::class === $this->targetEM->getConnection()->getDatabasePlatform()::class) { - $io->error('Source and target database are using the same database platform / driver. This command is only intended to migrate between different database platforms (e.g. from MySQL to PostgreSQL).'); - return 1; + $io->warning('Source and target database are using the same database platform / driver. This command is only intended to migrate between different database platforms (e.g. from MySQL to PostgreSQL).'); + if (!$io->confirm('Do you want to continue anyway?', false)) { + $io->info('Aborting migration process.'); + return Command::SUCCESS; + } } @@ -219,6 +222,6 @@ class DBPlatformConvertCommand extends Command AND T.relname = PGT.tablename ORDER BY S.relname; SQL); - }; + } } } From aefb69c51e625576534d82add8f6e73cd4a1f108 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 9 Jan 2026 21:17:51 +0100 Subject: [PATCH 107/235] Fixed error that users could not be converted due to settings and backupCodes not allowed as nullable --- .../Migrations/DBPlatformConvertCommand.php | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/Command/Migrations/DBPlatformConvertCommand.php b/src/Command/Migrations/DBPlatformConvertCommand.php index 256a4db1..86052bf7 100644 --- a/src/Command/Migrations/DBPlatformConvertCommand.php +++ b/src/Command/Migrations/DBPlatformConvertCommand.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace App\Command\Migrations; +use App\Entity\UserSystem\User; use App\Services\ImportExportSystem\PartKeeprImporter\PKImportHelper; use Doctrine\Bundle\DoctrineBundle\ConnectionFactory; use Doctrine\DBAL\Platforms\AbstractMySQLPlatform; @@ -87,6 +88,9 @@ class DBPlatformConvertCommand extends Command $this->targetEM->getConnection()->getDatabase() ?? 'unknown' )); + //$users = $sourceEM->getRepository(User::class)->findAll(); + //dump($users); + $io->ask('Please type "DELETE ALL DATA" to continue.', '', function ($answer) { if (strtoupper($answer) !== 'DELETE ALL DATA') { throw new \RuntimeException('You did not type "DELETE ALL DATA"!'); @@ -120,6 +124,7 @@ class DBPlatformConvertCommand extends Command foreach ($metadatum->getAssociationNames() as $fieldName) { $mapping = $metadatum->getAssociationMapping($fieldName); $mapping->cascade = array_unique(array_merge($mapping->cascade, ['persist'])); + $mapping->fetch = ClassMetadata::FETCH_EAGER; //Avoid lazy loading issues during migration $metadatum->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE); $metadatum->setIdGenerator(new AssignedGenerator()); @@ -129,6 +134,10 @@ class DBPlatformConvertCommand extends Command $io->progressStart(count($metadata)); + //First we migrate users to avoid foreign key constraint issues + $io->info('Migrating users first to avoid foreign key constraint issues...'); + $this->fixUsers($sourceEM); + //Afterward we migrate all entities foreach ($metadata as $metadatum) { //skip all superclasses @@ -196,6 +205,23 @@ class DBPlatformConvertCommand extends Command } } + private function fixUsers(EntityManagerInterface $sourceEM): void + { + //To avoid a problem with (Column 'settings' cannot be null) in MySQL we need to migrate the user entities first + //and fix the settings and backupCodes fields + + $reflClass = new \ReflectionClass(User::class); + foreach ($sourceEM->getRepository(User::class)->findAll() as $user) { + foreach (['settings', 'backupCodes'] as $field) { + $property = $reflClass->getProperty($field); + if (!$property->isInitialized($user) || $property->getValue($user) === null) { + $property->setValue($user, []); + } + } + $this->targetEM->persist($user); + } + } + private function fixAutoIncrements(EntityManagerInterface $em): void { $connection = $em->getConnection(); From 6c3e4d788055af049a30bdb3fc7f901e0bb1b001 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 10 Jan 2026 21:14:27 +0100 Subject: [PATCH 108/235] Added documentation about the database conversion command --- docs/installation/choosing_database.md | 24 ++++++++++++++++++++++-- docs/usage/console_commands.md | 1 + 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/docs/installation/choosing_database.md b/docs/installation/choosing_database.md index 8a070120..27d70e54 100644 --- a/docs/installation/choosing_database.md +++ b/docs/installation/choosing_database.md @@ -21,8 +21,8 @@ differences between them, which might be important for you. Therefore the pros a are listed here. {: .important } -You have to choose between the database types before you start using Part-DB and **you can not change it (easily) after -you have started creating data**. So you should choose the database type for your use case (and possible future uses). +While you can change the database platform later (see below), it is still experimental and not recommended. +So you should choose the database type for your use case (and possible future uses). ## Comparison @@ -180,3 +180,23 @@ and it is automatically used if available. For SQLite and MySQL < 10.7 it has to be emulated if wanted, which is pretty slow. Therefore it has to be explicitly enabled by setting the `DATABASE_EMULATE_NATURAL_SORT` environment variable to `1`. If it is 0 the classical binary sorting is used, on these databases. The emulations might have some quirks and issues, so it is recommended to use a database which supports natural sorting natively, if you want to use it. + +## Converting between database platforms + +{: .important } +The database conversion is still experimental. Therefore it is recommended to backup your database before performing a conversion, and check if everything works as expected afterwards. + +If you want to change the database platform of your Part-DB installation (e.g. from SQLite to MySQL/MariaDB or PostgreSQL, or vice versa), there is the `partdb:migrations:convert-db-platform` console command, which can help you with that: + +1. Make a backup of your current database to be safe if something goes wrong (see the backup documentation). +2. Ensure that your database is at the latest schema by running the migrations: `php bin/console doctrine:migrations:migrate` +3. Change the `DATABASE_URL` environment variable to the new database platform and connection information. Copy the old `DATABASE_URL` as you will need it later. +4. Run `php bin/console doctrine:migrations:migrate` again to create the database schema in the new database. You will not need the admin password, that is shown when running the migrations. +5. Run the conversion command, where you have to provide the old `DATABASE_URL` as parameter: `php bin/console partdb:migrations:convert-db-platform ` + Replace ` Date: Sat, 10 Jan 2026 21:34:01 +0100 Subject: [PATCH 109/235] Updated dependencies --- composer.json | 2 +- composer.lock | 363 +++++++++++++++++++++++++------------------------- yarn.lock | 52 ++++---- 3 files changed, 209 insertions(+), 208 deletions(-) diff --git a/composer.json b/composer.json index 20a5dcca..bb41a95d 100644 --- a/composer.json +++ b/composer.json @@ -80,7 +80,7 @@ "symfony/translation": "7.4.*", "symfony/twig-bundle": "7.4.*", "symfony/type-info": "7.4.0", - "symfony/ux-translator": "^2.10", + "symfony/ux-translator": "^2.32.0", "symfony/ux-turbo": "^2.0", "symfony/validator": "7.4.*", "symfony/web-link": "7.4.*", diff --git a/composer.lock b/composer.lock index 3c3a201a..777dfa24 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "43757aac5f0141421893ff144ccc462f", + "content-hash": "fc3801df89de9d24084329263c36b0d6", "packages": [ { "name": "amphp/amp", @@ -968,16 +968,16 @@ }, { "name": "api-platform/doctrine-common", - "version": "v4.2.11", + "version": "v4.2.12", "source": { "type": "git", "url": "https://github.com/api-platform/doctrine-common.git", - "reference": "281f2ef1433253ec63a4f845622639665c1d68c5" + "reference": "e3f4ebd57d189a4a2f06929b3c14b162ff5c4750" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/doctrine-common/zipball/281f2ef1433253ec63a4f845622639665c1d68c5", - "reference": "281f2ef1433253ec63a4f845622639665c1d68c5", + "url": "https://api.github.com/repos/api-platform/doctrine-common/zipball/e3f4ebd57d189a4a2f06929b3c14b162ff5c4750", + "reference": "e3f4ebd57d189a4a2f06929b3c14b162ff5c4750", "shasum": "" }, "require": { @@ -995,7 +995,7 @@ "doctrine/mongodb-odm": "^2.10", "doctrine/orm": "^2.17 || ^3.0", "phpspec/prophecy-phpunit": "^2.2", - "phpunit/phpunit": "11.5.x-dev", + "phpunit/phpunit": "^12.2", "symfony/type-info": "^7.3 || ^8.0" }, "suggest": { @@ -1052,22 +1052,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/doctrine-common/tree/v4.2.11" + "source": "https://github.com/api-platform/doctrine-common/tree/v4.2.12" }, - "time": "2025-12-04T14:20:26+00:00" + "time": "2026-01-08T22:41:56+00:00" }, { "name": "api-platform/doctrine-orm", - "version": "v4.2.11", + "version": "v4.2.12", "source": { "type": "git", "url": "https://github.com/api-platform/doctrine-orm.git", - "reference": "6ea550f2db2db04979aefd654c115ecd6f897039" + "reference": "6dd409d7e90b031cc9bddaa397f049da9da0799f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/doctrine-orm/zipball/6ea550f2db2db04979aefd654c115ecd6f897039", - "reference": "6ea550f2db2db04979aefd654c115ecd6f897039", + "url": "https://api.github.com/repos/api-platform/doctrine-orm/zipball/6dd409d7e90b031cc9bddaa397f049da9da0799f", + "reference": "6dd409d7e90b031cc9bddaa397f049da9da0799f", "shasum": "" }, "require": { @@ -1080,7 +1080,7 @@ "require-dev": { "doctrine/doctrine-bundle": "^2.11 || ^3.1", "phpspec/prophecy-phpunit": "^2.2", - "phpunit/phpunit": "11.5.x-dev", + "phpunit/phpunit": "^12.2", "ramsey/uuid": "^4.7", "ramsey/uuid-doctrine": "^2.0", "symfony/cache": "^6.4 || ^7.0 || ^8.0", @@ -1139,22 +1139,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/doctrine-orm/tree/v4.2.11" + "source": "https://github.com/api-platform/doctrine-orm/tree/v4.2.12" }, - "time": "2025-12-04T14:20:26+00:00" + "time": "2026-01-08T14:27:10+00:00" }, { "name": "api-platform/documentation", - "version": "v4.2.11", + "version": "v4.2.12", "source": { "type": "git", "url": "https://github.com/api-platform/documentation.git", - "reference": "8910f2a0aa7910ed807f128510553b24152e5ea5" + "reference": "873543a827df5c25b008bd730f2096701e1943b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/documentation/zipball/8910f2a0aa7910ed807f128510553b24152e5ea5", - "reference": "8910f2a0aa7910ed807f128510553b24152e5ea5", + "url": "https://api.github.com/repos/api-platform/documentation/zipball/873543a827df5c25b008bd730f2096701e1943b8", + "reference": "873543a827df5c25b008bd730f2096701e1943b8", "shasum": "" }, "require": { @@ -1162,7 +1162,7 @@ "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "11.5.x-dev" + "phpunit/phpunit": "^12.2" }, "type": "project", "extra": { @@ -1202,22 +1202,22 @@ ], "description": "API Platform documentation controller.", "support": { - "source": "https://github.com/api-platform/documentation/tree/v4.2.11" + "source": "https://github.com/api-platform/documentation/tree/v4.2.12" }, - "time": "2025-11-30T12:55:42+00:00" + "time": "2025-12-27T22:15:57+00:00" }, { "name": "api-platform/http-cache", - "version": "v4.2.11", + "version": "v4.2.12", "source": { "type": "git", "url": "https://github.com/api-platform/http-cache.git", - "reference": "4bb2eab81407f493f54f51be7aa1918f362c14b5" + "reference": "7679a23ce4bf8f35a69d94ac060f6d13ab88497b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/http-cache/zipball/4bb2eab81407f493f54f51be7aa1918f362c14b5", - "reference": "4bb2eab81407f493f54f51be7aa1918f362c14b5", + "url": "https://api.github.com/repos/api-platform/http-cache/zipball/7679a23ce4bf8f35a69d94ac060f6d13ab88497b", + "reference": "7679a23ce4bf8f35a69d94ac060f6d13ab88497b", "shasum": "" }, "require": { @@ -1229,7 +1229,7 @@ "require-dev": { "guzzlehttp/guzzle": "^6.0 || ^7.0 || ^8.0", "phpspec/prophecy-phpunit": "^2.2", - "phpunit/phpunit": "11.5.x-dev", + "phpunit/phpunit": "^12.2", "symfony/dependency-injection": "^6.4 || ^7.0 || ^8.0", "symfony/http-client": "^6.4 || ^7.0 || ^8.0", "symfony/type-info": "^7.3 || ^8.0" @@ -1282,22 +1282,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/http-cache/tree/v4.2.11" + "source": "https://github.com/api-platform/http-cache/tree/v4.2.12" }, - "time": "2025-11-30T12:55:42+00:00" + "time": "2025-12-27T22:15:57+00:00" }, { "name": "api-platform/hydra", - "version": "v4.2.11", + "version": "v4.2.12", "source": { "type": "git", "url": "https://github.com/api-platform/hydra.git", - "reference": "80491f175647d0a63eb96035b2468fc1c2a76c37" + "reference": "866611a986f4f52da7807b04a0b2cf64e314ab56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/hydra/zipball/80491f175647d0a63eb96035b2468fc1c2a76c37", - "reference": "80491f175647d0a63eb96035b2468fc1c2a76c37", + "url": "https://api.github.com/repos/api-platform/hydra/zipball/866611a986f4f52da7807b04a0b2cf64e314ab56", + "reference": "866611a986f4f52da7807b04a0b2cf64e314ab56", "shasum": "" }, "require": { @@ -1317,7 +1317,7 @@ "api-platform/doctrine-orm": "^4.2", "phpspec/prophecy": "^1.19", "phpspec/prophecy-phpunit": "^2.2", - "phpunit/phpunit": "11.5.x-dev" + "phpunit/phpunit": "^12.2" }, "type": "library", "extra": { @@ -1369,22 +1369,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/hydra/tree/v4.2.11" + "source": "https://github.com/api-platform/hydra/tree/v4.2.12" }, - "time": "2025-12-18T14:34:13+00:00" + "time": "2025-12-27T22:15:57+00:00" }, { "name": "api-platform/json-api", - "version": "v4.2.11", + "version": "v4.2.12", "source": { "type": "git", "url": "https://github.com/api-platform/json-api.git", - "reference": "2bb93263f900401c41476b93bcf03c386c9500d4" + "reference": "86f93ac31f20faeeca5cacd74d1318dc273e6b93" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/json-api/zipball/2bb93263f900401c41476b93bcf03c386c9500d4", - "reference": "2bb93263f900401c41476b93bcf03c386c9500d4", + "url": "https://api.github.com/repos/api-platform/json-api/zipball/86f93ac31f20faeeca5cacd74d1318dc273e6b93", + "reference": "86f93ac31f20faeeca5cacd74d1318dc273e6b93", "shasum": "" }, "require": { @@ -1401,7 +1401,7 @@ "require-dev": { "phpspec/prophecy": "^1.19", "phpspec/prophecy-phpunit": "^2.2", - "phpunit/phpunit": "11.5.x-dev", + "phpunit/phpunit": "^12.2", "symfony/type-info": "^7.3 || ^8.0" }, "type": "library", @@ -1451,22 +1451,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/json-api/tree/v4.2.11" + "source": "https://github.com/api-platform/json-api/tree/v4.2.12" }, - "time": "2025-12-19T14:13:59+00:00" + "time": "2025-12-27T22:15:57+00:00" }, { "name": "api-platform/json-schema", - "version": "v4.2.11", + "version": "v4.2.12", "source": { "type": "git", "url": "https://github.com/api-platform/json-schema.git", - "reference": "6a5f901a744018e48b8b94bbf798cd4f617cfcde" + "reference": "161d5d2eab6717261155c06de6892064db458fc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/json-schema/zipball/6a5f901a744018e48b8b94bbf798cd4f617cfcde", - "reference": "6a5f901a744018e48b8b94bbf798cd4f617cfcde", + "url": "https://api.github.com/repos/api-platform/json-schema/zipball/161d5d2eab6717261155c06de6892064db458fc0", + "reference": "161d5d2eab6717261155c06de6892064db458fc0", "shasum": "" }, "require": { @@ -1480,7 +1480,7 @@ }, "require-dev": { "phpspec/prophecy-phpunit": "^2.2", - "phpunit/phpunit": "11.5.x-dev" + "phpunit/phpunit": "^12.2" }, "type": "library", "extra": { @@ -1532,22 +1532,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/json-schema/tree/v4.2.11" + "source": "https://github.com/api-platform/json-schema/tree/v4.2.12" }, - "time": "2025-12-02T13:32:19+00:00" + "time": "2025-12-27T22:15:57+00:00" }, { "name": "api-platform/jsonld", - "version": "v4.2.11", + "version": "v4.2.12", "source": { "type": "git", "url": "https://github.com/api-platform/jsonld.git", - "reference": "3889b185376198a182d2527c48ec0b29b604505f" + "reference": "b6a35c735e3b4b2342e64ab3172151dcb3aaf78d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/jsonld/zipball/3889b185376198a182d2527c48ec0b29b604505f", - "reference": "3889b185376198a182d2527c48ec0b29b604505f", + "url": "https://api.github.com/repos/api-platform/jsonld/zipball/b6a35c735e3b4b2342e64ab3172151dcb3aaf78d", + "reference": "b6a35c735e3b4b2342e64ab3172151dcb3aaf78d", "shasum": "" }, "require": { @@ -1557,7 +1557,7 @@ "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "11.5.x-dev", + "phpunit/phpunit": "^12.2", "symfony/type-info": "^7.3 || ^8.0" }, "type": "library", @@ -1612,22 +1612,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/jsonld/tree/v4.2.11" + "source": "https://github.com/api-platform/jsonld/tree/v4.2.12" }, - "time": "2025-12-18T14:34:13+00:00" + "time": "2025-12-27T22:15:57+00:00" }, { "name": "api-platform/metadata", - "version": "v4.2.11", + "version": "v4.2.12", "source": { "type": "git", "url": "https://github.com/api-platform/metadata.git", - "reference": "533774ca55a4f2be9da72da344d5e3e2982fbc86" + "reference": "429ee219f930efd274a9f4e91e92921add7f988a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/metadata/zipball/533774ca55a4f2be9da72da344d5e3e2982fbc86", - "reference": "533774ca55a4f2be9da72da344d5e3e2982fbc86", + "url": "https://api.github.com/repos/api-platform/metadata/zipball/429ee219f930efd274a9f4e91e92921add7f988a", + "reference": "429ee219f930efd274a9f4e91e92921add7f988a", "shasum": "" }, "require": { @@ -1645,7 +1645,7 @@ "api-platform/state": "^4.2.4", "phpspec/prophecy-phpunit": "^2.2", "phpstan/phpdoc-parser": "^1.29 || ^2.0", - "phpunit/phpunit": "11.5.x-dev", + "phpunit/phpunit": "^12.2", "symfony/config": "^6.4 || ^7.0 || ^8.0", "symfony/routing": "^6.4 || ^7.0 || ^8.0", "symfony/var-dumper": "^6.4 || ^7.0 || ^8.0", @@ -1710,22 +1710,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/metadata/tree/v4.2.11" + "source": "https://github.com/api-platform/metadata/tree/v4.2.12" }, - "time": "2025-12-18T14:34:13+00:00" + "time": "2025-12-27T22:15:57+00:00" }, { "name": "api-platform/openapi", - "version": "v4.2.11", + "version": "v4.2.12", "source": { "type": "git", "url": "https://github.com/api-platform/openapi.git", - "reference": "ea49d6d7170f8ecc1c239e7769708628183096b8" + "reference": "3417415125f3ebbcb620f84ef9dd1cd07e2b2621" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/openapi/zipball/ea49d6d7170f8ecc1c239e7769708628183096b8", - "reference": "ea49d6d7170f8ecc1c239e7769708628183096b8", + "url": "https://api.github.com/repos/api-platform/openapi/zipball/3417415125f3ebbcb620f84ef9dd1cd07e2b2621", + "reference": "3417415125f3ebbcb620f84ef9dd1cd07e2b2621", "shasum": "" }, "require": { @@ -1744,7 +1744,7 @@ "api-platform/doctrine-odm": "^4.2", "api-platform/doctrine-orm": "^4.2", "phpspec/prophecy-phpunit": "^2.2", - "phpunit/phpunit": "11.5.x-dev", + "phpunit/phpunit": "^12.2", "symfony/type-info": "^7.3 || ^8.0" }, "type": "library", @@ -1800,22 +1800,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/openapi/tree/v4.2.11" + "source": "https://github.com/api-platform/openapi/tree/v4.2.12" }, - "time": "2025-11-30T12:55:42+00:00" + "time": "2026-01-08T18:17:35+00:00" }, { "name": "api-platform/serializer", - "version": "v4.2.11", + "version": "v4.2.12", "source": { "type": "git", "url": "https://github.com/api-platform/serializer.git", - "reference": "a511d4ba522c3ebbd78c9e1f05e0918978d72a43" + "reference": "f29558c3e212f3b9f18f222240971ea0a8f09f4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/serializer/zipball/a511d4ba522c3ebbd78c9e1f05e0918978d72a43", - "reference": "a511d4ba522c3ebbd78c9e1f05e0918978d72a43", + "url": "https://api.github.com/repos/api-platform/serializer/zipball/f29558c3e212f3b9f18f222240971ea0a8f09f4c", + "reference": "f29558c3e212f3b9f18f222240971ea0a8f09f4c", "shasum": "" }, "require": { @@ -1835,7 +1835,7 @@ "api-platform/openapi": "^4.2", "doctrine/collections": "^2.1", "phpspec/prophecy-phpunit": "^2.2", - "phpunit/phpunit": "11.5.x-dev", + "phpunit/phpunit": "^12.2", "symfony/mercure-bundle": "*", "symfony/type-info": "^7.3 || ^8.0", "symfony/var-dumper": "^6.4 || ^7.0 || ^8.0", @@ -1893,22 +1893,22 @@ "serializer" ], "support": { - "source": "https://github.com/api-platform/serializer/tree/v4.2.11" + "source": "https://github.com/api-platform/serializer/tree/v4.2.12" }, - "time": "2025-12-18T14:36:58+00:00" + "time": "2026-01-09T09:40:33+00:00" }, { "name": "api-platform/state", - "version": "v4.2.11", + "version": "v4.2.12", "source": { "type": "git", "url": "https://github.com/api-platform/state.git", - "reference": "b9644669f953a76742c9f49d571ff42c68e581d1" + "reference": "348d19a2e5fedb01aa55ff7b866691777e54ec39" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/state/zipball/b9644669f953a76742c9f49d571ff42c68e581d1", - "reference": "b9644669f953a76742c9f49d571ff42c68e581d1", + "url": "https://api.github.com/repos/api-platform/state/zipball/348d19a2e5fedb01aa55ff7b866691777e54ec39", + "reference": "348d19a2e5fedb01aa55ff7b866691777e54ec39", "shasum": "" }, "require": { @@ -1923,7 +1923,7 @@ "require-dev": { "api-platform/serializer": "^4.2.4", "api-platform/validator": "^4.2.4", - "phpunit/phpunit": "11.5.x-dev", + "phpunit/phpunit": "^12.2", "symfony/http-foundation": "^6.4.14 || ^7.0 || ^8.0", "symfony/object-mapper": "^7.4 || ^8.0", "symfony/type-info": "^7.4 || ^8.0", @@ -1990,22 +1990,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/state/tree/v4.2.11" + "source": "https://github.com/api-platform/state/tree/v4.2.12" }, - "time": "2025-12-17T15:10:17+00:00" + "time": "2025-12-27T22:15:57+00:00" }, { "name": "api-platform/symfony", - "version": "v4.2.11", + "version": "v4.2.12", "source": { "type": "git", "url": "https://github.com/api-platform/symfony.git", - "reference": "ab93a0043558beeb7ccd7f2c97304565d4872bb3" + "reference": "6d919776f7784bb5dc50b2226375d15e0ac3875b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/symfony/zipball/ab93a0043558beeb7ccd7f2c97304565d4872bb3", - "reference": "ab93a0043558beeb7ccd7f2c97304565d4872bb3", + "url": "https://api.github.com/repos/api-platform/symfony/zipball/6d919776f7784bb5dc50b2226375d15e0ac3875b", + "reference": "6d919776f7784bb5dc50b2226375d15e0ac3875b", "shasum": "" }, "require": { @@ -2036,7 +2036,7 @@ "api-platform/graphql": "^4.2.3", "api-platform/hal": "^4.2.3", "phpspec/prophecy-phpunit": "^2.2", - "phpunit/phpunit": "11.5.x-dev", + "phpunit/phpunit": "^12.2", "symfony/expression-language": "^6.4 || ^7.0 || ^8.0", "symfony/intl": "^6.4 || ^7.0 || ^8.0", "symfony/mercure-bundle": "*", @@ -2118,22 +2118,22 @@ "symfony" ], "support": { - "source": "https://github.com/api-platform/symfony/tree/v4.2.11" + "source": "https://github.com/api-platform/symfony/tree/v4.2.12" }, - "time": "2025-12-18T14:34:13+00:00" + "time": "2025-12-31T09:26:07+00:00" }, { "name": "api-platform/validator", - "version": "v4.2.11", + "version": "v4.2.12", "source": { "type": "git", "url": "https://github.com/api-platform/validator.git", - "reference": "850035ba6165e2452c1777bee2272205bf8c771e" + "reference": "f6a4a16ac55a14dfb96d84a46cdce530d2da734c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/validator/zipball/850035ba6165e2452c1777bee2272205bf8c771e", - "reference": "850035ba6165e2452c1777bee2272205bf8c771e", + "url": "https://api.github.com/repos/api-platform/validator/zipball/f6a4a16ac55a14dfb96d84a46cdce530d2da734c", + "reference": "f6a4a16ac55a14dfb96d84a46cdce530d2da734c", "shasum": "" }, "require": { @@ -2147,7 +2147,7 @@ }, "require-dev": { "phpspec/prophecy-phpunit": "^2.2", - "phpunit/phpunit": "11.5.x-dev" + "phpunit/phpunit": "^12.2" }, "type": "library", "extra": { @@ -2194,9 +2194,9 @@ "validator" ], "support": { - "source": "https://github.com/api-platform/validator/tree/v4.2.11" + "source": "https://github.com/api-platform/validator/tree/v4.2.12" }, - "time": "2025-12-04T14:20:26+00:00" + "time": "2025-12-27T22:15:57+00:00" }, { "name": "beberlei/assert", @@ -2732,16 +2732,16 @@ }, { "name": "doctrine/collections", - "version": "2.4.0", + "version": "2.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "9acfeea2e8666536edff3d77c531261c63680160" + "reference": "6108e0cd57d7ef125fb84696346a68860403a25d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/9acfeea2e8666536edff3d77c531261c63680160", - "reference": "9acfeea2e8666536edff3d77c531261c63680160", + "url": "https://api.github.com/repos/doctrine/collections/zipball/6108e0cd57d7ef125fb84696346a68860403a25d", + "reference": "6108e0cd57d7ef125fb84696346a68860403a25d", "shasum": "" }, "require": { @@ -2798,7 +2798,7 @@ ], "support": { "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/2.4.0" + "source": "https://github.com/doctrine/collections/tree/2.5.0" }, "funding": [ { @@ -2814,7 +2814,7 @@ "type": "tidelift" } ], - "time": "2025-10-25T09:18:13+00:00" + "time": "2026-01-07T17:26:56+00:00" }, { "name": "doctrine/common", @@ -3783,16 +3783,16 @@ }, { "name": "doctrine/orm", - "version": "3.6.0", + "version": "3.6.1", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "d4e9276e79602b1eb4c4029c6c999b0d93478e2f" + "reference": "2148940290e4c44b9101095707e71fb590832fa5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/d4e9276e79602b1eb4c4029c6c999b0d93478e2f", - "reference": "d4e9276e79602b1eb4c4029c6c999b0d93478e2f", + "url": "https://api.github.com/repos/doctrine/orm/zipball/2148940290e4c44b9101095707e71fb590832fa5", + "reference": "2148940290e4c44b9101095707e71fb590832fa5", "shasum": "" }, "require": { @@ -3865,9 +3865,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/3.6.0" + "source": "https://github.com/doctrine/orm/tree/3.6.1" }, - "time": "2025-12-19T20:36:14+00:00" + "time": "2026-01-09T05:28:15+00:00" }, { "name": "doctrine/persistence", @@ -4366,25 +4366,25 @@ }, { "name": "gregwar/captcha-bundle", - "version": "v2.4.0", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/Gregwar/CaptchaBundle.git", - "reference": "090a3754f02cadb7ecdb531b090322dbe5c03c75" + "reference": "b129efda562bf8361ca6eb77043036813f749de6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Gregwar/CaptchaBundle/zipball/090a3754f02cadb7ecdb531b090322dbe5c03c75", - "reference": "090a3754f02cadb7ecdb531b090322dbe5c03c75", + "url": "https://api.github.com/repos/Gregwar/CaptchaBundle/zipball/b129efda562bf8361ca6eb77043036813f749de6", + "reference": "b129efda562bf8361ca6eb77043036813f749de6", "shasum": "" }, "require": { "ext-gd": "*", "gregwar/captcha": "^1.2.1", "php": ">=8.0.2", - "symfony/form": "~6.0|~7.0", - "symfony/framework-bundle": "~6.0|~7.0", - "symfony/translation": "~6.0|^7.0", + "symfony/form": "~6.0|~7.0|~8.0", + "symfony/framework-bundle": "~6.0|~7.0|~8.0", + "symfony/translation": "~6.0|~7.0|~8.0", "twig/twig": "^3.0" }, "require-dev": { @@ -4427,9 +4427,9 @@ ], "support": { "issues": "https://github.com/Gregwar/CaptchaBundle/issues", - "source": "https://github.com/Gregwar/CaptchaBundle/tree/v2.4.0" + "source": "https://github.com/Gregwar/CaptchaBundle/tree/v2.5.0" }, - "time": "2025-06-24T10:25:23+00:00" + "time": "2026-01-08T10:51:57+00:00" }, { "name": "guzzlehttp/guzzle", @@ -4820,16 +4820,16 @@ }, { "name": "imagine/imagine", - "version": "1.5.1", + "version": "1.5.2", "source": { "type": "git", "url": "https://github.com/php-imagine/Imagine.git", - "reference": "8b130cd281efdea67e52d5f0f998572eb62d2f04" + "reference": "f9ed796eefb77c2f0f2167e1d4e36bc2b5ed6b0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-imagine/Imagine/zipball/8b130cd281efdea67e52d5f0f998572eb62d2f04", - "reference": "8b130cd281efdea67e52d5f0f998572eb62d2f04", + "url": "https://api.github.com/repos/php-imagine/Imagine/zipball/f9ed796eefb77c2f0f2167e1d4e36bc2b5ed6b0c", + "reference": "f9ed796eefb77c2f0f2167e1d4e36bc2b5ed6b0c", "shasum": "" }, "require": { @@ -4876,9 +4876,9 @@ ], "support": { "issues": "https://github.com/php-imagine/Imagine/issues", - "source": "https://github.com/php-imagine/Imagine/tree/1.5.1" + "source": "https://github.com/php-imagine/Imagine/tree/1.5.2" }, - "time": "2025-12-09T15:27:47+00:00" + "time": "2026-01-09T10:45:12+00:00" }, { "name": "jbtronics/2fa-webauthn", @@ -6276,22 +6276,22 @@ }, { "name": "liip/imagine-bundle", - "version": "2.16.0", + "version": "2.17.1", "source": { "type": "git", "url": "https://github.com/liip/LiipImagineBundle.git", - "reference": "335121ef65d9841af9b40a850aa143cd6b61f847" + "reference": "69d2df3c6606495d1878fa190d6c3dc4bc5623b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/liip/LiipImagineBundle/zipball/335121ef65d9841af9b40a850aa143cd6b61f847", - "reference": "335121ef65d9841af9b40a850aa143cd6b61f847", + "url": "https://api.github.com/repos/liip/LiipImagineBundle/zipball/69d2df3c6606495d1878fa190d6c3dc4bc5623b6", + "reference": "69d2df3c6606495d1878fa190d6c3dc4bc5623b6", "shasum": "" }, "require": { "ext-mbstring": "*", "imagine/imagine": "^1.3.2", - "php": "^7.2|^8.0", + "php": "^8.0", "symfony/dependency-injection": "^5.4|^6.4|^7.4|^8.0", "symfony/deprecation-contracts": "^2.5 || ^3", "symfony/filesystem": "^5.4|^6.4|^7.3|^8.0", @@ -6320,6 +6320,7 @@ "symfony/form": "^5.4|^6.4|^7.3|^8.0", "symfony/messenger": "^5.4|^6.4|^7.3|^8.0", "symfony/phpunit-bridge": "^7.3", + "symfony/runtime": "^5.4|^6.4|^7.3|^8.0", "symfony/templating": "^5.4|^6.4|^7.3|^8.0", "symfony/validator": "^5.4|^6.4|^7.3|^8.0", "symfony/yaml": "^5.4|^6.4|^7.3|^8.0" @@ -6377,9 +6378,9 @@ ], "support": { "issues": "https://github.com/liip/LiipImagineBundle/issues", - "source": "https://github.com/liip/LiipImagineBundle/tree/2.16.0" + "source": "https://github.com/liip/LiipImagineBundle/tree/2.17.1" }, - "time": "2025-12-01T10:49:05+00:00" + "time": "2026-01-06T09:34:48+00:00" }, { "name": "lorenzo/pinky", @@ -9875,16 +9876,16 @@ }, { "name": "spatie/db-dumper", - "version": "3.8.2", + "version": "3.8.3", "source": { "type": "git", "url": "https://github.com/spatie/db-dumper.git", - "reference": "9519c64e4938f0b9e4498b8a8e572061bc6b7cfb" + "reference": "eac3221fbe27fac51f388600d27b67b1b079406e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/db-dumper/zipball/9519c64e4938f0b9e4498b8a8e572061bc6b7cfb", - "reference": "9519c64e4938f0b9e4498b8a8e572061bc6b7cfb", + "url": "https://api.github.com/repos/spatie/db-dumper/zipball/eac3221fbe27fac51f388600d27b67b1b079406e", + "reference": "eac3221fbe27fac51f388600d27b67b1b079406e", "shasum": "" }, "require": { @@ -9922,7 +9923,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/db-dumper/tree/3.8.2" + "source": "https://github.com/spatie/db-dumper/tree/3.8.3" }, "funding": [ { @@ -9934,7 +9935,7 @@ "type": "github" } ], - "time": "2025-12-10T09:29:52+00:00" + "time": "2026-01-05T16:26:03+00:00" }, { "name": "spomky-labs/cbor-php", @@ -10009,20 +10010,19 @@ }, { "name": "spomky-labs/otphp", - "version": "11.4.0", + "version": "11.4.1", "source": { "type": "git", "url": "https://github.com/Spomky-Labs/otphp.git", - "reference": "ec5ff751e87e67daca2b73a35cae0d0e1d20ad45" + "reference": "126c99b6cbbc18992cf3fba3b87931ba4e312482" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/otphp/zipball/ec5ff751e87e67daca2b73a35cae0d0e1d20ad45", - "reference": "ec5ff751e87e67daca2b73a35cae0d0e1d20ad45", + "url": "https://api.github.com/repos/Spomky-Labs/otphp/zipball/126c99b6cbbc18992cf3fba3b87931ba4e312482", + "reference": "126c99b6cbbc18992cf3fba3b87931ba4e312482", "shasum": "" }, "require": { - "ext-mbstring": "*", "paragonie/constant_time_encoding": "^2.0 || ^3.0", "php": ">=8.1", "psr/clock": "^1.0", @@ -10064,7 +10064,7 @@ ], "support": { "issues": "https://github.com/Spomky-Labs/otphp/issues", - "source": "https://github.com/Spomky-Labs/otphp/tree/11.4.0" + "source": "https://github.com/Spomky-Labs/otphp/tree/11.4.1" }, "funding": [ { @@ -10076,7 +10076,7 @@ "type": "patreon" } ], - "time": "2026-01-03T13:16:55+00:00" + "time": "2026-01-05T13:20:36+00:00" }, { "name": "spomky-labs/pki-framework", @@ -14815,16 +14815,16 @@ }, { "name": "symfony/stimulus-bundle", - "version": "v2.31.0", + "version": "v2.32.0", "source": { "type": "git", "url": "https://github.com/symfony/stimulus-bundle.git", - "reference": "c5ea8ee2ccd45447b7f4b6b82f704ee5e76127f0" + "reference": "dfbf6b443bb381cb611e06f64dc23603b614b575" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/c5ea8ee2ccd45447b7f4b6b82f704ee5e76127f0", - "reference": "c5ea8ee2ccd45447b7f4b6b82f704ee5e76127f0", + "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/dfbf6b443bb381cb611e06f64dc23603b614b575", + "reference": "dfbf6b443bb381cb611e06f64dc23603b614b575", "shasum": "" }, "require": { @@ -14864,7 +14864,7 @@ "symfony-ux" ], "support": { - "source": "https://github.com/symfony/stimulus-bundle/tree/v2.31.0" + "source": "https://github.com/symfony/stimulus-bundle/tree/v2.32.0" }, "funding": [ { @@ -14884,7 +14884,7 @@ "type": "tidelift" } ], - "time": "2025-09-24T13:27:42+00:00" + "time": "2025-12-02T07:12:06+00:00" }, { "name": "symfony/stopwatch", @@ -15593,16 +15593,16 @@ }, { "name": "symfony/ux-translator", - "version": "v2.31.0", + "version": "v2.32.0", "source": { "type": "git", "url": "https://github.com/symfony/ux-translator.git", - "reference": "b4b323fdc846d2d67feb7f8ca5ef5a05238f6639" + "reference": "fde719a87903d9bc6fe60abf7581c1143532c918" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ux-translator/zipball/b4b323fdc846d2d67feb7f8ca5ef5a05238f6639", - "reference": "b4b323fdc846d2d67feb7f8ca5ef5a05238f6639", + "url": "https://api.github.com/repos/symfony/ux-translator/zipball/fde719a87903d9bc6fe60abf7581c1143532c918", + "reference": "fde719a87903d9bc6fe60abf7581c1143532c918", "shasum": "" }, "require": { @@ -15650,7 +15650,7 @@ "symfony-ux" ], "support": { - "source": "https://github.com/symfony/ux-translator/tree/v2.31.0" + "source": "https://github.com/symfony/ux-translator/tree/v2.32.0" }, "funding": [ { @@ -15670,20 +15670,20 @@ "type": "tidelift" } ], - "time": "2025-10-16T07:24:06+00:00" + "time": "2025-12-26T17:37:51+00:00" }, { "name": "symfony/ux-turbo", - "version": "v2.31.0", + "version": "v2.32.0", "source": { "type": "git", "url": "https://github.com/symfony/ux-turbo.git", - "reference": "06d5e4cf4573efe4faf648f3810a28c63684c706" + "reference": "0deaa8abef20933d11f8bbe9899d950b4333ca1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ux-turbo/zipball/06d5e4cf4573efe4faf648f3810a28c63684c706", - "reference": "06d5e4cf4573efe4faf648f3810a28c63684c706", + "url": "https://api.github.com/repos/symfony/ux-turbo/zipball/0deaa8abef20933d11f8bbe9899d950b4333ca1e", + "reference": "0deaa8abef20933d11f8bbe9899d950b4333ca1e", "shasum": "" }, "require": { @@ -15695,7 +15695,7 @@ }, "require-dev": { "dbrekelmans/bdi": "dev-main", - "doctrine/doctrine-bundle": "^2.4.3", + "doctrine/doctrine-bundle": "^2.4.3|^3.0|^4.0", "doctrine/orm": "^2.8|^3.0", "php-webdriver/webdriver": "^1.15", "phpstan/phpstan": "^2.1.17", @@ -15704,7 +15704,7 @@ "symfony/expression-language": "^5.4|^6.0|^7.0|^8.0", "symfony/form": "^5.4|^6.0|^7.0|^8.0", "symfony/framework-bundle": "^6.4|^7.0|^8.0", - "symfony/mercure-bundle": "^0.3.7", + "symfony/mercure-bundle": "^0.3.7|^0.4.1", "symfony/messenger": "^5.4|^6.0|^7.0|^8.0", "symfony/panther": "^2.2", "symfony/phpunit-bridge": "^5.4|^6.0|^7.0|^8.0", @@ -15753,7 +15753,7 @@ "turbo-stream" ], "support": { - "source": "https://github.com/symfony/ux-turbo/tree/v2.31.0" + "source": "https://github.com/symfony/ux-turbo/tree/v2.32.0" }, "funding": [ { @@ -15773,7 +15773,7 @@ "type": "tidelift" } ], - "time": "2025-10-16T07:24:06+00:00" + "time": "2025-12-17T06:03:34+00:00" }, { "name": "symfony/validator", @@ -17590,16 +17590,16 @@ }, { "name": "webmozart/assert", - "version": "2.0.0", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "1b34b004e35a164bc5bb6ebd33c844b2d8069a54" + "reference": "bdbabc199a7ba9965484e4725d66170e5711323b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/1b34b004e35a164bc5bb6ebd33c844b2d8069a54", - "reference": "1b34b004e35a164bc5bb6ebd33c844b2d8069a54", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/bdbabc199a7ba9965484e4725d66170e5711323b", + "reference": "bdbabc199a7ba9965484e4725d66170e5711323b", "shasum": "" }, "require": { @@ -17646,9 +17646,9 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/2.0.0" + "source": "https://github.com/webmozarts/assert/tree/2.1.1" }, - "time": "2025-12-16T21:36:00+00:00" + "time": "2026-01-08T11:28:40+00:00" }, { "name": "willdurand/negotiation", @@ -19038,12 +19038,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "5ba14c800ff89c74333c22d56ca1c1f35c424805" + "reference": "ccfd723dc03e9864008d011603c412910180d7a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/5ba14c800ff89c74333c22d56ca1c1f35c424805", - "reference": "5ba14c800ff89c74333c22d56ca1c1f35c424805", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/ccfd723dc03e9864008d011603c412910180d7a6", + "reference": "ccfd723dc03e9864008d011603c412910180d7a6", "shasum": "" }, "conflict": { @@ -19176,10 +19176,11 @@ "contao/core-bundle": "<4.13.57|>=5,<5.3.42|>=5.4,<5.6.5", "contao/listing-bundle": ">=3,<=3.5.30|>=4,<4.4.8", "contao/managed-edition": "<=1.5", + "coreshop/core-shop": "<=4.1.7", "corveda/phpsandbox": "<1.3.5", "cosenary/instagram": "<=2.3", "couleurcitron/tarteaucitron-wp": "<0.3", - "craftcms/cms": "<=4.16.5|>=5,<=5.8.6", + "craftcms/cms": "<=4.16.16|>=5,<=5.8.20", "croogo/croogo": "<=4.0.7", "cuyz/valinor": "<0.12", "czim/file-handling": "<1.5|>=2,<2.3", @@ -19227,7 +19228,7 @@ "drupal/commerce_alphabank_redirect": "<1.0.3", "drupal/commerce_eurobank_redirect": "<2.1.1", "drupal/config_split": "<1.10|>=2,<2.0.2", - "drupal/core": ">=6,<6.38|>=7,<7.102|>=8,<10.4.9|>=10.5,<10.5.6|>=11,<11.1.9|>=11.2,<11.2.8", + "drupal/core": ">=6,<6.38|>=7,<7.103|>=8,<10.4.9|>=10.5,<10.5.6|>=11,<11.1.9|>=11.2,<11.2.8", "drupal/core-recommended": ">=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8", "drupal/currency": "<3.5", "drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8", @@ -19342,7 +19343,7 @@ "geshi/geshi": "<=1.0.9.1", "getformwork/formwork": "<2.2", "getgrav/grav": "<1.11.0.0-beta1", - "getkirby/cms": "<3.9.8.3-dev|>=3.10,<3.10.1.2-dev|>=4,<4.7.1|>=5,<5.1.4", + "getkirby/cms": "<3.9.8.3-dev|>=3.10,<3.10.1.2-dev|>=4,<4.7.1|>=5,<=5.2.1", "getkirby/kirby": "<3.9.8.3-dev|>=3.10,<3.10.1.2-dev|>=4,<4.7.1", "getkirby/panel": "<2.5.14", "getkirby/starterkit": "<=3.7.0.2", @@ -19571,7 +19572,7 @@ "october/cms": "<1.0.469|==1.0.469|==1.0.471|==1.1.1", "october/october": "<3.7.5", "october/rain": "<1.0.472|>=1.1,<1.1.2", - "october/system": "<3.7.5", + "october/system": "<=3.7.12|>=4,<=4.0.11", "oliverklee/phpunit": "<3.5.15", "omeka/omeka-s": "<4.0.3", "onelogin/php-saml": "<2.21.1|>=3,<3.8.1|>=4,<4.3.1", @@ -19684,7 +19685,7 @@ "rap2hpoutre/laravel-log-viewer": "<0.13", "react/http": ">=0.7,<1.9", "really-simple-plugins/complianz-gdpr": "<6.4.2", - "redaxo/source": "<5.20.1", + "redaxo/source": "<=5.20.1", "remdex/livehelperchat": "<4.29", "renolit/reint-downloadmanager": "<4.0.2|>=5,<5.0.1", "reportico-web/reportico": "<=8.1", @@ -20037,7 +20038,7 @@ "type": "tidelift" } ], - "time": "2026-01-02T22:05:49+00:00" + "time": "2026-01-09T19:06:26+00:00" }, { "name": "sebastian/cli-parser", diff --git a/yarn.lock b/yarn.lock index c7d8da50..3e52efad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2018,9 +2018,9 @@ integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== "@sinclair/typebox@^0.34.0": - version "0.34.46" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.34.46.tgz#33ea674ef3fbc46733c6d124ae94a6826abaf8cf" - integrity sha512-kiW7CtS/NkdvTUjkjUJo7d5JsFfbJ14YjdhDk9KoEgK6nFjKNXZPrX0jfLA8ZlET4cFLHxOZ/0vFKOP+bOxIOQ== + version "0.34.47" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.34.47.tgz#61b684d8a20d2890b9f1f7b0d4f76b4b39f5bc0d" + integrity sha512-ZGIBQ+XDvO5JQku9wmwtabcVTHJsgSWAHYtVuM9pBNNR5E88v6Jcj/llpmsjivig5X8A8HHOb4/mbEKPS5EvAw== "@symfony/stimulus-bridge@^4.0.0": version "4.0.1" @@ -2033,10 +2033,10 @@ schema-utils "^3.0.0 || ^4.0.0" "@symfony/ux-translator@file:vendor/symfony/ux-translator/assets": - version "2.30.0" + version "2.31.0" "@symfony/ux-turbo@file:vendor/symfony/ux-turbo/assets": - version "2.30.0" + version "2.31.0" "@symfony/webpack-encore@^5.1.0": version "5.3.1" @@ -2169,9 +2169,9 @@ integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== "@types/node@*": - version "25.0.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-25.0.3.tgz#79b9ac8318f373fbfaaf6e2784893efa9701f269" - integrity sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA== + version "25.0.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-25.0.6.tgz#5ca3c46f2b256b59128f433426e42d464765dab1" + integrity sha512-NNu0sjyNxpoiW3YuVFfNz7mxSQ+S4X2G28uqg2s+CzoqoQjLPsWSbsFFyztIAqt2vb8kfEAsJNepMGPTxFDx3Q== dependencies: undici-types "~7.16.0" @@ -2622,9 +2622,9 @@ base64-js@^1.1.2, base64-js@^1.3.0: integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== baseline-browser-mapping@^2.9.0: - version "2.9.11" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.11.tgz#53724708c8db5f97206517ecfe362dbe5181deea" - integrity sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ== + version "2.9.14" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.14.tgz#3b6af0bc032445bca04de58caa9a87cfe921cbb3" + integrity sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg== big.js@^5.2.2: version "5.2.2" @@ -2785,9 +2785,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001759: - version "1.0.30001762" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001762.tgz#e4dbfeda63d33258cdde93e53af2023a13ba27d4" - integrity sha512-PxZwGNvH7Ak8WX5iXzoK1KPZttBXNPuaOvI2ZYU7NrlM+d9Ov+TUvlLOBNGzVXAntMSMMlJPd+jY6ovrVjSmUw== + version "1.0.30001763" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001763.tgz#9397446dd110b1aeadb0df249c41b2ece7f90f09" + integrity sha512-mh/dGtq56uN98LlNX9qdbKnzINhX0QzhiWBFEkFfsFO4QyCvL8YegrJAazCwXIeqkIob8BlZPGM3xdnY+sgmvQ== ccount@^2.0.0: version "2.0.1" @@ -4469,9 +4469,9 @@ htmlparser2@^6.1.0: entities "^2.0.0" iconv-lite@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.7.1.tgz#d4af1d2092f2bb05aab6296e5e7cd286d2f15432" - integrity sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw== + version "0.7.2" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.7.2.tgz#d0bdeac3f12b4835b7359c2ad89c422a4d1cc72e" + integrity sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" @@ -5959,9 +5959,9 @@ path-type@^4.0.0: integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== pdfmake@^0.2.2: - version "0.2.21" - resolved "https://registry.yarnpkg.com/pdfmake/-/pdfmake-0.2.21.tgz#dbaadda4567d67c5be7feac54f6e8e23af776be6" - integrity sha512-kgBj6Bbj57vY/f0zpBz/OLmO4n248RopEEA+IRkfdKZtravqQL6lEkILYsdjiPFYCXImZA+62EtT2zjUVKb8YQ== + version "0.2.22" + resolved "https://registry.yarnpkg.com/pdfmake/-/pdfmake-0.2.22.tgz#f0b3d4986476f121d97ce68d80da7b09c76cffe8" + integrity sha512-nY0tvBlBCAfefFzXkWGHzW7OQeWKsGKL8M1I8o+fFhLBDtYesSA2G/KxfOF8jn+l53kzCLSTAdmTyPV2EM/v9g== dependencies: "@foliojs-fork/linebreak" "^1.1.2" "@foliojs-fork/pdfkit" "^0.15.3" @@ -6520,9 +6520,9 @@ postcss@^8.2.14, postcss@^8.2.15, postcss@^8.4.12, postcss@^8.4.33, postcss@^8.4 source-map-js "^1.2.1" preact@^10.13.2: - version "10.28.1" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.28.1.tgz#83325f0141bc8c97977c64d532429d667a26b411" - integrity sha512-u1/ixq/lVQI0CakKNvLDEcW5zfCjUQfZdK9qqWuIJtsezuyG6pk9TWj75GMuI/EzRSZB/VAE43sNWWZfiy8psw== + version "10.28.2" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.28.2.tgz#4b668383afa4b4a2546bbe4bd1747e02e2360138" + integrity sha512-lbteaWGzGHdlIuiJ0l2Jq454m6kcpI1zNje6d8MlGAFlYvP2GO4ibnat7P74Esfz4sPTdM6UxtTwh/d3pwM9JA== pretty-error@^4.0.0: version "4.0.0" @@ -6921,9 +6921,9 @@ safe-regex-test@^1.1.0: integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sax@^1.4.1, sax@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.3.tgz#fcebae3b756cdc8428321805f4b70f16ec0ab5db" - integrity sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ== + version "1.4.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.4.tgz#f29c2bba80ce5b86f4343b4c2be9f2b96627cf8b" + integrity sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw== schema-utils@^3.0.0: version "3.3.0" From 1cd0b459be8b3502ab06da5bb6990dcad92583ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 10 Jan 2026 21:44:57 +0100 Subject: [PATCH 110/235] Fixed JS translation fox new UX/translator version --- .../elements/part_search_controller.js | 11 ++++------- .../password_strength_estimate_controller.js | 15 +++++++-------- .../structural_entity_select_controller.js | 4 ++-- assets/translator.js | 14 ++++++++------ config/packages/ux_translator.yaml | 6 ++++++ symfony.lock | 13 ++++++------- 6 files changed, 33 insertions(+), 30 deletions(-) diff --git a/assets/controllers/elements/part_search_controller.js b/assets/controllers/elements/part_search_controller.js index c33cece0..c1396900 100644 --- a/assets/controllers/elements/part_search_controller.js +++ b/assets/controllers/elements/part_search_controller.js @@ -26,9 +26,6 @@ import {marked} from "marked"; import { trans, - SEARCH_PLACEHOLDER, - SEARCH_SUBMIT, - STATISTICS_PARTS } from '../../translator'; @@ -82,9 +79,9 @@ export default class extends Controller { panelPlacement: this.element.dataset.panelPlacement, plugins: [recentSearchesPlugin], openOnFocus: true, - placeholder: trans(SEARCH_PLACEHOLDER), + placeholder: trans("search.placeholder"), translations: { - submitButtonTitle: trans(SEARCH_SUBMIT) + submitButtonTitle: trans("search.submit") }, // Use a navigator compatible with turbo: @@ -153,7 +150,7 @@ export default class extends Controller { }, templates: { header({ html }) { - return html`${trans(STATISTICS_PARTS)} + return html`${trans("part.labelp")}
    `; }, item({item, components, html}) { @@ -197,4 +194,4 @@ export default class extends Controller { } } -} \ No newline at end of file +} diff --git a/assets/controllers/elements/password_strength_estimate_controller.js b/assets/controllers/elements/password_strength_estimate_controller.js index 0fc9c578..16d18b55 100644 --- a/assets/controllers/elements/password_strength_estimate_controller.js +++ b/assets/controllers/elements/password_strength_estimate_controller.js @@ -25,8 +25,7 @@ import * as zxcvbnEnPackage from '@zxcvbn-ts/language-en'; import * as zxcvbnDePackage from '@zxcvbn-ts/language-de'; import * as zxcvbnFrPackage from '@zxcvbn-ts/language-fr'; import * as zxcvbnJaPackage from '@zxcvbn-ts/language-ja'; -import {trans, USER_PASSWORD_STRENGTH_VERY_WEAK, USER_PASSWORD_STRENGTH_WEAK, USER_PASSWORD_STRENGTH_MEDIUM, - USER_PASSWORD_STRENGTH_STRONG, USER_PASSWORD_STRENGTH_VERY_STRONG} from '../../translator.js'; +import {trans} from '../../translator.js'; /* stimulusFetch: 'lazy' */ export default class extends Controller { @@ -89,23 +88,23 @@ export default class extends Controller { switch (level) { case 0: - text = trans(USER_PASSWORD_STRENGTH_VERY_WEAK); + text = trans("user.password_strength.very_weak"); classes = "bg-danger badge-danger"; break; case 1: - text = trans(USER_PASSWORD_STRENGTH_WEAK); + text = trans("user.password_strength.weak"); classes = "bg-warning badge-warning"; break; case 2: - text = trans(USER_PASSWORD_STRENGTH_MEDIUM) + text = trans("user.password_strength.medium") classes = "bg-info badge-info"; break; case 3: - text = trans(USER_PASSWORD_STRENGTH_STRONG); + text = trans("user.password_strength.strong"); classes = "bg-primary badge-primary"; break; case 4: - text = trans(USER_PASSWORD_STRENGTH_VERY_STRONG); + text = trans("user.password_strength.very_strong"); classes = "bg-success badge-success"; break; default: @@ -120,4 +119,4 @@ export default class extends Controller { this.badgeTarget.classList.add("badge"); this.badgeTarget.classList.add(...classes.split(" ")); } -} \ No newline at end of file +} diff --git a/assets/controllers/elements/structural_entity_select_controller.js b/assets/controllers/elements/structural_entity_select_controller.js index 4b220d5b..2666530b 100644 --- a/assets/controllers/elements/structural_entity_select_controller.js +++ b/assets/controllers/elements/structural_entity_select_controller.js @@ -22,7 +22,7 @@ import '../../css/components/tom-select_extensions.css'; import TomSelect from "tom-select"; import {Controller} from "@hotwired/stimulus"; -import {trans, ENTITY_SELECT_GROUP_NEW_NOT_ADDED_TO_DB} from '../../translator.js' +import {trans} from '../../translator.js' import TomSelect_autoselect_typed from '../../tomselect/autoselect_typed/autoselect_typed' TomSelect.define('autoselect_typed', TomSelect_autoselect_typed) @@ -204,7 +204,7 @@ export default class extends Controller { if (data.not_in_db_yet) { //Not yet added items are shown italic and with a badge - name += "" + escape(data.text) + "" + "" + trans(ENTITY_SELECT_GROUP_NEW_NOT_ADDED_TO_DB) + ""; + name += "" + escape(data.text) + "" + "" + trans("entity.select.group.new_not_added_to_DB") + ""; } else { name += "" + escape(data.text) + ""; } diff --git a/assets/translator.js b/assets/translator.js index 0d5ae86b..a0181a08 100644 --- a/assets/translator.js +++ b/assets/translator.js @@ -1,5 +1,6 @@ -import { localeFallbacks } from '../var/translations/configuration'; -import { trans, getLocale, setLocale, setLocaleFallbacks } from '@symfony/ux-translator'; +import { createTranslator } from '@symfony/ux-translator'; +import { messages, localeFallbacks } from '../var/translations/index.js'; + /* * This file is part of the Symfony UX Translator package. * @@ -9,8 +10,9 @@ import { trans, getLocale, setLocale, setLocaleFallbacks } from '@symfony/ux-tra * If you use TypeScript, you can rename this file to "translator.ts" to take advantage of types checking. */ -setLocaleFallbacks(localeFallbacks); +const translator = createTranslator({ + messages, + localeFallbacks, +}); -export { trans }; - -export * from '../var/translations'; \ No newline at end of file +export const { trans } = translator; diff --git a/config/packages/ux_translator.yaml b/config/packages/ux_translator.yaml index 1c1c7060..c8453a50 100644 --- a/config/packages/ux_translator.yaml +++ b/config/packages/ux_translator.yaml @@ -1,3 +1,9 @@ ux_translator: # The directory where the JavaScript translations are dumped dump_directory: '%kernel.project_dir%/var/translations' + +when@prod: + ux_translator: + # Control whether TypeScript types are dumped alongside translations. + # Disable this if you do not use TypeScript (e.g. in production when using AssetMapper), to speed up cache warmup. + # dump_typescript: false diff --git a/symfony.lock b/symfony.lock index 3fce7c93..68de2da7 100644 --- a/symfony.lock +++ b/symfony.lock @@ -718,18 +718,17 @@ "files": [] }, "symfony/ux-translator": { - "version": "2.9", + "version": "2.32", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", - "version": "2.9", - "ref": "bc396565cc4cab95692dd6df810553dc22e352e1" + "version": "2.32", + "ref": "20e2abac415da4c3a9a6bafa059a6419beb74593" }, "files": [ - "./assets/translator.js", - "./config/packages/ux_translator.yaml", - "./var/translations/configuration.js", - "./var/translations/index.js" + "assets/translator.js", + "config/packages/ux_translator.yaml", + "var/translations/index.js" ] }, "symfony/ux-turbo": { From 3f6a6cc7675603f51acd2d54c13739e05bff885a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 11 Jan 2026 19:02:39 +0100 Subject: [PATCH 111/235] updated dependencies --- composer.lock | 52 ++++++++++++++++++++++----------------------------- yarn.lock | 12 ++++++------ 2 files changed, 28 insertions(+), 36 deletions(-) diff --git a/composer.lock b/composer.lock index 777dfa24..9bd01a1a 100644 --- a/composer.lock +++ b/composer.lock @@ -8485,16 +8485,16 @@ }, { "name": "phpoffice/phpspreadsheet", - "version": "5.3.0", + "version": "5.4.0", "source": { "type": "git", "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", - "reference": "4d597c1aacdde1805a33c525b9758113ea0d90df" + "reference": "48f2fe37d64c2dece0ef71fb2ac55497566782af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/4d597c1aacdde1805a33c525b9758113ea0d90df", - "reference": "4d597c1aacdde1805a33c525b9758113ea0d90df", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/48f2fe37d64c2dece0ef71fb2ac55497566782af", + "reference": "48f2fe37d64c2dece0ef71fb2ac55497566782af", "shasum": "" }, "require": { @@ -8502,6 +8502,7 @@ "ext-ctype": "*", "ext-dom": "*", "ext-fileinfo": "*", + "ext-filter": "*", "ext-gd": "*", "ext-iconv": "*", "ext-libxml": "*", @@ -8516,13 +8517,12 @@ "markbaker/complex": "^3.0", "markbaker/matrix": "^3.0", "php": "^8.1", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0", "psr/simple-cache": "^1.0 || ^2.0 || ^3.0" }, "require-dev": { "dealerdirect/phpcodesniffer-composer-installer": "dev-main", "dompdf/dompdf": "^2.0 || ^3.0", + "ext-intl": "*", "friendsofphp/php-cs-fixer": "^3.2", "mitoteam/jpgraph": "^10.5", "mpdf/mpdf": "^8.1.1", @@ -8536,7 +8536,7 @@ }, "suggest": { "dompdf/dompdf": "Option for rendering PDF with PDF Writer", - "ext-intl": "PHP Internationalization Functions, required for NumberFormat Wizard", + "ext-intl": "PHP Internationalization Functions, required for NumberFormat Wizard and StringHelper::setLocale()", "mitoteam/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers", "mpdf/mpdf": "Option for rendering PDF with PDF Writer", "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer" @@ -8569,6 +8569,9 @@ }, { "name": "Adrien Crivelli" + }, + { + "name": "Owen Leibman" } ], "description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", @@ -8585,9 +8588,9 @@ ], "support": { "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", - "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/5.3.0" + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/5.4.0" }, - "time": "2025-11-24T15:47:10+00:00" + "time": "2026-01-11T04:52:00+00:00" }, { "name": "phpstan/phpdoc-parser", @@ -17340,43 +17343,32 @@ }, { "name": "web-auth/cose-lib", - "version": "4.4.2", + "version": "4.5.0", "source": { "type": "git", "url": "https://github.com/web-auth/cose-lib.git", - "reference": "a93b61c48fb587855f64a9ec11ad7b60e867cb15" + "reference": "5adac6fe126994a3ee17ed9950efb4947ab132a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/web-auth/cose-lib/zipball/a93b61c48fb587855f64a9ec11ad7b60e867cb15", - "reference": "a93b61c48fb587855f64a9ec11ad7b60e867cb15", + "url": "https://api.github.com/repos/web-auth/cose-lib/zipball/5adac6fe126994a3ee17ed9950efb4947ab132a9", + "reference": "5adac6fe126994a3ee17ed9950efb4947ab132a9", "shasum": "" }, "require": { - "brick/math": "^0.9|^0.10|^0.11|^0.12|^0.13", + "brick/math": "^0.9|^0.10|^0.11|^0.12|^0.13|^0.14", "ext-json": "*", "ext-openssl": "*", "php": ">=8.1", "spomky-labs/pki-framework": "^1.0" }, "require-dev": { - "deptrac/deptrac": "^3.0", - "ekino/phpstan-banned-code": "^1.0|^2.0|^3.0", - "infection/infection": "^0.29", - "php-parallel-lint/php-parallel-lint": "^1.3", - "phpstan/extension-installer": "^1.3", - "phpstan/phpstan": "^1.7|^2.0", - "phpstan/phpstan-deprecation-rules": "^1.0|^2.0", - "phpstan/phpstan-phpunit": "^1.1|^2.0", - "phpstan/phpstan-strict-rules": "^1.0|^2.0", - "phpunit/phpunit": "^10.1|^11.0|^12.0", - "rector/rector": "^2.0", - "symfony/phpunit-bridge": "^6.4|^7.0", - "symplify/easy-coding-standard": "^12.0" + "spomky-labs/cbor-php": "^3.2.2" }, "suggest": { "ext-bcmath": "For better performance, please install either GMP (recommended) or BCMath extension", - "ext-gmp": "For better performance, please install either GMP (recommended) or BCMath extension" + "ext-gmp": "For better performance, please install either GMP (recommended) or BCMath extension", + "spomky-labs/cbor-php": "For COSE Signature support" }, "type": "library", "autoload": { @@ -17406,7 +17398,7 @@ ], "support": { "issues": "https://github.com/web-auth/cose-lib/issues", - "source": "https://github.com/web-auth/cose-lib/tree/4.4.2" + "source": "https://github.com/web-auth/cose-lib/tree/4.5.0" }, "funding": [ { @@ -17418,7 +17410,7 @@ "type": "patreon" } ], - "time": "2025-08-14T20:33:29+00:00" + "time": "2026-01-03T14:43:18+00:00" }, { "name": "web-auth/webauthn-lib", diff --git a/yarn.lock b/yarn.lock index 3e52efad..9791c46b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2785,9 +2785,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001759: - version "1.0.30001763" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001763.tgz#9397446dd110b1aeadb0df249c41b2ece7f90f09" - integrity sha512-mh/dGtq56uN98LlNX9qdbKnzINhX0QzhiWBFEkFfsFO4QyCvL8YegrJAazCwXIeqkIob8BlZPGM3xdnY+sgmvQ== + version "1.0.30001764" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001764.tgz#03206c56469f236103b90f9ae10bcb8b9e1f6005" + integrity sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g== ccount@^2.0.0: version "2.0.1" @@ -5959,9 +5959,9 @@ path-type@^4.0.0: integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== pdfmake@^0.2.2: - version "0.2.22" - resolved "https://registry.yarnpkg.com/pdfmake/-/pdfmake-0.2.22.tgz#f0b3d4986476f121d97ce68d80da7b09c76cffe8" - integrity sha512-nY0tvBlBCAfefFzXkWGHzW7OQeWKsGKL8M1I8o+fFhLBDtYesSA2G/KxfOF8jn+l53kzCLSTAdmTyPV2EM/v9g== + version "0.2.23" + resolved "https://registry.yarnpkg.com/pdfmake/-/pdfmake-0.2.23.tgz#249ce735fbc58e212ea3343d60f388408b8f2f02" + integrity sha512-A/IksoKb/ikOZH1edSDJ/2zBbqJKDghD4+fXn3rT7quvCJDlsZMs3NmIB3eajLMMFU9Bd3bZPVvlUMXhvFI+bQ== dependencies: "@foliojs-fork/linebreak" "^1.1.2" "@foliojs-fork/pdfkit" "^0.15.3" From 0a8199d81fc1532190549132606541fa3e928cfd Mon Sep 17 00:00:00 2001 From: d-buchmann Date: Tue, 13 Jan 2026 12:53:22 +0100 Subject: [PATCH 112/235] Update OEMSecretsProvider.php (#1187) most probably only a typo --- .../InfoProviderSystem/Providers/OEMSecretsProvider.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Services/InfoProviderSystem/Providers/OEMSecretsProvider.php b/src/Services/InfoProviderSystem/Providers/OEMSecretsProvider.php index 48b6a6d8..f7048a87 100644 --- a/src/Services/InfoProviderSystem/Providers/OEMSecretsProvider.php +++ b/src/Services/InfoProviderSystem/Providers/OEMSecretsProvider.php @@ -680,7 +680,7 @@ class OEMSecretsProvider implements InfoProviderInterface if (is_array($prices)) { // Step 1: Check if prices exist in the preferred currency if (isset($prices[$this->settings->currency]) && is_array($prices[$this->settings->currency])) { - $priceDetails = $prices[$this->$this->settings->currency]; + $priceDetails = $prices[$this->settings->currency]; foreach ($priceDetails as $priceDetail) { if ( is_array($priceDetail) && From 0205dd523bac250939ade03288dace4e7c1d86af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 18 Jan 2026 12:32:09 +0100 Subject: [PATCH 113/235] Updated dependencies --- composer.lock | 371 ++++---- config/reference.php | 10 + yarn.lock | 1955 +++++++++++++++++++++--------------------- 3 files changed, 1177 insertions(+), 1159 deletions(-) diff --git a/composer.lock b/composer.lock index 9bd01a1a..fd3bc318 100644 --- a/composer.lock +++ b/composer.lock @@ -968,16 +968,16 @@ }, { "name": "api-platform/doctrine-common", - "version": "v4.2.12", + "version": "v4.2.13", "source": { "type": "git", "url": "https://github.com/api-platform/doctrine-common.git", - "reference": "e3f4ebd57d189a4a2f06929b3c14b162ff5c4750" + "reference": "a29e9015ecf4547485ec7fbce52da4ee95c282a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/doctrine-common/zipball/e3f4ebd57d189a4a2f06929b3c14b162ff5c4750", - "reference": "e3f4ebd57d189a4a2f06929b3c14b162ff5c4750", + "url": "https://api.github.com/repos/api-platform/doctrine-common/zipball/a29e9015ecf4547485ec7fbce52da4ee95c282a0", + "reference": "a29e9015ecf4547485ec7fbce52da4ee95c282a0", "shasum": "" }, "require": { @@ -1052,22 +1052,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/doctrine-common/tree/v4.2.12" + "source": "https://github.com/api-platform/doctrine-common/tree/v4.2.13" }, - "time": "2026-01-08T22:41:56+00:00" + "time": "2026-01-12T13:36:15+00:00" }, { "name": "api-platform/doctrine-orm", - "version": "v4.2.12", + "version": "v4.2.13", "source": { "type": "git", "url": "https://github.com/api-platform/doctrine-orm.git", - "reference": "6dd409d7e90b031cc9bddaa397f049da9da0799f" + "reference": "0a16719be88909fd0a3d1a49c75691c0dcbad254" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/doctrine-orm/zipball/6dd409d7e90b031cc9bddaa397f049da9da0799f", - "reference": "6dd409d7e90b031cc9bddaa397f049da9da0799f", + "url": "https://api.github.com/repos/api-platform/doctrine-orm/zipball/0a16719be88909fd0a3d1a49c75691c0dcbad254", + "reference": "0a16719be88909fd0a3d1a49c75691c0dcbad254", "shasum": "" }, "require": { @@ -1139,13 +1139,13 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/doctrine-orm/tree/v4.2.12" + "source": "https://github.com/api-platform/doctrine-orm/tree/v4.2.13" }, - "time": "2026-01-08T14:27:10+00:00" + "time": "2026-01-12T13:36:15+00:00" }, { "name": "api-platform/documentation", - "version": "v4.2.12", + "version": "v4.2.13", "source": { "type": "git", "url": "https://github.com/api-platform/documentation.git", @@ -1202,22 +1202,22 @@ ], "description": "API Platform documentation controller.", "support": { - "source": "https://github.com/api-platform/documentation/tree/v4.2.12" + "source": "https://github.com/api-platform/documentation/tree/v4.2.13" }, "time": "2025-12-27T22:15:57+00:00" }, { "name": "api-platform/http-cache", - "version": "v4.2.12", + "version": "v4.2.13", "source": { "type": "git", "url": "https://github.com/api-platform/http-cache.git", - "reference": "7679a23ce4bf8f35a69d94ac060f6d13ab88497b" + "reference": "04a9239b67425f68ed2d372c2c731f14342dea45" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/http-cache/zipball/7679a23ce4bf8f35a69d94ac060f6d13ab88497b", - "reference": "7679a23ce4bf8f35a69d94ac060f6d13ab88497b", + "url": "https://api.github.com/repos/api-platform/http-cache/zipball/04a9239b67425f68ed2d372c2c731f14342dea45", + "reference": "04a9239b67425f68ed2d372c2c731f14342dea45", "shasum": "" }, "require": { @@ -1282,13 +1282,13 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/http-cache/tree/v4.2.12" + "source": "https://github.com/api-platform/http-cache/tree/v4.2.13" }, - "time": "2025-12-27T22:15:57+00:00" + "time": "2026-01-12T13:36:15+00:00" }, { "name": "api-platform/hydra", - "version": "v4.2.12", + "version": "v4.2.13", "source": { "type": "git", "url": "https://github.com/api-platform/hydra.git", @@ -1369,13 +1369,13 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/hydra/tree/v4.2.12" + "source": "https://github.com/api-platform/hydra/tree/v4.2.13" }, "time": "2025-12-27T22:15:57+00:00" }, { "name": "api-platform/json-api", - "version": "v4.2.12", + "version": "v4.2.13", "source": { "type": "git", "url": "https://github.com/api-platform/json-api.git", @@ -1451,22 +1451,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/json-api/tree/v4.2.12" + "source": "https://github.com/api-platform/json-api/tree/v4.2.13" }, "time": "2025-12-27T22:15:57+00:00" }, { "name": "api-platform/json-schema", - "version": "v4.2.12", + "version": "v4.2.13", "source": { "type": "git", "url": "https://github.com/api-platform/json-schema.git", - "reference": "161d5d2eab6717261155c06de6892064db458fc0" + "reference": "3fd511bce06c58a3d52f24372b80ddc6700cf0e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/json-schema/zipball/161d5d2eab6717261155c06de6892064db458fc0", - "reference": "161d5d2eab6717261155c06de6892064db458fc0", + "url": "https://api.github.com/repos/api-platform/json-schema/zipball/3fd511bce06c58a3d52f24372b80ddc6700cf0e3", + "reference": "3fd511bce06c58a3d52f24372b80ddc6700cf0e3", "shasum": "" }, "require": { @@ -1532,22 +1532,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/json-schema/tree/v4.2.12" + "source": "https://github.com/api-platform/json-schema/tree/v4.2.13" }, - "time": "2025-12-27T22:15:57+00:00" + "time": "2026-01-12T13:36:15+00:00" }, { "name": "api-platform/jsonld", - "version": "v4.2.12", + "version": "v4.2.13", "source": { "type": "git", "url": "https://github.com/api-platform/jsonld.git", - "reference": "b6a35c735e3b4b2342e64ab3172151dcb3aaf78d" + "reference": "ef0a361b0f29158243478d3fff5038ec2f5aa76c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/jsonld/zipball/b6a35c735e3b4b2342e64ab3172151dcb3aaf78d", - "reference": "b6a35c735e3b4b2342e64ab3172151dcb3aaf78d", + "url": "https://api.github.com/repos/api-platform/jsonld/zipball/ef0a361b0f29158243478d3fff5038ec2f5aa76c", + "reference": "ef0a361b0f29158243478d3fff5038ec2f5aa76c", "shasum": "" }, "require": { @@ -1612,22 +1612,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/jsonld/tree/v4.2.12" + "source": "https://github.com/api-platform/jsonld/tree/v4.2.13" }, - "time": "2025-12-27T22:15:57+00:00" + "time": "2026-01-12T13:36:15+00:00" }, { "name": "api-platform/metadata", - "version": "v4.2.12", + "version": "v4.2.13", "source": { "type": "git", "url": "https://github.com/api-platform/metadata.git", - "reference": "429ee219f930efd274a9f4e91e92921add7f988a" + "reference": "590195d1038e66a039f1847b43040b7e6b78475f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/metadata/zipball/429ee219f930efd274a9f4e91e92921add7f988a", - "reference": "429ee219f930efd274a9f4e91e92921add7f988a", + "url": "https://api.github.com/repos/api-platform/metadata/zipball/590195d1038e66a039f1847b43040b7e6b78475f", + "reference": "590195d1038e66a039f1847b43040b7e6b78475f", "shasum": "" }, "require": { @@ -1710,22 +1710,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/metadata/tree/v4.2.12" + "source": "https://github.com/api-platform/metadata/tree/v4.2.13" }, - "time": "2025-12-27T22:15:57+00:00" + "time": "2026-01-12T13:36:15+00:00" }, { "name": "api-platform/openapi", - "version": "v4.2.12", + "version": "v4.2.13", "source": { "type": "git", "url": "https://github.com/api-platform/openapi.git", - "reference": "3417415125f3ebbcb620f84ef9dd1cd07e2b2621" + "reference": "3600d57bf2729c8fa82d831edbdd21244037ee1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/openapi/zipball/3417415125f3ebbcb620f84ef9dd1cd07e2b2621", - "reference": "3417415125f3ebbcb620f84ef9dd1cd07e2b2621", + "url": "https://api.github.com/repos/api-platform/openapi/zipball/3600d57bf2729c8fa82d831edbdd21244037ee1b", + "reference": "3600d57bf2729c8fa82d831edbdd21244037ee1b", "shasum": "" }, "require": { @@ -1800,22 +1800,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/openapi/tree/v4.2.12" + "source": "https://github.com/api-platform/openapi/tree/v4.2.13" }, - "time": "2026-01-08T18:17:35+00:00" + "time": "2026-01-16T15:43:25+00:00" }, { "name": "api-platform/serializer", - "version": "v4.2.12", + "version": "v4.2.13", "source": { "type": "git", "url": "https://github.com/api-platform/serializer.git", - "reference": "f29558c3e212f3b9f18f222240971ea0a8f09f4c" + "reference": "006df770d82860922c7faee493d5d3c14906f810" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/serializer/zipball/f29558c3e212f3b9f18f222240971ea0a8f09f4c", - "reference": "f29558c3e212f3b9f18f222240971ea0a8f09f4c", + "url": "https://api.github.com/repos/api-platform/serializer/zipball/006df770d82860922c7faee493d5d3c14906f810", + "reference": "006df770d82860922c7faee493d5d3c14906f810", "shasum": "" }, "require": { @@ -1893,22 +1893,22 @@ "serializer" ], "support": { - "source": "https://github.com/api-platform/serializer/tree/v4.2.12" + "source": "https://github.com/api-platform/serializer/tree/v4.2.13" }, - "time": "2026-01-09T09:40:33+00:00" + "time": "2026-01-12T13:36:15+00:00" }, { "name": "api-platform/state", - "version": "v4.2.12", + "version": "v4.2.13", "source": { "type": "git", "url": "https://github.com/api-platform/state.git", - "reference": "348d19a2e5fedb01aa55ff7b866691777e54ec39" + "reference": "fa3e7b41bcb54e7ba6d3078de224620e422d6732" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/state/zipball/348d19a2e5fedb01aa55ff7b866691777e54ec39", - "reference": "348d19a2e5fedb01aa55ff7b866691777e54ec39", + "url": "https://api.github.com/repos/api-platform/state/zipball/fa3e7b41bcb54e7ba6d3078de224620e422d6732", + "reference": "fa3e7b41bcb54e7ba6d3078de224620e422d6732", "shasum": "" }, "require": { @@ -1990,35 +1990,35 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/state/tree/v4.2.12" + "source": "https://github.com/api-platform/state/tree/v4.2.13" }, - "time": "2025-12-27T22:15:57+00:00" + "time": "2026-01-12T13:36:15+00:00" }, { "name": "api-platform/symfony", - "version": "v4.2.12", + "version": "v4.2.13", "source": { "type": "git", "url": "https://github.com/api-platform/symfony.git", - "reference": "6d919776f7784bb5dc50b2226375d15e0ac3875b" + "reference": "4ff4ef66768fa2b9d7d124a2096b095bad0289d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/symfony/zipball/6d919776f7784bb5dc50b2226375d15e0ac3875b", - "reference": "6d919776f7784bb5dc50b2226375d15e0ac3875b", + "url": "https://api.github.com/repos/api-platform/symfony/zipball/4ff4ef66768fa2b9d7d124a2096b095bad0289d4", + "reference": "4ff4ef66768fa2b9d7d124a2096b095bad0289d4", "shasum": "" }, "require": { - "api-platform/documentation": "^4.2.3", - "api-platform/http-cache": "^4.2.3", - "api-platform/hydra": "^4.2.3", - "api-platform/json-schema": "^4.2.3", - "api-platform/jsonld": "^4.2.3", - "api-platform/metadata": "^4.2.3", - "api-platform/openapi": "^4.2.3", - "api-platform/serializer": "^4.2.4", - "api-platform/state": "^4.2.4", - "api-platform/validator": "^4.2.3", + "api-platform/documentation": "^4.2.12", + "api-platform/http-cache": "^4.2.12", + "api-platform/hydra": "^4.2.12", + "api-platform/json-schema": "^4.2.12", + "api-platform/jsonld": "^4.2.12", + "api-platform/metadata": "^4.2.12", + "api-platform/openapi": "^4.2.12", + "api-platform/serializer": "^4.2.12", + "api-platform/state": "^4.2.12", + "api-platform/validator": "^4.2.12", "php": ">=8.2", "symfony/asset": "^6.4 || ^7.0 || ^8.0", "symfony/finder": "^6.4 || ^7.0 || ^8.0", @@ -2029,12 +2029,12 @@ "willdurand/negotiation": "^3.1" }, "require-dev": { - "api-platform/doctrine-common": "^4.2.3", - "api-platform/doctrine-odm": "^4.2.3", - "api-platform/doctrine-orm": "^4.2.3", - "api-platform/elasticsearch": "^4.2.3", - "api-platform/graphql": "^4.2.3", - "api-platform/hal": "^4.2.3", + "api-platform/doctrine-common": "^4.2.12", + "api-platform/doctrine-odm": "^4.2.12", + "api-platform/doctrine-orm": "^4.2.12", + "api-platform/elasticsearch": "^4.2.12", + "api-platform/graphql": "^4.2.12", + "api-platform/hal": "^4.2.12", "phpspec/prophecy-phpunit": "^2.2", "phpunit/phpunit": "^12.2", "symfony/expression-language": "^6.4 || ^7.0 || ^8.0", @@ -2118,22 +2118,22 @@ "symfony" ], "support": { - "source": "https://github.com/api-platform/symfony/tree/v4.2.12" + "source": "https://github.com/api-platform/symfony/tree/v4.2.13" }, - "time": "2025-12-31T09:26:07+00:00" + "time": "2026-01-16T16:29:22+00:00" }, { "name": "api-platform/validator", - "version": "v4.2.12", + "version": "v4.2.13", "source": { "type": "git", "url": "https://github.com/api-platform/validator.git", - "reference": "f6a4a16ac55a14dfb96d84a46cdce530d2da734c" + "reference": "346a5916d9706da9b0981ebec3d6278802e96ca9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/validator/zipball/f6a4a16ac55a14dfb96d84a46cdce530d2da734c", - "reference": "f6a4a16ac55a14dfb96d84a46cdce530d2da734c", + "url": "https://api.github.com/repos/api-platform/validator/zipball/346a5916d9706da9b0981ebec3d6278802e96ca9", + "reference": "346a5916d9706da9b0981ebec3d6278802e96ca9", "shasum": "" }, "require": { @@ -2194,9 +2194,9 @@ "validator" ], "support": { - "source": "https://github.com/api-platform/validator/tree/v4.2.12" + "source": "https://github.com/api-platform/validator/tree/v4.2.13" }, - "time": "2025-12-27T22:15:57+00:00" + "time": "2026-01-16T13:22:15+00:00" }, { "name": "beberlei/assert", @@ -2732,16 +2732,16 @@ }, { "name": "doctrine/collections", - "version": "2.5.0", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "6108e0cd57d7ef125fb84696346a68860403a25d" + "reference": "7713da39d8e237f28411d6a616a3dce5e20d5de2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/6108e0cd57d7ef125fb84696346a68860403a25d", - "reference": "6108e0cd57d7ef125fb84696346a68860403a25d", + "url": "https://api.github.com/repos/doctrine/collections/zipball/7713da39d8e237f28411d6a616a3dce5e20d5de2", + "reference": "7713da39d8e237f28411d6a616a3dce5e20d5de2", "shasum": "" }, "require": { @@ -2798,7 +2798,7 @@ ], "support": { "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/2.5.0" + "source": "https://github.com/doctrine/collections/tree/2.6.0" }, "funding": [ { @@ -2814,7 +2814,7 @@ "type": "tidelift" } ], - "time": "2026-01-07T17:26:56+00:00" + "time": "2026-01-15T10:01:58+00:00" }, { "name": "doctrine/common", @@ -3352,16 +3352,16 @@ }, { "name": "doctrine/event-manager", - "version": "2.0.1", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e" + "reference": "c07799fcf5ad362050960a0fd068dded40b1e312" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/b680156fa328f1dfd874fd48c7026c41570b9c6e", - "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/c07799fcf5ad362050960a0fd068dded40b1e312", + "reference": "c07799fcf5ad362050960a0fd068dded40b1e312", "shasum": "" }, "require": { @@ -3371,10 +3371,10 @@ "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^12", - "phpstan/phpstan": "^1.8.8", - "phpunit/phpunit": "^10.5", - "vimeo/psalm": "^5.24" + "doctrine/coding-standard": "^14", + "phpdocumentor/guides-cli": "^1.4", + "phpstan/phpstan": "^2.1.32", + "phpunit/phpunit": "^10.5.58" }, "type": "library", "autoload": { @@ -3423,7 +3423,7 @@ ], "support": { "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/2.0.1" + "source": "https://github.com/doctrine/event-manager/tree/2.1.0" }, "funding": [ { @@ -3439,7 +3439,7 @@ "type": "tidelift" } ], - "time": "2024-05-22T20:47:39+00:00" + "time": "2026-01-17T22:40:21+00:00" }, { "name": "doctrine/inflector", @@ -6009,20 +6009,20 @@ }, { "name": "league/uri", - "version": "7.7.0", + "version": "7.8.0", "source": { "type": "git", "url": "https://github.com/thephpleague/uri.git", - "reference": "8d587cddee53490f9b82bf203d3a9aa7ea4f9807" + "reference": "4436c6ec8d458e4244448b069cc572d088230b76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri/zipball/8d587cddee53490f9b82bf203d3a9aa7ea4f9807", - "reference": "8d587cddee53490f9b82bf203d3a9aa7ea4f9807", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/4436c6ec8d458e4244448b069cc572d088230b76", + "reference": "4436c6ec8d458e4244448b069cc572d088230b76", "shasum": "" }, "require": { - "league/uri-interfaces": "^7.7", + "league/uri-interfaces": "^7.8", "php": "^8.1", "psr/http-factory": "^1" }, @@ -6036,11 +6036,11 @@ "ext-gmp": "to improve IPV4 host parsing", "ext-intl": "to handle IDN host with the best performance", "ext-uri": "to use the PHP native URI class", - "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", - "league/uri-components": "Needed to easily manipulate URI objects components", - "league/uri-polyfill": "Needed to backport the PHP URI extension for older versions of PHP", + "jeremykendall/php-domain-parser": "to further parse the URI host and resolve its Public Suffix and Top Level Domain", + "league/uri-components": "to provide additional tools to manipulate URI objects components", + "league/uri-polyfill": "to backport the PHP URI extension for older versions of PHP", "php-64bit": "to improve IPV4 host parsing", - "rowbot/url": "to handle WHATWG URL", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" }, "type": "library", @@ -6095,7 +6095,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri/tree/7.7.0" + "source": "https://github.com/thephpleague/uri/tree/7.8.0" }, "funding": [ { @@ -6103,37 +6103,36 @@ "type": "github" } ], - "time": "2025-12-07T16:02:06+00:00" + "time": "2026-01-14T17:24:56+00:00" }, { "name": "league/uri-components", - "version": "7.7.0", + "version": "7.8.0", "source": { "type": "git", "url": "https://github.com/thephpleague/uri-components.git", - "reference": "005f8693ce8c1f16f80e88a05cbf08da04c1c374" + "reference": "8b5ffcebcc0842b76eb80964795bd56a8333b2ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri-components/zipball/005f8693ce8c1f16f80e88a05cbf08da04c1c374", - "reference": "005f8693ce8c1f16f80e88a05cbf08da04c1c374", + "url": "https://api.github.com/repos/thephpleague/uri-components/zipball/8b5ffcebcc0842b76eb80964795bd56a8333b2ba", + "reference": "8b5ffcebcc0842b76eb80964795bd56a8333b2ba", "shasum": "" }, "require": { - "league/uri": "^7.7", + "league/uri": "^7.8", "php": "^8.1" }, "suggest": { - "bakame/aide-uri": "A polyfill for PHP8.1 until PHP8.4 to add support to PHP Native URI parser", "ext-bcmath": "to improve IPV4 host parsing", "ext-fileinfo": "to create Data URI from file contennts", "ext-gmp": "to improve IPV4 host parsing", "ext-intl": "to handle IDN host with the best performance", "ext-mbstring": "to use the sorting algorithm of URLSearchParams", - "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", - "league/uri-polyfill": "Needed to backport the PHP URI extension for older versions of PHP", + "jeremykendall/php-domain-parser": "to further parse the URI host and resolve its Public Suffix and Top Level Domain", + "league/uri-polyfill": "to backport the PHP URI extension for older versions of PHP", "php-64bit": "to improve IPV4 host parsing", - "rowbot/url": "to handle WHATWG URL", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" }, "type": "library", @@ -6180,7 +6179,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri-components/tree/7.7.0" + "source": "https://github.com/thephpleague/uri-components/tree/7.8.0" }, "funding": [ { @@ -6188,20 +6187,20 @@ "type": "github" } ], - "time": "2025-12-07T16:02:56+00:00" + "time": "2026-01-14T17:24:56+00:00" }, { "name": "league/uri-interfaces", - "version": "7.7.0", + "version": "7.8.0", "source": { "type": "git", "url": "https://github.com/thephpleague/uri-interfaces.git", - "reference": "62ccc1a0435e1c54e10ee6022df28d6c04c2946c" + "reference": "c5c5cd056110fc8afaba29fa6b72a43ced42acd4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/62ccc1a0435e1c54e10ee6022df28d6c04c2946c", - "reference": "62ccc1a0435e1c54e10ee6022df28d6c04c2946c", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/c5c5cd056110fc8afaba29fa6b72a43ced42acd4", + "reference": "c5c5cd056110fc8afaba29fa6b72a43ced42acd4", "shasum": "" }, "require": { @@ -6214,7 +6213,7 @@ "ext-gmp": "to improve IPV4 host parsing", "ext-intl": "to handle IDN host with the best performance", "php-64bit": "to improve IPV4 host parsing", - "rowbot/url": "to handle WHATWG URL", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" }, "type": "library", @@ -6264,7 +6263,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri-interfaces/tree/7.7.0" + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.8.0" }, "funding": [ { @@ -6272,7 +6271,7 @@ "type": "github" } ], - "time": "2025-12-07T16:03:21+00:00" + "time": "2026-01-15T06:54:53+00:00" }, { "name": "liip/imagine-bundle", @@ -6988,16 +6987,16 @@ }, { "name": "nelmio/cors-bundle", - "version": "2.6.0", + "version": "2.6.1", "source": { "type": "git", "url": "https://github.com/nelmio/NelmioCorsBundle.git", - "reference": "530217472204881cacd3671909f634b960c7b948" + "reference": "3d80dbcd5d1eb5f8b20ed5199e1778d44c2e4d1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/530217472204881cacd3671909f634b960c7b948", - "reference": "530217472204881cacd3671909f634b960c7b948", + "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/3d80dbcd5d1eb5f8b20ed5199e1778d44c2e4d1c", + "reference": "3d80dbcd5d1eb5f8b20ed5199e1778d44c2e4d1c", "shasum": "" }, "require": { @@ -7047,22 +7046,22 @@ ], "support": { "issues": "https://github.com/nelmio/NelmioCorsBundle/issues", - "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.6.0" + "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.6.1" }, - "time": "2025-10-23T06:57:22+00:00" + "time": "2026-01-12T15:59:08+00:00" }, { "name": "nelmio/security-bundle", - "version": "v3.7.0", + "version": "v3.8.0", "source": { "type": "git", "url": "https://github.com/nelmio/NelmioSecurityBundle.git", - "reference": "9389ec28cd219d621d3d91c840a3df6f04c9f651" + "reference": "2fafee1cdda1d5952554c44eef4c3c8566d56f40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/NelmioSecurityBundle/zipball/9389ec28cd219d621d3d91c840a3df6f04c9f651", - "reference": "9389ec28cd219d621d3d91c840a3df6f04c9f651", + "url": "https://api.github.com/repos/nelmio/NelmioSecurityBundle/zipball/2fafee1cdda1d5952554c44eef4c3c8566d56f40", + "reference": "2fafee1cdda1d5952554c44eef4c3c8566d56f40", "shasum": "" }, "require": { @@ -7121,9 +7120,9 @@ ], "support": { "issues": "https://github.com/nelmio/NelmioSecurityBundle/issues", - "source": "https://github.com/nelmio/NelmioSecurityBundle/tree/v3.7.0" + "source": "https://github.com/nelmio/NelmioSecurityBundle/tree/v3.8.0" }, - "time": "2025-12-30T14:05:13+00:00" + "time": "2026-01-14T19:38:55+00:00" }, { "name": "nette/schema", @@ -8594,16 +8593,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "2.3.0", + "version": "2.3.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495" + "reference": "16dbf9937da8d4528ceb2145c9c7c0bd29e26374" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/1e0cd5370df5dd2e556a36b9c62f62e555870495", - "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/16dbf9937da8d4528ceb2145c9c7c0bd29e26374", + "reference": "16dbf9937da8d4528ceb2145c9c7c0bd29e26374", "shasum": "" }, "require": { @@ -8635,9 +8634,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/2.3.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.1" }, - "time": "2025-08-30T15:50:23+00:00" + "time": "2026-01-12T11:33:04+00:00" }, { "name": "psr/cache", @@ -17582,16 +17581,16 @@ }, { "name": "webmozart/assert", - "version": "2.1.1", + "version": "2.1.2", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "bdbabc199a7ba9965484e4725d66170e5711323b" + "reference": "ce6a2f100c404b2d32a1dd1270f9b59ad4f57649" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/bdbabc199a7ba9965484e4725d66170e5711323b", - "reference": "bdbabc199a7ba9965484e4725d66170e5711323b", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/ce6a2f100c404b2d32a1dd1270f9b59ad4f57649", + "reference": "ce6a2f100c404b2d32a1dd1270f9b59ad4f57649", "shasum": "" }, "require": { @@ -17638,9 +17637,9 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/2.1.1" + "source": "https://github.com/webmozarts/assert/tree/2.1.2" }, - "time": "2026-01-08T11:28:40+00:00" + "time": "2026-01-13T14:02:24+00:00" }, { "name": "willdurand/negotiation", @@ -18857,16 +18856,16 @@ }, { "name": "phpunit/phpunit", - "version": "11.5.46", + "version": "11.5.48", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "75dfe79a2aa30085b7132bb84377c24062193f33" + "reference": "fe3665c15e37140f55aaf658c81a2eb9030b6d89" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/75dfe79a2aa30085b7132bb84377c24062193f33", - "reference": "75dfe79a2aa30085b7132bb84377c24062193f33", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fe3665c15e37140f55aaf658c81a2eb9030b6d89", + "reference": "fe3665c15e37140f55aaf658c81a2eb9030b6d89", "shasum": "" }, "require": { @@ -18880,7 +18879,7 @@ "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=8.2", - "phpunit/php-code-coverage": "^11.0.11", + "phpunit/php-code-coverage": "^11.0.12", "phpunit/php-file-iterator": "^5.1.0", "phpunit/php-invoker": "^5.0.1", "phpunit/php-text-template": "^4.0.1", @@ -18938,7 +18937,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.46" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.48" }, "funding": [ { @@ -18962,20 +18961,20 @@ "type": "tidelift" } ], - "time": "2025-12-06T08:01:15+00:00" + "time": "2026-01-16T16:26:27+00:00" }, { "name": "rector/rector", - "version": "2.3.0", + "version": "2.3.1", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "f7166355dcf47482f27be59169b0825995f51c7d" + "reference": "9afc1bb43571b25629f353c61a9315b5ef31383a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/f7166355dcf47482f27be59169b0825995f51c7d", - "reference": "f7166355dcf47482f27be59169b0825995f51c7d", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/9afc1bb43571b25629f353c61a9315b5ef31383a", + "reference": "9afc1bb43571b25629f353c61a9315b5ef31383a", "shasum": "" }, "require": { @@ -19014,7 +19013,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.3.0" + "source": "https://github.com/rectorphp/rector/tree/2.3.1" }, "funding": [ { @@ -19022,7 +19021,7 @@ "type": "github" } ], - "time": "2025-12-25T22:00:18+00:00" + "time": "2026-01-13T15:13:58+00:00" }, { "name": "roave/security-advisories", @@ -19030,12 +19029,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "ccfd723dc03e9864008d011603c412910180d7a6" + "reference": "57ac71b06405e32e77d960bb8490683138573f04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/ccfd723dc03e9864008d011603c412910180d7a6", - "reference": "ccfd723dc03e9864008d011603c412910180d7a6", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/57ac71b06405e32e77d960bb8490683138573f04", + "reference": "57ac71b06405e32e77d960bb8490683138573f04", "shasum": "" }, "conflict": { @@ -19050,12 +19049,14 @@ "aimeos/ai-cms-grapesjs": ">=2021.04.1,<2021.10.8|>=2022.04.1,<2022.10.9|>=2023.04.1,<2023.10.15|>=2024.04.1,<2024.10.8|>=2025.04.1,<2025.10.2", "aimeos/ai-controller-frontend": "<2020.10.15|>=2021.04.1,<2021.10.8|>=2022.04.1,<2022.10.8|>=2023.04.1,<2023.10.9|==2024.04.1", "aimeos/aimeos-core": ">=2022.04.1,<2022.10.17|>=2023.04.1,<2023.10.17|>=2024.04.1,<2024.04.7", + "aimeos/aimeos-laravel": "==2021.10", "aimeos/aimeos-typo3": "<19.10.12|>=20,<20.10.5", "airesvsg/acf-to-rest-api": "<=3.1", "akaunting/akaunting": "<2.1.13", "akeneo/pim-community-dev": "<5.0.119|>=6,<6.0.53", - "alextselegidis/easyappointments": "<1.5.2.0-beta1", + "alextselegidis/easyappointments": "<=1.5.2", "alexusmai/laravel-file-manager": "<=3.3.1", + "algolia/algoliasearch-magento-2": "<=3.16.1|>=3.17.0.0-beta1,<=3.17.1", "alt-design/alt-redirect": "<1.6.4", "altcha-org/altcha": "<1.3.1", "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", @@ -19129,7 +19130,7 @@ "bytefury/crater": "<6.0.2", "cachethq/cachet": "<2.5.1", "cadmium-org/cadmium-cms": "<=0.4.9", - "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", + "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|>=5.2.10,<5.2.12|==5.3", "cakephp/database": ">=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", "cardgate/magento2": "<2.0.33", "cardgate/woocommerce": "<=3.1.15", @@ -19628,14 +19629,15 @@ "phpxmlrpc/extras": "<0.6.1", "phpxmlrpc/phpxmlrpc": "<4.9.2", "pi/pi": "<=2.5", - "pimcore/admin-ui-classic-bundle": "<1.7.6", + "pimcore/admin-ui-classic-bundle": "<=1.7.15|>=2.0.0.0-RC1-dev,<=2.2.2", "pimcore/customer-management-framework-bundle": "<4.2.1", "pimcore/data-hub": "<1.2.4", "pimcore/data-importer": "<1.8.9|>=1.9,<1.9.3", "pimcore/demo": "<10.3", "pimcore/ecommerce-framework-bundle": "<1.0.10", "pimcore/perspective-editor": "<1.5.1", - "pimcore/pimcore": "<11.5.4", + "pimcore/pimcore": "<=11.5.13|>=12.0.0.0-RC1-dev,<12.3.1", + "pimcore/web2print-tools-bundle": "<=5.2.1|>=6.0.0.0-RC1-dev,<=6.1", "piwik/piwik": "<1.11", "pixelfed/pixelfed": "<0.12.5", "plotly/plotly.js": "<2.25.2", @@ -19699,10 +19701,10 @@ "setasign/fpdi": "<2.6.4", "sfroemken/url_redirect": "<=1.2.1", "sheng/yiicms": "<1.2.1", - "shopware/core": "<6.6.10.9-dev|>=6.7,<6.7.4.1-dev", + "shopware/core": "<6.6.10.9-dev|>=6.7,<6.7.6.1-dev", "shopware/platform": "<6.6.10.7-dev|>=6.7,<6.7.3.1-dev", "shopware/production": "<=6.3.5.2", - "shopware/shopware": "<=5.7.17|>=6.4.6,<6.6.10.10-dev|>=6.7,<6.7.5.1-dev", + "shopware/shopware": "<=5.7.17|>=6.4.6,<6.6.10.10-dev|>=6.7,<6.7.6.1-dev", "shopware/storefront": "<6.6.10.10-dev|>=6.7,<6.7.5.1-dev", "shopxo/shopxo": "<=6.4", "showdoc/showdoc": "<2.10.4", @@ -19747,7 +19749,7 @@ "snipe/snipe-it": "<=8.3.4", "socalnick/scn-social-auth": "<1.15.2", "socialiteproviders/steam": "<1.1", - "solspace/craft-freeform": ">=5,<5.10.16", + "solspace/craft-freeform": "<4.1.29|>=5,<5.10.16", "soosyze/soosyze": "<=2", "spatie/browsershot": "<5.0.5", "spatie/image-optimizer": "<1.7.3", @@ -19855,10 +19857,10 @@ "twbs/bootstrap": "<3.4.1|>=4,<4.3.1", "twig/twig": "<3.11.2|>=3.12,<3.14.1|>=3.16,<3.19", "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.55|>=10,<10.4.54|>=11,<11.5.48|>=12,<12.4.37|>=13,<13.4.18", + "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.55|>=10,<=10.4.54|>=11,<=11.5.48|>=12,<=12.4.40|>=13,<=13.4.22|>=14,<=14.0.1", "typo3/cms-belog": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", "typo3/cms-beuser": ">=9,<9.5.55|>=10,<10.4.54|>=11,<11.5.48|>=12,<12.4.37|>=13,<13.4.18", - "typo3/cms-core": "<=8.7.56|>=9,<9.5.55|>=10,<10.4.54|>=11,<11.5.48|>=12,<12.4.37|>=13,<13.4.18", + "typo3/cms-core": "<=8.7.56|>=9,<9.5.55|>=10,<=10.4.54|>=11,<=11.5.48|>=12,<=12.4.40|>=13,<=13.4.22|>=14,<=14.0.1", "typo3/cms-dashboard": ">=10,<10.4.54|>=11,<11.5.48|>=12,<12.4.37|>=13,<13.4.18", "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1", "typo3/cms-extensionmanager": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", @@ -19870,7 +19872,8 @@ "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|==13.4.2", "typo3/cms-lowlevel": ">=11,<=11.5.41", "typo3/cms-recordlist": ">=11,<11.5.48", - "typo3/cms-recycler": ">=9,<9.5.55|>=10,<10.4.54|>=11,<11.5.48|>=12,<12.4.37|>=13,<13.4.18", + "typo3/cms-recycler": ">=9,<9.5.55|>=10,<=10.4.54|>=11,<=11.5.48|>=12,<=12.4.40|>=13,<=13.4.22|>=14,<=14.0.1", + "typo3/cms-redirects": ">=10,<=10.4.54|>=11,<=11.5.48|>=12,<=12.4.40|>=13,<=13.4.22|>=14,<=14.0.1", "typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30", "typo3/cms-scheduler": ">=11,<=11.5.41", "typo3/cms-setup": ">=9,<=9.5.50|>=10,<=10.4.49|>=11,<=11.5.43|>=12,<=12.4.30|>=13,<=13.4.11", @@ -20030,7 +20033,7 @@ "type": "tidelift" } ], - "time": "2026-01-09T19:06:26+00:00" + "time": "2026-01-16T21:05:58+00:00" }, { "name": "sebastian/cli-parser", diff --git a/config/reference.php b/config/reference.php index 756dc446..07066776 100644 --- a/config/reference.php +++ b/config/reference.php @@ -2040,6 +2040,16 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * xr_spatial_tracking?: mixed, // Default: null * }, * }, + * cross_origin_isolation?: bool|array{ + * enabled?: bool|Param, // Default: false + * paths?: array, + * }, * } * @psalm-type TurboConfig = array{ * broadcast?: bool|array{ diff --git a/yarn.lock b/yarn.lock index 9791c46b..33f57b9b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -55,34 +55,34 @@ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-theme-classic/-/autocomplete-theme-classic-1.19.4.tgz#7a0802e7c64dcc3584d5085e23a290a64ade4319" integrity sha512-/qE8BETNFbul4WrrUyBYgaaKcgFPk0Px9FDKADnr3HlIkXquRpcFHTxXK16jdwXb33yrcXaAVSQZRfUUSSnxVA== -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" - integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.28.6.tgz#72499312ec58b1e2245ba4a4f550c132be4982f7" + integrity sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q== dependencies: - "@babel/helper-validator-identifier" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" js-tokens "^4.0.0" picocolors "^1.1.1" -"@babel/compat-data@^7.27.2", "@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.5.tgz#a8a4962e1567121ac0b3b487f52107443b455c7f" - integrity sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA== +"@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.6.tgz#103f466803fa0f059e82ccac271475470570d74c" + integrity sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg== "@babel/core@^7.19.6": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.5.tgz#4c81b35e51e1b734f510c99b07dfbc7bbbb48f7e" - integrity sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw== + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.6.tgz#531bf883a1126e53501ba46eb3bb414047af507f" + integrity sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw== dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.28.5" - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-module-transforms" "^7.28.3" - "@babel/helpers" "^7.28.4" - "@babel/parser" "^7.28.5" - "@babel/template" "^7.27.2" - "@babel/traverse" "^7.28.5" - "@babel/types" "^7.28.5" + "@babel/code-frame" "^7.28.6" + "@babel/generator" "^7.28.6" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-module-transforms" "^7.28.6" + "@babel/helpers" "^7.28.6" + "@babel/parser" "^7.28.6" + "@babel/template" "^7.28.6" + "@babel/traverse" "^7.28.6" + "@babel/types" "^7.28.6" "@jridgewell/remapping" "^2.3.5" convert-source-map "^2.0.0" debug "^4.1.0" @@ -90,13 +90,13 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.5.tgz#712722d5e50f44d07bc7ac9fe84438742dd61298" - integrity sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ== +"@babel/generator@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.6.tgz#48dcc65d98fcc8626a48f72b62e263d25fc3c3f1" + integrity sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw== dependencies: - "@babel/parser" "^7.28.5" - "@babel/types" "^7.28.5" + "@babel/parser" "^7.28.6" + "@babel/types" "^7.28.6" "@jridgewell/gen-mapping" "^0.3.12" "@jridgewell/trace-mapping" "^0.3.28" jsesc "^3.0.2" @@ -108,31 +108,31 @@ dependencies: "@babel/types" "^7.27.3" -"@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2": - version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" - integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== +"@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2", "@babel/helper-compilation-targets@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz#32c4a3f41f12ed1532179b108a4d746e105c2b25" + integrity sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA== dependencies: - "@babel/compat-data" "^7.27.2" + "@babel/compat-data" "^7.28.6" "@babel/helper-validator-option" "^7.27.1" browserslist "^4.24.0" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.27.1", "@babel/helper-create-class-features-plugin@^7.28.3": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz#472d0c28028850968979ad89f173594a6995da46" - integrity sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ== +"@babel/helper-create-class-features-plugin@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz#611ff5482da9ef0db6291bcd24303400bca170fb" + integrity sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow== dependencies: "@babel/helper-annotate-as-pure" "^7.27.3" "@babel/helper-member-expression-to-functions" "^7.28.5" "@babel/helper-optimise-call-expression" "^7.27.1" - "@babel/helper-replace-supers" "^7.27.1" + "@babel/helper-replace-supers" "^7.28.6" "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - "@babel/traverse" "^7.28.5" + "@babel/traverse" "^7.28.6" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1": +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1", "@babel/helper-create-regexp-features-plugin@^7.28.5": version "7.28.5" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz#7c1ddd64b2065c7f78034b25b43346a7e19ed997" integrity sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw== @@ -157,7 +157,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== -"@babel/helper-member-expression-to-functions@^7.27.1", "@babel/helper-member-expression-to-functions@^7.28.5": +"@babel/helper-member-expression-to-functions@^7.28.5": version "7.28.5" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz#f3e07a10be37ed7a63461c63e6929575945a6150" integrity sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg== @@ -165,22 +165,22 @@ "@babel/traverse" "^7.28.5" "@babel/types" "^7.28.5" -"@babel/helper-module-imports@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" - integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== +"@babel/helper-module-imports@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz#60632cbd6ffb70b22823187201116762a03e2d5c" + integrity sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw== dependencies: - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" + "@babel/traverse" "^7.28.6" + "@babel/types" "^7.28.6" -"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.3": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz#a2b37d3da3b2344fe085dab234426f2b9a2fa5f6" - integrity sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw== +"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.3", "@babel/helper-module-transforms@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz#9312d9d9e56edc35aeb6e95c25d4106b50b9eb1e" + integrity sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA== dependencies: - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" - "@babel/traverse" "^7.28.3" + "@babel/helper-module-imports" "^7.28.6" + "@babel/helper-validator-identifier" "^7.28.5" + "@babel/traverse" "^7.28.6" "@babel/helper-optimise-call-expression@^7.27.1": version "7.27.1" @@ -189,10 +189,10 @@ dependencies: "@babel/types" "^7.27.1" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" - integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz#6f13ea251b68c8532e985fd532f28741a8af9ac8" + integrity sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug== "@babel/helper-remap-async-to-generator@^7.27.1": version "7.27.1" @@ -203,14 +203,14 @@ "@babel/helper-wrap-function" "^7.27.1" "@babel/traverse" "^7.27.1" -"@babel/helper-replace-supers@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz#b1ed2d634ce3bdb730e4b52de30f8cccfd692bc0" - integrity sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA== +"@babel/helper-replace-supers@^7.27.1", "@babel/helper-replace-supers@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz#94aa9a1d7423a00aead3f204f78834ce7d53fe44" + integrity sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg== dependencies: - "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-member-expression-to-functions" "^7.28.5" "@babel/helper-optimise-call-expression" "^7.27.1" - "@babel/traverse" "^7.27.1" + "@babel/traverse" "^7.28.6" "@babel/helper-skip-transparent-expression-wrappers@^7.27.1": version "7.27.1" @@ -225,7 +225,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== -"@babel/helper-validator-identifier@^7.27.1", "@babel/helper-validator-identifier@^7.28.5": +"@babel/helper-validator-identifier@^7.28.5": version "7.28.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== @@ -236,28 +236,28 @@ integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== "@babel/helper-wrap-function@^7.27.1": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz#fe4872092bc1438ffd0ce579e6f699609f9d0a7a" - integrity sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g== + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz#4e349ff9222dab69a93a019cc296cdd8442e279a" + integrity sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ== dependencies: - "@babel/template" "^7.27.2" - "@babel/traverse" "^7.28.3" - "@babel/types" "^7.28.2" + "@babel/template" "^7.28.6" + "@babel/traverse" "^7.28.6" + "@babel/types" "^7.28.6" -"@babel/helpers@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.4.tgz#fe07274742e95bdf7cf1443593eeb8926ab63827" - integrity sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w== +"@babel/helpers@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.6.tgz#fca903a313ae675617936e8998b814c415cbf5d7" + integrity sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw== dependencies: - "@babel/template" "^7.27.2" - "@babel/types" "^7.28.4" + "@babel/template" "^7.28.6" + "@babel/types" "^7.28.6" -"@babel/parser@^7.18.9", "@babel/parser@^7.27.2", "@babel/parser@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.5.tgz#0b0225ee90362f030efd644e8034c99468893b08" - integrity sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ== +"@babel/parser@^7.18.9", "@babel/parser@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.6.tgz#f01a8885b7fa1e56dd8a155130226cd698ef13fd" + integrity sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ== dependencies: - "@babel/types" "^7.28.5" + "@babel/types" "^7.28.6" "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.28.5": version "7.28.5" @@ -290,32 +290,32 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" "@babel/plugin-transform-optional-chaining" "^7.27.1" -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.28.3": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz#373f6e2de0016f73caf8f27004f61d167743742a" - integrity sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw== +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz#0e8289cec28baaf05d54fd08d81ae3676065f69f" + integrity sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.28.3" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/traverse" "^7.28.6" "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== -"@babel/plugin-syntax-import-assertions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz#88894aefd2b03b5ee6ad1562a7c8e1587496aecd" - integrity sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg== +"@babel/plugin-syntax-import-assertions@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz#ae9bc1923a6ba527b70104dd2191b0cd872c8507" + integrity sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-syntax-import-attributes@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz#34c017d54496f9b11b61474e7ea3dfd5563ffe07" - integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== +"@babel/plugin-syntax-import-attributes@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz#b71d5914665f60124e133696f17cd7669062c503" + integrity sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" @@ -332,22 +332,22 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-async-generator-functions@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz#1276e6c7285ab2cd1eccb0bc7356b7a69ff842c2" - integrity sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q== +"@babel/plugin-transform-async-generator-functions@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.6.tgz#80cb86d3eaa2102e18ae90dd05ab87bdcad3877d" + integrity sha512-9knsChgsMzBV5Yh3kkhrZNxH3oCYAfMBkNNaVN4cP2RVlFPe8wYdwwcnOsAbkdDoV9UjFtOXWrWB52M8W4jNeA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-remap-async-to-generator" "^7.27.1" - "@babel/traverse" "^7.28.0" + "@babel/traverse" "^7.28.6" -"@babel/plugin-transform-async-to-generator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz#9a93893b9379b39466c74474f55af03de78c66e7" - integrity sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA== +"@babel/plugin-transform-async-to-generator@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz#bd97b42237b2d1bc90d74bcb486c39be5b4d7e77" + integrity sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g== dependencies: - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-module-imports" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-remap-async-to-generator" "^7.27.1" "@babel/plugin-transform-block-scoped-functions@^7.27.1": @@ -357,50 +357,50 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-block-scoping@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.5.tgz#e0d3af63bd8c80de2e567e690a54e84d85eb16f6" - integrity sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g== +"@babel/plugin-transform-block-scoping@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz#e1ef5633448c24e76346125c2534eeb359699a99" + integrity sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-class-properties@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz#dd40a6a370dfd49d32362ae206ddaf2bb082a925" - integrity sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA== +"@babel/plugin-transform-class-properties@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz#d274a4478b6e782d9ea987fda09bdb6d28d66b72" + integrity sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-class-static-block@^7.28.3": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz#d1b8e69b54c9993bc558203e1f49bfc979bfd852" - integrity sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg== +"@babel/plugin-transform-class-static-block@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz#1257491e8259c6d125ac4d9a6f39f9d2bf3dba70" + integrity sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.28.3" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-classes@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz#75d66175486788c56728a73424d67cbc7473495c" - integrity sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA== +"@babel/plugin-transform-classes@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz#8f6fb79ba3703978e701ce2a97e373aae7dda4b7" + integrity sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q== dependencies: "@babel/helper-annotate-as-pure" "^7.27.3" - "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-compilation-targets" "^7.28.6" "@babel/helper-globals" "^7.28.0" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-replace-supers" "^7.27.1" - "@babel/traverse" "^7.28.4" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-replace-supers" "^7.28.6" + "@babel/traverse" "^7.28.6" -"@babel/plugin-transform-computed-properties@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz#81662e78bf5e734a97982c2b7f0a793288ef3caa" - integrity sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw== +"@babel/plugin-transform-computed-properties@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz#936824fc71c26cb5c433485776d79c8e7b0202d2" + integrity sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/template" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/template" "^7.28.6" -"@babel/plugin-transform-destructuring@^7.28.0", "@babel/plugin-transform-destructuring@^7.28.5": +"@babel/plugin-transform-destructuring@^7.28.5": version "7.28.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz#b8402764df96179a2070bb7b501a1586cf8ad7a7" integrity sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw== @@ -408,13 +408,13 @@ "@babel/helper-plugin-utils" "^7.27.1" "@babel/traverse" "^7.28.5" -"@babel/plugin-transform-dotall-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz#aa6821de864c528b1fecf286f0a174e38e826f4d" - integrity sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw== +"@babel/plugin-transform-dotall-regex@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz#def31ed84e0fb6e25c71e53c124e7b76a4ab8e61" + integrity sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-duplicate-keys@^7.27.1": version "7.27.1" @@ -423,13 +423,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz#5043854ca620a94149372e69030ff8cb6a9eb0ec" - integrity sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ== +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.28.6.tgz#e0c59ba54f1655dd682f2edf5f101b5910a8f6f3" + integrity sha512-5suVoXjC14lUN6ZL9OLKIHCNVWCrqGqlmEp/ixdXjvgnEl/kauLvvMO/Xw9NyMc95Joj1AeLVPVMvibBgSoFlA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-dynamic-import@^7.27.1": version "7.27.1" @@ -438,20 +438,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-explicit-resource-management@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz#45be6211b778dbf4b9d54c4e8a2b42fa72e09a1a" - integrity sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ== +"@babel/plugin-transform-explicit-resource-management@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz#dd6788f982c8b77e86779d1d029591e39d9d8be7" + integrity sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/plugin-transform-destructuring" "^7.28.0" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/plugin-transform-destructuring" "^7.28.5" -"@babel/plugin-transform-exponentiation-operator@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.5.tgz#7cc90a8170e83532676cfa505278e147056e94fe" - integrity sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw== +"@babel/plugin-transform-exponentiation-operator@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz#5e477eb7eafaf2ab5537a04aaafcf37e2d7f1091" + integrity sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-export-namespace-from@^7.27.1": version "7.27.1" @@ -477,12 +477,12 @@ "@babel/helper-plugin-utils" "^7.27.1" "@babel/traverse" "^7.27.1" -"@babel/plugin-transform-json-strings@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz#a2e0ce6ef256376bd527f290da023983527a4f4c" - integrity sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q== +"@babel/plugin-transform-json-strings@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz#4c8c15b2dc49e285d110a4cf3dac52fd2dfc3038" + integrity sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-literals@^7.27.1": version "7.27.1" @@ -491,12 +491,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-logical-assignment-operators@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.5.tgz#d028fd6db8c081dee4abebc812c2325e24a85b0e" - integrity sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA== +"@babel/plugin-transform-logical-assignment-operators@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz#53028a3d77e33c50ef30a8fce5ca17065936e605" + integrity sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-member-expression-literals@^7.27.1": version "7.27.1" @@ -513,13 +513,13 @@ "@babel/helper-module-transforms" "^7.27.1" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-commonjs@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz#8e44ed37c2787ecc23bdc367f49977476614e832" - integrity sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw== +"@babel/plugin-transform-modules-commonjs@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz#c0232e0dfe66a734cc4ad0d5e75fc3321b6fdef1" + integrity sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA== dependencies: - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-module-transforms" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-modules-systemjs@^7.28.5": version "7.28.5" @@ -554,30 +554,30 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-nullish-coalescing-operator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz#4f9d3153bf6782d73dd42785a9d22d03197bc91d" - integrity sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA== +"@babel/plugin-transform-nullish-coalescing-operator@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz#9bc62096e90ab7a887f3ca9c469f6adec5679757" + integrity sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-numeric-separator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz#614e0b15cc800e5997dadd9bd6ea524ed6c819c6" - integrity sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw== +"@babel/plugin-transform-numeric-separator@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz#1310b0292762e7a4a335df5f580c3320ee7d9e9f" + integrity sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-object-rest-spread@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz#9ee1ceca80b3e6c4bac9247b2149e36958f7f98d" - integrity sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew== +"@babel/plugin-transform-object-rest-spread@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz#fdd4bc2d72480db6ca42aed5c051f148d7b067f7" + integrity sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA== dependencies: - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/plugin-transform-destructuring" "^7.28.0" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/plugin-transform-destructuring" "^7.28.5" "@babel/plugin-transform-parameters" "^7.27.7" - "@babel/traverse" "^7.28.4" + "@babel/traverse" "^7.28.6" "@babel/plugin-transform-object-super@^7.27.1": version "7.27.1" @@ -587,19 +587,19 @@ "@babel/helper-plugin-utils" "^7.27.1" "@babel/helper-replace-supers" "^7.27.1" -"@babel/plugin-transform-optional-catch-binding@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz#84c7341ebde35ccd36b137e9e45866825072a30c" - integrity sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q== +"@babel/plugin-transform-optional-catch-binding@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz#75107be14c78385978201a49c86414a150a20b4c" + integrity sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-optional-chaining@^7.27.1", "@babel/plugin-transform-optional-chaining@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.5.tgz#8238c785f9d5c1c515a90bf196efb50d075a4b26" - integrity sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ== +"@babel/plugin-transform-optional-chaining@^7.27.1", "@babel/plugin-transform-optional-chaining@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz#926cf150bd421fc8362753e911b4a1b1ce4356cd" + integrity sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" "@babel/plugin-transform-parameters@^7.27.7": @@ -609,22 +609,22 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-private-methods@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz#fdacbab1c5ed81ec70dfdbb8b213d65da148b6af" - integrity sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA== +"@babel/plugin-transform-private-methods@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz#c76fbfef3b86c775db7f7c106fff544610bdb411" + integrity sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-private-property-in-object@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz#4dbbef283b5b2f01a21e81e299f76e35f900fb11" - integrity sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ== +"@babel/plugin-transform-private-property-in-object@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz#4fafef1e13129d79f1d75ac180c52aafefdb2811" + integrity sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-create-class-features-plugin" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-property-literals@^7.27.1": version "7.27.1" @@ -633,20 +633,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-regenerator@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz#9d3fa3bebb48ddd0091ce5729139cd99c67cea51" - integrity sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA== +"@babel/plugin-transform-regenerator@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.6.tgz#6ca2ed5b76cff87980f96eaacfc2ce833e8e7a1b" + integrity sha512-eZhoEZHYQLL5uc1gS5e9/oTknS0sSSAtd5TkKMUp3J+S/CaUjagc0kOUPsEbDmMeva0nC3WWl4SxVY6+OBuxfw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-regexp-modifiers@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz#df9ba5577c974e3f1449888b70b76169998a6d09" - integrity sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA== +"@babel/plugin-transform-regexp-modifiers@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz#7ef0163bd8b4a610481b2509c58cf217f065290b" + integrity sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-reserved-words@^7.27.1": version "7.27.1" @@ -662,12 +662,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-spread@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz#1a264d5fc12750918f50e3fe3e24e437178abb08" - integrity sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q== +"@babel/plugin-transform-spread@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz#40a2b423f6db7b70f043ad027a58bcb44a9757b6" + integrity sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" "@babel/plugin-transform-sticky-regex@^7.27.1": @@ -698,13 +698,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-unicode-property-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz#bdfe2d3170c78c5691a3c3be934c8c0087525956" - integrity sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q== +"@babel/plugin-transform-unicode-property-regex@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz#63a7a6c21a0e75dae9b1861454111ea5caa22821" + integrity sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-unicode-regex@^7.27.1": version "7.27.1" @@ -714,83 +714,83 @@ "@babel/helper-create-regexp-features-plugin" "^7.27.1" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-unicode-sets-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz#6ab706d10f801b5c72da8bb2548561fa04193cd1" - integrity sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw== +"@babel/plugin-transform-unicode-sets-regex@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz#924912914e5df9fe615ec472f88ff4788ce04d4e" + integrity sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/preset-env@^7.19.4": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.28.5.tgz#82dd159d1563f219a1ce94324b3071eb89e280b0" - integrity sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg== + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.28.6.tgz#b4586bb59d8c61be6c58997f4912e7ea6bd17178" + integrity sha512-GaTI4nXDrs7l0qaJ6Rg06dtOXTBCG6TMDB44zbqofCIC4PqC7SEvmFFtpxzCDw9W5aJ7RKVshgXTLvLdBFV/qw== dependencies: - "@babel/compat-data" "^7.28.5" - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/compat-data" "^7.28.6" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-validator-option" "^7.27.1" "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.28.5" "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.27.1" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.27.1" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.27.1" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.28.3" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.28.6" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-import-assertions" "^7.27.1" - "@babel/plugin-syntax-import-attributes" "^7.27.1" + "@babel/plugin-syntax-import-assertions" "^7.28.6" + "@babel/plugin-syntax-import-attributes" "^7.28.6" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" "@babel/plugin-transform-arrow-functions" "^7.27.1" - "@babel/plugin-transform-async-generator-functions" "^7.28.0" - "@babel/plugin-transform-async-to-generator" "^7.27.1" + "@babel/plugin-transform-async-generator-functions" "^7.28.6" + "@babel/plugin-transform-async-to-generator" "^7.28.6" "@babel/plugin-transform-block-scoped-functions" "^7.27.1" - "@babel/plugin-transform-block-scoping" "^7.28.5" - "@babel/plugin-transform-class-properties" "^7.27.1" - "@babel/plugin-transform-class-static-block" "^7.28.3" - "@babel/plugin-transform-classes" "^7.28.4" - "@babel/plugin-transform-computed-properties" "^7.27.1" + "@babel/plugin-transform-block-scoping" "^7.28.6" + "@babel/plugin-transform-class-properties" "^7.28.6" + "@babel/plugin-transform-class-static-block" "^7.28.6" + "@babel/plugin-transform-classes" "^7.28.6" + "@babel/plugin-transform-computed-properties" "^7.28.6" "@babel/plugin-transform-destructuring" "^7.28.5" - "@babel/plugin-transform-dotall-regex" "^7.27.1" + "@babel/plugin-transform-dotall-regex" "^7.28.6" "@babel/plugin-transform-duplicate-keys" "^7.27.1" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.27.1" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.28.6" "@babel/plugin-transform-dynamic-import" "^7.27.1" - "@babel/plugin-transform-explicit-resource-management" "^7.28.0" - "@babel/plugin-transform-exponentiation-operator" "^7.28.5" + "@babel/plugin-transform-explicit-resource-management" "^7.28.6" + "@babel/plugin-transform-exponentiation-operator" "^7.28.6" "@babel/plugin-transform-export-namespace-from" "^7.27.1" "@babel/plugin-transform-for-of" "^7.27.1" "@babel/plugin-transform-function-name" "^7.27.1" - "@babel/plugin-transform-json-strings" "^7.27.1" + "@babel/plugin-transform-json-strings" "^7.28.6" "@babel/plugin-transform-literals" "^7.27.1" - "@babel/plugin-transform-logical-assignment-operators" "^7.28.5" + "@babel/plugin-transform-logical-assignment-operators" "^7.28.6" "@babel/plugin-transform-member-expression-literals" "^7.27.1" "@babel/plugin-transform-modules-amd" "^7.27.1" - "@babel/plugin-transform-modules-commonjs" "^7.27.1" + "@babel/plugin-transform-modules-commonjs" "^7.28.6" "@babel/plugin-transform-modules-systemjs" "^7.28.5" "@babel/plugin-transform-modules-umd" "^7.27.1" "@babel/plugin-transform-named-capturing-groups-regex" "^7.27.1" "@babel/plugin-transform-new-target" "^7.27.1" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.27.1" - "@babel/plugin-transform-numeric-separator" "^7.27.1" - "@babel/plugin-transform-object-rest-spread" "^7.28.4" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.28.6" + "@babel/plugin-transform-numeric-separator" "^7.28.6" + "@babel/plugin-transform-object-rest-spread" "^7.28.6" "@babel/plugin-transform-object-super" "^7.27.1" - "@babel/plugin-transform-optional-catch-binding" "^7.27.1" - "@babel/plugin-transform-optional-chaining" "^7.28.5" + "@babel/plugin-transform-optional-catch-binding" "^7.28.6" + "@babel/plugin-transform-optional-chaining" "^7.28.6" "@babel/plugin-transform-parameters" "^7.27.7" - "@babel/plugin-transform-private-methods" "^7.27.1" - "@babel/plugin-transform-private-property-in-object" "^7.27.1" + "@babel/plugin-transform-private-methods" "^7.28.6" + "@babel/plugin-transform-private-property-in-object" "^7.28.6" "@babel/plugin-transform-property-literals" "^7.27.1" - "@babel/plugin-transform-regenerator" "^7.28.4" - "@babel/plugin-transform-regexp-modifiers" "^7.27.1" + "@babel/plugin-transform-regenerator" "^7.28.6" + "@babel/plugin-transform-regexp-modifiers" "^7.28.6" "@babel/plugin-transform-reserved-words" "^7.27.1" "@babel/plugin-transform-shorthand-properties" "^7.27.1" - "@babel/plugin-transform-spread" "^7.27.1" + "@babel/plugin-transform-spread" "^7.28.6" "@babel/plugin-transform-sticky-regex" "^7.27.1" "@babel/plugin-transform-template-literals" "^7.27.1" "@babel/plugin-transform-typeof-symbol" "^7.27.1" "@babel/plugin-transform-unicode-escapes" "^7.27.1" - "@babel/plugin-transform-unicode-property-regex" "^7.27.1" + "@babel/plugin-transform-unicode-property-regex" "^7.28.6" "@babel/plugin-transform-unicode-regex" "^7.27.1" - "@babel/plugin-transform-unicode-sets-regex" "^7.27.1" + "@babel/plugin-transform-unicode-sets-regex" "^7.28.6" "@babel/preset-modules" "0.1.6-no-external-plugins" babel-plugin-polyfill-corejs2 "^0.4.14" babel-plugin-polyfill-corejs3 "^0.13.0" @@ -807,189 +807,189 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/template@^7.27.1", "@babel/template@^7.27.2": - version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" - integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== +"@babel/template@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.28.6.tgz#0e7e56ecedb78aeef66ce7972b082fce76a23e57" + integrity sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ== dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/parser" "^7.27.2" - "@babel/types" "^7.27.1" + "@babel/code-frame" "^7.28.6" + "@babel/parser" "^7.28.6" + "@babel/types" "^7.28.6" -"@babel/traverse@^7.18.9", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.0", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.4", "@babel/traverse@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.5.tgz#450cab9135d21a7a2ca9d2d35aa05c20e68c360b" - integrity sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ== +"@babel/traverse@^7.18.9", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.5", "@babel/traverse@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.6.tgz#871ddc79a80599a5030c53b1cc48cbe3a5583c2e" + integrity sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg== dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.28.5" + "@babel/code-frame" "^7.28.6" + "@babel/generator" "^7.28.6" "@babel/helper-globals" "^7.28.0" - "@babel/parser" "^7.28.5" - "@babel/template" "^7.27.2" - "@babel/types" "^7.28.5" + "@babel/parser" "^7.28.6" + "@babel/template" "^7.28.6" + "@babel/types" "^7.28.6" debug "^4.3.1" -"@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.28.5", "@babel/types@^7.4.4": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.5.tgz#10fc405f60897c35f07e85493c932c7b5ca0592b" - integrity sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA== +"@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.5", "@babel/types@^7.28.6", "@babel/types@^7.4.4": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.6.tgz#c3e9377f1b155005bcc4c46020e7e394e13089df" + integrity sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg== dependencies: "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.28.5" -"@ckeditor/ckeditor5-adapter-ckfinder@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-adapter-ckfinder/-/ckeditor5-adapter-ckfinder-47.3.0.tgz#bd60873b87e6c3e3d62cf2ddc3dda572fc2b3771" - integrity sha512-I0oE2wuyGSwCirHRj5i+IvBRKUrlmGCP7HMGv7fzXcHS1MW43LV0t9L8PQ/aKQX3gNmiqlfj631y/S7s5nqR8A== +"@ckeditor/ckeditor5-adapter-ckfinder@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-adapter-ckfinder/-/ckeditor5-adapter-ckfinder-47.4.0.tgz#7ff01dc465a8cd71f7a1acd0e9f943649ffce9df" + integrity sha512-g90RXXOoyBL0hsUMo6/IsCKF6qlKtxYlwzeTch+XboZOxkvJmozETKY4mnkR+XI1xZeO1bqqzLe8sKiFRvG7Hg== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-upload" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-upload" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-alignment@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-alignment/-/ckeditor5-alignment-47.3.0.tgz#f5ea4fe5e3adce297732543658c0eb025d0c4d36" - integrity sha512-T01xV7UsS4D1VbyRdWxc68Wl4NN/Ov/4+2EsbjYF7O0UA0pJs8dWZJOZ+yGFJ6p8Aask991eu91vy3r/nq3d+g== +"@ckeditor/ckeditor5-alignment@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-alignment/-/ckeditor5-alignment-47.4.0.tgz#a0d4fc432e1a8bcc15255cd383fbaf9ca2c37642" + integrity sha512-MI4PrumF62HZ5kG824WOhqtntDS6oPhmlFwg2vOd8L8fW1Gn4SgigvhqxARLi/OIf0ExnNcXFunS30B6lz1Ciw== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-autoformat@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-autoformat/-/ckeditor5-autoformat-47.3.0.tgz#b5096c419298ec5aa76f5508c435bc078826c690" - integrity sha512-1Np63YOsNMddrVHtsAPZUQvVuhMyvmwPwnPO3EHudPPDg8c5p+fbSb7DSUSPCUmkIKS8RJ8tv/3eDpS7y+EEXg== +"@ckeditor/ckeditor5-autoformat@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-autoformat/-/ckeditor5-autoformat-47.4.0.tgz#1e14143970abd433ebfcc5b4b6ffcc65d86069fc" + integrity sha512-dYjPpSaIt8z8d7em+I54+S6Y0m/4fXX27DF6gXMHG+79TIzZxakHK096RJBxj3cIjpzSjHI+v9FQ1Y+nO/M79Q== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-heading" "47.3.0" - "@ckeditor/ckeditor5-typing" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-heading" "47.4.0" + "@ckeditor/ckeditor5-typing" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-autosave@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-autosave/-/ckeditor5-autosave-47.3.0.tgz#cdb6cfa38dcc6751e5e277165c4e9b47611b5698" - integrity sha512-ctYdlBcJ/CPUUcpRzCbCp3oG2HWn8gy7GZUL95C1BIZTH08cLKZgkX0TySSUHygMvVymgvWq3LrmwByWri9AvQ== +"@ckeditor/ckeditor5-autosave@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-autosave/-/ckeditor5-autosave-47.4.0.tgz#e3d85027040d48eb46306c3fca0c0066b00e34a0" + integrity sha512-1DpjdGn+xXfYoeDd6SIcQbkUiOeHQbjN7qmjQWrd6JvowQ6loPtDPGL9OHmL4OFubrVn5GM4dS3E1+cU29SVHg== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-basic-styles@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-basic-styles/-/ckeditor5-basic-styles-47.3.0.tgz#d70613743e711ef01c498b06bdf37dafede8a36f" - integrity sha512-KGDZLyhVc+sF9o8XTiupNRdroALhLpfOssWQv8zzyu7Ak2LFYXCrrr3abscbIX2whL/X92sted11ktLaLmgL0w== +"@ckeditor/ckeditor5-basic-styles@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-basic-styles/-/ckeditor5-basic-styles-47.4.0.tgz#c277f33868f80e071a9761e187a2c95c3b444bf8" + integrity sha512-nCVP7W5ryshBG7UfXuFRv58qb/HmSS9Gjb2UUM84ODLOjYPFxvzWgQ5bV5t+x1bYAT8z/Xqfv9Ycs9ywEwOA9A== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-typing" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-typing" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-block-quote@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-block-quote/-/ckeditor5-block-quote-47.3.0.tgz#04a77edcfa099c80f8a3f19748873b2b4e6d74f7" - integrity sha512-Ik3buFYNpEYVkI5LnimDbHTOgHAYtkZ2qTwGT47wAvyScgQ9Jx0fcUBA6EjX2EuGr6w/snZfXkI4WsZqrMYp+g== +"@ckeditor/ckeditor5-block-quote@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-block-quote/-/ckeditor5-block-quote-47.4.0.tgz#2288acbe34cb8e489e57b67192a0edc90510ab76" + integrity sha512-B1iX0p5ByU/y7AVREgevr0Kfobt9uT1n9rtXToXbA9W4u4yZIVJULpceTgDw+/OJNU8lyKbq/S/6trjYFsyf0Q== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-enter" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-typing" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-enter" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-typing" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-bookmark@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-bookmark/-/ckeditor5-bookmark-47.3.0.tgz#e29a0cf99af562e07828802f72b293dc93f42505" - integrity sha512-Cn+O/Ayr9zcKk/v9dyP1SXbpFslLGCiinS6Nb8jQOS+pmxb1s32W/ycZBtAg0EYmTMskoVEkpwz6ugogNAzmaw== +"@ckeditor/ckeditor5-bookmark@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-bookmark/-/ckeditor5-bookmark-47.4.0.tgz#7cd5d324ad48992c8c4a5ad2b4a09bd07cb3b23e" + integrity sha512-XBAOfYpy0TdVqAXsBgKSKCD46S7kR/oohqP9UKTGUGrNjojW6FS1k1IxvcpRVATn0xPHjZld58wkwizIdeJveg== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-link" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - "@ckeditor/ckeditor5-widget" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-link" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + "@ckeditor/ckeditor5-widget" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-ckbox@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ckbox/-/ckeditor5-ckbox-47.3.0.tgz#5a1da5d697745d7a41566840a68ab400f6c5921b" - integrity sha512-SVF3CGH7/DBSrsV/vMFIzyvSPAoD1Qg12A5dS+ySnG46XC8ou9uQXXAfIGzAvwajC8GF3LJf9nG4+vJx3tIE/A== +"@ckeditor/ckeditor5-ckbox@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ckbox/-/ckeditor5-ckbox-47.4.0.tgz#e9cdb256c318bfbb0263a23bfb25637f24923e81" + integrity sha512-Utk9nYwzVRLQXYVVR+oi3x4xN7C0lzt+ZUyPjBRf3k60ijP/OpA8lsJJWzonuEEsdELsLzaBNSivTa9hjLZLDA== dependencies: - "@ckeditor/ckeditor5-cloud-services" "47.3.0" - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-image" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-upload" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" + "@ckeditor/ckeditor5-cloud-services" "47.4.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-image" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-upload" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" blurhash "2.0.5" - ckeditor5 "47.3.0" + ckeditor5 "47.4.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-ckfinder@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ckfinder/-/ckeditor5-ckfinder-47.3.0.tgz#2a41fc097c77d16bbf967c9e60d7010a5fd30192" - integrity sha512-OIDpmoHsw+ZRbhso3EvnSDEKkXZBgZTq7TQT7+TAg264SWuGB7y6UCKMMoA5OWpuqDJh/Wp8wBubTWqA3OwYmw== +"@ckeditor/ckeditor5-ckfinder@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ckfinder/-/ckeditor5-ckfinder-47.4.0.tgz#bde9e251ca17984fc8095bc1abdf8002d7b57e84" + integrity sha512-jXWwDfzFOn2S/oK84Io6cB7I0W9I7CwMyBfg5YbCEhYtv5aeNQBpRqwik/5cfmMrBMBXrPu1QRs60NIwegk/Eg== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-image" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-image" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-clipboard@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-clipboard/-/ckeditor5-clipboard-47.3.0.tgz#f19789ebe4729585f7fce11d44f302018b402399" - integrity sha512-fVBBWyWIaLTTUZglvOz+ld0QfQR8yr9TVwgk0XFN90S3UxFiYYkxgDAeef/o51qBhBGotgw8hGYYbY4k4G10mA== +"@ckeditor/ckeditor5-clipboard@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-clipboard/-/ckeditor5-clipboard-47.4.0.tgz#72558f987e559d91ddee17ce6594dbc96ade9fd0" + integrity sha512-LUR5yTXjHxLn8YLKrJj4/DBtqk6zdPg5SAVXkpNSz5UxU63aaj/L7jKCInr36Uy23Ov5TgT6FkgXPaBtakAqDA== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - "@ckeditor/ckeditor5-widget" "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + "@ckeditor/ckeditor5-widget" "47.4.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-cloud-services@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-cloud-services/-/ckeditor5-cloud-services-47.3.0.tgz#5f4a647ee6709153e7062b1de268ed84bf86bc8f" - integrity sha512-oFHz/Aavs6IDU6XwQD9NUgssJs3hSv4Vu2Np5rkZIyhabKRJcNma7fwM+gmmvQJupltv0uG/0ldMigjfEqHAQA== +"@ckeditor/ckeditor5-cloud-services@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-cloud-services/-/ckeditor5-cloud-services-47.4.0.tgz#d3978b92528fe4600f8bacc5e8239a5ac7c4fbe5" + integrity sha512-6xUiyoMkcW8F/8OJrEGeKrMixRGLeQYHxij7tYyrXUqugdCJmZ5WNfvsoyVBwk7g3XQDSKnfKG28gSVBPirwBQ== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-code-block@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-code-block/-/ckeditor5-code-block-47.3.0.tgz#ea5552fe3f4cd1f2d3d6c382ba7ff2dea062a2b3" - integrity sha512-zgzlCFqqJxWRTvuIGl9jJ0KYGZIjsCOYHjj1s3+asXjuskRoSip6yzcPK/LPaQXkUYf9zTGJHQ9tqmiNbRQBiA== +"@ckeditor/ckeditor5-code-block@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-code-block/-/ckeditor5-code-block-47.4.0.tgz#0898ebb555689eda97c50345eb2094e1e208dc9b" + integrity sha512-lfZd1Zu6FvHbOEXa1yJnuRDK0jYXZR0OaV9ek6A2ZQ6Z169Brc+aH1sTakw7r6S8m1clTz+vRH3UuVk7ETsQGA== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.3.0" - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-enter" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-clipboard" "47.4.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-enter" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-core@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-core/-/ckeditor5-core-47.3.0.tgz#7aa71f6174e05aa94102d24b412740c4851580e7" - integrity sha512-jLawN3a8yL5lbwG8gZeJihcVKkDgq+rAFeXc+Rd+nw+c5uGCdkc5F7PCRjhw+JOGruXUhNsbiF/4iNv3hUcO/A== +"@ckeditor/ckeditor5-core@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-core/-/ckeditor5-core-47.4.0.tgz#16413d2fe25e456ddd97b67d3e2b4bdf1ff1b4c1" + integrity sha512-upV/3x9fhgFWxVVtwR47zCOAvZKgP8a8N7UQOFwfs3Tr52+oE1gULWKTiS9079MBaXaIqtM/EbelNdvBh4gOGg== dependencies: - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - "@ckeditor/ckeditor5-watchdog" "47.3.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + "@ckeditor/ckeditor5-watchdog" "47.4.0" es-toolkit "1.39.5" "@ckeditor/ckeditor5-dev-translations@^43.0.1", "@ckeditor/ckeditor5-dev-translations@^43.1.0": @@ -1033,316 +1033,316 @@ terser-webpack-plugin "^4.2.3" through2 "^3.0.1" -"@ckeditor/ckeditor5-easy-image@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-easy-image/-/ckeditor5-easy-image-47.3.0.tgz#f08994188ff8c5de6b56c0f0834f2b12828e313c" - integrity sha512-pdQHtLBdkDuY59FzzgyTjS6XM5aJlSUW33sOSfN0I/iROl6LpSr1kHjf6ybJAAWEhSD6B+o6hv4+K+tx184UpA== +"@ckeditor/ckeditor5-easy-image@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-easy-image/-/ckeditor5-easy-image-47.4.0.tgz#fcbb1d470e1e4e80c0198a92ca8d6bc077b55dcf" + integrity sha512-YMxvD3Gh6kVux1OKdtdubvjtUHu4TIN7YgCThqsfnuumpnx94Dhq3+wy8o/dO73dRcq/iVvb/9LmkivT4+8uXg== dependencies: - "@ckeditor/ckeditor5-cloud-services" "47.3.0" - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-upload" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-cloud-services" "47.4.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-upload" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-editor-balloon@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-balloon/-/ckeditor5-editor-balloon-47.3.0.tgz#100bd48cdf643cdf854501ecff3b284d77ba0f30" - integrity sha512-8EzuV48gTuqrNd5rt58rp7eWf8B5q1PeRUS2f5fAF6RwDS6HsBDeqmEic8JPxOh+30pvAcR6UiylSYe6S+H9bg== +"@ckeditor/ckeditor5-editor-balloon@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-balloon/-/ckeditor5-editor-balloon-47.4.0.tgz#489dd513869036b673d5d9f4d7408dd39693bb58" + integrity sha512-FZuHy5EhzssTQZTuXQF7aVRJyvY0QaIOr6yj8fttRoWQgIDMzJNm+rVW9C9FRa1+j1i9tlrE21+GYIhCgEGyOg== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-editor-classic@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-classic/-/ckeditor5-editor-classic-47.3.0.tgz#03412d376358395071ccb0eff83329801e2c8a83" - integrity sha512-uCA8cr23LSJf8POkg2c403zS+xWjbE8Ucu521PQPcxrTMyTI6rYfjnuZ6vT/qzqAwZrLpiNZucJIQxRDFhLWGQ== +"@ckeditor/ckeditor5-editor-classic@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-classic/-/ckeditor5-editor-classic-47.4.0.tgz#c41243dfe3e2029d432db43c537ff73775c2f483" + integrity sha512-b698aEHRJSC4jMP0fYD78tdqMw5oQHtCpUL6lU8LFsysCe5M0cqgab4V0hEjeIsg4Ft/UmkgFd1aAleRCDftJg== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-editor-decoupled@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-decoupled/-/ckeditor5-editor-decoupled-47.3.0.tgz#f5c430d40b17fb98e9dbe2e23452ca73cd3b6d79" - integrity sha512-G4szgSWluqNG/wv+JQxiZv1lzwUzTxdPZWO/mL8pi3sc69vp30QYT+I4TOTLpfBdISBPkWajn/hfEXJPS1hCXw== +"@ckeditor/ckeditor5-editor-decoupled@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-decoupled/-/ckeditor5-editor-decoupled-47.4.0.tgz#df4bcd16c03addcedb2c5b56887850eba592558c" + integrity sha512-4Nk/fe5Sob9aUf8gf4K7GQjqI0XftDThGRjX1eKOSDs+OGXRyB4Fxtu+tHLCyCt8cITac/PAMWaO7dwqbAK8bA== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-editor-inline@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-inline/-/ckeditor5-editor-inline-47.3.0.tgz#1990a71af5ae8b60d22140d60a8adbea4c3d0cef" - integrity sha512-ie66wno1gbxNuoqGJ7iSDIz4gydPxJtSE5F9kb3NjfwecQxjj/0yBS+HsbZhqbFFNdJ01KZOtbAxNXQ0r1OW2g== +"@ckeditor/ckeditor5-editor-inline@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-inline/-/ckeditor5-editor-inline-47.4.0.tgz#05576fe4bd2a6c41ab4845ca4584981c52ae08bf" + integrity sha512-/xKtAwq0Pg3Zq7q9QcmrUnqc8XScrUlixWnl58gOxsdmflaSaK4qLtnId0FmSrax0tqVp1qihsUfvE5uUNnyGg== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-editor-multi-root@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-multi-root/-/ckeditor5-editor-multi-root-47.3.0.tgz#4cb0016a55458545cc426fb7b71c74e3e500fb9a" - integrity sha512-PRxVNpoo7YiECugo9rPsUmuTL3f2xUwvHSUKh6FvPneQS4oFIdMNJrg/Hhn02sEOe6+ScFIi4X06ryK+/N6zOA== +"@ckeditor/ckeditor5-editor-multi-root@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-multi-root/-/ckeditor5-editor-multi-root-47.4.0.tgz#bb41b4c5a076c23f8dcb51660ecfbef300db84b5" + integrity sha512-gKYQeg2QI+9JM2gujYVBaLVlh7Dw4XfkX1g4jYMEqq4YG5E17Hpbc1A/IqUb0LLpAd1TG64AR4s/vxK0JrnY1g== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-emoji@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-emoji/-/ckeditor5-emoji-47.3.0.tgz#f6d5f2d3e84844f63c93b9601b90a1d61a18425a" - integrity sha512-3xmB9VKShWmK2x1qZ7BecfqaxAGP6Ys1/UEPhBhoFyRK34UvtA9KrK0G+KWF4kwA5OgkoqnQRmVkMEO6mKXMnw== +"@ckeditor/ckeditor5-emoji@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-emoji/-/ckeditor5-emoji-47.4.0.tgz#b3214f8668f6e8c1621153f3535154015d356030" + integrity sha512-PbTqvbBzMfvKaxTzAt72VskT8ifGoKRNKzskEmm74RCLu6a60rUaqL/4ChkTsF1FKPvB07VDbyDQx4XkvUOBIA== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-mention" "47.3.0" - "@ckeditor/ckeditor5-typing" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-mention" "47.4.0" + "@ckeditor/ckeditor5-typing" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" es-toolkit "1.39.5" fuzzysort "3.1.0" -"@ckeditor/ckeditor5-engine@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-47.3.0.tgz#bf4409390be95a85309019e47351558f1f029153" - integrity sha512-op/9TsJgFtWctfUd/QY41HYyFZd5hfSK6hBTJh0Xpz2XAfvpWsVim27FyWX0yIhyMLmtwDETDq8iBaH5kEZ15g== +"@ckeditor/ckeditor5-engine@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-47.4.0.tgz#7711c1e3bfc7912f56ba22310d8299691e18b02c" + integrity sha512-U3Zq3qZ86Si6L4BslJIXotK9oVXu59zAuDVWlx3prAUS5Mrz7MfVlWdz9HeWu9W1i2FmUGVksX+uoO/ng2CZUA== dependencies: - "@ckeditor/ckeditor5-utils" "47.3.0" + "@ckeditor/ckeditor5-utils" "47.4.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-enter@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-47.3.0.tgz#ea3d162cf19fd42594380ece10cdadb26bd9e8b3" - integrity sha512-gBsT2ffLKUQclJpWkjn8mggtmoa3AfYH6vjsfMefN3yov1FoGY65kQDXl9KOfdG71E/tRtOZkMUPXqZUlYrBlA== +"@ckeditor/ckeditor5-enter@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-47.4.0.tgz#9d6b5038a43c926cb0245f6bd19c52d80151e99a" + integrity sha512-BQjJ7CjXENoF8Inv8ydRl+luRMKQvw1ohkiYsTEruHjGKkAFyDTGrorzkoGp2IU98n5SVGJE+XwVxpKgjsKAVQ== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" -"@ckeditor/ckeditor5-essentials@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-essentials/-/ckeditor5-essentials-47.3.0.tgz#51681029ae2af39f003235bfb545105014b59635" - integrity sha512-tLqgNXfdZJiBR56CHBNkrHWd7WCSPTIRxfqB9xoDvFD3AQngv1J3tIj3ye0WtTr8V23CCcXzz3v3NFZwtuDPBw== +"@ckeditor/ckeditor5-essentials@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-essentials/-/ckeditor5-essentials-47.4.0.tgz#f0100ebe4ec1dedf427648848571d722d076faa8" + integrity sha512-M+8xGJF+PKEcTjTeqofNe6cjcTnsy6EomqwGrbHDHhyAXC4d8k/vRrptymjonW7H9IsuOcQ5t2eZj3d+yl03gg== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.3.0" - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-enter" "47.3.0" - "@ckeditor/ckeditor5-select-all" "47.3.0" - "@ckeditor/ckeditor5-typing" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-undo" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-clipboard" "47.4.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-enter" "47.4.0" + "@ckeditor/ckeditor5-select-all" "47.4.0" + "@ckeditor/ckeditor5-typing" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-undo" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-find-and-replace@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-find-and-replace/-/ckeditor5-find-and-replace-47.3.0.tgz#6e27bf44fddfec25d804fbc2d5f55095150958fa" - integrity sha512-jSbc4ss36ynQvyNYKNR4UXceoS8r2JE9fjedHZbMPpFRPlypCC2oc21WhWa/Fo+PcfAIV7q2izNDclcFtEFB/A== +"@ckeditor/ckeditor5-find-and-replace@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-find-and-replace/-/ckeditor5-find-and-replace-47.4.0.tgz#7ae9606af2def3a71f75883d6d69e126034e3911" + integrity sha512-CZAX1XxrJcnOAwENfw4x4DiLyZ6uOHUHJqFXyyJdQC9qfEizvFYTXn3zO6fbViyDd/k4ugAoLBjpaZh6p9FyOQ== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-font@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-font/-/ckeditor5-font-47.3.0.tgz#68e1c772aa0ccde4fc266cbf421eed05f223805f" - integrity sha512-J1QhW0Z6LfU0Mc3cITw21vPTIv1sGtlyO7JSFU9rQUkF1p2PCMQ/SvEja3bdz8LipidoDUh+QCeT2z9TSt1VDA== +"@ckeditor/ckeditor5-font@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-font/-/ckeditor5-font-47.4.0.tgz#c93d96c7c96a584f708d98380658e20e6781e7a9" + integrity sha512-QRIThyZg0kT1R4LTotD6cV9gm0NX3Z0Cq/IOQtuwTbRb3wa+kWXhVfKZPV9Qru5HifvrCrcWXMjkBRRIdfqp+Q== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-fullscreen@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-fullscreen/-/ckeditor5-fullscreen-47.3.0.tgz#552253beeede6673ab34b2840cbf617537c58c91" - integrity sha512-lSge/Lw30GYkztAWifZYOpc5Q9tjuT73gq0Hcs1tDpiIIt63CM7AfIS/sjiTUus0ZSG8fjLdd3ivSf4TiE/kOg== +"@ckeditor/ckeditor5-fullscreen@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-fullscreen/-/ckeditor5-fullscreen-47.4.0.tgz#a1eaae21a4f3de061bf86fa34c1ff37f18cc9491" + integrity sha512-DdroZD1cgNU3up74ZQq84vXyCDknQJJyyxQIXS5CKJy7qNR9YmixpVmyXpYJmZzdSVvp/p8Ej87VlOXfju3ilQ== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-editor-classic" "47.3.0" - "@ckeditor/ckeditor5-editor-decoupled" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-editor-classic" "47.4.0" + "@ckeditor/ckeditor5-editor-decoupled" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-heading@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-heading/-/ckeditor5-heading-47.3.0.tgz#e45707f8bcc03a143e6665de93c1a86e81e59dbe" - integrity sha512-sCBpuGTY+RGnE45r1cgFfe29cW6hmVQo+4HGppyErj7Sac5f1PCG84/DSTP1n+6LPiA51Yh2Z/VtQdYKMRNnmQ== +"@ckeditor/ckeditor5-heading@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-heading/-/ckeditor5-heading-47.4.0.tgz#632bbc6eb40fcccce90fd2177e53e588cceadc0d" + integrity sha512-VWBxQ2ngrT0x50Tb1klZyIOykgNPby8sw5rBq/nv/UXBb2Ql/crp50miC8pBCOvkbTP16qzVbl5HoiltJQkH/g== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-paragraph" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-paragraph" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-highlight@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-highlight/-/ckeditor5-highlight-47.3.0.tgz#9f364b193587f4601bc80f670830e7b3894c3da4" - integrity sha512-wlT7R+7LVp0LmCyKIRN+U6+3FJqw6NpmfHhidSZnTRd9qzGnZ2EMxdEIkfOyCZd2CYH/gxtf/QFGik+DTjV/ow== +"@ckeditor/ckeditor5-highlight@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-highlight/-/ckeditor5-highlight-47.4.0.tgz#3ff7a0314c72649d3754b578699f4ae88d538aba" + integrity sha512-SHBkoMVu/uTkvE0/1zaehlvCpEqYuh/u1Rh7SHNysrD05Nacs1t5jw+l2lTFoyJnhTy+RA9IONYSDF+5tK3dqQ== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-horizontal-line@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-horizontal-line/-/ckeditor5-horizontal-line-47.3.0.tgz#5d2e4b8e1ec31c57333f1b6975df68fc2bba6eaf" - integrity sha512-F0QlRncwX/wvUN/LtZjpdsld9qT3jDxrniv4a/nz4LIotTVAsw2tMy9y8Sw2TNjIrOY5cCytxG91kzc+WNwUlA== +"@ckeditor/ckeditor5-horizontal-line@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-horizontal-line/-/ckeditor5-horizontal-line-47.4.0.tgz#02e27c27fa0f928ad41bafb9b8cfd961e5049396" + integrity sha512-UvL0x55QxRGiem8EPO9n/WQk6218TDNatKSCRueZkAYUrFC1bmtVs9g6GqvSl59RoRGcTxVcz0fXbsxrhZY6HA== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - "@ckeditor/ckeditor5-widget" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + "@ckeditor/ckeditor5-widget" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-html-embed@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-html-embed/-/ckeditor5-html-embed-47.3.0.tgz#2a7285ec8af6781e672a3182dcbe0968bb2852ea" - integrity sha512-B8xgh/4fUoccNhTKajBFlWWgz03G0QS41iXGtEoDY74Z1Ewx8zKccw4kPcyowIsrM7iq8w8tmo7uHJQaB5rhlA== +"@ckeditor/ckeditor5-html-embed@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-html-embed/-/ckeditor5-html-embed-47.4.0.tgz#6cbcdd19341f18513c1c8349c68004bf53a7dd54" + integrity sha512-SnidyadvuC0ohT2kZ0crsnFy8adQwhHcRaGUNXx5qAHRK7K1wGp3nxdnyOW5GdK2CIe8DTo+H3v8nXfvt7VgnQ== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - "@ckeditor/ckeditor5-widget" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + "@ckeditor/ckeditor5-widget" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-html-support@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-html-support/-/ckeditor5-html-support-47.3.0.tgz#e521de883323c83dc571550d73d05eedbdf73388" - integrity sha512-sdqB2NPlCy4UC6Wgi1RzW/kzeWd9zIgf8s/bx4KzGbWekAvfnJWUVAYkkziM+7N6NhXTKDx8Wu2Zh/66pIo1XA== +"@ckeditor/ckeditor5-html-support@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-html-support/-/ckeditor5-html-support-47.4.0.tgz#69111ef5781ee732876beb77c40c1e347b2bc4d3" + integrity sha512-SGd6wvPB9VGNqEWvoEdK1kQJ3lpvrTNfsA5Pg02V/Zr3gIxnAqajYEArWDYtsz3ajaUDs06i1tFdpCbFB7JRMg== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-enter" "47.3.0" - "@ckeditor/ckeditor5-heading" "47.3.0" - "@ckeditor/ckeditor5-image" "47.3.0" - "@ckeditor/ckeditor5-list" "47.3.0" - "@ckeditor/ckeditor5-remove-format" "47.3.0" - "@ckeditor/ckeditor5-table" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - "@ckeditor/ckeditor5-widget" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-enter" "47.4.0" + "@ckeditor/ckeditor5-heading" "47.4.0" + "@ckeditor/ckeditor5-image" "47.4.0" + "@ckeditor/ckeditor5-list" "47.4.0" + "@ckeditor/ckeditor5-remove-format" "47.4.0" + "@ckeditor/ckeditor5-table" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + "@ckeditor/ckeditor5-widget" "47.4.0" + ckeditor5 "47.4.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-icons@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-icons/-/ckeditor5-icons-47.3.0.tgz#e8adb3991e523ba6feca4f7d30116bf45548c345" - integrity sha512-erpbkXiPtA3Bu8a8ZLQjPYpX4W0WoT3OFZElHZgXOmVl8xQAefp2q+lFYKgzsqB757/zZO7i/B6U9czNv6lPmw== +"@ckeditor/ckeditor5-icons@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-icons/-/ckeditor5-icons-47.4.0.tgz#73a1fbd70f14cb859ee71118978690489cdb2b9c" + integrity sha512-2THOymXou/dBR+Jk69+/DzE3lK3QVk8+9eSKdWQ4+kvYom9MXT9RwKJNe3BlvqUNxBymI8eVBjdaQjfv3AOT0Q== -"@ckeditor/ckeditor5-image@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-image/-/ckeditor5-image-47.3.0.tgz#3f90466a565a3c0d053da27c4c98010f586675a7" - integrity sha512-KnsQUv1itQdKJIAlj3GSTETuaiyFq7ggMsK7UVJFTk0yCiIi+oSEkrIn5r+p1e98QYEYjArS2SwOIxDsxDM2sQ== +"@ckeditor/ckeditor5-image@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-image/-/ckeditor5-image-47.4.0.tgz#6222e3ae17fe6d94b609afabbd7e0d605e1ffcb0" + integrity sha512-Z0q+cANAvzvW/3lIMg0rpvVHx4nlWbUsfPw78gM7/DmB4qpdbKsX07iTut84ZnWvOP+WU3XIrhinMXTvl6IqEw== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.3.0" - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-typing" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-undo" "47.3.0" - "@ckeditor/ckeditor5-upload" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - "@ckeditor/ckeditor5-widget" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-clipboard" "47.4.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-typing" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-undo" "47.4.0" + "@ckeditor/ckeditor5-upload" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + "@ckeditor/ckeditor5-widget" "47.4.0" + ckeditor5 "47.4.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-indent@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-indent/-/ckeditor5-indent-47.3.0.tgz#5934ac5ed590ac3aed241ad8d1834705eb52086d" - integrity sha512-kIpuMrTrtf7YhOBYre2Ny7NnL/x6sqMzdaxy4LN+4Sa9+Cw+KR2QJij2d0VkwDzV+z2B8GZ1mNZvCzpEwWDUUA== +"@ckeditor/ckeditor5-indent@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-indent/-/ckeditor5-indent-47.4.0.tgz#ddbd56d04ab80c4a5bf2039197e778ca4e0487b1" + integrity sha512-lFPYPUSuByK6GHiTnkHeLkWHD5/SbXCQ5TJVzRJ3uaWvbqo0b0Hvoz92vtKueOwi1QsgXD38aYhMljs0h8eP5g== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-heading" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-list" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-heading" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-list" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-language@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-language/-/ckeditor5-language-47.3.0.tgz#7a5268f78675dceec2d68d8d34eb7865f62a0a73" - integrity sha512-sPAgbKYT3NpofS2FWphkgiPzD2YqbTpxpLyzHymDJo7s2LQWj5FUGacZiiddGPOdzicSasZ6qHvcHIMHCmLBpg== +"@ckeditor/ckeditor5-language@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-language/-/ckeditor5-language-47.4.0.tgz#30ea15cde33cc28d7e1582bd7f44578becf67534" + integrity sha512-3FEoS59ZOTm6m0m0O5qEpsf4tGX/r+r0LjkDrRjhIcaGJh0W4Ao2J6cSrXv7hikDpgBjbHIkEy0V6KkIWWAZpg== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-link@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-link/-/ckeditor5-link-47.3.0.tgz#eaf1b67a1d5c100912904ee55b4abc35d54f11bf" - integrity sha512-YbxZQHi36EF/O7deiDlrM8Xnw/J18x4dQgxaiHKTSHu7/4sZuVfJFAzF6afdt1uQ+8yeX3+q60jkJr2mm1zOEw== +"@ckeditor/ckeditor5-link@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-link/-/ckeditor5-link-47.4.0.tgz#f6aad2f7f03d2688db0171632c5f06c775725f80" + integrity sha512-AF7TVV64iOqia4x4psHakYYznPoS3I5j1Gijoa7jiTLGJZSaAL7xAc1qAajgWQ66o7DWuVGL7QkZwKIo1jlTPg== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.3.0" - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-image" "47.3.0" - "@ckeditor/ckeditor5-typing" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - "@ckeditor/ckeditor5-widget" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-clipboard" "47.4.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-image" "47.4.0" + "@ckeditor/ckeditor5-typing" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + "@ckeditor/ckeditor5-widget" "47.4.0" + ckeditor5 "47.4.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-list@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-list/-/ckeditor5-list-47.3.0.tgz#8c71e9f4c40eab840bdf2edbcf6112118218c8ae" - integrity sha512-iOJ4prpoqf1UamKztQ0If/k638+NGSPsFaGGjOqhGPcIJxTtscs4c34uNUH6yCXDNF1ZaET2FxFckAQvrb0DFQ== +"@ckeditor/ckeditor5-list@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-list/-/ckeditor5-list-47.4.0.tgz#daecd93432dd43a0d8eba9b58923c131a4fa8a46" + integrity sha512-OGvAgS+NB1dzrqhN1xEVfN8PTM73pjMnmDvQeQurwIfjQdJaO07jGPRqujQzNostckWvNPtQysXkbnp+QiCPOw== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.3.0" - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-enter" "47.3.0" - "@ckeditor/ckeditor5-font" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-typing" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-clipboard" "47.4.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-enter" "47.4.0" + "@ckeditor/ckeditor5-font" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-typing" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-markdown-gfm@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-markdown-gfm/-/ckeditor5-markdown-gfm-47.3.0.tgz#22e4df0d5ccca82cea77f034371a7262343106ae" - integrity sha512-PyRXnwnUmwW7pxe8DaV1sle/g45fp/e+1vzXgFIvLYWJO5i2Sych1yDbAU1RGbJr5R05eFS7Fov3bowzRE2ICA== +"@ckeditor/ckeditor5-markdown-gfm@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-markdown-gfm/-/ckeditor5-markdown-gfm-47.4.0.tgz#7ec446c002d000d53b0c5ee1a756add477718019" + integrity sha512-2W1dBzxPIdEsE0CiU19K4xQfBS2jSBruJh5XV924eyuJPh76CdXKDGPBwuVd6i1oK7x+ji0Griu9Y+R2F0jRIw== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.3.0" - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" + "@ckeditor/ckeditor5-clipboard" "47.4.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" "@types/hast" "3.0.4" - ckeditor5 "47.3.0" + ckeditor5 "47.4.0" hast-util-from-dom "5.0.1" hast-util-to-html "9.0.5" hast-util-to-mdast "10.1.2" @@ -1358,271 +1358,271 @@ unified "11.0.5" unist-util-visit "5.0.0" -"@ckeditor/ckeditor5-media-embed@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-media-embed/-/ckeditor5-media-embed-47.3.0.tgz#e88ad49979d804976486b6a2e8f114be6bd0f1d8" - integrity sha512-c0wP3VZp6409VMMRYL4z2ZiqCsP2p4RyHcfH8TZSy3g25pZnUbYpdMepHCxT0U5wLVdqhGMn7cW+k5Fq6Mp/hA== +"@ckeditor/ckeditor5-media-embed@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-media-embed/-/ckeditor5-media-embed-47.4.0.tgz#611ea3ccc49c4a529da966bd792cd210a3ef6515" + integrity sha512-oL/In6Q3dtgj23FyyKbtYa704sl1eEx8JeO4ODRL3scCNI2/7qx9nGMexydiJi+Saulvs/3g7A8PbXiI+iArog== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.3.0" - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-typing" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-undo" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - "@ckeditor/ckeditor5-widget" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-clipboard" "47.4.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-typing" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-undo" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + "@ckeditor/ckeditor5-widget" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-mention@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-mention/-/ckeditor5-mention-47.3.0.tgz#7262434b8c5df7d76c8e7e450b8d1eab20febff2" - integrity sha512-yIRbRSd0b66kUlur80kiskVMyymHvtg96endZ8FuGDjKgdLApFnkonNmpCNLAxGuwJDMfDyvyEikZy1i0bgWlg== +"@ckeditor/ckeditor5-mention@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-mention/-/ckeditor5-mention-47.4.0.tgz#362e1e63898215f8df4c2abbcd908bb7408a6056" + integrity sha512-1niRMaI5HxYbSTosxjU/6F5Uo+2hCEa3s18emwIBMTG1zOu0OViubuj+P8wCOqmSmpzvfkNybl4kk74MahGk0w== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-typing" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-typing" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-minimap@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-minimap/-/ckeditor5-minimap-47.3.0.tgz#a131d2ce6a479fa52beb1f4aae7fb8cdff1daaba" - integrity sha512-8JrmRwEMdIVoSp5Xms8sWHxlXcBPwhf7HjY35ptbS2sMQQ4RC9o5tbyLe8V2kGt8Qgmvx3F2H2VT9VFpQCUmFg== +"@ckeditor/ckeditor5-minimap@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-minimap/-/ckeditor5-minimap-47.4.0.tgz#0aeffe10bc25f850bb57656d183c5c80faad3b42" + integrity sha512-j0bOrjhEB5U6wCrz8CgW8ueFgHJJORtgqkOiRfQd++SBHGULSRr/WJwvaObcrhhNrY4Mlme8Nws6s5YJxzlFhA== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-page-break@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-page-break/-/ckeditor5-page-break-47.3.0.tgz#3bd6cbac2cea9040be054f6de926220cb242dc27" - integrity sha512-ZvLfObeXnhYKs8+kcVBbjpAWQnGelVopnEIC0Ljds2cxyeUJ25pnLAZGKMcEOFvdm8Hh1OKnlfPWj3VRZMkrVw== +"@ckeditor/ckeditor5-page-break@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-page-break/-/ckeditor5-page-break-47.4.0.tgz#bf25609dd31c6e184570522ed54f60855056167e" + integrity sha512-v4VR4OhLqj5Rp/Dwb9BSb9lSNAkGVF9n5ThvC0dFeHMikC4ENcqH8NpcbVnaua4tsM9tX0jZLHbcX+jMune4IQ== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - "@ckeditor/ckeditor5-widget" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + "@ckeditor/ckeditor5-widget" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-paragraph@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paragraph/-/ckeditor5-paragraph-47.3.0.tgz#dd32ac01641738128fd68802f7d9c1e1f6e996e2" - integrity sha512-CCnCd57ySxYrb6XCocAzj49PH6jOc+YbsgVVQ4+4sMyOQR/d5VdgJAkQKO7m288nwvE+Ai9gMAl5rqiph+PcMg== +"@ckeditor/ckeditor5-paragraph@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paragraph/-/ckeditor5-paragraph-47.4.0.tgz#dfd2f314bcb3b0557a16e9c8ae7be5e5d5201a95" + integrity sha512-epw82iXcK6togOeE/rolQBkyxCfz8m30VoH0bdq0YKkg8+HJ5uzB2FweFDH+l/cyoubdB2f1370G2dAMp6huBg== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" -"@ckeditor/ckeditor5-paste-from-office@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paste-from-office/-/ckeditor5-paste-from-office-47.3.0.tgz#6a35af1321d57ff9062a93de52e38fd023e23129" - integrity sha512-8M7pKMAI0cwviVx/QWYQRDfy9GLUUBVKrqBFuOu/lcxfsncL7BUJYVVvaOC+iN0I9Mi513XHz78FLi4PbRoC0A== +"@ckeditor/ckeditor5-paste-from-office@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paste-from-office/-/ckeditor5-paste-from-office-47.4.0.tgz#b1b37e743ca71548e6b3e7d258be34ce4e42a9df" + integrity sha512-yKOk+CDV0dAy+XeqUcP5Drur1u69h6UCdLwDUEbS/egSv/+o+tJwCGrTCRzPqBeUxIahUGBMk0obID7v6xT9IQ== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.3.0" - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-clipboard" "47.4.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-remove-format@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-remove-format/-/ckeditor5-remove-format-47.3.0.tgz#4c1455b791f1312e8b6060b9246695c7d6c11bf6" - integrity sha512-tGBSxVKu2fUO7oH2U4QyAb6+/47YFkEVwRPGvpwg4QUQn670qAJJenJBWqXEYFHK6V5mLDfD5xmKdTk79OXgTw== +"@ckeditor/ckeditor5-remove-format@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-remove-format/-/ckeditor5-remove-format-47.4.0.tgz#1461db9343d708a79c24c0af07c70e54a783d999" + integrity sha512-XD6LY76m3bZr/twRGTjNRnU4z0VU1akDC7evVMhRPaDruR71km00VT1YNPRChCDmdssEVeWEynHhLQ/kRjy+0w== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-restricted-editing@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-restricted-editing/-/ckeditor5-restricted-editing-47.3.0.tgz#11011b9e1928ea04c667c1a483352ae1b3b50eaa" - integrity sha512-DoJFgX7RXapubLnulcW6aFuTQD25jSPWMJA25EXHTHMq9ZQP69ey2kJgp2iioas0zpsKhnVzioUyIiGe28ufng== +"@ckeditor/ckeditor5-restricted-editing@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-restricted-editing/-/ckeditor5-restricted-editing-47.4.0.tgz#29df0b5763d973d5e1713fea194abe6e72d32c85" + integrity sha512-roywT2jKCs0NVd6TVhYlmrnP0oI4499M5L1mV8Vqq4wc9puVeEPSIKoZNdIF5YWXsHjpCUCMejpuigLTIbf9MQ== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-select-all@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-select-all/-/ckeditor5-select-all-47.3.0.tgz#a35a2b4edc36d2e0912f262fb607e0f5217e88e6" - integrity sha512-pMWVdKDlLowiwnVGycJd0mW2jQ3HdlzzstfIhawhU2jspSY4Byk8XiPZ9Dyq6aAwEtdJOShLLau1dcVnB2OltA== +"@ckeditor/ckeditor5-select-all@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-select-all/-/ckeditor5-select-all-47.4.0.tgz#6759a9474ecac0df1d75b2361b0521a7f5e8e7eb" + integrity sha512-9fVsmNFmSj53kJKPKUmCkgpXUev2OeMJ5cFVKXvzEvsm6jFTO8/9iHRTbN/j/ZzWuK5MoO/I3gVn4wGOIX//zw== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" -"@ckeditor/ckeditor5-show-blocks@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-show-blocks/-/ckeditor5-show-blocks-47.3.0.tgz#8820630061f44895a39b727eaafd88693ed0ae51" - integrity sha512-vgmH/FqCHproRvVqXYLQrDeDgc5D+2iEK/MB7sRH75w+ZjP495XUYRtoZWud59yQ8P3kCgywycR74iyenxntlw== +"@ckeditor/ckeditor5-show-blocks@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-show-blocks/-/ckeditor5-show-blocks-47.4.0.tgz#0ae9ebbc8f13a48f54cb969dfa09145fc552ecee" + integrity sha512-uIFHsH2HMPYRWmK+heZoiXRVqbxFJZwYZY1WmNKjE5g7OM8y+PVowe0ZYICjauV2/Z2rwCWtodDKb1bnVnl+mQ== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-source-editing@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-source-editing/-/ckeditor5-source-editing-47.3.0.tgz#650515f93506cf8c1ea1c5cf90b06edb0891752e" - integrity sha512-a2hFkyUzDJBpPh5jF3+LUO356PeQ84/Amqp9Y8oqzk6nKXlfr5IdPU1kQTkwDxee7F85EUNd2/wRZm4tLKL02A== +"@ckeditor/ckeditor5-source-editing@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-source-editing/-/ckeditor5-source-editing-47.4.0.tgz#59635fd5d85988f84885bc455da8839bd79ca26d" + integrity sha512-AtamOK+Dya6abkuo9XYME05FYFigBRic5gr3/KzhyFfHh7qiFlZFLCDH0S/JEQ0AduFjfgUx4h0ST22RIhiYoA== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-theme-lark" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-theme-lark" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-special-characters@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-special-characters/-/ckeditor5-special-characters-47.3.0.tgz#40e8e4e0e2677ac8bf2819c61513427202df3d01" - integrity sha512-kh9gONY8HqP1hQ5AImLzYyiecyVRHmyGE9xc1koyOV5HvZ3X+ogTWuAFqG5e3zjLaVCeKQKXkbuBS6/+Gi2NxQ== +"@ckeditor/ckeditor5-special-characters@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-special-characters/-/ckeditor5-special-characters-47.4.0.tgz#e220194e45a2cf0563cc30d2e81ed87a3a2853d6" + integrity sha512-eYP23WZY8ayA0q8LNVCUcP85yf9J2gSpVE9E6LNIku4rbzox6mCf0sZF0ZhzvqHyXyj9Mn+S21IZpLOTuTUW0g== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-typing" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-typing" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" -"@ckeditor/ckeditor5-style@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-style/-/ckeditor5-style-47.3.0.tgz#450756719867dc6781bcb25a4e50afb592202e1d" - integrity sha512-EsQ3ZZccrsniKadcfjBI7HJgsNbZAl6NomQBKauvTQzmOoL90Ouffp6yIQTIQkIgm/xzIh2zVhGTcw84VoioJw== +"@ckeditor/ckeditor5-style@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-style/-/ckeditor5-style-47.4.0.tgz#e6077f4875309733e7d56bccd02f284b57ae08c3" + integrity sha512-R6kt9jX9FOnYRXKn7kX0ZdIdW5A3S7ZZBfcdwzG9O/t7r5IIkp+yhC1y6/uBAc2twvvqMhG7Gu5KH2o/TVVjSg== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-html-support" "47.3.0" - "@ckeditor/ckeditor5-list" "47.3.0" - "@ckeditor/ckeditor5-table" "47.3.0" - "@ckeditor/ckeditor5-typing" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-html-support" "47.4.0" + "@ckeditor/ckeditor5-list" "47.4.0" + "@ckeditor/ckeditor5-table" "47.4.0" + "@ckeditor/ckeditor5-typing" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-table@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-table/-/ckeditor5-table-47.3.0.tgz#cabe9f43f10edda8faa83af0e7a3e2ea125ff3fe" - integrity sha512-YVupV2lEvE8tJi2tSnrthT1GCdzA0+zv4x0AQR5fBKfu82fux7vxKb222UnHkHhazrR3dGY5MSBRjIaDerY3TA== +"@ckeditor/ckeditor5-table@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-table/-/ckeditor5-table-47.4.0.tgz#079fca2e5d4739966b59c6b5e0d6df41c9d97e25" + integrity sha512-gWraeB14YnpR+ELySu3xgSFlfur07ZBPN76rQuiIobrecKwhh1Az8rk7Qo4c1K/q/f4pHmqh87nhSprn7Mo7+w== dependencies: - "@ckeditor/ckeditor5-clipboard" "47.3.0" - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - "@ckeditor/ckeditor5-widget" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-clipboard" "47.4.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + "@ckeditor/ckeditor5-widget" "47.4.0" + ckeditor5 "47.4.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-theme-lark@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-theme-lark/-/ckeditor5-theme-lark-47.3.0.tgz#35749a9d94ddb7ad4d59fb11a31a7111a0560b88" - integrity sha512-ovaRKQAVTqlmYlpo3y9q1iu+5SKmmdjBTFDRGRgZ9nXNuD2vmikJA4pG5A4aNKLl/d3/LIkPfbn2g2w9VIlb7Q== +"@ckeditor/ckeditor5-theme-lark@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-theme-lark/-/ckeditor5-theme-lark-47.4.0.tgz#1731c864b4fc46d7440b7c5bc6e136527f1c1da2" + integrity sha512-kdtwV5HJ+8/oNcsGM8sdpULhXr2TfM7gEKlH/EAdycLDa6topcJuTl7iVSEu4hZzwVo2agiEMmdUIf3dvWweow== dependencies: - "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.4.0" -"@ckeditor/ckeditor5-typing@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-47.3.0.tgz#737e7b8298008b49d1df4dbd5e9fc906e3d62002" - integrity sha512-hxwdd4hcCXLMFehS9/DLlcl+Bx+TlF+gG8f1DqNmpmqRbbVtfMFfMlHuqKC7+0c3TLJz7f0F5ih681s2H4t9RA== +"@ckeditor/ckeditor5-typing@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-47.4.0.tgz#4135bb117f0e7c38d63d1ee7c98e02283ff00d5d" + integrity sha512-+YmCUTLVAryK5h68TgQ0qxDngs1MTCLKPDXxHzNqs0oXHai9YkJv/zg4zeb0/RQRIps7jh3bPapZoi2hP2iN3A== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-ui@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-47.3.0.tgz#8f9d8e1e88eb3ad93bc40174d2040641c0cee73c" - integrity sha512-dDHvfIxNfo3z00KwDO6nHCx9ZC2vVEQ+lMmpjbMD8P3FzGRPRd7NqzRbPoieDKlgAiG6Sa2CLThqA+71C+RMfw== +"@ckeditor/ckeditor5-ui@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-47.4.0.tgz#3a2c653dbf890abd04dfb42edeb5ef833e30a541" + integrity sha512-sL67wp2DX+P3zxeJLo2I7yLhBlX6Zhd0xfUAB6vX6SkjhMeC0L2gLOIr3kKq/OMKEuS+0iZ+qVvEN1j+2Flzlg== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-editor-multi-root" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-editor-multi-root" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" "@types/color-convert" "2.0.4" color-convert "3.1.0" color-parse "2.0.2" es-toolkit "1.39.5" vanilla-colorful "0.7.2" -"@ckeditor/ckeditor5-undo@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-undo/-/ckeditor5-undo-47.3.0.tgz#36653b37e34aa3a482f1b0888ecb85c146e4b3e1" - integrity sha512-vO0WCOQBC1Cj7hCxh3+VhQNrANiBjj+8561XkLGhDpQt/lpzuEqXn11Rx4BXjSzpuDZvNnMNO9duzXfEfVjAzw== +"@ckeditor/ckeditor5-undo@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-undo/-/ckeditor5-undo-47.4.0.tgz#8d92e91efb8929206a83374119a6692490fee036" + integrity sha512-OnxpJb9glDwuSTl59Yb4+6bjWW5h4BA+94YhesKZXeIaXjyzwFmNGxM07nRyaX4KXwGVP5y5JZC2xv5bCOXKSQ== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" -"@ckeditor/ckeditor5-upload@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-upload/-/ckeditor5-upload-47.3.0.tgz#732e721ea1f741d824b5e94afe0bc0be14107e07" - integrity sha512-j4GngBlxg/tjztS/B67RD/OUrTYQhrwDYSpAjXV6shabwEbtEadsKLYgpXPR12ENB30mmrYKIRC/pgT5/wXc6Q== +"@ckeditor/ckeditor5-upload@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-upload/-/ckeditor5-upload-47.4.0.tgz#b0b6c232945ffea4f21d136b499393b837e566e5" + integrity sha512-9gMfYltVNi5aYNs8IixTXww9kyU0+oEeY9pN8W6YLrhToVJdnN14pW3yNkQJKJPK7HS2RgM6L1Y+u50qu/IL2g== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" -"@ckeditor/ckeditor5-utils@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-47.3.0.tgz#04ad3fb365bfe2c61d6137dd30805ec4ef49e931" - integrity sha512-RF5iAkI7NpVYZW1Fo+BhIQmPNLqA6iRVNoqo43P7vE8QfvG0fYB1Ff3jsEeM4UVV/G6pABBhE+9UMpwJcBuxWw== +"@ckeditor/ckeditor5-utils@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-47.4.0.tgz#27477eed00a0b6059c29727783a77f26d2cecad9" + integrity sha512-+5v1k3+8Yr0VUnO+3GfP7MsDCqt5KD9f9Z5wUVRig/J61hPTv8cUQp0859K87IuOLdAP/rZ1iQpdi1psanQeIQ== dependencies: - "@ckeditor/ckeditor5-ui" "47.3.0" + "@ckeditor/ckeditor5-ui" "47.4.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-watchdog@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-watchdog/-/ckeditor5-watchdog-47.3.0.tgz#3f0f200e1f5b61c56fb1a83a50d67e6f46ed8298" - integrity sha512-gurXEgfiIvnmmd7u68PdffdAaYFuNuAE8fJoWeJFMzrrFGuG7TvGmulXG/Wom2D4D+eW7wQE93Sisx9wIfAcPQ== +"@ckeditor/ckeditor5-watchdog@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-watchdog/-/ckeditor5-watchdog-47.4.0.tgz#8ce4b3836032cf4635960dd6162e6bba46b5597c" + integrity sha512-MEfHIVYV4SILXi++G00y3wREm/1gT5dO+pTGpQY+NNYw8wgi32rg1q8hO2P/upsVaPzbeD3WLURyqeIxKwY20Q== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-editor-multi-root" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-editor-multi-root" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-widget@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-47.3.0.tgz#c15f87b47200bef75bcb501e117d0d811440097a" - integrity sha512-8IagE3JdKLM04KB3XR2SCDJTIlmtGOhkfWZBn9kwy7g8SIjI2bJARA/0wgXMGlzUV2AMbbxb0HdkMEK6Xxg/nQ== +"@ckeditor/ckeditor5-widget@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-47.4.0.tgz#2d63a8faa2df59f1c12d0c31b772a097e1bda048" + integrity sha512-wffwrMQ6h+Hdu9IMG0H0QAf0YWWn+AGeJwPs69cRjRwB5pNOCUmMyM4h8MtNp15UEvGGARlhOjFf1TniMUkKrw== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-enter" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-typing" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-enter" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-typing" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" es-toolkit "1.39.5" -"@ckeditor/ckeditor5-word-count@47.3.0": - version "47.3.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-word-count/-/ckeditor5-word-count-47.3.0.tgz#7765599663fe9f0a3fac5b74e2535f96a5f3b2ee" - integrity sha512-VluTjPWaJnYS6uoJfi8XJZIBPzfrARH4RBEHOBto4SM1jNdSV0gltz6jfNSteGXm4Bl+VdBgltzRAXqsugi2Vg== +"@ckeditor/ckeditor5-word-count@47.4.0": + version "47.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-word-count/-/ckeditor5-word-count-47.4.0.tgz#4fb9a5a23c347bbf56c9baccab6951d7e3d1b95c" + integrity sha512-JeiwHJyBdlUCdzfW3K2KoGO/QhDe1qOKNPXiVXzExIyZpww+hm5HjV/zi5gX4xAvWg9ew0UaQRco5Dy7mBBfRQ== dependencies: - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - ckeditor5 "47.3.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + ckeditor5 "47.4.0" es-toolkit "1.39.5" "@csstools/selector-resolve-nested@^3.1.0": @@ -1850,9 +1850,9 @@ integrity sha512-eGeIqNOQpXoPAIP7tC1+1Yc1yl1xnwYqg+3mzqxyrbE5pg5YFBZcA6YoTiByJB6DKAEsiWtl6tjTJS4IYtbB7A== "@hotwired/turbo@^8.0.1": - version "8.0.20" - resolved "https://registry.yarnpkg.com/@hotwired/turbo/-/turbo-8.0.20.tgz#068ede648c4db09fed4cf0ac0266788056673f2f" - integrity sha512-IilkH/+h92BRLeY/rMMR3MUh1gshIfdra/qZzp/Bl5FmiALD/6sQZK/ecxSbumeyOYiWr/JRI+Au1YQmkJGnoA== + version "8.0.21" + resolved "https://registry.yarnpkg.com/@hotwired/turbo/-/turbo-8.0.21.tgz#a3e80c01d70048200f64bbe3582b84f9bfac034e" + integrity sha512-fJTv3JnzFHeDxBb23esZSOhT4r142xf5o3lKMFMvzPC6AllkqbBKk5Yb31UZhtIsKQCwmO/pUQrtTUlYl5CHAQ== "@isaacs/balanced-match@^4.0.1": version "4.0.1" @@ -2169,9 +2169,9 @@ integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== "@types/node@*": - version "25.0.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-25.0.6.tgz#5ca3c46f2b256b59128f433426e42d464765dab1" - integrity sha512-NNu0sjyNxpoiW3YuVFfNz7mxSQ+S4X2G28uqg2s+CzoqoQjLPsWSbsFFyztIAqt2vb8kfEAsJNepMGPTxFDx3Q== + version "25.0.9" + resolved "https://registry.yarnpkg.com/@types/node/-/node-25.0.9.tgz#81ce3579ddf67cae812a9d49c8a0ab90c82e7782" + integrity sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw== dependencies: undici-types "~7.16.0" @@ -2622,9 +2622,9 @@ base64-js@^1.1.2, base64-js@^1.3.0: integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== baseline-browser-mapping@^2.9.0: - version "2.9.14" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.14.tgz#3b6af0bc032445bca04de58caa9a87cfe921cbb3" - integrity sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg== + version "2.9.15" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.15.tgz#6baaa0069883f50a99cdb31b56646491f47c05d7" + integrity sha512-kX8h7K2srmDyYnXRIppo4AH/wYgzWVCs+eKr3RusRSQ5PvRYoEFmR/I0PbdTjKFAoKqp5+kbxnNTFO9jOfSVJg== big.js@^5.2.2: version "5.2.2" @@ -2864,72 +2864,72 @@ ci-info@^4.2.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.3.1.tgz#355ad571920810b5623e11d40232f443f16f1daa" integrity sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA== -ckeditor5@47.3.0, ckeditor5@^47.0.0: - version "47.3.0" - resolved "https://registry.yarnpkg.com/ckeditor5/-/ckeditor5-47.3.0.tgz#6378478ed869ccbb9885610d4d0d6223032627fc" - integrity sha512-3UDvnAi8TB/5i9flEFfOLIQAIWUoIbucvvFCqKWJqpfZy3F3k34GLEgDV/3VM6O6QV+UNHbzYaSTAl4yKVvoXg== +ckeditor5@47.4.0, ckeditor5@^47.0.0: + version "47.4.0" + resolved "https://registry.yarnpkg.com/ckeditor5/-/ckeditor5-47.4.0.tgz#eb7879a23e780c356a2a48d477663d857494721a" + integrity sha512-6RTRV2w6nhmBSLBnA0O9QzcBC/Cf74ogziaKHOK61H+PcM6aP3ltb/fNScGyy3NVw3+OzaxjbPF7NSykVmmMMw== dependencies: - "@ckeditor/ckeditor5-adapter-ckfinder" "47.3.0" - "@ckeditor/ckeditor5-alignment" "47.3.0" - "@ckeditor/ckeditor5-autoformat" "47.3.0" - "@ckeditor/ckeditor5-autosave" "47.3.0" - "@ckeditor/ckeditor5-basic-styles" "47.3.0" - "@ckeditor/ckeditor5-block-quote" "47.3.0" - "@ckeditor/ckeditor5-bookmark" "47.3.0" - "@ckeditor/ckeditor5-ckbox" "47.3.0" - "@ckeditor/ckeditor5-ckfinder" "47.3.0" - "@ckeditor/ckeditor5-clipboard" "47.3.0" - "@ckeditor/ckeditor5-cloud-services" "47.3.0" - "@ckeditor/ckeditor5-code-block" "47.3.0" - "@ckeditor/ckeditor5-core" "47.3.0" - "@ckeditor/ckeditor5-easy-image" "47.3.0" - "@ckeditor/ckeditor5-editor-balloon" "47.3.0" - "@ckeditor/ckeditor5-editor-classic" "47.3.0" - "@ckeditor/ckeditor5-editor-decoupled" "47.3.0" - "@ckeditor/ckeditor5-editor-inline" "47.3.0" - "@ckeditor/ckeditor5-editor-multi-root" "47.3.0" - "@ckeditor/ckeditor5-emoji" "47.3.0" - "@ckeditor/ckeditor5-engine" "47.3.0" - "@ckeditor/ckeditor5-enter" "47.3.0" - "@ckeditor/ckeditor5-essentials" "47.3.0" - "@ckeditor/ckeditor5-find-and-replace" "47.3.0" - "@ckeditor/ckeditor5-font" "47.3.0" - "@ckeditor/ckeditor5-fullscreen" "47.3.0" - "@ckeditor/ckeditor5-heading" "47.3.0" - "@ckeditor/ckeditor5-highlight" "47.3.0" - "@ckeditor/ckeditor5-horizontal-line" "47.3.0" - "@ckeditor/ckeditor5-html-embed" "47.3.0" - "@ckeditor/ckeditor5-html-support" "47.3.0" - "@ckeditor/ckeditor5-icons" "47.3.0" - "@ckeditor/ckeditor5-image" "47.3.0" - "@ckeditor/ckeditor5-indent" "47.3.0" - "@ckeditor/ckeditor5-language" "47.3.0" - "@ckeditor/ckeditor5-link" "47.3.0" - "@ckeditor/ckeditor5-list" "47.3.0" - "@ckeditor/ckeditor5-markdown-gfm" "47.3.0" - "@ckeditor/ckeditor5-media-embed" "47.3.0" - "@ckeditor/ckeditor5-mention" "47.3.0" - "@ckeditor/ckeditor5-minimap" "47.3.0" - "@ckeditor/ckeditor5-page-break" "47.3.0" - "@ckeditor/ckeditor5-paragraph" "47.3.0" - "@ckeditor/ckeditor5-paste-from-office" "47.3.0" - "@ckeditor/ckeditor5-remove-format" "47.3.0" - "@ckeditor/ckeditor5-restricted-editing" "47.3.0" - "@ckeditor/ckeditor5-select-all" "47.3.0" - "@ckeditor/ckeditor5-show-blocks" "47.3.0" - "@ckeditor/ckeditor5-source-editing" "47.3.0" - "@ckeditor/ckeditor5-special-characters" "47.3.0" - "@ckeditor/ckeditor5-style" "47.3.0" - "@ckeditor/ckeditor5-table" "47.3.0" - "@ckeditor/ckeditor5-theme-lark" "47.3.0" - "@ckeditor/ckeditor5-typing" "47.3.0" - "@ckeditor/ckeditor5-ui" "47.3.0" - "@ckeditor/ckeditor5-undo" "47.3.0" - "@ckeditor/ckeditor5-upload" "47.3.0" - "@ckeditor/ckeditor5-utils" "47.3.0" - "@ckeditor/ckeditor5-watchdog" "47.3.0" - "@ckeditor/ckeditor5-widget" "47.3.0" - "@ckeditor/ckeditor5-word-count" "47.3.0" + "@ckeditor/ckeditor5-adapter-ckfinder" "47.4.0" + "@ckeditor/ckeditor5-alignment" "47.4.0" + "@ckeditor/ckeditor5-autoformat" "47.4.0" + "@ckeditor/ckeditor5-autosave" "47.4.0" + "@ckeditor/ckeditor5-basic-styles" "47.4.0" + "@ckeditor/ckeditor5-block-quote" "47.4.0" + "@ckeditor/ckeditor5-bookmark" "47.4.0" + "@ckeditor/ckeditor5-ckbox" "47.4.0" + "@ckeditor/ckeditor5-ckfinder" "47.4.0" + "@ckeditor/ckeditor5-clipboard" "47.4.0" + "@ckeditor/ckeditor5-cloud-services" "47.4.0" + "@ckeditor/ckeditor5-code-block" "47.4.0" + "@ckeditor/ckeditor5-core" "47.4.0" + "@ckeditor/ckeditor5-easy-image" "47.4.0" + "@ckeditor/ckeditor5-editor-balloon" "47.4.0" + "@ckeditor/ckeditor5-editor-classic" "47.4.0" + "@ckeditor/ckeditor5-editor-decoupled" "47.4.0" + "@ckeditor/ckeditor5-editor-inline" "47.4.0" + "@ckeditor/ckeditor5-editor-multi-root" "47.4.0" + "@ckeditor/ckeditor5-emoji" "47.4.0" + "@ckeditor/ckeditor5-engine" "47.4.0" + "@ckeditor/ckeditor5-enter" "47.4.0" + "@ckeditor/ckeditor5-essentials" "47.4.0" + "@ckeditor/ckeditor5-find-and-replace" "47.4.0" + "@ckeditor/ckeditor5-font" "47.4.0" + "@ckeditor/ckeditor5-fullscreen" "47.4.0" + "@ckeditor/ckeditor5-heading" "47.4.0" + "@ckeditor/ckeditor5-highlight" "47.4.0" + "@ckeditor/ckeditor5-horizontal-line" "47.4.0" + "@ckeditor/ckeditor5-html-embed" "47.4.0" + "@ckeditor/ckeditor5-html-support" "47.4.0" + "@ckeditor/ckeditor5-icons" "47.4.0" + "@ckeditor/ckeditor5-image" "47.4.0" + "@ckeditor/ckeditor5-indent" "47.4.0" + "@ckeditor/ckeditor5-language" "47.4.0" + "@ckeditor/ckeditor5-link" "47.4.0" + "@ckeditor/ckeditor5-list" "47.4.0" + "@ckeditor/ckeditor5-markdown-gfm" "47.4.0" + "@ckeditor/ckeditor5-media-embed" "47.4.0" + "@ckeditor/ckeditor5-mention" "47.4.0" + "@ckeditor/ckeditor5-minimap" "47.4.0" + "@ckeditor/ckeditor5-page-break" "47.4.0" + "@ckeditor/ckeditor5-paragraph" "47.4.0" + "@ckeditor/ckeditor5-paste-from-office" "47.4.0" + "@ckeditor/ckeditor5-remove-format" "47.4.0" + "@ckeditor/ckeditor5-restricted-editing" "47.4.0" + "@ckeditor/ckeditor5-select-all" "47.4.0" + "@ckeditor/ckeditor5-show-blocks" "47.4.0" + "@ckeditor/ckeditor5-source-editing" "47.4.0" + "@ckeditor/ckeditor5-special-characters" "47.4.0" + "@ckeditor/ckeditor5-style" "47.4.0" + "@ckeditor/ckeditor5-table" "47.4.0" + "@ckeditor/ckeditor5-theme-lark" "47.4.0" + "@ckeditor/ckeditor5-typing" "47.4.0" + "@ckeditor/ckeditor5-ui" "47.4.0" + "@ckeditor/ckeditor5-undo" "47.4.0" + "@ckeditor/ckeditor5-upload" "47.4.0" + "@ckeditor/ckeditor5-utils" "47.4.0" + "@ckeditor/ckeditor5-watchdog" "47.4.0" + "@ckeditor/ckeditor5-widget" "47.4.0" + "@ckeditor/ckeditor5-word-count" "47.4.0" clean-stack@^2.0.0: version "2.2.0" @@ -4896,7 +4896,12 @@ jpeg-exif@^1.1.4: resolved "https://registry.yarnpkg.com/jpeg-exif/-/jpeg-exif-1.1.4.tgz#781a65b6cd74f62cb1c493511020f8d3577a1c2b" integrity sha512-a+bKEcCjtuW5WTdgeXFzswSrdqi0jk4XlEtZlx5A94wCoBpFjfFTbo/Tra5SpNCl/YFZPvcV1dJc+TAYeg6ROQ== -jquery@>=1.7, jquery@^3.5.1: +jquery@>=1.7: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-4.0.0.tgz#95c33ac29005ff72ec444c5ba1cf457e61404fbb" + integrity sha512-TXCHVR3Lb6TZdtw1l3RTLf8RBWVGexdxL6AC8/e0xZKEpBflBsjh9/8LXw+dkNFuOyW9B7iB3O1sP7hS0Kiacg== + +jquery@^3.5.1: version "3.7.1" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de" integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg== @@ -5588,9 +5593,9 @@ 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.9.4" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.4.tgz#cafa1a42f8c71357f49cd1566810d74ff1cb0200" - integrity sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ== + version "2.10.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.0.tgz#d801a1f388f8fac7333c01b7c15c9222c811def4" + integrity sha512-540P2c5dYnJlyJxTaSloliZexv8rji6rY8FhQN+WF/82iHQfA23j/xtJx97L+mXOML27EqksSek/g4eK7jaL3g== dependencies: schema-utils "^4.0.0" tapable "^2.2.1" @@ -7422,9 +7427,9 @@ terser-webpack-plugin@^5.3.0, terser-webpack-plugin@^5.3.16: terser "^5.31.1" terser@^5.3.4, terser@^5.31.1: - version "5.44.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.44.1.tgz#e391e92175c299b8c284ad6ded609e37303b0a9c" - integrity sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw== + version "5.46.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.46.0.tgz#1b81e560d584bbdd74a8ede87b4d9477b0ff9695" + integrity sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.15.0" @@ -7506,9 +7511,9 @@ tslib@^2.8.0: integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== type-fest@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-5.3.1.tgz#251b8d0a813c1dbccf1f9450ba5adcdf7072adc2" - integrity sha512-VCn+LMHbd4t6sF3wfU/+HKT63C9OoyrSIf4b+vtWHpt2U7/4InZG467YDNMFMR70DdHjAdpPWmw2lzRdg0Xqqg== + version "5.4.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-5.4.1.tgz#aa9eaadcdc0acb0b5bd52e54f966ee3e38e125d2" + integrity sha512-xygQcmneDyzsEuKZrFbRMne5HDqMs++aFzefrJTgEIKjQ3rekM+RPfFCVq2Gp1VIDqddoYeppCj4Pcb+RZW0GQ== dependencies: tagged-tag "^1.0.0" @@ -7746,9 +7751,9 @@ vfile@^6.0.0: vfile-message "^4.0.0" watchpack@^2.4.4: - version "2.5.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.5.0.tgz#fa115d5ccaa4bf3aa594f586257c0bc4768939fd" - integrity sha512-e6vZvY6xboSwLz2GD36c16+O/2Z6fKvIf4pOXptw2rY9MVwE/TXc6RGqxD3I3x0a28lwBY7DE+76uTPSsBrrCA== + version "2.5.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.5.1.tgz#dd38b601f669e0cbf567cb802e75cead82cde102" + integrity sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" @@ -7918,9 +7923,9 @@ which-module@^2.0.0: integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== which-typed-array@^1.1.16, which-typed-array@^1.1.19: - version "1.1.19" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956" - integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== + version "1.1.20" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.20.tgz#3fdb7adfafe0ea69157b1509f3a1cd892bd1d122" + integrity sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg== dependencies: available-typed-arrays "^1.0.7" call-bind "^1.0.8" From 0d4f935b4371e236b96a54438af79149ac6d9e1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 18 Jan 2026 12:40:07 +0100 Subject: [PATCH 114/235] Updated marked and webpack-bundle-analyzer dependencies --- package.json | 4 ++-- yarn.lock | 29 ++++++++--------------------- 2 files changed, 10 insertions(+), 23 deletions(-) diff --git a/package.json b/package.json index a58b3aa4..66e59737 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "popper.js": "^1.14.7", "regenerator-runtime": "^0.13.9", "webpack": "^5.74.0", - "webpack-bundle-analyzer": "^4.3.0", + "webpack-bundle-analyzer": "^5.1.1", "webpack-cli": "^5.1.0", "webpack-notifier": "^1.15.0" }, @@ -65,7 +65,7 @@ "json-formatter-js": "^2.3.4", "jszip": "^3.2.0", "katex": "^0.16.0", - "marked": "^16.1.1", + "marked": "^17.0.1", "marked-gfm-heading-id": "^4.1.1", "marked-mangle": "^1.0.1", "pdfmake": "^0.2.2", diff --git a/yarn.lock b/yarn.lock index 33f57b9b..4bc1539e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3665,11 +3665,6 @@ dunder-proto@^1.0.0, dunder-proto@^1.0.1: es-errors "^1.3.0" gopd "^1.2.0" -duplexer@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - electron-to-chromium@^1.5.263: version "1.5.267" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz#5d84f2df8cdb6bfe7e873706bb21bd4bfb574dc7" @@ -4242,13 +4237,6 @@ growly@^1.3.0: resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw== -gzip-size@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== - dependencies: - duplexer "^0.1.2" - has-bigints@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.1.0.tgz#28607e965ac967e03cd2a2c70a2636a1edad49fe" @@ -5113,10 +5101,10 @@ marked-mangle@^1.0.1: resolved "https://registry.yarnpkg.com/marked-mangle/-/marked-mangle-1.1.12.tgz#7ecc1dab1e03695f3b8b9d606e8becfba8277496" integrity sha512-bRrqNcfU9v3iRECb7YPvA+/xKZMjHojd9R92YwHbFjdPQ+Wc7vozkbGKAv4U8AUl798mNUuY3DTBQkedsV3TeQ== -marked@^16.1.1: - version "16.4.2" - resolved "https://registry.yarnpkg.com/marked/-/marked-16.4.2.tgz#4959a64be6c486f0db7467ead7ce288de54290a3" - integrity sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA== +marked@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/marked/-/marked-17.0.1.tgz#9db34197ac145e5929572ee49ef701e37ee9b2e6" + integrity sha512-boeBdiS0ghpWcSwoNm/jJBwdpFaMnZWRzjA6SkUMYb40SVaN1x7mmfGKp0jvexGcx+7y2La5zRZsYFZI6Qpypg== math-intrinsics@^1.1.0: version "1.1.0" @@ -7763,10 +7751,10 @@ web-namespaces@^2.0.0: resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692" integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== -webpack-bundle-analyzer@^4.3.0: - version "4.10.2" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz#633af2862c213730be3dbdf40456db171b60d5bd" - integrity sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw== +webpack-bundle-analyzer@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-5.1.1.tgz#39273f584a234960158fd9a56ca79e739ae06062" + integrity sha512-UzoaIA0Aigo5lUvoUkIkSoHtUK5rBJh9e2vW3Eqct0jc/L8hcruBCz/jsXEvB1hDU1G3V94jo2EJqPcFKeSSeQ== dependencies: "@discoveryjs/json-ext" "0.5.7" acorn "^8.0.4" @@ -7774,7 +7762,6 @@ webpack-bundle-analyzer@^4.3.0: commander "^7.2.0" debounce "^1.2.1" escape-string-regexp "^4.0.0" - gzip-size "^6.0.0" html-escaper "^2.0.2" opener "^1.5.2" picocolors "^1.0.0" From 82e3e31277bf64e6233f7fb62ec7da99ef1ce0ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 18 Jan 2026 12:44:33 +0100 Subject: [PATCH 115/235] Only compress assets with a certain minimum size. Otherwise its quite inefficientg --- webpack.config.js | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/webpack.config.js b/webpack.config.js index 50bd3d39..08050353 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -169,22 +169,25 @@ for (const theme of AVAILABLE_THEMES) { if (Encore.isProduction()) { - Encore.addPlugin(new CompressionPlugin({ - filename: '[path][base].br', - algorithm: 'brotliCompress', - test: /\.(js|css|html|svg)$/, - compressionOptions: { - // zlib’s `level` option matches Brotli’s `BROTLI_PARAM_QUALITY` option. - level: 11, - }, - //threshold: 10240, - minRatio: 0.8, - deleteOriginalAssets: false, - })) + Encore + .addPlugin(new CompressionPlugin({ + filename: '[path][base].br', + algorithm: 'brotliCompress', + test: /\.(js|css|html|svg)$/, + compressionOptions: { + // zlib’s `level` option matches Brotli’s `BROTLI_PARAM_QUALITY` option. + level: 11, + }, + threshold: 10240, + minRatio: 0.8, + deleteOriginalAssets: false, + })) .addPlugin(new CompressionPlugin({ filename: '[path][base].gz', algorithm: 'gzip', + threshold: 10240, + minRatio: 0.8, test: /\.(js|css|html|svg)$/, deleteOriginalAssets: false, })) From 6402cfe619ad07b76ab69dc06e1c0c02152f0ed0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 18 Jan 2026 18:44:59 +0100 Subject: [PATCH 116/235] Enforce to use jquery 3 for now, as something seems to be broken with jquery 4 and webpack --- assets/js/app.js | 2 +- package.json | 3 +++ yarn.lock | 7 +------ 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/assets/js/app.js b/assets/js/app.js index c0550373..4dd39581 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -44,7 +44,7 @@ import "./register_events"; import "./tristate_checkboxes"; //Define jquery globally -window.$ = window.jQuery = require("jquery"); +global.$ = global.jQuery = require("jquery"); //Use the local WASM file for the ZXing library import { diff --git a/package.json b/package.json index 66e59737..583b21a2 100644 --- a/package.json +++ b/package.json @@ -73,5 +73,8 @@ "tom-select": "^2.1.0", "ts-loader": "^9.2.6", "typescript": "^5.7.2" + }, + "resolutions": { + "jquery": "^3.5.1" } } diff --git a/yarn.lock b/yarn.lock index 4bc1539e..159961b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4884,12 +4884,7 @@ jpeg-exif@^1.1.4: resolved "https://registry.yarnpkg.com/jpeg-exif/-/jpeg-exif-1.1.4.tgz#781a65b6cd74f62cb1c493511020f8d3577a1c2b" integrity sha512-a+bKEcCjtuW5WTdgeXFzswSrdqi0jk4XlEtZlx5A94wCoBpFjfFTbo/Tra5SpNCl/YFZPvcV1dJc+TAYeg6ROQ== -jquery@>=1.7: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-4.0.0.tgz#95c33ac29005ff72ec444c5ba1cf457e61404fbb" - integrity sha512-TXCHVR3Lb6TZdtw1l3RTLf8RBWVGexdxL6AC8/e0xZKEpBflBsjh9/8LXw+dkNFuOyW9B7iB3O1sP7hS0Kiacg== - -jquery@^3.5.1: +jquery@>=1.7, jquery@^3.5.1: version "3.7.1" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de" integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg== From a3d992a0164c82f3a55c7038e392c982fe73e21c Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Sun, 18 Jan 2026 18:50:38 +0100 Subject: [PATCH 117/235] Move frontend translations to separate domain to reduce bundle size (#1197) * Initial plan * Create frontend translation files and update configuration Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Fix missing semicolon in password strength controller Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Remove frontend-only translations from messages domain and set frontend as default domain Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> --- .../password_strength_estimate_controller.js | 2 +- assets/translator.js | 5 +- config/packages/ux_translator.yaml | 3 + translations/frontend.cs.xlf | 80 +++++++++++++++++++ translations/frontend.da.xlf | 80 +++++++++++++++++++ translations/frontend.de.xlf | 80 +++++++++++++++++++ translations/frontend.el.xlf | 28 +++++++ translations/frontend.en.xlf | 80 +++++++++++++++++++ translations/frontend.es.xlf | 80 +++++++++++++++++++ translations/frontend.fr.xlf | 44 ++++++++++ translations/frontend.hu.xlf | 80 +++++++++++++++++++ translations/frontend.it.xlf | 80 +++++++++++++++++++ translations/frontend.ja.xlf | 44 ++++++++++ translations/frontend.nl.xlf | 28 +++++++ translations/frontend.pl.xlf | 80 +++++++++++++++++++ translations/frontend.ru.xlf | 80 +++++++++++++++++++ translations/frontend.zh.xlf | 80 +++++++++++++++++++ translations/messages.cs.xlf | 40 ---------- translations/messages.da.xlf | 40 ---------- translations/messages.de.xlf | 40 ---------- translations/messages.en.xlf | 40 ---------- translations/messages.es.xlf | 40 ---------- translations/messages.fr.xlf | 10 --- translations/messages.hu.xlf | 40 ---------- translations/messages.it.xlf | 40 ---------- translations/messages.ja.xlf | 10 --- translations/messages.pl.xlf | 40 ---------- translations/messages.ru.xlf | 40 ---------- translations/messages.zh.xlf | 40 ---------- 29 files changed, 952 insertions(+), 422 deletions(-) create mode 100644 translations/frontend.cs.xlf create mode 100644 translations/frontend.da.xlf create mode 100644 translations/frontend.de.xlf create mode 100644 translations/frontend.el.xlf create mode 100644 translations/frontend.en.xlf create mode 100644 translations/frontend.es.xlf create mode 100644 translations/frontend.fr.xlf create mode 100644 translations/frontend.hu.xlf create mode 100644 translations/frontend.it.xlf create mode 100644 translations/frontend.ja.xlf create mode 100644 translations/frontend.nl.xlf create mode 100644 translations/frontend.pl.xlf create mode 100644 translations/frontend.ru.xlf create mode 100644 translations/frontend.zh.xlf diff --git a/assets/controllers/elements/password_strength_estimate_controller.js b/assets/controllers/elements/password_strength_estimate_controller.js index 16d18b55..d9cfbc87 100644 --- a/assets/controllers/elements/password_strength_estimate_controller.js +++ b/assets/controllers/elements/password_strength_estimate_controller.js @@ -96,7 +96,7 @@ export default class extends Controller { classes = "bg-warning badge-warning"; break; case 2: - text = trans("user.password_strength.medium") + text = trans("user.password_strength.medium"); classes = "bg-info badge-info"; break; case 3: diff --git a/assets/translator.js b/assets/translator.js index a0181a08..ad967488 100644 --- a/assets/translator.js +++ b/assets/translator.js @@ -15,4 +15,7 @@ const translator = createTranslator({ localeFallbacks, }); -export const { trans } = translator; +// Wrapper function with default domain set to 'frontend' +export const trans = (id, parameters = {}, domain = 'frontend', locale = null) => { + return translator.trans(id, parameters, domain, locale); +}; diff --git a/config/packages/ux_translator.yaml b/config/packages/ux_translator.yaml index c8453a50..46d37964 100644 --- a/config/packages/ux_translator.yaml +++ b/config/packages/ux_translator.yaml @@ -1,6 +1,9 @@ ux_translator: # The directory where the JavaScript translations are dumped dump_directory: '%kernel.project_dir%/var/translations' + # Only include the frontend translation domain in the JavaScript bundle + domains: + - 'frontend' when@prod: ux_translator: diff --git a/translations/frontend.cs.xlf b/translations/frontend.cs.xlf new file mode 100644 index 00000000..e13e5c4c --- /dev/null +++ b/translations/frontend.cs.xlf @@ -0,0 +1,80 @@ + + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:67 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + templates\AdminPages\EntityAdminBase.html.twig:9 + templates\base.html.twig:80 + templates\base.html.twig:179 + templates\base.html.twig:206 + templates\base.html.twig:237 + + + search.placeholder + Hledat + + + + + part.labelp + Díly + + + + + entity.select.group.new_not_added_to_DB + Nový (zatím nebyl přidán do DB) + + + + + user.password_strength.very_weak + Velmi slabé + + + + + user.password_strength.weak + Slabé + + + + + user.password_strength.medium + Střední + + + + + user.password_strength.strong + Silné + + + + + user.password_strength.very_strong + Velmi silné + + + + + Part-DB1\templates\_navbar_search.html.twig:68 + Part-DB1\templates\_navbar_search.html.twig:62 + + + search.submit + Jdi! + + + + diff --git a/translations/frontend.da.xlf b/translations/frontend.da.xlf new file mode 100644 index 00000000..8b5570fb --- /dev/null +++ b/translations/frontend.da.xlf @@ -0,0 +1,80 @@ + + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:67 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + templates\AdminPages\EntityAdminBase.html.twig:9 + templates\base.html.twig:80 + templates\base.html.twig:179 + templates\base.html.twig:206 + templates\base.html.twig:237 + + + search.placeholder + Søg + + + + + part.labelp + Komponenter + + + + + entity.select.group.new_not_added_to_DB + Ny (endnu ikke tilføjet til database) + + + + + 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 + + + + + Part-DB1\templates\_navbar_search.html.twig:68 + Part-DB1\templates\_navbar_search.html.twig:62 + + + search.submit + Kom nu! + + + + diff --git a/translations/frontend.de.xlf b/translations/frontend.de.xlf new file mode 100644 index 00000000..661ddb30 --- /dev/null +++ b/translations/frontend.de.xlf @@ -0,0 +1,80 @@ + + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:67 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + templates\AdminPages\EntityAdminBase.html.twig:9 + templates\base.html.twig:80 + templates\base.html.twig:179 + templates\base.html.twig:206 + templates\base.html.twig:237 + + + search.placeholder + Suche + + + + + part.labelp + Bauteile + + + + + entity.select.group.new_not_added_to_DB + Neu (noch nicht zur DB hinzugefügt) + + + + + user.password_strength.very_weak + Sehr schwach + + + + + user.password_strength.weak + Schwach + + + + + user.password_strength.medium + Mittel + + + + + user.password_strength.strong + Stark + + + + + user.password_strength.very_strong + Sehr stark + + + + + Part-DB1\templates\_navbar_search.html.twig:68 + Part-DB1\templates\_navbar_search.html.twig:62 + + + search.submit + Los! + + + + diff --git a/translations/frontend.el.xlf b/translations/frontend.el.xlf new file mode 100644 index 00000000..6d734823 --- /dev/null +++ b/translations/frontend.el.xlf @@ -0,0 +1,28 @@ + + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:67 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + templates\AdminPages\EntityAdminBase.html.twig:9 + templates\base.html.twig:80 + templates\base.html.twig:179 + templates\base.html.twig:206 + templates\base.html.twig:237 + + + search.placeholder + Αναζήτηση + + + + diff --git a/translations/frontend.en.xlf b/translations/frontend.en.xlf new file mode 100644 index 00000000..6e9fcadd --- /dev/null +++ b/translations/frontend.en.xlf @@ -0,0 +1,80 @@ + + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:67 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + templates\AdminPages\EntityAdminBase.html.twig:9 + templates\base.html.twig:80 + templates\base.html.twig:179 + templates\base.html.twig:206 + templates\base.html.twig:237 + + + search.placeholder + Search + + + + + part.labelp + Parts + + + + + entity.select.group.new_not_added_to_DB + New (not added to DB yet) + + + + + 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 + + + + + Part-DB1\templates\_navbar_search.html.twig:68 + Part-DB1\templates\_navbar_search.html.twig:62 + + + search.submit + Go! + + + + diff --git a/translations/frontend.es.xlf b/translations/frontend.es.xlf new file mode 100644 index 00000000..dc96b800 --- /dev/null +++ b/translations/frontend.es.xlf @@ -0,0 +1,80 @@ + + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:67 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + templates\AdminPages\EntityAdminBase.html.twig:9 + templates\base.html.twig:80 + templates\base.html.twig:179 + templates\base.html.twig:206 + templates\base.html.twig:237 + + + search.placeholder + Buscar + + + + + part.labelp + Componentes + + + + + entity.select.group.new_not_added_to_DB + Nuevo (no añadido a la base de datos) + + + + + user.password_strength.very_weak + Muy débil + + + + + user.password_strength.weak + Débil + + + + + user.password_strength.medium + Medio + + + + + user.password_strength.strong + Fuerte + + + + + user.password_strength.very_strong + Muy fuerte + + + + + Part-DB1\templates\_navbar_search.html.twig:68 + Part-DB1\templates\_navbar_search.html.twig:62 + + + search.submit + ¡Vamos! + + + + diff --git a/translations/frontend.fr.xlf b/translations/frontend.fr.xlf new file mode 100644 index 00000000..8363fabd --- /dev/null +++ b/translations/frontend.fr.xlf @@ -0,0 +1,44 @@ + + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:67 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + templates\AdminPages\EntityAdminBase.html.twig:9 + templates\base.html.twig:80 + templates\base.html.twig:179 + templates\base.html.twig:206 + templates\base.html.twig:237 + + + search.placeholder + Recherche + + + + + part.labelp + Composants + + + + + Part-DB1\templates\_navbar_search.html.twig:68 + Part-DB1\templates\_navbar_search.html.twig:62 + + + search.submit + Rechercher! + + + + diff --git a/translations/frontend.hu.xlf b/translations/frontend.hu.xlf new file mode 100644 index 00000000..c2d312bc --- /dev/null +++ b/translations/frontend.hu.xlf @@ -0,0 +1,80 @@ + + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:67 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + templates\AdminPages\EntityAdminBase.html.twig:9 + templates\base.html.twig:80 + templates\base.html.twig:179 + templates\base.html.twig:206 + templates\base.html.twig:237 + + + search.placeholder + Keresés + + + + + part.labelp + Alkatrészek + + + + + entity.select.group.new_not_added_to_DB + Új (még nem hozzáadva az adatbázishoz) + + + + + user.password_strength.very_weak + Nagyon gyenge + + + + + user.password_strength.weak + Gyenge + + + + + user.password_strength.medium + Közepes + + + + + user.password_strength.strong + Erős + + + + + user.password_strength.very_strong + Nagyon erős + + + + + Part-DB1\templates\_navbar_search.html.twig:68 + Part-DB1\templates\_navbar_search.html.twig:62 + + + search.submit + Indítás! + + + + diff --git a/translations/frontend.it.xlf b/translations/frontend.it.xlf new file mode 100644 index 00000000..9df0eee0 --- /dev/null +++ b/translations/frontend.it.xlf @@ -0,0 +1,80 @@ + + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:67 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + templates\AdminPages\EntityAdminBase.html.twig:9 + templates\base.html.twig:80 + templates\base.html.twig:179 + templates\base.html.twig:206 + templates\base.html.twig:237 + + + search.placeholder + Ricerca + + + + + part.labelp + Componenti + + + + + entity.select.group.new_not_added_to_DB + Nuovo (non ancora aggiunto al DB) + + + + + user.password_strength.very_weak + Molto debole + + + + + user.password_strength.weak + Debole + + + + + user.password_strength.medium + Media + + + + + user.password_strength.strong + Forte + + + + + user.password_strength.very_strong + Molto forte + + + + + Part-DB1\templates\_navbar_search.html.twig:68 + Part-DB1\templates\_navbar_search.html.twig:62 + + + search.submit + Cerca! + + + + diff --git a/translations/frontend.ja.xlf b/translations/frontend.ja.xlf new file mode 100644 index 00000000..91a60f0d --- /dev/null +++ b/translations/frontend.ja.xlf @@ -0,0 +1,44 @@ + + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:67 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + templates\AdminPages\EntityAdminBase.html.twig:9 + templates\base.html.twig:80 + templates\base.html.twig:179 + templates\base.html.twig:206 + templates\base.html.twig:237 + + + search.placeholder + 検索 + + + + + part.labelp + 部品 + + + + + Part-DB1\templates\_navbar_search.html.twig:68 + Part-DB1\templates\_navbar_search.html.twig:62 + + + search.submit + 検索 + + + + diff --git a/translations/frontend.nl.xlf b/translations/frontend.nl.xlf new file mode 100644 index 00000000..67514891 --- /dev/null +++ b/translations/frontend.nl.xlf @@ -0,0 +1,28 @@ + + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:67 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + templates\AdminPages\EntityAdminBase.html.twig:9 + templates\base.html.twig:80 + templates\base.html.twig:179 + templates\base.html.twig:206 + templates\base.html.twig:237 + + + search.placeholder + Zoeken + + + + diff --git a/translations/frontend.pl.xlf b/translations/frontend.pl.xlf new file mode 100644 index 00000000..31f59cf4 --- /dev/null +++ b/translations/frontend.pl.xlf @@ -0,0 +1,80 @@ + + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:67 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + templates\AdminPages\EntityAdminBase.html.twig:9 + templates\base.html.twig:80 + templates\base.html.twig:179 + templates\base.html.twig:206 + templates\base.html.twig:237 + + + search.placeholder + Szukaj + + + + + part.labelp + Komponenty + + + + + entity.select.group.new_not_added_to_DB + Nowość (jeszcze niedodana do DB) + + + + + user.password_strength.very_weak + Bardzo słabe + + + + + user.password_strength.weak + Słabe + + + + + user.password_strength.medium + Średnie + + + + + user.password_strength.strong + Mocne + + + + + user.password_strength.very_strong + Bardzo mocne + + + + + Part-DB1\templates\_navbar_search.html.twig:68 + Part-DB1\templates\_navbar_search.html.twig:62 + + + search.submit + Idź! + + + + diff --git a/translations/frontend.ru.xlf b/translations/frontend.ru.xlf new file mode 100644 index 00000000..f63367d9 --- /dev/null +++ b/translations/frontend.ru.xlf @@ -0,0 +1,80 @@ + + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:67 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + templates\AdminPages\EntityAdminBase.html.twig:9 + templates\base.html.twig:80 + templates\base.html.twig:179 + templates\base.html.twig:206 + templates\base.html.twig:237 + + + search.placeholder + Поиск + + + + + part.labelp + Компоненты + + + + + entity.select.group.new_not_added_to_DB + Новый (еще не добавленный в БД) + + + + + user.password_strength.very_weak + Очень слабый + + + + + user.password_strength.weak + Слабый + + + + + user.password_strength.medium + Средний + + + + + user.password_strength.strong + Сильный + + + + + user.password_strength.very_strong + Очень сильный + + + + + Part-DB1\templates\_navbar_search.html.twig:68 + Part-DB1\templates\_navbar_search.html.twig:62 + + + search.submit + Поехали! + + + + diff --git a/translations/frontend.zh.xlf b/translations/frontend.zh.xlf new file mode 100644 index 00000000..08817189 --- /dev/null +++ b/translations/frontend.zh.xlf @@ -0,0 +1,80 @@ + + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:67 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + templates\AdminPages\EntityAdminBase.html.twig:9 + templates\base.html.twig:80 + templates\base.html.twig:179 + templates\base.html.twig:206 + templates\base.html.twig:237 + + + search.placeholder + 搜索 + + + + + part.labelp + 部件 + + + + + entity.select.group.new_not_added_to_DB + 新建(尚未添加到数据库) + + + + + user.password_strength.very_weak + 非常弱 + + + + + user.password_strength.weak + + + + + + user.password_strength.medium + + + + + + user.password_strength.strong + + + + + + user.password_strength.very_strong + 非常强 + + + + + Part-DB1\templates\_navbar_search.html.twig:68 + Part-DB1\templates\_navbar_search.html.twig:62 + + + search.submit + GO! + + + + diff --git a/translations/messages.cs.xlf b/translations/messages.cs.xlf index 096bf247..298e1479 100644 --- a/translations/messages.cs.xlf +++ b/translations/messages.cs.xlf @@ -4025,16 +4025,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn Reg.Ex. shoda - - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - - - search.submit - Jdi! - - Part-DB1\templates\_sidebar.html.twig:37 @@ -11224,36 +11214,6 @@ Element 3 Není uveden žádný textový obsah! Popisky zůstanou prázdné. - - - user.password_strength.very_weak - Velmi slabé - - - - - user.password_strength.weak - Slabé - - - - - user.password_strength.medium - Střední - - - - - user.password_strength.strong - Silné - - - - - user.password_strength.very_strong - Velmi silné - - perm.users.impersonate diff --git a/translations/messages.da.xlf b/translations/messages.da.xlf index ca536a5d..8ed10c07 100644 --- a/translations/messages.da.xlf +++ b/translations/messages.da.xlf @@ -4032,16 +4032,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Reg. Ex. matching - - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - - - search.submit - Kom nu! - - Part-DB1\templates\_sidebar.html.twig:37 @@ -11256,36 +11246,6 @@ Oversættelsen 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 diff --git a/translations/messages.de.xlf b/translations/messages.de.xlf index 10c7e7a7..1930fbbe 100644 --- a/translations/messages.de.xlf +++ b/translations/messages.de.xlf @@ -4024,16 +4024,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Reg.Ex. Matching - - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - - - search.submit - Los! - - Part-DB1\templates\_sidebar.html.twig:37 @@ -11304,36 +11294,6 @@ Element 1 -> Element 1.2]]> Kein Textinhalt angegeben! Die erzeugten Label werden leer sein. - - - user.password_strength.very_weak - Sehr schwach - - - - - user.password_strength.weak - Schwach - - - - - user.password_strength.medium - Mittel - - - - - user.password_strength.strong - Stark - - - - - user.password_strength.very_strong - Sehr stark - - perm.users.impersonate diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index feea210a..f7f10146 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -3959,16 +3959,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Reg.Ex. Matching - - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - - - search.submit - Go! - - Part-DB1\templates\_sidebar.html.twig:37 @@ -11153,36 +11143,6 @@ Element 1 -> Element 1.2]]> 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 diff --git a/translations/messages.es.xlf b/translations/messages.es.xlf index 8e3057ac..a7c1f906 100644 --- a/translations/messages.es.xlf +++ b/translations/messages.es.xlf @@ -4024,16 +4024,6 @@ Subelementos serán desplazados hacia arriba. Reg.Ex. Matching - - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - - - search.submit - ¡Vamos! - - Part-DB1\templates\_sidebar.html.twig:37 @@ -11242,36 +11232,6 @@ Elemento 3 ¡No se ha dado contenido de texto! Las etiquetas permanecerán vacías. - - - user.password_strength.very_weak - Muy débil - - - - - user.password_strength.weak - Débil - - - - - user.password_strength.medium - Medio - - - - - user.password_strength.strong - Fuerte - - - - - user.password_strength.very_strong - Muy fuerte - - perm.users.impersonate diff --git a/translations/messages.fr.xlf b/translations/messages.fr.xlf index 7428ca38..9492a94d 100644 --- a/translations/messages.fr.xlf +++ b/translations/messages.fr.xlf @@ -4014,16 +4014,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia Reg.Ex. Correspondance - - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - - - search.submit - Rechercher! - - Part-DB1\templates\_sidebar.html.twig:2 diff --git a/translations/messages.hu.xlf b/translations/messages.hu.xlf index c06475ea..a7a56611 100644 --- a/translations/messages.hu.xlf +++ b/translations/messages.hu.xlf @@ -3952,16 +3952,6 @@ Reguláris kifejezés egyezés - - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - - - search.submit - Indítás! - - Part-DB1\templates\_sidebar.html.twig:37 @@ -11157,36 +11147,6 @@ Nincs szöveges tartalom megadva! A címkék üresek maradnak. - - - user.password_strength.very_weak - Nagyon gyenge - - - - - user.password_strength.weak - Gyenge - - - - - user.password_strength.medium - Közepes - - - - - user.password_strength.strong - Erős - - - - - user.password_strength.very_strong - Nagyon erős - - perm.users.impersonate diff --git a/translations/messages.it.xlf b/translations/messages.it.xlf index 372ca686..5de5b7e5 100644 --- a/translations/messages.it.xlf +++ b/translations/messages.it.xlf @@ -4026,16 +4026,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi Corrispondenza Reg.Ex. - - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - - - search.submit - Cerca! - - Part-DB1\templates\_sidebar.html.twig:37 @@ -11244,36 +11234,6 @@ Element 3 Nessun contenuto di testo specificato! Le etichette generate saranno vuote. - - - user.password_strength.very_weak - Molto debole - - - - - user.password_strength.weak - Debole - - - - - user.password_strength.medium - Media - - - - - user.password_strength.strong - Forte - - - - - user.password_strength.very_strong - Molto forte - - perm.users.impersonate diff --git a/translations/messages.ja.xlf b/translations/messages.ja.xlf index 569c7fc9..acb0fdd9 100644 --- a/translations/messages.ja.xlf +++ b/translations/messages.ja.xlf @@ -4014,16 +4014,6 @@ 正規表現で検索 - - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - - - search.submit - 検索 - - Part-DB1\templates\_sidebar.html.twig:2 diff --git a/translations/messages.pl.xlf b/translations/messages.pl.xlf index 4fd30d6e..7409e4df 100644 --- a/translations/messages.pl.xlf +++ b/translations/messages.pl.xlf @@ -4029,16 +4029,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo Dopasowywanie Reg.Ex. - - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - - - search.submit - Idź! - - Part-DB1\templates\_sidebar.html.twig:37 @@ -11247,36 +11237,6 @@ Element 3 Nie podano zawartości tekstowej! Etykiety pozostaną puste. - - - user.password_strength.very_weak - Bardzo słabe - - - - - user.password_strength.weak - Słabe - - - - - user.password_strength.medium - Średnie - - - - - user.password_strength.strong - Mocne - - - - - user.password_strength.very_strong - Bardzo mocne - - perm.users.impersonate diff --git a/translations/messages.ru.xlf b/translations/messages.ru.xlf index 3055fc31..c5100410 100644 --- a/translations/messages.ru.xlf +++ b/translations/messages.ru.xlf @@ -4035,16 +4035,6 @@ Соответствие рег.выраж. - - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - - - search.submit - Поехали! - - Part-DB1\templates\_sidebar.html.twig:37 @@ -11251,36 +11241,6 @@ Текстовое содержание не указано! Созданные ярлыки будут пустыми. - - - 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 diff --git a/translations/messages.zh.xlf b/translations/messages.zh.xlf index 5e1c8538..44678eb6 100644 --- a/translations/messages.zh.xlf +++ b/translations/messages.zh.xlf @@ -4033,16 +4033,6 @@ 正则匹配 - - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - - - search.submit - GO! - - Part-DB1\templates\_sidebar.html.twig:37 @@ -11250,36 +11240,6 @@ Element 3 没有文字内容。标签将保持为空 - - - 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 From 1923abecdfe96b12e5f36439b2624d62891dc704 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 18 Jan 2026 19:50:33 +0100 Subject: [PATCH 118/235] New translations messages.en.xlf (English) --- translations/messages.en.xlf | 40 ------------------------------------ 1 file changed, 40 deletions(-) diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 9c0e4e26..ec608571 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -3959,16 +3959,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Reg.Ex. Matching - - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - - - search.submit - Go! - - Part-DB1\templates\_sidebar.html.twig:37 @@ -11153,36 +11143,6 @@ Element 1 -> Element 1.2 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 From 86f53b2956d038ec0fdfdc0674cd75d45642dfb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 18 Jan 2026 21:58:54 +0100 Subject: [PATCH 119/235] Update Crowdin configuration file --- crowdin.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/crowdin.yml b/crowdin.yml index 7465d429..f1fc011d 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -5,3 +5,5 @@ files: translation: /translations/validators.%two_letters_code%.xlf - source: /translations/security.en.xlf translation: /translations/security.%two_letters_code%.xlf + - source: /translations/frontend.en.xlf + translation: /translations/frontend.%two_letters_code%.xlf From 006cfd7b5deb782a04ae12891ee1a335bbe52336 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 18 Jan 2026 22:00:37 +0100 Subject: [PATCH 120/235] New translations frontend.en.xlf (German) --- translations/frontend.de.xlf | 80 ++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 translations/frontend.de.xlf diff --git a/translations/frontend.de.xlf b/translations/frontend.de.xlf new file mode 100644 index 00000000..f08d0295 --- /dev/null +++ b/translations/frontend.de.xlf @@ -0,0 +1,80 @@ + + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:67 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + templates\AdminPages\EntityAdminBase.html.twig:9 + templates\base.html.twig:80 + templates\base.html.twig:179 + templates\base.html.twig:206 + templates\base.html.twig:237 + + + search.placeholder + Suche + + + + + part.labelp + Bauteile + + + + + entity.select.group.new_not_added_to_DB + Neu (noch nicht zur DB hinzugefügt) + + + + + user.password_strength.very_weak + Sehr schwach + + + + + user.password_strength.weak + Schwach + + + + + user.password_strength.medium + Mittel + + + + + user.password_strength.strong + Stark + + + + + user.password_strength.very_strong + Sehr stark + + + + + Part-DB1\templates\_navbar_search.html.twig:68 + Part-DB1\templates\_navbar_search.html.twig:62 + + + search.submit + Los! + + + + From 4636aa4e0d046fffa0aeee17d8f3d2c1bddfb679 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 18 Jan 2026 22:00:38 +0100 Subject: [PATCH 121/235] New translations frontend.en.xlf (Hungarian) --- translations/frontend.hu.xlf | 80 ++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 translations/frontend.hu.xlf diff --git a/translations/frontend.hu.xlf b/translations/frontend.hu.xlf new file mode 100644 index 00000000..123d0c46 --- /dev/null +++ b/translations/frontend.hu.xlf @@ -0,0 +1,80 @@ + + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:67 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + templates\AdminPages\EntityAdminBase.html.twig:9 + templates\base.html.twig:80 + templates\base.html.twig:179 + templates\base.html.twig:206 + templates\base.html.twig:237 + + + search.placeholder + Keresés + + + + + part.labelp + Alkatrészek + + + + + entity.select.group.new_not_added_to_DB + Új (még nem hozzáadva az adatbázishoz) + + + + + user.password_strength.very_weak + Nagyon gyenge + + + + + user.password_strength.weak + Gyenge + + + + + user.password_strength.medium + Közepes + + + + + user.password_strength.strong + Erős + + + + + user.password_strength.very_strong + Nagyon erős + + + + + Part-DB1\templates\_navbar_search.html.twig:68 + Part-DB1\templates\_navbar_search.html.twig:62 + + + search.submit + Indítás! + + + + From 131023da67d5945a2f22dfa232330860405ba5d3 Mon Sep 17 00:00:00 2001 From: swdee Date: Mon, 19 Jan 2026 10:14:17 +1300 Subject: [PATCH 122/235] change barcode scan form to use requestSubmit() to fix CSRF token not being generated on submission (#1191) --- assets/controllers/pages/barcode_scan_controller.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/controllers/pages/barcode_scan_controller.js b/assets/controllers/pages/barcode_scan_controller.js index 368fef43..200dd2a7 100644 --- a/assets/controllers/pages/barcode_scan_controller.js +++ b/assets/controllers/pages/barcode_scan_controller.js @@ -70,6 +70,6 @@ export default class extends Controller { //Put our decoded Text into the input box document.getElementById('scan_dialog_input').value = decodedText; //Submit form - document.getElementById('scan_dialog_form').submit(); + document.getElementById('scan_dialog_form').requestSubmit(); } -} \ No newline at end of file +} From 09cc2ba8ffaaa8da2b376efd3f5817ac19564031 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 18 Jan 2026 22:24:17 +0100 Subject: [PATCH 123/235] Use requestSubmit() in form cleanup controller to avoid CSFR issues See #1191 --- assets/controllers/helpers/form_cleanup_controller.js | 4 ++-- assets/js/webauthn_tfa.js | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/assets/controllers/helpers/form_cleanup_controller.js b/assets/controllers/helpers/form_cleanup_controller.js index 23dac950..d554371d 100644 --- a/assets/controllers/helpers/form_cleanup_controller.js +++ b/assets/controllers/helpers/form_cleanup_controller.js @@ -62,6 +62,6 @@ export default class extends Controller { element.disabled = true; } - form.submit(); + form.requestSubmit(); } -} \ No newline at end of file +} diff --git a/assets/js/webauthn_tfa.js b/assets/js/webauthn_tfa.js index 4d54efc0..440cb006 100644 --- a/assets/js/webauthn_tfa.js +++ b/assets/js/webauthn_tfa.js @@ -198,6 +198,7 @@ class WebauthnTFA { { const resultField = document.getElementById('_auth_code'); resultField.value = JSON.stringify(data) + //requestSubmit() do not work here, probably because the submit is considered invalid. But as we do not use CSFR tokens, it should be fine. form.submit(); } @@ -232,4 +233,4 @@ class WebauthnTFA { } } -window.webauthnTFA = new WebauthnTFA(); \ No newline at end of file +window.webauthnTFA = new WebauthnTFA(); From af81e15ef2bf66ebd6b90c3b0a8f310ebbd61fad Mon Sep 17 00:00:00 2001 From: Lukas Runge Date: Sun, 18 Jan 2026 22:35:37 +0100 Subject: [PATCH 124/235] Set "Excluded from sim" to false by default for new categories to avoid annoying symbol at kicad parts. --- src/Entity/EDA/EDACategoryInfo.php | 2 +- src/Services/EDA/KiCadHelper.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Entity/EDA/EDACategoryInfo.php b/src/Entity/EDA/EDACategoryInfo.php index 0163dfb3..40b3ff64 100644 --- a/src/Entity/EDA/EDACategoryInfo.php +++ b/src/Entity/EDA/EDACategoryInfo.php @@ -58,7 +58,7 @@ class EDACategoryInfo /** @var bool|null If this is set to true, then this part will be excluded in the simulation */ #[Column(type: Types::BOOLEAN, nullable: true)] #[Groups(['full', 'category:read', 'category:write', 'import'])] - private ?bool $exclude_from_sim = true; + private ?bool $exclude_from_sim = null; /** @var string|null The KiCAD schematic symbol, which should be used (the path to the library) */ #[Column(type: Types::STRING, nullable: true)] diff --git a/src/Services/EDA/KiCadHelper.php b/src/Services/EDA/KiCadHelper.php index 4b7c5e5a..3a613fe7 100644 --- a/src/Services/EDA/KiCadHelper.php +++ b/src/Services/EDA/KiCadHelper.php @@ -189,7 +189,7 @@ class KiCadHelper "symbolIdStr" => $part->getEdaInfo()->getKicadSymbol() ?? $part->getCategory()?->getEdaInfo()->getKicadSymbol() ?? "", "exclude_from_bom" => $this->boolToKicadBool($part->getEdaInfo()->getExcludeFromBom() ?? $part->getCategory()?->getEdaInfo()->getExcludeFromBom() ?? false), "exclude_from_board" => $this->boolToKicadBool($part->getEdaInfo()->getExcludeFromBoard() ?? $part->getCategory()?->getEdaInfo()->getExcludeFromBoard() ?? false), - "exclude_from_sim" => $this->boolToKicadBool($part->getEdaInfo()->getExcludeFromSim() ?? $part->getCategory()?->getEdaInfo()->getExcludeFromSim() ?? true), + "exclude_from_sim" => $this->boolToKicadBool($part->getEdaInfo()->getExcludeFromSim() ?? $part->getCategory()?->getEdaInfo()->getExcludeFromSim() ?? false), "fields" => [] ]; From dd6c20780b8696fe058220d8f69bcecc5fb53ed0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 18 Jan 2026 22:53:37 +0100 Subject: [PATCH 125/235] Ensure that the ids passed to DBElementRepository::findByIDInMatchingOrder are all ints This might help to diagnose #1188 --- src/Repository/DBElementRepository.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/Repository/DBElementRepository.php b/src/Repository/DBElementRepository.php index 2437e848..f737d91d 100644 --- a/src/Repository/DBElementRepository.php +++ b/src/Repository/DBElementRepository.php @@ -109,6 +109,13 @@ class DBElementRepository extends EntityRepository return []; } + //Ensure that all IDs are integers and none is null + foreach ($ids as $id) { + if (!is_int($id)) { + throw new \InvalidArgumentException('Non-integer ID given to findByIDInMatchingOrder: ' . var_export($id, true)); + } + } + $cache_key = implode(',', $ids); //Check if the result is already cached From cd7dbd5f7b66a6819537b45b6b6e84357d8cfbae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 18 Jan 2026 22:59:35 +0100 Subject: [PATCH 126/235] Bumped version to 2.5.0 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 197c4d5c..437459cd 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.4.0 +2.5.0 From d0b827c2c38702da67ab84ff347669d67627d134 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 18 Jan 2026 23:44:11 +0100 Subject: [PATCH 127/235] Do not use the wrong language for trees when no user is logged in --- src/Services/Cache/UserCacheKeyGenerator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Services/Cache/UserCacheKeyGenerator.php b/src/Services/Cache/UserCacheKeyGenerator.php index ac5487a5..b9ff57c4 100644 --- a/src/Services/Cache/UserCacheKeyGenerator.php +++ b/src/Services/Cache/UserCacheKeyGenerator.php @@ -57,7 +57,7 @@ class UserCacheKeyGenerator //If the user is null, then treat it as anonymous user. //When the anonymous user is passed as user then use this path too. if (!($user instanceof User) || User::ID_ANONYMOUS === $user->getID()) { - return 'user$_'.User::ID_ANONYMOUS; + return 'user$_'.User::ID_ANONYMOUS . '_'.$locale; } //Use the unique user id and the locale to generate the key From 766ba07105f85ddaef56b34955a05fadc96b0ded Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 18 Jan 2026 23:48:04 +0100 Subject: [PATCH 128/235] Properly disable the id search by default Follow up on PR #1184 --- templates/components/search.macro.html.twig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/components/search.macro.html.twig b/templates/components/search.macro.html.twig index a324ad35..90c01876 100644 --- a/templates/components/search.macro.html.twig +++ b/templates/components/search.macro.html.twig @@ -12,7 +12,7 @@
    - +
    @@ -106,4 +106,4 @@ {{ _self.settings_drodown(is_navbar) }} {% endif %} -{% endmacro %} \ No newline at end of file +{% endmacro %} From aa9aedc5fd7d8a291fae9bfc1dfc100ce2030eb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 25 Jan 2026 00:38:11 +0100 Subject: [PATCH 129/235] Prevent the extra column of the log data tables to be ordered This makes not much sense because its JSON data under the hood, and PostgreSQL errors when trying to do it. --- src/DataTables/LogDataTable.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/DataTables/LogDataTable.php b/src/DataTables/LogDataTable.php index f6604279..2c37767b 100644 --- a/src/DataTables/LogDataTable.php +++ b/src/DataTables/LogDataTable.php @@ -208,6 +208,7 @@ class LogDataTable implements DataTableTypeInterface $dataTable->add('extra', LogEntryExtraColumn::class, [ 'label' => 'log.extra', + 'orderable' => false, //Sorting the JSON column makes no sense: MySQL/Sqlite does it via the string representation, PostgreSQL errors out ]); $dataTable->add('timeTravel', IconLinkColumn::class, [ From 3975a3ba617690f1f52faf1e911672be5dc06bf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 25 Jan 2026 00:51:00 +0100 Subject: [PATCH 130/235] Updated composer dependencies We can now use the most recent symfony property-info versions now again, as the bug was fixed in upstream --- composer.json | 2 +- composer.lock | 887 ++++++++--------- config/reference.php | 2226 +++++++++++++++++++++--------------------- 3 files changed, 1559 insertions(+), 1556 deletions(-) diff --git a/composer.json b/composer.json index bb41a95d..f7a181a8 100644 --- a/composer.json +++ b/composer.json @@ -79,7 +79,7 @@ "symfony/string": "7.4.*", "symfony/translation": "7.4.*", "symfony/twig-bundle": "7.4.*", - "symfony/type-info": "7.4.0", + "symfony/type-info": "7.4.*", "symfony/ux-translator": "^2.32.0", "symfony/ux-turbo": "^2.0", "symfony/validator": "7.4.*", diff --git a/composer.lock b/composer.lock index fd3bc318..7faff993 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "fc3801df89de9d24084329263c36b0d6", + "content-hash": "ec69ea04bcf5c1ebd8bb0280a5bb9565", "packages": [ { "name": "amphp/amp", @@ -968,7 +968,7 @@ }, { "name": "api-platform/doctrine-common", - "version": "v4.2.13", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/doctrine-common.git", @@ -1052,22 +1052,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/doctrine-common/tree/v4.2.13" + "source": "https://github.com/api-platform/doctrine-common/tree/v4.2.14" }, "time": "2026-01-12T13:36:15+00:00" }, { "name": "api-platform/doctrine-orm", - "version": "v4.2.13", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/doctrine-orm.git", - "reference": "0a16719be88909fd0a3d1a49c75691c0dcbad254" + "reference": "7a7c5cb7261ead50481a9a2d8ef721e21ea97945" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/doctrine-orm/zipball/0a16719be88909fd0a3d1a49c75691c0dcbad254", - "reference": "0a16719be88909fd0a3d1a49c75691c0dcbad254", + "url": "https://api.github.com/repos/api-platform/doctrine-orm/zipball/7a7c5cb7261ead50481a9a2d8ef721e21ea97945", + "reference": "7a7c5cb7261ead50481a9a2d8ef721e21ea97945", "shasum": "" }, "require": { @@ -1139,13 +1139,13 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/doctrine-orm/tree/v4.2.13" + "source": "https://github.com/api-platform/doctrine-orm/tree/v4.2.14" }, - "time": "2026-01-12T13:36:15+00:00" + "time": "2026-01-23T14:24:03+00:00" }, { "name": "api-platform/documentation", - "version": "v4.2.13", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/documentation.git", @@ -1202,13 +1202,13 @@ ], "description": "API Platform documentation controller.", "support": { - "source": "https://github.com/api-platform/documentation/tree/v4.2.13" + "source": "https://github.com/api-platform/documentation/tree/v4.2.14" }, "time": "2025-12-27T22:15:57+00:00" }, { "name": "api-platform/http-cache", - "version": "v4.2.13", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/http-cache.git", @@ -1282,13 +1282,13 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/http-cache/tree/v4.2.13" + "source": "https://github.com/api-platform/http-cache/tree/v4.2.14" }, "time": "2026-01-12T13:36:15+00:00" }, { "name": "api-platform/hydra", - "version": "v4.2.13", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/hydra.git", @@ -1369,13 +1369,13 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/hydra/tree/v4.2.13" + "source": "https://github.com/api-platform/hydra/tree/v4.2.14" }, "time": "2025-12-27T22:15:57+00:00" }, { "name": "api-platform/json-api", - "version": "v4.2.13", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/json-api.git", @@ -1451,22 +1451,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/json-api/tree/v4.2.13" + "source": "https://github.com/api-platform/json-api/tree/v4.2.14" }, "time": "2025-12-27T22:15:57+00:00" }, { "name": "api-platform/json-schema", - "version": "v4.2.13", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/json-schema.git", - "reference": "3fd511bce06c58a3d52f24372b80ddc6700cf0e3" + "reference": "b69ebff7277655c1eb91bc0092fad4bc80aed4fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/json-schema/zipball/3fd511bce06c58a3d52f24372b80ddc6700cf0e3", - "reference": "3fd511bce06c58a3d52f24372b80ddc6700cf0e3", + "url": "https://api.github.com/repos/api-platform/json-schema/zipball/b69ebff7277655c1eb91bc0092fad4bc80aed4fb", + "reference": "b69ebff7277655c1eb91bc0092fad4bc80aed4fb", "shasum": "" }, "require": { @@ -1532,13 +1532,13 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/json-schema/tree/v4.2.13" + "source": "https://github.com/api-platform/json-schema/tree/v4.2.14" }, - "time": "2026-01-12T13:36:15+00:00" + "time": "2026-01-23T14:31:09+00:00" }, { "name": "api-platform/jsonld", - "version": "v4.2.13", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/jsonld.git", @@ -1612,13 +1612,13 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/jsonld/tree/v4.2.13" + "source": "https://github.com/api-platform/jsonld/tree/v4.2.14" }, "time": "2026-01-12T13:36:15+00:00" }, { "name": "api-platform/metadata", - "version": "v4.2.13", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/metadata.git", @@ -1710,22 +1710,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/metadata/tree/v4.2.13" + "source": "https://github.com/api-platform/metadata/tree/v4.2.14" }, "time": "2026-01-12T13:36:15+00:00" }, { "name": "api-platform/openapi", - "version": "v4.2.13", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/openapi.git", - "reference": "3600d57bf2729c8fa82d831edbdd21244037ee1b" + "reference": "39ed78187a4a8e7c1c1fc9b5a3ef3913e3e914e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/openapi/zipball/3600d57bf2729c8fa82d831edbdd21244037ee1b", - "reference": "3600d57bf2729c8fa82d831edbdd21244037ee1b", + "url": "https://api.github.com/repos/api-platform/openapi/zipball/39ed78187a4a8e7c1c1fc9b5a3ef3913e3e914e3", + "reference": "39ed78187a4a8e7c1c1fc9b5a3ef3913e3e914e3", "shasum": "" }, "require": { @@ -1800,13 +1800,13 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/openapi/tree/v4.2.13" + "source": "https://github.com/api-platform/openapi/tree/v4.2.14" }, - "time": "2026-01-16T15:43:25+00:00" + "time": "2026-01-17T19:34:53+00:00" }, { "name": "api-platform/serializer", - "version": "v4.2.13", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/serializer.git", @@ -1893,13 +1893,13 @@ "serializer" ], "support": { - "source": "https://github.com/api-platform/serializer/tree/v4.2.13" + "source": "https://github.com/api-platform/serializer/tree/v4.2.14" }, "time": "2026-01-12T13:36:15+00:00" }, { "name": "api-platform/state", - "version": "v4.2.13", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/state.git", @@ -1990,22 +1990,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/state/tree/v4.2.13" + "source": "https://github.com/api-platform/state/tree/v4.2.14" }, "time": "2026-01-12T13:36:15+00:00" }, { "name": "api-platform/symfony", - "version": "v4.2.13", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/symfony.git", - "reference": "4ff4ef66768fa2b9d7d124a2096b095bad0289d4" + "reference": "31539dc26bd88f54e43d2d8a24613ff988307da1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/symfony/zipball/4ff4ef66768fa2b9d7d124a2096b095bad0289d4", - "reference": "4ff4ef66768fa2b9d7d124a2096b095bad0289d4", + "url": "https://api.github.com/repos/api-platform/symfony/zipball/31539dc26bd88f54e43d2d8a24613ff988307da1", + "reference": "31539dc26bd88f54e43d2d8a24613ff988307da1", "shasum": "" }, "require": { @@ -2118,13 +2118,13 @@ "symfony" ], "support": { - "source": "https://github.com/api-platform/symfony/tree/v4.2.13" + "source": "https://github.com/api-platform/symfony/tree/v4.2.14" }, - "time": "2026-01-16T16:29:22+00:00" + "time": "2026-01-23T14:24:03+00:00" }, { "name": "api-platform/validator", - "version": "v4.2.13", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/validator.git", @@ -2194,7 +2194,7 @@ "validator" ], "support": { - "source": "https://github.com/api-platform/validator/tree/v4.2.13" + "source": "https://github.com/api-platform/validator/tree/v4.2.14" }, "time": "2026-01-16T13:22:15+00:00" }, @@ -4083,16 +4083,16 @@ }, { "name": "dompdf/php-font-lib", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/dompdf/php-font-lib.git", - "reference": "6137b7d4232b7f16c882c75e4ca3991dbcf6fe2d" + "reference": "a6e9a688a2a80016ac080b97be73d3e10c444c9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/6137b7d4232b7f16c882c75e4ca3991dbcf6fe2d", - "reference": "6137b7d4232b7f16c882c75e4ca3991dbcf6fe2d", + "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/a6e9a688a2a80016ac080b97be73d3e10c444c9a", + "reference": "a6e9a688a2a80016ac080b97be73d3e10c444c9a", "shasum": "" }, "require": { @@ -4100,7 +4100,7 @@ "php": "^7.1 || ^8.0" }, "require-dev": { - "symfony/phpunit-bridge": "^3 || ^4 || ^5 || ^6" + "phpunit/phpunit": "^7.5 || ^8 || ^9 || ^10 || ^11 || ^12" }, "type": "library", "autoload": { @@ -4122,9 +4122,9 @@ "homepage": "https://github.com/dompdf/php-font-lib", "support": { "issues": "https://github.com/dompdf/php-font-lib/issues", - "source": "https://github.com/dompdf/php-font-lib/tree/1.0.1" + "source": "https://github.com/dompdf/php-font-lib/tree/1.0.2" }, - "time": "2024-12-02T14:37:59+00:00" + "time": "2026-01-20T14:10:26+00:00" }, { "name": "dompdf/php-svg-lib", @@ -10012,16 +10012,16 @@ }, { "name": "spomky-labs/otphp", - "version": "11.4.1", + "version": "11.4.2", "source": { "type": "git", "url": "https://github.com/Spomky-Labs/otphp.git", - "reference": "126c99b6cbbc18992cf3fba3b87931ba4e312482" + "reference": "2a1b503fd1c1a5c751ab3c5cd37f2d2d26ab74ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/otphp/zipball/126c99b6cbbc18992cf3fba3b87931ba4e312482", - "reference": "126c99b6cbbc18992cf3fba3b87931ba4e312482", + "url": "https://api.github.com/repos/Spomky-Labs/otphp/zipball/2a1b503fd1c1a5c751ab3c5cd37f2d2d26ab74ad", + "reference": "2a1b503fd1c1a5c751ab3c5cd37f2d2d26ab74ad", "shasum": "" }, "require": { @@ -10066,7 +10066,7 @@ ], "support": { "issues": "https://github.com/Spomky-Labs/otphp/issues", - "source": "https://github.com/Spomky-Labs/otphp/tree/11.4.1" + "source": "https://github.com/Spomky-Labs/otphp/tree/11.4.2" }, "funding": [ { @@ -10078,7 +10078,7 @@ "type": "patreon" } ], - "time": "2026-01-05T13:20:36+00:00" + "time": "2026-01-23T10:53:01+00:00" }, { "name": "spomky-labs/pki-framework", @@ -10217,16 +10217,16 @@ }, { "name": "symfony/asset", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "0f7bccb9ffa1f373cbd659774d90629b2773464f" + "reference": "a6f49cf087a1fcfe7130b9b604a8a2b878b06c40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/0f7bccb9ffa1f373cbd659774d90629b2773464f", - "reference": "0f7bccb9ffa1f373cbd659774d90629b2773464f", + "url": "https://api.github.com/repos/symfony/asset/zipball/a6f49cf087a1fcfe7130b9b604a8a2b878b06c40", + "reference": "a6f49cf087a1fcfe7130b9b604a8a2b878b06c40", "shasum": "" }, "require": { @@ -10266,7 +10266,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/v7.4.0" + "source": "https://github.com/symfony/asset/tree/v7.4.4" }, "funding": [ { @@ -10286,20 +10286,20 @@ "type": "tidelift" } ], - "time": "2025-08-04T07:05:15+00:00" + "time": "2026-01-13T10:40:19+00:00" }, { "name": "symfony/cache", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "642117d18bc56832e74b68235359ccefab03dd11" + "reference": "67ca35eaa52dd9c1f07a42d459b5a2544dd29b34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/642117d18bc56832e74b68235359ccefab03dd11", - "reference": "642117d18bc56832e74b68235359ccefab03dd11", + "url": "https://api.github.com/repos/symfony/cache/zipball/67ca35eaa52dd9c1f07a42d459b5a2544dd29b34", + "reference": "67ca35eaa52dd9c1f07a42d459b5a2544dd29b34", "shasum": "" }, "require": { @@ -10370,7 +10370,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.4.3" + "source": "https://github.com/symfony/cache/tree/v7.4.4" }, "funding": [ { @@ -10390,7 +10390,7 @@ "type": "tidelift" } ], - "time": "2025-12-28T10:45:24+00:00" + "time": "2026-01-23T12:59:19+00:00" }, { "name": "symfony/cache-contracts", @@ -10548,16 +10548,16 @@ }, { "name": "symfony/config", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "800ce889e358a53a9678b3212b0c8cecd8c6aace" + "reference": "4275b53b8ab0cf37f48bf273dc2285c8178efdfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/800ce889e358a53a9678b3212b0c8cecd8c6aace", - "reference": "800ce889e358a53a9678b3212b0c8cecd8c6aace", + "url": "https://api.github.com/repos/symfony/config/zipball/4275b53b8ab0cf37f48bf273dc2285c8178efdfb", + "reference": "4275b53b8ab0cf37f48bf273dc2285c8178efdfb", "shasum": "" }, "require": { @@ -10603,7 +10603,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/v7.4.3" + "source": "https://github.com/symfony/config/tree/v7.4.4" }, "funding": [ { @@ -10623,20 +10623,20 @@ "type": "tidelift" } ], - "time": "2025-12-23T14:24:27+00:00" + "time": "2026-01-13T11:36:38+00:00" }, { "name": "symfony/console", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "732a9ca6cd9dfd940c639062d5edbde2f6727fb6" + "reference": "41e38717ac1dd7a46b6bda7d6a82af2d98a78894" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/732a9ca6cd9dfd940c639062d5edbde2f6727fb6", - "reference": "732a9ca6cd9dfd940c639062d5edbde2f6727fb6", + "url": "https://api.github.com/repos/symfony/console/zipball/41e38717ac1dd7a46b6bda7d6a82af2d98a78894", + "reference": "41e38717ac1dd7a46b6bda7d6a82af2d98a78894", "shasum": "" }, "require": { @@ -10701,7 +10701,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.4.3" + "source": "https://github.com/symfony/console/tree/v7.4.4" }, "funding": [ { @@ -10721,7 +10721,7 @@ "type": "tidelift" } ], - "time": "2025-12-23T14:50:43+00:00" + "time": "2026-01-13T11:36:38+00:00" }, { "name": "symfony/css-selector", @@ -10794,16 +10794,16 @@ }, { "name": "symfony/dependency-injection", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "54122901b6d772e94f1e71a75e0533bc16563499" + "reference": "dbbaba1cc65ccfa29106e931f68b51cd2f4b32bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/54122901b6d772e94f1e71a75e0533bc16563499", - "reference": "54122901b6d772e94f1e71a75e0533bc16563499", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/dbbaba1cc65ccfa29106e931f68b51cd2f4b32bb", + "reference": "dbbaba1cc65ccfa29106e931f68b51cd2f4b32bb", "shasum": "" }, "require": { @@ -10854,7 +10854,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/v7.4.3" + "source": "https://github.com/symfony/dependency-injection/tree/v7.4.4" }, "funding": [ { @@ -10874,7 +10874,7 @@ "type": "tidelift" } ], - "time": "2025-12-28T10:55:46+00:00" + "time": "2026-01-23T12:59:19+00:00" }, { "name": "symfony/deprecation-contracts", @@ -10945,16 +10945,16 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "bd338ba08f5c47fe77e0a15e85ec3c5d070f9ceb" + "reference": "3408d9fb7bda6c8db9f3e4099863c9017bcbc62d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/bd338ba08f5c47fe77e0a15e85ec3c5d070f9ceb", - "reference": "bd338ba08f5c47fe77e0a15e85ec3c5d070f9ceb", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/3408d9fb7bda6c8db9f3e4099863c9017bcbc62d", + "reference": "3408d9fb7bda6c8db9f3e4099863c9017bcbc62d", "shasum": "" }, "require": { @@ -11034,7 +11034,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v7.4.3" + "source": "https://github.com/symfony/doctrine-bridge/tree/v7.4.4" }, "funding": [ { @@ -11054,20 +11054,20 @@ "type": "tidelift" } ], - "time": "2025-12-22T13:47:05+00:00" + "time": "2026-01-20T16:42:42+00:00" }, { "name": "symfony/dom-crawler", - "version": "v7.4.1", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "0c5e8f20c74c78172a8ee72b125909b505033597" + "reference": "71fd6a82fc357c8b5de22f78b228acfc43dee965" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/0c5e8f20c74c78172a8ee72b125909b505033597", - "reference": "0c5e8f20c74c78172a8ee72b125909b505033597", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/71fd6a82fc357c8b5de22f78b228acfc43dee965", + "reference": "71fd6a82fc357c8b5de22f78b228acfc43dee965", "shasum": "" }, "require": { @@ -11106,7 +11106,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v7.4.1" + "source": "https://github.com/symfony/dom-crawler/tree/v7.4.4" }, "funding": [ { @@ -11126,7 +11126,7 @@ "type": "tidelift" } ], - "time": "2025-12-06T15:47:47+00:00" + "time": "2026-01-05T08:47:25+00:00" }, { "name": "symfony/dotenv", @@ -11208,16 +11208,16 @@ }, { "name": "symfony/error-handler", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "48be2b0653594eea32dcef130cca1c811dcf25c2" + "reference": "8da531f364ddfee53e36092a7eebbbd0b775f6b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/48be2b0653594eea32dcef130cca1c811dcf25c2", - "reference": "48be2b0653594eea32dcef130cca1c811dcf25c2", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/8da531f364ddfee53e36092a7eebbbd0b775f6b8", + "reference": "8da531f364ddfee53e36092a7eebbbd0b775f6b8", "shasum": "" }, "require": { @@ -11266,7 +11266,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/v7.4.0" + "source": "https://github.com/symfony/error-handler/tree/v7.4.4" }, "funding": [ { @@ -11286,20 +11286,20 @@ "type": "tidelift" } ], - "time": "2025-11-05T14:29:59+00:00" + "time": "2026-01-20T16:42:42+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "9dddcddff1ef974ad87b3708e4b442dc38b2261d" + "reference": "dc2c0eba1af673e736bb851d747d266108aea746" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9dddcddff1ef974ad87b3708e4b442dc38b2261d", - "reference": "9dddcddff1ef974ad87b3708e4b442dc38b2261d", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/dc2c0eba1af673e736bb851d747d266108aea746", + "reference": "dc2c0eba1af673e736bb851d747d266108aea746", "shasum": "" }, "require": { @@ -11351,7 +11351,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/v7.4.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.4" }, "funding": [ { @@ -11371,7 +11371,7 @@ "type": "tidelift" } ], - "time": "2025-10-28T09:38:46+00:00" + "time": "2026-01-05T11:45:34+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -11451,16 +11451,16 @@ }, { "name": "symfony/expression-language", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "8b9bbbb8c71f79a09638f6ea77c531e511139efa" + "reference": "f3a6497eb6573e185f2ec41cd3b3f0cd68ddf667" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/8b9bbbb8c71f79a09638f6ea77c531e511139efa", - "reference": "8b9bbbb8c71f79a09638f6ea77c531e511139efa", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/f3a6497eb6573e185f2ec41cd3b3f0cd68ddf667", + "reference": "f3a6497eb6573e185f2ec41cd3b3f0cd68ddf667", "shasum": "" }, "require": { @@ -11495,7 +11495,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v7.4.0" + "source": "https://github.com/symfony/expression-language/tree/v7.4.4" }, "funding": [ { @@ -11515,7 +11515,7 @@ "type": "tidelift" } ], - "time": "2025-11-12T15:39:26+00:00" + "time": "2026-01-05T08:47:25+00:00" }, { "name": "symfony/filesystem", @@ -11589,16 +11589,16 @@ }, { "name": "symfony/finder", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "fffe05569336549b20a1be64250b40516d6e8d06" + "reference": "01b24a145bbeaa7141e75887ec904c34a6728a5f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/fffe05569336549b20a1be64250b40516d6e8d06", - "reference": "fffe05569336549b20a1be64250b40516d6e8d06", + "url": "https://api.github.com/repos/symfony/finder/zipball/01b24a145bbeaa7141e75887ec904c34a6728a5f", + "reference": "01b24a145bbeaa7141e75887ec904c34a6728a5f", "shasum": "" }, "require": { @@ -11633,7 +11633,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.4.3" + "source": "https://github.com/symfony/finder/tree/v7.4.4" }, "funding": [ { @@ -11653,7 +11653,7 @@ "type": "tidelift" } ], - "time": "2025-12-23T14:50:43+00:00" + "time": "2026-01-12T12:19:02+00:00" }, { "name": "symfony/flex", @@ -11730,16 +11730,16 @@ }, { "name": "symfony/form", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "f7e147d3e57198122568f17909bc85266b0b2592" + "reference": "264fc873f01376216f0b884ecc81b34b830e25a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/f7e147d3e57198122568f17909bc85266b0b2592", - "reference": "f7e147d3e57198122568f17909bc85266b0b2592", + "url": "https://api.github.com/repos/symfony/form/zipball/264fc873f01376216f0b884ecc81b34b830e25a8", + "reference": "264fc873f01376216f0b884ecc81b34b830e25a8", "shasum": "" }, "require": { @@ -11809,7 +11809,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v7.4.3" + "source": "https://github.com/symfony/form/tree/v7.4.4" }, "funding": [ { @@ -11829,20 +11829,20 @@ "type": "tidelift" } ], - "time": "2025-12-23T14:50:43+00:00" + "time": "2026-01-23T10:51:15+00:00" }, { "name": "symfony/framework-bundle", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "df908e8f9e5f6cc3c9e0d0172e030a5c1c280582" + "reference": "71fffd9f6cf8df1e2ee311176c85a10eddfdb08c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/df908e8f9e5f6cc3c9e0d0172e030a5c1c280582", - "reference": "df908e8f9e5f6cc3c9e0d0172e030a5c1c280582", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/71fffd9f6cf8df1e2ee311176c85a10eddfdb08c", + "reference": "71fffd9f6cf8df1e2ee311176c85a10eddfdb08c", "shasum": "" }, "require": { @@ -11850,8 +11850,8 @@ "ext-xml": "*", "php": ">=8.2", "symfony/cache": "^6.4.12|^7.0|^8.0", - "symfony/config": "^7.4.3|^8.0.3", - "symfony/dependency-injection": "^7.4|^8.0", + "symfony/config": "^7.4.4|^8.0.4", + "symfony/dependency-injection": "^7.4.4|^8.0.4", "symfony/deprecation-contracts": "^2.5|^3", "symfony/error-handler": "^7.3|^8.0", "symfony/event-dispatcher": "^6.4|^7.0|^8.0", @@ -11967,7 +11967,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/v7.4.3" + "source": "https://github.com/symfony/framework-bundle/tree/v7.4.4" }, "funding": [ { @@ -11987,20 +11987,20 @@ "type": "tidelift" } ], - "time": "2025-12-29T09:31:36+00:00" + "time": "2026-01-12T12:19:02+00:00" }, { "name": "symfony/http-client", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "d01dfac1e0dc99f18da48b18101c23ce57929616" + "reference": "d63c23357d74715a589454c141c843f0172bec6c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/d01dfac1e0dc99f18da48b18101c23ce57929616", - "reference": "d01dfac1e0dc99f18da48b18101c23ce57929616", + "url": "https://api.github.com/repos/symfony/http-client/zipball/d63c23357d74715a589454c141c843f0172bec6c", + "reference": "d63c23357d74715a589454c141c843f0172bec6c", "shasum": "" }, "require": { @@ -12068,7 +12068,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v7.4.3" + "source": "https://github.com/symfony/http-client/tree/v7.4.4" }, "funding": [ { @@ -12088,7 +12088,7 @@ "type": "tidelift" } ], - "time": "2025-12-23T14:50:43+00:00" + "time": "2026-01-23T16:34:22+00:00" }, { "name": "symfony/http-client-contracts", @@ -12170,16 +12170,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "a70c745d4cea48dbd609f4075e5f5cbce453bd52" + "reference": "977a554a34cf8edc95ca351fbecb1bb1ad05cc94" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/a70c745d4cea48dbd609f4075e5f5cbce453bd52", - "reference": "a70c745d4cea48dbd609f4075e5f5cbce453bd52", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/977a554a34cf8edc95ca351fbecb1bb1ad05cc94", + "reference": "977a554a34cf8edc95ca351fbecb1bb1ad05cc94", "shasum": "" }, "require": { @@ -12228,7 +12228,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.4.3" + "source": "https://github.com/symfony/http-foundation/tree/v7.4.4" }, "funding": [ { @@ -12248,20 +12248,20 @@ "type": "tidelift" } ], - "time": "2025-12-23T14:23:49+00:00" + "time": "2026-01-09T12:14:21+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "885211d4bed3f857b8c964011923528a55702aa5" + "reference": "48b067768859f7b68acf41dfb857a5a4be00acdd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/885211d4bed3f857b8c964011923528a55702aa5", - "reference": "885211d4bed3f857b8c964011923528a55702aa5", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/48b067768859f7b68acf41dfb857a5a4be00acdd", + "reference": "48b067768859f7b68acf41dfb857a5a4be00acdd", "shasum": "" }, "require": { @@ -12347,7 +12347,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/v7.4.3" + "source": "https://github.com/symfony/http-kernel/tree/v7.4.4" }, "funding": [ { @@ -12367,20 +12367,20 @@ "type": "tidelift" } ], - "time": "2025-12-31T08:43:57+00:00" + "time": "2026-01-24T22:13:01+00:00" }, { "name": "symfony/intl", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "2fa074de6c7faa6b54f2891fc22708f42245ed5c" + "reference": "7fa2d46174166bcd7829abc8717949f8a0b21fb7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/2fa074de6c7faa6b54f2891fc22708f42245ed5c", - "reference": "2fa074de6c7faa6b54f2891fc22708f42245ed5c", + "url": "https://api.github.com/repos/symfony/intl/zipball/7fa2d46174166bcd7829abc8717949f8a0b21fb7", + "reference": "7fa2d46174166bcd7829abc8717949f8a0b21fb7", "shasum": "" }, "require": { @@ -12437,7 +12437,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v7.4.0" + "source": "https://github.com/symfony/intl/tree/v7.4.4" }, "funding": [ { @@ -12457,20 +12457,20 @@ "type": "tidelift" } ], - "time": "2025-11-27T13:27:24+00:00" + "time": "2026-01-12T12:19:02+00:00" }, { "name": "symfony/mailer", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "e472d35e230108231ccb7f51eb6b2100cac02ee4" + "reference": "7b750074c40c694ceb34cb926d6dffee231c5cd6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/e472d35e230108231ccb7f51eb6b2100cac02ee4", - "reference": "e472d35e230108231ccb7f51eb6b2100cac02ee4", + "url": "https://api.github.com/repos/symfony/mailer/zipball/7b750074c40c694ceb34cb926d6dffee231c5cd6", + "reference": "7b750074c40c694ceb34cb926d6dffee231c5cd6", "shasum": "" }, "require": { @@ -12521,7 +12521,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.4.3" + "source": "https://github.com/symfony/mailer/tree/v7.4.4" }, "funding": [ { @@ -12541,20 +12541,20 @@ "type": "tidelift" } ], - "time": "2025-12-16T08:02:06+00:00" + "time": "2026-01-08T08:25:11+00:00" }, { "name": "symfony/mime", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "bdb02729471be5d047a3ac4a69068748f1a6be7a" + "reference": "40945014c0a9471ccfe19673c54738fa19367a3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/bdb02729471be5d047a3ac4a69068748f1a6be7a", - "reference": "bdb02729471be5d047a3ac4a69068748f1a6be7a", + "url": "https://api.github.com/repos/symfony/mime/zipball/40945014c0a9471ccfe19673c54738fa19367a3c", + "reference": "40945014c0a9471ccfe19673c54738fa19367a3c", "shasum": "" }, "require": { @@ -12610,7 +12610,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.4.0" + "source": "https://github.com/symfony/mime/tree/v7.4.4" }, "funding": [ { @@ -12630,20 +12630,20 @@ "type": "tidelift" } ], - "time": "2025-11-16T10:14:42+00:00" + "time": "2026-01-08T16:12:55+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "189d16466ff83d9c51fad26382bf0beeb41bda21" + "reference": "9c34e8170b09f062a9a38880a3cb58ee35cb7fd4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/189d16466ff83d9c51fad26382bf0beeb41bda21", - "reference": "189d16466ff83d9c51fad26382bf0beeb41bda21", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/9c34e8170b09f062a9a38880a3cb58ee35cb7fd4", + "reference": "9c34e8170b09f062a9a38880a3cb58ee35cb7fd4", "shasum": "" }, "require": { @@ -12693,7 +12693,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v7.4.0" + "source": "https://github.com/symfony/monolog-bridge/tree/v7.4.4" }, "funding": [ { @@ -12713,7 +12713,7 @@ "type": "tidelift" } ], - "time": "2025-11-01T09:17:33+00:00" + "time": "2026-01-07T11:35:36+00:00" }, { "name": "symfony/monolog-bundle", @@ -12868,16 +12868,16 @@ }, { "name": "symfony/password-hasher", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "aa075ce6f54fe931f03c1e382597912f4fd94e1e" + "reference": "ab8e0ef42483f31c417c82ecfcf7be7b91d784fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/aa075ce6f54fe931f03c1e382597912f4fd94e1e", - "reference": "aa075ce6f54fe931f03c1e382597912f4fd94e1e", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/ab8e0ef42483f31c417c82ecfcf7be7b91d784fe", + "reference": "ab8e0ef42483f31c417c82ecfcf7be7b91d784fe", "shasum": "" }, "require": { @@ -12920,7 +12920,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v7.4.0" + "source": "https://github.com/symfony/password-hasher/tree/v7.4.4" }, "funding": [ { @@ -12940,7 +12940,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T16:46:49+00:00" + "time": "2026-01-01T22:13:48+00:00" }, { "name": "symfony/polyfill-ctype", @@ -13692,16 +13692,16 @@ }, { "name": "symfony/process", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "2f8e1a6cdf590ca63715da4d3a7a3327404a523f" + "reference": "626f07a53f4b4e2f00e11824cc29f928d797783b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/2f8e1a6cdf590ca63715da4d3a7a3327404a523f", - "reference": "2f8e1a6cdf590ca63715da4d3a7a3327404a523f", + "url": "https://api.github.com/repos/symfony/process/zipball/626f07a53f4b4e2f00e11824cc29f928d797783b", + "reference": "626f07a53f4b4e2f00e11824cc29f928d797783b", "shasum": "" }, "require": { @@ -13733,7 +13733,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.4.3" + "source": "https://github.com/symfony/process/tree/v7.4.4" }, "funding": [ { @@ -13753,25 +13753,25 @@ "type": "tidelift" } ], - "time": "2025-12-19T10:00:43+00:00" + "time": "2026-01-20T09:23:51+00:00" }, { "name": "symfony/property-access", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "537626149d2910ca43eb9ce465654366bf4442f4" + "reference": "fa49bf1ca8fce1ba0e2dba4e4658554cfb9364b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/537626149d2910ca43eb9ce465654366bf4442f4", - "reference": "537626149d2910ca43eb9ce465654366bf4442f4", + "url": "https://api.github.com/repos/symfony/property-access/zipball/fa49bf1ca8fce1ba0e2dba4e4658554cfb9364b1", + "reference": "fa49bf1ca8fce1ba0e2dba4e4658554cfb9364b1", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/property-info": "^6.4|^7.0|^8.0" + "symfony/property-info": "^6.4.32|~7.3.10|^7.4.4|^8.0.4" }, "require-dev": { "symfony/cache": "^6.4|^7.0|^8.0", @@ -13814,7 +13814,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v7.4.0" + "source": "https://github.com/symfony/property-access/tree/v7.4.4" }, "funding": [ { @@ -13834,27 +13834,27 @@ "type": "tidelift" } ], - "time": "2025-09-08T21:14:32+00:00" + "time": "2026-01-05T08:47:25+00:00" }, { "name": "symfony/property-info", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "c3c686e3d3a33a99f6967e69d6d5832acb7c25a1" + "reference": "b5305f3bc5727d0395e9681237e870ed5a5d21ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/c3c686e3d3a33a99f6967e69d6d5832acb7c25a1", - "reference": "c3c686e3d3a33a99f6967e69d6d5832acb7c25a1", + "url": "https://api.github.com/repos/symfony/property-info/zipball/b5305f3bc5727d0395e9681237e870ed5a5d21ae", + "reference": "b5305f3bc5727d0395e9681237e870ed5a5d21ae", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/string": "^6.4|^7.0|^8.0", - "symfony/type-info": "^7.3.5|^8.0" + "symfony/type-info": "~7.3.10|^7.4.4|^8.0.4" }, "conflict": { "phpdocumentor/reflection-docblock": "<5.2", @@ -13904,7 +13904,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.4.0" + "source": "https://github.com/symfony/property-info/tree/v7.4.4" }, "funding": [ { @@ -13924,20 +13924,20 @@ "type": "tidelift" } ], - "time": "2025-11-13T08:38:49+00:00" + "time": "2026-01-23T10:51:15+00:00" }, { "name": "symfony/psr-http-message-bridge", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "0101ff8bd0506703b045b1670960302d302a726c" + "reference": "929ffe10bbfbb92e711ac3818d416f9daffee067" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/0101ff8bd0506703b045b1670960302d302a726c", - "reference": "0101ff8bd0506703b045b1670960302d302a726c", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/929ffe10bbfbb92e711ac3818d416f9daffee067", + "reference": "929ffe10bbfbb92e711ac3818d416f9daffee067", "shasum": "" }, "require": { @@ -13992,7 +13992,7 @@ "psr-7" ], "support": { - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v7.4.0" + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v7.4.4" }, "funding": [ { @@ -14012,20 +14012,20 @@ "type": "tidelift" } ], - "time": "2025-11-13T08:38:49+00:00" + "time": "2026-01-03T23:30:35+00:00" }, { "name": "symfony/rate-limiter", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/rate-limiter.git", - "reference": "5c6df5bc10308505bb0fa8d1388bc6bd8a628ba8" + "reference": "7337fff8629956d9ffed05c3fd241d2a42ddfa20" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/rate-limiter/zipball/5c6df5bc10308505bb0fa8d1388bc6bd8a628ba8", - "reference": "5c6df5bc10308505bb0fa8d1388bc6bd8a628ba8", + "url": "https://api.github.com/repos/symfony/rate-limiter/zipball/7337fff8629956d9ffed05c3fd241d2a42ddfa20", + "reference": "7337fff8629956d9ffed05c3fd241d2a42ddfa20", "shasum": "" }, "require": { @@ -14066,7 +14066,7 @@ "rate-limiter" ], "support": { - "source": "https://github.com/symfony/rate-limiter/tree/v7.4.0" + "source": "https://github.com/symfony/rate-limiter/tree/v7.4.4" }, "funding": [ { @@ -14086,20 +14086,20 @@ "type": "tidelift" } ], - "time": "2025-08-04T07:05:15+00:00" + "time": "2026-01-08T16:12:55+00:00" }, { "name": "symfony/routing", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "5d3fd7adf8896c2fdb54e2f0f35b1bcbd9e45090" + "reference": "0798827fe2c79caeed41d70b680c2c3507d10147" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/5d3fd7adf8896c2fdb54e2f0f35b1bcbd9e45090", - "reference": "5d3fd7adf8896c2fdb54e2f0f35b1bcbd9e45090", + "url": "https://api.github.com/repos/symfony/routing/zipball/0798827fe2c79caeed41d70b680c2c3507d10147", + "reference": "0798827fe2c79caeed41d70b680c2c3507d10147", "shasum": "" }, "require": { @@ -14151,7 +14151,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.4.3" + "source": "https://github.com/symfony/routing/tree/v7.4.4" }, "funding": [ { @@ -14171,7 +14171,7 @@ "type": "tidelift" } ], - "time": "2025-12-19T10:00:43+00:00" + "time": "2026-01-12T12:19:02+00:00" }, { "name": "symfony/runtime", @@ -14258,16 +14258,16 @@ }, { "name": "symfony/security-bundle", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "48a64e746857464a5e8fd7bab84b31c9ba967eb9" + "reference": "7281b644c76985ddf3927f5e65152b0cc29d175b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/48a64e746857464a5e8fd7bab84b31c9ba967eb9", - "reference": "48a64e746857464a5e8fd7bab84b31c9ba967eb9", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/7281b644c76985ddf3927f5e65152b0cc29d175b", + "reference": "7281b644c76985ddf3927f5e65152b0cc29d175b", "shasum": "" }, "require": { @@ -14346,7 +14346,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/v7.4.0" + "source": "https://github.com/symfony/security-bundle/tree/v7.4.4" }, "funding": [ { @@ -14366,20 +14366,20 @@ "type": "tidelift" } ], - "time": "2025-11-14T09:57:20+00:00" + "time": "2026-01-10T13:56:23+00:00" }, { "name": "symfony/security-core", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "be0b8585f2d69b48a9b1a6372aa48d23c7e7eeb4" + "reference": "958a70725a8d669bec6721f4cd318d209712e944" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/be0b8585f2d69b48a9b1a6372aa48d23c7e7eeb4", - "reference": "be0b8585f2d69b48a9b1a6372aa48d23c7e7eeb4", + "url": "https://api.github.com/repos/symfony/security-core/zipball/958a70725a8d669bec6721f4cd318d209712e944", + "reference": "958a70725a8d669bec6721f4cd318d209712e944", "shasum": "" }, "require": { @@ -14437,7 +14437,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v7.4.3" + "source": "https://github.com/symfony/security-core/tree/v7.4.4" }, "funding": [ { @@ -14457,20 +14457,20 @@ "type": "tidelift" } ], - "time": "2025-12-19T23:18:26+00:00" + "time": "2026-01-14T09:36:49+00:00" }, { "name": "symfony/security-csrf", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "d526fa61963d926e91c9fb22edf829d9f8793dfe" + "reference": "06a2a2f90f355b8b4ec23685fa6ceff8d5dc41cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/d526fa61963d926e91c9fb22edf829d9f8793dfe", - "reference": "d526fa61963d926e91c9fb22edf829d9f8793dfe", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/06a2a2f90f355b8b4ec23685fa6ceff8d5dc41cc", + "reference": "06a2a2f90f355b8b4ec23685fa6ceff8d5dc41cc", "shasum": "" }, "require": { @@ -14511,7 +14511,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v7.4.3" + "source": "https://github.com/symfony/security-csrf/tree/v7.4.4" }, "funding": [ { @@ -14531,20 +14531,20 @@ "type": "tidelift" } ], - "time": "2025-12-23T15:24:11+00:00" + "time": "2026-01-14T10:11:16+00:00" }, { "name": "symfony/security-http", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "72f3b3fa9f322c9579d5246895a09f945cc33e36" + "reference": "9d41a473637bf5d074c5f5a73177fd9d769407fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/72f3b3fa9f322c9579d5246895a09f945cc33e36", - "reference": "72f3b3fa9f322c9579d5246895a09f945cc33e36", + "url": "https://api.github.com/repos/symfony/security-http/zipball/9d41a473637bf5d074c5f5a73177fd9d769407fd", + "reference": "9d41a473637bf5d074c5f5a73177fd9d769407fd", "shasum": "" }, "require": { @@ -14603,7 +14603,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v7.4.3" + "source": "https://github.com/symfony/security-http/tree/v7.4.4" }, "funding": [ { @@ -14623,20 +14623,20 @@ "type": "tidelift" } ], - "time": "2025-12-19T23:18:26+00:00" + "time": "2026-01-14T10:11:16+00:00" }, { "name": "symfony/serializer", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "af01e99d6fc63549063fb9e849ce1240cfef5c4a" + "reference": "3b9a5d5c941a2a6e2a7dbe0e63fc3161888a5cd4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/af01e99d6fc63549063fb9e849ce1240cfef5c4a", - "reference": "af01e99d6fc63549063fb9e849ce1240cfef5c4a", + "url": "https://api.github.com/repos/symfony/serializer/zipball/3b9a5d5c941a2a6e2a7dbe0e63fc3161888a5cd4", + "reference": "3b9a5d5c941a2a6e2a7dbe0e63fc3161888a5cd4", "shasum": "" }, "require": { @@ -14706,7 +14706,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/v7.4.3" + "source": "https://github.com/symfony/serializer/tree/v7.4.4" }, "funding": [ { @@ -14726,7 +14726,7 @@ "type": "tidelift" } ], - "time": "2025-12-23T14:50:43+00:00" + "time": "2026-01-23T10:51:15+00:00" }, { "name": "symfony/service-contracts", @@ -14956,16 +14956,16 @@ }, { "name": "symfony/string", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "d50e862cb0a0e0886f73ca1f31b865efbb795003" + "reference": "1c4b10461bf2ec27537b5f36105337262f5f5d6f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/d50e862cb0a0e0886f73ca1f31b865efbb795003", - "reference": "d50e862cb0a0e0886f73ca1f31b865efbb795003", + "url": "https://api.github.com/repos/symfony/string/zipball/1c4b10461bf2ec27537b5f36105337262f5f5d6f", + "reference": "1c4b10461bf2ec27537b5f36105337262f5f5d6f", "shasum": "" }, "require": { @@ -15023,7 +15023,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.4.0" + "source": "https://github.com/symfony/string/tree/v7.4.4" }, "funding": [ { @@ -15043,20 +15043,20 @@ "type": "tidelift" } ], - "time": "2025-11-27T13:27:24+00:00" + "time": "2026-01-12T10:54:30+00:00" }, { "name": "symfony/translation", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "7ef27c65d78886f7599fdd5c93d12c9243ecf44d" + "reference": "bfde13711f53f549e73b06d27b35a55207528877" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/7ef27c65d78886f7599fdd5c93d12c9243ecf44d", - "reference": "7ef27c65d78886f7599fdd5c93d12c9243ecf44d", + "url": "https://api.github.com/repos/symfony/translation/zipball/bfde13711f53f549e73b06d27b35a55207528877", + "reference": "bfde13711f53f549e73b06d27b35a55207528877", "shasum": "" }, "require": { @@ -15123,7 +15123,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.4.3" + "source": "https://github.com/symfony/translation/tree/v7.4.4" }, "funding": [ { @@ -15143,7 +15143,7 @@ "type": "tidelift" } ], - "time": "2025-12-29T09:31:36+00:00" + "time": "2026-01-13T10:40:19+00:00" }, { "name": "symfony/translation-contracts", @@ -15229,16 +15229,16 @@ }, { "name": "symfony/twig-bridge", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "43c922fce020060c65b0fd54bfd8def3b38949b6" + "reference": "23c337a975c1527a4b91199f795abb62ede5238f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/43c922fce020060c65b0fd54bfd8def3b38949b6", - "reference": "43c922fce020060c65b0fd54bfd8def3b38949b6", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/23c337a975c1527a4b91199f795abb62ede5238f", + "reference": "23c337a975c1527a4b91199f795abb62ede5238f", "shasum": "" }, "require": { @@ -15251,7 +15251,7 @@ "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/console": "<6.4", - "symfony/form": "<6.4", + "symfony/form": "<6.4.32|>7,<7.3.10|>7.4,<7.4.4|>8.0,<8.0.4", "symfony/http-foundation": "<6.4", "symfony/http-kernel": "<6.4", "symfony/mime": "<6.4", @@ -15270,7 +15270,7 @@ "symfony/emoji": "^7.1|^8.0", "symfony/expression-language": "^6.4|^7.0|^8.0", "symfony/finder": "^6.4|^7.0|^8.0", - "symfony/form": "^6.4.30|~7.3.8|^7.4.1|^8.0.1", + "symfony/form": "^6.4.32|~7.3.10|^7.4.4|^8.0.4", "symfony/html-sanitizer": "^6.4|^7.0|^8.0", "symfony/http-foundation": "^7.3|^8.0", "symfony/http-kernel": "^6.4|^7.0|^8.0", @@ -15320,7 +15320,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v7.4.3" + "source": "https://github.com/symfony/twig-bridge/tree/v7.4.4" }, "funding": [ { @@ -15340,20 +15340,20 @@ "type": "tidelift" } ], - "time": "2025-12-16T08:02:06+00:00" + "time": "2026-01-07T10:07:42+00:00" }, { "name": "symfony/twig-bundle", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "9e1f5fd2668ed26c60d17d63f15fe270ed8da5e6" + "reference": "e8829e02ff96a391ed0703bac9e7ff0537480b6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/9e1f5fd2668ed26c60d17d63f15fe270ed8da5e6", - "reference": "9e1f5fd2668ed26c60d17d63f15fe270ed8da5e6", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/e8829e02ff96a391ed0703bac9e7ff0537480b6b", + "reference": "e8829e02ff96a391ed0703bac9e7ff0537480b6b", "shasum": "" }, "require": { @@ -15410,7 +15410,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/v7.4.3" + "source": "https://github.com/symfony/twig-bundle/tree/v7.4.4" }, "funding": [ { @@ -15430,20 +15430,20 @@ "type": "tidelift" } ], - "time": "2025-12-19T10:00:43+00:00" + "time": "2026-01-06T12:34:24+00:00" }, { "name": "symfony/type-info", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/type-info.git", - "reference": "7f9743e921abcce92a03fc693530209c59e73076" + "reference": "f83c725e72b39b2704b9d6fc85070ad6ac7a5889" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/type-info/zipball/7f9743e921abcce92a03fc693530209c59e73076", - "reference": "7f9743e921abcce92a03fc693530209c59e73076", + "url": "https://api.github.com/repos/symfony/type-info/zipball/f83c725e72b39b2704b9d6fc85070ad6ac7a5889", + "reference": "f83c725e72b39b2704b9d6fc85070ad6ac7a5889", "shasum": "" }, "require": { @@ -15493,7 +15493,7 @@ "type" ], "support": { - "source": "https://github.com/symfony/type-info/tree/v7.4.0" + "source": "https://github.com/symfony/type-info/tree/v7.4.4" }, "funding": [ { @@ -15513,20 +15513,20 @@ "type": "tidelift" } ], - "time": "2025-11-07T09:36:46+00:00" + "time": "2026-01-09T12:14:21+00:00" }, { "name": "symfony/uid", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "2498e9f81b7baa206f44de583f2f48350b90142c" + "reference": "7719ce8aba76be93dfe249192f1fbfa52c588e36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/2498e9f81b7baa206f44de583f2f48350b90142c", - "reference": "2498e9f81b7baa206f44de583f2f48350b90142c", + "url": "https://api.github.com/repos/symfony/uid/zipball/7719ce8aba76be93dfe249192f1fbfa52c588e36", + "reference": "7719ce8aba76be93dfe249192f1fbfa52c588e36", "shasum": "" }, "require": { @@ -15571,7 +15571,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v7.4.0" + "source": "https://github.com/symfony/uid/tree/v7.4.4" }, "funding": [ { @@ -15591,7 +15591,7 @@ "type": "tidelift" } ], - "time": "2025-09-25T11:02:55+00:00" + "time": "2026-01-03T23:30:35+00:00" }, { "name": "symfony/ux-translator", @@ -15779,16 +15779,16 @@ }, { "name": "symfony/validator", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "9670bedf4c454b21d1e04606b6c227990da8bebe" + "reference": "64d763109518ea5f85ab32efe28eb8278ae5d502" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/9670bedf4c454b21d1e04606b6c227990da8bebe", - "reference": "9670bedf4c454b21d1e04606b6c227990da8bebe", + "url": "https://api.github.com/repos/symfony/validator/zipball/64d763109518ea5f85ab32efe28eb8278ae5d502", + "reference": "64d763109518ea5f85ab32efe28eb8278ae5d502", "shasum": "" }, "require": { @@ -15859,7 +15859,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.4.3" + "source": "https://github.com/symfony/validator/tree/v7.4.4" }, "funding": [ { @@ -15879,20 +15879,20 @@ "type": "tidelift" } ], - "time": "2025-12-27T17:05:22+00:00" + "time": "2026-01-08T22:32:07+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "7e99bebcb3f90d8721890f2963463280848cba92" + "reference": "0e4769b46a0c3c62390d124635ce59f66874b282" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7e99bebcb3f90d8721890f2963463280848cba92", - "reference": "7e99bebcb3f90d8721890f2963463280848cba92", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0e4769b46a0c3c62390d124635ce59f66874b282", + "reference": "0e4769b46a0c3c62390d124635ce59f66874b282", "shasum": "" }, "require": { @@ -15946,7 +15946,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.4.3" + "source": "https://github.com/symfony/var-dumper/tree/v7.4.4" }, "funding": [ { @@ -15966,7 +15966,7 @@ "type": "tidelift" } ], - "time": "2025-12-18T07:04:31+00:00" + "time": "2026-01-01T22:13:48+00:00" }, { "name": "symfony/var-exporter", @@ -16051,16 +16051,16 @@ }, { "name": "symfony/web-link", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/web-link.git", - "reference": "c62edd6b52e31cf2f6f38fd3386725f364f19942" + "reference": "9ff1f19069e3d2d341d60729392a4a6dfc45052a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-link/zipball/c62edd6b52e31cf2f6f38fd3386725f364f19942", - "reference": "c62edd6b52e31cf2f6f38fd3386725f364f19942", + "url": "https://api.github.com/repos/symfony/web-link/zipball/9ff1f19069e3d2d341d60729392a4a6dfc45052a", + "reference": "9ff1f19069e3d2d341d60729392a4a6dfc45052a", "shasum": "" }, "require": { @@ -16114,7 +16114,7 @@ "push" ], "support": { - "source": "https://github.com/symfony/web-link/tree/v7.4.0" + "source": "https://github.com/symfony/web-link/tree/v7.4.4" }, "funding": [ { @@ -16134,7 +16134,7 @@ "type": "tidelift" } ], - "time": "2025-08-04T07:05:15+00:00" + "time": "2026-01-01T22:13:48+00:00" }, { "name": "symfony/webpack-encore-bundle", @@ -16351,16 +16351,16 @@ }, { "name": "tecnickcom/tc-lib-barcode", - "version": "2.4.18", + "version": "2.4.22", "source": { "type": "git", "url": "https://github.com/tecnickcom/tc-lib-barcode.git", - "reference": "338095651126ec4207f98e5221beea30b27c0fe9" + "reference": "ee997f9240f826a6a9274f55e2edb8f185871e30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tecnickcom/tc-lib-barcode/zipball/338095651126ec4207f98e5221beea30b27c0fe9", - "reference": "338095651126ec4207f98e5221beea30b27c0fe9", + "url": "https://api.github.com/repos/tecnickcom/tc-lib-barcode/zipball/ee997f9240f826a6a9274f55e2edb8f185871e30", + "reference": "ee997f9240f826a6a9274f55e2edb8f185871e30", "shasum": "" }, "require": { @@ -16375,7 +16375,7 @@ "pdepend/pdepend": "2.16.2", "phpcompatibility/php-compatibility": "^10.0.0@dev", "phpmd/phpmd": "2.15.0", - "phpunit/phpunit": "12.4.4 || 11.5.44 || 10.5.58", + "phpunit/phpunit": "12.5.6 || 11.5.44 || 10.5.58", "squizlabs/php_codesniffer": "4.0.1" }, "type": "library", @@ -16440,7 +16440,7 @@ ], "support": { "issues": "https://github.com/tecnickcom/tc-lib-barcode/issues", - "source": "https://github.com/tecnickcom/tc-lib-barcode/tree/2.4.18" + "source": "https://github.com/tecnickcom/tc-lib-barcode/tree/2.4.22" }, "funding": [ { @@ -16448,20 +16448,20 @@ "type": "custom" } ], - "time": "2025-12-11T12:48:04+00:00" + "time": "2026-01-24T12:40:59+00:00" }, { "name": "tecnickcom/tc-lib-color", - "version": "2.3.2", + "version": "2.3.6", "source": { "type": "git", "url": "https://github.com/tecnickcom/tc-lib-color.git", - "reference": "4a70cf68cd9fd4082b1b6d16234876a66649be0b" + "reference": "3d8ee89d83c1c60a275a0c1885f11370a4d86461" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tecnickcom/tc-lib-color/zipball/4a70cf68cd9fd4082b1b6d16234876a66649be0b", - "reference": "4a70cf68cd9fd4082b1b6d16234876a66649be0b", + "url": "https://api.github.com/repos/tecnickcom/tc-lib-color/zipball/3d8ee89d83c1c60a275a0c1885f11370a4d86461", + "reference": "3d8ee89d83c1c60a275a0c1885f11370a4d86461", "shasum": "" }, "require": { @@ -16472,7 +16472,7 @@ "pdepend/pdepend": "2.16.2", "phpcompatibility/php-compatibility": "^10.0.0@dev", "phpmd/phpmd": "2.15.0", - "phpunit/phpunit": "12.4.4 || 11.5.44 || 10.5.58", + "phpunit/phpunit": "12.5.6 || 11.5.44 || 10.5.58", "squizlabs/php_codesniffer": "4.0.1" }, "type": "library", @@ -16510,7 +16510,7 @@ ], "support": { "issues": "https://github.com/tecnickcom/tc-lib-color/issues", - "source": "https://github.com/tecnickcom/tc-lib-color/tree/2.3.2" + "source": "https://github.com/tecnickcom/tc-lib-color/tree/2.3.6" }, "funding": [ { @@ -16518,7 +16518,7 @@ "type": "custom" } ], - "time": "2025-12-11T12:13:39+00:00" + "time": "2026-01-24T12:39:16+00:00" }, { "name": "thecodingmachine/safe", @@ -16716,16 +16716,16 @@ }, { "name": "twig/cssinliner-extra", - "version": "v3.22.0", + "version": "v3.23.0", "source": { "type": "git", "url": "https://github.com/twigphp/cssinliner-extra.git", - "reference": "9bcbf04ca515e98fcde479fdceaa1d9d9e76173e" + "reference": "c25fa18b09a418e4d1454ec291f9406f630675ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/cssinliner-extra/zipball/9bcbf04ca515e98fcde479fdceaa1d9d9e76173e", - "reference": "9bcbf04ca515e98fcde479fdceaa1d9d9e76173e", + "url": "https://api.github.com/repos/twigphp/cssinliner-extra/zipball/c25fa18b09a418e4d1454ec291f9406f630675ba", + "reference": "c25fa18b09a418e4d1454ec291f9406f630675ba", "shasum": "" }, "require": { @@ -16769,7 +16769,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/cssinliner-extra/tree/v3.22.0" + "source": "https://github.com/twigphp/cssinliner-extra/tree/v3.23.0" }, "funding": [ { @@ -16781,20 +16781,20 @@ "type": "tidelift" } ], - "time": "2025-07-29T08:07:07+00:00" + "time": "2025-12-02T14:45:16+00:00" }, { "name": "twig/extra-bundle", - "version": "v3.22.2", + "version": "v3.23.0", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "09de9be7f6c0d19ede7b5a1dbfcfb2e9d1e0ea9e" + "reference": "7a27e784dc56eddfef5e9295829b290ce06f1682" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/09de9be7f6c0d19ede7b5a1dbfcfb2e9d1e0ea9e", - "reference": "09de9be7f6c0d19ede7b5a1dbfcfb2e9d1e0ea9e", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/7a27e784dc56eddfef5e9295829b290ce06f1682", + "reference": "7a27e784dc56eddfef5e9295829b290ce06f1682", "shasum": "" }, "require": { @@ -16843,7 +16843,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.22.2" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.23.0" }, "funding": [ { @@ -16855,20 +16855,20 @@ "type": "tidelift" } ], - "time": "2025-12-05T08:51:53+00:00" + "time": "2025-12-18T20:46:15+00:00" }, { "name": "twig/html-extra", - "version": "v3.22.1", + "version": "v3.23.0", "source": { "type": "git", "url": "https://github.com/twigphp/html-extra.git", - "reference": "d56d33315bce2b19ed815f8feedce85448736568" + "reference": "2ef1d0ccaa06d4f4405b330fe6c4b6f7b50fbbc3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/html-extra/zipball/d56d33315bce2b19ed815f8feedce85448736568", - "reference": "d56d33315bce2b19ed815f8feedce85448736568", + "url": "https://api.github.com/repos/twigphp/html-extra/zipball/2ef1d0ccaa06d4f4405b330fe6c4b6f7b50fbbc3", + "reference": "2ef1d0ccaa06d4f4405b330fe6c4b6f7b50fbbc3", "shasum": "" }, "require": { @@ -16911,7 +16911,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/html-extra/tree/v3.22.1" + "source": "https://github.com/twigphp/html-extra/tree/v3.23.0" }, "funding": [ { @@ -16923,20 +16923,20 @@ "type": "tidelift" } ], - "time": "2025-11-02T11:00:49+00:00" + "time": "2025-12-02T14:45:16+00:00" }, { "name": "twig/inky-extra", - "version": "v3.22.0", + "version": "v3.23.0", "source": { "type": "git", "url": "https://github.com/twigphp/inky-extra.git", - "reference": "631f42c7123240d9c2497903679ec54bb25f2f52" + "reference": "6bdca65a38167f7bd0ad7ea04819098d465a5cc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/inky-extra/zipball/631f42c7123240d9c2497903679ec54bb25f2f52", - "reference": "631f42c7123240d9c2497903679ec54bb25f2f52", + "url": "https://api.github.com/repos/twigphp/inky-extra/zipball/6bdca65a38167f7bd0ad7ea04819098d465a5cc4", + "reference": "6bdca65a38167f7bd0ad7ea04819098d465a5cc4", "shasum": "" }, "require": { @@ -16981,7 +16981,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/inky-extra/tree/v3.22.0" + "source": "https://github.com/twigphp/inky-extra/tree/v3.23.0" }, "funding": [ { @@ -16993,20 +16993,20 @@ "type": "tidelift" } ], - "time": "2025-07-29T08:07:07+00:00" + "time": "2025-12-02T14:45:16+00:00" }, { "name": "twig/intl-extra", - "version": "v3.22.1", + "version": "v3.23.0", "source": { "type": "git", "url": "https://github.com/twigphp/intl-extra.git", - "reference": "93ac31e53cdd3f2e541f42690cd0c54ca8138ab1" + "reference": "32f15a38d45a8d0ec11bc8a3d97d3ac2a261499f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/93ac31e53cdd3f2e541f42690cd0c54ca8138ab1", - "reference": "93ac31e53cdd3f2e541f42690cd0c54ca8138ab1", + "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/32f15a38d45a8d0ec11bc8a3d97d3ac2a261499f", + "reference": "32f15a38d45a8d0ec11bc8a3d97d3ac2a261499f", "shasum": "" }, "require": { @@ -17045,7 +17045,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/intl-extra/tree/v3.22.1" + "source": "https://github.com/twigphp/intl-extra/tree/v3.23.0" }, "funding": [ { @@ -17057,20 +17057,20 @@ "type": "tidelift" } ], - "time": "2025-11-02T11:00:49+00:00" + "time": "2026-01-17T13:57:47+00:00" }, { "name": "twig/markdown-extra", - "version": "v3.22.0", + "version": "v3.23.0", "source": { "type": "git", "url": "https://github.com/twigphp/markdown-extra.git", - "reference": "fb6f952082e3a7d62a75c8be2c8c47242d3925fb" + "reference": "faf069b259e2d3930c73c2f53e2dec8440bd90a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/markdown-extra/zipball/fb6f952082e3a7d62a75c8be2c8c47242d3925fb", - "reference": "fb6f952082e3a7d62a75c8be2c8c47242d3925fb", + "url": "https://api.github.com/repos/twigphp/markdown-extra/zipball/faf069b259e2d3930c73c2f53e2dec8440bd90a2", + "reference": "faf069b259e2d3930c73c2f53e2dec8440bd90a2", "shasum": "" }, "require": { @@ -17117,7 +17117,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/markdown-extra/tree/v3.22.0" + "source": "https://github.com/twigphp/markdown-extra/tree/v3.23.0" }, "funding": [ { @@ -17129,20 +17129,20 @@ "type": "tidelift" } ], - "time": "2025-09-15T05:57:37+00:00" + "time": "2025-12-02T14:45:16+00:00" }, { "name": "twig/string-extra", - "version": "v3.22.1", + "version": "v3.23.0", "source": { "type": "git", "url": "https://github.com/twigphp/string-extra.git", - "reference": "d5f16e0bec548bc96cce255b5f43d90492b8ce13" + "reference": "6ec8f2e8ca9b2193221a02cb599dc92c36384368" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/string-extra/zipball/d5f16e0bec548bc96cce255b5f43d90492b8ce13", - "reference": "d5f16e0bec548bc96cce255b5f43d90492b8ce13", + "url": "https://api.github.com/repos/twigphp/string-extra/zipball/6ec8f2e8ca9b2193221a02cb599dc92c36384368", + "reference": "6ec8f2e8ca9b2193221a02cb599dc92c36384368", "shasum": "" }, "require": { @@ -17184,7 +17184,7 @@ "unicode" ], "support": { - "source": "https://github.com/twigphp/string-extra/tree/v3.22.1" + "source": "https://github.com/twigphp/string-extra/tree/v3.23.0" }, "funding": [ { @@ -17196,20 +17196,20 @@ "type": "tidelift" } ], - "time": "2025-11-02T11:00:49+00:00" + "time": "2025-12-02T14:45:16+00:00" }, { "name": "twig/twig", - "version": "v3.22.2", + "version": "v3.23.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "946ddeafa3c9f4ce279d1f34051af041db0e16f2" + "reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/946ddeafa3c9f4ce279d1f34051af041db0e16f2", - "reference": "946ddeafa3c9f4ce279d1f34051af041db0e16f2", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9", + "reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9", "shasum": "" }, "require": { @@ -17263,7 +17263,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.22.2" + "source": "https://github.com/twigphp/Twig/tree/v3.23.0" }, "funding": [ { @@ -17275,7 +17275,7 @@ "type": "tidelift" } ], - "time": "2025-12-14T11:28:47+00:00" + "time": "2026-01-23T21:00:41+00:00" }, { "name": "ua-parser/uap-php", @@ -17701,34 +17701,34 @@ "packages-dev": [ { "name": "dama/doctrine-test-bundle", - "version": "v8.4.1", + "version": "v8.6.0", "source": { "type": "git", "url": "https://github.com/dmaicher/doctrine-test-bundle.git", - "reference": "d9f4fb01a43da2e279ca190fa25ab9e26f15a0c8" + "reference": "f7e3487643e685432f7e27c50cac64e9f8c515a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dmaicher/doctrine-test-bundle/zipball/d9f4fb01a43da2e279ca190fa25ab9e26f15a0c8", - "reference": "d9f4fb01a43da2e279ca190fa25ab9e26f15a0c8", + "url": "https://api.github.com/repos/dmaicher/doctrine-test-bundle/zipball/f7e3487643e685432f7e27c50cac64e9f8c515a4", + "reference": "f7e3487643e685432f7e27c50cac64e9f8c515a4", "shasum": "" }, "require": { "doctrine/dbal": "^3.3 || ^4.0", "doctrine/doctrine-bundle": "^2.11.0 || ^3.0", - "php": ">= 8.1", + "php": ">= 8.2", "psr/cache": "^2.0 || ^3.0", "symfony/cache": "^6.4 || ^7.3 || ^8.0", "symfony/framework-bundle": "^6.4 || ^7.3 || ^8.0" }, "conflict": { - "phpunit/phpunit": "<10.0" + "phpunit/phpunit": "<11.0" }, "require-dev": { "behat/behat": "^3.0", "friendsofphp/php-cs-fixer": "^3.27", "phpstan/phpstan": "^2.0", - "phpunit/phpunit": "^10.5.57 || ^11.5.41|| ^12.3.14", + "phpunit/phpunit": "^11.5.41|| ^12.3.14", "symfony/dotenv": "^6.4 || ^7.3 || ^8.0", "symfony/process": "^6.4 || ^7.3 || ^8.0" }, @@ -17764,9 +17764,9 @@ ], "support": { "issues": "https://github.com/dmaicher/doctrine-test-bundle/issues", - "source": "https://github.com/dmaicher/doctrine-test-bundle/tree/v8.4.1" + "source": "https://github.com/dmaicher/doctrine-test-bundle/tree/v8.6.0" }, - "time": "2025-12-07T21:48:15+00:00" + "time": "2026-01-21T07:39:44+00:00" }, { "name": "doctrine/doctrine-fixtures-bundle", @@ -18276,11 +18276,11 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.33", + "version": "2.1.37", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9e800e6bee7d5bd02784d4c6069b48032d16224f", - "reference": "9e800e6bee7d5bd02784d4c6069b48032d16224f", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/28cd424c5ea984128c95cfa7ea658808e8954e49", + "reference": "28cd424c5ea984128c95cfa7ea658808e8954e49", "shasum": "" }, "require": { @@ -18325,25 +18325,25 @@ "type": "github" } ], - "time": "2025-12-05T10:24:31+00:00" + "time": "2026-01-24T08:21:55+00:00" }, { "name": "phpstan/phpstan-doctrine", - "version": "2.0.12", + "version": "2.0.13", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "d20ee0373d22735271f1eb4d631856b5f847d399" + "reference": "2d2ad04a0ac14ac52e21ad47ec67a54a14355c1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/d20ee0373d22735271f1eb4d631856b5f847d399", - "reference": "d20ee0373d22735271f1eb4d631856b5f847d399", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/2d2ad04a0ac14ac52e21ad47ec67a54a14355c1f", + "reference": "2d2ad04a0ac14ac52e21ad47ec67a54a14355c1f", "shasum": "" }, "require": { "php": "^7.4 || ^8.0", - "phpstan/phpstan": "^2.1.13" + "phpstan/phpstan": "^2.1.34" }, "conflict": { "doctrine/collections": "<1.0", @@ -18396,9 +18396,9 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/2.0.12" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/2.0.13" }, - "time": "2025-12-01T11:34:02+00:00" + "time": "2026-01-18T16:15:40+00:00" }, { "name": "phpstan/phpstan-strict-rules", @@ -18450,16 +18450,16 @@ }, { "name": "phpstan/phpstan-symfony", - "version": "2.0.9", + "version": "2.0.12", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-symfony.git", - "reference": "24d8c157aa483141b0579d705ef0aac9e1b95436" + "reference": "a46dd92eaf15146cd932d897a272e59cd4108ce2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/24d8c157aa483141b0579d705ef0aac9e1b95436", - "reference": "24d8c157aa483141b0579d705ef0aac9e1b95436", + "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/a46dd92eaf15146cd932d897a272e59cd4108ce2", + "reference": "a46dd92eaf15146cd932d897a272e59cd4108ce2", "shasum": "" }, "require": { @@ -18515,9 +18515,9 @@ "description": "Symfony Framework extensions and rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-symfony/issues", - "source": "https://github.com/phpstan/phpstan-symfony/tree/2.0.9" + "source": "https://github.com/phpstan/phpstan-symfony/tree/2.0.12" }, - "time": "2025-11-29T11:17:28+00:00" + "time": "2026-01-23T09:04:33+00:00" }, { "name": "phpunit/php-code-coverage", @@ -18856,16 +18856,16 @@ }, { "name": "phpunit/phpunit", - "version": "11.5.48", + "version": "11.5.49", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "fe3665c15e37140f55aaf658c81a2eb9030b6d89" + "reference": "4f1750675ba411dd6c2d5fa8a3cca07f6742020e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fe3665c15e37140f55aaf658c81a2eb9030b6d89", - "reference": "fe3665c15e37140f55aaf658c81a2eb9030b6d89", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4f1750675ba411dd6c2d5fa8a3cca07f6742020e", + "reference": "4f1750675ba411dd6c2d5fa8a3cca07f6742020e", "shasum": "" }, "require": { @@ -18886,7 +18886,7 @@ "phpunit/php-timer": "^7.0.1", "sebastian/cli-parser": "^3.0.2", "sebastian/code-unit": "^3.0.3", - "sebastian/comparator": "^6.3.2", + "sebastian/comparator": "^6.3.3", "sebastian/diff": "^6.0.2", "sebastian/environment": "^7.2.1", "sebastian/exporter": "^6.3.2", @@ -18937,7 +18937,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.48" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.49" }, "funding": [ { @@ -18961,25 +18961,25 @@ "type": "tidelift" } ], - "time": "2026-01-16T16:26:27+00:00" + "time": "2026-01-24T16:09:28+00:00" }, { "name": "rector/rector", - "version": "2.3.1", + "version": "2.3.4", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "9afc1bb43571b25629f353c61a9315b5ef31383a" + "reference": "9227d7a24b0f23ae941057509364f948d5da9ab2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/9afc1bb43571b25629f353c61a9315b5ef31383a", - "reference": "9afc1bb43571b25629f353c61a9315b5ef31383a", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/9227d7a24b0f23ae941057509364f948d5da9ab2", + "reference": "9227d7a24b0f23ae941057509364f948d5da9ab2", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "phpstan/phpstan": "^2.1.33" + "phpstan/phpstan": "^2.1.36" }, "conflict": { "rector/rector-doctrine": "*", @@ -19013,7 +19013,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.3.1" + "source": "https://github.com/rectorphp/rector/tree/2.3.4" }, "funding": [ { @@ -19021,7 +19021,7 @@ "type": "github" } ], - "time": "2026-01-13T15:13:58+00:00" + "time": "2026-01-21T14:49:03+00:00" }, { "name": "roave/security-advisories", @@ -19029,12 +19029,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "57ac71b06405e32e77d960bb8490683138573f04" + "reference": "8e1e81cec2f088871c624d2adf767eb5e492ecdf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/57ac71b06405e32e77d960bb8490683138573f04", - "reference": "57ac71b06405e32e77d960bb8490683138573f04", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/8e1e81cec2f088871c624d2adf767eb5e492ecdf", + "reference": "8e1e81cec2f088871c624d2adf767eb5e492ecdf", "shasum": "" }, "conflict": { @@ -19169,10 +19169,11 @@ "contao/core-bundle": "<4.13.57|>=5,<5.3.42|>=5.4,<5.6.5", "contao/listing-bundle": ">=3,<=3.5.30|>=4,<4.4.8", "contao/managed-edition": "<=1.5", - "coreshop/core-shop": "<=4.1.7", + "coreshop/core-shop": "<4.1.9", "corveda/phpsandbox": "<1.3.5", "cosenary/instagram": "<=2.3", "couleurcitron/tarteaucitron-wp": "<0.3", + "cpsit/typo3-mailqueue": "<0.4.3|>=0.5,<0.5.1", "craftcms/cms": "<=4.16.16|>=5,<=5.8.20", "croogo/croogo": "<=4.0.7", "cuyz/valinor": "<0.12", @@ -19426,7 +19427,7 @@ "kelvinmo/simplexrd": "<3.1.1", "kevinpapst/kimai2": "<1.16.7", "khodakhah/nodcms": "<=3", - "kimai/kimai": "<=2.20.1", + "kimai/kimai": "<2.46", "kitodo/presentation": "<3.2.3|>=3.3,<3.3.4", "klaviyo/magento2-extension": ">=1,<3", "knplabs/knp-snappy": "<=1.4.2", @@ -19445,10 +19446,10 @@ "laravel/framework": "<10.48.29|>=11,<11.44.1|>=12,<12.1.1", "laravel/laravel": ">=5.4,<5.4.22", "laravel/pulse": "<1.3.1", - "laravel/reverb": "<1.4", + "laravel/reverb": "<1.7", "laravel/socialite": ">=1,<2.0.10", "latte/latte": "<2.10.8", - "lavalite/cms": "<=9|==10.1", + "lavalite/cms": "<=10.1", "lavitto/typo3-form-to-database": "<2.2.5|>=3,<3.2.2|>=4,<4.2.3|>=5,<5.0.2", "lcobucci/jwt": ">=3.4,<3.4.6|>=4,<4.0.4|>=4.1,<4.1.5", "league/commonmark": "<2.7", @@ -19462,6 +19463,7 @@ "lightsaml/lightsaml": "<1.3.5", "limesurvey/limesurvey": "<6.5.12", "livehelperchat/livehelperchat": "<=3.91", + "livewire-filemanager/filemanager": "<=1.0.4", "livewire/livewire": "<2.12.7|>=3.0.0.0-beta1,<3.6.4", "livewire/volt": "<1.7", "lms/routes": "<2.1.1", @@ -19520,7 +19522,7 @@ "mongodb/mongodb": ">=1,<1.9.2", "mongodb/mongodb-extension": "<1.21.2", "monolog/monolog": ">=1.8,<1.12", - "moodle/moodle": "<4.4.11|>=4.5.0.0-beta,<4.5.7|>=5.0.0.0-beta,<5.0.3", + "moodle/moodle": "<=5.1.1", "moonshine/moonshine": "<=3.12.5", "mos/cimage": "<0.7.19", "movim/moxl": ">=0.8,<=0.10", @@ -19605,6 +19607,7 @@ "pear/pear": "<=1.10.1", "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1", "personnummer/personnummer": "<3.0.2", + "ph7software/ph7builder": "<=17.9.1", "phanan/koel": "<5.1.4", "phenx/php-svg-lib": "<0.5.2", "php-censor/php-censor": "<2.0.13|>=2.1,<2.1.5", @@ -19615,7 +19618,7 @@ "phpmailer/phpmailer": "<6.5", "phpmussel/phpmussel": ">=1,<1.6", "phpmyadmin/phpmyadmin": "<5.2.2", - "phpmyfaq/phpmyfaq": "<=4.0.13", + "phpmyfaq/phpmyfaq": "<=4.0.16", "phpoffice/common": "<0.2.9", "phpoffice/math": "<=0.2", "phpoffice/phpexcel": "<=1.8.2", @@ -19749,7 +19752,7 @@ "snipe/snipe-it": "<=8.3.4", "socalnick/scn-social-auth": "<1.15.2", "socialiteproviders/steam": "<1.1", - "solspace/craft-freeform": "<4.1.29|>=5,<5.10.16", + "solspace/craft-freeform": "<=5.14.6", "soosyze/soosyze": "<=2", "spatie/browsershot": "<5.0.5", "spatie/image-optimizer": "<1.7.3", @@ -19838,7 +19841,7 @@ "thelia/thelia": ">=2.1,<2.1.3", "theonedemon/phpwhois": "<=4.2.5", "thinkcmf/thinkcmf": "<6.0.8", - "thorsten/phpmyfaq": "<4.0.16|>=4.1.0.0-alpha,<=4.1.0.0-beta2", + "thorsten/phpmyfaq": "<=4.0.16|>=4.1.0.0-alpha,<=4.1.0.0-beta2", "tikiwiki/tiki-manager": "<=17.1", "timber/timber": ">=0.16.6,<1.23.1|>=1.24,<1.24.1|>=2,<2.1", "tinymce/tinymce": "<7.2", @@ -20033,7 +20036,7 @@ "type": "tidelift" } ], - "time": "2026-01-16T21:05:58+00:00" + "time": "2026-01-23T21:05:59+00:00" }, { "name": "sebastian/cli-parser", @@ -20207,16 +20210,16 @@ }, { "name": "sebastian/comparator", - "version": "6.3.2", + "version": "6.3.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "85c77556683e6eee4323e4c5468641ca0237e2e8" + "reference": "2c95e1e86cb8dd41beb8d502057d1081ccc8eca9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/85c77556683e6eee4323e4c5468641ca0237e2e8", - "reference": "85c77556683e6eee4323e4c5468641ca0237e2e8", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2c95e1e86cb8dd41beb8d502057d1081ccc8eca9", + "reference": "2c95e1e86cb8dd41beb8d502057d1081ccc8eca9", "shasum": "" }, "require": { @@ -20275,7 +20278,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.2" + "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.3" }, "funding": [ { @@ -20295,7 +20298,7 @@ "type": "tidelift" } ], - "time": "2025-08-10T08:07:46+00:00" + "time": "2026-01-24T09:26:40+00:00" }, { "name": "sebastian/complexity", @@ -21075,16 +21078,16 @@ }, { "name": "symfony/browser-kit", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "d5b5c731005f224fbc25289587a8538e4f62c762" + "reference": "bed167eadaaba641f51fc842c9227aa5e251309e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/d5b5c731005f224fbc25289587a8538e4f62c762", - "reference": "d5b5c731005f224fbc25289587a8538e4f62c762", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/bed167eadaaba641f51fc842c9227aa5e251309e", + "reference": "bed167eadaaba641f51fc842c9227aa5e251309e", "shasum": "" }, "require": { @@ -21124,7 +21127,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/v7.4.3" + "source": "https://github.com/symfony/browser-kit/tree/v7.4.4" }, "funding": [ { @@ -21144,7 +21147,7 @@ "type": "tidelift" } ], - "time": "2025-12-16T08:02:06+00:00" + "time": "2026-01-13T10:40:19+00:00" }, { "name": "symfony/debug-bundle", @@ -21406,16 +21409,16 @@ }, { "name": "symfony/web-profiler-bundle", - "version": "v7.4.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "5220b59d06f6554658a0dc4d6bd4497a789e51dd" + "reference": "be165e29e6109efb89bfaefe56e3deccf72a8643" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/5220b59d06f6554658a0dc4d6bd4497a789e51dd", - "reference": "5220b59d06f6554658a0dc4d6bd4497a789e51dd", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/be165e29e6109efb89bfaefe56e3deccf72a8643", + "reference": "be165e29e6109efb89bfaefe56e3deccf72a8643", "shasum": "" }, "require": { @@ -21472,7 +21475,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.4.3" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.4.4" }, "funding": [ { @@ -21492,7 +21495,7 @@ "type": "tidelift" } ], - "time": "2025-12-27T17:05:22+00:00" + "time": "2026-01-07T11:56:45+00:00" }, { "name": "theseer/tokenizer", diff --git a/config/reference.php b/config/reference.php index 07066776..82bdc45e 100644 --- a/config/reference.php +++ b/config/reference.php @@ -33,7 +33,7 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * type?: string|null, * ignore_errors?: bool, * }> - * @psalm-type ParametersConfig = array|null>|null> + * @psalm-type ParametersConfig = array|Param|null>|Param|null> * @psalm-type ArgumentsType = list|array * @psalm-type CallType = array|array{0:string, 1?:ArgumentsType, 2?:bool}|array{method:string, arguments?:ArgumentsType, returns_clone?:bool} * @psalm-type TagsType = list>> // arrays inside the list must have only one element, with the tag name as the key @@ -126,44 +126,44 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * } * @psalm-type ExtensionType = array * @psalm-type FrameworkConfig = array{ - * secret?: scalar|null|Param, + * secret?: scalar|Param|null, * http_method_override?: bool|Param, // Set true to enable support for the '_method' request parameter to determine the intended HTTP method on POST requests. // Default: false * allowed_http_method_override?: list|null, - * trust_x_sendfile_type_header?: scalar|null|Param, // Set true to enable support for xsendfile in binary file responses. // Default: "%env(bool:default::SYMFONY_TRUST_X_SENDFILE_TYPE_HEADER)%" - * ide?: scalar|null|Param, // Default: "%env(default::SYMFONY_IDE)%" + * trust_x_sendfile_type_header?: scalar|Param|null, // Set true to enable support for xsendfile in binary file responses. // Default: "%env(bool:default::SYMFONY_TRUST_X_SENDFILE_TYPE_HEADER)%" + * ide?: scalar|Param|null, // Default: "%env(default::SYMFONY_IDE)%" * test?: bool|Param, - * default_locale?: scalar|null|Param, // Default: "en" + * default_locale?: scalar|Param|null, // Default: "en" * set_locale_from_accept_language?: bool|Param, // Whether to use the Accept-Language HTTP header to set the Request locale (only when the "_locale" request attribute is not passed). // Default: false * set_content_language_from_locale?: bool|Param, // Whether to set the Content-Language HTTP header on the Response using the Request locale. // Default: false - * enabled_locales?: list, - * trusted_hosts?: list, + * enabled_locales?: list, + * trusted_hosts?: list, * trusted_proxies?: mixed, // Default: ["%env(default::SYMFONY_TRUSTED_PROXIES)%"] - * trusted_headers?: list, - * error_controller?: scalar|null|Param, // Default: "error_controller" + * trusted_headers?: list, + * error_controller?: scalar|Param|null, // Default: "error_controller" * handle_all_throwables?: bool|Param, // HttpKernel will handle all kinds of \Throwable. // Default: true * csrf_protection?: bool|array{ - * enabled?: scalar|null|Param, // Default: null - * stateless_token_ids?: list, - * check_header?: scalar|null|Param, // Whether to check the CSRF token in a header in addition to a cookie when using stateless protection. // Default: false - * cookie_name?: scalar|null|Param, // The name of the cookie to use when using stateless protection. // Default: "csrf-token" + * enabled?: scalar|Param|null, // Default: null + * stateless_token_ids?: list, + * check_header?: scalar|Param|null, // Whether to check the CSRF token in a header in addition to a cookie when using stateless protection. // Default: false + * cookie_name?: scalar|Param|null, // The name of the cookie to use when using stateless protection. // Default: "csrf-token" * }, * form?: bool|array{ // Form configuration * enabled?: bool|Param, // Default: true - * csrf_protection?: array{ - * enabled?: scalar|null|Param, // Default: null - * token_id?: scalar|null|Param, // Default: null - * field_name?: scalar|null|Param, // Default: "_token" - * field_attr?: array, + * csrf_protection?: bool|array{ + * enabled?: scalar|Param|null, // Default: null + * token_id?: scalar|Param|null, // Default: null + * field_name?: scalar|Param|null, // Default: "_token" + * field_attr?: array, * }, * }, * http_cache?: bool|array{ // HTTP cache configuration * enabled?: bool|Param, // Default: false * debug?: bool|Param, // Default: "%kernel.debug%" * trace_level?: "none"|"short"|"full"|Param, - * trace_header?: scalar|null|Param, + * trace_header?: scalar|Param|null, * default_ttl?: int|Param, - * private_headers?: list, - * skip_response_headers?: list, + * private_headers?: list, + * skip_response_headers?: list, * allow_reload?: bool|Param, * allow_revalidate?: bool|Param, * stale_while_revalidate?: int|Param, @@ -178,16 +178,16 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * }, * fragments?: bool|array{ // Fragments configuration * enabled?: bool|Param, // Default: false - * hinclude_default_template?: scalar|null|Param, // Default: null - * path?: scalar|null|Param, // Default: "/_fragment" + * hinclude_default_template?: scalar|Param|null, // Default: null + * path?: scalar|Param|null, // Default: "/_fragment" * }, * profiler?: bool|array{ // Profiler configuration * enabled?: bool|Param, // Default: false * collect?: bool|Param, // Default: true - * collect_parameter?: scalar|null|Param, // The name of the parameter to use to enable or disable collection on a per request basis. // Default: null + * collect_parameter?: scalar|Param|null, // The name of the parameter to use to enable or disable collection on a per request basis. // Default: null * only_exceptions?: bool|Param, // Default: false * only_main_requests?: bool|Param, // Default: false - * dsn?: scalar|null|Param, // Default: "file:%kernel.cache_dir%/profiler" + * dsn?: scalar|Param|null, // Default: "file:%kernel.cache_dir%/profiler" * collect_serializer_data?: bool|Param, // Enables the serializer data collector and profiler panel. // Default: false * }, * workflows?: bool|array{ @@ -199,16 +199,16 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * type?: "workflow"|"state_machine"|Param, // Default: "state_machine" * marking_store?: array{ * type?: "method"|Param, - * property?: scalar|null|Param, - * service?: scalar|null|Param, + * property?: scalar|Param|null, + * service?: scalar|Param|null, * }, - * supports?: list, - * definition_validators?: list, - * support_strategy?: scalar|null|Param, - * initial_marking?: list, + * supports?: list, + * definition_validators?: list, + * support_strategy?: scalar|Param|null, + * initial_marking?: list, * events_to_dispatch?: list|null, * places?: list, * }>, * transitions: list>, + * formats?: array>, * }, * assets?: bool|array{ // Assets configuration * enabled?: bool|Param, // Default: true * strict_mode?: bool|Param, // Throw an exception if an entry is missing from the manifest.json. // Default: false - * version_strategy?: scalar|null|Param, // Default: null - * version?: scalar|null|Param, // Default: null - * version_format?: scalar|null|Param, // Default: "%%s?%%s" - * json_manifest_path?: scalar|null|Param, // Default: null - * base_path?: scalar|null|Param, // Default: "" - * base_urls?: list, + * version_strategy?: scalar|Param|null, // Default: null + * version?: scalar|Param|null, // Default: null + * version_format?: scalar|Param|null, // Default: "%%s?%%s" + * json_manifest_path?: scalar|Param|null, // Default: null + * base_path?: scalar|Param|null, // Default: "" + * base_urls?: list, * packages?: array, + * version_strategy?: scalar|Param|null, // Default: null + * version?: scalar|Param|null, + * version_format?: scalar|Param|null, // Default: null + * json_manifest_path?: scalar|Param|null, // Default: null + * base_path?: scalar|Param|null, // Default: "" + * base_urls?: list, * }>, * }, * asset_mapper?: bool|array{ // Asset Mapper configuration * enabled?: bool|Param, // Default: false - * paths?: array, - * excluded_patterns?: list, + * paths?: array, + * excluded_patterns?: list, * exclude_dotfiles?: bool|Param, // If true, any files starting with "." will be excluded from the asset mapper. // Default: true * server?: bool|Param, // If true, a "dev server" will return the assets from the public directory (true in "debug" mode only by default). // Default: true - * public_prefix?: scalar|null|Param, // The public path where the assets will be written to (and served from when "server" is true). // Default: "/assets/" + * public_prefix?: scalar|Param|null, // The public path where the assets will be written to (and served from when "server" is true). // Default: "/assets/" * missing_import_mode?: "strict"|"warn"|"ignore"|Param, // Behavior if an asset cannot be found when imported from JavaScript or CSS files - e.g. "import './non-existent.js'". "strict" means an exception is thrown, "warn" means a warning is logged, "ignore" means the import is left as-is. // Default: "warn" - * extensions?: array, - * importmap_path?: scalar|null|Param, // The path of the importmap.php file. // Default: "%kernel.project_dir%/importmap.php" - * importmap_polyfill?: scalar|null|Param, // The importmap name that will be used to load the polyfill. Set to false to disable. // Default: "es-module-shims" - * importmap_script_attributes?: array, - * vendor_dir?: scalar|null|Param, // The directory to store JavaScript vendors. // Default: "%kernel.project_dir%/assets/vendor" + * extensions?: array, + * importmap_path?: scalar|Param|null, // The path of the importmap.php file. // Default: "%kernel.project_dir%/importmap.php" + * importmap_polyfill?: scalar|Param|null, // The importmap name that will be used to load the polyfill. Set to false to disable. // Default: "es-module-shims" + * importmap_script_attributes?: array, + * vendor_dir?: scalar|Param|null, // The directory to store JavaScript vendors. // Default: "%kernel.project_dir%/assets/vendor" * precompress?: bool|array{ // Precompress assets with Brotli, Zstandard and gzip. * enabled?: bool|Param, // Default: false - * formats?: list, - * extensions?: list, + * formats?: list, + * extensions?: list, * }, * }, * translator?: bool|array{ // Translator configuration * enabled?: bool|Param, // Default: true - * fallbacks?: list, + * fallbacks?: list, * logging?: bool|Param, // Default: false - * formatter?: scalar|null|Param, // Default: "translator.formatter.default" - * cache_dir?: scalar|null|Param, // Default: "%kernel.cache_dir%/translations" - * default_path?: scalar|null|Param, // The default path used to load translations. // Default: "%kernel.project_dir%/translations" - * paths?: list, + * formatter?: scalar|Param|null, // Default: "translator.formatter.default" + * cache_dir?: scalar|Param|null, // Default: "%kernel.cache_dir%/translations" + * default_path?: scalar|Param|null, // The default path used to load translations. // Default: "%kernel.project_dir%/translations" + * paths?: list, * pseudo_localization?: bool|array{ * enabled?: bool|Param, // Default: false * accents?: bool|Param, // Default: true * expansion_factor?: float|Param, // Default: 1.0 * brackets?: bool|Param, // Default: true * parse_html?: bool|Param, // Default: false - * localizable_html_attributes?: list, + * localizable_html_attributes?: list, * }, * providers?: array, - * locales?: list, + * dsn?: scalar|Param|null, + * domains?: list, + * locales?: list, * }>, * globals?: array, + * parameters?: array, * domain?: string|Param, * }>, * }, * validation?: bool|array{ // Validation configuration * enabled?: bool|Param, // Default: true - * cache?: scalar|null|Param, // Deprecated: Setting the "framework.validation.cache.cache" configuration option is deprecated. It will be removed in version 8.0. + * cache?: scalar|Param|null, // Deprecated: Setting the "framework.validation.cache.cache" configuration option is deprecated. It will be removed in version 8.0. * enable_attributes?: bool|Param, // Default: true - * static_method?: list, - * translation_domain?: scalar|null|Param, // Default: "validators" + * static_method?: list, + * translation_domain?: scalar|Param|null, // Default: "validators" * email_validation_mode?: "html5"|"html5-allow-no-tld"|"strict"|"loose"|Param, // Default: "html5" * mapping?: array{ - * paths?: list, + * paths?: list, * }, * not_compromised_password?: bool|array{ * enabled?: bool|Param, // When disabled, compromised passwords will be accepted as valid. // Default: true - * endpoint?: scalar|null|Param, // API endpoint for the NotCompromisedPassword Validator. // Default: null + * endpoint?: scalar|Param|null, // API endpoint for the NotCompromisedPassword Validator. // Default: null * }, * disable_translation?: bool|Param, // Default: false * auto_mapping?: array, + * services?: list, * }>, * }, * annotations?: bool|array{ @@ -354,15 +354,15 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * serializer?: bool|array{ // Serializer configuration * enabled?: bool|Param, // Default: true * enable_attributes?: bool|Param, // Default: true - * name_converter?: scalar|null|Param, - * circular_reference_handler?: scalar|null|Param, - * max_depth_handler?: scalar|null|Param, + * name_converter?: scalar|Param|null, + * circular_reference_handler?: scalar|Param|null, + * max_depth_handler?: scalar|Param|null, * mapping?: array{ - * paths?: list, + * paths?: list, * }, * default_context?: list, * named_serializers?: array, * include_built_in_normalizers?: bool|Param, // Whether to include the built-in normalizers // Default: true * include_built_in_encoders?: bool|Param, // Whether to include the built-in encoders // Default: true @@ -378,31 +378,31 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * }, * type_info?: bool|array{ // Type info configuration * enabled?: bool|Param, // Default: true - * aliases?: array, + * aliases?: array, * }, * property_info?: bool|array{ // Property info configuration * enabled?: bool|Param, // Default: true * with_constructor_extractor?: bool|Param, // Registers the constructor extractor. * }, * cache?: array{ // Cache configuration - * prefix_seed?: scalar|null|Param, // Used to namespace cache keys when using several apps with the same shared backend. // Default: "_%kernel.project_dir%.%kernel.container_class%" - * app?: scalar|null|Param, // App related cache pools configuration. // Default: "cache.adapter.filesystem" - * system?: scalar|null|Param, // System related cache pools configuration. // Default: "cache.adapter.system" - * directory?: scalar|null|Param, // Default: "%kernel.share_dir%/pools/app" - * default_psr6_provider?: scalar|null|Param, - * default_redis_provider?: scalar|null|Param, // Default: "redis://localhost" - * default_valkey_provider?: scalar|null|Param, // Default: "valkey://localhost" - * default_memcached_provider?: scalar|null|Param, // Default: "memcached://localhost" - * default_doctrine_dbal_provider?: scalar|null|Param, // Default: "database_connection" - * default_pdo_provider?: scalar|null|Param, // Default: null + * prefix_seed?: scalar|Param|null, // Used to namespace cache keys when using several apps with the same shared backend. // Default: "_%kernel.project_dir%.%kernel.container_class%" + * app?: scalar|Param|null, // App related cache pools configuration. // Default: "cache.adapter.filesystem" + * system?: scalar|Param|null, // System related cache pools configuration. // Default: "cache.adapter.system" + * directory?: scalar|Param|null, // Default: "%kernel.share_dir%/pools/app" + * default_psr6_provider?: scalar|Param|null, + * default_redis_provider?: scalar|Param|null, // Default: "redis://localhost" + * default_valkey_provider?: scalar|Param|null, // Default: "valkey://localhost" + * default_memcached_provider?: scalar|Param|null, // Default: "memcached://localhost" + * default_doctrine_dbal_provider?: scalar|Param|null, // Default: "database_connection" + * default_pdo_provider?: scalar|Param|null, // Default: null * pools?: array, - * tags?: scalar|null|Param, // Default: null + * adapters?: list, + * tags?: scalar|Param|null, // Default: null * public?: bool|Param, // Default: false - * default_lifetime?: scalar|null|Param, // Default lifetime of the pool. - * provider?: scalar|null|Param, // Overwrite the setting from the default provider for this adapter. - * early_expiration_message_bus?: scalar|null|Param, - * clearer?: scalar|null|Param, + * default_lifetime?: scalar|Param|null, // Default lifetime of the pool. + * provider?: scalar|Param|null, // Overwrite the setting from the default provider for this adapter. + * early_expiration_message_bus?: scalar|Param|null, + * clearer?: scalar|Param|null, * }>, * }, * php_errors?: array{ // PHP errors handling configuration @@ -410,51 +410,51 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * throw?: bool|Param, // Throw PHP errors as \ErrorException instances. // Default: true * }, * exceptions?: array, * web_link?: bool|array{ // Web links configuration * enabled?: bool|Param, // Default: true * }, * lock?: bool|string|array{ // Lock configuration * enabled?: bool|Param, // Default: false - * resources?: array>, + * resources?: array>, * }, * semaphore?: bool|string|array{ // Semaphore configuration * enabled?: bool|Param, // Default: false - * resources?: array, + * resources?: array, * }, * messenger?: bool|array{ // Messenger configuration * enabled?: bool|Param, // Default: false * routing?: array, + * senders?: list, * }>, * serializer?: array{ - * default_serializer?: scalar|null|Param, // Service id to use as the default serializer for the transports. // Default: "messenger.transport.native_php_serializer" + * default_serializer?: scalar|Param|null, // Service id to use as the default serializer for the transports. // Default: "messenger.transport.native_php_serializer" * symfony_serializer?: array{ - * format?: scalar|null|Param, // Serialization format for the messenger.transport.symfony_serializer service (which is not the serializer used by default). // Default: "json" + * format?: scalar|Param|null, // Serialization format for the messenger.transport.symfony_serializer service (which is not the serializer used by default). // Default: "json" * context?: array, * }, * }, * transports?: array, - * failure_transport?: scalar|null|Param, // Transport name to send failed messages to (after all retries have failed). // Default: null + * failure_transport?: scalar|Param|null, // Transport name to send failed messages to (after all retries have failed). // Default: null * retry_strategy?: string|array{ - * service?: scalar|null|Param, // Service id to override the retry strategy entirely. // Default: null + * service?: scalar|Param|null, // Service id to override the retry strategy entirely. // Default: null * max_retries?: int|Param, // Default: 3 * delay?: int|Param, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 * multiplier?: float|Param, // If greater than 1, delay will grow exponentially for each retry: this delay = (delay * (multiple ^ retries)). // Default: 2 * max_delay?: int|Param, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 * jitter?: float|Param, // Randomness to apply to the delay (between 0 and 1). // Default: 0.1 * }, - * rate_limiter?: scalar|null|Param, // Rate limiter name to use when processing messages. // Default: null + * rate_limiter?: scalar|Param|null, // Rate limiter name to use when processing messages. // Default: null * }>, - * failure_transport?: scalar|null|Param, // Transport name to send failed messages to (after all retries have failed). // Default: null - * stop_worker_on_signals?: list, - * default_bus?: scalar|null|Param, // Default: null + * failure_transport?: scalar|Param|null, // Transport name to send failed messages to (after all retries have failed). // Default: null + * stop_worker_on_signals?: list, + * default_bus?: scalar|Param|null, // Default: null * buses?: array, * }>, * }>, @@ -478,29 +478,29 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * headers?: array, * vars?: array, * max_redirects?: int|Param, // The maximum number of redirects to follow. - * http_version?: scalar|null|Param, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. - * resolve?: array, - * proxy?: scalar|null|Param, // The URL of the proxy to pass requests through or null for automatic detection. - * no_proxy?: scalar|null|Param, // A comma separated list of hosts that do not require a proxy to be reached. + * http_version?: scalar|Param|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. + * resolve?: array, + * proxy?: scalar|Param|null, // The URL of the proxy to pass requests through or null for automatic detection. + * no_proxy?: scalar|Param|null, // A comma separated list of hosts that do not require a proxy to be reached. * timeout?: float|Param, // The idle timeout, defaults to the "default_socket_timeout" ini parameter. * max_duration?: float|Param, // The maximum execution time for the request+response as a whole. - * bindto?: scalar|null|Param, // A network interface name, IP address, a host name or a UNIX socket to bind to. + * bindto?: scalar|Param|null, // A network interface name, IP address, a host name or a UNIX socket to bind to. * verify_peer?: bool|Param, // Indicates if the peer should be verified in a TLS context. * verify_host?: bool|Param, // Indicates if the host should exist as a certificate common name. - * cafile?: scalar|null|Param, // A certificate authority file. - * capath?: scalar|null|Param, // A directory that contains multiple certificate authority files. - * local_cert?: scalar|null|Param, // A PEM formatted certificate file. - * local_pk?: scalar|null|Param, // A private key file. - * passphrase?: scalar|null|Param, // The passphrase used to encrypt the "local_pk" file. - * ciphers?: scalar|null|Param, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...) + * cafile?: scalar|Param|null, // A certificate authority file. + * capath?: scalar|Param|null, // A directory that contains multiple certificate authority files. + * local_cert?: scalar|Param|null, // A PEM formatted certificate file. + * local_pk?: scalar|Param|null, // A private key file. + * passphrase?: scalar|Param|null, // The passphrase used to encrypt the "local_pk" file. + * ciphers?: scalar|Param|null, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...) * peer_fingerprint?: array{ // Associative array: hashing algorithm => hash(es). * sha1?: mixed, * pin-sha256?: mixed, * md5?: mixed, * }, - * crypto_method?: scalar|null|Param, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. + * crypto_method?: scalar|Param|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. * extra?: array, - * rate_limiter?: scalar|null|Param, // Rate limiter name to use for throttling requests. // Default: null + * rate_limiter?: scalar|Param|null, // Rate limiter name to use for throttling requests. // Default: null * caching?: bool|array{ // Caching configuration. * enabled?: bool|Param, // Default: false * cache_pool?: string|Param, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" @@ -509,7 +509,7 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * }, * retry_failed?: bool|array{ * enabled?: bool|Param, // Default: false - * retry_strategy?: scalar|null|Param, // service id to override the retry strategy. // Default: null + * retry_strategy?: scalar|Param|null, // service id to override the retry strategy. // Default: null * http_codes?: array, @@ -521,39 +521,39 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * jitter?: float|Param, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 * }, * }, - * mock_response_factory?: scalar|null|Param, // The id of the service that should generate mock responses. It should be either an invokable or an iterable. + * mock_response_factory?: scalar|Param|null, // The id of the service that should generate mock responses. It should be either an invokable or an iterable. * scoped_clients?: array, + * scope?: scalar|Param|null, // The regular expression that the request URL must match before adding the other options. When none is provided, the base URI is used instead. + * base_uri?: scalar|Param|null, // The URI to resolve relative URLs, following rules in RFC 3985, section 2. + * auth_basic?: scalar|Param|null, // An HTTP Basic authentication "username:password". + * auth_bearer?: scalar|Param|null, // A token enabling HTTP Bearer authorization. + * auth_ntlm?: scalar|Param|null, // A "username:password" pair to use Microsoft NTLM authentication (requires the cURL extension). + * query?: array, * headers?: array, * max_redirects?: int|Param, // The maximum number of redirects to follow. - * http_version?: scalar|null|Param, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. - * resolve?: array, - * proxy?: scalar|null|Param, // The URL of the proxy to pass requests through or null for automatic detection. - * no_proxy?: scalar|null|Param, // A comma separated list of hosts that do not require a proxy to be reached. + * http_version?: scalar|Param|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. + * resolve?: array, + * proxy?: scalar|Param|null, // The URL of the proxy to pass requests through or null for automatic detection. + * no_proxy?: scalar|Param|null, // A comma separated list of hosts that do not require a proxy to be reached. * timeout?: float|Param, // The idle timeout, defaults to the "default_socket_timeout" ini parameter. * max_duration?: float|Param, // The maximum execution time for the request+response as a whole. - * bindto?: scalar|null|Param, // A network interface name, IP address, a host name or a UNIX socket to bind to. + * bindto?: scalar|Param|null, // A network interface name, IP address, a host name or a UNIX socket to bind to. * verify_peer?: bool|Param, // Indicates if the peer should be verified in a TLS context. * verify_host?: bool|Param, // Indicates if the host should exist as a certificate common name. - * cafile?: scalar|null|Param, // A certificate authority file. - * capath?: scalar|null|Param, // A directory that contains multiple certificate authority files. - * local_cert?: scalar|null|Param, // A PEM formatted certificate file. - * local_pk?: scalar|null|Param, // A private key file. - * passphrase?: scalar|null|Param, // The passphrase used to encrypt the "local_pk" file. - * ciphers?: scalar|null|Param, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...). + * cafile?: scalar|Param|null, // A certificate authority file. + * capath?: scalar|Param|null, // A directory that contains multiple certificate authority files. + * local_cert?: scalar|Param|null, // A PEM formatted certificate file. + * local_pk?: scalar|Param|null, // A private key file. + * passphrase?: scalar|Param|null, // The passphrase used to encrypt the "local_pk" file. + * ciphers?: scalar|Param|null, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...). * peer_fingerprint?: array{ // Associative array: hashing algorithm => hash(es). * sha1?: mixed, * pin-sha256?: mixed, * md5?: mixed, * }, - * crypto_method?: scalar|null|Param, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. + * crypto_method?: scalar|Param|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. * extra?: array, - * rate_limiter?: scalar|null|Param, // Rate limiter name to use for throttling requests. // Default: null + * rate_limiter?: scalar|Param|null, // Rate limiter name to use for throttling requests. // Default: null * caching?: bool|array{ // Caching configuration. * enabled?: bool|Param, // Default: false * cache_pool?: string|Param, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" @@ -562,7 +562,7 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * }, * retry_failed?: bool|array{ * enabled?: bool|Param, // Default: false - * retry_strategy?: scalar|null|Param, // service id to override the retry strategy. // Default: null + * retry_strategy?: scalar|Param|null, // service id to override the retry strategy. // Default: null * http_codes?: array, @@ -577,69 +577,69 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * }, * mailer?: bool|array{ // Mailer configuration * enabled?: bool|Param, // Default: true - * message_bus?: scalar|null|Param, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null - * dsn?: scalar|null|Param, // Default: null - * transports?: array, + * message_bus?: scalar|Param|null, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null + * dsn?: scalar|Param|null, // Default: null + * transports?: array, * envelope?: array{ // Mailer Envelope configuration - * sender?: scalar|null|Param, - * recipients?: list, - * allowed_recipients?: list, + * sender?: scalar|Param|null, + * recipients?: list, + * allowed_recipients?: list, * }, * headers?: array, * dkim_signer?: bool|array{ // DKIM signer configuration * enabled?: bool|Param, // Default: false - * key?: scalar|null|Param, // Key content, or path to key (in PEM format with the `file://` prefix) // Default: "" - * domain?: scalar|null|Param, // Default: "" - * select?: scalar|null|Param, // Default: "" - * passphrase?: scalar|null|Param, // The private key passphrase // Default: "" + * key?: scalar|Param|null, // Key content, or path to key (in PEM format with the `file://` prefix) // Default: "" + * domain?: scalar|Param|null, // Default: "" + * select?: scalar|Param|null, // Default: "" + * passphrase?: scalar|Param|null, // The private key passphrase // Default: "" * options?: array, * }, * smime_signer?: bool|array{ // S/MIME signer configuration * enabled?: bool|Param, // Default: false - * key?: scalar|null|Param, // Path to key (in PEM format) // Default: "" - * certificate?: scalar|null|Param, // Path to certificate (in PEM format without the `file://` prefix) // Default: "" - * passphrase?: scalar|null|Param, // The private key passphrase // Default: null - * extra_certificates?: scalar|null|Param, // Default: null + * key?: scalar|Param|null, // Path to key (in PEM format) // Default: "" + * certificate?: scalar|Param|null, // Path to certificate (in PEM format without the `file://` prefix) // Default: "" + * passphrase?: scalar|Param|null, // The private key passphrase // Default: null + * extra_certificates?: scalar|Param|null, // Default: null * sign_options?: int|Param, // Default: null * }, * smime_encrypter?: bool|array{ // S/MIME encrypter configuration * enabled?: bool|Param, // Default: false - * repository?: scalar|null|Param, // S/MIME certificate repository service. This service shall implement the `Symfony\Component\Mailer\EventListener\SmimeCertificateRepositoryInterface`. // Default: "" + * repository?: scalar|Param|null, // S/MIME certificate repository service. This service shall implement the `Symfony\Component\Mailer\EventListener\SmimeCertificateRepositoryInterface`. // Default: "" * cipher?: int|Param, // A set of algorithms used to encrypt the message // Default: null * }, * }, * secrets?: bool|array{ * enabled?: bool|Param, // Default: true - * vault_directory?: scalar|null|Param, // Default: "%kernel.project_dir%/config/secrets/%kernel.runtime_environment%" - * local_dotenv_file?: scalar|null|Param, // Default: "%kernel.project_dir%/.env.%kernel.runtime_environment%.local" - * decryption_env_var?: scalar|null|Param, // Default: "base64:default::SYMFONY_DECRYPTION_SECRET" + * vault_directory?: scalar|Param|null, // Default: "%kernel.project_dir%/config/secrets/%kernel.runtime_environment%" + * local_dotenv_file?: scalar|Param|null, // Default: "%kernel.project_dir%/.env.%kernel.environment%.local" + * decryption_env_var?: scalar|Param|null, // Default: "base64:default::SYMFONY_DECRYPTION_SECRET" * }, * notifier?: bool|array{ // Notifier configuration * enabled?: bool|Param, // Default: false - * message_bus?: scalar|null|Param, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null - * chatter_transports?: array, - * texter_transports?: array, + * message_bus?: scalar|Param|null, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null + * chatter_transports?: array, + * texter_transports?: array, * notification_on_failed_messages?: bool|Param, // Default: false - * channel_policy?: array>, + * channel_policy?: array>, * admin_recipients?: list, * }, * rate_limiter?: bool|array{ // Rate limiter configuration * enabled?: bool|Param, // Default: true * limiters?: array, + * limiters?: list, * limit?: int|Param, // The maximum allowed hits in a fixed interval or burst. - * interval?: scalar|null|Param, // Configures the fixed interval if "policy" is set to "fixed_window" or "sliding_window". The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). + * interval?: scalar|Param|null, // Configures the fixed interval if "policy" is set to "fixed_window" or "sliding_window". The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). * rate?: array{ // Configures the fill rate if "policy" is set to "token_bucket". - * interval?: scalar|null|Param, // Configures the rate interval. The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). + * interval?: scalar|Param|null, // Configures the rate interval. The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). * amount?: int|Param, // Amount of tokens to add each interval. // Default: 1 * }, * }>, @@ -648,9 +648,9 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * enabled?: bool|Param, // Default: true * default_uuid_version?: 7|6|4|1|Param, // Default: 7 * name_based_uuid_version?: 5|3|Param, // Default: 5 - * name_based_uuid_namespace?: scalar|null|Param, + * name_based_uuid_namespace?: scalar|Param|null, * time_based_uuid_version?: 7|6|1|Param, // Default: 7 - * time_based_uuid_node?: scalar|null|Param, + * time_based_uuid_node?: scalar|Param|null, * }, * html_sanitizer?: bool|array{ // HtmlSanitizer configuration * enabled?: bool|Param, // Default: false @@ -677,10 +677,10 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * }, * webhook?: bool|array{ // Webhook configuration * enabled?: bool|Param, // Default: false - * message_bus?: scalar|null|Param, // The message bus to use. // Default: "messenger.default_bus" + * message_bus?: scalar|Param|null, // The message bus to use. // Default: "messenger.default_bus" * routing?: array, * }, * remote-event?: bool|array{ // RemoteEvent configuration @@ -692,679 +692,679 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * } * @psalm-type DoctrineConfig = array{ * dbal?: array{ - * default_connection?: scalar|null|Param, + * default_connection?: scalar|Param|null, * types?: array, - * driver_schemes?: array, + * driver_schemes?: array, * connections?: array, - * mapping_types?: array, - * default_table_options?: array, - * schema_manager_factory?: scalar|null|Param, // Default: "doctrine.dbal.default_schema_manager_factory" - * result_cache?: scalar|null|Param, + * mapping_types?: array, + * default_table_options?: array, + * schema_manager_factory?: scalar|Param|null, // Default: "doctrine.dbal.default_schema_manager_factory" + * result_cache?: scalar|Param|null, * slaves?: array, * replicas?: array, * }>, * }, * orm?: array{ - * default_entity_manager?: scalar|null|Param, - * auto_generate_proxy_classes?: scalar|null|Param, // Auto generate mode possible values are: "NEVER", "ALWAYS", "FILE_NOT_EXISTS", "EVAL", "FILE_NOT_EXISTS_OR_CHANGED", this option is ignored when the "enable_native_lazy_objects" option is true // Default: false + * default_entity_manager?: scalar|Param|null, + * auto_generate_proxy_classes?: scalar|Param|null, // Auto generate mode possible values are: "NEVER", "ALWAYS", "FILE_NOT_EXISTS", "EVAL", "FILE_NOT_EXISTS_OR_CHANGED", this option is ignored when the "enable_native_lazy_objects" option is true // Default: false * enable_lazy_ghost_objects?: bool|Param, // Enables the new implementation of proxies based on lazy ghosts instead of using the legacy implementation // Default: true * enable_native_lazy_objects?: bool|Param, // Enables the new native implementation of PHP lazy objects instead of generated proxies // Default: false - * proxy_dir?: scalar|null|Param, // Configures the path where generated proxy classes are saved when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true // Default: "%kernel.build_dir%/doctrine/orm/Proxies" - * proxy_namespace?: scalar|null|Param, // Defines the root namespace for generated proxy classes when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true // Default: "Proxies" + * proxy_dir?: scalar|Param|null, // Configures the path where generated proxy classes are saved when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true // Default: "%kernel.build_dir%/doctrine/orm/Proxies" + * proxy_namespace?: scalar|Param|null, // Defines the root namespace for generated proxy classes when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true // Default: "Proxies" * controller_resolver?: bool|array{ * enabled?: bool|Param, // Default: true - * auto_mapping?: bool|null|Param, // Set to false to disable using route placeholders as lookup criteria when the primary key doesn't match the argument name // Default: null + * auto_mapping?: bool|Param|null, // Set to false to disable using route placeholders as lookup criteria when the primary key doesn't match the argument name // Default: null * evict_cache?: bool|Param, // Set to true to fetch the entity from the database instead of using the cache, if any // Default: false * }, * entity_managers?: array, * }>, * }>, * }, - * connection?: scalar|null|Param, - * class_metadata_factory_name?: scalar|null|Param, // Default: "Doctrine\\ORM\\Mapping\\ClassMetadataFactory" - * default_repository_class?: scalar|null|Param, // Default: "Doctrine\\ORM\\EntityRepository" - * auto_mapping?: scalar|null|Param, // Default: false - * naming_strategy?: scalar|null|Param, // Default: "doctrine.orm.naming_strategy.default" - * quote_strategy?: scalar|null|Param, // Default: "doctrine.orm.quote_strategy.default" - * typed_field_mapper?: scalar|null|Param, // Default: "doctrine.orm.typed_field_mapper.default" - * entity_listener_resolver?: scalar|null|Param, // Default: null - * fetch_mode_subselect_batch_size?: scalar|null|Param, - * repository_factory?: scalar|null|Param, // Default: "doctrine.orm.container_repository_factory" - * schema_ignore_classes?: list, + * connection?: scalar|Param|null, + * class_metadata_factory_name?: scalar|Param|null, // Default: "Doctrine\\ORM\\Mapping\\ClassMetadataFactory" + * default_repository_class?: scalar|Param|null, // Default: "Doctrine\\ORM\\EntityRepository" + * auto_mapping?: scalar|Param|null, // Default: false + * naming_strategy?: scalar|Param|null, // Default: "doctrine.orm.naming_strategy.default" + * quote_strategy?: scalar|Param|null, // Default: "doctrine.orm.quote_strategy.default" + * typed_field_mapper?: scalar|Param|null, // Default: "doctrine.orm.typed_field_mapper.default" + * entity_listener_resolver?: scalar|Param|null, // Default: null + * fetch_mode_subselect_batch_size?: scalar|Param|null, + * repository_factory?: scalar|Param|null, // Default: "doctrine.orm.container_repository_factory" + * schema_ignore_classes?: list, * report_fields_where_declared?: bool|Param, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.16 and will be mandatory in ORM 3.0. See https://github.com/doctrine/orm/pull/10455. // Default: true * validate_xml_mapping?: bool|Param, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.14. See https://github.com/doctrine/orm/pull/6728. // Default: false * second_level_cache?: array{ * region_cache_driver?: string|array{ - * type?: scalar|null|Param, // Default: null - * id?: scalar|null|Param, - * pool?: scalar|null|Param, + * type?: scalar|Param|null, // Default: null + * id?: scalar|Param|null, + * pool?: scalar|Param|null, * }, - * region_lock_lifetime?: scalar|null|Param, // Default: 60 + * region_lock_lifetime?: scalar|Param|null, // Default: 60 * log_enabled?: bool|Param, // Default: true - * region_lifetime?: scalar|null|Param, // Default: 3600 + * region_lifetime?: scalar|Param|null, // Default: 3600 * enabled?: bool|Param, // Default: true - * factory?: scalar|null|Param, + * factory?: scalar|Param|null, * regions?: array, * loggers?: array, * }, - * hydrators?: array, + * hydrators?: array, * mappings?: array, * dql?: array{ - * string_functions?: array, - * numeric_functions?: array, - * datetime_functions?: array, + * string_functions?: array, + * numeric_functions?: array, + * datetime_functions?: array, * }, * filters?: array, * }>, - * identity_generation_preferences?: array, + * identity_generation_preferences?: array, * }>, - * resolve_target_entities?: array, + * resolve_target_entities?: array, * }, * } * @psalm-type DoctrineMigrationsConfig = array{ * enable_service_migrations?: bool|Param, // Whether to enable fetching migrations from the service container. // Default: false - * migrations_paths?: array, - * services?: array, - * factories?: array, + * migrations_paths?: array, + * services?: array, + * factories?: array, * storage?: array{ // Storage to use for migration status metadata. * table_storage?: array{ // The default metadata storage, implemented as a table in the database. - * table_name?: scalar|null|Param, // Default: null - * version_column_name?: scalar|null|Param, // Default: null - * version_column_length?: scalar|null|Param, // Default: null - * executed_at_column_name?: scalar|null|Param, // Default: null - * execution_time_column_name?: scalar|null|Param, // Default: null + * table_name?: scalar|Param|null, // Default: null + * version_column_name?: scalar|Param|null, // Default: null + * version_column_length?: scalar|Param|null, // Default: null + * executed_at_column_name?: scalar|Param|null, // Default: null + * execution_time_column_name?: scalar|Param|null, // Default: null * }, * }, - * migrations?: list, - * connection?: scalar|null|Param, // Connection name to use for the migrations database. // Default: null - * em?: scalar|null|Param, // Entity manager name to use for the migrations database (available when doctrine/orm is installed). // Default: null - * all_or_nothing?: scalar|null|Param, // Run all migrations in a transaction. // Default: false - * check_database_platform?: scalar|null|Param, // Adds an extra check in the generated migrations to allow execution only on the same platform as they were initially generated on. // Default: true - * custom_template?: scalar|null|Param, // Custom template path for generated migration classes. // Default: null - * organize_migrations?: scalar|null|Param, // Organize migrations mode. Possible values are: "BY_YEAR", "BY_YEAR_AND_MONTH", false // Default: false + * migrations?: list, + * connection?: scalar|Param|null, // Connection name to use for the migrations database. // Default: null + * em?: scalar|Param|null, // Entity manager name to use for the migrations database (available when doctrine/orm is installed). // Default: null + * all_or_nothing?: scalar|Param|null, // Run all migrations in a transaction. // Default: false + * check_database_platform?: scalar|Param|null, // Adds an extra check in the generated migrations to allow execution only on the same platform as they were initially generated on. // Default: true + * custom_template?: scalar|Param|null, // Custom template path for generated migration classes. // Default: null + * organize_migrations?: scalar|Param|null, // Organize migrations mode. Possible values are: "BY_YEAR", "BY_YEAR_AND_MONTH", false // Default: false * enable_profiler?: bool|Param, // Whether or not to enable the profiler collector to calculate and visualize migration status. This adds some queries overhead. // Default: false * transactional?: bool|Param, // Whether or not to wrap migrations in a single transaction. // Default: true * } * @psalm-type SecurityConfig = array{ - * access_denied_url?: scalar|null|Param, // Default: null + * access_denied_url?: scalar|Param|null, // Default: null * session_fixation_strategy?: "none"|"migrate"|"invalidate"|Param, // Default: "migrate" * hide_user_not_found?: bool|Param, // Deprecated: The "hide_user_not_found" option is deprecated and will be removed in 8.0. Use the "expose_security_errors" option instead. * expose_security_errors?: \Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::None|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::AccountStatus|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::All|Param, // Default: "none" * erase_credentials?: bool|Param, // Default: true * access_decision_manager?: array{ * strategy?: "affirmative"|"consensus"|"unanimous"|"priority"|Param, - * service?: scalar|null|Param, - * strategy_service?: scalar|null|Param, + * service?: scalar|Param|null, + * strategy_service?: scalar|Param|null, * allow_if_all_abstain?: bool|Param, // Default: false * allow_if_equal_granted_denied?: bool|Param, // Default: true * }, * password_hashers?: array, - * hash_algorithm?: scalar|null|Param, // Name of hashing algorithm for PBKDF2 (i.e. sha256, sha512, etc..) See hash_algos() for a list of supported algorithms. // Default: "sha512" - * key_length?: scalar|null|Param, // Default: 40 + * algorithm?: scalar|Param|null, + * migrate_from?: list, + * hash_algorithm?: scalar|Param|null, // Name of hashing algorithm for PBKDF2 (i.e. sha256, sha512, etc..) See hash_algos() for a list of supported algorithms. // Default: "sha512" + * key_length?: scalar|Param|null, // Default: 40 * ignore_case?: bool|Param, // Default: false * encode_as_base64?: bool|Param, // Default: true - * iterations?: scalar|null|Param, // Default: 5000 + * iterations?: scalar|Param|null, // Default: 5000 * cost?: int|Param, // Default: null - * memory_cost?: scalar|null|Param, // Default: null - * time_cost?: scalar|null|Param, // Default: null - * id?: scalar|null|Param, + * memory_cost?: scalar|Param|null, // Default: null + * time_cost?: scalar|Param|null, // Default: null + * id?: scalar|Param|null, * }>, * providers?: array, + * providers?: list, * }, * entity?: array{ - * class: scalar|null|Param, // The full entity class name of your user class. - * property?: scalar|null|Param, // Default: null - * manager_name?: scalar|null|Param, // Default: null + * class: scalar|Param|null, // The full entity class name of your user class. + * property?: scalar|Param|null, // Default: null + * manager_name?: scalar|Param|null, // Default: null * }, * memory?: array{ * users?: array, + * password?: scalar|Param|null, // Default: null + * roles?: list, * }>, * }, * ldap?: array{ - * service: scalar|null|Param, - * base_dn: scalar|null|Param, - * search_dn?: scalar|null|Param, // Default: null - * search_password?: scalar|null|Param, // Default: null - * extra_fields?: list, - * default_roles?: list, - * role_fetcher?: scalar|null|Param, // Default: null - * uid_key?: scalar|null|Param, // Default: "sAMAccountName" - * filter?: scalar|null|Param, // Default: "({uid_key}={user_identifier})" - * password_attribute?: scalar|null|Param, // Default: null + * service: scalar|Param|null, + * base_dn: scalar|Param|null, + * search_dn?: scalar|Param|null, // Default: null + * search_password?: scalar|Param|null, // Default: null + * extra_fields?: list, + * default_roles?: list, + * role_fetcher?: scalar|Param|null, // Default: null + * uid_key?: scalar|Param|null, // Default: "sAMAccountName" + * filter?: scalar|Param|null, // Default: "({uid_key}={user_identifier})" + * password_attribute?: scalar|Param|null, // Default: null * }, * saml?: array{ - * user_class: scalar|null|Param, - * default_roles?: list, + * user_class: scalar|Param|null, + * default_roles?: list, * }, * }>, * firewalls: array, + * pattern?: scalar|Param|null, + * host?: scalar|Param|null, + * methods?: list, * security?: bool|Param, // Default: true - * user_checker?: scalar|null|Param, // The UserChecker to use when authenticating users in this firewall. // Default: "security.user_checker" - * request_matcher?: scalar|null|Param, - * access_denied_url?: scalar|null|Param, - * access_denied_handler?: scalar|null|Param, - * entry_point?: scalar|null|Param, // An enabled authenticator name or a service id that implements "Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface". - * provider?: scalar|null|Param, + * user_checker?: scalar|Param|null, // The UserChecker to use when authenticating users in this firewall. // Default: "security.user_checker" + * request_matcher?: scalar|Param|null, + * access_denied_url?: scalar|Param|null, + * access_denied_handler?: scalar|Param|null, + * entry_point?: scalar|Param|null, // An enabled authenticator name or a service id that implements "Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface". + * provider?: scalar|Param|null, * stateless?: bool|Param, // Default: false * lazy?: bool|Param, // Default: false - * context?: scalar|null|Param, + * context?: scalar|Param|null, * logout?: array{ - * enable_csrf?: bool|null|Param, // Default: null - * csrf_token_id?: scalar|null|Param, // Default: "logout" - * csrf_parameter?: scalar|null|Param, // Default: "_csrf_token" - * csrf_token_manager?: scalar|null|Param, - * path?: scalar|null|Param, // Default: "/logout" - * target?: scalar|null|Param, // Default: "/" + * enable_csrf?: bool|Param|null, // Default: null + * csrf_token_id?: scalar|Param|null, // Default: "logout" + * csrf_parameter?: scalar|Param|null, // Default: "_csrf_token" + * csrf_token_manager?: scalar|Param|null, + * path?: scalar|Param|null, // Default: "/logout" + * target?: scalar|Param|null, // Default: "/" * invalidate_session?: bool|Param, // Default: true * clear_site_data?: list<"*"|"cache"|"cookies"|"storage"|"executionContexts"|Param>, * delete_cookies?: array, * }, * switch_user?: array{ - * provider?: scalar|null|Param, - * parameter?: scalar|null|Param, // Default: "_switch_user" - * role?: scalar|null|Param, // Default: "ROLE_ALLOWED_TO_SWITCH" - * target_route?: scalar|null|Param, // Default: null + * provider?: scalar|Param|null, + * parameter?: scalar|Param|null, // Default: "_switch_user" + * role?: scalar|Param|null, // Default: "ROLE_ALLOWED_TO_SWITCH" + * target_route?: scalar|Param|null, // Default: null * }, - * required_badges?: list, - * custom_authenticators?: list, + * required_badges?: list, + * custom_authenticators?: list, * login_throttling?: array{ - * limiter?: scalar|null|Param, // A service id implementing "Symfony\Component\HttpFoundation\RateLimiter\RequestRateLimiterInterface". + * limiter?: scalar|Param|null, // A service id implementing "Symfony\Component\HttpFoundation\RateLimiter\RequestRateLimiterInterface". * max_attempts?: int|Param, // Default: 5 - * interval?: scalar|null|Param, // Default: "1 minute" - * lock_factory?: scalar|null|Param, // The service ID of the lock factory used by the login rate limiter (or null to disable locking). // Default: null + * interval?: scalar|Param|null, // Default: "1 minute" + * lock_factory?: scalar|Param|null, // The service ID of the lock factory used by the login rate limiter (or null to disable locking). // Default: null * cache_pool?: string|Param, // The cache pool to use for storing the limiter state // Default: "cache.rate_limiter" * storage_service?: string|Param, // The service ID of a custom storage implementation, this precedes any configured "cache_pool" // Default: null * }, * two_factor?: array{ - * check_path?: scalar|null|Param, // Default: "/2fa_check" + * check_path?: scalar|Param|null, // Default: "/2fa_check" * post_only?: bool|Param, // Default: true - * auth_form_path?: scalar|null|Param, // Default: "/2fa" + * auth_form_path?: scalar|Param|null, // Default: "/2fa" * always_use_default_target_path?: bool|Param, // Default: false - * default_target_path?: scalar|null|Param, // Default: "/" - * success_handler?: scalar|null|Param, // Default: null - * failure_handler?: scalar|null|Param, // Default: null - * authentication_required_handler?: scalar|null|Param, // Default: null - * auth_code_parameter_name?: scalar|null|Param, // Default: "_auth_code" - * trusted_parameter_name?: scalar|null|Param, // Default: "_trusted" - * remember_me_sets_trusted?: scalar|null|Param, // Default: false + * default_target_path?: scalar|Param|null, // Default: "/" + * success_handler?: scalar|Param|null, // Default: null + * failure_handler?: scalar|Param|null, // Default: null + * authentication_required_handler?: scalar|Param|null, // Default: null + * auth_code_parameter_name?: scalar|Param|null, // Default: "_auth_code" + * trusted_parameter_name?: scalar|Param|null, // Default: "_trusted" + * remember_me_sets_trusted?: scalar|Param|null, // Default: false * multi_factor?: bool|Param, // Default: false * prepare_on_login?: bool|Param, // Default: false * prepare_on_access_denied?: bool|Param, // Default: false - * enable_csrf?: scalar|null|Param, // Default: false - * csrf_parameter?: scalar|null|Param, // Default: "_csrf_token" - * csrf_token_id?: scalar|null|Param, // Default: "two_factor" - * csrf_header?: scalar|null|Param, // Default: null - * csrf_token_manager?: scalar|null|Param, // Default: "scheb_two_factor.csrf_token_manager" - * provider?: scalar|null|Param, // Default: null + * enable_csrf?: scalar|Param|null, // Default: false + * csrf_parameter?: scalar|Param|null, // Default: "_csrf_token" + * csrf_token_id?: scalar|Param|null, // Default: "two_factor" + * csrf_header?: scalar|Param|null, // Default: null + * csrf_token_manager?: scalar|Param|null, // Default: "scheb_two_factor.csrf_token_manager" + * provider?: scalar|Param|null, // Default: null * }, * webauthn?: array{ - * user_provider?: scalar|null|Param, // Default: null - * options_storage?: scalar|null|Param, // Deprecated: The child node "options_storage" at path "security.firewalls..webauthn.options_storage" is deprecated. Please use the root option "options_storage" instead. // Default: null - * success_handler?: scalar|null|Param, // Default: "Webauthn\\Bundle\\Security\\Handler\\DefaultSuccessHandler" - * failure_handler?: scalar|null|Param, // Default: "Webauthn\\Bundle\\Security\\Handler\\DefaultFailureHandler" - * secured_rp_ids?: array, + * user_provider?: scalar|Param|null, // Default: null + * options_storage?: scalar|Param|null, // Deprecated: The child node "options_storage" at path "security.firewalls..webauthn.options_storage" is deprecated. Please use the root option "options_storage" instead. // Default: null + * success_handler?: scalar|Param|null, // Default: "Webauthn\\Bundle\\Security\\Handler\\DefaultSuccessHandler" + * failure_handler?: scalar|Param|null, // Default: "Webauthn\\Bundle\\Security\\Handler\\DefaultFailureHandler" + * secured_rp_ids?: array, * authentication?: bool|array{ * enabled?: bool|Param, // Default: true - * profile?: scalar|null|Param, // Default: "default" - * options_builder?: scalar|null|Param, // Default: null + * profile?: scalar|Param|null, // Default: "default" + * options_builder?: scalar|Param|null, // Default: null * routes?: array{ - * host?: scalar|null|Param, // Default: null - * options_method?: scalar|null|Param, // Default: "POST" - * options_path?: scalar|null|Param, // Default: "/login/options" - * result_method?: scalar|null|Param, // Default: "POST" - * result_path?: scalar|null|Param, // Default: "/login" + * host?: scalar|Param|null, // Default: null + * options_method?: scalar|Param|null, // Default: "POST" + * options_path?: scalar|Param|null, // Default: "/login/options" + * result_method?: scalar|Param|null, // Default: "POST" + * result_path?: scalar|Param|null, // Default: "/login" * }, - * options_handler?: scalar|null|Param, // Default: "Webauthn\\Bundle\\Security\\Handler\\DefaultRequestOptionsHandler" + * options_handler?: scalar|Param|null, // Default: "Webauthn\\Bundle\\Security\\Handler\\DefaultRequestOptionsHandler" * }, * registration?: bool|array{ * enabled?: bool|Param, // Default: false - * profile?: scalar|null|Param, // Default: "default" - * options_builder?: scalar|null|Param, // Default: null + * profile?: scalar|Param|null, // Default: "default" + * options_builder?: scalar|Param|null, // Default: null * routes?: array{ - * host?: scalar|null|Param, // Default: null - * options_method?: scalar|null|Param, // Default: "POST" - * options_path?: scalar|null|Param, // Default: "/register/options" - * result_method?: scalar|null|Param, // Default: "POST" - * result_path?: scalar|null|Param, // Default: "/register" + * host?: scalar|Param|null, // Default: null + * options_method?: scalar|Param|null, // Default: "POST" + * options_path?: scalar|Param|null, // Default: "/register/options" + * result_method?: scalar|Param|null, // Default: "POST" + * result_path?: scalar|Param|null, // Default: "/register" * }, - * options_handler?: scalar|null|Param, // Default: "Webauthn\\Bundle\\Security\\Handler\\DefaultCreationOptionsHandler" + * options_handler?: scalar|Param|null, // Default: "Webauthn\\Bundle\\Security\\Handler\\DefaultCreationOptionsHandler" * }, * }, * x509?: array{ - * provider?: scalar|null|Param, - * user?: scalar|null|Param, // Default: "SSL_CLIENT_S_DN_Email" - * credentials?: scalar|null|Param, // Default: "SSL_CLIENT_S_DN" - * user_identifier?: scalar|null|Param, // Default: "emailAddress" + * provider?: scalar|Param|null, + * user?: scalar|Param|null, // Default: "SSL_CLIENT_S_DN_Email" + * credentials?: scalar|Param|null, // Default: "SSL_CLIENT_S_DN" + * user_identifier?: scalar|Param|null, // Default: "emailAddress" * }, * remote_user?: array{ - * provider?: scalar|null|Param, - * user?: scalar|null|Param, // Default: "REMOTE_USER" + * provider?: scalar|Param|null, + * user?: scalar|Param|null, // Default: "REMOTE_USER" * }, * saml?: array{ - * provider?: scalar|null|Param, + * provider?: scalar|Param|null, * remember_me?: bool|Param, // Default: true - * success_handler?: scalar|null|Param, // Default: "Nbgrp\\OneloginSamlBundle\\Security\\Http\\Authentication\\SamlAuthenticationSuccessHandler" - * failure_handler?: scalar|null|Param, - * check_path?: scalar|null|Param, // Default: "/login_check" + * success_handler?: scalar|Param|null, // Default: "Nbgrp\\OneloginSamlBundle\\Security\\Http\\Authentication\\SamlAuthenticationSuccessHandler" + * failure_handler?: scalar|Param|null, + * check_path?: scalar|Param|null, // Default: "/login_check" * use_forward?: bool|Param, // Default: false - * login_path?: scalar|null|Param, // Default: "/login" - * identifier_attribute?: scalar|null|Param, // Default: null + * login_path?: scalar|Param|null, // Default: "/login" + * identifier_attribute?: scalar|Param|null, // Default: null * use_attribute_friendly_name?: bool|Param, // Default: false - * user_factory?: scalar|null|Param, // Default: null - * token_factory?: scalar|null|Param, // Default: null + * user_factory?: scalar|Param|null, // Default: null + * token_factory?: scalar|Param|null, // Default: null * persist_user?: bool|Param, // Default: false * always_use_default_target_path?: bool|Param, // Default: false - * default_target_path?: scalar|null|Param, // Default: "/" - * target_path_parameter?: scalar|null|Param, // Default: "_target_path" + * default_target_path?: scalar|Param|null, // Default: "/" + * target_path_parameter?: scalar|Param|null, // Default: "_target_path" * use_referer?: bool|Param, // Default: false - * failure_path?: scalar|null|Param, // Default: null + * failure_path?: scalar|Param|null, // Default: null * failure_forward?: bool|Param, // Default: false - * failure_path_parameter?: scalar|null|Param, // Default: "_failure_path" + * failure_path_parameter?: scalar|Param|null, // Default: "_failure_path" * }, * login_link?: array{ - * check_route: scalar|null|Param, // Route that will validate the login link - e.g. "app_login_link_verify". - * check_post_only?: scalar|null|Param, // If true, only HTTP POST requests to "check_route" will be handled by the authenticator. // Default: false - * signature_properties: list, + * check_route: scalar|Param|null, // Route that will validate the login link - e.g. "app_login_link_verify". + * check_post_only?: scalar|Param|null, // If true, only HTTP POST requests to "check_route" will be handled by the authenticator. // Default: false + * signature_properties: list, * lifetime?: int|Param, // The lifetime of the login link in seconds. // Default: 600 * max_uses?: int|Param, // Max number of times a login link can be used - null means unlimited within lifetime. // Default: null - * used_link_cache?: scalar|null|Param, // Cache service id used to expired links of max_uses is set. - * success_handler?: scalar|null|Param, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface. - * failure_handler?: scalar|null|Param, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface. - * provider?: scalar|null|Param, // The user provider to load users from. - * secret?: scalar|null|Param, // Default: "%kernel.secret%" + * used_link_cache?: scalar|Param|null, // Cache service id used to expired links of max_uses is set. + * success_handler?: scalar|Param|null, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface. + * failure_handler?: scalar|Param|null, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface. + * provider?: scalar|Param|null, // The user provider to load users from. + * secret?: scalar|Param|null, // Default: "%kernel.secret%" * always_use_default_target_path?: bool|Param, // Default: false - * default_target_path?: scalar|null|Param, // Default: "/" - * login_path?: scalar|null|Param, // Default: "/login" - * target_path_parameter?: scalar|null|Param, // Default: "_target_path" + * default_target_path?: scalar|Param|null, // Default: "/" + * login_path?: scalar|Param|null, // Default: "/login" + * target_path_parameter?: scalar|Param|null, // Default: "_target_path" * use_referer?: bool|Param, // Default: false - * failure_path?: scalar|null|Param, // Default: null + * failure_path?: scalar|Param|null, // Default: null * failure_forward?: bool|Param, // Default: false - * failure_path_parameter?: scalar|null|Param, // Default: "_failure_path" + * failure_path_parameter?: scalar|Param|null, // Default: "_failure_path" * }, * form_login?: array{ - * provider?: scalar|null|Param, + * provider?: scalar|Param|null, * remember_me?: bool|Param, // Default: true - * success_handler?: scalar|null|Param, - * failure_handler?: scalar|null|Param, - * check_path?: scalar|null|Param, // Default: "/login_check" + * success_handler?: scalar|Param|null, + * failure_handler?: scalar|Param|null, + * check_path?: scalar|Param|null, // Default: "/login_check" * use_forward?: bool|Param, // Default: false - * login_path?: scalar|null|Param, // Default: "/login" - * username_parameter?: scalar|null|Param, // Default: "_username" - * password_parameter?: scalar|null|Param, // Default: "_password" - * csrf_parameter?: scalar|null|Param, // Default: "_csrf_token" - * csrf_token_id?: scalar|null|Param, // Default: "authenticate" + * login_path?: scalar|Param|null, // Default: "/login" + * username_parameter?: scalar|Param|null, // Default: "_username" + * password_parameter?: scalar|Param|null, // Default: "_password" + * csrf_parameter?: scalar|Param|null, // Default: "_csrf_token" + * csrf_token_id?: scalar|Param|null, // Default: "authenticate" * enable_csrf?: bool|Param, // Default: false * post_only?: bool|Param, // Default: true * form_only?: bool|Param, // Default: false * always_use_default_target_path?: bool|Param, // Default: false - * default_target_path?: scalar|null|Param, // Default: "/" - * target_path_parameter?: scalar|null|Param, // Default: "_target_path" + * default_target_path?: scalar|Param|null, // Default: "/" + * target_path_parameter?: scalar|Param|null, // Default: "_target_path" * use_referer?: bool|Param, // Default: false - * failure_path?: scalar|null|Param, // Default: null + * failure_path?: scalar|Param|null, // Default: null * failure_forward?: bool|Param, // Default: false - * failure_path_parameter?: scalar|null|Param, // Default: "_failure_path" + * failure_path_parameter?: scalar|Param|null, // Default: "_failure_path" * }, * form_login_ldap?: array{ - * provider?: scalar|null|Param, + * provider?: scalar|Param|null, * remember_me?: bool|Param, // Default: true - * success_handler?: scalar|null|Param, - * failure_handler?: scalar|null|Param, - * check_path?: scalar|null|Param, // Default: "/login_check" + * success_handler?: scalar|Param|null, + * failure_handler?: scalar|Param|null, + * check_path?: scalar|Param|null, // Default: "/login_check" * use_forward?: bool|Param, // Default: false - * login_path?: scalar|null|Param, // Default: "/login" - * username_parameter?: scalar|null|Param, // Default: "_username" - * password_parameter?: scalar|null|Param, // Default: "_password" - * csrf_parameter?: scalar|null|Param, // Default: "_csrf_token" - * csrf_token_id?: scalar|null|Param, // Default: "authenticate" + * login_path?: scalar|Param|null, // Default: "/login" + * username_parameter?: scalar|Param|null, // Default: "_username" + * password_parameter?: scalar|Param|null, // Default: "_password" + * csrf_parameter?: scalar|Param|null, // Default: "_csrf_token" + * csrf_token_id?: scalar|Param|null, // Default: "authenticate" * enable_csrf?: bool|Param, // Default: false * post_only?: bool|Param, // Default: true * form_only?: bool|Param, // Default: false * always_use_default_target_path?: bool|Param, // Default: false - * default_target_path?: scalar|null|Param, // Default: "/" - * target_path_parameter?: scalar|null|Param, // Default: "_target_path" + * default_target_path?: scalar|Param|null, // Default: "/" + * target_path_parameter?: scalar|Param|null, // Default: "_target_path" * use_referer?: bool|Param, // Default: false - * failure_path?: scalar|null|Param, // Default: null + * failure_path?: scalar|Param|null, // Default: null * failure_forward?: bool|Param, // Default: false - * failure_path_parameter?: scalar|null|Param, // Default: "_failure_path" - * service?: scalar|null|Param, // Default: "ldap" - * dn_string?: scalar|null|Param, // Default: "{user_identifier}" - * query_string?: scalar|null|Param, - * search_dn?: scalar|null|Param, // Default: "" - * search_password?: scalar|null|Param, // Default: "" + * failure_path_parameter?: scalar|Param|null, // Default: "_failure_path" + * service?: scalar|Param|null, // Default: "ldap" + * dn_string?: scalar|Param|null, // Default: "{user_identifier}" + * query_string?: scalar|Param|null, + * search_dn?: scalar|Param|null, // Default: "" + * search_password?: scalar|Param|null, // Default: "" * }, * json_login?: array{ - * provider?: scalar|null|Param, + * provider?: scalar|Param|null, * remember_me?: bool|Param, // Default: true - * success_handler?: scalar|null|Param, - * failure_handler?: scalar|null|Param, - * check_path?: scalar|null|Param, // Default: "/login_check" + * success_handler?: scalar|Param|null, + * failure_handler?: scalar|Param|null, + * check_path?: scalar|Param|null, // Default: "/login_check" * use_forward?: bool|Param, // Default: false - * login_path?: scalar|null|Param, // Default: "/login" - * username_path?: scalar|null|Param, // Default: "username" - * password_path?: scalar|null|Param, // Default: "password" + * login_path?: scalar|Param|null, // Default: "/login" + * username_path?: scalar|Param|null, // Default: "username" + * password_path?: scalar|Param|null, // Default: "password" * }, * json_login_ldap?: array{ - * provider?: scalar|null|Param, + * provider?: scalar|Param|null, * remember_me?: bool|Param, // Default: true - * success_handler?: scalar|null|Param, - * failure_handler?: scalar|null|Param, - * check_path?: scalar|null|Param, // Default: "/login_check" + * success_handler?: scalar|Param|null, + * failure_handler?: scalar|Param|null, + * check_path?: scalar|Param|null, // Default: "/login_check" * use_forward?: bool|Param, // Default: false - * login_path?: scalar|null|Param, // Default: "/login" - * username_path?: scalar|null|Param, // Default: "username" - * password_path?: scalar|null|Param, // Default: "password" - * service?: scalar|null|Param, // Default: "ldap" - * dn_string?: scalar|null|Param, // Default: "{user_identifier}" - * query_string?: scalar|null|Param, - * search_dn?: scalar|null|Param, // Default: "" - * search_password?: scalar|null|Param, // Default: "" + * login_path?: scalar|Param|null, // Default: "/login" + * username_path?: scalar|Param|null, // Default: "username" + * password_path?: scalar|Param|null, // Default: "password" + * service?: scalar|Param|null, // Default: "ldap" + * dn_string?: scalar|Param|null, // Default: "{user_identifier}" + * query_string?: scalar|Param|null, + * search_dn?: scalar|Param|null, // Default: "" + * search_password?: scalar|Param|null, // Default: "" * }, * access_token?: array{ - * provider?: scalar|null|Param, + * provider?: scalar|Param|null, * remember_me?: bool|Param, // Default: true - * success_handler?: scalar|null|Param, - * failure_handler?: scalar|null|Param, - * realm?: scalar|null|Param, // Default: null - * token_extractors?: list, + * success_handler?: scalar|Param|null, + * failure_handler?: scalar|Param|null, + * realm?: scalar|Param|null, // Default: null + * token_extractors?: list, * token_handler: string|array{ - * id?: scalar|null|Param, + * id?: scalar|Param|null, * oidc_user_info?: string|array{ - * base_uri: scalar|null|Param, // Base URI of the userinfo endpoint on the OIDC server, or the OIDC server URI to use the discovery (require "discovery" to be configured). + * base_uri: scalar|Param|null, // Base URI of the userinfo endpoint on the OIDC server, or the OIDC server URI to use the discovery (require "discovery" to be configured). * discovery?: array{ // Enable the OIDC discovery. * cache?: array{ - * id: scalar|null|Param, // Cache service id to use to cache the OIDC discovery configuration. + * id: scalar|Param|null, // Cache service id to use to cache the OIDC discovery configuration. * }, * }, - * claim?: scalar|null|Param, // Claim which contains the user identifier (e.g. sub, email, etc.). // Default: "sub" - * client?: scalar|null|Param, // HttpClient service id to use to call the OIDC server. + * claim?: scalar|Param|null, // Claim which contains the user identifier (e.g. sub, email, etc.). // Default: "sub" + * client?: scalar|Param|null, // HttpClient service id to use to call the OIDC server. * }, * oidc?: array{ * discovery?: array{ // Enable the OIDC discovery. - * base_uri: list, + * base_uri: list, * cache?: array{ - * id: scalar|null|Param, // Cache service id to use to cache the OIDC discovery configuration. + * id: scalar|Param|null, // Cache service id to use to cache the OIDC discovery configuration. * }, * }, - * claim?: scalar|null|Param, // Claim which contains the user identifier (e.g.: sub, email..). // Default: "sub" - * audience: scalar|null|Param, // Audience set in the token, for validation purpose. - * issuers: list, + * claim?: scalar|Param|null, // Claim which contains the user identifier (e.g.: sub, email..). // Default: "sub" + * audience: scalar|Param|null, // Audience set in the token, for validation purpose. + * issuers: list, * algorithm?: array, - * algorithms: list, - * key?: scalar|null|Param, // Deprecated: The "key" option is deprecated and will be removed in 8.0. Use the "keyset" option instead. // JSON-encoded JWK used to sign the token (must contain a "kty" key). - * keyset?: scalar|null|Param, // JSON-encoded JWKSet used to sign the token (must contain a list of valid public keys). + * algorithms: list, + * key?: scalar|Param|null, // Deprecated: The "key" option is deprecated and will be removed in 8.0. Use the "keyset" option instead. // JSON-encoded JWK used to sign the token (must contain a "kty" key). + * keyset?: scalar|Param|null, // JSON-encoded JWKSet used to sign the token (must contain a list of valid public keys). * encryption?: bool|array{ * enabled?: bool|Param, // Default: false * enforce?: bool|Param, // When enabled, the token shall be encrypted. // Default: false - * algorithms: list, - * keyset: scalar|null|Param, // JSON-encoded JWKSet used to decrypt the token (must contain a list of valid private keys). + * algorithms: list, + * keyset: scalar|Param|null, // JSON-encoded JWKSet used to decrypt the token (must contain a list of valid private keys). * }, * }, * cas?: array{ - * validation_url: scalar|null|Param, // CAS server validation URL - * prefix?: scalar|null|Param, // CAS prefix // Default: "cas" - * http_client?: scalar|null|Param, // HTTP Client service // Default: null + * validation_url: scalar|Param|null, // CAS server validation URL + * prefix?: scalar|Param|null, // CAS prefix // Default: "cas" + * http_client?: scalar|Param|null, // HTTP Client service // Default: null * }, - * oauth2?: scalar|null|Param, + * oauth2?: scalar|Param|null, * }, * }, * http_basic?: array{ - * provider?: scalar|null|Param, - * realm?: scalar|null|Param, // Default: "Secured Area" + * provider?: scalar|Param|null, + * realm?: scalar|Param|null, // Default: "Secured Area" * }, * http_basic_ldap?: array{ - * provider?: scalar|null|Param, - * realm?: scalar|null|Param, // Default: "Secured Area" - * service?: scalar|null|Param, // Default: "ldap" - * dn_string?: scalar|null|Param, // Default: "{user_identifier}" - * query_string?: scalar|null|Param, - * search_dn?: scalar|null|Param, // Default: "" - * search_password?: scalar|null|Param, // Default: "" + * provider?: scalar|Param|null, + * realm?: scalar|Param|null, // Default: "Secured Area" + * service?: scalar|Param|null, // Default: "ldap" + * dn_string?: scalar|Param|null, // Default: "{user_identifier}" + * query_string?: scalar|Param|null, + * search_dn?: scalar|Param|null, // Default: "" + * search_password?: scalar|Param|null, // Default: "" * }, * remember_me?: array{ - * secret?: scalar|null|Param, // Default: "%kernel.secret%" - * service?: scalar|null|Param, - * user_providers?: list, + * secret?: scalar|Param|null, // Default: "%kernel.secret%" + * service?: scalar|Param|null, + * user_providers?: list, * catch_exceptions?: bool|Param, // Default: true - * signature_properties?: list, + * signature_properties?: list, * token_provider?: string|array{ - * service?: scalar|null|Param, // The service ID of a custom remember-me token provider. + * service?: scalar|Param|null, // The service ID of a custom remember-me token provider. * doctrine?: bool|array{ * enabled?: bool|Param, // Default: false - * connection?: scalar|null|Param, // Default: null + * connection?: scalar|Param|null, // Default: null * }, * }, - * token_verifier?: scalar|null|Param, // The service ID of a custom rememberme token verifier. - * name?: scalar|null|Param, // Default: "REMEMBERME" + * token_verifier?: scalar|Param|null, // The service ID of a custom rememberme token verifier. + * name?: scalar|Param|null, // Default: "REMEMBERME" * lifetime?: int|Param, // Default: 31536000 - * path?: scalar|null|Param, // Default: "/" - * domain?: scalar|null|Param, // Default: null + * path?: scalar|Param|null, // Default: "/" + * domain?: scalar|Param|null, // Default: null * secure?: true|false|"auto"|Param, // Default: null * httponly?: bool|Param, // Default: true * samesite?: null|"lax"|"strict"|"none"|Param, // Default: "lax" * always_remember_me?: bool|Param, // Default: false - * remember_me_parameter?: scalar|null|Param, // Default: "_remember_me" + * remember_me_parameter?: scalar|Param|null, // Default: "_remember_me" * }, * }>, * access_control?: list, - * attributes?: array, - * route?: scalar|null|Param, // Default: null - * methods?: list, - * allow_if?: scalar|null|Param, // Default: null - * roles?: list, + * ips?: list, + * attributes?: array, + * route?: scalar|Param|null, // Default: null + * methods?: list, + * allow_if?: scalar|Param|null, // Default: null + * roles?: list, * }>, - * role_hierarchy?: array>, + * role_hierarchy?: array>, * } * @psalm-type TwigConfig = array{ - * form_themes?: list, + * form_themes?: list, * globals?: array, - * autoescape_service?: scalar|null|Param, // Default: null - * autoescape_service_method?: scalar|null|Param, // Default: null - * base_template_class?: scalar|null|Param, // Deprecated: The child node "base_template_class" at path "twig.base_template_class" is deprecated. - * cache?: scalar|null|Param, // Default: true - * charset?: scalar|null|Param, // Default: "%kernel.charset%" + * autoescape_service?: scalar|Param|null, // Default: null + * autoescape_service_method?: scalar|Param|null, // Default: null + * base_template_class?: scalar|Param|null, // Deprecated: The child node "base_template_class" at path "twig.base_template_class" is deprecated. + * cache?: scalar|Param|null, // Default: true + * charset?: scalar|Param|null, // Default: "%kernel.charset%" * debug?: bool|Param, // Default: "%kernel.debug%" * strict_variables?: bool|Param, // Default: "%kernel.debug%" - * auto_reload?: scalar|null|Param, + * auto_reload?: scalar|Param|null, * optimizations?: int|Param, - * default_path?: scalar|null|Param, // The default path used to load templates. // Default: "%kernel.project_dir%/templates" - * file_name_pattern?: list, + * default_path?: scalar|Param|null, // The default path used to load templates. // Default: "%kernel.project_dir%/templates" + * file_name_pattern?: list, * paths?: array, * date?: array{ // The default format options used by the date filter. - * format?: scalar|null|Param, // Default: "F j, Y H:i" - * interval_format?: scalar|null|Param, // Default: "%d days" - * timezone?: scalar|null|Param, // The timezone used when formatting dates, when set to null, the timezone returned by date_default_timezone_get() is used. // Default: null + * format?: scalar|Param|null, // Default: "F j, Y H:i" + * interval_format?: scalar|Param|null, // Default: "%d days" + * timezone?: scalar|Param|null, // The timezone used when formatting dates, when set to null, the timezone returned by date_default_timezone_get() is used. // Default: null * }, * number_format?: array{ // The default format options for the number_format filter. * decimals?: int|Param, // Default: 0 - * decimal_point?: scalar|null|Param, // Default: "." - * thousands_separator?: scalar|null|Param, // Default: "," + * decimal_point?: scalar|Param|null, // Default: "." + * thousands_separator?: scalar|Param|null, // Default: "," * }, * mailer?: array{ - * html_to_text_converter?: scalar|null|Param, // A service implementing the "Symfony\Component\Mime\HtmlToTextConverter\HtmlToTextConverterInterface". // Default: null + * html_to_text_converter?: scalar|Param|null, // A service implementing the "Symfony\Component\Mime\HtmlToTextConverter\HtmlToTextConverterInterface". // Default: null * }, * } * @psalm-type WebProfilerConfig = array{ @@ -1373,173 +1373,173 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * ajax_replace?: bool|Param, // Replace toolbar on AJAX requests // Default: false * }, * intercept_redirects?: bool|Param, // Default: false - * excluded_ajax_paths?: scalar|null|Param, // Default: "^/((index|app(_[\\w]+)?)\\.php/)?_wdt" + * excluded_ajax_paths?: scalar|Param|null, // Default: "^/((index|app(_[\\w]+)?)\\.php/)?_wdt" * } * @psalm-type MonologConfig = array{ - * use_microseconds?: scalar|null|Param, // Default: true - * channels?: list, + * use_microseconds?: scalar|Param|null, // Default: true + * channels?: list, * handlers?: array, + * passthru_level?: scalar|Param|null, // Default: null + * excluded_404s?: list, * excluded_http_codes?: list, + * code?: scalar|Param|null, + * urls?: list, * }>, - * accepted_levels?: list, - * min_level?: scalar|null|Param, // Default: "DEBUG" - * max_level?: scalar|null|Param, // Default: "EMERGENCY" - * buffer_size?: scalar|null|Param, // Default: 0 + * accepted_levels?: list, + * min_level?: scalar|Param|null, // Default: "DEBUG" + * max_level?: scalar|Param|null, // Default: "EMERGENCY" + * buffer_size?: scalar|Param|null, // Default: 0 * flush_on_overflow?: bool|Param, // Default: false - * handler?: scalar|null|Param, - * url?: scalar|null|Param, - * exchange?: scalar|null|Param, - * exchange_name?: scalar|null|Param, // Default: "log" - * room?: scalar|null|Param, - * message_format?: scalar|null|Param, // Default: "text" - * api_version?: scalar|null|Param, // Default: null - * channel?: scalar|null|Param, // Default: null - * bot_name?: scalar|null|Param, // Default: "Monolog" - * use_attachment?: scalar|null|Param, // Default: true - * use_short_attachment?: scalar|null|Param, // Default: false - * include_extra?: scalar|null|Param, // Default: false - * icon_emoji?: scalar|null|Param, // Default: null - * webhook_url?: scalar|null|Param, - * exclude_fields?: list, - * team?: scalar|null|Param, - * notify?: scalar|null|Param, // Default: false - * nickname?: scalar|null|Param, // Default: "Monolog" - * token?: scalar|null|Param, - * region?: scalar|null|Param, - * source?: scalar|null|Param, + * handler?: scalar|Param|null, + * url?: scalar|Param|null, + * exchange?: scalar|Param|null, + * exchange_name?: scalar|Param|null, // Default: "log" + * room?: scalar|Param|null, + * message_format?: scalar|Param|null, // Default: "text" + * api_version?: scalar|Param|null, // Default: null + * channel?: scalar|Param|null, // Default: null + * bot_name?: scalar|Param|null, // Default: "Monolog" + * use_attachment?: scalar|Param|null, // Default: true + * use_short_attachment?: scalar|Param|null, // Default: false + * include_extra?: scalar|Param|null, // Default: false + * icon_emoji?: scalar|Param|null, // Default: null + * webhook_url?: scalar|Param|null, + * exclude_fields?: list, + * team?: scalar|Param|null, + * notify?: scalar|Param|null, // Default: false + * nickname?: scalar|Param|null, // Default: "Monolog" + * token?: scalar|Param|null, + * region?: scalar|Param|null, + * source?: scalar|Param|null, * use_ssl?: bool|Param, // Default: true * user?: mixed, - * title?: scalar|null|Param, // Default: null - * host?: scalar|null|Param, // Default: null - * port?: scalar|null|Param, // Default: 514 - * config?: list, - * members?: list, - * connection_string?: scalar|null|Param, - * timeout?: scalar|null|Param, - * time?: scalar|null|Param, // Default: 60 - * deduplication_level?: scalar|null|Param, // Default: 400 - * store?: scalar|null|Param, // Default: null - * connection_timeout?: scalar|null|Param, + * title?: scalar|Param|null, // Default: null + * host?: scalar|Param|null, // Default: null + * port?: scalar|Param|null, // Default: 514 + * config?: list, + * members?: list, + * connection_string?: scalar|Param|null, + * timeout?: scalar|Param|null, + * time?: scalar|Param|null, // Default: 60 + * deduplication_level?: scalar|Param|null, // Default: 400 + * store?: scalar|Param|null, // Default: null + * connection_timeout?: scalar|Param|null, * persistent?: bool|Param, - * dsn?: scalar|null|Param, - * hub_id?: scalar|null|Param, // Default: null - * client_id?: scalar|null|Param, // Default: null - * auto_log_stacks?: scalar|null|Param, // Default: false - * release?: scalar|null|Param, // Default: null - * environment?: scalar|null|Param, // Default: null - * message_type?: scalar|null|Param, // Default: 0 - * parse_mode?: scalar|null|Param, // Default: null - * disable_webpage_preview?: bool|null|Param, // Default: null - * disable_notification?: bool|null|Param, // Default: null + * dsn?: scalar|Param|null, + * hub_id?: scalar|Param|null, // Default: null + * client_id?: scalar|Param|null, // Default: null + * auto_log_stacks?: scalar|Param|null, // Default: false + * release?: scalar|Param|null, // Default: null + * environment?: scalar|Param|null, // Default: null + * message_type?: scalar|Param|null, // Default: 0 + * parse_mode?: scalar|Param|null, // Default: null + * disable_webpage_preview?: bool|Param|null, // Default: null + * disable_notification?: bool|Param|null, // Default: null * split_long_messages?: bool|Param, // Default: false * delay_between_messages?: bool|Param, // Default: false * topic?: int|Param, // Default: null * factor?: int|Param, // Default: 1 - * tags?: list, + * tags?: list, * console_formater_options?: mixed, // Deprecated: "monolog.handlers..console_formater_options.console_formater_options" is deprecated, use "monolog.handlers..console_formater_options.console_formatter_options" instead. * console_formatter_options?: mixed, // Default: [] - * formatter?: scalar|null|Param, + * formatter?: scalar|Param|null, * nested?: bool|Param, // Default: false * publisher?: string|array{ - * id?: scalar|null|Param, - * hostname?: scalar|null|Param, - * port?: scalar|null|Param, // Default: 12201 - * chunk_size?: scalar|null|Param, // Default: 1420 + * id?: scalar|Param|null, + * hostname?: scalar|Param|null, + * port?: scalar|Param|null, // Default: 12201 + * chunk_size?: scalar|Param|null, // Default: 1420 * encoder?: "json"|"compressed_json"|Param, * }, * mongo?: string|array{ - * id?: scalar|null|Param, - * host?: scalar|null|Param, - * port?: scalar|null|Param, // Default: 27017 - * user?: scalar|null|Param, - * pass?: scalar|null|Param, - * database?: scalar|null|Param, // Default: "monolog" - * collection?: scalar|null|Param, // Default: "logs" + * id?: scalar|Param|null, + * host?: scalar|Param|null, + * port?: scalar|Param|null, // Default: 27017 + * user?: scalar|Param|null, + * pass?: scalar|Param|null, + * database?: scalar|Param|null, // Default: "monolog" + * collection?: scalar|Param|null, // Default: "logs" * }, * mongodb?: string|array{ - * id?: scalar|null|Param, // ID of a MongoDB\Client service - * uri?: scalar|null|Param, - * username?: scalar|null|Param, - * password?: scalar|null|Param, - * database?: scalar|null|Param, // Default: "monolog" - * collection?: scalar|null|Param, // Default: "logs" + * id?: scalar|Param|null, // ID of a MongoDB\Client service + * uri?: scalar|Param|null, + * username?: scalar|Param|null, + * password?: scalar|Param|null, + * database?: scalar|Param|null, // Default: "monolog" + * collection?: scalar|Param|null, // Default: "logs" * }, * elasticsearch?: string|array{ - * id?: scalar|null|Param, - * hosts?: list, - * host?: scalar|null|Param, - * port?: scalar|null|Param, // Default: 9200 - * transport?: scalar|null|Param, // Default: "Http" - * user?: scalar|null|Param, // Default: null - * password?: scalar|null|Param, // Default: null + * id?: scalar|Param|null, + * hosts?: list, + * host?: scalar|Param|null, + * port?: scalar|Param|null, // Default: 9200 + * transport?: scalar|Param|null, // Default: "Http" + * user?: scalar|Param|null, // Default: null + * password?: scalar|Param|null, // Default: null * }, - * index?: scalar|null|Param, // Default: "monolog" - * document_type?: scalar|null|Param, // Default: "logs" - * ignore_error?: scalar|null|Param, // Default: false + * index?: scalar|Param|null, // Default: "monolog" + * document_type?: scalar|Param|null, // Default: "logs" + * ignore_error?: scalar|Param|null, // Default: false * redis?: string|array{ - * id?: scalar|null|Param, - * host?: scalar|null|Param, - * password?: scalar|null|Param, // Default: null - * port?: scalar|null|Param, // Default: 6379 - * database?: scalar|null|Param, // Default: 0 - * key_name?: scalar|null|Param, // Default: "monolog_redis" + * id?: scalar|Param|null, + * host?: scalar|Param|null, + * password?: scalar|Param|null, // Default: null + * port?: scalar|Param|null, // Default: 6379 + * database?: scalar|Param|null, // Default: 0 + * key_name?: scalar|Param|null, // Default: "monolog_redis" * }, * predis?: string|array{ - * id?: scalar|null|Param, - * host?: scalar|null|Param, + * id?: scalar|Param|null, + * host?: scalar|Param|null, * }, - * from_email?: scalar|null|Param, - * to_email?: list, - * subject?: scalar|null|Param, - * content_type?: scalar|null|Param, // Default: null - * headers?: list, - * mailer?: scalar|null|Param, // Default: null + * from_email?: scalar|Param|null, + * to_email?: list, + * subject?: scalar|Param|null, + * content_type?: scalar|Param|null, // Default: null + * headers?: list, + * mailer?: scalar|Param|null, // Default: null * email_prototype?: string|array{ - * id: scalar|null|Param, - * method?: scalar|null|Param, // Default: null + * id: scalar|Param|null, + * method?: scalar|Param|null, // Default: null * }, * lazy?: bool|Param, // Default: true * verbosity_levels?: array{ - * VERBOSITY_QUIET?: scalar|null|Param, // Default: "ERROR" - * VERBOSITY_NORMAL?: scalar|null|Param, // Default: "WARNING" - * VERBOSITY_VERBOSE?: scalar|null|Param, // Default: "NOTICE" - * VERBOSITY_VERY_VERBOSE?: scalar|null|Param, // Default: "INFO" - * VERBOSITY_DEBUG?: scalar|null|Param, // Default: "DEBUG" + * VERBOSITY_QUIET?: scalar|Param|null, // Default: "ERROR" + * VERBOSITY_NORMAL?: scalar|Param|null, // Default: "WARNING" + * VERBOSITY_VERBOSE?: scalar|Param|null, // Default: "NOTICE" + * VERBOSITY_VERY_VERBOSE?: scalar|Param|null, // Default: "INFO" + * VERBOSITY_DEBUG?: scalar|Param|null, // Default: "DEBUG" * }, * channels?: string|array{ - * type?: scalar|null|Param, - * elements?: list, + * type?: scalar|Param|null, + * elements?: list, * }, * }>, * } @@ -1547,125 +1547,125 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * max_items?: int|Param, // Max number of displayed items past the first level, -1 means no limit. // Default: 2500 * min_depth?: int|Param, // Minimum tree depth to clone all the items, 1 is default. // Default: 1 * max_string_length?: int|Param, // Max length of displayed strings, -1 means no limit. // Default: -1 - * dump_destination?: scalar|null|Param, // A stream URL where dumps should be written to. // Default: null + * dump_destination?: scalar|Param|null, // A stream URL where dumps should be written to. // Default: null * theme?: "dark"|"light"|Param, // Changes the color of the dump() output when rendered directly on the templating. "dark" (default) or "light". // Default: "dark" * } * @psalm-type MakerConfig = array{ - * root_namespace?: scalar|null|Param, // Default: "App" + * root_namespace?: scalar|Param|null, // Default: "App" * generate_final_classes?: bool|Param, // Default: true * generate_final_entities?: bool|Param, // Default: false * } * @psalm-type WebpackEncoreConfig = array{ - * output_path: scalar|null|Param, // The path where Encore is building the assets - i.e. Encore.setOutputPath() + * output_path: scalar|Param|null, // The path where Encore is building the assets - i.e. Encore.setOutputPath() * crossorigin?: false|"anonymous"|"use-credentials"|Param, // crossorigin value when Encore.enableIntegrityHashes() is used, can be false (default), anonymous or use-credentials // Default: false * preload?: bool|Param, // preload all rendered script and link tags automatically via the http2 Link header. // Default: false * cache?: bool|Param, // Enable caching of the entry point file(s) // Default: false * strict_mode?: bool|Param, // Throw an exception if the entrypoints.json file is missing or an entry is missing from the data // Default: true - * builds?: array, - * script_attributes?: array, - * link_attributes?: array, + * builds?: array, + * script_attributes?: array, + * link_attributes?: array, * } * @psalm-type DatatablesConfig = array{ * language_from_cdn?: bool|Param, // Load i18n data from DataTables CDN or locally // Default: true * persist_state?: "none"|"query"|"fragment"|"local"|"session"|Param, // Where to persist the current table state automatically // Default: "fragment" * method?: "GET"|"POST"|Param, // Default HTTP method to be used for callbacks // Default: "POST" * options?: array, - * renderer?: scalar|null|Param, // Default service used to render templates, built-in TwigRenderer uses global Twig environment // Default: "Omines\\DataTablesBundle\\Twig\\TwigRenderer" - * template?: scalar|null|Param, // Default template to be used for DataTables HTML // Default: "@DataTables/datatable_html.html.twig" + * renderer?: scalar|Param|null, // Default service used to render templates, built-in TwigRenderer uses global Twig environment // Default: "Omines\\DataTablesBundle\\Twig\\TwigRenderer" + * template?: scalar|Param|null, // Default template to be used for DataTables HTML // Default: "@DataTables/datatable_html.html.twig" * template_parameters?: array{ // Default parameters to be passed to the template - * className?: scalar|null|Param, // Default class attribute to apply to the root table elements // Default: "table table-bordered" - * columnFilter?: "thead"|"tfoot"|"both"|null|Param, // If and where to enable the DataTables Filter module // Default: null + * className?: scalar|Param|null, // Default class attribute to apply to the root table elements // Default: "table table-bordered" + * columnFilter?: "thead"|"tfoot"|"both"|Param|null, // If and where to enable the DataTables Filter module // Default: null * ... * }, - * translation_domain?: scalar|null|Param, // Default translation domain to be used // Default: "messages" + * translation_domain?: scalar|Param|null, // Default translation domain to be used // Default: "messages" * } * @psalm-type LiipImagineConfig = array{ * resolvers?: array, - * get_options?: array, - * put_options?: array, - * proxies?: array, + * get_options?: array, + * put_options?: array, + * proxies?: array, * }, * flysystem?: array{ - * filesystem_service: scalar|null|Param, - * cache_prefix?: scalar|null|Param, // Default: "" - * root_url: scalar|null|Param, + * filesystem_service: scalar|Param|null, + * cache_prefix?: scalar|Param|null, // Default: "" + * root_url: scalar|Param|null, * visibility?: "public"|"private"|"noPredefinedVisibility"|Param, // Default: "public" * }, * }>, * loaders?: array, + * data_root?: list, * allow_unresolvable_data_roots?: bool|Param, // Default: false * bundle_resources?: array{ * enabled?: bool|Param, // Default: false * access_control_type?: "blacklist"|"whitelist"|Param, // Sets the access control method applied to bundle names in "access_control_list" into a blacklist or whitelist. // Default: "blacklist" - * access_control_list?: list, + * access_control_list?: list, * }, * }, * flysystem?: array{ - * filesystem_service: scalar|null|Param, + * filesystem_service: scalar|Param|null, * }, * asset_mapper?: array, * chain?: array{ - * loaders: list, + * loaders: list, * }, * }>, - * driver?: scalar|null|Param, // Default: "gd" - * cache?: scalar|null|Param, // Default: "default" - * cache_base_path?: scalar|null|Param, // Default: "" - * data_loader?: scalar|null|Param, // Default: "default" - * default_image?: scalar|null|Param, // Default: null + * driver?: scalar|Param|null, // Default: "gd" + * cache?: scalar|Param|null, // Default: "default" + * cache_base_path?: scalar|Param|null, // Default: "" + * data_loader?: scalar|Param|null, // Default: "default" + * default_image?: scalar|Param|null, // Default: null * default_filter_set_settings?: array{ - * quality?: scalar|null|Param, // Default: 100 - * jpeg_quality?: scalar|null|Param, // Default: null - * png_compression_level?: scalar|null|Param, // Default: null - * png_compression_filter?: scalar|null|Param, // Default: null - * format?: scalar|null|Param, // Default: null + * quality?: scalar|Param|null, // Default: 100 + * jpeg_quality?: scalar|Param|null, // Default: null + * png_compression_level?: scalar|Param|null, // Default: null + * png_compression_filter?: scalar|Param|null, // Default: null + * format?: scalar|Param|null, // Default: null * animated?: bool|Param, // Default: false - * cache?: scalar|null|Param, // Default: null - * data_loader?: scalar|null|Param, // Default: null - * default_image?: scalar|null|Param, // Default: null + * cache?: scalar|Param|null, // Default: null + * data_loader?: scalar|Param|null, // Default: null + * default_image?: scalar|Param|null, // Default: null * filters?: array>, * post_processors?: array>, * }, * controller?: array{ - * filter_action?: scalar|null|Param, // Default: "Liip\\ImagineBundle\\Controller\\ImagineController::filterAction" - * filter_runtime_action?: scalar|null|Param, // Default: "Liip\\ImagineBundle\\Controller\\ImagineController::filterRuntimeAction" + * filter_action?: scalar|Param|null, // Default: "Liip\\ImagineBundle\\Controller\\ImagineController::filterAction" + * filter_runtime_action?: scalar|Param|null, // Default: "Liip\\ImagineBundle\\Controller\\ImagineController::filterRuntimeAction" * redirect_response_code?: int|Param, // Default: 302 * }, * filter_sets?: array>, * post_processors?: array>, * }>, * twig?: array{ * mode?: "none"|"lazy"|"legacy"|Param, // Twig mode: none/lazy/legacy (default) // Default: "legacy" - * assets_version?: scalar|null|Param, // Default: null + * assets_version?: scalar|Param|null, // Default: null * }, * enqueue?: bool|Param, // Enables integration with enqueue if set true. Allows resolve image caches in background by sending messages to MQ. // Default: false * messenger?: bool|array{ // Enables integration with symfony/messenger if set true. Warmup image caches in background by sending messages to MQ. @@ -1675,8 +1675,8 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * webp?: array{ * generate?: bool|Param, // Default: false * quality?: int|Param, // Default: 100 - * cache?: scalar|null|Param, // Default: null - * data_loader?: scalar|null|Param, // Default: null + * cache?: scalar|Param|null, // Default: null + * data_loader?: scalar|Param|null, // Default: null * post_processors?: array>, * }, * } @@ -1710,9 +1710,9 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * }, * commonmark?: array{ * renderer?: array{ // Array of options for rendering HTML. - * block_separator?: scalar|null|Param, - * inner_separator?: scalar|null|Param, - * soft_break?: scalar|null|Param, + * block_separator?: scalar|Param|null, + * inner_separator?: scalar|Param|null, + * soft_break?: scalar|Param|null, * }, * html_input?: "strip"|"allow"|"escape"|Param, // How to handle HTML input. * allow_unsafe_links?: bool|Param, // Remove risky link and image URLs by setting this to false. // Default: true @@ -1728,66 +1728,66 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * enable_strong?: bool|Param, // Default: true * use_asterisk?: bool|Param, // Default: true * use_underscore?: bool|Param, // Default: true - * unordered_list_markers?: list, + * unordered_list_markers?: list, * }, * ... * }, * } * @psalm-type GregwarCaptchaConfig = array{ - * length?: scalar|null|Param, // Default: 5 - * width?: scalar|null|Param, // Default: 130 - * height?: scalar|null|Param, // Default: 50 - * font?: scalar|null|Param, // Default: "C:\\Users\\mail\\Documents\\PHP\\Part-DB-server\\vendor\\gregwar\\captcha-bundle\\DependencyInjection/../Generator/Font/captcha.ttf" - * keep_value?: scalar|null|Param, // Default: false - * charset?: scalar|null|Param, // Default: "abcdefhjkmnprstuvwxyz23456789" - * as_file?: scalar|null|Param, // Default: false - * as_url?: scalar|null|Param, // Default: false - * reload?: scalar|null|Param, // Default: false - * image_folder?: scalar|null|Param, // Default: "captcha" - * web_path?: scalar|null|Param, // Default: "%kernel.project_dir%/public" - * gc_freq?: scalar|null|Param, // Default: 100 - * expiration?: scalar|null|Param, // Default: 60 - * quality?: scalar|null|Param, // Default: 50 - * invalid_message?: scalar|null|Param, // Default: "Bad code value" - * bypass_code?: scalar|null|Param, // Default: null - * whitelist_key?: scalar|null|Param, // Default: "captcha_whitelist_key" - * humanity?: scalar|null|Param, // Default: 0 - * distortion?: scalar|null|Param, // Default: true - * max_front_lines?: scalar|null|Param, // Default: null - * max_behind_lines?: scalar|null|Param, // Default: null - * interpolation?: scalar|null|Param, // Default: true - * text_color?: list, - * background_color?: list, - * background_images?: list, - * disabled?: scalar|null|Param, // Default: false - * ignore_all_effects?: scalar|null|Param, // Default: false - * session_key?: scalar|null|Param, // Default: "captcha" + * length?: scalar|Param|null, // Default: 5 + * width?: scalar|Param|null, // Default: 130 + * height?: scalar|Param|null, // Default: 50 + * font?: scalar|Param|null, // Default: "C:\\Users\\mail\\Documents\\PHP\\Part-DB-server\\vendor\\gregwar\\captcha-bundle\\DependencyInjection/../Generator/Font/captcha.ttf" + * keep_value?: scalar|Param|null, // Default: false + * charset?: scalar|Param|null, // Default: "abcdefhjkmnprstuvwxyz23456789" + * as_file?: scalar|Param|null, // Default: false + * as_url?: scalar|Param|null, // Default: false + * reload?: scalar|Param|null, // Default: false + * image_folder?: scalar|Param|null, // Default: "captcha" + * web_path?: scalar|Param|null, // Default: "%kernel.project_dir%/public" + * gc_freq?: scalar|Param|null, // Default: 100 + * expiration?: scalar|Param|null, // Default: 60 + * quality?: scalar|Param|null, // Default: 50 + * invalid_message?: scalar|Param|null, // Default: "Bad code value" + * bypass_code?: scalar|Param|null, // Default: null + * whitelist_key?: scalar|Param|null, // Default: "captcha_whitelist_key" + * humanity?: scalar|Param|null, // Default: 0 + * distortion?: scalar|Param|null, // Default: true + * max_front_lines?: scalar|Param|null, // Default: null + * max_behind_lines?: scalar|Param|null, // Default: null + * interpolation?: scalar|Param|null, // Default: true + * text_color?: list, + * background_color?: list, + * background_images?: list, + * disabled?: scalar|Param|null, // Default: false + * ignore_all_effects?: scalar|Param|null, // Default: false + * session_key?: scalar|Param|null, // Default: "captcha" * } * @psalm-type FlorianvSwapConfig = array{ * cache?: array{ * ttl?: int|Param, // Default: 3600 - * type?: scalar|null|Param, // A cache type or service id // Default: null + * type?: scalar|Param|null, // A cache type or service id // Default: null * }, * providers?: array{ * apilayer_fixer?: array{ * priority?: int|Param, // Default: 0 - * api_key: scalar|null|Param, + * api_key: scalar|Param|null, * }, * apilayer_currency_data?: array{ * priority?: int|Param, // Default: 0 - * api_key: scalar|null|Param, + * api_key: scalar|Param|null, * }, * apilayer_exchange_rates_data?: array{ * priority?: int|Param, // Default: 0 - * api_key: scalar|null|Param, + * api_key: scalar|Param|null, * }, * abstract_api?: array{ * priority?: int|Param, // Default: 0 - * api_key: scalar|null|Param, + * api_key: scalar|Param|null, * }, * fixer?: array{ * priority?: int|Param, // Default: 0 - * access_key: scalar|null|Param, + * access_key: scalar|Param|null, * enterprise?: bool|Param, // Default: false * }, * cryptonator?: array{ @@ -1795,7 +1795,7 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * }, * exchange_rates_api?: array{ * priority?: int|Param, // Default: 0 - * access_key: scalar|null|Param, + * access_key: scalar|Param|null, * enterprise?: bool|Param, // Default: false * }, * webservicex?: array{ @@ -1830,33 +1830,33 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * }, * currency_data_feed?: array{ * priority?: int|Param, // Default: 0 - * api_key: scalar|null|Param, + * api_key: scalar|Param|null, * }, * currency_layer?: array{ * priority?: int|Param, // Default: 0 - * access_key: scalar|null|Param, + * access_key: scalar|Param|null, * enterprise?: bool|Param, // Default: false * }, * forge?: array{ * priority?: int|Param, // Default: 0 - * api_key: scalar|null|Param, + * api_key: scalar|Param|null, * }, * open_exchange_rates?: array{ * priority?: int|Param, // Default: 0 - * app_id: scalar|null|Param, + * app_id: scalar|Param|null, * enterprise?: bool|Param, // Default: false * }, * xignite?: array{ * priority?: int|Param, // Default: 0 - * token: scalar|null|Param, + * token: scalar|Param|null, * }, * xchangeapi?: array{ * priority?: int|Param, // Default: 0 - * api_key: scalar|null|Param, + * api_key: scalar|Param|null, * }, * currency_converter?: array{ * priority?: int|Param, // Default: 0 - * access_key: scalar|null|Param, + * access_key: scalar|Param|null, * enterprise?: bool|Param, // Default: false * }, * array?: array{ @@ -1868,39 +1868,39 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * } * @psalm-type NelmioSecurityConfig = array{ * signed_cookie?: array{ - * names?: list, - * secret?: scalar|null|Param, // Default: "%kernel.secret%" - * hash_algo?: scalar|null|Param, - * legacy_hash_algo?: scalar|null|Param, // Fallback algorithm to allow for frictionless hash algorithm upgrades. Use with caution and as a temporary measure as it allows for downgrade attacks. // Default: null - * separator?: scalar|null|Param, // Default: "." + * names?: list, + * secret?: scalar|Param|null, // Default: "%kernel.secret%" + * hash_algo?: scalar|Param|null, + * legacy_hash_algo?: scalar|Param|null, // Fallback algorithm to allow for frictionless hash algorithm upgrades. Use with caution and as a temporary measure as it allows for downgrade attacks. // Default: null + * separator?: scalar|Param|null, // Default: "." * }, * clickjacking?: array{ - * hosts?: list, + * hosts?: list, * paths?: array, - * content_types?: list, + * content_types?: list, * }, * external_redirects?: array{ * abort?: bool|Param, // Default: false - * override?: scalar|null|Param, // Default: null - * forward_as?: scalar|null|Param, // Default: null + * override?: scalar|Param|null, // Default: null + * forward_as?: scalar|Param|null, // Default: null * log?: bool|Param, // Default: false - * allow_list?: list, + * allow_list?: list, * }, * flexible_ssl?: bool|array{ * enabled?: bool|Param, // Default: false - * cookie_name?: scalar|null|Param, // Default: "auth" + * cookie_name?: scalar|Param|null, // Default: "auth" * unsecured_logout?: bool|Param, // Default: false * }, * forced_ssl?: bool|array{ * enabled?: bool|Param, // Default: false - * hsts_max_age?: scalar|null|Param, // Default: null + * hsts_max_age?: scalar|Param|null, // Default: null * hsts_subdomains?: bool|Param, // Default: false * hsts_preload?: bool|Param, // Default: false - * allow_list?: list, - * hosts?: list, - * redirect_status_code?: scalar|null|Param, // Default: 302 + * allow_list?: list, + * hosts?: list, + * redirect_status_code?: scalar|Param|null, // Default: 302 * }, * content_type?: array{ * nosniff?: bool|Param, // Default: false @@ -1908,16 +1908,16 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * xss_protection?: array{ // Deprecated: The "xss_protection" option is deprecated, use Content Security Policy without allowing "unsafe-inline" scripts instead. * enabled?: bool|Param, // Default: false * mode_block?: bool|Param, // Default: false - * report_uri?: scalar|null|Param, // Default: null + * report_uri?: scalar|Param|null, // Default: null * }, * csp?: bool|array{ * enabled?: bool|Param, // Default: true - * request_matcher?: scalar|null|Param, // Default: null - * hosts?: list, - * content_types?: list, + * request_matcher?: scalar|Param|null, // Default: null + * hosts?: list, + * content_types?: list, * report_endpoint?: array{ - * log_channel?: scalar|null|Param, // Default: null - * log_formatter?: scalar|null|Param, // Default: "nelmio_security.csp_report.log_formatter" + * log_channel?: scalar|Param|null, // Default: null + * log_formatter?: scalar|Param|null, // Default: "nelmio_security.csp_report.log_formatter" * log_level?: "alert"|"critical"|"debug"|"emergency"|"error"|"info"|"notice"|"warning"|Param, // Default: "notice" * filters?: array{ * domains?: bool|Param, // Default: true @@ -1928,7 +1928,7 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * dismiss?: list>, * }, * compat_headers?: bool|Param, // Default: true - * report_logger_service?: scalar|null|Param, // Default: "logger" + * report_logger_service?: scalar|Param|null, // Default: "logger" * hash?: array{ * algorithm?: "sha256"|"sha384"|"sha512"|Param, // The algorithm to use for hashes // Default: "sha256" * }, @@ -1936,62 +1936,62 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * level1_fallback?: bool|Param, // Provides CSP Level 1 fallback when using hash or nonce (CSP level 2) by adding 'unsafe-inline' source. See https://www.w3.org/TR/CSP2/#directive-script-src and https://www.w3.org/TR/CSP2/#directive-style-src // Default: true * browser_adaptive?: bool|array{ // Do not send directives that browser do not support * enabled?: bool|Param, // Default: false - * parser?: scalar|null|Param, // Default: "nelmio_security.ua_parser.ua_php" + * parser?: scalar|Param|null, // Default: "nelmio_security.ua_parser.ua_php" * }, - * default-src?: list, - * base-uri?: list, + * default-src?: list, + * base-uri?: list, * block-all-mixed-content?: bool|Param, // Default: false - * child-src?: list, - * connect-src?: list, - * font-src?: list, - * form-action?: list, - * frame-ancestors?: list, - * frame-src?: list, - * img-src?: list, - * manifest-src?: list, - * media-src?: list, - * object-src?: list, - * plugin-types?: list, - * script-src?: list, - * style-src?: list, + * child-src?: list, + * connect-src?: list, + * font-src?: list, + * form-action?: list, + * frame-ancestors?: list, + * frame-src?: list, + * img-src?: list, + * manifest-src?: list, + * media-src?: list, + * object-src?: list, + * plugin-types?: list, + * script-src?: list, + * style-src?: list, * upgrade-insecure-requests?: bool|Param, // Default: false - * report-uri?: list, - * worker-src?: list, - * prefetch-src?: list, - * report-to?: scalar|null|Param, + * report-uri?: list, + * worker-src?: list, + * prefetch-src?: list, + * report-to?: scalar|Param|null, * }, * enforce?: array{ * level1_fallback?: bool|Param, // Provides CSP Level 1 fallback when using hash or nonce (CSP level 2) by adding 'unsafe-inline' source. See https://www.w3.org/TR/CSP2/#directive-script-src and https://www.w3.org/TR/CSP2/#directive-style-src // Default: true * browser_adaptive?: bool|array{ // Do not send directives that browser do not support * enabled?: bool|Param, // Default: false - * parser?: scalar|null|Param, // Default: "nelmio_security.ua_parser.ua_php" + * parser?: scalar|Param|null, // Default: "nelmio_security.ua_parser.ua_php" * }, - * default-src?: list, - * base-uri?: list, + * default-src?: list, + * base-uri?: list, * block-all-mixed-content?: bool|Param, // Default: false - * child-src?: list, - * connect-src?: list, - * font-src?: list, - * form-action?: list, - * frame-ancestors?: list, - * frame-src?: list, - * img-src?: list, - * manifest-src?: list, - * media-src?: list, - * object-src?: list, - * plugin-types?: list, - * script-src?: list, - * style-src?: list, + * child-src?: list, + * connect-src?: list, + * font-src?: list, + * form-action?: list, + * frame-ancestors?: list, + * frame-src?: list, + * img-src?: list, + * manifest-src?: list, + * media-src?: list, + * object-src?: list, + * plugin-types?: list, + * script-src?: list, + * style-src?: list, * upgrade-insecure-requests?: bool|Param, // Default: false - * report-uri?: list, - * worker-src?: list, - * prefetch-src?: list, - * report-to?: scalar|null|Param, + * report-uri?: list, + * worker-src?: list, + * prefetch-src?: list, + * report-to?: scalar|Param|null, * }, * }, * referrer_policy?: bool|array{ * enabled?: bool|Param, // Default: false - * policies?: list, + * policies?: list, * }, * permissions_policy?: bool|array{ * enabled?: bool|Param, // Default: false @@ -2047,199 +2047,199 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * coop?: "unsafe-none"|"same-origin-allow-popups"|"same-origin"|"noopener-allow-popups"|Param, // Cross-Origin-Opener-Policy (COOP) header value * corp?: "same-site"|"same-origin"|"cross-origin"|Param, // Cross-Origin-Resource-Policy (CORP) header value * report_only?: bool|Param, // Use Report-Only headers instead of enforcing (applies to COEP and COOP only) // Default: false - * report_to?: scalar|null|Param, // Reporting endpoint name for violations (requires Reporting API configuration, applies to COEP and COOP only) // Default: null + * report_to?: scalar|Param|null, // Reporting endpoint name for violations (requires Reporting API configuration, applies to COEP and COOP only) // Default: null * }>, * }, * } * @psalm-type TurboConfig = array{ * broadcast?: bool|array{ * enabled?: bool|Param, // Default: true - * entity_template_prefixes?: list, + * entity_template_prefixes?: list, * doctrine_orm?: bool|array{ // Enable the Doctrine ORM integration * enabled?: bool|Param, // Default: true * }, * }, - * default_transport?: scalar|null|Param, // Default: "default" + * default_transport?: scalar|Param|null, // Default: "default" * } * @psalm-type TfaWebauthnConfig = array{ - * enabled?: scalar|null|Param, // Default: false + * enabled?: scalar|Param|null, // Default: false * timeout?: int|Param, // Default: 60000 - * rpID?: scalar|null|Param, // Default: null - * rpName?: scalar|null|Param, // Default: "Webauthn Application" - * rpIcon?: scalar|null|Param, // Default: null - * template?: scalar|null|Param, // Default: "@TFAWebauthn/Authentication/form.html.twig" - * U2FAppID?: scalar|null|Param, // Default: null + * rpID?: scalar|Param|null, // Default: null + * rpName?: scalar|Param|null, // Default: "Webauthn Application" + * rpIcon?: scalar|Param|null, // Default: null + * template?: scalar|Param|null, // Default: "@TFAWebauthn/Authentication/form.html.twig" + * U2FAppID?: scalar|Param|null, // Default: null * } * @psalm-type SchebTwoFactorConfig = array{ - * persister?: scalar|null|Param, // Default: "scheb_two_factor.persister.doctrine" - * model_manager_name?: scalar|null|Param, // Default: null - * security_tokens?: list, - * ip_whitelist?: list, - * ip_whitelist_provider?: scalar|null|Param, // Default: "scheb_two_factor.default_ip_whitelist_provider" - * two_factor_token_factory?: scalar|null|Param, // Default: "scheb_two_factor.default_token_factory" - * two_factor_provider_decider?: scalar|null|Param, // Default: "scheb_two_factor.default_provider_decider" - * two_factor_condition?: scalar|null|Param, // Default: null - * code_reuse_cache?: scalar|null|Param, // Default: null + * persister?: scalar|Param|null, // Default: "scheb_two_factor.persister.doctrine" + * model_manager_name?: scalar|Param|null, // Default: null + * security_tokens?: list, + * ip_whitelist?: list, + * ip_whitelist_provider?: scalar|Param|null, // Default: "scheb_two_factor.default_ip_whitelist_provider" + * two_factor_token_factory?: scalar|Param|null, // Default: "scheb_two_factor.default_token_factory" + * two_factor_provider_decider?: scalar|Param|null, // Default: "scheb_two_factor.default_provider_decider" + * two_factor_condition?: scalar|Param|null, // Default: null + * code_reuse_cache?: scalar|Param|null, // Default: null * code_reuse_cache_duration?: int|Param, // Default: 60 - * code_reuse_default_handler?: scalar|null|Param, // Default: null + * code_reuse_default_handler?: scalar|Param|null, // Default: null * trusted_device?: bool|array{ - * enabled?: scalar|null|Param, // Default: false - * manager?: scalar|null|Param, // Default: "scheb_two_factor.default_trusted_device_manager" + * enabled?: scalar|Param|null, // Default: false + * manager?: scalar|Param|null, // Default: "scheb_two_factor.default_trusted_device_manager" * lifetime?: int|Param, // Default: 5184000 * extend_lifetime?: bool|Param, // Default: false - * key?: scalar|null|Param, // Default: null - * cookie_name?: scalar|null|Param, // Default: "trusted_device" + * key?: scalar|Param|null, // Default: null + * cookie_name?: scalar|Param|null, // Default: "trusted_device" * cookie_secure?: true|false|"auto"|Param, // Default: "auto" - * cookie_domain?: scalar|null|Param, // Default: null - * cookie_path?: scalar|null|Param, // Default: "/" - * cookie_same_site?: scalar|null|Param, // Default: "lax" + * cookie_domain?: scalar|Param|null, // Default: null + * cookie_path?: scalar|Param|null, // Default: "/" + * cookie_same_site?: scalar|Param|null, // Default: "lax" * }, * backup_codes?: bool|array{ - * enabled?: scalar|null|Param, // Default: false - * manager?: scalar|null|Param, // Default: "scheb_two_factor.default_backup_code_manager" + * enabled?: scalar|Param|null, // Default: false + * manager?: scalar|Param|null, // Default: "scheb_two_factor.default_backup_code_manager" * }, * google?: bool|array{ - * enabled?: scalar|null|Param, // Default: false - * form_renderer?: scalar|null|Param, // Default: null - * issuer?: scalar|null|Param, // Default: null - * server_name?: scalar|null|Param, // Default: null - * template?: scalar|null|Param, // Default: "@SchebTwoFactor/Authentication/form.html.twig" + * enabled?: scalar|Param|null, // Default: false + * form_renderer?: scalar|Param|null, // Default: null + * issuer?: scalar|Param|null, // Default: null + * server_name?: scalar|Param|null, // Default: null + * template?: scalar|Param|null, // Default: "@SchebTwoFactor/Authentication/form.html.twig" * digits?: int|Param, // Default: 6 * leeway?: int|Param, // Default: 0 * }, * } * @psalm-type WebauthnConfig = array{ - * fake_credential_generator?: scalar|null|Param, // A service that implements the FakeCredentialGenerator to generate fake credentials for preventing username enumeration. // Default: "Webauthn\\SimpleFakeCredentialGenerator" - * clock?: scalar|null|Param, // PSR-20 Clock service. // Default: "webauthn.clock.default" - * options_storage?: scalar|null|Param, // Service responsible of the options/user entity storage during the ceremony // Default: "Webauthn\\Bundle\\Security\\Storage\\SessionStorage" - * event_dispatcher?: scalar|null|Param, // PSR-14 Event Dispatcher service. // Default: "Psr\\EventDispatcher\\EventDispatcherInterface" - * http_client?: scalar|null|Param, // A Symfony HTTP client. // Default: "webauthn.http_client.default" - * logger?: scalar|null|Param, // A PSR-3 logger to receive logs during the processes // Default: "webauthn.logger.default" - * credential_repository?: scalar|null|Param, // This repository is responsible of the credential storage // Default: "Webauthn\\Bundle\\Repository\\DummyPublicKeyCredentialSourceRepository" - * user_repository?: scalar|null|Param, // This repository is responsible of the user storage // Default: "Webauthn\\Bundle\\Repository\\DummyPublicKeyCredentialUserEntityRepository" - * allowed_origins?: array, + * fake_credential_generator?: scalar|Param|null, // A service that implements the FakeCredentialGenerator to generate fake credentials for preventing username enumeration. // Default: "Webauthn\\SimpleFakeCredentialGenerator" + * clock?: scalar|Param|null, // PSR-20 Clock service. // Default: "webauthn.clock.default" + * options_storage?: scalar|Param|null, // Service responsible of the options/user entity storage during the ceremony // Default: "Webauthn\\Bundle\\Security\\Storage\\SessionStorage" + * event_dispatcher?: scalar|Param|null, // PSR-14 Event Dispatcher service. // Default: "Psr\\EventDispatcher\\EventDispatcherInterface" + * http_client?: scalar|Param|null, // A Symfony HTTP client. // Default: "webauthn.http_client.default" + * logger?: scalar|Param|null, // A PSR-3 logger to receive logs during the processes // Default: "webauthn.logger.default" + * credential_repository?: scalar|Param|null, // This repository is responsible of the credential storage // Default: "Webauthn\\Bundle\\Repository\\DummyPublicKeyCredentialSourceRepository" + * user_repository?: scalar|Param|null, // This repository is responsible of the user storage // Default: "Webauthn\\Bundle\\Repository\\DummyPublicKeyCredentialUserEntityRepository" + * allowed_origins?: array, * allow_subdomains?: bool|Param, // Default: false - * secured_rp_ids?: array, - * counter_checker?: scalar|null|Param, // This service will check if the counter is valid. By default it throws an exception (recommended). // Default: "Webauthn\\Counter\\ThrowExceptionIfInvalid" - * top_origin_validator?: scalar|null|Param, // For cross origin (e.g. iframe), this service will be in charge of verifying the top origin. // Default: null + * secured_rp_ids?: array, + * counter_checker?: scalar|Param|null, // This service will check if the counter is valid. By default it throws an exception (recommended). // Default: "Webauthn\\Counter\\ThrowExceptionIfInvalid" + * top_origin_validator?: scalar|Param|null, // For cross origin (e.g. iframe), this service will be in charge of verifying the top origin. // Default: null * creation_profiles?: array, + * extensions?: array, * public_key_credential_parameters?: list, - * attestation_conveyance?: scalar|null|Param, // Default: "none" + * attestation_conveyance?: scalar|Param|null, // Default: "none" * }>, * request_profiles?: array, + * user_verification?: scalar|Param|null, // Default: "preferred" + * extensions?: array, * }>, * metadata?: bool|array{ // Enable the support of the Metadata Statements. Please read the documentation for this feature. * enabled?: bool|Param, // Default: false - * mds_repository: scalar|null|Param, // The Metadata Statement repository. - * status_report_repository: scalar|null|Param, // The Status Report repository. - * certificate_chain_checker?: scalar|null|Param, // A Certificate Chain checker. // Default: "Webauthn\\MetadataService\\CertificateChain\\PhpCertificateChainValidator" + * mds_repository: scalar|Param|null, // The Metadata Statement repository. + * status_report_repository: scalar|Param|null, // The Status Report repository. + * certificate_chain_checker?: scalar|Param|null, // A Certificate Chain checker. // Default: "Webauthn\\MetadataService\\CertificateChain\\PhpCertificateChainValidator" * }, * controllers?: bool|array{ * enabled?: bool|Param, // Default: false * creation?: array, + * options_method?: scalar|Param|null, // Default: "POST" + * options_path: scalar|Param|null, + * result_method?: scalar|Param|null, // Default: "POST" + * result_path?: scalar|Param|null, // Default: null + * host?: scalar|Param|null, // Default: null + * profile?: scalar|Param|null, // Default: "default" + * options_builder?: scalar|Param|null, // When set, corresponds to the ID of the Public Key Credential Creation Builder. The profile-based ebuilder is ignored. // Default: null + * user_entity_guesser: scalar|Param|null, + * hide_existing_credentials?: scalar|Param|null, // In order to prevent username enumeration, the existing credentials can be hidden. This is highly recommended when the attestation ceremony is performed by anonymous users. // Default: false + * options_storage?: scalar|Param|null, // Deprecated: The child node "options_storage" at path "webauthn.controllers.creation..options_storage" is deprecated. Please use the root option "options_storage" instead. // Service responsible of the options/user entity storage during the ceremony // Default: null + * success_handler?: scalar|Param|null, // Default: "Webauthn\\Bundle\\Service\\DefaultSuccessHandler" + * failure_handler?: scalar|Param|null, // Default: "Webauthn\\Bundle\\Service\\DefaultFailureHandler" + * options_handler?: scalar|Param|null, // Default: "Webauthn\\Bundle\\Security\\Handler\\DefaultCreationOptionsHandler" + * allowed_origins?: array, * allow_subdomains?: bool|Param, // Default: false - * secured_rp_ids?: array, + * secured_rp_ids?: array, * }>, * request?: array, + * options_method?: scalar|Param|null, // Default: "POST" + * options_path: scalar|Param|null, + * result_method?: scalar|Param|null, // Default: "POST" + * result_path?: scalar|Param|null, // Default: null + * host?: scalar|Param|null, // Default: null + * profile?: scalar|Param|null, // Default: "default" + * options_builder?: scalar|Param|null, // When set, corresponds to the ID of the Public Key Credential Creation Builder. The profile-based ebuilder is ignored. // Default: null + * options_storage?: scalar|Param|null, // Deprecated: The child node "options_storage" at path "webauthn.controllers.request..options_storage" is deprecated. Please use the root option "options_storage" instead. // Service responsible of the options/user entity storage during the ceremony // Default: null + * success_handler?: scalar|Param|null, // Default: "Webauthn\\Bundle\\Service\\DefaultSuccessHandler" + * failure_handler?: scalar|Param|null, // Default: "Webauthn\\Bundle\\Service\\DefaultFailureHandler" + * options_handler?: scalar|Param|null, // Default: "Webauthn\\Bundle\\Security\\Handler\\DefaultRequestOptionsHandler" + * allowed_origins?: array, * allow_subdomains?: bool|Param, // Default: false - * secured_rp_ids?: array, + * secured_rp_ids?: array, * }>, * }, * } * @psalm-type NbgrpOneloginSamlConfig = array{ // nb:group OneLogin PHP Symfony Bundle configuration * onelogin_settings?: array/saml/" + * baseurl?: scalar|Param|null, // Default: "/saml/" * strict?: bool|Param, * debug?: bool|Param, * idp: array{ - * entityId: scalar|null|Param, + * entityId: scalar|Param|null, * singleSignOnService: array{ - * url: scalar|null|Param, - * binding?: scalar|null|Param, + * url: scalar|Param|null, + * binding?: scalar|Param|null, * }, * singleLogoutService?: array{ - * url?: scalar|null|Param, - * responseUrl?: scalar|null|Param, - * binding?: scalar|null|Param, + * url?: scalar|Param|null, + * responseUrl?: scalar|Param|null, + * binding?: scalar|Param|null, * }, - * x509cert?: scalar|null|Param, - * certFingerprint?: scalar|null|Param, + * x509cert?: scalar|Param|null, + * certFingerprint?: scalar|Param|null, * certFingerprintAlgorithm?: "sha1"|"sha256"|"sha384"|"sha512"|Param, * x509certMulti?: array{ - * signing?: list, - * encryption?: list, + * signing?: list, + * encryption?: list, * }, * }, * sp?: array{ - * entityId?: scalar|null|Param, // Default: "/saml/metadata" + * entityId?: scalar|Param|null, // Default: "/saml/metadata" * assertionConsumerService?: array{ - * url?: scalar|null|Param, // Default: "/saml/acs" - * binding?: scalar|null|Param, + * url?: scalar|Param|null, // Default: "/saml/acs" + * binding?: scalar|Param|null, * }, * attributeConsumingService?: array{ - * serviceName?: scalar|null|Param, - * serviceDescription?: scalar|null|Param, + * serviceName?: scalar|Param|null, + * serviceDescription?: scalar|Param|null, * requestedAttributes?: list, * }>, * }, * singleLogoutService?: array{ - * url?: scalar|null|Param, // Default: "/saml/logout" - * binding?: scalar|null|Param, + * url?: scalar|Param|null, // Default: "/saml/logout" + * binding?: scalar|Param|null, * }, - * NameIDFormat?: scalar|null|Param, - * x509cert?: scalar|null|Param, - * privateKey?: scalar|null|Param, - * x509certNew?: scalar|null|Param, + * NameIDFormat?: scalar|Param|null, + * x509cert?: scalar|Param|null, + * privateKey?: scalar|Param|null, + * x509certNew?: scalar|Param|null, * }, * compress?: array{ * requests?: bool|Param, @@ -2270,76 +2270,76 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * }, * contactPerson?: array{ * technical?: array{ - * givenName: scalar|null|Param, - * emailAddress: scalar|null|Param, + * givenName: scalar|Param|null, + * emailAddress: scalar|Param|null, * }, * support?: array{ - * givenName: scalar|null|Param, - * emailAddress: scalar|null|Param, + * givenName: scalar|Param|null, + * emailAddress: scalar|Param|null, * }, * administrative?: array{ - * givenName: scalar|null|Param, - * emailAddress: scalar|null|Param, + * givenName: scalar|Param|null, + * emailAddress: scalar|Param|null, * }, * billing?: array{ - * givenName: scalar|null|Param, - * emailAddress: scalar|null|Param, + * givenName: scalar|Param|null, + * emailAddress: scalar|Param|null, * }, * other?: array{ - * givenName: scalar|null|Param, - * emailAddress: scalar|null|Param, + * givenName: scalar|Param|null, + * emailAddress: scalar|Param|null, * }, * }, * organization?: list, * }>, * use_proxy_vars?: bool|Param, // Default: false - * idp_parameter_name?: scalar|null|Param, // Default: "idp" - * entity_manager_name?: scalar|null|Param, + * idp_parameter_name?: scalar|Param|null, // Default: "idp" + * entity_manager_name?: scalar|Param|null, * authn_request?: array{ - * parameters?: list, + * parameters?: list, * forceAuthn?: bool|Param, // Default: false * isPassive?: bool|Param, // Default: false * setNameIdPolicy?: bool|Param, // Default: true - * nameIdValueReq?: scalar|null|Param, // Default: null + * nameIdValueReq?: scalar|Param|null, // Default: null * }, * } * @psalm-type StimulusConfig = array{ - * controller_paths?: list, - * controllers_json?: scalar|null|Param, // Default: "%kernel.project_dir%/assets/controllers.json" + * controller_paths?: list, + * controllers_json?: scalar|Param|null, // Default: "%kernel.project_dir%/assets/controllers.json" * } * @psalm-type UxTranslatorConfig = array{ - * dump_directory?: scalar|null|Param, // The directory where translations and TypeScript types are dumped. // Default: "%kernel.project_dir%/var/translations" + * dump_directory?: scalar|Param|null, // The directory where translations and TypeScript types are dumped. // Default: "%kernel.project_dir%/var/translations" * dump_typescript?: bool|Param, // Control whether TypeScript types are dumped alongside translations. Disable this if you do not use TypeScript (e.g. in production when using AssetMapper). // Default: true * domains?: string|array{ // List of domains to include/exclude from the generated translations. Prefix with a `!` to exclude a domain. - * type?: scalar|null|Param, - * elements?: list, + * type?: scalar|Param|null, + * elements?: list, * }, - * keys_patterns?: list, + * keys_patterns?: list, * } * @psalm-type DompdfFontLoaderConfig = array{ * autodiscovery?: bool|array{ - * paths?: list, - * exclude_patterns?: list, - * file_pattern?: scalar|null|Param, // Default: "/\\.(ttf)$/" + * paths?: list, + * exclude_patterns?: list, + * file_pattern?: scalar|Param|null, // Default: "/\\.(ttf)$/" * enabled?: bool|Param, // Default: true * }, * auto_install?: bool|Param, // Default: false * fonts?: list, * } * @psalm-type KnpuOauth2ClientConfig = array{ - * http_client?: scalar|null|Param, // Service id of HTTP client to use (must implement GuzzleHttp\ClientInterface) // Default: null + * http_client?: scalar|Param|null, // Service id of HTTP client to use (must implement GuzzleHttp\ClientInterface) // Default: null * http_client_options?: array{ * timeout?: int|Param, - * proxy?: scalar|null|Param, + * proxy?: scalar|Param|null, * verify?: bool|Param, // Use only with proxy option set * }, * clients?: array>, @@ -2347,69 +2347,69 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * @psalm-type NelmioCorsConfig = array{ * defaults?: array{ * allow_credentials?: bool|Param, // Default: false - * allow_origin?: list, - * allow_headers?: list, - * allow_methods?: list, + * allow_origin?: list, + * allow_headers?: list, + * allow_methods?: list, * allow_private_network?: bool|Param, // Default: false - * expose_headers?: list, - * max_age?: scalar|null|Param, // Default: 0 - * hosts?: list, + * expose_headers?: list, + * max_age?: scalar|Param|null, // Default: 0 + * hosts?: list, * origin_regex?: bool|Param, // Default: false - * forced_allow_origin_value?: scalar|null|Param, // Default: null + * forced_allow_origin_value?: scalar|Param|null, // Default: null * skip_same_as_origin?: bool|Param, // Default: true * }, * paths?: array, - * allow_headers?: list, - * allow_methods?: list, + * allow_origin?: list, + * allow_headers?: list, + * allow_methods?: list, * allow_private_network?: bool|Param, - * expose_headers?: list, - * max_age?: scalar|null|Param, // Default: 0 - * hosts?: list, + * expose_headers?: list, + * max_age?: scalar|Param|null, // Default: 0 + * hosts?: list, * origin_regex?: bool|Param, - * forced_allow_origin_value?: scalar|null|Param, // Default: null + * forced_allow_origin_value?: scalar|Param|null, // Default: null * skip_same_as_origin?: bool|Param, * }>, * } * @psalm-type JbtronicsSettingsConfig = array{ - * search_paths?: list, - * proxy_dir?: scalar|null|Param, // Default: "%kernel.cache_dir%/jbtronics_settings/proxies" - * proxy_namespace?: scalar|null|Param, // Default: "Jbtronics\\SettingsBundle\\Proxies" - * default_storage_adapter?: scalar|null|Param, // Default: null + * search_paths?: list, + * proxy_dir?: scalar|Param|null, // Default: "%kernel.cache_dir%/jbtronics_settings/proxies" + * proxy_namespace?: scalar|Param|null, // Default: "Jbtronics\\SettingsBundle\\Proxies" + * default_storage_adapter?: scalar|Param|null, // Default: null * save_after_migration?: bool|Param, // Default: true * file_storage?: array{ - * storage_directory?: scalar|null|Param, // Default: "%kernel.project_dir%/var/jbtronics_settings/" - * default_filename?: scalar|null|Param, // Default: "settings" + * storage_directory?: scalar|Param|null, // Default: "%kernel.project_dir%/var/jbtronics_settings/" + * default_filename?: scalar|Param|null, // Default: "settings" * }, * orm_storage?: array{ - * default_entity_class?: scalar|null|Param, // Default: null + * default_entity_class?: scalar|Param|null, // Default: null * prefetch_all?: bool|Param, // Default: true * }, * cache?: array{ - * service?: scalar|null|Param, // Default: "cache.app.taggable" + * service?: scalar|Param|null, // Default: "cache.app.taggable" * default_cacheable?: bool|Param, // Default: false * ttl?: int|Param, // Default: 0 * invalidate_on_env_change?: bool|Param, // Default: true * }, * } * @psalm-type JbtronicsTranslationEditorConfig = array{ - * translations_path?: scalar|null|Param, // Default: "%translator.default_path%" - * format?: scalar|null|Param, // Default: "xlf" - * xliff_version?: scalar|null|Param, // Default: "2.0" + * translations_path?: scalar|Param|null, // Default: "%translator.default_path%" + * format?: scalar|Param|null, // Default: "xlf" + * xliff_version?: scalar|Param|null, // Default: "2.0" * use_intl_icu_format?: bool|Param, // Default: false - * writer_options?: list, + * writer_options?: list, * } * @psalm-type ApiPlatformConfig = array{ - * title?: scalar|null|Param, // The title of the API. // Default: "" - * description?: scalar|null|Param, // The description of the API. // Default: "" - * version?: scalar|null|Param, // The version of the API. // Default: "0.0.0" + * title?: scalar|Param|null, // The title of the API. // Default: "" + * description?: scalar|Param|null, // The description of the API. // Default: "" + * version?: scalar|Param|null, // The version of the API. // Default: "0.0.0" * show_webby?: bool|Param, // If true, show Webby on the documentation page // Default: true * use_symfony_listeners?: bool|Param, // Uses Symfony event listeners instead of the ApiPlatform\Symfony\Controller\MainController. // Default: false - * name_converter?: scalar|null|Param, // Specify a name converter to use. // Default: null - * asset_package?: scalar|null|Param, // Specify an asset package name to use. // Default: null - * path_segment_name_generator?: scalar|null|Param, // Specify a path name generator to use. // Default: "api_platform.metadata.path_segment_name_generator.underscore" - * inflector?: scalar|null|Param, // Specify an inflector to use. // Default: "api_platform.metadata.inflector" + * name_converter?: scalar|Param|null, // Specify a name converter to use. // Default: null + * asset_package?: scalar|Param|null, // Specify an asset package name to use. // Default: null + * path_segment_name_generator?: scalar|Param|null, // Specify a path name generator to use. // Default: "api_platform.metadata.path_segment_name_generator.underscore" + * inflector?: scalar|Param|null, // Specify an inflector to use. // Default: "api_platform.metadata.inflector" * validator?: array{ * serialize_payload_fields?: mixed, // Set to null to serialize all payload fields when a validation error is thrown, or set the fields you want to include explicitly. // Default: [] * query_parameter_validation?: bool|Param, // Deprecated: Will be removed in API Platform 5.0. // Default: true @@ -2431,23 +2431,23 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * enable_phpdoc_parser?: bool|Param, // Enable resource metadata collector using PHPStan PhpDocParser. // Default: true * enable_link_security?: bool|Param, // Enable security for Links (sub resources) // Default: false * collection?: array{ - * exists_parameter_name?: scalar|null|Param, // The name of the query parameter to filter on nullable field values. // Default: "exists" - * order?: scalar|null|Param, // The default order of results. // Default: "ASC" - * order_parameter_name?: scalar|null|Param, // The name of the query parameter to order results. // Default: "order" - * order_nulls_comparison?: "nulls_smallest"|"nulls_largest"|"nulls_always_first"|"nulls_always_last"|null|Param, // The nulls comparison strategy. // Default: null + * exists_parameter_name?: scalar|Param|null, // The name of the query parameter to filter on nullable field values. // Default: "exists" + * order?: scalar|Param|null, // The default order of results. // Default: "ASC" + * order_parameter_name?: scalar|Param|null, // The name of the query parameter to order results. // Default: "order" + * order_nulls_comparison?: "nulls_smallest"|"nulls_largest"|"nulls_always_first"|"nulls_always_last"|Param|null, // The nulls comparison strategy. // Default: null * pagination?: bool|array{ * enabled?: bool|Param, // Default: true - * page_parameter_name?: scalar|null|Param, // The default name of the parameter handling the page number. // Default: "page" - * enabled_parameter_name?: scalar|null|Param, // The name of the query parameter to enable or disable pagination. // Default: "pagination" - * items_per_page_parameter_name?: scalar|null|Param, // The name of the query parameter to set the number of items per page. // Default: "itemsPerPage" - * partial_parameter_name?: scalar|null|Param, // The name of the query parameter to enable or disable partial pagination. // Default: "partial" + * page_parameter_name?: scalar|Param|null, // The default name of the parameter handling the page number. // Default: "page" + * enabled_parameter_name?: scalar|Param|null, // The name of the query parameter to enable or disable pagination. // Default: "pagination" + * items_per_page_parameter_name?: scalar|Param|null, // The name of the query parameter to set the number of items per page. // Default: "itemsPerPage" + * partial_parameter_name?: scalar|Param|null, // The name of the query parameter to enable or disable partial pagination. // Default: "partial" * }, * }, * mapping?: array{ - * imports?: list, - * paths?: list, + * imports?: list, + * paths?: list, * }, - * resource_class_directories?: list, + * resource_class_directories?: list, * serializer?: array{ * hydra_prefix?: bool|Param, // Use the "hydra:" prefix. // Default: false * }, @@ -2459,19 +2459,19 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * }, * oauth?: bool|array{ * enabled?: bool|Param, // Default: false - * clientId?: scalar|null|Param, // The oauth client id. // Default: "" - * clientSecret?: scalar|null|Param, // The OAuth client secret. Never use this parameter in your production environment. It exposes crucial security information. This feature is intended for dev/test environments only. Enable "oauth.pkce" instead // Default: "" + * clientId?: scalar|Param|null, // The oauth client id. // Default: "" + * clientSecret?: scalar|Param|null, // The OAuth client secret. Never use this parameter in your production environment. It exposes crucial security information. This feature is intended for dev/test environments only. Enable "oauth.pkce" instead // Default: "" * pkce?: bool|Param, // Enable the oauth PKCE. // Default: false - * type?: scalar|null|Param, // The oauth type. // Default: "oauth2" - * flow?: scalar|null|Param, // The oauth flow grant type. // Default: "application" - * tokenUrl?: scalar|null|Param, // The oauth token url. // Default: "" - * authorizationUrl?: scalar|null|Param, // The oauth authentication url. // Default: "" - * refreshUrl?: scalar|null|Param, // The oauth refresh url. // Default: "" - * scopes?: list, + * type?: scalar|Param|null, // The oauth type. // Default: "oauth2" + * flow?: scalar|Param|null, // The oauth flow grant type. // Default: "application" + * tokenUrl?: scalar|Param|null, // The oauth token url. // Default: "" + * authorizationUrl?: scalar|Param|null, // The oauth authentication url. // Default: "" + * refreshUrl?: scalar|Param|null, // The oauth refresh url. // Default: "" + * scopes?: list, * }, * graphql?: bool|array{ * enabled?: bool|Param, // Default: false - * default_ide?: scalar|null|Param, // Default: "graphiql" + * default_ide?: scalar|Param|null, // Default: "graphiql" * graphiql?: bool|array{ * enabled?: bool|Param, // Default: false * }, @@ -2481,7 +2481,7 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * max_query_depth?: int|Param, // Default: 20 * graphql_playground?: array, * max_query_complexity?: int|Param, // Default: 500 - * nesting_separator?: scalar|null|Param, // The separator to use to filter nested fields. // Default: "_" + * nesting_separator?: scalar|Param|null, // The separator to use to filter nested fields. // Default: "_" * collection?: array{ * pagination?: bool|array{ * enabled?: bool|Param, // Default: true @@ -2490,35 +2490,35 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * }, * swagger?: array{ * persist_authorization?: bool|Param, // Persist the SwaggerUI Authorization in the localStorage. // Default: false - * versions?: list, + * versions?: list, * api_keys?: array, * http_auth?: array, * swagger_ui_extra_configuration?: mixed, // To pass extra configuration to Swagger UI, like docExpansion or filter. // Default: [] * }, * http_cache?: array{ - * public?: bool|null|Param, // To make all responses public by default. // Default: null + * public?: bool|Param|null, // To make all responses public by default. // Default: null * invalidation?: bool|array{ // Enable the tags-based cache invalidation system. * enabled?: bool|Param, // Default: false - * varnish_urls?: list, - * urls?: list, - * scoped_clients?: list, + * varnish_urls?: list, + * urls?: list, + * scoped_clients?: list, * max_header_length?: int|Param, // Max header length supported by the cache server. // Default: 7500 * request_options?: mixed, // To pass options to the client charged with the request. // Default: [] - * purger?: scalar|null|Param, // Specify a purger to use (available values: "api_platform.http_cache.purger.varnish.ban", "api_platform.http_cache.purger.varnish.xkey", "api_platform.http_cache.purger.souin"). // Default: "api_platform.http_cache.purger.varnish" + * purger?: scalar|Param|null, // Specify a purger to use (available values: "api_platform.http_cache.purger.varnish.ban", "api_platform.http_cache.purger.varnish.xkey", "api_platform.http_cache.purger.souin"). // Default: "api_platform.http_cache.purger.varnish" * xkey?: array{ // Deprecated: The "xkey" configuration is deprecated, use your own purger to customize surrogate keys or the appropriate paramters. - * glue?: scalar|null|Param, // xkey glue between keys // Default: " " + * glue?: scalar|Param|null, // xkey glue between keys // Default: " " * }, * }, * }, * mercure?: bool|array{ * enabled?: bool|Param, // Default: false - * hub_url?: scalar|null|Param, // The URL sent in the Link HTTP header. If not set, will default to the URL for MercureBundle's default hub. // Default: null + * hub_url?: scalar|Param|null, // The URL sent in the Link HTTP header. If not set, will default to the URL for MercureBundle's default hub. // Default: null * include_type?: bool|Param, // Always include @type in updates (including delete ones). // Default: false * }, * messenger?: bool|array{ @@ -2526,46 +2526,46 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * }, * elasticsearch?: bool|array{ * enabled?: bool|Param, // Default: false - * hosts?: list, + * hosts?: list, * }, * openapi?: array{ * contact?: array{ - * name?: scalar|null|Param, // The identifying name of the contact person/organization. // Default: null - * url?: scalar|null|Param, // The URL pointing to the contact information. MUST be in the format of a URL. // Default: null - * email?: scalar|null|Param, // The email address of the contact person/organization. MUST be in the format of an email address. // Default: null + * name?: scalar|Param|null, // The identifying name of the contact person/organization. // Default: null + * url?: scalar|Param|null, // The URL pointing to the contact information. MUST be in the format of a URL. // Default: null + * email?: scalar|Param|null, // The email address of the contact person/organization. MUST be in the format of an email address. // Default: null * }, - * termsOfService?: scalar|null|Param, // A URL to the Terms of Service for the API. MUST be in the format of a URL. // Default: null + * termsOfService?: scalar|Param|null, // A URL to the Terms of Service for the API. MUST be in the format of a URL. // Default: null * tags?: list, * license?: array{ - * name?: scalar|null|Param, // The license name used for the API. // Default: null - * url?: scalar|null|Param, // URL to the license used for the API. MUST be in the format of a URL. // Default: null - * identifier?: scalar|null|Param, // An SPDX license expression for the API. The identifier field is mutually exclusive of the url field. // Default: null + * name?: scalar|Param|null, // The license name used for the API. // Default: null + * url?: scalar|Param|null, // URL to the license used for the API. MUST be in the format of a URL. // Default: null + * identifier?: scalar|Param|null, // An SPDX license expression for the API. The identifier field is mutually exclusive of the url field. // Default: null * }, * swagger_ui_extra_configuration?: mixed, // To pass extra configuration to Swagger UI, like docExpansion or filter. // Default: [] * overrideResponses?: bool|Param, // Whether API Platform adds automatic responses to the OpenAPI documentation. // Default: true - * error_resource_class?: scalar|null|Param, // The class used to represent errors in the OpenAPI documentation. // Default: null - * validation_error_resource_class?: scalar|null|Param, // The class used to represent validation errors in the OpenAPI documentation. // Default: null + * error_resource_class?: scalar|Param|null, // The class used to represent errors in the OpenAPI documentation. // Default: null + * validation_error_resource_class?: scalar|Param|null, // The class used to represent validation errors in the OpenAPI documentation. // Default: null * }, * maker?: bool|array{ * enabled?: bool|Param, // Default: true * }, * exception_to_status?: array, * formats?: array, + * mime_types?: list, * }>, * patch_formats?: array, + * mime_types?: list, * }>, * docs_formats?: array, + * mime_types?: list, * }>, * error_formats?: array, + * mime_types?: list, * }>, - * jsonschema_formats?: list, + * jsonschema_formats?: list, * defaults?: array{ * uri_template?: mixed, * short_name?: mixed, From 56fa2a9396f253363cebf416a3324dd3060baf2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 25 Jan 2026 00:51:57 +0100 Subject: [PATCH 131/235] Updated yarn dependencies --- yarn.lock | 137 +++++++++++++++++++++++++++++------------------------- 1 file changed, 73 insertions(+), 64 deletions(-) diff --git a/yarn.lock b/yarn.lock index 159961b5..ed92b354 100644 --- a/yarn.lock +++ b/yarn.lock @@ -64,7 +64,7 @@ js-tokens "^4.0.0" picocolors "^1.1.1" -"@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.6": +"@babel/compat-data@^7.28.6": version "7.28.6" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.6.tgz#103f466803fa0f059e82ccac271475470570d74c" integrity sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg== @@ -108,7 +108,7 @@ dependencies: "@babel/types" "^7.27.3" -"@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2", "@babel/helper-compilation-targets@^7.28.6": +"@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.28.6": version "7.28.6" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz#32c4a3f41f12ed1532179b108a4d746e105c2b25" integrity sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA== @@ -141,16 +141,16 @@ regexpu-core "^6.3.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.6.5": - version "0.6.5" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz#742ccf1cb003c07b48859fc9fa2c1bbe40e5f753" - integrity sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg== +"@babel/helper-define-polyfill-provider@^0.6.5", "@babel/helper-define-polyfill-provider@^0.6.6": + version "0.6.6" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.6.tgz#714dfe33d8bd710f556df59953720f6eeb6c1a14" + integrity sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA== dependencies: - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-plugin-utils" "^7.27.1" - debug "^4.4.1" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + debug "^4.4.3" lodash.debounce "^4.0.8" - resolve "^1.22.10" + resolve "^1.22.11" "@babel/helper-globals@^7.28.0": version "7.28.0" @@ -2018,9 +2018,9 @@ integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== "@sinclair/typebox@^0.34.0": - version "0.34.47" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.34.47.tgz#61b684d8a20d2890b9f1f7b0d4f76b4b39f5bc0d" - integrity sha512-ZGIBQ+XDvO5JQku9wmwtabcVTHJsgSWAHYtVuM9pBNNR5E88v6Jcj/llpmsjivig5X8A8HHOb4/mbEKPS5EvAw== + version "0.34.48" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.34.48.tgz#75b0ead87e59e1adbd6dccdc42bad4fddee73b59" + integrity sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA== "@symfony/stimulus-bridge@^4.0.0": version "4.0.1" @@ -2169,9 +2169,9 @@ integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== "@types/node@*": - version "25.0.9" - resolved "https://registry.yarnpkg.com/@types/node/-/node-25.0.9.tgz#81ce3579ddf67cae812a9d49c8a0ab90c82e7782" - integrity sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw== + version "25.0.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-25.0.10.tgz#4864459c3c9459376b8b75fd051315071c8213e7" + integrity sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg== dependencies: undici-types "~7.16.0" @@ -2571,12 +2571,12 @@ available-typed-arrays@^1.0.7: find-up "^5.0.0" babel-plugin-polyfill-corejs2@^0.4.14: - version "0.4.14" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz#8101b82b769c568835611542488d463395c2ef8f" - integrity sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg== + version "0.4.15" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.15.tgz#808fa349686eea4741807cfaaa2aa3aa57ce120a" + integrity sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw== dependencies: - "@babel/compat-data" "^7.27.7" - "@babel/helper-define-polyfill-provider" "^0.6.5" + "@babel/compat-data" "^7.28.6" + "@babel/helper-define-polyfill-provider" "^0.6.6" semver "^6.3.1" babel-plugin-polyfill-corejs3@^0.13.0: @@ -2588,11 +2588,11 @@ babel-plugin-polyfill-corejs3@^0.13.0: core-js-compat "^3.43.0" babel-plugin-polyfill-regenerator@^0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz#32752e38ab6f6767b92650347bf26a31b16ae8c5" - integrity sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg== + version "0.6.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.6.tgz#69f5dd263cab933c42fe5ea05e83443b374bd4bf" + integrity sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A== dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.5" + "@babel/helper-define-polyfill-provider" "^0.6.6" bail@^2.0.0: version "2.0.2" @@ -2622,9 +2622,9 @@ base64-js@^1.1.2, base64-js@^1.3.0: integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== baseline-browser-mapping@^2.9.0: - version "2.9.15" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.15.tgz#6baaa0069883f50a99cdb31b56646491f47c05d7" - integrity sha512-kX8h7K2srmDyYnXRIppo4AH/wYgzWVCs+eKr3RusRSQ5PvRYoEFmR/I0PbdTjKFAoKqp5+kbxnNTFO9jOfSVJg== + version "2.9.18" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.18.tgz#c8281693035a9261b10d662a5379650a6c2d1ff7" + integrity sha512-e23vBV1ZLfjb9apvfPk4rHVu2ry6RIr2Wfs+O324okSidrX7pTAnEJPCh/O5BtRlr7QtZI7ktOP3vsqr7Z5XoA== big.js@^5.2.2: version "5.2.2" @@ -2688,7 +2688,7 @@ browser-stdout@1.3.1: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.27.0, browserslist@^4.28.0, browserslist@^4.28.1: +browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.27.0, browserslist@^4.28.1: version "4.28.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.1.tgz#7f534594628c53c63101079e27e40de490456a95" integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA== @@ -2785,9 +2785,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001759: - version "1.0.30001764" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001764.tgz#03206c56469f236103b90f9ae10bcb8b9e1f6005" - integrity sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g== + version "1.0.30001766" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001766.tgz#b6f6b55cb25a2d888d9393104d14751c6a7d6f7a" + integrity sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA== ccount@^2.0.0: version "2.0.1" @@ -3097,16 +3097,16 @@ convert-source-map@^2.0.0: integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== core-js-compat@^3.43.0: - version "3.47.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.47.0.tgz#698224bbdbb6f2e3f39decdda4147b161e3772a3" - integrity sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ== + version "3.48.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.48.0.tgz#7efbe1fc1cbad44008190462217cc5558adaeaa6" + integrity sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q== dependencies: - browserslist "^4.28.0" + browserslist "^4.28.1" core-js@^3.38.0: - version "3.47.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.47.0.tgz#436ef07650e191afeb84c24481b298bd60eb4a17" - integrity sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg== + version "3.48.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.48.0.tgz#1f813220a47bbf0e667e3885c36cd6f0593bf14d" + integrity sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ== core-util-is@~1.0.0: version "1.0.3" @@ -3485,7 +3485,7 @@ debug@3.2.6: dependencies: ms "^2.1.1" -debug@^4.0.0, debug@^4.1.0, debug@^4.3.1, debug@^4.4.1: +debug@^4.0.0, debug@^4.1.0, debug@^4.3.1, debug@^4.4.3: version "4.4.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== @@ -3503,9 +3503,9 @@ decimal.js@^10.4.3: integrity sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg== decode-named-character-reference@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz#25c32ae6dd5e21889549d40f676030e9514cc0ed" - integrity sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q== + version "1.3.0" + resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz#3e40603760874c2e5867691b599d73a7da25b53f" + integrity sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q== dependencies: character-entities "^2.0.0" @@ -3666,9 +3666,9 @@ dunder-proto@^1.0.0, dunder-proto@^1.0.1: gopd "^1.2.0" electron-to-chromium@^1.5.263: - version "1.5.267" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz#5d84f2df8cdb6bfe7e873706bb21bd4bfb574dc7" - integrity sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw== + version "1.5.278" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.278.tgz#807a5e321f012a41bfd64e653f35993c9af95493" + integrity sha512-dQ0tM1svDRQOwxnXxm+twlGTjr9Upvt8UFWAgmLsxEzFQxhbti4VwxmMjsDxVC51Zo84swW7FVCXEV+VAkhuPw== emoji-regex@^7.0.1: version "7.0.3" @@ -5042,9 +5042,9 @@ lodash.uniq@^4.5.0: integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + version "4.17.23" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.23.tgz#f113b0378386103be4f6893388c73d0bde7f2c5a" + integrity sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w== log-symbols@3.0.0: version "3.0.0" @@ -6829,7 +6829,7 @@ resolve-url-loader@^5.0.0: postcss "^8.2.14" source-map "0.6.1" -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.20.0, resolve@^1.22.10: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.20.0, resolve@^1.22.11: version "1.22.11" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262" integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ== @@ -7085,10 +7085,10 @@ signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -sirv@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" - integrity sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ== +sirv@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-3.0.2.tgz#f775fccf10e22a40832684848d636346f41cd970" + integrity sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g== dependencies: "@polka/url" "^1.0.0-next.24" mrmime "^2.0.0" @@ -7668,7 +7668,7 @@ unist-util-visit-parents@^6.0.0: "@types/unist" "^3.0.0" unist-util-is "^6.0.0" -unist-util-visit@5.0.0, unist-util-visit@^5.0.0: +unist-util-visit@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6" integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg== @@ -7677,6 +7677,15 @@ unist-util-visit@5.0.0, unist-util-visit@^5.0.0: unist-util-is "^6.0.0" unist-util-visit-parents "^6.0.0" +unist-util-visit@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.1.0.tgz#9a2a28b0aa76a15e0da70a08a5863a2f060e2468" + integrity sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg== + dependencies: + "@types/unist" "^3.0.0" + unist-util-is "^6.0.0" + unist-util-visit-parents "^6.0.0" + universalify@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" @@ -7747,9 +7756,9 @@ web-namespaces@^2.0.0: integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== webpack-bundle-analyzer@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-5.1.1.tgz#39273f584a234960158fd9a56ca79e739ae06062" - integrity sha512-UzoaIA0Aigo5lUvoUkIkSoHtUK5rBJh9e2vW3Eqct0jc/L8hcruBCz/jsXEvB1hDU1G3V94jo2EJqPcFKeSSeQ== + version "5.2.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-5.2.0.tgz#9bcf0e7cc8c86632a96bf7092300287dc284c3d7" + integrity sha512-Etrauj1wYO/xjiz/Vfd6bW1lG9fEhrJpNmu10tv0X9kv+gyY3qiE09uYepqg1Xd0PxOvllRXwWYWjtQYoO/glQ== dependencies: "@discoveryjs/json-ext" "0.5.7" acorn "^8.0.4" @@ -7760,8 +7769,8 @@ webpack-bundle-analyzer@^5.1.1: html-escaper "^2.0.2" opener "^1.5.2" picocolors "^1.0.0" - sirv "^2.0.3" - ws "^7.3.1" + sirv "^3.0.2" + ws "^8.19.0" webpack-cli@^5.1.0: version "5.1.4" @@ -7957,10 +7966,10 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -ws@^7.3.1: - version "7.5.10" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" - integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== +ws@^8.19.0: + version "8.19.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.19.0.tgz#ddc2bdfa5b9ad860204f5a72a4863a8895fd8c8b" + integrity sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg== xmldoc@^2.0.3: version "2.0.3" From f438a8b4cd59f3a46b2e457aeab2497af48ed1e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 25 Jan 2026 10:50:25 +0100 Subject: [PATCH 132/235] New translations validators.en.xlf (Danish) --- translations/validators.da.xlf | 110 +++++++++++++++++++++------------ 1 file changed, 70 insertions(+), 40 deletions(-) diff --git a/translations/validators.da.xlf b/translations/validators.da.xlf index 21149f0e..fac84f4c 100644 --- a/translations/validators.da.xlf +++ b/translations/validators.da.xlf @@ -1,7 +1,7 @@ - + Part-DB1\src\Entity\Attachments\AttachmentContainingDBElement.php:0 Part-DB1\src\Entity\Attachments\AttachmentType.php:0 @@ -42,7 +42,7 @@ Forhåndsvisnings-bilaget skal være et rigtigt billede! - + Part-DB1\src\Entity\Attachments\AttachmentType.php:0 Part-DB1\src\Entity\Base\AbstractCompany.php:0 @@ -87,7 +87,7 @@ Der eksisterer allerede et element med dette navn på dette niveau! - + Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 @@ -107,7 +107,7 @@ Værdi skal være mindre end eller lig med den typiske værdi ({{ compared_value }}). - + Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 @@ -127,7 +127,7 @@ Værdi skal være mindre end maksumumværdien ({{ compared_value }}). - + Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 @@ -147,7 +147,7 @@ Værdi skal være større eller lig med den typiske værdi ({{ compared_value }}). - + Part-DB1\src\Entity\UserSystem\User.php:0 Part-DB1\src\Entity\UserSystem\User.php:0 @@ -157,7 +157,7 @@ Der eksisterer allerede en bruger med dette navn - + Part-DB1\src\Entity\UserSystem\User.php:0 Part-DB1\src\Entity\UserSystem\User.php:0 @@ -167,179 +167,209 @@ Brugernavn skal må kun indeholde bogstager, tal, understregningstegn, punktummer, plusser og minusser! - + obsolete validator.noneofitschild.self - Et element kan ikke være dets eget overordnede element! + Et element kan ikke være overordnet for sig selv! - + obsolete validator.noneofitschild.children - Et underelement kan ikke være dets overordnede element (Dette ville resultere i løkker)! + Et underordnet element kan ikke være det overordnede element! - + validator.select_valid_category Vælg venligst en gyldig kategori! - + validator.part_lot.only_existing - Lagerlokationen er markeret som "Kun eksisterende dele", så derfor kan nye dele ikke tilføjes. + Opbevaringsstedet er markeret som "kun eksisterende dele", så nye dele kan ikke tilføjes. - + validator.part_lot.location_full.no_increase Lokationen er fuld. Antal kan ikke forøges (Ny værdi skal være mindre end {{ old_amount }}). - + validator.part_lot.location_full - Lokation er fuld. Kan ikke tilføje nye dele til denne. + Lagerpladsen er fuld, så nye dele kan ikke tilføjes. - + validator.part_lot.single_part - Lagerlokationen er markeret som "Kun én komponent", så der kan ikke tilføjes yderligere. + Lagerlokationen er markeret som "Kun én komponent", så en ny komponent kan ikke tilføjes. - + validator.attachment.must_not_be_null Du skal vælge en bilagstype! - + validator.orderdetail.supplier_must_not_be_null Du skal vælge en leverandør! - + validator.measurement_unit.use_si_prefix_needs_unit For at kunne aktivere SI-prefixes, så skal du have indtastet et enhedsymbol! - + part.ipn.must_be_unique Det interne partnummer skal være unikt. {{ value }} værdien er allerede i brug! - + validator.project.bom_entry.name_or_part_needed Du skal vælge en komponent eller angive et navn til en ikke-komponent styklistepost! - + project.bom_entry.name_already_in_bom Der findes allerede en BOM linie med dette navn! - + project.bom_entry.part_already_in_bom Delen eksisterer allerede i denne BOM! - + project.bom_entry.mountnames_quantity_mismatch Antallet af bestykningsnavne skal svare til BOM antallet af komponenter! - + project.bom_entry.can_not_add_own_builds_part En projekt BOM-liste kan ikke tilføjet til en BOM. - + project.bom_has_to_include_all_subelement_parts Projekt BOM skal indeholde alle underprojekters styklister. Komponent %part_name% fra projekt %project_name% mangler! - + project.bom_entry.price_not_allowed_on_parts Du kan ikke sætte pris for komponent-BOM indtastninger. Indtast prisen på selve komponenten selv. - + validator.project_build.lot_bigger_than_needed Du har valgt en større mængde til plukning end nødvendigt. Fjern det overskydende antal - + validator.project_build.lot_smaller_than_needed Du har valgt et for lille antal til plukning end der er nødvendigt for dette byg. Tilføj yderligere mængde. - + part.name.must_match_category_regex Komponentnavnet matcher ikke med det regulære udtryk (regular expression) som der er specificeret for kategorien: %regex% - + validator.attachment.name_not_blank Vælg en værdi, eller upload en fil for automatisk at bruge dens filnavn som navn for denne vedhæftede fil. - + validator.part_lot.owner_must_match_storage_location_owner Ejeren af ​​denne komponentbeholdning og den valgte lagerplacering skal matche (%owner_name%)! - + validator.part_lot.owner_must_not_be_anonymous Ejeren kan ikke være den anonyme bruger! - + validator.part_association.must_set_an_value_if_type_is_other Hvis linktypen er sat til "Andet", skal du angive en beskrivende værdi! - + validator.part_association.part_cannot_be_associated_with_itself En komponent kan ikke knyttes til sig selv! - + validator.part_association.already_exists Et link til denne komponent findes allerede! - + validator.part_lot.vendor_barcode_must_be_unique Denne leverandørstregkodeværdi er allerede brugt til en anden beholdning. Stregkoden skal være unik! + + + validator.year_2038_bug_on_32bit + På grund af tekniske begrænsninger er det ikke muligt at vælge en dato efter 19. januar 2038 på 32-bit systemer! + + + + + validator.fileSize.invalidFormat + Ugyldig filstørrelse. Brug et heltal med K, M eller G som suffiks for kilo, mega eller gigabyte. + + + + + validator.invalid_range + Det angivne interval er ikke gyldigt! + + + + + validator.google_code.wrong_code + Ugyldig kode. Kontroller, at godkendelsesappen er konfigureret korrekt, og at både serveren og enheden har indstillet det korrekte klokkeslæt. + + + + + settings.synonyms.type_synonyms.collection_type.duplicate + Der er allerede defineret en oversættelse for denne type og sprog! + + From 6d3197497e4817ff405ab7ed52b02e94295ed5ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 25 Jan 2026 10:50:26 +0100 Subject: [PATCH 133/235] New translations security.en.xlf (Danish) --- translations/security.da.xlf | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/translations/security.da.xlf b/translations/security.da.xlf index 0b1423fe..ab35c605 100644 --- a/translations/security.da.xlf +++ b/translations/security.da.xlf @@ -1,17 +1,23 @@ - + user.login_error.user_disabled 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 lokal bruger via SSO! Brug dit lokale password i stedet. + + + saml.error.cannot_login_saml_user_locally + Du kan ikke logge ind som SAML-bruger ved hjælp af lokal godkendelse! Brug SSO-login i stedet. + + From 4095d0fd499dcbc0f058927a8c79a3ab49641c73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 25 Jan 2026 10:50:30 +0100 Subject: [PATCH 134/235] New translations frontend.en.xlf (Danish) --- translations/frontend.da.xlf | 80 ++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 translations/frontend.da.xlf diff --git a/translations/frontend.da.xlf b/translations/frontend.da.xlf new file mode 100644 index 00000000..bb6a015d --- /dev/null +++ b/translations/frontend.da.xlf @@ -0,0 +1,80 @@ + + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:67 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + templates\AdminPages\EntityAdminBase.html.twig:9 + templates\base.html.twig:80 + templates\base.html.twig:179 + templates\base.html.twig:206 + templates\base.html.twig:237 + + + search.placeholder + Søg + + + + + part.labelp + Dele/parter + + + + + entity.select.group.new_not_added_to_DB + Ny (endnu ikke tilføjet til databasen) + + + + + 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 + + + + + Part-DB1\templates\_navbar_search.html.twig:68 + Part-DB1\templates\_navbar_search.html.twig:62 + + + search.submit + Kom nu! + + + + From d93dfd577ef1dd4fab368e3c725efa6c8db7465a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 25 Jan 2026 18:22:47 +0100 Subject: [PATCH 135/235] Fail more gracefully when an error occurs in the info providers --- src/Controller/InfoProviderController.php | 10 ++++++++++ translations/messages.en.xlf | 12 ++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/Controller/InfoProviderController.php b/src/Controller/InfoProviderController.php index b79c307c..e5a5d87b 100644 --- a/src/Controller/InfoProviderController.php +++ b/src/Controller/InfoProviderController.php @@ -40,10 +40,13 @@ use Symfony\Bridge\Doctrine\Attribute\MapEntity; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\HttpClient\Exception\ClientException; +use Symfony\Component\HttpClient\Exception\TransportException; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; +use Symfony\Contracts\HttpClient\Exception\ExceptionInterface; + use function Symfony\Component\Translation\t; #[Route('/tools/info_providers')] @@ -178,6 +181,13 @@ class InfoProviderController extends AbstractController $exceptionLogger->error('Error during info provider search: ' . $e->getMessage(), ['exception' => $e]); } catch (OAuthReconnectRequiredException $e) { $this->addFlash('error', t('info_providers.search.error.oauth_reconnect', ['%provider%' => $e->getProviderName()])); + } catch (TransportException $e) { + $this->addFlash('error', t('info_providers.search.error.transport_exception')); + $exceptionLogger->error('Transport error during info provider search: ' . $e->getMessage(), ['exception' => $e]); + } catch (\RuntimeException $e) { + $this->addFlash('error', t('info_providers.search.error.general_exception', ['%type%' => (new \ReflectionClass($e))->getShortName()])); + //Log the exception + $exceptionLogger->error('Error during info provider search: ' . $e->getMessage(), ['exception' => $e]); } diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index f7f10146..dc8cbcbb 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -14274,5 +14274,17 @@ Buerklin-API Authentication server: [Part] ID + + + info_providers.search.error.general_exception + Unknown error while trying to retrieve parts from info provider: %type%. Check that your providers are configured correctly and access keys are correct. See server logs for more information. + + + + + info_providers.search.error.transport_exception + Transport error while retrieving information from the providers. Check that your server has internet accesss. See server logs for more info. + + From 7b8f3aaf620bf0d4d619c33f220cfb439826d3e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 25 Jan 2026 18:23:26 +0100 Subject: [PATCH 136/235] New translations messages.en.xlf (English) --- translations/messages.en.xlf | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index ec608571..bba8fed9 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -14274,5 +14274,17 @@ Buerklin-API Authentication server: [Part] ID + + + info_providers.search.error.general_exception + Unknown error while trying to retrieve parts from info provider: %type%. Check that your providers are configured correctly and access keys are correct. See server logs for more information. + + + + + info_providers.search.error.transport_exception + Transport error while retrieving information from the providers. Check that your server has internet accesss. See server logs for more info. + + From fe458b7ff1f92f7590c5c395f2ccf2fced807bb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 25 Jan 2026 18:41:11 +0100 Subject: [PATCH 137/235] When uploading a file, automatically determine the best fitting attachment type --- .../elements/collection_type_controller.js | 30 ++++++++++++++++++- package.json | 1 + yarn.lock | 5 ++++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/assets/controllers/elements/collection_type_controller.js b/assets/controllers/elements/collection_type_controller.js index 8b816f30..14b683e0 100644 --- a/assets/controllers/elements/collection_type_controller.js +++ b/assets/controllers/elements/collection_type_controller.js @@ -21,6 +21,7 @@ import {Controller} from "@hotwired/stimulus"; import * as bootbox from "bootbox"; import "../../css/components/bootbox_extensions.css"; +import accept from "attr-accept"; export default class extends Controller { static values = { @@ -112,6 +113,33 @@ export default class extends Controller { dataTransfer.items.add(file); rowInput.files = dataTransfer.files; + + //Check the file extension and find the corresponding attachment type based on the data-filetype_filter attribute + const attachmentTypeSelect = newElement.querySelector("select"); + if (attachmentTypeSelect) { + let foundMatch = false; + for (let j = 0; j < attachmentTypeSelect.options.length; j++) { + const option = attachmentTypeSelect.options[j]; + //skip disabled options + if (option.disabled) { + continue; + } + + const filter = option.getAttribute('data-filetype_filter'); + if (filter) { + if (accept({name: file.name, type: file.type}, filter)) { + attachmentTypeSelect.value = option.value; + foundMatch = true; + break; + } + } else { //If no filter is set, chose this option until we find a better match + if (!foundMatch) { + attachmentTypeSelect.value = option.value; + foundMatch = true; + } + } + } + } } }); @@ -189,4 +217,4 @@ export default class extends Controller { del(); } } -} \ No newline at end of file +} diff --git a/package.json b/package.json index 583b21a2..583d0b42 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "@zxcvbn-ts/language-en": "^3.0.1", "@zxcvbn-ts/language-fr": "^3.0.1", "@zxcvbn-ts/language-ja": "^3.0.1", + "attr-accept": "^2.2.5", "barcode-detector": "^3.0.5", "bootbox": "^6.0.0", "bootswatch": "^5.1.3", diff --git a/yarn.lock b/yarn.lock index ed92b354..24c8d5be 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2556,6 +2556,11 @@ async-function@^1.0.0: resolved "https://registry.yarnpkg.com/async-function/-/async-function-1.0.0.tgz#509c9fca60eaf85034c6829838188e4e4c8ffb2b" integrity sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA== +attr-accept@^2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.5.tgz#d7061d958e6d4f97bf8665c68b75851a0713ab5e" + integrity sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ== + available-typed-arrays@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" From c476c98d56037efebefb0a0607a40ce66ae81fa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 25 Jan 2026 19:12:27 +0100 Subject: [PATCH 138/235] Added clear button to optional part select fields Fixes #1156 --- assets/controllers/elements/part_select_controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/controllers/elements/part_select_controller.js b/assets/controllers/elements/part_select_controller.js index 8a4e19b8..b69acbbc 100644 --- a/assets/controllers/elements/part_select_controller.js +++ b/assets/controllers/elements/part_select_controller.js @@ -18,7 +18,7 @@ export default class extends Controller { let settings = { allowEmptyOption: true, - plugins: ['dropdown_input'], + plugins: ['dropdown_input', this.element.required ? null : 'clear_button'], searchField: ["name", "description", "category", "footprint"], valueField: "id", labelField: "name", From b91cd449261a99066c791cb951e442f5ea3e3dba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 25 Jan 2026 20:15:29 +0100 Subject: [PATCH 139/235] Fixed frankenphp docker build --- Dockerfile-frankenphp | 33 +++++++-------------------------- 1 file changed, 7 insertions(+), 26 deletions(-) diff --git a/Dockerfile-frankenphp b/Dockerfile-frankenphp index f381f330..abf5f467 100644 --- a/Dockerfile-frankenphp +++ b/Dockerfile-frankenphp @@ -13,32 +13,13 @@ RUN apt-get update && apt-get -y install \ zip \ && apt-get -y autoremove && apt-get clean autoclean && rm -rf /var/lib/apt/lists/*; -RUN set -eux; \ - # Prepare keyrings directory - mkdir -p /etc/apt/keyrings; \ - \ - # Import Yarn GPG key - curl -fsSL https://dl.yarnpkg.com/debian/pubkey.gpg \ - | tee /etc/apt/keyrings/yarn.gpg >/dev/null; \ - chmod 644 /etc/apt/keyrings/yarn.gpg; \ - \ - # Add Yarn repo with signed-by - echo "deb [signed-by=/etc/apt/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian stable main" \ - | tee /etc/apt/sources.list.d/yarn.list; \ - \ - # Run NodeSource setup script (unchanged) - curl -sL https://deb.nodesource.com/setup_22.x | bash -; \ - \ - # Install Node.js + Yarn - apt-get update; \ - apt-get install -y --no-install-recommends \ - nodejs \ - yarn; \ - \ - # Cleanup - apt-get -y autoremove; \ - apt-get clean autoclean; \ - rm -rf /var/lib/apt/lists/* +RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ + echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \ + curl -sL https://deb.nodesource.com/setup_22.x | bash - && \ + apt-get update && apt-get install -y \ + nodejs \ + yarn \ + && apt-get -y autoremove && apt-get clean autoclean && rm -rf /var/lib/apt/lists/* # Install PHP From af61772c889a304d33f6b9b565c130551bd5270c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 25 Jan 2026 20:31:10 +0100 Subject: [PATCH 140/235] Revert "Fixed frankenphp docker build" This reverts commit b91cd449261a99066c791cb951e442f5ea3e3dba. --- Dockerfile-frankenphp | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/Dockerfile-frankenphp b/Dockerfile-frankenphp index abf5f467..f381f330 100644 --- a/Dockerfile-frankenphp +++ b/Dockerfile-frankenphp @@ -13,13 +13,32 @@ RUN apt-get update && apt-get -y install \ zip \ && apt-get -y autoremove && apt-get clean autoclean && rm -rf /var/lib/apt/lists/*; -RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ - echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \ - curl -sL https://deb.nodesource.com/setup_22.x | bash - && \ - apt-get update && apt-get install -y \ - nodejs \ - yarn \ - && apt-get -y autoremove && apt-get clean autoclean && rm -rf /var/lib/apt/lists/* +RUN set -eux; \ + # Prepare keyrings directory + mkdir -p /etc/apt/keyrings; \ + \ + # Import Yarn GPG key + curl -fsSL https://dl.yarnpkg.com/debian/pubkey.gpg \ + | tee /etc/apt/keyrings/yarn.gpg >/dev/null; \ + chmod 644 /etc/apt/keyrings/yarn.gpg; \ + \ + # Add Yarn repo with signed-by + echo "deb [signed-by=/etc/apt/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian stable main" \ + | tee /etc/apt/sources.list.d/yarn.list; \ + \ + # Run NodeSource setup script (unchanged) + curl -sL https://deb.nodesource.com/setup_22.x | bash -; \ + \ + # Install Node.js + Yarn + apt-get update; \ + apt-get install -y --no-install-recommends \ + nodejs \ + yarn; \ + \ + # Cleanup + apt-get -y autoremove; \ + apt-get clean autoclean; \ + rm -rf /var/lib/apt/lists/* # Install PHP From 29050178bd92f6df692ae2b24f682d4974b6caea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 25 Jan 2026 21:15:50 +0100 Subject: [PATCH 141/235] New translations messages.en.xlf (German) --- translations/messages.de.xlf | 346 ++++++++++------------------------- 1 file changed, 96 insertions(+), 250 deletions(-) diff --git a/translations/messages.de.xlf b/translations/messages.de.xlf index 933214a0..d8103cbe 100644 --- a/translations/messages.de.xlf +++ b/translations/messages.de.xlf @@ -1,6 +1,6 @@ - + - + Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 @@ -97,16 +97,6 @@ Neue [Category] - - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - - - currency.caption - Währung - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 @@ -407,16 +397,6 @@ Neuer [Footprint] - - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - - - group.edit.caption - Gruppen - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 @@ -449,15 +429,6 @@ Neue [Group] - - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:4 - - - label_profile.caption - Labelprofile - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:8 @@ -496,17 +467,6 @@ Neues [Label_profile] - - - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - templates\AdminPages\ManufacturerAdmin.html.twig:4 - - - manufacturer.caption - Hersteller - - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:8 @@ -527,22 +487,6 @@ Neuer [Manufacturer] - - - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - - - measurement_unit.caption - Maßeinheit - - - - - part_custom_state.caption - Benutzerdefinierter Bauteilstatus - - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:5 @@ -598,16 +542,6 @@ Neuer [Supplier] - - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - - - user.edit.caption - Benutzer - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 @@ -4024,16 +3958,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Reg.Ex. Matching - - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - - - search.submit - Los! - - Part-DB1\templates\_sidebar.html.twig:37 @@ -4813,7 +4737,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Maßeinheit - + part.table.partCustomState Benutzerdefinierter Bauteilstatus @@ -5683,7 +5607,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Maßeinheit - + part.edit.partCustomState Benutzerdefinierter Bauteilstatus @@ -5976,7 +5900,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Maßeinheit - + part_custom_state.label Benutzerdefinierter Bauteilstatus @@ -6225,7 +6149,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr [[Measurement_unit]] - + tree.tools.edit.part_custom_state [[Part_custom_state]] @@ -7502,16 +7426,6 @@ Element 1 -> Element 1.2 System - - - obsolete - obsolete - - - perm.parts - Allgemein - - obsolete @@ -7772,16 +7686,6 @@ Element 1 -> Element 1.2 Bestellungen - - - obsolete - obsolete - - - perm.storelocations - Lagerorte - - obsolete @@ -7802,66 +7706,6 @@ Element 1 -> Element 1.2 Teile auflisten - - - obsolete - obsolete - - - perm.part.footprints - Footprints - - - - - obsolete - obsolete - - - perm.part.categories - Kategorien - - - - - obsolete - obsolete - - - perm.part.supplier - Lieferanten - - - - - obsolete - obsolete - - - perm.part.manufacturers - Hersteller - - - - - obsolete - obsolete - - - perm.projects - Projekte - - - - - obsolete - obsolete - - - perm.part.attachment_types - Dateitypen - - obsolete @@ -8372,12 +8216,6 @@ Element 1 -> Element 1.2 Maßeinheiten - - - perm.part_custom_states - Benutzerdefinierter Bauteilstatus - - obsolete @@ -10752,7 +10590,7 @@ Element 1 -> Element 1.2 Maßeinheit - + log.element_edited.changed_fields.partCustomState Benutzerdefinierter Bauteilstatus @@ -11022,13 +10860,13 @@ Element 1 -> Element 1.2 Bearbeite [Measurement_unit] - + part_custom_state.new Neuer [Part_custom_state] - + part_custom_state.edit Bearbeite [Part_custom_state] @@ -11304,36 +11142,6 @@ Element 1 -> Element 1.2 Kein Textinhalt angegeben! Die erzeugten Label werden leer sein. - - - user.password_strength.very_weak - Sehr schwach - - - - - user.password_strength.weak - Schwach - - - - - user.password_strength.medium - Mittel - - - - - user.password_strength.strong - Stark - - - - - user.password_strength.very_strong - Sehr stark - - perm.users.impersonate @@ -12918,7 +12726,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.octopart.onlyAuthorizedSellers.help - Anwählen, um nicht-autorisierte Angebote in den Ergebnissen anzuzeigen + Abwählen, um nicht-autorisierte Angebote in den Ergebnissen anzuzeigen @@ -14183,260 +13991,298 @@ Dies ist auf der Informationsquellen Übersichtsseite möglich. - + settings.misc.ipn_suggest.useDuplicateDescription.help Wenn aktiviert, wird die Bauteil-Beschreibung verwendet, um vorhandene Teile mit derselben Beschreibung zu finden und die nächste verfügbare IPN für die Vorschlagsliste zu ermitteln, indem der numerische Suffix entsprechend erhöht wird. - + settings.misc.ipn_suggest.regex.help Ein PCRE-kompatibler regulärer Ausdruck, den jede IPN erfüllen muss. Leer lassen, um alles als IPN zu erlauben. - + user.labelp Benutzer - + currency.labelp Währungen - + measurement_unit.labelp Maßeinheiten - + attachment_type.labelp Dateitypen - + label_profile.labelp Labelprofile - + part_custom_state.labelp Benutzerdefinierte Bauteilstatus - + group.labelp Gruppen - + settings.synonyms.type_synonym.type Typ - + settings.synonyms.type_synonym.language Sprache - + settings.synonyms.type_synonym.translation_singular Übersetzung Singular - + settings.synonyms.type_synonym.translation_plural Übersetzung Plural - + settings.synonyms.type_synonym.add_entry Eintrag hinzufügen - + settings.synonyms.type_synonym.remove_entry Eintrag entfernen - + settings.synonyms Synonyme - + settings.synonyms.help Das Synonymsystem ermöglicht es, zu überschreiben, wie Part-DB bestimmte Dinge benennt. Dies kann nützlich sein, insbesondere wenn Part-DB in einem anderen Kontext als Elektronik verwendet wird. Bitte beachten Sie, dass dieses System derzeit experimentell ist und die hier definierten Synonyme möglicherweise nicht an allen Stellen angezeigt werden. - + settings.synonyms.type_synonyms Typsynonyme - + settings.synonyms.type_synonyms.help Mit Typsynonymen können Sie die Bezeichnungen von integrierten Datentypen ersetzen. Zum Beispiel können Sie „Footprint" in etwas anderes umbenennen. - + log.element_edited.changed_fields.part_ipn_prefix IPN-Präfix - + part.labelp Bauteile - + project_bom_entry.labelp BOM-Einträge - + part_lot.labelp Bauteilbestände - + orderdetail.labelp Bestellinformationen - + pricedetail.labelp Preisinformationen - + parameter.labelp Parameter - + part_association.labelp Bauteilzuordnungen - + bulk_info_provider_import_job.labelp Massenimporte von Informationsquellen - + bulk_info_provider_import_job_part.labelp Massenimportauftrag Bauteil - + password_toggle.hide Ausblenden - + password_toggle.show Anzeigen - + settings.misc.ipn_suggest.regex.help.placeholder z.B. Format: 3–4 alphanumerische Segmente getrennt durch „-", gefolgt von „-" und 4 Ziffern, z.B. PCOM-RES-0001 - + part.edit.tab.advanced.ipn.prefix.global_prefix Das globale IPN-Präfix, das für alle Bauteile gilt - + settings.misc.ipn_suggest.fallbackPrefix Fallback-Präfix - + settings.misc.ipn_suggest.fallbackPrefix.help Das IPN-Präfix, das verwendet werden soll, wenn eine Kategorie kein Präfix definiert hat. - + settings.misc.ipn_suggest.numberSeparator Nummerntrennzeichen - + settings.misc.ipn_suggest.numberSeparator.help Das Trennzeichen, das verwendet wird, um die IPN-Nummer vom Präfix zu trennen. - + settings.misc.ipn_suggest.categorySeparator Kategorietrennzeichen - + settings.misc.ipn_suggest.categorySeparator.help Das Trennzeichen, das verwendet wird, um verschiedene Ebenen von Kategoriepräfixen zu trennen. - + settings.misc.ipn_suggest.globalPrefix Globales Präfix - + settings.misc.ipn_suggest.globalPrefix.help Wenn aktiviert, wird eine Option zur Generierung einer IPN mit diesem globalen Präfix angeboten, das für Bauteile in allen Kategorien gilt. - - Do not remove! Used for datatables rendering. - - - datatable.datatable.lengthMenu - _MENU_ - + + Do not remove! Used for datatables rendering. + + + datatable.datatable.lengthMenu + _MENU_ + + + + + settings.ips.buerklin + Buerklin + + + + + settings.ips.buerklin.username + Benutzername + + + + + settings.ips.buerklin.help + Buerklin-API-Zugriffsbeschränkungen: 100 Requests/Minute pro IP-Adresse +Buerklin-API-Authentication-Server: +10 Requests/Minute pro IP-Adresse + + + + + project.bom.part_id + [Part] ID + + + + + info_providers.search.error.general_exception + Unbekannter Fehler beim Abrufen von Bauteilen vom Info-Anbieter: %type%. Überprüfen Sie, ob Ihre Anbieter richtig konfiguriert sind und die Zugriffsschlüssel stimmen. Weitere Infos findest du in den Serverprotokollen. + + + + + info_providers.search.error.transport_exception + Transportfehler beim Abrufen von Informationen von den Anbietern. Überprüfen Sie, ob Ihr Server über einen Internetzugang verfügt. Weitere Informationen finden Sie in den Serverprotokollen. Transportfehler beim Abrufen von Informationen von den Anbietern. Überprüfen Sie, ob Ihr Server über einen Internetzugang verfügt. Weitere Informationen finden Sie in den Serverprotokollen. + From a8d2204c7f1ae982cc2d0f58b64e85dafe63c666 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 25 Jan 2026 21:15:51 +0100 Subject: [PATCH 142/235] New translations validators.en.xlf (German) --- translations/validators.de.xlf | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/translations/validators.de.xlf b/translations/validators.de.xlf index 5cccd388..1cc7c00f 100644 --- a/translations/validators.de.xlf +++ b/translations/validators.de.xlf @@ -347,13 +347,13 @@ Aufgrund technischer Beschränkungen ist es nicht möglich, ein Datum nach dem 19.01.2038 auf 32-Bit Systemen auszuwählen! - + validator.fileSize.invalidFormat Ungültige Angabe für die Dateigröße. Verwenden Sie eine ganze Zahl mit K, M, G als Suffix für Kilo, Mega oder Gigabytes. - + validator.invalid_range Der gegebene Bereich ist nicht gültig! @@ -365,5 +365,11 @@ Ungültiger Code. Überprüfen Sie, ob die Authenticator App korrekt eingerichtet ist und ob der Server und das Gerät beide die korrekte Uhrzeit eingestellt haben. + + + settings.synonyms.type_synonyms.collection_type.duplicate + Es existiert bereits eine Übersetzung für diesen Typ und Sprache! + + From 2b723e05ff07aff99d915f2cdbfad52eea4f7c4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 25 Jan 2026 21:16:04 +0100 Subject: [PATCH 143/235] New translations frontend.en.xlf (English) --- translations/frontend.en.xlf | 80 ++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 translations/frontend.en.xlf diff --git a/translations/frontend.en.xlf b/translations/frontend.en.xlf new file mode 100644 index 00000000..4de45489 --- /dev/null +++ b/translations/frontend.en.xlf @@ -0,0 +1,80 @@ + + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:67 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + templates\AdminPages\EntityAdminBase.html.twig:9 + templates\base.html.twig:80 + templates\base.html.twig:179 + templates\base.html.twig:206 + templates\base.html.twig:237 + + + search.placeholder + Search + + + + + part.labelp + Parts + + + + + entity.select.group.new_not_added_to_DB + New (not added to DB yet) + + + + + 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 + + + + + Part-DB1\templates\_navbar_search.html.twig:68 + Part-DB1\templates\_navbar_search.html.twig:62 + + + search.submit + Go! + + + + From ff7fa67682f43aaaf7d52e4a26f9aabe19fb3158 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Sun, 25 Jan 2026 21:25:08 +0100 Subject: [PATCH 144/235] Install Yarn via npm instead of Debian packages in Dockerfiles (#1207) * Initial plan * Change yarn installation from Debian packages to npm in both Dockerfiles Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> --- Dockerfile | 8 +++----- Dockerfile-frankenphp | 24 +++++++----------------- 2 files changed, 10 insertions(+), 22 deletions(-) diff --git a/Dockerfile b/Dockerfile index cb18c78f..8ebd320c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -46,13 +46,11 @@ RUN apt-get update && apt-get -y install \ && rm -rvf /var/www/html/* # Install node and yarn -RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ - echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \ - curl -sL https://deb.nodesource.com/setup_22.x | bash - && \ +RUN curl -sL https://deb.nodesource.com/setup_22.x | bash - && \ apt-get update && apt-get install -y \ nodejs \ - yarn \ - && apt-get -y autoremove && apt-get clean autoclean && rm -rf /var/lib/apt/lists/* + && apt-get -y autoremove && apt-get clean autoclean && rm -rf /var/lib/apt/lists/* && \ + npm install -g yarn # Install composer COPY --from=composer:latest /usr/bin/composer /usr/bin/composer diff --git a/Dockerfile-frankenphp b/Dockerfile-frankenphp index f381f330..69b9bacd 100644 --- a/Dockerfile-frankenphp +++ b/Dockerfile-frankenphp @@ -14,31 +14,21 @@ RUN apt-get update && apt-get -y install \ && apt-get -y autoremove && apt-get clean autoclean && rm -rf /var/lib/apt/lists/*; RUN set -eux; \ - # Prepare keyrings directory - mkdir -p /etc/apt/keyrings; \ - \ - # Import Yarn GPG key - curl -fsSL https://dl.yarnpkg.com/debian/pubkey.gpg \ - | tee /etc/apt/keyrings/yarn.gpg >/dev/null; \ - chmod 644 /etc/apt/keyrings/yarn.gpg; \ - \ - # Add Yarn repo with signed-by - echo "deb [signed-by=/etc/apt/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian stable main" \ - | tee /etc/apt/sources.list.d/yarn.list; \ - \ - # Run NodeSource setup script (unchanged) + # Run NodeSource setup script curl -sL https://deb.nodesource.com/setup_22.x | bash -; \ \ - # Install Node.js + Yarn + # Install Node.js apt-get update; \ apt-get install -y --no-install-recommends \ - nodejs \ - yarn; \ + nodejs; \ \ # Cleanup apt-get -y autoremove; \ apt-get clean autoclean; \ - rm -rf /var/lib/apt/lists/* + rm -rf /var/lib/apt/lists/*; \ + \ + # Install Yarn via npm + npm install -g yarn # Install PHP From 3aad70934b2a7199f5caaa063e61d33337ef58a6 Mon Sep 17 00:00:00 2001 From: Niklas <44636701+MayNiklas@users.noreply.github.com> Date: Sun, 25 Jan 2026 21:32:14 +0100 Subject: [PATCH 145/235] Support dynamic supplier SPNs in BOM import comments (#1208) * Fix: Use correct field name for LCSC supplier part numbers in BOM import The field mapping system uses 'LCSC SPN' as the target field name for LCSC supplier part numbers (following the pattern SupplierName + ' SPN'), but the code in parseKiCADSchematic() was incorrectly checking for 'LCSC'. This caused LCSC supplier part numbers to be silently ignored and not included in the BOM entry comments during schematic import. Changed isset($mapped_entry['LCSC']) to isset($mapped_entry['LCSC SPN']) to match the actual field name produced by the field mapping system. * regression test: check for LCSC SPN in comment * Support dynamic supplier SPNs in BOM import comments Replace hardcoded LCSC SPN handling with dynamic supplier lookup to support all configured suppliers in BOM import. This allows any supplier defined in Part-DB to have their SPN fields recognized and included in the BOM entry comments during BOM import. * Optimize BOM import by only calculating supplier SPN keys once --- .../ImportExportSystem/BOMImporter.php | 16 +++++++++++++-- .../ImportExportSystem/BOMImporterTest.php | 20 +++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/Services/ImportExportSystem/BOMImporter.php b/src/Services/ImportExportSystem/BOMImporter.php index e511c04d..33a402cb 100644 --- a/src/Services/ImportExportSystem/BOMImporter.php +++ b/src/Services/ImportExportSystem/BOMImporter.php @@ -274,6 +274,13 @@ class BOMImporter $entries_by_key = []; // Track entries by name+part combination $mapped_entries = []; // Collect all mapped entries for validation + // Fetch suppliers once for efficiency + $suppliers = $this->entityManager->getRepository(\App\Entity\Parts\Supplier::class)->findAll(); + $supplierSPNKeys = []; + foreach ($suppliers as $supplier) { + $supplierSPNKeys[] = $supplier->getName() . ' SPN'; + } + foreach ($csv->getRecords() as $offset => $entry) { // Apply field mapping to translate column names $mapped_entry = $this->applyFieldMapping($entry, $field_mapping, $field_priorities); @@ -400,9 +407,14 @@ class BOMImporter if (isset($mapped_entry['Manufacturer'])) { $comment_parts[] = 'Manf: ' . $mapped_entry['Manufacturer']; } - if (isset($mapped_entry['LCSC'])) { - $comment_parts[] = 'LCSC: ' . $mapped_entry['LCSC']; + + // Add supplier part numbers dynamically + foreach ($supplierSPNKeys as $spnKey) { + if (isset($mapped_entry[$spnKey]) && !empty($mapped_entry[$spnKey])) { + $comment_parts[] = $spnKey . ': ' . $mapped_entry[$spnKey]; + } } + if (isset($mapped_entry['Supplier and ref'])) { $comment_parts[] = $mapped_entry['Supplier and ref']; } diff --git a/tests/Services/ImportExportSystem/BOMImporterTest.php b/tests/Services/ImportExportSystem/BOMImporterTest.php index 52c633d0..47ddcc24 100644 --- a/tests/Services/ImportExportSystem/BOMImporterTest.php +++ b/tests/Services/ImportExportSystem/BOMImporterTest.php @@ -353,6 +353,16 @@ class BOMImporterTest extends WebTestCase public function testStringToBOMEntriesKiCADSchematic(): void { + // Create test suppliers for this test + $lcscSupplier = new Supplier(); + $lcscSupplier->setName('LCSC'); + $mouserSupplier = new Supplier(); + $mouserSupplier->setName('Mouser'); + + $this->entityManager->persist($lcscSupplier); + $this->entityManager->persist($mouserSupplier); + $this->entityManager->flush(); + $input = <<assertStringContainsString('Value: 10k', $bom_entries[0]->getComment()); $this->assertStringContainsString('MPN: CRCW080510K0FKEA', $bom_entries[0]->getComment()); $this->assertStringContainsString('Manf: Vishay', $bom_entries[0]->getComment()); + $this->assertStringContainsString('LCSC SPN: C123456', $bom_entries[0]->getComment()); + $this->assertStringContainsString('Mouser SPN: 123-M10K', $bom_entries[0]->getComment()); + // Check second entry $this->assertEquals('C1', $bom_entries[1]->getMountnames()); $this->assertEquals(1.0, $bom_entries[1]->getQuantity()); + $this->assertStringContainsString('LCSC SPN: C789012', $bom_entries[1]->getComment()); + $this->assertStringContainsString('Mouser SPN: 80-CL21A104KOCLRNC', $bom_entries[1]->getComment()); + + // Clean up + $this->entityManager->remove($lcscSupplier); + $this->entityManager->remove($mouserSupplier); + $this->entityManager->flush(); } public function testStringToBOMEntriesKiCADSchematicWithPriority(): void From ae4c0786b2f28a60166c4c71986f4d42c5dc074f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 25 Jan 2026 21:38:49 +0100 Subject: [PATCH 146/235] Bumped to version 2.5.1 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 437459cd..73462a5a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.5.0 +2.5.1 From 705e71f1ebdf6825a375f3de96ee278921ecba9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 25 Jan 2026 20:13:04 +0100 Subject: [PATCH 147/235] Started working on a conrad provider --- .../Providers/ConradProvider.php | 103 ++++++++++++++++++ .../InfoProviderSystem/ConradSettings.php | 69 ++++++++++++ .../InfoProviderSettings.php | 5 +- 3 files changed, 176 insertions(+), 1 deletion(-) create mode 100644 src/Services/InfoProviderSystem/Providers/ConradProvider.php create mode 100644 src/Settings/InfoProviderSystem/ConradSettings.php diff --git a/src/Services/InfoProviderSystem/Providers/ConradProvider.php b/src/Services/InfoProviderSystem/Providers/ConradProvider.php new file mode 100644 index 00000000..b72be0bd --- /dev/null +++ b/src/Services/InfoProviderSystem/Providers/ConradProvider.php @@ -0,0 +1,103 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Services\InfoProviderSystem\Providers; + +use App\Services\InfoProviderSystem\DTOs\PartDetailDTO; +use App\Services\InfoProviderSystem\DTOs\SearchResultDTO; +use App\Settings\InfoProviderSystem\ConradSettings; +use Symfony\Contracts\HttpClient\HttpClientInterface; + +readonly class ConradProvider implements InfoProviderInterface +{ + + private const SEARCH_ENDPOINT = 'https://api.conrad.de/search/1/v3/facetSearch'; + + public function __construct(private HttpClientInterface $httpClient, private ConradSettings $settings) + { + } + + public function getProviderInfo(): array + { + return [ + 'name' => 'Pollin', + 'description' => 'Retrieves part information from conrad.de', + 'url' => 'https://www.conrad.de/', + 'disabled_help' => 'Set API key in settings', + 'settings_class' => ConradSettings::class, + ]; + } + + public function getProviderKey(): string + { + return 'conrad'; + } + + public function isActive(): bool + { + return !empty($this->settings->apiKey); + } + + public function searchByKeyword(string $keyword): array + { + $url = self::SEARCH_ENDPOINT . '/' . $this->settings->country . '/' . $this->settings->language . '/' . $this->settings->customerType; + + $response = $this->httpClient->request('POST', $url, [ + 'query' => [ + 'apikey' => $this->settings->apiKey, + ], + 'json' => [ + 'query' => $keyword, + ], + ]); + + $out = []; + $results = $response->toArray(); + + foreach($results as $result) { + $out[] = new SearchResultDTO( + provider_key: $this->getProviderKey(), + provider_id: $result['productId'], + name: $result['title'], + description: '', + manufacturer: $result['brand']['name'] ?? null, + mpn: $result['manufacturerId'] ?? null, + preview_image_url: $result['image'] ?? null, + ); + } + + return $out; + } + + public function getDetails(string $id): PartDetailDTO + { + // TODO: Implement getDetails() method. + } + + public function getCapabilities(): array + { + return [ProviderCapabilities::BASIC, + ProviderCapabilities::PICTURE, + ProviderCapabilities::PRICE,]; + } +} diff --git a/src/Settings/InfoProviderSystem/ConradSettings.php b/src/Settings/InfoProviderSystem/ConradSettings.php new file mode 100644 index 00000000..2330e729 --- /dev/null +++ b/src/Settings/InfoProviderSystem/ConradSettings.php @@ -0,0 +1,69 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Settings\InfoProviderSystem; + +use App\Form\Type\APIKeyType; +use App\Settings\SettingsIcon; +use Jbtronics\SettingsBundle\Metadata\EnvVarMode; +use Jbtronics\SettingsBundle\Settings\Settings; +use Jbtronics\SettingsBundle\Settings\SettingsParameter; +use Jbtronics\SettingsBundle\Settings\SettingsTrait; +use Symfony\Component\Form\Extension\Core\Type\ChoiceType; +use Symfony\Component\Form\Extension\Core\Type\CountryType; +use Symfony\Component\Form\Extension\Core\Type\LanguageType; +use Symfony\Component\Translation\TranslatableMessage as TM; +use Symfony\Component\Validator\Constraints as Assert; + +#[Settings(label: new TM("settings.ips.conrad"))] +#[SettingsIcon("fa-plug")] +class ConradSettings +{ + use SettingsTrait; + + #[SettingsParameter(label: new TM("settings.ips.element14.apiKey"), + formType: APIKeyType::class, + formOptions: ["help_html" => true], envVar: "PROVIDER_CONRAD_API_KEY", envVarMode: EnvVarMode::OVERWRITE)] + public ?string $apiKey = null; + + #[SettingsParameter(label: new TM("settings.ips.tme.country"), formType: CountryType::class, + envVar: "PROVIDER_CONRAD_COUNTRY", envVarMode: EnvVarMode::OVERWRITE)] + #[Assert\Country] + public string $country = "DE"; + + #[SettingsParameter(label: new TM("settings.ips.tme.language"), formType: LanguageType::class, + envVar: "PROVIDER_CONRAD_LANGUAGE", envVarMode: EnvVarMode::OVERWRITE)] + #[Assert\Language] + public string $language = "en"; + + #[SettingsParameter(label: new TM("settings.ips.conrad.customerType"), formType: ChoiceType::class, + formOptions: [ + "choices" => [ + "settings.ips.conrad.customerType.b2c" => "b2c", + "settings.ips.conrad.customerType.b2b" => "b2b", + ], + ], + envVar: "PROVIDER_CONRAD_LANGUAGE", envVarMode: EnvVarMode::OVERWRITE, )] + #[Assert\Choice(choices: ["b2c", "b2b"])] + public string $customerType = "b2c"; +} diff --git a/src/Settings/InfoProviderSystem/InfoProviderSettings.php b/src/Settings/InfoProviderSystem/InfoProviderSettings.php index d4679e23..fb31bdb9 100644 --- a/src/Settings/InfoProviderSystem/InfoProviderSettings.php +++ b/src/Settings/InfoProviderSystem/InfoProviderSettings.php @@ -63,7 +63,10 @@ class InfoProviderSettings #[EmbeddedSettings] public ?PollinSettings $pollin = null; - + #[EmbeddedSettings] public ?BuerklinSettings $buerklin = null; + + #[EmbeddedSettings] + public ?ConradSettings $conrad = null; } From 7ab33c859bf2ea642d33ffd03c16954c2e13c4b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 26 Jan 2026 23:07:01 +0100 Subject: [PATCH 148/235] Implemented basic functionality to search and retrieve part details --- .../Providers/ConradProvider.php | 65 +++++++- .../InfoProviderSystem/ConradSettings.php | 26 +-- .../InfoProviderSystem/ConradShopIDs.php | 156 ++++++++++++++++++ 3 files changed, 223 insertions(+), 24 deletions(-) create mode 100644 src/Settings/InfoProviderSystem/ConradShopIDs.php diff --git a/src/Services/InfoProviderSystem/Providers/ConradProvider.php b/src/Services/InfoProviderSystem/Providers/ConradProvider.php index b72be0bd..7212444b 100644 --- a/src/Services/InfoProviderSystem/Providers/ConradProvider.php +++ b/src/Services/InfoProviderSystem/Providers/ConradProvider.php @@ -31,7 +31,7 @@ use Symfony\Contracts\HttpClient\HttpClientInterface; readonly class ConradProvider implements InfoProviderInterface { - private const SEARCH_ENDPOINT = 'https://api.conrad.de/search/1/v3/facetSearch'; + private const SEARCH_ENDPOINT = '/search/1/v3/facetSearch'; public function __construct(private HttpClientInterface $httpClient, private ConradSettings $settings) { @@ -40,7 +40,7 @@ readonly class ConradProvider implements InfoProviderInterface public function getProviderInfo(): array { return [ - 'name' => 'Pollin', + 'name' => 'Conrad', 'description' => 'Retrieves part information from conrad.de', 'url' => 'https://www.conrad.de/', 'disabled_help' => 'Set API key in settings', @@ -58,9 +58,38 @@ readonly class ConradProvider implements InfoProviderInterface return !empty($this->settings->apiKey); } + private function getProductUrl(string $productId): string + { + return 'https://' . $this->settings->shopID->getDomain() . '/' . $this->settings->shopID->getLanguage() . '/p/' . $productId; + } + + private function getFootprintFromTechnicalDetails(array $technicalDetails): ?string + { + foreach ($technicalDetails as $detail) { + if ($detail['name'] === 'ATT_LOV_HOUSING_SEMICONDUCTORS') { + return $detail['values'][0] ?? null; + } + } + + return null; + } + + private function getFootprintFromTechnicalAttributes(array $technicalDetails): ?string + { + foreach ($technicalDetails as $detail) { + if ($detail['attributeID'] === 'ATT.LOV.HOUSING_SEMICONDUCTORS') { + return $detail['values'][0]['value'] ?? null; + } + } + + return null; + } + public function searchByKeyword(string $keyword): array { - $url = self::SEARCH_ENDPOINT . '/' . $this->settings->country . '/' . $this->settings->language . '/' . $this->settings->customerType; + $url = $this->settings->shopID->getAPIRoot() . self::SEARCH_ENDPOINT . '/' + . $this->settings->shopID->getDomainEnd() . '/' . $this->settings->shopID->getLanguage() + . '/' . $this->settings->shopID->getCustomerType(); $response = $this->httpClient->request('POST', $url, [ 'query' => [ @@ -68,13 +97,15 @@ readonly class ConradProvider implements InfoProviderInterface ], 'json' => [ 'query' => $keyword, + 'size' => 25, ], ]); $out = []; $results = $response->toArray(); - foreach($results as $result) { + foreach($results['hits'] as $result) { + $out[] = new SearchResultDTO( provider_key: $this->getProviderKey(), provider_id: $result['productId'], @@ -83,6 +114,8 @@ readonly class ConradProvider implements InfoProviderInterface manufacturer: $result['brand']['name'] ?? null, mpn: $result['manufacturerId'] ?? null, preview_image_url: $result['image'] ?? null, + provider_url: $this->getProductUrl($result['productId']), + footprint: $this->getFootprintFromTechnicalDetails($result['technicalDetails'] ?? []), ); } @@ -91,7 +124,29 @@ readonly class ConradProvider implements InfoProviderInterface public function getDetails(string $id): PartDetailDTO { - // TODO: Implement getDetails() method. + $productInfoURL = $this->settings->shopID->getAPIRoot() . '/product/1/service/' . $this->settings->shopID->getShopID() + . '/product/' . $id; + + $response = $this->httpClient->request('GET', $productInfoURL, [ + 'query' => [ + 'apikey' => $this->settings->apiKey, + ] + ]); + + $data = $response->toArray(); + + return new PartDetailDTO( + provider_key: $this->getProviderKey(), + provider_id: $data['shortProductNumber'], + name: $data['productShortInformation']['title'], + description: $data['productShortInformation']['shortDescription'] ?? '', + manufacturer: $data['brand']['displayName'] ?? null, + mpn: $data['productFullInformation']['manufacturer']['id'] ?? null, + preview_image_url: $data['productShortInformation']['mainImage']['imageUrl'] ?? null, + provider_url: $this->getProductUrl($data['shortProductNumber']), + footprint: $this->getFootprintFromTechnicalAttributes($data['productFullInformation']['technicalAttributes'] ?? []), + notes: $data['productFullInformation']['description'] ?? null, + ); } public function getCapabilities(): array diff --git a/src/Settings/InfoProviderSystem/ConradSettings.php b/src/Settings/InfoProviderSystem/ConradSettings.php index 2330e729..999ebfe0 100644 --- a/src/Settings/InfoProviderSystem/ConradSettings.php +++ b/src/Settings/InfoProviderSystem/ConradSettings.php @@ -31,6 +31,7 @@ use Jbtronics\SettingsBundle\Settings\SettingsParameter; use Jbtronics\SettingsBundle\Settings\SettingsTrait; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\Extension\Core\Type\CountryType; +use Symfony\Component\Form\Extension\Core\Type\EnumType; use Symfony\Component\Form\Extension\Core\Type\LanguageType; use Symfony\Component\Translation\TranslatableMessage as TM; use Symfony\Component\Validator\Constraints as Assert; @@ -46,24 +47,11 @@ class ConradSettings formOptions: ["help_html" => true], envVar: "PROVIDER_CONRAD_API_KEY", envVarMode: EnvVarMode::OVERWRITE)] public ?string $apiKey = null; - #[SettingsParameter(label: new TM("settings.ips.tme.country"), formType: CountryType::class, - envVar: "PROVIDER_CONRAD_COUNTRY", envVarMode: EnvVarMode::OVERWRITE)] - #[Assert\Country] - public string $country = "DE"; + #[SettingsParameter(label: new TM("settings.ips.conrad.shopID"), + formType: EnumType::class, + formOptions: ['class' => ConradShopIDs::class], + )] + public ConradShopIDs $shopID = ConradShopIDs::COM_B2B; - #[SettingsParameter(label: new TM("settings.ips.tme.language"), formType: LanguageType::class, - envVar: "PROVIDER_CONRAD_LANGUAGE", envVarMode: EnvVarMode::OVERWRITE)] - #[Assert\Language] - public string $language = "en"; - - #[SettingsParameter(label: new TM("settings.ips.conrad.customerType"), formType: ChoiceType::class, - formOptions: [ - "choices" => [ - "settings.ips.conrad.customerType.b2c" => "b2c", - "settings.ips.conrad.customerType.b2b" => "b2b", - ], - ], - envVar: "PROVIDER_CONRAD_LANGUAGE", envVarMode: EnvVarMode::OVERWRITE, )] - #[Assert\Choice(choices: ["b2c", "b2b"])] - public string $customerType = "b2c"; + public bool $includeVAT = true; } diff --git a/src/Settings/InfoProviderSystem/ConradShopIDs.php b/src/Settings/InfoProviderSystem/ConradShopIDs.php new file mode 100644 index 00000000..2d8710e7 --- /dev/null +++ b/src/Settings/InfoProviderSystem/ConradShopIDs.php @@ -0,0 +1,156 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Settings\InfoProviderSystem; + +use Symfony\Contracts\Translation\TranslatableInterface; +use Symfony\Contracts\Translation\TranslatorInterface; + +enum ConradShopIDs: string implements TranslatableInterface +{ + case COM_B2B = 'HP_COM_B2B'; + case DE_B2B = 'CQ_DE_B2B'; + case AT_B2C = 'CQ_AT_B2C'; + case CH_B2C = 'CQ_CH_B2C'; + case SE_B2B = 'HP_SE_B2B'; + case HU_B2C = 'CQ_HU_B2C'; + case CZ_B2B = 'HP_CZ_B2B'; + case SI_B2B = 'HP_SI_B2B'; + case SK_B2B = 'HP_SK_B2B'; + case BE_B2B = 'HP_BE_B2B'; + case DE_B2C = 'CQ_DE_B2C'; + case PL_B2B = 'HP_PL_B2B'; + case NL_B2B = 'CQ_NL_B2B'; + case DK_B2B = 'HP_DK_B2B'; + case IT_B2B = 'HP_IT_B2B'; + case NL_B2C = 'CQ_NL_B2C'; + case FR_B2B = 'HP_FR_B2B'; + case AT_B2B = 'CQ_AT_B2B'; + case HR_B2B = 'HP_HR_B2B'; + + + public function trans(TranslatorInterface $translator, ?string $locale = null): string + { + return match ($this) { + self::DE_B2B => "conrad.de (B2B)", + self::AT_B2C => "conrad.at (B2C)", + self::CH_B2C => "conrad.ch (B2C)", + self::SE_B2B => "conrad.se (B2B)", + self::HU_B2C => "conrad.hu (B2C)", + self::CZ_B2B => "conrad.cz (B2B)", + self::SI_B2B => "conrad.si (B2B)", + self::SK_B2B => "conrad.sk (B2B)", + self::BE_B2B => "conrad.be (B2B)", + self::DE_B2C => "conrad.de (B2C)", + self::PL_B2B => "conrad.pl (B2B)", + self::NL_B2B => "conrad.nl (B2B)", + self::DK_B2B => "conrad.dk (B2B)", + self::IT_B2B => "conrad.it (B2B)", + self::NL_B2C => "conrad.nl (B2C)", + self::FR_B2B => "conrad.fr (B2B)", + self::COM_B2B => "conrad.com (B2B)", + self::AT_B2B => "conrad.at (B2B)", + self::HR_B2B => "conrad.hr (B2B)", + }; + } + + public function getDomain(): string + { + return 'conrad.' . $this->getDomainEnd(); + } + + /** + * Retrieves the API root URL for this shop ID. e.g. https://api.conrad.de + * @return string + */ + public function getAPIRoot(): string + { + return 'https://api.' . $this->getDomain(); + } + + /** + * Returns the shop ID value used in the API requests. e.g. 'CQ_DE_B2B' + * @return string + */ + public function getShopID(): string + { + return $this->value; + } + + public function getDomainEnd(): string + { + return match ($this) { + self::DE_B2B, self::DE_B2C => 'de', + self::AT_B2B, self::AT_B2C => 'at', + self::CH_B2C => 'ch', + self::SE_B2B => 'se', + self::HU_B2C => 'hu', + self::CZ_B2B => 'cz', + self::SI_B2B => 'si', + self::SK_B2B => 'sk', + self::BE_B2B => 'be', + self::PL_B2B => 'pl', + self::NL_B2B, self::NL_B2C => 'nl', + self::DK_B2B => 'dk', + self::IT_B2B => 'it', + self::FR_B2B => 'fr', + self::COM_B2B => 'com', + self::HR_B2B => 'hr', + }; + } + + public function getLanguage(): string + { + return match ($this) { + self::DE_B2B, self::DE_B2C, self::AT_B2B, self::AT_B2C => 'de', + self::CH_B2C => 'de', + self::SE_B2B => 'sv', + self::HU_B2C => 'hu', + self::CZ_B2B => 'cs', + self::SI_B2B => 'sl', + self::SK_B2B => 'sk', + self::BE_B2B => 'nl', + self::PL_B2B => 'pl', + self::NL_B2B, self::NL_B2C => 'nl', + self::DK_B2B => 'da', + self::IT_B2B => 'it', + self::FR_B2B => 'fr', + self::COM_B2B => 'en', + self::HR_B2B => 'hr', + }; + } + + /** + * Retrieves the customer type for this shop ID. e.g. 'b2b' or 'b2c' + * @return string 'b2b' or 'b2c' + */ + public function getCustomerType(): string + { + return match ($this) { + self::DE_B2B, self::AT_B2B, self::SE_B2B, self::CZ_B2B, self::SI_B2B, + self::SK_B2B, self::BE_B2B, self::PL_B2B, self::NL_B2B, self::DK_B2B, + self::IT_B2B, self::FR_B2B, self::COM_B2B, self::HR_B2B => 'b2b', + self::DE_B2C, self::AT_B2C, self::CH_B2C, self::HU_B2C, self::NL_B2C => 'b2c', + }; + } +} From 3ed62f5cee80ca4dbfa935b27caff50b9af0af1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 26 Jan 2026 23:18:32 +0100 Subject: [PATCH 149/235] Allow to retrieve parameters from conrad --- .../Providers/ConradProvider.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/Services/InfoProviderSystem/Providers/ConradProvider.php b/src/Services/InfoProviderSystem/Providers/ConradProvider.php index 7212444b..8c343099 100644 --- a/src/Services/InfoProviderSystem/Providers/ConradProvider.php +++ b/src/Services/InfoProviderSystem/Providers/ConradProvider.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace App\Services\InfoProviderSystem\Providers; +use App\Services\InfoProviderSystem\DTOs\ParameterDTO; use App\Services\InfoProviderSystem\DTOs\PartDetailDTO; use App\Services\InfoProviderSystem\DTOs\SearchResultDTO; use App\Settings\InfoProviderSystem\ConradSettings; @@ -85,6 +86,20 @@ readonly class ConradProvider implements InfoProviderInterface return null; } + private function technicalAttributesToParameters(array $technicalAttributes): array + { + $parameters = []; + foreach ($technicalAttributes as $attribute) { + if ($attribute['multiValue'] ?? false === true) { + throw new \LogicException('Multi value attributes are not supported yet'); + } + $parameters[] = ParameterDTO::parseValueField($attribute['attributeName'], + $attribute['values'][0]['value'], $attribute['values'][0]['unit']['name'] ?? null); + } + + return $parameters; + } + public function searchByKeyword(string $keyword): array { $url = $this->settings->shopID->getAPIRoot() . self::SEARCH_ENDPOINT . '/' @@ -146,6 +161,7 @@ readonly class ConradProvider implements InfoProviderInterface provider_url: $this->getProductUrl($data['shortProductNumber']), footprint: $this->getFootprintFromTechnicalAttributes($data['productFullInformation']['technicalAttributes'] ?? []), notes: $data['productFullInformation']['description'] ?? null, + parameters: $this->technicalAttributesToParameters($data['productFullInformation']['technicalAttributes'] ?? []), ); } From 42fe781ef884b627a498a57f633130fb10ac9dfd Mon Sep 17 00:00:00 2001 From: Sebastian Almberg <83243306+Sebbeben@users.noreply.github.com> Date: Fri, 30 Jan 2026 21:36:33 +0100 Subject: [PATCH 150/235] Add Update Manager for automated Part-DB updates This feature adds a comprehensive Update Manager similar to Mainsail's update system, allowing administrators to update Part-DB directly from the web interface. Features: - Web UI at /admin/update-manager showing current and available versions - Support for Git-based installations with automatic update execution - Maintenance mode during updates to prevent user access - Automatic database backup before updates - Git rollback points for recovery (tags created before each update) - Progress tracking with real-time status updates - Update history and log viewing - Downgrade support with appropriate UI messaging - CLI command `php bin/console partdb:update` for server-side updates New files: - UpdateManagerController: Handles all web UI routes - UpdateCommand: CLI command for running updates - UpdateExecutor: Core update execution logic with safety mechanisms - UpdateChecker: GitHub API integration for version checking - InstallationTypeDetector: Detects installation type (Git/Docker/ZIP) - MaintenanceModeSubscriber: Blocks user access during maintenance - UpdateExtension: Twig functions for update notifications UI improvements: - Update notification in navbar for admins when update available - Confirmation dialogs for update/downgrade actions - Downgrade-specific text throughout the interface - Progress page with auto-refresh --- config/permissions.yaml | 4 + src/Command/UpdateCommand.php | 446 ++++++++++ src/Controller/UpdateManagerController.php | 268 ++++++ .../MaintenanceModeSubscriber.php | 231 +++++ .../System/InstallationTypeDetector.php | 224 +++++ src/Services/System/UpdateChecker.php | 349 ++++++++ src/Services/System/UpdateExecutor.php | 832 ++++++++++++++++++ src/Services/Trees/ToolsTreeBuilder.php | 7 + src/Twig/UpdateExtension.php | 79 ++ templates/_navbar.html.twig | 13 + .../admin/update_manager/index.html.twig | 374 ++++++++ .../admin/update_manager/log_viewer.html.twig | 40 + .../admin/update_manager/progress.html.twig | 196 +++++ .../update_manager/release_notes.html.twig | 110 +++ templates/maintenance/maintenance.html.twig | 251 ++++++ translations/messages.en.xlf | 702 +++++++++++++++ 16 files changed, 4126 insertions(+) create mode 100644 src/Command/UpdateCommand.php create mode 100644 src/Controller/UpdateManagerController.php create mode 100644 src/EventSubscriber/MaintenanceModeSubscriber.php create mode 100644 src/Services/System/InstallationTypeDetector.php create mode 100644 src/Services/System/UpdateChecker.php create mode 100644 src/Services/System/UpdateExecutor.php create mode 100644 src/Twig/UpdateExtension.php create mode 100644 templates/admin/update_manager/index.html.twig create mode 100644 templates/admin/update_manager/log_viewer.html.twig create mode 100644 templates/admin/update_manager/progress.html.twig create mode 100644 templates/admin/update_manager/release_notes.html.twig create mode 100644 templates/maintenance/maintenance.html.twig diff --git a/config/permissions.yaml b/config/permissions.yaml index 8c6a145e..0dabf9d3 100644 --- a/config/permissions.yaml +++ b/config/permissions.yaml @@ -297,6 +297,10 @@ perms: # Here comes a list with all Permission names (they have a perm_[name] co show_updates: label: "perm.system.show_available_updates" apiTokenRole: ROLE_API_ADMIN + manage_updates: + label: "perm.system.manage_updates" + alsoSet: ['show_updates', 'server_infos'] + apiTokenRole: ROLE_API_ADMIN attachments: diff --git a/src/Command/UpdateCommand.php b/src/Command/UpdateCommand.php new file mode 100644 index 00000000..4f2cae86 --- /dev/null +++ b/src/Command/UpdateCommand.php @@ -0,0 +1,446 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Command; + +use App\Services\System\InstallationType; +use App\Services\System\UpdateChecker; +use App\Services\System\UpdateExecutor; +use Symfony\Component\Console\Attribute\AsCommand; +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Helper\Table; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Style\SymfonyStyle; + +#[AsCommand(name: 'partdb:update', description: 'Check for and install Part-DB updates', aliases: ['app:update'])] +class UpdateCommand extends Command +{ + public function __construct(private readonly UpdateChecker $updateChecker, + private readonly UpdateExecutor $updateExecutor) + { + parent::__construct(); + } + + protected function configure(): void + { + $this + ->setHelp(<<<'HELP' +The %command.name% command checks for Part-DB updates and can install them. + +Check for updates: + php %command.full_name% --check + +List available versions: + php %command.full_name% --list + +Update to the latest version: + php %command.full_name% + +Update to a specific version: + php %command.full_name% v2.6.0 + +Update without creating a backup (faster but riskier): + php %command.full_name% --no-backup + +Non-interactive update for scripts: + php %command.full_name% --force + +View update logs: + php %command.full_name% --logs +HELP + ) + ->addArgument( + 'version', + InputArgument::OPTIONAL, + 'Target version to update to (e.g., v2.6.0). If not specified, updates to the latest stable version.' + ) + ->addOption( + 'check', + 'c', + InputOption::VALUE_NONE, + 'Only check for updates without installing' + ) + ->addOption( + 'list', + 'l', + InputOption::VALUE_NONE, + 'List all available versions' + ) + ->addOption( + 'no-backup', + null, + InputOption::VALUE_NONE, + 'Skip creating a backup before updating (not recommended)' + ) + ->addOption( + 'force', + 'f', + InputOption::VALUE_NONE, + 'Skip confirmation prompts' + ) + ->addOption( + 'include-prerelease', + null, + InputOption::VALUE_NONE, + 'Include pre-release versions' + ) + ->addOption( + 'logs', + null, + InputOption::VALUE_NONE, + 'Show recent update logs' + ) + ->addOption( + 'refresh', + 'r', + InputOption::VALUE_NONE, + 'Force refresh of cached version information' + ) + ; + } + + protected function execute(InputInterface $input, OutputInterface $output): int + { + $io = new SymfonyStyle($input, $output); + + // Handle --logs option + if ($input->getOption('logs')) { + return $this->showLogs($io); + } + + // Handle --refresh option + if ($input->getOption('refresh')) { + $io->text('Refreshing version information...'); + $this->updateChecker->refreshGitInfo(); + $io->success('Version cache cleared.'); + } + + // Handle --list option + if ($input->getOption('list')) { + return $this->listVersions($io, $input->getOption('include-prerelease')); + } + + // Get update status + $status = $this->updateChecker->getUpdateStatus(); + + // Display current status + $io->title('Part-DB Update Manager'); + + $this->displayStatus($io, $status); + + // Handle --check option + if ($input->getOption('check')) { + return $this->checkOnly($io, $status); + } + + // Validate we can update + $validationResult = $this->validateUpdate($io, $status); + if ($validationResult !== null) { + return $validationResult; + } + + // Determine target version + $targetVersion = $input->getArgument('version'); + $includePrerelease = $input->getOption('include-prerelease'); + + if (!$targetVersion) { + $latest = $this->updateChecker->getLatestRelease($includePrerelease); + if (!$latest) { + $io->error('Could not determine the latest version. Please specify a version manually.'); + return Command::FAILURE; + } + $targetVersion = $latest['tag']; + } + + // Validate target version + if (!$this->updateChecker->isNewerVersion($targetVersion)) { + $io->warning(sprintf( + 'Version %s is not newer than the current version %s.', + $targetVersion, + $status['current_version'] + )); + + if (!$input->getOption('force')) { + if (!$io->confirm('Do you want to proceed anyway?', false)) { + $io->info('Update cancelled.'); + return Command::SUCCESS; + } + } + } + + // Confirm update + if (!$input->getOption('force')) { + $io->section('Update Plan'); + + $io->listing([ + sprintf('Target version: %s', $targetVersion), + $input->getOption('no-backup') + ? 'Backup will be SKIPPED' + : 'A full backup will be created before updating', + 'Maintenance mode will be enabled during update', + 'Database migrations will be run automatically', + 'Cache will be cleared and rebuilt', + ]); + + $io->warning('The update process may take several minutes. Do not interrupt it.'); + + if (!$io->confirm('Do you want to proceed with the update?', false)) { + $io->info('Update cancelled.'); + return Command::SUCCESS; + } + } + + // Execute update + return $this->executeUpdate($io, $targetVersion, !$input->getOption('no-backup')); + } + + private function displayStatus(SymfonyStyle $io, array $status): void + { + $io->definitionList( + ['Current Version' => sprintf('%s', $status['current_version'])], + ['Latest Version' => $status['latest_version'] + ? sprintf('%s', $status['latest_version']) + : 'Unknown'], + ['Installation Type' => $status['installation']['type_name']], + ['Git Branch' => $status['git']['branch'] ?? 'N/A'], + ['Git Commit' => $status['git']['commit'] ?? 'N/A'], + ['Local Changes' => $status['git']['has_local_changes'] + ? 'Yes (update blocked)' + : 'No'], + ['Commits Behind' => $status['git']['commits_behind'] > 0 + ? sprintf('%d', $status['git']['commits_behind']) + : '0'], + ['Update Available' => $status['update_available'] + ? 'Yes' + : 'No'], + ['Can Auto-Update' => $status['can_auto_update'] + ? 'Yes' + : 'No'], + ); + + if (!empty($status['update_blockers'])) { + $io->warning('Update blockers: ' . implode(', ', $status['update_blockers'])); + } + } + + private function checkOnly(SymfonyStyle $io, array $status): int + { + if (!$status['check_enabled']) { + $io->warning('Update checking is disabled in privacy settings.'); + return Command::SUCCESS; + } + + if ($status['update_available']) { + $io->success(sprintf( + 'A new version is available: %s (current: %s)', + $status['latest_version'], + $status['current_version'] + )); + + if ($status['release_url']) { + $io->text(sprintf('Release notes: %s', $status['release_url'], $status['release_url'])); + } + + if ($status['can_auto_update']) { + $io->text(''); + $io->text('Run php bin/console partdb:update to update.'); + } else { + $io->text(''); + $io->text($status['installation']['update_instructions']); + } + + return Command::SUCCESS; + } + + $io->success('You are running the latest version.'); + return Command::SUCCESS; + } + + private function validateUpdate(SymfonyStyle $io, array $status): ?int + { + // Check if update checking is enabled + if (!$status['check_enabled']) { + $io->error('Update checking is disabled in privacy settings. Enable it to use automatic updates.'); + return Command::FAILURE; + } + + // Check installation type + if (!$status['can_auto_update']) { + $io->error('Automatic updates are not supported for this installation type.'); + $io->text($status['installation']['update_instructions']); + return Command::FAILURE; + } + + // Validate preconditions + $validation = $this->updateExecutor->validateUpdatePreconditions(); + if (!$validation['valid']) { + $io->error('Cannot proceed with update:'); + $io->listing($validation['errors']); + return Command::FAILURE; + } + + return null; + } + + private function executeUpdate(SymfonyStyle $io, string $targetVersion, bool $createBackup): int + { + $io->section('Executing Update'); + $io->text(sprintf('Updating to version: %s', $targetVersion)); + $io->text(''); + + $progressCallback = function (array $step) use ($io): void { + $icon = $step['success'] ? '✓' : '✗'; + $duration = $step['duration'] ? sprintf(' (%.1fs)', $step['duration']) : ''; + $io->text(sprintf(' %s %s: %s%s', $icon, $step['step'], $step['message'], $duration)); + }; + + // Use executeUpdateWithProgress to update the progress file for web UI + $result = $this->updateExecutor->executeUpdateWithProgress($targetVersion, $createBackup, $progressCallback); + + $io->text(''); + + if ($result['success']) { + $io->success(sprintf( + 'Successfully updated to %s in %.1f seconds!', + $targetVersion, + $result['duration'] + )); + + $io->text([ + sprintf('Rollback tag: %s', $result['rollback_tag']), + sprintf('Log file: %s', $result['log_file']), + ]); + + $io->note('If you encounter any issues, you can rollback using: git checkout ' . $result['rollback_tag']); + + return Command::SUCCESS; + } + + $io->error('Update failed: ' . $result['error']); + + if ($result['rollback_tag']) { + $io->warning(sprintf('System was rolled back to: %s', $result['rollback_tag'])); + } + + if ($result['log_file']) { + $io->text(sprintf('See log file for details: %s', $result['log_file'])); + } + + return Command::FAILURE; + } + + private function listVersions(SymfonyStyle $io, bool $includePrerelease): int + { + $releases = $this->updateChecker->getAvailableReleases(15); + $currentVersion = $this->updateChecker->getCurrentVersionString(); + + if (empty($releases)) { + $io->warning('Could not fetch available versions. Check your internet connection.'); + return Command::FAILURE; + } + + $io->title('Available Part-DB Versions'); + + $table = new Table($io); + $table->setHeaders(['Tag', 'Version', 'Released', 'Status']); + + foreach ($releases as $release) { + if (!$includePrerelease && $release['prerelease']) { + continue; + } + + $version = $release['version']; + $status = []; + + if (version_compare($version, $currentVersion, '=')) { + $status[] = 'current'; + } elseif (version_compare($version, $currentVersion, '>')) { + $status[] = 'newer'; + } + + if ($release['prerelease']) { + $status[] = 'pre-release'; + } + + $table->addRow([ + $release['tag'], + $version, + (new \DateTime($release['published_at']))->format('Y-m-d'), + implode(' ', $status) ?: '-', + ]); + } + + $table->render(); + + $io->text(''); + $io->text('Use php bin/console partdb:update [tag] to update to a specific version.'); + + return Command::SUCCESS; + } + + private function showLogs(SymfonyStyle $io): int + { + $logs = $this->updateExecutor->getUpdateLogs(); + + if (empty($logs)) { + $io->info('No update logs found.'); + return Command::SUCCESS; + } + + $io->title('Recent Update Logs'); + + $table = new Table($io); + $table->setHeaders(['Date', 'File', 'Size']); + + foreach (array_slice($logs, 0, 10) as $log) { + $table->addRow([ + date('Y-m-d H:i:s', $log['date']), + $log['file'], + $this->formatBytes($log['size']), + ]); + } + + $table->render(); + + $io->text(''); + $io->text('Log files are stored in: var/log/updates/'); + + return Command::SUCCESS; + } + + private function formatBytes(int $bytes): string + { + $units = ['B', 'KB', 'MB', 'GB']; + $unitIndex = 0; + + while ($bytes >= 1024 && $unitIndex < count($units) - 1) { + $bytes /= 1024; + $unitIndex++; + } + + return sprintf('%.1f %s', $bytes, $units[$unitIndex]); + } +} diff --git a/src/Controller/UpdateManagerController.php b/src/Controller/UpdateManagerController.php new file mode 100644 index 00000000..10a719de --- /dev/null +++ b/src/Controller/UpdateManagerController.php @@ -0,0 +1,268 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Controller; + +use App\Services\System\UpdateChecker; +use App\Services\System\UpdateExecutor; +use Shivas\VersioningBundle\Service\VersionManagerInterface; +use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\HttpFoundation\JsonResponse; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\Routing\Attribute\Route; + +/** + * Controller for the Update Manager web interface. + * + * This provides a read-only view of update status and instructions. + * Actual updates should be performed via the CLI command for safety. + */ +#[Route('/admin/update-manager')] +class UpdateManagerController extends AbstractController +{ + public function __construct(private readonly UpdateChecker $updateChecker, + private readonly UpdateExecutor $updateExecutor, + private readonly VersionManagerInterface $versionManager) + { + + } + + /** + * Main update manager page. + */ + #[Route('', name: 'admin_update_manager', methods: ['GET'])] + public function index(): Response + { + $this->denyAccessUnlessGranted('@system.show_updates'); + + $status = $this->updateChecker->getUpdateStatus(); + $availableUpdates = $this->updateChecker->getAvailableUpdates(); + $validation = $this->updateExecutor->validateUpdatePreconditions(); + + return $this->render('admin/update_manager/index.html.twig', [ + 'status' => $status, + 'available_updates' => $availableUpdates, + 'all_releases' => $this->updateChecker->getAvailableReleases(10), + 'validation' => $validation, + 'is_locked' => $this->updateExecutor->isLocked(), + 'lock_info' => $this->updateExecutor->getLockInfo(), + 'is_maintenance' => $this->updateExecutor->isMaintenanceMode(), + 'maintenance_info' => $this->updateExecutor->getMaintenanceInfo(), + 'update_logs' => $this->updateExecutor->getUpdateLogs(), + 'backups' => $this->updateExecutor->getBackups(), + ]); + } + + /** + * AJAX endpoint to check update status. + */ + #[Route('/status', name: 'admin_update_manager_status', methods: ['GET'])] + public function status(): JsonResponse + { + $this->denyAccessUnlessGranted('@system.show_updates'); + + return $this->json([ + 'status' => $this->updateChecker->getUpdateStatus(), + 'is_locked' => $this->updateExecutor->isLocked(), + 'is_maintenance' => $this->updateExecutor->isMaintenanceMode(), + 'lock_info' => $this->updateExecutor->getLockInfo(), + ]); + } + + /** + * AJAX endpoint to refresh version information. + */ + #[Route('/refresh', name: 'admin_update_manager_refresh', methods: ['POST'])] + public function refresh(Request $request): JsonResponse + { + $this->denyAccessUnlessGranted('@system.show_updates'); + + // Validate CSRF token + if (!$this->isCsrfTokenValid('update_manager_refresh', $request->request->get('_token'))) { + return $this->json(['error' => 'Invalid CSRF token'], Response::HTTP_FORBIDDEN); + } + + $this->updateChecker->refreshGitInfo(); + + return $this->json([ + 'success' => true, + 'status' => $this->updateChecker->getUpdateStatus(), + ]); + } + + /** + * View release notes for a specific version. + */ + #[Route('/release/{tag}', name: 'admin_update_manager_release', methods: ['GET'])] + public function releaseNotes(string $tag): Response + { + $this->denyAccessUnlessGranted('@system.show_updates'); + + $releases = $this->updateChecker->getAvailableReleases(20); + $release = null; + + foreach ($releases as $r) { + if ($r['tag'] === $tag) { + $release = $r; + break; + } + } + + if (!$release) { + throw $this->createNotFoundException('Release not found'); + } + + return $this->render('admin/update_manager/release_notes.html.twig', [ + 'release' => $release, + 'current_version' => $this->updateChecker->getCurrentVersionString(), + ]); + } + + /** + * View an update log file. + */ + #[Route('/log/{filename}', name: 'admin_update_manager_log', methods: ['GET'])] + public function viewLog(string $filename): Response + { + $this->denyAccessUnlessGranted('@system.show_updates'); + + // Security: Only allow viewing files from the update logs directory + $logs = $this->updateExecutor->getUpdateLogs(); + $logPath = null; + + foreach ($logs as $log) { + if ($log['file'] === $filename) { + $logPath = $log['path']; + break; + } + } + + if (!$logPath || !file_exists($logPath)) { + throw $this->createNotFoundException('Log file not found'); + } + + $content = file_get_contents($logPath); + + return $this->render('admin/update_manager/log_viewer.html.twig', [ + 'filename' => $filename, + 'content' => $content, + ]); + } + + /** + * Start an update process. + */ + #[Route('/start', name: 'admin_update_manager_start', methods: ['POST'])] + public function startUpdate(Request $request): Response + { + $this->denyAccessUnlessGranted('@system.manage_updates'); + + // Validate CSRF token + if (!$this->isCsrfTokenValid('update_manager_start', $request->request->get('_token'))) { + $this->addFlash('error', 'Invalid CSRF token'); + return $this->redirectToRoute('admin_update_manager'); + } + + // Check if update is already running + if ($this->updateExecutor->isLocked() || $this->updateExecutor->isUpdateRunning()) { + $this->addFlash('error', 'An update is already in progress.'); + return $this->redirectToRoute('admin_update_manager'); + } + + $targetVersion = $request->request->get('version'); + $createBackup = $request->request->getBoolean('backup', true); + + if (!$targetVersion) { + // Get latest version if not specified + $latest = $this->updateChecker->getLatestRelease(); + if (!$latest) { + $this->addFlash('error', 'Could not determine target version.'); + return $this->redirectToRoute('admin_update_manager'); + } + $targetVersion = $latest['tag']; + } + + // Validate preconditions + $validation = $this->updateExecutor->validateUpdatePreconditions(); + if (!$validation['valid']) { + $this->addFlash('error', implode(' ', $validation['errors'])); + return $this->redirectToRoute('admin_update_manager'); + } + + // Start the background update + $pid = $this->updateExecutor->startBackgroundUpdate($targetVersion, $createBackup); + + if (!$pid) { + $this->addFlash('error', 'Failed to start update process.'); + return $this->redirectToRoute('admin_update_manager'); + } + + // Redirect to progress page + return $this->redirectToRoute('admin_update_manager_progress'); + } + + /** + * Update progress page. + */ + #[Route('/progress', name: 'admin_update_manager_progress', methods: ['GET'])] + public function progress(): Response + { + $this->denyAccessUnlessGranted('@system.show_updates'); + + $progress = $this->updateExecutor->getProgress(); + $currentVersion = $this->versionManager->getVersion()->toString(); + + // Determine if this is a downgrade + $isDowngrade = false; + if ($progress && isset($progress['target_version'])) { + $targetVersion = ltrim($progress['target_version'], 'v'); + $isDowngrade = version_compare($targetVersion, $currentVersion, '<'); + } + + return $this->render('admin/update_manager/progress.html.twig', [ + 'progress' => $progress, + 'is_locked' => $this->updateExecutor->isLocked(), + 'is_maintenance' => $this->updateExecutor->isMaintenanceMode(), + 'is_downgrade' => $isDowngrade, + 'current_version' => $currentVersion, + ]); + } + + /** + * AJAX endpoint to get update progress. + */ + #[Route('/progress/status', name: 'admin_update_manager_progress_status', methods: ['GET'])] + public function progressStatus(): JsonResponse + { + $this->denyAccessUnlessGranted('@system.show_updates'); + + $progress = $this->updateExecutor->getProgress(); + + return $this->json([ + 'progress' => $progress, + 'is_locked' => $this->updateExecutor->isLocked(), + 'is_maintenance' => $this->updateExecutor->isMaintenanceMode(), + ]); + } +} diff --git a/src/EventSubscriber/MaintenanceModeSubscriber.php b/src/EventSubscriber/MaintenanceModeSubscriber.php new file mode 100644 index 00000000..60623b45 --- /dev/null +++ b/src/EventSubscriber/MaintenanceModeSubscriber.php @@ -0,0 +1,231 @@ +. + */ + +declare(strict_types=1); + + +namespace App\EventSubscriber; + +use App\Services\System\UpdateExecutor; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpKernel\Event\RequestEvent; +use Symfony\Component\HttpKernel\KernelEvents; +use Twig\Environment; + +/** + * Blocks all web requests when maintenance mode is enabled during updates. + */ +class MaintenanceModeSubscriber implements EventSubscriberInterface +{ + public function __construct(private readonly UpdateExecutor $updateExecutor, + private readonly Environment $twig) + { + + } + + public static function getSubscribedEvents(): array + { + return [ + // High priority to run before other listeners + KernelEvents::REQUEST => ['onKernelRequest', 512], + ]; + } + + public function onKernelRequest(RequestEvent $event): void + { + // Only handle main requests + if (!$event->isMainRequest()) { + return; + } + + // Skip if not in maintenance mode + if (!$this->updateExecutor->isMaintenanceMode()) { + return; + } + + // Allow CLI requests + if (php_sapi_name() === 'cli') { + return; + } + + // Get maintenance info + $maintenanceInfo = $this->updateExecutor->getMaintenanceInfo(); + $lockInfo = $this->updateExecutor->getLockInfo(); + + // Calculate how long the update has been running + $duration = null; + if ($lockInfo && isset($lockInfo['started_at'])) { + try { + $startedAt = new \DateTime($lockInfo['started_at']); + $now = new \DateTime(); + $duration = $now->getTimestamp() - $startedAt->getTimestamp(); + } catch (\Exception) { + // Ignore date parsing errors + } + } + + // Try to render the Twig template, fall back to simple HTML + try { + $content = $this->twig->render('maintenance/maintenance.html.twig', [ + 'reason' => $maintenanceInfo['reason'] ?? 'Maintenance in progress', + 'started_at' => $maintenanceInfo['enabled_at'] ?? null, + 'duration' => $duration, + ]); + } catch (\Exception) { + // Fallback to simple HTML if Twig fails + $content = $this->getSimpleMaintenanceHtml($maintenanceInfo, $duration); + } + + $response = new Response($content, Response::HTTP_SERVICE_UNAVAILABLE); + $response->headers->set('Retry-After', '30'); + $response->headers->set('Cache-Control', 'no-store, no-cache, must-revalidate'); + + $event->setResponse($response); + } + + /** + * Generate a simple maintenance page HTML without Twig. + */ + private function getSimpleMaintenanceHtml(?array $maintenanceInfo, ?int $duration): string + { + $reason = htmlspecialchars($maintenanceInfo['reason'] ?? 'Update in progress'); + $durationText = $duration !== null ? sprintf('%d seconds', $duration) : 'a moment'; + + return << + + + + + + Part-DB - Maintenance + + + +
    +
    + ⚙️ +
    +

    Part-DB is Updating

    +

    We're making things better. This should only take a moment.

    + +
    + {$reason} +
    + +
    +
    +
    + +

    + Update running for {$durationText}
    + This page will automatically refresh every 15 seconds. +

    +
    + + +HTML; + } +} diff --git a/src/Services/System/InstallationTypeDetector.php b/src/Services/System/InstallationTypeDetector.php new file mode 100644 index 00000000..0cd99a04 --- /dev/null +++ b/src/Services/System/InstallationTypeDetector.php @@ -0,0 +1,224 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Services\System; + +use Symfony\Component\DependencyInjection\Attribute\Autowire; +use Symfony\Component\Process\Process; + +/** + * Detects the installation type of Part-DB to determine the appropriate update strategy. + */ +enum InstallationType: string +{ + case GIT = 'git'; + case DOCKER = 'docker'; + case ZIP_RELEASE = 'zip_release'; + case UNKNOWN = 'unknown'; + + public function getLabel(): string + { + return match($this) { + self::GIT => 'Git Clone', + self::DOCKER => 'Docker', + self::ZIP_RELEASE => 'Release Archive', + self::UNKNOWN => 'Unknown', + }; + } + + public function supportsAutoUpdate(): bool + { + return match($this) { + self::GIT => true, + self::DOCKER => false, + self::ZIP_RELEASE => true, + self::UNKNOWN => false, + }; + } + + public function getUpdateInstructions(): string + { + return match($this) { + self::GIT => 'Run: php bin/console partdb:update', + self::DOCKER => 'Pull the new Docker image and recreate the container: docker-compose pull && docker-compose up -d', + self::ZIP_RELEASE => 'Download the new release, extract it, and run migrations.', + self::UNKNOWN => 'Unable to determine installation type. Please update manually.', + }; + } +} + +class InstallationTypeDetector +{ + public function __construct(#[Autowire(param: 'kernel.project_dir')] private readonly string $project_dir) + { + + } + + /** + * Detect the installation type based on filesystem markers. + */ + public function detect(): InstallationType + { + // Check for Docker environment first + if ($this->isDocker()) { + return InstallationType::DOCKER; + } + + // Check for Git installation + if ($this->isGitInstall()) { + return InstallationType::GIT; + } + + // Check for ZIP release (has VERSION file but no .git) + if ($this->isZipRelease()) { + return InstallationType::ZIP_RELEASE; + } + + return InstallationType::UNKNOWN; + } + + /** + * Check if running inside a Docker container. + */ + public function isDocker(): bool + { + // Check for /.dockerenv file + if (file_exists('/.dockerenv')) { + return true; + } + + // Check for DOCKER environment variable + if (getenv('DOCKER') !== false) { + return true; + } + + // Check for container runtime in cgroup + if (file_exists('/proc/1/cgroup')) { + $cgroup = @file_get_contents('/proc/1/cgroup'); + if ($cgroup !== false && (str_contains($cgroup, 'docker') || str_contains($cgroup, 'containerd'))) { + return true; + } + } + + return false; + } + + /** + * Check if this is a Git-based installation. + */ + public function isGitInstall(): bool + { + return is_dir($this->project_dir . '/.git'); + } + + /** + * Check if this appears to be a ZIP release installation. + */ + public function isZipRelease(): bool + { + // Has VERSION file but no .git directory + return file_exists($this->project_dir . '/VERSION') && !$this->isGitInstall(); + } + + /** + * Get detailed information about the installation. + */ + public function getInstallationInfo(): array + { + $type = $this->detect(); + + $info = [ + 'type' => $type, + 'type_name' => $type->getLabel(), + 'supports_auto_update' => $type->supportsAutoUpdate(), + 'update_instructions' => $type->getUpdateInstructions(), + 'project_dir' => $this->project_dir, + ]; + + if ($type === InstallationType::GIT) { + $info['git'] = $this->getGitInfo(); + } + + if ($type === InstallationType::DOCKER) { + $info['docker'] = $this->getDockerInfo(); + } + + return $info; + } + + /** + * Get Git-specific information. + */ + private function getGitInfo(): array + { + $info = [ + 'branch' => null, + 'commit' => null, + 'remote_url' => null, + 'has_local_changes' => false, + ]; + + // Get branch + $headFile = $this->project_dir . '/.git/HEAD'; + if (file_exists($headFile)) { + $head = file_get_contents($headFile); + if (preg_match('#ref: refs/heads/(.+)#', $head, $matches)) { + $info['branch'] = trim($matches[1]); + } + } + + // Get remote URL + $configFile = $this->project_dir . '/.git/config'; + if (file_exists($configFile)) { + $config = file_get_contents($configFile); + if (preg_match('#url = (.+)#', $config, $matches)) { + $info['remote_url'] = trim($matches[1]); + } + } + + // Get commit hash + $process = new Process(['git', 'rev-parse', '--short', 'HEAD'], $this->project_dir); + $process->run(); + if ($process->isSuccessful()) { + $info['commit'] = trim($process->getOutput()); + } + + // Check for local changes + $process = new Process(['git', 'status', '--porcelain'], $this->project_dir); + $process->run(); + $info['has_local_changes'] = !empty(trim($process->getOutput())); + + return $info; + } + + /** + * Get Docker-specific information. + */ + private function getDockerInfo(): array + { + return [ + 'container_id' => @file_get_contents('/proc/1/cpuset') ?: null, + 'image' => getenv('DOCKER_IMAGE') ?: null, + ]; + } +} diff --git a/src/Services/System/UpdateChecker.php b/src/Services/System/UpdateChecker.php new file mode 100644 index 00000000..a881f614 --- /dev/null +++ b/src/Services/System/UpdateChecker.php @@ -0,0 +1,349 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Services\System; + +use App\Settings\SystemSettings\PrivacySettings; +use Psr\Log\LoggerInterface; +use Shivas\VersioningBundle\Service\VersionManagerInterface; +use Symfony\Component\DependencyInjection\Attribute\Autowire; +use Symfony\Component\Process\Process; +use Symfony\Contracts\Cache\CacheInterface; +use Symfony\Contracts\Cache\ItemInterface; +use Symfony\Contracts\HttpClient\HttpClientInterface; +use Version\Version; + +/** + * Enhanced update checker that fetches release information including changelogs. + */ +class UpdateChecker +{ + private const GITHUB_API_BASE = 'https://api.github.com/repos/Part-DB/Part-DB-server'; + private const CACHE_KEY_RELEASES = 'update_checker_releases'; + private const CACHE_KEY_COMMITS = 'update_checker_commits_behind'; + private const CACHE_TTL = 60 * 60 * 6; // 6 hours + private const CACHE_TTL_ERROR = 60 * 60; // 1 hour on error + + public function __construct(private readonly HttpClientInterface $httpClient, + private readonly CacheInterface $updateCache, private readonly VersionManagerInterface $versionManager, + private readonly PrivacySettings $privacySettings, private readonly LoggerInterface $logger, + private readonly InstallationTypeDetector $installationTypeDetector, + #[Autowire(param: 'kernel.debug')] private readonly bool $is_dev_mode, + #[Autowire(param: 'kernel.project_dir')] private readonly string $project_dir) + { + + } + + /** + * Get the current installed version. + */ + public function getCurrentVersion(): Version + { + return $this->versionManager->getVersion(); + } + + /** + * Get the current version as string. + */ + public function getCurrentVersionString(): string + { + return $this->getCurrentVersion()->toString(); + } + + /** + * Get Git repository information. + */ + public function getGitInfo(): array + { + $info = [ + 'branch' => null, + 'commit' => null, + 'has_local_changes' => false, + 'commits_behind' => 0, + 'is_git_install' => false, + ]; + + $gitDir = $this->project_dir . '/.git'; + + if (!is_dir($gitDir)) { + return $info; + } + + $info['is_git_install'] = true; + + // Get branch from HEAD file + $headFile = $gitDir . '/HEAD'; + if (file_exists($headFile)) { + $head = file_get_contents($headFile); + if (preg_match('#ref: refs/heads/(.+)#', $head, $matches)) { + $info['branch'] = trim($matches[1]); + } + } + + // Get current commit + $process = new Process(['git', 'rev-parse', '--short', 'HEAD'], $this->project_dir); + $process->run(); + if ($process->isSuccessful()) { + $info['commit'] = trim($process->getOutput()); + } + + // Check for local changes + $process = new Process(['git', 'status', '--porcelain'], $this->project_dir); + $process->run(); + $info['has_local_changes'] = !empty(trim($process->getOutput())); + + // Get commits behind (fetch first) + if ($info['branch']) { + // Try to get cached commits behind count + $info['commits_behind'] = $this->getCommitsBehind($info['branch']); + } + + return $info; + } + + /** + * Get number of commits behind the remote branch (cached). + */ + private function getCommitsBehind(string $branch): int + { + if (!$this->privacySettings->checkForUpdates) { + return 0; + } + + $cacheKey = self::CACHE_KEY_COMMITS . '_' . md5($branch); + + return $this->updateCache->get($cacheKey, function (ItemInterface $item) use ($branch) { + $item->expiresAfter(self::CACHE_TTL); + + // Fetch from remote first + $process = new Process(['git', 'fetch', '--tags', 'origin'], $this->project_dir); + $process->run(); + + // Count commits behind + $process = new Process(['git', 'rev-list', 'HEAD..origin/' . $branch, '--count'], $this->project_dir); + $process->run(); + + return $process->isSuccessful() ? (int) trim($process->getOutput()) : 0; + }); + } + + /** + * Force refresh git information by invalidating cache. + */ + public function refreshGitInfo(): void + { + $gitInfo = $this->getGitInfo(); + if ($gitInfo['branch']) { + $this->updateCache->delete(self::CACHE_KEY_COMMITS . '_' . md5($gitInfo['branch'])); + } + $this->updateCache->delete(self::CACHE_KEY_RELEASES); + } + + /** + * Get all available releases from GitHub (cached). + * + * @return array + */ + public function getAvailableReleases(int $limit = 10): array + { + if (!$this->privacySettings->checkForUpdates) { + return []; + } + + return $this->updateCache->get(self::CACHE_KEY_RELEASES, function (ItemInterface $item) use ($limit) { + $item->expiresAfter(self::CACHE_TTL); + + try { + $response = $this->httpClient->request('GET', self::GITHUB_API_BASE . '/releases', [ + 'query' => ['per_page' => $limit], + 'headers' => [ + 'Accept' => 'application/vnd.github.v3+json', + 'User-Agent' => 'Part-DB-Update-Checker', + ], + ]); + + $releases = []; + foreach ($response->toArray() as $release) { + // Extract assets (for ZIP download) + $assets = []; + foreach ($release['assets'] ?? [] as $asset) { + if (str_ends_with($asset['name'], '.zip') || str_ends_with($asset['name'], '.tar.gz')) { + $assets[] = [ + 'name' => $asset['name'], + 'url' => $asset['browser_download_url'], + 'size' => $asset['size'], + ]; + } + } + + $releases[] = [ + 'version' => ltrim($release['tag_name'], 'v'), + 'tag' => $release['tag_name'], + 'name' => $release['name'] ?? $release['tag_name'], + 'url' => $release['html_url'], + 'published_at' => $release['published_at'], + 'body' => $release['body'] ?? '', + 'prerelease' => $release['prerelease'] ?? false, + 'draft' => $release['draft'] ?? false, + 'assets' => $assets, + 'tarball_url' => $release['tarball_url'] ?? null, + 'zipball_url' => $release['zipball_url'] ?? null, + ]; + } + + return $releases; + } catch (\Exception $e) { + $this->logger->error('Failed to fetch releases from GitHub: ' . $e->getMessage()); + $item->expiresAfter(self::CACHE_TTL_ERROR); + + if ($this->is_dev_mode) { + throw $e; + } + + return []; + } + }); + } + + /** + * Get the latest stable release. + */ + public function getLatestRelease(bool $includePrerelease = false): ?array + { + $releases = $this->getAvailableReleases(); + + foreach ($releases as $release) { + // Skip drafts always + if ($release['draft']) { + continue; + } + + // Skip prereleases unless explicitly included + if (!$includePrerelease && $release['prerelease']) { + continue; + } + + return $release; + } + + return null; + } + + /** + * Check if a specific version is newer than current. + */ + public function isNewerVersion(string $version): bool + { + try { + $targetVersion = Version::fromString(ltrim($version, 'v')); + return $targetVersion->isGreaterThan($this->getCurrentVersion()); + } catch (\Exception) { + return false; + } + } + + /** + * Get comprehensive update status. + */ + public function getUpdateStatus(): array + { + $current = $this->getCurrentVersion(); + $latest = $this->getLatestRelease(); + $gitInfo = $this->getGitInfo(); + $installInfo = $this->installationTypeDetector->getInstallationInfo(); + + $updateAvailable = false; + $latestVersion = null; + $latestTag = null; + + if ($latest) { + try { + $latestVersionObj = Version::fromString($latest['version']); + $updateAvailable = $latestVersionObj->isGreaterThan($current); + $latestVersion = $latest['version']; + $latestTag = $latest['tag']; + } catch (\Exception) { + // Invalid version string + } + } + + // Determine if we can auto-update + $canAutoUpdate = $installInfo['supports_auto_update']; + $updateBlockers = []; + + if ($gitInfo['has_local_changes']) { + $canAutoUpdate = false; + $updateBlockers[] = 'local_changes'; + } + + if ($installInfo['type'] === InstallationType::DOCKER) { + $updateBlockers[] = 'docker_installation'; + } + + return [ + 'current_version' => $current->toString(), + 'latest_version' => $latestVersion, + 'latest_tag' => $latestTag, + 'update_available' => $updateAvailable, + 'release_notes' => $latest['body'] ?? null, + 'release_url' => $latest['url'] ?? null, + 'published_at' => $latest['published_at'] ?? null, + 'git' => $gitInfo, + 'installation' => $installInfo, + 'can_auto_update' => $canAutoUpdate, + 'update_blockers' => $updateBlockers, + 'check_enabled' => $this->privacySettings->checkForUpdates, + ]; + } + + /** + * Get releases newer than the current version. + */ + public function getAvailableUpdates(bool $includePrerelease = false): array + { + $releases = $this->getAvailableReleases(); + $current = $this->getCurrentVersion(); + $updates = []; + + foreach ($releases as $release) { + if ($release['draft']) { + continue; + } + + if (!$includePrerelease && $release['prerelease']) { + continue; + } + + try { + $releaseVersion = Version::fromString($release['version']); + if ($releaseVersion->isGreaterThan($current)) { + $updates[] = $release; + } + } catch (\Exception) { + continue; + } + } + + return $updates; + } +} diff --git a/src/Services/System/UpdateExecutor.php b/src/Services/System/UpdateExecutor.php new file mode 100644 index 00000000..7bc997f7 --- /dev/null +++ b/src/Services/System/UpdateExecutor.php @@ -0,0 +1,832 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Services\System; + +use Psr\Log\LoggerInterface; +use Shivas\VersioningBundle\Service\VersionManagerInterface; +use Symfony\Component\DependencyInjection\Attribute\Autowire; +use Symfony\Component\Filesystem\Filesystem; +use Symfony\Component\Process\Process; + +/** + * Handles the execution of Part-DB updates with safety mechanisms. + * + * This service should primarily be used from CLI commands, not web requests, + * due to the long-running nature of updates and permission requirements. + */ +class UpdateExecutor +{ + private const LOCK_FILE = 'var/update.lock'; + private const MAINTENANCE_FILE = 'var/maintenance.flag'; + private const UPDATE_LOG_DIR = 'var/log/updates'; + private const BACKUP_DIR = 'var/backups'; + private const PROGRESS_FILE = 'var/update_progress.json'; + + /** @var array */ + private array $steps = []; + + private ?string $currentLogFile = null; + + public function __construct(#[Autowire(param: 'kernel.project_dir')] private readonly string $project_dir, + private readonly LoggerInterface $logger, private readonly Filesystem $filesystem, + private readonly InstallationTypeDetector $installationTypeDetector, + private readonly VersionManagerInterface $versionManager) + { + + } + + /** + * Get the current version string for use in filenames. + */ + private function getCurrentVersionString(): string + { + return $this->versionManager->getVersion()->toString(); + } + + /** + * Check if an update is currently in progress. + */ + public function isLocked(): bool + { + $lockFile = $this->project_dir . '/' . self::LOCK_FILE; + + if (!file_exists($lockFile)) { + return false; + } + + // Check if lock is stale (older than 1 hour) + $lockData = json_decode(file_get_contents($lockFile), true); + if ($lockData && isset($lockData['started_at'])) { + $startedAt = new \DateTime($lockData['started_at']); + $now = new \DateTime(); + $diff = $now->getTimestamp() - $startedAt->getTimestamp(); + + // If lock is older than 1 hour, consider it stale + if ($diff > 3600) { + $this->logger->warning('Found stale update lock, removing it'); + $this->releaseLock(); + return false; + } + } + + return true; + } + + /** + * Get lock information. + */ + public function getLockInfo(): ?array + { + $lockFile = $this->project_dir . '/' . self::LOCK_FILE; + + if (!file_exists($lockFile)) { + return null; + } + + return json_decode(file_get_contents($lockFile), true); + } + + /** + * Check if maintenance mode is enabled. + */ + public function isMaintenanceMode(): bool + { + return file_exists($this->project_dir . '/' . self::MAINTENANCE_FILE); + } + + /** + * Get maintenance mode information. + */ + public function getMaintenanceInfo(): ?array + { + $maintenanceFile = $this->project_dir . '/' . self::MAINTENANCE_FILE; + + if (!file_exists($maintenanceFile)) { + return null; + } + + return json_decode(file_get_contents($maintenanceFile), true); + } + + /** + * Acquire an exclusive lock for the update process. + */ + public function acquireLock(): bool + { + if ($this->isLocked()) { + return false; + } + + $lockFile = $this->project_dir . '/' . self::LOCK_FILE; + $lockDir = dirname($lockFile); + + if (!is_dir($lockDir)) { + $this->filesystem->mkdir($lockDir); + } + + $lockData = [ + 'started_at' => (new \DateTime())->format('c'), + 'pid' => getmypid(), + 'user' => get_current_user(), + ]; + + $this->filesystem->dumpFile($lockFile, json_encode($lockData, JSON_PRETTY_PRINT)); + + return true; + } + + /** + * Release the update lock. + */ + public function releaseLock(): void + { + $lockFile = $this->project_dir . '/' . self::LOCK_FILE; + + if (file_exists($lockFile)) { + $this->filesystem->remove($lockFile); + } + } + + /** + * Enable maintenance mode to block user access during update. + */ + public function enableMaintenanceMode(string $reason = 'Update in progress'): void + { + $maintenanceFile = $this->project_dir . '/' . self::MAINTENANCE_FILE; + $maintenanceDir = dirname($maintenanceFile); + + if (!is_dir($maintenanceDir)) { + $this->filesystem->mkdir($maintenanceDir); + } + + $data = [ + 'enabled_at' => (new \DateTime())->format('c'), + 'reason' => $reason, + ]; + + $this->filesystem->dumpFile($maintenanceFile, json_encode($data, JSON_PRETTY_PRINT)); + } + + /** + * Disable maintenance mode. + */ + public function disableMaintenanceMode(): void + { + $maintenanceFile = $this->project_dir . '/' . self::MAINTENANCE_FILE; + + if (file_exists($maintenanceFile)) { + $this->filesystem->remove($maintenanceFile); + } + } + + /** + * Validate that we can perform an update. + * + * @return array{valid: bool, errors: array} + */ + public function validateUpdatePreconditions(): array + { + $errors = []; + + // Check installation type + $installType = $this->installationTypeDetector->detect(); + if (!$installType->supportsAutoUpdate()) { + $errors[] = sprintf( + 'Installation type "%s" does not support automatic updates. %s', + $installType->getLabel(), + $installType->getUpdateInstructions() + ); + } + + // Check for Git installation + if ($installType === InstallationType::GIT) { + // Check if git is available + $process = new Process(['git', '--version']); + $process->run(); + if (!$process->isSuccessful()) { + $errors[] = 'Git command not found. Please ensure Git is installed and in PATH.'; + } + + // Check for local changes + $process = new Process(['git', 'status', '--porcelain'], $this->project_dir); + $process->run(); + if (!empty(trim($process->getOutput()))) { + $errors[] = 'There are uncommitted local changes. Please commit or stash them before updating.'; + } + } + + // Check if composer is available + $process = new Process(['composer', '--version']); + $process->run(); + if (!$process->isSuccessful()) { + $errors[] = 'Composer command not found. Please ensure Composer is installed and in PATH.'; + } + + // Check if PHP CLI is available + $process = new Process(['php', '--version']); + $process->run(); + if (!$process->isSuccessful()) { + $errors[] = 'PHP CLI not found. Please ensure PHP is installed and in PATH.'; + } + + // Check write permissions + $testDirs = ['var', 'vendor', 'public']; + foreach ($testDirs as $dir) { + $fullPath = $this->project_dir . '/' . $dir; + if (is_dir($fullPath) && !is_writable($fullPath)) { + $errors[] = sprintf('Directory "%s" is not writable.', $dir); + } + } + + // Check if already locked + if ($this->isLocked()) { + $lockInfo = $this->getLockInfo(); + $errors[] = sprintf( + 'An update is already in progress (started at %s).', + $lockInfo['started_at'] ?? 'unknown time' + ); + } + + return [ + 'valid' => empty($errors), + 'errors' => $errors, + ]; + } + + /** + * Execute the update to a specific version. + * + * @param string $targetVersion The target version/tag to update to (e.g., "v2.6.0") + * @param bool $createBackup Whether to create a backup before updating + * @param callable|null $onProgress Callback for progress updates + * + * @return array{success: bool, steps: array, rollback_tag: ?string, error: ?string, log_file: ?string} + */ + public function executeUpdate( + string $targetVersion, + bool $createBackup = true, + ?callable $onProgress = null + ): array { + $this->steps = []; + $rollbackTag = null; + $startTime = microtime(true); + + // Initialize log file + $this->initializeLogFile($targetVersion); + + $log = function (string $step, string $message, bool $success = true, ?float $duration = null) use ($onProgress): void { + $entry = [ + 'step' => $step, + 'message' => $message, + 'success' => $success, + 'timestamp' => (new \DateTime())->format('c'), + 'duration' => $duration, + ]; + + $this->steps[] = $entry; + $this->writeToLogFile($entry); + $this->logger->info("Update [{$step}]: {$message}", ['success' => $success]); + + if ($onProgress) { + $onProgress($entry); + } + }; + + try { + // Validate preconditions + $validation = $this->validateUpdatePreconditions(); + if (!$validation['valid']) { + throw new \RuntimeException('Precondition check failed: ' . implode('; ', $validation['errors'])); + } + + // Step 1: Acquire lock + $stepStart = microtime(true); + if (!$this->acquireLock()) { + throw new \RuntimeException('Could not acquire update lock. Another update may be in progress.'); + } + $log('lock', 'Acquired exclusive update lock', true, microtime(true) - $stepStart); + + // Step 2: Enable maintenance mode + $stepStart = microtime(true); + $this->enableMaintenanceMode('Updating to ' . $targetVersion); + $log('maintenance', 'Enabled maintenance mode', true, microtime(true) - $stepStart); + + // Step 3: Create rollback point with version info + $stepStart = microtime(true); + $currentVersion = $this->getCurrentVersionString(); + $targetVersionClean = preg_replace('/[^a-zA-Z0-9\.]/', '', $targetVersion); + $rollbackTag = 'pre-update-v' . $currentVersion . '-to-' . $targetVersionClean . '-' . date('Y-m-d-His'); + $this->runCommand(['git', 'tag', $rollbackTag], 'Create rollback tag'); + $log('rollback_tag', 'Created rollback tag: ' . $rollbackTag, true, microtime(true) - $stepStart); + + // Step 4: Create backup (optional) + if ($createBackup) { + $stepStart = microtime(true); + $backupFile = $this->createBackup($targetVersion); + $log('backup', 'Created backup: ' . basename($backupFile), true, microtime(true) - $stepStart); + } + + // Step 5: Fetch from remote + $stepStart = microtime(true); + $this->runCommand(['git', 'fetch', '--tags', '--force', 'origin'], 'Fetch from origin', 120); + $log('fetch', 'Fetched latest changes and tags from origin', true, microtime(true) - $stepStart); + + // Step 6: Checkout target version + $stepStart = microtime(true); + $this->runCommand(['git', 'checkout', $targetVersion], 'Checkout version'); + $log('checkout', 'Checked out version: ' . $targetVersion, true, microtime(true) - $stepStart); + + // Step 7: Install dependencies + $stepStart = microtime(true); + $this->runCommand([ + 'composer', 'install', + '--no-dev', + '--optimize-autoloader', + '--no-interaction', + '--no-progress', + ], 'Install dependencies', 600); + $log('composer', 'Installed/updated dependencies', true, microtime(true) - $stepStart); + + // Step 8: Run database migrations + $stepStart = microtime(true); + $this->runCommand([ + 'php', 'bin/console', 'doctrine:migrations:migrate', + '--no-interaction', + '--allow-no-migration', + ], 'Run migrations', 300); + $log('migrations', 'Database migrations completed', true, microtime(true) - $stepStart); + + // Step 9: Clear cache + $stepStart = microtime(true); + $this->runCommand([ + 'php', 'bin/console', 'cache:clear', + '--env=prod', + '--no-interaction', + ], 'Clear cache', 120); + $log('cache_clear', 'Cleared application cache', true, microtime(true) - $stepStart); + + // Step 10: Warm up cache + $stepStart = microtime(true); + $this->runCommand([ + 'php', 'bin/console', 'cache:warmup', + '--env=prod', + ], 'Warmup cache', 120); + $log('cache_warmup', 'Warmed up application cache', true, microtime(true) - $stepStart); + + // Step 11: Disable maintenance mode + $stepStart = microtime(true); + $this->disableMaintenanceMode(); + $log('maintenance_off', 'Disabled maintenance mode', true, microtime(true) - $stepStart); + + // Step 12: Release lock + $stepStart = microtime(true); + $this->releaseLock(); + + $totalDuration = microtime(true) - $startTime; + $log('complete', sprintf('Update completed successfully in %.1f seconds', $totalDuration), true, microtime(true) - $stepStart); + + return [ + 'success' => true, + 'steps' => $this->steps, + 'rollback_tag' => $rollbackTag, + 'error' => null, + 'log_file' => $this->currentLogFile, + 'duration' => $totalDuration, + ]; + + } catch (\Exception $e) { + $log('error', 'Update failed: ' . $e->getMessage(), false); + + // Attempt rollback + if ($rollbackTag) { + try { + $this->runCommand(['git', 'checkout', $rollbackTag], 'Rollback'); + $log('rollback', 'Rolled back to: ' . $rollbackTag, true); + + // Re-run composer install after rollback + $this->runCommand([ + 'composer', 'install', + '--no-dev', + '--optimize-autoloader', + '--no-interaction', + ], 'Reinstall dependencies after rollback', 600); + $log('rollback_composer', 'Reinstalled dependencies after rollback', true); + + // Clear cache after rollback + $this->runCommand([ + 'php', 'bin/console', 'cache:clear', + '--env=prod', + ], 'Clear cache after rollback', 120); + $log('rollback_cache', 'Cleared cache after rollback', true); + + } catch (\Exception $rollbackError) { + $log('rollback_failed', 'Rollback failed: ' . $rollbackError->getMessage(), false); + } + } + + // Clean up + $this->disableMaintenanceMode(); + $this->releaseLock(); + + return [ + 'success' => false, + 'steps' => $this->steps, + 'rollback_tag' => $rollbackTag, + 'error' => $e->getMessage(), + 'log_file' => $this->currentLogFile, + 'duration' => microtime(true) - $startTime, + ]; + } + } + + /** + * Create a backup before updating. + */ + private function createBackup(string $targetVersion): string + { + $backupDir = $this->project_dir . '/' . self::BACKUP_DIR; + + if (!is_dir($backupDir)) { + $this->filesystem->mkdir($backupDir, 0755); + } + + // Include version numbers in backup filename: pre-update-v2.5.1-to-v2.6.0-2024-01-30-185400.zip + $currentVersion = $this->getCurrentVersionString(); + $targetVersionClean = preg_replace('/[^a-zA-Z0-9\.]/', '', $targetVersion); + $backupFile = $backupDir . '/pre-update-v' . $currentVersion . '-to-' . $targetVersionClean . '-' . date('Y-m-d-His') . '.zip'; + + $this->runCommand([ + 'php', 'bin/console', 'partdb:backup', + '--full', + '--overwrite', + $backupFile, + ], 'Create backup', 600); + + return $backupFile; + } + + /** + * Run a shell command with proper error handling. + */ + private function runCommand(array $command, string $description, int $timeout = 120): string + { + $process = new Process($command, $this->project_dir); + $process->setTimeout($timeout); + + // Set environment variables needed for Composer and other tools + // This is especially important when running as www-data which may not have HOME set + // We inherit from current environment and override/add specific variables + $currentEnv = getenv(); + if (!is_array($currentEnv)) { + $currentEnv = []; + } + $env = array_merge($currentEnv, [ + 'HOME' => $this->project_dir, + 'COMPOSER_HOME' => $this->project_dir . '/var/composer', + 'PATH' => getenv('PATH') ?: '/usr/local/bin:/usr/bin:/bin', + ]); + $process->setEnv($env); + + $output = ''; + $process->run(function ($type, $buffer) use (&$output) { + $output .= $buffer; + }); + + if (!$process->isSuccessful()) { + $errorOutput = $process->getErrorOutput() ?: $process->getOutput(); + throw new \RuntimeException( + sprintf('%s failed: %s', $description, trim($errorOutput)) + ); + } + + return $output; + } + + /** + * Initialize the log file for this update. + */ + private function initializeLogFile(string $targetVersion): void + { + $logDir = $this->project_dir . '/' . self::UPDATE_LOG_DIR; + + if (!is_dir($logDir)) { + $this->filesystem->mkdir($logDir, 0755); + } + + // Include version numbers in log filename: update-v2.5.1-to-v2.6.0-2024-01-30-185400.log + $currentVersion = $this->getCurrentVersionString(); + $targetVersionClean = preg_replace('/[^a-zA-Z0-9\.]/', '', $targetVersion); + $this->currentLogFile = $logDir . '/update-v' . $currentVersion . '-to-' . $targetVersionClean . '-' . date('Y-m-d-His') . '.log'; + + $header = sprintf( + "Part-DB Update Log\n" . + "==================\n" . + "Started: %s\n" . + "From Version: %s\n" . + "Target Version: %s\n" . + "==================\n\n", + date('Y-m-d H:i:s'), + $currentVersion, + $targetVersion + ); + + file_put_contents($this->currentLogFile, $header); + } + + /** + * Write an entry to the log file. + */ + private function writeToLogFile(array $entry): void + { + if (!$this->currentLogFile) { + return; + } + + $line = sprintf( + "[%s] %s: %s%s\n", + $entry['timestamp'], + strtoupper($entry['step']), + $entry['message'], + $entry['duration'] ? sprintf(' (%.2fs)', $entry['duration']) : '' + ); + + file_put_contents($this->currentLogFile, $line, FILE_APPEND); + } + + /** + * Get list of update log files. + */ + public function getUpdateLogs(): array + { + $logDir = $this->project_dir . '/' . self::UPDATE_LOG_DIR; + + if (!is_dir($logDir)) { + return []; + } + + $logs = []; + foreach (glob($logDir . '/update-*.log') as $logFile) { + $logs[] = [ + 'file' => basename($logFile), + 'path' => $logFile, + 'date' => filemtime($logFile), + 'size' => filesize($logFile), + ]; + } + + // Sort by date descending + usort($logs, fn($a, $b) => $b['date'] <=> $a['date']); + + return $logs; + } + + /** + * Get list of backups. + */ + public function getBackups(): array + { + $backupDir = $this->project_dir . '/' . self::BACKUP_DIR; + + if (!is_dir($backupDir)) { + return []; + } + + $backups = []; + foreach (glob($backupDir . '/*.zip') as $backupFile) { + $backups[] = [ + 'file' => basename($backupFile), + 'path' => $backupFile, + 'date' => filemtime($backupFile), + 'size' => filesize($backupFile), + ]; + } + + // Sort by date descending + usort($backups, fn($a, $b) => $b['date'] <=> $a['date']); + + return $backups; + } + + /** + * Get the path to the progress file. + */ + public function getProgressFilePath(): string + { + return $this->project_dir . '/' . self::PROGRESS_FILE; + } + + /** + * Save progress to file for web UI polling. + */ + public function saveProgress(array $progress): void + { + $progressFile = $this->getProgressFilePath(); + $progressDir = dirname($progressFile); + + if (!is_dir($progressDir)) { + $this->filesystem->mkdir($progressDir); + } + + $this->filesystem->dumpFile($progressFile, json_encode($progress, JSON_PRETTY_PRINT)); + } + + /** + * Get current update progress from file. + */ + public function getProgress(): ?array + { + $progressFile = $this->getProgressFilePath(); + + if (!file_exists($progressFile)) { + return null; + } + + $data = json_decode(file_get_contents($progressFile), true); + + // If the progress file is stale (older than 30 minutes), consider it invalid + if ($data && isset($data['started_at'])) { + $startedAt = strtotime($data['started_at']); + if (time() - $startedAt > 1800) { + $this->clearProgress(); + return null; + } + } + + return $data; + } + + /** + * Clear progress file. + */ + public function clearProgress(): void + { + $progressFile = $this->getProgressFilePath(); + + if (file_exists($progressFile)) { + $this->filesystem->remove($progressFile); + } + } + + /** + * Check if an update is currently running (based on progress file). + */ + public function isUpdateRunning(): bool + { + $progress = $this->getProgress(); + + if (!$progress) { + return false; + } + + return isset($progress['status']) && $progress['status'] === 'running'; + } + + /** + * Start the update process in the background. + * Returns the process ID or null on failure. + */ + public function startBackgroundUpdate(string $targetVersion, bool $createBackup = true): ?int + { + // Validate first + $validation = $this->validateUpdatePreconditions(); + if (!$validation['valid']) { + $this->logger->error('Update validation failed', ['errors' => $validation['errors']]); + return null; + } + + // Initialize progress file + $this->saveProgress([ + 'status' => 'starting', + 'target_version' => $targetVersion, + 'create_backup' => $createBackup, + 'started_at' => (new \DateTime())->format('c'), + 'current_step' => 0, + 'total_steps' => 12, + 'step_name' => 'initializing', + 'step_message' => 'Starting update process...', + 'steps' => [], + 'error' => null, + ]); + + // Build the command to run in background + // Use 'php' from PATH as PHP_BINARY might point to php-fpm + $consolePath = $this->project_dir . '/bin/console'; + $logFile = $this->project_dir . '/var/log/update-background.log'; + + // Ensure log directory exists + $logDir = dirname($logFile); + if (!is_dir($logDir)) { + $this->filesystem->mkdir($logDir, 0755); + } + + // Use nohup to properly detach the process from the web request + // The process will continue running even after the PHP request ends + $command = sprintf( + 'nohup php %s partdb:update %s %s --force --no-interaction >> %s 2>&1 &', + escapeshellarg($consolePath), + escapeshellarg($targetVersion), + $createBackup ? '' : '--no-backup', + escapeshellarg($logFile) + ); + + $this->logger->info('Starting background update', [ + 'command' => $command, + 'target_version' => $targetVersion, + ]); + + // Execute in background using shell_exec for proper detachment + // shell_exec with & runs the command in background + $output = shell_exec($command); + + // Give it a moment to start + usleep(500000); // 500ms + + // Check if progress file was updated (indicates process started) + $progress = $this->getProgress(); + if ($progress && isset($progress['status'])) { + $this->logger->info('Background update started successfully'); + return 1; // Return a non-null value to indicate success + } + + $this->logger->error('Background update may not have started', ['output' => $output]); + return 1; // Still return success as the process might just be slow to start + } + + /** + * Execute update with progress file updates for web UI. + * This is called by the CLI command and updates the progress file. + */ + public function executeUpdateWithProgress( + string $targetVersion, + bool $createBackup = true, + ?callable $onProgress = null + ): array { + $totalSteps = 12; + $currentStep = 0; + + $updateProgress = function (string $stepName, string $message, bool $success = true) use (&$currentStep, $totalSteps, $targetVersion, $createBackup): void { + $currentStep++; + $progress = $this->getProgress() ?? [ + 'status' => 'running', + 'target_version' => $targetVersion, + 'create_backup' => $createBackup, + 'started_at' => (new \DateTime())->format('c'), + 'steps' => [], + ]; + + $progress['current_step'] = $currentStep; + $progress['total_steps'] = $totalSteps; + $progress['step_name'] = $stepName; + $progress['step_message'] = $message; + $progress['status'] = 'running'; + $progress['steps'][] = [ + 'step' => $stepName, + 'message' => $message, + 'success' => $success, + 'timestamp' => (new \DateTime())->format('c'), + ]; + + $this->saveProgress($progress); + }; + + // Wrap the existing executeUpdate with progress tracking + $result = $this->executeUpdate($targetVersion, $createBackup, function ($entry) use ($updateProgress, $onProgress) { + $updateProgress($entry['step'], $entry['message'], $entry['success']); + + if ($onProgress) { + $onProgress($entry); + } + }); + + // Update final status + $finalProgress = $this->getProgress() ?? []; + $finalProgress['status'] = $result['success'] ? 'completed' : 'failed'; + $finalProgress['completed_at'] = (new \DateTime())->format('c'); + $finalProgress['result'] = $result; + $finalProgress['error'] = $result['error']; + $this->saveProgress($finalProgress); + + return $result; + } +} diff --git a/src/Services/Trees/ToolsTreeBuilder.php b/src/Services/Trees/ToolsTreeBuilder.php index 37a09b09..1bb81bf7 100644 --- a/src/Services/Trees/ToolsTreeBuilder.php +++ b/src/Services/Trees/ToolsTreeBuilder.php @@ -315,6 +315,13 @@ class ToolsTreeBuilder ))->setIcon('fa fa-fw fa-gears fa-solid'); } + if ($this->security->isGranted('@system.show_updates')) { + $nodes[] = (new TreeViewNode( + $this->translator->trans('tree.tools.system.update_manager'), + $this->urlGenerator->generate('admin_update_manager') + ))->setIcon('fa-fw fa-treeview fa-solid fa-cloud-download-alt'); + } + return $nodes; } } diff --git a/src/Twig/UpdateExtension.php b/src/Twig/UpdateExtension.php new file mode 100644 index 00000000..10264d12 --- /dev/null +++ b/src/Twig/UpdateExtension.php @@ -0,0 +1,79 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Twig; + +use App\Services\System\UpdateAvailableManager; +use Symfony\Bundle\SecurityBundle\Security; +use Twig\Extension\AbstractExtension; +use Twig\TwigFunction; + +/** + * Twig extension for update-related functions. + */ +final class UpdateExtension extends AbstractExtension +{ + public function __construct(private readonly UpdateAvailableManager $updateAvailableManager, + private readonly Security $security) + { + + } + + public function getFunctions(): array + { + return [ + new TwigFunction('is_update_available', $this->isUpdateAvailable(...)), + new TwigFunction('get_latest_version', $this->getLatestVersion(...)), + new TwigFunction('get_latest_version_url', $this->getLatestVersionUrl(...)), + ]; + } + + /** + * Check if an update is available and the user has permission to see it. + */ + public function isUpdateAvailable(): bool + { + // Only show to users with the show_updates permission + if (!$this->security->isGranted('@system.show_updates')) { + return false; + } + + return $this->updateAvailableManager->isUpdateAvailable(); + } + + /** + * Get the latest available version string. + */ + public function getLatestVersion(): string + { + return $this->updateAvailableManager->getLatestVersionString(); + } + + /** + * Get the URL to the latest version release page. + */ + public function getLatestVersionUrl(): string + { + return $this->updateAvailableManager->getLatestVersionUrl(); + } +} diff --git a/templates/_navbar.html.twig b/templates/_navbar.html.twig index 446ccdab..30562ec4 100644 --- a/templates/_navbar.html.twig +++ b/templates/_navbar.html.twig @@ -74,6 +74,19 @@
    {% if status.update_available and status.can_auto_update and validation.valid %} -
    + @@ -237,7 +237,7 @@ {% if release.version != status.current_version and status.can_auto_update and validation.valid %} + onsubmit="return confirmVersionChange('{{ release.tag }}', {{ release.version < status.current_version ? 'true' : 'false' }});"> @@ -371,4 +371,37 @@
    {% endif %} + + {% endblock %} diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index ff0a05e6..592590a8 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -14988,5 +14988,11 @@ Buerklin-API Authentication server: Are you sure you want to downgrade Part-DB? This will revert to an older version. A backup will be created before the downgrade.
    + + + update_manager.downgrade_removes_update_manager + WARNING: This version does not include the Update Manager. After downgrading, you will need to update manually using the command line (git checkout, composer install, etc.). + + From 0bfbbc961d4ee3939807ebdf2a753c3dbd3d5263 Mon Sep 17 00:00:00 2001 From: Sebastian Almberg <83243306+Sebbeben@users.noreply.github.com> Date: Fri, 30 Jan 2026 22:18:21 +0100 Subject: [PATCH 153/235] Fix update confirmation dialog not blocking form submission The previous implementation used inline onsubmit handlers with return confirmVersionChange(...), which could fail silently if any JavaScript error occurred on the page, causing the form to submit without confirmation. Fixes: - Use event.preventDefault() FIRST to ensure form never submits by default - Use DOMContentLoaded event listeners instead of inline handlers - Properly escape translation strings using json_encode filter - Wrap in IIFE with 'use strict' for better error handling - Use data-attributes to identify forms and pass isDowngrade state Fix DOMContentLoaded race condition in update form handlers The event listener was not attaching if DOMContentLoaded had already fired by the time the script executed. Now checks document.readyState and attaches handlers immediately if DOM is already ready. Added console.log statements to help debug form handler attachment. Use Stimulus controller for update confirmation dialogs The inline script was blocked by Content Security Policy (CSP). Stimulus controllers are bundled with webpack and properly allowed by CSP. - Create update_confirm_controller.js Stimulus controller - Remove inline script from template - Pass translation strings via data-* attributes --- .../controllers/update_confirm_controller.js | 81 +++++++++++++++++++ .../admin/update_manager/index.html.twig | 48 +++-------- 2 files changed, 94 insertions(+), 35 deletions(-) create mode 100644 assets/controllers/update_confirm_controller.js diff --git a/assets/controllers/update_confirm_controller.js b/assets/controllers/update_confirm_controller.js new file mode 100644 index 00000000..c30a433e --- /dev/null +++ b/assets/controllers/update_confirm_controller.js @@ -0,0 +1,81 @@ +/* + * This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony). + * + * Copyright (C) 2019 - 2025 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'; + +/** + * Stimulus controller for update/downgrade confirmation dialogs. + * Intercepts form submission and shows a confirmation dialog before proceeding. + */ +export default class extends Controller { + static values = { + isDowngrade: { type: Boolean, default: false }, + targetVersion: { type: String, default: '' }, + confirmUpdate: { type: String, default: 'Are you sure you want to update Part-DB?' }, + confirmDowngrade: { type: String, default: 'Are you sure you want to downgrade Part-DB?' }, + downgradeWarning: { type: String, default: 'WARNING: This version does not include the Update Manager.' }, + minUpdateManagerVersion: { type: String, default: '2.6.0' }, + }; + + connect() { + this.element.addEventListener('submit', this.handleSubmit.bind(this)); + } + + handleSubmit(event) { + // Always prevent default first + event.preventDefault(); + + const targetClean = this.targetVersionValue.replace(/^v/, ''); + let message; + + if (this.isDowngradeValue) { + // Check if downgrading to a version without Update Manager + if (this.compareVersions(targetClean, this.minUpdateManagerVersionValue) < 0) { + message = this.confirmDowngradeValue + '\n\n⚠️ ' + this.downgradeWarningValue; + } else { + message = this.confirmDowngradeValue; + } + } else { + message = this.confirmUpdateValue; + } + + // Only submit if user confirms + if (confirm(message)) { + // Remove the event listener to prevent infinite loop, then submit + this.element.removeEventListener('submit', this.handleSubmit.bind(this)); + this.element.submit(); + } + } + + /** + * Compare two version strings (e.g., "2.5.0" vs "2.6.0") + * Returns -1 if v1 < v2, 0 if equal, 1 if v1 > v2 + */ + compareVersions(v1, v2) { + const parts1 = v1.split('.').map(Number); + const parts2 = v2.split('.').map(Number); + for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) { + const p1 = parts1[i] || 0; + const p2 = parts2[i] || 0; + if (p1 < p2) return -1; + if (p1 > p2) return 1; + } + return 0; + } +} diff --git a/templates/admin/update_manager/index.html.twig b/templates/admin/update_manager/index.html.twig index d9dccbcf..1ab6c89e 100644 --- a/templates/admin/update_manager/index.html.twig +++ b/templates/admin/update_manager/index.html.twig @@ -133,7 +133,13 @@ {% if status.update_available and status.can_auto_update and validation.valid %} - + @@ -237,7 +243,12 @@ {% if release.version != status.current_version and status.can_auto_update and validation.valid %} + data-controller="update-confirm" + data-update-confirm-is-downgrade-value="{{ release.version < status.current_version ? 'true' : 'false' }}" + data-update-confirm-target-version-value="{{ release.tag }}" + data-update-confirm-confirm-update-value="{{ 'update_manager.confirm_update'|trans }}" + data-update-confirm-confirm-downgrade-value="{{ 'update_manager.confirm_downgrade'|trans }}" + data-update-confirm-downgrade-warning-value="{{ 'update_manager.downgrade_removes_update_manager'|trans }}"> @@ -371,37 +382,4 @@ {% endif %} - - {% endblock %} From 1637fd63f450622f6094eea698b73c4e83f33cab Mon Sep 17 00:00:00 2001 From: Sebastian Almberg <83243306+Sebbeben@users.noreply.github.com> Date: Fri, 30 Jan 2026 22:51:25 +0100 Subject: [PATCH 154/235] Add backup restore feature - Add restoreBackup() method to UpdateExecutor with full restore workflow - Add getBackupDetails() to retrieve backup metadata and contents info - Add restore controller routes (backup details API, restore action) - Add restore button to backups table in UI - Create backup_restore_controller.js Stimulus controller for confirmation - Add translation strings for restore feature The restore process: 1. Acquires lock and enables maintenance mode 2. Extracts backup to temp directory 3. Restores database (MySQL/PostgreSQL SQL or SQLite file) 4. Optionally restores config files and attachments 5. Clears and warms cache 6. Disables maintenance mode Fix backup restore database import The restore feature was using a non-existent doctrine:database:import command. Now properly uses mysql/psql commands directly to import database dumps. Changes: - Add EntityManagerInterface dependency to UpdateExecutor - Use mysql command with shell input redirection for MySQL restore - Use psql -f command for PostgreSQL restore - Properly handle database connection parameters - Add error handling for failed imports --- .../controllers/backup_restore_controller.js | 55 +++ src/Controller/UpdateManagerController.php | 71 ++++ src/Services/System/UpdateExecutor.php | 328 +++++++++++++++++- .../admin/update_manager/index.html.twig | 23 +- translations/messages.en.xlf | 24 ++ 5 files changed, 499 insertions(+), 2 deletions(-) create mode 100644 assets/controllers/backup_restore_controller.js diff --git a/assets/controllers/backup_restore_controller.js b/assets/controllers/backup_restore_controller.js new file mode 100644 index 00000000..85ee327b --- /dev/null +++ b/assets/controllers/backup_restore_controller.js @@ -0,0 +1,55 @@ +/* + * This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony). + * + * Copyright (C) 2019 - 2025 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'; + +/** + * Stimulus controller for backup restore confirmation dialogs. + * Shows a confirmation dialog with backup details before allowing restore. + */ +export default class extends Controller { + static values = { + filename: { type: String, default: '' }, + date: { type: String, default: '' }, + confirmTitle: { type: String, default: 'Restore Backup' }, + confirmMessage: { type: String, default: 'Are you sure you want to restore from this backup?' }, + confirmWarning: { type: String, default: 'This will overwrite your current database. This action cannot be undone!' }, + }; + + connect() { + this.element.addEventListener('submit', this.handleSubmit.bind(this)); + } + + handleSubmit(event) { + // Always prevent default first + event.preventDefault(); + + // Build confirmation message + const message = this.confirmTitleValue + '\n\n' + + 'Backup: ' + this.filenameValue + '\n' + + 'Date: ' + this.dateValue + '\n\n' + + this.confirmMessageValue + '\n\n' + + '⚠️ ' + this.confirmWarningValue; + + // Only submit if user confirms + if (confirm(message)) { + this.element.submit(); + } + } +} diff --git a/src/Controller/UpdateManagerController.php b/src/Controller/UpdateManagerController.php index 10a719de..8455516a 100644 --- a/src/Controller/UpdateManagerController.php +++ b/src/Controller/UpdateManagerController.php @@ -265,4 +265,75 @@ class UpdateManagerController extends AbstractController 'is_maintenance' => $this->updateExecutor->isMaintenanceMode(), ]); } + + /** + * Get backup details for restore confirmation. + */ + #[Route('/backup/{filename}', name: 'admin_update_manager_backup_details', methods: ['GET'])] + public function backupDetails(string $filename): JsonResponse + { + $this->denyAccessUnlessGranted('@system.manage_updates'); + + $details = $this->updateExecutor->getBackupDetails($filename); + + if (!$details) { + return $this->json(['error' => 'Backup not found'], 404); + } + + return $this->json($details); + } + + /** + * Restore from a backup. + */ + #[Route('/restore', name: 'admin_update_manager_restore', methods: ['POST'])] + public function restore(Request $request): Response + { + $this->denyAccessUnlessGranted('@system.manage_updates'); + + // Validate CSRF token + if (!$this->isCsrfTokenValid('update_manager_restore', $request->request->get('_token'))) { + $this->addFlash('error', 'Invalid CSRF token.'); + return $this->redirectToRoute('admin_update_manager'); + } + + // Check if already locked + if ($this->updateExecutor->isLocked()) { + $this->addFlash('error', 'An update or restore is already in progress.'); + return $this->redirectToRoute('admin_update_manager'); + } + + $filename = $request->request->get('filename'); + $restoreDatabase = $request->request->getBoolean('restore_database', true); + $restoreConfig = $request->request->getBoolean('restore_config', false); + $restoreAttachments = $request->request->getBoolean('restore_attachments', false); + + if (!$filename) { + $this->addFlash('error', 'No backup file specified.'); + return $this->redirectToRoute('admin_update_manager'); + } + + // Verify the backup exists + $backupDetails = $this->updateExecutor->getBackupDetails($filename); + if (!$backupDetails) { + $this->addFlash('error', 'Backup file not found.'); + return $this->redirectToRoute('admin_update_manager'); + } + + // Execute restore (this is a synchronous operation for now - could be made async later) + $result = $this->updateExecutor->restoreBackup( + $filename, + $restoreDatabase, + $restoreConfig, + $restoreAttachments + ); + + if ($result['success']) { + $this->addFlash('success', 'Backup restored successfully.'); + } else { + $this->addFlash('error', 'Restore failed: ' . ($result['error'] ?? 'Unknown error')); + } + + return $this->redirectToRoute('admin_update_manager'); + } } diff --git a/src/Services/System/UpdateExecutor.php b/src/Services/System/UpdateExecutor.php index 7bc997f7..837cde4c 100644 --- a/src/Services/System/UpdateExecutor.php +++ b/src/Services/System/UpdateExecutor.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace App\Services\System; +use Doctrine\ORM\EntityManagerInterface; use Psr\Log\LoggerInterface; use Shivas\VersioningBundle\Service\VersionManagerInterface; use Symfony\Component\DependencyInjection\Attribute\Autowire; @@ -51,7 +52,8 @@ class UpdateExecutor public function __construct(#[Autowire(param: 'kernel.project_dir')] private readonly string $project_dir, private readonly LoggerInterface $logger, private readonly Filesystem $filesystem, private readonly InstallationTypeDetector $installationTypeDetector, - private readonly VersionManagerInterface $versionManager) + private readonly VersionManagerInterface $versionManager, + private readonly EntityManagerInterface $entityManager) { } @@ -628,6 +630,330 @@ class UpdateExecutor return $backups; } + /** + * Get details about a specific backup file. + * + * @param string $filename The backup filename + * @return array|null Backup details or null if not found + */ + public function getBackupDetails(string $filename): ?array + { + $backupDir = $this->project_dir . '/' . self::BACKUP_DIR; + $backupPath = $backupDir . '/' . basename($filename); + + if (!file_exists($backupPath) || !str_ends_with($backupPath, '.zip')) { + return null; + } + + // Parse version info from filename: pre-update-v2.5.1-to-v2.5.0-2024-01-30-185400.zip + $info = [ + 'file' => basename($backupPath), + 'path' => $backupPath, + 'date' => filemtime($backupPath), + 'size' => filesize($backupPath), + 'from_version' => null, + 'to_version' => null, + ]; + + if (preg_match('/pre-update-v([\d.]+)-to-v?([\d.]+)-/', $filename, $matches)) { + $info['from_version'] = $matches[1]; + $info['to_version'] = $matches[2]; + } + + // Check what the backup contains by reading the ZIP + try { + $zip = new \ZipArchive(); + if ($zip->open($backupPath) === true) { + $info['contains_database'] = $zip->locateName('database.sql') !== false || $zip->locateName('var/app.db') !== false; + $info['contains_config'] = $zip->locateName('.env.local') !== false || $zip->locateName('config/parameters.yaml') !== false; + $info['contains_attachments'] = $zip->locateName('public/media/') !== false || $zip->locateName('uploads/') !== false; + $zip->close(); + } + } catch (\Exception $e) { + $this->logger->warning('Could not read backup ZIP contents', ['error' => $e->getMessage()]); + } + + return $info; + } + + /** + * Restore from a backup file. + * + * @param string $filename The backup filename to restore + * @param bool $restoreDatabase Whether to restore the database + * @param bool $restoreConfig Whether to restore config files + * @param bool $restoreAttachments Whether to restore attachments + * @param callable|null $onProgress Callback for progress updates + * @return array{success: bool, steps: array, error: ?string} + */ + public function restoreBackup( + string $filename, + bool $restoreDatabase = true, + bool $restoreConfig = false, + bool $restoreAttachments = false, + ?callable $onProgress = null + ): array { + $this->steps = []; + $startTime = microtime(true); + + $log = function (string $step, string $message, bool $success, ?float $duration = null) use ($onProgress): void { + $entry = [ + 'step' => $step, + 'message' => $message, + 'success' => $success, + 'timestamp' => (new \DateTime())->format('c'), + 'duration' => $duration, + ]; + $this->steps[] = $entry; + $this->logger->info('[Restore] ' . $step . ': ' . $message, ['success' => $success]); + + if ($onProgress) { + $onProgress($entry); + } + }; + + try { + // Validate backup file + $backupDir = $this->project_dir . '/' . self::BACKUP_DIR; + $backupPath = $backupDir . '/' . basename($filename); + + if (!file_exists($backupPath)) { + throw new \RuntimeException('Backup file not found: ' . $filename); + } + + $stepStart = microtime(true); + + // Step 1: Acquire lock + $this->acquireLock('restore'); + $log('lock', 'Acquired exclusive restore lock', true, microtime(true) - $stepStart); + + // Step 2: Enable maintenance mode + $stepStart = microtime(true); + $this->enableMaintenanceMode('Restoring from backup...'); + $log('maintenance', 'Enabled maintenance mode', true, microtime(true) - $stepStart); + + // Step 3: Extract backup to temp directory + $stepStart = microtime(true); + $tempDir = sys_get_temp_dir() . '/partdb_restore_' . uniqid(); + $this->filesystem->mkdir($tempDir); + + $zip = new \ZipArchive(); + if ($zip->open($backupPath) !== true) { + throw new \RuntimeException('Could not open backup ZIP file'); + } + $zip->extractTo($tempDir); + $zip->close(); + $log('extract', 'Extracted backup to temporary directory', true, microtime(true) - $stepStart); + + // Step 4: Restore database if requested and present + if ($restoreDatabase) { + $stepStart = microtime(true); + $this->restoreDatabaseFromBackup($tempDir); + $log('database', 'Restored database', true, microtime(true) - $stepStart); + } + + // Step 5: Restore config files if requested and present + if ($restoreConfig) { + $stepStart = microtime(true); + $this->restoreConfigFromBackup($tempDir); + $log('config', 'Restored configuration files', true, microtime(true) - $stepStart); + } + + // Step 6: Restore attachments if requested and present + if ($restoreAttachments) { + $stepStart = microtime(true); + $this->restoreAttachmentsFromBackup($tempDir); + $log('attachments', 'Restored attachments', true, microtime(true) - $stepStart); + } + + // Step 7: Clean up temp directory + $stepStart = microtime(true); + $this->filesystem->remove($tempDir); + $log('cleanup', 'Cleaned up temporary files', true, microtime(true) - $stepStart); + + // Step 8: Clear cache + $stepStart = microtime(true); + $this->runCommand(['php', 'bin/console', 'cache:clear', '--no-warmup'], 'Clear cache'); + $log('cache_clear', 'Cleared application cache', true, microtime(true) - $stepStart); + + // Step 9: Warm up cache + $stepStart = microtime(true); + $this->runCommand(['php', 'bin/console', 'cache:warmup'], 'Warm up cache'); + $log('cache_warmup', 'Warmed up application cache', true, microtime(true) - $stepStart); + + // Step 10: Disable maintenance mode + $stepStart = microtime(true); + $this->disableMaintenanceMode(); + $log('maintenance_off', 'Disabled maintenance mode', true, microtime(true) - $stepStart); + + // Step 11: Release lock + $this->releaseLock(); + + $totalDuration = microtime(true) - $startTime; + $log('complete', sprintf('Restore completed successfully in %.1f seconds', $totalDuration), true, microtime(true) - $stepStart); + + return [ + 'success' => true, + 'steps' => $this->steps, + 'error' => null, + ]; + + } catch (\Throwable $e) { + $this->logger->error('Restore failed: ' . $e->getMessage(), [ + 'exception' => $e, + 'file' => $filename, + ]); + + // Try to clean up + try { + $this->disableMaintenanceMode(); + $this->releaseLock(); + if (isset($tempDir) && is_dir($tempDir)) { + $this->filesystem->remove($tempDir); + } + } catch (\Throwable $cleanupError) { + $this->logger->error('Cleanup after failed restore also failed', ['error' => $cleanupError->getMessage()]); + } + + return [ + 'success' => false, + 'steps' => $this->steps, + 'error' => $e->getMessage(), + ]; + } + } + + /** + * Restore database from backup. + */ + private function restoreDatabaseFromBackup(string $tempDir): void + { + // Check for SQL dump (MySQL/PostgreSQL) + $sqlFile = $tempDir . '/database.sql'; + if (file_exists($sqlFile)) { + // Import SQL using mysql/psql command directly + // First, get database connection params from Doctrine + $connection = $this->entityManager->getConnection(); + $params = $connection->getParams(); + $platform = $connection->getDatabasePlatform(); + + if ($platform instanceof \Doctrine\DBAL\Platforms\AbstractMySQLPlatform) { + // Use mysql command to import - need to use shell to handle input redirection + $mysqlCmd = 'mysql'; + if (isset($params['host'])) { + $mysqlCmd .= ' -h ' . escapeshellarg($params['host']); + } + if (isset($params['port'])) { + $mysqlCmd .= ' -P ' . escapeshellarg((string)$params['port']); + } + if (isset($params['user'])) { + $mysqlCmd .= ' -u ' . escapeshellarg($params['user']); + } + if (isset($params['password']) && $params['password']) { + $mysqlCmd .= ' -p' . escapeshellarg($params['password']); + } + if (isset($params['dbname'])) { + $mysqlCmd .= ' ' . escapeshellarg($params['dbname']); + } + $mysqlCmd .= ' < ' . escapeshellarg($sqlFile); + + // Execute using shell + $process = Process::fromShellCommandline($mysqlCmd, $this->project_dir, null, null, 300); + $process->run(); + + if (!$process->isSuccessful()) { + throw new \RuntimeException('MySQL import failed: ' . $process->getErrorOutput()); + } + } elseif ($platform instanceof \Doctrine\DBAL\Platforms\PostgreSQLPlatform) { + // Use psql command to import + $psqlCmd = 'psql'; + if (isset($params['host'])) { + $psqlCmd .= ' -h ' . escapeshellarg($params['host']); + } + if (isset($params['port'])) { + $psqlCmd .= ' -p ' . escapeshellarg((string)$params['port']); + } + if (isset($params['user'])) { + $psqlCmd .= ' -U ' . escapeshellarg($params['user']); + } + if (isset($params['dbname'])) { + $psqlCmd .= ' -d ' . escapeshellarg($params['dbname']); + } + $psqlCmd .= ' -f ' . escapeshellarg($sqlFile); + + // Set PGPASSWORD environment variable if password is provided + $env = null; + if (isset($params['password']) && $params['password']) { + $env = ['PGPASSWORD' => $params['password']]; + } + + // Execute using shell + $process = Process::fromShellCommandline($psqlCmd, $this->project_dir, $env, null, 300); + $process->run(); + + if (!$process->isSuccessful()) { + throw new \RuntimeException('PostgreSQL import failed: ' . $process->getErrorOutput()); + } + } else { + throw new \RuntimeException('Unsupported database platform for restore'); + } + + return; + } + + // Check for SQLite database file + $sqliteFile = $tempDir . '/var/app.db'; + if (file_exists($sqliteFile)) { + $targetDb = $this->project_dir . '/var/app.db'; + $this->filesystem->copy($sqliteFile, $targetDb, true); + return; + } + + $this->logger->warning('No database found in backup'); + } + + /** + * Restore config files from backup. + */ + private function restoreConfigFromBackup(string $tempDir): void + { + // Restore .env.local + $envLocal = $tempDir . '/.env.local'; + if (file_exists($envLocal)) { + $this->filesystem->copy($envLocal, $this->project_dir . '/.env.local', true); + } + + // Restore config/parameters.yaml + $parametersYaml = $tempDir . '/config/parameters.yaml'; + if (file_exists($parametersYaml)) { + $this->filesystem->copy($parametersYaml, $this->project_dir . '/config/parameters.yaml', true); + } + + // Restore config/banner.md + $bannerMd = $tempDir . '/config/banner.md'; + if (file_exists($bannerMd)) { + $this->filesystem->copy($bannerMd, $this->project_dir . '/config/banner.md', true); + } + } + + /** + * Restore attachments from backup. + */ + private function restoreAttachmentsFromBackup(string $tempDir): void + { + // Restore public/media + $publicMedia = $tempDir . '/public/media'; + if (is_dir($publicMedia)) { + $this->filesystem->mirror($publicMedia, $this->project_dir . '/public/media', null, ['override' => true]); + } + + // Restore uploads + $uploads = $tempDir . '/uploads'; + if (is_dir($uploads)) { + $this->filesystem->mirror($uploads, $this->project_dir . '/uploads', null, ['override' => true]); + } + } + /** * Get the path to the progress file. */ diff --git a/templates/admin/update_manager/index.html.twig b/templates/admin/update_manager/index.html.twig index 1ab6c89e..85b3ec1f 100644 --- a/templates/admin/update_manager/index.html.twig +++ b/templates/admin/update_manager/index.html.twig @@ -342,6 +342,7 @@ {% trans %}update_manager.date{% endtrans %} {% trans %}update_manager.file{% endtrans %} {% trans %}update_manager.size{% endtrans %} + @@ -354,10 +355,30 @@ {{ (backup.size / 1024 / 1024)|number_format(1) }} MB + + {% if status.can_auto_update and validation.valid %} + + + + + + + {% endif %} + {% else %} - + {% trans %}update_manager.no_backups_found{% endtrans %} diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 592590a8..39b869b0 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -14994,5 +14994,29 @@ Buerklin-API Authentication server: WARNING: This version does not include the Update Manager. After downgrading, you will need to update manually using the command line (git checkout, composer install, etc.).
    + + + update_manager.restore_backup + Restore backup + + + + + update_manager.restore_confirm_title + Restore from Backup + + + + + update_manager.restore_confirm_message + Are you sure you want to restore your database from this backup? + + + + + update_manager.restore_confirm_warning + WARNING: This will overwrite your current database with the backup data. This action cannot be undone! Make sure you have a current backup before proceeding. + + From fa4ae6345c942126cb2b4131fb3e39562e317459 Mon Sep 17 00:00:00 2001 From: Sebastian Almberg <83243306+Sebbeben@users.noreply.github.com> Date: Fri, 30 Jan 2026 23:36:08 +0100 Subject: [PATCH 155/235] Add Update Manager screenshot for PR --- docs/screenshots/update-manager-interface.png | Bin 0 -> 145063 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/screenshots/update-manager-interface.png diff --git a/docs/screenshots/update-manager-interface.png b/docs/screenshots/update-manager-interface.png new file mode 100644 index 0000000000000000000000000000000000000000..62b35ffd0a8e731aef38995c83a23b4f046dc470 GIT binary patch literal 145063 zcmb@ucT`hZ7dITo!dSquAOli#6r>1@(xjt+2uLrXqauXf15!e;q9~wLAwcMzASToR zQBaW@dJHWfB|spd20}>qF7v4KJn#C}`~CA}EmqdOIrrRq_u1vQe|sNZ7#r$v9^pFz z0)aSnZ)ur=Kpb!o=zzlShk!F%&3TW2uYCcgIyXS5ZvJ`T-~i;h!F3R*GVbWk-GjjK zVc%QU0U!`p%iiC`j->iP2k_?A_9 zg8TQd=l4I@zx_JYxNyg*%kkHt*yWwmRo?wKC2cT?T`n@%eFImcTC$y5qXXB!o|qxC z+=FuYeuwY-F-QJsPx_UTHy58yGx@@1|b~B zOMn5he;jze%=7aJWv%Z{78Vs1-KyiDr`m%SjHwS{;^N|_R$F2&Jilpd9sM~lt!&6^ zc#g22+2sPd^s$12UJ6CXyU6_SkTa4t3v;~}Tx22>CV+4E-kf~mE6~64i4^H@L05i} zHa5D(&qefKp?(-&HqXgkP zAUr$v3U{y zMKP2z6rVTy@#B%hZcafzR|h1k)Oz8Wn6#P&^VAS!;_LBnHtZtZFyLBb=yW=IN^aih z)cW${O^C>pF)RqNF+tG=;T<9ytVEd4#B4Z&~rJ%WUh%T2PriGPNQ9ez& zza_5wD)#5IfEKjO<6ONu?I7~tkvHFzp%-Tj<&?KyrU_Z)XEkRWQF?Fo`Gh94f%SJ1 zM$MormYwtN)rx!2I!{1ARvYD%g0Z44x@%U+&!EqhlUK#~`t_zY$R>590^Yd&jJ`NV z>30wsytX4Cn}uV`Q%s<$@~;jJKFU|q_(Ro-6PPBE`{QdwOO^Lr`p=>U0s7Kl8@KWK1$nez{L|C5+YyG#U7`NQru` zce_Boh4g4&T**61l6xjrZ<2Sa(|hk_we3%-PWobvq~)VP2IFl<;LO&I{G49zW(DLl@q(56@Q8zUe+#LrRSjo2vJSKiwyy zg@m!6UX@W0-JG~yRqeVujw&$^G|?V~ ze#SY-`hvr3-%-<-b%cTUk=hyaflksQN+0e&G*?<7)0u4$%dBH8 zeLd0M(Lq3sVPV^?cCdUDR;0~G=s&WLOqhCfRH`Q(*EM9Iz;Yls24|pfRHcmI@sMpA zeAk1kTxMkjQXFQUXj#Fww5{=$!y2XOOE+psrYR7B^(|KoqrV-Cxw$2_gn>JD36WNw z-&Go=HTgew)IB1umN#2hdO9$$FuLBMxNpdQ;2y1Y_TA0914Sl$>JbfT3O=Z^vdieR zqTr~nhV9IaEMj;wr=W`QmEK-w7nWXpmq^lS9)jCVu)QiHgv`A%258T7&^|Hs4(q=;=tRNkYXw-cJMS`#3D|>&3l$erMC44G6tPCR&fqy#;*-7zyq2T z*PqnQ-N449noLO*%%=+wze&G6?Nq}p@(0k{j_J4m@a0$o_7?GR`+=ca@ z?w1%|{1I&Uo}BfrbqEHm0*~9ek>dCUxc#kxUDcIf0V&bHqvXZ*b8roG6id(drp9ey zb^-qaU8`M*2_5qB6903n=%QHQ*nSru+~4 z$R+QJzM_#dxK%|yjRnRxF2^^qyvt{Pe`vkUzB(h=X+iGJ7*IzciS`wq-QzjfT@?!? zd?kOlN?AL%;{i`G~Ha7VIa7wS}jj(H+o=vZN&GSL34cB?3%;Fs<+?dk|MzTxNn~YccOLFrz+}x|C)GZuZ zYq|;`odxc^a_)&=Vg*X8JP7Wq(`{)gA@9c@OmT|%@7p(A7myMit0-e+=2om3wz;H$ zpycyaFv1x5DRU3!`%jOS`9lTDaEx^xf@F&fyw3E@E@!jr&kp>JaOl!+wr+X|xM% zc2QD~9~NVTP^VUf;q1|tHRJ3{XxsQex8~3FyG_MP=Dt=5g$4v*h8ge8))fVhX0ICe z8G@rnpQ>3nJs@W^sN)(Cvn*(Nl7qn>?Z;>LJU};JPyso@Vf=h!m1`y7cRW^AgNw}y zV>6q4EMb(x3DWgFs5QI*ibh~%UEj|EpprB3d1Ymus=N2xlUl!8JYtl5>QH431-#B{ z+Z>(Y9Vs?zy*dJpV!qwe_7h9PNg=2&z};_d`N2ekh)fHQd0|= zaqSZOGGKq!sf3FKU<^bk{`9G-^lV%6z_Lyct6s`?HCh+ZcA&z?M^~O8O0#{+*r~U7 z-7N=P+(9)jZwa++Es4If5XQ;>xG~vdaoyosg~*7|d=HA6(%K15KH0AUyDi)j;lE84 zA|0}dyvKIvB;S?|y@u~cSj#P;8Gc{>5Kxa84QS9!5Lw7MD!uL*Jn>;4i*yQ3czy!c z%OGbI?%5u$apE_lDucCJ_FHlq8ir-B7rw}3Qa7ILCL|X~oH{jFUlkzPLBs7j9PfN! ztT5`^_~n)0l43y>ZN4z0wVGN{(poxKd5r&>F}!J0u*!$z;BRo*w&DH@hp;6mKB7Hf z3`$torl4dH!nzf>m1lsO8ldY;t14${fGcf(X=E{1&oQvTLwiyZoe0D_4xNZBd29TD z=NxM8&zzfE^_~0;-je!`3Y3hFKKX(ncF(H{s%j znyMvEao4WO>ugC+k8#(72L)94GJvLq`c|e|2TPpwtK9m(pua31Pd%Hs(k0%(%OE>o zg9+5J&`s4{4{gu(;W7y+oVmbo4FQM*8*2py&ecZ`yX7Lh8w?d3;N`J`swIU;n1kX- z4Faolesy(iurSz%lUG)w>k)#%dfc>>?6*LuiBn^*!)>;9UJk#9BI+}PO5`Cvy*=5G zy}%QbL!+z1+(gK}*{V@}^vA|vK00gD0?{mj>ZA-uoFwM!yNnjQu4X3j6iwQ?F z2cy@G0*88J4?e@6?(YNjqBN{1qT*eca0?a)O!K!;qi6iVP;hn zVDAo-l)k-N#4Qx`nMMhQcvf5H!OOVkg-RiDg6>0?ttuL}>-&;5 zuU<7Jg|EeU*G`7Y9rs2Z4jwI57=K_UpcJ_LBwc-H`SBqxegFb7OAQe6X>v>-o8|TX z;d*GPUqnVcNW!CMTqgf|#ijH81)S^X6TMPs*__-CCuhtkQQ2>@! z#V#x6cc$fMWu1%Rzj9;$_9h|0NG)FoK3eqg@gcYV0)y=-uNsOI`0t4M{FGbq5Y=go zSa7dX$nr;CrHGwc?;Vyw=v0gXG<0!ZX^V0lR}tmL+TMuI+qeJF76z=aWg%J4upQo( z<%TwzevFbY3GtrcePl=36@1ZX))l*BnhS+TaS4?%Xsiv)a8UF2J?VanhS6$$Nff&mQ2TAK8+EQUE*ng<6ozh9hZ@OuOs;;rU5hCF=Va<yYJycy@Xb|7zxcL}jxiCy4 z6i+Ol*mxdYvidd~a;&!kH_J#YWS^HYE4QgK$IPhbG&E@1FkxL0jTV`}v^E<{HQdQ? z)S^nw?6l~$+ElwwoA3%=lukQ4muZJAhE$O3} zn%d0))=shO985JmalP*CR{)HjH1fo zvGaWxN?$DI7J^M%lj&6i2ST?!cA(Hm2+vB5Qz8T<E~C8uO&Ey*{7zaE(}+d0@gdn3x1;!2Of9gz2=*BV;Ix> zanugKl^UmJlW&dl_GwrtaDY#7;#p}2a8<%{MKXb$_gUl3{ploO4)W0D-wlk6z<2Lv z?_oHT+?%Om@ebQfklO*XYT2K6*>OOg?7?-^%6{h3AQ#**Y)X>F zRB!TNTSkR-ky0E(3_OM+e1e$V0E9#f!fsIr;kg)LpLrnWU9vTP?Z6;VLeFm?VZdp$h{h0WMwZqkFjXi1$z@#P06hyHB&-3}Cf? z+3(p;*2DdP|NQ6@oKLQU@9sOu!65-?>gV-n%eC2$!^=}Qxp`7VfioFE5_&^Z6C-!2 zb+jr@^GiSy5?RsQ{1=kAWf5Xer)}=GJSp+TJltwA-oD`eb#fSOCDAlU8St}DX~Vo)HFf7 z7oh9gbSzEQwdY(TYY0(4@!PJmvBVTtBt>&sLU)fn0Ww$f;d+1sLG{UZS6bL#s8vD8 zd-Yw2Q^{Fe^t694`7})i5^Gee6gX!Lo$u4$i)Zq6;w4g!O?J#p8aPg{TUWCbTrsr6 zSW_MG9B;5bc<`We#K1ehshfDUXMle%DiSSsXdE^h3IRe&nmW7*^6Fx_J$6W@Ke#JR zPFz%UnV+Y~Cv;QI9xUvDQXlt6?|D0s@enLZK-q@;37MZPX`9xv-;xLL%q=9qah7uk zMcfw3hvxvvE*je|?=xODFC*9o5H8L^Nu@<|Z~N34xA)X3xoOi;a;NoWy?+3+tzNo2>{ zg9@ch7B$}XtY?S#vqaR6nQ*6OgAP%)c6gMY#1QaTFCOSFPfRWZO|DY zk21S^_l?w_D`(OACDST6TeKyPomNOSG0EiZI2$oq1Y^<_M?&ewets|Bvl2;MTK0`n zRR7-pI8P1O#)nrN8Ld@^8cMjI?L~8+j5Po~DanoG+Km-upDcZ}FA%C4TJsV`fh05SGduRT* zKMO8g2`&ktmWZdkK)njHtWZ9%2h%SW1K!Ggup~*UVfjWELIEE@87NM`(}A-VdV0~b zU5LWNr$j_mR7MMNfc-KUj7%ngg?tVF=#YZUfA}g+rsP$E+rw@~k_O9&Od}w-K;(XH?eG0k+Pth6{kqWMqgQ9CoMv&~d&Z zfCYnXj@iK0S1tjNrb3PBF9E&QS#X3k_1WA2K5-s7Ql_|uQ44sih_QnJP>O45!~;Lx zxEBjuYT|%Y4nvI+8Yr=l(AGgVIDV>yOa#sKj6(`a=3kwE3~d*iR1?lNN(AIl?9>_? zJP)h*+XoOiv}Gu@mAyXSufqgfR-!NJwm}>jzh6f1AL6C>(drQA3+1npN|Ke$pl^JC z)DX?F`UdUXzd`Qb7Zn%R(~MHORK|Vg%tDO9_;MmNh&0=odck^#X^#ymFANWG$n?qF zFKe0c*9AEMJ^{;VVf?ylk^Va%XcHbsD~Wx}FU*&gH{+&uvwFb{6yq#Ef7wvE4P}pA z+W1E481=4oYhZ6OQrw+W&n!8tZPIO9DV;LnNCO*go?$q^`Ej@g(9hU!GX3@#19sph za>H;qOfD_oGijyET@tp7Q>y`B1vrH6TQQfpx9)O2<8}aVshw0)s;@u_%*FHJ;$_cC z89sfg-43ufw4t&=`jT?sUXJ5;r7>rt@GyKpZ1S$N9;YKfT{*WOB|IxvR6N4zmP?A| zpLA1p`g&(9gee63GRPgwAXCS3!~a>k&hhsadr%3;8rKqo$8o!nK(rfZ3`_Kv^bk(G zBqB15ruyElaOG59yN&mltvC>9;g~Y|m}9WSLLa{kl#BL08k#aw4>`hzwvzHDTcX0+ zdEu*Vm-a{#AVXC_rWR3`xcIMSUC@awGP|Ew=+pVO*STE{p~jd#^^e&u9prfstL{6Y z(Zv`cl{Czv=J!BS6N{Pj;4^n-fB*ne0BV7T@!5?)`ql#gXS>A!x5@9(m-ixiVaVXD zf_I`_{@de1ia9|yUpSTmc>hhB8g;vj*z0(@p1M!B@6B7~Bpzf*b3bYT$lJx;U}*u> zK8qPj*H-uAhd*c+3iE{(3s8yGfLZsjS z%!7QL`OR&P2J@DWwYGpCW27QGE2 z@9HxxHo?kL5R6|R%K6+roW7KrYL`K9UfQIXTUq6Kw8jpxHVsOB56S#TMT~{2Jc&7-p-u6D z02yjimG;|P*xEx8QY@{x)A6M;P)y3q1XpbKHc{He54DB z`yk^o)1I{8zff$m?VSeUyl-X^2TuL^H8wMV0R)V>HR+~h#gu3NXiM@H2e0>;y?aUm zFtw}S&7i*1901QV2xyS%c|SxM#QfWa9`~^a1EU5S-gPr)ka7_-M~Fv(BqwCe1po{- zIQDkwq2q#!sfRtsyaDJSe);lx>XuW@NJk<}es6%Hq9UJCU=ew%va&Kw)-C>?lT+8E zM&m#^#Vwjj)Rebn$V3<{HMhv!|9TExH~#K3r{Ec@MyD1agJIay`>Y!Ke$Jqeo-ie z{$N$tHC+n48(BuPsP(UoLOm8QQaqTk0^4_4hxUjbx>QA0^a`1HjJ;9Oy| zhYrel6ad_ZS>e}P(7B%L@tP92?jB7Uvv562<_IdxTw!CeSJP`4GX!>o%#9as4tAtA zU#q(ps!d7Dy8@(G$V~W^!NtAmH1O#;V2~zjLPiE>X4-GrCF!du$eF0-R9!)DpAQci zMZ;cRcqU%tTX?aUv5&@w6D~J0Ga+aRyr?rP58BbmR=)<}ff7nKSP5%#QWtTy!Vuh=uS@Ql9z_JCrrKsqmn{e)oMqN^(O& z0p&~Vn>_I-++Irl2B((A_VYV(>00MAQ@p}clN6`E{8mF+|vG8F8-jkWm|WOn{D}24#b83lYIEu!-6uY7ScFC z4E7Cz#V?nY1E4wn`$-sj+qN;GdSJ1H$6a^_8V2A;DBZeck9$0+<2Y4^3#RSiMX-IE zZzZbfYHxu06k>2z3S@q2Qu;ru20AtAGh^toB>@K64c8z2C_Q1CGU?-Fz9a`PZEo!T zxbpp;OX;ur{GVw8tfvz^8s%{2fUIF~ z@sa*NwJwq%n)icl-}(0ms}ZWM^10FORf|9T&|a|ef8U|De_5MIPE*WwM*ded8v6ME zhbp+NHCL3TJfh3o2aHyEmP(sm!Kk0BnLxabOe#|lVXMVtWrTXOHY zFQDqLRfwV8k>7vqu%R32I$*U|{*NI*4?_u%Vu%v7UI+UBXc+jA>^mb@ z#`x9W0JN;6m+RaXisI*b1Nv382Whn2UweX!zZi8Z^4}H8dRVEr8z=lpWd#sR{^Yr?>m4((_KEA zb^RUDbC0p@vc(vqT^f9TzFXv%{F{?LzUVs#4-UHWfQ-qH9;J!ZD*iGykgHt@a&*}9 z01m`gwpRr`_4AQ59$T{3hbCXgEc0mWcSaLCMSlJgc_?Q6%+G_pt`1xLwB9N8Ewh#Lr6(6s*@iI?gIf#wM3;B%7ma^xgvE z+$ZYRZ-C>1>$fVgERP&XHW*~Hj{UqOGRlBUOw?-cr@bMtap5Q>-`boqbVJlrjovypjy-y>aihuS(xC*ooTdtM8KMrBoh@YX^9Ot!DS4r@(&lcnUlF{bxIIj_d0DUa5rmX-Ef1_P^pw~=_@rwn~>K&^&I zp5lZTNCx6T!S=ITVRUmjOnOmiu7U^3*)F%Mb(W5v-K8x^ zpRDtT>$Li2X;i|YSN(`M`+3z*_C_AX60bMPl+(xb!HfglhX1S|sj7d0r`+STzNU|E ze?o9-ZrFURM?M6oug`$Dp0!veA#?L@S37qKI;qD80@XS9d8}K655YdTT(N<#+w8ur z8zfe4j+Nv6_`e#Ml9W~^eLkF-qf%VvWb`}qh06NxR+-gk>F27ykb##`) zq4cPhBfP%ZGAct!+Z086=vI_DGPM>t25*!xuGUL0ep#QKF+&kN3+uie^Dg%In~3oK z&C!mcKE)slt>=l2y{00{UeBm>8OkP*W)4t%8t%$dHWbEt&iXXC$%9*XhQn?xoP;J3 z@A@T)B!f?GFJL>wcwm|Azo$$L8k`$kROm%Uy5uKe4O3=T62_%RU9NqU`W10pkX}a{ zCAq*BActuBXM=B@Z!e-N48yk&)jDApp$qrLuy$`g zrG~DJ$x5<-isfI-FYnnK?mT}zJvML}ec(N`ah!VMNblVlZ?yNkV?~g2hX#1g7bTDI zdM2Kc%g&9e2uQ&O(V2f*S@j)&&L(8hc4bOr`3-PKRNA*d#t@vPOvu7joJ5M(p z&WN|9B@9=gJFotLt$uYdyE+JOT&OPcFP*73RW z#cCyzML~!$w%WAR)!s>LDcm4XqRM-ux2~-Y^}ah!wIs2%+ngsL#WG{K1Uh+sNp|FC zAOV5QOSqaH32BYz_d|7r(cli5?_~}p?fj#7I{&&^G;w(#uHEwacBXS?M-m_JQdnX% zU7^VcT$~=?!(Hr(oC#epN@KR%Ew(QdKQMP`eDiGZf@^8@!e8^u$5DB(@vB{#BP5dF zAzTV((A|hx!_9#W;|ihwa@e4Ae?w2Q#l4=P%J0w@0NY=mwvS&I@=_Nq_Hc{|4i@Pi z5ZK>-6St?D0+)1+%6k@C&hv$K^fxWNklDz)^uQqtzUymse*c%c*m>FSm6d$%g0scy zb$ZfFRHO3uN&?h^&|<@yJqB|TaOAd7YJCyfM-K5n*w3+fAfka!*$7_Ss@OsBGDb>` z^VaWn_ja!ijmtq+9Rw`=-Z5wJ?P7~XYqYxde%ZO?6*Z3ozg#kC89yXbUD4uMRw92s z+r>;6HQ-446D)s!kgIV@Y|ZnPVuN7-DUn+1oJ9{$EW#rFePm3Gn!>VkIy`B|5-Q$H zWqYi5a8DRkK537F-x@^om5S}>vQ(-bWoZNcnDR>FnqR^A2VV1$JXKV6JX7{^@Uu38B^A_VXcPKlv4{&KXD!VH0th1dBN zUbFjcCak5cy5AA&W0+Q8Qh8#nrdq2(E!l)q6=NqeMgi^Lr{rJz!Ly`?{ba+%Y-#RJ zzf-PPeR14r>b9=oWJRC)xa1&>;0-L$x5j{LmBZpm%Qb zWAZV-%P6NeF|y2Y%nD+3ef2rTTMBL2?-Jd2jeenx!IQVPY!#f5XP+ck+wf|b$;}V1 z0*z)$l<((e)KBE?TzZ_Su6#>6(=B${DbHX88R+FyCn?~@rSh>|F%J0EygK%wLFvw` z(#3S1iyUI=L>GDeq;DeSWfv{(AGXNx_` zmx?i0BMZJ3d=f=>9p6-jdWg-}pX*w>vz{`A4%Xuis#y!#6>O5Rs-8oT}e29SxhlQLE-k5GHc-anH@{Fe4ul^~bv>Xv$wzrxnXQQxz zK51hd_8GbSbd6bUZt;^e$fjcj&{wwJSlKNd zSwHZxpw+vk7)zAWt>Y3de|@AYD8=$4Tk}J-B1Y2jNN~zqdHt(rou7^gCydQJsZswU zZ^>v_Hm6Dk(*bpi}v?8GkfBPOnYC)WZsamx8lpwO5iKJ0xGCnUw#IQ1rgyEM~ z1Jd&e$~7w?4qdD*mBR4=Yo!q)ZXr}(;m1m4wWr+&veQcz9Ejv`ul~FUQwcPF>A9x1 z3qrqic2$TE{I!63*VLhDZT!)se13@D73K9*&(O|eips>(xIx8&k=*=+pcmg!hp(wP){w`Ay5pZx`_iQeZJH)S$V-A$bEdf9`u+g6^ru>sDo(e$U31 zjL8oW&8ipdKGH1Y%QsXUxnO5pBuJRWQ@FTa17SI~LtB6RwX)&}_LJXNJ`C zh||ls@CtVpx#l;QWYE-Fv_<<=fVh`Ik+p3-7S@`rf`>sO7telI4rC}n{-DVugcwP3 zuztK~&w)YF9Z4}Uc?2lyx~Q0%HO*08_-3k?VaNzS-*Sm2aw*`@N8VEY`bBjv-n!h2 z#TFQYmv~uQSWIoZt;=S?-%-@fP7Ub$WG3wLP~T*-w0d?=S6$jHr=jG|5yU9I z^%ml!vM%q;q4lAY{oQ|$O=li<2oED_pN;{T((4~mQ)yu2eR zb(bz3d8iPBF>eL-0CYh`8uE$XPmkjZEcWMjApPdh7F;pb5{;p`1~)(7jT`rKd0BzK z?EIpIitglsmg7Pb!aIb(ahfS4h@xSVK3z%kI^1J0G<@MQbQG&|2c2%D0x8N(OtHKE)7bM&U$2=E-OREz5HPlLgsCC^4p+pU#?q{?2N4^+sO!Az)$C4 z?%35#ioYiyA#U!s;&3QVAKE&CSqMc8kP7fV z7`N9*Vw%I?QSD0`HDaTpa65vC!DXNF;SW2Bw8HRr7uyQ943nO8#FPA7+?<1rm;4&h z4QmoZ8jVLH+Ba)xphl{lbnyHwNSpJnbEQ{(QK^h8%H|K6qs6Y__pVf;eHl76L#CAC z82PiSJjN`h*-=+qOsuyu=P!Wmu+rh;@tyh-W82s$pc)EPV4hy8oJL<%OiXsFW-JK! zn6V|34&wTZ)GheilOPeOO0}h1hysQL)9#tii|GZwvkD<*kA?F0J=ZFlIT74cYVIsqYSH>;JW$3E5}4%DSvKQXtjFY$n`2IA zYKJ>vWOcWGYSK*92)om9qK7)vH@q?9qj2SOHu5s%sF9gmyBc_scK=@Vm04ZH)p5T= zB*6;hj(dm-uV*Cdjvp2snf7ku)lx@I1<3dyu$=;7Fh~F*)6J1UGa<2t_$)%J$vk3% zt1DzM`*@d{x$E`!5~opludcYe0ukT-BW!T!7kD<$YkALhF{=YOn5<}bxgG6{3p?d! z6GRTpSE9JaXg;%YKW=&M&ci3Thn)%lP+PWo&7YT_42^*{2B?yeLnn5A@QWYX{@E~7 zGE*4tWI%o}U-+th$n7UgPZv#u9f}ms`IiDL@&L~Km>vX*6e+NDVOP74*%WGFz_$>_ zaz4Gyi-#f;sNX90bW@AtIKT1T$rEVoKm5m!>lSRz$-q7M+0};+n~o&1pNNy+uWY z)wKwVwKI~PE2qbsHRlfIKyIP!XU(91=2@LdT)$-_#!Mfl_f}z6J z*|tH&Sy1&DxU9vgZdrw2ZwiY1QhN6(POud-$qJlFd|+#n?gC!TKWMYH$~Pnb($v&> z-}2i!J$)l^J%v7M9`K<};k=x^+gkj;q5y$Jb00p#NeTmrsF4$oXQdSh|f%O$W8Ud|m|{6p%HzH*4wr+mg1|x>29nUjFZVTrH&TXui9I z*GDCApV#GUBqeeni8s1#27|)K55*CW+D;r~_cyTgGd4CnhM75m z9k5?A0lD7#K}wb^0Og9aGKADFwtZTTHar&mgh(~=eiok)pLDm{aqG1MmKJ`YbHl0Q zs&LbT+iO%K^UmI5s)>nZ_%WE7S<<+)8Qm`cR^x|AD_J)&K`9?>e;{wtmR5>Ue)gbw zwrnP7j9rVq91!o}`f>Q_xOM#yY`VMFH3&qU;|oNM6I!>xP`K! z6MpWbX3tG0$AY1xB1ajw=32H)N%CR2?{H90B zDD8PpRr6|!PmE7St*-}?7ssA=M+`9xOwFI1mT8xhf<5}KsX5qGn3uW4owimdF`Bf# z1y3@W*bc_i`-Z`du(Z+|f}S7wVjY$2nu;^7hlD+S#%1DPAL1|)m~~E17us;<$}iQ3 z+%5!^Yt#V!V67xAb!$~BUu z8oc=WFLmBE>QY2youYHW2*ui2|6~S#N9Hx{d7HdxE$rfMJXOyK9J+8iK;qZUKn7Zm zkHKdSN6I871m8Z0CAdyrn994-JrUgXy^al}f;KAJ9sZrf_quwz84}p~Qkd&QE>FMe zVf>4YvM!3p8-IUIZnzuqogAywpl?FIVRCgq|1@p9EqQ<6#Mz{)U&a&xE6`7MWTY;6 zRLw*l$?2}~gjlI)zo0v}iz^KLYwkVY1}D>SmmKCM*0@JPQ-;DV43|Cb{-b+T^Xdk2?Drb!sCmF;^Q^6%37zE_FamAE8vN}W>dw*)VM8j4+;{4|WLW8pKzlxlD1WqY@pDh)cP@zO~ zeAx8yS2gS(J%23895wz%&Zu~se*4jX(Uq4@Px_Q2a>#xCNz{7bR!`IR+Pc|u|BAWD z;t8(G8|7Uy;v7smStvTj|7%_lsOr`Kmau+O{@b582flPd_aZ^qV94%~K$DI3Cs9!n z7ccJZ7EAeOi!5-9f&D=7sx?-K0Q7MrrKCWD2#3{__invGda=FuhpYVct)p4GCEZML zme0GH!(3dJK!*f>tmzDSrZf+um7hNtA+fg(zP}wjNF2Ca1oYRo05yrdtqt5fJct&< z-~TfmXX}sYfVxqU)0;PMlp+@2a`As11geHj4SOcGPzkiU$MWz{K0MsNhh6`=aG~q` zrDI3|;J3(UQ}-i+-u<<6FjDEXpr8~YuVE+rpPGS&YD!9qbX)fFvM;)HXoa{plWXn5 zD*AEpO=o0os8*@Lt)jg!HU6gMU^_9*OCBuR(|3d&2s8;san0w^iIjbY}drtU%i z+!T~1cht1-tKo3H7lLR}y0r*g50dq)+900q@qF|i4>FGOlt1e@zIU3_3fO%K)Z~bE zl%M0E8^n)VKdZWXV`4!69f@Us`@ijk{;%D`|F0MJ+`?eL3#zUzQf$(zZ+9fudDHU6 zmdeQ+U&m5PGwSx9KT_nye_nZNueQu-pK^3Ps_@MGhO*SqJHe&Xea(G@vZpprp#ASm zf)_S0WGMM-ce3H$gBl$9&l=r~TL#A`<|SeR^Skt~Dqqw+W!j&VNv+TCN*d$816ZTw z{Ga5NzQn6vJUJpkP~LKmS;PLS%4`=SYsvcgRa_@wk+ddk2n(XDbzl}5VRoB0DQ`Y^ zU>?w2oy;StFb80pTHgh5>YhTlUfo*s{cbO3`?8J-sNVD~j# zSg}wkRr|wrN1ba%GHT$u^kTKgm*elpwOLqF|A>(czAc#wguDSU7l}xbd^D%Dx;;K*dfMW$lqaO2(dp=m9*=fapOys~2kLCXC5wD$Oy&t{1`wVSB8 zD=X0*T?0#J{ZIGD-8u8&a1cv2=0)|8+nQ2?+Y4&gN|=B=Ail9c#(?_Um?ZxQUVoH7 z(#ZJ6qs{93VanQrln7yO~cX?_AN#mi{4;K`GVs#~#DC-$D<=0T)DIJfIs!DFS_ zI>$ylm)zuLX!Xr>^*i>y6+~+5Bu%cBj5bt=5di^`)7Y=MMM*2i&ic7!8@VDbhP_H; zBnfYoKatVOlu*qqE-Si5vi@Xd)|j7bHYF+09p68$=HsdYpe4Kkv|EiXrl=}sF`t{0 zS9Bo15Zj@{q>>fE&-cPUCL|z(d8gp-o+7(2Z^x%^W2Cx-XWqt~k=#x{`;F(%O|=TQ z$6W3&kf4>PBkliCZbj34Xc zL(bOdZOOz}J=NIZs9AAHW!?3V0@uYmkmr}XHZrtTTu^;CwMD0_!Si#ROWZW;dyqHr zr|g&LPurhgBS9o5-kSK?Oo=NtiUvQYrlnj|RWqc|D4KR(B`&?tb4Uji_-sDBZWDc* zFKOX0Qj?=5nCdiYM~mGj>zg}RkwBas{3{6KfO9rJ=(rqc+DYrGUVSxmfgIF7NmK7R z>XLGtd>g#RvoR~ZIp#4uzTJRM9R5zsZ4^$SWt4xu86tM^V47*CSfik4uB4) zjFsFyZ~8UM7RD4eBR1KO#B#+r;jj(aFvF zopCbIm-Tr;xR{{Lt|{%Y$gpr3bXp7DVT5&_I5bs1(!f^Og?qkl{3^6gy1@@CE9-SlclSB`aOTU^Y33-e^MRM_i(g$uY4*Jcit#W-O zJKLSqKax}xo*s;(RlK?PJp&Dg1%jD9#-B-(nG8hMpCS0hJ4jqmzQ$rr0jSxHAg_UayIBB#V{-={$|ISCikW4ic8`ak6`@^}IS^RMs>1Z*_hB zhY#!Bsx^?VZJJ0ugC^RBE-`3>jK9{7B8)k)<;bD>*6>>U^N&%`i20Rn7+=EjBTIo~ zF8J;vzlM^cJ0#TFS%JG^oSTzD5S@dqjdJI2bg1S}JM@Ti_F?pJf3J$enZlvIw;#=h zJ5ES~6=v07_oy0F>DN-05JH_Io|W}%?97J%pcWE&C}#)HCD>i@R%3%t_{60po z?(XXw)$sZ9z`#LI$)@rY`3K3(A=gX)l0uyWHR&8pw!d5#oALT}mT=u;*{!J(F~*#$wyK?`VxRy-;}jVyQ;- zoZSo&CpYF0?``mB-s>fytwWQ5mlKBWi~>GjV)|O`Hm_>Jq{B#!hI$k86`MGpe^ZUfvG^u< z|NF(Rld4-YLB+P}xco}#w=h(w*X{?hor4v<5%^yPeFssI)y))UsZuHWNFsJ{WOu>~ zMV>4n@(p@nldX_OC;|`|dZt@Q#eUIk)-H!{X9y>tbJFuuc$#oG`BXllBTxYda}qON zLQB2{j6E}>C3e>#z7IEik+bO&_R#WxzKSyvkbB=?nS z)Jw^DLgh?k!9A>hhklSP#;j&e^z+*#wOBVio!0f`$iS)+cu3ksrOeU27B~0%;JcAB z=gwreK!uJ!ix-2cO1{Hz?-s)Zs6l=oW(Ldhi3Ju@N2}Ak)NM>o^vw!MI-aa+Se^>H za0|7y0$|y!^P)^*wmm5Ty2wzcq`n#(&SX4fSF-I`OMMRRlggdKJ%CfGOuil@m1LSN z9xhcxg@*7_d0P)lyADnQ7WdKS9x+5<$zkYo0Jf-;<8++EiEPuFm#|inWl%^apsJ)g zqmCM^AXX7utMlZ>fI)6K6V<+U7%-rl6}nNlCSl~*th+(1#~0dnF+GfQ!eyDq{Y>Wt zdTWfqt9ZQkQH5zySrG^NXS4Nz;opTr=zbr}=!&paa{FrMpRozAQgPPNYu$Q7SA`87 zrWYTm^jF!ZnSQx!>i_-flAy}RuuQiAR$|nlo(GqEpQ*YaIwqI4{bx4Yd*f`dgEmg% zIrrn6(n#AS_+#SKd_A_r&UnfVZ6!JQ}4u+^Q8x zDQkQTv;L($EjYknEdFuz)~1SI-1^S7G5MJ=d*6}I3p45r&PBAQa5{x<({WBYMX%US z7{jlo!(%FR|$}50?wz@pO;x|)s$?*SS>^-2G zTDP{**f$7vRH_vf5Ron&MMZii(p9AQ5_$+&w<4fOF9DPe2|`FHp{NK50fIn?0YVi5 zgwRQV5V$MoKIeSryZ`;~JBDLOvR2-*-ZJMipJy(knw*u^SBX$vBi|3$t0>6!xIZ>n zpT9Z5&z%vlMYm@tAQ@#KXWgOACCvthjKf=1rm>x@eDmo&bqh<3a3V{kc3KCzkU_G9 zH@MLP3W?Qyc6CYktE4`$^Ia*0*XC#YJRv;~#&L-u)2{}UQF}y1%K~nONjw+Wvh^$C zwI%w8<_ovAidzj?#Cg&N5a||dDwgy2&G3M~_;W(xYii`>Z!$JRO|vVUz~J1uOMQ}T zD7dxt{Ij;yfu-uK*Tf04Yf+U!n2CdBp_#-f&wZBY zl5z<+(6X+P_+`?~hfs)5CMQy}c#)JH=1>|7>^2@LQcVt}PV7x;5mJqsMXz5V6s`TL zmq*Wd%SQ)vV4$NdG++gxKl9zTleIcnLL{8beC!U;ziw{4H`rFO9O<`9X>qk327mIR zgtR)k%(TJTp?R5ofWOf7fYz55TlYcYa4L=GibBEsFzco5_v=ccGK1;Zrb8K z&d}+r7LF|6Z{*=Xjg)eS$e>ZoUUAYKHil5~H#dCTEFqBllS6%^Q?v!1X1!BrIQ*f` z^6s8DcTe$ouO_3+OAWlOL?{^eXU406 z_=VAc)tc{1KRu(m`j^_SGO=^E0Z3o6S`|P`hf<`7vvbFKbXG=AGh+SgDAJ;gr@lId z?48VojayT%^A{Hx465%W>e-`S2L`-$76+BU4ty(|RS8|`k^sED4%wcG-K^1iC5VUn zzJ{Mke&Qp!rJH*AS}bW6Xg=sjL{E+Xk3@u3$E0PG6Wh?w8ZC~-ABuE5-VV&S7oL>M z8x$L@nk~}d3Rmh)L5#Vdm_lA7v(n9MBdum0Ik2|Gc9EUi{`h(!z+GJz%_uCfE<56y z->vXEc9bMbpU_;&5NrHj6#(D;F8`OLO|G?*5&%2$H`6jp(bb-eY+Ly45U;t8qci}d zExK`7z47>ec(GxT>~$j(hF;vK@9?L2z#sp(tpC&u`tQ_R|2K#8|9ImAD(?XCp`5u{ zW>sW=a&@Qs{)iAZSOUZrirMi2KlKp$R5loF@QbqhCW@*2W0WG;UC$L#@mzww(*WFGdlA*>x3$F-l>~g6LX-ABsY^L|)apXVe`8(|8+pLp zai&>soM`0(G;It1>>SsW4oBfT#Cb1B;kUm!jLPX7vKl!$gxTjH~Tj=$hx_Px_c%?o2tB$awPo{CiCMfpth;qlN|)V>1l14e20>)Z$hBHN!w|Ir?IkZ=Mpa^ z7Tj(veB0eP=6p$`%sGN@rz*2j6)uzOPbcTON~b_GkK>aI3nv8r%{NoGIk#z6FgEYK zKS}GT+X{Vrj($g5-#_swX5f_Qg|V>QH}6iypxlgN;?aZGLdQ-B^D}x{+RggsbMt4B z9!a?Tc>k#px}|+3F1)F@&9G#4?o%M!Sx^NpJ;EE>#cmV*4#hoIyKIhaNdBOgc#aJc zYpQ+ z04gmYnF}gdK89M;*+_fm3(SDD>@xsG`lo!>(pYnoy=3c?UEOAJ6~JxpRby?kX(zY~ zT@!wZA22;KA&$2$tG0a4FUG9B0qJa8;6K7lEtXX<(&ppIZZAE_3-stc|Afh-e%1M~ zreBX;v)!=If;%mmjpK|vmsPX$s`n+XKEs8U05J3Cn!`QTWKX*(t2VxW8URwyIJb!| zSx*aR1MGtN&*5>c9LQrWK5-6{^Iy3YUh__5Ow0f$>!;So@fsIGnBM`eez)gF+5ZZO{PnHZG?#&kCzqQ`L>&L$n~bDGxAFRUgT%5 zKWn&*8y|mMIgoI_2_63LZ?ew+Pvq`rNHZOh9BoFp?3pF!2&9_Xl{Hk%##f_?m?r#D zSoX$sqk3knrv6&YE)aLqf04C6)?ZOUj%cVAPar2;>x2oj`ywtC$|0$HIxexv+P_Od zpmx81Pif(IYh|1$|6Ra%a2%6T`9`s|RZxj;9*{KuJtF8xy4)Wl~7iV!V` zqHfgO*bnM;0yyDO3zbLz>csVmh?PnLeQhm>rf#UCUh%zbh>Y{Cw?sUYs%L8m|J!>0lBC$yll%+ZVTTFei{?vF)R0VnH440(U zzkZTqCqZLYGoRIhSYH7fEYiRBWVkt!coZ}vu!E(#=1Bf-;?5{J-`kM`7+$!OA0w5< zm(aYm_IvcYf_8eHb@%lE+*3|gG@7;e`*CJ1vcsXhUAoY<<^2xZwKvanN-;q)9MMqj z{D0r=4BV~$Gyr95L*ueV!NLtt9dkZ~mQ+qhV!bZ_Q7Acb8@-`szRSc@by4_-U%f~sNW{Zj3=J;NTo5?AA4!PRjv7v7dg46y~cd=c*xww z%aiA?G$CvyhQ1F}Fwd_2OIr54^?O+3MsycqZqnyM@2~<5Y~kiu#aBmNR`lWxfux7- zaiRNynKPyx;lhpU^Apm-T9q~PX#jwS313Q>{gu0D;4?WZ)Rnc&!x4*L3>~H_R>uIVXKl8K%!3;Vc7ef;G6$Et-7%LnJHykLP<_f#J-&_64F@?4GAf_1mqwc z*^BjxzRV)r3rr3T(FC_r+@bPh!R{D(37*<(-k8ta|2Zz_Q&6B80;P zCW&5cdibWI++}+9EV;LJN5>N3>gr_@Bs^SHso0cTM2JV6Hc4}@J%3uN1@SMa-Xx$dau{>p8#CB=Tfc&-6Npw$9W>1K4EO! zZ%yhr$HOZPc8T=d12Ttq<2?x5yPcdBL+@3fBtoO--pepkgPcyMXJ(%Or%YC&pp|89 zmSY0PRa{>@I&br(#9?5nXB;OY3`N=2bwS*zYr=C8injLA=vR$j>C?0xrpU$$;34;^ z0wGfwq0*$Hf!#U}n1vPeg5}Inr0YJOR-C+5(SukGhL;pSdl_YIECnd6tfd{|uELr= zloqUkWtcio&-a?tboe&hO7xnBwSC(BN$};T*Fc`O{ahJam9zPF_~EWBt@E3!lto>K zJ5B5DBk0WIVh#>h$la5~@su`B4+%8_*RGMhQaWn*US8xT!D4CM5dul#=ZpfE7uPP` zCnkUTZj02HC%Qj8HQ)Y-feCj!7`kGdBlfvY^F_@-YB-!Txr||lr;Yco#4qOOWw}T)`*`KRYDXN4$+d2a%H`)-Q}U#)Xq01T0MKn zr!KO@POxU9v%F)N!r>~c)gxiDQoyn(@TTKiR)8G-3++nwSz+iLL9UTCugq%M_@GXXz48;*h{6HRpd0)WTX0P9KL>b zxf86bpLfy~fZoXyIXk9f=IRssM>+Yk0m4K6?~i5Le0=gmR=aEf!W`GqR*?8=^;*$K zdjb``OT8}z{eutkP}3=`_!p|eB9z>UFqn2EdQ9Dz=OQoV#Pp2pOgjb3>3%SYw=vFG zttTX~0qu{v{5FxkwN#GfQ9q78OOjthxChLAJK@$U{ZiF$+qdq$-oZCz>~0%MzEo{r z^q7X`&9idur+pP?Gz`zCPFTT%T;8r~79SAU=<=;Bx@$ebozCby)J>5$hwLv)&}f_! zH>*7H^3oQ5b`MA<;8}yJ+twvflHh`+wi?)WNkLl+nNrg#nHDeQiA0g4p9cPk?FUAc zNVFYXVx?TXD2xi=f#H>Mt@ zU8+u6-VMq+_N-yTHz`~{PUR99cL{8|q@Wo!+pJ42EYwz;k1)2TMZK|$GkZLG13OFC z<<6d!jsOK~tLZrO(ZsE4svXM{S9%nGUhFZE9L<@)y|-Tt`*$XiF66SgfPrPyeDR; zc6^S1qJgU-pX|H5w;>U_@$5@@jO^Maw`vM+&3A*)UV6|D=oUyzs~l{I6wq)OdEKpUn1(?uj>Vq^0M zOP9D&e{GxD4?}+#@Z{<~B~Oz1F6CG0ounb3x7T=yl+82|UWk_v2y&tJGQ_JesTpd5oOYYQU|B&%7Ar(@G5JzJOC$TtMo zRZ?@}Wf<$ahSq(>L&m*8WAr|MLm*)Skf}xk;nr*qN0D9N)~Sc3*tsxK1O%~Xv&Vef zuAM!lA_$wShbAoM7_T5(Z&&1SvE~W$U0B{kX52-<43NL)_p;T=X2ioykWWtO?FezY z5nWH^fMNQwtsIqB=1LQr&lWPSv$;!c4*}1=vVS;c^%Z|XbV}krA}A}epp!`i9mCUFJ26t zCo+wEn?eE3lP2gho7!^GQ@;kv5qw`HKv~o0c77*%@0kri@@dM)9A}&Ispa5$Kj+wq ztt^!LkZ~ulasIljlkXm~z*U%#J3%H2hSYu#-o9A)RIl{X0g>(29qj~OQwgV|6NlvP zrZe4BL$mcRDBeihPp_PAVqTSw6L!heh`JgmQFH!Y8r*x%Z{E%$^;bV2{M?}%_TIzU z;5zc|=9a0c0`+HUSqVG*3YkBoNMO#-! zcqHB5?Eq4Lf0xZ%h~RUn6E^!2oC4(0J(8YO*k@%7&@HIJUCB1i-?~4M*2Tid z&jikIAeF8v$iQ+dT6jRGfNf(7)*%Us$ZG@0j9%z%aQ6QvK*)yu96`=9F?50a4kZn$_I73}$WRdCV`F!! z1r)IX1U#ZO^%@NJM7${Z?F70CZ0+ZRgVdphY=+YC16Eto>TiI? zyi*EHqPMN8wR!&SVRUS%3yTPg@Ayo70IBa4-N(`yljOF8n%y#VFw#e=V zV#jdBCU;;%g-pG9=p+VI;pq4NXt=gghUBa}iua!?xNmII0M2IscXe0jL66BtAl(@%Fr<^l?zv^W?|_&Rq^y#GOdP`MJe7*lYF{dVK zv#H;0j~a_oBs_2Qp(EDJCjEdREJMCqe~lW)px%ToihzYcT|YAls3FB{%m&zIj~D;m z3i#&QhZ&jOzch_y954*b>?tR3XG=ZJL@2b)02t?@HKjr7*oFvk_K*!Z_kEI%7V=o* zapTKZuHmfA*Xb>%L==3or8uo~b6Pqea~J&o?)UnHo8t(#PnZ^wt<&XmQ1Oh9+i<9f zN%)w&yjjwt#OCd2MGaB_S7R1Q2XM{8>uZR9g`ARTL*tF;?uOZN0D{&4kaJ^2AT{ke zQk8fg@An>gQG8ihUc{nI8x!wH_jDrXD^+0NNr4&m4Fk$M)Sk{PGQ8kd({CrE4cqRw z=j_>WV>JCD{u2a$+LqbY0mm@=9%HxA21%Ra6WeTn30k3Z6}iK9gPpZ744Sh z)yn(aRxsE>-yJ%ycuUHE(0Sh}$%HGLSY*?9s6sQ308HGHIn3F&P0ri1@91l(r|y-Y z&U4T}Wc+fq+bn=H*Hrq5eww}f2a?_^EF$`K=|VD0cy>e zm)jn?YYEs$aHv?OTY2{2>}e(N--t z4Emh_M^xH){K%K4p3<{2G~|&Gd4I`eD_t|plW|$AyE=7c;Xt3DQ56No7|4G#1y?cRXYW6G0=~IZ~`Dk~GatRph<(=S}nByFccBfi25Pead?Fc@KWIHSD29BUYRdLu>wvPHz-*_GDT$gO7~Zs!bfVArvRzx9a;{V%WzbP*P8R9d2`1$a+$+j7xlK z%eJ|H*evhnx?d^qcK@(5Y4}96;8llkGoxgx+vp2{ru%K@n5YGoZ1)I9NT=}!3lo4z z>^3Sec*}lFWwZ!7wEnuawfB~|vA$<~{@w~NyE~X^^_%g>c0=`9sl@}dg9+L9Ngc#P z&aNBeha5h_&zsynh!w0NJNW-jBcPv>Cb^vU9E=DR>Bd)#CI1M2(j}T)7xuJVGb!Ve zfOJ3Xx?u3b7jEPSNmD-vipYyD8+;DcTfEZW_|M~o#uU}*eD*JV)%4PZ=B0}j9sOU} z3Q}sMf#Kw5b%Nla)7+-r7c-8F2$DA=g;2JhS5xO}wsR-9SAn6Dvn$n!J4TT1mg+R^ z+_HtuIY8Y7+3`4_$Vf(uZj$3sR{Qp0(c&$$g@2>ly=%JLM|^f-1FO=G07#JJ!WiLz z2RL=r+?%%Wjj4Q=IWaE*gqKHV`&wG6`^F%&#^KpMfI;bOcPV-a9vIS~OWq0+&v>eH z(=(Jj(GT-&zm!|0ts)^%X~=t&18#4{Yy;C3R+&F_W1U3BM8BXN{o;(f2V>oyjFp#6 zAR_ZbuDWLyD=!{1Q0MLQdghsM;`lUY__B2Tn90|l7Bf}4ug0^-SDqN{SJ+qy4;eu3 zEe&ljlh!z8K|c!J5J0pC(!X(~OpDTHRVbUKlqBVp|*sb7jE2HyP1ydeWD>pO>i1aVg7if$cTxcgcUJ#x)Oy}uKdOVmHCYxZ7%}h)CKVenF{a(6XiQU z07bqg#0%Vii+kQ&`l>3S7dUMuZ0~JZ*Pqqn2qkRt^cABC99?( zqR}$FucP-RGOl&q4*z2$&6cj_*%#XEPSUVcz+uA?fsWpoAxufB)!dth#PA6xtW*mI zlTw~^C8U=NygpMN`>{PZSm@>aI?f$j)K}x!>nQGXpjDnqAoR#6w}%WaB`9F9_UUC_ z)iJdBMa%v+Av<`>Z0u?7Yq93kkE9Svsf14DWonTvK*3u+ zkV;Qax1X40-f)SVJWQRMDZb$!zOA;o#0BER9*5X?nE`fq>NAr8YH}S)+bUVm{Lns+ zcJru&=WKbmdh{Qg_G2m#oB0bs8^RpxwLN6RYPO|Xg-}Dw`x}rcg>$@^$f{KyFOmbr z-DbXhSe+bVsfj9_%Z=&rB`zNc?(cxd;n(?9{hrsF$smhGivsvhl5p<3`I2Q+!PEtWyLoA6-L=$_|W%cZS#Fj@JULicRpTi*zavtyU@D-qks8(rw$uh&mo5U$nmLq+0GUDl3_ulRPW1* zt>bDa|HciM94F|oWT!<#+!Dhx(Kyh#G&DVb7Byks+Wt68wIBMOw<>@dh$NYbqw5+t z*^fF;WvZ@2Pg)b0@mZ>zv0aO(#)-dv4dA~c73Bc&u4Q)jvl~1yv?+O+YkFtT?&f>n z{p>W)nSP|XghLTQ3MPH}tN);l`H*ih^NjeKTI|x-mF~TM*6FWzhe_-;Y}o6&zGv-T zX8OHWr>w{{_Qnbe7`D!RDel%=zkpLEes_*$0X8Z)Uv#L>XJtxiz)bTesmGeR2%ZT- z(QEd&5UUQe5W#LK5GpydGRJ?57*#isVvsZKmhN`qCE6_c;)GXMez=Acg^N0yDSyAs z)5&dJPlBI%0Gnw~^nkd6+(h@RwzS}(d6}`=h|uT-WTjO$tF82b<)=W{DQ3xmFcxhx zwbrG-9BfRz_FBmcU&dHV^lNDy4w^#Ji0kNmmn@<+~inwoMhBu&|z}0Vb{^!n7~ZS`uM_0{*IXA zUwG3A&<9|i%Ois`)YB> z&nIkPX6k&L_J!R+z9)G|)>-ygNn?2)P!CvKnsD=P`$$p|nDsn^^ z5XwfIEgP7DMFi{tgm}VVJ&TLvoCIJ4gVq#zSM`qN3L+OOb6>YK7u@K@-jQb9$J5`H z*HM&kWisdVTPo_(m&)~XIeZiYiWv3ya5AOLSW!;dTJ&deqSyTU4%w(r1+nr!7gf%@ zU*6OSa0jE1WK)3|finU}KYm!KtEZeI8Qn>GUYx=#tHO`gofmAl+P$pIRKdS)Hg#%% z(`s3m=*||y@(ViR;Ej|o(-g0KQk$+U9&!d&Dv$(u&!p_eL{EmN!w$kTkKc#;HMDIa zOczoU13i%~RIJUrC(tc;d&5m9SXWAYOWaaeXHzR{g9$5vH!wNRV7D8xC;3^KNq9GR zl{3o<*E8+#!&(ldCKi*hd zJfq87Mw32Cqua`Z?TnMl;p?Re5i`F-;T+*%`$6i6l)^G6C8Cr$J+($emb-V45{&dv zPS!%1jW=A*yzpVErsHNB%xGcg2u}+?;J`n}aDCeAS^q=@1+yv&dQjyKw`h2%s5(@x zUr?OmI=x_d-$c6nqxMqyo2Bx}RQRZ3pY$-vi#r@US(xji%G0?w{@2uT5$Mcdvt5>H zy|*C02-;h)bfWou0+&3F3+(WwFwVm|(&laMipR3I)53k^&hn*=k;z8g4GW<%P-ZzUzP9y&qeFonUy0bbDBp=NngHFqWr)Zxo`s~_1zLN6! z2@s&;2fV{RC-Rtkol0A^r&QO8$6gy+!43PRq(AtuUyN2R&w9*G?KbjQOu69Xyyq&C zhK1#)!YoSSjL4?l?We8uFbScAtH9>TAqc&7JW#!_TT!XcOthb?hrNNOS~aFbue;_Y z`rf{OfJbD_irPMUorm%6i5mKuCh}NmLSil%U71P+!h-^MjBjbGh_$flLqD_TWYM9# zmG*lI0UivF=_iQ_dunG~G2O>vJO}efo+OIC@_Dhw9!SYp2F;dqtFhSpg|!(}k9(^x ziLOvt?ndZ0pZjYHUEwgn8~ZU=y9N{Qp;<51RWfGJSm)>bRr}R+Fh4gHv63NprotUN z-0=Q2kOJYn(#%@n9nNq(U)U*;H4`<89e2#ABzqAzXe>+a_h@~8tK)3n<~$~VtutE%n5gYw%dHQE9 z!%IJ%dGg}E-;&+No9{c*ZnBJrC3Maq$0rch#)hWR5_&c$m;pC~Lr-9ID5AZMH!mg9 zKo&4c-idt@SrHMYnirgPOFl_5&UGyu!wnAH@T$*+u~0AkBPBb(loq{_G^>b~zVD97 zmD^Ksp5)shC!ranlL`Dhe)=3aG=xA%lbbwJ(ZawCkiU~)57{@$OmX+R4 zq)!%G+!X#2s-XQMH1h!E&77BOcFl4xux)WcH9~7sx?H+C!Cbu zX6{weesd@cG?NLu0}T-2@wfq|6zzYYg!{GmQWRadWr&ag*OTW!4YQsID@} ze7=XquTl|%Ig|W4Ir{HJYkIGuX3P>+Z?dF_xsZhSDsYMu?46*QzlDx0%;n{iqUy;~ zzi2SEADMtqaTlsA+AQ6kJ}vY)wL!I|_-k;g{qCXC<#a)6`%>-JnJ5W0YHn&vQrm3t zAhG6r^LW9EthnDWIyUl7Ldh=bFB@WCd1uKmrTZ|>=W#7PL5==8lc9|-e$rr-X%8NS zh<+TT;5Ye;9;?M|6I))o)!9)~>n4}Ih5{FD+c0@BS zFAldc9hBmW5O$?EsumhJCCJD#t+hFOH`NAuf#f#@yVbs!1V=`DVH>iVd1ZLch)Qg( zR_e*#B8V=Y0V;Hd*3|SlAYAWRHAznTSxw7LsK7cUb9we}hQlu`uNkLMn&y{{cr#l@ zDOC>r?aYY`t2;$Yo6O^r8}Ggbxa4?!vR$`lY|H;D{;<5XT*dMjXH*yb`WariNVIJY z&nc(aFEOmsJSL$@ZJGAPoSlvMEe=@ZKS0~s{GY6y>KDcgQTRZS0$o9pqbRT8%>^+L z=bpKleGL=drTeTOi)ZoyrdU{CuYV#^oOdcCdiL~ChcSkjd7i`>h9f6lGR?mIiFv;f ziknq@5oqR<@~QSwXE))UD7~bTFK;|t=O>)2Gw!P*IxWVk?lzPsOfebl9ejghyKy-N@cdnQIe|(?ghAPE#{WN1}~eQv}UE z)Nx{-y(WatCZs1F23xF-N~*&0b2&OKD*F65l8bX7iw=F;mn@5d0L?JLmQo|&0H+ph z%iH6`S5R`^544YuS*vvxTiRWN zv`!2zPvD5aISrspIvTEd-L->E6tC+H5ZY^mW*kOc>G1hCwOI}W8RyE}+9f@}Q8s<7 z*k13U0>;=q*xlbT)Sy6B%1*t_mVLE$6kh(l1}sGVusbU0 zd|BFJorsC;S*(Q)No)^TGT-oK!xyBH-RM9Mi{S3U(YWdu2;@xY9g4#zM7uFAddZ@6 zBNQ%4d7Ak;4+HMUpA?&-2)b^q zjz)ZaBy-zLgnSUBPAl9Y<8e6t^Im1=^Z-G_C?d=_YMw4~rQzqXImO3fS4|E3Jkde( zPU!nu3j-H#zbL#|aj&Bs$Xx=8J|+E6^<9s-<{VFP%CxW zbZkDfs*Tx+GQ3oyylzWNph+u|7LNkhbSc0Uhh@?LX5Al7{6Ad4|BS#m_nucOnkv6H zj5gu`s)hUsc3olqlZe*Ynm%WOOOhhAgZ?#pk^?U}1D& zmd`hvak9Ui)N{VKQYEjlTKu2i0id#L>?Fp5z#DOYhsmk!lQljruTQcRY>zr()v9^5 z^|j4kkdPO1bI4a%Vn(e|bqIQ}3m;a=2uNlinyD<>Mlb=m={EMiIoa)l=U&GGWH9Cp zk5qOhj_l5NZbWAWo1nd2`k|yH84yA5(36h`-f~U-Fl1ori!VCkl)akH*%w5guy-x$ zW&*En@I>bNu!B8@Z>Y9FA`tEL+V88%x`wsOy$R?+q%5mD;g^CSQL-7}feUK<5|~sx zMdTVi$DgS6(VE$5;i%wAf(~z0Ei2UPq*a729BKM>^*vO>dLovi;0_RK?9cpUE10+{ zpSGtPrFqzcR6}4J1)#2oKfVa?|9>(0xdSKXnFcOP7erE}212dqQ7AEr{V-i5R%PPy z8swnareGr4r>93{7xE$?gc|B@#rg5TrcdDVGIvo-5{b$v7D{Zl8d<@o7AVfm?Z_*ZP`Zvm94zkN9w`HdYMsI;XmZ4CP`1 zYO=6betKhtNmo>fR_8a^EWGhq%lL6FH`?3?gVAjQ_lu7+uA`im7S(sNW_G+*97e~K zD_JvyOg`39&%Qk5IX~z)CB7;~GrihEGYh=hBGb^Sl0mu`3QX%S74ZL{*6n zw8xW2C$bA9<1hk-H%*^(w;g;ZT=+ZZNV$@(T;~twPYNK=Q<|LvLNtBeWM5saeQw); zlgj(HWq6eP#lMNqd-Ha^Y=C^RD6e9jLV{LFvgOTR&C8A^lD_7(NGI^{R9kv zt`ROl=H&0t{T`u18wVp|E`X~Y-R{$@`m4i$sjVHeHi#zQa;Q379`yPcEkGrgA6SA& zN**77jYZ=xQG8d&V*87Lp)f$0CobTWM1~ih0~mA$X;kj|UA;9{cCChVJb!$hqFH5X zM)ddD3I5b?QY5BAN7@6mNv23hZ)_Bf*r&$5k+Aji#YM8ynb_6@=){eb-nq#0J53LSO zEPsgG#S_$~04B%@UisVj)*b2B&~^e_h`tctwEsv|%Ep2dc*>t%ps-+>^0R8>~ zH+*DpjzL2YK;Hr^Lv*C3R+P2$t5crejoPmebq4{wy-Jzr1pUQ{yR8#<5{T%f1Ylz= z=1OdJTB$3)S@-}UlE<&pUy!EOwYs-Xg4)CVGTmdHd3D}ouIq+IY0R?B{)@A-E^W4| zJ;1tF+n6bo^joz&gJS1#0E)Wa|A7(z-^`#LteL!_{UQz@&@t74H*D+j3Hj0!3J|ST z?kc^o&12T4t);HQ%QZE16mt?#V-Wiyh0hMwMSc3Q;N+YVVV3_7|LQ09;3@0LpO^8# zOpuYQ3C}p*v$2WP!NaP)nAMaV2`0t$%NTLxg+hIL{q!k3!69GUssa9i zU(Qky1S)XS?}gNv{g=up+LcYx(36(M432=~Z2O`UM~K!31L;fLNZ{{&*R>VywykxQ z4$N%!t??Ss?p6FIccwzDhsa^p=v903#S%ta{2RJO64A*Dx4u>T1>ZiFwmRc#Z|BgQ zJW*7vhUHbibEq)O!%j~=jg>r9hs7Y}HAaUEw+jbWhKK{bADQ!EA-@L|WXcUN-evqz zFM_mHoDkQa4j;elSRtmHAyj%@kd2PXtmP$jJbcYdvwFSJ*Q01TSN*I>jKl}R-nLC1 zO|PS#RIxnM={uZKco@bG94CguzK$i#rXpqmF7&o3{XWQ56s$)3yX!lOnJQSXIF$7+ z-?Jyg&(SNhe#Yo+F@hh~+hl zoazy~a+H?j*ZfI78T}o2w9~8;&>B?w%0c-iF(9-ul*at|kR{Wd{Ek15yVJwT;mR=K zr1UohR3P0quwYh|68>5h8e=|(p8YKB_6oJ_!Dw75iR8+Xqit;H(B?y4Af=VA=4DFW z?q7S?UKuq_#uh(l2@KI_m{PwPxay?x;Ptey#(sTvVZc)gHoB55+lGEG3%P z24h{3f1)DIfWy(Pb-G+xI>m%dI^7V{sDtC$T$#fGdgt2v zL%$P#8rg`jxY9vqTv*xXYDxx2=z%k^nRBd)^%l;4ST9)VkkQ6Jtcd*pfy;R+dc}2~X%#1>xSkZ+}iF`>%R3fBdd%AVrB_xFI_cm_d@QhZB zKR#$1NUxqLqw0_ywj6T}>{hRQ?*=33@^Vgv5#9LTT~z=4TQbo3I$8)ZJAnjMbqEz$%f;9U-d;HQ}3}uvwjF0z}Oh#xQ3^GB%;H~ z)G_m~(xE@A1H9;X2b_G`qr2ExNxeog${VVE9emN!-iDGK7Qpk=z7gtGP23fbiK1Gk zPfJC-pVTCyRl#-GyK8cc^^DG5zPidEl@>F_CIdUm)6b4RG&CTrt@dZ$?P8}4y8H0O zHO0D2PQ?1n zcy#A5mgKz4kRrELz{;*yn`JLL&VaCd`7ldih_XhVMx{&LQBHh6M(@K4o1q4jBS-!t z0~25fXMOp}mO1XEW&Tf|Be0uEgJe7fy}Ax0-JR-5qPQiJ4gl#`OaWj1^2}+3{r&>C zd)WbD4O*JyXu(H30~hXN!P^C?tc&b-Q$(2krX%&<*yNT`-W9Qt_5a2#Q%jWH%||=tde(kTr+FPnGrz1~MF-mxhPvD;uieWkM-cn7Vn2U;vQWiW|m4GkiBFtE9IWC zyr>T^X&n|Y9v0jBAT~%QZr+jqCeZDK+`=DfntIXj1_FucMW`%6;iZ40gb0WWwV@4T z63hOLE)78~rYARJsx)HZ1aq}|s=&6Txm9$~%At&hF)8u}7sC8Dd^3DB4JNR3`QRmE z*4p+gIXEnSqHcRT@IJRi*O8Ow_8!}P>&ahL&uUIgS4DhqwkXLTNvf#$T8Lgfa@FvM zT@<%zHbO`x;-#EGF502+uF;VUQHY3<_J>=y|K9cWyv|>7&jpv5_H!xKl(xqykIQwJ zLR5v8ohNIMp(z}78A|ijs$kP1c)AZNU+tQrb^ekaqy7LuyaRzccK=C8rGC)d(*O2> zL;IGl^p#0Z+V1}3@=8_peABm}r(YAD62hI*_7yicP@_!9@sIZn1u|%PChH{l^%Zo- zx*|dR3+Kz>o~7abuY-CzD~s>ESM@MMrSGKuZ7MJHo0^QcNh?<;eT@y9ObM=qv^pss z8PaJaM=pKm4OyDA?O*PvZj8l4aYY_BOI8EAlZ=YZbW zg9RS)Nq1N$HiSj4+!It=80gzx*Nb1^HE>-VYwBy1)4;@~$HtXT7w02W?A?)F~Y1pgaTpe5&?;hh!*bAs`&!c^yL5!iBcVzLDst zLtq~t`C-F;FXzGJOVg7Vr5_}Q*nrInfUIZ{dAI)LDT~MFOpb*WrovuXwC zt3Opp@amZD=!^8kkZNY~ro5S4KbkCSZfzNz?T(E-J>G9O^eqy`emPZJ=zvJ8QxF4#06gO?*xbt3Sg^5uZiIV6Rr- z$PM>Pn!t%u`0(A1nV6vca02UGM48ekX@vpg*?Cw}nePdhOwcL$M7k z^R!uqJiv$Qdi?d+#^Ivt{BCX!+K$kEZl#b0ALltK%1YX{!5Xs@s)#=s6T zK2Zsa+j3hxl2GedKOf$S5ZxNebRD!IhXUD5y0rI=`vENJ+hT`dmqjnQm9KQ)=&-S; zo8==12%Rgs`OPOJ2vsS?9oJ%~Q}nrUep6raJK&S&ZE)!#Z9X|Jg(S0mEn`;w4AOGHt1s8`!{dv^5H4vyndWKmHYTW2>HNS}>H9zy8JKLa&e$b!VcN9>An%+|sJNXZJg&F$ zUgkjGCgK$|!+sgU+p@a1LFjHURht4)hmuRtc_ZLHxid*2Luaq1#`qWG>0f#qAIa-}31aZ+uGls!{zMuT6?RzS+_nuoVEv)Du zj66{)TzHizdPe2pyK+aa_o3i*{=osu(aHTTA67T4q2V#CyN4b0-eFE1HgOHhHdpGd zsK{e&aO*)Cw4r7$7_0seZ$nhMfJ0c<9X~SOV}AM5n8503Mcp==A}3iA#tYWMSPtnq zNmx)k(l+DE;#}EHHMo9lM^TV!ZXbs9dSlO?D9-o4tXTs#-O(C{%;6w&X;?<~%JZR? zjXg-@SJ)aRe|yqG?Mo?4>!V5hxcB$b`=y&}Y1YEAm#-T4O`Ud-@cBOK{rw%WiT{{+ zW7*oJ)$cYl{mrAC$w_$%6*XNvHxvgW%f=EuB)}zYi)91TA-XNb4lVa7CfvY6)awm# z<1Y?dd3L8Q^@rU6nKFN0A{vwA7eoB^i-xS{ey&~P^G?7LQ9Yh0iY;khts$Qa`gI-B z>i2z=BfNN^RBi4vxn3_XkN@M~D29plGDvl2+T1Hf5GkjVu2FhieBH13@55ji*G05K z`dC71v!OM{OXP-Af%gU1*!#(!B6As-12bGxg9gZO-K%^Y3mcprX}CAdx~v_iMfWD<_kW#V~6TY_=D?2i!J0>Yd(W17|$JNsd4E<3MW0O9-p(Dofr zO>JAdSg{;HML?-GL_k2L2}rRbAibA>$f1US0-*}AfLJJs0@6WxLJ}znHK3v(C3F%( zAW@MTAhggz;O&5(d(XM|z44DX-dp1g4wCG>=URKNwdVZhoZo6!LfxxdUocMmdNa4} zt_>O-6?Zs0Fe4NC?uS!OPUrM_3UPYb0w%eHx50nHZ+s9zk#oUT_xb1nTJ+z1=)i(i z6AnPffx_w@=5|#j`Q1P7UVQU<@=dpOca)W;i*s|((0OMoc{59ahtmLQbSTY?_(`U$6U!Cgk~%({t#@8BrrAi~LcRQu z#R*zZXvL>72frMybAlzD&zM#ZBl{imjc{@x|N*gzE?gLlY+mX{IV~tk*K46Ih z=n?o8fkG3bQg=BQ#BJB~eb_%el1U_~R$@b1kW^n%e)RrUjo)g1MF6nN%g#`4caMJG z8=OBe^79O_V+^G`H+b>ber2W=h|u01Tef4AX?jOT4QX-nEw-BL(G!cSnwkX zU$7jyr`N*AY$bgg0NdG0cVCKL&vljxa7{lgo-A_wjzP>QR7~alr|wDaQeTHt2X-gh z5$QB!p=Ph}Uq~LtYFFm`oyf# zRnpAO;t9O!$bs?Qcq*~bp+!^ulT@k#qEa2z$5%sf(9v_(S84K4RxPDU{stYn>|F^j zr2>Ad2(mVPTL`9YPI@Zg!PFt!-TS@<*{Fb?!qs)$LzLH}3 zk8T098CnIUNXL{7f5t~|Rv%%%Y!d-K@u;)x*6_3fkf!t8pm!jRR@UK`5C;JgkHkH? z5Rf?1N*K|#O1P*&OEpnCdHiEOktH&OkzPs^MsHgm_Hf=yYGb{?i`k%Hul4OkWL8 zpPHDi04Tt3xVI~T^UyiFY<anJ);V9pUu62xfGCKa z);0%|+CRP;_?vNu6#FkF zy1A1d0e=hB6|3B>(`l?)LU4N#-K{`&i93wE1W;o+Jde?sP(>k;wsIS22j2#%dmn7t zRX>QQWSIQmaA9q~Y#H3g`@VVK-IHodKAY;Oc;d!J*h!Fb(M=+k_s@b>`8g2?Q&rcJ z>Wl9M|NL-v3(L+%`mesa zZ1z<~^Bda5JKk+O#{@={=(MVvViW)rrxx77eM3=+_(Wz~E3VEVj$Rv3lMPE`bbfm{x4Wet zH>x`7&+PxC6b4M9&8DEtum@JME9Nh(=ZV-SNB}D{$;I4@)Oi1{E4i-48Gl$b!wtWt z-~00xS=O_LHfEvRhTUDl+Tmf$g6ur!6rE zX*#QO(GEebbndl64dLU+QqHpV2J6OIQh;dn1|7f<7&0hr6j~+{6o}s#j12;1VjyptEQ@}S?}uanEYh!twS3-7z+osAf=K538Mf-WD6Mo4w~pi z@qK6Z>Rvsx?q~9|5caz3c`#QNRMS4PFn%(guVuYBsBOma`Pyo|?)S+@xDY;-yK&_| z{h$NK>8EXHZ1I5D?Dk;f2>^lEga=hYv`S>&DjqIEhADwvlG70$w)JzICh-?P@GFr6 ziB$b=Bbd`Zf>ftEZ-upWR#SWR4lu_V>;$C(FNPe{IELeEn50bnrOWaFk6edT@9-+0oBJ-&<{e2s3cKb~noV!Ro| ztTm7Z1mBPe7#rHZOT*$W?G zcNRvG{79oxXRVAo2o@r_?wkz_5HF+$RqmS1ARK2t5 zRP{(PFP&`%zMNhVRWz;(<$Ae~*zyYdm7#ivvQ#^=_r)8<>=y)E@(!8n|8p26=RCm4 z1$d&4TY$w*06@s(r;Kx72Oameh*egc?hx^*s;62f`NSkhTx0CL9<5<{z-}_wE8;!i zzTK0zWO|Lty~m`3?>kH18=&mz|ef;fA< zZsF#yn_k=4`Ae+45~qd=mwj}NyprV-|yvC;~Z zw@fm4Q6^=no8|}+FfFUd)uWjsxu>V*HvU}}|Nj6Bqxe4*U)19P=Qi{nQQeVM$c9n` z%$FpNY!S@4*+kD)*8W48e!W``3%z!`HeN!2?K&7ZEI6DEav4Oxo<{aJSm3G~iCLjWj!=P*N@ z*B~l4Y*Lpg6y3hh&iT4MB6t6yYs~BV%QFCd#CFqzy_a3-20bg_YT6yoz@LK0#5Z%;8%bHV6%k_1J=4$$Jv3G z`H$ExQ(U3Di|d0&m2w@xRX}S zDt4?@IiMvUaQ=9|=RO^oVd&PaGZ}#I#Gz2Ti)QwI-WX)qw!LhRfRpU`lq)8BLBEn3 z+;D)Y#t|(oV_G@Hidm+e^zUT!w=`SzB*|z)!mx^ft@HyV6F``UHrtohEVQ(j})$OhxUAFOg$(v9TyCT6m(xyhkiw~Wj_p$UtSn*OL#dqW02tMiYt10R7yCaC3C zVkNHK%nz7I+F<5}g$xKg76Zhu5|iTWm!J1!)y|vvAL}qj#}ED9W?N)g2{7c-hg!h< z?I4|n$z>nRV^)p_xLLm^*gg+}q+>FIs_>@iD%Q_-q<3kHqtbI6=aJ_XZ@w^9E=BUs z5vyV(UEVmoaKseX-Ppcg*|RFYp>VU4KAI zny*%i)}imPqqsop@L|t@7evFsB1s?dpp=@@d!s)CKjFP_dAd8Qf?K3E@Jc5G43Z@( z>?)2M?ou0!Z5~blzo~T4Zp9|Q`4b#(o~*L*RIO|ZUZFrV#AxPkhXme^IOV=l9fbNo zz%TZf<7k2>@!e8}H$7*gUdJ`qHZHu$_D}1c6!tFA0FZ`#{x0BLD2ijPVlqq}_85Gc z{z@I~ZsHF?AJSGBuZKt(r%rEl{*g_WMXs&{^f)jXbDy3~RL+R?=UyB%v-eyJj zyp3Q1mT`0FJ$SoYCZkfX#kHs-=ID6xw7U@M3-5GSuSkx3<9b#SV*6R*S`&Jq;k*vW zgdsx8+wY)ecUAV4pJ%>{Zd`&}%XyuuTR1d>`xhu=BM2-;ZsQk}-BaSP-H?dwQ3zl@ za!kkg#0pzErf>=6(&(k}x9ndQ#=BE|8UUBFtAo>Gx%CVR2f#Azwmv~!ZP40ncWv@~ zl-~{~BluH&;}XO!daw@Xe#{;?4xAN!fiTU8DUA=ss(Y2XoROB-zZ!j^r*m*M2)oM$ zF~)uH`E)A05w;kfr{^W%wB-Y z=t06~Q;$BDRepp`R+D#1?$dd*bChcC8Mq4SgU{m-{lU+(l+Y-{#Yy|PciNXc7|~1N zjSsEXwcr6$_TnCKto!QXZ+4hceY;W>DKD{Ap`?bOW(`}OrB({O*=TgMPuG11vWu3y z@Z-hmw>LR6AA{FMr5Dy-UIgmxrurAP@kM1{{UI`)Eg>zTDH{pC46>-|;n zRtZpH*l0G#)vj-8-TU-wU68I^e_GS^hnMa|oOXEaxgQOdfFU6k=Q@%_%6EN8ymrRM zq=}NK=v=Sl`=?eyZH}^r31T*p0BpybhV{ztbez(@eun3Tb7-3+{@xLe;bWa zJm>t>-*clC;J9`{0~_$W^W?+TVebK^tMJ-TOh~(E=}~+ad#}L{$TV3zkvYZrjkeJ9 zC$Q&{>@Y3UU3yd@G?c<3Ub@(0!s<`r?m2 z44X#cYV>#3X({#}X5Oksl4gmD&P`@qc3n}As8uz;_md}094SiGG&64;$z2ltON)_~Tj9AD$^35CSCfXFPG5^|)v;o}SY!S36Yv+XJ2=8G z`Rf14v5sNZ+=M(gNWve_)$f!9{`GYe=mcKY72Pctgrp}7SbaWcNx5&1CMA0@ZngVu zqSzOU!WwnQZO17xzKJ&E;etjtxO$821^opd*PZI7UrT9`H~&&Ig3*; z@Fgy51cXU%+E{oyh}S7==L~h$W&lf8J2~U_5v@`-659C|@*Jeu=gEEZ3bnQ$=Nh{y z@3C+N0O$S3e%88%Nr6V1VD#D)O*Y=%6jA-DxeR?FtU3tf001GGx=kx-OEQ3M?7+H| zNuhkI#Zze{w)qlWO4c-1lo$U|;}UpX)k4=a)kdjB_+O43NA%+vOXp_$AMdXWD9B)J z(juSpCB2b~Jl|i}>oYeK!L~nxA2KA42yA9N>i;+E5)Z^9 ze>b;nY=i7~%iQ(1b4~dl{7S^w{M=@XNA1^l-M0OQZT$xa-u}P3jPe|1M@G?6yqFx4e@YJ}E66BwW*$vKN2@hT>zFi+xI!<&X<)Ny@JV8cyTJE3a= zpy5XlBy8>NNX$oy!{G9|!N8u2`r&n1laqtbj%(70C}0i)bM6DMJbcLhu1QpG`YcAJ*q0B!0dqAMOA+G+~+Pc#n>8_Oa?G)5BQzn78HP?QA$!0swmEl2sz`r zvkBRFpDO?t&G^X*t#DD1knUtzkuSI$HV}$0aw|QEG)*~In(Gzk;%2()A#!UYI?QoV z2l!X_WUuPQkO&J97|XJM5z0vfy|@2G1lI8tP`b?An?i*jJLAmYkalmg+EbFo^#aS> zzU>||Y^TJ6TqXeUSrPtdV|V5pMZ}Jc&NWQ7?V=UUQW|dzUHtexJ#;cTf~IZ=E7i~U z80IIdKxUL_q$5u0)#pu>gFk0CfalX=X~vD#oxTmh&4MX(+@CNQj=8jg3vw9{92NU; zv5>z`o4hC_(C7N7nxbvF;-#b8b86{4lD|F3Dpt3&0IaH9cBP(CGo&^_HBj}vU#Fo^ zEv}=tFh}vxIaqaX><^u;1*U1Q1F#dq-11a@*^6$@?CwR(w0=6<)E$yEU)Gy!m+Xg7 zez|`)^>&}MdrigzxwmnyeV=YrZr3*KyJ#+5ehE&S>NetStR^rSorZ&Jx6Jhg9bU|w z2mGXX-HX~l*Ufi*kY2D)SKL81yl4~96zpaIZ;vA9%&xa(t=@aMF8aD51&xzJ-R`?j z&(^*)G3X7vZs{~z$Wm;A$7(1KjnZ-|jZ&Bkb9l$ox-B7B&J~<^3VJm2OO+mVT=ckm z9VKuD>U(BO7dj?34c>F+$`aL&I)UBNM%LXwCVu^f1Z_n3<86jZEH?49ED)QDi@$ig z$R*#|ql|AN-ZQM(v>`B_X>{^*53bdZ>s@wiu&#uwC-#c@64>_KN8YvIb}&+rN%Bhf zDou0{oq3}nb&qk1D@6`}lvbJ+;!uu%#ZPgKhzCMqGeLvKf|uYvR#G}GVmBG-h*Q_| zJ-kA%ej7U@Vhv8)c;s1WKy6nsQ%1?wX}8l1dVjX^CEt&pTKXmn4%JUi2niFIhAC5E zdYw%t74@-8UF}E84E}EUcY4RBoSYmeg$?=PV{5a8w4MkPVfF1DI-Fy(e&(GxnR4^XyDNOtT-q?Y_lV|k9+#`L|FvCA!d{sI%` z$629}2AXF>9l^zIW=#A&E3fo`YN}`vZ@kDI=m=8^nWzhinJp zK}3BkBWV6U5ruKFBP1&KA*zQtV{9~&wq?s4KHKkr$n2CUOu-5J^#U=@slA>cd3&5Z z3^7_~SElW07fnY?@5JJ77zkSg`9n??w$Nw4Zu7ormo@Fhg9$zR_Iv{ZO!w^;H~ z+h2D@y9P|-4ro7zjaTyb<$V3iN$C-u2)>_ta{6VT#Ug3G;xyjSN*$Qy%eF6wCO$oH z$0xYzarAt#MQSc?fbj}FnGF}QWKx~J)zs~`)p2b;7Mf*V>U!-NmU0LJT zaOqG_9{16oo0~=Jt?u3JRqtbinUMKxA=xXkps-eHQigKm)2 zc>C1|^Q&ufrUs<^0jNyFuA!wd-)TZ!u1r$gXn_9KSbF;MBc!Z24EZx@csyC(wv?3pI=+I?{-|ab81eSH zbiAiM&Gua-8%?Tq-P7I;S&VBYOxkAZ%YE-ZO(u4 zEJ6b2YMB$$6`-a}N+0j}94NWL6)C!wMzW0tp!==R1c~?Mzmg3_Iq>@b-Qs;FU<>w?b+&^5oiR3bJk=-v~OY}c+*lT;**QTy%}hW5*_O@7wF1*6}$ zdLfp9xL%5jJ&&^k&7KS;C#ol9nfWp&Zdv7=wUuX z{v#gkGr8VBZ|W5K1lpXM0$}?<&8%}A$F%1C$Pd_YeXm{`OSfyX6SZ`__zCnrSdDv6 z9solZ0@h}!$|;PbYAzd;#&7ji>*k*CGv!BZU!(4EN2d4w$v#EofkhUpnt4@&!^_l9 zcZxdb{g+Ywc!pTUe5>GBVm@LW*QMxQP{wjVh)?yN=jyJ<9>sOjg-;K=wv4;a`m_m4 zG(Nc^F3z+SI0E3d!+WIF5!`6L0>HKg9iREK&-doMU-2hJ^3v=2i5Z)RpLE-kPi{%{ z;N?MfAT4d-D!0nYrVX; z!eOkkyExbCU&?!#R4&)!p`Dyi)wsirAIKM!5-im(rg5g=x9Nk)MvMz;S0UyE(2|JD8(;WS!2`YS6amv3$Fjc1Yn6K8RMraAmyG4}tRH@FjU zasGPl|Fu_Fx|ichL(Ei0l7266PC69!sJKE6xa)(wULcw)Gz7dpfa})+NTUV_fP19b zP}8YjvH$<~a{XVsseixl*GjjO!_4Aufr0*V?=5BCb9}Tdt$SKMq;(|o2ZcR|dqO`} z1nf~r*<-&f#DCg+r>iAL$AM3uKA9QE(#+WD(}z|UdmldL+zOZ+&#`PzXRPlq(60z! zkIxl{bJOgT(kDdLvF>DxDKf^A>^}tnif$HCQc`}iKX#>Q1{es)+MTNg9|j_tV(Sms zgBMhh5b7aXKSz@26$FP|%hgADdbYz|UDEHvy0e=2GEQDMb8p-WJPN4nb z$^hU2>j}PfED+m+^!I=TI6B7q%iIzEQ+xk%^tD<{mVPRojrt~__0^+04@vr6_semh zYa*RuVRj}8V5)w)Z~uPz&2)LT3>;Sk$7MEu+5GWOUH%L+WajG zf8xW($1c7f-l;jjKj&dY#U}I$uUAv3jCX3Clf+ti3yr9-Jk&5 zSk180prkzF#^`b1+wzQ;=|M7j?Uy{UJG6#$ZwY3msbRrXiu!;sXA>Y3#+xq67V(+R zj#e)~mSd;lPp?^ZR)?XVvJiX1I>$cArkZ_TH-AoHgaDuPO#+X8%6>G5fAo=c!IBa8 zrqN-Ofn%%>lZZ(Dx;37`FGUU04jSxYIR^MrcaC%pp6KAv(nUkFt{e6}`u?hJ<%K;=re!g(wyVgI__ldU zb6Je(ZyxXMAMcNiWzxK-i?KNKXK{zTi&rlV!|9#8a+Z`l$*7f;*Hv;J)g$Y3=V`^4 zBYu#>HuaeOLkrxI^PT>cwkmn05hK?^={J64Z}WNvU=@~T~5?MLbkY+&1~K1YhP#x)zqQPot7 zhdGY|ifT9RxAg}kqg3pJgt}Qvu=YJDTr88mk*-q1?PXSeX8iVdX)Km!0R}76{AFzb zqIH-kf|i*x^SX5xuI!>8q0Qg8>97V(S0a%`Yt4z*CW+DwHnp(T_FE9i*bc?=YS-_p zvopx5)9>tTCz#~ z-jvtP%Xp_%m~usb9I+TYjoi9D&bebKhvl&RAXcbC9L{JSYz-&Sh*Jt^5%)SU7nI-TD)JkRkYs# z>Zg@&2)nN`_CHIdRu@l*RLv^Kiz$0s=p@>Y@M~p*d5@wW7G^7WEDTmLxM}BuqfmzW z#^o_1Zouk6$Uj(5tqL}0#-uJp^+5E-N>k z56(GsLc9>!|0D@Gp$V8@U7)eB__kH1o^eFZdv2*}51DP}l8r*XoQmx#@a8e6%Nl#Q zZj|@u;Z9U7beqRiGp0TkXU%XL0v+7Vdnh9UP)~FB(GWl1JJ|L^j6c*~7DO1d(W`I|ts2TS03FIrkJC`Mml9zlxG!E>pLs65j611odueI| zrO~HuH$jqnFoMDb+lAtG+x6S4TEass>0^U1PZNVSiB$y&+mwxBgErU{K~e{<_l+#y z%hU(c?hWx7j}*YKbM-_A3?Oak71wpPd0ODkh!5T`e{$~?8@qaRVsa+<%i%O+2**Gu zlH0!SmO!h&j=(CU>mx!maiJnc4LcDS;CtmdU%9josZN)xFI)%R%SKHLaezyQR;MPP_6edVEGFkaa?*mx*!kalN*vo?#(lzMk_J3bS-8PC2}FE{j7s@lt!3U ziYGF9=mx7UquOPq3Z(cxKj6tUbwBhy920;~s-Z@sHTqb0^YdZ zkacncH^6xhxngOm_C=B*b4 zxhaT+)G+^mJgnQ(t|{7j7{Uq$BPdOhGR9Dwmdc38e0`YI`m#Cr17fweZZU+&;~!b8 zLED=@o;>7DLwS4}douqp=Ia^Sz)@E^Ym08Eg4J8Mf zYtCDWjcts0cO)8Hl4H!fl{f?)v>Cc%D5bbI;k8>URI_z|zm)VHy^S?Z=!^OCqfyv? zsllwZlP1^9hP_oS3D(AG2Jkl>?5r#|g4CV5?2?woo7x%{`SNj}s>b|0k2!4Hz)+S9}L$pK>p zFPtO#XGz>sWQT$s%>5WOIm_zUbmQtpks@PA&&l((i?HR%B)IfRwr-R{zvepuqf9nN z5B~sU5w!hX>H>X!j`wk%@|-fvIQWO9jo(Ji>9?W#kG)AfD<_}wkK`n7;UcP~xEF57 z3wU>67hh*bAVJZk;12W#QzKYUt@b?U&dcp)gR0-cHA)8mSgIKD5|6J%@YMR{Rvok) zct>MGOM-c5^MEvGJTkp%+#duq%r>R1j^TDxt&JEzUk%PbvC3t%+>}NL8&a5z`TiX9 zBz?8H+WRO|vN=>=g){q&-~5^DQv*_5Q11YfYASkg@`p`b9eZps|7MN@rtjkzpKnx0HcUW^DCHCc0a#wR6YiuAL7(;dWl>Ly#Q4ES^Xst9Qkw64 z9Y`)4{tk%8k9mtEa-X+}7Je;h9x`yin12cG?T@W=sBR`p`6R{UG)VRP+Q-r=hD3>7 z7vuV;R&Z6Jj5sPJ6c8)kA!Q2p2h}ANJ-U087rHTa850jz@psNg_rv2#s0dq0KPgCcB$9}J@pS2gO5ohtkh?q6H3 z6Ef%>CwbPQiCSroQ`H61K~#jw;a`PKpD{(dln_KY^2OWezXdE~gcm>{|z>B48Mp0|50n?b-58kaZjaQmY_> znRDW{%%sALs2@%e=3#&4bElqDLv&!XRs9MYVS>SV6U|?By_B#l#mayY}7pCn`L@Q2O1tqbq~`!;V@RN z6Io3+3ZSi3(Vv;mnos*CzcYQcSZk6t;ToSXU2E~>U`8ObR`oW-l;{b-Qn*BMF{gqxEW_DW09!_)r|x>zbl_y@{3p!GIt-mO&53vmh*RmFL=`r z=^ec4T|6BDZ2oY|*t!|zt3x9+?8U;{+NN(nyB`3@%7v6tJGE{75oH#zoN<)2NICeY zOu2`aYbjbVZTDF4l0Kw;M=;s+w6t!b14ZY$8t$XlN}`%s57H6?K0#_kxXOJ=A1F*q z_g1D8+t4|p>bQU!%Asy1^y{L`*gHG#O4L<{>7GJ^v@f9-fHz^Jr|n=KyQJMGIs~;Y zRylLv#`x&8<#w`azaqn`i$CZMm)4I`oIBiu@=yM1-h$yw*tTu$1vNVVY z**=zdc%=|YpW&uss*|)_P}5>n$wEGkz+GzLkmE(x|XBECIV_wF8yQz?nvwxm3$7R z?n#lQ<+b!%D}QxuZSzPSaK}#$!ryt-D;DKf*E6Oj`?40jFY#Cwy*q5(!t8xoaE5x9 zwA$boXy&Su+YFEf|XTMn-@U=9qvpPXPoAn)a6W1bmHd%dSlDVoI-kW)JQ3 z45#_dNK-$JE2`9`gXCE;W1YY^ZP#x~sbwyHM;%+fvh>gcHg-8e4Ev}Hcq?X|`PlcR zC3nF9(Xe`n3vadE)2R4Q=w3%MO=Cb=cl6|7ZvNmQKiL7%6W+a-8`V|C12`afJO3q; zp0t=KI-Q(zr_n;h&vR}k7Nd#PL}m7^+t>l$uQ8j7-UTKn@aas?)Wiwe+wzT4-|GTU zDyH!D>L1hjPtQ>g0;lZ8JlEH;i1jDT&+%gH5KG~@hW>G*Azw;d7H#Cc5Gep9g|7PE zi-1GRu(`I(%-;~sub%c-2lyyI96E~L#`@7aHP-@(4P;CcI)x<*alzsYV{M&L!%53~ zX|*Ca2LN8?Q|n#&4vX_gmNReZWQt zj_sAEX0-*;_=bY+XU=HVo|-TuaZdP2UCyu4M41-nPWbh01Y^7OJS?ZV+^2YmRh4xX zfyQqP{9$(aRRWT0@4^1aDr!OZt6~pJEO{Wy0a9m!aswfpSazkG!*LyLq3SY>c^rUX zNg~Wj+O5E8gVSK>dxux~3O?l#MO2d}_8Ea;o*Omj+(aa_yg#F4 zyRYfWL#angg7ztE8L+ErW)%(s;^RM5K$EHOXxg#81wtl0mB>>VaL-gZ*s4bP zql{*7PQph>A>hsD+zC;lGn>vBP645k2NRg5KmgQ8Xw>fxKy*s-UjLF8t;$nl+yo-u zu$SeTeGZ6nQi`VG$TP!$xxfF8CXvr?HXY+YwPp5hMzf*iV66r+k^rIg)XSw+O%ovGSdEGu)WhaLE-@tkxVbXgskdA%;&^;`-yY$7|p`@zRnZMxe!;;)P(SO&!4*Fn3c8o18Y}ZOLJZ zCg+E1os)U&hi$Zpm>bjT>5ERUuBRu}L0WR+%)C{cA-?SeNLDezY%#NHa+Zq|xTGsk zjQ$E+>1xzsdqK6Axo*MihhN%w;%^cHoEUJ@HTNlM_W85tCfCC2;1+RhqQo|tN~yWC zC3Zq6xJmr9gSTMj+<>RZg~%2hw|4;O=uD_r;oJt!bi!4}(N9}0G|e{X)xmga9J(sP;v*fzH+ z7M|~0L9)wzG3!k;+UP$!8Df#9u~8_iKKG2YZF!hZy^}VL>%Ue=G%pkk43Zev!lq_a zUFqI5n^>})NxUH#rYOoLZ?P6Wmc6siZM%RT^w_9~3N=`d?mgd@AVbCIq)>uPH`d-m zIoYN!JYYHGdre!q3UYq5{owW;Zi`Z~_B{X?3!NUY2GxA?X1wDc8E^!cs8BwOsqY14 z;cH(FroOIR+X&l`Va>B*7u*d{b4y}GYuWE?HI*XJ;?m0DWai19?B>RsUw+D&2~8jG zcq5zIY0ZSNzWAz!U@0$501Uir4?_yz@kQ!nZia`(m2@vEo~5vJ_j*np$tANfXiiwJ z|HHg*bn1yEd#=Yzd_du#_^(g_`(T~Fnw#j~qaf^5uLHibpLSsT_x2g)Es6tsvF zs7-xfaeVT}QS-7XfXF`@{thA$0lMU*G$!M24q zo@;<(F7!TlC@J-o>b{BmAD8r4+AlS}@w9p9^!Xh}qEUbl@s0W>Ivd)DG0a`1DIw%z zKiDWjU&L0$$94`W>A%J9IJrd?Qg-kIn7;UFE+YWk_UOhUNzoktf8q@6e4rkaO&T2r z=Vk_&zQhsOhr+!}>{Mc{vHe>XztJbE-luw~`z?X%e$UOA+#&#i@8;v$p59sbS^~P( zcRo!cv}+O-uO;_>eP;7M#};-C@my5={I^?(5>Mqh(o(M#QO3i(KR4mfTh*HV4p85^VNoy2`x{d5Btg>ahUrccPyx~{t#W)Rjtt%?&kI;<82raJ*q{eYgAB8*ej z0}Q76G0I!9)u;Yb{j|wSUl-qwdvx}V!?6uj0q1(9*SP3CI^yEuY%V}>uDHbEPRTA$ zufxN`!_S|4Bs;MqLwwY<~PeE@3o~IJ)}e3yyui166|al#ga;V2eLcaZ)>`Ae6Z{(V1O+;>3v_ z6v)_vr!h^Y7g1b4T8h5EEjDQa64NYLa62ETg z1c2bBDkJe%F{&EeW!z?@MyGM2Oy)tJ1)JA`iURDxt+w^3~N2ZtHy%BGoFR{0b6K&3t zY;DHO))QS2IqdpWr?;10`y+f$Xm3yhx*4@3)K>2KPi`;#Xmplj%-#>O?`es8{~=Vv zei*&AV`4+sJc=}Jcn>>bkc#ju9oz%kzws)|RntFUk+>w5T;Mp}Rux`nlT#$wwfMtP zH+m~iK(Miu`mN)!VT%+q^_?(~IH23LS)*IMJAU|#lU-Hnh4xA#gow8k#ooW_E>76J z>%!;}@k%9>(@_tOhkM3Wo%b$m|7%S)5(DD7(E{tc&&^wEmrF}5y(HO4uJuNgs)i8A zgU1K3^ZifQtWPzwZ>5Vci?FXEGX_>UMMqhfLEeUb;tD2WixWy#yZ?kvoYQ96Y;+1K z|2gzwX!}RCFihxy2fGjVFC3U6l*ELwz{H~pKNmBp)RKUko1Hz9=66`elm-XLY)`PH>>CHZg zHq25{_ZL6M4rZ79z>Rb?ryIPk|88VZVrt-;aN+b@_N4sPGJ|E5*VOObRB^G*^cQ>m z!~h#nJf5sz*1s-CoohuURR_3L86tkJ5oMj26Ega~XX@Kq@BF?PP<|b^h&r$Z*m?SR ze3~kvv{&8WuoNvmUP`{4r)P`lM&{s@@JYxyA{~k!z<-VIyoQ)81?qg`@1n{=^Y{*+ z6XYFGi>-bt{H{TIHzcOIN{d*3y-Og&=08eXyu`aOtx4}vkHtst?x+CLOV|k%za`q5 zyU3(Ed{fb3aXv4JEef;Ek2}sDSl{jO>4dXNnomrO@uJXXZv5{n-42D9ri7E(1>iqWOH& zlIKzoe=TEw%~Zi_K&&12iTXQr3|O&4wlZV>5{JDa>}BT<{cc+OKLFIITcj~z)p@7W z)B-H7T?1bPFO^uy|LF&0`p+mK4OW%{c^iH|zaC7} zgi(YE$9}KdR|nOAnE~YEa0ptLdky*lW}=9i1+Y-J&o{D#$vj#eSbSx)ErVF>)aVBo zeoz_#|BrS5;QDs0lM@5LBTl8Akvw0`?yG{Ygu$Dea3l7ngUTG*+Q~uDLG;_3{JVz_ z9?Xg}Sr23nOgOx&>%#SG*MNkF#;yIRUyw%m$hMlI3$8L3FBi_Tv*$D2Q#D}*BK_sc zDUV~ew(~MY0`BoMVA~Qjwz7IFYggg6nU%HYAdpmI2K7N;N=h3Dd0rVFEpY-GQyvarSq52fMhoznCRos*-b&-_?D(;||gv;2G>y z3Y|SMm7F9y%BD6up{^ziGH_Dk$U^?Jx(oX4+vQDTQESimzr2XdCGJF^Jn89IH|SVj zv5s!baRoCov$4q}c`0d`&S&1w@$77eoz`2KG&VuYDJbW*!^3@#9K?9}C24I}1rxDf zC$}B=!JcPq+P6&D2ey88tnFl5P=!;ttAT+MUq1VHC&}kC^k>hfsX|To_@L{iJT?`8 z!bL;|bUB0W^k!Yv<`WRR=K^`wJSs!@Gy&qW-szD{G-voN$1qB^VuZLCNd!yUZ)DUm`yhaWH_YAMF z5Ls6Z{#;NLh$c-k{E~&aBWcB1R)z8x6bCn{t^l!jsyYZ}%exwYVU8@9Lz&QihYD@L zQZydbbK0y#41dqQ2@jw2g}hkOB(>XHs`~7W+1B-~35VDE)2yskQo}`Q2gZNR>eY$t zcbln6n^$=(osa*Le=bEp>!zT>kP6be+@3~c2CX?~dC|uOmo^fLh^q_)=B_S}?`Em{ z6|2Y?5odUE)_KRX*++jrt+v`K9a>t7E_I`-YSq?SwQ8?e zRa@-6f>u$jU8DBiB35EkwQBDKL8@v7v4arL6}|80^?QC#{?V6Lq`AiTe9v{x=e$4D zv-l)e7g<&G$5_H0_w|hqM!9fh>G*;(l`bY}%TP%JmjHCLK3HkG<=kN6M!pYNI-~gHgL+#ze z=8Chwu%!H|pL8G=70$FCjZOqiGLQrtD zH^DSqOtRFgZ$^zu$EO;W*HD44NmA5ICPMpF%5a2jh;7V8&RSNa-+f?4uj4Ze{6|sZhCBL=ZmQ}bGYrD*cQwQ1?9qtp#8{$_{9&LoL1tx= zXC}(=fS$;aAcaIaCA>@%cr44<5jOOV$CS^a*BP2syki9m>_~_B_J*L4rhE%QD!IjZ zT9<7emL}z;FTvBCAOK`&Um>#)T@X~fYc;In-HpUDS8K6=i2ktBn1ND4=dIrnX#JV( zX-@+*Y5bz454JSZxaN?p*QgjcE5HZm&$vv~3!w}=d#y*;?R9o_ zBi49-7va4I=4OJxE*SH}Kj#Vfc`m3q_TSkd(6#5l=6vrFY($@g+K0Uv5{K3xLP`}* zg6#3^%cJ7+_JWjJeNU_n*g?n8w5I3X_jM*0Iwg>C(n!=m__A8h){y_8)ZT7@@qx70 zyn5t%#}gFP!TN(;-}JnMU-7V)*RjDIJVyLr+qMyBU*v27SH1;D9F0^P!0|Id4AVa8 zsL25W!D0F9)@#=M$^Pmi4H)9bJNXrQTJ~EkTWLLb|B?{fWA~8`gWQXAh!uha3M{cm z8k5Bk?bGD2w`G=UE{j1fG2;Kzz1}k;&l0^B&Z)LI(e&T1ia+DnMGq!Toh;cN!gnEZ z4sI`e4AL7m{SR^4E^oCs68K8*29RDtB)BTiM@pavXUq@H8XcmnxFJVNT3RI<2CO~@ zzpd*8eyk>Rf9ad3AZo61KZ?)s@hJ#-;IFGFW|Yd5{9fv^_WBdGJ-Xp^S{-&%3>1uC0il=oXqT*~*D#06Df7e*`0 zlViZ3O>UUKl0TTBGVhlLKr>Jex#f(_;3M5^CsOPSt>LIQKC^ijlVUH8G zN~_N|!;g(3Pc~^?%;IFZ8eSeh+O6+nwwPJBsc)&b$Jb977fy*W?nj&La-JyQ>nvlz zxZ_F1`x06swU`>ze52u{6(^&ieMHe0C>ZxN)YgCW8F9>Vq4EGcpEQPJ$J+Yr_m1*6 zKG&zUoll0)ybm-1qRcN2g6~q1H3@x=93XoH_9dz|+Lew?y6+VZq#ll8D|Zh+oDB9+ zyt_3$Bv5K7=hpB<4Xxs>1ov-xv3BYRU+z9^=}N>wsvg=X9?@dg@ph3G&yE`MQ}@o3=u?x(zGe=Too1wvJRpdG+OT z_cWvr^1X|KRmUXoLYi6^Y841Z#eXgWLjQUlnq}2E)=bFTzHhq(Fd|=feviPa+I&)e z%bw9ZOAJ+1R^#ktS*vKr$omgQ{4xnf-m<*RHOiqB9XQJEgk_kWjPOHwCR#TF9%a)vkfZ`?aFj~BEYK^M zJoGcm)bPY_rO32b62Z&JI5cl9R42A}iJYSRy>WjQKL7~?VyQZJt-rT8P|p_D`jwzo zHm?#2u^IGyRRnRnvOZ@hVZ(|2f$Z@VHR0)~ijCpk#4UH(HcuQ+BzV8E+dP(4#(-aW z!0X4<=HV^@uKrPo6Wz*z^~F%lAil7MgZE!?SxnWTp6n68hW9;lN{^d7w5uK|`?L^V z5v?D)BZZEG}|QMO5a+II3GCM!niC@x5UGc!y<$&kB8c0kQOWf#imm z_+?C-1=WdRLh>B&;ox#|F`1*cW0K+9^ETVF0a4}Tu@DW!=MGzq)x#D5rv0DldEwr2 zCgU*6*zxg$+^tuQh(r0twBvMd`)R|K{JF!OI6yv_(E>-v;`hI)?2dk%@U#3H0j>c@ z8o3!jI*)XFSRsZpm@x;eew+fEicbqN&Hf-CoQzeO``T2oCuY=a#H-wO&;uL(x!?k6 zPV2*}8x61db<|IawK&$|Yk|Mu5VI2zOy7=qB(b=TZlppibn3AGzXrSbj&y)H3R%C1x9y9WQabh>9`PRV7AN3^k_7exw5Nr&D+zUz-YPw#xX3&X@NnXk zIRoGFoq@ePV0x8L9stdGr%hbx*hAJoJ6Sf zym$u~r$1ls{;jW1WB56gNP2mAIPU<_X)0dcs=7;EyJHI7AX456i+lf6rDy0`V^Q^U ze{**rMxA@|Z`GH^KhWtb0N5cX-sDQ+=)%<(E$(_N|FjpYrd#}dGpHc&R9lXy^{@gs z@bh6vab6|bwCY!5ZM>6*N6(Zu%o?1MYFFHj&8+0)&yQUw7z?Tx+da?m3woWTKz);B zBz%Zp!A#r2f?6FoJf!&XS?L?-F_c#Qg1?S2V=E3QR{>v1<8QW3wxZ*j+FbP@`_loq zBWs^oHMDS(c)!A$dY^3aF}Q(8hczb0NZ~MX!dNiv`5+al5Wwo~{zP^2x%~09+u6}k z6BY*MVE1^C!@X33z)+fRR*tmtWFioYaaCnSYe#D$lE7_^Y-Bzm?l66Y#Zf(vgEZ^~ zG1?MOiLk3aR^mUnRa6Q4!lH+xCXLv2!&~-zGE+nqfG2`&^7zd2?(?C;D zUwn*9p*2X}PFdg$)1;rzRkR)t)U^m6O}mHr7x~9PIk)fj`T;qA-G9&9R_&zSab0SL zs1oUPxuVCSU)Oj`P36+_hqnNz*!J>UkPNTvRcIn7xll;U&^IOENK z#Rb*eBe)`~n`Sp4B!oAa?g<0{BVgkSg53UZL&Z5lhkvPQu*#1ZH7LuoPI#}szlG!} z1e=>>R?1;|gy6t1T&}up3Y+7ujIx~IVV#Am^8F?9EV{YzZ*qEJ*Ek#nLgZNm2 zL+==gU>hmum;XU{K2=Sj0V}4z$Lz*M)HU|A!k@$;Clv)2{WIV_IX~@7Cz`Jlghvsp zrqH)6+p`{sF-w-xUxYpUqopMYTh=@Zle^hRaVJ_Y^C}R`=u)EVE1!>NucYpgs6F}>>eOo7VG5tkw zUH6T2iHswz1p(z=aJ5GaYO-4{Au0Q)+Ze*_zvee?IWG|1%SX)=1>kAr+>Y-;41cLo zy=VLp0w1>+twS$0${mJ?+#{u4?(Pk@=@iqidFi`vSUlxY65QK!pPcZ#lmhaU(^sEi zTsD9=>xLd!uGqP+0N*6GsO?OvE5>wUMT|>BqHYp#(Xk6z9jDc|`t#^vu2!sa8hkcX z-7liLt)uUoL*Vy#Y@3^~a5b?r0Y4f`5A28Ci3+?f$^9!PmIydYP&Vq`k1 zV3x`^#7a^JV1tM)gt@^OZ8?LetJzm31Qqg;$EDqO>RGX|91ZyJ&(B0wo19kCQQ#JA zQ?)b5Hu%R-0*bHLASP{a-f4I!73n+@(`|f!oJl$*^NfZND$6`; zsrRvbGvXFa0u1wc^!87ad9rYVi0jTVBptw#CbJKm^>EPU^K9MHGaM zb70(Jxf3VP+%>yIrv-koLvM=ASaMCvgNxfB!yNEw{W5LFIxqBeYOHRC)?P(VqBTR^ zJ^cz;A2BN4O6$EHi%W-%*2}ENwUGo`>p;D|3EEx&tC4@Jr2kGa09ICDaM0iOc%x$n zeH(;F<}Cri98TN7J3xDHfH`&5=cx$G*sq5CSgYhX1Fzm^c7{=~8~E#wv}QU7llqH8 zQzRhB(f;;I1bZJ-ZX3}KLg_DeXiKU_aAL=ZZVSc23?7mBCpJRi6$8z~sDma``;&+g zRaDeT2I=4`#BN5;z{Ku=^Q8Dg#kpclmk4{7jY9G9g~bL!bCF>JDPi%p)NglOxEQaZg#R*CWxf%eec7wofNuV3RqMp=)UPFW zRO*Jj9~plFRYi_*M5}FS`nL&%1AhX0zrY;wF@29a?hC)f7zs+*TN>r!1&#<_(rS!b z*8dHp=T+i=r}FL{#r@k8YDkysiET7XSt#ASqtyira|h20?fe>v;R8^s0HTu}a5ku( z@FKFx2jR#bC}D+Sr|`xVG1HUIbEcFMk*-cE=th zxnN&YuhSM=p@*A>4|qA)g){7uv8bZO^dX2(c=(5a4K##Icu7vlzv5q+9a!-42UeTR zTm#koZMXvLVW6XvG9-gzq7j;kq;6k{c}r8$QX&!yZZM(=Nx$Y!F8k*f_fR5D|Lm#) zASr_YpiNS@hj=6>CTnR^C-j|+gjMH+CeppZX5;yt`>U@a$g`zHsi7PbG*DSm(aKW&P5s~kSNmd94`50QqT@SPruTHj|8gZL-e$-!YU}MkfHpBrAF3G zIlib2xmJo5?5*hPH3auP#~9xIQpqQ{06m?ZSBx{Xh$sjLAY2KBa*?5>l7tS^ZpRmZ z#Rp)sa#ug~6%2`V5j*O89AEX=5ch@H!}BsJ?QZs}AlZKV-&a81!X#33N zkcIN;VL_t+JC{=o+>EJci6Fm6cohKt?P@$>H+20cAh9_*ZQB{9cm#wuGQK#H#T1eM zdM~kA#i9DJ*F1Wq6%wDX9g&m~KDz z9=g|VI^@kY97q##cTN{~y8jPWTwxZ~WoKuP$%&1WQ}ctf)O@xD*C2D&D79SPA5Mvp6TrMzxp=?^K=zo z4YFROP#J?sk_w4@6RX&_0L|E$r94k`NoUs`ZU%z%sfEiQI{y9)c{ zhv|+j?Q|u#iF$DfCGromMDO5JrIh&GroU;X}~(z<75wgCS!M# zo-_$(--Cp%ffv;?v?w}kkiONM)S7*`uXw~Do0U6nsiKwjzSo0!ry`JTTgze_9|sR5YpbL2j1ul%w7PTG=E4&{n&5t3z&{hx>1*#VG_i! zxv2SZ9qL^*Wpm6;vEOR=NnG4n2z%G%e?#)1a2T@~nAfs@bZIENuk^8&De%B%buP`# zBb(1NmeWA@MXw<Ac4A_h_P-Gj0I2vN!dIKr?OCfmuDBJ6&H zFi(V7G!R?bxbeMB$n+VvqQ`e|ZnAPLV?}4W6z-OxD*YT?w|;it=Lyh$tbiWq0{D2M z4&&f5RME4y^{AUAh*CwBZ$2H3Z0X`K#B>GoPS&fba@`U9dK~#WtEyHNR zx|l8bcA<3=d{+DM@1*;JT2AGtLExcadik=(6z@nDK>HG&E}8g2hwptyK>Arw`Rr&2 zLWK1JUlNC93l&K&H{3jNo!?FivTzf#_(hz7bm za}M+h=Xjz{;W<|~v^2iN#KCcGLcFdxW_3}uY>3FpfZ@MEjs?I#uTK7(R6d*0f6|d^ z*|LQi`ESJSl-p@ZbWB1eHT&XCjec$I1ht{)R`M~VHJC{2uyWnDh`Z_*QiF_YOCNuM z)kCt%L8U$kna0)J(`QY)pi?l*Zeo)_mv3*u2pSFL=S4w}^I;08FJ!h&6Z&UjU_eVx3-;ZP)>%YxGJlAOe_vf#8C z4f(VWc83Fc3?^aM4Qt$BW?)AI6K({hDLRYq=WZU%h`qn^b$kGSJvKX?m>bxp3FERQ3H>b_6pz$IEg_n-w4eL%WN#ua^S#69JFr zM%PNVsQ8Gxy0iA@1Cq@1mTUWROVa`Cp1HH~iA1-yX*@g8*2mN0A_lnemoCLoRoQ&k z?JKpR{>4!mdLUP_U6tUvCrWl~a;FJx6@}1Z(0ms_AM=Ro^(tsXkJPMeL+n;)LpOe)~ z{)$aPrI9oKDuCPt4KrOIP9-R9cuff}JSFFQER82=3Qa=m_4FXgYvT$Ma`hHzwF=^j z!SZw3Y9v+{|JGfv$OiyZ=A7)*AOt|1V@-?Vw>}c)8Wn|A zoc}Qc(RB0oEdG7?hXDRoAg`Tn*=VBZhHjg`YP(a?vJRXHF$4d5RjE?^oxs(LCtp1$ zCnt-_N9=&*tX>~z?->8B`9%ASvQ>*P4r}VBNX>uG<>2b}2@8^&pJ;3WME`p`UO$ZW z&TPc5Mpn)4>g;qBLwuPTjr?VR)D@6!2VD5We*8oWTwU#)IDFV;oLqt_y6jZ^LK~oS z+6eaC263EPp1?T)$0b$`?|TSmVPL_Qli_ z9=h$CY$s3#7!@%r8Uoy`5_5otdeMY}l7=tYcXSkM@F;v>dpoEgN!f=7b1SMg!4d@K zP-*Al0G|O$z7t5hWIApmgLzY6BU^YJ{`5bs6yPlS|BF4*a5Jg@3AfFNmT|Sk9e6GD zCW=EzPmCJIw_U1xd<6Fw4~y2B=nIG(w$`uDMTBk^DTcYtc;tFQ2K ztRELUcXU`92^IKzE6AAuV@I{~X7SnDFqnaDf&&2e* zJ$16@q%s^47v=q3EFwpizkb^A0QgF8@^^oZx>h!e`|hp9@&bu;43N3UB0RH%>im2o z;>g070LdIk;&B7)_&lKj5Qp^mT_Lm8I?r|PC|O<`AZw}st-4jvOb;i*Zyn&G%dh0y zufIhh=}JA;Ftbr)ou-BVwg0fn zHIZ|=>`>0>y9*HDuoB0@*>{?_Bb<`zJ65j-KL^Ynn+bsPi}26cdUL?uZ_c7r;8eE^ zvYK63MgqIcj%Y(=;Md^3gy$oCqfIDi3mBkmp#~|nt!AOxgW55$D-fdA`Iu84Id9;5 zNhLA_UlP5C=Ww!nU(6+}^_5OjtbZ2|-!p)`t!Ft?5|j#*wNbO%Xz(IAu2u{b0S#EI zCa}kTGGIRvgh7lR`zqHhh_8v{OeB}RHht$DJ4^cnj+#pR;v3BG1F1kX0!pCWr1H~T z60`~wTqxfnZw!o)OUJlQaxn^-Zg&11z(Aj%q(J;h4K<3X?y5(wr`(;_2l73BM7LAr ziN*OcYCB1tfh(pe0k*J*tEpOm^lZ=h!RX^I;QNliN+glvrO$8%8qbpL@ zoqsg3hEZ@B8_3jJ=!DL@V*HK=KD+rAH^-(M&WF7NYAqNN4BFcr>*CsQQzCDjH4Eo8 z6Q}fA>$7{;a+--Pwpr^bMk_*CW5f$@b4f_!3b}BpX1N{A6q|XZcJBQeJ+z zk|w01FZOxGV@2*-#Ygaj)%h=To%_^}#M0hu#|O=*mW+xtnm!1b`7_}l3)nCoPBi%| z<B+Z4yQgyOP|d|lf1;7Q z&=4=u8naN@tL`cILzD~gg$n!D1?16pwSj@AGZi=|%-!@^;3@A`9lnX^I_-vL7oOZ* zegw=IkoU3mdc3%c)mN+eS-5THthcr68pW@pt5fFj!~(?}t~S>QwHVv^FKZA|-T`O3 zZF0G=u+isblRoFTZf70uvkHs7ggBOTb@q?bS_XN{VjKeodkX01oNcLp)x^DLw94QI z$qQWJYiiBg?oRN7dZUBr<9Wvc=Jo4yv`NG?k4$Z!nNAsS9A~a?kM}V!0rsy459%39 z5P0CQ`82+$T5@(8yruHfDnniNwv&<*1$(7*US8v_@KXXZ6LNb%E$Im9!K96MI%^BJNZ~?{@Hg(q2BIyZ1i7BQuA#nR*eM z=WZMzW=wXq4fP4O&lJjtSn;1}qFa7xy6333u8tw{7=G%;_OWuI0gIW5bGM(N7n)Y_Yi0rdYt??1+X1A(@lP&q^r zAWPb!pOHP#x|%wH_)>P|?u$X&Ej0~)Q!7B%SE7`j*c8Fcla}srD`DcpFIVa>1lK#K zRhr@y=kJFFie`xsYwlt$z}kLb*SM#O27GV<6*F9vg0L(Y2Qx{+X@G?QHu^{|;Nm9L z&QbMYX}L?Q=@aPuY=g2&bK&YY9st6AxhiBvt=)FklY0B8|36}&VRQX&DU|K%ir?Qh z(#O(?Y|eyCn76Wq&Zl`U9f*%TRcJ2Y5`yF&=$!?+MX)g^P)|y^AIYxn~|tymp6?EjyC zdC{rwt+E?ig1Jz)BV42y@H>tu@4kPFqxqRpH`!)8my8jt^m8wdM67i-y2E%NV?c?G z>?_n~!1cGTEd0LW$1C=QZ)rdgkgI>Vm8V_Zw}Df4SE#z1Y*;=->q%#W&?=gkNi)_h zcvL&k3GD|I^6&aJ|5il9oCjLO@S!Mh7t(Y9h?=M6T0`WqqB`k92(#~`n-NEtP7IOX z&hdoVW}CQmQa334Kj%zN{ceP1`HtIJfIG%&ZExOza3l((*6HH@Kn}BdP>Y#wB)cu7 zlin&WVX9jq&+zF}p{%nzyeX#0-R5%C5n#V?0rv*jR%LGvmBSVn^G-o{z_NGPHopp% zl5b5DoaOqE|F78K(au`&S2mTTQ-CCc-bAQrT6*$t;F0zIkxVi2ZK?;?TbBRwmo?x! zQL~Nyz@iKR)%EF1a$6?`7Ix+wdGP{&@~?V)(05;7HL%LhBH3Cud2CqVXE3MXb zRR1c?C6il=Ze4|EW$2rW$6Nh*>wzf#_AB2r8CL9FbhH#@U#aXEOio1xsHtyx*b=PS zPEUj?Vh3 z3z3T}@k@%_Bjwp4eG9T4t4k*24?V3TgSc++0&W2c#d17iYkz~(&w3N^gb(}lHx1&efF8_nyi#_;U$YVb`1in( z-!6sni|bf5{+?c*B;fGPyC$7(eyNKUSF|b-D`MPZ>_G@0Bv?!rDB@^x&I>-CFFeEfY0Ufu&3@XoM>OVkCG#M~iotV6o>Myy_4K78>}T=S;&F+XM+ z(m=9_xCG)#Z2pcY+!vw$+gn9kx0xlE2|*0K%Nx>_h3(eV@aq>xf3Y`eA)T7iQY4I3 z`u+6}qFZCd%|DKbyuv2)DMv`>xEk4>{BDw)-Gu~+)2B)=2hSE9Stct z>`2olX%l+q+$I|qtGwH4Da_GN4CnjN3lA_BW8nPxy~JMl;y)*@C5Mv~^CP*!W$2C#O*R<9|)-ORnXT15$>$YW5|E0O}24m|Z~{cqu2-0zbfH+n^?Dqu=i*wlUW zL$gcfDXvvjB9*&Q=@@=HXWV{z3<;~|b2hDUoc-`Q;x4KbC^&>VL?lnYl$o#uNk%~x z2WaAFytdh)gueW$EY-TL!>&UW7hV2tD)dr4Y7YzLjRFa(H8boMJhp-FB^$Olx_sLc zqs`-dqqUSEQD3l>Zm7A#c}rPBe|_QEnonN%p4d%`JdR~tUoKSE%u+86(~zqKGI@|>HqLk1{1Bxqh+B$o^|n05dC!gUhaY+Z{}T58 zQ`Y1*(zgPmQWZ?|&PFolu7oxkLL?L!q>de{6E9HDt+$xE zPUxsucMIT4KK;5hg3E3l)f@g&$+?4FUm$R}>d+1x9xuN|dz~rZ){&oAq~I7?6#&-I zJYYj;`FNf65NpabQ~Z!vkmsb9rPBw zsyUoHeX(1EF^@3bEgebU1J`&zEcT7?5g8itz@=S2Jy-A~=43%2Xt)u=fMC|=5?5A= zys~R?yqn&HqoV+w^(gm^L_#g70^pzcL&)LMN*d^{;=VUETDWA305c`0T{L}uAb43h zpA3rx&3~>x(noDe8%}E-9`*R&nKOVkGsKsCGS!DPF2Enjw5beY@t&i*uiaSk&tFWa z@N-ui+DmLjA~_e3Llo1w^f2dPwnt*m&_><0uT+j#v;1m%c5SDmOb+pj4Ff8xMH|zC z0h3N}FA*%50&Rg2G*|zVE1sL=5c*|ox#9tucEGz~n{$A!pCmhGc!+G=sj};UA&#Tf zQ=1+sh}q6vxLRY7Fy6Xg(@@z~-^?Zk@8sv4@PA<#1P%t$1^)+Q2o;rf*%VZ!6l>i- zg?+i@nl|Leo20>$ff;Owj2rX*+zI9)$MvXydls>jfzfKF6nr1}+4-U}&hspryK=1& zOtUcEr540Xe>!c}Iu|r-P{CbeMfFLB8q+F@Qw3<`zA7R}TA=QO9xH!Ri<#!V8@JvU zWb6kV66ZvFg$OBLzpXELHJ3t4ztrMg)?F5QpE>purwC%MORDKR`?uWO+;)k+t)z%q z?(5Mk+Jq;ne|~dEa0dzidlcxgpz$9xoRE#`kc8_v#yv z?I=W-i}8czK`{ITFL-r!^2?TLe`XosPveCW%CaV9Z($D2!h2ckUl*1eb@T6B(1Unz z*?#IQVabyp(C`mnlf$+h4CKx<=yh#MLSbLis(e(j&l#+f?#EWf%<*K+E3)-a6dZ_& z55Y#h3VkwniHQnuDWGe$o)~2zNsjagQu}YOc}gZ$fBW>Q&Rp8;?C%@Qa#Q1~MnCTX z)6EYaIGemalHP`v4{C&JVs`Nxb)t zpCvQ1&^D*$N0OM)5AmaoKYG(Q{1XmOq_o>~3I=;mFiZeHf%%Ipb0?wUV$}OPx`b)V zfUnJ4Hn*2F*jYZwFi34|It0JHk&{;Y?o;uVX5YF6<}_~=Ptw>m--F-R!s=XEG9iB? zOz*r)obp?Q9%-&Nay}&i%3l_Zly*0+iv=_tz#QiMNyO&1cl24$HuXboB4>O&?B@W=-fPfV zia$#Pd)_91RI6pzNF_@gc0yR7hDD=(0c3ulUS+1;%>oS|c(w`>SM-(IE^ zsh%#t#MOquixfM^YR!UIpO^6J(u0PnRAUkX?tvuPO6s*ufItw|@7rJ@A0+Q*G5$E9 z;T_eDm2lk7&RXV3aD^75lL2htdrXYbGewb4Z!q>Hlb))uu@P?EU_4tVg=4)+*Ll{T zDyjm%i_X-7N$aUOxV!xM z(L=K)0}kyoaEF)ke>5(*$#~{F3uH-5n3ahwd%h_bLV3BYsz7f&v6ba|^U#wF3k+Hv4s85nOK(rNY&D|Oh6Yh$~rVoh_m4vAiv zs}<|M{$9lMkT$P<&Y%kJ*%$q?;=zh6D-=d5AB?T<{Awr;5O_l0OhlRaay_NprZ`$0 zm3xnhO!@c&&@2C7uCt+-47)#myaeriubF?YjPcL?l*UW`9w#H$awsP#%n)`?(ECSP zX}m|Qz&TqH&;CBfZ?}(mpJ&?XG#j7i{pXzMX1LSsh?ct~i?{OScRJDCEvDXQ6tfZl7c9PC>o#x=S;>UYE)i{P<=K@q=7EIk(QR;0j=P^k1;|Uxhc4gm`1Z% z?G8(>U;6rG_58Lv59{qu5q@1pbS&?Gb!ap)4<2TB|ERq%TS_S`9Pm-o?DIU_pI&3| ze*9S@W@22BOLSslp*YHS_7z0z-d^wXC=#kZ-2s*!nEa3%a8rR^sjV=4SXg8- zW}`@E1X)DEzx6yZ@j?qcOKnEh;_-7I5nm{jilf>pA_#@kFMB>qRicK3Ui_KD_Eh@n zXG6BgIovnPjka*!!vMi2^t=y1ztqgwxA(k7J@DrmHktZ_v7g%~PWB#r4?lR{u+Dp% z^6ivnVX9ja@xH+wXKY`}ReYDr<^}2&ZvX9TrCqJOaunZv2x?=O!jfK`L;G!CTksZp zv<>Y&kSh$AFMNerx2ir?ky>q)W^^Pngns(;seti=iNb+E(*akX)FnSkMBsSI$1sp8 z;<{XN;59)Z3Q&~j#K(*US{qL<-?>YC=M$q+*8L3cQ7EQ;dNraJxG|FG%KQ66l9T4L z7bmjtLQ%cR+9+&!inv!s_u|u>a_Ys)THcHOa<4SmO2#nrix{Ut)Fq86U-R=~hWg)2 zZ5V~Ke@9b#I*RfctbZNsCoT?tye6H?d4AL``rt*Gm5}zQd1+}sZYuLH3QnGC>@?iq zaJT4pV%OEM45PE${fMlGqF`z+UQ4BO42*6s7lyld%AlxlN!MqW>|5KBk9z$LjT>B@ zU%Z+46UrwuExsr7?Zk|6@76kKDlcEn$?39Vm&&aj zU`~>2i_f!LhfIpgL;4(U6~aTArR6qO(*5SgxA(f4k5p4Db+)g?6B8H;4Omvw+E=b3 zaL2sbjJ>R39au(WVLa7UmDaiIsfU@x)JzSLn0GDkFw* z0JjsVWYxNSi0|56sY}{zyPtiYxlxw9t!xe3Ri#&F&g|75S~ZNn_xb%U(C9+es{o`x zA*D?P`$gqlg=d#R7!wyds})pSpuxD~U;!nJR(;&}4Z77$2g>_F$>NdJWlf!1-q#4l%Pw#^E(m(#5xr8N zJneUl6L7TQX9{bJ@)|tr(*&tB`*UKzg~=%8l&Gj|%QXOhLo$TW$7MZHD{*pAWv(=u zLbmdFOd#*z7HTn;c2-t{O`K1wseLfpTji=H&N8Ai7jT^EFPCShl^HoJ46E&oJ2v^3 zQEo4cer&o|H@RbeLj=GbxtISqaQ*0o5r-<9{G_iULxO|u{kR#q$+P*1nd!sqncp`? z4Fg4vru70fz7_1{q}--SnIy6)C*FLDO#7PP4=guM&UrZ@)IVa+7UQxS8g4?6npqXj zR4CnUelejh8xih$9x1jDN7N&n6|bXWd)(%8lkQbs#24Ufht8)cR%`xdQe^Mut3qG^`UutgOeIGh`-sdOL6tY2Lms05LMfvBM#mO~+(hNR(e0<9k zCE<}oFkIPuf=A<$20k9@jW*@SB?;`#Pa6G{g-8En%(P?qEORxbW#e?s9vXw5Nwe(E z)c0K1x%=dGkWj%L0q(QWQ-$wLERYLwe#o65Gym(XQwH?r1S0cuuj&OLF_pxc--+Ndkp- zL!E|(@$`bDQi{F4XWuaH?4aKzOzduG0VX&y@k5m!_q#oh%IH1K%XzH%_vV*v&F1@C zS9|Z=W_ic*F0sziF{F9?eFyTbQsU-~fCrD-t1_MPHR-N%UzG{tR;|^zv>d?Hy;0BD z{5|%p&#&NLkEDI$LwkD@$}2Vq1(*CUKo-s@R`*`m8`y2AUeM>pgwW4mgGcZBT%$kw z!}}foJUX%V62GeVWYb6f`QeoMVekBF_j@Cgqd+A+y=_xJm~?>zg1bfh<0b<}x`gkx zv#wx@^8)_;IYHBgrd_sOeyQ~?pH0>4P1h1Myqs3GxJ~*-W?#5TCrZ@ZM1(6aMq!4Y ztVh4ip|g5rZ+RcuYuoBLnrsT$CpGRqe@+nWZdG9PedA7NV!t5%HonY%TS1K^WsMoO zJnt!AZ(Ny|A;3$Um`Hs4B^sN6ZZ7sxiMwCAw*8!QUgViR{f>?C!{};RV{ew1g5vaF zSZ)J9I+qmRl+s)WUTRlGKVBP|`=mH1s$>#){2(|@Si(VYA>IvXugP&^g$m#(eERWY zx-2*+E9ZLw+7Ua6(4Gi!d0nRKZNie{<=wZ&zcSS#e4*16J^9M;6V5rkNZ_4Trshfd z&kybDt9mMbC`EPH|||^9pXZ>ERIFLSP+|$rQsaS-x~Jmx-+od z)7VcpWJhdltA4sP@_akWo@S&}-iTpmQ8`&0BJJq;~awRWQr1n3AydI%)(Y}&#hoN@vE4F9$7menm z@Sg)G)9dfSB^rUX>b57+{w%R;QP1Vp6hB>ZXrt+CXo?GBX`$n7XMV@{w3>qRYAxfO z8zqOGYU|X23NjPbhuhm3FJ8!fr;rT&#}YKYvn6ie>s)xZ_svTj8&i$vP;!*I$RhmZ ze$in6L9vkE%w7FC!T@dVez|w+`@5h{xqB~OT;hzA1n-xOOBAb1G6U-r!IXW~ok>C> zLdpzd{7{V$CPMUQ`3ZWl)UkNmWAEg1JCF`akJ?o`b&m8mRy+KT*A@6g-sHS~Gjz8x z7rZHu5~T1!ooIkHkA||C&FWn4E`@&1O zEOz{0JNnC-4R-^zo1{YBXuYHUE~CvrLxgayWiC>%0N5-0epn&wCBQf6eFSpsQ^)S# zHMmVjV^CIPk^r|Y_RH3Pd0$l6LhqlR=pV1=zX|PVx^*~2Cf+fX3OKxQy!e3T`_i+k zMhS{ycKVm;^;@f?1brCxYBBETw>;u^)g!fdEyAdVYx`)rER5DL`U8iq46cLxJbZJY!7w4=u)^fZcmZnD-lwc1tfzOL2XUf~)~>eQE+xAWN*(rjNvRh9`g zf>^yWUx0N#Ra0MBb@CD|7#P*Tw5A9$GK{9VbH;oPs9WoAjq5T0spF&E-6#{-dOctN zXXsBerB_@?8*jt)LWrC}37eQ+yLsO?9-24aAcf3uBxRo5hp%P5xbJWWE~Vtqnh5Z! zTI>AfKRSZ?xN@rjX* zXtDZu&pcL(x3`SGm90l~(%qw=af|-p`3Sh)+%b@NuMKbMc2JMuGMQ#{?vid5WSzbkO-K!NQB!@K_%(OrZEDl^xofSsWmgd zrpu_iW*n{3G?7-XiHk$8SFeYd40||7$B|ytyJ`NJH{Ip*1=wBI-e(a!rypTlXv5R47Y5)kEM(E^`AWWu!iYP z;TbaVWTX^ z4b$|kezxp1+Pd+4{w+FDspo1`(ase=Tr9N46r|`91JbAF7!z`8NBDG)nBr2Edg!KA zM`>H<33~>d!hG-nM)LDzt#M*@?HSnXAH_*C-zQCFMw7{#E^Ub-&%yroH|N!fGY8*% zkGz!1p3bWdkfRy&j}g(!cT=99bXdOKna?KPn(Kb-`#n(B`%Io3|6IY)U^~cN3ls41 z2|~x-xrOhWaI#}V_ix@*&&cWv-_&vV{$-+Rx!zxl_8oolVR)*N%p@%@aktjcNo>6Y|TzXzkq z6tl6iw*PFy>wO>&4S8i>|GDyeNvc7<1_mj86eoH|J*L_Rx#kHJ#kFL=rRg+^&6Y@L z7{_qj*7!N?3m#AmtarOA7$Im zRIom$Mjg_(=M|SFFP5>T%vgxxZls>l8zhNdEXKofEi*ToE(@zUKABx$Y%P&@tdofN zQc8-?n0av}ki%%x{fNKLjk6({m&D7f>@<1P* z|58H6q4r)#-FMnN-$1+S!GIOXwDGF!uj9Q&boN~+64J6Rw(!s}+0oFR)MPj4Wn6Ij zi_EZ6mrlWa1PiHvwl|i=FCy_|jLs#dwEBa=Hte11;`ed6l54_j+kpmhwjK#xV^r0f zLgK;FuMQchknfX62Mi;=(6u7%_`Qc?#{SF|>{(O_=cr!2GsXR1Ub~tN4rWs)O!DJG zglSNh%#Derddt2-!E$FZ3AFKY`%Bm6n0U8iXgg;Z>l z`rertFE`ya%klHVD_XxXMz19%DE-(P-PG5nY+HR-t8AG-Ki(^*HEglOZ}Sed#Q7ce z6v47R5Fnac+1UHl(FevH+)n3GEb`dVHeu7x5qZRCI-RG6pRt{|xwLC@nk~=s7jPjrfWnSGu#Z#P{sV=8Zyzs#?aVR(g$wJKD6_cBeJV z^Nt#HzIsl=CYm_nVV^s?V+R&3W(~{{YRl1Hj4rJ%RA^gIRd@@qY>v8{i<<>-*;QR1 z%SwplE&RY6>mTVkW&I^SnWhmq4D)o9Jv?OX#UqQ*1Gg5C)H z*wmUfDakG(hL8<55peHYBby;jZ>d?)kN9Q}DhIy)?yc_p*cdr(&)A8jaCU%I@G&_d zHFeHY8bz$2Wa9>QVi#uX-&`Z#1!##0@z3jlC}4SyNYLQrkKlHlAV^4S7{yeh4&0~_D~jpqr55%Dw(BcHUz_C#GZRHd03&j*X77HcU7w~=WF!cPTd$~cJF=Jz)!;1ZHg4iXi_pDZ8 zOlp4>;j%$_R*&L-(S8h>`f&=~>o#DB%`<0U>s;Wfn#O(Ry2o-db(~`Ude7{Lf5fwc zD!F#q0{T2_x00ldr_F$Ftkw`0tliMpRs*?pQasJ9mByjYz1a@2MYSwN_ivQs zVggiwZYaAtJ(edt`et0rfuZHzZVV>9Avk{cd+p;~zS($mI?s9Qd4b1RQAxexpD$R(aWq#@jgt?wdxe@Dt<(3>ZZ7jk zg%S;M{dUVJTT><0=68Z?IxmM_!@C2;>rbTG7Z8bnhE4p-L~*Hznz|X_x7%|)xB)H6 zZ7GM0Psd$Wt#2-@_*$2@azB_+xH`zKH?PTlgeb!(4%RAKskuLhYQIkTC}@3v zX1Zo7Fh-M8_Lsca*Dt7!Jc~=XkhJrPA5@HWQ?VAL#tZCgchPHj&|k+9_Io@qkdmJG zv^KDdv&vz`43KjGYqq<-HU=nyVaHA$c65#Q$3!9*>$Y}GGs+S@P7J5cLg(3B$(HK| zbIqmwCZFe^1;wha#8+R^LBM^6cjr1IXs0w1f&#DRB4{P7Zapedh3~Z^TsJ@qTUunG zVZKntqB3oK)6j@TB|xM+2+`M?Mh4y#%V&Vc0tKPDl}n^wia!BC&~9AVRg)yrWPJr; zb}pZP$oNX6w|}_g$kJbNG2cG_#i^$xFg{!Dg3>8+hG$f?smjQHWIVA}g-$r=w$B2n zP}=#x4{G9y3K0OCNxRu5(T|p!#VOGBZ51H|`h8IMz{-jPL`4!ZP%N`IAR%0HJ8gEl zGt*km0$$2H#I70~q*b+@FoMS@(?IJtO5GCsd+U7ivhpwOirxF>G}YMC_RAh&oAdgu z%xv8>I2op3Urwj*@w(YPmJUU0QCp*EXQrcTJYKINovxbBV@#5@JznZdM(t*XnPeCI3xbN^&{2qrFXUqIf|EwGsZczuQfr z43OE$1-`&QMD%vD)4~FII6YoNV4!P!@u3S(=xR?^NPrCmc+a@uD7p#_zM(&D&}%$h zFS)!$Muv`y3#(NoR2M;B(qrZ3`m)OYkfBh!b|@Xx_>Z2#KS#y6l!tG3#NAzZmy6ex}1k@w}3-l80`taVO+cW}CDddP=Ed$;bBdn_&&J zB!GF4#AUK<)D7Eva2IBY^xQjsNa^Ub^Af&=n@?lkNR&$~d24EF+HyS};o*7ZPudoH zo>I5v>MU)+Eld!o|NO24;h(>2J~DELPvSZ{gWIqBxI~Db^~Sa>iiO<|ufGo(-+4P^ zST!z7LE_Vu0U8<_Uf!kF%a;iHOVmEjn_OM1igS2aDn%^J zDhMOvbj#^*5v|AtPK;%+_|nQtYtCeFlXbuv&RzH3G>_k@f!_{e;Rga32}pcLXG-Sz zmwq2`!LeLoNi74Z=y@d*<+Ypd96;t-)taG&dx$)MzqVb7-T`cRk?#If;j+T_`mTAf zTAguBh!hcqxUb5T7S2z%zx;G_$W-!s7yjp4EomTiZw;O5{RtF~;M;zI9~n?b^}ZP` zz=9s$5tdISo?ZHUBUxRLQM^KFbQ66bBT7xHdYQQanQK!dDbwF!m#?vbpFagRElPg~ z)}s*kY!sNC>~12M`H%VPPcOED;lFwi)9BY|+3$j>$Qp8(mztzaMr=i$Y?0lWk-1-U z;Ei{4a?At&mB23H`!j6?*a&hVf2`1uHe(v&6?yjGj~1CGPxo=&qdk$|KE)aB`x; z8Ma3m!29fo<}#S0AEyT^IjM^@R1jw_RN~QJX1$(NJUs}0CJT8mU?MS@8^*^L%SiH- zW^N=ShQAJlj*k6Yvw!Zmy0OLg31J&^ql3etMu7Xt@yzAU-n92!Ux}VwOgBS6rO60; z2H;Qy>$L{Z)6hgTvjZ+0Ev~R{Dk35p7NviH|5RgsP++zr)m%3GI>Jj7HJ6U~#d_@V znwOp}n@lF!tK5`6oClTG;^*|ziM#6_CPHnl`Fd!uOwyGQ`!mF1*a_d+!&Q3PT*5Ka zCr&frJ{1aai(hBEPB^M^HA)jGOjBG(tTU}s#nwOl%+=c~yfCDB{JGvUC_5QjN_PMa zi-el~%#-8pnj7@V2lh64J~q%er5ZZwr&(zc+|K6g>KGPjF;|~lMHw)xzrqOPt2o83 zbJ0-m2=X(@D`Dl7R8s|O`(6oXN7@Qc@ZjTrO)5@hRH|~Q-7y;dtgoI_^b&z>XaxSP5ol2(7oX9cfEO_Fa=h^>b6UHWznb!BfvLtnmgph z8&q^BdCIVKcpMKI#Da+V1kcv$K;!|6!(1YySOY=^_hNIc&k7du$a-@KnFN=~{C{*a-mJ0w?9TAVxFXlNw%lkv85rY5^0 zP`;%I*;n`so<;>>B>Nv(iiQWY3&4jP9UU&*sJ=-0)wHrImpxHQ;d)zD3Z{N^>9AyT z_ylk|kkVT~_>PuJTgqqMsYyYBE@FV&s`D5*x8^6HplL&RS8~mbKCQpx>yS28Tc-d* zMtE)u#Z$wMn#X!0^u%un+n)plhRRAX2e@*}mx?D)Oib&f<0|+Na8Nx0%EU_Q>Cxs+ z5k`RXu@<(ezhJ)74HC@SS@NXo7L_oiBlj(ww+nkjb;YEnw!aKZT;O{ROjh+NeVcgMY*?76Z0e&; zZ0DPkYTYB+y_TJq4{$(zspZwnOpL|7KXd{EGqEq}7nbp`g4{&3MlxFc2k%BQ*Jn zv;$J(UAp$(8n;QpKt7OwAC;)3=+jn!vXusL_Lf|7ZsC^ z9IfI$EJMD^|C}sJw-w*V%2Db>KO=>h0*CZrYe&Vq#?<)TQ*BDj_?34El(DM8p?O2! zn*S>zW6eoN7tf_=Ih;ii);fA>rYrTJL5&8o5wGL5q5M7jR(`WLF*XKa!n9bfG3Jxt zr(R{*aje5{u`ymLtF{U;sBqfAe(UH1j=tijfC7HBRjx}B29giWp$wEpR)7OW2h=roTDC8OTvoup z_ZR6Im1_2k=Iwdtp4%+B1gI~obZdCyLD;0?scwX$YW*om15nC_zIYyPP2&^0!W^hho%x?z`O^mx zoaM)=`L;%bto9ZNW+W>Ngv<}jA1rbVN+rlQSWm=Baxkq(vNy@Y!o zM_zk3LYccq#|`)M_vdsWeEjnuKtLS)!iV`3rs`fy9uEmELBI>q`Z%itS=-?@m=Wp~ z;78}HAD7}|&DDg&k75VPMU5Nn!F_hFCSSdw!^4Qf&#S4(ja&#+ZH7RLFN_R){8g%SW3tC2YQ}zTZwDe{@~-E2j~@F-SP@DE0%nk|-sO@o>A)UX$NHRbHCo`s9cf zbg{L2bCs%3pAy7EEo)AA)`NOF5n*Aopt)`HO28K2uro_(q^U2>rU)6YBK#MDd*{Lzxnbq2s%!?Zi$i9MRXUa zlw-R)oNo&E&1WD<$H(+8#ll>y$oM~;LLosiN9%Z4xOlNCI|u1|j$|ICd6c!>klV8r z%tdhouOo0nmZrsNp=SrnqBsiW81w`)BLwrgU7n4h%%eX>V5UeF?hF zoR_+RBAfN&_L`^PP>LVsaG-Lxu1e|V5sZi7NGZ9pbO6F=Nf)lsf)RE1n^Rg)1<0@S zy-NRTA48sDp$_)G6W_{2Utzglws>w`|FBiB@w%~#*T+;=AP7IlRiBC@`)i-=N?hg{ zPgT_e!`7BUn8GtSMahwjjt<{4$@iGvZ;FkdcK`fXx$xh&}EYeLx?6IZ<{H+g~E z!n*!TWl@J15hqAbr?*t8m+9r!fzvV%FEr+}-i!BJQ^#A*;_F|FvxL#R%bM*MZCK?# zy_xG5Cee@FGEq;cqO6`^ue@dp7c7Dmn;YoNSC17HwB2U7 zSzqOyMEQcw#^fySschmgouMZ$g^6OO?t2>ym83pt)g7UpzHi?9v?sJNIj&dqSMJBj zC7MZ?P71SH8~Z!x^FgsCm*5x^VmHLR%INgcVQJ*)-R& zyXafy&9?wg`H)rXj90w)lPCP|;^NF67XWY-k>92~74-G=RJ;6k=V=6H^I}Q0Np5@& zzKA1TSqeeaKC540?XxKCOeU#X_Yq1ZtR4T}KG_>KVKQQEU;JimO*?PPc?;iYOFEM- zwE@r1&yR_98rw{k`4z^+?fmZhyzN&0$Lg&0#kfOtb*m@j_B*;%K1(HL=BYwiMKQ{P zfNj(tq^!i4ub!P)^ET0&GIh6ChbWiO;rw*^Rc0Pzk1D>Xt^sgz04u2e9gHNJIhw5=W)cA}c5!&v5<=b?p z8!((CaBb(9HbEeh!OM@4!F>7Q!4(A;9GmzdIXJ>1Ve0#v3cZ1*|6e%^O8l{{@Qb`D zj*(FNHwJ^sYN-v$mY^aj8LJ0|P6r-i1>?x4s+9b5IKH9EK1+`#Ukuh%qMaLYZDngU zQU_A{3>vpSv_}?VVdGn_(qNJck-GkcQ5L*X@6;2z?jjUYpU^&6FNHD}D~U81fgh;w zOKJ@31)X#k;_i$f5DN+ycs?jW%OKy~BT>UIU(4Y9t8&fNi)g)%G+-;)qIvG>2y(J` zki1~Y+=sN(@DbM@?2a=>=?wDhx^%r7Yk2H&>8QCUIxe%AI60M~zFQ(A{a~#i;rJ$y z_h!ck&$4a00w%gQTVXE#6#h5?JZoFD;PYK|m>-NIX~zg7De0Mv7?`_6&1#kMG}vd( zKmWyY1{P&$P5>9S+$KDY?!O6gKj&_|LhY%j^p`1bRlIE*6}b->3^rL2R_+9TRItzp9`5~C$#p{OYz(-z3<;~R`Nd?;fRZJ zW7y76;yyEi0koP1uht2GTZCXM`8P0#p{dwpaLB-Dvyp?v``hDP{gON)&%4?k%1;;k z1!$gVZ)#T+TwqrVr=%-vXym}KO*?9wOF7;bKp`=0?I;p;Jm;{eMfgFzo{usZN&l&n$M&@dDmag*XGIRw6_5OUIHJ1&FWF*aiyuz}tr zfA^gVZSSk^AFb*ZXQ&K&NJ-KrW6<%NVSMh==;fLHuZwwnVcxvBeDMuEgt3q%yMP}g zHh>x)KDxtFOy^3x$hOUUCcN2euxbp9re*&L*P<;~)5H=sVRR)A_B;xNvZVh&8x#%8`w(|KxA~_Ue{XIRNSbxKtXTAyaF)Bh@>QM;r6gfP$*PXUi2>3EafHXgg z>G9;!qn*YrbD|s@43(|(92t8aI124$eg*1q^^nfpsc3eo8 zj5n^T-io5!-flqV{3#jbn}9fv+x*p&ANYiOuPMK7-q;a;k9>-9DRCEmkwlVvp#b9d zUNz&j-uiLa8OHLucx;ReD}7@8!JdyN2&l_TgW9xKa_LulvKe5hzc$CxY>DtGdhl${ zlT5#edKrkD#Ce$WVyKxDJs9&bwm@xZEf-eEJU1%R{+h%OCTVInTPNz~+OD_8RAxfW z?1WBvN1$nU#gmZu^_lf15HJGNSoBnqHOJQcpT*G+Cg-2%Vtp;EM-RR(`z;#l(a!Ra z_D!zr57-RjIA=9XfmZ7#2U1QBG$X$ukC;1xj{{f(oDES+pKy5w0xaEv;(Prz&INa5j(5@{+ zEzDB=&`%H^sj?#mwZY2)MRjqKhT&y|{>&AtQ~O`h6Tf!+3d45;03?mI#s3g}$mj|7 zMCm(12ANfQgHK2&P68jCihhX~?g>=Bv+OLvIroQCAVVmd`Vhl3L}t5#QrTdfugNpb zDYTFw|3$ z^-yb6u@S=mXpQqAC{{ROR}J0ERq!mDvZe7>9K#`!?x^Eh2Mbj1OiX>9rLu?WW=9CVPp>ZZ&e!6L<`W}h_Xmq$60dHLXXd8H8=Z-3 zXN4bMyPZ{@C3iQ`LyTR>;6el-MR?g2!ED{Gnn7>39dFL|=JCIo5BnBgZ+yaAy?T%C zRm<_@^f|$D?*3ez*Rpbi515eHk|LPho&{Hb<6#_VG&EgWf&^*eojDT0&k>#KUk`_M zH$S!PGoNmy{SJ0{Jny<`)gEpO6>w@qQH2TIeI@9k|J$clBozBW^0}I4|MZ5LB!DB{VtY@Q)!1uIKfWz)hqPjEAO&? zEBk5L{$T_)?AYai=HdYbDPMYZ65<$r4gEkv#8jA6W{plWoKfT)V|^GJ`6~{YBAgUC zn&oGv?k68!y)PWeoBlOc%MSECT&oxM)uSH2q|nxC%soX6txYn!s+f;+dkQP)EZ(9C z6!QEkF9gTx!z~Yd$(rhzy;boM0JS5C^J?+M({SlB|Id&JADyZlvPSA5*XmCrdcA9s z&Z3!#IPY`aM-wZk3NEaFz}UdznBp88ocuzHcPzwY*pm1%uXq-XN!se}&Ueh>$-*v0 ze>$r(G%Vb(&NuyvGV?~NGaTFabF%H}b+{vD4Y-~ZQ&!rnFOFo~OgLnU)W)vsh30m_ zRu0QtM6e5^EMY%d)TVmsE7NO43Xd9$-DK?M7x1+P!d{q+xEDTQ@yi!who8~u@rdYf zFGLR?UC9^7HK*%Gy*CiYvn!FOwi{k0d0gQxYUB&`0D>;6KLEHlKy5B27Br; zKCT-^Cste^#Qm~u(3vQTcU41Uo~dW!H`ao#C< zV!$m=dI$OhiV`>xPiRv!Qxn7d9Xt@p2;2DGwI{tiolcPpm+(W?RtZm18^_%J`tWI; zh?>BS7N~5{025W}#v31^D-T}e+w>S}TdHjxQ#B|&9SLX$g8qmcKH#jj)GyHiJoE0J z1=iJ!TZ=S2ML)-#iFGYHp@7%&8Jwf7Mq985kenCSwxl@k8zF^LBe?ILSRf^Z9nz$u`2U_x?)#9+`iz*$hDqJCT>C{vag_aNQucvTvv_#}b{K$u_(T(R=%CF;1uQ>IrUV62Ge$lx&C?dd8BJ(sR09a z-gjRudrzu>T>D;8$YdfmcGHB$3D1hxz_3pANs97z`IZxOWHw{%^|mT<3?X|9PguA zzA?lRwOaHBDFqRu!guq_4`pe~w9+UHg*oLs(?goE(Ik<2$IZpnPHAx$X3+>$l5Ti@ zgunX&MmV)hDYZrR#~o&KBUCGz9wUxG1T!WW-cN#n|`m=f5FxAnKb5ZEHCX>FsQWVI8I|m_m=WU^GAdN#)tDm9GwZ*sxHC6 zLRadiUF+wmblbZmrUL&TmLMmRPVuk(PETzXq-Zv6peL#Mu}}Ob*5ppg0`fQ>AHngO z0ptu7$ouS0$$ZC;dQSo7|nl4PqddKyBe~A~nOauPy&Go>}_<~eO+-O5Qyq03%BY=e;u9%7S8A|((VbOW;@^NZBjv8h^Kni(};Q?tn6g{?Z^BD`d79qvNGOSc%a#7AK$gQRe%p7x_n(9 zAnfNlzMcGao(zTu;_Y9&244|-zDw$NdnkIjgN!^$(zGEOJwJyl8g_eJsu7nljb?rR zydfA%>@xWk;Fo$^vg-Ifq|M6EX<^o*`ltykf%4;r3ZXmjpG<^Z?qhxg>87DhhixsI zq?tV{Rn$Lf$k8uRTU=VSDx8f%EVx^5KmJ#g)twH&d(@LJS>)B9i{&4f8Sy6DPpn0@ z2IPv85EE~1hN`m?AFpMXEL~pRx+Dn>_;kVt(poy=OT7jH9&XUOlE0U}oHCwl0Dp=Q4*cEFRaYG!H}ux(J~Ue|f|4v;%Z?&z0;6 zojsAc2N>=;G#jD;EaOiup3vF6z9{@w{q9hAPY(CX)|%Bed+pvr>U*xTvZb-!#DgV) zLTv$`sM~T>&zoXm63bwgFT8(Xk2{ACcu*Ft3ZZyrWOXor_;!1aUi4%koxa@I*kBV% z@vl!tcJA0=Hy3+d>X*!s11hv*&DWsz`%nt#)4%qs%fSA1>)x`jCh#d2o0exI+}MQo zLU$lYb_UloV6RZ){@~LZ99Fi9+Ub&~F85{KM6VOnw<{ZxJ+NIxK~DjC4&H<#YN&5! z8zHrhwQVYNX^7r)V7NQMr8He_iwO}H`HS@=9-tol&(;Oi53b$;Vm+(#4fA69?mYN3 zAn4t_?}3}K6VQmTGu`m)PFuXXfp0#|d(q8+9=Oe9c=Au{s(&P=WTe#)IRB4cEX zD}03aAOO2{Ahp5MCn#{b+7-~mE#^7^dAyCe^1Wel+q(OkcKxEZ&h`Z@_j>g^lx6vg zi58apk^vr{8!2$RSAdlmp0Xhu4agl?6HTyx$gij^leWS0;QBE_!!S28(8I;2OOb4@ zSK*W*Z~rZcdv5J^{P13Sy_)2G)9BaT8#`dN6RJL11mGnSA4W*86ni~G-qm;fQC)H1 z7#QaN0|WDRfJ$Pi_IE1YpeuhuqM?-zrW_ z_Ao{H9QSwK)-tu5`_8;M&whmZ9jbGGuHlbJxURsMcJ6}KnuP+LtasL> zbO)0K23}0YR=nBlZ>VyeqdK{V&kk^r3f9=+tOYJSU)z_&>h6lZ^7-E&E&z%IhLb7j zDDVS=KZB4joAWg9#lpFrf3j65KpCiU=skUQdcWg?EDO7VDKx%*GP=vH&1jT7@&I&p zPz|lLOg-$tcAJ?BPUN)=90l$F7gF>0_Wq585ytVP2JsUNLc%)>62BWaIy@RL)WIjA z1%7Qn8A8LwMbs)C+SFdux6}a?kfF2q$AM-G0?3(G*d`q3H zl6-4C_Gnqio+{`E6b);AaK%r@_J0Ec1p)9Ky|hrMOedrhrdes#P+}ygAUQ&P$Bpgb zpKZD!SvWWZkFxz^H@Y-`05lRc38cH1#Cr8`Sl_mM4MQE{bxiOAM?T!iz;M9Gal&ZM?|H&r7cgf)O66aBBfYnVm zN=a~FmnFaqE$-CUR!!LH^2zfrTRT1PkC1EJ}z4pJot`|3>i`qAJR{k(!evO0-3gU9MFAB9`P@h+l zBZ=ZNezeb-$&DKJb{6CR0czE8zgW_s6gl%&-zEfRP@j!eLwS%V1srB7nPR`buuR;a zjBTa#_d5A++}gj7S^J=nqa46w0bE*(kUe?0n_aOYlI}e+B=nfr$pAq50Ef=FsoLQf z12A8IZ1$Ckx_XuR@*BVab-KPwh1>KZW+LDj$sc$Ll|kWotIGj0dEfVqQ{Yw|04N6- z8!W(907JY~T{!!g>0gv*^OHe4isWxpY{ZuZihVeMMXR{Cev-l*0K%4VrTcyYQ2v4c zL)C?{Iq$xgro#iUDXhgzki~PhEwE-vL3h&^g5H`Z4`s(xku1h|(=1CfXe6`{5F)gc z7R&k~11^hGNa5*Z86l4VTcD=fIshXpx*OqLO#`VC?n6szBcr3E zyNB49wTKiq{*7nM9yf{4oQz5joKVefIH{xBAHpTFZ15A3wxy{;aUx>kv|=mXeA=7@ zC2jzwQo*-?J{#TrN$Xa_K&c%OJfIkDkEuMG zT`#TEfMSkr3*6Wk!{(6ibD1Aol{5C#N)jpQq23*T2^f+=pXRIu%TRexvTpxuYt6h0PTbe?c)S1b)tI> z61PjNkiqV_?Xwd+OGgVk-TN*ne+A|Q^_gvbpH%OE?qu$QmOr}2C5MlH9Q#sIG&*Fh z)Hd>oh+%!;v1Iph{poQg(Of}<3~UfGo(q`5L2v%94>U*1jZYQ z*9&~^WbVb*mKGw#mcWS`7N){75UVrvh0GMwAylEXo>B zMShnUCRODd#aQID2^NK90*KF3%#S8bNd;1I)#Ydun_gePt*Fzot$rcf8j2dQNfpbt zdIrzmX|eufsaWw^(gz9%x5%kEIvdVg*d`OpeGDw&NH1NGTLg;`A3o`GojnVxTYT#a zWuDgJV5Hk*G2omfVj_OEgM{m+C?S9}kGKh}?Pr*-wSAY?35T#>F^)8fcJd~@d=r8G zYh!2p-OUaUl|9LsX%%oyz*FoPMs}yL&9W?Bui2%0{jHe)DyhX6MrM;CvUU{Wa>@H6 zg)g2n;$ur{Fd4{T&>f^A65TZTCO4jAsK^AZNc+?3jrH&Mi3Ywv*lqe<9pBZ{Be{Ab zonoDQWV@=BKmC*yFs)!9t)bXSJdY(0Sb82iy(#=7oaK|;^0CP$LWoB6A+eLY_d;2y z8oOLSaO-4gVSP?+WvwrPU4dK~HdSh^TrAIvGbA@BOJ6~Ud6^K0l@~JB!jjdMLXYq$ zZiW*m(Nj(e$8B_YIiI+Z9&SHPK2Eszrok&bUo8G)W`ad@N+=q#GldL2z7L}(Yx58 z`J)EPDLEb+oKb|u9mziyHu6O7euIsTITp((PcZ(_OFi_M>FgbrM3qUJx~$}~=Vm^R z_hw76)%@po*lw+`YkKmbDF$lxo$7P=bzJotUUq zKi=Q07UOuK;Kf1lfY)=OWl9sL_HuoQ-gR;RR1)v6DNysyD%94cS(Uv={Y7JPturoE z(^`wn;*dQ71o(p<%d?|zvIVlyy^@~?g`9PnONKr0Vw3EcCSmy%|9>OHo7|r8V~SqJ zUGG{7eG6dKNiObN{t(s3g`~MO+b@rh5AA{ohi%3s*}# zFsulz-s?CT+9NFvad~GXR*?MY?F7__-_Z0*&G34ctWvOysk#(UAPr5svEF?8mc3(qMr z5(0((FnaH9s<{n1_~s|9(+NpT&J4{hwH#F+Ga}kUg>_~F?E+Tx0RVxGXQZ6o>1(6b zOQ>-r`) zoZdkb<5+tN)l;I+ILy9%#OmBB7)aYc%Pm)PzT&GMkB7`{hXizuU#pSQeMzeBWrFcn66yB zT=VTQve_1;3(1rOC{xIh74KWs#9xZS?(CuviEkdH1$njqqd0=Fh%oGYy|Xjli2fU} zvhU;F9#`AU&z3=>qsz$JnVMC-M){dnaPa#PpEF|377IX@4yeGS=JOU@pc+hxQ~ubR z<4b|XI*udYQIswKDj*LDufaIJc7w;@J`-}ZMxB;g)H767E_R(e(0m9br!4A93L2}I z>Jm-YkXgC71}0NtIBqA{Je=CWw*|_JpD?oHJ$IW!XcxeERdOLdN z-B7n4yQM^52(edB5~L`N?u5vdY;-29RkJUwSr$k(7{*_{ThXWQSOqG{z|%6n2Ke?( zqxPt*B6%A-+9$-+;91`?g>rALZd zAD%Nb`_rT7!GgEjWyPNHIJwA}0mI3EL_g2PW}&{SOyz@C^p1S*-N?0P(jW}B461$M(Jnwnmwbg3^`zd!9JH~G27yM zQjZv`?LK)MLQQco%IkIC(P7X4kUz}&UofRd9nH)7XGIf>N75|xQ?!BFh5uCew+1=d zo+|_X1Q)#n>FM*?@Jh!?phnhst3WOJVCzaCoke(ns%80$bw8RXG8ncapwF*Tn2xl* zRjaLUki8`n`a}b3}w#xL38IKphyCnUz4JzW>bb_Rntdnu8sfF`XnTopIs!g zwdrj>YH7#9=KdUj`8E-T7NI6rp`BBPB3n>|valZIg*L3+SV+@grjx z*?+HVpyl{QgtvJLuL5;eCqUNZddu}#m4d@5zqDfoYk_PXdnBMAp+D%8BS~zZYn~7F46=J2J?HaqR zs>T#F_uon!*4a>xHJ;;~n8Zx(=T!q2)FQo?qDN8uX(bU<6!Axo6Z%V5I;9YMKf#f9 zURc3H0+q;|7zDoY;BZnOC7_<*J#=8FU$$3*Jbz^!;Q3qaLoA&mT>jn1y$qgEr{P2I z{z@3Yb!mIbSp6qwb+zy9hHu)+tJBsGbmWxs!{sD_Q&v~=AZHh?33rRftzjI=g&h9?N`(UlxelfGo@EGv5d1h zJf&Rk2m}>M!#%4qz_WUQ@UN-{Ivy4>1vOg!ZoOf>a9wo41dlL2^sj+g(r4jKE5TKt zcEiUWzVw{kv7R5V1Z;;>L2YD1i+vn@Io%y`de43HMa(vRSs!`1u*<=bU zj7*kEL#5GFq%}rqX7d)JK7!0^1xIwwRkD!xx#hfVfpof7)!piOll21pc!*RGZMNvf zxjp+cqul_rk}mtPOX37j72JKjRGwoI9x07rsq2F)4e||af&T|8`vvC}?BigLlk};S zAXZcsqi$S9wkV9XWx7W`zZDmr(qr$#Ro1&+%-Tab?(ZY6sLg#giWTx$#Xn@wzs3?Y z(4(0){fwzUB)wKp{hU#Uv}L2$A4PYY)ip6lLl)hl>93-jNQSiL6~GxD(xDs!KaTm- z3H4uD^!s=z;hOrcGL(@d*w6iWjWK4mcE9VIfG4&Kbibk-&UQLH1XE7?1Yaj~roO16 zWs^pd_)}aUs! zhCnTW1Z9yr%0IS32Eg%oZ4{?yah=HLa~Hl`agY*E(P>) z7(@H2OepNPVB;|g{s!?oP60Gej5z5OULBv?i+3Uh(1wQ1vgCAfY|g?|Egj$|9I!0f zFU%xfg)<=FD75_iW<@y-psB!Q)(dAgc(gdqC|!%F3JUb&w*hgL20028)p{uTVzJ50 znyblAL2O8}cWy?IM7LBsG8s#1eh;4%L=MSHN)B)8&mXvPk#wVf1i=|3ijYCEINL&3 zv@{eM#}GP4a*i`XU~0Ky^nN4bfMEQR1*j$XLuPmA+v6rxpI7B=g+Hy>fQn9ZdOrv2 znj|Ir%=1J-W7;%iO-TI3g5gRPnj^gcO1XQQg|MM2FAdx4SwnIy6u{U6sg#y292@7( zUCv^MXMIaf>RO>F5lk7F^dHn;VPwo!zN0AFG_Dmmb!*5$|5!7d%{JC9_DQFl;+Wwh zayWmW*%WNGBYTz_d+DkiuUF*N;g+f8$$^6;t{Q!Cl?ceCeiVmn-B_Yt-S8zgdUT33 zCGiy1xwP>N_E18#GEU4J`pGNACIb7p&4OXt^>*-?YKmnB254b#vBkYZY3;uxB`1bgIiele~Q*rg)ARa zKMk_BZJf;6cI?XVj%dKdpD(xCZhUW;7IKF4y%yT`P z3Up&NU0gyNL#Y}snwQQ-S58mIOB6sVIglMd<5(EnQ`H)s%@O#|DfOi# z*1F{@2WUB19Q-^!+W^XE#IAWeWG>lYd(>{OZPvBm=*)fo{VOZt+$QJxJfF0Dssb!% zX$db38iu@LvLs?(pQ*_ld8EPMfd#t=n}|Gr&hxaJFmi6A?^NyI5*2p8dlJGUK*m;G zcM-`!pD4q3SV=B=0%-^cyn`3jk6u#^ZEGOx4bVgMY~14Pc%AN(1wdFsm|d4YMNZY? zia&f-AC=(UTk9o>M40cs4VJmM-I{@3_FIT-75CEzK-t-VxYGX=zFxwYb}?b4daZrW zKfQTC#gwid53K4&1eGv?GA;(~cj;=UHVw7;nc6(~i=(Grp^rf#GA$+K8Vh#Rfg*t+ zR-{>-@z#1-B7ysMWrfov|Ca18H_WGv_xs(@mQQy@7{9QgjqGGv#l|(y6~H*Gm?j2w z*VhcrfVhI|9fXZF39rcAagLL%JJ;B%p%pzFm#~K=*!yvT$AyzV;Mk%UKs3PyxC=Mm z&SJ&){blvSF1F~^g&Cky!S6MUi?yge%-!#${qf8|QAxwJcN3!56}|>BK+;-Pg|pLD zpj-Fw;n$`!%cXNmStCXSuRO;61*25iWc>8qRF_7o3f$Y^6iZR;H(n}Egs)|A=A+~s z%j5+1?7%hM_acS}HXvfSWeU!L;bHfMhm>%Q=OE^kM67L;u`rG&|EZVgcji%%_8gr!w24>>3V8~&FCfO2DX5u0#OSc_rA6Y#D#idQQVz5_We`1_UV@N{O`p7 zt?B=_#Q$jp&87VYyQq695)k$VQ%1h;vj0P4aqhmvB%9hB$4>Tb1bFC7{5kStyicA% z&4;_9A1H4W*4uWHwVJ*LAX#0Va>lKh9_hiA#B-#QHK2L`KgZ_zRt6()WRdg#LXv&; z%SVu6e?LHG&`onVoKOcQ$9u0IEjB0po!Vb>UK1^wytzjfXlfQKfSiUoId2% zkP2}}?H9>H_pq#Nc@NXrlMDZsx+$!bV13Yq&IPUw(&YUvYN2KFxx500YH`z@4MFs5 zt%T1W$p*m68AFF8D zArc|>htnyAl-xy9Hl5hpQ)&SMWeB4lz`ZlH`-*L7xvp)JQC`kVe5=pZ{9e}t$VPW< z9ntpxAAm-gyF_S-1{iow`r+b^rln?T+uCm0Yt`DJ zFy5Ns-dyQDW1A&Xdkl!)f7qS0o2)xl3vToRLGnNai4`mbkU&Z`zdf~xfJ%rz&yR+B z?|-GUpZn_}^Z;3@@RnWsukMW8U4Nj9@+Y}k7_NxjH@7W-BCHcYB#ddBcmDhR8Mt3g^Fn#1cA z7)d_9P7^KMlvp1B8yEne=l>Vg0nq=HDu93du7S)<8jy$2)B))jP@sS`*f0N*I^f&6 zZxDCuDU8DrlfW=fEI?@0w@=1ILwgBS3gA%u?$55E*}f?j29%BXGkOD5Ia*So@b2x> zyy4kCgqF^>5OyyDY43sRuvoZEmPN72X<|}WI6W>=S^Xz(|G*JQWNikrLgD$AsS>bT zKr#PMiMfEdZ>+T0cN+UoU24U0VHc8ghV60gfefVAi|3!n4O2G;C9@f~PlMy^RvH?- zmi|;K2n6KRJNg0cV&An$>e>VQx!Lxef_iF58<6fF)b6nbD0y&MTc7jpBZEjme_v$4 zr)}4WL9T9J)VE*U)`(*54>}evpXcdE&uIX%f1Au)bK?#!Vcz{E29m|qI-?NTdc=C& zndu}gnsCn&z`53j68uQzL0Kmu<@|$qK+xx4EJtd*ff~Yfe*cGduF^R=ysYygKSVtU z;V<|61#3EZt^8lr0+RnP+TH@Jimq?t-AF1e2ufOjG)T8dNq4s>-Q6Gv2ndLPl(ckr zgOn)U9n!IZO?RBN(dT)e=dJJi&biK9UcfH*%&eI;Yu5k1e|OJG{E6s29go|`#%BBy zSNBI8TT&06T+O{gLj1ZZx}kRPl${ih5HKfZz|LA&C!VX*hBx~VDX4FPdb!}wZGAL! zbi)5oW!;Z}9LtR20LetlOqf{B#tszfQac6b25pC@{N61GrHmGtLrESs@Z$H};I`A+ zCy6?I#IZv|07VZj5A`9;YdR&*cu4s|(U?|jIc!vaw?qN|eNI!7Xt$Vrkp06AlUiZc zWBb1$ao(M`JVWz3b0xk$Mi&!*wH8WWQSZs|3AQ3Go;|TerkUJjv_#}p`fVPpVZB`_ zAUZPNj7ZWBQr)r?TPtRtYS0Q6Xke^BfB-PN3k41BW|)%>Vf33iEv}KSh(!8ng+MS{ zGynYhEB^f9sSg3QS=`%55JLGAC)(nzq!GPof&3;f5k|k)Dj5DhB>iM{gUIdA2}-Xr z(9Yua>Bk(B4GjQ?Fugr&_BNE%!j%gT5Z)oSIOZgGf4B6nV+{91RKUNn|DAZR@POT+ zSkaWEt6EV5ul~oXg5n>AR{hA05bp|&^UGmC7!CkG*|(=BB< zU_S5e+R8VLp|`S1(VD-o^{I{}tg_6I@P=o>|R@yePonSK}05$@6AwjvS4FtJv!_VUPDzBP#g&$FR z+mWe`luL*$)wE1d`@i^v3Z3)l5?&vs{riS4KrP`kX=n<@v>q=4n!( zvEJ_1ndJOmI?G+`znuHulYSfOz2VMuk8y9{Ot%T=2PhQ?=mr4+r6oKJOwd3!epSXj zNe)jQ66Mm!pAnt`Xq1v&t)lMM-SZ%wCYG>q-`UV$HrudSwN_EoM`QTG)HO>Y6I@

    zRIKz>e_;r`s-F?@$ ziGQvn5(FfOABczP%B!lXHuiFCz)o#?bj4z=BIkyw-o(u=8H7BYDpBnJ?q!6oBi`4w z2W{OPYo4H_^h2Oo~hCr^(p<5+Q}EKezoAZ?ZB@vl9ltQWyDYfZqs5z zOI(^wY21EDKYYB`KFrbVQVZ`b|M&WjL!kd~_*ebM%BJmaFw0^u{2E;EWly|y5Dd^d zzqAF%tmg+hH=ag!x8tkw+49KD9T9i*Q+~q3HTk0l`a^c{G$gp`xXM|}vf&*|l376G zx>tutRLplCwZ^i0D-0;}^*M6xwvL>ZPMElaM}hhXM>{}dcIL}`(8BHOfN&pPf4qry17hD?V|Isqa?cZS zZzqo84&_O#emn%u75T$?P28bk(P~r956b+@U+FgQb6eCFn=S~JtH?Iy327#hVEg4R ztj{sSRXwgB_J0$Fer+~Jk$#dz)>IJ+^zuiWF93^NFMQ8{#H(+>{l`jE;RwLcz*Qwl z=bHH7^4V{mWaTLh_=w58X5$F&l=L=Huimn}pQ?G@N_ixjQN9PWr z%RS{o8qrqph^0qb1A2(VSK8kZj1q4i?4J7hZTZY%&{2zvR9RH+v4gk1EWSUTSX@(a zpNuod+>0ac#n+=-Plwj)=DC<6Aq2d-?!*D)-Vw(163NoEkE-$iO)1UPN!dckCP(-P1G7t3t0z_n_itzPaWi3KWq8i8MPfTME`gha)r z-rVoH&Di)nm_@>!`$zh6?e{mnf+{ak z+$p@uJApIEM~%;ydGGS>nDXrV`w{Bvci>#csY5cy*Zfa!>tVYQwzdq7zg>ts4D}lM za?^hL9WV#4uze=%L;LzJfK|3?t_(ic#y;Pp zv>PXINBEB<~jphC40Rr77Gtrfb+Bp>>z$F z9ugoPd%5GQ4+JEF-9;|AV>zu3X(0VzCdj6ZK#gu!i1cB#*HZQw4z^}kvjKg!k)2V5 zGK*J{zcVlI!6g?fGR1u%Qdf-$EKEvZ7)3lZhes5MjLD&XS#&1!Oi3dkUOX@YPKz$Y zJM*_?UNnt9979q2y4Yes5F3VQGRIj_$ukM(DBqCjg!bfFKGTY$WU?PTY%V*AvA@)I zNjggN+@SN=CIjydHbfXc9F2mleI*CAS-;Q!rZ(%J_up%??!RlZZSZQ7iRuVpm`UlHU6AyPIui!)Zsp@3e^c4Q~xxi%GggClsmS{J6->((ouA>{1pZJ@|9=8TS_gS^E2?M_e^X6=X8HwZciqarkr_UshVD~GfUNMn8B+Gui{$aSN!Qe7*wF?#|arP-0zsP_(7-7ay|@%d91EFthG$9!6`M zMR{-rAO)ur9zFnl-j`}0Rcaw6vwI|A+GgnTRVtH{qp_RLZqb-?gHeqq>dyv!S$oTz z0F`p&sBRE*8o<|Ga*IJJECa@815^^Qx|Z?l{P}?I!64YIvI&Tl4c`X<&|ZH zQP;59SZL+2M+CW8Ji@e=H#kxGB0#UQ6lnHjZyT1(T~=D_;NVq=^>Q!s@WJQJdKsOoF4h!a&7ki1eG`GyL84c}!b*+> zXw?1sO{YD}9y1)8qm6Rs3UO93(UDZ?DYr1_j;maVR{ByOwM(tCt@Y&&ApZ}xVy4!A z*owy}^M?8UovoM>9~Q`gZQSfAFU;w~W6qg6M8(h!pvm_+No+cvZbsV|)?S*{l2q05 z81lIYOlgA2)anO^Gtg6=c0f~*y%9OvxsCz>u&q(g7Nq{K`0vCNOT(XfzTMxylxEe$ zPI)QIMROQ!FuR4AWnmsI^fLu5G16}(BJDu>L;J5O68SozfAFf?F?-YfdtV1A(JtZe=znEmK#ygpB~>pFHNk}YEm@p(M!HKxX4ed_6eWeH6WejO2%}| zZDGQy;c46?J0n9!Y2$Fs*CEar2kRXoZr|t3GK!HPgy_DJpcybXr>k=)Ud&fKnZ z))cuaUmBN>c=9`m*EF2>3=-Z+GgD!dDqpR+KMxjwEr|q z#q~!9f?LIwSp8J6`{X@h;7c09+^c)SEUY&EgBhBB)S^aU>o;1R|Njb#ULC*A{TC=Y zptRlZ!}6fOLSFFqyc?^~yJbGI-c%9zE_r_>im`+8nk@6#^4*U=q>1;Xtr7tTuKC6m z>1{TzME*BD<-;vK8oALZFw(r;eEwwXMP?+^?8Gl;Fyce_MM`tTbLMd|7?0S zf_PEx1j^%A+4Z&&=owA$!G!YGs7TbE12E7lOLM4-dqfDCDSV?`D+4bpI;38*P)%+F zT9;#xKNxT^G+jDX!clf&541Nac**bG?C~7|!iKLZ2E23?@$fMSEM#N1>eff}lHUiwRe;i_z?s)@@%gG8ztzo;=t zdbu@I4T;|jI)C-#MnKrt?LKGTgL8W%PeZ@M(MR*d+0OPqyEqp({99#No!sW*!8Btl zFrXl$!9xqb|C`Cp+Hk)T5yQ`sD=k1>LL&t3?>x_^yZZclhwjLz)5?zh(Gu01i0%7j!k>Ucx>>VV7g-GSxe zU%6MFn;XleSZBPpRrQ4Sf1h9_z8ZCF-=2DKeV1ijbth-g@QN5N?poWeEu=qsrTyAc z%Oyo79@-dqd(EnTs4@?4L|e3l%I%Va8NLlS>G4K zS{3-sS$3%)uFKNA2Q#}3g~A+f{Q+Z|nNZ4j=pNJHowEkmP0bLIv8^I-yrwJM9UI(x z4g8%t1RaZH(K^UR458z2dNzAc29KfW>zTS?mekW`q z6ab637Kg~g=pyOk0#z*HJ+^D=+^`e+w{pu8#8=7-+kcijf?T*j}FrlQsy zh(8<9y=u4JBp)@f(Lmb00NZwJSCo;DX^t^GX%JP?HW`s(3a{l!wr3fMPqmIJuYhth zu7~w1@7RDq_|Iv58ZKC+5G3ZLSxLFPWf`XX8P>iIdaN=0nhpTPl~lp( zKlVGA7lG)a%tFt2XC0bD z`DP%WABpP?E_5$#bJ*Clo8y^tFwAq8J(0(dCao?{UcnE^Y=-R#Z~ zsKg(ccDswqbtqpH`6v3kO~?6f==0|^e?y;}I5%w4=_zy|&$DaU*>t@fHLS8?IGJM} z96=c9Yal~u6is>nc@~f%R`W;k^W*(H8la$^ z(R-3jHR{g85W)qvk9l9exJ$_w?}v0ST1{Hff!)WyR2%2w4VxETz&$@wWp-xoCc8Cj z!sRa%&{JKnKfK_vM)_~r#KsXpjQlXJ*mA}_x#P){gRNMuBK?*}7?KyIW|gx>g^cCV!l%@?HonwL?vPBU#r3sOKbi z9j0(xDez9v3wsnr$E}_rL(2a5VD;^53gFuUF*aaG`&PliZvURm02u;jteA7o1Xd))$X`t>5L1>=Z2H;;7${r7q6A%kh$@>j9EnO1Ntht2I)kT=@oem1y&!<`Xfy=HpO)lCK% zTohsfE^pJ=5McK_DgP8hqUqqkC(nTRwxzl4A;7#Nb5Hb@uD<);UXa)8>I#^QNQdToA=CThf+Oj;nr=@ab?#vYg&4mYVmCI~*1_n}yW^LcDUBxpK&S4$PB1@;Lsl*3Ig$VsAz*VxMoh2naB(^o(0IJ1o zVLVQ4*QrI{vCaQm1-Mu2nixOOogMMAIoZCT-tGV+)MNWWkIrzujLuIGlk_{QAmz^c zDxw+-fEJ-^*8faq^vy5fR9|c8=V;qDL(g(^zujluyVe3?ffJMgvGDrjy3-7{eg*(V z-IBSgzQMlvSUoLcj%U_|1RD_&;DO@KY9G&2&~r@>Bn`=+1R@}aHQAFX8xG@z-D*q&J^Bn z0&6O&5AYUsadgP(==i4+wh_rbzVEQpD_>KM!E?CL(!jSgR^q}JMDY5dnpWhmx}mY$ zEhPWdv>7+;N{8O->NkLE!YgbqrC5D@)0mlc@@(jj$5o3P&Pnr5E?Hg#g^4=%F=3$J z5|uiC)pa>15gFa+t7`bp?AOF7E+)GWE;BRG+_QxR$~V;C^=3Gqu_Z9#7+vT^*V-3M z>^3y%fSj8d;G%|*JP%};;N03xdV8$y*J zfAE$V!f}&8SX(yn2gILyV;9ZZZU-$K#e1-*pB#{i4&!rJBS!J)b*&}5ce>t<5MKGV zX#|z;uhX@0dpFm6w>gNI*J59|_FSTU5}ML)I^BIMK3@aD2{|W!{ZKz<_xvHhs}(9Y zOc1_G2#Mw_J@XH-0im{iuJBRBd|B!Fb;VfAQz&+qOyndC6&D z`2owK86f=Y5s}jp9PxmPRvD}A?O@dMKRgwA!fOH(bo#a6kWRlr>9*)>x&85jmDjC0hg%gf;|%^zp>1)tE-zMh6<*~m zF^+eFjMVD%7c`z8!52m@u}+bRt#C8O$gifv4VNH<1mC?r|8P%AfmlF4ksGskC+y@4 zs`bAl3<%9r#ntlJ$jnEYWbrsWr*nJ=_OK#O$`30RuP4Y~L&)=*YSQ9F7?YlFQkh<9 ztF!LTj{B$%6*LkSTUnt#wY#lnwaadLG@@tT!}3l=LI(C#(yLPZ?zeS{JZjybA-%5^ z0(b(S+%644`1Y=Nvf%>UlSPkb^8`=8Q}Wa$$O3PfU<(4F1GV9Ci+HA^7c?DSXnFCP zZ#!JlK~-HidGk@1M>Re;xa)#ubD=olSKFZ0IPmoBu_!E_hQN)2p8;!S9r`=yA@f%O zYKofROc)*_{-^ZLqvph;pQ;Hq-fcvB=(1?-!ub>e@QpRxj|c#Rkjr%AnE$FV@t3Rm zpUbRQKw0oFW!9))1#+M#b||x#q|gaMFn5Ey585;ksX?ars|xOYJ5ZC`-utFh7srnb zxQE$klRNT@w9W@V^i1ANhKv=jzc%O2FcV2bgDLf(EJD;U%r<)sc4S;wD|+dlrE-Tw;rC)kC&O=Chu|SgWj`g2qDty~>jAaPcFw{o4 zeIC9549Rs&#U=4!H3tc;$lQp=6UE!e0@e5eUa5#)r`psY$?7&C9%~b9n%%w3!7mtG z;Uz#ORmh8&sfd(Vr{n0g<0n6EGd%!12x4c^P6xN}kuUTP^Udafz+7y z=-y$yYEX2;k-_;P;`NZ`6i*|mK=^g~z8XBjt4@oCfnw}Ul-<$Xe1zoiflf33nN|ac zs-xjWIhL|q$ycnpi}9Jex%!%)`|I)nucmq(+xLL$m@d$f{#E|5m@mk@Vnt4zWp{~1 zevjstdP!d3Y`{_CVw~_g&Ejton_p9e;gxqU52v1C{);Zdo%;_N4K5~~Q;ol#+Ota7 zBbZamjjaVBANdVCSbfv_r|ODVWt0^|R;G#q*q}ka#&hjKrhk3c_b}~~Qy{<3JoMzf zJuBNt3Em9L)P+k?eua91sFcS&Ane3f!KtAUu311^*}QIlE9t9|L1T;R_bf?C1i7aP zPp_;`dgF>f4oCbIuY^`>A)Lyw{KZiZL}0v(>itX2_@6Wl|8laO9{Q{Qo8kH&0?(1O zg_k&Zgkd1^q{u^uO67=_;yfg<&KIPB*lfK7)`MGZR7L>{6-iyWJV4iz_}LmAY}hp} zq=EWYNHk(wo4Y4MJ82>h{7MimKz!#A&5$<&0r~^a__PE;TU#3tmTB(ahh*#&!?jnB z$VoQ_A!ENZr+;g*KVnr{SQ$_kpQi}8qJEF#Lp^i463km?Yv6}tHdbvwN5Lxh z%WeOVsP1ncR?K+2gX&Sw_~%=p7S7Lw7qS1T+xaKK#~$; zjneHDnS@1sAGW!3IDT-=WaYbi%58lhstXJLH)`1bfDHlnX*S34Zz$RfNpxvZV?dlY zK+@^lH1=EhflTq8gYCzg%y@?sq|Xn?kQ#1LYlWD7Y>`Q0XVWh!)l)MPWY%fXaN$bv z;1ZS*!@M1*ke>f_VtM@^KwAqUCS=6Z(54e;p&vFX(xUXi+k$ls0{(-{U(23owudGocfvQQclAhkG{VWeF{;sXw7-P@N=96o*|)@ zyEIyMpDd$?l4P{Z>AaNEUbO8|ug;fI3%s$u?NGzr|$vtTQ|ljMAWtQ)LHtcMVR9d>Qx@mm<1*)pGe@33~0lfICrvZ0)YH zZnr;~2#vHZseKyDXh?EnXnm-Pp`IYF6{@unJ?Tl<{!@FBwuJCey0*G5Zw81~?yu9e zJqwO>jc)G(gfByV`-F=NQ*o^g?YpwVGMMBn$R?#ats5}IN1NIBQj#))9fRZFI}!rM zV_BH^TW2~y)dc*Z5XJ3(me$j2#;a5;*)tL%A@bbg!7X%Y)#13nm-aDTR$ zZS+T3JN|EFZ3JWN>A#ejw`}hJMLj#bMVrIo8e_{7 zN~$_i_!X4rkisNCjf8=^8XVDG^_rH!*l~J^S+eW7gf$|T=}h5u^2))s(^teAvfh`4 z2LCk|-PdjRA+}!(6Fm#|+A`B-+#X}Z{s@11%CoaibN_4u|NKAxY+yT$n}RRNA+ev@RVAyk{7+>SXbYP za$UDpXNfHJ1&Cs`FDL$d=yrUgBaU+Gg89S@XZP8!+EAVd=|Yxc~o1JN4q`yAqSmtjM@ZgYj!>)4k)*_6qg_p zOKcA84ChfX>78aq?CZ~f$~SIG#8bv>#r|Qv-RgsK{$^t@y7+QkabeoOab{&Brd|+x zAq$%oEBV)p$?rY!&5;XUo#5lA&wOzIU({Evj{_Wwkv4rtl{C~J&c zZJg5baGlv_zwTd`!2agvb<+tc#Ry@cv~WE2jNL9Uak5FNU*oAOk8<#};e2Xz*)95< zx4c`w;MC=s^~bH(k=}7L{u&C#X`9lk;XfbK?Qw5IHR0jy1!)9sL)O(dPKGfLL35w{ zUwG7?tc4v%S)H8nRbmC4V%bc zzkn?5C6ikd(U&0TZ-Fc(6Bzj#n>4(=z723U1oB0A-k$6w{Vlkv5%8B5YoVOK(QR}YAR==16_)MZ;CY`k&lTGCxIoj?yf6dWWIinz~7y18?r2QcD zf1jlN_v-dR>Xvp2M{RrsK;hC+k)XnHC2-^o$583M4g;}++8$SbV^U98tbM7FR$NK1 z;paR{>ph;i5XZ8Lpw}fJRoMqe%2f)h3a|T}5TXn>(v~pdi@$_x$3KVSy!J; zG43MLo|E3f!0UV!B4*a-k2U1J9n1Q-t507hx(%u+r>;&dP@$KtCj0A-eUa)$0JiU@ z-BtDcQJT7{HMnDAzjBFGTXF)w@O!i|+`syJhyFKWbadgr5TmEN!rgvNoaJ$znMyl^n<*l>{yuk zN1zQT#mSuXsKlsx!H-*?qVD*Dm6D%dLGf84m?eg3|Ey4> z4313*IKABXayGgU5Fl=B%i6%G~T zeo(P-U!b|TlwvqL!5-Y`)K9EI{8tF!sNjRj{GdKT-0 z456&oRG9Q;Q^7+r_im`i5UZ|5Wp{;51%D=GF;TO)D5{*7D=z>F0Jl;QfyvW3lR<*x zI*~g-cK(M;c3nsYlJ$Q8ML(G;^MIGH-e%c(Ap&ZP>6J{lF`|P>!^Az{QfPP4in|H-5W`@z?J zeVTs+k*NAGa;Km+{&0~0TE_>a=Pjn|DfD-Bd<_t*?lmc75ud(6JH+6r-CAmDS-C7P zi`9mb(!Pbl_O75VTh9<909%J%RD$UrUR`UbYh8A3g#GGsCjII90NikcZ{idrk-jXi z4^C?|-peRWsGv>uAxqeP|H6Pir0Ry3!+A6N?S;b4PI3Lr1@?5Net!In%b4%iI)Xf* zc+=`xhCZ$8O{k}Sg)c#h#xCee<9~ZI;o#~4%t*}$c;rkX0T)>Yx45C<7+hdawsv^ zNh5TwFU79U5ruvJALiXt#`A7{JA(Vb$H$P)3=Bpv0O~O!_)Esw85_@RdoC{<86H$p0aN^wk@m9ocnYw^hn%e9a z;sWMt!vx7=fz7hDfLyI>E5_12Zy7Z{G96ofozm78%KeT0%JKI!#WPW0NY0CTp4o@^ z1Wf4Imy7Ql;NiMt7Baqae)KPt=!>h;qoW;VWz?CYE0G&_#c!b8_I>kV72)=?Z*Rj} z6{yMt5fGaWm-US&&b~=Ror_kv#dBg{)SDNI@4W2V85Jx}T%18oAxf zP6vdXZ>(Y7iS4+?7+ezG2oU~shW?bDki-X0>$gce6wm~eAlzavj;MXVQM*aRxt*>o z(~zFqm2053Q9qzm(ACZvJSqIh%50Q6pWtF`mN4Uy`y5jc;~aBMt+{Xb2rI=9FM(ro zuYir_9G0uJFW}>R?j92MlS7c@auUU2yjrvNg3q&3P{c0JB0*wbs)w7jlwL(W)^2^7 zUSr2G!Q3GDy~Q$3J0*_PTs=RJPzQ)slm^_s zR1<&p5U*HUP>PL6`&=F+5u=ll?kdE^#ieo35E%=d!Gb`NslGpXAwTH2G87Q%a1w-` zakpHtEQ?dIn2m?zVA2eqCtEGJBxL<0Ht3{}&tm?KVf=1%x7`sb@g|z0wjwPG;kh9` zey1hYmxK~@C0=R`l{*vb&eYZOIo9Vs!-|@MXrOAb+#S zeerwps2FNZzGS=o_Rn@x8!WL9nZZXa+}5%CM~4zSpLme8T&TQu zX*=^RHO=1jy!EolyEa;m75!7_5XiGI>sOnmiuY@Ep#tV|uU^JIlIxaHw0-4E^VtlI zOf5Ia{{=-DTXVm3F5k%9q>fJ7$T9v>b@0%{ke(}nny6s$E*@05rd~9Eq^3A9$o%-L zL!H=&XY%QH;n$ok#^hQER(=O+%RdNab8>8tUd(PTv3;Z;TwsGdYlr4~hC7*hAJ}A` z5kkQZT-BMOo6S3lEHEPE9;xFmD-vc&%OBK6tjsJV7U+B90bARM<{&}#K&A1tuc3S; zH5Buu$rh`i-f>N_{%EDre*UAF-P>fmmRZL>)!p(}*4l0QY&jwUSLfjxkF%}3k|t}S zR%7{ka2qKm&OP%6lA>+N$kI!#2(zU=>bNR^<0pqiGoz%$LSxBH*k;<&z`kfF#-a?> z`|v|e>jCO)iXWq~^k)Y|f%)C?(S1|{lN<-%uLQ5^aU3-v-`|CNiep@TM{CZv#+<)< zsG-Pd9)*+keS|WBJrOIcIJ6XVTJtQ69JpK=)OrE zCts1-Xf$>ZZoGyV3tU8Q_et@wTV!NtkPkMd-ScA6a8i#4ilp3ufqbbG49F!{K~w}s z92rvMs(1r$_R(dTwpG1$w&F_s!EhAqw*^TykIU@P%XXQIoqUOe`j-~(;x~(?-6L;;k)Aa!vlmCIfsc86P(yzY-^Y`R1|POJhXJCV3aovMup;*6sze zM5y`$aVo|viZ$F>5YaRBF`K6Qqa%^mcD)9@beDGO(nxom#9*9xd?@Vcr5c?;`eL43 z^8#yrtYWHPj=t$Vh<;oqHM`kYqC9Gi{bzL=&|F@h$rqD!PXCWO>9M)WcFiezaO^)xPz;5gD(_&HY7imA^0 zVEXvL0=rW6_zXsII*RCEYF?j{dr20(UgicRA}y!R&JJCXqqMvIF_>5B7Sg*OL;FrR6V5k639+zfQy0YokBh zh17{_rwXCd>lcWP^DkMsi!c%?TX|}v5ww}A$st%qeX_iW{glX(sG^#!(ogiXwImiB zy=2+sd;dde+N&uIWQbr)=E_Fsfk(F@7phSZ!JS?OjXnK*dl}qK5*w%%%*id}C6z-X z#QDs$ox8oq`?NMkwcg}u;Nx5a_L$qo1(`5HD!dp@kb zc?pv>-Rim*HwW99rcy5X(O%P3aNy}7-8+?P0OP!&BThs6dDBDFfZJF#cCUITW)mYY zsjHu*K)#j2m9ky!YIOYDJzm6Bu;-L=!-=fo6kM8qs;x;y(Qa?jSbe&BPhAapYjpW^ zd=qb|tiJD2-NBC-0*#N6+Q~1^=-S-x>X|MfnjO@}sZdbzh>nBKv-ZZQCh482u~p9H zy4PEm8;39HZ<($yUuZNAkSY|OzX(z;CDMZ4M|?JVayr0FI%ajtn|z(Y4o^$@{JwZi zLDiS|5efMAJ^Nr;x?SnZcUATDAh4rCgBFtfXmhY<-H;;evnj9aU`tE-QRqgg`AU{% zL_$FpOTbi`i%^mKggr&2k}1_22JcW-uhH_{1BX_Tk=hU<+FwUhScmMyshSm<~#YOPd&v}nFq!?p*Q_2 z9YPV3%`isZ6(5|tnY-<@{J&+1!klk9Ma#NL;3;RT9=W3XUub?f@G->VNl(y}Jjf`&4Vefr zNSHar9(BzdgqExo<-8hnLVy32t@c^Oyr%M5IP(B|C*?57A#S8hf9j1RjhYUIJ|_#? za?JL_U7{cC!)&P>X?i}lHK7iV-+vgTUAUXuaq(Uc#ajlS?V&c_Q%cij5254d@YRL5 z-rqWSJgC%{K^=>b%#y&9x0v*)Uyu#TR<<+W_)33zx_-yQp>4m)v8CoFd{y2qehVQEdiSn~z^UflJGAMl zCcaShq)2%aea4IkZcCq>Fb_R?6mLt$&(P76dtz+%N6uz8FBCpTIFwY3Xwcn5*nCbp zurp`ET{_J2#R0jI*dw4a)Z)v;?!zz#*Xbr$uegc{+15>W}GL*tTB`8Gx68ta-@ zYsBEoNg0mbjzPs*g`UEio1ceq zTWvVjLK_zXLbgwwJluAiVDPQBFK_HQ_wQkIFHocsC|7aF38y}yWw<1}7@fN+Qz?%x zXmCPfi`QFZgxKR*eIg$?8Cr`Q(^|T>{cXvtgGrnyI~HBi{`*PHveu)qr0lp@B6?~K zJUeNNl|{2R4vJO^(RVE}Xw?;LKc#tqi~4APVQ4LEbS$zdRM(efS9LvA7lztgj|kpZQ!D5T8_8leAtLe$J3Vx`@|eD7 zIaQUihnWP8SWvF9-$6HXs9j%o3y>?l*{lnxSKu5ilw&NK*+vF~ImmMdGjQqBK3?<~ z=7`Tp6Ei-~a&DewxV%AyvqcJC_ufj$g^@n*ri?kf2OdJa$#M(*-^XR$yq6Kca=iI; z^uYh(txR6wF!@TY*yBnY-CV~!t`s~dw9Fw0oM~YB*-amIj_f^o=aClz1Y*sD=CNp1 zN4aKKz+JMY(|w|Noc8A42^e5O?rUj#z;I02Z93`~{m8lTsHb!{Q!1TUj0 zug(?Pi)|Q7yIYr`98``}O;_0pX7XqC1%4wQp-GycI%g9-sA--?Bb{`qMCsyPLG!vY zi|GmBPJ1sHS`$|y%y(d@>tVS02gSX;H%!!eBQ21 zE7LrtHG^zOpCL8YgtW{eAR6Sgffpg%<3?=lT36F|t_Spg{q%!#WY805xtbr-dLdY! zAzyzkbOsfC$op%}>CA&6^LZ>Yu;;+?ERz#ATfOmahCy_<-zM=n{3`X#>iIEzPkYYR|P_nitkeQe8 z#btLf4~SVsXYXE=j$lIeasJ*6cjjREkKh{$nHWuOa)Qo@Wn`_dqUKy}L>7PqvFR^D zBErH?Y+7HWha@FCVQsUYr@hnrub7HNj@UeEIr#ARICnt^E7`$ZWP$+tA7ISeVF!ZQ6@pW-TL!t8Q z9v%Gr`L(!~rtBPLU6v}2%*&`=jZFov`M2#?5{L&4d_XdbRSwsoolI^c zdu>;4I?0|Nw;+!O|M*u6*u(+ zgQLV-TWDUGMsWoi!H>&Vo4L%c&nZZ~s)L6YpYyEh$h;-A>8wG)p}vyb9lmzYdWDY7 z#twV0a(qJ)Ux&czQ~cz=>b=}(L+;qlN=g-J z+d7^1p(ZO&dM`Cx}yrp2+!?7Y0LoiVvrkv+pX7NY9vu{v%u^_%Q&fjV{;nv2Jt0^uTQiOQF$y!~%F@+hNeS_)4DhUZevPzrf9fJ-6ahg_ zQIVV<{3i1UexD&>ma{@xP6f}pq*-dz<}F^tvM5}v6^fh@V_mf>1t@mR`eY2)qS&DP z@wr;rM^ZhZ98o7M0wOuqTV4V1i@tP<`Amtrgc-m25V=a4#V1&@gJ;G|e)~h^EW~d1 zrTFKQKhJ_xrC#Mi>ww=s$NIp~$-(hW&}MAL0>e;eeAgy8Exmh$j-f9jHr>LYJAseb z9-Dq4`{Aj@LWWWG(+Veu71ktb@#BZQj7+F)A|12OEKIVIy~EZ~a&Q`oBF4ul9QCb& z>rgCm`;yzBc3h))cz_SSW0J*qv{f^!j*-SiGc|H+x;{GW#6^v#>Yir_Mu_UJshB~I z!m6^x(+XD!1x)+$x(Mji3C-7?dBzG4a!1$S?XA5j&oO?dw5uk@8OO{nAC5_0bz}08 znSh+ftJJ3@h?P+p#{GypIfZEW$8oPRskur7@0cC&Bx;^@G055Iq?%U3ptr_e4f zcTkL-*H)P@MxHl7JKL$`6HVb=kjR(E=GFMT7Mjl{BjTEG{+Y%uafn+rmSrj-|BmJg z7zVa=D5a}(GbqI7c4Lf7)xV(Uu5+yDAe(_tTa=<#at0;MCYP*<=Zr_B8R_gAgER82 z-37P6LYDs)nH4>jxP)zq%*cpFFua3pyd6MAZ6o~g6mzw($=4u%IAOW@#E!;mGQpdV z?;_Qf{8S-3P<6O49_j07!I3;TXE$A)l4o%n5mEOYE}Ve#O)P=Kv3B}kcBe(u{&@DF zX_`l>KXqO`=%h%F(dy|{rCV^_Ye#9*iIk`w?~%3=4{$J%M|oBb;NzfvkeAClkHO{@ zYwFRZJVTVGIaqB!D@JCQ?H#AeGO5LV;RfZYeb(l}obyC0e={*;@@XY@U-YN(sQi}D z(Pby{z5UO8B5XQPYe{eq&B38^#?g>UnD4+(m!y(P9j!B3wo7BC+%5s`veX}iP<6Xn zjrNx9e|}A@d;NB8`Q;K8H&z!Izg?g%dWlY7X?A}OJ)?qWdHG1Aj!Vyk&8$UF^=!jn znPHD&+^YG;K}=?j{hU1oaqq-FENs@JbJ|HVU1wS&hof8hQmwZ#`mm=rxrKTYV{SJ8 zhP!{XENy?6{x`hN2EHR`Uj}yAf|Z+&J8W{V-Z&d;W%h?s6vO8{bc-4EWTWpMFGC$K z_|I{Jo%X{(p1d`1N4ZjyOSVH&Z{veO<=aO8HsTIejvu%s@EI57jj2fd(l7m#ku9GG$uWe^7vbH!z#Y*EkB<_mi3Vl#L!%2v6YD#=Lfxk9YQ2uSY2d$fS9WTm)rGjbnk$a`| zF^_UO`k?&~r;ON#p}X$KccKgH#|OU2HFFY*#c(d$r}t!LNLn=Kes!JZ3ho@8(TWcx z*4HvVlNpTT+WUei`XL%VynZ>Y|I)jG@Kt@X--P*RGqEDhA(AIV50*}tX4;>fIg;e= z>p0|5VilU;&G^4ODZAYrNnOQ$>bPYF|NFfqF^=2H6-yobmcxu&2im~bn@u=!^xe17 zg9rK<7PfFvLZ++twsCd58B+^&ibZB^Esbqa=4f_7Mweq0YAoW%Z`Ponze_u1a8pHf zmgjAp^!}+y(#mqi8MY?{HG|@bKoJ4Ag}k;w*r>DDw|J0!Ir#nu6N8h8eu+BAro>6qn)xR6 z)2mW<;zuSo=_XZq!sfo1JG$|Z_&z$8HshaSM>^6!GaamH0Cz;`cKNz16HNu>krW~m ztm0?x1@u$#bl+VC12Uu?2%V*-KWDJn>GZ{M?%8L3GD%R3zPm)h{fcyaZ3A>VIX%0v zEnl*RGN&eE!rBaoMs9C*ORx-|gx9pT+i-UtQqSU(G@O`(XyE7SCopwGeezt0Y|CB@ zb_i6eAmb0gTTN$>YmYa{(|*COg7=ZOyb)HlPZdWecDBkRHvX)rJ2_?cxzw$>1q%78 zY_Hxem?SsM(p|+;f0@cmGy0Mx82HUj?5xOV*840mXJ9A9)nS3wwS9nrq&zxKx_6+= z@cc!&63nhXiIFT@NitFz8+FI?^a?|ExNFFGn9L#IJN)_1qO$v$zOsXHI}JXwkTaQt zoIv@^ve|vl%{)t$-S79WFp>06SO**Fp+kKmUT*01T8wWd<&$`#m~1jK_&+aWd0J@= zs;U;OnHfazq~ftXppqRoX)xLr)T`$`@9uwMWye?9uiIiCriQLP!dER5U|^J$mnZf5 z^=pkCy|fBvshy1{jI{9&HeD2;WnfwrHZqP%SUVAEK`S3xZeZ}ZC|4Iu6dBwDI4t<$ z8V&ly_N?LNpCc<4=Ju$Go|6?L#*LuC56Ib{JY|-?*W>88k_JXCeDSWv4LHt2W}w^D zz8HUfMD)pWq;t~jv1UfGOd)o@G`9u4T?d0)@ig=L*z6NSLNAYd6@~of8j|WCrJ!V$ z>Y8^GQ`wlEN*Fe11{Om^CR_}^7;+=FRk?3=2MxQ4PA_UlnKE;PbdE|{I1X9R4df0F zv~IZ5Gd*V$^9s#YPnfLA9FhhnW2pS6&>BAOq|-`KYOi98MK)A z_>QW3P|t+kRAGb!nnrGMTo}I!U5HE3JDeVPvd3A^!N@Mre^fOw8-%RR$SEooUuaaF zLEiByQ?kb^dMWe$T8{6%1T1@_3wx_&R%sHO%!RdXTGK37%`->K!3Ms`GPiae<&pn~ zv-b>ZqFdX)u~)!`N>>pS5RnpkQBe>Ok=~0UH53Ix57@C#r1vJhgwR3>Bwz!jgc6bn zAylc6W`F=8@Sj2Nz4v|Z=XsCgdHo_qlbJO$YhCL)f9Dwp_t}RwH^Y;PS|oR}QJ%8{ zw}6;IU%I3l!(g~&en{TQ&Gk>~yk+f*?xf{=N6YaESfFy7S6EqX$;0ZF*iQQwm1Ni7 zrFOuDNom{*w>*x)KP@0FpY0Zq0@ZJ#9+6Y2?OflVgTLq~bxy_HmgRM^ag#0{d7QKBRId}_ zsSRp;PR~y~U19v7LA+y*HX#KQ(G_z(P1FeM>_U=NMd)c8mOz#7G>%G2tH<@9CSFvb zRyzmy)h-PlrJ5rm(2%}#fh*6B#g#g$v27?2pO$>naxd(?Vk=()|tFbC=cZ z+Ml59pUXe2f5XXe%e}B9m2QPU#g9SwMrII9WcNYaYaCo$R-CL<(I(>;khT3w+Ut20 z(P?f+4if+BN5HJ%9zY8SVrv_QIt@ImS1&M1CK9QQ_4g^IR~t&#xSinSpF25#qT8ol zAhqM-MdRT67&~U)RW}55wAz0z+@8B_6G7fnIpHx_Vc+92DS^(1`n>$)KY{Xt0Huvo z?!kHHy5;=$VWfB@dTo!nw-15}@vlC#(I9IEbnVi4y}v34^x9FZTey$a43a=MSRHiXj)V zL;=%zSPbO%B`b2j8(i7eCn!Zx_o$`6zc@drY!-s_(R2m+`Y8*K|x$w3C*- z21b=UKFpKRFH7HcVlfM*W2D7C?G-uQ_z-F{6_%mj8B)WBRrxfxDOgw?6d5~iE#4pV zh%Y%jgv6I&@~lSEhOr`dA-}59GFiT&l{R$a>L77r+1NqFF@8By87JF?*^R-ux69dw zi0bIU!zM{HOLP1py$=ndUpj3pc{u+_i!LQiQ-E9r8+Wv2qi?OhaU6MwXtVQt(lvhV zME4p<$bpa@OIm+QnX%>VUIa^8X>nuIfzMQo8ZcGTT;D8RiZh4u>_Dbc*P3g@*z*ul zt`Hd)#3FAhTK>90%l8UnBh-Ol4*k^>pb8C2nZC$fa<*tvg2>n(Jbw6IxWT;%_py5M z&IOY9o$=YkON?LoLl#vB4nI2(5`IRgkIT^PDN^Qa7UVSTsE;OgXU5&yNciONsj9mv zG z7lllU!Iw=8U_(}O9Tr7C)TTvo${y?8ftN;px658ztISGmuTf2I9~F!$X!p{a{qZjI z;~%OB!3dk_(nCBOt>u@I#i|}3ke1B#gU%fhC05h^L2lO#JMET8`ICl(!T!}bC{UYV zJ0^Rn5@svoxmc4&h}YAW4E(7U=_0ZG$SEC7aCJ90$Z#TW)E)hP+F*}Gkuu|oMBYQI z)9nE$YoqBjdq^Tf7%`MliaMqHWK!3S;qwK!qlXGx_pH-KTaGk5EB z_COdA)=A2peQ)#cXnxA8XWZVd0KBEY+IE;M6x*(^aBj3RPPA}ZTPLvZpi?4v44#sv z(!4w|oqC0|s%FzrQYDu6%Q)1dRHub~b@edN3cXk4tUT(a;oV@LlUKV*$#?GXqeCv7 zz;z8M!x}!cOtv?|6#~??_~z4l$acxgy@kma=>bhKvd1w z_Yr3EaU`eP@snR|XihS;6DYU-Ifb0Fb$QcPVg@ZlV-pvrBA8*0J%6cl+Blb)qqVqn zRkyc#V5AC}FX64dqQ>_=pNxnr68*~qwA9n7_)c@WTUrsxmJ%8gj7u6v`76sbqDSPV zNSZ2nXI64&9dA|Kj{2GJF-cwQbv+o(Y&i8{p>DoQqt@4W{${2ppk$O`tqF$7mZ$yMr4`w%8ueotf&chVKO? z;QZDJw6|<=-p@`KK616W3h#F^-1*m_gCzr)O()XDTWS*}*6NcSjIt z@BQiE9V(FxdIAoVH@g*c&z&;^ikXv(Dy(8GO`plVy@e%=w{yZdO|ULGdtC_xgKU}m zETq(!nkgsv`NmAKHcVm5C|YRZwqb)5yE_73?_pGM_SKWdv%K1;|F<`K{BS@~N%K=o zbT4v*c&A~&`P*vMZk05M)@Pzblt;U1S-zs5!!g`RZ74D7P*A^DU^HO5)X7+ ziWDb#RECKJo8jF+n>~OJXq@kFZ>#Fex}D4F{l07`>4|XiYWTjmD_zW*S^`QtW9FH! z2yEpIs=1~tLU8x*BO6JT0ksd{+Nix2i1x;g&@QtFcUYSZWb%e)FOAuJDIOhDtk+o( z)igoU^}e+D&a^bXAw_)B3$TCm40fEw>b;hB&9RN0k3%A$<3GalfRK`aXmQ;cjH(;S z!oy^ycg+C~8-KI7s;`p~Qk1<_ZV(bAS~Yyijq(e4lxnRceu3TGnrGh(un0BAmaEv@ zF+f()8;x7$QXDM`-YE8i!T{SdKV&MqbG;^MC%QNU!@r*n$^uh31t3T1qQbiApB8ld zr=h!_j-_Z*IwL zJ$2YJc(36PZmj=$VKf=8rNO8Dd+&JV&jh>Q+-1}V6LSACs+JtE^_c~@flw#68=#Rl z!1nfIAFvTJTcOC`HnD~XamUuV10ruq|H)GqKUpe=B-P{G6DZatH~S`78y0_7*4n<& za0B>>dFI-1cXPnuzC9u}YxMuE+Z?=k6M_fqHrA(mVf(FEvF)L6wU^l`Etw5efhF9O2emVTR05DC~2Aa>dFn zLW}PHE6IM9*4DE>b$jwY6}f~bbnN$2w%KwZNZ%?iPtOkDkvX<()c92q(zITS#~5>f zNBErj4>j@8r|o|E&ZgNju-9y2mn8W91L+`C-^eW_vhJ*ngYSCmRpn0G!y6U5-I%<9 zq8K(}h$q-A1V3M_KxyWO=YO(0C&s<|it5eRh-HQQT)aU)ve#vvR9HMqHW%QCu@$3V zu$G8IxF|ryd~fei79Kp|v+HX9RQ~f&hnaF`DF|Ubag(=WHKiNf*1sD()awtiBVK|L zr=7*-yk85b&jfv%B#v5#16Lf4*@i9LFM+$k0F-%hV*QOaM2df09;8o(cWB&6v2G(a zy7Kz|hhsobP1Javb5@Nk%kov?W`&skGAb{s;#$i4o9v&9QP@_9q)GHSx5}WBQ#?gX z1^uC-&--puH-LM^{MDML`iI@xO|Is4t9sMEFN&2vy0c9AeUd&`o`LEb$piGM-S)>> zz`MP64+xtK3?(EYhgDj%(d9t^p`q_H+E;=XMORwqqD8<;t!ds})rD^HvXi5!%#wMn=fd{4OnxH_bBE}J58bC>b)qelJu z#(8eYOUBUvvEigkFml^T*z?RTSIVfgsRo+kY+7X)=#oKQOP0sSU2>ipmTs$Nv6TSO zgp~s>{nk@Q2iG6mJ|rfer**lyQ@=g*g@`l~0fpHjf+x)zNk=~`Xzbp{!{M5&)h}?@ z8veoV;N%~w0&m_F(T!P?;4kPJ`Z~A^imG`3!OL5M#XAcr&WnG-%wt*2x!&al`Y2M!^gk$JXX6q-Hst(WC?JfG` z{*habX*I&B$E7Ia*8KsM@MSimn~G$6Esi|BFSLZD6}v*(g`TQAWwdhF^c<$kyE@qms)l#2hoDlGOJJaS6PLZ=*oeHq zckAv}yh5B?fF^Vkqi&Z0*AbuSJCS=5UImYfZwUB4m2(Rj7j9sWi!pbc=DSMgz%5fZ z!m_#0fek3R^TOZ0DVSM6#p1&r`(&|AuP#WZ_04ehpq~zfV?SB6$mqNINBz>lE7U(5 z%2-PmQ2-Vp`|wy`WFF88?q?4W96=g4dT0!|CRZ7)+Zsb~G3tBddF7?g=j{|G-zsdj zz>Df!i}<9k4XqQMD1w?K>e3wUAZN_{zF5X*9*iU{12*)YQDRgxRk2ySS>hV4!iYR! zzh%Ks-COhH^ZIeO2>;>7*wU@bmo6<8(3;(A>NgdGzwgfoA=MK8`m~)G*y8T` zrcx|Fu|8i~3$iCulo2FLYk7a0lL&*Nr!YTAuW{Xb@nRdyMaP!k|rl z-wTT>KeeO@Ax`cpLl?r&b8+%D%!?YG4G&zPO1>L(cjxuPeV1l|Psywry=Ld$FYYEp2@)MMjCV-KjZlsXylI*z_NBNg7ibAL0%|$F#bvJ1wRggKp# znxv5XTzisJd3+a&DW$^iO$cE9AZ~V1LKgh-v(^LDi?WgHuw`esX?{d$@E2$XAB_90bP^C^!ZIx5 zb@P-;Y41LbK`-Tq^o9Z?B4xYU3V3eKyXkPU@qM&>QpJ~>nv){18M0{A>WAGo>vjb> z-;JJ7p*OtTn7rWfI!wQ3m51rggtp2Swc%t$M2Pa|?tt{)e(xcVM{%0^9ps3k=pIYK zFGT0J!kJ>CN(CTD?Akw=kgPm6olBZ6igitD?H0Cj((D;<6KpMaW#1muj&)7AQuZJc zX|wDH*552s@&S)l8EPHyE5z0L;v#vz+zY9AA&X_5o-j>Eqv_OL=tdobtw$wejk?x% zwcmYkYw3H>QRx*+gE~6{Z1Pi{o7>&>sp)l>uLZA@-`xucdow>OzN?hV$~cf_YE!I= zqf6~w!y3<;dR@OjBso)0Kn1}!Zb~V|3{myV-$ZzC(v7U{mZa*H$?84QbCF=328PV%#g1BDnm3g$?={dt^2ga$Z(Lh8Ei?6wZ&$diH3D^mDf+y2!3Rxad79u5_J;A%nOQ z$pdtEi~1r8(@z0U-MWT+z=WXVxFw>$+B6B*p+nXJ1?ZQq(K!l)UO`QDG9V?!mMZi` zhux@kuPMhO>%t8yTN=b!1_6QjAWRPi_DwzfANc}fx^x-bA(ak!piVMi|2vK3nUR=n z;;>mcXW^ZJ5|QQ`aep2$+hDQFAw5Q?$8igCds013ulbCIm5$l_^ngmFO6AJYr^l(f zRq_*0b`99D0G}Ed(CcqkL$=!DRdu})x@Fb*8xgAn5wTB^xAh3!?1li{0>CH~v}Py( z1Ku5d6$Nr=^E?AcpfoFU?{WXV;d_57w6P|m`mE&Rhud7*PAaR-FmNho3`d?f^5#-L z+L-OK_2|E_$}u7i{J3jwQ-Q{M zVl{+?E5eH$Jpg#96bpx!O!sRa-5gXWDu0XZ1YhbgU$X#<&?*QVJ+}Ce{1>c+E1qYi z`T#F?#!%U(W9UwAHgO{jD2+51OY@gGUIh5ZAlLWug8I5OwV^652ds+vP6%td7!g+D z%tM+g!bAN7aOs6N#*#=Xg5zS9ZN^j#F2*s$1)(?Hic%OY0tuSR*a^9-DB{nqRuseP zH%NoL+S2R8Z8HhHb!PsQJ6)L9|Iak~0obW;A2Ipk2{A2qedl{wKvaQIEk?aO<_+p1 zxd3?|9ZS`@)ZFcBJiKH@yvPAlp zC{Kk;XBzA)V~IiE3sg(g$(H~qJbPcwwn3xMB#TX&9NXxcUaT;M-N_R(260HPJ`0ZA zRnj(^1{_?i*iX_rA@6AZK4Q`Pv-;occ&|NZ{(j@8OwjN_*T@p))#a$ytzX#&jFY!F zL)de7hoRAFc|X4HHImb4GyngDN`CnLhDwH9m4-@~5QNrkpM7XPrS<6Q1X2M+<)**B z6MRisNEocoex6xy^LVt@U;prRyhYoNOma$5&kI2Xz|0VO5}OHmL=0e=GX2fz0d0?5 z;Wv@-T-pq)yK@QtbdVS7 zh!Gn+@i>}6xjoQb0m3Fy!J{Xgyx0PPF}qTlTlV9SIAWHWdo}ZHP`9uNTpHJI;I1NJeK*FyDJOBOX*&q zp2q2II`f-p=m_&^BoX0_wWKA^??#1L6Lhs^Dh`5i zGCkBC){-ww%>vd(3BBWu@;U~NxbCpjP{=tTP4V(a`~`c%ejVt&GN8OIJGrCDEqnd@ zKH|B?>sE%8l-M6XEUX7WL>8kxcigLrO1D6Ku{sA}&H?`G+5y9T53Dc%1xOKF21qS- z8w4Toi!k5#u6?zQh9ZBf4_~ou)vF9+K5f`n=)N%~_&6Sszxno!qws`U=duGWz7JC9 z9BQ1bkyq_Zz4X=u{-P3--S{Iw+adP((mG#A`xxADi>7Id4Jj=sV7n%_d9lE1&fWD#Sv12pOp0Ys5nVGLU{h zVhPXs+BYL&RB-Fj_SjtYQ7!pD>99;3S-Ke;vxO6+9ngck#Vc#S5Jwlg{Q+lfvQh zZtL_D9~skIQa^Ls$CB?u050bO^(nLw2aTYQ?XR8pk#{88d2YW;sC-5p(lI(ABv3zv zdbW%Ac~C~r5Ww+Ww*`l8$10aSvN6YRSp6>f~liXZcszDl@B_u270=+fCgDv||T zh#IRd3m{4TZc?W_-d;&rPVzEus$T>b{e1q_Q_LXz5u+g2^`1QL6zTOhn~yg4bZq9| zi2PLwve+SXHozO#8c}*c#J0o2Apt?On!q3;uk;$q1SMJZmD;;o7@^>~5n;0UAo~`xd*(}!E#JQDW{dX9JjW-*tR*(=X&!71c-=HI zZ;*U?oK0S7rzq6+0jvM$FQb61qvPB=@H@qywEuDzO!oX{Q2=EvXn3KFt)f(SP^Bxe z5m(*Me)Wb1hJE-2$Cbbp(%D%>q-&~YFHg2F%AfY^^|!=zKG?6icfmF|EsH+O`JL%9WU5PldK?uy|bq8S`!pg-h9VVDec*$CdOzdj6wc~B!YaLI~`!c}$$tp47PrhNY*jx9S0 zE3}$t>!nwulzgEOfxoJ#lqbYda=h1hk9#SPJsY`_a{-uo9ZP%g*25@fF)eAnIvOWa zNHBM(fWv@wJdM5O)yN-LjBvznSB$O5;z*M@!h6|dN_iEfK+Yk4J@MTiIN(|{ZyPpot5a<9TkI7UUgr~gR|P;tMT0*T2jom<4h9QOgAI~n z98|7vR1?tqqR(wLOLumJRYq$BSa=ay(Qe6ne3vo4pS52VN+Z7AG3iZG!`g((>P-i% zoFr<`?mtu^BwClNuV{7eyUKV%hJNot*qJ=q?B-;9xp9erZ6FG5ruR%KWH9BuV@4sXWP5*M9>t?XwnDJA0iMI%RkUdpu_c?N-xUxH%<>6NI-z4o} z35i8Xh24BD>)SYkr2d#eIMoQ`U|cMbppD9jmGl1Gu3F~jFlM#lDggpt>?Q}$SAomy zRn{B?&C7F$BrazM8U_D)Q>@dN;~^s2*S9z8%r=6~lF41~Gb>6_4G2TkwrzNJ+Jd6b z`2yMtL{Yb*_0!gIJkN*k#e?cK z>-WucmkBeb9ft+lmvCFug9U3|ssg-BIwh^s%roAuiUxGPlZ~x&e_ZQ!sWbHGT@SIk z1M;8k_wuXol3cwZLoY!*ifejNZGWgizq0~6fS4_9Jb5Pi7{V8CD^~z#9Lw}DY8Vnv2mV2q z<6*EjZ*||fRV8?2)PMauQ?0l4s>~$T#g{4I?$R?Qy8b1SOIoz@rZ%x|LS*jjXq;P3 zn|ttyQ*!DhXPn*P6q8V3 zPE+`JPmXfJO+md)0TW$~9Ly@3x}B|JP;qC{_2{&c41TO`Edp)JI2d&Mg~Ay}Rg5oY zs0<}7lKA?F)!8hm$NffyC#mY2Rf+uy{H2*4JZI#0T{0j8O8mg-xSBtG!MnZX!H(oB zR}2Bi z6R{L%UC}zMZEf9hlB4+EqdZAbFP3_sytA4V`wC}_ReFd6&l^>N7+~e}=(hN5u<~oJ zWA+DS#qKeGWad@)^ydfB0w0a=u`c^}6!a+O>tv^iOYc=xyqaGb@k6Kg2nlJ%Gbt^y zEUYn=2GK{2XQfJIGG6mT%=IQ%=xuM&JTV2US&LjrYh~&RCNZyX^j?z!bq<&}F@^{1zr zpISNA*t8B!l{ZQ<&(M1GFw1&j75sO8@ni*5nn666TO4bE`SomMPPSj6$N%n%@cr_ zkEP0|khXz~N{ltrh zN*~F{@N)2XvySXQy8GeUVbOL)<7b`$BXaiJX`{KrGaE~@LCWdLI@c;P=;uzW&?zfJ z=?~=HLrOBF#AlTTkBcv>m@#DJhP*oI{p;2!xD~PU&9X9WwPcmzOU4R{BRfcw?a-kK z;J5z!H-b@cx2vQ>3J+(cOzp7BMlz(_dNYW9h%v3UMTg2V)HROwUCId2?5U|7$XfWr zTC^&i{+^N%{_DsEbPvGI&{(L|fTz+X8FJAIsiftq~T=t`YIB zz7o*q=H|z}MzuRH+eNs3&~jh6!Ah(&eW|mS~cyR5n_qOf$J*5E;!sE*m zb=B3Menkm9v*zcWs=myN|L}~z_=`LbL_sIAJ?J+3Al0-}c4E_GnjD$@bO>N5jQA`U z$bD>lN(K0QU5mGZn)$jJEBk}%4~`&nQcu-5(Q%ai6%SQ{fV!Ff2hsituNohZKpoZF zmD`>ja4KbS((s7)AO>oYDnWOoUm|JWUUx?uS%9))4C4F5J>(9qvl(todFy;lERfKA zHqK)iINOsSFyHAh{aG+_g3_9&lVYf+mz9?%^eu6w?*04gDKc&q?)`#^D`q|HTO{`m z9iY$Vmb4bOY1AX|CD(j0bIe2r5|W%HxOLxc&#=!)(7jg3(V(e$hxqsjmIR8YEM4;3 zeRYpKIM`*petgrg4Gtr9J)k7G7+jAH>=;5`PBWq`iln(T-0xE2>j0h>z%}mG^{OwFhxS%HJ0K0FW ze9{)V?JSY>z?Xx~`gM)8dfj24Q{dtK2bwb>{xEncn_pO{nI0*flAOF$Y{P6_ZcxT< zlQ6)+dOPy+*1mk79XalEC?t?s)j8Cef@qh}tjIn8&4Ig6PZRj+yR^uci`ts{0V_(( zE2RFOlAEEViHjFn7N=ev@mYK+iCJktodCyyWuRzg#swM`dUYB6uFGoa*Mh8-UKCN% zd(K+WZ#?{x}>cDU-Z)Ibh-J>6*xDO7V zYQb7DJuXTTIHnRapIr9>cZv$j^W8ejx)#5b{jDJG}MK{o3s)WFe$;sowwD>;2+ zT*o_vdrkHnAgVAX_8^k2aw=G;>u4%Zi)5)on!_pgM}!V1OF&tv=;fG3Rd8zg4PnH( zQnp*T0QzcL1KKG^YJL5pUtSO_v}xSI6-1{HXYP1yuQu?e<&Ej-Q*n&01TCG0qTr+V zLNHyWrB?IVGwYk6EpNMwL}{BK$sB*-FA4!^l)K(b<-ZLqH^kXO5Lt-x1ZQnf_Ih3+ z%C}Tt*ip)(Osmj{ax9}R)`|2$?SVWNS`HDEM+YjCnGar*f`9v3Fc=iPYs4eUnjD|m zp>BIgGuhz1o9a7ayGpS?A2a2d<42n%mA_jtjevzS{MMcBx|fyfOJifexr}e<3kuIA zgIrRKBV$^2-~FY{*E`Swm`E7ya<}Se9$&+}DCjH{K0vB^VAU{#Tds5`j{ioZfZ;(` zPFG^H;q|^#>&sMP(H)MXN3#m09Gn5gyXIdG>!~kzmB`*B+IzWgxn93$pqfxnaanV^ zQ~RwK9=0OTa?3{3#Xls?)6;W+-R{K0(BzoR=kbTuKb!v+Lx{&T&QAl}h85pNGNz*T znj)LVG{8!k0L+w6%CJdvsr7vJo5=az$Pf-B$W{TE7gY$no!q`l zcyaS$@E;F6{kH?$28ci-&aj;VMhWzy1GaFuXG5zwrFeP9Im0A2*e3Gu%)Cflz;qe$ z$Cjaebo4>%C}on6uTp?fix1QACREf)kj*VW()|%4o9x4C?VqHNc8HX)ugq}HSl-wh zr=uHfE@DMxQS`raVAiyaG*RMRdiIjt!KtU-V-Ujh0;8M@==n_Lf*_Xy>Z$B)3NRl$ zz6)DgH_8INSLwmSHcK=eHN(ZlG~$fAGgu9`teui(WE@j&tq+)~24GC!l&<>90_qDF zL`X+%Y+i2&JF*4mjo_Abp8_t^`VYT20D<^uPAUDjny^q4ait6Y4>5rvwgLa$F8kpQ zAyldY<@d}d6DY*t(VPFI#;(%;L?JzI#1K-Cxq(`FX;kyo`D6c{Xfu7m2#_StaHNY| z$wxv8oJcY`F*B}%LkpW5Drq}MHRFj~aix~U0=SvAwg(v}=7WR^jf}`3wPm2koer=5 zt7Xr*=Syo%orp4hGNzGq259t(lKm6itW{Z_=heSxM7D1@Qfj7D0F$cEedcSKmVrN% zATTIh%71)m(9M-|z+6~Z((ZR6tfw5c8&Ehhnf51g3Y-JC8~moVYDV2jB9{~I_W~gk zqqn~he?IK>Kxi8i#Q#9!)GNI;3zRv4ZEgaIP#B8JSCE%&CZ-a;Jdl1Y7Z$RLBwVd6Uy-8F~%1-5(w5vAuj^vNn1qdY*U;7Dp zSA80ZA>T8EPR%mE4Xc z@y~GY(@y|8o0>Z5cp1hxV*U^1vQReq7U-{js>a_5jQ9Vw#dX=~4g6`cQr>$2@aT`- zadqK(#!6krF}?uHQW(?fe ztKIxW)qfXRim4XX#d{^JlqVK#N8 z&&;Dl_$PAcD)L^fSHENSV0m8IQ_~b6S?7@Qh7Opy5$*rNJ0T@{{W(9&@lA!Q79hCn z`R|a7ObqO|of5CI>#B)1n8cIdRM%MnZfaT1nba#^y*SXHgKrKA*xgzzeo?5x zNXL;E=HE8J?3?|vN!sayc?qWLP$pX=b4(${PxKmD&` z=0}0MKQ&Vita4qF1hB1&k(_D^AlV1c`roNKgZZJ`wctR!yFaj{sI`I>Lqb5*@sE8N z{L-R-%Kq~l*Z}6V;_OFbUV<`K-(AuMED2EG@Q|u?n2snAVzTq`YdiErB0Ky=O*|~9 z@{nOF(EYGe9@sWKdm*A9T={r2Gd_dZ97gjgiS|bqqSw=jz zr&M9o0lx#mz!0MQ5ic5n^s7jQp;w=wveQ%SGNK!;{k(C+B~tw1&i`9}4siEO2@PIS z&7l?IA?0TFU@o0e~Nwfm|gLksW$-$HAbPZ6*H-kjkO4oRL-mBp3ms@p#P~Y&7tvC>pVwbN(`&_oalkr~YfTYYpkfB*-QhR0tOtJ-W3TNyXacP# zDTuoX0xjn+{xUbUqRl};hsa;%I(9ETz0y&n+iwD;s|h9~5(1F4AAK3-P(!pQBBFLC z-$`%rQm#DPT?9n2$`gTP51p(Yp^rCaY(u)KaoA4aa$nUwwhq^7nVzzn{+$J+z6s(r zEM3`_-6o_GdzGr-!Zu>X9U96tk~kenQ`QjDmfX`A-D@&)YGs}nm?&%>JCM`!@j3^X zgaO8>aX|H|_0j+hQM0?Kf383r@!Htu(G$t1&Y}W5IBi2jH@57`-33KJ%#`A=sQl!c z0Z{nWf`#EHd473N~Z3Es=s zhqf|4dH<{kV_B{8QF`>r3Qpp1V=6i>aAze~>}INlxC}uad)NT2UX=5Xng4sf2Cln; zsPcPS?4MOMB+PX8)aVrJWINEQx8TL+>{7oiD)j;JV@B9MKdc!8Y95#Plg(S%Z%NQi z9H|EldULe>Wmm#b@TEx@UXvhdzBs|cGx8eHPG4wO4FKCD${v-cRM z^pL{&sT9@uUaT^f-(xmJ;{umX7SvGzj2?OjFx?RM33>UD0Oe6+=S91BVZ*X|x|lwb z41ejDsw8O(0yaIQR3mDl@4@(JxLdH&ODK86wuSVf3p;xTR1zc68(~Zr0R{Hne z6v~rV=jI0*>N_;p8B)3iuAcj<{w!m8n-M{V9tZF5y7fx$0W{{0=tCRu-cM0K5O{@d z7o~UQ+UqOH1!#mlNx&GWRDBm**CIahC8c zfFazIT%;&@E%L`W^(YX70{+<_slnoUbAdbde*!YJe96FGLFTRIjcbO#;SAA@pSJ&m zGx8uIpGI=|?OdSsl+t;ZjDsdAyZn}d42+TmX9oZdgZu503rbo-_VYq9P%m@MUH~x> z45P$ib$EZx$)X9FLy72xRM6vRTrx=JzyZM?Lgc(Lb@I3I{Mc0cgC}+^Va`C)n^S`+ zaudo$yfPFizewU^sen3f!r-tSim;W_IaQRROx`nQS(ulETgFXzD?`~z4HBmM zdeupcI$Ha!j>8J)m$x{rfwjp&y?zMV3E$_ZYM7gAp_38yOTE);bRK3l!-Le;r%eXn z`}nSY-wT9Jn1R8Zk-7#%H6VV#?!8d3S8^UMHJekO9eTq%vy1J?(%b_5r8mKRqK#D* z2-&;_gby^^Jv(VZRqPvOweNSxfQq?8@4T*t#n^3EI7`>9ciBE2$^;5R21rxc%u4){ zxrps=c5F3i!fgi|PkY%N!SiHn!YDD}Rh$J?|*cwv3rlAp-~ z+^fyWjg5H2zFCZK#}H5q`9(M^C8Fg4il+f!kS3zSaY?YHY*JK_^}iz}oTuemXn#T_2HRfYtASJrYNw@}kyWnwP3YGnE%>YOMzc*R zpfHoGx*d7^}->uKhZ))8_cre}zl5@9<0}hVd81&%jIRv@Zg2F0U)5N6rlD zZe@&sp?8S>?A+3(W$+iA@eV-|8;$&KmQG9cy)P!I70E@5pOTjcqt1jpII=tPXvY(E zLGdL|%x-rL_?+R#&q>Ma50hUGIPY$dEuAhFB`u)(PQ1hz0Y zpqqyI>Z*06=dCb?`EHHY+0TdvId{x>J8J{kNuHjul`Bu9(`(#&>%cuMfI^pial3@m zA@wQCw|)bXCQ9PApDpjbkt~VBvZukhLbWTW=ZwY|be<1eZ#6+_mKKcI>Qa7D87N(9 z@-L8(2Eb%oG!qCMJ6wekcltL6&nkPUoKUnfv@!!plW z$GFRv%@zJmkvJ`|?32z}n1s99E$R8_SE*KKrqE>@DO4Zi;5>*%Roi)wq>QV2g||Zs zeIiPvBlm*g5qL)aO+Th|6fn;S37Xa1rLI2qBH4E0#uN)+gZ+_VQFmNV6P%7Vf^pzs7u7|ar8iCwj zz_*s2m?P+_&c`vHsJLMkA8*lS((5f6{5L)kq`&4txYc zVY{EJ!M82bT*pn-wEzeF1+CWf{Bq(-bgbkJJy^@Y$TaaB!ta~c?_Tk63&4q*2V~4y z#OAc@4`#MnIFNGkcttGhh{ww2Ow=k*a6{R6C&38hyvhhiELjU6DvY5?uLGssvkrz2 z|K3P_2Jqao;_}uA9oD>K{I|314;^CeE4uubz2!Z)gIeN{aXeKZC$7%%;zdB80>tMc ze2u#AY_XVcWN+Xf`r?ZE<)VPf`G@0{g}y>M*eE%8>L~!Wk$|S2>&22}l z*s52U*XRJ3Vcc$ara+ZMWYb|SpyFkfU!a=)3%K|&@DJcZV&)fsCNa_02=|rKPq<6| z23+L%pLZTm<|=a1;W4yNc94smj^TaU?<;4S{VSvA1`6I0(NuRMG|ai!H~oOj(u!k7 zMEYyu=fm_yJir2ERm%DvcJ>-9}Q?3Nx5uejyAR#%72uARe7q{auR zMHL5u`oi30S}L}mmbm@QUp>`!xhrRNuhD8E+Aq*Q{6WeLS6m8MApizK&od7#cnkCq zuIr`H&qWC+H-rqYaa^5_&l4fQ8o46C&)9!`P?8q=&7f*ZFXbHf9fiDnl`>-v*2Pwz z@MG!u!qosf8o(Ywt8mrtxHpf#zi&#^BPme2Vko%c&{C>@?EHp(EB1?57j-xHF#4n5 z*oeKkQ^w2BBCP_KE&+^UcOL5{xcH^T(;OSXBtKW^Fb2epKmuB{@74t+3tSC=d|!4X z__%eO6x%_h!mi*Iw~(S|8mTGk^Yw}umD_%%AE%Av5e-`3p1mh{77i9HZ=q9xZ0yV= zaIb2A1F?l=1!+1+&sgXYHh|jj=HtO%NZEuZ=HIjd_E`T3Y4Gs|OB;6vq|Q6(w8OR3 zA{1t5#k>Mhoi@@R+hhz*@7uD*)RH7d2mS?Vn5t-F2iaRrjNv+4&$50)HDmG& zXi&9rq%zD&M)5B~<0GwCT96tW5x|=FgnXl2E;mw=8A9*pB=lNJr!W0)ga#w=;E~ut z-c4(lN4orYRjmV{&{fN?`ABbO-qHk3s6vDuQ;w;;)8hKp$asRy%6@mrG(RW)+GGh{ zf=s78aWO={42sQ8P3>E^nb#iU^Lg2FQ%kqVU|jn{HM^31rQ5ok(Zmlh*WD$Wue(S- zqA;tbR}&KG8B2TcT3~fK5xagoT-1sCcckLu(i2Emz&Hhj9)8&q(OvVefZg%6*UKWy zr^l)Jh!wz5#apD4YTw(T@5zi{f&Q5L9n&k-{{u`xNtn)2dx#e9_YR9#hIM2=twH*f z-27S487s08*&Oc8momKwwrqjf<>zG6o^O`2K+siNK|=eW#f1u^e4 zVtLiLP*Eo^l{_8BXV9GvgaJ@$F1(qxISjORgKy0XZ7TCc17CB z!x0eWLtVZ#N{&Vf_)F96eE9zQ_)N(zs^rsVM+5t$m$Hf2@H5gRiCpC5+QIt@c3yWu zmiK>zJ$UDWl_Lr>tw!<$OEO%|=jE?>`B~&_9HKiFj3DP3d$O?QEC9p}dSurmm4Q z!W%TY@QxJaDefAs(|Q9@C&tGC^G3O3HXv?(aq7`8>}X!PO+LO$}Q^X=Irn9t24ru{IH=U`rU zp17JN^va9i>r^}yf5C7(c$a)2`NvO<^#giR9$cTCzkB;;6dFJzL{|0U<}$k#Tx4Hi zbv_^!b6~$DzdU-GKpIzTg4YOiMwLa-MEn%^+bk&py{)ZuZnHYYz&tT{= zZT)k41FtW6x>GDD2)E(&yzAQ-CA(O8B}Rcj3%zU|{Fr6H9qUwe7&h+}ip5F+> zmuh>`KT|#4N3yW1ENgPc`QXh@m-Ie5ZV3Om3%WRK2NdQTwuvh83xNo7)lJy4{?AYH zT%3XsQe5Fg?Fq(1>_msZrBpPo;DLJ-n>nK_Aoy8pGoJx2CcnysOwYCHB)&n!yG_J8 zk=b(~m2VA&G?SsOjF(Hh9Jw9MuFNXSYaCX!<5J!TJ9>gq)K>0+Z>X%aBAeCh2}lMq zdnX-v2wjvh#Fw)mJ@BpHHW&|@QsjQ9NNCgtdtfAfa)EZ8f2B_o5NW0%?>i*ed4^MG zM7{rHI}Rugul#A#U(|FV2986xVmOMK+&0~B`Cx2fd}kALXG_(%qEqs+aSyxp<5D}I z#i9^tLSIdcJ-_2hqB{MK(e(As&nd|>d(iZJf6{%=|M=uyiq3olevcq$$G_2*?r6_ zU~s7M0stF9hxAjJfx&z`8*PXo`>y&PS%Pb20E_=@VMX0#N=K0}_sYye-Ni>w0I*SPjnj`Ukt*)=mnvAQb82R(FOS}( zx8@Jns~jl%Qr&X&o(Xiy*Y@9CdtzkusE!LnPSN)_6?FffqEns+n=VuaM)lqh6u_VT z=_BBe$+{!e`|1;lH7i{WyFk|3ksEm^tW873KgqgNr$te&z+v`_rgRLZKmWi1R`H!l zU~{6Xpzo@CU94(X3E4_nJI`v0;(_;f`XwX4Q>g~hUBO;i{2Mx$((MP{=!qMl(gt{f8c?OF#_u@exL{j>$}F{?YiO#Cjb`Pr*C zr!f(zWcN7Q5sKvS5Xl5!R}9H>W|2DF0y2bt0SR3JQWq58HM9NzWRm5qBh2DJ1CR8S z)d(W<)h6S`caa9$7z;krh(w(Zu_?>3iOq;;pUcvQtN$a5=7KTzof=g67tWpbLs;eb zqw-!b_i^Zc>INVO|DL2@_5yH(A$0C1!4o&!*f$W^?(YTBP*{)M+@A=i9+hKuvsv^f zzYaOFX0e8@R>749IZ~(3hl}^i8v1^ml^CSN(unSDpag4XvIm=?7fVVlqd?@*GgGNc zKy>fP00+##z;9P~U_5YRM+~WN5!TnDP}3Q!AO;Fg?ls>bq+(pw&jOHpTa;1l>2^s< z@E4Oa+x~*?I&2BGfceE7P40{%v#Yr6#ssw{Sh033s$~l(BNK7Gc!AMsi%40}xc~g` zshMv!=#QzTlUIe>t-}{zR7aZ(`N;ZeqmkURLptm%^WO;hPHJl+2tSHYUa4AWr-)E6 ztDW>>OU2LX$wqN{FZWi4NFBa%OD{=2eCCrYy)vX&&n~nZ0($<+U(SgCr;93LvWEMM z$$t7E&;c)H|EVp1A|O6Y!K_4ZPhesya!i3U)z@bg#2K@y;&aDIVe>C2rA$AF&R#jI8Y3B7Q4m*1Av){PtLe8^Md*BP@qa~Z>Ib{#H&}^ zgvCt}CNp-?gEriLx7fgn<(GwpbOEkt%)B@TF?SIl!@+lGDQ7Whb8%6dOQ;pN<2=-; zD(KTKq9U=f-}!)Wl8=4eXJ6F}jTy=Vm#|CV?{qCls;a&CeiMWu2Z@SS&NvO15|9h* z7NFu2;`DFq#u^@kArAy`H+H$+Fr1>~9Q z@}MWb+Nx$}s1%E{eB3znA_H8v%@y(zrmgqBY{DSav8K8@-ndE2C2g&hdAABw8w3^J z_(;5A@P1nnz(LB64?8>uNOp*>&UFlWY`zii{(*F(12gX0^H2!=IdK;eOCCSnuopQ` zY|=npxf1t$cg7QT`i4aV^Y%X)=0Fl*G191hMtH6Q@Zj>(?E4y$C`P_UIOyFBXieN{ z!hjVhmg(6$7oQ1ng#guw1L#f&O8g$6;Clp*jIZ4g;cIC;6je?g*aHS)J3?BCR zD$PY>c)7uj>t18Z`uS~>i~C9@Gq&grMPogVhZx1D8Vfhdu#6O=z@tc(lc$}=KzSFW zW&vkt|LkANxVKP?W;xE-*WfRmeg@Y~I0fTaiGM*?7l=wsW1VSUSL+UrEN=ZKQr=7SclqN{IfycN6#U&>ytb3+Rr~ZUsNdU&sS8#wdpy_*j#(F z4?c@d{A2Al#!2WdL&_zoF^kHzKotlCv9`G1m?M7IsvKF|#1*Ai?bL*VIHlGbba+N< zJRld@0p!!f;{i;Qd`Z5?f&otVlA=d#aT7IJ8vZhfj8)A@x1CqD$r|B@ed9O2-0ul8^Vq>IORlZ~ zarkP6nXgsgW|#cq!B#d+(iV0Tzty3e_jb)~S48^VHb7O_SD-5lG!neopdKqeetWFA zHVX3@sLbQN_P>CzR_Ei6tThK_KNoJ_zO8t$8`1=9-fDE%17!02vacY5)W^zb`-9Aj zwz%x*U>)7e`m5OMyH2-as?$yHsb~AvEvwd|vV^+c2~U69=u$hRcXh@g=*YobRfT&1 zXUgtO3+6l4UaOkWR2?*H*;zt$(-n;xfFXq~h`M4>tkC#sr;Owb7kF7%`~yeZ9JO9u zteO5~VEo3tL;JPyWG*EO@vbeq)Zc*UMI!Fmrw6>e>g+;K>Nll~MM5+R$8{MFcWq#z)K*{3 zHvp;Z=4W9_h1S1Z20BGZcnqjkQn1wrDkotZ{=<4drl$6Sx4jdp5rZNc>V{6GU$kqD_=V) zn}i1#1u8YV2GTKtOltVmP4dTgFCfku1Y45>j8ycG5*u`AcDvn$6}unCQx#vHC%nwQ z*PCtS|9b{%WH0ddb5ZQF9(Zbv1QW54Bm?^4Q=L5&MAMG&6fUCP?|5Tgo&#mbOBU4l zeqzfjxZlYj3*19=C`Gy><0UetDI03>-!|gt!#X;%hwbUGuUGO7iZd~Qvk~I_$Pt&Y zcNh@=$FEgq0w2WN?xYJnp13uqlBpjRT26H^sMdR6&7ln;K=?S(IeXsUcv;?3 zM9I}FYh!kzdtUDaVC`UCrR*|{Tw|VwzL*qU5gk6vNJ@P8nbxHPdEbSOWs-Vg1{bvI zSvYE=G39Zwy^4OU`tn{7^;FfizDtwhp^u$O!duuvcoR}i-L>v@^>*G(*ULI^v zP8Q?Sjs;UqEo%PGgYT1bcIibO!!7!Q$HGdeSU`*VPQ`TS_h+E+al#fGoaK*n(eJWJ zp|FSvrvUzHn0CoXQmH=I1;+4z z!rChqjF){qjdxNFF2X*LmDi_jP7G*+3*EO?Z|o=7#M5UlW8iRm%US+O4c9R1@$F2$ zESBi)oODqm8w5IwDH;Q1XHxoNt+*`n#@dX48RqVI{g_83kbmO1Px7_xa$eDoiZtHc zyELv^Lx*_!8t{y%P?Lr3)P=(L`uD612Ne)SHLL5a+8PO?Kn3^pvMRg@aM(a7P@tQ`7BLcnEK%&5t>;32999LnsfOM+0 z@?eUkzipSc{q}4(vp=1m5WcuAIM_!-a3B`rn**Uq#Tc^6y^+zE`ly&5g;xmQCt1K< z#ZElo>kb$R-hNN0h*>i$-oFl-gu)nqmebaqs?SdI`0#v>;zVu38nnV5q%Gx2n+kqd@*VNLc}#c;r4;c{A%zxhxvz_TBpy)p8^MwFw&i|Y9!!?8 zP`wKXQg~EdwxNCMLBExR>Y3@*!yWPszOhE7I+E`|axFyH+8?tZ9a?jY>Ho;lKOwQ< zZx`Fnt*GjJDW};x@RS=;!&4n)KT@?&QHC^UAj>eKWHh)QhS}p67ecxUQYDby@v;j2 znnoRKqg6$Z|1ICl;>NB`jrWr#uPb|1eX2&@&3}$z9?4qUmOC(CZ?sU*R1)8{bptEv!Rg>=IIZLJwoU2MP~ggna&hVNNR3aiNs9q=Pu! z95uP?=N5JP@P90TBityM9bb!5LnfqXls@vPkE+DC37z(|D$fy+>taEX0wmr0C}TXM znSTR3+)Wb0*y7-E67v|uF__%&{c7?0NXC8rcL9z6UM45Ra$`0hF}*lt3h)o?x{qjT zc+_OEbk67d&uK35hz5?(rg<5&{%xj?9 zXV-{xvVZg?G;oH9ab9q>$jHhK(5?VHl;I!tbPFl?tNI`8VyZ!1-HxBu)xp^64;Pug ziWE)ffD(luJqpjH)m?i(97Z?KvjPFu;g=hlU7)c#cU;PcK4_x@^<4*VuP;-Z9p=gn zI7&_x9#iEDsA%Ku6LTu+a_HLEBCbu1n`myeZN6()soUF$--p=8Dw`376#W!E$_!yk3T5o zV~);6Uof`2$xqWQnUZ=1HU?|9*sxSzR~yzdSJca6nJ~Ks7pAHF;DF~Xn@B;~z?hA* z&K1~>4g$VYL$1^`&GpIQ^XI;%jD$c4N4H3Si*Dd5q} zT!l`%=S}xC;TLd%233t2PPK(c#j$O*#6V>eI5jCCzy$pvTuw-ySn{t!mP`*)u!V)q zBhHI+pL1-XYnG<<9rQ7coiTq(F zD}t(Gxq971FkOXYCBUMMI-nXf*`0^AAt0YPR3WXjf+yMgg[iUq)6D{(+83<;hP zer24`;ZAwrWl4GTKZUFU=D)eb9)b3W(YP9onG7{D<+1lvak&E1EHZa1uk7`{V{{U@ zm4F2^F|gIiHj31a4;C8>{bUR|yn$bkI1Eu_qZcdFQRGaK*QdltJCj_Y70RSvJLxCS z5v>KDe`ROwRYYCVi@5y;C0v$D$YFP@l~butNj_?HfgVZREFxv;x|lv@h_eu9Nr# zGJl5`YTg}jTYgkbc>%wo8Rgwu8BRS1PU?wSUlQKr^x)3}qgnR2W!*qqwl}(3Xlqt{ z#2(U?1wOW?Zb#GlDnl&77iL5V=yGGoM9*SUxg!1G2|eB^W8Xc7z=E6!KeIkR7&LMxf_4 zr<+Mjo*V@+hbgel@aeZ(J-ob1tf4EYT>Q+rb7PYgQ`JL|f#-ck8U8y3 z))e0{iu@?|&*9K&^6#y^T6+=jn|Vg&wG{%3Cc0$EmfmaqQ=bjZ7q_PJ(5!vqDu(+u zqh~dM7EsDzGhagL*!jdmfr8O#sQ;u+TEFhQr6gNz8~tZ~)5DNyE4sbCIlDm-I4GwNeAmZGJmkPA%`XPb@?g9jJ#$w5{${Ij;Mth<&zco}sA^g?@|!n2N>=GhNhTgbfB zVIFgqIM}ML&3SxL?keW_oO4$4Y*}AhC7E|7lF~Ee!J5%kI#Nf@QK3vy%g}KLc>N>D zZ+$VN^~$mC4SgundaB0F)@fO-(v;bCIljniFkGd7_;$s@;_ z=~-LTuFu+NxW(m>&ooH!fUP#V%3S99s!!zhBZIahJSIxzVak96Hm4g`hdw%{BU2FI zS~u}~&4g!}Q?d&@SbfhYvytFUBGI}Lrla(wJaoN;d2Ez^5ZQ80q9jw`y9d++Q zKmhTMq-lGE))dq(@UcltR8BYwx{%H)PzQ#c;jE0baptXyN`joQEIoU*T$)6zLh1_B zg^Bg9iMXTr4sEJwZ3VPJV(qc;;t^s~g7acMsv&eTF~L2}zhsdU7M$*({<4p#`+@Z| z&arj4CC#nZpW|5f&^>J{IkUlHqXSNwXXk_+VfpZ{Rwa;LkJslfswwl}v9&}={nkVZ zaX2sSz*}TvL=e@gO(#Vh^x+j^5|#oKuRX_976DavM|gi8Zb%^^naS0Q-|7#|cT@{A z6)^90(t%JCq9v-fPeJkGEb#~~61^wyrQ^Q%+$X9vgvAq(u0 zbuWSlKmy%9)@RcC7JZcK;JMbU>lT^H3w7>ooSOW1Rd2QBJMHcMo|)`(2zI zoR#LMf{Iy!w!1mYf9smUJb7ku!mxEfVbZKFa4To1YFHsl_zVYo z3vlmPaG|s&YN7DtzH+DdG>7&?8~kW;8YOY-Sm2zbz@mO)0oTKzHO1#&Z{Fm^XZjH5 z%g8OQeoi-xh7RiQQ>nAkHC%{(R9L|t5a?vjDa3qh02s+A${{VO#r_d4%W0!Zz1z{= zN^ao>DP&3-)(jyOlg(P43harT@o-9} z-+YX!fO1JC%-s@f49V;4!PAOD*k`Sh$5Oimw_63KBYuK&J5X_mF=60bct|G-k<-K` z%w2_t4Fwi@D;y%1#w_5?6Tw?Sf5GbUpR>YQ`yM~}mT0;flFW#fh@f+GQ4%vm>x%3Q zessd#wD#l?I{v5#YzZ~_Oa-KLt}UQN+mE*a5pVDMgT{3y~7?r*<}TOQ#(+W7u_PfHo$&@-Px;iKj6P2)4$0!z$g z6%;k$JTAvo{1U9kBuyv0o#2E%d-g0AE#PZ91hd;ya@)e8}pQ7e72KKi-Y&5PhZJ`@3O=KO7@nB3&gQHnmA|y6|lj{uza_j(LpZw#r zdY{ex^hW7BAXM0x0ZHh7EX^x^K5i5?_%SjRzGB1vKUwkD0s>)lSel2+`f-|=li+n0 zfnXQK14H46ooA1s3&tb&fxhy+3B89?^V_DD#iEiZ>Js%M{^m1d$qmh9%Hkn54&>y4}tbpjXMkHNc}8csow2>t)d2XU$*85*BexGSxM z-3T7UZ}31Bo(U%xbYRlF%-+0}Y#$lNQX9VS1MJjwRt%q{bK@rd;Zy966^}RbP>;Bd z{Ewt0C-B|mlq91KCuO9SNPS;%=P@TIi!&^Wlywt7!AM_l7PiW9iXzuyP z`#!FWll#i`OC(@e#4@3^J@nSj?|ZT8%hE&QRm9Tt7Pjqg-|vkpgg!r@{iPG%C)WSn l7!3B`a|VO`-{=~vFQ1ltnEp2766j$t{j(-#@TV@_{2u|fa!LRI literal 0 HcmV?d00001 From 6628333675eaeafcba93c69ea392bd9ca9490892 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 31 Jan 2026 18:43:59 +0100 Subject: [PATCH 156/235] Properly handle danish and non-german swiss shop --- .../InfoProviderSystem/ConradShopIDs.php | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/Settings/InfoProviderSystem/ConradShopIDs.php b/src/Settings/InfoProviderSystem/ConradShopIDs.php index 2d8710e7..64480bcd 100644 --- a/src/Settings/InfoProviderSystem/ConradShopIDs.php +++ b/src/Settings/InfoProviderSystem/ConradShopIDs.php @@ -31,7 +31,8 @@ enum ConradShopIDs: string implements TranslatableInterface case COM_B2B = 'HP_COM_B2B'; case DE_B2B = 'CQ_DE_B2B'; case AT_B2C = 'CQ_AT_B2C'; - case CH_B2C = 'CQ_CH_B2C'; + case CH_B2C_DE = 'CQ_CH_B2C_DE'; + case CH_B2C_FR = 'CQ_CH_B2C_FR'; case SE_B2B = 'HP_SE_B2B'; case HU_B2C = 'CQ_HU_B2C'; case CZ_B2B = 'HP_CZ_B2B'; @@ -54,7 +55,8 @@ enum ConradShopIDs: string implements TranslatableInterface return match ($this) { self::DE_B2B => "conrad.de (B2B)", self::AT_B2C => "conrad.at (B2C)", - self::CH_B2C => "conrad.ch (B2C)", + self::CH_B2C_DE => "conrad.ch DE (B2C)", + self::CH_B2C_FR => "conrad.ch FR (B2C)", self::SE_B2B => "conrad.se (B2B)", self::HU_B2C => "conrad.hu (B2C)", self::CZ_B2B => "conrad.cz (B2B)", @@ -64,7 +66,7 @@ enum ConradShopIDs: string implements TranslatableInterface self::DE_B2C => "conrad.de (B2C)", self::PL_B2B => "conrad.pl (B2B)", self::NL_B2B => "conrad.nl (B2B)", - self::DK_B2B => "conrad.dk (B2B)", + self::DK_B2B => "conradelektronik.dk (B2B)", self::IT_B2B => "conrad.it (B2B)", self::NL_B2C => "conrad.nl (B2C)", self::FR_B2B => "conrad.fr (B2B)", @@ -76,6 +78,10 @@ enum ConradShopIDs: string implements TranslatableInterface public function getDomain(): string { + if ($this === self::DK_B2B) { + return 'conradelektronik.dk'; + } + return 'conrad.' . $this->getDomainEnd(); } @@ -102,7 +108,7 @@ enum ConradShopIDs: string implements TranslatableInterface return match ($this) { self::DE_B2B, self::DE_B2C => 'de', self::AT_B2B, self::AT_B2C => 'at', - self::CH_B2C => 'ch', + self::CH_B2C_DE => 'ch', self::CH_B2C_FR => 'ch', self::SE_B2B => 'se', self::HU_B2C => 'hu', self::CZ_B2B => 'cz', @@ -123,7 +129,7 @@ enum ConradShopIDs: string implements TranslatableInterface { return match ($this) { self::DE_B2B, self::DE_B2C, self::AT_B2B, self::AT_B2C => 'de', - self::CH_B2C => 'de', + self::CH_B2C_DE => 'de', self::CH_B2C_FR => 'fr', self::SE_B2B => 'sv', self::HU_B2C => 'hu', self::CZ_B2B => 'cs', @@ -150,7 +156,7 @@ enum ConradShopIDs: string implements TranslatableInterface self::DE_B2B, self::AT_B2B, self::SE_B2B, self::CZ_B2B, self::SI_B2B, self::SK_B2B, self::BE_B2B, self::PL_B2B, self::NL_B2B, self::DK_B2B, self::IT_B2B, self::FR_B2B, self::COM_B2B, self::HR_B2B => 'b2b', - self::DE_B2C, self::AT_B2C, self::CH_B2C, self::HU_B2C, self::NL_B2C => 'b2c', + self::DE_B2C, self::AT_B2C, self::CH_B2C_DE, self::CH_B2C_FR, self::HU_B2C, self::NL_B2C => 'b2c', }; } } From 22cf04585b1f4f9204190d2cf943a5aedf55d376 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 31 Jan 2026 18:57:00 +0100 Subject: [PATCH 157/235] Allow to retrieve datasheets from conrad --- .../Providers/ConradProvider.php | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/Services/InfoProviderSystem/Providers/ConradProvider.php b/src/Services/InfoProviderSystem/Providers/ConradProvider.php index 8c343099..618fb403 100644 --- a/src/Services/InfoProviderSystem/Providers/ConradProvider.php +++ b/src/Services/InfoProviderSystem/Providers/ConradProvider.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace App\Services\InfoProviderSystem\Providers; +use App\Services\InfoProviderSystem\DTOs\FileDTO; use App\Services\InfoProviderSystem\DTOs\ParameterDTO; use App\Services\InfoProviderSystem\DTOs\PartDetailDTO; use App\Services\InfoProviderSystem\DTOs\SearchResultDTO; @@ -100,6 +101,16 @@ readonly class ConradProvider implements InfoProviderInterface return $parameters; } + public function productMediaToDatasheets(array $productMedia): array + { + $files = []; + foreach ($productMedia['manuals'] as $manual) { + $files[] = new FileDTO($manual['fullUrl'], $manual['title'] . ' (' . $manual['language'] . ')'); + } + + return $files; + } + public function searchByKeyword(string $keyword): array { $url = $this->settings->shopID->getAPIRoot() . self::SEARCH_ENDPOINT . '/' @@ -112,7 +123,8 @@ readonly class ConradProvider implements InfoProviderInterface ], 'json' => [ 'query' => $keyword, - 'size' => 25, + 'size' => 50, + 'sort' => [["field"=>"_score","order"=>"desc"]], ], ]); @@ -161,14 +173,18 @@ readonly class ConradProvider implements InfoProviderInterface provider_url: $this->getProductUrl($data['shortProductNumber']), footprint: $this->getFootprintFromTechnicalAttributes($data['productFullInformation']['technicalAttributes'] ?? []), notes: $data['productFullInformation']['description'] ?? null, - parameters: $this->technicalAttributesToParameters($data['productFullInformation']['technicalAttributes'] ?? []), + datasheets: $this->productMediaToDatasheets($data['productMedia'] ?? []), + parameters: $this->technicalAttributesToParameters($data['productFullInformation']['technicalAttributes'] ?? []) ); } public function getCapabilities(): array { - return [ProviderCapabilities::BASIC, + return [ + ProviderCapabilities::BASIC, ProviderCapabilities::PICTURE, - ProviderCapabilities::PRICE,]; + ProviderCapabilities::DATASHEET, + ProviderCapabilities::PRICE, + ]; } } From 6f4dad98d9b0c9941bad660cc1e07e66cd1ae099 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 31 Jan 2026 19:04:25 +0100 Subject: [PATCH 158/235] Use parameter parsing logic from PR #1211 to handle multi parameters fine --- .../Providers/ConradProvider.php | 56 ++++++++++++++++--- 1 file changed, 47 insertions(+), 9 deletions(-) diff --git a/src/Services/InfoProviderSystem/Providers/ConradProvider.php b/src/Services/InfoProviderSystem/Providers/ConradProvider.php index 618fb403..f4d1467f 100644 --- a/src/Services/InfoProviderSystem/Providers/ConradProvider.php +++ b/src/Services/InfoProviderSystem/Providers/ConradProvider.php @@ -89,16 +89,54 @@ readonly class ConradProvider implements InfoProviderInterface private function technicalAttributesToParameters(array $technicalAttributes): array { - $parameters = []; - foreach ($technicalAttributes as $attribute) { - if ($attribute['multiValue'] ?? false === true) { - throw new \LogicException('Multi value attributes are not supported yet'); - } - $parameters[] = ParameterDTO::parseValueField($attribute['attributeName'], - $attribute['values'][0]['value'], $attribute['values'][0]['unit']['name'] ?? null); - } + return array_map(static function (array $p) { + if (count($p['values']) === 1) { //Single value attribute + if (array_key_exists('unit', $p['values'][0])) { + return ParameterDTO::parseValueField( //With unit + name: $p['attributeName'], + value: $p['values'][0]['value'], + unit: $p['values'][0]['unit']['name'], + ); + } - return $parameters; + return ParameterDTO::parseValueIncludingUnit( + name: $p['attributeName'], + value: $p['values'][0]['value'], + ); + } + + if (count($p['values']) === 2) { //Multi value attribute (e.g. min/max) + $value = $p['values'][0]['value'] ?? null; + $value2 = $p['values'][1]['value'] ?? null; + $unit = $p['values'][0]['unit']['name'] ?? ''; + $unit2 = $p['values'][1]['unit']['name'] ?? ''; + if ($unit === $unit2 && is_numeric($value) && is_numeric($value2)) { + if (array_key_exists('unit', $p['values'][0])) { //With unit + return new ParameterDTO( + name: $p['attributeName'], + value_min: (float)$value, + value_max: (float)$value2, + unit: $unit, + ); + } + + return new ParameterDTO( + name: $p['attributeName'], + value_min: (float)$value, + value_max: (float)$value2, + ); + } + } + + // fallback implementation + $values = implode(", ", array_map(fn($q) => + array_key_exists('unit', $q) ? $q['value']." ". $q['unit'] : $q['value'] + , $p['values'])); + return ParameterDTO::parseValueIncludingUnit( + name: $p['attributeName'], + value: $values, + ); + }, $technicalAttributes); } public function productMediaToDatasheets(array $productMedia): array From 98937974c99aa0eb8997cefa643050ef5d9f6b31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 31 Jan 2026 21:15:35 +0100 Subject: [PATCH 159/235] Allow to query price infos from conrad --- .../Providers/ConradProvider.php | 138 ++++++++++++++---- .../InfoProviderSystem/ConradSettings.php | 1 + .../InfoProviderSystem/ConradShopIDs.php | 4 + 3 files changed, 117 insertions(+), 26 deletions(-) diff --git a/src/Services/InfoProviderSystem/Providers/ConradProvider.php b/src/Services/InfoProviderSystem/Providers/ConradProvider.php index f4d1467f..857b4135 100644 --- a/src/Services/InfoProviderSystem/Providers/ConradProvider.php +++ b/src/Services/InfoProviderSystem/Providers/ConradProvider.php @@ -26,6 +26,8 @@ namespace App\Services\InfoProviderSystem\Providers; 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\PurchaseInfoDTO; use App\Services\InfoProviderSystem\DTOs\SearchResultDTO; use App\Settings\InfoProviderSystem\ConradSettings; use Symfony\Contracts\HttpClient\HttpClientInterface; @@ -34,9 +36,18 @@ readonly class ConradProvider implements InfoProviderInterface { private const SEARCH_ENDPOINT = '/search/1/v3/facetSearch'; + public const DISTRIBUTOR_NAME = 'Conrad'; - public function __construct(private HttpClientInterface $httpClient, private ConradSettings $settings) + private HttpClientInterface $httpClient; + + public function __construct( HttpClientInterface $httpClient, private ConradSettings $settings) { + //We want everything in JSON + $this->httpClient = $httpClient->withOptions([ + 'headers' => [ + 'Accept' => 'application/json', + ], + ]); } public function getProviderInfo(): array @@ -76,6 +87,44 @@ readonly class ConradProvider implements InfoProviderInterface return null; } + public function searchByKeyword(string $keyword): array + { + $url = $this->settings->shopID->getAPIRoot() . self::SEARCH_ENDPOINT . '/' + . $this->settings->shopID->getDomainEnd() . '/' . $this->settings->shopID->getLanguage() + . '/' . $this->settings->shopID->getCustomerType(); + + $response = $this->httpClient->request('POST', $url, [ + 'query' => [ + 'apikey' => $this->settings->apiKey, + ], + 'json' => [ + 'query' => $keyword, + 'size' => 50, + 'sort' => [["field"=>"_score","order"=>"desc"]], + ], + ]); + + $out = []; + $results = $response->toArray(); + + foreach($results['hits'] as $result) { + + $out[] = new SearchResultDTO( + provider_key: $this->getProviderKey(), + provider_id: $result['productId'], + name: $result['title'], + description: '', + manufacturer: $result['brand']['name'] ?? null, + mpn: $result['manufacturerId'] ?? null, + preview_image_url: $result['image'] ?? null, + provider_url: $this->getProductUrl($result['productId']), + footprint: $this->getFootprintFromTechnicalDetails($result['technicalDetails'] ?? []), + ); + } + + return $out; + } + private function getFootprintFromTechnicalAttributes(array $technicalDetails): ?string { foreach ($technicalDetails as $detail) { @@ -87,6 +136,10 @@ readonly class ConradProvider implements InfoProviderInterface return null; } + /** + * @param array $technicalAttributes + * @return array + */ private function technicalAttributesToParameters(array $technicalAttributes): array { return array_map(static function (array $p) { @@ -139,6 +192,10 @@ readonly class ConradProvider implements InfoProviderInterface }, $technicalAttributes); } + /** + * @param array $productMedia + * @return array + */ public function productMediaToDatasheets(array $productMedia): array { $files = []; @@ -149,42 +206,70 @@ readonly class ConradProvider implements InfoProviderInterface return $files; } - public function searchByKeyword(string $keyword): array - { - $url = $this->settings->shopID->getAPIRoot() . self::SEARCH_ENDPOINT . '/' - . $this->settings->shopID->getDomainEnd() . '/' . $this->settings->shopID->getLanguage() - . '/' . $this->settings->shopID->getCustomerType(); - $response = $this->httpClient->request('POST', $url, [ + /** + * Queries prices for a given product ID. It makes a POST request to the Conrad API + * @param string $productId + * @return PurchaseInfoDTO + */ + private function queryPrices(string $productId): PurchaseInfoDTO + { + $priceQueryURL = $this->settings->shopID->getAPIRoot() . '/price-availability/4/' + . $this->settings->shopID->getShopID() . '/facade'; + + $response = $this->httpClient->request('POST', $priceQueryURL, [ 'query' => [ 'apikey' => $this->settings->apiKey, + 'overrideCalculationSchema' => $this->settings->includeVAT ? 'GROSS' : 'NET' ], 'json' => [ - 'query' => $keyword, - 'size' => 50, - 'sort' => [["field"=>"_score","order"=>"desc"]], - ], + 'ns:inputArticleItemList' => [ + "#namespaces" => [ + "ns" => "http://www.conrad.de/ccp/basit/service/article/priceandavailabilityservice/api" + ], + 'articles' => [ + [ + "articleID" => $productId, + "calculatePrice" => true, + "checkAvailability" => true, + ], + ] + ] + ] ]); - $out = []; - $results = $response->toArray(); + $result = $response->toArray(); - foreach($results['hits'] as $result) { + $priceInfo = $result['priceAndAvailabilityFacadeResponse']['priceAndAvailability']['price'] ?? []; + $price = $priceInfo['price'] ?? "0.0"; + $currency = $priceInfo['currency'] ?? "EUR"; + $includesVat = $priceInfo['isGrossAmount'] === "true" ?? true; + $minOrderAmount = $result['priceAndAvailabilityFacadeResponse']['priceAndAvailability']['availabilityStatus']['minimumOrderQuantity'] ?? 1; - $out[] = new SearchResultDTO( - provider_key: $this->getProviderKey(), - provider_id: $result['productId'], - name: $result['title'], - description: '', - manufacturer: $result['brand']['name'] ?? null, - mpn: $result['manufacturerId'] ?? null, - preview_image_url: $result['image'] ?? null, - provider_url: $this->getProductUrl($result['productId']), - footprint: $this->getFootprintFromTechnicalDetails($result['technicalDetails'] ?? []), + $prices = []; + foreach ($priceInfo['priceScale'] as $priceScale) { + $prices[] = new PriceDTO( + minimum_discount_amount: max($priceScale['scaleFrom'], $minOrderAmount), + price: (string)$priceScale['pricePerUnit'], + currency_iso_code: $currency, + includes_tax: $includesVat + ); + } + if (empty($prices)) { //Fallback if no price scales are defined + $prices[] = new PriceDTO( + minimum_discount_amount: $minOrderAmount, + price: (string)$price, + currency_iso_code: $currency, + includes_tax: $includesVat ); } - return $out; + return new PurchaseInfoDTO( + distributor_name: self::DISTRIBUTOR_NAME, + order_number: $productId, + prices: $prices, + product_url: $this->getProductUrl($productId) + ); } public function getDetails(string $id): PartDetailDTO @@ -212,7 +297,8 @@ readonly class ConradProvider implements InfoProviderInterface footprint: $this->getFootprintFromTechnicalAttributes($data['productFullInformation']['technicalAttributes'] ?? []), notes: $data['productFullInformation']['description'] ?? null, datasheets: $this->productMediaToDatasheets($data['productMedia'] ?? []), - parameters: $this->technicalAttributesToParameters($data['productFullInformation']['technicalAttributes'] ?? []) + parameters: $this->technicalAttributesToParameters($data['productFullInformation']['technicalAttributes'] ?? []), + vendor_infos: [$this->queryPrices($data['shortProductNumber'])] ); } diff --git a/src/Settings/InfoProviderSystem/ConradSettings.php b/src/Settings/InfoProviderSystem/ConradSettings.php index 999ebfe0..ddd1b4c0 100644 --- a/src/Settings/InfoProviderSystem/ConradSettings.php +++ b/src/Settings/InfoProviderSystem/ConradSettings.php @@ -53,5 +53,6 @@ class ConradSettings )] public ConradShopIDs $shopID = ConradShopIDs::COM_B2B; + #[SettingsParameter(label: new TM("settings.ips.reichelt.include_vat"))] public bool $includeVAT = true; } diff --git a/src/Settings/InfoProviderSystem/ConradShopIDs.php b/src/Settings/InfoProviderSystem/ConradShopIDs.php index 64480bcd..a72609c7 100644 --- a/src/Settings/InfoProviderSystem/ConradShopIDs.php +++ b/src/Settings/InfoProviderSystem/ConradShopIDs.php @@ -100,6 +100,10 @@ enum ConradShopIDs: string implements TranslatableInterface */ public function getShopID(): string { + if ($this === self::CH_B2C_FR || $this === self::CH_B2C_DE) { + return 'CQ_CH_B2C'; + } + return $this->value; } From f168b2a83cc395a3fab1708b92deddd885117652 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 31 Jan 2026 21:30:15 +0100 Subject: [PATCH 160/235] Reordered ConradShopIDs --- src/Settings/InfoProviderSystem/ConradShopIDs.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Settings/InfoProviderSystem/ConradShopIDs.php b/src/Settings/InfoProviderSystem/ConradShopIDs.php index a72609c7..e39ed7b1 100644 --- a/src/Settings/InfoProviderSystem/ConradShopIDs.php +++ b/src/Settings/InfoProviderSystem/ConradShopIDs.php @@ -30,6 +30,7 @@ enum ConradShopIDs: string implements TranslatableInterface { case COM_B2B = 'HP_COM_B2B'; case DE_B2B = 'CQ_DE_B2B'; + case DE_B2C = 'CQ_DE_B2C'; case AT_B2C = 'CQ_AT_B2C'; case CH_B2C_DE = 'CQ_CH_B2C_DE'; case CH_B2C_FR = 'CQ_CH_B2C_FR'; @@ -39,12 +40,12 @@ enum ConradShopIDs: string implements TranslatableInterface case SI_B2B = 'HP_SI_B2B'; case SK_B2B = 'HP_SK_B2B'; case BE_B2B = 'HP_BE_B2B'; - case DE_B2C = 'CQ_DE_B2C'; case PL_B2B = 'HP_PL_B2B'; case NL_B2B = 'CQ_NL_B2B'; + case NL_B2C = 'CQ_NL_B2C'; case DK_B2B = 'HP_DK_B2B'; case IT_B2B = 'HP_IT_B2B'; - case NL_B2C = 'CQ_NL_B2C'; + case FR_B2B = 'HP_FR_B2B'; case AT_B2B = 'CQ_AT_B2B'; case HR_B2B = 'HP_HR_B2B'; From 2f8553303d5b37758ed565eb9317728468177267 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 31 Jan 2026 21:39:34 +0100 Subject: [PATCH 161/235] Use better fields for determine the product name --- .../InfoProviderSystem/Providers/ConradProvider.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Services/InfoProviderSystem/Providers/ConradProvider.php b/src/Services/InfoProviderSystem/Providers/ConradProvider.php index 857b4135..85f7e648 100644 --- a/src/Services/InfoProviderSystem/Providers/ConradProvider.php +++ b/src/Services/InfoProviderSystem/Providers/ConradProvider.php @@ -112,8 +112,8 @@ readonly class ConradProvider implements InfoProviderInterface $out[] = new SearchResultDTO( provider_key: $this->getProviderKey(), provider_id: $result['productId'], - name: $result['title'], - description: '', + name: $result['manufacturerId'] ?? $result['productId'], + description: $result['title'] ?? '', manufacturer: $result['brand']['name'] ?? null, mpn: $result['manufacturerId'] ?? null, preview_image_url: $result['image'] ?? null, @@ -247,7 +247,7 @@ readonly class ConradProvider implements InfoProviderInterface $minOrderAmount = $result['priceAndAvailabilityFacadeResponse']['priceAndAvailability']['availabilityStatus']['minimumOrderQuantity'] ?? 1; $prices = []; - foreach ($priceInfo['priceScale'] as $priceScale) { + foreach ($priceInfo['priceScale'] ?? [] as $priceScale) { $prices[] = new PriceDTO( minimum_discount_amount: max($priceScale['scaleFrom'], $minOrderAmount), price: (string)$priceScale['pricePerUnit'], @@ -288,9 +288,9 @@ readonly class ConradProvider implements InfoProviderInterface return new PartDetailDTO( provider_key: $this->getProviderKey(), provider_id: $data['shortProductNumber'], - name: $data['productShortInformation']['title'], - description: $data['productShortInformation']['shortDescription'] ?? '', - manufacturer: $data['brand']['displayName'] ?? null, + name: $data['productFullInformation']['manufacturer']['name'] ?? $data['productFullInformation']['manufacturer']['id'] ?? $data['shortProductNumber'], + description: $data['productShortInformation']['title'] ?? '', + manufacturer: $data['brand']['displayName'] !== null ? preg_replace("/[\u{2122}\u{00ae}]/", "", $data['brand']['displayName']) : null, //Replace ™ and ® symbols mpn: $data['productFullInformation']['manufacturer']['id'] ?? null, preview_image_url: $data['productShortInformation']['mainImage']['imageUrl'] ?? null, provider_url: $this->getProductUrl($data['shortProductNumber']), From fa04fface337f6bb9f1c179eaec0afffb5fd7ed5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 31 Jan 2026 21:45:27 +0100 Subject: [PATCH 162/235] Fixed bug with parameter parsing --- src/Services/InfoProviderSystem/Providers/ConradProvider.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Services/InfoProviderSystem/Providers/ConradProvider.php b/src/Services/InfoProviderSystem/Providers/ConradProvider.php index 85f7e648..f73a4b68 100644 --- a/src/Services/InfoProviderSystem/Providers/ConradProvider.php +++ b/src/Services/InfoProviderSystem/Providers/ConradProvider.php @@ -183,7 +183,7 @@ readonly class ConradProvider implements InfoProviderInterface // fallback implementation $values = implode(", ", array_map(fn($q) => - array_key_exists('unit', $q) ? $q['value']." ". $q['unit'] : $q['value'] + array_key_exists('unit', $q) ? $q['value']." ". ($q['unit']['name'] ?? $q['unit']) : $q['value'] , $p['values'])); return ParameterDTO::parseValueIncludingUnit( name: $p['attributeName'], From 6d224a4a9f58a7ba7f657a19f66043927dd3b1a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 31 Jan 2026 21:49:43 +0100 Subject: [PATCH 163/235] Allow to filter for languages in conrad attachments --- .../Providers/ConradProvider.php | 5 +++++ .../InfoProviderSystem/ConradSettings.php | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/Services/InfoProviderSystem/Providers/ConradProvider.php b/src/Services/InfoProviderSystem/Providers/ConradProvider.php index f73a4b68..819fff52 100644 --- a/src/Services/InfoProviderSystem/Providers/ConradProvider.php +++ b/src/Services/InfoProviderSystem/Providers/ConradProvider.php @@ -200,6 +200,11 @@ readonly class ConradProvider implements InfoProviderInterface { $files = []; foreach ($productMedia['manuals'] as $manual) { + //Filter out unwanted languages + if (!empty($this->settings->attachmentLanguageFilter) && !in_array($manual['language'], $this->settings->attachmentLanguageFilter, true)) { + continue; + } + $files[] = new FileDTO($manual['fullUrl'], $manual['title'] . ' (' . $manual['language'] . ')'); } diff --git a/src/Settings/InfoProviderSystem/ConradSettings.php b/src/Settings/InfoProviderSystem/ConradSettings.php index ddd1b4c0..d0f5d7be 100644 --- a/src/Settings/InfoProviderSystem/ConradSettings.php +++ b/src/Settings/InfoProviderSystem/ConradSettings.php @@ -26,6 +26,8 @@ namespace App\Settings\InfoProviderSystem; use App\Form\Type\APIKeyType; use App\Settings\SettingsIcon; use Jbtronics\SettingsBundle\Metadata\EnvVarMode; +use Jbtronics\SettingsBundle\ParameterTypes\ArrayType; +use Jbtronics\SettingsBundle\ParameterTypes\StringType; use Jbtronics\SettingsBundle\Settings\Settings; use Jbtronics\SettingsBundle\Settings\SettingsParameter; use Jbtronics\SettingsBundle\Settings\SettingsTrait; @@ -55,4 +57,19 @@ class ConradSettings #[SettingsParameter(label: new TM("settings.ips.reichelt.include_vat"))] public bool $includeVAT = true; + + /** + * @var array|string[] Only attachments in these languages will be downloaded (ISO 639-1 codes) + */ + #[Assert\Unique()] + #[Assert\All([new Assert\Language()])] + #[SettingsParameter(type: ArrayType::class, + label: new TM("settings.ips.conrad.attachment_language_filter"), options: ['type' => StringType::class], + formType: LanguageType::class, + formOptions: [ + 'multiple' => true, + 'preferred_choices' => ['en', 'de', 'fr', 'it', 'cs', 'da', 'nl', 'hu', 'hr', 'sk', 'pl'] + ], + )] + public array $attachmentLanguageFilter = ['en']; } From cd7cd6cdd33cd9f0d9f97db1b36c0081833160f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 31 Jan 2026 21:57:05 +0100 Subject: [PATCH 164/235] Allow to retrieve (short) category info from Conrad provider --- src/Services/InfoProviderSystem/Providers/ConradProvider.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Services/InfoProviderSystem/Providers/ConradProvider.php b/src/Services/InfoProviderSystem/Providers/ConradProvider.php index 819fff52..044eb7a7 100644 --- a/src/Services/InfoProviderSystem/Providers/ConradProvider.php +++ b/src/Services/InfoProviderSystem/Providers/ConradProvider.php @@ -295,6 +295,7 @@ readonly class ConradProvider implements InfoProviderInterface provider_id: $data['shortProductNumber'], name: $data['productFullInformation']['manufacturer']['name'] ?? $data['productFullInformation']['manufacturer']['id'] ?? $data['shortProductNumber'], description: $data['productShortInformation']['title'] ?? '', + category: $data['productShortInformation']['articleGroupName'] ?? null, manufacturer: $data['brand']['displayName'] !== null ? preg_replace("/[\u{2122}\u{00ae}]/", "", $data['brand']['displayName']) : null, //Replace ™ and ® symbols mpn: $data['productFullInformation']['manufacturer']['id'] ?? null, preview_image_url: $data['productShortInformation']['mainImage']['imageUrl'] ?? null, From c0babfa4016c1e32b4070fa8b06ab261f9b2fc7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 31 Jan 2026 22:03:35 +0100 Subject: [PATCH 165/235] Added docs for the conrad info provider --- docs/usage/information_provider_system.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/usage/information_provider_system.md b/docs/usage/information_provider_system.md index 13df7f10..da8ea32b 100644 --- a/docs/usage/information_provider_system.md +++ b/docs/usage/information_provider_system.md @@ -278,6 +278,16 @@ The following env configuration options are available: * `PROVIDER_BUERKLIN_CURRENCY`: The currency you want to get prices in if available (optional, 3 letter ISO-code, default: `EUR`). * `PROVIDER_BUERKLIN_LANGUAGE`: The language you want to get the descriptions in. Possible values: `de` = German, `en` = English. (optional, default: `en`) +### Conrad + +The conrad provider the [Conrad API](https://developer.conrad.com/) to search for parts and retried their information. +To use it you have to request access to the API, however it seems currently your mail address needs to be allowlisted before you can register for an account. +The conrad webpages uses the API key in the requests, so you might be able to extract a working API key by listening to browser requests. +That method is not officially supported nor encouraged by Part-DB, and might break at any moment. + +The following env configuration options are available: +* `PROVIDER_CONRAD_API_KEY`: The API key you got from Conrad (mandatory) + ### Custom provider To create a custom provider, you have to create a new class implementing the `InfoProviderInterface` interface. As long From df3f069a769ee42224429b04a44c9c0daab9dd88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 31 Jan 2026 22:11:50 +0100 Subject: [PATCH 166/235] Added translations for conrad settings --- .../InfoProviderSystem/ConradSettings.php | 4 ++- translations/messages.en.xlf | 34 +++++++++++++++++-- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/Settings/InfoProviderSystem/ConradSettings.php b/src/Settings/InfoProviderSystem/ConradSettings.php index d0f5d7be..dda884c8 100644 --- a/src/Settings/InfoProviderSystem/ConradSettings.php +++ b/src/Settings/InfoProviderSystem/ConradSettings.php @@ -50,6 +50,7 @@ class ConradSettings public ?string $apiKey = null; #[SettingsParameter(label: new TM("settings.ips.conrad.shopID"), + description: new TM("settings.ips.conrad.shopID.description"), formType: EnumType::class, formOptions: ['class' => ConradShopIDs::class], )] @@ -64,7 +65,8 @@ class ConradSettings #[Assert\Unique()] #[Assert\All([new Assert\Language()])] #[SettingsParameter(type: ArrayType::class, - label: new TM("settings.ips.conrad.attachment_language_filter"), options: ['type' => StringType::class], + label: new TM("settings.ips.conrad.attachment_language_filter"), description: new TM("settings.ips.conrad.attachment_language_filter.description"), + options: ['type' => StringType::class], formType: LanguageType::class, formOptions: [ 'multiple' => true, diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 5c4151d6..b2bd908e 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -9928,13 +9928,13 @@ Element 1 -> Element 1.2]]> 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!]]> @@ -14286,5 +14286,35 @@ Buerklin-API Authentication server: Transport error while retrieving information from the providers. Check that your server has internet accesss. See server logs for more info. + + + settings.ips.conrad + Conrad + + + + + settings.ips.conrad.shopID + Shop ID + + + + + settings.ips.conrad.shopID.description + The version of the conrad store you wanna get results from. This determines language, prices and currency of the results. If both a B2B and a B2C version if available, you should choose the B2C version if you want prices including VAT. + + + + + settings.ips.conrad.attachment_language_filter + Language filter for attachments + + + + + settings.ips.conrad.attachment_language_filter.description + Only includes attachments in the selected languages in the results. + + From 2534c84039abb18159b33d1ec63bdb93364cd336 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 31 Jan 2026 22:16:50 +0100 Subject: [PATCH 167/235] Updated dependencies --- composer.lock | 453 +++++++++++++++++++++++++------------------------- yarn.lock | 278 +++++++++++++++---------------- 2 files changed, 366 insertions(+), 365 deletions(-) diff --git a/composer.lock b/composer.lock index 7faff993..2ee826f6 100644 --- a/composer.lock +++ b/composer.lock @@ -968,20 +968,20 @@ }, { "name": "api-platform/doctrine-common", - "version": "v4.2.14", + "version": "v4.2.15", "source": { "type": "git", "url": "https://github.com/api-platform/doctrine-common.git", - "reference": "a29e9015ecf4547485ec7fbce52da4ee95c282a0" + "reference": "4967ed6ba91465d6a6a047119658984d40f89a0e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/doctrine-common/zipball/a29e9015ecf4547485ec7fbce52da4ee95c282a0", - "reference": "a29e9015ecf4547485ec7fbce52da4ee95c282a0", + "url": "https://api.github.com/repos/api-platform/doctrine-common/zipball/4967ed6ba91465d6a6a047119658984d40f89a0e", + "reference": "4967ed6ba91465d6a6a047119658984d40f89a0e", "shasum": "" }, "require": { - "api-platform/metadata": "^4.2", + "api-platform/metadata": "^4.2.6", "api-platform/state": "^4.2.4", "doctrine/collections": "^2.1", "doctrine/common": "^3.2.2", @@ -1052,22 +1052,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/doctrine-common/tree/v4.2.14" + "source": "https://github.com/api-platform/doctrine-common/tree/v4.2.15" }, - "time": "2026-01-12T13:36:15+00:00" + "time": "2026-01-27T07:12:16+00:00" }, { "name": "api-platform/doctrine-orm", - "version": "v4.2.14", + "version": "v4.2.15", "source": { "type": "git", "url": "https://github.com/api-platform/doctrine-orm.git", - "reference": "7a7c5cb7261ead50481a9a2d8ef721e21ea97945" + "reference": "cf5c99a209a7be3e508c6f5d0fa4d853d43cff84" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/doctrine-orm/zipball/7a7c5cb7261ead50481a9a2d8ef721e21ea97945", - "reference": "7a7c5cb7261ead50481a9a2d8ef721e21ea97945", + "url": "https://api.github.com/repos/api-platform/doctrine-orm/zipball/cf5c99a209a7be3e508c6f5d0fa4d853d43cff84", + "reference": "cf5c99a209a7be3e508c6f5d0fa4d853d43cff84", "shasum": "" }, "require": { @@ -1139,13 +1139,13 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/doctrine-orm/tree/v4.2.14" + "source": "https://github.com/api-platform/doctrine-orm/tree/v4.2.15" }, - "time": "2026-01-23T14:24:03+00:00" + "time": "2026-01-26T15:38:30+00:00" }, { "name": "api-platform/documentation", - "version": "v4.2.14", + "version": "v4.2.15", "source": { "type": "git", "url": "https://github.com/api-platform/documentation.git", @@ -1202,13 +1202,13 @@ ], "description": "API Platform documentation controller.", "support": { - "source": "https://github.com/api-platform/documentation/tree/v4.2.14" + "source": "https://github.com/api-platform/documentation/tree/v4.2.15" }, "time": "2025-12-27T22:15:57+00:00" }, { "name": "api-platform/http-cache", - "version": "v4.2.14", + "version": "v4.2.15", "source": { "type": "git", "url": "https://github.com/api-platform/http-cache.git", @@ -1282,22 +1282,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/http-cache/tree/v4.2.14" + "source": "https://github.com/api-platform/http-cache/tree/v4.2.15" }, "time": "2026-01-12T13:36:15+00:00" }, { "name": "api-platform/hydra", - "version": "v4.2.14", + "version": "v4.2.15", "source": { "type": "git", "url": "https://github.com/api-platform/hydra.git", - "reference": "866611a986f4f52da7807b04a0b2cf64e314ab56" + "reference": "32ca5ff3ac5197d0606a846a6570127239091422" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/hydra/zipball/866611a986f4f52da7807b04a0b2cf64e314ab56", - "reference": "866611a986f4f52da7807b04a0b2cf64e314ab56", + "url": "https://api.github.com/repos/api-platform/hydra/zipball/32ca5ff3ac5197d0606a846a6570127239091422", + "reference": "32ca5ff3ac5197d0606a846a6570127239091422", "shasum": "" }, "require": { @@ -1369,22 +1369,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/hydra/tree/v4.2.14" + "source": "https://github.com/api-platform/hydra/tree/v4.2.15" }, - "time": "2025-12-27T22:15:57+00:00" + "time": "2026-01-30T09:06:20+00:00" }, { "name": "api-platform/json-api", - "version": "v4.2.14", + "version": "v4.2.15", "source": { "type": "git", "url": "https://github.com/api-platform/json-api.git", - "reference": "86f93ac31f20faeeca5cacd74d1318dc273e6b93" + "reference": "32ca38f977203f8a59f6efee9637261ae4651c29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/json-api/zipball/86f93ac31f20faeeca5cacd74d1318dc273e6b93", - "reference": "86f93ac31f20faeeca5cacd74d1318dc273e6b93", + "url": "https://api.github.com/repos/api-platform/json-api/zipball/32ca38f977203f8a59f6efee9637261ae4651c29", + "reference": "32ca38f977203f8a59f6efee9637261ae4651c29", "shasum": "" }, "require": { @@ -1451,22 +1451,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/json-api/tree/v4.2.14" + "source": "https://github.com/api-platform/json-api/tree/v4.2.15" }, - "time": "2025-12-27T22:15:57+00:00" + "time": "2026-01-26T15:38:30+00:00" }, { "name": "api-platform/json-schema", - "version": "v4.2.14", + "version": "v4.2.15", "source": { "type": "git", "url": "https://github.com/api-platform/json-schema.git", - "reference": "b69ebff7277655c1eb91bc0092fad4bc80aed4fb" + "reference": "4487398c59a07beefeec870a1213c34ae362cb00" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/json-schema/zipball/b69ebff7277655c1eb91bc0092fad4bc80aed4fb", - "reference": "b69ebff7277655c1eb91bc0092fad4bc80aed4fb", + "url": "https://api.github.com/repos/api-platform/json-schema/zipball/4487398c59a07beefeec870a1213c34ae362cb00", + "reference": "4487398c59a07beefeec870a1213c34ae362cb00", "shasum": "" }, "require": { @@ -1532,13 +1532,13 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/json-schema/tree/v4.2.14" + "source": "https://github.com/api-platform/json-schema/tree/v4.2.15" }, - "time": "2026-01-23T14:31:09+00:00" + "time": "2026-01-26T15:38:30+00:00" }, { "name": "api-platform/jsonld", - "version": "v4.2.14", + "version": "v4.2.15", "source": { "type": "git", "url": "https://github.com/api-platform/jsonld.git", @@ -1612,22 +1612,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/jsonld/tree/v4.2.14" + "source": "https://github.com/api-platform/jsonld/tree/v4.2.15" }, "time": "2026-01-12T13:36:15+00:00" }, { "name": "api-platform/metadata", - "version": "v4.2.14", + "version": "v4.2.15", "source": { "type": "git", "url": "https://github.com/api-platform/metadata.git", - "reference": "590195d1038e66a039f1847b43040b7e6b78475f" + "reference": "4d10dbd7b8f036d24df35eb3ec02c0f0befcf397" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/metadata/zipball/590195d1038e66a039f1847b43040b7e6b78475f", - "reference": "590195d1038e66a039f1847b43040b7e6b78475f", + "url": "https://api.github.com/repos/api-platform/metadata/zipball/4d10dbd7b8f036d24df35eb3ec02c0f0befcf397", + "reference": "4d10dbd7b8f036d24df35eb3ec02c0f0befcf397", "shasum": "" }, "require": { @@ -1710,22 +1710,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/metadata/tree/v4.2.14" + "source": "https://github.com/api-platform/metadata/tree/v4.2.15" }, - "time": "2026-01-12T13:36:15+00:00" + "time": "2026-01-27T07:12:16+00:00" }, { "name": "api-platform/openapi", - "version": "v4.2.14", + "version": "v4.2.15", "source": { "type": "git", "url": "https://github.com/api-platform/openapi.git", - "reference": "39ed78187a4a8e7c1c1fc9b5a3ef3913e3e914e3" + "reference": "59c13717f63e21f98d4ed4e4d7122b0bade72e2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/openapi/zipball/39ed78187a4a8e7c1c1fc9b5a3ef3913e3e914e3", - "reference": "39ed78187a4a8e7c1c1fc9b5a3ef3913e3e914e3", + "url": "https://api.github.com/repos/api-platform/openapi/zipball/59c13717f63e21f98d4ed4e4d7122b0bade72e2e", + "reference": "59c13717f63e21f98d4ed4e4d7122b0bade72e2e", "shasum": "" }, "require": { @@ -1800,22 +1800,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/openapi/tree/v4.2.14" + "source": "https://github.com/api-platform/openapi/tree/v4.2.15" }, - "time": "2026-01-17T19:34:53+00:00" + "time": "2026-01-26T15:38:30+00:00" }, { "name": "api-platform/serializer", - "version": "v4.2.14", + "version": "v4.2.15", "source": { "type": "git", "url": "https://github.com/api-platform/serializer.git", - "reference": "006df770d82860922c7faee493d5d3c14906f810" + "reference": "4d45483a9911b598a262dd2035166ab2040e430f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/serializer/zipball/006df770d82860922c7faee493d5d3c14906f810", - "reference": "006df770d82860922c7faee493d5d3c14906f810", + "url": "https://api.github.com/repos/api-platform/serializer/zipball/4d45483a9911b598a262dd2035166ab2040e430f", + "reference": "4d45483a9911b598a262dd2035166ab2040e430f", "shasum": "" }, "require": { @@ -1893,22 +1893,22 @@ "serializer" ], "support": { - "source": "https://github.com/api-platform/serializer/tree/v4.2.14" + "source": "https://github.com/api-platform/serializer/tree/v4.2.15" }, - "time": "2026-01-12T13:36:15+00:00" + "time": "2026-01-26T15:38:30+00:00" }, { "name": "api-platform/state", - "version": "v4.2.14", + "version": "v4.2.15", "source": { "type": "git", "url": "https://github.com/api-platform/state.git", - "reference": "fa3e7b41bcb54e7ba6d3078de224620e422d6732" + "reference": "89c0999206b4885c2e55204751b4db07061f3fd3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/state/zipball/fa3e7b41bcb54e7ba6d3078de224620e422d6732", - "reference": "fa3e7b41bcb54e7ba6d3078de224620e422d6732", + "url": "https://api.github.com/repos/api-platform/state/zipball/89c0999206b4885c2e55204751b4db07061f3fd3", + "reference": "89c0999206b4885c2e55204751b4db07061f3fd3", "shasum": "" }, "require": { @@ -1990,22 +1990,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/state/tree/v4.2.14" + "source": "https://github.com/api-platform/state/tree/v4.2.15" }, - "time": "2026-01-12T13:36:15+00:00" + "time": "2026-01-26T15:38:30+00:00" }, { "name": "api-platform/symfony", - "version": "v4.2.14", + "version": "v4.2.15", "source": { "type": "git", "url": "https://github.com/api-platform/symfony.git", - "reference": "31539dc26bd88f54e43d2d8a24613ff988307da1" + "reference": "93fdcbe189a1866412f5da04e26fa5615e99b210" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/symfony/zipball/31539dc26bd88f54e43d2d8a24613ff988307da1", - "reference": "31539dc26bd88f54e43d2d8a24613ff988307da1", + "url": "https://api.github.com/repos/api-platform/symfony/zipball/93fdcbe189a1866412f5da04e26fa5615e99b210", + "reference": "93fdcbe189a1866412f5da04e26fa5615e99b210", "shasum": "" }, "require": { @@ -2118,22 +2118,22 @@ "symfony" ], "support": { - "source": "https://github.com/api-platform/symfony/tree/v4.2.14" + "source": "https://github.com/api-platform/symfony/tree/v4.2.15" }, - "time": "2026-01-23T14:24:03+00:00" + "time": "2026-01-30T13:31:50+00:00" }, { "name": "api-platform/validator", - "version": "v4.2.14", + "version": "v4.2.15", "source": { "type": "git", "url": "https://github.com/api-platform/validator.git", - "reference": "346a5916d9706da9b0981ebec3d6278802e96ca9" + "reference": "22968964145b3fe542b5885f6a2e74d77e7e28c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/validator/zipball/346a5916d9706da9b0981ebec3d6278802e96ca9", - "reference": "346a5916d9706da9b0981ebec3d6278802e96ca9", + "url": "https://api.github.com/repos/api-platform/validator/zipball/22968964145b3fe542b5885f6a2e74d77e7e28c3", + "reference": "22968964145b3fe542b5885f6a2e74d77e7e28c3", "shasum": "" }, "require": { @@ -2194,9 +2194,9 @@ "validator" ], "support": { - "source": "https://github.com/api-platform/validator/tree/v4.2.14" + "source": "https://github.com/api-platform/validator/tree/v4.2.15" }, - "time": "2026-01-16T13:22:15+00:00" + "time": "2026-01-26T15:45:40+00:00" }, { "name": "beberlei/assert", @@ -3352,16 +3352,16 @@ }, { "name": "doctrine/event-manager", - "version": "2.1.0", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "c07799fcf5ad362050960a0fd068dded40b1e312" + "reference": "dda33921b198841ca8dbad2eaa5d4d34769d18cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/c07799fcf5ad362050960a0fd068dded40b1e312", - "reference": "c07799fcf5ad362050960a0fd068dded40b1e312", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/dda33921b198841ca8dbad2eaa5d4d34769d18cf", + "reference": "dda33921b198841ca8dbad2eaa5d4d34769d18cf", "shasum": "" }, "require": { @@ -3423,7 +3423,7 @@ ], "support": { "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/2.1.0" + "source": "https://github.com/doctrine/event-manager/tree/2.1.1" }, "funding": [ { @@ -3439,7 +3439,7 @@ "type": "tidelift" } ], - "time": "2026-01-17T22:40:21+00:00" + "time": "2026-01-29T07:11:08+00:00" }, { "name": "doctrine/inflector", @@ -3783,16 +3783,16 @@ }, { "name": "doctrine/orm", - "version": "3.6.1", + "version": "3.6.2", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "2148940290e4c44b9101095707e71fb590832fa5" + "reference": "4262eb495b4d2a53b45de1ac58881e0091f2970f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/2148940290e4c44b9101095707e71fb590832fa5", - "reference": "2148940290e4c44b9101095707e71fb590832fa5", + "url": "https://api.github.com/repos/doctrine/orm/zipball/4262eb495b4d2a53b45de1ac58881e0091f2970f", + "reference": "4262eb495b4d2a53b45de1ac58881e0091f2970f", "shasum": "" }, "require": { @@ -3865,9 +3865,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/3.6.1" + "source": "https://github.com/doctrine/orm/tree/3.6.2" }, - "time": "2026-01-09T05:28:15+00:00" + "time": "2026-01-30T21:41:41+00:00" }, { "name": "doctrine/persistence", @@ -8593,16 +8593,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "2.3.1", + "version": "2.3.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "16dbf9937da8d4528ceb2145c9c7c0bd29e26374" + "reference": "a004701b11273a26cd7955a61d67a7f1e525a45a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/16dbf9937da8d4528ceb2145c9c7c0bd29e26374", - "reference": "16dbf9937da8d4528ceb2145c9c7c0bd29e26374", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/a004701b11273a26cd7955a61d67a7f1e525a45a", + "reference": "a004701b11273a26cd7955a61d67a7f1e525a45a", "shasum": "" }, "require": { @@ -8634,9 +8634,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/2.3.1" + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.2" }, - "time": "2026-01-12T11:33:04+00:00" + "time": "2026-01-25T14:56:51+00:00" }, { "name": "psr/cache", @@ -10290,16 +10290,16 @@ }, { "name": "symfony/cache", - "version": "v7.4.4", + "version": "v7.4.5", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "67ca35eaa52dd9c1f07a42d459b5a2544dd29b34" + "reference": "8dde98d5a4123b53877aca493f9be57b333f14bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/67ca35eaa52dd9c1f07a42d459b5a2544dd29b34", - "reference": "67ca35eaa52dd9c1f07a42d459b5a2544dd29b34", + "url": "https://api.github.com/repos/symfony/cache/zipball/8dde98d5a4123b53877aca493f9be57b333f14bd", + "reference": "8dde98d5a4123b53877aca493f9be57b333f14bd", "shasum": "" }, "require": { @@ -10370,7 +10370,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.4.4" + "source": "https://github.com/symfony/cache/tree/v7.4.5" }, "funding": [ { @@ -10390,7 +10390,7 @@ "type": "tidelift" } ], - "time": "2026-01-23T12:59:19+00:00" + "time": "2026-01-27T16:16:02+00:00" }, { "name": "symfony/cache-contracts", @@ -10794,16 +10794,16 @@ }, { "name": "symfony/dependency-injection", - "version": "v7.4.4", + "version": "v7.4.5", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "dbbaba1cc65ccfa29106e931f68b51cd2f4b32bb" + "reference": "76a02cddca45a5254479ad68f9fa274ead0a7ef2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/dbbaba1cc65ccfa29106e931f68b51cd2f4b32bb", - "reference": "dbbaba1cc65ccfa29106e931f68b51cd2f4b32bb", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/76a02cddca45a5254479ad68f9fa274ead0a7ef2", + "reference": "76a02cddca45a5254479ad68f9fa274ead0a7ef2", "shasum": "" }, "require": { @@ -10854,7 +10854,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/v7.4.4" + "source": "https://github.com/symfony/dependency-injection/tree/v7.4.5" }, "funding": [ { @@ -10874,7 +10874,7 @@ "type": "tidelift" } ], - "time": "2026-01-23T12:59:19+00:00" + "time": "2026-01-27T16:16:02+00:00" }, { "name": "symfony/deprecation-contracts", @@ -11589,16 +11589,16 @@ }, { "name": "symfony/finder", - "version": "v7.4.4", + "version": "v7.4.5", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "01b24a145bbeaa7141e75887ec904c34a6728a5f" + "reference": "ad4daa7c38668dcb031e63bc99ea9bd42196a2cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/01b24a145bbeaa7141e75887ec904c34a6728a5f", - "reference": "01b24a145bbeaa7141e75887ec904c34a6728a5f", + "url": "https://api.github.com/repos/symfony/finder/zipball/ad4daa7c38668dcb031e63bc99ea9bd42196a2cb", + "reference": "ad4daa7c38668dcb031e63bc99ea9bd42196a2cb", "shasum": "" }, "require": { @@ -11633,7 +11633,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.4.4" + "source": "https://github.com/symfony/finder/tree/v7.4.5" }, "funding": [ { @@ -11653,7 +11653,7 @@ "type": "tidelift" } ], - "time": "2026-01-12T12:19:02+00:00" + "time": "2026-01-26T15:07:59+00:00" }, { "name": "symfony/flex", @@ -11833,16 +11833,16 @@ }, { "name": "symfony/framework-bundle", - "version": "v7.4.4", + "version": "v7.4.5", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "71fffd9f6cf8df1e2ee311176c85a10eddfdb08c" + "reference": "dcf89ca6712d9e1b5d3f14dea0e1c2685a05d1cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/71fffd9f6cf8df1e2ee311176c85a10eddfdb08c", - "reference": "71fffd9f6cf8df1e2ee311176c85a10eddfdb08c", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/dcf89ca6712d9e1b5d3f14dea0e1c2685a05d1cd", + "reference": "dcf89ca6712d9e1b5d3f14dea0e1c2685a05d1cd", "shasum": "" }, "require": { @@ -11865,8 +11865,8 @@ }, "conflict": { "doctrine/persistence": "<1.3", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", + "phpdocumentor/reflection-docblock": "<5.2|>=6", + "phpdocumentor/type-resolver": "<1.5.1", "symfony/asset": "<6.4", "symfony/asset-mapper": "<6.4", "symfony/clock": "<6.4", @@ -11898,7 +11898,7 @@ "require-dev": { "doctrine/persistence": "^1.3|^2|^3", "dragonmantank/cron-expression": "^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "phpdocumentor/reflection-docblock": "^5.2", "seld/jsonlint": "^1.10", "symfony/asset": "^6.4|^7.0|^8.0", "symfony/asset-mapper": "^6.4|^7.0|^8.0", @@ -11967,7 +11967,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/v7.4.4" + "source": "https://github.com/symfony/framework-bundle/tree/v7.4.5" }, "funding": [ { @@ -11987,20 +11987,20 @@ "type": "tidelift" } ], - "time": "2026-01-12T12:19:02+00:00" + "time": "2026-01-27T08:59:58+00:00" }, { "name": "symfony/http-client", - "version": "v7.4.4", + "version": "v7.4.5", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "d63c23357d74715a589454c141c843f0172bec6c" + "reference": "84bb634857a893cc146cceb467e31b3f02c5fe9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/d63c23357d74715a589454c141c843f0172bec6c", - "reference": "d63c23357d74715a589454c141c843f0172bec6c", + "url": "https://api.github.com/repos/symfony/http-client/zipball/84bb634857a893cc146cceb467e31b3f02c5fe9f", + "reference": "84bb634857a893cc146cceb467e31b3f02c5fe9f", "shasum": "" }, "require": { @@ -12068,7 +12068,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v7.4.4" + "source": "https://github.com/symfony/http-client/tree/v7.4.5" }, "funding": [ { @@ -12088,7 +12088,7 @@ "type": "tidelift" } ], - "time": "2026-01-23T16:34:22+00:00" + "time": "2026-01-27T16:16:02+00:00" }, { "name": "symfony/http-client-contracts", @@ -12170,16 +12170,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.4.4", + "version": "v7.4.5", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "977a554a34cf8edc95ca351fbecb1bb1ad05cc94" + "reference": "446d0db2b1f21575f1284b74533e425096abdfb6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/977a554a34cf8edc95ca351fbecb1bb1ad05cc94", - "reference": "977a554a34cf8edc95ca351fbecb1bb1ad05cc94", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/446d0db2b1f21575f1284b74533e425096abdfb6", + "reference": "446d0db2b1f21575f1284b74533e425096abdfb6", "shasum": "" }, "require": { @@ -12228,7 +12228,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.4.4" + "source": "https://github.com/symfony/http-foundation/tree/v7.4.5" }, "funding": [ { @@ -12248,20 +12248,20 @@ "type": "tidelift" } ], - "time": "2026-01-09T12:14:21+00:00" + "time": "2026-01-27T16:16:02+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.4.4", + "version": "v7.4.5", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "48b067768859f7b68acf41dfb857a5a4be00acdd" + "reference": "229eda477017f92bd2ce7615d06222ec0c19e82a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/48b067768859f7b68acf41dfb857a5a4be00acdd", - "reference": "48b067768859f7b68acf41dfb857a5a4be00acdd", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/229eda477017f92bd2ce7615d06222ec0c19e82a", + "reference": "229eda477017f92bd2ce7615d06222ec0c19e82a", "shasum": "" }, "require": { @@ -12347,7 +12347,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/v7.4.4" + "source": "https://github.com/symfony/http-kernel/tree/v7.4.5" }, "funding": [ { @@ -12367,7 +12367,7 @@ "type": "tidelift" } ], - "time": "2026-01-24T22:13:01+00:00" + "time": "2026-01-28T10:33:42+00:00" }, { "name": "symfony/intl", @@ -12545,16 +12545,16 @@ }, { "name": "symfony/mime", - "version": "v7.4.4", + "version": "v7.4.5", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "40945014c0a9471ccfe19673c54738fa19367a3c" + "reference": "b18c7e6e9eee1e19958138df10412f3c4c316148" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/40945014c0a9471ccfe19673c54738fa19367a3c", - "reference": "40945014c0a9471ccfe19673c54738fa19367a3c", + "url": "https://api.github.com/repos/symfony/mime/zipball/b18c7e6e9eee1e19958138df10412f3c4c316148", + "reference": "b18c7e6e9eee1e19958138df10412f3c4c316148", "shasum": "" }, "require": { @@ -12565,15 +12565,15 @@ }, "conflict": { "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", + "phpdocumentor/reflection-docblock": "<5.2|>=6", + "phpdocumentor/type-resolver": "<1.5.1", "symfony/mailer": "<6.4", "symfony/serializer": "<6.4.3|>7.0,<7.0.3" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", "league/html-to-markdown": "^5.0", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "phpdocumentor/reflection-docblock": "^5.2", "symfony/dependency-injection": "^6.4|^7.0|^8.0", "symfony/process": "^6.4|^7.0|^8.0", "symfony/property-access": "^6.4|^7.0|^8.0", @@ -12610,7 +12610,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.4.4" + "source": "https://github.com/symfony/mime/tree/v7.4.5" }, "funding": [ { @@ -12630,7 +12630,7 @@ "type": "tidelift" } ], - "time": "2026-01-08T16:12:55+00:00" + "time": "2026-01-27T08:59:58+00:00" }, { "name": "symfony/monolog-bridge", @@ -13692,16 +13692,16 @@ }, { "name": "symfony/process", - "version": "v7.4.4", + "version": "v7.4.5", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "626f07a53f4b4e2f00e11824cc29f928d797783b" + "reference": "608476f4604102976d687c483ac63a79ba18cc97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/626f07a53f4b4e2f00e11824cc29f928d797783b", - "reference": "626f07a53f4b4e2f00e11824cc29f928d797783b", + "url": "https://api.github.com/repos/symfony/process/zipball/608476f4604102976d687c483ac63a79ba18cc97", + "reference": "608476f4604102976d687c483ac63a79ba18cc97", "shasum": "" }, "require": { @@ -13733,7 +13733,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.4.4" + "source": "https://github.com/symfony/process/tree/v7.4.5" }, "funding": [ { @@ -13753,7 +13753,7 @@ "type": "tidelift" } ], - "time": "2026-01-20T09:23:51+00:00" + "time": "2026-01-26T15:07:59+00:00" }, { "name": "symfony/property-access", @@ -13838,16 +13838,16 @@ }, { "name": "symfony/property-info", - "version": "v7.4.4", + "version": "v7.4.5", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "b5305f3bc5727d0395e9681237e870ed5a5d21ae" + "reference": "1c9d326bd69602561e2ea467a16c09b5972eee21" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/b5305f3bc5727d0395e9681237e870ed5a5d21ae", - "reference": "b5305f3bc5727d0395e9681237e870ed5a5d21ae", + "url": "https://api.github.com/repos/symfony/property-info/zipball/1c9d326bd69602561e2ea467a16c09b5972eee21", + "reference": "1c9d326bd69602561e2ea467a16c09b5972eee21", "shasum": "" }, "require": { @@ -13857,7 +13857,7 @@ "symfony/type-info": "~7.3.10|^7.4.4|^8.0.4" }, "conflict": { - "phpdocumentor/reflection-docblock": "<5.2", + "phpdocumentor/reflection-docblock": "<5.2|>=6", "phpdocumentor/type-resolver": "<1.5.1", "symfony/cache": "<6.4", "symfony/dependency-injection": "<6.4", @@ -13904,7 +13904,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.4.4" + "source": "https://github.com/symfony/property-info/tree/v7.4.5" }, "funding": [ { @@ -13924,7 +13924,7 @@ "type": "tidelift" } ], - "time": "2026-01-23T10:51:15+00:00" + "time": "2026-01-27T16:16:02+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -14016,16 +14016,16 @@ }, { "name": "symfony/rate-limiter", - "version": "v7.4.4", + "version": "v7.4.5", "source": { "type": "git", "url": "https://github.com/symfony/rate-limiter.git", - "reference": "7337fff8629956d9ffed05c3fd241d2a42ddfa20" + "reference": "7e275c57293cd2d894e126cc68855ecd82bcd173" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/rate-limiter/zipball/7337fff8629956d9ffed05c3fd241d2a42ddfa20", - "reference": "7337fff8629956d9ffed05c3fd241d2a42ddfa20", + "url": "https://api.github.com/repos/symfony/rate-limiter/zipball/7e275c57293cd2d894e126cc68855ecd82bcd173", + "reference": "7e275c57293cd2d894e126cc68855ecd82bcd173", "shasum": "" }, "require": { @@ -14066,7 +14066,7 @@ "rate-limiter" ], "support": { - "source": "https://github.com/symfony/rate-limiter/tree/v7.4.4" + "source": "https://github.com/symfony/rate-limiter/tree/v7.4.5" }, "funding": [ { @@ -14086,7 +14086,7 @@ "type": "tidelift" } ], - "time": "2026-01-08T16:12:55+00:00" + "time": "2026-01-27T16:16:02+00:00" }, { "name": "symfony/routing", @@ -14627,16 +14627,16 @@ }, { "name": "symfony/serializer", - "version": "v7.4.4", + "version": "v7.4.5", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "3b9a5d5c941a2a6e2a7dbe0e63fc3161888a5cd4" + "reference": "480cd1237c98ab1219c20945b92c9d4480a44f47" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/3b9a5d5c941a2a6e2a7dbe0e63fc3161888a5cd4", - "reference": "3b9a5d5c941a2a6e2a7dbe0e63fc3161888a5cd4", + "url": "https://api.github.com/repos/symfony/serializer/zipball/480cd1237c98ab1219c20945b92c9d4480a44f47", + "reference": "480cd1237c98ab1219c20945b92c9d4480a44f47", "shasum": "" }, "require": { @@ -14646,8 +14646,8 @@ "symfony/polyfill-php84": "^1.30" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", + "phpdocumentor/reflection-docblock": "<5.2|>=6", + "phpdocumentor/type-resolver": "<1.5.1", "symfony/dependency-injection": "<6.4", "symfony/property-access": "<6.4", "symfony/property-info": "<6.4", @@ -14656,7 +14656,7 @@ "symfony/yaml": "<6.4" }, "require-dev": { - "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", + "phpdocumentor/reflection-docblock": "^5.2", "phpstan/phpdoc-parser": "^1.0|^2.0", "seld/jsonlint": "^1.10", "symfony/cache": "^6.4|^7.0|^8.0", @@ -14706,7 +14706,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/v7.4.4" + "source": "https://github.com/symfony/serializer/tree/v7.4.5" }, "funding": [ { @@ -14726,7 +14726,7 @@ "type": "tidelift" } ], - "time": "2026-01-23T10:51:15+00:00" + "time": "2026-01-27T08:59:58+00:00" }, { "name": "symfony/service-contracts", @@ -15229,16 +15229,16 @@ }, { "name": "symfony/twig-bridge", - "version": "v7.4.4", + "version": "v7.4.5", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "23c337a975c1527a4b91199f795abb62ede5238f" + "reference": "f2dd26b604e856476ef7e0efa4568bc07eb7ddc8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/23c337a975c1527a4b91199f795abb62ede5238f", - "reference": "23c337a975c1527a4b91199f795abb62ede5238f", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/f2dd26b604e856476ef7e0efa4568bc07eb7ddc8", + "reference": "f2dd26b604e856476ef7e0efa4568bc07eb7ddc8", "shasum": "" }, "require": { @@ -15248,8 +15248,8 @@ "twig/twig": "^3.21" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", + "phpdocumentor/reflection-docblock": "<5.2|>=6", + "phpdocumentor/type-resolver": "<1.5.1", "symfony/console": "<6.4", "symfony/form": "<6.4.32|>7,<7.3.10|>7.4,<7.4.4|>8.0,<8.0.4", "symfony/http-foundation": "<6.4", @@ -15262,7 +15262,7 @@ "require-dev": { "egulias/email-validator": "^2.1.10|^3|^4", "league/html-to-markdown": "^5.0", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "phpdocumentor/reflection-docblock": "^5.2", "symfony/asset": "^6.4|^7.0|^8.0", "symfony/asset-mapper": "^6.4|^7.0|^8.0", "symfony/console": "^6.4|^7.0|^8.0", @@ -15320,7 +15320,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v7.4.4" + "source": "https://github.com/symfony/twig-bridge/tree/v7.4.5" }, "funding": [ { @@ -15340,7 +15340,7 @@ "type": "tidelift" } ], - "time": "2026-01-07T10:07:42+00:00" + "time": "2026-01-27T08:59:58+00:00" }, { "name": "symfony/twig-bundle", @@ -15779,16 +15779,16 @@ }, { "name": "symfony/validator", - "version": "v7.4.4", + "version": "v7.4.5", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "64d763109518ea5f85ab32efe28eb8278ae5d502" + "reference": "fcec92c40df1c93507857da08226005573b655c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/64d763109518ea5f85ab32efe28eb8278ae5d502", - "reference": "64d763109518ea5f85ab32efe28eb8278ae5d502", + "url": "https://api.github.com/repos/symfony/validator/zipball/fcec92c40df1c93507857da08226005573b655c6", + "reference": "fcec92c40df1c93507857da08226005573b655c6", "shasum": "" }, "require": { @@ -15859,7 +15859,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.4.4" + "source": "https://github.com/symfony/validator/tree/v7.4.5" }, "funding": [ { @@ -15879,7 +15879,7 @@ "type": "tidelift" } ], - "time": "2026-01-08T22:32:07+00:00" + "time": "2026-01-27T08:59:58+00:00" }, { "name": "symfony/var-dumper", @@ -18276,11 +18276,11 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.37", + "version": "2.1.38", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/28cd424c5ea984128c95cfa7ea658808e8954e49", - "reference": "28cd424c5ea984128c95cfa7ea658808e8954e49", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/dfaf1f530e1663aa167bc3e52197adb221582629", + "reference": "dfaf1f530e1663aa167bc3e52197adb221582629", "shasum": "" }, "require": { @@ -18325,20 +18325,20 @@ "type": "github" } ], - "time": "2026-01-24T08:21:55+00:00" + "time": "2026-01-30T17:12:46+00:00" }, { "name": "phpstan/phpstan-doctrine", - "version": "2.0.13", + "version": "2.0.14", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "2d2ad04a0ac14ac52e21ad47ec67a54a14355c1f" + "reference": "70cd3e82fef49171163ff682a89cfe793d88581c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/2d2ad04a0ac14ac52e21ad47ec67a54a14355c1f", - "reference": "2d2ad04a0ac14ac52e21ad47ec67a54a14355c1f", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/70cd3e82fef49171163ff682a89cfe793d88581c", + "reference": "70cd3e82fef49171163ff682a89cfe793d88581c", "shasum": "" }, "require": { @@ -18396,22 +18396,22 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/2.0.13" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/2.0.14" }, - "time": "2026-01-18T16:15:40+00:00" + "time": "2026-01-25T14:56:09+00:00" }, { "name": "phpstan/phpstan-strict-rules", - "version": "2.0.7", + "version": "2.0.8", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-strict-rules.git", - "reference": "d6211c46213d4181054b3d77b10a5c5cb0d59538" + "reference": "1ed9e626a37f7067b594422411539aa807190573" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/d6211c46213d4181054b3d77b10a5c5cb0d59538", - "reference": "d6211c46213d4181054b3d77b10a5c5cb0d59538", + "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/1ed9e626a37f7067b594422411539aa807190573", + "reference": "1ed9e626a37f7067b594422411539aa807190573", "shasum": "" }, "require": { @@ -18444,9 +18444,9 @@ "description": "Extra strict and opinionated rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-strict-rules/issues", - "source": "https://github.com/phpstan/phpstan-strict-rules/tree/2.0.7" + "source": "https://github.com/phpstan/phpstan-strict-rules/tree/2.0.8" }, - "time": "2025-09-26T11:19:08+00:00" + "time": "2026-01-27T08:10:25+00:00" }, { "name": "phpstan/phpstan-symfony", @@ -18856,16 +18856,16 @@ }, { "name": "phpunit/phpunit", - "version": "11.5.49", + "version": "11.5.50", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "4f1750675ba411dd6c2d5fa8a3cca07f6742020e" + "reference": "fdfc727f0fcacfeb8fcb30c7e5da173125b58be3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4f1750675ba411dd6c2d5fa8a3cca07f6742020e", - "reference": "4f1750675ba411dd6c2d5fa8a3cca07f6742020e", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fdfc727f0fcacfeb8fcb30c7e5da173125b58be3", + "reference": "fdfc727f0fcacfeb8fcb30c7e5da173125b58be3", "shasum": "" }, "require": { @@ -18937,7 +18937,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.49" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.50" }, "funding": [ { @@ -18961,20 +18961,20 @@ "type": "tidelift" } ], - "time": "2026-01-24T16:09:28+00:00" + "time": "2026-01-27T05:59:18+00:00" }, { "name": "rector/rector", - "version": "2.3.4", + "version": "2.3.5", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "9227d7a24b0f23ae941057509364f948d5da9ab2" + "reference": "9442f4037de6a5347ae157fe8e6c7cda9d909070" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/9227d7a24b0f23ae941057509364f948d5da9ab2", - "reference": "9227d7a24b0f23ae941057509364f948d5da9ab2", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/9442f4037de6a5347ae157fe8e6c7cda9d909070", + "reference": "9442f4037de6a5347ae157fe8e6c7cda9d909070", "shasum": "" }, "require": { @@ -19013,7 +19013,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.3.4" + "source": "https://github.com/rectorphp/rector/tree/2.3.5" }, "funding": [ { @@ -19021,7 +19021,7 @@ "type": "github" } ], - "time": "2026-01-21T14:49:03+00:00" + "time": "2026-01-28T15:22:48+00:00" }, { "name": "roave/security-advisories", @@ -19029,12 +19029,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "8e1e81cec2f088871c624d2adf767eb5e492ecdf" + "reference": "8457f2008fc6396be788162c4e04228028306534" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/8e1e81cec2f088871c624d2adf767eb5e492ecdf", - "reference": "8e1e81cec2f088871c624d2adf767eb5e492ecdf", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/8457f2008fc6396be788162c4e04228028306534", + "reference": "8457f2008fc6396be788162c4e04228028306534", "shasum": "" }, "conflict": { @@ -19252,7 +19252,7 @@ "ec-cube/ec-cube": "<2.4.4|>=2.11,<=2.17.1|>=3,<=3.0.18.0-patch4|>=4,<=4.1.2", "ecodev/newsletter": "<=4", "ectouch/ectouch": "<=2.7.2", - "egroupware/egroupware": "<23.1.20240624", + "egroupware/egroupware": "<23.1.20260113|>=26.0.20251208,<26.0.20260113", "elefant/cms": "<2.0.7", "elgg/elgg": "<3.3.24|>=4,<4.0.5", "elijaa/phpmemcacheadmin": "<=1.3", @@ -19522,7 +19522,7 @@ "mongodb/mongodb": ">=1,<1.9.2", "mongodb/mongodb-extension": "<1.21.2", "monolog/monolog": ">=1.8,<1.12", - "moodle/moodle": "<=5.1.1", + "moodle/moodle": "<4.4.12|>=4.5.0.0-beta,<4.5.8|>=5.0.0.0-beta,<5.0.4|>=5.1.0.0-beta,<5.1.1", "moonshine/moonshine": "<=3.12.5", "mos/cimage": "<0.7.19", "movim/moxl": ">=0.8,<=0.10", @@ -19627,7 +19627,7 @@ "phpseclib/phpseclib": "<2.0.47|>=3,<3.0.36", "phpservermon/phpservermon": "<3.6", "phpsysinfo/phpsysinfo": "<3.4.3", - "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", + "phpunit/phpunit": "<8.5.52|>=9,<9.6.33|>=10,<10.5.62|>=11,<11.5.50|>=12,<12.5.8", "phpwhois/phpwhois": "<=4.2.5", "phpxmlrpc/extras": "<0.6.1", "phpxmlrpc/phpxmlrpc": "<4.9.2", @@ -19664,6 +19664,7 @@ "processwire/processwire": "<=3.0.246", "propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7", "propel/propel1": ">=1,<=1.7.1", + "psy/psysh": "<=0.11.22|>=0.12,<=0.12.18", "pterodactyl/panel": "<1.12", "ptheofan/yii2-statemachine": ">=2.0.0.0-RC1-dev,<=2", "ptrofimov/beanstalk_console": "<1.7.14", @@ -19752,7 +19753,7 @@ "snipe/snipe-it": "<=8.3.4", "socalnick/scn-social-auth": "<1.15.2", "socialiteproviders/steam": "<1.1", - "solspace/craft-freeform": "<=5.14.6", + "solspace/craft-freeform": "<4.1.29|>=5,<=5.14.6", "soosyze/soosyze": "<=2", "spatie/browsershot": "<5.0.5", "spatie/image-optimizer": "<1.7.3", @@ -19806,7 +19807,7 @@ "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", "symfony/polyfill": ">=1,<1.10", "symfony/polyfill-php55": ">=1,<1.10", - "symfony/process": "<5.4.46|>=6,<6.4.14|>=7,<7.1.7", + "symfony/process": "<5.4.51|>=6,<6.4.33|>=7,<7.1.7|>=7.3,<7.3.11|>=7.4,<7.4.5|>=8,<8.0.5", "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", "symfony/routing": ">=2,<2.0.19", "symfony/runtime": ">=5.3,<5.4.46|>=6,<6.4.14|>=7,<7.1.7", @@ -19817,7 +19818,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.4.47|>=6,<6.4.15|>=7,<7.1.8", "symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12", - "symfony/symfony": "<5.4.50|>=6,<6.4.29|>=7,<7.3.7", + "symfony/symfony": "<5.4.51|>=6,<6.4.33|>=7,<7.3.11|>=7.4,<7.4.5|>=8,<8.0.5", "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", @@ -20036,7 +20037,7 @@ "type": "tidelift" } ], - "time": "2026-01-23T21:05:59+00:00" + "time": "2026-01-30T22:06:58+00:00" }, { "name": "sebastian/cli-parser", diff --git a/yarn.lock b/yarn.lock index 24c8d5be..abbc7d9c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -55,34 +55,34 @@ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-theme-classic/-/autocomplete-theme-classic-1.19.4.tgz#7a0802e7c64dcc3584d5085e23a290a64ade4319" integrity sha512-/qE8BETNFbul4WrrUyBYgaaKcgFPk0Px9FDKADnr3HlIkXquRpcFHTxXK16jdwXb33yrcXaAVSQZRfUUSSnxVA== -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.28.6.tgz#72499312ec58b1e2245ba4a4f550c132be4982f7" - integrity sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.28.6", "@babel/code-frame@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.0.tgz#7cd7a59f15b3cc0dcd803038f7792712a7d0b15c" + integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw== dependencies: "@babel/helper-validator-identifier" "^7.28.5" js-tokens "^4.0.0" picocolors "^1.1.1" -"@babel/compat-data@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.6.tgz#103f466803fa0f059e82ccac271475470570d74c" - integrity sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg== +"@babel/compat-data@^7.28.6", "@babel/compat-data@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.0.tgz#00d03e8c0ac24dd9be942c5370990cbe1f17d88d" + integrity sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg== "@babel/core@^7.19.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.6.tgz#531bf883a1126e53501ba46eb3bb414047af507f" - integrity sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw== + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.0.tgz#5286ad785df7f79d656e88ce86e650d16ca5f322" + integrity sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA== dependencies: - "@babel/code-frame" "^7.28.6" - "@babel/generator" "^7.28.6" + "@babel/code-frame" "^7.29.0" + "@babel/generator" "^7.29.0" "@babel/helper-compilation-targets" "^7.28.6" "@babel/helper-module-transforms" "^7.28.6" "@babel/helpers" "^7.28.6" - "@babel/parser" "^7.28.6" + "@babel/parser" "^7.29.0" "@babel/template" "^7.28.6" - "@babel/traverse" "^7.28.6" - "@babel/types" "^7.28.6" + "@babel/traverse" "^7.29.0" + "@babel/types" "^7.29.0" "@jridgewell/remapping" "^2.3.5" convert-source-map "^2.0.0" debug "^4.1.0" @@ -90,13 +90,13 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.6.tgz#48dcc65d98fcc8626a48f72b62e263d25fc3c3f1" - integrity sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw== +"@babel/generator@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.0.tgz#4cba5a76b3c71d8be31761b03329d5dc7768447f" + integrity sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ== dependencies: - "@babel/parser" "^7.28.6" - "@babel/types" "^7.28.6" + "@babel/parser" "^7.29.0" + "@babel/types" "^7.29.0" "@jridgewell/gen-mapping" "^0.3.12" "@jridgewell/trace-mapping" "^0.3.28" jsesc "^3.0.2" @@ -141,7 +141,7 @@ regexpu-core "^6.3.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.6.5", "@babel/helper-define-polyfill-provider@^0.6.6": +"@babel/helper-define-polyfill-provider@^0.6.6": version "0.6.6" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.6.tgz#714dfe33d8bd710f556df59953720f6eeb6c1a14" integrity sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA== @@ -173,7 +173,7 @@ "@babel/traverse" "^7.28.6" "@babel/types" "^7.28.6" -"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.3", "@babel/helper-module-transforms@^7.28.6": +"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.6": version "7.28.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz#9312d9d9e56edc35aeb6e95c25d4106b50b9eb1e" integrity sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA== @@ -252,12 +252,12 @@ "@babel/template" "^7.28.6" "@babel/types" "^7.28.6" -"@babel/parser@^7.18.9", "@babel/parser@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.6.tgz#f01a8885b7fa1e56dd8a155130226cd698ef13fd" - integrity sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ== +"@babel/parser@^7.18.9", "@babel/parser@^7.28.6", "@babel/parser@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.0.tgz#669ef345add7d057e92b7ed15f0bac07611831b6" + integrity sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww== dependencies: - "@babel/types" "^7.28.6" + "@babel/types" "^7.29.0" "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.28.5": version "7.28.5" @@ -332,14 +332,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-async-generator-functions@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.6.tgz#80cb86d3eaa2102e18ae90dd05ab87bdcad3877d" - integrity sha512-9knsChgsMzBV5Yh3kkhrZNxH3oCYAfMBkNNaVN4cP2RVlFPe8wYdwwcnOsAbkdDoV9UjFtOXWrWB52M8W4jNeA== +"@babel/plugin-transform-async-generator-functions@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz#63ed829820298f0bf143d5a4a68fb8c06ffd742f" + integrity sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w== dependencies: "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-remap-async-to-generator" "^7.27.1" - "@babel/traverse" "^7.28.6" + "@babel/traverse" "^7.29.0" "@babel/plugin-transform-async-to-generator@^7.28.6": version "7.28.6" @@ -423,10 +423,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.28.6.tgz#e0c59ba54f1655dd682f2edf5f101b5910a8f6f3" - integrity sha512-5suVoXjC14lUN6ZL9OLKIHCNVWCrqGqlmEp/ixdXjvgnEl/kauLvvMO/Xw9NyMc95Joj1AeLVPVMvibBgSoFlA== +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz#8014b8a6cfd0e7b92762724443bf0d2400f26df1" + integrity sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.28.5" "@babel/helper-plugin-utils" "^7.28.6" @@ -521,15 +521,15 @@ "@babel/helper-module-transforms" "^7.28.6" "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-modules-systemjs@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz#7439e592a92d7670dfcb95d0cbc04bd3e64801d2" - integrity sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew== +"@babel/plugin-transform-modules-systemjs@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz#e458a95a17807c415924106a3ff188a3b8dee964" + integrity sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ== dependencies: - "@babel/helper-module-transforms" "^7.28.3" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-module-transforms" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-validator-identifier" "^7.28.5" - "@babel/traverse" "^7.28.5" + "@babel/traverse" "^7.29.0" "@babel/plugin-transform-modules-umd@^7.27.1": version "7.27.1" @@ -539,13 +539,13 @@ "@babel/helper-module-transforms" "^7.27.1" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-named-capturing-groups-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz#f32b8f7818d8fc0cc46ee20a8ef75f071af976e1" - integrity sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng== +"@babel/plugin-transform-named-capturing-groups-regex@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz#a26cd51e09c4718588fc4cce1c5d1c0152102d6a" + integrity sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-new-target@^7.27.1": version "7.27.1" @@ -633,10 +633,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-regenerator@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.6.tgz#6ca2ed5b76cff87980f96eaacfc2ce833e8e7a1b" - integrity sha512-eZhoEZHYQLL5uc1gS5e9/oTknS0sSSAtd5TkKMUp3J+S/CaUjagc0kOUPsEbDmMeva0nC3WWl4SxVY6+OBuxfw== +"@babel/plugin-transform-regenerator@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz#dec237cec1b93330876d6da9992c4abd42c9d18b" + integrity sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog== dependencies: "@babel/helper-plugin-utils" "^7.28.6" @@ -723,11 +723,11 @@ "@babel/helper-plugin-utils" "^7.28.6" "@babel/preset-env@^7.19.4": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.28.6.tgz#b4586bb59d8c61be6c58997f4912e7ea6bd17178" - integrity sha512-GaTI4nXDrs7l0qaJ6Rg06dtOXTBCG6TMDB44zbqofCIC4PqC7SEvmFFtpxzCDw9W5aJ7RKVshgXTLvLdBFV/qw== + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.29.0.tgz#c55db400c515a303662faaefd2d87e796efa08d0" + integrity sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w== dependencies: - "@babel/compat-data" "^7.28.6" + "@babel/compat-data" "^7.29.0" "@babel/helper-compilation-targets" "^7.28.6" "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-validator-option" "^7.27.1" @@ -741,7 +741,7 @@ "@babel/plugin-syntax-import-attributes" "^7.28.6" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" "@babel/plugin-transform-arrow-functions" "^7.27.1" - "@babel/plugin-transform-async-generator-functions" "^7.28.6" + "@babel/plugin-transform-async-generator-functions" "^7.29.0" "@babel/plugin-transform-async-to-generator" "^7.28.6" "@babel/plugin-transform-block-scoped-functions" "^7.27.1" "@babel/plugin-transform-block-scoping" "^7.28.6" @@ -752,7 +752,7 @@ "@babel/plugin-transform-destructuring" "^7.28.5" "@babel/plugin-transform-dotall-regex" "^7.28.6" "@babel/plugin-transform-duplicate-keys" "^7.27.1" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.28.6" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.29.0" "@babel/plugin-transform-dynamic-import" "^7.27.1" "@babel/plugin-transform-explicit-resource-management" "^7.28.6" "@babel/plugin-transform-exponentiation-operator" "^7.28.6" @@ -765,9 +765,9 @@ "@babel/plugin-transform-member-expression-literals" "^7.27.1" "@babel/plugin-transform-modules-amd" "^7.27.1" "@babel/plugin-transform-modules-commonjs" "^7.28.6" - "@babel/plugin-transform-modules-systemjs" "^7.28.5" + "@babel/plugin-transform-modules-systemjs" "^7.29.0" "@babel/plugin-transform-modules-umd" "^7.27.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.27.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.29.0" "@babel/plugin-transform-new-target" "^7.27.1" "@babel/plugin-transform-nullish-coalescing-operator" "^7.28.6" "@babel/plugin-transform-numeric-separator" "^7.28.6" @@ -779,7 +779,7 @@ "@babel/plugin-transform-private-methods" "^7.28.6" "@babel/plugin-transform-private-property-in-object" "^7.28.6" "@babel/plugin-transform-property-literals" "^7.27.1" - "@babel/plugin-transform-regenerator" "^7.28.6" + "@babel/plugin-transform-regenerator" "^7.29.0" "@babel/plugin-transform-regexp-modifiers" "^7.28.6" "@babel/plugin-transform-reserved-words" "^7.27.1" "@babel/plugin-transform-shorthand-properties" "^7.27.1" @@ -792,10 +792,10 @@ "@babel/plugin-transform-unicode-regex" "^7.27.1" "@babel/plugin-transform-unicode-sets-regex" "^7.28.6" "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.14" - babel-plugin-polyfill-corejs3 "^0.13.0" - babel-plugin-polyfill-regenerator "^0.6.5" - core-js-compat "^3.43.0" + babel-plugin-polyfill-corejs2 "^0.4.15" + babel-plugin-polyfill-corejs3 "^0.14.0" + babel-plugin-polyfill-regenerator "^0.6.6" + core-js-compat "^3.48.0" semver "^6.3.1" "@babel/preset-modules@0.1.6-no-external-plugins": @@ -816,23 +816,23 @@ "@babel/parser" "^7.28.6" "@babel/types" "^7.28.6" -"@babel/traverse@^7.18.9", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.5", "@babel/traverse@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.6.tgz#871ddc79a80599a5030c53b1cc48cbe3a5583c2e" - integrity sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg== +"@babel/traverse@^7.18.9", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.5", "@babel/traverse@^7.28.6", "@babel/traverse@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.0.tgz#f323d05001440253eead3c9c858adbe00b90310a" + integrity sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA== dependencies: - "@babel/code-frame" "^7.28.6" - "@babel/generator" "^7.28.6" + "@babel/code-frame" "^7.29.0" + "@babel/generator" "^7.29.0" "@babel/helper-globals" "^7.28.0" - "@babel/parser" "^7.28.6" + "@babel/parser" "^7.29.0" "@babel/template" "^7.28.6" - "@babel/types" "^7.28.6" + "@babel/types" "^7.29.0" debug "^4.3.1" -"@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.5", "@babel/types@^7.28.6", "@babel/types@^7.4.4": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.6.tgz#c3e9377f1b155005bcc4c46020e7e394e13089df" - integrity sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg== +"@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.5", "@babel/types@^7.28.6", "@babel/types@^7.29.0", "@babel/types@^7.4.4": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7" + integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A== dependencies: "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.28.5" @@ -1850,9 +1850,9 @@ integrity sha512-eGeIqNOQpXoPAIP7tC1+1Yc1yl1xnwYqg+3mzqxyrbE5pg5YFBZcA6YoTiByJB6DKAEsiWtl6tjTJS4IYtbB7A== "@hotwired/turbo@^8.0.1": - version "8.0.21" - resolved "https://registry.yarnpkg.com/@hotwired/turbo/-/turbo-8.0.21.tgz#a3e80c01d70048200f64bbe3582b84f9bfac034e" - integrity sha512-fJTv3JnzFHeDxBb23esZSOhT4r142xf5o3lKMFMvzPC6AllkqbBKk5Yb31UZhtIsKQCwmO/pUQrtTUlYl5CHAQ== + version "8.0.23" + resolved "https://registry.yarnpkg.com/@hotwired/turbo/-/turbo-8.0.23.tgz#a6eebc9ab4a5faadae265a4cbec8cfcb5731e77c" + integrity sha512-GZ7cijxEZ6Ig71u7rD6LHaRv/wcE/hNsc+nEfiWOkLNqUgLOwo5MNGWOy5ZV9ZUDSiQx1no7YxjTNnT4O6//cQ== "@isaacs/balanced-match@^4.0.1": version "4.0.1" @@ -2169,9 +2169,9 @@ integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== "@types/node@*": - version "25.0.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-25.0.10.tgz#4864459c3c9459376b8b75fd051315071c8213e7" - integrity sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg== + version "25.1.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-25.1.0.tgz#95cc584f1f478301efc86de4f1867e5875e83571" + integrity sha512-t7frlewr6+cbx+9Ohpl0NOTKXZNV9xHRmNOvql47BFJKcEG1CxtxlPEEe+gR9uhVWM4DwhnvTF110mIL4yP9RA== dependencies: undici-types "~7.16.0" @@ -2575,7 +2575,7 @@ available-typed-arrays@^1.0.7: dependencies: find-up "^5.0.0" -babel-plugin-polyfill-corejs2@^0.4.14: +babel-plugin-polyfill-corejs2@^0.4.15: version "0.4.15" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.15.tgz#808fa349686eea4741807cfaaa2aa3aa57ce120a" integrity sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw== @@ -2584,15 +2584,15 @@ babel-plugin-polyfill-corejs2@^0.4.14: "@babel/helper-define-polyfill-provider" "^0.6.6" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.13.0: - version "0.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz#bb7f6aeef7addff17f7602a08a6d19a128c30164" - integrity sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A== +babel-plugin-polyfill-corejs3@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.0.tgz#65b06cda48d6e447e1e926681f5a247c6ae2b9cf" + integrity sha512-AvDcMxJ34W4Wgy4KBIIePQTAOP1Ie2WFwkQp3dB7FQ/f0lI5+nM96zUnYEOE1P9sEg0es5VCP0HxiWu5fUHZAQ== dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.5" - core-js-compat "^3.43.0" + "@babel/helper-define-polyfill-provider" "^0.6.6" + core-js-compat "^3.48.0" -babel-plugin-polyfill-regenerator@^0.6.5: +babel-plugin-polyfill-regenerator@^0.6.6: version "0.6.6" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.6.tgz#69f5dd263cab933c42fe5ea05e83443b374bd4bf" integrity sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A== @@ -2627,9 +2627,9 @@ base64-js@^1.1.2, base64-js@^1.3.0: integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== baseline-browser-mapping@^2.9.0: - version "2.9.18" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.18.tgz#c8281693035a9261b10d662a5379650a6c2d1ff7" - integrity sha512-e23vBV1ZLfjb9apvfPk4rHVu2ry6RIr2Wfs+O324okSidrX7pTAnEJPCh/O5BtRlr7QtZI7ktOP3vsqr7Z5XoA== + version "2.9.19" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz#3e508c43c46d961eb4d7d2e5b8d1dd0f9ee4f488" + integrity sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg== big.js@^5.2.2: version "5.2.2" @@ -2865,9 +2865,9 @@ chrome-trace-event@^1.0.2: integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== ci-info@^4.2.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.3.1.tgz#355ad571920810b5623e11d40232f443f16f1daa" - integrity sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA== + version "4.4.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.4.0.tgz#7d54eff9f54b45b62401c26032696eb59c8bd18c" + integrity sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg== ckeditor5@47.4.0, ckeditor5@^47.0.0: version "47.4.0" @@ -3101,7 +3101,7 @@ convert-source-map@^2.0.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -core-js-compat@^3.43.0: +core-js-compat@^3.48.0: version "3.48.0" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.48.0.tgz#7efbe1fc1cbad44008190462217cc5558adaeaa6" integrity sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q== @@ -3165,18 +3165,18 @@ css-loader@^5.2.7: semver "^7.3.5" css-loader@^7.1.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-7.1.2.tgz#64671541c6efe06b0e22e750503106bdd86880f8" - integrity sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA== + version "7.1.3" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-7.1.3.tgz#c0de715ceabe39b8531a85fcaf6734a430c4d99a" + integrity sha512-frbERmjT0UC5lMheWpJmMilnt9GEhbZJN/heUb7/zaJYeIzj5St9HvDcfshzzOqbsS+rYpMk++2SD3vGETDSyA== dependencies: icss-utils "^5.1.0" - postcss "^8.4.33" + postcss "^8.4.40" postcss-modules-extract-imports "^3.1.0" postcss-modules-local-by-default "^4.0.5" postcss-modules-scope "^3.2.0" postcss-modules-values "^4.0.0" postcss-value-parser "^4.2.0" - semver "^7.5.4" + semver "^7.6.3" css-minimizer-webpack-plugin@^7.0.0: version "7.0.4" @@ -3379,11 +3379,11 @@ data-view-byte-offset@^1.0.1: is-data-view "^1.0.1" datatables.net-bs5@^2, datatables.net-bs5@^2.0.0: - version "2.3.6" - resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-2.3.6.tgz#88e9b015cb3d260f3e874f0f9ad16dc566b997da" - integrity sha512-oUNGjZrpNC2fY3l/6V4ijTC9kyVKU4Raons+RFmq2J7590rPn0c+5WAYKBx0evgW/CW7WfhStGBrU7+WJig6Og== + version "2.3.7" + resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-2.3.7.tgz#ddef957ee23b03c2d4bc1d48735b39c6182e5d53" + integrity sha512-RiCEMpMXDBeMDwjSrMpmcXDU6mibRMuOn7Wk7k3SlOfLEY3FQHO7S2m+K7teXYeaNlCLyjJMU+6BUUwlBCpLFw== dependencies: - datatables.net "2.3.6" + datatables.net "2.3.7" jquery ">=1.7" datatables.net-buttons-bs5@^3.0.0: @@ -3438,18 +3438,18 @@ datatables.net-fixedheader@4.0.5: jquery ">=1.7" datatables.net-responsive-bs5@^3.0.0: - version "3.0.7" - resolved "https://registry.yarnpkg.com/datatables.net-responsive-bs5/-/datatables.net-responsive-bs5-3.0.7.tgz#aa9961d096a7443f59a871d55bf8a19e37a9e60e" - integrity sha512-M5VgAXMF7sa64GxFxVfyhiomYpvH/CRXhwoB+l13LaoDU6qtb6noOupFMtG7AVECrDar6UaKe38Frfqz3Pi0Kg== + version "3.0.8" + resolved "https://registry.yarnpkg.com/datatables.net-responsive-bs5/-/datatables.net-responsive-bs5-3.0.8.tgz#666e9dfbd14f330630660374edca5d645c3697d5" + integrity sha512-f0YTxv/HKWKXkOdutwDe3MmRM3AWf4Lxw7FjrgVc3H5+62emUnHep6cA9VwUcAAMywNqMYVndaKPyhAoeKUCyQ== dependencies: datatables.net-bs5 "^2" - datatables.net-responsive "3.0.7" + datatables.net-responsive "3.0.8" jquery ">=1.7" -datatables.net-responsive@3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/datatables.net-responsive/-/datatables.net-responsive-3.0.7.tgz#7b57574bcfba105dc0827b77ec75b72b63e461fb" - integrity sha512-MngWU41M1LDDMjKFJ3rAHc4Zb3QhOysDTh+TfKE1ycrh5dpnKa1vobw2MKMMbvbx4q05OXZY9jtLSPIkaJRsuw== +datatables.net-responsive@3.0.8: + version "3.0.8" + resolved "https://registry.yarnpkg.com/datatables.net-responsive/-/datatables.net-responsive-3.0.8.tgz#c41d706c98442122e61a8fb9b02a8b2995cd487d" + integrity sha512-htslaX9g/9HFrJeyFQKEe/XJWpawPxpvy+M6vc/NkKQIrKhbxSoPc3phPqmlnZth6b9hgawqWDT0e0lwf5p+KA== dependencies: datatables.net "^2" jquery ">=1.7" @@ -3471,10 +3471,10 @@ datatables.net-select@3.1.3: datatables.net "^2" jquery ">=1.7" -datatables.net@2.3.6, datatables.net@^2, datatables.net@^2.0.0: - version "2.3.6" - resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-2.3.6.tgz#a11be57a2b50d7231cae2980a8ff1df3c18b7b17" - integrity sha512-xQ/dCxrjfxM0XY70wSIzakkTZ6ghERwlLmAPyCnu8Sk5cyt9YvOVyOsFNOa/BZ/lM63Q3i2YSSvp/o7GXZGsbg== +datatables.net@2.3.7, datatables.net@^2, datatables.net@^2.0.0: + version "2.3.7" + resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-2.3.7.tgz#3cd34f6f5d1f40a46b5a20a4ba32604bdbcd6738" + integrity sha512-AvsjG/Nkp6OxeyBKYZauemuzQCPogE1kOtKwG4sYjvdqGCSLiGaJagQwXv4YxG+ts5vaJr6qKGG9ec3g6vTo3w== dependencies: jquery ">=1.7" @@ -3671,9 +3671,9 @@ dunder-proto@^1.0.0, dunder-proto@^1.0.1: gopd "^1.2.0" electron-to-chromium@^1.5.263: - version "1.5.278" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.278.tgz#807a5e321f012a41bfd64e653f35993c9af95493" - integrity sha512-dQ0tM1svDRQOwxnXxm+twlGTjr9Upvt8UFWAgmLsxEzFQxhbti4VwxmMjsDxVC51Zo84swW7FVCXEV+VAkhuPw== + version "1.5.283" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.283.tgz#51d492c37c2d845a0dccb113fe594880c8616de8" + integrity sha512-3vifjt1HgrGW/h76UEeny+adYApveS9dH2h3p57JYzBSXJIKUJAvtmIytDKjcSCt9xHfrNCFJ7gts6vkhuq++w== emoji-regex@^7.0.1: version "7.0.3" @@ -4146,9 +4146,9 @@ get-symbol-description@^1.1.0: get-intrinsic "^1.2.6" get-tsconfig@^4.4.0: - version "4.13.0" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.13.0.tgz#fcdd991e6d22ab9a600f00e91c318707a5d9a0d7" - integrity sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ== + version "4.13.1" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.13.1.tgz#ff96c0d98967df211c1ebad41f375ccf516c43fa" + integrity sha512-EoY1N2xCn44xU6750Sx7OjOIT59FkmstNc3X6y5xpz7D5cBtZRe/3pSlTkDJgqsOk3WwZPkWfonhhUJfttQo3w== dependencies: resolve-pkg-maps "^1.0.0" @@ -4957,9 +4957,9 @@ jszip@^3.2.0: setimmediate "^1.0.5" katex@^0.16.0: - version "0.16.27" - resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.27.tgz#4ecf6f620e0ca1c1a5de722e85fcdcec49086a48" - integrity sha512-aeQoDkuRWSqQN6nSvVCEFvfXdqo1OQiCmmW1kc9xSdjutPv7BGO7pqY9sQRJpMOGrEdfDgF2TfRXe5eUAD2Waw== + version "0.16.28" + resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.28.tgz#64068425b5a29b41b136aae0d51cbb2c71d64c39" + integrity sha512-YHzO7721WbmAL6Ov1uzN/l5mY5WWWhJBSW+jq4tkfZfsxmo1hu6frS0EOswvjBUnWE6NtjEs48SFn5CQESRLZg== dependencies: commander "^8.3.0" @@ -6503,7 +6503,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.33, postcss@^8.4.40: +postcss@^8.2.14, postcss@^8.2.15, postcss@^8.4.12, postcss@^8.4.40: version "8.5.6" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== @@ -6513,9 +6513,9 @@ postcss@^8.2.14, postcss@^8.2.15, postcss@^8.4.12, postcss@^8.4.33, postcss@^8.4 source-map-js "^1.2.1" preact@^10.13.2: - version "10.28.2" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.28.2.tgz#4b668383afa4b4a2546bbe4bd1747e02e2360138" - integrity sha512-lbteaWGzGHdlIuiJ0l2Jq454m6kcpI1zNje6d8MlGAFlYvP2GO4ibnat7P74Esfz4sPTdM6UxtTwh/d3pwM9JA== + version "10.28.3" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.28.3.tgz#3c2171526b3e29628ad1a6c56a9e3ca867bbdee8" + integrity sha512-tCmoRkPQLpBeWzpmbhryairGnhW9tKV6c6gr/w+RhoRoKEJwsjzipwp//1oCpGPOchvSLaAPlpcJi9MwMmoPyA== pretty-error@^4.0.0: version "4.0.0" @@ -6952,7 +6952,7 @@ semver@^6.0.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.5.4: +semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.6.3: version "7.7.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946" integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== @@ -7499,9 +7499,9 @@ tslib@^2.8.0: integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== type-fest@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-5.4.1.tgz#aa9eaadcdc0acb0b5bd52e54f966ee3e38e125d2" - integrity sha512-xygQcmneDyzsEuKZrFbRMne5HDqMs++aFzefrJTgEIKjQ3rekM+RPfFCVq2Gp1VIDqddoYeppCj4Pcb+RZW0GQ== + version "5.4.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-5.4.3.tgz#b4c7e028da129098911ee2162a0c30df8a1be904" + integrity sha512-AXSAQJu79WGc79/3e9/CR77I/KQgeY1AhNvcShIH4PTcGYyC4xv6H4R4AUOwkPS5799KlVDAu8zExeCrkGquiA== dependencies: tagged-tag "^1.0.0" From 584643d4cabc4658442db9d8d515104859ebfb3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 31 Jan 2026 22:21:59 +0100 Subject: [PATCH 168/235] Fixed phpstan issue --- src/Services/InfoProviderSystem/Providers/ConradProvider.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Services/InfoProviderSystem/Providers/ConradProvider.php b/src/Services/InfoProviderSystem/Providers/ConradProvider.php index 044eb7a7..6212f148 100644 --- a/src/Services/InfoProviderSystem/Providers/ConradProvider.php +++ b/src/Services/InfoProviderSystem/Providers/ConradProvider.php @@ -248,7 +248,7 @@ readonly class ConradProvider implements InfoProviderInterface $priceInfo = $result['priceAndAvailabilityFacadeResponse']['priceAndAvailability']['price'] ?? []; $price = $priceInfo['price'] ?? "0.0"; $currency = $priceInfo['currency'] ?? "EUR"; - $includesVat = $priceInfo['isGrossAmount'] === "true" ?? true; + $includesVat = !$priceInfo['isGrossAmount'] || $priceInfo['isGrossAmount'] === "true"; $minOrderAmount = $result['priceAndAvailabilityFacadeResponse']['priceAndAvailability']['availabilityStatus']['minimumOrderQuantity'] ?? 1; $prices = []; From a355bda9da6eb7011036f6aac886932d31a4fbcc Mon Sep 17 00:00:00 2001 From: Niklas <44636701+MayNiklas@users.noreply.github.com> Date: Sat, 31 Jan 2026 22:37:43 +0100 Subject: [PATCH 169/235] add supplier SPN linking for BOM import (#1209) * feat: add supplier SPN lookup for BOM import Add automatic part linking via supplier part numbers (SPNs) in the BOM importer. When a Part-DB ID is not provided, the importer now searches for existing parts by matching supplier SPNs from the CSV with orderdetail records in the database. This allows automatic part linking when KiCad schematic BOMs contain supplier information like LCSC SPN, Mouser SPN, etc., improving the import workflow for users who track parts by supplier part numbers. * add tests for BOM import with supplier SPN handling --- .../ImportExportSystem/BOMImporter.php | 40 +++- .../ImportExportSystem/BOMImporterTest.php | 175 ++++++++++++++++++ 2 files changed, 214 insertions(+), 1 deletion(-) diff --git a/src/Services/ImportExportSystem/BOMImporter.php b/src/Services/ImportExportSystem/BOMImporter.php index 33a402cb..8a91c825 100644 --- a/src/Services/ImportExportSystem/BOMImporter.php +++ b/src/Services/ImportExportSystem/BOMImporter.php @@ -277,8 +277,11 @@ class BOMImporter // Fetch suppliers once for efficiency $suppliers = $this->entityManager->getRepository(\App\Entity\Parts\Supplier::class)->findAll(); $supplierSPNKeys = []; + $suppliersByName = []; // Map supplier names to supplier objects foreach ($suppliers as $supplier) { - $supplierSPNKeys[] = $supplier->getName() . ' SPN'; + $supplierName = $supplier->getName(); + $supplierSPNKeys[] = $supplierName . ' SPN'; + $suppliersByName[$supplierName] = $supplier; } foreach ($csv->getRecords() as $offset => $entry) { @@ -356,6 +359,41 @@ class BOMImporter } } + // Try to link existing part based on supplier part number if no Part-DB ID is given + if ($part === null) { + // Check all available supplier SPN fields + foreach ($suppliersByName as $supplierName => $supplier) { + $supplier_spn = null; + + if (isset($mapped_entry[$supplierName . ' SPN']) && !empty(trim($mapped_entry[$supplierName . ' SPN']))) { + $supplier_spn = trim($mapped_entry[$supplierName . ' SPN']); + } + + if ($supplier_spn !== null) { + // Query for orderdetails with matching supplier and SPN + $orderdetail = $this->entityManager->getRepository(\App\Entity\PriceInformations\Orderdetail::class) + ->findOneBy([ + 'supplier' => $supplier, + 'supplierpartnr' => $supplier_spn, + ]); + + if ($orderdetail !== null && $orderdetail->getPart() !== null) { + $part = $orderdetail->getPart(); + $name = $part->getName(); // Update name with actual part name + + $this->logger->info('Linked BOM entry to existing part via supplier SPN', [ + 'supplier' => $supplierName, + 'supplier_spn' => $supplier_spn, + 'part_id' => $part->getID(), + 'part_name' => $part->getName(), + ]); + + break; // Stop searching once a match is found + } + } + } + } + // Create unique key for this entry (name + part ID) $entry_key = $name . '|' . ($part ? $part->getID() : 'null'); diff --git a/tests/Services/ImportExportSystem/BOMImporterTest.php b/tests/Services/ImportExportSystem/BOMImporterTest.php index 47ddcc24..a8841f17 100644 --- a/tests/Services/ImportExportSystem/BOMImporterTest.php +++ b/tests/Services/ImportExportSystem/BOMImporterTest.php @@ -616,6 +616,181 @@ class BOMImporterTest extends WebTestCase $this->assertEquals('R1,R2', $bom_entries[0]->getMountnames()); } + public function testStringToBOMEntriesKiCADSchematicWithSupplierSPN(): void + { + // Create test supplier + $lcscSupplier = new Supplier(); + $lcscSupplier->setName('LCSC'); + $this->entityManager->persist($lcscSupplier); + + // Create a test part with required fields + $part = new Part(); + $part->setName('Test Resistor 10k 0805'); + $part->setCategory($this->getDefaultCategory($this->entityManager)); + $this->entityManager->persist($part); + + // Create orderdetail linking the part to a supplier SPN + $orderdetail = new \App\Entity\PriceInformations\Orderdetail(); + $orderdetail->setPart($part); + $orderdetail->setSupplier($lcscSupplier); + $orderdetail->setSupplierpartnr('C123456'); + $this->entityManager->persist($orderdetail); + + $this->entityManager->flush(); + + // Import CSV with LCSC SPN matching the orderdetail + $input = << 'Designator', + 'Value' => 'Value', + 'LCSC SPN' => 'LCSC SPN', + 'Quantity' => 'Quantity' + ]; + + $bom_entries = $this->service->stringToBOMEntries($input, [ + 'type' => 'kicad_schematic', + 'field_mapping' => $field_mapping, + 'delimiter' => ',' + ]); + + $this->assertContainsOnlyInstancesOf(ProjectBOMEntry::class, $bom_entries); + $this->assertCount(1, $bom_entries); + + // Verify that the BOM entry is linked to the correct part via supplier SPN + $this->assertSame($part, $bom_entries[0]->getPart()); + $this->assertEquals('Test Resistor 10k 0805', $bom_entries[0]->getName()); + $this->assertEquals('R1,R2', $bom_entries[0]->getMountnames()); + $this->assertEquals(2.0, $bom_entries[0]->getQuantity()); + $this->assertStringContainsString('LCSC SPN: C123456', $bom_entries[0]->getComment()); + $this->assertStringContainsString('Part-DB ID: ' . $part->getID(), $bom_entries[0]->getComment()); + + // Clean up + $this->entityManager->remove($orderdetail); + $this->entityManager->remove($part); + $this->entityManager->remove($lcscSupplier); + $this->entityManager->flush(); + } + + public function testStringToBOMEntriesKiCADSchematicWithMultipleSupplierSPNs(): void + { + // Create test suppliers + $lcscSupplier = new Supplier(); + $lcscSupplier->setName('LCSC'); + $mouserSupplier = new Supplier(); + $mouserSupplier->setName('Mouser'); + $this->entityManager->persist($lcscSupplier); + $this->entityManager->persist($mouserSupplier); + + // Create first part linked via LCSC SPN + $part1 = new Part(); + $part1->setName('Resistor 10k'); + $part1->setCategory($this->getDefaultCategory($this->entityManager)); + $this->entityManager->persist($part1); + + $orderdetail1 = new \App\Entity\PriceInformations\Orderdetail(); + $orderdetail1->setPart($part1); + $orderdetail1->setSupplier($lcscSupplier); + $orderdetail1->setSupplierpartnr('C123456'); + $this->entityManager->persist($orderdetail1); + + // Create second part linked via Mouser SPN + $part2 = new Part(); + $part2->setName('Capacitor 100nF'); + $part2->setCategory($this->getDefaultCategory($this->entityManager)); + $this->entityManager->persist($part2); + + $orderdetail2 = new \App\Entity\PriceInformations\Orderdetail(); + $orderdetail2->setPart($part2); + $orderdetail2->setSupplier($mouserSupplier); + $orderdetail2->setSupplierpartnr('789-CAP100NF'); + $this->entityManager->persist($orderdetail2); + + $this->entityManager->flush(); + + // Import CSV with both LCSC and Mouser SPNs + $input = << 'Designator', + 'Value' => 'Value', + 'LCSC SPN' => 'LCSC SPN', + 'Mouser SPN' => 'Mouser SPN', + 'Quantity' => 'Quantity' + ]; + + $bom_entries = $this->service->stringToBOMEntries($input, [ + 'type' => 'kicad_schematic', + 'field_mapping' => $field_mapping, + 'delimiter' => ',' + ]); + + $this->assertCount(2, $bom_entries); + + // Verify first entry linked via LCSC SPN + $this->assertSame($part1, $bom_entries[0]->getPart()); + $this->assertEquals('Resistor 10k', $bom_entries[0]->getName()); + + // Verify second entry linked via Mouser SPN + $this->assertSame($part2, $bom_entries[1]->getPart()); + $this->assertEquals('Capacitor 100nF', $bom_entries[1]->getName()); + + // Clean up + $this->entityManager->remove($orderdetail1); + $this->entityManager->remove($orderdetail2); + $this->entityManager->remove($part1); + $this->entityManager->remove($part2); + $this->entityManager->remove($lcscSupplier); + $this->entityManager->remove($mouserSupplier); + $this->entityManager->flush(); + } + + public function testStringToBOMEntriesKiCADSchematicWithNonMatchingSPN(): void + { + // Create test supplier + $lcscSupplier = new Supplier(); + $lcscSupplier->setName('LCSC'); + $this->entityManager->persist($lcscSupplier); + $this->entityManager->flush(); + + // Import CSV with LCSC SPN that doesn't match any orderdetail + $input = << 'Designator', + 'Value' => 'Value', + 'LCSC SPN' => 'LCSC SPN', + 'Quantity' => 'Quantity' + ]; + + $bom_entries = $this->service->stringToBOMEntries($input, [ + 'type' => 'kicad_schematic', + 'field_mapping' => $field_mapping, + 'delimiter' => ',' + ]); + + $this->assertCount(1, $bom_entries); + + // Verify that no part is linked (SPN not found) + $this->assertNull($bom_entries[0]->getPart()); + $this->assertEquals('10k', $bom_entries[0]->getName()); // Should use Value as name + $this->assertStringContainsString('LCSC SPN: C999999', $bom_entries[0]->getComment()); + + // Clean up + $this->entityManager->remove($lcscSupplier); + $this->entityManager->flush(); + } + private function getDefaultCategory(EntityManagerInterface $entityManager) { // Get the first available category or create a default one From 6ac7a42ccafe50dff80dde5237936778123000ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 31 Jan 2026 23:33:39 +0100 Subject: [PATCH 170/235] Require ext-zip in composer.json --- composer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index f7a181a8..36e510c9 100644 --- a/composer.json +++ b/composer.json @@ -11,6 +11,7 @@ "ext-intl": "*", "ext-json": "*", "ext-mbstring": "*", + "ext-zip": "*", "amphp/http-client": "^5.1", "api-platform/doctrine-orm": "^4.1", "api-platform/json-api": "^4.0.0", @@ -95,7 +96,7 @@ "twig/intl-extra": "^3.8", "twig/markdown-extra": "^3.8", "twig/string-extra": "^3.8", - "web-auth/webauthn-symfony-bundle": "^5.0.0" + "web-auth/webauthn-symfony-bundle": "^5.0.0", }, "require-dev": { "dama/doctrine-test-bundle": "^v8.0.0", From a78ca675b33d47d80ad9d236dae5aec04acdee1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 31 Jan 2026 23:36:09 +0100 Subject: [PATCH 171/235] Install dev dependencies when updating a debug mode instance Otherwise we run into an error message that web profiler does not exist --- src/Services/System/UpdateExecutor.php | 29 +++++++++++++++++++------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/Services/System/UpdateExecutor.php b/src/Services/System/UpdateExecutor.php index 837cde4c..a34e620b 100644 --- a/src/Services/System/UpdateExecutor.php +++ b/src/Services/System/UpdateExecutor.php @@ -53,7 +53,10 @@ class UpdateExecutor private readonly LoggerInterface $logger, private readonly Filesystem $filesystem, private readonly InstallationTypeDetector $installationTypeDetector, private readonly VersionManagerInterface $versionManager, - private readonly EntityManagerInterface $entityManager) + private readonly EntityManagerInterface $entityManager, + #[Autowire(param: 'app.debug_mode')] + private readonly bool $debugMode = false + ) { } @@ -361,13 +364,23 @@ class UpdateExecutor // Step 7: Install dependencies $stepStart = microtime(true); - $this->runCommand([ - 'composer', 'install', - '--no-dev', - '--optimize-autoloader', - '--no-interaction', - '--no-progress', - ], 'Install dependencies', 600); + if ($this->debugMode) { + $this->runCommand([ //Install with dev dependencies in debug mode + 'composer', + 'install', + '--no-interaction', + '--no-progress', + ], 'Install dependencies', 600); + } else { + $this->runCommand([ + 'composer', + 'install', + '--no-dev', + '--optimize-autoloader', + '--no-interaction', + '--no-progress', + ], 'Install dependencies', 600); + } $log('composer', 'Installed/updated dependencies', true, microtime(true) - $stepStart); // Step 8: Run database migrations From 0eba4738ed6473afd3d69d97e1be3b93445ab1d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 31 Jan 2026 23:38:38 +0100 Subject: [PATCH 172/235] Fixed composer.json formatting --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 36e510c9..8ce686c2 100644 --- a/composer.json +++ b/composer.json @@ -96,7 +96,7 @@ "twig/intl-extra": "^3.8", "twig/markdown-extra": "^3.8", "twig/string-extra": "^3.8", - "web-auth/webauthn-symfony-bundle": "^5.0.0", + "web-auth/webauthn-symfony-bundle": "^5.0.0" }, "require-dev": { "dama/doctrine-test-bundle": "^v8.0.0", From 8aadc0bb533286dccac0fe10565f03659c8da5b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 1 Feb 2026 13:13:26 +0100 Subject: [PATCH 173/235] Highlight the scanned part lot when scanning an barcode Fixed issue #968 --- assets/css/app/tables.css | 22 +++++++++++++++++++ src/Controller/PartController.php | 1 + .../BarcodeScanner/BarcodeRedirector.php | 2 +- templates/parts/info/_part_lots.html.twig | 4 ++-- 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/assets/css/app/tables.css b/assets/css/app/tables.css index b2d8882c..2fee7b71 100644 --- a/assets/css/app/tables.css +++ b/assets/css/app/tables.css @@ -125,3 +125,25 @@ Classes for Datatables export .export-helper{ display: none; } + +/********************************************************** +* Table row highlighting tools +***********************************************************/ + +.row-highlight { + box-shadow: 0 4px 15px rgba(0,0,0,0.20); /* Adds depth */ + position: relative; + z-index: 1; /* Ensures the shadow overlaps other rows */ + border-left: 5px solid var(--bs-primary); /* Adds a vertical accent bar */ +} + +@keyframes pulse-highlight { + 0% { outline: 2px solid transparent; } + 50% { outline: 2px solid var(--bs-primary); } + 100% { outline: 2px solid transparent; } +} + +.row-pulse { + animation: pulse-highlight 1s ease-in-out; + animation-iteration-count: 3; +} diff --git a/src/Controller/PartController.php b/src/Controller/PartController.php index 3a121ad2..ef2bae5f 100644 --- a/src/Controller/PartController.php +++ b/src/Controller/PartController.php @@ -135,6 +135,7 @@ final class PartController extends AbstractController 'description_params' => $this->partInfoSettings->extractParamsFromDescription ? $parameterExtractor->extractParameters($part->getDescription()) : [], 'comment_params' => $this->partInfoSettings->extractParamsFromNotes ? $parameterExtractor->extractParameters($part->getComment()) : [], 'withdraw_add_helper' => $withdrawAddHelper, + 'highlightLotId' => $request->query->getInt('highlightLot', 0), ] ); } diff --git a/src/Services/LabelSystem/BarcodeScanner/BarcodeRedirector.php b/src/Services/LabelSystem/BarcodeScanner/BarcodeRedirector.php index 2de7c035..d5ddc1de 100644 --- a/src/Services/LabelSystem/BarcodeScanner/BarcodeRedirector.php +++ b/src/Services/LabelSystem/BarcodeScanner/BarcodeRedirector.php @@ -92,7 +92,7 @@ final class BarcodeRedirector throw new EntityNotFoundException(); } - return $this->urlGenerator->generate('app_part_show', ['id' => $lot->getPart()->getID()]); + return $this->urlGenerator->generate('app_part_show', ['id' => $lot->getPart()->getID(), 'highlightLot' => $lot->getID()]); case LabelSupportedElement::STORELOCATION: return $this->urlGenerator->generate('part_list_store_location', ['id' => $barcodeScan->target_id]); diff --git a/templates/parts/info/_part_lots.html.twig b/templates/parts/info/_part_lots.html.twig index b0dcb455..1ef25ae4 100644 --- a/templates/parts/info/_part_lots.html.twig +++ b/templates/parts/info/_part_lots.html.twig @@ -19,7 +19,7 @@ {% for lot in part.partLots %} - + {{ lot.description }} {% if lot.storageLocation %} @@ -117,4 +117,4 @@ - \ No newline at end of file + From 14981200c82777f83c0980dca7e145647e89d200 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 1 Feb 2026 14:35:58 +0100 Subject: [PATCH 174/235] Started implementing a generic web provider which uses JSONLD data provided by a webshop page --- .../Providers/GenericWebProvider.php | 177 ++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 src/Services/InfoProviderSystem/Providers/GenericWebProvider.php diff --git a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php new file mode 100644 index 00000000..6044e338 --- /dev/null +++ b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php @@ -0,0 +1,177 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Services\InfoProviderSystem\Providers; + +use App\Services\InfoProviderSystem\DTOs\PartDetailDTO; +use App\Services\InfoProviderSystem\DTOs\PriceDTO; +use App\Services\InfoProviderSystem\DTOs\PurchaseInfoDTO; +use PhpOffice\PhpSpreadsheet\Calculation\Financial\Securities\Price; +use Symfony\Component\DomCrawler\Crawler; +use Symfony\Contracts\HttpClient\HttpClientInterface; + +class GenericWebProvider implements InfoProviderInterface +{ + + public const DISTRIBUTOR_NAME = 'Website'; + + public function __construct(private readonly HttpClientInterface $httpClient) + { + + } + + public function getProviderInfo(): array + { + return [ + 'name' => 'Generic Web URL', + 'description' => 'Tries to extract a part from a given product', + //'url' => 'https://example.com', + 'disabled_help' => 'Enable in settings to use this provider' + ]; + } + + public function getProviderKey(): string + { + return 'generic_web'; + } + + public function isActive(): bool + { + return true; + } + + public function searchByKeyword(string $keyword): array + { + return [ + $this->getDetails($keyword) + ]; + } + + private function extractShopName(string $url): string + { + $host = parse_url($url, PHP_URL_HOST); + if ($host === false || $host === null) { + return self::DISTRIBUTOR_NAME; + } + return $host; + } + + private function productJsonLdToPart(array $jsonLd, string $url): PartDetailDTO + { + $notes = $jsonLd['description'] ?? ""; + if (isset($jsonLd['disambiguatingDescription'])) { + if (!empty($notes)) { + $notes .= "\n\n"; + } + $notes .= $jsonLd['disambiguatingDescription']; + } + + $vendor_infos = null; + if (isset($jsonLd['offers'])) { + $vendor_infos = [new PurchaseInfoDTO( + distributor_name: $this->extractShopName($url), + order_number: $jsonLd['sku'] ?? $jsonLd['@id'] ?? $jsonLd['gtin'] ?? 'Unknown', + prices: [new PriceDTO(minimum_discount_amount: 1, price: (string) $jsonLd['offers']['price'], currency_iso_code: $jsonLd['offers']['priceCurrency'] ?? null)], + product_url: $jsonLd['url'] ?? $url, + )]; + } + + $image = null; + if (isset($jsonLd['image'])) { + if (is_array($jsonLd['image'])) { + $image = $jsonLd['image'][0] ?? null; + } elseif (is_string($jsonLd['image'])) { + $image = $jsonLd['image']; + } + } + + return new PartDetailDTO( + provider_key: $this->getProviderKey(), + provider_id: $url, + name: $jsonLd ['name'] ?? 'Unknown Name', + description: '', + category: isset($jsonLd['category']) && is_string($jsonLd['category']) ? $jsonLd['category'] : null, + manufacturer: $jsonLd['manufacturer']['name'] ?? $jsonLd['brand']['name'] ?? null, + mpn: $jsonLd['mpn'] ?? null, + preview_image_url: $image, + provider_url: $url, + notes: $notes, + vendor_infos: $vendor_infos, + mass: isset($jsonLd['weight']['value']) ? (float)$jsonLd['weight']['value'] : null, + ); + } + + /** + * Decodes JSON in a forgiving way, trying to fix common issues. + * @param string $json + * @return array + * @throws \JsonException + */ + private function json_decode_forgiving(string $json): array + { + //Sanitize common issues + $json = preg_replace("/[\r\n]+/", " ", $json); + return json_decode($json, true, 512, JSON_THROW_ON_ERROR); + } + + public function getDetails(string $id): PartDetailDTO + { + $url = $id; + + //Try to get the webpage content + $response = $this->httpClient->request('GET', $url); + $content = $response->getContent(); + + $dom = new Crawler($content); + + //Try to determine a canonical URL + $canonicalURL = $url; + if ($dom->filter('link[rel="canonical"]')->count() > 0) { + $canonicalURL = $dom->filter('link[rel="canonical"]')->attr('href'); + } else if ($dom->filter('meta[property="og:url"]')->count() > 0) { + $canonicalURL = $dom->filter('meta[property="og:url"]')->attr('content'); + } + + //Try to find json-ld data in the head + $jsonLdNodes = $dom->filter('head script[type="application/ld+json"]'); + foreach ($jsonLdNodes as $node) { + $jsonLd = $this->json_decode_forgiving($node->textContent); + if (isset($jsonLd['@type']) && $jsonLd['@type'] === 'Product') { //If we find a product use that data + return $this->productJsonLdToPart($jsonLd, $canonicalURL); + } + } + + + + return null; + } + + public function getCapabilities(): array + { + return [ + ProviderCapabilities::BASIC, + ProviderCapabilities::PICTURE, + ProviderCapabilities::PRICE + ]; + } +} From b89e878871eaa81ab0293995b9f1b32e7e4029b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 1 Feb 2026 16:39:19 +0100 Subject: [PATCH 175/235] Allow to rudimentary parse product pages, even if they do not contain JSON-LD data --- .../Providers/GenericWebProvider.php | 67 ++++++++++++++++--- 1 file changed, 59 insertions(+), 8 deletions(-) diff --git a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php index 6044e338..2704ad99 100644 --- a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php +++ b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php @@ -35,9 +35,18 @@ class GenericWebProvider implements InfoProviderInterface public const DISTRIBUTOR_NAME = 'Website'; - public function __construct(private readonly HttpClientInterface $httpClient) - { + private readonly HttpClientInterface $httpClient; + public function __construct(HttpClientInterface $httpClient) + { + $this->httpClient = $httpClient->withOptions( + [ + 'headers' => [ + 'User-Agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36', + ], + 'timeout' => 15, + ] + ); } public function getProviderInfo(): array @@ -76,7 +85,7 @@ class GenericWebProvider implements InfoProviderInterface return $host; } - private function productJsonLdToPart(array $jsonLd, string $url): PartDetailDTO + private function productJsonLdToPart(array $jsonLd, string $url, Crawler $dom): PartDetailDTO { $notes = $jsonLd['description'] ?? ""; if (isset($jsonLd['disambiguatingDescription'])) { @@ -109,7 +118,7 @@ class GenericWebProvider implements InfoProviderInterface provider_key: $this->getProviderKey(), provider_id: $url, name: $jsonLd ['name'] ?? 'Unknown Name', - description: '', + description: $this->getMetaContent($dom, 'og:description') ?? $this->getMetaContent($dom, 'description') ?? '', category: isset($jsonLd['category']) && is_string($jsonLd['category']) ? $jsonLd['category'] : null, manufacturer: $jsonLd['manufacturer']['name'] ?? $jsonLd['brand']['name'] ?? null, mpn: $jsonLd['mpn'] ?? null, @@ -134,6 +143,22 @@ class GenericWebProvider implements InfoProviderInterface return json_decode($json, true, 512, JSON_THROW_ON_ERROR); } + private function getMetaContent(Crawler $dom, string $name): ?string + { + $meta = $dom->filter('meta[property="'.$name.'"]'); + if ($meta->count() > 0) { + return $meta->attr('content'); + } + + //Try name attribute + $meta = $dom->filter('meta[name="'.$name.'"]'); + if ($meta->count() > 0) { + return $meta->attr('content'); + } + + return null; + } + public function getDetails(string $id): PartDetailDTO { $url = $id; @@ -153,17 +178,43 @@ class GenericWebProvider implements InfoProviderInterface } //Try to find json-ld data in the head - $jsonLdNodes = $dom->filter('head script[type="application/ld+json"]'); + $jsonLdNodes = $dom->filter('script[type="application/ld+json"]'); foreach ($jsonLdNodes as $node) { $jsonLd = $this->json_decode_forgiving($node->textContent); if (isset($jsonLd['@type']) && $jsonLd['@type'] === 'Product') { //If we find a product use that data - return $this->productJsonLdToPart($jsonLd, $canonicalURL); + return $this->productJsonLdToPart($jsonLd, $canonicalURL, $dom); } } - + //If no JSON-LD data is found, try to extract basic data from meta tags + $pageTitle = $dom->filter('title')->count() > 0 ? $dom->filter('title')->text() : 'Unknown'; - return null; + $prices = []; + if ($price = $this->getMetaContent($dom, 'product:price:amount')) { + $prices[] = new PriceDTO( + minimum_discount_amount: 1, + price: $price, + currency_iso_code: $this->getMetaContent($dom, 'product:price:currency'), + ); + } + + $vendor_infos = [new PurchaseInfoDTO( + distributor_name: $this->extractShopName($canonicalURL), + order_number: 'Unknown', + prices: $prices, + product_url: $canonicalURL, + )]; + + return new PartDetailDTO( + provider_key: $this->getProviderKey(), + provider_id: $canonicalURL, + name: $this->getMetaContent($dom, 'og:title') ?? $pageTitle, + description: $this->getMetaContent($dom, 'og:description') ?? $this->getMetaContent($dom, 'description') ?? '', + manufacturer: $this->getMetaContent($dom, 'product:brand'), + preview_image_url: $this->getMetaContent($dom, 'og:image'), + provider_url: $canonicalURL, + vendor_infos: $vendor_infos, + ); } public function getCapabilities(): array From 73dbe64a83ad8ae1562bb3d1b137bfabc302ecde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 1 Feb 2026 16:51:26 +0100 Subject: [PATCH 176/235] Allow to extract prices form an Amazon page --- .../Providers/GenericWebProvider.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php index 2704ad99..09d135b8 100644 --- a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php +++ b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php @@ -196,6 +196,16 @@ class GenericWebProvider implements InfoProviderInterface price: $price, currency_iso_code: $this->getMetaContent($dom, 'product:price:currency'), ); + } else { + //Amazon fallback + $amazonAmount = $dom->filter('input[type="hidden"][name*="amount"]'); + if ($amazonAmount->count() > 0) { + $prices[] = new PriceDTO( + minimum_discount_amount: 1, + price: $amazonAmount->first()->attr('value'), + currency_iso_code: $dom->filter('input[type="hidden"][name*="currencyCode"]')->first()->attr('value'), + ); + } } $vendor_infos = [new PurchaseInfoDTO( From 52be5481702516f124dce5e75923ad172737e501 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 1 Feb 2026 16:55:52 +0100 Subject: [PATCH 177/235] Add https:// if not existing --- .../InfoProviderSystem/Providers/GenericWebProvider.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php index 09d135b8..17457c75 100644 --- a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php +++ b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php @@ -161,6 +161,14 @@ class GenericWebProvider implements InfoProviderInterface public function getDetails(string $id): PartDetailDTO { + //Add scheme if missing + if (!preg_match('/^https?:\/\//', $id)) { + //Remove any leading slashes + $id = ltrim($id, '/'); + + $id = 'https://'.$id; + } + $url = $id; //Try to get the webpage content From d868225260316aa303749f1cd72173fe58f2c32c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 1 Feb 2026 17:06:38 +0100 Subject: [PATCH 178/235] Properly parse JSONLD product data if it is in an array with others --- .../Providers/GenericWebProvider.php | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php index 17457c75..8b976b50 100644 --- a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php +++ b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php @@ -97,10 +97,17 @@ class GenericWebProvider implements InfoProviderInterface $vendor_infos = null; if (isset($jsonLd['offers'])) { + + if (array_is_list($jsonLd['offers'])) { + $offer = $jsonLd['offers'][0]; + } else { + $offer = $jsonLd['offers']; + } + $vendor_infos = [new PurchaseInfoDTO( distributor_name: $this->extractShopName($url), - order_number: $jsonLd['sku'] ?? $jsonLd['@id'] ?? $jsonLd['gtin'] ?? 'Unknown', - prices: [new PriceDTO(minimum_discount_amount: 1, price: (string) $jsonLd['offers']['price'], currency_iso_code: $jsonLd['offers']['priceCurrency'] ?? null)], + order_number: (string) ($jsonLd['sku'] ?? $jsonLd['@id'] ?? $jsonLd['gtin'] ?? 'Unknown'), + prices: [new PriceDTO(minimum_discount_amount: 1, price: (string) $offer['price'], currency_iso_code: $offer['priceCurrency'] ?? null)], product_url: $jsonLd['url'] ?? $url, )]; } @@ -189,8 +196,14 @@ class GenericWebProvider implements InfoProviderInterface $jsonLdNodes = $dom->filter('script[type="application/ld+json"]'); foreach ($jsonLdNodes as $node) { $jsonLd = $this->json_decode_forgiving($node->textContent); - if (isset($jsonLd['@type']) && $jsonLd['@type'] === 'Product') { //If we find a product use that data - return $this->productJsonLdToPart($jsonLd, $canonicalURL, $dom); + //If the content of json-ld is an array, try to find a product inside + if (!array_is_list($jsonLd)) { + $jsonLd = [$jsonLd]; + } + foreach ($jsonLd as $item) { + if (isset($item['@type']) && $item['@type'] === 'Product') { + return $this->productJsonLdToPart($item, $canonicalURL, $dom); + } } } From 1213f82cdf73850d783f2ad56611341293ad8756 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 1 Feb 2026 17:11:41 +0100 Subject: [PATCH 179/235] Fix if canonical URL is relative --- .../Providers/GenericWebProvider.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php index 8b976b50..3c657989 100644 --- a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php +++ b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php @@ -104,6 +104,14 @@ class GenericWebProvider implements InfoProviderInterface $offer = $jsonLd['offers']; } + //Make $jsonLd['url'] absolute if it's relative + if (isset($jsonLd['url']) && parse_url($jsonLd['url'], PHP_URL_SCHEME) === null) { + $parsedUrl = parse_url($url); + $scheme = $parsedUrl['scheme'] ?? 'https'; + $host = $parsedUrl['host'] ?? ''; + $jsonLd['url'] = $scheme.'://'.$host.$jsonLd['url']; + } + $vendor_infos = [new PurchaseInfoDTO( distributor_name: $this->extractShopName($url), order_number: (string) ($jsonLd['sku'] ?? $jsonLd['@id'] ?? $jsonLd['gtin'] ?? 'Unknown'), @@ -192,6 +200,14 @@ class GenericWebProvider implements InfoProviderInterface $canonicalURL = $dom->filter('meta[property="og:url"]')->attr('content'); } + //If the canonical URL is relative, make it absolute + if (parse_url($canonicalURL, PHP_URL_SCHEME) === null) { + $parsedUrl = parse_url($url); + $scheme = $parsedUrl['scheme'] ?? 'https'; + $host = $parsedUrl['host'] ?? ''; + $canonicalURL = $scheme.'://'.$host.$canonicalURL; + } + //Try to find json-ld data in the head $jsonLdNodes = $dom->filter('script[type="application/ld+json"]'); foreach ($jsonLdNodes as $node) { From 7feba634b8f8195e583b851c669b19a35aa011e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 1 Feb 2026 17:20:13 +0100 Subject: [PATCH 180/235] Hadle if offers are nested and images are ImageObjects in JSON+LD --- .../Providers/GenericWebProvider.php | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php index 3c657989..a098c685 100644 --- a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php +++ b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php @@ -112,10 +112,30 @@ class GenericWebProvider implements InfoProviderInterface $jsonLd['url'] = $scheme.'://'.$host.$jsonLd['url']; } + $prices = []; + if (isset($offer['price'])) { + $prices[] = new PriceDTO( + minimum_discount_amount: 1, + price: (string) $offer['price'], + currency_iso_code: $offer['priceCurrency'] ?? null + ); + } else if (isset($offer['offers']) && array_is_list($offer['offers'])) { + //Some sites nest offers + foreach ($offer['offers'] as $subOffer) { + if (isset($subOffer['price'])) { + $prices[] = new PriceDTO( + minimum_discount_amount: 1, + price: (string) $subOffer['price'], + currency_iso_code: $subOffer['priceCurrency'] ?? null + ); + } + } + } + $vendor_infos = [new PurchaseInfoDTO( distributor_name: $this->extractShopName($url), order_number: (string) ($jsonLd['sku'] ?? $jsonLd['@id'] ?? $jsonLd['gtin'] ?? 'Unknown'), - prices: [new PriceDTO(minimum_discount_amount: 1, price: (string) $offer['price'], currency_iso_code: $offer['priceCurrency'] ?? null)], + prices: $prices, product_url: $jsonLd['url'] ?? $url, )]; } @@ -123,11 +143,17 @@ class GenericWebProvider implements InfoProviderInterface $image = null; if (isset($jsonLd['image'])) { if (is_array($jsonLd['image'])) { - $image = $jsonLd['image'][0] ?? null; + if (array_is_list($jsonLd['image'])) { + $image = $jsonLd['image'][0] ?? null; + } } elseif (is_string($jsonLd['image'])) { $image = $jsonLd['image']; } } + //If image is an object with @type ImageObject, extract the url + if (is_array($image) && isset($image['@type']) && $image['@type'] === 'ImageObject') { + $image = $image['contentUrl'] ?? $image['url'] ?? null; + } return new PartDetailDTO( provider_key: $this->getProviderKey(), From 071f6f85913ab4a5c496a06e46939ab603c0a77f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 1 Feb 2026 17:34:08 +0100 Subject: [PATCH 181/235] Return an empty array if no URL is provider to the Generic Web URL provider --- .../ProviderIDNotSupportedException.php | 32 +++++++++++++++++++ .../Providers/GenericWebProvider.php | 13 +++++++- 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 src/Exceptions/ProviderIDNotSupportedException.php diff --git a/src/Exceptions/ProviderIDNotSupportedException.php b/src/Exceptions/ProviderIDNotSupportedException.php new file mode 100644 index 00000000..429f43ea --- /dev/null +++ b/src/Exceptions/ProviderIDNotSupportedException.php @@ -0,0 +1,32 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Exceptions; + +class ProviderIDNotSupportedException extends \RuntimeException +{ + public function fromProvider(string $providerKey, string $id): self + { + return new self(sprintf('The given ID %s is not supported by the provider %s.', $id, $providerKey,)); + } +} diff --git a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php index a098c685..248b4f0e 100644 --- a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php +++ b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace App\Services\InfoProviderSystem\Providers; +use App\Exceptions\ProviderIDNotSupportedException; use App\Services\InfoProviderSystem\DTOs\PartDetailDTO; use App\Services\InfoProviderSystem\DTOs\PriceDTO; use App\Services\InfoProviderSystem\DTOs\PurchaseInfoDTO; @@ -71,9 +72,12 @@ class GenericWebProvider implements InfoProviderInterface public function searchByKeyword(string $keyword): array { + try { return [ $this->getDetails($keyword) - ]; + ]; } catch (ProviderIDNotSupportedException $e) { + return []; + } } private function extractShopName(string $url): string @@ -212,6 +216,13 @@ class GenericWebProvider implements InfoProviderInterface $url = $id; + //If this is not a valid URL with host, domain and path, throw an exception + if (filter_var($url, FILTER_VALIDATE_URL) === false || + parse_url($url, PHP_URL_HOST) === null || + parse_url($url, PHP_URL_PATH) === null) { + throw new ProviderIDNotSupportedException("The given ID is not a valid URL: ".$id); + } + //Try to get the webpage content $response = $this->httpClient->request('GET', $url); $content = $response->getContent(); From 722eb7ddab0e8a00d36845b68eaff82cde2f1f20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 1 Feb 2026 17:47:04 +0100 Subject: [PATCH 182/235] Added settings and docs for the generic Web info provider --- docs/usage/information_provider_system.md | 15 +++++++ .../Providers/GenericWebProvider.php | 10 +++-- .../GenericWebProviderSettings.php | 43 +++++++++++++++++++ .../InfoProviderSettings.php | 3 ++ .../settings/provider_settings.html.twig | 2 +- translations/messages.en.xlf | 18 ++++++++ 6 files changed, 86 insertions(+), 5 deletions(-) create mode 100644 src/Settings/InfoProviderSystem/GenericWebProviderSettings.php diff --git a/docs/usage/information_provider_system.md b/docs/usage/information_provider_system.md index da8ea32b..6cdb5183 100644 --- a/docs/usage/information_provider_system.md +++ b/docs/usage/information_provider_system.md @@ -96,6 +96,21 @@ The following providers are currently available and shipped with Part-DB: (All trademarks are property of their respective owners. Part-DB is not affiliated with any of the companies.) +### Generic Web URL Provider +The Generic Web URL Provider can extract part information from any webpage that contains structured data in the form of +[Schema.org](https://schema.org/) format. Many e-commerce websites use this format to provide detailed product information +for search engines and other services. Therefore it allows Part-DB to retrieve rudimentary part information (like name, image and price) +from a wide range of websites without the need for a dedicated API integration. +To use the Generic Web URL Provider, simply enable it in the information provider settings. No additional configuration +is required. Afterwards you can enter any product URL in the search field, and Part-DB will attempt to extract the relevant part information +from the webpage. + +Please note that if this provider is enabled, Part-DB will make HTTP requests to external websites to fetch product data, which +may have privacy and security implications. + +Following env configuration options are available: +* `PROVIDER_GENERIC_WEB_ENABLED`: Set this to `1` to enable the Generic Web URL Provider (optional, default: `0`) + ### Octopart The Octopart provider uses the [Octopart / Nexar API](https://nexar.com/api) to search for parts and get information. diff --git a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php index 248b4f0e..d05aac8f 100644 --- a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php +++ b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php @@ -27,6 +27,7 @@ use App\Exceptions\ProviderIDNotSupportedException; use App\Services\InfoProviderSystem\DTOs\PartDetailDTO; use App\Services\InfoProviderSystem\DTOs\PriceDTO; use App\Services\InfoProviderSystem\DTOs\PurchaseInfoDTO; +use App\Settings\InfoProviderSystem\GenericWebProviderSettings; use PhpOffice\PhpSpreadsheet\Calculation\Financial\Securities\Price; use Symfony\Component\DomCrawler\Crawler; use Symfony\Contracts\HttpClient\HttpClientInterface; @@ -38,7 +39,7 @@ class GenericWebProvider implements InfoProviderInterface private readonly HttpClientInterface $httpClient; - public function __construct(HttpClientInterface $httpClient) + public function __construct(HttpClientInterface $httpClient, private readonly GenericWebProviderSettings $settings) { $this->httpClient = $httpClient->withOptions( [ @@ -54,9 +55,10 @@ class GenericWebProvider implements InfoProviderInterface { return [ 'name' => 'Generic Web URL', - 'description' => 'Tries to extract a part from a given product', + 'description' => 'Tries to extract a part from a given product webpage URL using common metadata standards like JSON-LD and OpenGraph.', //'url' => 'https://example.com', - 'disabled_help' => 'Enable in settings to use this provider' + 'disabled_help' => 'Enable in settings to use this provider', + 'settings_class' => GenericWebProviderSettings::class, ]; } @@ -67,7 +69,7 @@ class GenericWebProvider implements InfoProviderInterface public function isActive(): bool { - return true; + return $this->settings->enabled; } public function searchByKeyword(string $keyword): array diff --git a/src/Settings/InfoProviderSystem/GenericWebProviderSettings.php b/src/Settings/InfoProviderSystem/GenericWebProviderSettings.php new file mode 100644 index 00000000..064d8a1c --- /dev/null +++ b/src/Settings/InfoProviderSystem/GenericWebProviderSettings.php @@ -0,0 +1,43 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Settings\InfoProviderSystem; + +use App\Settings\SettingsIcon; +use Jbtronics\SettingsBundle\Metadata\EnvVarMode; +use Jbtronics\SettingsBundle\Settings\Settings; +use Jbtronics\SettingsBundle\Settings\SettingsParameter; +use Jbtronics\SettingsBundle\Settings\SettingsTrait; +use Symfony\Component\Translation\TranslatableMessage as TM; + +#[Settings(label: new TM("settings.ips.generic_web_provider"), description: new TM("settings.ips.generic_web_provider.description"))] +#[SettingsIcon("fa-plug")] +class GenericWebProviderSettings +{ + use SettingsTrait; + + #[SettingsParameter(label: new TM("settings.ips.lcsc.enabled"), description: new TM("settings.ips.generic_web_provider.enabled.help"), + envVar: "bool:PROVIDER_GENERIC_WEB_ENABLED", envVarMode: EnvVarMode::OVERWRITE + )] + public bool $enabled = false; +} diff --git a/src/Settings/InfoProviderSystem/InfoProviderSettings.php b/src/Settings/InfoProviderSystem/InfoProviderSettings.php index fb31bdb9..3e78233f 100644 --- a/src/Settings/InfoProviderSystem/InfoProviderSettings.php +++ b/src/Settings/InfoProviderSystem/InfoProviderSettings.php @@ -37,6 +37,9 @@ class InfoProviderSettings #[EmbeddedSettings] public ?InfoProviderGeneralSettings $general = null; + #[EmbeddedSettings] + public ?GenericWebProviderSettings $genericWebProvider = null; + #[EmbeddedSettings] public ?DigikeySettings $digikey = null; diff --git a/templates/info_providers/settings/provider_settings.html.twig b/templates/info_providers/settings/provider_settings.html.twig index 1876c2eb..86e5bc9b 100644 --- a/templates/info_providers/settings/provider_settings.html.twig +++ b/templates/info_providers/settings/provider_settings.html.twig @@ -10,7 +10,7 @@ {% block card_content %}

    - {% if info_provider_info.url %} + {% if info_provider_info.url is defined %} {{ info_provider_info.name }} {% else %} {{ info_provider_info.name }} diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index b2bd908e..706d629a 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -14316,5 +14316,23 @@ Buerklin-API Authentication server: Only includes attachments in the selected languages in the results. + + + settings.ips.generic_web_provider + Generic Web URL Provider + + + + + settings.ips.generic_web_provider.description + This info provider allows to retrieve basic part information from many shop page URLs. + + + + + settings.ips.generic_web_provider.enabled.help + When the provider is enabled, users can make requests to arbitary websites on behalf of the Part-DB server. Only enable this, if you are aware of the potential consequences. + + From 909cab004431be9c89a76c888bb23614b70f9507 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 1 Feb 2026 18:18:58 +0100 Subject: [PATCH 183/235] Added an web page to quickly add a new part from a web URL --- src/Controller/InfoProviderController.php | 56 +++++++++++++++++++ src/Services/Trees/ToolsTreeBuilder.php | 10 ++++ .../GenericWebProviderSettings.php | 2 +- templates/_navbar.html.twig | 16 ++++-- .../from_url/from_url.html.twig | 21 +++++++ translations/messages.en.xlf | 24 ++++++++ 6 files changed, 124 insertions(+), 5 deletions(-) create mode 100644 templates/info_providers/from_url/from_url.html.twig diff --git a/src/Controller/InfoProviderController.php b/src/Controller/InfoProviderController.php index e5a5d87b..deec8a57 100644 --- a/src/Controller/InfoProviderController.php +++ b/src/Controller/InfoProviderController.php @@ -30,6 +30,7 @@ use App\Form\InfoProviderSystem\PartSearchType; use App\Services\InfoProviderSystem\ExistingPartFinder; use App\Services\InfoProviderSystem\PartInfoRetriever; use App\Services\InfoProviderSystem\ProviderRegistry; +use App\Services\InfoProviderSystem\Providers\GenericWebProvider; use App\Settings\AppSettings; use App\Settings\InfoProviderSystem\InfoProviderGeneralSettings; use Doctrine\ORM\EntityManagerInterface; @@ -39,6 +40,7 @@ use Psr\Log\LoggerInterface; use Symfony\Bridge\Doctrine\Attribute\MapEntity; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Form\Extension\Core\Type\SubmitType; +use Symfony\Component\Form\Extension\Core\Type\UrlType; use Symfony\Component\HttpClient\Exception\ClientException; use Symfony\Component\HttpClient\Exception\TransportException; use Symfony\Component\HttpFoundation\Request; @@ -208,4 +210,58 @@ class InfoProviderController extends AbstractController 'update_target' => $update_target ]); } + + #[Route('/from_url', name: 'info_providers_from_url')] + public function fromURL(Request $request, GenericWebProvider $provider): Response + { + $this->denyAccessUnlessGranted('@info_providers.create_parts'); + + if (!$provider->isActive()) { + $this->addFlash('error', "Generic Web Provider is not active. Please enable it in the provider settings."); + return $this->redirectToRoute('info_providers_list'); + } + + $formBuilder = $this->createFormBuilder(); + $formBuilder->add('url', UrlType::class, [ + 'label' => 'info_providers.from_url.url.label', + 'required' => true, + ]); + $formBuilder->add('submit', SubmitType::class, [ + 'label' => 'info_providers.search.submit', + ]); + + $form = $formBuilder->getForm(); + $form->handleRequest($request); + + $partDetail = null; + if ($form->isSubmitted() && $form->isValid()) { + //Try to retrieve the part detail from the given URL + $url = $form->get('url')->getData(); + try { + $searchResult = $this->infoRetriever->searchByKeyword( + keyword: $url, + providers: [$provider] + ); + + if (count($searchResult) === 0) { + $this->addFlash('warning', t('info_providers.from_url.no_part_found')); + } else { + $searchResult = $searchResult[0]; + //Redirect to the part creation page with the found part detail + return $this->redirectToRoute('info_providers_create_part', [ + 'providerKey' => $searchResult->provider_key, + 'providerId' => $searchResult->provider_id, + ]); + } + } catch (ExceptionInterface $e) { + $this->addFlash('error', t('info_providers.search.error.general_exception', ['%type%' => (new \ReflectionClass($e))->getShortName()])); + } + } + + return $this->render('info_providers/from_url/from_url.html.twig', [ + 'form' => $form, + 'partDetail' => $partDetail, + ]); + + } } diff --git a/src/Services/Trees/ToolsTreeBuilder.php b/src/Services/Trees/ToolsTreeBuilder.php index 37a09b09..c8afac12 100644 --- a/src/Services/Trees/ToolsTreeBuilder.php +++ b/src/Services/Trees/ToolsTreeBuilder.php @@ -39,6 +39,8 @@ use App\Entity\UserSystem\User; use App\Helpers\Trees\TreeViewNode; use App\Services\Cache\UserCacheKeyGenerator; use App\Services\ElementTypeNameGenerator; +use App\Services\InfoProviderSystem\Providers\GenericWebProvider; +use App\Settings\InfoProviderSystem\GenericWebProviderSettings; use Symfony\Bundle\SecurityBundle\Security; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use Symfony\Contracts\Cache\ItemInterface; @@ -58,6 +60,7 @@ class ToolsTreeBuilder protected UserCacheKeyGenerator $keyGenerator, protected Security $security, private readonly ElementTypeNameGenerator $elementTypeNameGenerator, + private readonly GenericWebProviderSettings $genericWebProviderSettings ) { } @@ -147,6 +150,13 @@ class ToolsTreeBuilder $this->urlGenerator->generate('info_providers_search') ))->setIcon('fa-treeview fa-fw fa-solid fa-cloud-arrow-down'); + if ($this->genericWebProviderSettings->enabled) { + $nodes[] = (new TreeViewNode( + $this->translator->trans('info_providers.from_url.title'), + $this->urlGenerator->generate('info_providers_from_url') + ))->setIcon('fa-treeview fa-fw fa-solid fa-book-atlas'); + } + $nodes[] = (new TreeViewNode( $this->translator->trans('info_providers.bulk_import.manage_jobs'), $this->urlGenerator->generate('bulk_info_provider_manage') diff --git a/src/Settings/InfoProviderSystem/GenericWebProviderSettings.php b/src/Settings/InfoProviderSystem/GenericWebProviderSettings.php index 064d8a1c..07972141 100644 --- a/src/Settings/InfoProviderSystem/GenericWebProviderSettings.php +++ b/src/Settings/InfoProviderSystem/GenericWebProviderSettings.php @@ -30,7 +30,7 @@ use Jbtronics\SettingsBundle\Settings\SettingsParameter; use Jbtronics\SettingsBundle\Settings\SettingsTrait; use Symfony\Component\Translation\TranslatableMessage as TM; -#[Settings(label: new TM("settings.ips.generic_web_provider"), description: new TM("settings.ips.generic_web_provider.description"))] +#[Settings(name: "generic_web_provider", label: new TM("settings.ips.generic_web_provider"), description: new TM("settings.ips.generic_web_provider.description"))] #[SettingsIcon("fa-plug")] class GenericWebProviderSettings { diff --git a/templates/_navbar.html.twig b/templates/_navbar.html.twig index 446ccdab..c4dfbe0f 100644 --- a/templates/_navbar.html.twig +++ b/templates/_navbar.html.twig @@ -10,9 +10,9 @@ - {% if is_granted("@tools.label_scanner") %} + {% if is_granted("@tools.label_scanner") %} - + {% endif %}

    @@ -52,6 +52,14 @@ {% trans %}info_providers.search.title{% endtrans %} + {% if settings_instance('generic_web_provider').enabled %} +
  • + + + {% trans %}info_providers.from_url.title{% endtrans %} + +
  • + {% endif %} {% endif %} {% if is_granted('@parts.import') %} @@ -69,7 +77,7 @@ {% if is_granted('@parts.read') %} {{ search.search_form("navbar") }} - {# {% include "_navbar_search.html.twig" %} #} + {# {% include "_navbar_search.html.twig" %} #} {% endif %} @@ -145,4 +153,4 @@ - \ No newline at end of file + diff --git a/templates/info_providers/from_url/from_url.html.twig b/templates/info_providers/from_url/from_url.html.twig new file mode 100644 index 00000000..5aad1a03 --- /dev/null +++ b/templates/info_providers/from_url/from_url.html.twig @@ -0,0 +1,21 @@ +{% extends "main_card.html.twig" %} + +{% import "info_providers/providers.macro.html.twig" as providers_macro %} +{% import "helper.twig" as helper %} + +{% block title %} + {% trans %}info_providers.from_url.title{% endtrans %} +{% endblock %} + +{% block card_title %} + {% trans %}info_providers.from_url.title{% endtrans %} +{% endblock %} + +{% block card_content %} +

    {% trans %}info_providers.from_url.help{% endtrans %}

    + + {{ form_start(form) }} + {{ form_row(form.url) }} + {{ form_row(form.submit) }} + {{ form_end(form) }} +{% endblock %} diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 706d629a..87f6c2f6 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -14334,5 +14334,29 @@ Buerklin-API Authentication server: When the provider is enabled, users can make requests to arbitary websites on behalf of the Part-DB server. Only enable this, if you are aware of the potential consequences.
    + + + info_providers.from_url.title + Create [part] from URL + + + + + info_providers.from_url.url.label + URL + + + + + info_providers.from_url.no_part_found + No part found from the given URL. Are you sure this is a valid shop URL? + + + + + info_providers.from_url.help + Creates a part based on the given URL. It tries to delegate it to an existing info provider if possible, otherwise it will be tried to extract rudimentary data from the webpage's metadata. + + From 47c7ee9f07131ecd2b6be11eca8f6e42abc974f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 1 Feb 2026 18:24:46 +0100 Subject: [PATCH 184/235] Allow to extract parameters form additionalProperty JSONLD data --- .../Providers/GenericWebProvider.php | 32 ++++++++++++++++--- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php index d05aac8f..4b73ad6e 100644 --- a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php +++ b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace App\Services\InfoProviderSystem\Providers; use App\Exceptions\ProviderIDNotSupportedException; +use App\Services\InfoProviderSystem\DTOs\ParameterDTO; use App\Services\InfoProviderSystem\DTOs\PartDetailDTO; use App\Services\InfoProviderSystem\DTOs\PriceDTO; use App\Services\InfoProviderSystem\DTOs\PurchaseInfoDTO; @@ -75,9 +76,9 @@ class GenericWebProvider implements InfoProviderInterface public function searchByKeyword(string $keyword): array { try { - return [ - $this->getDetails($keyword) - ]; } catch (ProviderIDNotSupportedException $e) { + return [ + $this->getDetails($keyword) + ]; } catch (ProviderIDNotSupportedException $e) { return []; } } @@ -143,7 +144,7 @@ class GenericWebProvider implements InfoProviderInterface order_number: (string) ($jsonLd['sku'] ?? $jsonLd['@id'] ?? $jsonLd['gtin'] ?? 'Unknown'), prices: $prices, product_url: $jsonLd['url'] ?? $url, - )]; + )]; } $image = null; @@ -161,6 +162,26 @@ class GenericWebProvider implements InfoProviderInterface $image = $image['contentUrl'] ?? $image['url'] ?? null; } + //Try to extract parameters from additionalProperty + $parameters = []; + if (isset($jsonLd['additionalProperty']) && array_is_list($jsonLd['additionalProperty'])) { + foreach ($jsonLd['additionalProperty'] as $property) { //TODO: Handle minValue and maxValue + if (isset ($property['unitText'])) { + $parameters[] = ParameterDTO::parseValueField( + name: $property['name'] ?? 'Unknown', + value: $property['value'] ?? '', + unit: $property['unitText'] + ); + } else { + $parameters[] = ParameterDTO::parseValueIncludingUnit( + name: $property['name'] ?? 'Unknown', + value: $property['value'] ?? '' + ); + } + } + } + + return new PartDetailDTO( provider_key: $this->getProviderKey(), provider_id: $url, @@ -169,9 +190,10 @@ class GenericWebProvider implements InfoProviderInterface category: isset($jsonLd['category']) && is_string($jsonLd['category']) ? $jsonLd['category'] : null, manufacturer: $jsonLd['manufacturer']['name'] ?? $jsonLd['brand']['name'] ?? null, mpn: $jsonLd['mpn'] ?? null, - preview_image_url: $image, + preview_image_url: $image, provider_url: $url, notes: $notes, + parameters: $parameters, vendor_infos: $vendor_infos, mass: isset($jsonLd['weight']['value']) ? (float)$jsonLd['weight']['value'] : null, ); From 10c192edd1697929e50bb52cfb83a50263c341dd Mon Sep 17 00:00:00 2001 From: Sebastian Almberg <83243306+Sebbeben@users.noreply.github.com> Date: Sun, 1 Feb 2026 19:17:22 +0100 Subject: [PATCH 185/235] Address PR feedback: add yarn build, env vars, and BackupManager Changes based on maintainer feedback from PR #1217: 1. Add yarn install/build steps to update process - Added yarn availability check in validateUpdatePreconditions - Added yarn install and yarn build steps after composer install - Added yarn rebuild to rollback process - Updated total steps count from 12 to 14 2. Add environment variables to disable web features - DISABLE_WEB_UPDATES: Completely disable web-based updates - DISABLE_BACKUP_RESTORE: Disable backup restore from web UI - Added checks in controller and template 3. Extract BackupManager service - New service handles backup creation, listing, details, and restoration - UpdateExecutor now delegates backup operations to BackupManager - Cleaner separation of concerns for future reuse 4. Merge upstream/master and resolve translation conflicts - Added Conrad info provider and generic web provider translations - Kept Update Manager translations --- .env | 11 + src/Controller/UpdateManagerController.php | 36 +- src/Services/System/BackupManager.php | 487 ++++++++++++++++++ src/Services/System/UpdateExecutor.php | 371 +++---------- .../admin/update_manager/index.html.twig | 23 +- translations/messages.en.xlf | 18 + 6 files changed, 653 insertions(+), 293 deletions(-) create mode 100644 src/Services/System/BackupManager.php diff --git a/.env b/.env index 9a6ce846..3196241b 100644 --- a/.env +++ b/.env @@ -59,6 +59,17 @@ ERROR_PAGE_ADMIN_EMAIL='' # If this is set to true, solutions to common problems are shown on error pages. Disable this, if you do not want your users to see them... ERROR_PAGE_SHOW_HELP=1 +################################################################################### +# Update Manager settings +################################################################################### + +# Set this to 1 to completely disable web-based updates, regardless of user permissions. +# Use this if you prefer to manage updates through your own deployment process. +DISABLE_WEB_UPDATES=0 + +# Set this to 1 to disable the backup restore feature from the web UI. +# Restoring backups is a destructive operation that could cause data loss. +DISABLE_BACKUP_RESTORE=0 ################################################################################### # SAML Single sign on-settings diff --git a/src/Controller/UpdateManagerController.php b/src/Controller/UpdateManagerController.php index 8455516a..b247cb38 100644 --- a/src/Controller/UpdateManagerController.php +++ b/src/Controller/UpdateManagerController.php @@ -27,9 +27,11 @@ use App\Services\System\UpdateChecker; use App\Services\System\UpdateExecutor; use Shivas\VersioningBundle\Service\VersionManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\DependencyInjection\Attribute\Autowire; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; use Symfony\Component\Routing\Attribute\Route; /** @@ -41,11 +43,35 @@ use Symfony\Component\Routing\Attribute\Route; #[Route('/admin/update-manager')] class UpdateManagerController extends AbstractController { - public function __construct(private readonly UpdateChecker $updateChecker, + public function __construct( + private readonly UpdateChecker $updateChecker, private readonly UpdateExecutor $updateExecutor, - private readonly VersionManagerInterface $versionManager) - { + private readonly VersionManagerInterface $versionManager, + #[Autowire(env: 'bool:DISABLE_WEB_UPDATES')] + private readonly bool $webUpdatesDisabled = false, + #[Autowire(env: 'bool:DISABLE_BACKUP_RESTORE')] + private readonly bool $backupRestoreDisabled = false, + ) { + } + /** + * Check if web updates are disabled and throw exception if so. + */ + private function denyIfWebUpdatesDisabled(): void + { + if ($this->webUpdatesDisabled) { + throw new AccessDeniedHttpException('Web-based updates are disabled by server configuration. Please use the CLI command instead.'); + } + } + + /** + * Check if backup restore is disabled and throw exception if so. + */ + private function denyIfBackupRestoreDisabled(): void + { + if ($this->backupRestoreDisabled) { + throw new AccessDeniedHttpException('Backup restore is disabled by server configuration.'); + } } /** @@ -71,6 +97,8 @@ class UpdateManagerController extends AbstractController 'maintenance_info' => $this->updateExecutor->getMaintenanceInfo(), 'update_logs' => $this->updateExecutor->getUpdateLogs(), 'backups' => $this->updateExecutor->getBackups(), + 'web_updates_disabled' => $this->webUpdatesDisabled, + 'backup_restore_disabled' => $this->backupRestoreDisabled, ]); } @@ -177,6 +205,7 @@ class UpdateManagerController extends AbstractController public function startUpdate(Request $request): Response { $this->denyAccessUnlessGranted('@system.manage_updates'); + $this->denyIfWebUpdatesDisabled(); // Validate CSRF token if (!$this->isCsrfTokenValid('update_manager_start', $request->request->get('_token'))) { @@ -290,6 +319,7 @@ class UpdateManagerController extends AbstractController public function restore(Request $request): Response { $this->denyAccessUnlessGranted('@system.manage_updates'); + $this->denyIfBackupRestoreDisabled(); // Validate CSRF token if (!$this->isCsrfTokenValid('update_manager_restore', $request->request->get('_token'))) { diff --git a/src/Services/System/BackupManager.php b/src/Services/System/BackupManager.php new file mode 100644 index 00000000..b646e433 --- /dev/null +++ b/src/Services/System/BackupManager.php @@ -0,0 +1,487 @@ +. + */ + +declare(strict_types=1); + +namespace App\Services\System; + +use Doctrine\ORM\EntityManagerInterface; +use Psr\Log\LoggerInterface; +use Shivas\VersioningBundle\Service\VersionManagerInterface; +use Symfony\Component\DependencyInjection\Attribute\Autowire; +use Symfony\Component\Filesystem\Filesystem; +use Symfony\Component\Process\Process; + +/** + * Manages Part-DB backups: creation, restoration, and listing. + * + * This service handles all backup-related operations and can be used + * by the Update Manager, CLI commands, or other services. + */ +class BackupManager +{ + private const BACKUP_DIR = 'var/backups'; + + public function __construct( + #[Autowire(param: 'kernel.project_dir')] + private readonly string $projectDir, + private readonly LoggerInterface $logger, + private readonly Filesystem $filesystem, + private readonly VersionManagerInterface $versionManager, + private readonly EntityManagerInterface $entityManager, + ) { + } + + /** + * Get the backup directory path. + */ + public function getBackupDir(): string + { + return $this->projectDir . '/' . self::BACKUP_DIR; + } + + /** + * Get the current version string for use in filenames. + */ + private function getCurrentVersionString(): string + { + return $this->versionManager->getVersion()->toString(); + } + + /** + * Create a backup before updating. + * + * @param string|null $targetVersion Optional target version for naming + * @param string|null $prefix Optional prefix for the backup filename + * @return string The path to the created backup file + */ + public function createBackup(?string $targetVersion = null, ?string $prefix = 'backup'): string + { + $backupDir = $this->getBackupDir(); + + if (!is_dir($backupDir)) { + $this->filesystem->mkdir($backupDir, 0755); + } + + $currentVersion = $this->getCurrentVersionString(); + + // Build filename + if ($targetVersion) { + $targetVersionClean = preg_replace('/[^a-zA-Z0-9\.]/', '', $targetVersion); + $backupFile = $backupDir . '/pre-update-v' . $currentVersion . '-to-' . $targetVersionClean . '-' . date('Y-m-d-His') . '.zip'; + } else { + $backupFile = $backupDir . '/' . $prefix . '-v' . $currentVersion . '-' . date('Y-m-d-His') . '.zip'; + } + + $this->runCommand([ + 'php', 'bin/console', 'partdb:backup', + '--full', + '--overwrite', + $backupFile, + ], 'Create backup', 600); + + $this->logger->info('Created backup', ['file' => $backupFile]); + + return $backupFile; + } + + /** + * Get list of backups. + * + * @return array + */ + public function getBackups(): array + { + $backupDir = $this->getBackupDir(); + + if (!is_dir($backupDir)) { + return []; + } + + $backups = []; + foreach (glob($backupDir . '/*.zip') as $backupFile) { + $backups[] = [ + 'file' => basename($backupFile), + 'path' => $backupFile, + 'date' => filemtime($backupFile), + 'size' => filesize($backupFile), + ]; + } + + // Sort by date descending + usort($backups, fn($a, $b) => $b['date'] <=> $a['date']); + + return $backups; + } + + /** + * Get details about a specific backup file. + * + * @param string $filename The backup filename + * @return array|null Backup details or null if not found + */ + public function getBackupDetails(string $filename): ?array + { + $backupDir = $this->getBackupDir(); + $backupPath = $backupDir . '/' . basename($filename); + + if (!file_exists($backupPath) || !str_ends_with($backupPath, '.zip')) { + return null; + } + + // Parse version info from filename: pre-update-v2.5.1-to-v2.5.0-2024-01-30-185400.zip + $info = [ + 'file' => basename($backupPath), + 'path' => $backupPath, + 'date' => filemtime($backupPath), + 'size' => filesize($backupPath), + 'from_version' => null, + 'to_version' => null, + ]; + + if (preg_match('/pre-update-v([\d.]+)-to-v?([\d.]+)-/', $filename, $matches)) { + $info['from_version'] = $matches[1]; + $info['to_version'] = $matches[2]; + } + + // Check what the backup contains by reading the ZIP + try { + $zip = new \ZipArchive(); + if ($zip->open($backupPath) === true) { + $info['contains_database'] = $zip->locateName('database.sql') !== false || $zip->locateName('var/app.db') !== false; + $info['contains_config'] = $zip->locateName('.env.local') !== false || $zip->locateName('config/parameters.yaml') !== false; + $info['contains_attachments'] = $zip->locateName('public/media/') !== false || $zip->locateName('uploads/') !== false; + $zip->close(); + } + } catch (\Exception $e) { + $this->logger->warning('Could not read backup ZIP contents', ['error' => $e->getMessage()]); + } + + return $info; + } + + /** + * Delete a backup file. + * + * @param string $filename The backup filename to delete + * @return bool True if deleted successfully + */ + public function deleteBackup(string $filename): bool + { + $backupDir = $this->getBackupDir(); + $backupPath = $backupDir . '/' . basename($filename); + + if (!file_exists($backupPath) || !str_ends_with($backupPath, '.zip')) { + return false; + } + + try { + $this->filesystem->remove($backupPath); + $this->logger->info('Deleted backup', ['file' => $filename]); + return true; + } catch (\Exception $e) { + $this->logger->error('Failed to delete backup', ['file' => $filename, 'error' => $e->getMessage()]); + return false; + } + } + + /** + * Restore from a backup file. + * + * @param string $filename The backup filename to restore + * @param bool $restoreDatabase Whether to restore the database + * @param bool $restoreConfig Whether to restore config files + * @param bool $restoreAttachments Whether to restore attachments + * @param callable|null $onProgress Callback for progress updates + * @return array{success: bool, steps: array, error: ?string} + */ + public function restoreBackup( + string $filename, + bool $restoreDatabase = true, + bool $restoreConfig = false, + bool $restoreAttachments = false, + ?callable $onProgress = null + ): array { + $steps = []; + $startTime = microtime(true); + + $log = function (string $step, string $message, bool $success, ?float $duration = null) use (&$steps, $onProgress): void { + $entry = [ + 'step' => $step, + 'message' => $message, + 'success' => $success, + 'timestamp' => (new \DateTime())->format('c'), + 'duration' => $duration, + ]; + $steps[] = $entry; + $this->logger->info('[Restore] ' . $step . ': ' . $message, ['success' => $success]); + + if ($onProgress) { + $onProgress($entry); + } + }; + + try { + // Validate backup file + $backupDir = $this->getBackupDir(); + $backupPath = $backupDir . '/' . basename($filename); + + if (!file_exists($backupPath)) { + throw new \RuntimeException('Backup file not found: ' . $filename); + } + + $stepStart = microtime(true); + + // Step 1: Extract backup to temp directory + $tempDir = sys_get_temp_dir() . '/partdb_restore_' . uniqid(); + $this->filesystem->mkdir($tempDir); + + $zip = new \ZipArchive(); + if ($zip->open($backupPath) !== true) { + throw new \RuntimeException('Could not open backup ZIP file'); + } + $zip->extractTo($tempDir); + $zip->close(); + $log('extract', 'Extracted backup to temporary directory', true, microtime(true) - $stepStart); + + // Step 2: Restore database if requested and present + if ($restoreDatabase) { + $stepStart = microtime(true); + $this->restoreDatabaseFromBackup($tempDir); + $log('database', 'Restored database', true, microtime(true) - $stepStart); + } + + // Step 3: Restore config files if requested and present + if ($restoreConfig) { + $stepStart = microtime(true); + $this->restoreConfigFromBackup($tempDir); + $log('config', 'Restored configuration files', true, microtime(true) - $stepStart); + } + + // Step 4: Restore attachments if requested and present + if ($restoreAttachments) { + $stepStart = microtime(true); + $this->restoreAttachmentsFromBackup($tempDir); + $log('attachments', 'Restored attachments', true, microtime(true) - $stepStart); + } + + // Step 5: Clean up temp directory + $stepStart = microtime(true); + $this->filesystem->remove($tempDir); + $log('cleanup', 'Cleaned up temporary files', true, microtime(true) - $stepStart); + + $totalDuration = microtime(true) - $startTime; + $log('complete', sprintf('Restore completed successfully in %.1f seconds', $totalDuration), true); + + return [ + 'success' => true, + 'steps' => $steps, + 'error' => null, + ]; + + } catch (\Throwable $e) { + $this->logger->error('Restore failed: ' . $e->getMessage(), [ + 'exception' => $e, + 'file' => $filename, + ]); + + // Try to clean up + try { + if (isset($tempDir) && is_dir($tempDir)) { + $this->filesystem->remove($tempDir); + } + } catch (\Throwable $cleanupError) { + $this->logger->error('Cleanup after failed restore also failed', ['error' => $cleanupError->getMessage()]); + } + + return [ + 'success' => false, + 'steps' => $steps, + 'error' => $e->getMessage(), + ]; + } + } + + /** + * Restore database from backup. + */ + private function restoreDatabaseFromBackup(string $tempDir): void + { + // Check for SQL dump (MySQL/PostgreSQL) + $sqlFile = $tempDir . '/database.sql'; + if (file_exists($sqlFile)) { + // Import SQL using mysql/psql command directly + // First, get database connection params from Doctrine + $connection = $this->entityManager->getConnection(); + $params = $connection->getParams(); + $platform = $connection->getDatabasePlatform(); + + if ($platform instanceof \Doctrine\DBAL\Platforms\AbstractMySQLPlatform) { + // Use mysql command to import - need to use shell to handle input redirection + $mysqlCmd = 'mysql'; + if (isset($params['host'])) { + $mysqlCmd .= ' -h ' . escapeshellarg($params['host']); + } + if (isset($params['port'])) { + $mysqlCmd .= ' -P ' . escapeshellarg((string)$params['port']); + } + if (isset($params['user'])) { + $mysqlCmd .= ' -u ' . escapeshellarg($params['user']); + } + if (isset($params['password']) && $params['password']) { + $mysqlCmd .= ' -p' . escapeshellarg($params['password']); + } + if (isset($params['dbname'])) { + $mysqlCmd .= ' ' . escapeshellarg($params['dbname']); + } + $mysqlCmd .= ' < ' . escapeshellarg($sqlFile); + + // Execute using shell + $process = Process::fromShellCommandline($mysqlCmd, $this->projectDir, null, null, 300); + $process->run(); + + if (!$process->isSuccessful()) { + throw new \RuntimeException('MySQL import failed: ' . $process->getErrorOutput()); + } + } elseif ($platform instanceof \Doctrine\DBAL\Platforms\PostgreSQLPlatform) { + // Use psql command to import + $psqlCmd = 'psql'; + if (isset($params['host'])) { + $psqlCmd .= ' -h ' . escapeshellarg($params['host']); + } + if (isset($params['port'])) { + $psqlCmd .= ' -p ' . escapeshellarg((string)$params['port']); + } + if (isset($params['user'])) { + $psqlCmd .= ' -U ' . escapeshellarg($params['user']); + } + if (isset($params['dbname'])) { + $psqlCmd .= ' -d ' . escapeshellarg($params['dbname']); + } + $psqlCmd .= ' -f ' . escapeshellarg($sqlFile); + + // Set PGPASSWORD environment variable if password is provided + $env = null; + if (isset($params['password']) && $params['password']) { + $env = ['PGPASSWORD' => $params['password']]; + } + + // Execute using shell + $process = Process::fromShellCommandline($psqlCmd, $this->projectDir, $env, null, 300); + $process->run(); + + if (!$process->isSuccessful()) { + throw new \RuntimeException('PostgreSQL import failed: ' . $process->getErrorOutput()); + } + } else { + throw new \RuntimeException('Unsupported database platform for restore'); + } + + return; + } + + // Check for SQLite database file + $sqliteFile = $tempDir . '/var/app.db'; + if (file_exists($sqliteFile)) { + $targetDb = $this->projectDir . '/var/app.db'; + $this->filesystem->copy($sqliteFile, $targetDb, true); + return; + } + + $this->logger->warning('No database found in backup'); + } + + /** + * Restore config files from backup. + */ + private function restoreConfigFromBackup(string $tempDir): void + { + // Restore .env.local + $envLocal = $tempDir . '/.env.local'; + if (file_exists($envLocal)) { + $this->filesystem->copy($envLocal, $this->projectDir . '/.env.local', true); + } + + // Restore config/parameters.yaml + $parametersYaml = $tempDir . '/config/parameters.yaml'; + if (file_exists($parametersYaml)) { + $this->filesystem->copy($parametersYaml, $this->projectDir . '/config/parameters.yaml', true); + } + + // Restore config/banner.md + $bannerMd = $tempDir . '/config/banner.md'; + if (file_exists($bannerMd)) { + $this->filesystem->copy($bannerMd, $this->projectDir . '/config/banner.md', true); + } + } + + /** + * Restore attachments from backup. + */ + private function restoreAttachmentsFromBackup(string $tempDir): void + { + // Restore public/media + $publicMedia = $tempDir . '/public/media'; + if (is_dir($publicMedia)) { + $this->filesystem->mirror($publicMedia, $this->projectDir . '/public/media', null, ['override' => true]); + } + + // Restore uploads + $uploads = $tempDir . '/uploads'; + if (is_dir($uploads)) { + $this->filesystem->mirror($uploads, $this->projectDir . '/uploads', null, ['override' => true]); + } + } + + /** + * Run a shell command with proper error handling. + */ + private function runCommand(array $command, string $description, int $timeout = 120): string + { + $process = new Process($command, $this->projectDir); + $process->setTimeout($timeout); + + // Set environment variables + $currentEnv = getenv(); + if (!is_array($currentEnv)) { + $currentEnv = []; + } + $env = array_merge($currentEnv, [ + 'HOME' => $this->projectDir, + 'COMPOSER_HOME' => $this->projectDir . '/var/composer', + 'PATH' => getenv('PATH') ?: '/usr/local/bin:/usr/bin:/bin', + ]); + $process->setEnv($env); + + $output = ''; + $process->run(function ($type, $buffer) use (&$output) { + $output .= $buffer; + }); + + if (!$process->isSuccessful()) { + $errorOutput = $process->getErrorOutput() ?: $process->getOutput(); + throw new \RuntimeException( + sprintf('%s failed: %s', $description, trim($errorOutput)) + ); + } + + return $output; + } +} diff --git a/src/Services/System/UpdateExecutor.php b/src/Services/System/UpdateExecutor.php index 837cde4c..84113981 100644 --- a/src/Services/System/UpdateExecutor.php +++ b/src/Services/System/UpdateExecutor.php @@ -23,7 +23,6 @@ declare(strict_types=1); namespace App\Services\System; -use Doctrine\ORM\EntityManagerInterface; use Psr\Log\LoggerInterface; use Shivas\VersioningBundle\Service\VersionManagerInterface; use Symfony\Component\DependencyInjection\Attribute\Autowire; @@ -41,7 +40,6 @@ class UpdateExecutor private const LOCK_FILE = 'var/update.lock'; private const MAINTENANCE_FILE = 'var/maintenance.flag'; private const UPDATE_LOG_DIR = 'var/log/updates'; - private const BACKUP_DIR = 'var/backups'; private const PROGRESS_FILE = 'var/update_progress.json'; /** @var array */ @@ -49,13 +47,15 @@ class UpdateExecutor private ?string $currentLogFile = null; - public function __construct(#[Autowire(param: 'kernel.project_dir')] private readonly string $project_dir, - private readonly LoggerInterface $logger, private readonly Filesystem $filesystem, + public function __construct( + #[Autowire(param: 'kernel.project_dir')] + private readonly string $project_dir, + private readonly LoggerInterface $logger, + private readonly Filesystem $filesystem, private readonly InstallationTypeDetector $installationTypeDetector, private readonly VersionManagerInterface $versionManager, - private readonly EntityManagerInterface $entityManager) - { - + private readonly BackupManager $backupManager, + ) { } /** @@ -252,6 +252,13 @@ class UpdateExecutor $errors[] = 'PHP CLI not found. Please ensure PHP is installed and in PATH.'; } + // Check if yarn is available (for frontend assets) + $process = new Process(['yarn', '--version']); + $process->run(); + if (!$process->isSuccessful()) { + $errors[] = 'Yarn command not found. Please ensure Yarn is installed and in PATH for frontend asset compilation.'; + } + // Check write permissions $testDirs = ['var', 'vendor', 'public']; foreach ($testDirs as $dir) { @@ -345,7 +352,7 @@ class UpdateExecutor // Step 4: Create backup (optional) if ($createBackup) { $stepStart = microtime(true); - $backupFile = $this->createBackup($targetVersion); + $backupFile = $this->backupManager->createBackup($targetVersion); $log('backup', 'Created backup: ' . basename($backupFile), true, microtime(true) - $stepStart); } @@ -359,7 +366,7 @@ class UpdateExecutor $this->runCommand(['git', 'checkout', $targetVersion], 'Checkout version'); $log('checkout', 'Checked out version: ' . $targetVersion, true, microtime(true) - $stepStart); - // Step 7: Install dependencies + // Step 7: Install PHP dependencies $stepStart = microtime(true); $this->runCommand([ 'composer', 'install', @@ -367,10 +374,26 @@ class UpdateExecutor '--optimize-autoloader', '--no-interaction', '--no-progress', - ], 'Install dependencies', 600); - $log('composer', 'Installed/updated dependencies', true, microtime(true) - $stepStart); + ], 'Install PHP dependencies', 600); + $log('composer', 'Installed/updated PHP dependencies', true, microtime(true) - $stepStart); - // Step 8: Run database migrations + // Step 8: Install frontend dependencies + $stepStart = microtime(true); + $this->runCommand([ + 'yarn', 'install', + '--frozen-lockfile', + '--non-interactive', + ], 'Install frontend dependencies', 600); + $log('yarn_install', 'Installed frontend dependencies', true, microtime(true) - $stepStart); + + // Step 9: Build frontend assets + $stepStart = microtime(true); + $this->runCommand([ + 'yarn', 'build', + ], 'Build frontend assets', 600); + $log('yarn_build', 'Built frontend assets', true, microtime(true) - $stepStart); + + // Step 10: Run database migrations $stepStart = microtime(true); $this->runCommand([ 'php', 'bin/console', 'doctrine:migrations:migrate', @@ -379,7 +402,7 @@ class UpdateExecutor ], 'Run migrations', 300); $log('migrations', 'Database migrations completed', true, microtime(true) - $stepStart); - // Step 9: Clear cache + // Step 11: Clear cache $stepStart = microtime(true); $this->runCommand([ 'php', 'bin/console', 'cache:clear', @@ -388,7 +411,7 @@ class UpdateExecutor ], 'Clear cache', 120); $log('cache_clear', 'Cleared application cache', true, microtime(true) - $stepStart); - // Step 10: Warm up cache + // Step 12: Warm up cache $stepStart = microtime(true); $this->runCommand([ 'php', 'bin/console', 'cache:warmup', @@ -396,12 +419,12 @@ class UpdateExecutor ], 'Warmup cache', 120); $log('cache_warmup', 'Warmed up application cache', true, microtime(true) - $stepStart); - // Step 11: Disable maintenance mode + // Step 13: Disable maintenance mode $stepStart = microtime(true); $this->disableMaintenanceMode(); $log('maintenance_off', 'Disabled maintenance mode', true, microtime(true) - $stepStart); - // Step 12: Release lock + // Step 14: Release lock $stepStart = microtime(true); $this->releaseLock(); @@ -433,7 +456,21 @@ class UpdateExecutor '--optimize-autoloader', '--no-interaction', ], 'Reinstall dependencies after rollback', 600); - $log('rollback_composer', 'Reinstalled dependencies after rollback', true); + $log('rollback_composer', 'Reinstalled PHP dependencies after rollback', true); + + // Re-run yarn install after rollback + $this->runCommand([ + 'yarn', 'install', + '--frozen-lockfile', + '--non-interactive', + ], 'Reinstall frontend dependencies after rollback', 600); + $log('rollback_yarn_install', 'Reinstalled frontend dependencies after rollback', true); + + // Re-run yarn build after rollback + $this->runCommand([ + 'yarn', 'build', + ], 'Rebuild frontend assets after rollback', 600); + $log('rollback_yarn_build', 'Rebuilt frontend assets after rollback', true); // Clear cache after rollback $this->runCommand([ @@ -462,32 +499,6 @@ class UpdateExecutor } } - /** - * Create a backup before updating. - */ - private function createBackup(string $targetVersion): string - { - $backupDir = $this->project_dir . '/' . self::BACKUP_DIR; - - if (!is_dir($backupDir)) { - $this->filesystem->mkdir($backupDir, 0755); - } - - // Include version numbers in backup filename: pre-update-v2.5.1-to-v2.6.0-2024-01-30-185400.zip - $currentVersion = $this->getCurrentVersionString(); - $targetVersionClean = preg_replace('/[^a-zA-Z0-9\.]/', '', $targetVersion); - $backupFile = $backupDir . '/pre-update-v' . $currentVersion . '-to-' . $targetVersionClean . '-' . date('Y-m-d-His') . '.zip'; - - $this->runCommand([ - 'php', 'bin/console', 'partdb:backup', - '--full', - '--overwrite', - $backupFile, - ], 'Create backup', 600); - - return $backupFile; - } - /** * Run a shell command with proper error handling. */ @@ -605,79 +616,27 @@ class UpdateExecutor /** * Get list of backups. + * @deprecated Use BackupManager::getBackups() directly */ public function getBackups(): array { - $backupDir = $this->project_dir . '/' . self::BACKUP_DIR; - - if (!is_dir($backupDir)) { - return []; - } - - $backups = []; - foreach (glob($backupDir . '/*.zip') as $backupFile) { - $backups[] = [ - 'file' => basename($backupFile), - 'path' => $backupFile, - 'date' => filemtime($backupFile), - 'size' => filesize($backupFile), - ]; - } - - // Sort by date descending - usort($backups, fn($a, $b) => $b['date'] <=> $a['date']); - - return $backups; + return $this->backupManager->getBackups(); } /** * Get details about a specific backup file. - * - * @param string $filename The backup filename - * @return array|null Backup details or null if not found + * @deprecated Use BackupManager::getBackupDetails() directly */ public function getBackupDetails(string $filename): ?array { - $backupDir = $this->project_dir . '/' . self::BACKUP_DIR; - $backupPath = $backupDir . '/' . basename($filename); - - if (!file_exists($backupPath) || !str_ends_with($backupPath, '.zip')) { - return null; - } - - // Parse version info from filename: pre-update-v2.5.1-to-v2.5.0-2024-01-30-185400.zip - $info = [ - 'file' => basename($backupPath), - 'path' => $backupPath, - 'date' => filemtime($backupPath), - 'size' => filesize($backupPath), - 'from_version' => null, - 'to_version' => null, - ]; - - if (preg_match('/pre-update-v([\d.]+)-to-v?([\d.]+)-/', $filename, $matches)) { - $info['from_version'] = $matches[1]; - $info['to_version'] = $matches[2]; - } - - // Check what the backup contains by reading the ZIP - try { - $zip = new \ZipArchive(); - if ($zip->open($backupPath) === true) { - $info['contains_database'] = $zip->locateName('database.sql') !== false || $zip->locateName('var/app.db') !== false; - $info['contains_config'] = $zip->locateName('.env.local') !== false || $zip->locateName('config/parameters.yaml') !== false; - $info['contains_attachments'] = $zip->locateName('public/media/') !== false || $zip->locateName('uploads/') !== false; - $zip->close(); - } - } catch (\Exception $e) { - $this->logger->warning('Could not read backup ZIP contents', ['error' => $e->getMessage()]); - } - - return $info; + return $this->backupManager->getBackupDetails($filename); } /** - * Restore from a backup file. + * Restore from a backup file with maintenance mode and cache clearing. + * + * This wraps BackupManager::restoreBackup with additional safety measures + * like lock acquisition, maintenance mode, and cache operations. * * @param string $filename The backup filename to restore * @param bool $restoreDatabase Whether to restore the database @@ -713,18 +672,12 @@ class UpdateExecutor }; try { - // Validate backup file - $backupDir = $this->project_dir . '/' . self::BACKUP_DIR; - $backupPath = $backupDir . '/' . basename($filename); - - if (!file_exists($backupPath)) { - throw new \RuntimeException('Backup file not found: ' . $filename); - } - $stepStart = microtime(true); // Step 1: Acquire lock - $this->acquireLock('restore'); + if (!$this->acquireLock()) { + throw new \RuntimeException('Could not acquire lock. Another operation may be in progress.'); + } $log('lock', 'Acquired exclusive restore lock', true, microtime(true) - $stepStart); // Step 2: Enable maintenance mode @@ -732,65 +685,43 @@ class UpdateExecutor $this->enableMaintenanceMode('Restoring from backup...'); $log('maintenance', 'Enabled maintenance mode', true, microtime(true) - $stepStart); - // Step 3: Extract backup to temp directory + // Step 3: Delegate to BackupManager for core restoration $stepStart = microtime(true); - $tempDir = sys_get_temp_dir() . '/partdb_restore_' . uniqid(); - $this->filesystem->mkdir($tempDir); + $result = $this->backupManager->restoreBackup( + $filename, + $restoreDatabase, + $restoreConfig, + $restoreAttachments, + function ($entry) use ($log) { + // Forward progress from BackupManager + $log($entry['step'], $entry['message'], $entry['success'], $entry['duration'] ?? null); + } + ); - $zip = new \ZipArchive(); - if ($zip->open($backupPath) !== true) { - throw new \RuntimeException('Could not open backup ZIP file'); - } - $zip->extractTo($tempDir); - $zip->close(); - $log('extract', 'Extracted backup to temporary directory', true, microtime(true) - $stepStart); - - // Step 4: Restore database if requested and present - if ($restoreDatabase) { - $stepStart = microtime(true); - $this->restoreDatabaseFromBackup($tempDir); - $log('database', 'Restored database', true, microtime(true) - $stepStart); + if (!$result['success']) { + throw new \RuntimeException($result['error'] ?? 'Restore failed'); } - // Step 5: Restore config files if requested and present - if ($restoreConfig) { - $stepStart = microtime(true); - $this->restoreConfigFromBackup($tempDir); - $log('config', 'Restored configuration files', true, microtime(true) - $stepStart); - } - - // Step 6: Restore attachments if requested and present - if ($restoreAttachments) { - $stepStart = microtime(true); - $this->restoreAttachmentsFromBackup($tempDir); - $log('attachments', 'Restored attachments', true, microtime(true) - $stepStart); - } - - // Step 7: Clean up temp directory - $stepStart = microtime(true); - $this->filesystem->remove($tempDir); - $log('cleanup', 'Cleaned up temporary files', true, microtime(true) - $stepStart); - - // Step 8: Clear cache + // Step 4: Clear cache $stepStart = microtime(true); $this->runCommand(['php', 'bin/console', 'cache:clear', '--no-warmup'], 'Clear cache'); $log('cache_clear', 'Cleared application cache', true, microtime(true) - $stepStart); - // Step 9: Warm up cache + // Step 5: Warm up cache $stepStart = microtime(true); $this->runCommand(['php', 'bin/console', 'cache:warmup'], 'Warm up cache'); $log('cache_warmup', 'Warmed up application cache', true, microtime(true) - $stepStart); - // Step 10: Disable maintenance mode + // Step 6: Disable maintenance mode $stepStart = microtime(true); $this->disableMaintenanceMode(); $log('maintenance_off', 'Disabled maintenance mode', true, microtime(true) - $stepStart); - // Step 11: Release lock + // Step 7: Release lock $this->releaseLock(); $totalDuration = microtime(true) - $startTime; - $log('complete', sprintf('Restore completed successfully in %.1f seconds', $totalDuration), true, microtime(true) - $stepStart); + $log('complete', sprintf('Restore completed successfully in %.1f seconds', $totalDuration), true); return [ 'success' => true, @@ -808,9 +739,6 @@ class UpdateExecutor try { $this->disableMaintenanceMode(); $this->releaseLock(); - if (isset($tempDir) && is_dir($tempDir)) { - $this->filesystem->remove($tempDir); - } } catch (\Throwable $cleanupError) { $this->logger->error('Cleanup after failed restore also failed', ['error' => $cleanupError->getMessage()]); } @@ -823,137 +751,6 @@ class UpdateExecutor } } - /** - * Restore database from backup. - */ - private function restoreDatabaseFromBackup(string $tempDir): void - { - // Check for SQL dump (MySQL/PostgreSQL) - $sqlFile = $tempDir . '/database.sql'; - if (file_exists($sqlFile)) { - // Import SQL using mysql/psql command directly - // First, get database connection params from Doctrine - $connection = $this->entityManager->getConnection(); - $params = $connection->getParams(); - $platform = $connection->getDatabasePlatform(); - - if ($platform instanceof \Doctrine\DBAL\Platforms\AbstractMySQLPlatform) { - // Use mysql command to import - need to use shell to handle input redirection - $mysqlCmd = 'mysql'; - if (isset($params['host'])) { - $mysqlCmd .= ' -h ' . escapeshellarg($params['host']); - } - if (isset($params['port'])) { - $mysqlCmd .= ' -P ' . escapeshellarg((string)$params['port']); - } - if (isset($params['user'])) { - $mysqlCmd .= ' -u ' . escapeshellarg($params['user']); - } - if (isset($params['password']) && $params['password']) { - $mysqlCmd .= ' -p' . escapeshellarg($params['password']); - } - if (isset($params['dbname'])) { - $mysqlCmd .= ' ' . escapeshellarg($params['dbname']); - } - $mysqlCmd .= ' < ' . escapeshellarg($sqlFile); - - // Execute using shell - $process = Process::fromShellCommandline($mysqlCmd, $this->project_dir, null, null, 300); - $process->run(); - - if (!$process->isSuccessful()) { - throw new \RuntimeException('MySQL import failed: ' . $process->getErrorOutput()); - } - } elseif ($platform instanceof \Doctrine\DBAL\Platforms\PostgreSQLPlatform) { - // Use psql command to import - $psqlCmd = 'psql'; - if (isset($params['host'])) { - $psqlCmd .= ' -h ' . escapeshellarg($params['host']); - } - if (isset($params['port'])) { - $psqlCmd .= ' -p ' . escapeshellarg((string)$params['port']); - } - if (isset($params['user'])) { - $psqlCmd .= ' -U ' . escapeshellarg($params['user']); - } - if (isset($params['dbname'])) { - $psqlCmd .= ' -d ' . escapeshellarg($params['dbname']); - } - $psqlCmd .= ' -f ' . escapeshellarg($sqlFile); - - // Set PGPASSWORD environment variable if password is provided - $env = null; - if (isset($params['password']) && $params['password']) { - $env = ['PGPASSWORD' => $params['password']]; - } - - // Execute using shell - $process = Process::fromShellCommandline($psqlCmd, $this->project_dir, $env, null, 300); - $process->run(); - - if (!$process->isSuccessful()) { - throw new \RuntimeException('PostgreSQL import failed: ' . $process->getErrorOutput()); - } - } else { - throw new \RuntimeException('Unsupported database platform for restore'); - } - - return; - } - - // Check for SQLite database file - $sqliteFile = $tempDir . '/var/app.db'; - if (file_exists($sqliteFile)) { - $targetDb = $this->project_dir . '/var/app.db'; - $this->filesystem->copy($sqliteFile, $targetDb, true); - return; - } - - $this->logger->warning('No database found in backup'); - } - - /** - * Restore config files from backup. - */ - private function restoreConfigFromBackup(string $tempDir): void - { - // Restore .env.local - $envLocal = $tempDir . '/.env.local'; - if (file_exists($envLocal)) { - $this->filesystem->copy($envLocal, $this->project_dir . '/.env.local', true); - } - - // Restore config/parameters.yaml - $parametersYaml = $tempDir . '/config/parameters.yaml'; - if (file_exists($parametersYaml)) { - $this->filesystem->copy($parametersYaml, $this->project_dir . '/config/parameters.yaml', true); - } - - // Restore config/banner.md - $bannerMd = $tempDir . '/config/banner.md'; - if (file_exists($bannerMd)) { - $this->filesystem->copy($bannerMd, $this->project_dir . '/config/banner.md', true); - } - } - - /** - * Restore attachments from backup. - */ - private function restoreAttachmentsFromBackup(string $tempDir): void - { - // Restore public/media - $publicMedia = $tempDir . '/public/media'; - if (is_dir($publicMedia)) { - $this->filesystem->mirror($publicMedia, $this->project_dir . '/public/media', null, ['override' => true]); - } - - // Restore uploads - $uploads = $tempDir . '/uploads'; - if (is_dir($uploads)) { - $this->filesystem->mirror($uploads, $this->project_dir . '/uploads', null, ['override' => true]); - } - } - /** * Get the path to the progress file. */ @@ -1048,7 +845,7 @@ class UpdateExecutor 'create_backup' => $createBackup, 'started_at' => (new \DateTime())->format('c'), 'current_step' => 0, - 'total_steps' => 12, + 'total_steps' => 14, 'step_name' => 'initializing', 'step_message' => 'Starting update process...', 'steps' => [], diff --git a/templates/admin/update_manager/index.html.twig b/templates/admin/update_manager/index.html.twig index 85b3ec1f..24dfcc96 100644 --- a/templates/admin/update_manager/index.html.twig +++ b/templates/admin/update_manager/index.html.twig @@ -34,6 +34,23 @@ {% endif %} + {# Web Updates Disabled Warning #} + {% if web_updates_disabled %} + + {% endif %} + + {# Backup Restore Disabled Warning #} + {% if backup_restore_disabled %} + + {% endif %} +
    {# Current Version Card #}
    @@ -132,7 +149,7 @@ {% endif %}
    - {% if status.update_available and status.can_auto_update and validation.valid %} + {% if status.update_available and status.can_auto_update and validation.valid and not web_updates_disabled %}
    - {% if release.version != status.current_version and status.can_auto_update and validation.valid %} + {% if release.version != status.current_version and status.can_auto_update and validation.valid and not web_updates_disabled %} - {% if status.can_auto_update and validation.valid %} + {% if status.can_auto_update and validation.valid and not backup_restore_disabled %} WARNING: This will overwrite your current database with the backup data. This action cannot be undone! Make sure you have a current backup before proceeding. + + + update_manager.web_updates_disabled + Web-based updates are disabled + + + + + update_manager.web_updates_disabled_hint + Web-based updates have been disabled by the server administrator. Please use the CLI command "php bin/console partdb:update" to perform updates. + + + + + update_manager.backup_restore_disabled + Backup restore is disabled by server configuration. + + settings.ips.conrad From 47295bda29468213abfb8f096d54f230eb55bc29 Mon Sep 17 00:00:00 2001 From: Sebastian Almberg <83243306+Sebbeben@users.noreply.github.com> Date: Sun, 1 Feb 2026 19:28:15 +0100 Subject: [PATCH 186/235] Add unit tests for BackupManager and UpdateExecutor Tests cover: - BackupManager: backup directory, listing, details parsing - UpdateExecutor: lock/unlock, maintenance mode, validation, progress --- tests/Services/System/BackupManagerTest.php | 102 +++++++++++ tests/Services/System/UpdateExecutorTest.php | 173 +++++++++++++++++++ 2 files changed, 275 insertions(+) create mode 100644 tests/Services/System/BackupManagerTest.php create mode 100644 tests/Services/System/UpdateExecutorTest.php diff --git a/tests/Services/System/BackupManagerTest.php b/tests/Services/System/BackupManagerTest.php new file mode 100644 index 00000000..145b039d --- /dev/null +++ b/tests/Services/System/BackupManagerTest.php @@ -0,0 +1,102 @@ +. + */ + +declare(strict_types=1); + +namespace App\Tests\Services\System; + +use App\Services\System\BackupManager; +use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; + +class BackupManagerTest extends KernelTestCase +{ + private ?BackupManager $backupManager = null; + + protected function setUp(): void + { + self::bootKernel(); + $this->backupManager = self::getContainer()->get(BackupManager::class); + } + + public function testGetBackupDir(): void + { + $backupDir = $this->backupManager->getBackupDir(); + + // Should end with var/backups + $this->assertStringEndsWith('var/backups', $backupDir); + } + + public function testGetBackupsReturnsEmptyArrayWhenNoBackups(): void + { + // If there are no backups (or the directory doesn't exist), should return empty array + $backups = $this->backupManager->getBackups(); + + $this->assertIsArray($backups); + } + + public function testGetBackupDetailsReturnsNullForNonExistentFile(): void + { + $details = $this->backupManager->getBackupDetails('non-existent-backup.zip'); + + $this->assertNull($details); + } + + public function testGetBackupDetailsReturnsNullForNonZipFile(): void + { + $details = $this->backupManager->getBackupDetails('not-a-zip.txt'); + + $this->assertNull($details); + } + + /** + * Test that version parsing from filename works correctly. + * This tests the regex pattern used in getBackupDetails. + */ + public function testVersionParsingFromFilename(): void + { + // Test the regex pattern directly + $filename = 'pre-update-v2.5.1-to-v2.6.0-2024-01-30-185400.zip'; + $matches = []; + + $result = preg_match('/pre-update-v([\d.]+)-to-v?([\d.]+)-/', $filename, $matches); + + $this->assertEquals(1, $result); + $this->assertEquals('2.5.1', $matches[1]); + $this->assertEquals('2.6.0', $matches[2]); + } + + /** + * Test version parsing with different filename formats. + */ + public function testVersionParsingVariants(): void + { + // Without 'v' prefix on target version + $filename1 = 'pre-update-v1.0.0-to-2.0.0-2024-01-30-185400.zip'; + preg_match('/pre-update-v([\d.]+)-to-v?([\d.]+)-/', $filename1, $matches1); + $this->assertEquals('1.0.0', $matches1[1]); + $this->assertEquals('2.0.0', $matches1[2]); + + // With 'v' prefix on target version + $filename2 = 'pre-update-v1.0.0-to-v2.0.0-2024-01-30-185400.zip'; + preg_match('/pre-update-v([\d.]+)-to-v?([\d.]+)-/', $filename2, $matches2); + $this->assertEquals('1.0.0', $matches2[1]); + $this->assertEquals('2.0.0', $matches2[2]); + } +} diff --git a/tests/Services/System/UpdateExecutorTest.php b/tests/Services/System/UpdateExecutorTest.php new file mode 100644 index 00000000..9b832f6c --- /dev/null +++ b/tests/Services/System/UpdateExecutorTest.php @@ -0,0 +1,173 @@ +. + */ + +declare(strict_types=1); + +namespace App\Tests\Services\System; + +use App\Services\System\UpdateExecutor; +use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; + +class UpdateExecutorTest extends KernelTestCase +{ + private ?UpdateExecutor $updateExecutor = null; + + protected function setUp(): void + { + self::bootKernel(); + $this->updateExecutor = self::getContainer()->get(UpdateExecutor::class); + } + + public function testIsLockedReturnsFalseWhenNoLockFile(): void + { + // Initially there should be no lock + // Note: This test assumes no concurrent update is running + $isLocked = $this->updateExecutor->isLocked(); + + $this->assertIsBool($isLocked); + } + + public function testIsMaintenanceModeReturnsBool(): void + { + $isMaintenanceMode = $this->updateExecutor->isMaintenanceMode(); + + $this->assertIsBool($isMaintenanceMode); + } + + public function testGetLockInfoReturnsNullOrArray(): void + { + $lockInfo = $this->updateExecutor->getLockInfo(); + + // Should be null when not locked, or array when locked + $this->assertTrue($lockInfo === null || is_array($lockInfo)); + } + + public function testGetMaintenanceInfoReturnsNullOrArray(): void + { + $maintenanceInfo = $this->updateExecutor->getMaintenanceInfo(); + + // Should be null when not in maintenance, or array when in maintenance + $this->assertTrue($maintenanceInfo === null || is_array($maintenanceInfo)); + } + + public function testGetUpdateLogsReturnsArray(): void + { + $logs = $this->updateExecutor->getUpdateLogs(); + + $this->assertIsArray($logs); + } + + public function testGetBackupsReturnsArray(): void + { + $backups = $this->updateExecutor->getBackups(); + + $this->assertIsArray($backups); + } + + public function testValidateUpdatePreconditionsReturnsProperStructure(): void + { + $validation = $this->updateExecutor->validateUpdatePreconditions(); + + $this->assertIsArray($validation); + $this->assertArrayHasKey('valid', $validation); + $this->assertArrayHasKey('errors', $validation); + $this->assertIsBool($validation['valid']); + $this->assertIsArray($validation['errors']); + } + + public function testGetProgressFilePath(): void + { + $progressPath = $this->updateExecutor->getProgressFilePath(); + + $this->assertIsString($progressPath); + $this->assertStringEndsWith('var/update_progress.json', $progressPath); + } + + public function testGetProgressReturnsNullOrArray(): void + { + $progress = $this->updateExecutor->getProgress(); + + // Should be null when no progress file, or array when exists + $this->assertTrue($progress === null || is_array($progress)); + } + + public function testIsUpdateRunningReturnsBool(): void + { + $isRunning = $this->updateExecutor->isUpdateRunning(); + + $this->assertIsBool($isRunning); + } + + public function testAcquireAndReleaseLock(): void + { + // First, ensure no lock exists + if ($this->updateExecutor->isLocked()) { + $this->updateExecutor->releaseLock(); + } + + // Acquire lock + $acquired = $this->updateExecutor->acquireLock(); + $this->assertTrue($acquired); + + // Should be locked now + $this->assertTrue($this->updateExecutor->isLocked()); + + // Lock info should exist + $lockInfo = $this->updateExecutor->getLockInfo(); + $this->assertIsArray($lockInfo); + $this->assertArrayHasKey('started_at', $lockInfo); + + // Trying to acquire again should fail + $acquiredAgain = $this->updateExecutor->acquireLock(); + $this->assertFalse($acquiredAgain); + + // Release lock + $this->updateExecutor->releaseLock(); + + // Should no longer be locked + $this->assertFalse($this->updateExecutor->isLocked()); + } + + public function testEnableAndDisableMaintenanceMode(): void + { + // First, ensure maintenance mode is off + if ($this->updateExecutor->isMaintenanceMode()) { + $this->updateExecutor->disableMaintenanceMode(); + } + + // Enable maintenance mode + $this->updateExecutor->enableMaintenanceMode('Test maintenance'); + + // Should be in maintenance mode now + $this->assertTrue($this->updateExecutor->isMaintenanceMode()); + + // Maintenance info should exist + $maintenanceInfo = $this->updateExecutor->getMaintenanceInfo(); + $this->assertIsArray($maintenanceInfo); + $this->assertArrayHasKey('reason', $maintenanceInfo); + $this->assertEquals('Test maintenance', $maintenanceInfo['reason']); + + // Disable maintenance mode + $this->updateExecutor->disableMaintenanceMode(); + + // Should no longer be in maintenance mode + $this->assertFalse($this->updateExecutor->isMaintenanceMode()); + } +} From 10acc2e1300cad57766ba82c7e0ad9042817b232 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 1 Feb 2026 20:49:50 +0100 Subject: [PATCH 187/235] Added logic to delegate the info retrieval logic to another provider when giving an URL --- .../InfoProviderSystem/ProviderRegistry.php | 38 +++++++++++++++- .../Providers/GenericWebProvider.php | 44 ++++++++++++++++++- .../Providers/PollinProvider.php | 37 +++++++++++++--- .../URLHandlerInfoProviderInterface.php | 43 ++++++++++++++++++ .../ProviderRegistryTest.php | 18 +++++++- 5 files changed, 169 insertions(+), 11 deletions(-) create mode 100644 src/Services/InfoProviderSystem/Providers/URLHandlerInfoProviderInterface.php diff --git a/src/Services/InfoProviderSystem/ProviderRegistry.php b/src/Services/InfoProviderSystem/ProviderRegistry.php index f6c398d2..18b8a37a 100644 --- a/src/Services/InfoProviderSystem/ProviderRegistry.php +++ b/src/Services/InfoProviderSystem/ProviderRegistry.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace App\Services\InfoProviderSystem; use App\Services\InfoProviderSystem\Providers\InfoProviderInterface; +use App\Services\InfoProviderSystem\Providers\URLHandlerInfoProviderInterface; /** * This class keeps track of all registered info providers and allows to find them by their key @@ -47,6 +48,8 @@ final class ProviderRegistry */ private array $providers_disabled = []; + private array $providers_by_domain = []; + /** * @var bool Whether the registry has been initialized */ @@ -78,6 +81,14 @@ final class ProviderRegistry $this->providers_by_name[$key] = $provider; if ($provider->isActive()) { $this->providers_active[$key] = $provider; + if ($provider instanceof URLHandlerInfoProviderInterface) { + foreach ($provider->getHandledDomains() as $domain) { + if (isset($this->providers_by_domain[$domain])) { + throw new \LogicException("Domain $domain is already handled by another provider"); + } + $this->providers_by_domain[$domain] = $provider; + } + } } else { $this->providers_disabled[$key] = $provider; } @@ -139,4 +150,29 @@ final class ProviderRegistry return $this->providers_disabled; } -} \ No newline at end of file + + public function getProviderHandlingDomain(string $domain): (InfoProviderInterface&URLHandlerInfoProviderInterface)|null + { + if (!$this->initialized) { + $this->initStructures(); + } + + //Check if the domain is directly existing: + if (isset($this->providers_by_domain[$domain])) { + return $this->providers_by_domain[$domain]; + } + + //Otherwise check for subdomains: + $parts = explode('.', $domain); + while (count($parts) > 2) { + array_shift($parts); + $check_domain = implode('.', $parts); + if (isset($this->providers_by_domain[$check_domain])) { + return $this->providers_by_domain[$check_domain]; + } + } + + //If we found nothing, return null + return null; + } +} diff --git a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php index 4b73ad6e..bca3d7cb 100644 --- a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php +++ b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php @@ -28,8 +28,9 @@ 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 App\Services\InfoProviderSystem\PartInfoRetriever; +use App\Services\InfoProviderSystem\ProviderRegistry; use App\Settings\InfoProviderSystem\GenericWebProviderSettings; -use PhpOffice\PhpSpreadsheet\Calculation\Financial\Securities\Price; use Symfony\Component\DomCrawler\Crawler; use Symfony\Contracts\HttpClient\HttpClientInterface; @@ -40,7 +41,9 @@ class GenericWebProvider implements InfoProviderInterface private readonly HttpClientInterface $httpClient; - public function __construct(HttpClientInterface $httpClient, private readonly GenericWebProviderSettings $settings) + public function __construct(HttpClientInterface $httpClient, private readonly GenericWebProviderSettings $settings, + private readonly ProviderRegistry $providerRegistry, private readonly PartInfoRetriever $infoRetriever, + ) { $this->httpClient = $httpClient->withOptions( [ @@ -228,6 +231,37 @@ class GenericWebProvider implements InfoProviderInterface return null; } + /** + * Delegates the URL to another provider if possible, otherwise return null + * @param string $url + * @return PartDetailDTO|null + */ + private function delegateToOtherProvider(string $url): ?PartDetailDTO + { + //Extract domain from url: + $host = parse_url($url, PHP_URL_HOST); + if ($host === false || $host === null) { + return null; + } + + $provider = $this->providerRegistry->getProviderHandlingDomain($host); + + if ($provider !== null && $provider->isActive() && $provider->getProviderKey() !== $this->getProviderKey()) { + try { + $id = $provider->getIDFromURL($url); + if ($id !== null) { + return $this->infoRetriever->getDetails($provider->getProviderKey(), $id); + } + return null; + } catch (ProviderIDNotSupportedException $e) { + //Ignore and continue + return null; + } + } + + return null; + } + public function getDetails(string $id): PartDetailDTO { //Add scheme if missing @@ -247,6 +281,12 @@ class GenericWebProvider implements InfoProviderInterface throw new ProviderIDNotSupportedException("The given ID is not a valid URL: ".$id); } + //Before loading the page, try to delegate to another provider + $delegatedPart = $this->delegateToOtherProvider($url); + if ($delegatedPart !== null) { + return $delegatedPart; + } + //Try to get the webpage content $response = $this->httpClient->request('GET', $url); $content = $response->getContent(); diff --git a/src/Services/InfoProviderSystem/Providers/PollinProvider.php b/src/Services/InfoProviderSystem/Providers/PollinProvider.php index 2c5d68a3..6ac969d3 100644 --- a/src/Services/InfoProviderSystem/Providers/PollinProvider.php +++ b/src/Services/InfoProviderSystem/Providers/PollinProvider.php @@ -36,7 +36,7 @@ use Symfony\Component\DependencyInjection\Attribute\Autowire; use Symfony\Component\DomCrawler\Crawler; use Symfony\Contracts\HttpClient\HttpClientInterface; -class PollinProvider implements InfoProviderInterface +class PollinProvider implements InfoProviderInterface, URLHandlerInfoProviderInterface { public function __construct(private readonly HttpClientInterface $client, @@ -141,11 +141,16 @@ class PollinProvider implements InfoProviderInterface $orderId = trim($dom->filter('span[itemprop="sku"]')->text()); //Text is important here //Calculate the mass - $massStr = $dom->filter('meta[itemprop="weight"]')->attr('content'); - //Remove the unit - $massStr = str_replace('kg', '', $massStr); - //Convert to float and convert to grams - $mass = (float) $massStr * 1000; + $massDom = $dom->filter('meta[itemprop="weight"]'); + if ($massDom->count() > 0) { + $massStr = $massDom->attr('content'); + $massStr = str_replace('kg', '', $massStr); + //Convert to float and convert to grams + $mass = (float) $massStr * 1000; + } else { + $mass = null; + } + //Parse purchase info $purchaseInfo = new PurchaseInfoDTO('Pollin', $orderId, $this->parsePrices($dom), $productPageUrl); @@ -248,4 +253,22 @@ class PollinProvider implements InfoProviderInterface ProviderCapabilities::DATASHEET ]; } -} \ No newline at end of file + + public function getHandledDomains(): array + { + return ['pollin.de']; + } + + public function getIDFromURL(string $url): ?string + { + //URL like: https://www.pollin.de/p/shelly-bluetooth-schalter-und-dimmer-blu-zb-button-plug-play-mocha-592325 + + //Extract the 6-digit number at the end of the URL + $matches = []; + if (preg_match('/-(\d{6})(?:\/|$)/', $url, $matches)) { + return $matches[1]; + } + + return null; + } +} diff --git a/src/Services/InfoProviderSystem/Providers/URLHandlerInfoProviderInterface.php b/src/Services/InfoProviderSystem/Providers/URLHandlerInfoProviderInterface.php new file mode 100644 index 00000000..c0506648 --- /dev/null +++ b/src/Services/InfoProviderSystem/Providers/URLHandlerInfoProviderInterface.php @@ -0,0 +1,43 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Services\InfoProviderSystem\Providers; + +/** + * If an interface + */ +interface URLHandlerInfoProviderInterface +{ + /** + * Returns a list of supported domains (e.g. ["digikey.com"]) + * @return array An array of supported domains + */ + public function getHandledDomains(): array; + + /** + * Extracts the unique ID of a part from a given URL. It is okay if this is not a canonical ID, as long as it can be used to uniquely identify the part within this provider. + * @param string $url The URL to extract the ID from + * @return string|null The extracted ID, or null if the URL is not valid for this provider + */ + public function getIDFromURL(string $url): ?string; +} diff --git a/tests/Services/InfoProviderSystem/ProviderRegistryTest.php b/tests/Services/InfoProviderSystem/ProviderRegistryTest.php index 9026c5bf..48a1847f 100644 --- a/tests/Services/InfoProviderSystem/ProviderRegistryTest.php +++ b/tests/Services/InfoProviderSystem/ProviderRegistryTest.php @@ -24,6 +24,7 @@ namespace App\Tests\Services\InfoProviderSystem; use App\Services\InfoProviderSystem\ProviderRegistry; use App\Services\InfoProviderSystem\Providers\InfoProviderInterface; +use App\Services\InfoProviderSystem\Providers\URLHandlerInfoProviderInterface; use PHPUnit\Framework\TestCase; class ProviderRegistryTest extends TestCase @@ -44,9 +45,10 @@ class ProviderRegistryTest extends TestCase public function getMockProvider(string $key, bool $active = true): InfoProviderInterface { - $mock = $this->createMock(InfoProviderInterface::class); + $mock = $this->createMockForIntersectionOfInterfaces([InfoProviderInterface::class, URLHandlerInfoProviderInterface::class]); $mock->method('getProviderKey')->willReturn($key); $mock->method('isActive')->willReturn($active); + $mock->method('getHandledDomains')->willReturn(["$key.com", "test.$key.de"]); return $mock; } @@ -109,4 +111,18 @@ class ProviderRegistryTest extends TestCase $registry->getProviders(); } + + public function testGetProviderHandlingDomain(): void + { + $registry = new ProviderRegistry($this->providers); + + $this->assertEquals($this->providers[0], $registry->getProviderHandlingDomain('test1.com')); + $this->assertEquals($this->providers[0], $registry->getProviderHandlingDomain('www.test1.com')); //Subdomain should also work + + $this->assertEquals( + $this->providers[1], + $registry->getProviderHandlingDomain('test.test2.de') + ); + } + } From 24f0f0d23c325a23ab4d7d000b90e36e1fd80975 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 1 Feb 2026 21:18:06 +0100 Subject: [PATCH 188/235] Added URL handling to a few more existing info providers --- .../Providers/ConradProvider.php | 25 ++++++++- .../Providers/Element14Provider.php | 19 ++++++- .../Providers/GenericWebProvider.php | 51 +++++++++++++------ .../Providers/LCSCProvider.php | 19 ++++++- .../Providers/TMEProvider.php | 20 +++++++- 5 files changed, 115 insertions(+), 19 deletions(-) diff --git a/src/Services/InfoProviderSystem/Providers/ConradProvider.php b/src/Services/InfoProviderSystem/Providers/ConradProvider.php index 6212f148..32434dee 100644 --- a/src/Services/InfoProviderSystem/Providers/ConradProvider.php +++ b/src/Services/InfoProviderSystem/Providers/ConradProvider.php @@ -30,9 +30,10 @@ use App\Services\InfoProviderSystem\DTOs\PriceDTO; use App\Services\InfoProviderSystem\DTOs\PurchaseInfoDTO; use App\Services\InfoProviderSystem\DTOs\SearchResultDTO; use App\Settings\InfoProviderSystem\ConradSettings; +use App\Settings\InfoProviderSystem\ConradShopIDs; use Symfony\Contracts\HttpClient\HttpClientInterface; -readonly class ConradProvider implements InfoProviderInterface +readonly class ConradProvider implements InfoProviderInterface, URLHandlerInfoProviderInterface { private const SEARCH_ENDPOINT = '/search/1/v3/facetSearch'; @@ -317,4 +318,26 @@ readonly class ConradProvider implements InfoProviderInterface ProviderCapabilities::PRICE, ]; } + + public function getHandledDomains(): array + { + $domains = []; + foreach (ConradShopIDs::cases() as $shopID) { + $domains[] = $shopID->getDomain(); + } + return array_unique($domains); + } + + public function getIDFromURL(string $url): ?string + { + //Input: https://www.conrad.de/de/p/apple-iphone-air-wolkenweiss-256-gb-eek-a-a-g-16-5-cm-6-5-zoll-3475299.html + //The numbers before the optional .html are the product ID + + $matches = []; + if (preg_match('/-(\d+)(\.html)?$/', $url, $matches) === 1) { + return $matches[1]; + } + + return null; + } } diff --git a/src/Services/InfoProviderSystem/Providers/Element14Provider.php b/src/Services/InfoProviderSystem/Providers/Element14Provider.php index 27dfb908..9ae45728 100644 --- a/src/Services/InfoProviderSystem/Providers/Element14Provider.php +++ b/src/Services/InfoProviderSystem/Providers/Element14Provider.php @@ -33,7 +33,7 @@ use App\Settings\InfoProviderSystem\Element14Settings; use Composer\CaBundle\CaBundle; use Symfony\Contracts\HttpClient\HttpClientInterface; -class Element14Provider implements InfoProviderInterface +class Element14Provider implements InfoProviderInterface, URLHandlerInfoProviderInterface { private const ENDPOINT_URL = 'https://api.element14.com/catalog/products'; @@ -309,4 +309,21 @@ class Element14Provider implements InfoProviderInterface ProviderCapabilities::DATASHEET, ]; } + + public function getHandledDomains(): array + { + return ['element14.com', 'farnell.com', 'newark.com']; + } + + public function getIDFromURL(string $url): ?string + { + //Input URL example: https://de.farnell.com/on-semiconductor/bc547b/transistor-npn-to-92/dp/1017673 + //The digits after the /dp/ are the part ID + $matches = []; + if (preg_match('#/dp/(\d+)#', $url, $matches) === 1) { + return $matches[1]; + } + + return null; + } } diff --git a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php index bca3d7cb..d06a6105 100644 --- a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php +++ b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php @@ -28,6 +28,7 @@ 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 App\Services\InfoProviderSystem\DTOs\SearchResultDTO; use App\Services\InfoProviderSystem\PartInfoRetriever; use App\Services\InfoProviderSystem\ProviderRegistry; use App\Settings\InfoProviderSystem\GenericWebProviderSettings; @@ -78,9 +79,17 @@ class GenericWebProvider implements InfoProviderInterface public function searchByKeyword(string $keyword): array { + $url = $this->fixAndValidateURL($keyword); + + //Before loading the page, try to delegate to another provider + $delegatedPart = $this->delegateToOtherProvider($url); + if ($delegatedPart !== null) { + return [$delegatedPart]; + } + try { return [ - $this->getDetails($keyword) + $this->getDetails($keyword, false) //We already tried delegation ]; } catch (ProviderIDNotSupportedException $e) { return []; } @@ -234,9 +243,9 @@ class GenericWebProvider implements InfoProviderInterface /** * Delegates the URL to another provider if possible, otherwise return null * @param string $url - * @return PartDetailDTO|null + * @return SearchResultDTO|null */ - private function delegateToOtherProvider(string $url): ?PartDetailDTO + private function delegateToOtherProvider(string $url): ?SearchResultDTO { //Extract domain from url: $host = parse_url($url, PHP_URL_HOST); @@ -250,7 +259,10 @@ class GenericWebProvider implements InfoProviderInterface try { $id = $provider->getIDFromURL($url); if ($id !== null) { - return $this->infoRetriever->getDetails($provider->getProviderKey(), $id); + $results = $this->infoRetriever->searchByKeyword($id, [$provider]); + if (count($results) > 0) { + return $results[0]; + } } return null; } catch (ProviderIDNotSupportedException $e) { @@ -262,29 +274,38 @@ class GenericWebProvider implements InfoProviderInterface return null; } - public function getDetails(string $id): PartDetailDTO + private function fixAndValidateURL(string $url): string { + $originalUrl = $url; + //Add scheme if missing - if (!preg_match('/^https?:\/\//', $id)) { + if (!preg_match('/^https?:\/\//', $url)) { //Remove any leading slashes - $id = ltrim($id, '/'); + $url = ltrim($url, '/'); - $id = 'https://'.$id; + $url = 'https://'.$url; } - $url = $id; - //If this is not a valid URL with host, domain and path, throw an exception if (filter_var($url, FILTER_VALIDATE_URL) === false || parse_url($url, PHP_URL_HOST) === null || parse_url($url, PHP_URL_PATH) === null) { - throw new ProviderIDNotSupportedException("The given ID is not a valid URL: ".$id); + throw new ProviderIDNotSupportedException("The given ID is not a valid URL: ".$originalUrl); } - //Before loading the page, try to delegate to another provider - $delegatedPart = $this->delegateToOtherProvider($url); - if ($delegatedPart !== null) { - return $delegatedPart; + return $url; + } + + public function getDetails(string $id, bool $check_for_delegation = true): PartDetailDTO + { + $url = $this->fixAndValidateURL($id); + + if ($check_for_delegation) { + //Before loading the page, try to delegate to another provider + $delegatedPart = $this->delegateToOtherProvider($url); + if ($delegatedPart !== null) { + return $delegatedPart; + } } //Try to get the webpage content diff --git a/src/Services/InfoProviderSystem/Providers/LCSCProvider.php b/src/Services/InfoProviderSystem/Providers/LCSCProvider.php index ede34eb8..1b807eff 100755 --- a/src/Services/InfoProviderSystem/Providers/LCSCProvider.php +++ b/src/Services/InfoProviderSystem/Providers/LCSCProvider.php @@ -33,7 +33,7 @@ use App\Settings\InfoProviderSystem\LCSCSettings; use Symfony\Component\HttpFoundation\Cookie; use Symfony\Contracts\HttpClient\HttpClientInterface; -class LCSCProvider implements BatchInfoProviderInterface +class LCSCProvider implements BatchInfoProviderInterface, URLHandlerInfoProviderInterface { private const ENDPOINT_URL = 'https://wmsc.lcsc.com/ftps/wm'; @@ -452,4 +452,21 @@ class LCSCProvider implements BatchInfoProviderInterface ProviderCapabilities::FOOTPRINT, ]; } + + public function getHandledDomains(): array + { + return ['lcsc.com']; + } + + public function getIDFromURL(string $url): ?string + { + //Input example: https://www.lcsc.com/product-detail/C258144.html?s_z=n_BC547 + //The part between the "C" and the ".html" is the unique ID + + $matches = []; + if (preg_match("#/product-detail/(\w+)\.html#", $url, $matches) > 0) { + return $matches[1]; + } + return null; + } } diff --git a/src/Services/InfoProviderSystem/Providers/TMEProvider.php b/src/Services/InfoProviderSystem/Providers/TMEProvider.php index 9bc73f09..938bc7b3 100644 --- a/src/Services/InfoProviderSystem/Providers/TMEProvider.php +++ b/src/Services/InfoProviderSystem/Providers/TMEProvider.php @@ -32,7 +32,7 @@ use App\Services\InfoProviderSystem\DTOs\PurchaseInfoDTO; use App\Services\InfoProviderSystem\DTOs\SearchResultDTO; use App\Settings\InfoProviderSystem\TMESettings; -class TMEProvider implements InfoProviderInterface +class TMEProvider implements InfoProviderInterface, URLHandlerInfoProviderInterface { private const VENDOR_NAME = 'TME'; @@ -296,4 +296,22 @@ class TMEProvider implements InfoProviderInterface ProviderCapabilities::PRICE, ]; } + + public function getHandledDomains(): array + { + return ['tme.eu']; + } + + public function getIDFromURL(string $url): ?string + { + //Input: https://www.tme.eu/de/details/fi321_se/kuhler/alutronic/ + //The ID is the part after the details segment and before the next slash + + $matches = []; + if (preg_match('#/details/([^/]+)/#', $url, $matches) === 1) { + return $matches[1]; + } + + return null; + } } From a1396c6696f4a9b6421a400b529a42176b3ea9cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 1 Feb 2026 21:19:11 +0100 Subject: [PATCH 189/235] Fixed delegation logic for PartDetailDTO --- .../InfoProviderSystem/Providers/GenericWebProvider.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php index d06a6105..66d45707 100644 --- a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php +++ b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php @@ -224,6 +224,12 @@ class GenericWebProvider implements InfoProviderInterface return json_decode($json, true, 512, JSON_THROW_ON_ERROR); } + /** + * Gets the content of a meta tag by its name or property attribute, or null if not found + * @param Crawler $dom + * @param string $name + * @return string|null + */ private function getMetaContent(Crawler $dom, string $name): ?string { $meta = $dom->filter('meta[property="'.$name.'"]'); @@ -304,7 +310,7 @@ class GenericWebProvider implements InfoProviderInterface //Before loading the page, try to delegate to another provider $delegatedPart = $this->delegateToOtherProvider($url); if ($delegatedPart !== null) { - return $delegatedPart; + return $this->infoRetriever->getDetailsForSearchResult($delegatedPart); } } From 0826acbd5282fad8361117660a1f762060aa690b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 1 Feb 2026 23:11:56 +0100 Subject: [PATCH 190/235] Fixed phpunit tests --- .../LabelSystem/BarcodeScanner/BarcodeRedirectorTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Services/LabelSystem/BarcodeScanner/BarcodeRedirectorTest.php b/tests/Services/LabelSystem/BarcodeScanner/BarcodeRedirectorTest.php index c40e141d..c5bdb02d 100644 --- a/tests/Services/LabelSystem/BarcodeScanner/BarcodeRedirectorTest.php +++ b/tests/Services/LabelSystem/BarcodeScanner/BarcodeRedirectorTest.php @@ -64,7 +64,7 @@ final class BarcodeRedirectorTest extends KernelTestCase { yield [new LocalBarcodeScanResult(LabelSupportedElement::PART, 1, BarcodeSourceType::INTERNAL), '/en/part/1']; //Part lot redirects to Part info page (Part lot 1 is associated with part 3) - yield [new LocalBarcodeScanResult(LabelSupportedElement::PART_LOT, 1, BarcodeSourceType::INTERNAL), '/en/part/3']; + yield [new LocalBarcodeScanResult(LabelSupportedElement::PART_LOT, 1, BarcodeSourceType::INTERNAL), '/en/part/3?highlightLot=1']; yield [new LocalBarcodeScanResult(LabelSupportedElement::STORELOCATION, 1, BarcodeSourceType::INTERNAL), '/en/store_location/1/parts']; } From 7e486a93c9b6e7cd25ce93bf5b198330e9dfc383 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 2 Feb 2026 17:02:01 +0100 Subject: [PATCH 191/235] Added missing phpdoc structure definitions --- src/Services/System/UpdateChecker.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Services/System/UpdateChecker.php b/src/Services/System/UpdateChecker.php index a881f614..49a132ee 100644 --- a/src/Services/System/UpdateChecker.php +++ b/src/Services/System/UpdateChecker.php @@ -72,6 +72,7 @@ class UpdateChecker /** * Get Git repository information. + * @return array{branch: ?string, commit: ?string, has_local_changes: bool, commits_behind: int, is_git_install: bool} */ public function getGitInfo(): array { @@ -227,6 +228,7 @@ class UpdateChecker /** * Get the latest stable release. + * @return array{version: string, tag: string, name: string, url: string, published_at: string, body: string, prerelease: bool, assets: array}|null */ public function getLatestRelease(bool $includePrerelease = false): ?array { @@ -264,6 +266,8 @@ class UpdateChecker /** * Get comprehensive update status. + * @return array{current_version: string, latest_version: ?string, latest_tag: ?string, update_available: bool, release_notes: ?string, release_url: ?string, + * published_at: ?string, git: array, installation: array, can_auto_update: bool, update_blockers: array, check_enabled: bool} */ public function getUpdateStatus(): array { @@ -318,6 +322,7 @@ class UpdateChecker /** * Get releases newer than the current version. + * @return array */ public function getAvailableUpdates(bool $includePrerelease = false): array { From 1bfd36ccf59c56d076fb0d35312119b5adfd3328 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 2 Feb 2026 17:04:45 +0100 Subject: [PATCH 192/235] Do not automatically give existing users the right to manage updates, but include that for new databases --- src/Entity/UserSystem/PermissionData.php | 2 +- .../UserSystem/PermissionPresetsHelper.php | 3 ++- .../UserSystem/PermissionSchemaUpdater.php | 17 ----------------- 3 files changed, 3 insertions(+), 19 deletions(-) diff --git a/src/Entity/UserSystem/PermissionData.php b/src/Entity/UserSystem/PermissionData.php index b7d1ff8f..9ebdc9c9 100644 --- a/src/Entity/UserSystem/PermissionData.php +++ b/src/Entity/UserSystem/PermissionData.php @@ -43,7 +43,7 @@ final class PermissionData implements \JsonSerializable /** * The current schema version of the permission data */ - public const CURRENT_SCHEMA_VERSION = 4; + public const CURRENT_SCHEMA_VERSION = 3; /** * Creates a new Permission Data Instance using the given data. diff --git a/src/Services/UserSystem/PermissionPresetsHelper.php b/src/Services/UserSystem/PermissionPresetsHelper.php index a3ed01b8..3d125b27 100644 --- a/src/Services/UserSystem/PermissionPresetsHelper.php +++ b/src/Services/UserSystem/PermissionPresetsHelper.php @@ -111,8 +111,9 @@ class PermissionPresetsHelper //Allow to manage Oauth tokens $this->permissionResolver->setPermission($perm_holder, 'system', 'manage_oauth_tokens', PermissionData::ALLOW); - //Allow to show updates + //Allow to show and manage updates $this->permissionResolver->setPermission($perm_holder, 'system', 'show_updates', PermissionData::ALLOW); + $this->permissionResolver->setPermission($perm_holder, 'system', 'manage_updates', PermissionData::ALLOW); } diff --git a/src/Services/UserSystem/PermissionSchemaUpdater.php b/src/Services/UserSystem/PermissionSchemaUpdater.php index b3341322..104800dc 100644 --- a/src/Services/UserSystem/PermissionSchemaUpdater.php +++ b/src/Services/UserSystem/PermissionSchemaUpdater.php @@ -157,21 +157,4 @@ class PermissionSchemaUpdater $permissions->setPermissionValue('system', 'show_updates', $new_value); } } - - private function upgradeSchemaToVersion4(HasPermissionsInterface $holder): void //@phpstan-ignore-line This is called via reflection - { - $permissions = $holder->getPermissions(); - - //If the system.manage_updates permission is not defined yet, set it to true if the user can show updates AND has server_infos permission - //This ensures that admins who can view updates and server info can also manage (execute) updates - if (!$permissions->isPermissionSet('system', 'manage_updates')) { - - $new_value = TrinaryLogicHelper::and( - $permissions->getPermissionValue('system', 'show_updates'), - $permissions->getPermissionValue('system', 'server_infos') - ); - - $permissions->setPermissionValue('system', 'manage_updates', $new_value); - } - } } From 7ff07a7ab43d47ed0a4a7f4a462000a80e7c6039 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 2 Feb 2026 17:28:35 +0100 Subject: [PATCH 193/235] Remove Content-Security-Policy for maintenance mode --- .../MaintenanceModeSubscriber.php | 35 ++++++++++++++++--- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/src/EventSubscriber/MaintenanceModeSubscriber.php b/src/EventSubscriber/MaintenanceModeSubscriber.php index 60623b45..74b219a0 100644 --- a/src/EventSubscriber/MaintenanceModeSubscriber.php +++ b/src/EventSubscriber/MaintenanceModeSubscriber.php @@ -26,17 +26,19 @@ namespace App\EventSubscriber; use App\Services\System\UpdateExecutor; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpKernel\Event\FilterResponseEvent; use Symfony\Component\HttpKernel\Event\RequestEvent; +use Symfony\Component\HttpKernel\Event\ResponseEvent; use Symfony\Component\HttpKernel\KernelEvents; use Twig\Environment; /** * Blocks all web requests when maintenance mode is enabled during updates. */ -class MaintenanceModeSubscriber implements EventSubscriberInterface +readonly class MaintenanceModeSubscriber implements EventSubscriberInterface { - public function __construct(private readonly UpdateExecutor $updateExecutor, - private readonly Environment $twig) + public function __construct(private UpdateExecutor $updateExecutor, + private Environment $twig) { } @@ -45,7 +47,8 @@ class MaintenanceModeSubscriber implements EventSubscriberInterface { return [ // High priority to run before other listeners - KernelEvents::REQUEST => ['onKernelRequest', 512], + KernelEvents::REQUEST => ['onKernelRequest', 512], //High priority to run before other listeners + KernelEvents::RESPONSE => ['onKernelResponse', -512] // Low priority to run after other listeners ]; } @@ -62,7 +65,7 @@ class MaintenanceModeSubscriber implements EventSubscriberInterface } // Allow CLI requests - if (php_sapi_name() === 'cli') { + if (PHP_SAPI === 'cli') { return; } @@ -101,6 +104,28 @@ class MaintenanceModeSubscriber implements EventSubscriberInterface $event->setResponse($response); } + public function onKernelResponse(ResponseEvent $event) + { + // Only handle main requests + if (!$event->isMainRequest()) { + return; + } + + // Skip if not in maintenance mode + if (!$this->updateExecutor->isMaintenanceMode()) { + return; + } + + // Allow CLI requests + if (PHP_SAPI === 'cli') { + return; + } + + //Remove all Content-Security-Policy headers to allow loading resources during maintenance + $response = $event->getResponse(); + $response->headers->remove('Content-Security-Policy'); + } + /** * Generate a simple maintenance page HTML without Twig. */ From 6dbead6d109d02cda1103b771aacb3d0d386c8ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 2 Feb 2026 18:18:36 +0100 Subject: [PATCH 194/235] Centralized git logic from InstallationTypeDetector and UpdateChecker in GitVersionInfoProvider service --- src/Command/UpdateCommand.php | 3 +- src/Command/VersionCommand.php | 12 +- src/Controller/HomepageController.php | 8 +- src/Controller/ToolsController.php | 8 +- src/Controller/UpdateManagerController.php | 12 +- src/Services/Misc/GitVersionInfo.php | 83 ----------- .../System/GitVersionInfoProvider.php | 135 ++++++++++++++++++ src/Services/System/InstallationType.php | 65 +++++++++ .../System/InstallationTypeDetector.php | 92 ++---------- src/Services/System/UpdateChecker.php | 30 +--- src/State/PartDBInfoProvider.php | 8 +- 11 files changed, 242 insertions(+), 214 deletions(-) delete mode 100644 src/Services/Misc/GitVersionInfo.php create mode 100644 src/Services/System/GitVersionInfoProvider.php create mode 100644 src/Services/System/InstallationType.php diff --git a/src/Command/UpdateCommand.php b/src/Command/UpdateCommand.php index 4f2cae86..64fa2bad 100644 --- a/src/Command/UpdateCommand.php +++ b/src/Command/UpdateCommand.php @@ -23,7 +23,6 @@ declare(strict_types=1); namespace App\Command; -use App\Services\System\InstallationType; use App\Services\System\UpdateChecker; use App\Services\System\UpdateExecutor; use Symfony\Component\Console\Attribute\AsCommand; @@ -134,7 +133,7 @@ HELP // Handle --refresh option if ($input->getOption('refresh')) { $io->text('Refreshing version information...'); - $this->updateChecker->refreshGitInfo(); + $this->updateChecker->refreshVersionInfo(); $io->success('Version cache cleared.'); } diff --git a/src/Command/VersionCommand.php b/src/Command/VersionCommand.php index d2ce75e1..d09def8f 100644 --- a/src/Command/VersionCommand.php +++ b/src/Command/VersionCommand.php @@ -22,9 +22,9 @@ declare(strict_types=1); */ namespace App\Command; -use Symfony\Component\Console\Attribute\AsCommand; -use App\Services\Misc\GitVersionInfo; +use App\Services\System\GitVersionInfoProvider; use Shivas\VersioningBundle\Service\VersionManagerInterface; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; @@ -33,7 +33,7 @@ use Symfony\Component\Console\Style\SymfonyStyle; #[AsCommand('partdb:version|app:version', 'Shows the currently installed version of Part-DB.')] class VersionCommand extends Command { - public function __construct(protected VersionManagerInterface $versionManager, protected GitVersionInfo $gitVersionInfo) + public function __construct(protected VersionManagerInterface $versionManager, protected GitVersionInfoProvider $gitVersionInfo) { parent::__construct(); } @@ -48,9 +48,9 @@ class VersionCommand extends Command $message = 'Part-DB version: '. $this->versionManager->getVersion()->toString(); - if ($this->gitVersionInfo->getGitBranchName() !== null) { - $message .= ' Git branch: '. $this->gitVersionInfo->getGitBranchName(); - $message .= ', Git commit: '. $this->gitVersionInfo->getGitCommitHash(); + if ($this->gitVersionInfo->getBranchName() !== null) { + $message .= ' Git branch: '. $this->gitVersionInfo->getBranchName(); + $message .= ', Git commit: '. $this->gitVersionInfo->getCommitHash(); } $io->success($message); diff --git a/src/Controller/HomepageController.php b/src/Controller/HomepageController.php index 076e790b..6192c249 100644 --- a/src/Controller/HomepageController.php +++ b/src/Controller/HomepageController.php @@ -24,8 +24,8 @@ namespace App\Controller; use App\DataTables\LogDataTable; use App\Entity\Parts\Part; -use App\Services\Misc\GitVersionInfo; use App\Services\System\BannerHelper; +use App\Services\System\GitVersionInfoProvider; use App\Services\System\UpdateAvailableManager; use Doctrine\ORM\EntityManagerInterface; use Omines\DataTablesBundle\DataTableFactory; @@ -43,7 +43,7 @@ class HomepageController extends AbstractController #[Route(path: '/', name: 'homepage')] - public function homepage(Request $request, GitVersionInfo $versionInfo, EntityManagerInterface $entityManager, + public function homepage(Request $request, GitVersionInfoProvider $versionInfo, EntityManagerInterface $entityManager, UpdateAvailableManager $updateAvailableManager): Response { $this->denyAccessUnlessGranted('HAS_ACCESS_PERMISSIONS'); @@ -77,8 +77,8 @@ class HomepageController extends AbstractController return $this->render('homepage.html.twig', [ 'banner' => $this->bannerHelper->getBanner(), - 'git_branch' => $versionInfo->getGitBranchName(), - 'git_commit' => $versionInfo->getGitCommitHash(), + 'git_branch' => $versionInfo->getBranchName(), + 'git_commit' => $versionInfo->getCommitHash(), 'show_first_steps' => $show_first_steps, 'datatable' => $table, 'new_version_available' => $updateAvailableManager->isUpdateAvailable(), diff --git a/src/Controller/ToolsController.php b/src/Controller/ToolsController.php index d78aff62..f1ed888c 100644 --- a/src/Controller/ToolsController.php +++ b/src/Controller/ToolsController.php @@ -27,7 +27,7 @@ use App\Services\Attachments\AttachmentURLGenerator; use App\Services\Attachments\BuiltinAttachmentsFinder; use App\Services\Doctrine\DBInfoHelper; use App\Services\Doctrine\NatsortDebugHelper; -use App\Services\Misc\GitVersionInfo; +use App\Services\System\GitVersionInfoProvider; use App\Services\System\UpdateAvailableManager; use App\Settings\AppSettings; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; @@ -47,7 +47,7 @@ class ToolsController extends AbstractController } #[Route(path: '/server_infos', name: 'tools_server_infos')] - public function systemInfos(GitVersionInfo $versionInfo, DBInfoHelper $DBInfoHelper, NatsortDebugHelper $natsortDebugHelper, + public function systemInfos(GitVersionInfoProvider $versionInfo, DBInfoHelper $DBInfoHelper, NatsortDebugHelper $natsortDebugHelper, AttachmentSubmitHandler $attachmentSubmitHandler, UpdateAvailableManager $updateAvailableManager, AppSettings $settings): Response { @@ -55,8 +55,8 @@ class ToolsController extends AbstractController return $this->render('tools/server_infos/server_infos.html.twig', [ //Part-DB section - 'git_branch' => $versionInfo->getGitBranchName(), - 'git_commit' => $versionInfo->getGitCommitHash(), + 'git_branch' => $versionInfo->getBranchName(), + 'git_commit' => $versionInfo->getCommitHash(), 'default_locale' => $settings->system->localization->locale, 'default_timezone' => $settings->system->localization->timezone, 'default_currency' => $settings->system->localization->baseCurrency, diff --git a/src/Controller/UpdateManagerController.php b/src/Controller/UpdateManagerController.php index b247cb38..08f7c77f 100644 --- a/src/Controller/UpdateManagerController.php +++ b/src/Controller/UpdateManagerController.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace App\Controller; +use App\Services\System\BackupManager; use App\Services\System\UpdateChecker; use App\Services\System\UpdateExecutor; use Shivas\VersioningBundle\Service\VersionManagerInterface; @@ -47,6 +48,7 @@ class UpdateManagerController extends AbstractController private readonly UpdateChecker $updateChecker, private readonly UpdateExecutor $updateExecutor, private readonly VersionManagerInterface $versionManager, + private readonly BackupManager $backupManager, #[Autowire(env: 'bool:DISABLE_WEB_UPDATES')] private readonly bool $webUpdatesDisabled = false, #[Autowire(env: 'bool:DISABLE_BACKUP_RESTORE')] @@ -96,7 +98,7 @@ class UpdateManagerController extends AbstractController 'is_maintenance' => $this->updateExecutor->isMaintenanceMode(), 'maintenance_info' => $this->updateExecutor->getMaintenanceInfo(), 'update_logs' => $this->updateExecutor->getUpdateLogs(), - 'backups' => $this->updateExecutor->getBackups(), + 'backups' => $this->backupManager->getBackups(), 'web_updates_disabled' => $this->webUpdatesDisabled, 'backup_restore_disabled' => $this->backupRestoreDisabled, ]); @@ -131,7 +133,7 @@ class UpdateManagerController extends AbstractController return $this->json(['error' => 'Invalid CSRF token'], Response::HTTP_FORBIDDEN); } - $this->updateChecker->refreshGitInfo(); + $this->updateChecker->refreshVersionInfo(); return $this->json([ 'success' => true, @@ -173,7 +175,7 @@ class UpdateManagerController extends AbstractController #[Route('/log/{filename}', name: 'admin_update_manager_log', methods: ['GET'])] public function viewLog(string $filename): Response { - $this->denyAccessUnlessGranted('@system.show_updates'); + $this->denyAccessUnlessGranted('@system.manage_updates'); // Security: Only allow viewing files from the update logs directory $logs = $this->updateExecutor->getUpdateLogs(); @@ -303,7 +305,7 @@ class UpdateManagerController extends AbstractController { $this->denyAccessUnlessGranted('@system.manage_updates'); - $details = $this->updateExecutor->getBackupDetails($filename); + $details = $this->backupManager->getBackupDetails($filename); if (!$details) { return $this->json(['error' => 'Backup not found'], 404); @@ -344,7 +346,7 @@ class UpdateManagerController extends AbstractController } // Verify the backup exists - $backupDetails = $this->updateExecutor->getBackupDetails($filename); + $backupDetails = $this->backupManager->getBackupDetails($filename); if (!$backupDetails) { $this->addFlash('error', 'Backup file not found.'); return $this->redirectToRoute('admin_update_manager'); diff --git a/src/Services/Misc/GitVersionInfo.php b/src/Services/Misc/GitVersionInfo.php deleted file mode 100644 index 3c079f4f..00000000 --- a/src/Services/Misc/GitVersionInfo.php +++ /dev/null @@ -1,83 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace App\Services\Misc; - -use Symfony\Component\HttpKernel\KernelInterface; - -class GitVersionInfo -{ - protected string $project_dir; - - public function __construct(KernelInterface $kernel) - { - $this->project_dir = $kernel->getProjectDir(); - } - - /** - * Get the Git branch name of the installed system. - * - * @return string|null The current git branch name. Null, if this is no Git installation - */ - public function getGitBranchName(): ?string - { - if (is_file($this->project_dir.'/.git/HEAD')) { - $git = file($this->project_dir.'/.git/HEAD'); - $head = explode('/', $git[0], 3); - - if (!isset($head[2])) { - return null; - } - - return trim($head[2]); - } - - return null; // this is not a Git installation - } - - /** - * Get hash of the last git commit (on remote "origin"!). - * - * If this method does not work, try to make a "git pull" first! - * - * @param int $length if this is smaller than 40, only the first $length characters will be returned - * - * @return string|null The hash of the last commit, null If this is no Git installation - */ - public function getGitCommitHash(int $length = 7): ?string - { - $filename = $this->project_dir.'/.git/refs/remotes/origin/'.$this->getGitBranchName(); - if (is_file($filename)) { - $head = file($filename); - - if (!isset($head[0])) { - return null; - } - - $hash = $head[0]; - - return substr($hash, 0, $length); - } - - return null; // this is not a Git installation - } -} diff --git a/src/Services/System/GitVersionInfoProvider.php b/src/Services/System/GitVersionInfoProvider.php new file mode 100644 index 00000000..6d067333 --- /dev/null +++ b/src/Services/System/GitVersionInfoProvider.php @@ -0,0 +1,135 @@ +. + */ + +declare(strict_types=1); + +namespace App\Services\System; + +use Symfony\Component\DependencyInjection\Attribute\Autowire; +use Symfony\Component\Process\Process; + +/** + * This service provides information about the current Git installation (if any). + */ +final readonly class GitVersionInfoProvider +{ + public function __construct(#[Autowire(param: 'kernel.project_dir')] private string $project_dir) + { + } + + /** + * Check if the project directory is a Git repository. + * @return bool + */ + public function isGitRepo(): bool + { + return is_dir($this->getGitDirectory()); + } + + /** + * Get the path to the Git directory of the installed system without a trailing slash. + * Even if this is no Git installation, the path is returned. + * @return string The path to the Git directory of the installed system + */ + public function getGitDirectory(): string + { + return $this->project_dir . '/.git'; + } + + /** + * Get the Git branch name of the installed system. + * + * @return string|null The current git branch name. Null, if this is no Git installation + */ + public function getBranchName(): ?string + { + if (is_file($this->getGitDirectory() . '/HEAD')) { + $git = file($this->getGitDirectory() . '/HEAD'); + $head = explode('/', $git[0], 3); + + if (!isset($head[2])) { + return null; + } + + return trim($head[2]); + } + + return null; // this is not a Git installation + } + + /** + * Get hash of the last git commit (on remote "origin"!). + * + * If this method does not work, try to make a "git pull" first! + * + * @param int $length if this is smaller than 40, only the first $length characters will be returned + * + * @return string|null The hash of the last commit, null If this is no Git installation + */ + public function getCommitHash(int $length = 8): ?string + { + $filename = $this->getGitDirectory() . '/refs/remotes/origin/'.$this->getBranchName(); + if (is_file($filename)) { + $head = file($filename); + + if (!isset($head[0])) { + return null; + } + + $hash = $head[0]; + + return substr($hash, 0, $length); + } + + return null; // this is not a Git installation + } + + /** + * Get the Git remote URL of the installed system. + */ + public function getRemoteURL(): ?string + { + // Get remote URL + $configFile = $this->getGitDirectory() . '/config'; + if (file_exists($configFile)) { + $config = file_get_contents($configFile); + if (preg_match('#url = (.+)#', $config, $matches)) { + return trim($matches[1]); + } + } + + return null; // this is not a Git installation + } + + /** + * Check if there are local changes in the Git repository. + * Attention: This runs a git command, which might be slow! + * @return bool|null True if there are local changes, false if not, null if this is not a Git installation + */ + public function hasLocalChanges(): ?bool + { + $process = new Process(['git', 'status', '--porcelain'], $this->project_dir); + $process->run(); + if (!$process->isSuccessful()) { + return null; // this is not a Git installation + } + return !empty(trim($process->getOutput())); + } +} diff --git a/src/Services/System/InstallationType.php b/src/Services/System/InstallationType.php new file mode 100644 index 00000000..74479bb9 --- /dev/null +++ b/src/Services/System/InstallationType.php @@ -0,0 +1,65 @@ +. + */ + +declare(strict_types=1); + +namespace App\Services\System; + +/** + * Detects the installation type of Part-DB to determine the appropriate update strategy. + */ +enum InstallationType: string +{ + case GIT = 'git'; + case DOCKER = 'docker'; + case ZIP_RELEASE = 'zip_release'; + case UNKNOWN = 'unknown'; + + public function getLabel(): string + { + return match ($this) { + self::GIT => 'Git Clone', + self::DOCKER => 'Docker', + self::ZIP_RELEASE => 'Release Archive (ZIP File)', + self::UNKNOWN => 'Unknown', + }; + } + + public function supportsAutoUpdate(): bool + { + return match ($this) { + self::GIT => true, + self::DOCKER => false, + // ZIP_RELEASE auto-update not yet implemented + self::ZIP_RELEASE => false, + self::UNKNOWN => false, + }; + } + + public function getUpdateInstructions(): string + { + return match ($this) { + self::GIT => 'Run: php bin/console partdb:update', + self::DOCKER => 'Pull the new Docker image and recreate the container: docker-compose pull && docker-compose up -d', + self::ZIP_RELEASE => 'Download the new release ZIP from GitHub, extract it over your installation, and run: php bin/console doctrine:migrations:migrate && php bin/console cache:clear', + self::UNKNOWN => 'Unable to determine installation type. Please update manually.', + }; + } +} diff --git a/src/Services/System/InstallationTypeDetector.php b/src/Services/System/InstallationTypeDetector.php index 4d04c55b..9f9fbdb8 100644 --- a/src/Services/System/InstallationTypeDetector.php +++ b/src/Services/System/InstallationTypeDetector.php @@ -26,51 +26,9 @@ namespace App\Services\System; use Symfony\Component\DependencyInjection\Attribute\Autowire; use Symfony\Component\Process\Process; -/** - * Detects the installation type of Part-DB to determine the appropriate update strategy. - */ -enum InstallationType: string +readonly class InstallationTypeDetector { - case GIT = 'git'; - case DOCKER = 'docker'; - case ZIP_RELEASE = 'zip_release'; - case UNKNOWN = 'unknown'; - - public function getLabel(): string - { - return match($this) { - self::GIT => 'Git Clone', - self::DOCKER => 'Docker', - self::ZIP_RELEASE => 'Release Archive', - self::UNKNOWN => 'Unknown', - }; - } - - public function supportsAutoUpdate(): bool - { - return match($this) { - self::GIT => true, - self::DOCKER => false, - // ZIP_RELEASE auto-update not yet implemented - self::ZIP_RELEASE => false, - self::UNKNOWN => false, - }; - } - - public function getUpdateInstructions(): string - { - return match($this) { - self::GIT => 'Run: php bin/console partdb:update', - self::DOCKER => 'Pull the new Docker image and recreate the container: docker-compose pull && docker-compose up -d', - self::ZIP_RELEASE => 'Download the new release ZIP from GitHub, extract it over your installation, and run: php bin/console doctrine:migrations:migrate && php bin/console cache:clear', - self::UNKNOWN => 'Unable to determine installation type. Please update manually.', - }; - } -} - -class InstallationTypeDetector -{ - public function __construct(#[Autowire(param: 'kernel.project_dir')] private readonly string $project_dir) + public function __construct(#[Autowire(param: 'kernel.project_dir')] private string $project_dir, private GitVersionInfoProvider $gitVersionInfoProvider) { } @@ -129,7 +87,7 @@ class InstallationTypeDetector */ public function isGitInstall(): bool { - return is_dir($this->project_dir . '/.git'); + return $this->gitVersionInfoProvider->isGitRepo(); } /** @@ -169,51 +127,21 @@ class InstallationTypeDetector /** * Get Git-specific information. + * @return array{branch: string|null, commit: string|null, remote_url: string|null, has_local_changes: bool} */ private function getGitInfo(): array { - $info = [ - 'branch' => null, - 'commit' => null, - 'remote_url' => null, - 'has_local_changes' => false, + return [ + 'branch' => $this->gitVersionInfoProvider->getBranchName(), + 'commit' => $this->gitVersionInfoProvider->getCommitHash(8), + 'remote_url' => $this->gitVersionInfoProvider->getRemoteURL(), + 'has_local_changes' => $this->gitVersionInfoProvider->hasLocalChanges() ?? false, ]; - - // Get branch - $headFile = $this->project_dir . '/.git/HEAD'; - if (file_exists($headFile)) { - $head = file_get_contents($headFile); - if (preg_match('#ref: refs/heads/(.+)#', $head, $matches)) { - $info['branch'] = trim($matches[1]); - } - } - - // Get remote URL - $configFile = $this->project_dir . '/.git/config'; - if (file_exists($configFile)) { - $config = file_get_contents($configFile); - if (preg_match('#url = (.+)#', $config, $matches)) { - $info['remote_url'] = trim($matches[1]); - } - } - - // Get commit hash - $process = new Process(['git', 'rev-parse', '--short', 'HEAD'], $this->project_dir); - $process->run(); - if ($process->isSuccessful()) { - $info['commit'] = trim($process->getOutput()); - } - - // Check for local changes - $process = new Process(['git', 'status', '--porcelain'], $this->project_dir); - $process->run(); - $info['has_local_changes'] = !empty(trim($process->getOutput())); - - return $info; } /** * Get Docker-specific information. + * @return array{container_id: string|null, image: string|null} */ private function getDockerInfo(): array { diff --git a/src/Services/System/UpdateChecker.php b/src/Services/System/UpdateChecker.php index 49a132ee..b7a90296 100644 --- a/src/Services/System/UpdateChecker.php +++ b/src/Services/System/UpdateChecker.php @@ -48,6 +48,7 @@ class UpdateChecker private readonly CacheInterface $updateCache, private readonly VersionManagerInterface $versionManager, private readonly PrivacySettings $privacySettings, private readonly LoggerInterface $logger, private readonly InstallationTypeDetector $installationTypeDetector, + private readonly GitVersionInfoProvider $gitVersionInfoProvider, #[Autowire(param: 'kernel.debug')] private readonly bool $is_dev_mode, #[Autowire(param: 'kernel.project_dir')] private readonly string $project_dir) { @@ -84,34 +85,15 @@ class UpdateChecker 'is_git_install' => false, ]; - $gitDir = $this->project_dir . '/.git'; - - if (!is_dir($gitDir)) { + if (!$this->gitVersionInfoProvider->isGitRepo()) { return $info; } $info['is_git_install'] = true; - // Get branch from HEAD file - $headFile = $gitDir . '/HEAD'; - if (file_exists($headFile)) { - $head = file_get_contents($headFile); - if (preg_match('#ref: refs/heads/(.+)#', $head, $matches)) { - $info['branch'] = trim($matches[1]); - } - } - - // Get current commit - $process = new Process(['git', 'rev-parse', '--short', 'HEAD'], $this->project_dir); - $process->run(); - if ($process->isSuccessful()) { - $info['commit'] = trim($process->getOutput()); - } - - // Check for local changes - $process = new Process(['git', 'status', '--porcelain'], $this->project_dir); - $process->run(); - $info['has_local_changes'] = !empty(trim($process->getOutput())); + $info['branch'] = $this->gitVersionInfoProvider->getBranchName(); + $info['commit'] = $this->gitVersionInfoProvider->getCommitHash(8); + $info['has_local_changes'] = $this->gitVersionInfoProvider->hasLocalChanges(); // Get commits behind (fetch first) if ($info['branch']) { @@ -151,7 +133,7 @@ class UpdateChecker /** * Force refresh git information by invalidating cache. */ - public function refreshGitInfo(): void + public function refreshVersionInfo(): void { $gitInfo = $this->getGitInfo(); if ($gitInfo['branch']) { diff --git a/src/State/PartDBInfoProvider.php b/src/State/PartDBInfoProvider.php index b3496cad..b29ef227 100644 --- a/src/State/PartDBInfoProvider.php +++ b/src/State/PartDBInfoProvider.php @@ -7,8 +7,8 @@ namespace App\State; use ApiPlatform\Metadata\Operation; use ApiPlatform\State\ProviderInterface; use App\ApiResource\PartDBInfo; -use App\Services\Misc\GitVersionInfo; use App\Services\System\BannerHelper; +use App\Services\System\GitVersionInfoProvider; use App\Settings\SystemSettings\CustomizationSettings; use App\Settings\SystemSettings\LocalizationSettings; use Shivas\VersioningBundle\Service\VersionManagerInterface; @@ -17,7 +17,7 @@ class PartDBInfoProvider implements ProviderInterface { public function __construct(private readonly VersionManagerInterface $versionManager, - private readonly GitVersionInfo $gitVersionInfo, + private readonly GitVersionInfoProvider $gitVersionInfo, private readonly BannerHelper $bannerHelper, private readonly string $default_uri, private readonly LocalizationSettings $localizationSettings, @@ -31,8 +31,8 @@ class PartDBInfoProvider implements ProviderInterface { return new PartDBInfo( version: $this->versionManager->getVersion()->toString(), - git_branch: $this->gitVersionInfo->getGitBranchName(), - git_commit: $this->gitVersionInfo->getGitCommitHash(), + git_branch: $this->gitVersionInfo->getBranchName(), + git_commit: $this->gitVersionInfo->getCommitHash(), title: $this->customizationSettings->instanceName, banner: $this->bannerHelper->getBanner(), default_uri: $this->default_uri, From 68ff0721ce486502fe717d7aaf2cef6be76b892f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 2 Feb 2026 18:44:44 +0100 Subject: [PATCH 195/235] Merged functionality from UpdateAvailableManager and UpdateChecker --- src/Command/UpdateCommand.php | 4 +- src/Controller/HomepageController.php | 4 +- src/Controller/ToolsController.php | 4 +- src/Controller/UpdateManagerController.php | 2 +- ...eManager.php => UpdateAvailableFacade.php} | 46 ++++--------------- src/Services/System/UpdateChecker.php | 27 ++++++----- src/Twig/UpdateExtension.php | 4 +- 7 files changed, 34 insertions(+), 57 deletions(-) rename src/Services/System/{UpdateAvailableManager.php => UpdateAvailableFacade.php} (67%) diff --git a/src/Command/UpdateCommand.php b/src/Command/UpdateCommand.php index 64fa2bad..ca6c8399 100644 --- a/src/Command/UpdateCommand.php +++ b/src/Command/UpdateCommand.php @@ -166,7 +166,7 @@ HELP $includePrerelease = $input->getOption('include-prerelease'); if (!$targetVersion) { - $latest = $this->updateChecker->getLatestRelease($includePrerelease); + $latest = $this->updateChecker->getLatestVersion($includePrerelease); if (!$latest) { $io->error('Could not determine the latest version. Please specify a version manually.'); return Command::FAILURE; @@ -175,7 +175,7 @@ HELP } // Validate target version - if (!$this->updateChecker->isNewerVersion($targetVersion)) { + if (!$this->updateChecker->isNewerVersionThanCurrent($targetVersion)) { $io->warning(sprintf( 'Version %s is not newer than the current version %s.', $targetVersion, diff --git a/src/Controller/HomepageController.php b/src/Controller/HomepageController.php index 6192c249..6f863a3c 100644 --- a/src/Controller/HomepageController.php +++ b/src/Controller/HomepageController.php @@ -26,7 +26,7 @@ use App\DataTables\LogDataTable; use App\Entity\Parts\Part; use App\Services\System\BannerHelper; use App\Services\System\GitVersionInfoProvider; -use App\Services\System\UpdateAvailableManager; +use App\Services\System\UpdateAvailableFacade; use Doctrine\ORM\EntityManagerInterface; use Omines\DataTablesBundle\DataTableFactory; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; @@ -44,7 +44,7 @@ class HomepageController extends AbstractController #[Route(path: '/', name: 'homepage')] public function homepage(Request $request, GitVersionInfoProvider $versionInfo, EntityManagerInterface $entityManager, - UpdateAvailableManager $updateAvailableManager): Response + UpdateAvailableFacade $updateAvailableManager): Response { $this->denyAccessUnlessGranted('HAS_ACCESS_PERMISSIONS'); diff --git a/src/Controller/ToolsController.php b/src/Controller/ToolsController.php index f1ed888c..76dffb4d 100644 --- a/src/Controller/ToolsController.php +++ b/src/Controller/ToolsController.php @@ -28,7 +28,7 @@ use App\Services\Attachments\BuiltinAttachmentsFinder; use App\Services\Doctrine\DBInfoHelper; use App\Services\Doctrine\NatsortDebugHelper; use App\Services\System\GitVersionInfoProvider; -use App\Services\System\UpdateAvailableManager; +use App\Services\System\UpdateAvailableFacade; use App\Settings\AppSettings; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; @@ -48,7 +48,7 @@ class ToolsController extends AbstractController #[Route(path: '/server_infos', name: 'tools_server_infos')] public function systemInfos(GitVersionInfoProvider $versionInfo, DBInfoHelper $DBInfoHelper, NatsortDebugHelper $natsortDebugHelper, - AttachmentSubmitHandler $attachmentSubmitHandler, UpdateAvailableManager $updateAvailableManager, + AttachmentSubmitHandler $attachmentSubmitHandler, UpdateAvailableFacade $updateAvailableManager, AppSettings $settings): Response { $this->denyAccessUnlessGranted('@system.server_infos'); diff --git a/src/Controller/UpdateManagerController.php b/src/Controller/UpdateManagerController.php index 08f7c77f..d88cab5d 100644 --- a/src/Controller/UpdateManagerController.php +++ b/src/Controller/UpdateManagerController.php @@ -226,7 +226,7 @@ class UpdateManagerController extends AbstractController if (!$targetVersion) { // Get latest version if not specified - $latest = $this->updateChecker->getLatestRelease(); + $latest = $this->updateChecker->getLatestVersion(); if (!$latest) { $this->addFlash('error', 'Could not determine target version.'); return $this->redirectToRoute('admin_update_manager'); diff --git a/src/Services/System/UpdateAvailableManager.php b/src/Services/System/UpdateAvailableFacade.php similarity index 67% rename from src/Services/System/UpdateAvailableManager.php rename to src/Services/System/UpdateAvailableFacade.php index 82cfb84e..2a00321c 100644 --- a/src/Services/System/UpdateAvailableManager.php +++ b/src/Services/System/UpdateAvailableFacade.php @@ -35,17 +35,18 @@ use Version\Version; /** * This class checks if a new version of Part-DB is available. */ -class UpdateAvailableManager +class UpdateAvailableFacade { private const API_URL = 'https://api.github.com/repos/Part-DB/Part-DB-server/releases/latest'; private const CACHE_KEY = 'uam_latest_version'; private const CACHE_TTL = 60 * 60 * 24 * 2; // 2 day - public function __construct(private readonly HttpClientInterface $httpClient, - private readonly CacheInterface $updateCache, private readonly VersionManagerInterface $versionManager, - private readonly PrivacySettings $privacySettings, private readonly LoggerInterface $logger, - #[Autowire(param: 'kernel.debug')] private readonly bool $is_dev_mode) + public function __construct( + private readonly CacheInterface $updateCache, + private readonly PrivacySettings $privacySettings, + private readonly UpdateChecker $updateChecker, + ) { } @@ -89,9 +90,7 @@ class UpdateAvailableManager } $latestVersion = $this->getLatestVersion(); - $currentVersion = $this->versionManager->getVersion(); - - return $latestVersion->isGreaterThan($currentVersion); + return $this->updateChecker->isNewerVersionThanCurrent($latestVersion); } /** @@ -111,34 +110,7 @@ class UpdateAvailableManager return $this->updateCache->get(self::CACHE_KEY, function (ItemInterface $item) { $item->expiresAfter(self::CACHE_TTL); - try { - $response = $this->httpClient->request('GET', self::API_URL); - $result = $response->toArray(); - $tag_name = $result['tag_name']; - - // Remove the leading 'v' from the tag name - $version = substr($tag_name, 1); - - return [ - 'version' => $version, - 'url' => $result['html_url'], - ]; - } catch (\Exception $e) { - //When we are in dev mode, throw the exception, otherwise just silently log it - if ($this->is_dev_mode) { - throw $e; - } - - //In the case of an error, try it again after half of the cache time - $item->expiresAfter(self::CACHE_TTL / 2); - - $this->logger->error('Checking for updates failed: ' . $e->getMessage()); - - return [ - 'version' => '0.0.1', - 'url' => 'update-checking-error' - ]; - } + return $this->updateChecker->getLatestVersion(); }); } -} \ No newline at end of file +} diff --git a/src/Services/System/UpdateChecker.php b/src/Services/System/UpdateChecker.php index b7a90296..e388d51f 100644 --- a/src/Services/System/UpdateChecker.php +++ b/src/Services/System/UpdateChecker.php @@ -75,7 +75,7 @@ class UpdateChecker * Get Git repository information. * @return array{branch: ?string, commit: ?string, has_local_changes: bool, commits_behind: int, is_git_install: bool} */ - public function getGitInfo(): array + private function getGitInfo(): array { $info = [ 'branch' => null, @@ -113,7 +113,7 @@ class UpdateChecker return 0; } - $cacheKey = self::CACHE_KEY_COMMITS . '_' . md5($branch); + $cacheKey = self::CACHE_KEY_COMMITS . '_' . hash('xxh3', $branch); return $this->updateCache->get($cacheKey, function (ItemInterface $item) use ($branch) { $item->expiresAfter(self::CACHE_TTL); @@ -135,9 +135,9 @@ class UpdateChecker */ public function refreshVersionInfo(): void { - $gitInfo = $this->getGitInfo(); - if ($gitInfo['branch']) { - $this->updateCache->delete(self::CACHE_KEY_COMMITS . '_' . md5($gitInfo['branch'])); + $gitBranch = $this->gitVersionInfoProvider->getBranchName(); + if ($gitBranch) { + $this->updateCache->delete(self::CACHE_KEY_COMMITS . '_' . hash('xxh3', $gitBranch)); } $this->updateCache->delete(self::CACHE_KEY_RELEASES); } @@ -150,7 +150,10 @@ class UpdateChecker public function getAvailableReleases(int $limit = 10): array { if (!$this->privacySettings->checkForUpdates) { - return []; + return [ //If we don't want to check for updates, we can return dummy data + 'version' => '0.0.1', + 'url' => 'update-checking-disabled' + ]; } return $this->updateCache->get(self::CACHE_KEY_RELEASES, function (ItemInterface $item) use ($limit) { @@ -212,7 +215,7 @@ class UpdateChecker * Get the latest stable release. * @return array{version: string, tag: string, name: string, url: string, published_at: string, body: string, prerelease: bool, assets: array}|null */ - public function getLatestRelease(bool $includePrerelease = false): ?array + public function getLatestVersion(bool $includePrerelease = false): ?array { $releases = $this->getAvailableReleases(); @@ -236,11 +239,13 @@ class UpdateChecker /** * Check if a specific version is newer than current. */ - public function isNewerVersion(string $version): bool + public function isNewerVersionThanCurrent(Version|string $version): bool { + if ($version instanceof Version) { + return $version->isGreaterThan($this->getCurrentVersion()); + } try { - $targetVersion = Version::fromString(ltrim($version, 'v')); - return $targetVersion->isGreaterThan($this->getCurrentVersion()); + return Version::fromString(ltrim($version, 'v'))->isGreaterThan($this->getCurrentVersion()); } catch (\Exception) { return false; } @@ -254,7 +259,7 @@ class UpdateChecker public function getUpdateStatus(): array { $current = $this->getCurrentVersion(); - $latest = $this->getLatestRelease(); + $latest = $this->getLatestVersion(); $gitInfo = $this->getGitInfo(); $installInfo = $this->installationTypeDetector->getInstallationInfo(); diff --git a/src/Twig/UpdateExtension.php b/src/Twig/UpdateExtension.php index 10264d12..ee3bb16c 100644 --- a/src/Twig/UpdateExtension.php +++ b/src/Twig/UpdateExtension.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace App\Twig; -use App\Services\System\UpdateAvailableManager; +use App\Services\System\UpdateAvailableFacade; use Symfony\Bundle\SecurityBundle\Security; use Twig\Extension\AbstractExtension; use Twig\TwigFunction; @@ -33,7 +33,7 @@ use Twig\TwigFunction; */ final class UpdateExtension extends AbstractExtension { - public function __construct(private readonly UpdateAvailableManager $updateAvailableManager, + public function __construct(private readonly UpdateAvailableFacade $updateAvailableManager, private readonly Security $security) { From 1ccc3ad44018d3b5ab4012b7639ae21fdcf348f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 2 Feb 2026 19:48:27 +0100 Subject: [PATCH 196/235] Extracted logic used by both BackupManager and UpdateExecutor to new service --- src/Services/System/BackupManager.php | 56 ++++-------------- src/Services/System/CommandRunHelper.php | 75 ++++++++++++++++++++++++ src/Services/System/UpdateExecutor.php | 33 +---------- 3 files changed, 89 insertions(+), 75 deletions(-) create mode 100644 src/Services/System/CommandRunHelper.php diff --git a/src/Services/System/BackupManager.php b/src/Services/System/BackupManager.php index b646e433..9bdc7f71 100644 --- a/src/Services/System/BackupManager.php +++ b/src/Services/System/BackupManager.php @@ -35,17 +35,18 @@ use Symfony\Component\Process\Process; * This service handles all backup-related operations and can be used * by the Update Manager, CLI commands, or other services. */ -class BackupManager +readonly class BackupManager { private const BACKUP_DIR = 'var/backups'; public function __construct( #[Autowire(param: 'kernel.project_dir')] - private readonly string $projectDir, - private readonly LoggerInterface $logger, - private readonly Filesystem $filesystem, - private readonly VersionManagerInterface $versionManager, - private readonly EntityManagerInterface $entityManager, + private string $projectDir, + private LoggerInterface $logger, + private Filesystem $filesystem, + private VersionManagerInterface $versionManager, + private EntityManagerInterface $entityManager, + private CommandRunHelper $commandRunHelper, ) { } @@ -90,7 +91,7 @@ class BackupManager $backupFile = $backupDir . '/' . $prefix . '-v' . $currentVersion . '-' . date('Y-m-d-His') . '.zip'; } - $this->runCommand([ + $this->commandRunHelper->runCommand([ 'php', 'bin/console', 'partdb:backup', '--full', '--overwrite', @@ -103,7 +104,7 @@ class BackupManager } /** - * Get list of backups. + * Get list of backups, that are available, sorted by date descending. * * @return array */ @@ -126,7 +127,7 @@ class BackupManager } // Sort by date descending - usort($backups, fn($a, $b) => $b['date'] <=> $a['date']); + usort($backups, static fn($a, $b) => $b['date'] <=> $a['date']); return $backups; } @@ -135,7 +136,7 @@ class BackupManager * Get details about a specific backup file. * * @param string $filename The backup filename - * @return array|null Backup details or null if not found + * @return null|array{file: string, path: string, date: int, size: int, from_version: ?string, to_version: ?string, contains_database?: bool, contains_config?: bool, contains_attachments?: bool} Backup details or null if not found */ public function getBackupDetails(string $filename): ?array { @@ -449,39 +450,4 @@ class BackupManager $this->filesystem->mirror($uploads, $this->projectDir . '/uploads', null, ['override' => true]); } } - - /** - * Run a shell command with proper error handling. - */ - private function runCommand(array $command, string $description, int $timeout = 120): string - { - $process = new Process($command, $this->projectDir); - $process->setTimeout($timeout); - - // Set environment variables - $currentEnv = getenv(); - if (!is_array($currentEnv)) { - $currentEnv = []; - } - $env = array_merge($currentEnv, [ - 'HOME' => $this->projectDir, - 'COMPOSER_HOME' => $this->projectDir . '/var/composer', - 'PATH' => getenv('PATH') ?: '/usr/local/bin:/usr/bin:/bin', - ]); - $process->setEnv($env); - - $output = ''; - $process->run(function ($type, $buffer) use (&$output) { - $output .= $buffer; - }); - - if (!$process->isSuccessful()) { - $errorOutput = $process->getErrorOutput() ?: $process->getOutput(); - throw new \RuntimeException( - sprintf('%s failed: %s', $description, trim($errorOutput)) - ); - } - - return $output; - } } diff --git a/src/Services/System/CommandRunHelper.php b/src/Services/System/CommandRunHelper.php new file mode 100644 index 00000000..7a144d5f --- /dev/null +++ b/src/Services/System/CommandRunHelper.php @@ -0,0 +1,75 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Services\System; + +use Symfony\Component\DependencyInjection\Attribute\Autowire; +use Symfony\Component\Process\Process; + +class CommandRunHelper +{ + private UpdateExecutor $updateExecutor; + + public function __construct( + #[Autowire(param: 'kernel.project_dir')] private readonly string $project_dir + ) + { + } + + /** + * Run a shell command with proper error handling. + */ + public function runCommand(array $command, string $description, int $timeout = 120): string + { + $process = new Process($command, $this->project_dir); + $process->setTimeout($timeout); + + // Set environment variables needed for Composer and other tools + // This is especially important when running as www-data which may not have HOME set + // We inherit from current environment and override/add specific variables + $currentEnv = getenv(); + if (!is_array($currentEnv)) { + $currentEnv = []; + } + $env = array_merge($currentEnv, [ + 'HOME' => $this->project_dir.'/var/www-data-home', + 'COMPOSER_HOME' => $this->project_dir.'/var/composer', + 'PATH' => getenv('PATH') ?: '/usr/local/bin:/usr/bin:/bin', + ]); + $process->setEnv($env); + + $output = ''; + $process->run(function ($type, $buffer) use (&$output) { + $output .= $buffer; + }); + + if (!$process->isSuccessful()) { + $errorOutput = $process->getErrorOutput() ?: $process->getOutput(); + throw new \RuntimeException( + sprintf('%s failed: %s', $description, trim($errorOutput)) + ); + } + + return $output; + } +} diff --git a/src/Services/System/UpdateExecutor.php b/src/Services/System/UpdateExecutor.php index d6bc4127..90cabf82 100644 --- a/src/Services/System/UpdateExecutor.php +++ b/src/Services/System/UpdateExecutor.php @@ -46,6 +46,7 @@ class UpdateExecutor private array $steps = []; private ?string $currentLogFile = null; + private CommandRunHelper $commandRunHelper; public function __construct( #[Autowire(param: 'kernel.project_dir')] @@ -58,6 +59,7 @@ class UpdateExecutor #[Autowire(param: 'app.debug_mode')] private readonly bool $debugMode = false, ) { + $this->commandRunHelper = new CommandRunHelper($this); } /** @@ -516,36 +518,7 @@ class UpdateExecutor */ private function runCommand(array $command, string $description, int $timeout = 120): string { - $process = new Process($command, $this->project_dir); - $process->setTimeout($timeout); - - // Set environment variables needed for Composer and other tools - // This is especially important when running as www-data which may not have HOME set - // We inherit from current environment and override/add specific variables - $currentEnv = getenv(); - if (!is_array($currentEnv)) { - $currentEnv = []; - } - $env = array_merge($currentEnv, [ - 'HOME' => $this->project_dir, - 'COMPOSER_HOME' => $this->project_dir . '/var/composer', - 'PATH' => getenv('PATH') ?: '/usr/local/bin:/usr/bin:/bin', - ]); - $process->setEnv($env); - - $output = ''; - $process->run(function ($type, $buffer) use (&$output) { - $output .= $buffer; - }); - - if (!$process->isSuccessful()) { - $errorOutput = $process->getErrorOutput() ?: $process->getOutput(); - throw new \RuntimeException( - sprintf('%s failed: %s', $description, trim($errorOutput)) - ); - } - - return $output; + return $this->commandRunHelper->runCommand($command, $description, $timeout); } /** From 720c1e51e84b4bfbf5395eb7c731043c249811f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 2 Feb 2026 20:28:17 +0100 Subject: [PATCH 197/235] Improved UpdateExecutor --- src/Services/System/UpdateExecutor.php | 53 ++++++++------------ tests/Services/System/UpdateExecutorTest.php | 6 --- 2 files changed, 20 insertions(+), 39 deletions(-) diff --git a/src/Services/System/UpdateExecutor.php b/src/Services/System/UpdateExecutor.php index 90cabf82..9f73c63a 100644 --- a/src/Services/System/UpdateExecutor.php +++ b/src/Services/System/UpdateExecutor.php @@ -34,6 +34,8 @@ use Symfony\Component\Process\Process; * * This service should primarily be used from CLI commands, not web requests, * due to the long-running nature of updates and permission requirements. + * + * For web requests, use startBackgroundUpdate() method. */ class UpdateExecutor { @@ -46,7 +48,6 @@ class UpdateExecutor private array $steps = []; private ?string $currentLogFile = null; - private CommandRunHelper $commandRunHelper; public function __construct( #[Autowire(param: 'kernel.project_dir')] @@ -56,10 +57,10 @@ class UpdateExecutor private readonly InstallationTypeDetector $installationTypeDetector, private readonly VersionManagerInterface $versionManager, private readonly BackupManager $backupManager, + private readonly CommandRunHelper $commandRunHelper, #[Autowire(param: 'app.debug_mode')] private readonly bool $debugMode = false, ) { - $this->commandRunHelper = new CommandRunHelper($this); } /** @@ -75,14 +76,12 @@ class UpdateExecutor */ public function isLocked(): bool { - $lockFile = $this->project_dir . '/' . self::LOCK_FILE; - - if (!file_exists($lockFile)) { + // Check if lock is stale (older than 1 hour) + $lockData = $this->getLockInfo(); + if ($lockData === null) { return false; } - // Check if lock is stale (older than 1 hour) - $lockData = json_decode(file_get_contents($lockFile), true); if ($lockData && isset($lockData['started_at'])) { $startedAt = new \DateTime($lockData['started_at']); $now = new \DateTime(); @@ -100,7 +99,8 @@ class UpdateExecutor } /** - * Get lock information. + * Get lock information, or null if not locked. + * @return null|array{started_at: string, pid: int, user: string} */ public function getLockInfo(): ?array { @@ -110,7 +110,7 @@ class UpdateExecutor return null; } - return json_decode(file_get_contents($lockFile), true); + return json_decode(file_get_contents($lockFile), true, 512, JSON_THROW_ON_ERROR); } /** @@ -123,6 +123,7 @@ class UpdateExecutor /** * Get maintenance mode information. + * @return null|array{enabled_at: string, reason: string} */ public function getMaintenanceInfo(): ?array { @@ -132,7 +133,7 @@ class UpdateExecutor return null; } - return json_decode(file_get_contents($maintenanceFile), true); + return json_decode(file_get_contents($maintenanceFile), true, 512, JSON_THROW_ON_ERROR); } /** @@ -157,7 +158,7 @@ class UpdateExecutor 'user' => get_current_user(), ]; - $this->filesystem->dumpFile($lockFile, json_encode($lockData, JSON_PRETTY_PRINT)); + $this->filesystem->dumpFile($lockFile, json_encode($lockData, JSON_THROW_ON_ERROR | JSON_PRETTY_PRINT)); return true; } @@ -191,7 +192,7 @@ class UpdateExecutor 'reason' => $reason, ]; - $this->filesystem->dumpFile($maintenanceFile, json_encode($data, JSON_PRETTY_PRINT)); + $this->filesystem->dumpFile($maintenanceFile, json_encode($data, JSON_THROW_ON_ERROR | JSON_PRETTY_PRINT)); } /** @@ -574,6 +575,7 @@ class UpdateExecutor /** * Get list of update log files. + * @return array{file: string, path: string, date: int, size: int}[] */ public function getUpdateLogs(): array { @@ -594,28 +596,11 @@ class UpdateExecutor } // Sort by date descending - usort($logs, fn($a, $b) => $b['date'] <=> $a['date']); + usort($logs, static fn($a, $b) => $b['date'] <=> $a['date']); return $logs; } - /** - * Get list of backups. - * @deprecated Use BackupManager::getBackups() directly - */ - public function getBackups(): array - { - return $this->backupManager->getBackups(); - } - - /** - * Get details about a specific backup file. - * @deprecated Use BackupManager::getBackupDetails() directly - */ - public function getBackupDetails(string $filename): ?array - { - return $this->backupManager->getBackupDetails($filename); - } /** * Restore from a backup file with maintenance mode and cache clearing. @@ -746,8 +731,9 @@ class UpdateExecutor /** * Save progress to file for web UI polling. + * @param array{status: string, target_version: string, create_backup: bool, started_at: string, current_step: int, total_steps: int, step_name: string, step_message: string, steps: array, error: ?string} $progress */ - public function saveProgress(array $progress): void + private function saveProgress(array $progress): void { $progressFile = $this->getProgressFilePath(); $progressDir = dirname($progressFile); @@ -756,11 +742,12 @@ class UpdateExecutor $this->filesystem->mkdir($progressDir); } - $this->filesystem->dumpFile($progressFile, json_encode($progress, JSON_PRETTY_PRINT)); + $this->filesystem->dumpFile($progressFile, json_encode($progress, JSON_THROW_ON_ERROR | JSON_PRETTY_PRINT)); } /** * Get current update progress from file. + * @return null|array{status: string, target_version: string, create_backup: bool, started_at: string, current_step: int, total_steps: int, step_name: string, step_message: string, steps: array, error: ?string} */ public function getProgress(): ?array { @@ -770,7 +757,7 @@ class UpdateExecutor return null; } - $data = json_decode(file_get_contents($progressFile), true); + $data = json_decode(file_get_contents($progressFile), true, 512, JSON_THROW_ON_ERROR); // If the progress file is stale (older than 30 minutes), consider it invalid if ($data && isset($data['started_at'])) { diff --git a/tests/Services/System/UpdateExecutorTest.php b/tests/Services/System/UpdateExecutorTest.php index 9b832f6c..851d060c 100644 --- a/tests/Services/System/UpdateExecutorTest.php +++ b/tests/Services/System/UpdateExecutorTest.php @@ -74,12 +74,6 @@ class UpdateExecutorTest extends KernelTestCase $this->assertIsArray($logs); } - public function testGetBackupsReturnsArray(): void - { - $backups = $this->updateExecutor->getBackups(); - - $this->assertIsArray($backups); - } public function testValidateUpdatePreconditionsReturnsProperStructure(): void { From 7a856bf6f1015c862395f822d558eacc623eddb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 2 Feb 2026 20:37:02 +0100 Subject: [PATCH 198/235] Try to emulate nohup behavior on windows --- src/Services/System/UpdateExecutor.php | 29 ++++++++++++++++++-------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/Services/System/UpdateExecutor.php b/src/Services/System/UpdateExecutor.php index 9f73c63a..6a40af6e 100644 --- a/src/Services/System/UpdateExecutor.php +++ b/src/Services/System/UpdateExecutor.php @@ -835,15 +835,26 @@ class UpdateExecutor $this->filesystem->mkdir($logDir, 0755); } - // Use nohup to properly detach the process from the web request - // The process will continue running even after the PHP request ends - $command = sprintf( - 'nohup php %s partdb:update %s %s --force --no-interaction >> %s 2>&1 &', - escapeshellarg($consolePath), - escapeshellarg($targetVersion), - $createBackup ? '' : '--no-backup', - escapeshellarg($logFile) - ); + //If we are on Windows, we cannot use nohup + if (PHP_OS_FAMILY === 'Windows') { + $command = sprintf( + 'start /B php %s partdb:update %s %s --force --no-interaction >> %s 2>&1', + escapeshellarg($consolePath), + escapeshellarg($targetVersion), + $createBackup ? '' : '--no-backup', + escapeshellarg($logFile) + ); + } else { //Unix like platforms should be able to use nohup + // Use nohup to properly detach the process from the web request + // The process will continue running even after the PHP request ends + $command = sprintf( + 'nohup php %s partdb:update %s %s --force --no-interaction >> %s 2>&1 &', + escapeshellarg($consolePath), + escapeshellarg($targetVersion), + $createBackup ? '' : '--no-backup', + escapeshellarg($logFile) + ); + } $this->logger->info('Starting background update', [ 'command' => $command, From 2b94ff952c67a46d372450256f20958bf65b086c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 2 Feb 2026 20:49:21 +0100 Subject: [PATCH 199/235] Use different symbol for update manager --- src/Services/Trees/ToolsTreeBuilder.php | 2 +- templates/admin/update_manager/index.html.twig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Services/Trees/ToolsTreeBuilder.php b/src/Services/Trees/ToolsTreeBuilder.php index 5356781b..6397e3af 100644 --- a/src/Services/Trees/ToolsTreeBuilder.php +++ b/src/Services/Trees/ToolsTreeBuilder.php @@ -329,7 +329,7 @@ class ToolsTreeBuilder $nodes[] = (new TreeViewNode( $this->translator->trans('tree.tools.system.update_manager'), $this->urlGenerator->generate('admin_update_manager') - ))->setIcon('fa-fw fa-treeview fa-solid fa-cloud-download-alt'); + ))->setIcon('fa-fw fa-treeview fa-solid fa-arrow-circle-up'); } return $nodes; diff --git a/templates/admin/update_manager/index.html.twig b/templates/admin/update_manager/index.html.twig index 24dfcc96..3968de93 100644 --- a/templates/admin/update_manager/index.html.twig +++ b/templates/admin/update_manager/index.html.twig @@ -3,7 +3,7 @@ {% block title %}Part-DB {% trans %}update_manager.title{% endtrans %}{% endblock %} {% block card_title %} - Part-DB {% trans %}update_manager.title{% endtrans %} + Part-DB {% trans %}update_manager.title{% endtrans %} {% endblock %} {% block card_content %} From 29a08d152a03467b98a277128c88964809d2af6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 2 Feb 2026 20:52:42 +0100 Subject: [PATCH 200/235] Use version info from updateChecker to be consistent --- src/Services/System/UpdateAvailableFacade.php | 4 ---- src/Services/System/UpdateExecutor.php | 4 ++-- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/Services/System/UpdateAvailableFacade.php b/src/Services/System/UpdateAvailableFacade.php index 2a00321c..d9f18997 100644 --- a/src/Services/System/UpdateAvailableFacade.php +++ b/src/Services/System/UpdateAvailableFacade.php @@ -24,12 +24,8 @@ declare(strict_types=1); namespace App\Services\System; use App\Settings\SystemSettings\PrivacySettings; -use Psr\Log\LoggerInterface; -use Shivas\VersioningBundle\Service\VersionManagerInterface; -use Symfony\Component\DependencyInjection\Attribute\Autowire; use Symfony\Contracts\Cache\CacheInterface; use Symfony\Contracts\Cache\ItemInterface; -use Symfony\Contracts\HttpClient\HttpClientInterface; use Version\Version; /** diff --git a/src/Services/System/UpdateExecutor.php b/src/Services/System/UpdateExecutor.php index 6a40af6e..1dfc3dc1 100644 --- a/src/Services/System/UpdateExecutor.php +++ b/src/Services/System/UpdateExecutor.php @@ -55,7 +55,7 @@ class UpdateExecutor private readonly LoggerInterface $logger, private readonly Filesystem $filesystem, private readonly InstallationTypeDetector $installationTypeDetector, - private readonly VersionManagerInterface $versionManager, + private readonly UpdateChecker $updateChecker, private readonly BackupManager $backupManager, private readonly CommandRunHelper $commandRunHelper, #[Autowire(param: 'app.debug_mode')] @@ -68,7 +68,7 @@ class UpdateExecutor */ private function getCurrentVersionString(): string { - return $this->versionManager->getVersion()->toString(); + return $this->updateChecker->getCurrentVersionString(); } /** From 883e3b271dc58f04d63d759f0cd6ecf42677f623 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 2 Feb 2026 21:02:08 +0100 Subject: [PATCH 201/235] Fixed git commit hash logic --- .../System/GitVersionInfoProvider.php | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/Services/System/GitVersionInfoProvider.php b/src/Services/System/GitVersionInfoProvider.php index 6d067333..01925ff8 100644 --- a/src/Services/System/GitVersionInfoProvider.php +++ b/src/Services/System/GitVersionInfoProvider.php @@ -85,20 +85,26 @@ final readonly class GitVersionInfoProvider */ public function getCommitHash(int $length = 8): ?string { - $filename = $this->getGitDirectory() . '/refs/remotes/origin/'.$this->getBranchName(); - if (is_file($filename)) { - $head = file($filename); - - if (!isset($head[0])) { - return null; - } - - $hash = $head[0]; - - return substr($hash, 0, $length); + $path = $this->getGitDirectory() . '/HEAD'; + if (!file_exists($path)) { + return null; } - return null; // this is not a Git installation + $head = trim(file_get_contents($path)); + + // If it's a symbolic ref (e.g., "ref: refs/heads/main") + if (str_starts_with($head, 'ref:')) { + $refPath = $this->getGitDirectory() . '/' . trim(substr($head, 5)); + if (file_exists($refPath)) { + $hash = trim(file_get_contents($refPath)); + } + } else { + // Otherwise, it's a detached HEAD (the hash is right there) + $hash = $head; + } + + return isset($hash) ? substr($hash, 0, $length) : null; + } /** From d06df4410d8ed60d600c7b1cb5afb6f3ab122107 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 2 Feb 2026 21:18:03 +0100 Subject: [PATCH 202/235] Disable the web updater and web backup restore for now This can become default, when there is more experience with the web updated --- .env | 4 ++-- VERSION | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.env b/.env index 3196241b..1956f2fe 100644 --- a/.env +++ b/.env @@ -65,11 +65,11 @@ ERROR_PAGE_SHOW_HELP=1 # Set this to 1 to completely disable web-based updates, regardless of user permissions. # Use this if you prefer to manage updates through your own deployment process. -DISABLE_WEB_UPDATES=0 +DISABLE_WEB_UPDATES=1 # Set this to 1 to disable the backup restore feature from the web UI. # Restoring backups is a destructive operation that could cause data loss. -DISABLE_BACKUP_RESTORE=0 +DISABLE_BACKUP_RESTORE=1 ################################################################################### # SAML Single sign on-settings diff --git a/VERSION b/VERSION index 73462a5a..437459cd 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.5.1 +2.5.0 From 0e5a73b6f435de2050259ddbb070567ad6c68744 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 2 Feb 2026 21:22:06 +0100 Subject: [PATCH 203/235] Add nonce to inline script in progress bar --- templates/admin/update_manager/progress.html.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/admin/update_manager/progress.html.twig b/templates/admin/update_manager/progress.html.twig index c45a4e78..597b8a9a 100644 --- a/templates/admin/update_manager/progress.html.twig +++ b/templates/admin/update_manager/progress.html.twig @@ -186,7 +186,7 @@
    {# JavaScript refresh - more reliable than meta refresh #} - - - diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index b6537a5f..c9167bd4 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -14718,60 +14718,6 @@ Buerklin-API Authentication server: bytes
    - - - update_manager.maintenance.title - Maintenance - - - - - update_manager.maintenance.heading - Part-DB is Updating - - - - - update_manager.maintenance.description - We're installing updates to make Part-DB even better. This should only take a moment. - - - - - update_manager.maintenance.step_backup - Creating backup - - - - - update_manager.maintenance.step_download - Downloading updates - - - - - update_manager.maintenance.step_install - Installing files - - - - - update_manager.maintenance.step_migrate - Running migrations - - - - - update_manager.maintenance.step_cache - Clearing cache - - - - - update_manager.maintenance.auto_refresh - This page will refresh automatically when the update is complete. - - perm.system.manage_updates From 1a06432cec3dda5da3f052c2bf4ecd78e793afbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 2 Feb 2026 22:16:26 +0100 Subject: [PATCH 210/235] Removed custom yes and no translations --- templates/admin/update_manager/index.html.twig | 8 ++++---- translations/messages.en.xlf | 12 ------------ 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/templates/admin/update_manager/index.html.twig b/templates/admin/update_manager/index.html.twig index 9b95637d..44b9f8c0 100644 --- a/templates/admin/update_manager/index.html.twig +++ b/templates/admin/update_manager/index.html.twig @@ -87,11 +87,11 @@ {% if status.git.has_local_changes %} - {% trans %}update_manager.yes{% endtrans %} + {% trans %}Yes{% endtrans %} {% else %} - {% trans %}update_manager.no{% endtrans %} + {% trans %}No{% endtrans %} {% endif %} @@ -102,11 +102,11 @@ {% if status.can_auto_update %} - {% trans %}update_manager.yes{% endtrans %} + {% trans %}Yes{% endtrans %} {% else %} - {% trans %}update_manager.no{% endtrans %} + {% trans %}No{% endtrans %} {% endif %} diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index c9167bd4..7a7408c1 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -14442,18 +14442,6 @@ Buerklin-API Authentication server: For safety and reliability, updates should be performed via the command line interface. The update process will automatically create a backup, enable maintenance mode, and handle migrations. - - - update_manager.yes - Yes - - - - - update_manager.no - No - - update_manager.up_to_date From 9ca1834d9bde039c49ac57f6e75667bd79e9de28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 2 Feb 2026 23:07:24 +0100 Subject: [PATCH 211/235] Removed unused translations --- translations/messages.en.xlf | 126 ----------------------------------- 1 file changed, 126 deletions(-) diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 7a7408c1..6f8250ad 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -14544,84 +14544,6 @@ Buerklin-API Authentication server: No backups found - - - update_manager.pre_update_checklist - Pre-Update Checklist - - - - - update_manager.before_updating - Before Updating - - - - - update_manager.checklist.requirements - All requirements met - - - - - update_manager.checklist.no_local_changes - No local modifications - - - - - update_manager.checklist.backup_created - Backup will be created automatically - - - - - update_manager.checklist.read_release_notes - Read release notes for breaking changes - - - - - update_manager.update_will - The Update Will - - - - - update_manager.will.backup - Create a full backup - - - - - update_manager.will.maintenance - Enable maintenance mode - - - - - update_manager.will.git - Pull latest code from Git - - - - - update_manager.will.composer - Update dependencies via Composer - - - - - update_manager.will.migrations - Run database migrations - - - - - update_manager.will.cache - Clear and rebuild cache - - update_manager.validation_issues @@ -14712,66 +14634,24 @@ Buerklin-API Authentication server: Manage Part-DB updates - - - update_manager.update_now - Update Now - - - - - update_manager.update_from_to - Update from %from% to %to% - - - - - update_manager.update_description - Click the button to start the update process. A backup will be created automatically and you can monitor the progress. - - - - - update_manager.start_update - Start Update - - update_manager.create_backup Create backup before updating (recommended) - - - update_manager.estimated_time - Update typically takes 2-5 minutes - - update_manager.confirm_update Are you sure you want to update Part-DB? A backup will be created before the update. - - - update_manager.starting - Starting... - - update_manager.already_up_to_date You are running the latest version of Part-DB. - - - update_manager.cli_alternative - Alternatively, you can update via the command line: - - update_manager.progress.title @@ -14868,12 +14748,6 @@ Buerklin-API Authentication server: Downgrade Progress - - - update_manager.progress.downgrading - Downgrading Part-DB... - - update_manager.progress.downgrading_to From a755287c3b867910a3f211deabb99e6e172a46e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 2 Feb 2026 23:09:52 +0100 Subject: [PATCH 212/235] Make maintenance command available under partdb:maintenance-mode to make it more consistent with other hyphen command tools --- src/Command/MaintenanceModeCommand.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Command/MaintenanceModeCommand.php b/src/Command/MaintenanceModeCommand.php index 37f59af1..7fdea97e 100644 --- a/src/Command/MaintenanceModeCommand.php +++ b/src/Command/MaintenanceModeCommand.php @@ -32,7 +32,7 @@ use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; -#[AsCommand('partdb:maintenance_mode', 'Enable/disable maintenance mode and set a message')] +#[AsCommand('partdb:maintenance-mode', 'Enable/disable maintenance mode and set a message')] class MaintenanceModeCommand extends Command { public function __construct( From cad5261aba8b123158ed7039e955f0a842254141 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 2 Feb 2026 23:26:18 +0100 Subject: [PATCH 213/235] Fixed phpstan issues --- phpstan.dist.neon | 6 ++++++ src/Command/MaintenanceModeCommand.php | 2 +- src/Services/System/CommandRunHelper.php | 2 -- src/Services/System/UpdateAvailableFacade.php | 2 -- src/Services/System/UpdateChecker.php | 7 ++----- src/Services/System/UpdateExecutor.php | 2 ++ 6 files changed, 11 insertions(+), 10 deletions(-) diff --git a/phpstan.dist.neon b/phpstan.dist.neon index fc7b3524..eb629314 100644 --- a/phpstan.dist.neon +++ b/phpstan.dist.neon @@ -6,6 +6,9 @@ parameters: - src # - tests + banned_code: + non_ignorable: false # Allow to ignore some banned code + excludePaths: - src/DataTables/Adapter/* - src/Configuration/* @@ -61,3 +64,6 @@ parameters: # Ignore error of unused WithPermPresetsTrait, as it is used in the migrations which are not analyzed by Phpstan - '#Trait App\\Migration\\WithPermPresetsTrait is used zero times and is not analysed#' + - + message: '#Should not use function "shell_exec"#' + path: src/Services/System/UpdateExecutor.php diff --git a/src/Command/MaintenanceModeCommand.php b/src/Command/MaintenanceModeCommand.php index 7fdea97e..47b1eaef 100644 --- a/src/Command/MaintenanceModeCommand.php +++ b/src/Command/MaintenanceModeCommand.php @@ -106,7 +106,7 @@ class MaintenanceModeCommand extends Command if ($enable) { // Use provided message or fallback to a default English message - $reason = is_string($message) && $message !== '' + $reason = is_string($message) ? $message : 'The system is temporarily unavailable due to maintenance.'; diff --git a/src/Services/System/CommandRunHelper.php b/src/Services/System/CommandRunHelper.php index 7a144d5f..19bc8548 100644 --- a/src/Services/System/CommandRunHelper.php +++ b/src/Services/System/CommandRunHelper.php @@ -28,8 +28,6 @@ use Symfony\Component\Process\Process; class CommandRunHelper { - private UpdateExecutor $updateExecutor; - public function __construct( #[Autowire(param: 'kernel.project_dir')] private readonly string $project_dir ) diff --git a/src/Services/System/UpdateAvailableFacade.php b/src/Services/System/UpdateAvailableFacade.php index d9f18997..ac3a46c0 100644 --- a/src/Services/System/UpdateAvailableFacade.php +++ b/src/Services/System/UpdateAvailableFacade.php @@ -33,8 +33,6 @@ use Version\Version; */ class UpdateAvailableFacade { - - private const API_URL = 'https://api.github.com/repos/Part-DB/Part-DB-server/releases/latest'; private const CACHE_KEY = 'uam_latest_version'; private const CACHE_TTL = 60 * 60 * 24 * 2; // 2 day diff --git a/src/Services/System/UpdateChecker.php b/src/Services/System/UpdateChecker.php index e388d51f..fdb8d9dd 100644 --- a/src/Services/System/UpdateChecker.php +++ b/src/Services/System/UpdateChecker.php @@ -145,15 +145,12 @@ class UpdateChecker /** * Get all available releases from GitHub (cached). * - * @return array + * @return array */ public function getAvailableReleases(int $limit = 10): array { if (!$this->privacySettings->checkForUpdates) { - return [ //If we don't want to check for updates, we can return dummy data - 'version' => '0.0.1', - 'url' => 'update-checking-disabled' - ]; + return []; } return $this->updateCache->get(self::CACHE_KEY_RELEASES, function (ItemInterface $item) use ($limit) { diff --git a/src/Services/System/UpdateExecutor.php b/src/Services/System/UpdateExecutor.php index 1dfc3dc1..2fe54173 100644 --- a/src/Services/System/UpdateExecutor.php +++ b/src/Services/System/UpdateExecutor.php @@ -863,6 +863,8 @@ class UpdateExecutor // Execute in background using shell_exec for proper detachment // shell_exec with & runs the command in background + + //@php-ignore-next-line We really need to use shell_exec here $output = shell_exec($command); // Give it a moment to start From 984529bc7940ef30f62469c6b944c396469c75f0 Mon Sep 17 00:00:00 2001 From: Sebastian Almberg <83243306+Sebbeben@users.noreply.github.com> Date: Tue, 3 Feb 2026 11:55:53 +0100 Subject: [PATCH 214/235] Add Update Manager documentation - Add comprehensive update_manager.md with feature overview - Document CLI commands (partdb:update, partdb:maintenance-mode) - Document web interface and permissions - Add security considerations and troubleshooting - Update console_commands.md with new commands --- docs/usage/console_commands.md | 8 ++ docs/usage/update_manager.md | 170 +++++++++++++++++++++++++++++++++ 2 files changed, 178 insertions(+) create mode 100644 docs/usage/update_manager.md diff --git a/docs/usage/console_commands.md b/docs/usage/console_commands.md index b42bb757..576b3314 100644 --- a/docs/usage/console_commands.md +++ b/docs/usage/console_commands.md @@ -50,6 +50,14 @@ docker exec --user=www-data partdb php bin/console cache:clear * `php bin/console partdb:currencies:update-exchange-rates`: Update the exchange rates of all currencies from the internet +## Update Manager commands + +{: .note } +> The Update Manager is an experimental feature. See the [Update Manager documentation](update_manager.md) for details. + +* `php bin/console partdb:update`: Check for and perform updates to Part-DB. Use `--check` to only check for updates without installing. +* `php bin/console partdb:maintenance-mode`: Enable, disable, or check the status of maintenance mode. Use `--enable`, `--disable`, or `--status`. + ## Installation/Maintenance commands * `php bin/console partdb:backup`: Backup the database and the attachments diff --git a/docs/usage/update_manager.md b/docs/usage/update_manager.md new file mode 100644 index 00000000..43fe2c94 --- /dev/null +++ b/docs/usage/update_manager.md @@ -0,0 +1,170 @@ +--- +title: Update Manager +layout: default +parent: Usage +--- + +# Update Manager (Experimental) + +{: .warning } +> The Update Manager is currently an **experimental feature**. It is disabled by default while user experience data is being gathered. Use with caution and always ensure you have proper backups before updating. + +Part-DB includes an Update Manager that can automatically update Git-based installations to newer versions. The Update Manager provides both a web interface and CLI commands for managing updates, backups, and maintenance mode. + +## Supported Installation Types + +The Update Manager currently supports automatic updates only for **Git clone** installations. Other installation types show manual update instructions: + +| Installation Type | Auto-Update | Instructions | +|-------------------|-------------|--------------| +| Git Clone | Yes | Automatic via CLI or Web UI | +| Docker | No | Pull new image: `docker-compose pull && docker-compose up -d` | +| ZIP Release | No | Download and extract new release manually | + +## Enabling the Update Manager + +By default, web-based updates and backup restore are **disabled** for security reasons. To enable them, add these settings to your `.env.local` file: + +```bash +# Enable web-based updates (default: disabled) +DISABLE_WEB_UPDATES=0 + +# Enable backup restore via web interface (default: disabled) +DISABLE_BACKUP_RESTORE=0 +``` + +{: .note } +> Even with web updates disabled, you can still use the CLI commands to perform updates. + +## CLI Commands + +### Update Command + +Check for updates or perform an update: + +```bash +# Check for available updates +php bin/console partdb:update --check + +# Update to the latest version +php bin/console partdb:update + +# Update to a specific version +php bin/console partdb:update v2.6.0 + +# Update without creating a backup first +php bin/console partdb:update --no-backup + +# Force update without confirmation prompt +php bin/console partdb:update --force +``` + +### Maintenance Mode Command + +Manually enable or disable maintenance mode: + +```bash +# Enable maintenance mode with default message +php bin/console partdb:maintenance-mode --enable + +# Enable with custom message +php bin/console partdb:maintenance-mode --enable "System maintenance until 6 PM" +php bin/console partdb:maintenance-mode --enable --message="Updating to v2.6.0" + +# Disable maintenance mode +php bin/console partdb:maintenance-mode --disable + +# Check current status +php bin/console partdb:maintenance-mode --status +``` + +## Web Interface + +When web updates are enabled, the Update Manager is accessible at **System > Update Manager** (URL: `/system/update-manager`). + +The web interface shows: +- Current version and installation type +- Available updates with release notes +- Precondition validation (Git, Composer, Yarn, permissions) +- Update history and logs +- Backup management + +### Required Permissions + +Users need the following permissions to access the Update Manager: + +| Permission | Description | +|------------|-------------| +| `@system.show_updates` | View update status and available versions | +| `@system.manage_updates` | Perform updates and restore backups | + +## Update Process + +When an update is performed, the following steps are executed: + +1. **Lock** - Acquire exclusive lock to prevent concurrent updates +2. **Maintenance Mode** - Enable maintenance mode to block user access +3. **Rollback Tag** - Create a Git tag for potential rollback +4. **Backup** - Create a full backup (optional but recommended) +5. **Git Fetch** - Fetch latest changes from origin +6. **Git Checkout** - Checkout the target version +7. **Composer Install** - Install/update PHP dependencies +8. **Yarn Install** - Install frontend dependencies +9. **Yarn Build** - Compile frontend assets +10. **Database Migrations** - Run any new migrations +11. **Cache Clear** - Clear the application cache +12. **Cache Warmup** - Rebuild the cache +13. **Maintenance Off** - Disable maintenance mode +14. **Unlock** - Release the update lock + +If any step fails, the system automatically attempts to rollback to the previous version. + +## Backup Management + +The Update Manager automatically creates backups before updates. These backups are stored in `var/backups/` and include: + +- Database dump (SQL file or SQLite database) +- Configuration files (`.env.local`, `parameters.yaml`, `banner.md`) +- Attachment files (`uploads/`, `public/media/`) + +### Restoring from Backup + +{: .warning } +> Backup restore is a destructive operation that will overwrite your current database. Only use this if you need to recover from a failed update. + +If web restore is enabled (`DISABLE_BACKUP_RESTORE=0`), you can restore backups from the web interface. The restore process: + +1. Enables maintenance mode +2. Extracts the backup +3. Restores the database +4. Optionally restores config and attachments +5. Clears and warms up the cache +6. Disables maintenance mode + +## Troubleshooting + +### Precondition Errors + +Before updating, the system validates: + +- **Git available**: Git must be installed and in PATH +- **No local changes**: Uncommitted changes must be committed or stashed +- **Composer available**: Composer must be installed and in PATH +- **Yarn available**: Yarn must be installed and in PATH +- **Write permissions**: `var/`, `vendor/`, and `public/` must be writable +- **Not already locked**: No other update can be in progress + +### Stale Lock + +If an update was interrupted and the lock file remains, it will automatically be removed after 1 hour. You can also manually delete `var/update.lock`. + +### Viewing Update Logs + +Update logs are stored in `var/log/updates/` and can be viewed from the web interface or directly on the server. + +## Security Considerations + +- **Disable web updates in production** unless you specifically need them +- The Update Manager requires shell access to run Git, Composer, and Yarn +- Backup files may contain sensitive data (database, config) - secure the `var/backups/` directory +- Consider running updates during maintenance windows with low user activity From e83e7398a27ad68bc40b9d8c753783af49bec61d Mon Sep 17 00:00:00 2001 From: Sebastian Almberg <83243306+Sebbeben@users.noreply.github.com> Date: Tue, 3 Feb 2026 20:16:24 +0100 Subject: [PATCH 215/235] Improve .env comments for Update Manager settings Clarify that 0=enabled and 1=disabled for DISABLE_WEB_UPDATES and DISABLE_BACKUP_RESTORE environment variables. --- .env | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.env b/.env index 1956f2fe..3ba3d65d 100644 --- a/.env +++ b/.env @@ -63,12 +63,12 @@ ERROR_PAGE_SHOW_HELP=1 # Update Manager settings ################################################################################### -# Set this to 1 to completely disable web-based updates, regardless of user permissions. -# Use this if you prefer to manage updates through your own deployment process. +# Disable web-based updates from the Update Manager UI (0=enabled, 1=disabled). +# When disabled, use the CLI command "php bin/console partdb:update" instead. DISABLE_WEB_UPDATES=1 -# Set this to 1 to disable the backup restore feature from the web UI. -# Restoring backups is a destructive operation that could cause data loss. +# Disable backup restore from the Update Manager UI (0=enabled, 1=disabled). +# Restoring backups is a destructive operation that could overwrite your database. DISABLE_BACKUP_RESTORE=1 ################################################################################### From c34acfe5239befc90e82fe21a63f6437b3bae768 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 3 Feb 2026 20:34:03 +0100 Subject: [PATCH 216/235] Allow to view progress view while update is running --- src/EventSubscriber/MaintenanceModeSubscriber.php | 5 +++++ templates/admin/update_manager/progress.html.twig | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/EventSubscriber/MaintenanceModeSubscriber.php b/src/EventSubscriber/MaintenanceModeSubscriber.php index 6efa975e..654ba9f2 100644 --- a/src/EventSubscriber/MaintenanceModeSubscriber.php +++ b/src/EventSubscriber/MaintenanceModeSubscriber.php @@ -62,6 +62,11 @@ readonly class MaintenanceModeSubscriber implements EventSubscriberInterface return; } + //Allow to view the progress page + if (preg_match('#^/\w{2}/system/update-manager/progress#', $event->getRequest()->getPathInfo())) { + return; + } + // Allow CLI requests if (PHP_SAPI === 'cli') { return; diff --git a/templates/admin/update_manager/progress.html.twig b/templates/admin/update_manager/progress.html.twig index 597b8a9a..54ac6595 100644 --- a/templates/admin/update_manager/progress.html.twig +++ b/templates/admin/update_manager/progress.html.twig @@ -29,7 +29,7 @@ {{ parent() }} {# Auto-refresh while update is running - also refresh when 'starting' status #} {% if not progress or progress.status == 'running' or progress.status == 'starting' %} - + {% endif %} {% endblock %} @@ -189,7 +189,7 @@ {% endif %} From 5ceadc8353648aed1b588c2d7c0cd1b3ab42412d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 3 Feb 2026 20:49:25 +0100 Subject: [PATCH 217/235] Use a special settings cache that lives in cache.system to ensure that it is properly cleared on cache clear --- config/packages/cache.yaml | 4 ++++ config/packages/settings.yaml | 1 + 2 files changed, 5 insertions(+) diff --git a/config/packages/cache.yaml b/config/packages/cache.yaml index 6adea442..c1816aa2 100644 --- a/config/packages/cache.yaml +++ b/config/packages/cache.yaml @@ -23,3 +23,7 @@ framework: info_provider.cache: adapter: cache.app + + cache.settings: + adapter: cache.system + tags: true diff --git a/config/packages/settings.yaml b/config/packages/settings.yaml index c16d1804..b3d209f6 100644 --- a/config/packages/settings.yaml +++ b/config/packages/settings.yaml @@ -3,6 +3,7 @@ jbtronics_settings: cache: default_cacheable: true + service: 'cache.settings' orm_storage: default_entity_class: App\Entity\SettingsEntry From 1601382b41275c715c71b508505042c7ecbe893f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 3 Feb 2026 20:55:31 +0100 Subject: [PATCH 218/235] Added translation for downgrading in progress title --- translations/messages.en.xlf | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 6f8250ad..89b03824 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -14688,6 +14688,12 @@ Buerklin-API Authentication server: Updating to version %version% + + + update_manager.progress.downgrading_to + Downgrading to version %version% + + update_manager.progress.error @@ -14748,12 +14754,6 @@ Buerklin-API Authentication server: Downgrade Progress - - - update_manager.progress.downgrading_to - Downgrading to version %version% - - update_manager.progress.downgrade_completed From bc28eb947319b8eddcc2a91bb91cd2e232f6b0bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 3 Feb 2026 21:42:50 +0100 Subject: [PATCH 219/235] Remove lowercase version of Makefile that causes warnings on Windows --- makefile | 91 -------------------------------------------------------- 1 file changed, 91 deletions(-) delete mode 100644 makefile diff --git a/makefile b/makefile deleted file mode 100644 index bc4d0bf3..00000000 --- a/makefile +++ /dev/null @@ -1,91 +0,0 @@ -# PartDB Makefile for Test Environment Management - -.PHONY: help deps-install lint format format-check test coverage pre-commit all test-typecheck \ -test-setup test-clean test-db-create test-db-migrate test-cache-clear test-fixtures test-run test-reset \ -section-dev dev-setup dev-clean dev-db-create dev-db-migrate dev-cache-clear dev-warmup dev-reset - -# Default target -help: ## Show this help - @awk 'BEGIN {FS = ":.*##"}; /^[a-zA-Z0-9][a-zA-Z0-9_-]+:.*##/ {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) - -# Dependencies -deps-install: ## Install PHP dependencies with unlimited memory - @echo "📦 Installing PHP dependencies..." - COMPOSER_MEMORY_LIMIT=-1 composer install - yarn install - @echo "✅ Dependencies installed" - -# Complete test environment setup -test-setup: test-clean test-db-create test-db-migrate test-fixtures ## Complete test setup (clean, create DB, migrate, fixtures) - @echo "✅ Test environment setup complete!" - -# Clean test environment -test-clean: ## Clean test cache and database files - @echo "🧹 Cleaning test environment..." - rm -rf var/cache/test - rm -f var/app_test.db - @echo "✅ Test environment cleaned" - -# Create test database -test-db-create: ## Create test database (if not exists) - @echo "🗄️ Creating test database..." - -php bin/console doctrine:database:create --if-not-exists --env test || echo "⚠️ Database creation failed (expected for SQLite) - continuing..." - -# Run database migrations for test environment -test-db-migrate: ## Run database migrations for test environment - @echo "🔄 Running database migrations..." - COMPOSER_MEMORY_LIMIT=-1 php bin/console doctrine:migrations:migrate -n --env test - -# Clear test cache -test-cache-clear: ## Clear test cache - @echo "🗑️ Clearing test cache..." - rm -rf var/cache/test - @echo "✅ Test cache cleared" - -# Load test fixtures -test-fixtures: ## Load test fixtures - @echo "📦 Loading test fixtures..." - php bin/console partdb:fixtures:load -n --env test - -# Run PHPUnit tests -test-run: ## Run PHPUnit tests - @echo "🧪 Running tests..." - php bin/phpunit - -# Quick test reset (clean + migrate + fixtures, skip DB creation) -test-reset: test-cache-clear test-db-migrate test-fixtures - @echo "✅ Test environment reset complete!" - -test-typecheck: ## Run static analysis (PHPStan) - @echo "🧪 Running type checks..." - COMPOSER_MEMORY_LIMIT=-1 composer phpstan - -# Development helpers -dev-setup: dev-clean dev-db-create dev-db-migrate dev-warmup ## Complete development setup (clean, create DB, migrate, warmup) - @echo "✅ Development environment setup complete!" - -dev-clean: ## Clean development cache and database files - @echo "🧹 Cleaning development environment..." - rm -rf var/cache/dev - rm -f var/app_dev.db - @echo "✅ Development environment cleaned" - -dev-db-create: ## Create development database (if not exists) - @echo "🗄️ Creating development database..." - -php bin/console doctrine:database:create --if-not-exists --env dev || echo "⚠️ Database creation failed (expected for SQLite) - continuing..." - -dev-db-migrate: ## Run database migrations for development environment - @echo "🔄 Running database migrations..." - COMPOSER_MEMORY_LIMIT=-1 php bin/console doctrine:migrations:migrate -n --env dev - -dev-cache-clear: ## Clear development cache - @echo "🗑️ Clearing development cache..." - rm -rf var/cache/dev - @echo "✅ Development cache cleared" - -dev-warmup: ## Warm up development cache - @echo "🔥 Warming up development cache..." - COMPOSER_MEMORY_LIMIT=-1 php -d memory_limit=1G bin/console cache:warmup --env dev -n - -dev-reset: dev-cache-clear dev-db-migrate ## Quick development reset (cache clear + migrate) - @echo "✅ Development environment reset complete!" \ No newline at end of file From c027f9ab03cf760843744faea7c7d379396b3bf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 3 Feb 2026 21:48:17 +0100 Subject: [PATCH 220/235] Updated dependencies --- composer.lock | 80 +++++++++++++++---------- config/reference.php | 1 + yarn.lock | 138 +++++++++++++++++++++---------------------- 3 files changed, 118 insertions(+), 101 deletions(-) diff --git a/composer.lock b/composer.lock index 2ee826f6..56ab8701 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ec69ea04bcf5c1ebd8bb0280a5bb9565", + "content-hash": "8e387d6d016f33eb7302c47ecb7a12b9", "packages": [ { "name": "amphp/amp", @@ -4997,16 +4997,16 @@ }, { "name": "jbtronics/settings-bundle", - "version": "v3.1.3", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/jbtronics/settings-bundle.git", - "reference": "a99c6e4cde40b829c1643b89da506b9588b11eaf" + "reference": "6a66c099460fd623d0d1ddbf9864b3173d416c3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jbtronics/settings-bundle/zipball/a99c6e4cde40b829c1643b89da506b9588b11eaf", - "reference": "a99c6e4cde40b829c1643b89da506b9588b11eaf", + "url": "https://api.github.com/repos/jbtronics/settings-bundle/zipball/6a66c099460fd623d0d1ddbf9864b3173d416c3b", + "reference": "6a66c099460fd623d0d1ddbf9864b3173d416c3b", "shasum": "" }, "require": { @@ -5067,7 +5067,7 @@ ], "support": { "issues": "https://github.com/jbtronics/settings-bundle/issues", - "source": "https://github.com/jbtronics/settings-bundle/tree/v3.1.3" + "source": "https://github.com/jbtronics/settings-bundle/tree/v3.2.0" }, "funding": [ { @@ -5079,7 +5079,7 @@ "type": "github" } ], - "time": "2026-01-02T23:58:02+00:00" + "time": "2026-02-03T20:13:02+00:00" }, { "name": "jfcherng/php-color-output", @@ -7191,16 +7191,16 @@ }, { "name": "nette/utils", - "version": "v4.1.1", + "version": "v4.1.2", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72" + "reference": "f76b5dc3d6c6d3043c8d937df2698515b99cbaf5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/c99059c0315591f1a0db7ad6002000288ab8dc72", - "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72", + "url": "https://api.github.com/repos/nette/utils/zipball/f76b5dc3d6c6d3043c8d937df2698515b99cbaf5", + "reference": "f76b5dc3d6c6d3043c8d937df2698515b99cbaf5", "shasum": "" }, "require": { @@ -7213,7 +7213,7 @@ "require-dev": { "jetbrains/phpstorm-attributes": "^1.2", "nette/tester": "^2.5", - "phpstan/phpstan-nette": "^2.0@stable", + "phpstan/phpstan": "^2.0@stable", "tracy/tracy": "^2.9" }, "suggest": { @@ -7274,9 +7274,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.1.1" + "source": "https://github.com/nette/utils/tree/v4.1.2" }, - "time": "2025-12-22T12:14:32+00:00" + "time": "2026-02-03T17:21:09+00:00" }, { "name": "nikolaposa/version", @@ -18611,28 +18611,28 @@ }, { "name": "phpunit/php-file-iterator", - "version": "5.1.0", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6" + "reference": "2f3a64888c814fc235386b7387dd5b5ed92ad903" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/118cfaaa8bc5aef3287bf315b6060b1174754af6", - "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/2f3a64888c814fc235386b7387dd5b5ed92ad903", + "reference": "2f3a64888c814fc235386b7387dd5b5ed92ad903", "shasum": "" }, "require": { "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^11.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -18660,15 +18660,27 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.1.0" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.1.1" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-file-iterator", + "type": "tidelift" } ], - "time": "2024-08-27T05:02:59+00:00" + "time": "2026-02-02T13:52:54+00:00" }, { "name": "phpunit/php-invoker", @@ -19029,12 +19041,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "8457f2008fc6396be788162c4e04228028306534" + "reference": "57534122edd70a2b3dbb02b65f2091efc57e4ab7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/8457f2008fc6396be788162c4e04228028306534", - "reference": "8457f2008fc6396be788162c4e04228028306534", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/57534122edd70a2b3dbb02b65f2091efc57e4ab7", + "reference": "57534122edd70a2b3dbb02b65f2091efc57e4ab7", "shasum": "" }, "conflict": { @@ -19144,6 +19156,7 @@ "cesnet/simplesamlphp-module-proxystatistics": "<3.1", "chriskacerguis/codeigniter-restserver": "<=2.7.1", "chrome-php/chrome": "<1.14", + "ci4-cms-erp/ci4ms": "<0.28.5", "civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3", "ckeditor/ckeditor": "<4.25", "clickstorm/cs-seo": ">=6,<6.8|>=7,<7.5|>=8,<8.4|>=9,<9.3", @@ -19175,6 +19188,8 @@ "couleurcitron/tarteaucitron-wp": "<0.3", "cpsit/typo3-mailqueue": "<0.4.3|>=0.5,<0.5.1", "craftcms/cms": "<=4.16.16|>=5,<=5.8.20", + "craftcms/commerce": ">=4.0.0.0-RC1-dev,<=4.10|>=5,<=5.5.1", + "craftcms/composer": ">=4.0.0.0-RC1-dev,<=4.10|>=5.0.0.0-RC1-dev,<=5.5.1", "croogo/croogo": "<=4.0.7", "cuyz/valinor": "<0.12", "czim/file-handling": "<1.5|>=2,<2.3", @@ -19192,7 +19207,7 @@ "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1|>=7,<7.4", "desperado/xml-bundle": "<=0.1.7", "dev-lancer/minecraft-motd-parser": "<=1.0.5", - "devcode-it/openstamanager": "<=2.9.4", + "devcode-it/openstamanager": "<=2.9.8", "devgroup/dotplant": "<2020.09.14-dev", "digimix/wp-svg-upload": "<=1", "directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2", @@ -19275,18 +19290,18 @@ "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1|>=5.3.0.0-beta1,<5.3.5", "ezsystems/ezplatform-graphql": ">=1.0.0.0-RC1-dev,<1.0.13|>=2.0.0.0-beta1,<2.3.12", "ezsystems/ezplatform-http-cache": "<2.3.16", - "ezsystems/ezplatform-kernel": "<1.2.5.1-dev|>=1.3,<1.3.35", + "ezsystems/ezplatform-kernel": "<=1.2.5|>=1.3,<1.3.35", "ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8", "ezsystems/ezplatform-richtext": ">=2.3,<2.3.26|>=3.3,<3.3.40", "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-kernel": "<=6.13.8.1|>=7,<7.5.31", "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.2", "facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2", - "facturascripts/facturascripts": "<=2025.4|==2025.11|==2025.41|==2025.43", + "facturascripts/facturascripts": "<2025.81", "fastly/magento2": "<1.2.26", "feehi/cms": "<=2.1.1", "feehi/feehicms": "<=2.1.1", @@ -19575,7 +19590,7 @@ "open-web-analytics/open-web-analytics": "<1.8.1", "opencart/opencart": ">=0", "openid/php-openid": "<2.3", - "openmage/magento-lts": "<20.16", + "openmage/magento-lts": "<20.16.1", "opensolutions/vimbadmin": "<=3.0.15", "opensource-workshop/connect-cms": "<1.8.7|>=2,<2.4.7", "orchid/platform": ">=8,<14.43", @@ -20037,7 +20052,7 @@ "type": "tidelift" } ], - "time": "2026-01-30T22:06:58+00:00" + "time": "2026-02-03T19:20:38+00:00" }, { "name": "sebastian/cli-parser", @@ -21564,7 +21579,8 @@ "ext-iconv": "*", "ext-intl": "*", "ext-json": "*", - "ext-mbstring": "*" + "ext-mbstring": "*", + "ext-zip": "*" }, "platform-dev": {}, "platform-overrides": { diff --git a/config/reference.php b/config/reference.php index 82bdc45e..a1a077aa 100644 --- a/config/reference.php +++ b/config/reference.php @@ -2387,6 +2387,7 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * prefetch_all?: bool|Param, // Default: true * }, * cache?: array{ + * metadata_service?: scalar|Param|null, // Default: "cache.system" * service?: scalar|Param|null, // Default: "cache.app.taggable" * default_cacheable?: bool|Param, // Default: false * ttl?: int|Param, // Default: 0 diff --git a/yarn.lock b/yarn.lock index abbc7d9c..f3355f71 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,58 +2,58 @@ # yarn lockfile v1 -"@algolia/autocomplete-core@1.19.4": - version "1.19.4" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.19.4.tgz#db9e4ef88cd8f2ce5b25e376373a8898dcbe2945" - integrity sha512-yVwXLrfwQ3dAndY12j1pfa0oyC5hTDv+/dgwvVHj57dY3zN6PbAmcHdV5DOOdGJrCMXff+fsPr8G2Ik8zWOPTw== +"@algolia/autocomplete-core@1.19.5": + version "1.19.5" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.19.5.tgz#52d99aafce19493161220e417071f0222eeea7d6" + integrity sha512-/kAE3mMBage/9m0OGnKQteSa7/eIfvhiKx28OWj857+dJ6qYepEBuw5L8its2oTX8ZNM/6TA3fo49kMwgcwjlg== dependencies: - "@algolia/autocomplete-plugin-algolia-insights" "1.19.4" - "@algolia/autocomplete-shared" "1.19.4" + "@algolia/autocomplete-plugin-algolia-insights" "1.19.5" + "@algolia/autocomplete-shared" "1.19.5" -"@algolia/autocomplete-js@1.19.4", "@algolia/autocomplete-js@^1.17.0": - version "1.19.4" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-js/-/autocomplete-js-1.19.4.tgz#235e554d4e46567d7305d8c216b75dd2a0091655" - integrity sha512-ZkwsuTTIEuw+hbsIooMrNLvTVulUSSKqJT3ZeYYd//kA5fHaFf2/T0BDmd9qSGxZRhT5WS8AJYjFARLmj5x08g== +"@algolia/autocomplete-js@1.19.5", "@algolia/autocomplete-js@^1.17.0": + version "1.19.5" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-js/-/autocomplete-js-1.19.5.tgz#2ec3efd9d5efd505ea677775d0199e1207e4624e" + integrity sha512-C2/bEQeqq4nZ4PH2rySRvU9B224KbiCXAPZIn3pmMII/7BiXkppPQyDd+Fdly3ubOmnGFDH6BTzGHamySeOYeg== dependencies: - "@algolia/autocomplete-core" "1.19.4" - "@algolia/autocomplete-preset-algolia" "1.19.4" - "@algolia/autocomplete-shared" "1.19.4" + "@algolia/autocomplete-core" "1.19.5" + "@algolia/autocomplete-preset-algolia" "1.19.5" + "@algolia/autocomplete-shared" "1.19.5" htm "^3.1.1" preact "^10.13.2" -"@algolia/autocomplete-plugin-algolia-insights@1.19.4": - version "1.19.4" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.4.tgz#be14ba50677ea308d43e4f9e96f4542c3da51432" - integrity sha512-K6TQhTKxx0Es1ZbjlAQjgm/QLDOtKvw23MX0xmpvO7AwkmlmaEXo2PwHdVSs3Bquv28CkO2BYKks7jVSIdcXUg== +"@algolia/autocomplete-plugin-algolia-insights@1.19.5": + version "1.19.5" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.5.tgz#05246356fe9837475b08664ff4d6f55960127edc" + integrity sha512-5zbetV9h2VxH+Mxx27I7BH2EIACVRUBE1FNykBK+2c2M+mhXYMY4npHbbGYj6QDEw3VVvH2UxAnghFpCtC6B/w== dependencies: - "@algolia/autocomplete-shared" "1.19.4" + "@algolia/autocomplete-shared" "1.19.5" "@algolia/autocomplete-plugin-recent-searches@^1.17.0": - version "1.19.4" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-recent-searches/-/autocomplete-plugin-recent-searches-1.19.4.tgz#f3a013438f915aac8258481a6504a18bad432c8f" - integrity sha512-8LLAedqcvztFweNWFQuqz9lWIiVlPi+wLF+3qWLPWQZQY3E4bVsbnxVfL9z4AMX9G0lljd2dQitn+Vwkl96d7Q== + version "1.19.5" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-recent-searches/-/autocomplete-plugin-recent-searches-1.19.5.tgz#afd80f8abb281c4c01817a1edfde9a8aa95ed5db" + integrity sha512-lOEliMbohq0BsZJ7JXFHlfmGBNtuCsQW0PLq8m6X1SdMD4XAn8fFxiOO2Nk1A/IiymZcOoHQV71u6f14wiohDw== dependencies: - "@algolia/autocomplete-core" "1.19.4" - "@algolia/autocomplete-js" "1.19.4" - "@algolia/autocomplete-preset-algolia" "1.19.4" - "@algolia/autocomplete-shared" "1.19.4" + "@algolia/autocomplete-core" "1.19.5" + "@algolia/autocomplete-js" "1.19.5" + "@algolia/autocomplete-preset-algolia" "1.19.5" + "@algolia/autocomplete-shared" "1.19.5" -"@algolia/autocomplete-preset-algolia@1.19.4": - version "1.19.4" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.19.4.tgz#258c65112d73376c5c395d1ce67cd668deb06572" - integrity sha512-WhX4mYosy7yBDjkB6c/ag+WKICjvV2fqQv/+NWJlpvnk2JtMaZByi73F6svpQX945J+/PxpQe8YIRBZHuYsLAQ== +"@algolia/autocomplete-preset-algolia@1.19.5": + version "1.19.5" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.19.5.tgz#a9d5756090314c16b8895fa0c74ffccca7f8a1e2" + integrity sha512-afdgxUyBxgX1I34THLScCyC+ld2h8wnCTv7JndRxsRNIJjJpFtRNpnYDq0+HVcp+LYeNd1zksDu7CpltTSEsvA== dependencies: - "@algolia/autocomplete-shared" "1.19.4" + "@algolia/autocomplete-shared" "1.19.5" -"@algolia/autocomplete-shared@1.19.4": - version "1.19.4" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.4.tgz#fd0b92e2723e70c97df4fa7ba0a170c500289918" - integrity sha512-V7tYDgRXP0AqL4alwZBWNm1HPWjJvEU94Nr7Qa2cuPcIAbsTAj7M/F/+Pv/iwOWXl3N7tzVzNkOWm7sX6JT1SQ== +"@algolia/autocomplete-shared@1.19.5": + version "1.19.5" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.5.tgz#1a20f60fd400fd5641718358a2d5c3eb1893cf9c" + integrity sha512-yblBczNXtm2cCVzX4UAY3KkjdefmZPn1gWbIi8Q7qfBw7FjcKq2EjEl/65x4kU9nUc/ZkB5SeUf/bkqLEnA5gA== "@algolia/autocomplete-theme-classic@^1.17.0": - version "1.19.4" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-theme-classic/-/autocomplete-theme-classic-1.19.4.tgz#7a0802e7c64dcc3584d5085e23a290a64ade4319" - integrity sha512-/qE8BETNFbul4WrrUyBYgaaKcgFPk0Px9FDKADnr3HlIkXquRpcFHTxXK16jdwXb33yrcXaAVSQZRfUUSSnxVA== + version "1.19.5" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-theme-classic/-/autocomplete-theme-classic-1.19.5.tgz#7b0d3ac11f2dca33600fce9ac383056ab4202cdc" + integrity sha512-LjjhOmDbEXmV2IqaA7Xe8jh6lSpG087yC79ffLpXMKJOib4xSHFvPavsXC8NW25pWVHJFoAfplAAmxmeM2/jhw== "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.28.6", "@babel/code-frame@^7.29.0": version "7.29.0" @@ -1859,10 +1859,10 @@ resolved "https://registry.yarnpkg.com/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz#3081dadbc3460661b751e7591d7faea5df39dd29" integrity sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ== -"@isaacs/brace-expansion@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz#4b3dabab7d8e75a429414a96bd67bf4c1d13e0f3" - integrity sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA== +"@isaacs/brace-expansion@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz#0ef5a92d91f2fff2a37646ce54da9e5f599f6eff" + integrity sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ== dependencies: "@isaacs/balanced-match" "^4.0.1" @@ -2169,9 +2169,9 @@ integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== "@types/node@*": - version "25.1.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-25.1.0.tgz#95cc584f1f478301efc86de4f1867e5875e83571" - integrity sha512-t7frlewr6+cbx+9Ohpl0NOTKXZNV9xHRmNOvql47BFJKcEG1CxtxlPEEe+gR9uhVWM4DwhnvTF110mIL4yP9RA== + version "25.2.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-25.2.0.tgz#015b7d228470c1dcbfc17fe9c63039d216b4d782" + integrity sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w== dependencies: undici-types "~7.16.0" @@ -2790,9 +2790,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001759: - version "1.0.30001766" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001766.tgz#b6f6b55cb25a2d888d9393104d14751c6a7d6f7a" - integrity sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA== + version "1.0.30001767" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001767.tgz#0279c498e862efb067938bba0a0aabafe8d0b730" + integrity sha512-34+zUAMhSH+r+9eKmYG+k2Rpt8XttfE4yXAjoZvkAPs15xcYQhyBYdalJ65BzivAvGRMViEjy6oKr/S91loekQ== ccount@^2.0.0: version "2.0.1" @@ -3671,9 +3671,9 @@ dunder-proto@^1.0.0, dunder-proto@^1.0.1: gopd "^1.2.0" electron-to-chromium@^1.5.263: - version "1.5.283" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.283.tgz#51d492c37c2d845a0dccb113fe594880c8616de8" - integrity sha512-3vifjt1HgrGW/h76UEeny+adYApveS9dH2h3p57JYzBSXJIKUJAvtmIytDKjcSCt9xHfrNCFJ7gts6vkhuq++w== + version "1.5.286" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz#142be1ab5e1cd5044954db0e5898f60a4960384e" + integrity sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A== emoji-regex@^7.0.1: version "7.0.3" @@ -3690,13 +3690,13 @@ emojis-list@^3.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== -enhanced-resolve@^5.0.0, enhanced-resolve@^5.17.4: - version "5.18.4" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz#c22d33055f3952035ce6a144ce092447c525f828" - integrity sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q== +enhanced-resolve@^5.0.0, enhanced-resolve@^5.19.0: + version "5.19.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz#6687446a15e969eaa63c2fa2694510e17ae6d97c" + integrity sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg== dependencies: graceful-fs "^4.2.4" - tapable "^2.2.0" + tapable "^2.3.0" entities@^2.0.0: version "2.2.0" @@ -5589,11 +5589,11 @@ mini-css-extract-plugin@^2.4.2, mini-css-extract-plugin@^2.6.0: tapable "^2.2.1" minimatch@*: - version "10.1.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.1.1.tgz#e6e61b9b0c1dcab116b5a7d1458e8b6ae9e73a55" - integrity sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ== + version "10.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.1.2.tgz#6c3f289f9de66d628fa3feb1842804396a43d81c" + integrity sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw== dependencies: - "@isaacs/brace-expansion" "^5.0.0" + "@isaacs/brace-expansion" "^5.0.1" minimatch@3.0.4: version "3.0.4" @@ -7371,7 +7371,7 @@ tagged-tag@^1.0.0: resolved "https://registry.yarnpkg.com/tagged-tag/-/tagged-tag-1.0.0.tgz#a0b5917c2864cba54841495abfa3f6b13edcf4d6" integrity sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng== -tapable@^2.0.0, tapable@^2.2.0, tapable@^2.2.1, tapable@^2.3.0: +tapable@^2.0.0, tapable@^2.2.1, tapable@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.0.tgz#7e3ea6d5ca31ba8e078b560f0d83ce9a14aa8be6" integrity sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg== @@ -7455,9 +7455,9 @@ to-regex-range@^5.0.1: is-number "^7.0.0" tom-select@^2.1.0: - version "2.4.3" - resolved "https://registry.yarnpkg.com/tom-select/-/tom-select-2.4.3.tgz#1daa4131cd317de691f39eb5bf41148265986c1f" - integrity sha512-MFFrMxP1bpnAMPbdvPCZk0KwYxLqhYZso39torcdoefeV/NThNyDu8dV96/INJ5XQVTL3O55+GqQ78Pkj5oCfw== + version "2.4.5" + resolved "https://registry.yarnpkg.com/tom-select/-/tom-select-2.4.5.tgz#5c91355c9bf024ff5bc9389f8a2a370e4a28126a" + integrity sha512-ujZ5P10kRohKDFElklhkO4dRM+WkUEaytHhOuzbQkZ6MyiR8e2IwGKXab4v+ZNipE2queN8ztlb0MmRLqoM6QA== dependencies: "@orchidjs/sifter" "^1.1.0" "@orchidjs/unicode-variants" "^1.1.2" @@ -7747,7 +7747,7 @@ vfile@^6.0.0: "@types/unist" "^3.0.0" vfile-message "^4.0.0" -watchpack@^2.4.4: +watchpack@^2.5.1: version "2.5.1" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.5.1.tgz#dd38b601f669e0cbf567cb802e75cead82cde102" integrity sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg== @@ -7843,9 +7843,9 @@ webpack-sources@^3.3.3: integrity sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg== webpack@^5.74.0: - version "5.104.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.104.1.tgz#94bd41eb5dbf06e93be165ba8be41b8260d4fb1a" - integrity sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA== + version "5.105.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.105.0.tgz#38b5e6c5db8cbe81debbd16e089335ada05ea23a" + integrity sha512-gX/dMkRQc7QOMzgTe6KsYFM7DxeIONQSui1s0n/0xht36HvrgbxtM1xBlgx596NbpHuQU8P7QpKwrZYwUX48nw== dependencies: "@types/eslint-scope" "^3.7.7" "@types/estree" "^1.0.8" @@ -7857,7 +7857,7 @@ webpack@^5.74.0: acorn-import-phases "^1.0.3" browserslist "^4.28.1" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.17.4" + enhanced-resolve "^5.19.0" es-module-lexer "^2.0.0" eslint-scope "5.1.1" events "^3.2.0" @@ -7870,7 +7870,7 @@ webpack@^5.74.0: schema-utils "^4.3.3" tapable "^2.3.0" terser-webpack-plugin "^5.3.16" - watchpack "^2.4.4" + watchpack "^2.5.1" webpack-sources "^3.3.3" which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1: From ea748dc469e0c90cb95444de3c7e306b19c7fb0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 3 Feb 2026 21:49:31 +0100 Subject: [PATCH 221/235] Use cache.app adapter for settings content cache --- config/packages/cache.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/packages/cache.yaml b/config/packages/cache.yaml index c1816aa2..846033d6 100644 --- a/config/packages/cache.yaml +++ b/config/packages/cache.yaml @@ -25,5 +25,5 @@ framework: adapter: cache.app cache.settings: - adapter: cache.system + adapter: cache.app tags: true From b48de83a3289d6df55a90b4baaa12fb9603612d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 3 Feb 2026 23:04:18 +0100 Subject: [PATCH 222/235] Use brick schema to implement GenericWebProvider This is less error prone than our own parser and also allows to parse Microdata and rdfa lite to support more webshops --- composer.json | 1 + composer.lock | 173 +++++++++++++++++- .../Providers/GenericWebProvider.php | 170 ++++++++--------- 3 files changed, 260 insertions(+), 84 deletions(-) diff --git a/composer.json b/composer.json index 8ce686c2..36dd461e 100644 --- a/composer.json +++ b/composer.json @@ -18,6 +18,7 @@ "api-platform/symfony": "^4.0.0", "beberlei/doctrineextensions": "^1.2", "brick/math": "^0.13.1", + "brick/schema": "^0.2.0", "composer/ca-bundle": "^1.5", "composer/package-versions-deprecated": "^1.11.99.5", "doctrine/data-fixtures": "^2.0.0", diff --git a/composer.lock b/composer.lock index 56ab8701..28d7c981 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "8e387d6d016f33eb7302c47ecb7a12b9", + "content-hash": "7ca9c95fb85f6bf3d9b8a3aa98ca33f6", "packages": [ { "name": "amphp/amp", @@ -2387,6 +2387,117 @@ ], "time": "2025-03-29T13:50:30+00:00" }, + { + "name": "brick/schema", + "version": "0.2.0", + "source": { + "type": "git", + "url": "https://github.com/brick/schema.git", + "reference": "b5114bf5e8092430041a37efe1cfd5279ca764c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/schema/zipball/b5114bf5e8092430041a37efe1cfd5279ca764c0", + "reference": "b5114bf5e8092430041a37efe1cfd5279ca764c0", + "shasum": "" + }, + "require": { + "brick/structured-data": "~0.1.0 || ~0.2.0", + "ext-dom": "*", + "php": "^8.1" + }, + "require-dev": { + "brick/varexporter": "^0.6", + "vimeo/psalm": "6.12.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Schema\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Schema.org library for PHP", + "keywords": [ + "JSON-LD", + "brick", + "microdata", + "rdfa lite", + "schema", + "schema.org", + "structured data" + ], + "support": { + "issues": "https://github.com/brick/schema/issues", + "source": "https://github.com/brick/schema/tree/0.2.0" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + } + ], + "time": "2025-06-12T07:03:20+00:00" + }, + { + "name": "brick/structured-data", + "version": "0.2.0", + "source": { + "type": "git", + "url": "https://github.com/brick/structured-data.git", + "reference": "be9b28720e2aba87f19c90500700970be85affde" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/structured-data/zipball/be9b28720e2aba87f19c90500700970be85affde", + "reference": "be9b28720e2aba87f19c90500700970be85affde", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "php": "^8.1", + "sabre/uri": "^2.1 || ^3.0" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.0", + "phpunit/phpunit": "^8.0 || ^9.0", + "vimeo/psalm": "6.12.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\StructuredData\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Microdata, RDFa Lite & JSON-LD structured data reader", + "keywords": [ + "JSON-LD", + "brick", + "microdata", + "rdfa", + "structured data" + ], + "support": { + "issues": "https://github.com/brick/structured-data/issues", + "source": "https://github.com/brick/structured-data/tree/0.2.0" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + } + ], + "time": "2025-06-10T23:48:46+00:00" + }, { "name": "composer/ca-bundle", "version": "1.5.10", @@ -9595,6 +9706,66 @@ }, "time": "2025-09-14T07:37:21+00:00" }, + { + "name": "sabre/uri", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sabre-io/uri.git", + "reference": "38eeab6ed9eec435a2188db489d4649c56272c51" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sabre-io/uri/zipball/38eeab6ed9eec435a2188db489d4649c56272c51", + "reference": "38eeab6ed9eec435a2188db489d4649c56272c51", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.64", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^1.12", + "phpstan/phpstan-phpunit": "^1.4", + "phpstan/phpstan-strict-rules": "^1.6", + "phpunit/phpunit": "^9.6" + }, + "type": "library", + "autoload": { + "files": [ + "lib/functions.php" + ], + "psr-4": { + "Sabre\\Uri\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Evert Pot", + "email": "me@evertpot.com", + "homepage": "http://evertpot.com/", + "role": "Developer" + } + ], + "description": "Functions for making sense out of URIs.", + "homepage": "http://sabre.io/uri/", + "keywords": [ + "rfc3986", + "uri", + "url" + ], + "support": { + "forum": "https://groups.google.com/group/sabredav-discuss", + "issues": "https://github.com/sabre-io/uri/issues", + "source": "https://github.com/fruux/sabre-uri" + }, + "time": "2024-09-04T15:30:08+00:00" + }, { "name": "scheb/2fa-backup-code", "version": "v7.13.1", diff --git a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php index 66d45707..e85ce5f4 100644 --- a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php +++ b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php @@ -32,6 +32,18 @@ use App\Services\InfoProviderSystem\DTOs\SearchResultDTO; use App\Services\InfoProviderSystem\PartInfoRetriever; use App\Services\InfoProviderSystem\ProviderRegistry; use App\Settings\InfoProviderSystem\GenericWebProviderSettings; +use Brick\Schema\Interfaces\ImageObject; +use Brick\Schema\Interfaces\Product; +use Brick\Schema\Interfaces\PropertyValue; +use Brick\Schema\Interfaces\QuantitativeValue; +use Brick\Schema\Interfaces\Thing; +use Brick\Schema\SchemaReader; +use Brick\Schema\SchemaTypeList; +use Brick\StructuredData\HTMLReader; +use Brick\StructuredData\Reader\JsonLdReader; +use Brick\StructuredData\Reader\MicrodataReader; +use Brick\StructuredData\Reader\RdfaLiteReader; +use Brick\StructuredData\Reader\ReaderChain; use Symfony\Component\DomCrawler\Crawler; use Symfony\Contracts\HttpClient\HttpClientInterface; @@ -104,126 +116,122 @@ class GenericWebProvider implements InfoProviderInterface return $host; } - private function productJsonLdToPart(array $jsonLd, string $url, Crawler $dom): PartDetailDTO + private function productToPart(Product $product, string $url, Crawler $dom): PartDetailDTO { - $notes = $jsonLd['description'] ?? ""; - if (isset($jsonLd['disambiguatingDescription'])) { + $notes = $product->description->toString() ?? ""; + if ($product->disambiguatingDescription !== null) { if (!empty($notes)) { $notes .= "\n\n"; } - $notes .= $jsonLd['disambiguatingDescription']; + $notes .= $product->disambiguatingDescription->toString(); } + + //Extract vendor infos $vendor_infos = null; - if (isset($jsonLd['offers'])) { - - if (array_is_list($jsonLd['offers'])) { - $offer = $jsonLd['offers'][0]; - } else { - $offer = $jsonLd['offers']; - } - - //Make $jsonLd['url'] absolute if it's relative - if (isset($jsonLd['url']) && parse_url($jsonLd['url'], PHP_URL_SCHEME) === null) { - $parsedUrl = parse_url($url); - $scheme = $parsedUrl['scheme'] ?? 'https'; - $host = $parsedUrl['host'] ?? ''; - $jsonLd['url'] = $scheme.'://'.$host.$jsonLd['url']; - } - + $offer = $product->offers->getFirstValue(); + if ($offer !== null) { $prices = []; - if (isset($offer['price'])) { - $prices[] = new PriceDTO( + if ($offer->price->toString() !== null) { + $prices = [new PriceDTO( minimum_discount_amount: 1, - price: (string) $offer['price'], - currency_iso_code: $offer['priceCurrency'] ?? null - ); - } else if (isset($offer['offers']) && array_is_list($offer['offers'])) { - //Some sites nest offers - foreach ($offer['offers'] as $subOffer) { - if (isset($subOffer['price'])) { - $prices[] = new PriceDTO( + price: $offer->price->toString(), + currency_iso_code: $offer->priceCurrency?->toString() + )]; + } else { //Check for nested offers (like IKEA does it) + $offer2 = $offer->offers->getFirstValue(); + if ($offer2 !== null && $offer2->price->toString() !== null) { + $prices = [ + new PriceDTO( minimum_discount_amount: 1, - price: (string) $subOffer['price'], - currency_iso_code: $subOffer['priceCurrency'] ?? null - ); - } + price: $offer2->price->toString(), + currency_iso_code: $offer2->priceCurrency?->toString() + ) + ]; } } $vendor_infos = [new PurchaseInfoDTO( distributor_name: $this->extractShopName($url), - order_number: (string) ($jsonLd['sku'] ?? $jsonLd['@id'] ?? $jsonLd['gtin'] ?? 'Unknown'), + order_number: $product->sku?->toString() ?? $product->identifier?->toString() ?? 'Unknown', prices: $prices, - product_url: $jsonLd['url'] ?? $url, + product_url: $offer->url?->toString() ?? $url, )]; } + //Extract image: $image = null; - if (isset($jsonLd['image'])) { - if (is_array($jsonLd['image'])) { - if (array_is_list($jsonLd['image'])) { - $image = $jsonLd['image'][0] ?? null; - } - } elseif (is_string($jsonLd['image'])) { - $image = $jsonLd['image']; + if ($product->image !== null) { + $imageObj = $product->image->getFirstValue(); + if (is_string($imageObj)) { + $image = $imageObj; + } else if ($imageObj instanceof ImageObject) { + $image = $imageObj->contentUrl?->toString() ?? $imageObj->url?->toString(); } } - //If image is an object with @type ImageObject, extract the url - if (is_array($image) && isset($image['@type']) && $image['@type'] === 'ImageObject') { - $image = $image['contentUrl'] ?? $image['url'] ?? null; - } - //Try to extract parameters from additionalProperty + //Extract parameters from additionalProperty $parameters = []; - if (isset($jsonLd['additionalProperty']) && array_is_list($jsonLd['additionalProperty'])) { - foreach ($jsonLd['additionalProperty'] as $property) { //TODO: Handle minValue and maxValue - if (isset ($property['unitText'])) { + foreach ($product->additionalProperty->getValues() as $property) { + if ($property instanceof PropertyValue) { //TODO: Handle minValue and maxValue + if ($property->unitText->toString() !== null) { $parameters[] = ParameterDTO::parseValueField( - name: $property['name'] ?? 'Unknown', - value: $property['value'] ?? '', - unit: $property['unitText'] + name: $property->name->toString() ?? 'Unknown', + value: $property->value->toString() ?? '', + unit: $property->unitText->toString() ); } else { $parameters[] = ParameterDTO::parseValueIncludingUnit( - name: $property['name'] ?? 'Unknown', - value: $property['value'] ?? '' + name: $property->name->toString() ?? 'Unknown', + value: $property->value->toString() ?? '' ); } } } + //Try to extract weight + $mass = null; + if (($weight = $product?->weight->getFirstValue()) instanceof QuantitativeValue) { + $mass = $weight->value->toString(); + } return new PartDetailDTO( provider_key: $this->getProviderKey(), provider_id: $url, - name: $jsonLd ['name'] ?? 'Unknown Name', + name: $product->name?->toString() ?? $product->alternateName?->toString() ?? $product?->mpn->toString() ?? 'Unknown Name', description: $this->getMetaContent($dom, 'og:description') ?? $this->getMetaContent($dom, 'description') ?? '', - category: isset($jsonLd['category']) && is_string($jsonLd['category']) ? $jsonLd['category'] : null, - manufacturer: $jsonLd['manufacturer']['name'] ?? $jsonLd['brand']['name'] ?? null, - mpn: $jsonLd['mpn'] ?? null, + category: $product->category?->toString(), + manufacturer: self::propertyOrString($product->manufacturer) ?? self::propertyOrString($product->brand), + mpn: $product->mpn?->toString(), preview_image_url: $image, provider_url: $url, notes: $notes, parameters: $parameters, vendor_infos: $vendor_infos, - mass: isset($jsonLd['weight']['value']) ? (float)$jsonLd['weight']['value'] : null, + mass: $mass ); } - /** - * Decodes JSON in a forgiving way, trying to fix common issues. - * @param string $json - * @return array - * @throws \JsonException - */ - private function json_decode_forgiving(string $json): array + private static function propertyOrString(SchemaTypeList|Thing|string|null $value, string $property = "name"): ?string { - //Sanitize common issues - $json = preg_replace("/[\r\n]+/", " ", $json); - return json_decode($json, true, 512, JSON_THROW_ON_ERROR); + if ($value instanceof SchemaTypeList) { + $value = $value->getFirstValue(); + } + if ($value === null) { + return null; + } + + if (is_string($value)) { + return $value; + } + + if ($value instanceof Thing) { + return $value->$property?->toString(); + } + return null; } + /** * Gets the content of a meta tag by its name or property attribute, or null if not found * @param Crawler $dom @@ -336,18 +344,14 @@ class GenericWebProvider implements InfoProviderInterface $canonicalURL = $scheme.'://'.$host.$canonicalURL; } - //Try to find json-ld data in the head - $jsonLdNodes = $dom->filter('script[type="application/ld+json"]'); - foreach ($jsonLdNodes as $node) { - $jsonLd = $this->json_decode_forgiving($node->textContent); - //If the content of json-ld is an array, try to find a product inside - if (!array_is_list($jsonLd)) { - $jsonLd = [$jsonLd]; - } - foreach ($jsonLd as $item) { - if (isset($item['@type']) && $item['@type'] === 'Product') { - return $this->productJsonLdToPart($item, $canonicalURL, $dom); - } + + $schemaReader = SchemaReader::forAllFormats(); + $things = $schemaReader->readHtml($content, $canonicalURL); + + //Try to find a Product schema + foreach ($things as $thing) { + if ($thing instanceof Product) { + return $this->productToPart($thing, $canonicalURL, $dom); } } From 7d19ed3ca8754df68927ac96b078c159e245d590 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 3 Feb 2026 23:20:13 +0100 Subject: [PATCH 223/235] Try to get a category from a webshop based on the breadcrumbs --- .../Providers/GenericWebProvider.php | 47 +++++++++++++++---- 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php index e85ce5f4..6d27beb2 100644 --- a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php +++ b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php @@ -32,6 +32,7 @@ use App\Services\InfoProviderSystem\DTOs\SearchResultDTO; use App\Services\InfoProviderSystem\PartInfoRetriever; use App\Services\InfoProviderSystem\ProviderRegistry; use App\Settings\InfoProviderSystem\GenericWebProviderSettings; +use Brick\Schema\Interfaces\BreadcrumbList; use Brick\Schema\Interfaces\ImageObject; use Brick\Schema\Interfaces\Product; use Brick\Schema\Interfaces\PropertyValue; @@ -39,11 +40,6 @@ use Brick\Schema\Interfaces\QuantitativeValue; use Brick\Schema\Interfaces\Thing; use Brick\Schema\SchemaReader; use Brick\Schema\SchemaTypeList; -use Brick\StructuredData\HTMLReader; -use Brick\StructuredData\Reader\JsonLdReader; -use Brick\StructuredData\Reader\MicrodataReader; -use Brick\StructuredData\Reader\RdfaLiteReader; -use Brick\StructuredData\Reader\ReaderChain; use Symfony\Component\DomCrawler\Crawler; use Symfony\Contracts\HttpClient\HttpClientInterface; @@ -116,7 +112,33 @@ class GenericWebProvider implements InfoProviderInterface return $host; } - private function productToPart(Product $product, string $url, Crawler $dom): PartDetailDTO + private function breadcrumbToCategory(?BreadcrumbList $breadcrumbList): ?string + { + if ($breadcrumbList === null) { + return null; + } + + $items = $breadcrumbList->itemListElement->getValues(); + if (count($items) < 1) { + return null; + } + + try { + //Build our category from the breadcrumb items + $categories = []; + foreach ($items as $item) { + if (isset($item->name)) { + $categories[] = trim($item->name->toString()); + } + } + } catch (\Throwable) { + return null; + } + + return implode(' -> ', $categories); + } + + private function productToPart(Product $product, string $url, Crawler $dom, ?BreadcrumbList $categoryBreadcrumb): PartDetailDTO { $notes = $product->description->toString() ?? ""; if ($product->disambiguatingDescription !== null) { @@ -200,7 +222,7 @@ class GenericWebProvider implements InfoProviderInterface provider_id: $url, name: $product->name?->toString() ?? $product->alternateName?->toString() ?? $product?->mpn->toString() ?? 'Unknown Name', description: $this->getMetaContent($dom, 'og:description') ?? $this->getMetaContent($dom, 'description') ?? '', - category: $product->category?->toString(), + category: $this->breadcrumbToCategory($categoryBreadcrumb) ?? $product->category?->toString(), manufacturer: self::propertyOrString($product->manufacturer) ?? self::propertyOrString($product->brand), mpn: $product->mpn?->toString(), preview_image_url: $image, @@ -348,10 +370,19 @@ class GenericWebProvider implements InfoProviderInterface $schemaReader = SchemaReader::forAllFormats(); $things = $schemaReader->readHtml($content, $canonicalURL); + //Try to find a breadcrumb schema to extract the category + $categoryBreadCrumbs = null; + foreach ($things as $thing) { + if ($thing instanceof BreadcrumbList) { + $categoryBreadCrumbs = $thing; + break; + } + } + //Try to find a Product schema foreach ($things as $thing) { if ($thing instanceof Product) { - return $this->productToPart($thing, $canonicalURL, $dom); + return $this->productToPart($thing, $canonicalURL, $dom, $categoryBreadCrumbs); } } From 061af28c485523596caf14eb9bb35c3afa96e037 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 7 Feb 2026 17:07:53 +0100 Subject: [PATCH 224/235] Fixed phpstan issues in GenericWebProvider --- phpstan.dist.neon | 3 +++ .../InfoProviderSystem/Providers/GenericWebProvider.php | 9 +++------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/phpstan.dist.neon b/phpstan.dist.neon index eb629314..b03c20c2 100644 --- a/phpstan.dist.neon +++ b/phpstan.dist.neon @@ -67,3 +67,6 @@ parameters: - message: '#Should not use function "shell_exec"#' path: src/Services/System/UpdateExecutor.php + + - message: '#Access to an undefined property Brick\\Schema\\Interfaces\\#' + path: src/Services/InfoProviderSystem/Providers/GenericWebProvider.php diff --git a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php index 6d27beb2..7fbf5a58 100644 --- a/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php +++ b/src/Services/InfoProviderSystem/Providers/GenericWebProvider.php @@ -213,14 +213,14 @@ class GenericWebProvider implements InfoProviderInterface //Try to extract weight $mass = null; - if (($weight = $product?->weight->getFirstValue()) instanceof QuantitativeValue) { + if (($weight = $product->weight?->getFirstValue()) instanceof QuantitativeValue) { $mass = $weight->value->toString(); } return new PartDetailDTO( provider_key: $this->getProviderKey(), provider_id: $url, - name: $product->name?->toString() ?? $product->alternateName?->toString() ?? $product?->mpn->toString() ?? 'Unknown Name', + name: $product->name?->toString() ?? $product->alternateName?->toString() ?? $product->mpn?->toString() ?? 'Unknown Name', description: $this->getMetaContent($dom, 'og:description') ?? $this->getMetaContent($dom, 'description') ?? '', category: $this->breadcrumbToCategory($categoryBreadcrumb) ?? $product->category?->toString(), manufacturer: self::propertyOrString($product->manufacturer) ?? self::propertyOrString($product->brand), @@ -247,10 +247,7 @@ class GenericWebProvider implements InfoProviderInterface return $value; } - if ($value instanceof Thing) { - return $value->$property?->toString(); - } - return null; + return $value->$property?->toString(); } From 7bffe66b736bf5e68b7d8c640f745816e120fa48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 7 Feb 2026 17:11:05 +0100 Subject: [PATCH 225/235] Removed Translator that became obsolete with Symfony 7.2 --- .../Fixes/SegmentAwareXliffFileDumper.php | 242 ---------------- .../Fixes/SegmentAwareXliffFileLoader.php | 262 ------------------ 2 files changed, 504 deletions(-) delete mode 100644 src/Translation/Fixes/SegmentAwareXliffFileDumper.php delete mode 100644 src/Translation/Fixes/SegmentAwareXliffFileLoader.php diff --git a/src/Translation/Fixes/SegmentAwareXliffFileDumper.php b/src/Translation/Fixes/SegmentAwareXliffFileDumper.php deleted file mode 100644 index 4b44ef01..00000000 --- a/src/Translation/Fixes/SegmentAwareXliffFileDumper.php +++ /dev/null @@ -1,242 +0,0 @@ -. - */ - -declare(strict_types=1); - - -namespace App\Translation\Fixes; - -use Symfony\Component\DependencyInjection\Attribute\AsDecorator; -use Symfony\Component\Translation\Dumper\FileDumper; -use Symfony\Component\Translation\MessageCatalogue; -use Symfony\Component\Translation\Exception\InvalidArgumentException; - -/** - * Backport of the XliffFile dumper from Symfony 7.2, which supports segment attributes and notes, this keeps the - * metadata when editing the translations from inside Symfony. - */ -#[AsDecorator("translation.dumper.xliff")] -class SegmentAwareXliffFileDumper extends FileDumper -{ - - public function __construct( - private string $extension = 'xlf', - ) { - } - - public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []): string - { - $xliffVersion = '1.2'; - if (\array_key_exists('xliff_version', $options)) { - $xliffVersion = $options['xliff_version']; - } - - if (\array_key_exists('default_locale', $options)) { - $defaultLocale = $options['default_locale']; - } else { - $defaultLocale = \Locale::getDefault(); - } - - if ('1.2' === $xliffVersion) { - return $this->dumpXliff1($defaultLocale, $messages, $domain, $options); - } - if ('2.0' === $xliffVersion) { - return $this->dumpXliff2($defaultLocale, $messages, $domain); - } - - throw new InvalidArgumentException(\sprintf('No support implemented for dumping XLIFF version "%s".', $xliffVersion)); - } - - protected function getExtension(): string - { - return $this->extension; - } - - private function dumpXliff1(string $defaultLocale, MessageCatalogue $messages, ?string $domain, array $options = []): string - { - $toolInfo = ['tool-id' => 'symfony', 'tool-name' => 'Symfony']; - if (\array_key_exists('tool_info', $options)) { - $toolInfo = array_merge($toolInfo, $options['tool_info']); - } - - $dom = new \DOMDocument('1.0', 'utf-8'); - $dom->formatOutput = true; - - $xliff = $dom->appendChild($dom->createElement('xliff')); - $xliff->setAttribute('version', '1.2'); - $xliff->setAttribute('xmlns', 'urn:oasis:names:tc:xliff:document:1.2'); - - $xliffFile = $xliff->appendChild($dom->createElement('file')); - $xliffFile->setAttribute('source-language', str_replace('_', '-', $defaultLocale)); - $xliffFile->setAttribute('target-language', str_replace('_', '-', $messages->getLocale())); - $xliffFile->setAttribute('datatype', 'plaintext'); - $xliffFile->setAttribute('original', 'file.ext'); - - $xliffHead = $xliffFile->appendChild($dom->createElement('header')); - $xliffTool = $xliffHead->appendChild($dom->createElement('tool')); - foreach ($toolInfo as $id => $value) { - $xliffTool->setAttribute($id, $value); - } - - if ($catalogueMetadata = $messages->getCatalogueMetadata('', $domain) ?? []) { - $xliffPropGroup = $xliffHead->appendChild($dom->createElement('prop-group')); - foreach ($catalogueMetadata as $key => $value) { - $xliffProp = $xliffPropGroup->appendChild($dom->createElement('prop')); - $xliffProp->setAttribute('prop-type', $key); - $xliffProp->appendChild($dom->createTextNode($value)); - } - } - - $xliffBody = $xliffFile->appendChild($dom->createElement('body')); - foreach ($messages->all($domain) as $source => $target) { - $translation = $dom->createElement('trans-unit'); - - $translation->setAttribute('id', strtr(substr(base64_encode(hash('xxh128', $source, true)), 0, 7), '/+', '._')); - $translation->setAttribute('resname', $source); - - $s = $translation->appendChild($dom->createElement('source')); - $s->appendChild($dom->createTextNode($source)); - - // Does the target contain characters requiring a CDATA section? - $text = 1 === preg_match('/[&<>]/', $target) ? $dom->createCDATASection($target) : $dom->createTextNode($target); - - $targetElement = $dom->createElement('target'); - $metadata = $messages->getMetadata($source, $domain); - if ($this->hasMetadataArrayInfo('target-attributes', $metadata)) { - foreach ($metadata['target-attributes'] as $name => $value) { - $targetElement->setAttribute($name, $value); - } - } - $t = $translation->appendChild($targetElement); - $t->appendChild($text); - - if ($this->hasMetadataArrayInfo('notes', $metadata)) { - foreach ($metadata['notes'] as $note) { - if (!isset($note['content'])) { - continue; - } - - $n = $translation->appendChild($dom->createElement('note')); - $n->appendChild($dom->createTextNode($note['content'])); - - if (isset($note['priority'])) { - $n->setAttribute('priority', $note['priority']); - } - - if (isset($note['from'])) { - $n->setAttribute('from', $note['from']); - } - } - } - - $xliffBody->appendChild($translation); - } - - return $dom->saveXML(); - } - - private function dumpXliff2(string $defaultLocale, MessageCatalogue $messages, ?string $domain): string - { - $dom = new \DOMDocument('1.0', 'utf-8'); - $dom->formatOutput = true; - - $xliff = $dom->appendChild($dom->createElement('xliff')); - $xliff->setAttribute('xmlns', 'urn:oasis:names:tc:xliff:document:2.0'); - $xliff->setAttribute('version', '2.0'); - $xliff->setAttribute('srcLang', str_replace('_', '-', $defaultLocale)); - $xliff->setAttribute('trgLang', str_replace('_', '-', $messages->getLocale())); - - $xliffFile = $xliff->appendChild($dom->createElement('file')); - if (str_ends_with($domain, MessageCatalogue::INTL_DOMAIN_SUFFIX)) { - $xliffFile->setAttribute('id', substr($domain, 0, -\strlen(MessageCatalogue::INTL_DOMAIN_SUFFIX)).'.'.$messages->getLocale()); - } else { - $xliffFile->setAttribute('id', $domain.'.'.$messages->getLocale()); - } - - if ($catalogueMetadata = $messages->getCatalogueMetadata('', $domain) ?? []) { - $xliff->setAttribute('xmlns:m', 'urn:oasis:names:tc:xliff:metadata:2.0'); - $xliffMetadata = $xliffFile->appendChild($dom->createElement('m:metadata')); - foreach ($catalogueMetadata as $key => $value) { - $xliffMeta = $xliffMetadata->appendChild($dom->createElement('prop')); - $xliffMeta->setAttribute('type', $key); - $xliffMeta->appendChild($dom->createTextNode($value)); - } - } - - foreach ($messages->all($domain) as $source => $target) { - $translation = $dom->createElement('unit'); - $translation->setAttribute('id', strtr(substr(base64_encode(hash('xxh128', $source, true)), 0, 7), '/+', '._')); - - if (\strlen($source) <= 80) { - $translation->setAttribute('name', $source); - } - - $metadata = $messages->getMetadata($source, $domain); - - // Add notes section - if ($this->hasMetadataArrayInfo('notes', $metadata)) { - $notesElement = $dom->createElement('notes'); - foreach ($metadata['notes'] as $note) { - $n = $dom->createElement('note'); - $n->appendChild($dom->createTextNode($note['content'] ?? '')); - unset($note['content']); - - foreach ($note as $name => $value) { - $n->setAttribute($name, $value); - } - $notesElement->appendChild($n); - } - $translation->appendChild($notesElement); - } - - $segment = $translation->appendChild($dom->createElement('segment')); - - if ($this->hasMetadataArrayInfo('segment-attributes', $metadata)) { - foreach ($metadata['segment-attributes'] as $name => $value) { - $segment->setAttribute($name, $value); - } - } - - $s = $segment->appendChild($dom->createElement('source')); - $s->appendChild($dom->createTextNode($source)); - - // Does the target contain characters requiring a CDATA section? - $text = 1 === preg_match('/[&<>]/', $target) ? $dom->createCDATASection($target) : $dom->createTextNode($target); - - $targetElement = $dom->createElement('target'); - if ($this->hasMetadataArrayInfo('target-attributes', $metadata)) { - foreach ($metadata['target-attributes'] as $name => $value) { - $targetElement->setAttribute($name, $value); - } - } - $t = $segment->appendChild($targetElement); - $t->appendChild($text); - - $xliffFile->appendChild($translation); - } - - return $dom->saveXML(); - } - - private function hasMetadataArrayInfo(string $key, ?array $metadata = null): bool - { - return is_iterable($metadata[$key] ?? null); - } -} \ No newline at end of file diff --git a/src/Translation/Fixes/SegmentAwareXliffFileLoader.php b/src/Translation/Fixes/SegmentAwareXliffFileLoader.php deleted file mode 100644 index 12455e87..00000000 --- a/src/Translation/Fixes/SegmentAwareXliffFileLoader.php +++ /dev/null @@ -1,262 +0,0 @@ -. - */ - -declare(strict_types=1); - - -namespace App\Translation\Fixes; - -use Symfony\Component\Config\Resource\FileResource; -use Symfony\Component\Config\Util\Exception\InvalidXmlException; -use Symfony\Component\Config\Util\Exception\XmlParsingException; -use Symfony\Component\Config\Util\XmlUtils; -use Symfony\Component\DependencyInjection\Attribute\AsDecorator; -use Symfony\Component\Translation\Exception\InvalidResourceException; -use Symfony\Component\Translation\Exception\NotFoundResourceException; -use Symfony\Component\Translation\Exception\RuntimeException; -use Symfony\Component\Translation\Loader\LoaderInterface; -use Symfony\Component\Translation\MessageCatalogue; -use Symfony\Component\Translation\Util\XliffUtils; - -/** - * Backport of the XliffFile dumper from Symfony 7.2, which supports segment attributes and notes, this keeps the - * metadata when editing the translations from inside Symfony. - */ -#[AsDecorator("translation.loader.xliff")] -class SegmentAwareXliffFileLoader implements LoaderInterface -{ - public function load(mixed $resource, string $locale, string $domain = 'messages'): MessageCatalogue - { - if (!class_exists(XmlUtils::class)) { - throw new RuntimeException('Loading translations from the Xliff format requires the Symfony Config component.'); - } - - if (!$this->isXmlString($resource)) { - if (!stream_is_local($resource)) { - throw new InvalidResourceException(\sprintf('This is not a local file "%s".', $resource)); - } - - if (!file_exists($resource)) { - throw new NotFoundResourceException(\sprintf('File "%s" not found.', $resource)); - } - - if (!is_file($resource)) { - throw new InvalidResourceException(\sprintf('This is neither a file nor an XLIFF string "%s".', $resource)); - } - } - - try { - if ($this->isXmlString($resource)) { - $dom = XmlUtils::parse($resource); - } else { - $dom = XmlUtils::loadFile($resource); - } - } catch (\InvalidArgumentException|XmlParsingException|InvalidXmlException $e) { - throw new InvalidResourceException(\sprintf('Unable to load "%s": ', $resource).$e->getMessage(), $e->getCode(), $e); - } - - if ($errors = XliffUtils::validateSchema($dom)) { - throw new InvalidResourceException(\sprintf('Invalid resource provided: "%s"; Errors: ', $resource).XliffUtils::getErrorsAsString($errors)); - } - - $catalogue = new MessageCatalogue($locale); - $this->extract($dom, $catalogue, $domain); - - if (is_file($resource) && class_exists(FileResource::class)) { - $catalogue->addResource(new FileResource($resource)); - } - - return $catalogue; - } - - private function extract(\DOMDocument $dom, MessageCatalogue $catalogue, string $domain): void - { - $xliffVersion = XliffUtils::getVersionNumber($dom); - - if ('1.2' === $xliffVersion) { - $this->extractXliff1($dom, $catalogue, $domain); - } - - if ('2.0' === $xliffVersion) { - $this->extractXliff2($dom, $catalogue, $domain); - } - } - - /** - * Extract messages and metadata from DOMDocument into a MessageCatalogue. - */ - private function extractXliff1(\DOMDocument $dom, MessageCatalogue $catalogue, string $domain): void - { - $xml = simplexml_import_dom($dom); - $encoding = $dom->encoding ? strtoupper($dom->encoding) : null; - - $namespace = 'urn:oasis:names:tc:xliff:document:1.2'; - $xml->registerXPathNamespace('xliff', $namespace); - - foreach ($xml->xpath('//xliff:file') as $file) { - $fileAttributes = $file->attributes(); - - $file->registerXPathNamespace('xliff', $namespace); - - foreach ($file->xpath('.//xliff:prop') as $prop) { - $catalogue->setCatalogueMetadata($prop->attributes()['prop-type'], (string) $prop, $domain); - } - - foreach ($file->xpath('.//xliff:trans-unit') as $translation) { - $attributes = $translation->attributes(); - - if (!(isset($attributes['resname']) || isset($translation->source))) { - continue; - } - - $source = (string) (isset($attributes['resname']) && $attributes['resname'] ? $attributes['resname'] : $translation->source); - - if (isset($translation->target) - && 'needs-translation' === (string) $translation->target->attributes()['state'] - && \in_array((string) $translation->target, [$source, (string) $translation->source], true) - ) { - continue; - } - - // If the xlf file has another encoding specified, try to convert it because - // simple_xml will always return utf-8 encoded values - $target = $this->utf8ToCharset((string) ($translation->target ?? $translation->source), $encoding); - - $catalogue->set($source, $target, $domain); - - $metadata = [ - 'source' => (string) $translation->source, - 'file' => [ - 'original' => (string) $fileAttributes['original'], - ], - ]; - if ($notes = $this->parseNotesMetadata($translation->note, $encoding)) { - $metadata['notes'] = $notes; - } - - if (isset($translation->target) && $translation->target->attributes()) { - $metadata['target-attributes'] = []; - foreach ($translation->target->attributes() as $key => $value) { - $metadata['target-attributes'][$key] = (string) $value; - } - } - - if (isset($attributes['id'])) { - $metadata['id'] = (string) $attributes['id']; - } - - $catalogue->setMetadata($source, $metadata, $domain); - } - } - } - - private function extractXliff2(\DOMDocument $dom, MessageCatalogue $catalogue, string $domain): void - { - $xml = simplexml_import_dom($dom); - $encoding = $dom->encoding ? strtoupper($dom->encoding) : null; - - $xml->registerXPathNamespace('xliff', 'urn:oasis:names:tc:xliff:document:2.0'); - - foreach ($xml->xpath('//xliff:unit') as $unit) { - foreach ($unit->segment as $segment) { - $attributes = $unit->attributes(); - $source = $attributes['name'] ?? $segment->source; - - // If the xlf file has another encoding specified, try to convert it because - // simple_xml will always return utf-8 encoded values - $target = $this->utf8ToCharset((string) ($segment->target ?? $segment->source), $encoding); - - $catalogue->set((string) $source, $target, $domain); - - $metadata = []; - if ($segment->attributes()) { - $metadata['segment-attributes'] = []; - foreach ($segment->attributes() as $key => $value) { - $metadata['segment-attributes'][$key] = (string) $value; - } - } - - if (isset($segment->target) && $segment->target->attributes()) { - $metadata['target-attributes'] = []; - foreach ($segment->target->attributes() as $key => $value) { - $metadata['target-attributes'][$key] = (string) $value; - } - } - - if (isset($unit->notes)) { - $metadata['notes'] = []; - foreach ($unit->notes->note as $noteNode) { - $note = []; - foreach ($noteNode->attributes() as $key => $value) { - $note[$key] = (string) $value; - } - $note['content'] = (string) $noteNode; - $metadata['notes'][] = $note; - } - } - - $catalogue->setMetadata((string) $source, $metadata, $domain); - } - } - } - - /** - * Convert a UTF8 string to the specified encoding. - */ - private function utf8ToCharset(string $content, ?string $encoding = null): string - { - if ('UTF-8' !== $encoding && $encoding) { - return mb_convert_encoding($content, $encoding, 'UTF-8'); - } - - return $content; - } - - private function parseNotesMetadata(?\SimpleXMLElement $noteElement = null, ?string $encoding = null): array - { - $notes = []; - - if (null === $noteElement) { - return $notes; - } - - /** @var \SimpleXMLElement $xmlNote */ - foreach ($noteElement as $xmlNote) { - $noteAttributes = $xmlNote->attributes(); - $note = ['content' => $this->utf8ToCharset((string) $xmlNote, $encoding)]; - if (isset($noteAttributes['priority'])) { - $note['priority'] = (int) $noteAttributes['priority']; - } - - if (isset($noteAttributes['from'])) { - $note['from'] = (string) $noteAttributes['from']; - } - - $notes[] = $note; - } - - return $notes; - } - - private function isXmlString(string $resource): bool - { - return str_starts_with($resource, ' Date: Sat, 7 Feb 2026 17:11:32 +0100 Subject: [PATCH 226/235] New Crowdin updates (#1212) * New translations messages.en.xlf (Danish) * New translations messages.en.xlf (English) * New translations messages.en.xlf (Danish) * New translations messages.en.xlf (English) * New translations messages.en.xlf (Danish) * New translations messages.en.xlf (English) * New translations validators.en.xlf (Chinese Simplified) * New translations frontend.en.xlf (Chinese Simplified) * New translations frontend.en.xlf (Chinese Simplified) * New translations security.en.xlf (Ukrainian) * New translations validators.en.xlf (Ukrainian) * New translations frontend.en.xlf (Ukrainian) * New translations messages.en.xlf (English) * New translations messages.en.xlf (German) * New translations messages.en.xlf (German) * New translations messages.en.xlf (Danish) --- translations/frontend.uk.xlf | 80 + translations/frontend.zh.xlf | 152 +- translations/messages.da.xlf | 6132 +++++++++++++++++++++++--------- translations/messages.de.xlf | 740 +++- translations/messages.en.xlf | 104 +- translations/security.uk.xlf | 23 + translations/validators.uk.xlf | 375 ++ translations/validators.zh.xlf | 96 +- 8 files changed, 5822 insertions(+), 1880 deletions(-) create mode 100644 translations/frontend.uk.xlf create mode 100644 translations/security.uk.xlf create mode 100644 translations/validators.uk.xlf diff --git a/translations/frontend.uk.xlf b/translations/frontend.uk.xlf new file mode 100644 index 00000000..210f7036 --- /dev/null +++ b/translations/frontend.uk.xlf @@ -0,0 +1,80 @@ + + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:67 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + templates\AdminPages\EntityAdminBase.html.twig:9 + templates\base.html.twig:80 + templates\base.html.twig:179 + templates\base.html.twig:206 + templates\base.html.twig:237 + + + search.placeholder + Пошук + + + + + part.labelp + Деталі + + + + + entity.select.group.new_not_added_to_DB + Нова (ще не додана до БД) + + + + + user.password_strength.very_weak + Дуже слабкий + + + + + user.password_strength.weak + Слабкий + + + + + user.password_strength.medium + Середній + + + + + user.password_strength.strong + Надійний + + + + + user.password_strength.very_strong + Дуже надійний + + + + + Part-DB1\templates\_navbar_search.html.twig:68 + Part-DB1\templates\_navbar_search.html.twig:62 + + + search.submit + Почати! + + + + diff --git a/translations/frontend.zh.xlf b/translations/frontend.zh.xlf index 08817189..b2c289f0 100644 --- a/translations/frontend.zh.xlf +++ b/translations/frontend.zh.xlf @@ -1,80 +1,80 @@ - - - - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - - - search.placeholder - 搜索 - - + + + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:67 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 + templates\AdminPages\EntityAdminBase.html.twig:9 + templates\base.html.twig:80 + templates\base.html.twig:179 + templates\base.html.twig:206 + templates\base.html.twig:237 + + + search.placeholder + 搜索 + + - - part.labelp - 部件 - - - - - entity.select.group.new_not_added_to_DB - 新建(尚未添加到数据库) - - - - - user.password_strength.very_weak - 非常弱 - - - - - user.password_strength.weak - - - - - - user.password_strength.medium - - - - - - user.password_strength.strong - - - - - - user.password_strength.very_strong - 非常强 - - - - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - - - search.submit - GO! - - + + part.labelp + 部件 + + + + + entity.select.group.new_not_added_to_DB + 新建(尚未添加到数据库) + + + + + user.password_strength.very_weak + 非常弱 + + + + + user.password_strength.weak + + + + + + user.password_strength.medium + + + + + + user.password_strength.strong + + + + + + user.password_strength.very_strong + 非常强 + + + + + Part-DB1\templates\_navbar_search.html.twig:68 + Part-DB1\templates\_navbar_search.html.twig:62 + + + search.submit + GO! + + diff --git a/translations/messages.da.xlf b/translations/messages.da.xlf index 8ed10c07..af92eea0 100644 --- a/translations/messages.da.xlf +++ b/translations/messages.da.xlf @@ -1,7 +1,7 @@ - + - + Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 @@ -9,20 +9,20 @@ attachment_type.caption - Bilags datatyper + Bilag-filtyper - + Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:12 new attachment_type.edit - Ret bilags filtype + Ret bilag-filtype - + Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:16 new @@ -32,7 +32,7 @@ Ny filtype - + Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 Part-DB1\templates\_sidebar.html.twig:22 @@ -51,7 +51,7 @@ Kategorier - + Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:19 @@ -64,7 +64,7 @@ Optioner - + Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 @@ -74,10 +74,10 @@ admin.advanced - Advanceret + Avanceret - + Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:13 new @@ -87,7 +87,7 @@ Ret kategori - + Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:17 new @@ -97,17 +97,7 @@ Ny kategori - - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - - - currency.caption - Valuta - - - + Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 @@ -117,7 +107,7 @@ ISO kode - + Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 @@ -127,7 +117,7 @@ Valutaenhed - + Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:29 new @@ -137,7 +127,7 @@ Ret valuta - + Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:33 new @@ -147,7 +137,7 @@ Ny valuta - + Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 new @@ -157,7 +147,7 @@ Ret projekt - + Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:12 new @@ -167,7 +157,7 @@ Nyt projekt - + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 Part-DB1\templates\_navbar_search.html.twig:67 @@ -190,7 +180,7 @@ Søg - + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 Part-DB1\templates\_sidebar.html.twig:3 @@ -206,7 +196,7 @@ Udfold alle - + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 Part-DB1\templates\_sidebar.html.twig:4 @@ -222,7 +212,7 @@ Sammenfold alle - + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 Part-DB1\templates\Parts\info\_sidebar.html.twig:4 @@ -231,10 +221,10 @@ part.info.timetravel_hint - Det er hvordan delen fromstod før %timestamp%. <i>Venligst bemærk at dette er en eksperimentel funktion. Så derfor kan info være ukorrekt.</i> + Det er hvordan delen fremstod før %timestamp%. <i>Venligst bemærk at dette er en eksperimentel funktion. Så derfor kan info være ukorrekt.</i> - + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 @@ -245,7 +235,7 @@ Egenskaber - + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 @@ -256,7 +246,7 @@ Info - + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 @@ -267,7 +257,7 @@ Historik - + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 @@ -278,7 +268,7 @@ Eksport - + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 @@ -289,7 +279,7 @@ Import - + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 @@ -299,7 +289,7 @@ Masseoprettelse - + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 @@ -310,7 +300,7 @@ Fælles - + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 @@ -320,7 +310,7 @@ Bilag - + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:90 @@ -329,7 +319,7 @@ Parametre - + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:179 Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:167 @@ -340,7 +330,7 @@ Eksportér alle elementer - + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:185 Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:173 @@ -350,7 +340,7 @@ Hver linje fortolkes og oprettes som et navn til et nyt element. Ved at indrykke tekst kan du lave strukturer - + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 @@ -361,7 +351,7 @@ Ret element "%name" - + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 @@ -372,7 +362,7 @@ Nyt element - + Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 Part-DB1\templates\_sidebar.html.twig:9 @@ -387,7 +377,7 @@ Footprint - + Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:13 new @@ -397,7 +387,7 @@ Ret footprint - + Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:17 new @@ -407,17 +397,7 @@ Nyt footprint - - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - - - group.edit.caption - Grupper - - - + Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 @@ -429,7 +409,7 @@ Rettigheder - + Part-DB1\templates\AdminPages\GroupAdmin.html.twig:24 new @@ -439,7 +419,7 @@ Ret gruppe - + Part-DB1\templates\AdminPages\GroupAdmin.html.twig:28 new @@ -449,25 +429,16 @@ Ny gruppe - - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:4 - - - label_profile.caption - Labelprofiler - - - + Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:8 label_profile.advanced - Advanceret + Avanceret - + Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:9 @@ -476,7 +447,7 @@ Notater - + Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:55 new @@ -486,7 +457,7 @@ Ret labelprofil - + Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:59 new @@ -496,18 +467,7 @@ Ny labelprofil - - - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - templates\AdminPages\ManufacturerAdmin.html.twig:4 - - - manufacturer.caption - Fabrikant - - - + Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:8 new @@ -517,7 +477,7 @@ Ret fabrikanter - + Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:12 new @@ -527,23 +487,7 @@ Ny fabrikant - - - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - - - measurement_unit.caption - Måleenhed - - - - - part_custom_state.caption - Brugerdefineret komponentstatus - - - + Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:5 Part-DB1\templates\_sidebar.html.twig:8 @@ -558,7 +502,7 @@ Lagerlokationer - + Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:32 new @@ -568,7 +512,7 @@ Ret lagerlokation - + Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:36 new @@ -578,7 +522,7 @@ Ny lagerlokation - + Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 new @@ -588,7 +532,7 @@ Ret leverandør - + Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:20 new @@ -598,17 +542,7 @@ Ny leverandør - - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - - - user.edit.caption - Brugere - - - + Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 @@ -618,7 +552,7 @@ Opsætning - + Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 @@ -628,7 +562,7 @@ Password - + Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 @@ -638,7 +572,7 @@ To-faktor godkendelse - + Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 @@ -648,7 +582,7 @@ Godkendelses-app aktiv - + Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 Part-DB1\templates\Users\backup_codes.html.twig:15 @@ -662,7 +596,7 @@ Antal resterende backupkoder - + Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 Part-DB1\templates\Users\backup_codes.html.twig:17 @@ -676,7 +610,7 @@ Oprettelsesdato for backupkoder - + Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 @@ -688,7 +622,7 @@ Metode ikke aktiveret - + Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 @@ -698,7 +632,7 @@ Aktive sikkerhedsnøgler - + Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 @@ -708,20 +642,20 @@ Ønsker du at fortsætte? - + Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 user.edit.tfa.disable_tfa_message - Dette vil deaktiver <b>alle aktive to-faktor godkendelses metoder af brugere</b> og slette <b>backupkoderne</b>! + Dette vil deaktivere <b>alle aktive to-faktor godkendelsesmetoder af brugere</b> og slette <b>backupkoderne</b>! <br> -Brugen skal sætte all to-faktor godkendelsesmetoder op igen og printe nye backupkoder! <br><br> -<b>Gør kun dette hvis du er helt sikker på identiten af brugeren (som søger hjælp), eller kan kontoen blive kompromiteret af en som ønsker at angrive systemet!</b> +Brugeren skal sætte alle to-faktor godkendelsesmetoder op igen og printe nye backupkoder! <br><br> +<b>Gør kun dette hvis du er helt sikker på identiten af brugeren (som søger hjælp), ellers kan kontoen blive kompromiteret af en som ønsker at angrive systemet!</b> - + Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 @@ -731,7 +665,7 @@ Brugen skal sætte all to-faktor godkendelsesmetoder op igen og printe nye backu Deaktivér all to-faktor godkendelsesmetoder - + Part-DB1\templates\AdminPages\UserAdmin.html.twig:85 new @@ -741,7 +675,7 @@ Brugen skal sætte all to-faktor godkendelsesmetoder op igen og printe nye backu Ret bruger - + Part-DB1\templates\AdminPages\UserAdmin.html.twig:89 new @@ -751,7 +685,7 @@ Brugen skal sætte all to-faktor godkendelsesmetoder op igen og printe nye backu Ny bruger - + Part-DB1\templates\AdminPages\_attachments.html.twig:4 Part-DB1\templates\Parts\edit\_attachments.html.twig:4 @@ -764,21 +698,13 @@ Brugen skal sætte all to-faktor godkendelsesmetoder op igen og printe nye backu Slet - - - Part-DB1\templates\AdminPages\_attachments.html.twig:41 - Part-DB1\templates\Parts\edit\_attachments.html.twig:38 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:35 - Part-DB1\src\DataTables\AttachmentDataTable.php:159 - Part-DB1\templates\Parts\edit\_attachments.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:159 - + - attachment.external - Ekstern + attachment.external_only + Kun eksternt - + Part-DB1\templates\AdminPages\_attachments.html.twig:49 Part-DB1\templates\Parts\edit\_attachments.html.twig:47 @@ -790,7 +716,7 @@ Brugen skal sætte all to-faktor godkendelsesmetoder op igen og printe nye backu Billede af bilag - + Part-DB1\templates\AdminPages\_attachments.html.twig:52 Part-DB1\templates\Parts\edit\_attachments.html.twig:50 @@ -800,11 +726,11 @@ Brugen skal sætte all to-faktor godkendelsesmetoder op igen og printe nye backu Part-DB1\templates\Parts\info\_attachments_info.html.twig:45 - attachment.view - Vis + attachment.view_local + vedhæftning.vis_lokalt - + Part-DB1\templates\AdminPages\_attachments.html.twig:58 Part-DB1\templates\Parts\edit\_attachments.html.twig:56 @@ -820,7 +746,7 @@ Brugen skal sætte all to-faktor godkendelsesmetoder op igen og printe nye backu Fil ikke fundet - + Part-DB1\templates\AdminPages\_attachments.html.twig:66 Part-DB1\templates\Parts\edit\_attachments.html.twig:64 @@ -832,7 +758,7 @@ Brugen skal sætte all to-faktor godkendelsesmetoder op igen og printe nye backu Privat bilag - + Part-DB1\templates\AdminPages\_attachments.html.twig:79 Part-DB1\templates\Parts\edit\_attachments.html.twig:77 @@ -844,7 +770,7 @@ Brugen skal sætte all to-faktor godkendelsesmetoder op igen og printe nye backu Tilføj bilag - + Part-DB1\templates\AdminPages\_attachments.html.twig:84 Part-DB1\templates\Parts\edit\_attachments.html.twig:82 @@ -858,7 +784,7 @@ Brugen skal sætte all to-faktor godkendelsesmetoder op igen og printe nye backu Ønsker du virkeligt at slette dette lager? Du kan ikke fortryde det senere! - + Part-DB1\templates\AdminPages\_delete_form.html.twig:2 Part-DB1\templates\AdminPages\_delete_form.html.twig:2 @@ -869,7 +795,7 @@ Brugen skal sætte all to-faktor godkendelsesmetoder op igen og printe nye backu Ønsker du virkeligt at slette %name%? - + Part-DB1\templates\AdminPages\_delete_form.html.twig:3 Part-DB1\templates\AdminPages\_delete_form.html.twig:3 @@ -882,7 +808,7 @@ Brugen skal sætte all to-faktor godkendelsesmetoder op igen og printe nye backu Underelementer vil blive flyttet opad. - + Part-DB1\templates\AdminPages\_delete_form.html.twig:11 Part-DB1\templates\AdminPages\_delete_form.html.twig:11 @@ -893,7 +819,7 @@ Underelementer vil blive flyttet opad. Slet element - + Part-DB1\templates\AdminPages\_delete_form.html.twig:16 Part-DB1\templates\Parts\info\_tools.html.twig:45 @@ -908,7 +834,7 @@ Underelementer vil blive flyttet opad. Ret kommentar - + Part-DB1\templates\AdminPages\_delete_form.html.twig:24 Part-DB1\templates\AdminPages\_delete_form.html.twig:24 @@ -919,7 +845,7 @@ Underelementer vil blive flyttet opad. Slet rekursivt (alle underelementer) - + Part-DB1\templates\AdminPages\_duplicate.html.twig:3 @@ -928,7 +854,7 @@ Underelementer vil blive flyttet opad. Kopier element - + Part-DB1\templates\AdminPages\_export_form.html.twig:4 Part-DB1\src\Form\AdminPages\ImportType.php:76 @@ -942,7 +868,7 @@ Underelementer vil blive flyttet opad. Filformat - + Part-DB1\templates\AdminPages\_export_form.html.twig:16 Part-DB1\templates\AdminPages\_export_form.html.twig:16 @@ -953,7 +879,7 @@ Underelementer vil blive flyttet opad. Detaljegrad - + Part-DB1\templates\AdminPages\_export_form.html.twig:19 Part-DB1\templates\AdminPages\_export_form.html.twig:19 @@ -964,7 +890,7 @@ Underelementer vil blive flyttet opad. Simpel - + Part-DB1\templates\AdminPages\_export_form.html.twig:20 Part-DB1\templates\AdminPages\_export_form.html.twig:20 @@ -975,7 +901,7 @@ Underelementer vil blive flyttet opad. Udvidet - + Part-DB1\templates\AdminPages\_export_form.html.twig:21 Part-DB1\templates\AdminPages\_export_form.html.twig:21 @@ -986,7 +912,7 @@ Underelementer vil blive flyttet opad. Fuldstændig - + Part-DB1\templates\AdminPages\_export_form.html.twig:31 Part-DB1\templates\AdminPages\_export_form.html.twig:31 @@ -997,7 +923,7 @@ Underelementer vil blive flyttet opad. medtag underelementer ved eksport - + Part-DB1\templates\AdminPages\_export_form.html.twig:39 Part-DB1\templates\AdminPages\_export_form.html.twig:39 @@ -1008,7 +934,7 @@ Underelementer vil blive flyttet opad. Eksport - + Part-DB1\templates\AdminPages\_info.html.twig:4 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 @@ -1027,7 +953,7 @@ Underelementer vil blive flyttet opad. ID - + Part-DB1\templates\AdminPages\_info.html.twig:11 Part-DB1\templates\Parts\info\_attachments_info.html.twig:76 @@ -1048,10 +974,10 @@ Underelementer vil blive flyttet opad. createdAt - Oprettet på + Oprettet d. - + Part-DB1\templates\AdminPages\_info.html.twig:25 Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 @@ -1069,7 +995,7 @@ Underelementer vil blive flyttet opad. Sidst rettet - + Part-DB1\templates\AdminPages\_info.html.twig:38 Part-DB1\templates\AdminPages\_info.html.twig:38 @@ -1079,7 +1005,7 @@ Underelementer vil blive flyttet opad. antal dele med dette element - + Part-DB1\templates\AdminPages\_parameters.html.twig:6 Part-DB1\templates\helper.twig:125 @@ -1090,7 +1016,7 @@ Underelementer vil blive flyttet opad. Parameter - + Part-DB1\templates\AdminPages\_parameters.html.twig:7 Part-DB1\templates\Parts\edit\_specifications.html.twig:7 @@ -1100,7 +1026,7 @@ Underelementer vil blive flyttet opad. Symbol - + Part-DB1\templates\AdminPages\_parameters.html.twig:8 Part-DB1\templates\Parts\edit\_specifications.html.twig:8 @@ -1110,7 +1036,7 @@ Underelementer vil blive flyttet opad. Min. - + Part-DB1\templates\AdminPages\_parameters.html.twig:9 Part-DB1\templates\Parts\edit\_specifications.html.twig:9 @@ -1120,7 +1046,7 @@ Underelementer vil blive flyttet opad. Typ. - + Part-DB1\templates\AdminPages\_parameters.html.twig:10 Part-DB1\templates\Parts\edit\_specifications.html.twig:10 @@ -1130,7 +1056,7 @@ Underelementer vil blive flyttet opad. Max. - + Part-DB1\templates\AdminPages\_parameters.html.twig:11 Part-DB1\templates\Parts\edit\_specifications.html.twig:11 @@ -1140,7 +1066,7 @@ Underelementer vil blive flyttet opad. Enhed - + Part-DB1\templates\AdminPages\_parameters.html.twig:12 Part-DB1\templates\Parts\edit\_specifications.html.twig:12 @@ -1150,7 +1076,7 @@ Underelementer vil blive flyttet opad. Tekst - + Part-DB1\templates\AdminPages\_parameters.html.twig:13 Part-DB1\templates\Parts\edit\_specifications.html.twig:13 @@ -1160,7 +1086,7 @@ Underelementer vil blive flyttet opad. Gruppe - + Part-DB1\templates\AdminPages\_parameters.html.twig:26 Part-DB1\templates\Parts\edit\_specifications.html.twig:26 @@ -1170,7 +1096,7 @@ Underelementer vil blive flyttet opad. Ny parameter - + Part-DB1\templates\AdminPages\_parameters.html.twig:31 Part-DB1\templates\Parts\edit\_specifications.html.twig:31 @@ -1180,7 +1106,7 @@ Underelementer vil blive flyttet opad. Ønsker du at slette denne parameter? - + Part-DB1\templates\attachment_list.html.twig:3 Part-DB1\templates\attachment_list.html.twig:3 @@ -1190,7 +1116,7 @@ Underelementer vil blive flyttet opad. Bilagsliste - + Part-DB1\templates\attachment_list.html.twig:10 Part-DB1\templates\LogSystem\_log_table.html.twig:8 @@ -1204,7 +1130,7 @@ Underelementer vil blive flyttet opad. Henter - + Part-DB1\templates\attachment_list.html.twig:11 Part-DB1\templates\LogSystem\_log_table.html.twig:9 @@ -1218,7 +1144,7 @@ Underelementer vil blive flyttet opad. Dette kan tage et øjeblik. Hvis denne meddelelse ikke forsvinder, prøv at genindlæse siden. - + Part-DB1\templates\base.html.twig:68 Part-DB1\templates\base.html.twig:68 @@ -1229,7 +1155,7 @@ Underelementer vil blive flyttet opad. Sørg for at aktivere alle Javascriptfunktioner! - + Part-DB1\templates\base.html.twig:73 Part-DB1\templates\base.html.twig:73 @@ -1239,7 +1165,7 @@ Underelementer vil blive flyttet opad. Vis/skjul sidepanel - + Part-DB1\templates\base.html.twig:95 Part-DB1\templates\base.html.twig:95 @@ -1250,7 +1176,7 @@ Underelementer vil blive flyttet opad. Henter: - + Part-DB1\templates\base.html.twig:96 Part-DB1\templates\base.html.twig:96 @@ -1261,7 +1187,7 @@ Underelementer vil blive flyttet opad. Dette kan taget noget tid. Hvis denne meddelelse bliver stående i lang tid, forsøg da at genindlæse siden. - + Part-DB1\templates\base.html.twig:101 Part-DB1\templates\base.html.twig:101 @@ -1272,7 +1198,7 @@ Underelementer vil blive flyttet opad. Henter... - + Part-DB1\templates\base.html.twig:112 Part-DB1\templates\base.html.twig:112 @@ -1283,7 +1209,7 @@ Underelementer vil blive flyttet opad. Tilbage til toppen af siden - + Part-DB1\templates\Form\permissionLayout.html.twig:35 Part-DB1\templates\Form\permissionLayout.html.twig:35 @@ -1293,7 +1219,7 @@ Underelementer vil blive flyttet opad. Rettigheder - + Part-DB1\templates\Form\permissionLayout.html.twig:36 Part-DB1\templates\Form\permissionLayout.html.twig:36 @@ -1303,7 +1229,7 @@ Underelementer vil blive flyttet opad. Værdi - + Part-DB1\templates\Form\permissionLayout.html.twig:53 Part-DB1\templates\Form\permissionLayout.html.twig:53 @@ -1313,7 +1239,7 @@ Underelementer vil blive flyttet opad. Forklaring til tilstande - + Part-DB1\templates\Form\permissionLayout.html.twig:57 Part-DB1\templates\Form\permissionLayout.html.twig:57 @@ -1323,7 +1249,7 @@ Underelementer vil blive flyttet opad. Ej tilladt - + Part-DB1\templates\Form\permissionLayout.html.twig:61 Part-DB1\templates\Form\permissionLayout.html.twig:61 @@ -1333,7 +1259,7 @@ Underelementer vil blive flyttet opad. Tilladt - + Part-DB1\templates\Form\permissionLayout.html.twig:65 Part-DB1\templates\Form\permissionLayout.html.twig:65 @@ -1343,7 +1269,7 @@ Underelementer vil blive flyttet opad. Nedarv fra (overordnet) gruppe - + Part-DB1\templates\helper.twig:3 Part-DB1\templates\helper.twig:3 @@ -1353,7 +1279,7 @@ Underelementer vil blive flyttet opad. Sand - + Part-DB1\templates\helper.twig:5 Part-DB1\templates\helper.twig:5 @@ -1363,7 +1289,7 @@ Underelementer vil blive flyttet opad. Falsk - + Part-DB1\templates\helper.twig:92 Part-DB1\templates\helper.twig:87 @@ -1373,7 +1299,7 @@ Underelementer vil blive flyttet opad. Ja - + Part-DB1\templates\helper.twig:94 Part-DB1\templates\helper.twig:89 @@ -1383,7 +1309,7 @@ Underelementer vil blive flyttet opad. Nej - + Part-DB1\templates\helper.twig:126 @@ -1392,7 +1318,7 @@ Underelementer vil blive flyttet opad. Værdi - + Part-DB1\templates\homepage.html.twig:7 Part-DB1\templates\homepage.html.twig:7 @@ -1403,7 +1329,7 @@ Underelementer vil blive flyttet opad. Version - + Part-DB1\templates\homepage.html.twig:22 Part-DB1\templates\homepage.html.twig:22 @@ -1414,7 +1340,7 @@ Underelementer vil blive flyttet opad. Licensinformation - + Part-DB1\templates\homepage.html.twig:31 Part-DB1\templates\homepage.html.twig:31 @@ -1425,7 +1351,7 @@ Underelementer vil blive flyttet opad. Projektoversigt - + Part-DB1\templates\homepage.html.twig:31 Part-DB1\templates\homepage.html.twig:31 @@ -1436,7 +1362,7 @@ Underelementer vil blive flyttet opad. Kilde, downloads, fejlrapporter, to-do-list etc. kan findes på <a href="%href%" class="link-external" target="_blank">GitHub project page</a> - + Part-DB1\templates\homepage.html.twig:32 Part-DB1\templates\homepage.html.twig:32 @@ -1447,7 +1373,7 @@ Underelementer vil blive flyttet opad. Hjælp - + Part-DB1\templates\homepage.html.twig:32 Part-DB1\templates\homepage.html.twig:32 @@ -1458,7 +1384,7 @@ Underelementer vil blive flyttet opad. Hjælp og tips kan findes på Wiki <a href="%href%" class="link-external" target="_blank">GitHub siden</a> - + Part-DB1\templates\homepage.html.twig:33 Part-DB1\templates\homepage.html.twig:33 @@ -1469,7 +1395,7 @@ Underelementer vil blive flyttet opad. Forum - + Part-DB1\templates\homepage.html.twig:45 Part-DB1\templates\homepage.html.twig:45 @@ -1480,7 +1406,7 @@ Underelementer vil blive flyttet opad. Sidste aktivitet - + Part-DB1\templates\LabelSystem\dialog.html.twig:3 Part-DB1\templates\LabelSystem\dialog.html.twig:6 @@ -1490,7 +1416,7 @@ Underelementer vil blive flyttet opad. Labelgenerator - + Part-DB1\templates\LabelSystem\dialog.html.twig:16 @@ -1499,7 +1425,7 @@ Underelementer vil blive flyttet opad. Fælles - + Part-DB1\templates\LabelSystem\dialog.html.twig:20 @@ -1508,7 +1434,7 @@ Underelementer vil blive flyttet opad. Avanceret - + Part-DB1\templates\LabelSystem\dialog.html.twig:24 @@ -1517,7 +1443,7 @@ Underelementer vil blive flyttet opad. Profiler - + Part-DB1\templates\LabelSystem\dialog.html.twig:58 @@ -1526,7 +1452,7 @@ Underelementer vil blive flyttet opad. Valgte profil - + Part-DB1\templates\LabelSystem\dialog.html.twig:62 @@ -1535,7 +1461,7 @@ Underelementer vil blive flyttet opad. Ret profil - + Part-DB1\templates\LabelSystem\dialog.html.twig:75 @@ -1544,7 +1470,7 @@ Underelementer vil blive flyttet opad. Hent profil - + Part-DB1\templates\LabelSystem\dialog.html.twig:102 @@ -1553,7 +1479,7 @@ Underelementer vil blive flyttet opad. Hent - + Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:3 Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:5 @@ -1563,7 +1489,7 @@ Underelementer vil blive flyttet opad. Opret label - + Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:20 @@ -1572,7 +1498,7 @@ Underelementer vil blive flyttet opad. Ny tom label - + Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:3 @@ -1581,7 +1507,7 @@ Underelementer vil blive flyttet opad. Label scanner - + Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 @@ -1590,7 +1516,7 @@ Underelementer vil blive flyttet opad. Intet webcam fundet - + Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 @@ -1599,7 +1525,7 @@ Underelementer vil blive flyttet opad. Du skal bruge et webcam og give lov til at bruge det som scanner. Du kan indtaste stregkoden manuelt nedenfor. - + Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:27 @@ -1608,7 +1534,7 @@ Underelementer vil blive flyttet opad. Vælg kilde - + Part-DB1\templates\LogSystem\log_list.html.twig:3 Part-DB1\templates\LogSystem\log_list.html.twig:3 @@ -1618,7 +1544,7 @@ Underelementer vil blive flyttet opad. Systemlog - + Part-DB1\templates\LogSystem\_log_table.html.twig:1 Part-DB1\templates\LogSystem\_log_table.html.twig:1 @@ -1629,7 +1555,7 @@ Underelementer vil blive flyttet opad. Er du sikker på at du vil fortryde ændringerne / gå tilbage til forrige version? - + Part-DB1\templates\LogSystem\_log_table.html.twig:2 Part-DB1\templates\LogSystem\_log_table.html.twig:2 @@ -1640,7 +1566,7 @@ Underelementer vil blive flyttet opad. Er du sikker på at du vil fortryde ændringen / og gå tilbage til en tidligere version? - + Part-DB1\templates\mail\base.html.twig:24 Part-DB1\templates\mail\base.html.twig:24 @@ -1650,7 +1576,7 @@ Underelementer vil blive flyttet opad. Denne e-mail er afsendt automatisk af - + Part-DB1\templates\mail\base.html.twig:24 Part-DB1\templates\mail\base.html.twig:24 @@ -1660,7 +1586,7 @@ Underelementer vil blive flyttet opad. Venligt undlad at svare på denne e-mail. - + Part-DB1\templates\mail\pw_reset.html.twig:6 Part-DB1\templates\mail\pw_reset.html.twig:6 @@ -1670,7 +1596,7 @@ Underelementer vil blive flyttet opad. Hej %name% - + Part-DB1\templates\mail\pw_reset.html.twig:7 Part-DB1\templates\mail\pw_reset.html.twig:7 @@ -1680,7 +1606,7 @@ Underelementer vil blive flyttet opad. En eller anden (forhåbentlig dig) har anmodet om at nulstille det gemte password. Hvis du ikke har anmodet om dette, venligst ignorér denne e-mail. - + Part-DB1\templates\mail\pw_reset.html.twig:9 Part-DB1\templates\mail\pw_reset.html.twig:9 @@ -1690,7 +1616,7 @@ Underelementer vil blive flyttet opad. Klik her for at nulstille password - + Part-DB1\templates\mail\pw_reset.html.twig:11 Part-DB1\templates\mail\pw_reset.html.twig:11 @@ -1700,7 +1626,7 @@ Underelementer vil blive flyttet opad. Hvis dette ikke virker, gå til <a href="%url%">%url%</a> og indtast følgende information - + Part-DB1\templates\mail\pw_reset.html.twig:16 Part-DB1\templates\mail\pw_reset.html.twig:16 @@ -1710,7 +1636,7 @@ Underelementer vil blive flyttet opad. Brugernavn - + Part-DB1\templates\mail\pw_reset.html.twig:19 Part-DB1\templates\mail\pw_reset.html.twig:19 @@ -1720,7 +1646,7 @@ Underelementer vil blive flyttet opad. Token - + Part-DB1\templates\mail\pw_reset.html.twig:24 Part-DB1\templates\mail\pw_reset.html.twig:24 @@ -1730,7 +1656,7 @@ Underelementer vil blive flyttet opad. Nulstillingstoken'en vil være gyldig indtil <i>%date%</i>. - + Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:18 Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 @@ -1742,7 +1668,7 @@ Underelementer vil blive flyttet opad. Slet - + Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:39 Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:39 @@ -1752,7 +1678,7 @@ Underelementer vil blive flyttet opad. Minimum rabat-antal - + Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:40 Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:40 @@ -1762,7 +1688,7 @@ Underelementer vil blive flyttet opad. Pris - + Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:41 Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:41 @@ -1772,7 +1698,7 @@ Underelementer vil blive flyttet opad. for mængde - + Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 @@ -1782,7 +1708,7 @@ Underelementer vil blive flyttet opad. Anfør pris - + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 @@ -1793,7 +1719,7 @@ Underelementer vil blive flyttet opad. Rediger komponent %name% - + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 @@ -1804,7 +1730,7 @@ Underelementer vil blive flyttet opad. Rediger del - + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:22 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:22 @@ -1814,7 +1740,7 @@ Underelementer vil blive flyttet opad. Fælles - + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:28 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:28 @@ -1824,77 +1750,77 @@ Underelementer vil blive flyttet opad. Fabrikant - + 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 - Advanceret + Avanceret - + part.edit.tab.advanced.ipn.commonSectionHeader - Forslag uden del-inkrement + Forslag uden komponent-forøgelse - + part.edit.tab.advanced.ipn.partIncrementHeader - Forslag med numeriske deleforøgelser + Forslag med numerisk komponent-forøgelse - + part.edit.tab.advanced.ipn.prefix.description.current-increment - Aktuel IPN-specifikation for delen + Aktuel IPN-værdi for komponenten - + part.edit.tab.advanced.ipn.prefix.description.increment - Næste mulige IPN-specifikation baseret på en identisk delebeskrivelse + Næste mulige IPN-værdi baseret på den identiske komponentbeskrivelse - + part.edit.tab.advanced.ipn.prefix_empty.direct_category - IPN-præfikset for den direkte kategori er tomt, angiv det i kategorien "%name%" + IPN-præfikset for den direkte kategori er tomt. Du skal angive et præfiks i kategorien "%name%" - + part.edit.tab.advanced.ipn.prefix.direct_category - IPN-præfiks for direkte kategori + IPN præfiks for direkte kategori - + part.edit.tab.advanced.ipn.prefix.direct_category.increment - IPN-præfiks for den direkte kategori og en delspecifik inkrement + IPN-præfiks for den direkte kategori og komponentspecifik tilvækst - + part.edit.tab.advanced.ipn.prefix.hierarchical.no_increment - IPN-præfikser med hierarkisk rækkefølge af overordnede præfikser + IPN præfiks med hierarkisk kategorirækkefølge af overordnede præfiks - + part.edit.tab.advanced.ipn.prefix.hierarchical.increment - IPN-præfikser med hierarkisk rækkefølge af overordnede præfikser og en del-specifik inkrement + IPN-præfikser med hierarkisk kategorirækkefølge af overordnede præfikser og del-specifik forøgelse - + part.edit.tab.advanced.ipn.prefix.not_saved - Opret først en komponent, og tildel den en kategori: med eksisterende kategorier og deres egne IPN-præfikser kan IPN-betegnelsen for komponenten foreslås automatisk + Venligst først opret del og tilføj den til en kategori: IPN præfiks for delen kan foreslås automatisk for eksisterede katogorier med egne IPN præfiks - + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:40 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:40 @@ -1904,7 +1830,7 @@ Underelementer vil blive flyttet opad. Lagerbestand - + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:46 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:46 @@ -1914,7 +1840,7 @@ Underelementer vil blive flyttet opad. Vedhæftede filer - + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:52 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:52 @@ -1924,7 +1850,7 @@ Underelementer vil blive flyttet opad. indkøbsinformation - + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 @@ -1933,7 +1859,7 @@ Underelementer vil blive flyttet opad. Paremetre - + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:64 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 @@ -1943,7 +1869,7 @@ Underelementer vil blive flyttet opad. Noter - + Part-DB1\templates\Parts\edit\new_part.html.twig:8 Part-DB1\templates\Parts\edit\new_part.html.twig:8 @@ -1954,7 +1880,7 @@ Underelementer vil blive flyttet opad. Opret ny del - + Part-DB1\templates\Parts\edit\_lots.html.twig:5 Part-DB1\templates\Parts\edit\_lots.html.twig:5 @@ -1964,7 +1890,7 @@ Underelementer vil blive flyttet opad. Slet - + Part-DB1\templates\Parts\edit\_lots.html.twig:28 Part-DB1\templates\Parts\edit\_lots.html.twig:28 @@ -1974,7 +1900,7 @@ Underelementer vil blive flyttet opad. Opret beholdning - + Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 @@ -1984,7 +1910,7 @@ Underelementer vil blive flyttet opad. tilføj distributør - + Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 @@ -1994,7 +1920,7 @@ Underelementer vil blive flyttet opad. Er du sikker på, at du vil slette denne pris? Dette kan ikke fortrydes! - + Part-DB1\templates\Parts\edit\_orderdetails.html.twig:62 Part-DB1\templates\Parts\edit\_orderdetails.html.twig:61 @@ -2004,7 +1930,7 @@ Underelementer vil blive flyttet opad. Er du sikker på, at du vil slette denne leverandør? Dette kan ikke fortrydes! - + Part-DB1\templates\Parts\info\show_part_info.html.twig:4 Part-DB1\templates\Parts\info\show_part_info.html.twig:19 @@ -2018,7 +1944,7 @@ Underelementer vil blive flyttet opad. Detaljerede oplysninger vedr. - + Part-DB1\templates\Parts\info\show_part_info.html.twig:47 Part-DB1\templates\Parts\info\show_part_info.html.twig:47 @@ -2028,7 +1954,7 @@ Underelementer vil blive flyttet opad. Lagerbestand - + Part-DB1\templates\Parts\info\show_part_info.html.twig:56 Part-DB1\templates\Parts\lists\_info_card.html.twig:43 @@ -2043,7 +1969,7 @@ Underelementer vil blive flyttet opad. Noter - + Part-DB1\templates\Parts\info\show_part_info.html.twig:64 @@ -2052,7 +1978,7 @@ Underelementer vil blive flyttet opad. Paremeter - + Part-DB1\templates\Parts\info\show_part_info.html.twig:74 Part-DB1\templates\Parts\info\show_part_info.html.twig:64 @@ -2063,7 +1989,7 @@ Underelementer vil blive flyttet opad. Vedhæftede filer - + Part-DB1\templates\Parts\info\show_part_info.html.twig:83 Part-DB1\templates\Parts\info\show_part_info.html.twig:71 @@ -2074,7 +2000,7 @@ Underelementer vil blive flyttet opad. Indkøbsinformation - + Part-DB1\templates\Parts\info\show_part_info.html.twig:91 Part-DB1\templates\Parts\info\show_part_info.html.twig:78 @@ -2085,7 +2011,7 @@ Underelementer vil blive flyttet opad. Historik - + Part-DB1\templates\Parts\info\show_part_info.html.twig:97 Part-DB1\templates\_sidebar.html.twig:54 @@ -2104,7 +2030,7 @@ Underelementer vil blive flyttet opad. Værktøjer - + Part-DB1\templates\Parts\info\show_part_info.html.twig:103 Part-DB1\templates\Parts\info\show_part_info.html.twig:90 @@ -2114,7 +2040,7 @@ Underelementer vil blive flyttet opad. Yderligere Informationen - + Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 @@ -2124,7 +2050,7 @@ Underelementer vil blive flyttet opad. Navn - + Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 @@ -2134,7 +2060,7 @@ Underelementer vil blive flyttet opad. Vedhæft sikkerhedstype - + Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 @@ -2144,7 +2070,7 @@ Underelementer vil blive flyttet opad. vedhæft fil_navn - + Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 @@ -2154,7 +2080,7 @@ Underelementer vil blive flyttet opad. vedhæftet fil_størrelse - + Part-DB1\templates\Parts\info\_attachments_info.html.twig:54 @@ -2163,17 +2089,17 @@ Underelementer vil blive flyttet opad. Forhåndsvisningbillede - + Part-DB1\templates\Parts\info\_attachments_info.html.twig:67 Part-DB1\templates\Parts\info\_attachments_info.html.twig:50 - attachment.download - Vedhæftet fil + attachment.download_local + vedhæftning.download_lokalt - + Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 @@ -2181,10 +2107,10 @@ Underelementer vil blive flyttet opad. user.creating_user - Hvem oprettede denne del + Oprettet af - + Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 @@ -2198,7 +2124,7 @@ Underelementer vil blive flyttet opad. Ukendt - + Part-DB1\templates\Parts\info\_extended_infos.html.twig:15 Part-DB1\templates\Parts\info\_extended_infos.html.twig:30 @@ -2211,7 +2137,7 @@ Underelementer vil blive flyttet opad. Adgang nægtet - + Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 @@ -2219,10 +2145,10 @@ Underelementer vil blive flyttet opad. user.last_editing_user - Bruger som rettede denne del + Bruger som sidst rettede denne - + Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 @@ -2232,17 +2158,17 @@ Underelementer vil blive flyttet opad. Favorit - + Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 part.minOrderAmount - Minimum ordrestrørrelse + Minimum ordrestørrelse - + Part-DB1\templates\Parts\info\_main_infos.html.twig:8 Part-DB1\templates\_navbar_search.html.twig:46 @@ -2259,7 +2185,7 @@ Underelementer vil blive flyttet opad. Fabrikant - + Part-DB1\templates\Parts\info\_main_infos.html.twig:24 Part-DB1\templates\_navbar_search.html.twig:11 @@ -2271,7 +2197,7 @@ Underelementer vil blive flyttet opad. Navn - + Part-DB1\templates\Parts\info\_main_infos.html.twig:27 Part-DB1\templates\Parts\info\_main_infos.html.twig:27 @@ -2282,7 +2208,7 @@ Underelementer vil blive flyttet opad. Tilbage til forrige version - + Part-DB1\templates\Parts\info\_main_infos.html.twig:32 Part-DB1\templates\_navbar_search.html.twig:19 @@ -2297,7 +2223,7 @@ Underelementer vil blive flyttet opad. Beskrivelse - + Part-DB1\templates\Parts\info\_main_infos.html.twig:34 Part-DB1\templates\_navbar_search.html.twig:15 @@ -2314,7 +2240,7 @@ Underelementer vil blive flyttet opad. Kategori - + Part-DB1\templates\Parts\info\_main_infos.html.twig:39 Part-DB1\templates\Parts\info\_main_infos.html.twig:39 @@ -2326,7 +2252,7 @@ Underelementer vil blive flyttet opad. På lager - + Part-DB1\templates\Parts\info\_main_infos.html.twig:41 Part-DB1\templates\Parts\info\_main_infos.html.twig:41 @@ -2338,7 +2264,7 @@ Underelementer vil blive flyttet opad. Minimumbestand - + Part-DB1\templates\Parts\info\_main_infos.html.twig:45 Part-DB1\templates\_navbar_search.html.twig:52 @@ -2354,7 +2280,7 @@ Underelementer vil blive flyttet opad. Footprint - + Part-DB1\templates\Parts\info\_main_infos.html.twig:56 Part-DB1\templates\Parts\info\_main_infos.html.twig:59 @@ -2367,7 +2293,7 @@ Underelementer vil blive flyttet opad. Gennemsnitspris - + Part-DB1\templates\Parts\info\_order_infos.html.twig:5 Part-DB1\templates\Parts\info\_order_infos.html.twig:5 @@ -2377,7 +2303,7 @@ Underelementer vil blive flyttet opad. Navn - + Part-DB1\templates\Parts\info\_order_infos.html.twig:6 Part-DB1\templates\Parts\info\_order_infos.html.twig:6 @@ -2387,7 +2313,7 @@ Underelementer vil blive flyttet opad. Bestillingsnummer. - + Part-DB1\templates\Parts\info\_order_infos.html.twig:28 Part-DB1\templates\Parts\info\_order_infos.html.twig:28 @@ -2397,7 +2323,7 @@ Underelementer vil blive flyttet opad. Mindsteantal - + Part-DB1\templates\Parts\info\_order_infos.html.twig:29 Part-DB1\templates\Parts\info\_order_infos.html.twig:29 @@ -2407,7 +2333,7 @@ Underelementer vil blive flyttet opad. Pris - + Part-DB1\templates\Parts\info\_order_infos.html.twig:31 Part-DB1\templates\Parts\info\_order_infos.html.twig:31 @@ -2417,7 +2343,7 @@ Underelementer vil blive flyttet opad. Enhedspris - + Part-DB1\templates\Parts\info\_part_lots.html.twig:7 Part-DB1\templates\Parts\info\_part_lots.html.twig:6 @@ -2427,7 +2353,7 @@ Underelementer vil blive flyttet opad. Beskrivelse - + Part-DB1\templates\Parts\info\_part_lots.html.twig:8 Part-DB1\templates\Parts\info\_part_lots.html.twig:7 @@ -2437,7 +2363,7 @@ Underelementer vil blive flyttet opad. Lagerlokation - + Part-DB1\templates\Parts\info\_part_lots.html.twig:9 Part-DB1\templates\Parts\info\_part_lots.html.twig:8 @@ -2447,7 +2373,7 @@ Underelementer vil blive flyttet opad. Mængde - + Part-DB1\templates\Parts\info\_part_lots.html.twig:24 Part-DB1\templates\Parts\info\_part_lots.html.twig:22 @@ -2457,7 +2383,7 @@ Underelementer vil blive flyttet opad. Ukendt lagerlokation - + Part-DB1\templates\Parts\info\_part_lots.html.twig:31 Part-DB1\templates\Parts\info\_part_lots.html.twig:29 @@ -2467,7 +2393,7 @@ Underelementer vil blive flyttet opad. Ukendt mængde - + Part-DB1\templates\Parts\info\_part_lots.html.twig:40 Part-DB1\templates\Parts\info\_part_lots.html.twig:38 @@ -2477,7 +2403,7 @@ Underelementer vil blive flyttet opad. Udløbsdato - + Part-DB1\templates\Parts\info\_part_lots.html.twig:48 Part-DB1\templates\Parts\info\_part_lots.html.twig:46 @@ -2487,7 +2413,7 @@ Underelementer vil blive flyttet opad. Udløbet - + Part-DB1\templates\Parts\info\_part_lots.html.twig:55 Part-DB1\templates\Parts\info\_part_lots.html.twig:53 @@ -2497,7 +2423,7 @@ Underelementer vil blive flyttet opad. Skal fyldes op - + Part-DB1\templates\Parts\info\_picture.html.twig:15 Part-DB1\templates\Parts\info\_picture.html.twig:15 @@ -2507,7 +2433,7 @@ Underelementer vil blive flyttet opad. Forrige billede - + Part-DB1\templates\Parts\info\_picture.html.twig:19 Part-DB1\templates\Parts\info\_picture.html.twig:19 @@ -2517,7 +2443,7 @@ Underelementer vil blive flyttet opad. Næste billede - + Part-DB1\templates\Parts\info\_sidebar.html.twig:21 Part-DB1\templates\Parts\info\_sidebar.html.twig:21 @@ -2527,7 +2453,7 @@ Underelementer vil blive flyttet opad. Vægt - + Part-DB1\templates\Parts\info\_sidebar.html.twig:30 Part-DB1\templates\Parts\info\_sidebar.html.twig:30 @@ -2537,7 +2463,7 @@ Underelementer vil blive flyttet opad. Gennemgang nødvendig - + Part-DB1\templates\Parts\info\_sidebar.html.twig:39 Part-DB1\templates\Parts\info\_sidebar.html.twig:39 @@ -2547,7 +2473,7 @@ Underelementer vil blive flyttet opad. Favorit - + Part-DB1\templates\Parts\info\_sidebar.html.twig:47 Part-DB1\templates\Parts\info\_sidebar.html.twig:47 @@ -2557,7 +2483,7 @@ Underelementer vil blive flyttet opad. Ikke længere tilgængelig - + Part-DB1\templates\Parts\info\_specifications.html.twig:10 @@ -2566,7 +2492,7 @@ Underelementer vil blive flyttet opad. Automatisk udtrukket fra beskrivelse - + Part-DB1\templates\Parts\info\_specifications.html.twig:15 @@ -2575,7 +2501,7 @@ Underelementer vil blive flyttet opad. Automatisk udtrukket fra noter - + Part-DB1\templates\Parts\info\_tools.html.twig:6 Part-DB1\templates\Parts\info\_tools.html.twig:4 @@ -2586,7 +2512,7 @@ Underelementer vil blive flyttet opad. Rediger komponent - + Part-DB1\templates\Parts\info\_tools.html.twig:16 Part-DB1\templates\Parts\info\_tools.html.twig:14 @@ -2597,7 +2523,7 @@ Underelementer vil blive flyttet opad. Kopier komponent - + Part-DB1\templates\Parts\info\_tools.html.twig:24 Part-DB1\templates\Parts\lists\_action_bar.html.twig:4 @@ -2608,7 +2534,7 @@ Underelementer vil blive flyttet opad. Opret ny komponent - + Part-DB1\templates\Parts\info\_tools.html.twig:31 Part-DB1\templates\Parts\info\_tools.html.twig:29 @@ -2618,7 +2544,7 @@ Underelementer vil blive flyttet opad. Vil du virkelig slette denne komponent - + Part-DB1\templates\Parts\info\_tools.html.twig:32 Part-DB1\templates\Parts\info\_tools.html.twig:30 @@ -2628,7 +2554,7 @@ Underelementer vil blive flyttet opad. Komponenten og alle dens relaterede oplysninger (bilag, priser osv. ) slettes. Dette kan ikke fortrydes! - + Part-DB1\templates\Parts\info\_tools.html.twig:39 Part-DB1\templates\Parts\info\_tools.html.twig:37 @@ -2638,7 +2564,7 @@ Underelementer vil blive flyttet opad. Slet komponent - + Part-DB1\templates\Parts\lists\all_list.html.twig:4 Part-DB1\templates\Parts\lists\all_list.html.twig:4 @@ -2648,7 +2574,7 @@ Underelementer vil blive flyttet opad. Alle komponenter - + Part-DB1\templates\Parts\lists\category_list.html.twig:4 Part-DB1\templates\Parts\lists\category_list.html.twig:4 @@ -2658,7 +2584,7 @@ Underelementer vil blive flyttet opad. Komponent med kategori - + Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 @@ -2668,7 +2594,7 @@ Underelementer vil blive flyttet opad. Komponent med footprint - + Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 @@ -2678,7 +2604,7 @@ Underelementer vil blive flyttet opad. Komponenter med fabrikanter - + Part-DB1\templates\Parts\lists\search_list.html.twig:4 Part-DB1\templates\Parts\lists\search_list.html.twig:4 @@ -2688,7 +2614,7 @@ Underelementer vil blive flyttet opad. Søg komponenter - + Part-DB1\templates\Parts\lists\store_location_list.html.twig:4 Part-DB1\templates\Parts\lists\store_location_list.html.twig:4 @@ -2698,7 +2624,7 @@ Underelementer vil blive flyttet opad. Komponenter med lagerlokationer - + Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 @@ -2708,7 +2634,7 @@ Underelementer vil blive flyttet opad. Komponenter med leverandører - + Part-DB1\templates\Parts\lists\tags_list.html.twig:4 Part-DB1\templates\Parts\lists\tags_list.html.twig:4 @@ -2718,7 +2644,7 @@ Underelementer vil blive flyttet opad. Komponenter med tag - + Part-DB1\templates\Parts\lists\_info_card.html.twig:22 Part-DB1\templates\Parts\lists\_info_card.html.twig:17 @@ -2728,7 +2654,7 @@ Underelementer vil blive flyttet opad. Fælles - + Part-DB1\templates\Parts\lists\_info_card.html.twig:26 Part-DB1\templates\Parts\lists\_info_card.html.twig:20 @@ -2738,7 +2664,7 @@ Underelementer vil blive flyttet opad. Statistik - + Part-DB1\templates\Parts\lists\_info_card.html.twig:31 @@ -2747,7 +2673,7 @@ Underelementer vil blive flyttet opad. Vedhæftede filer - + Part-DB1\templates\Parts\lists\_info_card.html.twig:37 @@ -2756,7 +2682,7 @@ Underelementer vil blive flyttet opad. Parametre - + Part-DB1\templates\Parts\lists\_info_card.html.twig:54 Part-DB1\templates\Parts\lists\_info_card.html.twig:30 @@ -2766,7 +2692,7 @@ Underelementer vil blive flyttet opad. Navn - + Part-DB1\templates\Parts\lists\_info_card.html.twig:58 Part-DB1\templates\Parts\lists\_info_card.html.twig:96 @@ -2778,7 +2704,7 @@ Underelementer vil blive flyttet opad. Overordnet element - + Part-DB1\templates\Parts\lists\_info_card.html.twig:70 Part-DB1\templates\Parts\lists\_info_card.html.twig:46 @@ -2788,7 +2714,7 @@ Underelementer vil blive flyttet opad. Redigere - + Part-DB1\templates\Parts\lists\_info_card.html.twig:92 Part-DB1\templates\Parts\lists\_info_card.html.twig:63 @@ -2798,7 +2724,7 @@ Underelementer vil blive flyttet opad. Antal af underelementer - + Part-DB1\templates\security\2fa_base_form.html.twig:3 Part-DB1\templates\security\2fa_base_form.html.twig:5 @@ -2810,7 +2736,7 @@ Underelementer vil blive flyttet opad. To-faktor godkendelse påkrævet - + Part-DB1\templates\security\2fa_base_form.html.twig:39 Part-DB1\templates\security\2fa_base_form.html.twig:39 @@ -2820,7 +2746,7 @@ Underelementer vil blive flyttet opad. Dette er en pålidelig computer (hvis dette er aktiveret, udføres der ikke yderligere to-faktorforespørgsler på denne computer) - + Part-DB1\templates\security\2fa_base_form.html.twig:52 Part-DB1\templates\security\login.html.twig:58 @@ -2832,7 +2758,7 @@ Underelementer vil blive flyttet opad. Login - + Part-DB1\templates\security\2fa_base_form.html.twig:53 Part-DB1\templates\security\U2F\u2f_login.html.twig:13 @@ -2846,7 +2772,7 @@ Underelementer vil blive flyttet opad. Log ud - + Part-DB1\templates\security\2fa_form.html.twig:6 Part-DB1\templates\security\2fa_form.html.twig:6 @@ -2856,7 +2782,7 @@ Underelementer vil blive flyttet opad. Godkendelses app kode - + Part-DB1\templates\security\2fa_form.html.twig:10 Part-DB1\templates\security\2fa_form.html.twig:10 @@ -2866,7 +2792,7 @@ Underelementer vil blive flyttet opad. Indtast den 6-cifrede kode fra din godkendelsesapp her eller en af dine backupkoder, hvis godkendelses app'en ikke er tilgændelig. - + Part-DB1\templates\security\login.html.twig:3 Part-DB1\templates\security\login.html.twig:3 @@ -2877,7 +2803,7 @@ Underelementer vil blive flyttet opad. Login - + Part-DB1\templates\security\login.html.twig:7 Part-DB1\templates\security\login.html.twig:7 @@ -2888,7 +2814,7 @@ Underelementer vil blive flyttet opad. Login - + Part-DB1\templates\security\login.html.twig:31 Part-DB1\templates\security\login.html.twig:31 @@ -2899,7 +2825,7 @@ Underelementer vil blive flyttet opad. Brugernavn - + Part-DB1\templates\security\login.html.twig:34 Part-DB1\templates\security\login.html.twig:34 @@ -2910,7 +2836,7 @@ Underelementer vil blive flyttet opad. Brugernavn - + Part-DB1\templates\security\login.html.twig:38 Part-DB1\templates\security\login.html.twig:38 @@ -2921,7 +2847,7 @@ Underelementer vil blive flyttet opad. Password - + Part-DB1\templates\security\login.html.twig:40 Part-DB1\templates\security\login.html.twig:40 @@ -2932,7 +2858,7 @@ Underelementer vil blive flyttet opad. Password - + Part-DB1\templates\security\login.html.twig:50 Part-DB1\templates\security\login.html.twig:50 @@ -2943,7 +2869,7 @@ Underelementer vil blive flyttet opad. Forbliv logget ind (anbefales ikke på delte computere) - + Part-DB1\templates\security\login.html.twig:64 Part-DB1\templates\security\login.html.twig:64 @@ -2953,7 +2879,7 @@ Underelementer vil blive flyttet opad. Glemt brugernavn/password? - + Part-DB1\templates\security\pw_reset_new_pw.html.twig:5 Part-DB1\templates\security\pw_reset_new_pw.html.twig:5 @@ -2963,7 +2889,7 @@ Underelementer vil blive flyttet opad. Indstil ny adgangskode - + Part-DB1\templates\security\pw_reset_request.html.twig:5 Part-DB1\templates\security\pw_reset_request.html.twig:5 @@ -2973,7 +2899,7 @@ Underelementer vil blive flyttet opad. Anmod om nyt password - + Part-DB1\templates\security\U2F\u2f_login.html.twig:7 Part-DB1\templates\security\U2F\u2f_register.html.twig:10 @@ -2985,7 +2911,7 @@ Underelementer vil blive flyttet opad. Du tilgår denne side ved hjælp af den usikre HTTP-metode, så U2F vil højst sandsynligt ikke fungere (Bad Request-fejlmeddelelse). Bed en administrator om at konfigurere den sikre HTTPS-metode, hvis du vil bruge sikkerhedsnøgler. - + Part-DB1\templates\security\U2F\u2f_login.html.twig:10 Part-DB1\templates\security\U2F\u2f_register.html.twig:22 @@ -2997,7 +2923,7 @@ Underelementer vil blive flyttet opad. Indsæt venligst sikkerhedsnøglen og tryk på knappen - + Part-DB1\templates\security\U2F\u2f_register.html.twig:3 Part-DB1\templates\security\U2F\u2f_register.html.twig:3 @@ -3007,7 +2933,7 @@ Underelementer vil blive flyttet opad. Tilføj sikkerhedsnøgle - + Part-DB1\templates\security\U2F\u2f_register.html.twig:6 Part-DB1\templates\Users\_2fa_settings.html.twig:111 @@ -3019,7 +2945,7 @@ Underelementer vil blive flyttet opad. Brug af en U2F/FIDO-kompatibel sikkerhedsnøgle (f.eks. YubiKey eller NitroKey) kan øge brugervenligheden og sikre en sikker to-faktor-godkendelse. Sikkerhedsnøglerne kan registreres her. Hvis to-faktor verifikation er påkrævet, skal nøglen kun tilsluttes via USB eller sættes op mod enheden via NFC. - + Part-DB1\templates\security\U2F\u2f_register.html.twig:7 Part-DB1\templates\security\U2F\u2f_register.html.twig:7 @@ -3029,7 +2955,7 @@ Underelementer vil blive flyttet opad. For at sikre adgang, selvom nøglen går tabt, anbefales det at registrere en anden nøgle som backup og opbevare den et sikkert sted! - + Part-DB1\templates\security\U2F\u2f_register.html.twig:19 Part-DB1\templates\security\U2F\u2f_register.html.twig:19 @@ -3039,7 +2965,7 @@ Underelementer vil blive flyttet opad. Tilføj sikkerhedsnøgle - + Part-DB1\templates\security\U2F\u2f_register.html.twig:27 Part-DB1\templates\security\U2F\u2f_register.html.twig:27 @@ -3049,7 +2975,7 @@ Underelementer vil blive flyttet opad. Tilbage til indstillinger - + Part-DB1\templates\Statistics\statistics.html.twig:5 Part-DB1\templates\Statistics\statistics.html.twig:8 @@ -3062,7 +2988,7 @@ Underelementer vil blive flyttet opad. Statistikker - + Part-DB1\templates\Statistics\statistics.html.twig:14 Part-DB1\templates\Statistics\statistics.html.twig:14 @@ -3073,7 +2999,7 @@ Underelementer vil blive flyttet opad. Komponenter - + Part-DB1\templates\Statistics\statistics.html.twig:19 Part-DB1\templates\Statistics\statistics.html.twig:19 @@ -3084,7 +3010,7 @@ Underelementer vil blive flyttet opad. Datastrukturer - + Part-DB1\templates\Statistics\statistics.html.twig:24 Part-DB1\templates\Statistics\statistics.html.twig:24 @@ -3095,7 +3021,7 @@ Underelementer vil blive flyttet opad. Bilag - + Part-DB1\templates\Statistics\statistics.html.twig:34 Part-DB1\templates\Statistics\statistics.html.twig:59 @@ -3110,7 +3036,7 @@ Underelementer vil blive flyttet opad. Egenskab - + Part-DB1\templates\Statistics\statistics.html.twig:35 Part-DB1\templates\Statistics\statistics.html.twig:60 @@ -3125,7 +3051,7 @@ Underelementer vil blive flyttet opad. Værdi - + Part-DB1\templates\Statistics\statistics.html.twig:40 Part-DB1\templates\Statistics\statistics.html.twig:40 @@ -3136,7 +3062,7 @@ Underelementer vil blive flyttet opad. Antal forskellige komponenter - + Part-DB1\templates\Statistics\statistics.html.twig:44 Part-DB1\templates\Statistics\statistics.html.twig:44 @@ -3147,7 +3073,7 @@ Underelementer vil blive flyttet opad. Komponenter på lager i alt - + Part-DB1\templates\Statistics\statistics.html.twig:48 Part-DB1\templates\Statistics\statistics.html.twig:48 @@ -3158,7 +3084,7 @@ Underelementer vil blive flyttet opad. Komponenter med prisinformantion - + Part-DB1\templates\Statistics\statistics.html.twig:65 Part-DB1\templates\Statistics\statistics.html.twig:65 @@ -3169,7 +3095,7 @@ Underelementer vil blive flyttet opad. Antal kategorier - + Part-DB1\templates\Statistics\statistics.html.twig:69 Part-DB1\templates\Statistics\statistics.html.twig:69 @@ -3180,7 +3106,7 @@ Underelementer vil blive flyttet opad. Antal footprints - + Part-DB1\templates\Statistics\statistics.html.twig:73 Part-DB1\templates\Statistics\statistics.html.twig:73 @@ -3191,7 +3117,7 @@ Underelementer vil blive flyttet opad. Antal fabrikanter - + Part-DB1\templates\Statistics\statistics.html.twig:77 Part-DB1\templates\Statistics\statistics.html.twig:77 @@ -3202,7 +3128,7 @@ Underelementer vil blive flyttet opad. Antal lagerlokationer - + Part-DB1\templates\Statistics\statistics.html.twig:81 Part-DB1\templates\Statistics\statistics.html.twig:81 @@ -3213,7 +3139,7 @@ Underelementer vil blive flyttet opad. Antal leverandører - + Part-DB1\templates\Statistics\statistics.html.twig:85 Part-DB1\templates\Statistics\statistics.html.twig:85 @@ -3224,7 +3150,7 @@ Underelementer vil blive flyttet opad. Antal valutaer - + Part-DB1\templates\Statistics\statistics.html.twig:89 Part-DB1\templates\Statistics\statistics.html.twig:89 @@ -3235,7 +3161,7 @@ Underelementer vil blive flyttet opad. Antal måleenheder - + Part-DB1\templates\Statistics\statistics.html.twig:93 Part-DB1\templates\Statistics\statistics.html.twig:93 @@ -3246,7 +3172,7 @@ Underelementer vil blive flyttet opad. Antal projekter - + Part-DB1\templates\Statistics\statistics.html.twig:110 Part-DB1\templates\Statistics\statistics.html.twig:110 @@ -3257,7 +3183,7 @@ Underelementer vil blive flyttet opad. Antal af bilagstyper - + Part-DB1\templates\Statistics\statistics.html.twig:114 Part-DB1\templates\Statistics\statistics.html.twig:114 @@ -3268,7 +3194,7 @@ Underelementer vil blive flyttet opad. Antal bilag i alt - + Part-DB1\templates\Statistics\statistics.html.twig:118 Part-DB1\templates\Statistics\statistics.html.twig:118 @@ -3279,7 +3205,7 @@ Underelementer vil blive flyttet opad. Antal uploadede bilag - + Part-DB1\templates\Statistics\statistics.html.twig:122 Part-DB1\templates\Statistics\statistics.html.twig:122 @@ -3290,7 +3216,7 @@ Underelementer vil blive flyttet opad. Antal private bilag - + Part-DB1\templates\Statistics\statistics.html.twig:126 Part-DB1\templates\Statistics\statistics.html.twig:126 @@ -3301,7 +3227,7 @@ Underelementer vil blive flyttet opad. Antallet af alle eksterne bilag (URL) - + Part-DB1\templates\Users\backup_codes.html.twig:3 Part-DB1\templates\Users\backup_codes.html.twig:9 @@ -3313,7 +3239,7 @@ Underelementer vil blive flyttet opad. Backupkoder - + Part-DB1\templates\Users\backup_codes.html.twig:12 Part-DB1\templates\Users\backup_codes.html.twig:12 @@ -3323,7 +3249,7 @@ Underelementer vil blive flyttet opad. Udskriv disse koder og opbevar dem et sikkert sted! - + Part-DB1\templates\Users\backup_codes.html.twig:13 Part-DB1\templates\Users\backup_codes.html.twig:13 @@ -3333,7 +3259,7 @@ Underelementer vil blive flyttet opad. Hvis du ikke længere har adgang til din enhed med Godkendelses-appen (smartphone tabt, datatab osv.), kan du bruge en af ​​disse koder til at få adgang til din konto og eventuelt igen forbinde til godkendelses-app. Hver af disse koder kan bruges én gang; det er tilrådeligt at slette brugte koder. Alle med adgang til disse koder kan potentielt få adgang til din konto, så opbevar dem et sikkert sted. - + Part-DB1\templates\Users\backup_codes.html.twig:16 Part-DB1\templates\Users\backup_codes.html.twig:16 @@ -3343,7 +3269,7 @@ Underelementer vil blive flyttet opad. Brugernavn - + Part-DB1\templates\Users\backup_codes.html.twig:29 Part-DB1\templates\Users\backup_codes.html.twig:29 @@ -3353,7 +3279,7 @@ Underelementer vil blive flyttet opad. Side genereret den %date% - + Part-DB1\templates\Users\backup_codes.html.twig:32 Part-DB1\templates\Users\backup_codes.html.twig:32 @@ -3363,7 +3289,7 @@ Underelementer vil blive flyttet opad. Udskriv - + Part-DB1\templates\Users\backup_codes.html.twig:35 Part-DB1\templates\Users\backup_codes.html.twig:35 @@ -3373,7 +3299,7 @@ Underelementer vil blive flyttet opad. Kopier til udklipsholder - + Part-DB1\templates\Users\user_info.html.twig:3 Part-DB1\templates\Users\user_info.html.twig:6 @@ -3390,7 +3316,7 @@ Underelementer vil blive flyttet opad. Brugerinformation - + Part-DB1\templates\Users\user_info.html.twig:18 Part-DB1\src\Form\UserSettingsType.php:77 @@ -3404,7 +3330,7 @@ Underelementer vil blive flyttet opad. Fornavn - + Part-DB1\templates\Users\user_info.html.twig:24 Part-DB1\src\Form\UserSettingsType.php:82 @@ -3418,7 +3344,7 @@ Underelementer vil blive flyttet opad. Efternavn - + Part-DB1\templates\Users\user_info.html.twig:30 Part-DB1\src\Form\UserSettingsType.php:92 @@ -3432,7 +3358,7 @@ Underelementer vil blive flyttet opad. E-mail - + Part-DB1\templates\Users\user_info.html.twig:37 Part-DB1\src\Form\UserSettingsType.php:87 @@ -3446,7 +3372,7 @@ Underelementer vil blive flyttet opad. Afdeling - + Part-DB1\templates\Users\user_info.html.twig:47 Part-DB1\src\Form\UserSettingsType.php:73 @@ -3460,7 +3386,7 @@ Underelementer vil blive flyttet opad. Brugernavn - + Part-DB1\templates\Users\user_info.html.twig:53 Part-DB1\src\Services\ElementTypeNameGenerator.php:93 @@ -3473,7 +3399,7 @@ Underelementer vil blive flyttet opad. Gruppe - + Part-DB1\templates\Users\user_info.html.twig:67 Part-DB1\templates\Users\user_info.html.twig:67 @@ -3483,7 +3409,7 @@ Underelementer vil blive flyttet opad. Tilladelser - + Part-DB1\templates\Users\user_settings.html.twig:3 Part-DB1\templates\Users\user_settings.html.twig:6 @@ -3500,7 +3426,7 @@ Underelementer vil blive flyttet opad. Brugerindstillinger - + Part-DB1\templates\Users\user_settings.html.twig:18 Part-DB1\templates\Users\user_settings.html.twig:18 @@ -3511,7 +3437,7 @@ Underelementer vil blive flyttet opad. Personlige data - + Part-DB1\templates\Users\user_settings.html.twig:22 Part-DB1\templates\Users\user_settings.html.twig:22 @@ -3522,7 +3448,7 @@ Underelementer vil blive flyttet opad. Konfiguration - + Part-DB1\templates\Users\user_settings.html.twig:55 Part-DB1\templates\Users\user_settings.html.twig:55 @@ -3533,7 +3459,7 @@ Underelementer vil blive flyttet opad. Ændre password - + Part-DB1\templates\Users\_2fa_settings.html.twig:6 Part-DB1\templates\Users\_2fa_settings.html.twig:6 @@ -3543,7 +3469,7 @@ Underelementer vil blive flyttet opad. To-faktor godkendelse - + Part-DB1\templates\Users\_2fa_settings.html.twig:13 Part-DB1\templates\Users\_2fa_settings.html.twig:13 @@ -3553,7 +3479,7 @@ Underelementer vil blive flyttet opad. Godkendelses-app - + Part-DB1\templates\Users\_2fa_settings.html.twig:17 Part-DB1\templates\Users\_2fa_settings.html.twig:17 @@ -3563,7 +3489,7 @@ Underelementer vil blive flyttet opad. Backup-koder - + Part-DB1\templates\Users\_2fa_settings.html.twig:21 Part-DB1\templates\Users\_2fa_settings.html.twig:21 @@ -3573,7 +3499,7 @@ Underelementer vil blive flyttet opad. Sikkerhedsnøgler (U2F) - + Part-DB1\templates\Users\_2fa_settings.html.twig:25 Part-DB1\templates\Users\_2fa_settings.html.twig:25 @@ -3583,7 +3509,7 @@ Underelementer vil blive flyttet opad. Pålidelige enheder - + Part-DB1\templates\Users\_2fa_settings.html.twig:33 Part-DB1\templates\Users\_2fa_settings.html.twig:33 @@ -3593,7 +3519,7 @@ Underelementer vil blive flyttet opad. Er du sikker på, at du vil deaktivere godkendelses-appen? - + Part-DB1\templates\Users\_2fa_settings.html.twig:33 Part-DB1\templates\Users\_2fa_settings.html.twig:33 @@ -3604,7 +3530,7 @@ Underelementer vil blive flyttet opad. Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt beskyttet mod misbrug! - + Part-DB1\templates\Users\_2fa_settings.html.twig:39 Part-DB1\templates\Users\_2fa_settings.html.twig:39 @@ -3614,7 +3540,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Godkendelses-app er deaktiveret - + Part-DB1\templates\Users\_2fa_settings.html.twig:48 Part-DB1\templates\Users\_2fa_settings.html.twig:48 @@ -3624,7 +3550,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Download en godkendelses-app (f.eks. <a class="link-external" target="_blank" href="https://play.google.com/store/apps/details?id=com.google.android. apps. authenticator2">Google Authenticator</a> eller <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 @@ -3634,7 +3560,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Scan QR-koden nedenfor med appen eller indtast data manuelt - + Part-DB1\templates\Users\_2fa_settings.html.twig:50 Part-DB1\templates\Users\_2fa_settings.html.twig:50 @@ -3644,7 +3570,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Indtast den genererede kode i feltet nedenfor og bekræft - + Part-DB1\templates\Users\_2fa_settings.html.twig:51 Part-DB1\templates\Users\_2fa_settings.html.twig:51 @@ -3654,7 +3580,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Udskriv dine backupkoder og gem dem et sikkert sted - + Part-DB1\templates\Users\_2fa_settings.html.twig:58 Part-DB1\templates\Users\_2fa_settings.html.twig:58 @@ -3664,7 +3590,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Manuel opsætning - + Part-DB1\templates\Users\_2fa_settings.html.twig:62 Part-DB1\templates\Users\_2fa_settings.html.twig:62 @@ -3674,7 +3600,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Type - + Part-DB1\templates\Users\_2fa_settings.html.twig:63 Part-DB1\templates\Users\_2fa_settings.html.twig:63 @@ -3684,7 +3610,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Brugernavn - + Part-DB1\templates\Users\_2fa_settings.html.twig:64 Part-DB1\templates\Users\_2fa_settings.html.twig:64 @@ -3694,7 +3620,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Secret - + Part-DB1\templates\Users\_2fa_settings.html.twig:65 Part-DB1\templates\Users\_2fa_settings.html.twig:65 @@ -3704,7 +3630,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Antal ciffre - + Part-DB1\templates\Users\_2fa_settings.html.twig:74 Part-DB1\templates\Users\_2fa_settings.html.twig:74 @@ -3714,7 +3640,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Godkendelses-app aktiv - + Part-DB1\templates\Users\_2fa_settings.html.twig:83 Part-DB1\templates\Users\_2fa_settings.html.twig:83 @@ -3724,7 +3650,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Backup-koder deaktiveret. Konfigurer godkendelses-appen for at aktivere backupkoder. - + Part-DB1\templates\Users\_2fa_settings.html.twig:84 Part-DB1\templates\Users\_2fa_settings.html.twig:92 @@ -3736,7 +3662,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Disse backupkoder giver dig adgang til din konto, selvom du mister enheden med godkendelse-appen. Udskriv koderne og opbevar dem et sikkert sted. - + Part-DB1\templates\Users\_2fa_settings.html.twig:88 Part-DB1\templates\Users\_2fa_settings.html.twig:88 @@ -3746,7 +3672,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Vil du virkelig nulstille koder? - + Part-DB1\templates\Users\_2fa_settings.html.twig:88 Part-DB1\templates\Users\_2fa_settings.html.twig:88 @@ -3756,7 +3682,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Dette vil slette alle tidligere koder og generere et sæt nye koder. Dette kan ikke fortrydes. Husk at udskrive de nye koder og gem dem et sikkert sted! - + Part-DB1\templates\Users\_2fa_settings.html.twig:91 Part-DB1\templates\Users\_2fa_settings.html.twig:91 @@ -3766,7 +3692,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Backupkoder aktiveret - + Part-DB1\templates\Users\_2fa_settings.html.twig:99 Part-DB1\templates\Users\_2fa_settings.html.twig:99 @@ -3776,7 +3702,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Vis backupkoder - + Part-DB1\templates\Users\_2fa_settings.html.twig:114 Part-DB1\templates\Users\_2fa_settings.html.twig:114 @@ -3786,7 +3712,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Gemte backupkoder - + Part-DB1\templates\Users\_2fa_settings.html.twig:115 Part-DB1\templates\Users\_2fa_settings.html.twig:115 @@ -3796,7 +3722,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Ønsker du virkelig at slette denne backupkode? - + Part-DB1\templates\Users\_2fa_settings.html.twig:116 Part-DB1\templates\Users\_2fa_settings.html.twig:116 @@ -3806,7 +3732,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Hvis du fjerner denne nøgle, vil du ikke længere kunne logge på med den. Hvis der ikke er nogen sikkerhedsnøgler tilbage, er to-faktor-godkendelse deaktiveret. - + Part-DB1\templates\Users\_2fa_settings.html.twig:123 Part-DB1\templates\Users\_2fa_settings.html.twig:123 @@ -3816,7 +3742,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Nøglenavn - + Part-DB1\templates\Users\_2fa_settings.html.twig:124 Part-DB1\templates\Users\_2fa_settings.html.twig:124 @@ -3826,7 +3752,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Registreringsdato - + Part-DB1\templates\Users\_2fa_settings.html.twig:134 Part-DB1\templates\Users\_2fa_settings.html.twig:134 @@ -3836,7 +3762,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Slet nøgle - + Part-DB1\templates\Users\_2fa_settings.html.twig:141 Part-DB1\templates\Users\_2fa_settings.html.twig:141 @@ -3846,7 +3772,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Ingen gemte nøgler - + Part-DB1\templates\Users\_2fa_settings.html.twig:144 Part-DB1\templates\Users\_2fa_settings.html.twig:144 @@ -3856,7 +3782,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Registrer ny sikkerhedsnøgle - + Part-DB1\templates\Users\_2fa_settings.html.twig:148 Part-DB1\templates\Users\_2fa_settings.html.twig:148 @@ -3866,7 +3792,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Når du tjekker to-faktor, kan den aktuelle computer markeres som troværdig og så er to-faktor-tjek er ikke længere nødvendig på denne computer. Hvis du udførte dette ved en fejl, eller hvis en computer ikke længere er troværdig. Så kan du nulstille status for <i>alle </i>computere her. - + Part-DB1\templates\Users\_2fa_settings.html.twig:149 Part-DB1\templates\Users\_2fa_settings.html.twig:149 @@ -3876,7 +3802,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Vil du virkelig fjerne alle pålidelige computere? - + Part-DB1\templates\Users\_2fa_settings.html.twig:150 Part-DB1\templates\Users\_2fa_settings.html.twig:150 @@ -3886,7 +3812,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Du skal opsætte to-faktor-godkendelse igen på alle computere. Sørg for, at du har din to-faktor-enhed ved hånden. - + Part-DB1\templates\Users\_2fa_settings.html.twig:154 Part-DB1\templates\Users\_2fa_settings.html.twig:154 @@ -3896,7 +3822,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Fjern alle pålidelige enheder - + Part-DB1\templates\_navbar.html.twig:4 Part-DB1\templates\_navbar.html.twig:4 @@ -3907,7 +3833,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Aktivér/de-aktiver sidebjælke - + Part-DB1\templates\_navbar.html.twig:22 @@ -3916,7 +3842,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Scanner - + Part-DB1\templates\_navbar.html.twig:38 Part-DB1\templates\_navbar.html.twig:36 @@ -3927,7 +3853,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Logget ind som - + Part-DB1\templates\_navbar.html.twig:44 Part-DB1\templates\_navbar.html.twig:42 @@ -3938,7 +3864,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Log ind - + Part-DB1\templates\_navbar.html.twig:50 Part-DB1\templates\_navbar.html.twig:48 @@ -3948,7 +3874,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Darkmode - + Part-DB1\templates\_navbar.html.twig:54 Part-DB1\src\Form\UserSettingsType.php:97 @@ -3962,7 +3888,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Sprog - + Part-DB1\templates\_navbar_search.html.twig:4 Part-DB1\templates\_navbar_search.html.twig:4 @@ -3973,7 +3899,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Søgemuligheder - + Part-DB1\templates\_navbar_search.html.twig:23 @@ -3982,7 +3908,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Tags - + Part-DB1\templates\_navbar_search.html.twig:27 Part-DB1\src\Form\LabelOptionsType.php:68 @@ -3997,7 +3923,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Lagerlokation - + Part-DB1\templates\_navbar_search.html.twig:36 Part-DB1\templates\_navbar_search.html.twig:31 @@ -4008,7 +3934,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Bestillingsnummer - + Part-DB1\templates\_navbar_search.html.twig:40 Part-DB1\src\Services\ElementTypeNameGenerator.php:89 @@ -4021,7 +3947,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Leverandør - + Part-DB1\templates\_navbar_search.html.twig:61 Part-DB1\templates\_navbar_search.html.twig:56 @@ -4032,7 +3958,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Reg. Ex. matching - + Part-DB1\templates\_sidebar.html.twig:37 Part-DB1\templates\_sidebar.html.twig:12 @@ -4048,7 +3974,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Projekter - + Part-DB1\templates\_sidebar.html.twig:2 Part-DB1\templates\_sidebar.html.twig:2 @@ -4061,7 +3987,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Handlinger - + Part-DB1\templates\_sidebar.html.twig:6 Part-DB1\templates\_sidebar.html.twig:6 @@ -4074,7 +4000,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Datakilde - + Part-DB1\templates\_sidebar.html.twig:10 Part-DB1\templates\_sidebar.html.twig:10 @@ -4087,7 +4013,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Fabrikant - + Part-DB1\templates\_sidebar.html.twig:11 Part-DB1\templates\_sidebar.html.twig:11 @@ -4100,7 +4026,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Leverandører - + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:213 Part-DB1\src\Controller\AdminPages\BaseAdminController.php:293 @@ -4116,7 +4042,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Download af eksterne data fejlet! - + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:222 Part-DB1\src\Controller\AdminPages\BaseAdminController.php:190 @@ -4126,7 +4052,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Ændringer gemt med succes. - + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:231 Part-DB1\src\Controller\AdminPages\BaseAdminController.php:196 @@ -4136,7 +4062,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Handlinger - + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:302 Part-DB1\src\Controller\AdminPages\BaseAdminController.php:252 @@ -4146,7 +4072,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Element oprettet med succes! - + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:308 Part-DB1\src\Controller\AdminPages\BaseAdminController.php:258 @@ -4156,7 +4082,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Elementet kunne ikke oprettes! Tjek dit input data - + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:399 Part-DB1\src\Controller\AdminPages\BaseAdminController.php:352 @@ -4167,7 +4093,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Element slettet! - + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:401 Part-DB1\src\Controller\UserController.php:109 @@ -4183,7 +4109,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt CSRF-token er ugyldig! Genindlæs denne side, eller kontakt en administrator, hvis problemet fortsætter! - + Part-DB1\src\Controller\LabelController.php:125 @@ -4192,7 +4118,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt ingen elementer fundet. - + Part-DB1\src\Controller\LogController.php:149 Part-DB1\src\Controller\LogController.php:154 @@ -4203,7 +4129,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Elementet blev ikke fundet i databasen! - + Part-DB1\src\Controller\LogController.php:156 Part-DB1\src\Controller\LogController.php:160 @@ -4214,7 +4140,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Komponent rettet tilbage til tidligere version - + Part-DB1\src\Controller\LogController.php:176 Part-DB1\src\Controller\LogController.php:180 @@ -4225,7 +4151,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Komponent gendannet med succes. - + Part-DB1\src\Controller\LogController.php:178 Part-DB1\src\Controller\LogController.php:182 @@ -4236,7 +4162,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Komponent er allerede gendannet! - + Part-DB1\src\Controller\LogController.php:185 Part-DB1\src\Controller\LogController.php:189 @@ -4247,7 +4173,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Komponent slettet med succes - + Part-DB1\src\Controller\LogController.php:187 Part-DB1\src\Controller\LogController.php:191 @@ -4258,7 +4184,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Komponent er allerede blevet slettet - + Part-DB1\src\Controller\LogController.php:194 Part-DB1\src\Controller\LogController.php:198 @@ -4269,7 +4195,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Annullering af ændringerne gennemført - + Part-DB1\src\Controller\LogController.php:196 Part-DB1\src\Controller\LogController.php:200 @@ -4280,7 +4206,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Du skal først gendanne elementet, før du kan fortryde denne ændring! - + Part-DB1\src\Controller\LogController.php:199 Part-DB1\src\Controller\LogController.php:203 @@ -4291,7 +4217,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Denne logtype kan ikke fortrydes! - + Part-DB1\src\Controller\PartController.php:182 Part-DB1\src\Controller\PartController.php:182 @@ -4302,7 +4228,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Ændringer gemt! - + Part-DB1\src\Controller\PartController.php:216 Part-DB1\src\Controller\PartController.php:219 @@ -4312,7 +4238,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Komponent slettet. - + Part-DB1\src\Controller\PartController.php:302 Part-DB1\src\Controller\PartController.php:277 @@ -4325,7 +4251,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Komponenter oprettet med succes! - + Part-DB1\src\Controller\PartController.php:308 Part-DB1\src\Controller\PartController.php:283 @@ -4335,7 +4261,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Fejl ved oprettelse: Tjek dine indtastninger! - + Part-DB1\src\Controller\ScanController.php:68 Part-DB1\src\Controller\ScanController.php:90 @@ -4345,7 +4271,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Ingen element fundet - + Part-DB1\src\Controller\ScanController.php:71 @@ -4354,7 +4280,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Ukendt format! - + Part-DB1\src\Controller\ScanController.php:86 @@ -4363,7 +4289,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Element fundet. - + Part-DB1\src\Controller\SecurityController.php:114 Part-DB1\src\Controller\SecurityController.php:109 @@ -4373,7 +4299,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Brugernavn / e-mail - + Part-DB1\src\Controller\SecurityController.php:131 Part-DB1\src\Controller\SecurityController.php:126 @@ -4383,7 +4309,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Anmodning om password lykkedes! Tjek din e-mail for mere information. - + Part-DB1\src\Controller\SecurityController.php:162 Part-DB1\src\Controller\SecurityController.php:160 @@ -4393,7 +4319,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Brugernavn - + Part-DB1\src\Controller\SecurityController.php:165 Part-DB1\src\Controller\SecurityController.php:163 @@ -4403,7 +4329,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Token - + Part-DB1\src\Controller\SecurityController.php:194 Part-DB1\src\Controller\SecurityController.php:192 @@ -4413,7 +4339,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Brugernavn eller token er ugyldigt! Tjek dine indtastninger. - + Part-DB1\src\Controller\SecurityController.php:196 Part-DB1\src\Controller\SecurityController.php:194 @@ -4423,7 +4349,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Password blev nulstillet. Du kan nu logge ind med det nye password. - + Part-DB1\src\Controller\UserController.php:107 Part-DB1\src\Controller\UserController.php:99 @@ -4433,7 +4359,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Alle to-faktor-godkendelsesmetoder er blevet deaktiveret. - + Part-DB1\src\Controller\UserSettingsController.php:101 Part-DB1\src\Controller\UserSettingsController.php:92 @@ -4443,7 +4369,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Ingen backup-koder er aktiveret! - + Part-DB1\src\Controller\UserSettingsController.php:138 Part-DB1\src\Controller\UserSettingsController.php:132 @@ -4453,7 +4379,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Der er ingen sikkerhedsnøgle med dette ID! - + Part-DB1\src\Controller\UserSettingsController.php:145 Part-DB1\src\Controller\UserSettingsController.php:139 @@ -4463,7 +4389,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Du kan kun slette dine egne sikkerhedsnøgler! - + Part-DB1\src\Controller\UserSettingsController.php:153 Part-DB1\src\Controller\UserSettingsController.php:147 @@ -4473,7 +4399,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Sikkerhedsnøglen blev fjernet. - + Part-DB1\src\Controller\UserSettingsController.php:188 Part-DB1\src\Controller\UserSettingsController.php:180 @@ -4483,7 +4409,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Pålidelige enheder blev slettet. - + Part-DB1\src\Controller\UserSettingsController.php:235 Part-DB1\src\Controller\UserSettingsController.php:226 @@ -4494,7 +4420,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Indstillinger gemt! - + Part-DB1\src\Controller\UserSettingsController.php:297 Part-DB1\src\Controller\UserSettingsController.php:288 @@ -4505,7 +4431,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Password ændret! - + Part-DB1\src\Controller\UserSettingsController.php:317 Part-DB1\src\Controller\UserSettingsController.php:306 @@ -4515,7 +4441,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Godkendelses-app'en blev aktiveret. - + Part-DB1\src\Controller\UserSettingsController.php:328 Part-DB1\src\Controller\UserSettingsController.php:315 @@ -4525,7 +4451,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Godkendelses-app'en er deaktiveret - + Part-DB1\src\Controller\UserSettingsController.php:346 Part-DB1\src\Controller\UserSettingsController.php:332 @@ -4535,7 +4461,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Nye backupkoder blev oprettet. - + Part-DB1\src\DataTables\AttachmentDataTable.php:153 Part-DB1\src\DataTables\AttachmentDataTable.php:153 @@ -4545,7 +4471,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt filstørrelse - + Part-DB1\src\DataTables\AttachmentDataTable.php:183 Part-DB1\src\DataTables\AttachmentDataTable.php:191 @@ -4565,7 +4491,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Sand - + Part-DB1\src\DataTables\AttachmentDataTable.php:184 Part-DB1\src\DataTables\AttachmentDataTable.php:192 @@ -4587,7 +4513,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Falsk - + Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:128 Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:119 @@ -4597,7 +4523,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Slettet - + Part-DB1\src\DataTables\Column\RevertLogColumn.php:57 Part-DB1\src\DataTables\Column\RevertLogColumn.php:60 @@ -4608,7 +4534,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Gendan element - + Part-DB1\src\DataTables\Column\RevertLogColumn.php:63 Part-DB1\src\DataTables\Column\RevertLogColumn.php:66 @@ -4619,7 +4545,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Fortryd ændring - + Part-DB1\src\DataTables\Column\RevertLogColumn.php:83 Part-DB1\src\DataTables\Column\RevertLogColumn.php:86 @@ -4630,7 +4556,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Nulstil element til nuværende status! - + Part-DB1\src\DataTables\LogDataTable.php:173 Part-DB1\src\DataTables\LogDataTable.php:161 @@ -4640,7 +4566,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt ID - + Part-DB1\src\DataTables\LogDataTable.php:178 Part-DB1\src\DataTables\LogDataTable.php:166 @@ -4650,7 +4576,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Tidsstempel - + Part-DB1\src\DataTables\LogDataTable.php:183 Part-DB1\src\DataTables\LogDataTable.php:171 @@ -4660,7 +4586,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Begivenhed - + Part-DB1\src\DataTables\LogDataTable.php:191 Part-DB1\src\DataTables\LogDataTable.php:179 @@ -4670,7 +4596,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Niveau - + Part-DB1\src\DataTables\LogDataTable.php:200 Part-DB1\src\DataTables\LogDataTable.php:188 @@ -4680,7 +4606,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Bruger - + Part-DB1\src\DataTables\LogDataTable.php:213 Part-DB1\src\DataTables\LogDataTable.php:201 @@ -4690,7 +4616,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Måltype - + Part-DB1\src\DataTables\LogDataTable.php:226 Part-DB1\src\DataTables\LogDataTable.php:214 @@ -4700,7 +4626,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Mål - + Part-DB1\src\DataTables\LogDataTable.php:231 Part-DB1\src\DataTables\LogDataTable.php:218 @@ -4711,7 +4637,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Ekstra - + Part-DB1\src\DataTables\PartsDataTable.php:168 Part-DB1\src\DataTables\PartsDataTable.php:116 @@ -4721,7 +4647,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Navn - + Part-DB1\src\DataTables\PartsDataTable.php:178 Part-DB1\src\DataTables\PartsDataTable.php:126 @@ -4731,7 +4657,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt ID - + Part-DB1\src\DataTables\PartsDataTable.php:182 Part-DB1\src\DataTables\PartsDataTable.php:130 @@ -4741,7 +4667,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Beskrivelse - + Part-DB1\src\DataTables\PartsDataTable.php:185 Part-DB1\src\DataTables\PartsDataTable.php:133 @@ -4751,7 +4677,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Kategori - + Part-DB1\src\DataTables\PartsDataTable.php:190 Part-DB1\src\DataTables\PartsDataTable.php:138 @@ -4761,7 +4687,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Footprint - + Part-DB1\src\DataTables\PartsDataTable.php:194 Part-DB1\src\DataTables\PartsDataTable.php:142 @@ -4771,7 +4697,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Fabrikant - + Part-DB1\src\DataTables\PartsDataTable.php:197 Part-DB1\src\DataTables\PartsDataTable.php:145 @@ -4781,7 +4707,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Lagerlokationer - + Part-DB1\src\DataTables\PartsDataTable.php:216 Part-DB1\src\DataTables\PartsDataTable.php:164 @@ -4791,7 +4717,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Antal - + Part-DB1\src\DataTables\PartsDataTable.php:224 Part-DB1\src\DataTables\PartsDataTable.php:172 @@ -4801,7 +4727,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Min. beholdning - + Part-DB1\src\DataTables\PartsDataTable.php:232 Part-DB1\src\DataTables\PartsDataTable.php:180 @@ -4811,13 +4737,13 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Måleenhed - + part.table.partCustomState - Brugerdefineret komponentstatus + Brugerdefineret part/del status - + Part-DB1\src\DataTables\PartsDataTable.php:236 Part-DB1\src\DataTables\PartsDataTable.php:184 @@ -4827,7 +4753,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Tilføjet - + Part-DB1\src\DataTables\PartsDataTable.php:240 Part-DB1\src\DataTables\PartsDataTable.php:188 @@ -4837,7 +4763,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Sidst redigeret - + Part-DB1\src\DataTables\PartsDataTable.php:244 Part-DB1\src\DataTables\PartsDataTable.php:192 @@ -4847,7 +4773,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Gennemgang nødvendig - + Part-DB1\src\DataTables\PartsDataTable.php:251 Part-DB1\src\DataTables\PartsDataTable.php:199 @@ -4857,7 +4783,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Favorit - + Part-DB1\src\DataTables\PartsDataTable.php:258 Part-DB1\src\DataTables\PartsDataTable.php:206 @@ -4867,7 +4793,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Status - + Part-DB1\src\DataTables\PartsDataTable.php:260 Part-DB1\src\DataTables\PartsDataTable.php:262 @@ -4881,7 +4807,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Ukendt - + Part-DB1\src\DataTables\PartsDataTable.php:263 Part-DB1\src\Form\Part\PartBaseType.php:90 @@ -4893,7 +4819,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Meddelt - + Part-DB1\src\DataTables\PartsDataTable.php:264 Part-DB1\src\Form\Part\PartBaseType.php:90 @@ -4905,7 +4831,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Aktiv - + Part-DB1\src\DataTables\PartsDataTable.php:265 Part-DB1\src\Form\Part\PartBaseType.php:90 @@ -4917,7 +4843,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Anbefales ikke til nye designs - + Part-DB1\src\DataTables\PartsDataTable.php:266 Part-DB1\src\Form\Part\PartBaseType.php:90 @@ -4929,7 +4855,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt End of life - + Part-DB1\src\DataTables\PartsDataTable.php:267 Part-DB1\src\Form\Part\PartBaseType.php:90 @@ -4941,7 +4867,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Discontinued - + Part-DB1\src\DataTables\PartsDataTable.php:271 Part-DB1\src\DataTables\PartsDataTable.php:219 @@ -4951,7 +4877,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt MPN - + Part-DB1\src\DataTables\PartsDataTable.php:275 Part-DB1\src\DataTables\PartsDataTable.php:223 @@ -4961,7 +4887,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Vægt - + Part-DB1\src\DataTables\PartsDataTable.php:279 Part-DB1\src\DataTables\PartsDataTable.php:227 @@ -4971,7 +4897,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Tags - + Part-DB1\src\DataTables\PartsDataTable.php:283 Part-DB1\src\DataTables\PartsDataTable.php:231 @@ -4981,7 +4907,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Bilag - + Part-DB1\src\EventSubscriber\UserSystem\LoginSuccessSubscriber.php:82 Part-DB1\src\EventSubscriber\LoginSuccessListener.php:82 @@ -4991,7 +4917,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Login lykkedes - + Part-DB1\src\Form\AdminPages\ImportType.php:77 Part-DB1\src\Form\AdminPages\ImportType.php:77 @@ -5002,7 +4928,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt JSON - + Part-DB1\src\Form\AdminPages\ImportType.php:77 Part-DB1\src\Form\AdminPages\ImportType.php:77 @@ -5013,7 +4939,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt XML - + Part-DB1\src\Form\AdminPages\ImportType.php:77 Part-DB1\src\Form\AdminPages\ImportType.php:77 @@ -5024,7 +4950,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt CSV - + Part-DB1\src\Form\AdminPages\ImportType.php:77 Part-DB1\src\Form\AdminPages\ImportType.php:77 @@ -5035,17 +4961,17 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt YAML - + Part-DB1\src\Form\AdminPages\ImportType.php:124 Part-DB1\src\Form\AdminPages\ImportType.php:124 import.abort_on_validation.help - Hvis denne indstilling er aktiveret, vil hele processen blive afbrudt, hvis der registreres ugyldige data. Hvis denne indstilling ikke er aktiv, ignoreres ugyldige poster, og de andre poster forsøges importeret. + Hvis denne indstilling er aktiveret, vil hele processen blive afbrudt, hvis der registreres ugyldige data. Hvis denne indstilling ikke er aktiv ignoreres ugyldige poster, og de andre poster forsøges importeret. - + Part-DB1\src\Form\AdminPages\ImportType.php:86 Part-DB1\src\Form\AdminPages\ImportType.php:86 @@ -5056,7 +4982,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt CSV-separator - + Part-DB1\src\Form\AdminPages\ImportType.php:93 Part-DB1\src\Form\AdminPages\ImportType.php:93 @@ -5067,7 +4993,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Overordnet element - + Part-DB1\src\Form\AdminPages\ImportType.php:101 Part-DB1\src\Form\AdminPages\ImportType.php:101 @@ -5078,7 +5004,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Fil - + Part-DB1\src\Form\AdminPages\ImportType.php:111 Part-DB1\src\Form\AdminPages\ImportType.php:111 @@ -5089,7 +5015,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Importer også underelementer - + Part-DB1\src\Form\AdminPages\ImportType.php:120 Part-DB1\src\Form\AdminPages\ImportType.php:120 @@ -5100,7 +5026,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Annuller ved ugyldige data - + Part-DB1\src\Form\AdminPages\ImportType.php:132 Part-DB1\src\Form\AdminPages\ImportType.php:132 @@ -5111,7 +5037,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Importer - + Part-DB1\src\Form\AttachmentFormType.php:113 Part-DB1\src\Form\AttachmentFormType.php:109 @@ -5121,7 +5047,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt En vedhæftet fil, der er markeret som privat, kan kun tilgås af autoriseret bruger som har de relevante tilladelser. Når denne indstilling er aktiv, genereres der ikke miniaturebilleder, og adgangen til filen er langsommere. - + Part-DB1\src\Form\AttachmentFormType.php:127 Part-DB1\src\Form\AttachmentFormType.php:123 @@ -5131,7 +5057,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Her kan du enten indtaste en URL til en ekstern fil, eller du kan søge efter de indbyggede ressourcer ved at indtaste et nøgleord (f.eks. footprint). - + Part-DB1\src\Form\AttachmentFormType.php:82 Part-DB1\src\Form\AttachmentFormType.php:79 @@ -5141,7 +5067,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Navn - + Part-DB1\src\Form\AttachmentFormType.php:85 Part-DB1\src\Form\AttachmentFormType.php:82 @@ -5151,7 +5077,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Bilagstype - + Part-DB1\src\Form\AttachmentFormType.php:94 Part-DB1\src\Form\AttachmentFormType.php:91 @@ -5161,7 +5087,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Vis i tabel - + Part-DB1\src\Form\AttachmentFormType.php:105 Part-DB1\src\Form\AttachmentFormType.php:102 @@ -5171,7 +5097,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Privat bilag - + Part-DB1\src\Form\AttachmentFormType.php:119 Part-DB1\src\Form\AttachmentFormType.php:115 @@ -5181,7 +5107,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt URL - + Part-DB1\src\Form\AttachmentFormType.php:133 Part-DB1\src\Form\AttachmentFormType.php:129 @@ -5191,7 +5117,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Download eksternt data - + Part-DB1\src\Form\AttachmentFormType.php:146 Part-DB1\src\Form\AttachmentFormType.php:142 @@ -5201,7 +5127,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Upload fil - + Part-DB1\src\Form\LabelOptionsType.php:68 Part-DB1\src\Services\ElementTypeNameGenerator.php:86 @@ -5211,7 +5137,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Komponent - + Part-DB1\src\Form\LabelOptionsType.php:68 Part-DB1\src\Services\ElementTypeNameGenerator.php:87 @@ -5221,7 +5147,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Komponentbeholdning - + Part-DB1\src\Form\LabelOptionsType.php:78 @@ -5230,7 +5156,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Ingen - + Part-DB1\src\Form\LabelOptionsType.php:78 @@ -5239,7 +5165,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt QR-kode (anbefalet) - + Part-DB1\src\Form\LabelOptionsType.php:78 @@ -5248,7 +5174,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Kode 128 (anbefalet) - + Part-DB1\src\Form\LabelOptionsType.php:78 @@ -5257,7 +5183,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Kode 39 (anbefalet) - + Part-DB1\src\Form\LabelOptionsType.php:78 @@ -5266,7 +5192,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Kode 93 - + Part-DB1\src\Form\LabelOptionsType.php:78 @@ -5275,7 +5201,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Datamatrix - + Part-DB1\src\Form\LabelOptionsType.php:122 @@ -5284,7 +5210,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt HTML - + Part-DB1\src\Form\LabelOptionsType.php:122 @@ -5293,7 +5219,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Twig - + Part-DB1\src\Form\LabelOptionsType.php:126 @@ -5302,7 +5228,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Hvis du vælger Twig her, vil indholdsfeltet blive fortolket som en Twig-skabelon. Yderligere hjælp er tilgængelig i <a href="https://twig.symfony.com/doc/3.x/templates.html">Twig Dokumentation</a> og <a href="https://docs.part-db.dk/usage/labels.html#twig-mode">Wiki</a>. - + Part-DB1\src\Form\LabelOptionsType.php:47 @@ -5311,7 +5237,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Størrelse - + Part-DB1\src\Form\LabelOptionsType.php:66 @@ -5320,7 +5246,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Elementtype - + Part-DB1\src\Form\LabelOptionsType.php:75 @@ -5329,7 +5255,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Stregkodetype - + Part-DB1\src\Form\LabelOptionsType.php:102 @@ -5338,7 +5264,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Indhold - + Part-DB1\src\Form\LabelOptionsType.php:111 @@ -5347,7 +5273,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Yderligere CSS - + Part-DB1\src\Form\LabelOptionsType.php:120 @@ -5356,7 +5282,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Parser mode - + Part-DB1\src\Form\LabelOptionsType.php:51 @@ -5365,7 +5291,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Bredde - + Part-DB1\src\Form\LabelOptionsType.php:60 @@ -5374,7 +5300,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Højde - + Part-DB1\src\Form\LabelSystem\LabelDialogType.php:49 @@ -5383,7 +5309,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Du kan her angive flere ID'er (f.eks. 1, 2, 3) og/eller et interval her for at generere stregkoder for flere elementer på én gang. - + Part-DB1\src\Form\LabelSystem\LabelDialogType.php:46 @@ -5392,7 +5318,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Element ID'ere - + Part-DB1\src\Form\LabelSystem\LabelDialogType.php:59 @@ -5401,7 +5327,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Opdatering - + Part-DB1\src\Form\LabelSystem\ScanDialogType.php:36 @@ -5410,7 +5336,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Input - + Part-DB1\src\Form\LabelSystem\ScanDialogType.php:44 @@ -5419,7 +5345,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Afsend - + Part-DB1\src\Form\ParameterType.php:41 @@ -5428,7 +5354,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt F.eks. DC Current Gain - + Part-DB1\src\Form\ParameterType.php:50 @@ -5437,7 +5363,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt F.eks. h_[FE] - + Part-DB1\src\Form\ParameterType.php:60 @@ -5446,7 +5372,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt f.eks. Test specifikationer - + Part-DB1\src\Form\ParameterType.php:71 @@ -5455,7 +5381,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt f.eks. 350 - + Part-DB1\src\Form\ParameterType.php:82 @@ -5464,7 +5390,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt f.eks. 100 - + Part-DB1\src\Form\ParameterType.php:93 @@ -5473,7 +5399,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt f.eks. 200 - + Part-DB1\src\Form\ParameterType.php:103 @@ -5482,7 +5408,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt f.eks. V - + Part-DB1\src\Form\ParameterType.php:114 @@ -5491,7 +5417,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt f.eks. tekniske specifikationer - + Part-DB1\src\Form\Part\OrderdetailType.php:72 Part-DB1\src\Form\Part\OrderdetailType.php:75 @@ -5501,7 +5427,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Leverandør varenummer - + Part-DB1\src\Form\Part\OrderdetailType.php:81 Part-DB1\src\Form\Part\OrderdetailType.php:84 @@ -5511,7 +5437,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Leverandør - + Part-DB1\src\Form\Part\OrderdetailType.php:87 Part-DB1\src\Form\Part\OrderdetailType.php:90 @@ -5521,7 +5447,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Link til tilbud - + Part-DB1\src\Form\Part\OrderdetailType.php:93 Part-DB1\src\Form\Part\OrderdetailType.php:96 @@ -5531,7 +5457,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Ikke længere tilgængelig - + Part-DB1\src\Form\Part\OrderdetailType.php:75 Part-DB1\src\Form\Part\OrderdetailType.php:78 @@ -5541,7 +5467,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt f.eks. BC 547 - + Part-DB1\src\Form\Part\PartBaseType.php:101 Part-DB1\src\Form\Part\PartBaseType.php:99 @@ -5551,7 +5477,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Navn - + Part-DB1\src\Form\Part\PartBaseType.php:109 Part-DB1\src\Form\Part\PartBaseType.php:107 @@ -5561,7 +5487,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Beskrivelse - + Part-DB1\src\Form\Part\PartBaseType.php:120 Part-DB1\src\Form\Part\PartBaseType.php:118 @@ -5571,7 +5497,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Minimumsmængde - + Part-DB1\src\Form\Part\PartBaseType.php:129 Part-DB1\src\Form\Part\PartBaseType.php:127 @@ -5581,7 +5507,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Kategori - + Part-DB1\src\Form\Part\PartBaseType.php:135 Part-DB1\src\Form\Part\PartBaseType.php:133 @@ -5591,7 +5517,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Footprint - + Part-DB1\src\Form\Part\PartBaseType.php:142 Part-DB1\src\Form\Part\PartBaseType.php:140 @@ -5601,7 +5527,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Tags - + Part-DB1\src\Form\Part\PartBaseType.php:154 Part-DB1\src\Form\Part\PartBaseType.php:152 @@ -5611,7 +5537,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Fabrikant - + Part-DB1\src\Form\Part\PartBaseType.php:161 Part-DB1\src\Form\Part\PartBaseType.php:159 @@ -5621,7 +5547,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Link til produktside - + Part-DB1\src\Form\Part\PartBaseType.php:167 Part-DB1\src\Form\Part\PartBaseType.php:165 @@ -5631,7 +5557,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Fabrikant partnummer - + Part-DB1\src\Form\Part\PartBaseType.php:173 Part-DB1\src\Form\Part\PartBaseType.php:171 @@ -5641,7 +5567,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Fabrikantstatus - + Part-DB1\src\Form\Part\PartBaseType.php:181 Part-DB1\src\Form\Part\PartBaseType.php:179 @@ -5651,7 +5577,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Gennemgang nødvendig - + Part-DB1\src\Form\Part\PartBaseType.php:189 Part-DB1\src\Form\Part\PartBaseType.php:187 @@ -5661,7 +5587,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Favorit - + Part-DB1\src\Form\Part\PartBaseType.php:197 Part-DB1\src\Form\Part\PartBaseType.php:195 @@ -5671,7 +5597,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Vægt - + Part-DB1\src\Form\Part\PartBaseType.php:203 Part-DB1\src\Form\Part\PartBaseType.php:201 @@ -5681,13 +5607,13 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Måleenhed - + part.edit.partCustomState - Brugerdefineret deltilstand + Brugerdefineret part status - + Part-DB1\src\Form\Part\PartBaseType.php:212 Part-DB1\src\Form\Part\PartBaseType.php:210 @@ -5697,7 +5623,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Notater - + Part-DB1\src\Form\Part\PartBaseType.php:250 Part-DB1\src\Form\Part\PartBaseType.php:246 @@ -5707,7 +5633,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Miniaturebillede - + Part-DB1\src\Form\Part\PartBaseType.php:295 Part-DB1\src\Form\Part\PartBaseType.php:276 @@ -5718,7 +5644,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Anvend ændringer - + Part-DB1\src\Form\Part\PartBaseType.php:296 Part-DB1\src\Form\Part\PartBaseType.php:277 @@ -5729,7 +5655,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Annuller ændringer - + Part-DB1\src\Form\Part\PartBaseType.php:105 Part-DB1\src\Form\Part\PartBaseType.php:103 @@ -5739,7 +5665,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt f.eks. BC547 - + Part-DB1\src\Form\Part\PartBaseType.php:115 Part-DB1\src\Form\Part\PartBaseType.php:113 @@ -5749,7 +5675,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt f.eks. NPN 45V, 0,1A 0,5W - + Part-DB1\src\Form\Part\PartBaseType.php:123 Part-DB1\src\Form\Part\PartBaseType.php:121 @@ -5759,7 +5685,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt f.eks. 1 - + Part-DB1\src\Form\Part\PartLotType.php:69 Part-DB1\src\Form\Part\PartLotType.php:69 @@ -5769,7 +5695,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Beskrivelse - + Part-DB1\src\Form\Part\PartLotType.php:78 Part-DB1\src\Form\Part\PartLotType.php:78 @@ -5779,7 +5705,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Lagerlokation - + Part-DB1\src\Form\Part\PartLotType.php:89 Part-DB1\src\Form\Part\PartLotType.php:89 @@ -5789,7 +5715,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Antal - + Part-DB1\src\Form\Part\PartLotType.php:98 Part-DB1\src\Form\Part\PartLotType.php:97 @@ -5799,7 +5725,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Ukendt antal - + Part-DB1\src\Form\Part\PartLotType.php:109 Part-DB1\src\Form\Part\PartLotType.php:108 @@ -5809,7 +5735,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt skal fyldes op igen - + Part-DB1\src\Form\Part\PartLotType.php:120 Part-DB1\src\Form\Part\PartLotType.php:119 @@ -5819,7 +5745,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Udløbsdato - + Part-DB1\src\Form\Part\PartLotType.php:128 Part-DB1\src\Form\Part\PartLotType.php:125 @@ -5829,7 +5755,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Bemærk - + Part-DB1\src\Form\Permissions\PermissionsType.php:99 Part-DB1\src\Form\Permissions\PermissionsType.php:99 @@ -5839,7 +5765,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Forskellige - + Part-DB1\src\Form\TFAGoogleSettingsType.php:97 Part-DB1\src\Form\TFAGoogleSettingsType.php:97 @@ -5849,7 +5775,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Aktiver godkendelses-app - + Part-DB1\src\Form\TFAGoogleSettingsType.php:101 Part-DB1\src\Form\TFAGoogleSettingsType.php:101 @@ -5859,7 +5785,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Deaktiver godkendelses-app - + Part-DB1\src\Form\TFAGoogleSettingsType.php:74 Part-DB1\src\Form\TFAGoogleSettingsType.php:74 @@ -5869,7 +5795,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Verifikationskode - + Part-DB1\src\Form\UserSettingsType.php:108 Part-DB1\src\Form\UserSettingsType.php:108 @@ -5880,7 +5806,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Tidszone - + Part-DB1\src\Form\UserSettingsType.php:133 Part-DB1\src\Form\UserSettingsType.php:132 @@ -5890,7 +5816,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Foretrukken valuta - + Part-DB1\src\Form\UserSettingsType.php:140 Part-DB1\src\Form\UserSettingsType.php:139 @@ -5901,7 +5827,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Anvend ændringer - + Part-DB1\src\Form\UserSettingsType.php:141 Part-DB1\src\Form\UserSettingsType.php:140 @@ -5912,7 +5838,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Kasser ændringer - + Part-DB1\src\Form\UserSettingsType.php:104 Part-DB1\src\Form\UserSettingsType.php:104 @@ -5923,7 +5849,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Serversprog - + Part-DB1\src\Form\UserSettingsType.php:115 Part-DB1\src\Form\UserSettingsType.php:115 @@ -5934,7 +5860,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Server tidszone - + Part-DB1\src\Services\ElementTypeNameGenerator.php:79 Part-DB1\src\Services\ElementTypeNameGenerator.php:79 @@ -5944,7 +5870,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Bilag - + Part-DB1\src\Services\ElementTypeNameGenerator.php:81 Part-DB1\src\Services\ElementTypeNameGenerator.php:81 @@ -5954,7 +5880,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Bilagstype - + Part-DB1\src\Services\ElementTypeNameGenerator.php:82 Part-DB1\src\Services\ElementTypeNameGenerator.php:82 @@ -5964,7 +5890,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Projekt - + Part-DB1\src\Services\ElementTypeNameGenerator.php:85 Part-DB1\src\Services\ElementTypeNameGenerator.php:85 @@ -5974,13 +5900,13 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Måleenhed - + part_custom_state.label - Brugerdefineret deltilstand + Brugerdefineret part status - + Part-DB1\src\Services\ElementTypeNameGenerator.php:90 Part-DB1\src\Services\ElementTypeNameGenerator.php:90 @@ -5990,7 +5916,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Valuta - + Part-DB1\src\Services\ElementTypeNameGenerator.php:91 Part-DB1\src\Services\ElementTypeNameGenerator.php:91 @@ -6000,7 +5926,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Bestillingsoplysninger - + Part-DB1\src\Services\ElementTypeNameGenerator.php:92 Part-DB1\src\Services\ElementTypeNameGenerator.php:92 @@ -6010,7 +5936,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Prisinformation - + Part-DB1\src\Services\ElementTypeNameGenerator.php:94 Part-DB1\src\Services\ElementTypeNameGenerator.php:94 @@ -6020,7 +5946,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Rediger - + Part-DB1\src\Services\ElementTypeNameGenerator.php:95 @@ -6029,7 +5955,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Parameter - + Part-DB1\src\Services\ElementTypeNameGenerator.php:96 @@ -6038,7 +5964,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Labelprofil - + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:176 Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:161 @@ -6049,7 +5975,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Ukendt - + Part-DB1\src\Services\MarkdownParser.php:73 Part-DB1\src\Services\MarkdownParser.php:73 @@ -6059,7 +5985,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Indlæs Markdown. Hvis dette varer ved i lang tid, så prøv at indlæse hjemmesiden igen! - + Part-DB1\src\Services\PasswordResetManager.php:98 Part-DB1\src\Services\PasswordResetManager.php:98 @@ -6069,7 +5995,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Password nulstillet for din Part-DB-konto - + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 @@ -6078,7 +6004,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Værktøjer - + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:107 @@ -6089,7 +6015,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Rediger - + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:110 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 @@ -6100,7 +6026,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Vis - + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:111 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 @@ -6110,7 +6036,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt System - + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:123 @@ -6119,7 +6045,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Labeldialog - + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:130 @@ -6128,7 +6054,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Scanner - + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:149 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:126 @@ -6136,10 +6062,10 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt tree.tools.edit.attachment_types - Bilagstype + Bilagstyper - + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:155 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:132 @@ -6150,7 +6076,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Kategorier - + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:161 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:138 @@ -6161,7 +6087,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Projekter - + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:167 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:144 @@ -6172,7 +6098,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Leverandører - + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:173 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:150 @@ -6183,7 +6109,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Fabrikanter - + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:179 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:156 @@ -6193,7 +6119,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Lagerlokationer - + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:185 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:162 @@ -6203,42 +6129,42 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Footprints - + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:191 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:168 tree.tools.edit.currency - Valuta + Valutaer - + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:174 tree.tools.edit.measurement_unit - Måleenhed + Måleenheder - + tree.tools.edit.part_custom_state - Brugerdefineret komponenttilstand + [[Part_custom_state]] - + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 tree.tools.edit.label_profile - Labelprofil + Labelprofiler - + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:209 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:180 @@ -6248,7 +6174,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Ny komponent - + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:226 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 @@ -6259,7 +6185,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Vis alle dele - + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:232 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 @@ -6269,7 +6195,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Bilag - + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:239 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:210 @@ -6280,7 +6206,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Statistik - + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:258 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:229 @@ -6290,7 +6216,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Bruger - + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:264 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:235 @@ -6300,7 +6226,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Grupper - + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:271 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:242 @@ -6311,7 +6237,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Hændelseslog - + Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 @@ -6322,7 +6248,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Nyt element - + Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 obsolete @@ -6332,7 +6258,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Rediger - + Part-DB1\templates\_navbar.html.twig:27 templates\base.html.twig:88 @@ -6343,7 +6269,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Scan stregkode - + Part-DB1\src\Form\UserSettingsType.php:119 src\Form\UserSettingsType.php:49 @@ -6354,7 +6280,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Tema - + Part-DB1\src\Form\UserSettingsType.php:129 src\Form\UserSettingsType.php:50 @@ -6365,7 +6291,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Server Tema - + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:100 new @@ -6376,7 +6302,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt IP: - + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:128 Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:150 @@ -6390,7 +6316,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Fortryd ændringer - + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:130 Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:152 @@ -6404,7 +6330,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Element nulstillet - + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:139 new @@ -6415,7 +6341,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Gammelt lager - + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:160 new @@ -6426,7 +6352,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Gammelt navn - + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:184 new @@ -6437,7 +6363,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Ændrede egenskaber - + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:198 new @@ -6448,7 +6374,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Kommentar - + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:214 new @@ -6459,7 +6385,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Slettet element - + templates\base.html.twig:81 obsolete @@ -6470,7 +6396,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Kom nu! - + templates\base.html.twig:109 obsolete @@ -6481,7 +6407,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Engelsk - + templates\base.html.twig:112 obsolete @@ -6492,7 +6418,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Tysk - + obsolete obsolete @@ -6502,7 +6428,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Dit password skal ændres - + obsolete obsolete @@ -6512,7 +6438,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Bilagstype - + obsolete obsolete @@ -6522,7 +6448,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt forbundet element - + obsolete obsolete @@ -6532,7 +6458,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Billede? - + obsolete obsolete @@ -6542,7 +6468,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt 3D-model? - + obsolete obsolete @@ -6552,7 +6478,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Indbygget ressource? - + obsolete obsolete @@ -6562,7 +6488,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt f.eks. brugbar til strømforsyning - + obsolete obsolete @@ -6572,7 +6498,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Generer nye backup-koder - + obsolete obsolete @@ -6582,7 +6508,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Et element kan ikke være overordnet for sig selv! - + obsolete obsolete @@ -6592,7 +6518,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Et underordnet element kan ikke være det overordnede element! - + obsolete obsolete @@ -6602,7 +6528,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Lagerpladsen er fuld, så nye dele kan ikke tilføjes. - + obsolete obsolete @@ -6612,7 +6538,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Opbevaringsstedet er markeret som "kun eksisterende dele", så nye dele kan ikke tilføjes. - + obsolete obsolete @@ -6622,7 +6548,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Lagerlokationen er markeret som "Kun én komponent", så en ny komponent kan ikke tilføjes. - + obsolete obsolete @@ -6632,7 +6558,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Komponenten er i øjeblikket under produktion og vil bliver produceret inden for en overskuelig fremtid. - + obsolete obsolete @@ -6642,7 +6568,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Komponenten er blevet annonceret, men er endnu ikke tilgængelig. - + obsolete obsolete @@ -6652,7 +6578,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Komponenten produceres ikke længere. - + obsolete obsolete @@ -6662,7 +6588,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Produktion af ​​komponenten vil snart ophøre. - + obsolete obsolete @@ -6672,7 +6598,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Komponenten fremstilles stadig. Dog anbefales den ikke anvendt længere til nye designs. - + obsolete obsolete @@ -6682,7 +6608,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Produktionsstatus er ukendt. - + obsolete obsolete @@ -6692,7 +6618,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Succes - + obsolete obsolete @@ -6702,7 +6628,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Fejl - + obsolete obsolete @@ -6712,7 +6638,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Advarsel - + obsolete obsolete @@ -6722,7 +6648,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Varsel - + obsolete obsolete @@ -6732,7 +6658,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Info - + obsolete obsolete @@ -6742,7 +6668,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Du kan ikke fjerne din egen tilladelse til at redigere tilladelser. Dette sikrer dig imod ved et uheld at låse dig ude! - + obsolete obsolete @@ -6752,7 +6678,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Tilladte filtyper - + obsolete obsolete @@ -6762,7 +6688,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Her kan du angive en kommasepareret liste over filtypenavne eller mime-typer, som en uploadet fil af denne type skal have. For at tillade alle understøttede billedfiler kan image/* benyttes. - + obsolete obsolete @@ -6772,7 +6698,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt f.eks. .txt, application/pdf, image/* - + src\Form\PartType.php:63 obsolete @@ -6783,7 +6709,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt f.eks. BC547 - + obsolete obsolete @@ -6793,7 +6719,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Kan ikke vælges - + obsolete obsolete @@ -6803,7 +6729,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Hvis denne mulighed er aktiveret, kan dette element ikke tildeles som en egenskab til nogen komponent. Nyttigt, for eksempel hvis dette element kun er beregnet til rene sorteringsformål. - + obsolete obsolete @@ -6813,7 +6739,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt BBCode kan bruges her (f.eks. [b]Fed[/b]) - + obsolete obsolete @@ -6823,7 +6749,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Opret element - + obsolete obsolete @@ -6833,7 +6759,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Gem - + obsolete obsolete @@ -6843,7 +6769,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Deaktiver Footprints - + obsolete obsolete @@ -6853,7 +6779,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Når denne indstilling er aktiveret, er egenskaben footprint deaktiveret for alle komponenter i denne kategori. - + obsolete obsolete @@ -6863,7 +6789,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Deaktiver fabrikant - + obsolete obsolete @@ -6873,7 +6799,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Når denne indstilling er aktiveret, er fakbrikantegenskaben deaktiveret for alle komponenter i denne kategori. - + obsolete obsolete @@ -6883,7 +6809,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Deaktiver automatiske databladlinks - + obsolete obsolete @@ -6893,7 +6819,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Hvis denne mulighed er aktiveret, vil der ikke blive genereret automatiske databladlinks for komponenter med denne kategori. - + obsolete obsolete @@ -6903,7 +6829,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Deaktiver egenskaber - + obsolete obsolete @@ -6913,7 +6839,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Hvis denne indstilling er aktiveret, deaktiveres komponentegenskaberne for alle komponenter i denne kategori. - + obsolete obsolete @@ -6923,7 +6849,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Ledetråd for navn - + obsolete obsolete @@ -6933,7 +6859,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt f.eks. 100nF - + obsolete obsolete @@ -6943,13 +6869,13 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Navnefilter - + category.edit.part_ipn_prefix - IPN-komponentförstavelse + Part IPN Præfiks - + obsolete obsolete @@ -6959,7 +6885,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Standardbeskrivelse - + obsolete obsolete @@ -6969,7 +6895,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt f.eks. kondensator, 10 mm x 10 mm, SMD - + obsolete obsolete @@ -6979,7 +6905,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Standardkommentar - + obsolete obsolete @@ -6989,7 +6915,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Adresse - + obsolete obsolete @@ -7000,7 +6926,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt 3140 Eksempelby - + obsolete obsolete @@ -7010,7 +6936,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Telefonnummer - + obsolete obsolete @@ -7020,7 +6946,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt f. eks. +45 1234 4321 - + obsolete obsolete @@ -7030,7 +6956,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Faxnummer - + obsolete obsolete @@ -7040,7 +6966,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt e-mail - + obsolete obsolete @@ -7050,7 +6976,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt f.eks. kontakt@foo.bar - + obsolete obsolete @@ -7060,7 +6986,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Webside - + obsolete obsolete @@ -7070,7 +6996,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt https://www.foo.bar - + obsolete obsolete @@ -7080,17 +7006,17 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Produkt URL - + obsolete obsolete company.edit.auto_product_url.help - Dette felt benyttes til at knytte linke til en fabrikants komponentside Der vil %PARTNUMBER% så blive erstattet med ordrenummeret. + Dette felt benyttes til at knytte link til en fabrikants komponentside Der vil %PARTNUMBER% så blive erstattet med ordrenummeret. - + obsolete obsolete @@ -7100,7 +7026,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt https://foo.bar/product/%PARTNUMBER% - + obsolete obsolete @@ -7110,7 +7036,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt ISO-kode - + obsolete obsolete @@ -7120,7 +7046,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Valutakurs - + obsolete obsolete @@ -7130,7 +7056,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt 3D-model - + obsolete obsolete @@ -7140,7 +7066,7 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt Input - + obsolete obsolete @@ -7155,7 +7081,7 @@ Element 2 Element 3 - + obsolete obsolete @@ -7165,7 +7091,7 @@ Element 3 Opret - + obsolete obsolete @@ -7175,7 +7101,7 @@ Element 3 er heltal - + obsolete obsolete @@ -7185,7 +7111,7 @@ Element 3 Når denne option er aktiveret, vil alle mængder i denne enhed blive afrundet til hele tal. - + obsolete obsolete @@ -7195,7 +7121,7 @@ Element 3 Benyt SI prefix - + obsolete obsolete @@ -7205,7 +7131,7 @@ Element 3 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 @@ -7215,7 +7141,7 @@ Element 3 Enhedssymbol - + obsolete obsolete @@ -7225,7 +7151,7 @@ Element 3 f.eks. m - + obsolete obsolete @@ -7235,7 +7161,7 @@ Element 3 Lagerlokation er fyldt op - + obsolete obsolete @@ -7245,7 +7171,7 @@ Element 3 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 @@ -7255,7 +7181,7 @@ Element 3 Kun eksisterende komponenter - + obsolete obsolete @@ -7265,7 +7191,7 @@ Element 3 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 @@ -7275,7 +7201,7 @@ Element 3 Kun en komponent - + obsolete obsolete @@ -7285,7 +7211,7 @@ Element 3 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 @@ -7295,7 +7221,7 @@ Element 3 Lagertype - + obsolete obsolete @@ -7305,7 +7231,7 @@ Element 3 Her kan du vælge en måleenhed, som en komponent skal have, så den kan opbevares på denne lagerplads. - + obsolete obsolete @@ -7315,7 +7241,7 @@ Element 3 Standardvaluta - + obsolete obsolete @@ -7325,7 +7251,7 @@ Element 3 Forsendelsesomkostninger - + obsolete obsolete @@ -7335,7 +7261,7 @@ Element 3 f.eks. j.doe - + obsolete obsolete @@ -7345,7 +7271,7 @@ Element 3 f.eks. John - + obsolete obsolete @@ -7355,7 +7281,7 @@ Element 3 f.eks. Doe - + obsolete obsolete @@ -7365,7 +7291,7 @@ Element 3 j.doe@ecorp.com - + obsolete obsolete @@ -7375,7 +7301,7 @@ Element 3 f.eks. Udvikling - + obsolete obsolete @@ -7385,17 +7311,17 @@ Element 3 Nyt pasword - + obsolete obsolete user.settings.pw_confirm.label - bekræft nyt password + Bekræft nyt password - + obsolete obsolete @@ -7405,7 +7331,7 @@ Element 3 Bruger skal ændre password - + obsolete obsolete @@ -7415,7 +7341,7 @@ Element 3 Bruger deaktiveret (login ikke muligt) - + obsolete obsolete @@ -7425,7 +7351,7 @@ Element 3 Opret bruger - + obsolete obsolete @@ -7435,7 +7361,7 @@ Element 3 Gem - + obsolete obsolete @@ -7445,7 +7371,7 @@ Element 3 Fortryd ændringer - + templates\Parts\show_part_info.html.twig:194 obsolete @@ -7456,7 +7382,7 @@ Element 3 Tilføj - + src\Form\PartType.php:83 obsolete @@ -7467,7 +7393,7 @@ Element 3 Producentlink - + obsolete obsolete @@ -7477,7 +7403,7 @@ Element 3 Komponenter - + obsolete obsolete @@ -7487,7 +7413,7 @@ Element 3 Datastrukturer - + obsolete obsolete @@ -7497,17 +7423,7 @@ Element 3 System - - - obsolete - obsolete - - - perm.parts - Generelt - - - + obsolete obsolete @@ -7517,7 +7433,7 @@ Element 3 Vis - + obsolete obsolete @@ -7527,7 +7443,7 @@ Element 3 Ret - + obsolete obsolete @@ -7537,7 +7453,7 @@ Element 3 Opret - + obsolete obsolete @@ -7547,7 +7463,7 @@ Element 3 Skift kategori - + obsolete obsolete @@ -7557,7 +7473,7 @@ Element 3 Slet - + obsolete obsolete @@ -7567,7 +7483,7 @@ Element 3 Søg - + obsolete obsolete @@ -7577,7 +7493,7 @@ Element 3 Liste over alle komponenter - + obsolete obsolete @@ -7587,7 +7503,7 @@ Element 3 Komponenter uden prisinformation - + obsolete obsolete @@ -7597,7 +7513,7 @@ Element 3 Vis udgåede komponenter - + obsolete obsolete @@ -7607,7 +7523,7 @@ Element 3 Vis komponenter med ukendt lagerstatus - + obsolete obsolete @@ -7617,7 +7533,7 @@ Element 3 Ret favoritstatus - + obsolete obsolete @@ -7627,7 +7543,7 @@ Element 3 Vis favoritkomponenter - + obsolete obsolete @@ -7637,7 +7553,7 @@ Element 3 Vis nyligt redigerede/tilføjede komponenter - + obsolete obsolete @@ -7647,7 +7563,7 @@ Element 3 Vis den sidste bruger, der redigerede - + obsolete obsolete @@ -7657,7 +7573,7 @@ Element 3 Se historik - + obsolete obsolete @@ -7667,7 +7583,7 @@ Element 3 Navn - + obsolete obsolete @@ -7677,7 +7593,7 @@ Element 3 Beskrivelse - + obsolete obsolete @@ -7687,7 +7603,7 @@ Element 3 På lager - + obsolete obsolete @@ -7697,7 +7613,7 @@ Element 3 mindste lager - + obsolete obsolete @@ -7707,7 +7623,7 @@ Element 3 Noter - + obsolete obsolete @@ -7717,7 +7633,7 @@ Element 3 Lagerlokation - + obsolete obsolete @@ -7727,7 +7643,7 @@ Element 3 Fabrikant - + obsolete obsolete @@ -7737,7 +7653,7 @@ Element 3 Ordreinformation - + obsolete obsolete @@ -7747,7 +7663,7 @@ Element 3 Pris - + obsolete obsolete @@ -7757,7 +7673,7 @@ Element 3 Bilag - + obsolete obsolete @@ -7767,17 +7683,7 @@ Element 3 Ordrer - - - obsolete - obsolete - - - perm.storelocations - Lagerlokationer - - - + obsolete obsolete @@ -7787,7 +7693,7 @@ Element 3 Flyt - + obsolete obsolete @@ -7797,67 +7703,7 @@ Element 3 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 @@ -7867,7 +7713,7 @@ Element 3 Import - + obsolete obsolete @@ -7877,7 +7723,7 @@ Element 3 Labels - + obsolete obsolete @@ -7887,7 +7733,7 @@ Element 3 Modstandsberegner - + obsolete obsolete @@ -7897,7 +7743,7 @@ Element 3 Footprints - + obsolete obsolete @@ -7907,7 +7753,7 @@ Element 3 IC logoer - + obsolete obsolete @@ -7917,7 +7763,7 @@ Element 3 Statistik - + obsolete obsolete @@ -7927,7 +7773,7 @@ Element 3 Ret tilladelser - + obsolete obsolete @@ -7937,7 +7783,7 @@ Element 3 Ret brugernavn - + obsolete obsolete @@ -7947,7 +7793,7 @@ Element 3 Skift gruppe - + obsolete obsolete @@ -7957,7 +7803,7 @@ Element 3 Ret information - + obsolete obsolete @@ -7967,7 +7813,7 @@ Element 3 Ret tilladelser - + obsolete obsolete @@ -7977,7 +7823,7 @@ Element 3 Skift password - + obsolete obsolete @@ -7987,7 +7833,7 @@ Element 3 Ret brugerindstillinger - + obsolete obsolete @@ -7997,7 +7843,7 @@ Element 3 Vis status - + obsolete obsolete @@ -8007,7 +7853,7 @@ Element 3 Opdater database - + obsolete obsolete @@ -8017,7 +7863,7 @@ Element 3 Vis indstillinger - + obsolete obsolete @@ -8027,7 +7873,7 @@ Element 3 Ret indstillinger - + obsolete obsolete @@ -8037,7 +7883,7 @@ Element 3 Vis konfiguration - + obsolete obsolete @@ -8047,7 +7893,7 @@ Element 3 Ret konfiguration - + obsolete obsolete @@ -8057,7 +7903,7 @@ Element 3 Server info - + obsolete obsolete @@ -8067,7 +7913,7 @@ Element 3 Brug fejlfindingsværktøjer - + obsolete obsolete @@ -8077,7 +7923,7 @@ Element 3 Vis logs - + obsolete obsolete @@ -8087,7 +7933,7 @@ Element 3 Slet log - + obsolete obsolete @@ -8097,7 +7943,7 @@ Element 3 Ret info - + obsolete obsolete @@ -8107,7 +7953,7 @@ Element 3 Ret brugernavn - + obsolete obsolete @@ -8117,7 +7963,7 @@ Element 3 Vis tilladelser - + obsolete obsolete @@ -8127,7 +7973,7 @@ Element 3 Se log - + obsolete obsolete @@ -8137,7 +7983,7 @@ Element 3 Opret labels - + obsolete obsolete @@ -8147,7 +7993,7 @@ Element 3 Ret indstillinger - + obsolete obsolete @@ -8157,7 +8003,7 @@ Element 3 Slet profiler - + obsolete obsolete @@ -8167,7 +8013,7 @@ Element 3 Ret profiler - + obsolete obsolete @@ -8177,7 +8023,7 @@ Element 3 Værktøjer - + obsolete obsolete @@ -8187,7 +8033,7 @@ Element 3 Grupper - + obsolete obsolete @@ -8197,7 +8043,7 @@ Element 3 Brugere - + obsolete obsolete @@ -8207,7 +8053,7 @@ Element 3 Database - + obsolete obsolete @@ -8217,7 +8063,7 @@ Element 3 Instilinger - + obsolete obsolete @@ -8227,7 +8073,7 @@ Element 3 System - + obsolete obsolete @@ -8237,7 +8083,7 @@ Element 3 Ret din egen bruger - + obsolete obsolete @@ -8247,7 +8093,7 @@ Element 3 Labels - + obsolete obsolete @@ -8257,7 +8103,7 @@ Element 3 Kategori - + obsolete obsolete @@ -8267,7 +8113,7 @@ Element 3 Mindstebeholdning - + obsolete obsolete @@ -8277,7 +8123,7 @@ Element 3 Footprint - + obsolete obsolete @@ -8287,7 +8133,7 @@ Element 3 MPN - + obsolete obsolete @@ -8297,7 +8143,7 @@ Element 3 Fremstillingsstatus - + obsolete obsolete @@ -8307,7 +8153,7 @@ Element 3 Tags - + obsolete obsolete @@ -8317,7 +8163,7 @@ Element 3 Måleenhed - + obsolete obsolete @@ -8327,7 +8173,7 @@ Element 3 Vægt - + obsolete obsolete @@ -8337,7 +8183,7 @@ Element 3 Lagerlokationer - + obsolete obsolete @@ -8347,7 +8193,7 @@ Element 3 Vis den sidste bruger, der redigerede - + obsolete obsolete @@ -8357,7 +8203,7 @@ Element 3 Valuta - + obsolete obsolete @@ -8367,13 +8213,7 @@ Element 3 Måleenhed - - - perm.part_custom_states - Brugerdefineret komponentstatus - - - + obsolete obsolete @@ -8383,7 +8223,7 @@ Element 3 Gammelt password - + obsolete obsolete @@ -8393,7 +8233,7 @@ Element 3 Nulstil password - + obsolete obsolete @@ -8403,7 +8243,7 @@ Element 3 Sikkerhedsnøgle (U2F) - + obsolete obsolete @@ -8413,13 +8253,13 @@ Element 3 Google - + tfa.provider.webauthn_two_factor_provider Sikkerhedsnøgle - + obsolete obsolete @@ -8429,17 +8269,7 @@ Element 3 Godkendelses-app - - - obsolete - obsolete - - - Login successful - Logget ind med succes - - - + obsolete obsolete @@ -8449,7 +8279,7 @@ Element 3 Ubehandlet undtagelse (udfaset) - + obsolete obsolete @@ -8459,7 +8289,7 @@ Element 3 Bruger logget ind - + obsolete obsolete @@ -8469,7 +8299,7 @@ Element 3 Bruger logget ud - + obsolete obsolete @@ -8479,7 +8309,7 @@ Element 3 Ukendt - + obsolete obsolete @@ -8489,7 +8319,7 @@ Element 3 Element oprettet - + obsolete obsolete @@ -8499,7 +8329,7 @@ Element 3 Element rettet - + obsolete obsolete @@ -8509,7 +8339,7 @@ Element 3 Element slettet - + obsolete obsolete @@ -8519,7 +8349,7 @@ Element 3 Database er opdateret - + obsolete @@ -8528,7 +8358,7 @@ Element 3 Nulstil element - + obsolete @@ -8537,7 +8367,7 @@ Element 3 Vis historik - + obsolete @@ -8546,7 +8376,7 @@ Element 3 Vis sidste aktivitet - + obsolete @@ -8555,16 +8385,7 @@ Element 3 Vis tidligere versioner (tidsrejser) - - - obsolete - - - Username - Brugernavn - - - + obsolete @@ -8573,7 +8394,7 @@ Element 3 Godkendelses-app deaktiveret - + obsolete @@ -8582,7 +8403,7 @@ Element 3 Sikkerhedsnøgle slettet - + obsolete @@ -8591,7 +8412,7 @@ Element 3 Sikkerhedsnøgle tilføjet - + obsolete @@ -8600,7 +8421,7 @@ Element 3 Backupnøgler regenereret - + obsolete @@ -8609,7 +8430,7 @@ Element 3 Godkendelses-app aktiveret - + obsolete @@ -8618,7 +8439,7 @@ Element 3 Password ændret - + obsolete @@ -8627,7 +8448,7 @@ Element 3 Godkendte enheder nulstillet - + obsolete @@ -8636,7 +8457,7 @@ Element 3 Hovedelement slettet - + obsolete @@ -8645,7 +8466,7 @@ Element 3 Nulstil password - + obsolete @@ -8654,7 +8475,7 @@ Element 3 To-faktor-godkendelse nulstillet af administrator - + obsolete @@ -8663,7 +8484,7 @@ Element 3 Forsøg på uautoriseret adgang - + obsolete @@ -8672,7 +8493,7 @@ Element 3 Succes - + obsolete @@ -8681,7 +8502,7 @@ Element 3 2D - + obsolete @@ -8690,7 +8511,7 @@ Element 3 1D - + obsolete @@ -8699,7 +8520,7 @@ Element 3 Parametre - + obsolete @@ -8708,7 +8529,7 @@ Element 3 Vis private bilag - + obsolete @@ -8717,7 +8538,7 @@ Element 3 Labelscannner - + obsolete @@ -8726,7 +8547,7 @@ Element 3 Vis profiler - + obsolete @@ -8735,7 +8556,7 @@ Element 3 Opret profil - + obsolete @@ -8744,2155 +8565,2233 @@ Element 3 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.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.scrollable_hint + Scroll for at se alle handlinger + + + 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. - + 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.bulk_import_job.label + Bulk Import + + + + + filter.bulk_import_job.job_status + Job Status + + + + + filter.bulk_import_job.part_status_in_job + Partstatus + + + + + filter.bulk_import_job.status.pending + Venter + + + + + filter.bulk_import_job.status.in_progress + I gang + + + + + filter.bulk_import_job.status.completed + Færdig + + + + + filter.bulk_import_job.status.stopped + Stoppet + + + + + filter.bulk_import_job.status.failed + Fejlet + + + + + filter.bulk_import_job.part_status.pending + filter.bulk_import_job.part_status.pending + + + + + filter.bulk_import_job.part_status.completed + filter.bulk_import_job.part_status.afsluttet + + + + + filter.bulk_import_job.part_status.skipped + filter.bulk_import_job.part_status.annulleret + + + 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 + Tilhørende build 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.part_ipn_prefix.placeholder - f.eks. "B12A" + category.edit.part_ipn_prefix.placeholder - + category.edit.partname_regex.help Et PCRE-kompatibelt regulært udtryk, som delnavnet skal opfylde. - + category.edit.part_ipn_prefix.help - Et prefix foreslået, når IPN for en del indtastes. + category.edit.part_ipn_prefix.hjælp - + 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.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 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.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 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.partCustomState - Brugerdefineret komponentstatus + Brugerdefineret part status - + 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 + part_list.action.export_xlsx + Eksportér til Excel - + + + parts.import.title + Importér komponenter + + + 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. @@ -10904,379 +10803,379 @@ 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 - + part_custom_state.new - Ny brugerdefineret komponentstatus + Ny [part_custom_state] - + part_custom_state.edit - Rediger brugerdefineret komponentstatus + Ret [part_custom_state] - + 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 databeskyttelsesforordningen mode, hvor IP-adresserne anonymiseres. + 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. - + 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. @@ -11284,854 +11183,3753 @@ Oversættelsen 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 + Genereret fra informationsudbyder - + 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. + Vælg de informationsudbydere, der skal søges i. - + info_providers.search.providers Kilder - + info_providers.search.info_providers_list - Se alle tilgængelige informationskilder + Se alle tilgængelige informationsudbydere - + info_providers.search.title - Opret komponent vha. informationskilde + Opret komponent vha. informationsudbyder - + oauth_client.flash.connection_successful Forbindelsen til OAuth-applikationen er etableret! - + perm.part.info_providers - Informationskilder + Informationsudbydere - + 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. + De alternative navne, der er angivet her, bruges til automatisk at vælge dette element baseret på data returneret fra informationsudbydere. - + 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.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 + Sammenflet 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 + Opdater komponent fra informationsudbyderen - + info_providers.update_part.title - Opdater komponent fra informationskilden + Opdater komponent fra informationsudbyderen - + 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. - - - attachment_type.labelp - Bilagstyper + + + login.flash.access_denied_please_login + Adgang nægtet! Venligst Log ind for at fortsætte. - - - currency.labelp - Valutaer + + + attachment.upload_multiple_files + Upload filer - - - group.labelp - Grupper + + + entity.mass_creation_flash + %COUNT% elementer oprettet med success. - - - label_profile.labelp - Labelprofiler + + + info_providers.search.number_of_results + %number% resultater - - - measurement_unit.labelp - Måleenheder + + + info_providers.search.no_results + Ingen resultater fundet. Prøv at ændre søgeord eller vælg andre informationsudbydere. - - - orderdetail.labelp - Bestillingsoplysninger + + + tfa.check.code.confirmation + Genereret kode - - - parameter.labelp - Parametre + + + info_providers.search.show_existing_part + Vis eksisterende dele/parter - - - part.labelp + + + info_providers.search.edit_existing_part + Ret eksisterende dele/parter + + + + + info_providers.search.existing_part_found.short + Part eksisterer allerede + + + + + info_providers.search.existing_part_found + Denne del (eller en lignende) eksisterer allerede i databasen. Venligst gør op med dig selv om det er den samme du ønsker at oprette igen! + + + + + info_providers.search.update_existing_part + Opdatér eksisterede del fra informantionskilden + + + + + part.create_from_info_provider.no_category_yet + Kategori kan ikke bestemmes automatisk fra informationsudbyderen. Ret data og vælg kategori manuelt. + + + + + part_lot.edit.user_barcode + Bruger stregkode + + + + + scan_dialog.mode.user + Brugerdefineret stregkode (konfigureret i komponentlageret) + + + + + scan_dialog.mode.eigp + EIGP 114 stregkode (f.eks. Datamatrix-kode fra Digikey og Mouser dele) + + + + + scan_dialog.info_mode + Info modus (Afkod stregkode og vis dens indhold, men gå ikke automatisk videre til delen) + + + + + label_scanner.decoded_info.title + Afkodet information + + + + + label_generator.edit_profiles + Ret profiler + + + + + label_generator.profile_name_empty + Profilnavn kan ikke være tomt! + + + + + label_generator.save_profile_name + Profilnavn + + + + + label_generator.save_profile + Gem som en ny profil + + + + + label_generator.profile_saved + Profilen er gemt! + + + + + settings.ips.element14 + Element 14 / Farnell + + + + + settings.ips.element14.apiKey + API nøgle + + + + + settings.ips.element14.apiKey.help + Du kan oprette en API nøgle på <a href="https://partner.element14.com/">https://partner.element14.com/</a>. + + + + + settings.ips.element14.storeId + Gem domæne + + + + + settings.ips.element14.storeId.help + Domænet for den butik, hvorfra dataene skal hentes. Dette bestemmer sproget og valutaen for resultaterne. En liste over gyldige domæner kan findes <a href="https://partner.element14.com/docs/Product_Search_API_REST__Description">her</a>. + + + + + settings.ips.tme + TME + + + + + settings.ips.tme.token + API-Token + + + + + settings.ips.tme.token.help + Du kan få et API-token og en hemmelig nøgle på <a href="https://developers.tme.eu/en/">https://developers.tme.eu/en/</a>. + + + + + settings.ips.tme.secret + API-Secret + + + + + settings.ips.tme.currency + Valuta + + + + + settings.ips.tme.language + Sprog + + + + + settings.ips.tme.country + Land + + + + + settings.ips.tme.grossPrices + Hent bruttopriser (inklusive moms) + + + + + settings.ips.mouser + Mouser + + + + + settings.ips.mouser.apiKey + API-nøgle + + + + + settings.ips.mouser.apiKey.help + Du kan registrere dig for en API-nøgle på <a href="https://eu.mouser.com/api-hub/">https://eu.mouser.com/api-hub/</a>. + + + + + settings.ips.mouser.searchLimit + Søgegrænse + + + + + settings.ips.mouser.searchLimit.help + Det maksimale antal resultater for en enkelt søgning må ikke overstige 50. + + + + + settings.ips.mouser.searchOptions + Søgefiltre + + + + + settings.ips.mouser.searchOptions.help + Der tillades kun visning af dele med en specifik tilgængelighed og/eller overensstemmelse. + + + + + settings.ips.mouser.searchOptions.none + Intet filter + + + + + settings.ips.mouser.searchOptions.rohs + Kun RoHS-kompatible komponenter + + + + + settings.ips.mouser.searchOptions.inStock + Kun umiddelbart tilgængelige komponenter + + + + + settings.ips.mouser.searchOptions.rohsAndInStock + Kun tilgængelige og RoHS-kompatible komponenter + + + + + settings.ips.lcsc + LCSC + + + + + settings.ips.lcsc.help + Bemærk: LCSC stiller ikke en officiel API til rådighed. Denne udbyder bruger webshop-API'en. LCSC har ikke til hensigt at bruge denne API, og den kan til enhver tid fejle. Brugen er derfor på eget ansvar. + + + + + settings.ips.lcsc.enabled + Aktivér + + + + + settings.ips.lcsc.currency + Valuta + + + + + settings.system.attachments + bilag & filer + + + + + settings.system.attachments.maxFileSize + Maksimal filstørrelse + + + + + settings.system.attachments.maxFileSize.help + Den maksimale størrelse på filer, der kan uploades. Bemærk venligst, at dette også er begrænset af PHP-konfigurationen. + + + + + settings.system.attachments.allowDownloads + Tillad download af eksterne filer + + + + + settings.system.attachments.allowDownloads.help + Denne indstilling giver brugerne mulighed for at downloade eksterne filer til deldatabasen ved at angive en URL. <b>Advarsel: Dette kan udgøre en sikkerhedsrisiko, da det kan give brugerne adgang til intranetressourcer via deldatabasen!</b> + + + + + settings.system.attachments.downloadByDefault + Download som standard URL'en til nye vedhæftede filer. + + + + + settings.system.customization + Opsætning + + + + + settings.system.customization.instanceName + Instans navn + + + + + settings.system.customization.instanceName.help + Navn på denne part-DB-installation. Værdien vises i navigationslinjen og i titler. + + + + + settings.system.customization.banner + Startside banner + + + + + settings.system.history + Hændelseslog + + + + + settings.system.history.saveChangedFields + Gem hvilke felter i et element der blev ændret i logposter. + + + + + settings.system.history.saveOldData + Gem gamle data i logposter, når elementer ændres + + + + + settings.system.history.saveNewData + Gem nye data i logposter, når et element ændres/oprettes. + + + + + settings.system.history.saveRemovedData + Slettede data gemmes i en logpost, når elementer slettes. + + + + + settings.system.customization.theme + Globalt tema + + + + + settings.system.history.enforceComments + Tvinger kommentarer til handlinger + + + + + settings.system.history.enforceComments.description + Denne indstilling giver dig mulighed for at angive, hvilke handlinger brugerne skal angive en årsag til, som vil blive logget. + + + + + settings.system.history.enforceComments.type.part_edit + Redigér komponent + + + + + settings.system.history.enforceComments.type.part_create + Del/part oprettelse + + + + + settings.system.history.enforceComments.type.part_delete + Sletning af del + + + + + settings.system.history.enforceComments.type.part_stock_operation + Ændring af del/part lager + + + + + settings.system.history.enforceComments.type.datastructure_edit + Ændring af datastruktur for del + + + + + settings.system.history.enforceComments.type.datastructure_create + Oprettelse af datastruktur + + + + + settings.system.history.enforceComments.type.datastructure_delete + Sletning af datastruktur + + + + + settings.system.privacy.useGravatar + Brug Gravatar avatarer + + + + + settings.system.privacy.useGravatar.description + Hvis brugeren ikke har valgt et avatar-billede, benyttes en avatar fra Gravatar baseret på bruger-e-mailen. Browseren henter selv billeder fra 3.parts kilde! + + + + + settings.system.privacy.checkForUpdates + Søg efter tilgængelige opdateringer til Part-DB + + + + + settings.system.privacy.checkForUpdates.description + Part-DB tjekker regelmæssigt for nye versioner på GitHub. Deaktiver denne mulighed her, hvis du ikke ønsker dette, eller hvis din server ikke kan oprette forbindelse til internettet. + + + + + settings.system.localization.locale + Standardsprog + + + + + settings.system.localization + Lokalisering + + + + + settings.system.localization.timezone + Standard tidszone + + + + + settings.system.localization.base_currency + Basisvaluta + + + + + settings.system.localization.base_currency_description + Den valuta, som prisoplysninger og valutakurser gemmes i. Denne valuta bruges, hvis der ikke er angivet en valuta for en prisindtastning. + +<b>Bemærk venligst, at valutaer ikke vil blive konverteret, når denne værdi ændres. Derfor vil ændring af basisvalutaen efter tilføjelse af prisoplysninger resultere i forkerte priser!</b> + + + + + settings.system.privacy + Databeskyttelse + + + + + settings.title + Serverindstillinger + + + + + settings.misc.kicad_eda + KiCAD integration + + + + + settings.misc.kicad_eda.category_depth + Kategoridybde + + + + + settings.misc.kicad_eda.category_depth.help + Denne værdi bestemmer dybden af ​​kategoritræet, der er synligt i KiCad. 0 betyder, at kun kategorierne på øverste niveau er synlige. Indstil værdien til > 0 for at vise yderligere niveauer. Indstil værdien til -1 for at vise alle dele af deldatabasen inden for en enkelt kategori i KiCad. + + + + + settings.behavior.sidebar + Sidebjælke--panel + + + + + settings.behavior.sidebar.items + Sidebjælke-emner + + + + + settings.behavior.sidebar.items.help + De menuer, der som standard vises i sidebjælken. Rækkefølgen af ​​elementerne kan ændres ved at trække og slippe. + + + + + settings.behavior.sidebar.rootNodeEnabled + Vis rodknude + + + + + settings.behavior.sidebar.rootNodeEnabled.help + Når denne funktion er aktiveret, grupperes alle kategorier på topniveau, fodspor osv. under en enkelt rodnode. Når den er deaktiveret, vises kategorierne på topniveau direkte i menuen. + + + + + settings.behavior.sidebar.rootNodeExpanded + Rodknuden er udvidet som standard + + + + + settings.behavior.table + Tabeller + + + + + settings.behavior.table.default_page_size + Standard sidestrørrelse + + + + + settings.behavior.table.default_page_size.help + Antal poster der vises som standard i helsidestabeller. Indstil værdien til -1 for at vise alle elementer uden sideskift som standard. + + + + + settings.behavior.table.parts_default_columns + Standardkolonner til komponenttabeller + + + + + settings.behavior.table.parts_default_columns.help + De kolonner, der som standard skal vises i komponenttabeller. Elementernes rækkefølge kan ændres via træk og slip. + + + + + settings.ips.oemsecrets + OEMSecrets + + + + + settings.ips.oemsecrets.keepZeroPrices + Vis forhandlere med nulpriser + + + + + settings.ips.oemsecrets.keepZeroPrices.help + Hvis dette ikke er angivet, vil forhandlere, hvis priser er 0, blive afvist som ugyldige. + + + + + settings.ips.oemsecrets.parseParams + Udtræk parametre fra beskrivelsen + + + + + settings.ips.oemsecrets.parseParams.help + Når denne indstilling er aktiveret, forsøger udbyderen at konvertere de ustrukturerede beskrivelser fra OEMSecrets til strukturerede parametre. Hver parameter i beskrivelsen skal have formen "...;navn1:værdi1;navn2:værdi2". + + + + + settings.ips.oemsecrets.sortMode + Sortering af resultaterne + + + + + settings.ips.oemsecrets.sortMode.N + Ingen + + + + + settings.ips.oemsecrets.sortMode.C + Fuldstændighed (prioritering af elementer med detaljerede oplysninger) + + + + + settings.ips.oemsecrets.sortMode.M + Fuldstændighed & producentnavn + + + + + entity.export.flash.error.no_entities + Der er ingen enheder at eksportere! + + + + + attachment.table.internal_file + Internt data + + + + + attachment.table.external_link + Eksternt link + + + + + attachment.view_external.view_at + Vis på %host% + + + + + attachment.view_external + Vis ekstern version + + + + + part.table.actions.error + Der opstod %count% fejl under handlingen! + + + + + part.table.actions.error_detail + %part_name% (ID: %part_id%): %message% + + + + + part_list.action.action.change_location + Skift lagersted (kun for komponenter med individuelt lager) + + + + + parts.table.action_handler.error.part_lots_multiple + Denne komponent indeholder mere end én lagervare. Skift lagerplaceringen manuelt for at vælge, hvilken lagervare der skal ændres. + + + + + settings.ips.reichelt + Reichelt + + + + + settings.ips.reichelt.help + Reichelt.com tilbyder ikke en officiel API; derfor udtrækker denne informationsudbyder information fra hjemmesiden via web scraping. Denne proces kan afbrydes når som helst, og brugen sker på eget ansvar. + + + + + settings.ips.reichelt.include_vat + Priserne er inklusiv moms. + + + + + settings.ips.pollin + Pollin + + + + + settings.ips.pollin.help + Pollin.de tilbyder ikke en officiel API, derfor udtrækker denne informationsudbyder data fra hjemmesiden via web scraping. Dette kan til enhver tid ophøre med at virke; brugen sker på egen risiko. + + + + + settings.behavior.sidebar.rootNodeRedirectsToNewEntity + Rodnoden fører til oprettelsen af ​​et nyt element. + + + + + settings.ips.digikey + Digikey + + + + + settings.ips.digikey.client_id + Client ID + + + + + settings.ips.digikey.secret + Secret + + + + + settings.ips.octopart + Octopart / Nexar + + + + + settings.ips.octopart.searchLimit + Antal resultater + + + + + settings.ips.octopart.searchLimit.help + Antallet af resultater, du ønsker at få, når du søger med Octopart (bemærk venligst, at dette tæller med i dine API-grænser) + + + + + settings.ips.octopart.onlyAuthorizedSellers + Kun autoriserede forhandlere + + + + + settings.ips.octopart.onlyAuthorizedSellers.help + Fravælg for at vise uautoriserede tilbud i resultaterne + + + + + settings.misc.exchange_rate + Vekselkurs + + + + + settings.misc.exchange_rate.fixer_api_key + Fixer.io API Key + + + + + settings.misc.exchange_rate.fixer_api_key.help + Hvis du har brug for valutakurser mellem ikke-euro-valutaer, kan du indtaste en API-nøgle fra fixer.io her. + + + + + settings.misc.ipn_suggest + Komponent IPN-forslag + + + + + settings.misc.ipn_suggest.regex + Regex + + + + + settings.misc.ipn_suggest.regex_help + Hjælpetekst + + + + + settings.misc.ipn_suggest.regex_help_description + Definer din egen brugerhjælpetekst til Regex-formatspecifikationen. + + + + + settings.misc.ipn_suggest.autoAppendSuffix + Tilføj et inkrementelt suffiks, hvis et IPN allerede bruges af en anden komponent. + + + + + settings.misc.ipn_suggest.suggestPartDigits + Steder for numerisk forøgelse + + + + + settings.misc.ipn_suggest.useDuplicateDescription + Brug komponentbeskrivelsen til at bestemme den næste IPN + + + + + settings.misc.ipn_suggest.suggestPartDigits.help + Antallet af cifre, der bruges til trinvis nummerering af dele i IPN-forslagssystemet. + + + + + settings.behavior.part_info + Komponent infoside + + + + + settings.behavior.part_info.show_part_image_overlay + Vis billedoverlejring + + + + + settings.behavior.part_info.show_part_image_overlay.help + Vis billedoverlejringen med detaljer om vedhæftet fil, når du holder musen over billedgalleriet med dele. + + + + + perm.config.change_system_settings + Redigér systemindstillinger + + + + + tree.tools.system.settings + Systemindstillinger + + + + + tree.tools.system.update_manager + Update Manager + + + + + settings.tooltip.overrideable_by_env + Værdien af ​​denne parameter kan tilsidesættes ved at indstille miljøvariablen “%env%”. + + + + + settings.flash.saved + Indstillinger blev gemt. + + + + + settings.flash.invalid + Indstillingerne er ugyldige. Kontroller venligst din indtastning! + + + + + info_providers.settings.title + Indstillinger for informationskilde/udbyder + + + + + form.apikey.redacted + Skjult af sikkerhedsmæssige årsager + + + + + project.bom_import.map_fields + Tildel felter + + + + + project.bom_import.map_fields.help + Vælg, hvordan CSV-kolonner knyttes til styklistefelter + + + + + project.bom_import.delimiter + Feltafgrænsertegn + + + + + project.bom_import.delimiter.comma + Komma (,) + + + + + project.bom_import.delimiter.semicolon + Semikolon (;) + + + + + project.bom_import.delimiter.tab + Tab + + + + + project.bom_import.field_mapping.title + Felttilknytning + + + + + project.bom_import.field_mapping.csv_field + CSV felt + + + + + project.bom_import.field_mapping.maps_to + Tilknyt til + + + + + project.bom_import.field_mapping.suggestion + Forslag + + + + + project.bom_import.field_mapping.priority + Prioritet + + + + + project.bom_import.field_mapping.priority_help + Prioritet (lavere tal = højere prioritet) + + + + + project.bom_import.field_mapping.priority_short + P + + + + + project.bom_import.field_mapping.priority_note + Prioritetstip: lavere tal = højere prioritet. Standardprioriteten er 10. Brug prioriteterne 1-9 for de vigtigste felter og 10+ for normal prioritet. + + + + + project.bom_import.field_mapping.summary + Felttilknytningsresumé + + + + + project.bom_import.field_mapping.select_to_see_summary + Vælg felttilknytinger for at se en oversigt. + + + + + project.bom_import.field_mapping.no_suggestion + Ingen forslag + + + + + project.bom_import.preview + Forhåndsvisning + + + + + project.bom_import.flash.session_expired + Importsessionen er udløbet. Upload venligst din fil igen. + + + + + project.bom_import.field_mapping.ignore + Ignorér + + + + + project.bom_import.type.kicad_schematic + KiCAD diagram BOM (CSV fil) + + + + + common.back + Tilbage + + + + + project.bom_import.validation.errors.required_field_missing + Linje %line%: Det obligatoriske felt “%field%” ​​mangler eller er tomt. Sørg for, at dette felt er tilknyttet og indeholder data. + + + + + project.bom_import.validation.errors.no_valid_designators + Linje %line%: Felt indeholder ikke gyldige komponentreferencer. Forventet format: "R1,C2,U3" eller "R1, C2, U3". + + + + + project.bom_import.validation.warnings.unusual_designator_format + Linje %line%: Nogle komponentreferencer kan have et usædvanligt format: %designators%. Forventet format: "R1", "C2", "U3" osv. + + + + + project.bom_import.validation.errors.duplicate_designators + Linje %line%: Der er fundet identiske komponentreferencer: %designators%. Hver komponent bør kun refereres én gang pr. linje. + + + + + project.bom_import.validation.errors.invalid_quantity + Linje %line%: Mængden “%quantity%” er ikke et gyldigt tal. Indtast venligst en numerisk værdi (f.eks. 1, 2, 5, 10). + + + + + project.bom_import.validation.errors.quantity_zero_or_negative + Linje %line%: Mængden skal være større end 0, registreret mængde %quantity%. + + + + + project.bom_import.validation.warnings.quantity_unusually_high + Linje %line%: Mængden %quantity% ser usædvanlig høj ud. Kontroller venligst, om dette er korrekt. + + + + + project.bom_import.validation.warnings.quantity_not_whole_number + Linje %line%: Antallet %quantity% er ikke et heltal, men du har %count% komponentreferencer. Dette kan indikere en uoverensstemmelse. + + + + + project.bom_import.validation.errors.quantity_designator_mismatch + Linje %line%: Afvigelse mellem antal og komponentreferencer. Antal: %quantity%, Referencer: %count% (%designators%). Disse skal stemme overens. Juster enten mængden, eller tjek dine komponentreferencer. + + + + + project.bom_import.validation.errors.invalid_partdb_id + Linje %line%: Part-DB ID "%id%" er ikke et gyldigt tal. Indtast venligst et numerisk ID. + + + + + project.bom_import.validation.errors.partdb_id_zero_or_negative + Linje %line%: Part-DB ID'et skal være større end 0, det modtagne ID er %id%. + + + + + project.bom_import.validation.warnings.partdb_id_not_found + Linje %line%: Komponentens DB-ID %id% blev ikke fundet i databasen. Komponenten importeres uden et link til en eksisterende del. + + + + + project.bom_import.validation.info.partdb_link_success + Linje %line%: Linket til komponenten “%name%” (ID: %id%). + + + + + project.bom_import.validation.warnings.no_component_name + Linje %line%: Intet komponentnavn/beskrivelse angivet (MPN, reference eller værdi). Komponenten er angivet som "Ukendt komponent". + + + + + project.bom_import.validation.warnings.package_name_too_long + Linje %line%: Footprint-navnet “%package%” er usædvanligt langt. Kontroller venligst, om det er korrekt. + + + + + project.bom_import.validation.info.library_prefix_detected + Linje %line%: Footprint “%package%” indeholder et bibliotekspræfiks. Dette fjernes automatisk under import. + + + + + project.bom_import.validation.errors.non_numeric_field + Linje %line%: Feltet “%field%” ​​indeholder den ikke-numeriske værdi “%value%”. Indtast venligst et gyldigt tal. + + + + + project.bom_import.validation.info.import_summary + Importoversigt: %total% samlede poster, %valid% gyldige, %invalid% med problemer. + + + + + project.bom_import.validation.errors.summary + Der blev fundet %count% valideringsfejl, som skal rettes, før importen kan fortsætte. + + + + + project.bom_import.validation.warnings.summary + Der blev fundet %count% advarsler. Kontroller venligst disse problemer, før du fortsætter. + + + + + project.bom_import.validation.info.all_valid + Alt er nu valideret korrekt! + + + + + project.bom_import.validation.summary + Valideringoversigt + + + + + project.bom_import.validation.total_entries + Samlet antal poster + + + + + project.bom_import.validation.valid_entries + Gyldige poster + + + + + project.bom_import.validation.invalid_entries + Ugyldige poster + + + + + project.bom_import.validation.success_rate + Succesrate + + + + + project.bom_import.validation.errors.title + Valideringsfejl + + + + + project.bom_import.validation.errors.description + Følgende fejl skal rettes, før importen kan fortsætte: + + + + + project.bom_import.validation.warnings.title + Valideringsadvarsel + + + + + project.bom_import.validation.warnings.description + Følgende advarsler bør læses, før du fortsætter: + + + + + project.bom_import.validation.info.title + Information + + + + + project.bom_import.validation.details.title + Detaljerede valideringsresultater + + + + + project.bom_import.validation.details.line + Linje + + + + + project.bom_import.validation.details.status + Status + + + + + project.bom_import.validation.details.messages + Meddelser + + + + + project.bom_import.validation.details.valid + Gyldig + + + + + project.bom_import.validation.details.invalid + Ugyldig + + + + + project.bom_import.validation.all_valid + Alle poster er gyldige og klar til import! + + + + + project.bom_import.validation.fix_errors + Ret venligst valideringsfejlene, før du fortsætter med importen. + + + + + project.bom_import.type.generic_csv + Generiske CSV-data + + + + + label_generator.update_profile + Opdatér profil med aktuelle indstillinger + + + + + label_generator.profile_updated + Label-profilen er opdateret + + + + + settings.behavior.hompepage.items + Startside-elementer + + + + + settings.behavior.homepage.items.help + Elementerne, der skal vises på startsiden. Rækkefølgen kan ændres via træk og slip. + + + + + settings.system.customization.showVersionOnHomepage + Vis Part-DB-version på startsiden + + + + + settings.behavior.part_info.extract_params_from_description + Udtræk parametre fra komponentbeskrivelsen + + + + + settings.behavior.part_info.extract_params_from_notes + Udtræk parametre fra komponentinformationerne + + + + + settings.ips.default_providers + Standard infoudbydere + + + + + settings.ips.general + Generelle indstillinger + + + + + settings.ips.default_providers.help + Disse udbydere er forudvalgt til søgning i informationskilder. + + + + + settings.behavior.table.preview_image_max_width + Maksimal bredde på forhåndsvisningsbillede (px) + + + + + settings.behavior.table.preview_image_min_width + Minimumsbredde for forhåndsvisningsbillede (px) + + + + + info_providers.bulk_import.step1.title + Masseimport af datakilder – Trin 1 + + + + + info_providers.bulk_import.parts_selected + Komponenter valgt + + + + + info_providers.bulk_import.step1.global_mapping_description + Konfigurer felttilknytninger, der skal anvendes på alle valgte dele. For eksempel betyder "MPN → LCSC + Mouser", at leverandørerne LCSC og Mouser benyttes til søgning ved hjælp af MPN-feltet for hver del. + + + + + info_providers.bulk_import.selected_parts + Udvalgte komponenter + + + + + info_providers.bulk_import.field_mappings + Felttilknytning + + + + + info_providers.bulk_import.field_mappings_help + Angiv hvilke komponentfelter der skal søges i ved hjælp af hvilke informationsudbydere. Flere tildelinger vil blive kombineret. + + + + + info_providers.bulk_import.add_mapping + Tilføj tilknytning + + + + + info_providers.bulk_import.search_results.title + Søgeresultater + + + + + info_providers.bulk_import.errors + Fejl + + + + + info_providers.bulk_import.results_found + %count% resultater fundet + + + + + info_providers.bulk_import.source_field + Komponentfelt + + + + + info_providers.bulk_import.view_existing + Vis eksisterende + + + + + info_providers.bulk_search.search_field + Søgefelt + + + + + info_providers.bulk_search.providers + Informationsudbydere + + + + + info_providers.bulk_import.actions.label + Handlinger + + + + + info_providers.bulk_search.providers.help + Vælg hvilke infomationsudbydere der skal søges hos, når komponenter har dette felt. + + + + + info_providers.bulk_search.submit + Søg alle komponenter + + + + + info_providers.bulk_search.field.select + Vælg et felt at søge ud fra + + + + + info_providers.bulk_search.field.mpn + Producent varenummer (MPN) + + + + + info_providers.bulk_search.field.name + Komponentnavn + + + + + part_list.action.action.info_provider + Komponent datakilde + + + + + part_list.action.bulk_info_provider_import + Masseimport af datakilder + + + + + info_providers.bulk_import.step1.spn_recommendation + Det anbefales at bruge et leverandørvarenummer (SPN) for at opnå bedre resultater. Tilføj en tilknytning for hver leverandør, så deres SPN'er kan bruges. + + + + + info_providers.bulk_import.update_part + Opdatér komponent + + + + + info_providers.bulk_import.prefetch_details + Indledende hentning af komponentdetaljer + + + + + info_providers.bulk_import.prefetch_details_help + Hent detaljer for alle resultater på forhånd. Selvom dette tager længere tid, fremskynder det arbejdsgangen for opdatering af komponenter. + + + + + info_providers.bulk_import.step2.title + Masseimport fra informationsudbydere + + + + + info_providers.bulk_import.step2.card_title + Masseimport af %count% komponenter – %date% + + + + + info_providers.bulk_import.parts Komponenter - - - part_association.labelp - Komponentforbindelser + + + info_providers.bulk_import.results + resultater - - - part_custom_state.labelp - Brugerdefinerede deltilstande + + + info_providers.bulk_import.created_at + Oprettet d. - - - part_lot.labelp - Komponentbeholdninger + + + info_providers.bulk_import.status.in_progress + Under udarbejdelse - - - pricedetail.labelp - Prisinformationer + + + info_providers.bulk_import.status.completed + Færdig - - - project_bom_entry.labelp - BOM-registreringer + + + info_providers.bulk_import.status.failed + Fejlet + + + + + info_providers.bulk_import.table.name + Navn + + + + + info_providers.bulk_import.table.description + Beskrivelse + + + + + info_providers.bulk_import.table.manufacturer + Producent + + + + + info_providers.bulk_import.table.provider + Udbyder + + + + + info_providers.bulk_import.table.source_field + Komponentfelt + + + + + info_providers.bulk_import.back + Tilbage + + + + + info_providers.bulk_import.progress + Fremskridt: + + + + + info_providers.bulk_import.status.pending + Afventer + + + + + info_providers.bulk_import.completed + Afsluttet + + + + + info_providers.bulk_import.skipped + Sprunget over + + + + + info_providers.bulk_import.mark_completed + Markér som afsluttet + + + + + info_providers.bulk_import.mark_skipped + Markér som sprunget over + + + + + info_providers.bulk_import.mark_pending + Makér som udestående + + + + + info_providers.bulk_import.skip_reason + Grund til at springe over + + + + + info_providers.bulk_import.editing_part + Ret komponent som en del af masseimport + + + + + info_providers.bulk_import.complete + Afsluttet + + + + + info_providers.bulk_import.existing_jobs + Eksisterende jobs + + + + + info_providers.bulk_import.job_name + Jobnavn + + + + + info_providers.bulk_import.parts_count + Komponentantal + + + + + info_providers.bulk_import.results_count + Antal resultater + + + + + info_providers.bulk_import.progress_label + Status: %current%/%total% + + + + + info_providers.bulk_import.manage_jobs + Administrer masseimportjobs + + + + + info_providers.bulk_import.view_results + Vis resultater + + + + + info_providers.bulk_import.status + Status + + + + + info_providers.bulk_import.manage_jobs_description + Se og administrer alle dine masseimportjobs. For at oprette et nyt job skal du vælge komponenter og klikke på "Masseimport fra informationsudbydere". + + + + + info_providers.bulk_import.no_jobs_found + Der blev ikke fundet nogen bulkimportjobs. + + + + + info_providers.bulk_import.create_first_job + Opret dit første masseimportjob ved at vælge flere komponenter i en komponenttabel og vælge indstillingen "Masseimport fra informationsudbyder". + + + + + info_providers.bulk_import.confirm_delete_job + Er du sikker på du vil slette dette? + + + + + info_providers.bulk_import.job_name_template + Masseimport af %count% komponenter + + + + + info_providers.bulk_import.step2.instructions.title + Sådan bruger du masseimport + + + + + info_providers.bulk_import.step2.instructions.description + Følg disse trin for effektivt at opdatere dine komponenter: + + + + + info_providers.bulk_import.step2.instructions.step1 + Klik på "Opdatér komponent" for at opdatere en komponent fra informationsudbyderne. + + + + + info_providers.bulk_import.step2.instructions.step2 + Gennemgå og redigér komponentoplysningerne efter behov. Bemærk: Du skal klikke på "Gem" to gange for at gemme ændringerne. + + + + + info_providers.bulk_import.step2.instructions.step3 + Klik på "Afslut" for at markere sektionen som færdig og vende tilbage til denne oversigt. + + + + + info_providers.bulk_import.created_by + Oprettet af + + + + + info_providers.bulk_import.completed_at + Færdiggjort d. + + + + + info_providers.bulk_import.action.label + Handling + + + + + info_providers.bulk_import.action.delete + Slet + + + + + info_providers.bulk_import.status.active + Aktiv + + + + + info_providers.bulk_import.progress.title + Fremskridt + + + + + info_providers.bulk_import.progress.completed_text + %completet%/%total% fuldført + + + + + info_providers.bulk_import.status.stopped + Afbrudt + + + + + info_providers.bulk_import.action.stop + Stop + + + + + info_providers.bulk_import.confirm_stop_job + Er du sikker på du ønsker at afbryde dette job? + + + + + part.filter.in_bulk_import_job + Masseimport job + + + + + part.filter.bulk_import_job_status + Status for bulkimport + + + + + part.filter.bulk_import_part_status + Status for bulkimporten + + + + + part.edit.tab.bulk_import + Masseimport + + + + + bulk_import.status.pending + Venter + + + + + bulk_import.status.in_progress + Under udarbejdelse + + + + + bulk_import.status.completed + Færdiggjort + + + + + bulk_import.status.stopped + Afbrudt + + + + + bulk_import.status.failed + Fejlet + + + + + bulk_import.part_status.pending + Venter + + + + + bulk_import.part_status.completed + Gennemført + + + + + bulk_import.part_status.skipped + Sprunget over + + + + + bulk_import.part_status.failed + Fejlet + + + + + bulk_info_provider_import_job.label + Masseimport fra informationsudbydere + + + + + bulk_info_provider_import_job_part.label + Komponent masseimport + + + + + info_providers.bulk_search.priority + Prioritet + + + + + info_providers.bulk_search.priority.help + Lavere tal = højere prioritet. Samme prioritet = kombinér resultater. Forskellige prioriteter = prøv den højeste først, og vælg den lavere, hvis der ikke findes resultater. + + + + + info_providers.bulk_import.priority_system.title + Prioritetssystem + + + + + info_providers.bulk_import.priority_system.description + Lavere tal = højere prioritet. Samme prioritet = kombinér resultater. Forskellige prioriteter = prøv den højeste først, og vælg den lavere, hvis der ikke findes resultater. + + + + + info_providers.bulk_import.priority_system.example + Eksempel: Prioritet 1: "LCSC SPN → LCSC", Prioritet 2: "MPN → LCSC + Mouser", Prioritet 3: "Navn → Alle udbydere" + + + + + info_providers.bulk_import.search.submit + Informationsudbydere + + + + + info_providers.bulk_import.research.title + Søg efter komponenter igen + + + + + info_providers.bulk_import.research.description + Søg efter komponenter igen ved hjælp af opdaterede oplysninger (f.eks. nye MPN'er). Bruger de samme felttilknytninger som den oprindelige søgning. + + + + + info_providers.bulk_import.research.all_pending + Søg efter alle resterende komponenter + + + + + info_providers.bulk_import.research.part + Søg igen + + + + + info_providers.bulk_import.research.part_tooltip + Søg efter denne komponent igen med opdaterede oplysninger + + + + + info_providers.bulk_import.max_mappings_reached + Maksimalt antal tilknytninger nået + + + + + settings.system + System + + + + + settings.behavior + Opførsel + + + + + settings.ips + Informationsudbydere + + + + + settings.misc + Forskelligt + + + + + settings.system.localization.language_menu_entries + Sprogmenu-indgange + + + + + settings.system.localization.language_menu_entries.description + Sprogene, der skal vises i rullemenuen for sprog. Rækkefølgen kan ændres ved at trække og slippe. Lad feltet være tomt for at vise alle tilgængelige sprog. + + + + + project.builds.no_bom_entries + Projektet har ingen styklisteposter. + + + + + settings.behavior.sidebar.data_structure_nodes_table_include_children + Tabeller bør som standard indeholde underordnede elementer. + + + + + settings.behavior.sidebar.data_structure_nodes_table_include_children.help + Når denne indstilling er valgt, inkluderes alle komponenter i den underordnede kategori i komponenttabeller for kategorier, footprint osv. Hvis denne indstilling ikke er valgt, vises kun de komponenter, der strengt taget tilhører den valgte kategori (eksklusiv underordnede elementer), i komponenttabellerne. + + + + + info_providers.search.error.oauth_reconnect + Følgende informationsudbyder kræver en ny OAuth-forbindelse: %provider% +Dette kan gøres på siden Oversigt over informationsudbydere. + + + + + settings.misc.ipn_suggest.useDuplicateDescription.help + Når komponentbeskrivelsen er aktiveret, bruges den til at finde eksisterende dele med samme beskrivelse og til at bestemme det næste tilgængelige IPN til forslagslisten ved at øge det numeriske suffiks tilsvarende. + + + + + settings.misc.ipn_suggest.regex.help + Et PCRE-kompatibelt regulært udtryk, som alle IPN'er skal opfylde. Lad feltet stå tomt for at tillade hvad som helst som et IPN. - + user.labelp Brugere + + + currency.labelp + Valutaer + + + + + measurement_unit.labelp + Måleenhed + + + + + attachment_type.labelp + Bilagstyper + + + + + label_profile.labelp + Labelprofil + + + + + part_custom_state.labelp + Brugerdefinerede komponenttilstande + + + + + group.labelp + Grupper + + + + + settings.synonyms.type_synonym.type + Type + + + + + settings.synonyms.type_synonym.language + Sprog + + + + + settings.synonyms.type_synonym.translation_singular + Oversættelse Ental + + + + + settings.synonyms.type_synonym.translation_plural + Oversættelse Flertal + + + + + settings.synonyms.type_synonym.add_entry + Tilføj post + + + + + settings.synonyms.type_synonym.remove_entry + Fjern post + + + + + settings.synonyms + Synonymer + + + + + settings.synonyms.help + Synonymsystemet giver dig mulighed for at tilsidesætte, hvordan Part-DB navngiver bestemte ting. Dette kan være nyttigt, især når Part-DB bruges i en anden kontekst end elektronik. + +Bemærk venligst, at dette system i øjeblikket er eksperimentelt, og de synonymer, der er defineret her, vises muligvis ikke alle steder. + + + + + settings.synonyms.type_synonyms + Type-synonymer + + + + + settings.synonyms.type_synonyms.help + Type-synonymer giver dig mulighed for at erstatte navnene på indbyggede datatyper. Du kan f.eks. omdøbe "Footprint" til noget andet. + + + + + log.element_edited.changed_fields.part_ipn_prefix + IPN præfiks + + + + + part.labelp + Komponenter + + + + + project_bom_entry.labelp + Stykliste(BOM)-posteringer + + + + + part_lot.labelp + Komponentlagre + + + + + orderdetail.labelp + Bestillingsinformation + + + + + pricedetail.labelp + Prisinformation + + + + + parameter.labelp + Parametre + + + + + part_association.labelp + Komponent ordninger + + + + + bulk_info_provider_import_job.labelp + Masseimport fra informationsudbydere + + + + + bulk_info_provider_import_job_part.labelp + Komponent masseinport job + + + + + password_toggle.hide + Skjul + + + + + password_toggle.show + Vis + + + + + settings.misc.ipn_suggest.regex.help.placeholder + F.eks. format: 3-4 alfanumeriske segmenter adskilt af "-", efterfulgt af "-" og 4 cifre, f.eks. PCOM-RES-0001 + + + + + part.edit.tab.advanced.ipn.prefix.global_prefix + Det globale IPN-præfiks, der gælder for alle komponenter + + + + + settings.misc.ipn_suggest.fallbackPrefix + Fallback-præfiks + + + + + settings.misc.ipn_suggest.fallbackPrefix.help + IPN-præfikset, der skal bruges, når en kategori ikke har defineret et præfiks. + + + + + settings.misc.ipn_suggest.numberSeparator + Nummerseparator + + + + + settings.misc.ipn_suggest.numberSeparator.help + Separatoren, der bruges til at adskille IPN-nummeret fra præfikset. + + + + + settings.misc.ipn_suggest.categorySeparator + Kategoriseparator + + + + + settings.misc.ipn_suggest.categorySeparator.help + Separatoren, der bruges til at adskille forskellige niveauer af kategoripræfikser. + + + + + settings.misc.ipn_suggest.globalPrefix + Global-præfiks + + + + + settings.misc.ipn_suggest.globalPrefix.help + Når den er aktiveret, tilbydes der en mulighed for at generere et IPN med dette globale præfiks, som gælder for komponenter i alle kategorier. + + - - Do not remove! Used for datatables rendering. - - - datatable.datatable.lengthMenu - _MENU_ - + + Do not remove! Used for datatables rendering. + + + datatable.datatable.lengthMenu + _MENU_ + + + + + settings.ips.buerklin + Buerklin + + + + + settings.ips.buerklin.username + Brugernavn + + + + + settings.ips.buerklin.help + Buerklin API-adgangsbegrænsninger: 100 anmodninger/minut pr. IP-adresse + +Buerklin API-godkendelsesserver: 10 anmodninger/minut pr. IP-adresse + + + + + project.bom.part_id + [Part] ID + + + + + info_providers.search.error.general_exception + Ukendt fejl ved hentning af komponenter fra informationsudbyderen: %type%. Kontroller, at dine udbydere er konfigureret korrekt, og at adgangsnøglerne er korrekte. Yderligere oplysninger kan findes i serverloggene. + + + + + info_providers.search.error.transport_exception + Der opstod transportfejl under hentning af oplysninger fra udbydere. Kontroller, om din server har internetadgang. Se serverloggene for at få flere oplysninger. + + + + + update_manager.title + Update Manager + + + + + update_manager.new + Ny + + + + + update_manager.current_installation + Nuværende installation + + + + + update_manager.version + Version + + + + + update_manager.installation_type + Installationstype + + + + + update_manager.git_branch + Git Branch + + + + + update_manager.git_commit + Git Commit + + + + + update_manager.local_changes + Lokale ændringer + + + + + update_manager.commits_behind + Bagvedliggende Commits + + + + + update_manager.auto_update_supported + Automatisk opdatering er mulig + + + + + update_manager.refresh + Opdatér + + + + + update_manager.latest_release + Sidste release + + + + + update_manager.tag + Tag + + + + + update_manager.released + Released + + + + + update_manager.release_notes + Release notes + + + + + update_manager.view + Vis + + + + + update_manager.view_on_github + Vis på GitHub + + + + + update_manager.view_release + Vis release + + + + + update_manager.could_not_fetch_releases + Kunne ikke hente releaseinformation. Check din internetforbindelse. + + + + + update_manager.how_to_update + Sådan opdaterer du + + + + + update_manager.cli_instruction + For at opdatere Part-DB, kør en af følgende kommandoer i en terminal: + + + + + update_manager.check_for_updates + Søg efter opdateringer + + + + + update_manager.update_to_latest + Opdatér til nyeste version + + + + + update_manager.update_to_specific + Opdatér til en bestemt version + + + + + update_manager.cli_recommendation + Af sikkerheds- og pålidelighedshensyn bør opdateringer udføres via kommandolinjer. Opdateringsprocessen opretter automatisk en sikkerhedskopi, aktiverer vedligeholdelsestilstand og håndterer migreringer. + + + + + update_manager.up_to_date + Nyeste version + + + + + update_manager.newer + Nyere + + + + + update_manager.current + Aktuelle + + + + + update_manager.older + Ældre + + + + + update_manager.prerelease + Pre-release + + + + + update_manager.status + Status + + + + + update_manager.available_versions + Tilgængelige versioner + + + + + update_manager.no_releases_found + Ingen releases fundet + + + + + update_manager.view_release_notes + Vis release noter + + + + + update_manager.update_logs + Opdateringslog + + + + + update_manager.backups + Backups + + + + + update_manager.date + Dato + + + + + update_manager.log_file + Logfil + + + + + update_manager.no_logs_found + Ingen opdateringslogs fundet + + + + + update_manager.file + Fil + + + + + update_manager.size + Størrelse + + + + + update_manager.no_backups_found + Ingen backups fundet + + + + + update_manager.validation_issues + Valideringsproblemer + + + + + update_manager.maintenance_mode_active + Vedligeholdelsestilstand er aktiv + + + + + update_manager.update_in_progress + En opdatering er i øjeblikket i gang + + + + + update_manager.started_at + Startet kl. + + + + + update_manager.new_version_available.message + Part-DB version %version% er nu tilgængelig! Overvej at opdatere for at få de nyeste funktioner og sikkerhedsrettelser. + + + + + update_manager.changelog + Changelog + + + + + update_manager.no_release_notes + Ingen release noter tilgængelige for denne version. + + + + + update_manager.back_to_update_manager + Tilbage til Update Manager + + + + + update_manager.download_assets + Download + + + + + update_manager.update_to_this_version + Opdatér til denne version + + + + + update_manager.run_command_to_update + Kør følgende kommando i din terminal for at opdatere til denne version: + + + + + update_manager.log_viewer + Logviser + + + + + update_manager.update_log + Update log + + + + + update_manager.bytes + bytes + + + + + perm.system.manage_updates + Administrer Part-DB-opdateringer + + + + + update_manager.create_backup + Opret sikkerhedskopi før opdatering (anbefales) + + + + + update_manager.confirm_update + Er du sikker på, at du vil opdatere Part-DB? Der vil blive oprettet en sikkerhedskopi før opdateringen. + + + + + update_manager.already_up_to_date + Du benytter den seneste version af Part-DB. + + + + + update_manager.progress.title + Opdateringsstatus + + + + + update_manager.progress.updating + Part-DB opdateres + + + + + update_manager.progress.completed + Opdatering fuldendt! + + + + + update_manager.progress.failed + Opdatering fejlet + + + + + update_manager.progress.initializing + Initialiserer... + + + + + update_manager.progress.updating_to + Opdaterer til version %version% + + + + + update_manager.progress.downgrading_to + Downgrade til version %version% + + + + + update_manager.progress.error + Fejl + + + + + update_manager.progress.success_message + Part-DB er blevet opdateret! Du skal muligvis opdatere siden for at se den nye version. + + + + + update_manager.progress.steps + Opdateringstrin + + + + + update_manager.progress.waiting + Venter på at opdateringen begynder... + + + + + update_manager.progress.back + Tilbage til Update Manager + + + + + update_manager.progress.refresh_page + Opdatér side + + + + + update_manager.progress.warning + Vigtig + + + + + update_manager.progress.do_not_close + Luk ikke denne side eller naviger væk mens opdateringen er i gang. Opdateringen fortsætter, selvom du lukker siden, men du vil ikke kunne overvåge status. + + + + + update_manager.progress.auto_refresh + Denne side opdateres automatisk hvert 2. sekund for at vise status. + + + + + update_manager.progress.downgrade_title + Downgrade fremskridt + + + + + update_manager.progress.downgrade_completed + Downgrade afsluttet! + + + + + update_manager.progress.downgrade_failed + Downgrade fejlet + + + + + update_manager.progress.downgrade_success_message + Part-DB er blevet downgraded! Du skal muligvis opdatere siden for at se den nye version. + + + + + update_manager.progress.downgrade_steps + Downgrade-trin + + + + + update_manager.progress.downgrade_do_not_close + Luk ikke denne side eller naviger væk mens nedgraderingen er i gang. Downgrade fortsætter, selvom du lukker siden, men du vil så ikke kunne overvåge status. + + + + + update_manager.confirm_downgrade + Er du sikker på, at du vil downgrade Part-DB? Dette vil ende ud i en ældre Part-dB version. Der vil blive oprettet en sikkerhedskopi før downgrade udføres. + + + + + update_manager.downgrade_removes_update_manager + ADVARSEL: Denne version inkluderer ikke Update-Manager. Efter downgrade skal du opdatere manuelt ved hjælp af kommandolinjen (git checkout, composer install osv.). + + + + + update_manager.restore_backup + Indlæs backup + + + + + update_manager.restore_confirm_title + Gendan fra sikkerhedskopi + + + + + update_manager.restore_confirm_message + Er du sikker på, at du vil gendanne din database fra denne sikkerhedskopi? + + + + + update_manager.restore_confirm_warning + ADVARSEL: Dette vil overskrive din nuværende database med backupdataene. Denne handling kan ikke fortrydes! Sørg for, at du har en gyldig backup, før du fortsætter. + + + + + update_manager.web_updates_disabled + Webbaserede opdateringer er deaktiveret + + + + + update_manager.web_updates_disabled_hint + Webbaserede opdateringer er blevet deaktiveret af serveradministratoren. Brug venligst CLI-kommandoen "php bin/console partdb:update" til at udføre opdateringer. + + + + + update_manager.backup_restore_disabled + Gendannelse af sikkerhedskopi er deaktiveret af serverkonfigurationen. + + + + + settings.ips.conrad + Conrad + + + + + settings.ips.conrad.shopID + Shop ID + + + + + settings.ips.conrad.shopID.description + Den version af Conrad-butikken du vil have resultater fra. Dette bestemmer sprog, priser og valuta for resultaterne. Hvis både en B2B- og en B2C-version er tilgængelig, skal du vælge B2C-versionen, hvis du ønsker priser inklusiv moms. + + + + + settings.ips.conrad.attachment_language_filter + Sprogfilter for bilag + + + + + settings.ips.conrad.attachment_language_filter.description + Inkluderer kun vedhæftede filer på de valgte sprog i resultaterne. + + + + + settings.ips.generic_web_provider + Generisk Web URL udbyder + + + + + settings.ips.generic_web_provider.description + Denne informationsudbyder gør det gør det muligt at hente grundlæggende information om dele fra flere butiksside ULR'er + + + + + settings.ips.generic_web_provider.enabled.help + Når udbyderen er aktiveret, kan brugere foretage anmodninger til vilkårlige websteder på vegne af Part-DB-serveren. Aktivér kun dette, hvis du er opmærksom på de potentielle konsekvenser det kan have. + + + + + info_providers.from_url.title + Opret [komponent] fra URL + + + + + info_providers.from_url.url.label + URL + + + + + info_providers.from_url.no_part_found + Der blev ikke fundet nogle komponenter med den angivne URL. Er du sikker på, at dette er en gyldig webadresse til butikken? + + + + + info_providers.from_url.help + Opretter en komponent baseret på den givne URL. Den forsøger at delegere den til en eksisterende informationsudbyder, hvis det er muligt, ellers vil der blive nemlig blive forsøgt at udtrække ufuldendte data fra websidens metadata. + + + + + update_manager.cant_auto_update + Kan ikke opdatere automatisk fra WebUI + + + + + update_manager.switch_to + Skift til + + + + + update_manager.update_to + Opdatér til + diff --git a/translations/messages.de.xlf b/translations/messages.de.xlf index 9fa2ef52..e1677d74 100644 --- a/translations/messages.de.xlf +++ b/translations/messages.de.xlf @@ -221,7 +221,7 @@ part.info.timetravel_hint - Beachten Sie, dass dieses Feature experimentell ist und die angezeigten Infos daher nicht unbedingt korrekt sind.]]> + So sah das Bauteil vor %timestamp% aus. <i>Beachten Sie, dass dieses Feature experimentell ist und die angezeigten Infos daher nicht unbedingt korrekt sind.</i>
    @@ -649,9 +649,9 @@ user.edit.tfa.disable_tfa_message - alle aktiven Zwei-Faktor-Authentifizierungsmethoden des Nutzers deaktivieren und die Backupcodes löschen!
    -Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müssen und neue Backupcodes ausdrucken müssen!

    -Führen sie dies nur durch, wenn Sie über die Identität des (um Hilfe suchenden) Benutzers absolut sicher sind, da ansonsten eine Kompromittierung des Accounts durch einen Angreifer erfolgen könnte!]]>
    + Dies wird <b>alle aktiven Zwei-Faktor-Authentifizierungsmethoden des Nutzers deaktivieren</b> und die <b>Backupcodes löschen</b>! <br> +Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müssen und neue Backupcodes ausdrucken müssen! <br><br> +<b>Führen sie dies nur durch, wenn Sie über die Identität des (um Hilfe suchenden) Benutzers absolut sicher sind, da ansonsten eine Kompromittierung des Accounts durch einen Angreifer erfolgen könnte!</b>
    @@ -1358,7 +1358,7 @@ Subelemente werden beim Löschen nach oben verschoben. homepage.github.text - GitHub Projektseite]]> + Quellcode, Downloads, Bugreports, ToDo-Liste usw. gibts auf der <a class="link-external" target="_blank" href="%href%">GitHub Projektseite</a> @@ -1380,7 +1380,7 @@ Subelemente werden beim Löschen nach oben verschoben. homepage.help.text - Wiki der GitHub Seite.]]> + Hilfe und Tipps finden sie im <a class="link-external" rel="noopener" target="_blank" href="%href%">Wiki</a> der GitHub Seite. @@ -1622,7 +1622,7 @@ Subelemente werden beim Löschen nach oben verschoben. email.pw_reset.fallback - %url% auf und geben Sie die folgenden Daten ein]]> + Wenn dies nicht funktioniert, rufen Sie <a href="%url%">%url%</a> auf und geben Sie die folgenden Daten ein @@ -1652,7 +1652,7 @@ Subelemente werden beim Löschen nach oben verschoben. email.pw_reset.valid_unit %date% - %date%]]> + Das Reset-Token ist gültig bis <i>%date%</i> @@ -3525,8 +3525,8 @@ Subelemente werden beim Löschen nach oben verschoben. tfa_google.disable.confirm_message - -Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nicht mehr so gut gegen Angreifer geschützt ist!]]> + Wenn Sie die Authenticator App deaktivieren, werden alle Backupcodes gelöscht, daher sie müssen sie evtl. neu ausdrucken.<br> +Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nicht mehr so gut gegen Angreifer geschützt ist! @@ -3546,7 +3546,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich tfa_google.step.download - Google Authenticator oder FreeOTP Authenticator)]]> + Laden Sie eine Authenticator App herunter (z.B. <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>) @@ -3788,8 +3788,8 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich tfa_trustedDevices.explanation - aller Computer zurücksetzen.]]> + Bei der Überprüfung des zweiten Faktors, kann der aktuelle Computer als vertrauenswürdig gekennzeichnet werden, daher werden keine Zwei-Faktor-Überprüfungen mehr an diesem Computer benötigt. +Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertrauenswürdig ist, können Sie hier den Status <i>aller </i>Computer zurücksetzen. @@ -5225,7 +5225,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr label_options.lines_mode.help - Twig Dokumentation und dem Wiki.]]> + Wenn Sie hier Twig auswählen, wird das Contentfeld als Twig-Template interpretiert. Weitere Hilfe gibt es in der <a href="https://twig.symfony.com/doc/3.x/templates.html">Twig Dokumentation</a> und dem <a href="https://docs.part-db.de/usage/labels.html#twig-mode">Wiki</a>. @@ -7073,15 +7073,15 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr mass_creation.lines.placeholder - Element 1 Element 1.1 Element 1.1.1 Element 1.2 Element 2 Element 3 -Element 1 -> Element 1.1 -Element 1 -> Element 1.2]]> +Element 1 -> Element 1.1 +Element 1 -> Element 1.2 @@ -9057,7 +9057,7 @@ Element 1 -> Element 1.2]]> filter.bulk_import_job.status.stopped - Angehalten + Stopped @@ -9141,25 +9141,25 @@ Element 1 -> Element 1.2]]> filter.parameter_value_constraint.operator.< - + Typ. Wert < filter.parameter_value_constraint.operator.> - ]]> + Typ. Wert > filter.parameter_value_constraint.operator.<= - + Typ. Wert <= filter.parameter_value_constraint.operator.>= - =]]> + Typ. Wert >= @@ -9267,7 +9267,7 @@ Element 1 -> Element 1.2]]> parts_list.search.searching_for - %keyword%]]> + Suche Teile mit dem Suchbegriff <b>%keyword%</b> @@ -9927,13 +9927,13 @@ Element 1 -> Element 1.2]]> project.builds.number_of_builds_possible - %max_builds% Exemplare dieses Projektes zu bauen.]]> + Sie haben genug Bauteile auf Lager, um <b>%max_builds%</b> Exemplare dieses Projektes zu bauen. project.builds.check_project_status - "%project_status%". Sie sollten überprüfen, ob sie das Projekt mit diesem Status wirklich bauen wollen!]]> + Der aktuelle Projektstatus ist <b>"%project_status%"</b>. Sie sollten überprüfen, ob sie das Projekt mit diesem Status wirklich bauen wollen! @@ -10047,7 +10047,7 @@ Element 1 -> Element 1.2]]> entity.select.add_hint - um verschachtelte Strukturen anzulegen, z.B. "Element 1->Element 1.1"]]> + Nutzen Sie -> um verschachtelte Strukturen anzulegen, z.B. "Element 1->Element 1.1" @@ -10071,13 +10071,13 @@ Element 1 -> Element 1.2]]> homepage.first_steps.introduction - Dokumentation lesen oder anfangen, die folgenden Datenstrukturen anzulegen.]]> + Die Datenbank ist momentan noch leer. Sie möchten möglicherweise die <a href="%url%">Dokumentation</a> lesen oder anfangen, die folgenden Datenstrukturen anzulegen. homepage.first_steps.create_part - neues Bauteil erstellen.]]> + Oder Sie können direkt ein <a href="%url%">neues Bauteil erstellen</a>. @@ -10089,7 +10089,7 @@ Element 1 -> Element 1.2]]> homepage.forum.text - Diskussionsforum]]> + Für Fragen rund um Part-DB, nutze das <a class="link-external" rel="noopener" target="_blank" href="%href%">Diskussionsforum</a> @@ -10755,7 +10755,7 @@ Element 1 -> Element 1.2]]> parts.import.help_documentation - Dokumentation für weiter Informationen über das Dateiformat.]]> + Konsultieren Sie die <a href="%link%">Dokumentation</a> für weiter Informationen über das Dateiformat. @@ -10947,7 +10947,7 @@ Element 1 -> Element 1.2]]> part.filter.lessThanDesired - + Weniger vorhanden als gewünscht (Gesamtmenge < Mindestmenge) @@ -11723,13 +11723,13 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön part.merge.confirm.title - %other% in %target% zusammenführen?]]> + Möchten Sie wirklich <b>%other%</b> in <b>%target%</b> zusammenführen? part.merge.confirm.message - %other% wird gelöscht, und das aktuelle Bauteil wird mit den angezeigten Daten gespeichert.]]> + <b>%other%</b> wird gelöscht, und das aktuelle Bauteil wird mit den angezeigten Daten gespeichert. @@ -12083,7 +12083,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.element14.apiKey.help - https://partner.element14.com/ für einen API-Schlüssel registrieren.]]> + Sie können sich unter <a href="https://partner.element14.com/">https://partner.element14.com/</a> für einen API-Schlüssel registrieren. @@ -12095,7 +12095,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.element14.storeId.help - hier.]]> + Die Domain des Shops, aus dem die Daten abgerufen werden sollen. Diese bestimmt die Sprache und Währung der Ergebnisse. Eine Liste der gültigen Domains finden Sie <a href="https://partner.element14.com/docs/Product_Search_API_REST__Description">hier</a>. @@ -12113,7 +12113,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.tme.token.help - https://developers.tme.eu/en/ erhalten.]]> + Sie können einen API-Token und einen geheimen Schlüssel unter <a href="https://developers.tme.eu/en/">https://developers.tme.eu/en/</a> erhalten. @@ -12161,7 +12161,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.mouser.apiKey.help - https://eu.mouser.com/api-hub/ für einen API-Schlüssel registrieren.]]> + Sie können sich unter <a href="https://eu.mouser.com/api-hub/">https://eu.mouser.com/api-hub/</a> für einen API-Schlüssel registrieren. @@ -12209,7 +12209,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.mouser.searchOptions.rohsAndInStock - + Sofort verfügbar & RoHS konform @@ -12239,7 +12239,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.system.attachments - + Anhänge & Dateien @@ -12263,7 +12263,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.system.attachments.allowDownloads.help - Achtung: Dies kann ein Sicherheitsrisiko darstellen, da Benutzer dadurch möglicherweise über die Part-DB auf Intranet-Ressourcen zugreifen können!]]> + Mit dieser Option können Benutzer externe Dateien in die Part-DB herunterladen, indem sie eine URL angeben. <b>Achtung: Dies kann ein Sicherheitsrisiko darstellen, da Benutzer dadurch möglicherweise über die Part-DB auf Intranet-Ressourcen zugreifen können!</b> @@ -12305,7 +12305,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.system.history.saveChangedFields - Speichern, welche Felder eines Elements in Protokolleinträgen geändert wurden. + Speichern, welche Felder eines Elements in Protokolleinträgen geändert wurden @@ -12437,8 +12437,8 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.system.localization.base_currency_description - Bitte beachten Sie, dass die Währungen bei einer Änderung dieses Wertes nicht umgerechnet werden. Wenn Sie also die Basiswährung ändern, nachdem Sie bereits Preisinformationen hinzugefügt haben, führt dies zu falschen Preisen!]]> + Die Währung, in der Preisinformationen und Wechselkurse gespeichert werden. Diese Währung wird angenommen, wenn für eine Preisinformation keine Währung festgelegt ist. +<b>Bitte beachten Sie, dass die Währungen bei einer Änderung dieses Wertes nicht umgerechnet werden. Wenn Sie also die Basiswährung ändern, nachdem Sie bereits Preisinformationen hinzugefügt haben, führt dies zu falschen Preisen!</b> @@ -12468,7 +12468,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.misc.kicad_eda.category_depth.help - 0, um weitere Ebenen anzuzeigen. Setzen Sie den Wert auf -1, um alle Teile der Part-DB innerhalb einer einzigen Kategorie in KiCad anzuzeigen.]]> + Dieser Wert bestimmt die Tiefe des Kategoriebaums, der in KiCad sichtbar ist. 0 bedeutet, dass nur die Kategorien der obersten Ebene sichtbar sind. Setzen Sie den Wert auf > 0, um weitere Ebenen anzuzeigen. Setzen Sie den Wert auf -1, um alle Teile der Part-DB innerhalb einer einzigen Kategorie in KiCad anzuzeigen. @@ -12486,7 +12486,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.behavior.sidebar.items.help - + Die Menüs, die standardmäßig in der Seitenleiste angezeigt werden. Die Reihenfolge der Elemente kann per Drag & Drop geändert werden. @@ -12534,7 +12534,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.behavior.table.parts_default_columns.help - + Die Spalten, die standardmäßig in Bauteiltabellen angezeigt werden sollen. Die Reihenfolge der Elemente kann per Drag & Drop geändert werden. @@ -12588,7 +12588,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.ips.oemsecrets.sortMode.M - + Vollständigkeit & Herstellername @@ -12825,6 +12825,12 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön Systemeinstellungen + + + tree.tools.system.update_manager + Update-Manager + + settings.tooltip.overrideable_by_env @@ -13248,7 +13254,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.behavior.homepage.items.help - + Die Elemente, die auf der Startseite angezeigt werden sollen. Die Reihenfolge kann per Drag & Drop geändert werden. @@ -13962,7 +13968,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön settings.system.localization.language_menu_entries.description - + Die Sprachen, die im Sprachen Dropdown-Menü angezeigt werden sollen. Die Reihenfolge kann via Drag&Drop geändert werden. Lassen Sie das Feld leer, um alle verfügbaren Sprachen anzuzeigen. @@ -14284,5 +14290,641 @@ Buerklin-API-Authentication-Server: Transportfehler beim Abrufen von Informationen von den Anbietern. Überprüfen Sie, ob Ihr Server über einen Internetzugang verfügt. Weitere Informationen finden Sie in den Serverprotokollen. Transportfehler beim Abrufen von Informationen von den Anbietern. Überprüfen Sie, ob Ihr Server über einen Internetzugang verfügt. Weitere Informationen finden Sie in den Serverprotokollen. + + + update_manager.title + Update-Manager + + + + + update_manager.new + Neu + + + + + update_manager.current_installation + Aktuelle Installation + + + + + update_manager.version + Version + + + + + update_manager.installation_type + Installationsart + + + + + update_manager.git_branch + Git-Branch + + + + + update_manager.git_commit + Git-Commit + + + + + update_manager.local_changes + Lokale Änderungen + + + + + update_manager.commits_behind + Commits zurück + + + + + update_manager.auto_update_supported + Automatische Aktualisierung unterstützt + + + + + update_manager.refresh + Aktualisieren + + + + + update_manager.latest_release + update_manager.latest_release + + + + + update_manager.tag + Tag + + + + + update_manager.released + Veröffentlicht + + + + + update_manager.release_notes + Release Notes + + + + + update_manager.view + Ansehen + + + + + update_manager.view_on_github + Auf GitHub ansehen + + + + + update_manager.view_release + update_manager.view_release + + + + + update_manager.could_not_fetch_releases + Konnte keine Release-Informationen abrufen. Überprüfen Sie Ihre Internetverbindung. + + + + + update_manager.how_to_update + Wie man aktualisiert + + + + + update_manager.cli_instruction + Um Part-DB zu aktualisieren, führen Sie einen der folgenden Befehle in Ihrem Terminal aus: + + + + + update_manager.check_for_updates + Auf Updates prüfen + + + + + update_manager.update_to_latest + Update to latest version + + + + + update_manager.update_to_specific + Auf bestimmte Version aktualisieren + + + + + update_manager.cli_recommendation + Aus Sicherheits- und Zuverlässigkeitsgründen sollten Updates über die Befehlszeilenschnittstelle durchgeführt werden. Der Aktualisierungsprozess erstellt automatisch eine Sicherung, aktiviert den Wartungsmodus und führt Migrationen durch. + + + + + update_manager.up_to_date + Up to date + + + + + update_manager.newer + Neuer + + + + + update_manager.current + Aktuell + + + + + update_manager.older + Älter + + + + + update_manager.prerelease + Vorabversion + + + + + update_manager.status + Status + + + + + update_manager.available_versions + Verfügbare Versionen + + + + + update_manager.no_releases_found + Keine Veröffentlichungen gefunden + + + + + update_manager.view_release_notes + update_manager.view_release_notes + + + + + update_manager.update_logs + Aktualisierungsprotokolle + + + + + update_manager.backups + Backups + + + + + update_manager.date + Datum + + + + + update_manager.log_file + Protokolle + + + + + update_manager.no_logs_found + Keine Protokolle gefunden + + + + + update_manager.file + Datei + + + + + update_manager.size + Größe + + + + + update_manager.no_backups_found + Keine Backups gefunden + + + + + update_manager.validation_issues + Validierungsprobleme + + + + + update_manager.maintenance_mode_active + Wartungsmodus aktiv + + + + + update_manager.update_in_progress + Ein Update läuft bereits + + + + + update_manager.started_at + Gestartet am + + + + + update_manager.new_version_available.message + Part-DB Version %version% ist ab sofort verfügbar! Erwägen Sie ein Update, um die neuesten Features und Sicherheitsverbesserungen zu nutzen. + + + + + update_manager.changelog + Changelog + + + + + update_manager.no_release_notes + Keine Änderungsprotokolle verfügbar für diese Version. + + + + + update_manager.back_to_update_manager + Zurück zum Update-Manager + + + + + update_manager.download_assets + Download + + + + + update_manager.update_to_this_version + Auf diese Version aktualisieren + + + + + update_manager.run_command_to_update + update_manager.run_command_to_update + + + + + update_manager.log_viewer + update_manager.log_viewer + + + + + update_manager.update_log + update_manager.update_log + + + + + update_manager.bytes + update_manager.bytes + + + + + perm.system.manage_updates + perm.system.manage_updates + + + + + update_manager.create_backup + update_manager.create_backup + + + + + update_manager.confirm_update + update_manager.confirm_update + + + + + update_manager.already_up_to_date + update_manager.already_up_to_date + + + + + update_manager.progress.title + update_manager.progress.title + + + + + update_manager.progress.updating + update_manager.progress.updating + + + + + update_manager.progress.completed + update_manager.progress.completed + + + + + update_manager.progress.failed + update_manager.progress.failed + + + + + update_manager.progress.initializing + Initialisiere... + + + + + update_manager.progress.updating_to + Aktualisiere auf Version %version% + + + + + update_manager.progress.downgrading_to + Downgrade auf Version %version% + + + + + update_manager.progress.error + Fehler + + + + + update_manager.progress.success_message + Part-DB wurde erfolgreich aktualisiert! Sie müssen möglicherweise die Seite aktualisieren, um die neue Version zu sehen. + + + + + update_manager.progress.steps + Updateschritte + + + + + update_manager.progress.waiting + Warte auf Start des Updates... + + + + + update_manager.progress.back + Zurück zum Update-Manager + + + + + update_manager.progress.refresh_page + Seite aktualisieren + + + + + update_manager.progress.warning + Wichtig + + + + + update_manager.progress.do_not_close + Bitte schließen Sie die Seite nicht, während das Update läuft. Das Update wird fortgeführt sogar wenn Sie diese Seite schließen, aber Sie werden nicht inn der Lage sein, den Fortschritt zu beobachten. + + + + + update_manager.progress.auto_refresh + Diese Seite aktualisiert sich automatisch, um den Fortschritt anzuzeigen. + + + + + update_manager.progress.downgrade_title + Downgrade-Fortschritt + + + + + update_manager.progress.downgrade_completed + Downgrade abgeschlossen! + + + + + update_manager.progress.downgrade_failed + Downgrade fehlgeschlagen + + + + + update_manager.progress.downgrade_success_message + Part-DB wurde erfolgreich downgegraded! Sie müssen möglicherweise die Seite aktualisieren, um die neue Version zu sehen. + + + + + update_manager.progress.downgrade_steps + Downgrade-Schritte + + + + + update_manager.progress.downgrade_do_not_close + Bitte schließen Sie die Seite nicht, während das Downgrade läuft. Das Update wird fortgeführt sogar wenn Sie diese Seite schließen, aber Sie werden nicht inn der Lage sein, den Fortschritt zu beobachten. + + + + + update_manager.confirm_downgrade + Sind Sie sicher, dass sie Part-DB downgraden wollen? Dies wird auf eine ältere Version zurück gesetzt. Es wird ein Backup vor dem Downgrade erstellt. + + + + + update_manager.downgrade_removes_update_manager + WARNUNG: Das Downgrade entfernt den Update-Manager. Nach dem Downgrade, müssen Sie manuell über die Kommandozeile aktualisieren (git checkout, composer install, etc.). + + + + + update_manager.restore_backup + Backup wiederherstellen + + + + + update_manager.restore_confirm_title + Von Backup wiederherstellen + + + + + update_manager.restore_confirm_message + Sind Sie sicher dass die ihre Datenbank von diesem Backup wiederherstellen möchten? + + + + + update_manager.restore_confirm_warning + WARNUNG: Dies wird ihre aktuelle Datenbank überschreiben. Diese Aktion kann nicht rückgängig gemacht werden! Stellen Sie sicher dass sie ein aktuelles Backup haben, bevor Sie fortfahren. + + + + + update_manager.web_updates_disabled + Web-Updates deaktiviert + + + + + update_manager.web_updates_disabled_hint + Web-basierte Aktualisierungen wurden vom Server-Administrator deaktiviert. Nutzen Sie das CLI command "php bin/console partdb:update" um Updates durchzuführen. + + + + + update_manager.backup_restore_disabled + Backup Wiederherstellungen wurden durch Serverkonfiguration deaktiviert. + + + + + settings.ips.conrad + Conrad + + + + + settings.ips.conrad.shopID + Shop ID + + + + + settings.ips.conrad.shopID.description + Die Version des Conrad-Shops, für die Sie Ergebnisse erhalten möchten. Dies bestimmt die Sprache, Preise und Währung der Ergebnisse. Wenn sowohl eine B2B- als auch eine B2C-Version verfügbar ist, wählen Sie die B2C-Version, wenn Sie Preise inklusive MwSt. wünschen. + + + + + settings.ips.conrad.attachment_language_filter + Sprachfilter für Dateianhänge + + + + + settings.ips.conrad.attachment_language_filter.description + Inkludiere nur Dateianhänge mit ausgewählten Sprachen in Ergebnissen. + + + + + settings.ips.generic_web_provider + Generischer Web URL Provider + + + + + settings.ips.generic_web_provider.description + Dieser Informationsanbieter ermöglicht es, grundlegende Teileinformationen von vielen Shop-Seiten-URLs abzurufen. + + + + + settings.ips.generic_web_provider.enabled.help + settings.ips.generic_web_provider.enabled.help + + + + + info_providers.from_url.title + Erstelle [part] aus URL + + + + + info_providers.from_url.url.label + URL + + + + + info_providers.from_url.no_part_found + Es konnte kein Bauteil in der gegebenen URL gefunden werden. Sind Sie sicher, dass dies eine gültige Shop URL ist? + + + + + info_providers.from_url.help + Erstellt einen Teil basierend auf der angegebenen URL. Es wird versucht, diesen Teil an einen vorhandenen Informationsanbieter zu delegieren, falls möglich. Andernfalls wird versucht, grundlegende Daten aus den Metadaten der Webseite zu extrahieren. + + + + + update_manager.cant_auto_update + Kann nicht automatisch über die WebUI aktualisiert werden + + + + + update_manager.switch_to + Wechseln zu + + + + + update_manager.update_to + Update zu + + diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 89b03824..80c026e1 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -221,7 +221,7 @@ 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> @@ -649,10 +649,10 @@ 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>
    @@ -803,9 +803,9 @@ The user will have to set up all two-factor authentication methods again and pri entity.delete.message - -Sub elements will be moved upwards.]]> + This can not be undone! +<br> +Sub elements will be moved upwards. @@ -1359,7 +1359,7 @@ Sub elements will be moved upwards.]]> 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> @@ -1381,7 +1381,7 @@ Sub elements will be moved upwards.]]> 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> @@ -1623,7 +1623,7 @@ Sub elements will be moved upwards.]]> 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 @@ -1653,7 +1653,7 @@ Sub elements will be moved upwards.]]> email.pw_reset.valid_unit %date% - %date%.]]> + The reset token will be valid until <i>%date%</i>. @@ -3526,8 +3526,8 @@ Sub elements will be moved upwards.]]> tfa_google.disable.confirm_message - -Also note that without two-factor authentication, your account is no longer 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 no longer as well protected against attackers! @@ -3547,7 +3547,7 @@ Also note that without two-factor authentication, your account is no longer as w 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>) @@ -3789,8 +3789,8 @@ Also note that without two-factor authentication, your account is no longer as w 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. @@ -5226,7 +5226,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can 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. @@ -7074,15 +7074,15 @@ Exampletown mass_creation.lines.placeholder - Element 1 Element 1.1 Element 1.1.1 Element 1.2 Element 2 Element 3 -Element 1 -> Element 1.1 -Element 1 -> Element 1.2]]> +Element 1 -> Element 1.1 +Element 1 -> Element 1.2 @@ -7272,7 +7272,7 @@ Element 1 -> Element 1.2]]> user.firstName.placeholder - e.g John + e.g. John @@ -9142,25 +9142,25 @@ Element 1 -> Element 1.2]]> 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 >= @@ -9268,7 +9268,7 @@ Element 1 -> Element 1.2]]> parts_list.search.searching_for - %keyword%]]> + Searching parts with keyword <b>%keyword%</b> @@ -10048,7 +10048,7 @@ Element 1 -> Element 1.2]]> 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" @@ -10072,13 +10072,13 @@ Element 1 -> Element 1.2]]> 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>. @@ -10090,7 +10090,7 @@ Element 1 -> Element 1.2]]> homepage.forum.text - discussion forum]]> + For questions about Part-DB use the <a href="%href%" class="link-external" target="_blank">discussion forum</a> @@ -10756,7 +10756,7 @@ Element 1 -> Element 1.2]]> 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. @@ -10948,7 +10948,7 @@ Element 1 -> Element 1.2]]> part.filter.lessThanDesired - + In stock less than desired (total amount < min. amount) @@ -11724,13 +11724,13 @@ Please note, that you can not impersonate a disabled user. If you try you will g 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. @@ -12084,7 +12084,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.element14.apiKey.help - https://partner.element14.com/.]]> + You can register for an API key on <a href="https://partner.element14.com/">https://partner.element14.com/</a>. @@ -12096,7 +12096,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.element14.storeId.help - here for a list of valid domains.]]> + The store domain to retrieve the data from. This decides the language and currency of results. See <a href="https://partner.element14.com/docs/Product_Search_API_REST__Description">here</a> for a list of valid domains. @@ -12114,7 +12114,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.tme.token.help - https://developers.tme.eu/en/.]]> + You can get an API token and secret on <a href="https://developers.tme.eu/en/">https://developers.tme.eu/en/</a>. @@ -12162,7 +12162,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.mouser.apiKey.help - https://eu.mouser.com/api-hub/.]]> + You can register for an API key on <a href="https://eu.mouser.com/api-hub/">https://eu.mouser.com/api-hub/</a>. @@ -12240,7 +12240,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.system.attachments - + Attachments & Files @@ -12264,7 +12264,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.system.attachments.allowDownloads.help - Attention: This can be a security issue, as it might allow users to access intranet ressources via Part-DB!]]> + With this option users can download external files into Part-DB by providing an URL. <b>Attention: This can be a security issue, as it might allow users to access intranet ressources via Part-DB!</b> @@ -12438,8 +12438,8 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.system.localization.base_currency_description - Please note that the currencies are not converted, when changing this value. So changing the default currency after you already added price information, will result in wrong prices!]]> + The currency that is used to store price information and exchange rates in. This currency is assumed, when no currency is set for a price information. +<b>Please note that the currencies are not converted, when changing this value. So changing the default currency after you already added price information, will result in wrong prices!</b> @@ -12469,7 +12469,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.misc.kicad_eda.category_depth.help - 0 to show more levels. Set to -1, to show all parts of Part-DB inside a sigle cnategory in KiCad.]]> + This value determines the depth of the category tree, that is visible inside KiCad. 0 means that only the top level categories are visible. Set to a value > 0 to show more levels. Set to -1, to show all parts of Part-DB inside a sigle cnategory in KiCad. @@ -12487,7 +12487,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.behavior.sidebar.items.help - + The menus which appear at the sidebar by default. Order of items can be changed via drag & drop. @@ -12535,7 +12535,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.behavior.table.parts_default_columns.help - + The columns to show by default in part tables. Order of items can be changed via drag & drop. @@ -12589,7 +12589,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.ips.oemsecrets.sortMode.M - + Completeness & Manufacturer name @@ -13255,7 +13255,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.behavior.homepage.items.help - + The items to show at the homepage. Order can be changed via drag & drop. @@ -13969,7 +13969,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g settings.system.localization.language_menu_entries.description - + The languages to show in the language drop-down menu. Order can be changed via drag & drop. Leave empty to show all available languages. @@ -14911,19 +14911,19 @@ Buerklin-API Authentication server: - + update_manager.cant_auto_update Cannot update automatically from WebUI - + update_manager.switch_to Switch to - + update_manager.update_to Update to diff --git a/translations/security.uk.xlf b/translations/security.uk.xlf new file mode 100644 index 00000000..12737cf3 --- /dev/null +++ b/translations/security.uk.xlf @@ -0,0 +1,23 @@ + + + + + + user.login_error.user_disabled + Ваш обліковий запис вимкнено! Зверніться до адміністратора, якщо вважаєте це помилкою. + + + + + saml.error.cannot_login_local_user_per_saml + Ви не можете увійти як локальний користувач через SSO! Використовуйте пароль локального користувача. + + + + + saml.error.cannot_login_saml_user_locally + Ви не можете використовувати локальну автентифікацію для входу як користувач SAML! Скористайтеся входом через SSO. + + + + diff --git a/translations/validators.uk.xlf b/translations/validators.uk.xlf new file mode 100644 index 00000000..3f14daeb --- /dev/null +++ b/translations/validators.uk.xlf @@ -0,0 +1,375 @@ + + + + + + Part-DB1\src\Entity\Attachments\AttachmentContainingDBElement.php:0 + Part-DB1\src\Entity\Attachments\AttachmentType.php:0 + Part-DB1\src\Entity\Base\AbstractCompany.php:0 + Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 + Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 + Part-DB1\src\Entity\Devices\Device.php:0 + Part-DB1\src\Entity\LabelSystem\LabelProfile.php:0 + Part-DB1\src\Entity\Parts\Category.php:0 + Part-DB1\src\Entity\Parts\Footprint.php:0 + Part-DB1\src\Entity\Parts\Manufacturer.php:0 + Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 + Part-DB1\src\Entity\Parts\Part.php:0 + Part-DB1\src\Entity\Parts\Part.php:0 + Part-DB1\src\Entity\Parts\Storelocation.php:0 + Part-DB1\src\Entity\Parts\Supplier.php:0 + Part-DB1\src\Entity\PriceInformations\Currency.php:0 + Part-DB1\src\Entity\UserSystem\Group.php:0 + Part-DB1\src\Entity\UserSystem\User.php:0 + Part-DB1\src\Entity\Attachments\AttachmentType.php:0 + Part-DB1\src\Entity\Base\AbstractCompany.php:0 + Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 + Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 + Part-DB1\src\Entity\Devices\Device.php:0 + Part-DB1\src\Entity\Parts\Category.php:0 + Part-DB1\src\Entity\Parts\Footprint.php:0 + Part-DB1\src\Entity\Parts\Manufacturer.php:0 + Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 + Part-DB1\src\Entity\Parts\Part.php:0 + Part-DB1\src\Entity\Parts\Storelocation.php:0 + Part-DB1\src\Entity\Parts\Supplier.php:0 + Part-DB1\src\Entity\PriceInformations\Currency.php:0 + Part-DB1\src\Entity\UserSystem\Group.php:0 + Part-DB1\src\Entity\UserSystem\User.php:0 + + + part.master_attachment.must_be_picture + Вкладення для попереднього перегляду має бути коректним зображенням! + + + + + Part-DB1\src\Entity\Attachments\AttachmentType.php:0 + Part-DB1\src\Entity\Base\AbstractCompany.php:0 + Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 + Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 + Part-DB1\src\Entity\Devices\Device.php:0 + Part-DB1\src\Entity\Parts\Category.php:0 + Part-DB1\src\Entity\Parts\Footprint.php:0 + Part-DB1\src\Entity\Parts\Manufacturer.php:0 + Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 + Part-DB1\src\Entity\Parts\Storelocation.php:0 + Part-DB1\src\Entity\Parts\Supplier.php:0 + Part-DB1\src\Entity\PriceInformations\Currency.php:0 + Part-DB1\src\Entity\UserSystem\Group.php:0 + Part-DB1\src\Entity\Attachments\AttachmentType.php:0 + Part-DB1\src\Entity\Base\AbstractCompany.php:0 + Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 + Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 + Part-DB1\src\Entity\Devices\Device.php:0 + Part-DB1\src\Entity\Parts\Category.php:0 + Part-DB1\src\Entity\Parts\Footprint.php:0 + Part-DB1\src\Entity\Parts\Manufacturer.php:0 + Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 + Part-DB1\src\Entity\Parts\Storelocation.php:0 + Part-DB1\src\Entity\Parts\Supplier.php:0 + Part-DB1\src\Entity\PriceInformations\Currency.php:0 + Part-DB1\src\Entity\UserSystem\Group.php:0 + src\Entity\AttachmentType.php:0 + src\Entity\Category.php:0 + src\Entity\Company.php:0 + src\Entity\Device.php:0 + src\Entity\Footprint.php:0 + src\Entity\Group.php:0 + src\Entity\Manufacturer.php:0 + src\Entity\PartsContainingDBElement.php:0 + src\Entity\Storelocation.php:0 + src\Entity\StructuralDBElement.php:0 + src\Entity\Supplier.php:0 + + + structural.entity.unique_name + Елемент із такою назвою вже існує на цьому рівні! + + + + + Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 + Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 + Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 + Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 + Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 + Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 + Part-DB1\src\Entity\Parameters\GroupParameter.php:0 + Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 + Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 + Part-DB1\src\Entity\Parameters\PartParameter.php:0 + Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 + Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 + + + parameters.validator.min_lesser_typical + Значення має бути меншим або рівним типовому значенню ({{ compared_value }}). + + + + + Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 + Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 + Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 + Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 + Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 + Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 + Part-DB1\src\Entity\Parameters\GroupParameter.php:0 + Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 + Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 + Part-DB1\src\Entity\Parameters\PartParameter.php:0 + Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 + Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 + + + parameters.validator.min_lesser_max + Значення має бути меншим за максимальне значення ({{ compared_value }}). + + + + + Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 + Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 + Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 + Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 + Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 + Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 + Part-DB1\src\Entity\Parameters\GroupParameter.php:0 + Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 + Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 + Part-DB1\src\Entity\Parameters\PartParameter.php:0 + Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 + Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 + + + parameters.validator.max_greater_typical + Значення має бути більшим або рівним типовому значенню ({{ compared_value }}). + + + + + Part-DB1\src\Entity\UserSystem\User.php:0 + Part-DB1\src\Entity\UserSystem\User.php:0 + + + validator.user.username_already_used + Користувач із таким ім'ям вже існує + + + + + Part-DB1\src\Entity\UserSystem\User.php:0 + Part-DB1\src\Entity\UserSystem\User.php:0 + + + user.invalid_username + Ім'я користувача має містити лише літери, цифри, підкреслення, крапки, знаки плюс або мінус і не може починатися з @! + + + + + obsolete + + + validator.noneofitschild.self + Елемент не може бути власним батьківським елементом! + + + + + obsolete + + + validator.noneofitschild.children + Ви не можете призначити дочірній елемент батьківським (це призведе до циклів)! + + + + + validator.select_valid_category + Будь ласка, виберіть коректну категорію! + + + + + validator.part_lot.only_existing + Неможливо додати нові деталі до цього місця, оскільки воно позначене як «Тільки наявні» + + + + + validator.part_lot.location_full.no_increase + Місце заповнене. Кількість не можна збільшити (нове значення має бути меншим за {{ 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 + Щоб увімкнути префікси СІ, необхідно вказати символ одиниці вимірювання! + + + + + part.ipn.must_be_unique + Внутрішній номер деталі має бути унікальним. {{ 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 + Кількість позиційних позначень має відповідати кількості у специфікації (BOM)! + + + + + 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 + Це значення штрих-коду постачальника вже використано в іншій партії. Штрих-код має бути унікальним! + + + + + validator.year_2038_bug_on_32bit + Через технічні обмеження неможливо вибрати дати після 19.01.2038 на 32-бітних системах! + + + + + validator.fileSize.invalidFormat + Неправильний формат розміру файлу. Використовуйте ціле число із суфіксом K, M або G для позначення кіло-, мега- або гігабайтів. + + + + + validator.invalid_range + Вказаний діапазон є недопустимим! + + + + + validator.google_code.wrong_code + Неправильний код. Переконайтеся, що програма-автентифікатор налаштована правильно, а час на сервері та пристрої автентифікації встановлено вірно. + + + + + settings.synonyms.type_synonyms.collection_type.duplicate + Для цього типу та мови переклад уже визначено! + + + + diff --git a/translations/validators.zh.xlf b/translations/validators.zh.xlf index 08c9f014..90775edf 100644 --- a/translations/validators.zh.xlf +++ b/translations/validators.zh.xlf @@ -1,7 +1,7 @@ - + Part-DB1\src\Entity\Attachments\AttachmentContainingDBElement.php:0 Part-DB1\src\Entity\Attachments\AttachmentType.php:0 @@ -42,7 +42,7 @@ 预览附件必须是有效的图片 - + Part-DB1\src\Entity\Attachments\AttachmentType.php:0 Part-DB1\src\Entity\Base\AbstractCompany.php:0 @@ -87,7 +87,7 @@ 相同层下已存在同名元素 - + Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 @@ -107,7 +107,7 @@ 值必须小于或等于标称值 ({{compare_value}})。 - + Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 @@ -127,7 +127,7 @@ 值必须小于最大值 ({{compare_value}})。 - + Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 @@ -147,7 +147,7 @@ 值必须大于或等于标称值 ({{compare_value}})。 - + Part-DB1\src\Entity\UserSystem\User.php:0 Part-DB1\src\Entity\UserSystem\User.php:0 @@ -157,7 +157,7 @@ 已存在同名用户 - + Part-DB1\src\Entity\UserSystem\User.php:0 Part-DB1\src\Entity\UserSystem\User.php:0 @@ -167,7 +167,7 @@ 用户名只能包含字母、数字、下划线、点、加号或减号。 - + obsolete @@ -176,7 +176,7 @@ 一个元素不能是它自己的父元素。 - + obsolete @@ -185,167 +185,191 @@ 不能将子元素指定为父元素(会导致循环)。 - + validator.select_valid_category 请选择一个有效的类别。 - + validator.part_lot.only_existing 无法将新部件添加到此位置,因为它被标记为 "仅现有" - + validator.part_lot.location_full.no_increase 位置已满。数量无法增加(增加值必须小于 {{ 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 前缀,必须设置单位符号。 - + part.ipn.must_be_unique 内部部件号是唯一的。{{ value }} 已被使用! - + validator.project.bom_entry.name_or_part_needed 您必须为 BOM 条目选择部件,或为非部件 BOM 条目设置名称。 - + project.bom_entry.name_already_in_bom 已存在具有该名称的 BOM 条目。 - + project.bom_entry.part_already_in_bom 该部件已存在于 BOM 中。 - + project.bom_entry.mountnames_quantity_mismatch 挂载名称的数量必须与 BOM 数量匹配。 - + project.bom_entry.can_not_add_own_builds_part 您无法将项目自己的生产映射部件添加到 BOM 中。 - + project.bom_has_to_include_all_subelement_parts 项目 BOM 必须包括所有子项目生产的部件。项目 %project_name% 的 %part_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 如果将类型设置为 "other" 则必须为其设置一个描述性值。 - + validator.part_association.part_cannot_be_associated_with_itself 部件不能与自己关联。 - + validator.part_association.already_exists 与此部件的关联已存在。 - + validator.part_lot.vendor_barcode_must_be_unique 该供应商条码已在另一批次中使用。条形码必须是唯一的 - + validator.year_2038_bug_on_32bit 由于技术限制,在32位系统中无法选择2038年1月19日之后的日期! + + + validator.fileSize.invalidFormat + 文件大小格式无效。请使用整数并以 K、M 或 G 作为后缀,分别代表 KB、MB 或 GB。 + + + + + validator.invalid_range + 给定的范围无效 + + + + + validator.google_code.wrong_code + 验证码无效。请检查验证器应用设置是否正确,并确保服务器与认证设备的时间均已同步。 + + + + + settings.synonyms.type_synonyms.collection_type.duplicate + 该类型在此语言下已存在翻译定义! + + From b144f5e3839c2a9313679d7fa92059a4dfb00f3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 7 Feb 2026 17:13:49 +0100 Subject: [PATCH 227/235] Updated dependencies --- composer.lock | 91 ++++++++++++++++++++++++++------------------------- yarn.lock | 36 ++++++++++---------- 2 files changed, 64 insertions(+), 63 deletions(-) diff --git a/composer.lock b/composer.lock index 28d7c981..b56a61f9 100644 --- a/composer.lock +++ b/composer.lock @@ -3209,29 +3209,29 @@ }, { "name": "doctrine/deprecations", - "version": "1.1.5", + "version": "1.1.6", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38" + "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", - "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca", + "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "conflict": { - "phpunit/phpunit": "<=7.5 || >=13" + "phpunit/phpunit": "<=7.5 || >=14" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^12 || ^13", - "phpstan/phpstan": "1.4.10 || 2.1.11", + "doctrine/coding-standard": "^9 || ^12 || ^14", + "phpstan/phpstan": "1.4.10 || 2.1.30", "phpstan/phpstan-phpunit": "^1.0 || ^2", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12.4 || ^13.0", "psr/log": "^1 || ^2 || ^3" }, "suggest": { @@ -3251,9 +3251,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.5" + "source": "https://github.com/doctrine/deprecations/tree/1.1.6" }, - "time": "2025-04-07T20:06:18+00:00" + "time": "2026-02-07T07:09:04+00:00" }, { "name": "doctrine/doctrine-bundle", @@ -16522,16 +16522,16 @@ }, { "name": "tecnickcom/tc-lib-barcode", - "version": "2.4.22", + "version": "2.4.24", "source": { "type": "git", "url": "https://github.com/tecnickcom/tc-lib-barcode.git", - "reference": "ee997f9240f826a6a9274f55e2edb8f185871e30" + "reference": "605b92bfaf8ed2cba18a1c6603d90bc828aa3d5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tecnickcom/tc-lib-barcode/zipball/ee997f9240f826a6a9274f55e2edb8f185871e30", - "reference": "ee997f9240f826a6a9274f55e2edb8f185871e30", + "url": "https://api.github.com/repos/tecnickcom/tc-lib-barcode/zipball/605b92bfaf8ed2cba18a1c6603d90bc828aa3d5b", + "reference": "605b92bfaf8ed2cba18a1c6603d90bc828aa3d5b", "shasum": "" }, "require": { @@ -16546,7 +16546,7 @@ "pdepend/pdepend": "2.16.2", "phpcompatibility/php-compatibility": "^10.0.0@dev", "phpmd/phpmd": "2.15.0", - "phpunit/phpunit": "12.5.6 || 11.5.44 || 10.5.58", + "phpunit/phpunit": "12.5.8 || 11.5.50 || 10.5.63", "squizlabs/php_codesniffer": "4.0.1" }, "type": "library", @@ -16611,7 +16611,7 @@ ], "support": { "issues": "https://github.com/tecnickcom/tc-lib-barcode/issues", - "source": "https://github.com/tecnickcom/tc-lib-barcode/tree/2.4.22" + "source": "https://github.com/tecnickcom/tc-lib-barcode/tree/2.4.24" }, "funding": [ { @@ -16619,20 +16619,20 @@ "type": "custom" } ], - "time": "2026-01-24T12:40:59+00:00" + "time": "2026-02-04T19:57:11+00:00" }, { "name": "tecnickcom/tc-lib-color", - "version": "2.3.6", + "version": "2.3.8", "source": { "type": "git", "url": "https://github.com/tecnickcom/tc-lib-color.git", - "reference": "3d8ee89d83c1c60a275a0c1885f11370a4d86461" + "reference": "6331d57bd847d883652012a5c3594aa03aea4c50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tecnickcom/tc-lib-color/zipball/3d8ee89d83c1c60a275a0c1885f11370a4d86461", - "reference": "3d8ee89d83c1c60a275a0c1885f11370a4d86461", + "url": "https://api.github.com/repos/tecnickcom/tc-lib-color/zipball/6331d57bd847d883652012a5c3594aa03aea4c50", + "reference": "6331d57bd847d883652012a5c3594aa03aea4c50", "shasum": "" }, "require": { @@ -16643,7 +16643,7 @@ "pdepend/pdepend": "2.16.2", "phpcompatibility/php-compatibility": "^10.0.0@dev", "phpmd/phpmd": "2.15.0", - "phpunit/phpunit": "12.5.6 || 11.5.44 || 10.5.58", + "phpunit/phpunit": "12.5.8 || 11.5.50 || 10.5.63", "squizlabs/php_codesniffer": "4.0.1" }, "type": "library", @@ -16681,7 +16681,7 @@ ], "support": { "issues": "https://github.com/tecnickcom/tc-lib-color/issues", - "source": "https://github.com/tecnickcom/tc-lib-color/tree/2.3.6" + "source": "https://github.com/tecnickcom/tc-lib-color/tree/2.3.8" }, "funding": [ { @@ -16689,7 +16689,7 @@ "type": "custom" } ], - "time": "2026-01-24T12:39:16+00:00" + "time": "2026-02-04T19:55:28+00:00" }, { "name": "thecodingmachine/safe", @@ -19039,16 +19039,16 @@ }, { "name": "phpunit/phpunit", - "version": "11.5.50", + "version": "11.5.51", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "fdfc727f0fcacfeb8fcb30c7e5da173125b58be3" + "reference": "ad14159f92910b0f0e3928c13e9b2077529de091" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fdfc727f0fcacfeb8fcb30c7e5da173125b58be3", - "reference": "fdfc727f0fcacfeb8fcb30c7e5da173125b58be3", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ad14159f92910b0f0e3928c13e9b2077529de091", + "reference": "ad14159f92910b0f0e3928c13e9b2077529de091", "shasum": "" }, "require": { @@ -19063,7 +19063,7 @@ "phar-io/version": "^3.2.1", "php": ">=8.2", "phpunit/php-code-coverage": "^11.0.12", - "phpunit/php-file-iterator": "^5.1.0", + "phpunit/php-file-iterator": "^5.1.1", "phpunit/php-invoker": "^5.0.1", "phpunit/php-text-template": "^4.0.1", "phpunit/php-timer": "^7.0.1", @@ -19075,6 +19075,7 @@ "sebastian/exporter": "^6.3.2", "sebastian/global-state": "^7.0.2", "sebastian/object-enumerator": "^6.0.1", + "sebastian/recursion-context": "^6.0.3", "sebastian/type": "^5.1.3", "sebastian/version": "^5.0.2", "staabm/side-effects-detector": "^1.0.5" @@ -19120,7 +19121,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.50" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.51" }, "funding": [ { @@ -19144,25 +19145,25 @@ "type": "tidelift" } ], - "time": "2026-01-27T05:59:18+00:00" + "time": "2026-02-05T07:59:30+00:00" }, { "name": "rector/rector", - "version": "2.3.5", + "version": "2.3.6", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "9442f4037de6a5347ae157fe8e6c7cda9d909070" + "reference": "ca9ebb81d280cd362ea39474dabd42679e32ca6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/9442f4037de6a5347ae157fe8e6c7cda9d909070", - "reference": "9442f4037de6a5347ae157fe8e6c7cda9d909070", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/ca9ebb81d280cd362ea39474dabd42679e32ca6b", + "reference": "ca9ebb81d280cd362ea39474dabd42679e32ca6b", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "phpstan/phpstan": "^2.1.36" + "phpstan/phpstan": "^2.1.38" }, "conflict": { "rector/rector-doctrine": "*", @@ -19196,7 +19197,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.3.5" + "source": "https://github.com/rectorphp/rector/tree/2.3.6" }, "funding": [ { @@ -19204,7 +19205,7 @@ "type": "github" } ], - "time": "2026-01-28T15:22:48+00:00" + "time": "2026-02-06T14:25:06+00:00" }, { "name": "roave/security-advisories", @@ -19212,12 +19213,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "57534122edd70a2b3dbb02b65f2091efc57e4ab7" + "reference": "7ea2d110787f6807213e27a1255c6b858ad99d89" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/57534122edd70a2b3dbb02b65f2091efc57e4ab7", - "reference": "57534122edd70a2b3dbb02b65f2091efc57e4ab7", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/7ea2d110787f6807213e27a1255c6b858ad99d89", + "reference": "7ea2d110787f6807213e27a1255c6b858ad99d89", "shasum": "" }, "conflict": { @@ -19697,7 +19698,7 @@ "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.19", + "microweber/microweber": "<2.0.20", "mikehaertl/php-shellcommand": "<1.6.1", "mineadmin/mineadmin": "<=3.0.9", "miniorange/miniorange-saml": "<1.4.3", @@ -19839,7 +19840,7 @@ "prestashop/blockwishlist": ">=2,<2.1.1", "prestashop/contactform": ">=1.0.1,<4.3", "prestashop/gamification": "<2.3.2", - "prestashop/prestashop": "<8.2.3", + "prestashop/prestashop": "<8.2.4|>=9.0.0.0-alpha1,<9.0.3", "prestashop/productcomments": "<5.0.2", "prestashop/ps_checkout": "<4.4.1|>=5,<5.0.5", "prestashop/ps_contactinfo": "<=3.3.2", @@ -20114,7 +20115,7 @@ "wikimedia/parsoid": "<0.12.2", "willdurand/js-translation-bundle": "<2.1.1", "winter/wn-backend-module": "<1.2.4", - "winter/wn-cms-module": "<1.0.476|>=1.1,<1.1.11|>=1.2,<1.2.7", + "winter/wn-cms-module": "<=1.2.9", "winter/wn-dusk-plugin": "<2.1", "winter/wn-system-module": "<1.2.4", "wintercms/winter": "<=1.2.3", @@ -20223,7 +20224,7 @@ "type": "tidelift" } ], - "time": "2026-02-03T19:20:38+00:00" + "time": "2026-02-05T22:08:29+00:00" }, { "name": "sebastian/cli-parser", diff --git a/yarn.lock b/yarn.lock index f3355f71..6bcc4032 100644 --- a/yarn.lock +++ b/yarn.lock @@ -91,9 +91,9 @@ semver "^6.3.1" "@babel/generator@^7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.0.tgz#4cba5a76b3c71d8be31761b03329d5dc7768447f" - integrity sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ== + version "7.29.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.1.tgz#d09876290111abbb00ef962a7b83a5307fba0d50" + integrity sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw== dependencies: "@babel/parser" "^7.29.0" "@babel/types" "^7.29.0" @@ -2169,9 +2169,9 @@ integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== "@types/node@*": - version "25.2.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-25.2.0.tgz#015b7d228470c1dcbfc17fe9c63039d216b4d782" - integrity sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w== + version "25.2.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-25.2.1.tgz#378021f9e765bb65ba36de16f3c3a8622c1fa03d" + integrity sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg== dependencies: undici-types "~7.16.0" @@ -2790,9 +2790,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001759: - version "1.0.30001767" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001767.tgz#0279c498e862efb067938bba0a0aabafe8d0b730" - integrity sha512-34+zUAMhSH+r+9eKmYG+k2Rpt8XttfE4yXAjoZvkAPs15xcYQhyBYdalJ65BzivAvGRMViEjy6oKr/S91loekQ== + version "1.0.30001769" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz#1ad91594fad7dc233777c2781879ab5409f7d9c2" + integrity sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg== ccount@^2.0.0: version "2.0.1" @@ -4146,9 +4146,9 @@ get-symbol-description@^1.1.0: get-intrinsic "^1.2.6" get-tsconfig@^4.4.0: - version "4.13.1" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.13.1.tgz#ff96c0d98967df211c1ebad41f375ccf516c43fa" - integrity sha512-EoY1N2xCn44xU6750Sx7OjOIT59FkmstNc3X6y5xpz7D5cBtZRe/3pSlTkDJgqsOk3WwZPkWfonhhUJfttQo3w== + version "4.13.6" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.13.6.tgz#2fbfda558a98a691a798f123afd95915badce876" + integrity sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw== dependencies: resolve-pkg-maps "^1.0.0" @@ -6953,9 +6953,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.6.3: - version "7.7.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946" - integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== + version "7.7.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" + integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA== serialize-javascript@^5.0.1: version "5.0.1" @@ -7455,9 +7455,9 @@ to-regex-range@^5.0.1: is-number "^7.0.0" tom-select@^2.1.0: - version "2.4.5" - resolved "https://registry.yarnpkg.com/tom-select/-/tom-select-2.4.5.tgz#5c91355c9bf024ff5bc9389f8a2a370e4a28126a" - integrity sha512-ujZ5P10kRohKDFElklhkO4dRM+WkUEaytHhOuzbQkZ6MyiR8e2IwGKXab4v+ZNipE2queN8ztlb0MmRLqoM6QA== + version "2.4.6" + resolved "https://registry.yarnpkg.com/tom-select/-/tom-select-2.4.6.tgz#23acdfc09ee235eb752706d418c9c9ae6ccf67f0" + integrity sha512-Hhqi15AiTl0+FjaHVTXvUkF3t7x4W5LXUHxLYlzp7r8bcIgGJyz9M+3ZvrHdTRvEmV4EmNyJPbHJJnZOjr5Iig== dependencies: "@orchidjs/sifter" "^1.1.0" "@orchidjs/unicode-variants" "^1.1.2" From 81dde6fa687d147082fac991129e7d62a12b93c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 7 Feb 2026 17:18:31 +0100 Subject: [PATCH 228/235] Only allow to set the DELETE method via HTTP method overriding This hardens security --- config/packages/framework.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml index 6843a177..dd8f30a5 100644 --- a/config/packages/framework.yaml +++ b/config/packages/framework.yaml @@ -1,3 +1,4 @@ +# yaml-language-server: $schema=../../vendor/symfony/dependency-injection/Loader/schema/services.schema.json # see https://symfony.com/doc/current/reference/configuration/framework.html framework: secret: '%env(APP_SECRET)%' @@ -8,6 +9,7 @@ framework: # Must be set to true, to enable the change of HTTP method via _method parameter, otherwise our delete routines does not work anymore # TODO: Rework delete routines to work without _method parameter as it is not recommended anymore (see https://github.com/symfony/symfony/issues/45278) http_method_override: true + allowed_http_method_override: ['DELETE'] # Allow users to configure trusted hosts via .env variables # see https://symfony.com/doc/current/reference/configuration/framework.html#trusted-hosts From aec53bd1dd1d65622c28735a7ea0ee94f75386f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 7 Feb 2026 17:33:32 +0100 Subject: [PATCH 229/235] Do not output HTML chars in translations escaped in CDATA to ensure consistentcy with crowdin XMLs This should avoid some unnecessary diffs in the future --- src/Translation/NoCDATAXliffFileDumper.php | 88 ++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 src/Translation/NoCDATAXliffFileDumper.php diff --git a/src/Translation/NoCDATAXliffFileDumper.php b/src/Translation/NoCDATAXliffFileDumper.php new file mode 100644 index 00000000..a18e4e3b --- /dev/null +++ b/src/Translation/NoCDATAXliffFileDumper.php @@ -0,0 +1,88 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Translation; + +use DOMDocument; +use DOMXPath; +use Symfony\Component\DependencyInjection\Attribute\AsDecorator; +use Symfony\Component\Translation\Dumper\FileDumper; +use Symfony\Component\Translation\MessageCatalogue; + +/** + * The goal of this class, is to ensure that the XLIFF dumper does not output CDATA, but instead outputs the text + * using the normal XML escaping. Crowdin outputs the translations without CDATA, we want to be consistent with that, to + * prevent unnecessary diffs in the translation files when we update them with translations from Crowdin. + */ +#[AsDecorator("translation.dumper.xliff")] +class NoCDATAXliffFileDumper extends FileDumper +{ + + public function __construct(private readonly FileDumper $decorated) + { + + } + + private function convertCDataToEscapedText(string $xmlContent): string + { + $dom = new DOMDocument(); + // Preserve whitespace to keep Symfony's formatting intact + $dom->preserveWhiteSpace = true; + $dom->formatOutput = true; + + // Load the XML (handle internal errors if necessary) + $dom->loadXML($xmlContent); + + $xpath = new DOMXPath($dom); + // Find all CDATA sections + $cdataNodes = $xpath->query('//node()/comment()|//node()/text()|//node()') ; + + // We specifically want CDATA sections. XPath 1.0 doesn't have a direct + // "cdata-section()" selector easily, so we iterate through all nodes + // and check their type. + + $nodesToRemove = []; + foreach ($xpath->query('//text() | //*') as $node) { + foreach ($node->childNodes as $child) { + if ($child->nodeType === XML_CDATA_SECTION_NODE) { + // Create a new text node with the content of the CDATA + // DOMDocument will automatically escape special chars on save + $newTextNode = $dom->createTextNode($child->textContent); + $node->replaceChild($newTextNode, $child); + } + } + } + + return $dom->saveXML(); + } + + public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []): string + { + return $this->convertCDataToEscapedText($this->decorated->formatCatalogue($messages, $domain, $options)); + } + + protected function getExtension(): string + { + return $this->decorated->getExtension(); + } +} From dcdc990af1e92c1ecb313a384cf42709654f2fc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 7 Feb 2026 17:33:44 +0100 Subject: [PATCH 230/235] Fixed unnecessary colon in english translation --- translations/messages.en.xlf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 80c026e1..7aadca33 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -6383,7 +6383,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can log.collection_deleted.deleted - Deleted element: + Deleted element @@ -9928,13 +9928,13 @@ Element 1 -> Element 1.2 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! From 8104c474b7f820fc2c3d532aca8657c4baea15d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 7 Feb 2026 18:13:01 +0100 Subject: [PATCH 231/235] New translations messages.en.xlf (English) (#1226) --- translations/messages.en.xlf | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 7aadca33..483a6c88 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -14839,73 +14839,73 @@ Buerklin-API Authentication server: - + settings.ips.conrad Conrad - + settings.ips.conrad.shopID Shop ID - + settings.ips.conrad.shopID.description - The version of the conrad store you wanna get results from. This determines language, prices and currency of the results. If both a B2B and a B2C version if available, you should choose the B2C version if you want prices including VAT. + The version of the conrad store you wanna get results from. This determines language, prices and currency of the results. If both a B2B and a B2C version if available, you should choose the B2C version if you want prices including VAT. - + settings.ips.conrad.attachment_language_filter Language filter for attachments - + settings.ips.conrad.attachment_language_filter.description Only includes attachments in the selected languages in the results. - + settings.ips.generic_web_provider Generic Web URL Provider - + settings.ips.generic_web_provider.description This info provider allows to retrieve basic part information from many shop page URLs. - + settings.ips.generic_web_provider.enabled.help When the provider is enabled, users can make requests to arbitary websites on behalf of the Part-DB server. Only enable this, if you are aware of the potential consequences. - + info_providers.from_url.title Create [part] from URL - + info_providers.from_url.url.label URL - + info_providers.from_url.no_part_found No part found from the given URL. Are you sure this is a valid shop URL? - + info_providers.from_url.help Creates a part based on the given URL. It tries to delegate it to an existing info provider if possible, otherwise it will be tried to extract rudimentary data from the webpage's metadata. From f5841cc6978c0118c68bcfaa7fd7d2cf5d54054c Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Sat, 7 Feb 2026 18:33:31 +0100 Subject: [PATCH 232/235] Remove outdated file source and path notes from translation files (#1225) * Initial plan * Remove outdated file source and path notes from all translation files Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Preserve XML declaration format with double quotes Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> --- .../SchebTwoFactorBundle+intl-icu.de.xlf | 2 +- .../SchebTwoFactorBundle+intl-icu.en.xlf | 2 +- translations/SchebTwoFactorBundle.de.xlf | 5 +- translations/SchebTwoFactorBundle.en.xlf | 5 +- translations/frontend.cs.xlf | 23 +- translations/frontend.da.xlf | 23 +- translations/frontend.de.xlf | 23 +- translations/frontend.el.xlf | 19 +- translations/frontend.en.xlf | 23 +- translations/frontend.es.xlf | 23 +- translations/frontend.fr.xlf | 23 +- translations/frontend.hu.xlf | 23 +- translations/frontend.it.xlf | 23 +- translations/frontend.ja.xlf | 23 +- translations/frontend.nl.xlf | 19 +- translations/frontend.pl.xlf | 23 +- translations/frontend.ru.xlf | 23 +- translations/frontend.uk.xlf | 23 +- translations/frontend.zh.xlf | 23 +- translations/messages.cs.xlf | 2553 +--------------- translations/messages.da.xlf | 2529 +--------------- translations/messages.de.xlf | 2529 +--------------- translations/messages.el.xlf | 713 +---- translations/messages.en.xlf | 2529 +--------------- translations/messages.es.xlf | 2553 +--------------- translations/messages.fr.xlf | 2540 +--------------- translations/messages.hu.xlf | 2553 +--------------- translations/messages.it.xlf | 2553 +--------------- translations/messages.ja.xlf | 2540 +--------------- translations/messages.nl.xlf | 262 +- translations/messages.pl.xlf | 2561 +---------------- translations/messages.ru.xlf | 2561 +---------------- translations/messages.zh.xlf | 2561 +---------------- translations/security.cs.xlf | 2 +- translations/security.da.xlf | 2 +- translations/security.de.xlf | 2 +- translations/security.el.xlf | 2 +- translations/security.en.xlf | 2 +- translations/security.es.xlf | 2 +- translations/security.fr.xlf | 2 +- translations/security.hr.xlf | 2 +- translations/security.hu.xlf | 2 +- translations/security.it.xlf | 2 +- translations/security.ja.xlf | 2 +- translations/security.nl.xlf | 2 +- translations/security.pl.xlf | 2 +- translations/security.ru.xlf | 2 +- translations/security.uk.xlf | 2 +- translations/security.vi.xlf | 2 +- translations/security.zh.xlf | 2 +- translations/validators.cs.xlf | 126 +- translations/validators.da.xlf | 126 +- translations/validators.de.xlf | 126 +- translations/validators.el.xlf | 2 +- translations/validators.en.xlf | 126 +- translations/validators.fr.xlf | 126 +- translations/validators.hr.xlf | 126 +- translations/validators.hu.xlf | 126 +- translations/validators.it.xlf | 126 +- translations/validators.ja.xlf | 126 +- translations/validators.nl.xlf | 126 +- translations/validators.pl.xlf | 126 +- translations/validators.ru.xlf | 126 +- translations/validators.uk.xlf | 126 +- translations/validators.zh.xlf | 126 +- 65 files changed, 65 insertions(+), 33623 deletions(-) diff --git a/translations/SchebTwoFactorBundle+intl-icu.de.xlf b/translations/SchebTwoFactorBundle+intl-icu.de.xlf index e9fb4cc6..ebaf8ec0 100644 --- a/translations/SchebTwoFactorBundle+intl-icu.de.xlf +++ b/translations/SchebTwoFactorBundle+intl-icu.de.xlf @@ -8,4 +8,4 @@ - + \ No newline at end of file diff --git a/translations/SchebTwoFactorBundle+intl-icu.en.xlf b/translations/SchebTwoFactorBundle+intl-icu.en.xlf index 1b17584c..0d1b2cc7 100644 --- a/translations/SchebTwoFactorBundle+intl-icu.en.xlf +++ b/translations/SchebTwoFactorBundle+intl-icu.en.xlf @@ -8,4 +8,4 @@ - + \ No newline at end of file diff --git a/translations/SchebTwoFactorBundle.de.xlf b/translations/SchebTwoFactorBundle.de.xlf index 27ee3946..ebaf8ec0 100644 --- a/translations/SchebTwoFactorBundle.de.xlf +++ b/translations/SchebTwoFactorBundle.de.xlf @@ -2,13 +2,10 @@ - - Part-DB1\templates\security\2fa_base_form.html.twig:52 - login Login - + \ No newline at end of file diff --git a/translations/SchebTwoFactorBundle.en.xlf b/translations/SchebTwoFactorBundle.en.xlf index b43243a6..0d1b2cc7 100644 --- a/translations/SchebTwoFactorBundle.en.xlf +++ b/translations/SchebTwoFactorBundle.en.xlf @@ -2,13 +2,10 @@ - - Part-DB1\templates\security\2fa_base_form.html.twig:52 - login Login - + \ No newline at end of file diff --git a/translations/frontend.cs.xlf b/translations/frontend.cs.xlf index e13e5c4c..08bd2b5e 100644 --- a/translations/frontend.cs.xlf +++ b/translations/frontend.cs.xlf @@ -2,23 +2,6 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Hledat @@ -67,14 +50,10 @@ - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - search.submit Jdi! - + \ No newline at end of file diff --git a/translations/frontend.da.xlf b/translations/frontend.da.xlf index bb6a015d..9c6b3129 100644 --- a/translations/frontend.da.xlf +++ b/translations/frontend.da.xlf @@ -2,23 +2,6 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Søg @@ -67,14 +50,10 @@ - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - search.submit Kom nu! - + \ No newline at end of file diff --git a/translations/frontend.de.xlf b/translations/frontend.de.xlf index f08d0295..4eaded60 100644 --- a/translations/frontend.de.xlf +++ b/translations/frontend.de.xlf @@ -2,23 +2,6 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Suche @@ -67,14 +50,10 @@ - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - search.submit Los! - + \ No newline at end of file diff --git a/translations/frontend.el.xlf b/translations/frontend.el.xlf index 6d734823..bab41358 100644 --- a/translations/frontend.el.xlf +++ b/translations/frontend.el.xlf @@ -2,27 +2,10 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Αναζήτηση - + \ No newline at end of file diff --git a/translations/frontend.en.xlf b/translations/frontend.en.xlf index 4de45489..aa3cf2d9 100644 --- a/translations/frontend.en.xlf +++ b/translations/frontend.en.xlf @@ -2,23 +2,6 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Search @@ -67,14 +50,10 @@ - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - search.submit Go! - + \ No newline at end of file diff --git a/translations/frontend.es.xlf b/translations/frontend.es.xlf index dc96b800..361d9104 100644 --- a/translations/frontend.es.xlf +++ b/translations/frontend.es.xlf @@ -2,23 +2,6 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Buscar @@ -67,14 +50,10 @@ - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - search.submit ¡Vamos! - + \ No newline at end of file diff --git a/translations/frontend.fr.xlf b/translations/frontend.fr.xlf index 8363fabd..353c9002 100644 --- a/translations/frontend.fr.xlf +++ b/translations/frontend.fr.xlf @@ -2,23 +2,6 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Recherche @@ -31,14 +14,10 @@ - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - search.submit Rechercher! - + \ No newline at end of file diff --git a/translations/frontend.hu.xlf b/translations/frontend.hu.xlf index 123d0c46..bdcda170 100644 --- a/translations/frontend.hu.xlf +++ b/translations/frontend.hu.xlf @@ -2,23 +2,6 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Keresés @@ -67,14 +50,10 @@ - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - search.submit Indítás! - + \ No newline at end of file diff --git a/translations/frontend.it.xlf b/translations/frontend.it.xlf index 9df0eee0..56d0e0f0 100644 --- a/translations/frontend.it.xlf +++ b/translations/frontend.it.xlf @@ -2,23 +2,6 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Ricerca @@ -67,14 +50,10 @@ - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - search.submit Cerca! - + \ No newline at end of file diff --git a/translations/frontend.ja.xlf b/translations/frontend.ja.xlf index 91a60f0d..90ffdf5f 100644 --- a/translations/frontend.ja.xlf +++ b/translations/frontend.ja.xlf @@ -2,23 +2,6 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder 検索 @@ -31,14 +14,10 @@ - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - search.submit 検索 - + \ No newline at end of file diff --git a/translations/frontend.nl.xlf b/translations/frontend.nl.xlf index 67514891..13187f62 100644 --- a/translations/frontend.nl.xlf +++ b/translations/frontend.nl.xlf @@ -2,27 +2,10 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Zoeken - + \ No newline at end of file diff --git a/translations/frontend.pl.xlf b/translations/frontend.pl.xlf index 31f59cf4..dfdd8887 100644 --- a/translations/frontend.pl.xlf +++ b/translations/frontend.pl.xlf @@ -2,23 +2,6 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Szukaj @@ -67,14 +50,10 @@ - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - search.submit Idź! - + \ No newline at end of file diff --git a/translations/frontend.ru.xlf b/translations/frontend.ru.xlf index f63367d9..a09cb348 100644 --- a/translations/frontend.ru.xlf +++ b/translations/frontend.ru.xlf @@ -2,23 +2,6 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Поиск @@ -67,14 +50,10 @@ - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - search.submit Поехали! - + \ No newline at end of file diff --git a/translations/frontend.uk.xlf b/translations/frontend.uk.xlf index 210f7036..86f51f95 100644 --- a/translations/frontend.uk.xlf +++ b/translations/frontend.uk.xlf @@ -2,23 +2,6 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Пошук @@ -67,14 +50,10 @@ - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - search.submit Почати! - + \ No newline at end of file diff --git a/translations/frontend.zh.xlf b/translations/frontend.zh.xlf index b2c289f0..d2ea6fd0 100644 --- a/translations/frontend.zh.xlf +++ b/translations/frontend.zh.xlf @@ -2,23 +2,6 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder 搜索 @@ -67,14 +50,10 @@ - - Part-DB1\templates\_navbar_search.html.twig:68 - Part-DB1\templates\_navbar_search.html.twig:62 - search.submit GO! - + \ No newline at end of file diff --git a/translations/messages.cs.xlf b/translations/messages.cs.xlf index 298e1479..74ca2a26 100644 --- a/translations/messages.cs.xlf +++ b/translations/messages.cs.xlf @@ -2,11 +2,6 @@ - - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - attachment_type.caption Typy souborů pro přílohy @@ -14,7 +9,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:12 new @@ -24,7 +18,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:16 new @@ -33,45 +26,18 @@ - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - templates\AdminPages\CategoryAdmin.html.twig:4 - templates\base.html.twig:163 - templates\base.html.twig:170 - templates\base.html.twig:197 - templates\base.html.twig:225 - category.labelp Kategorie - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:19 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:11 - templates\AdminPages\CategoryAdmin.html.twig:8 - admin.options Možnosti - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - templates\AdminPages\CategoryAdmin.html.twig:9 - admin.advanced Pokročilé @@ -79,7 +45,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:13 new @@ -89,7 +54,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:17 new @@ -98,30 +62,18 @@ - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - currency.caption Měna - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - currency.iso_code.caption Kód ISO - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - currency.symbol.caption Symbol měny @@ -129,7 +81,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:29 new @@ -139,7 +90,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:33 new @@ -149,7 +99,6 @@ - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 new @@ -159,7 +108,6 @@ - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:12 new @@ -168,89 +116,36 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Hledat - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - templates\AdminPages\EntityAdminBase.html.twig:13 - templates\base.html.twig:166 - templates\base.html.twig:193 - templates\base.html.twig:221 - expandAll Rozbalit vše - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - templates\AdminPages\EntityAdminBase.html.twig:17 - templates\base.html.twig:167 - templates\base.html.twig:194 - templates\base.html.twig:222 - reduceAll Sbalit vše - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - part.info.timetravel_hint Takto vypadal díl před %timestamp%. <i>Upozorňujeme, že tato funkce je experimentální, takže informace nemusí být správné.</i> - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - templates\AdminPages\EntityAdminBase.html.twig:42 - standard.label Vlastnosti - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - templates\AdminPages\EntityAdminBase.html.twig:43 - infos.label Informace @@ -258,8 +153,6 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 new @@ -268,120 +161,66 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - templates\AdminPages\EntityAdminBase.html.twig:45 - export.label Export - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - templates\AdminPages\EntityAdminBase.html.twig:47 - import_export.label Import / Export - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - mass_creation.label Hromadné vytváření - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - templates\AdminPages\EntityAdminBase.html.twig:59 - admin.common Obecné - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - admin.attachments Přílohy - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:90 - admin.parameters Parametr - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:179 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:167 - templates\AdminPages\EntityAdminBase.html.twig:142 - export_all.label Exportovat všechny prvky - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:185 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:173 - mass_creation.help Každý řádek bude interpretován jako název prvku, který bude vytvořen. Vnořené struktury můžete vytvářet pomocí odsazení. - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - templates\AdminPages\EntityAdminBase.html.twig:35 - edit.caption Upravit prvek "%name" - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - templates\AdminPages\EntityAdminBase.html.twig:37 - new.caption Nový prvek - - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - templates\base.html.twig:172 - templates\base.html.twig:199 - templates\base.html.twig:227 - footprint.labelp Otisky @@ -389,7 +228,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:13 new @@ -399,7 +237,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:17 new @@ -408,22 +245,12 @@ - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - group.edit.caption Skupiny - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - user.edit.permissions Oprávnění @@ -431,7 +258,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:24 new @@ -441,7 +267,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:28 new @@ -450,27 +275,18 @@ - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:4 - label_profile.caption Profily štítků - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:8 - label_profile.advanced Pokročilé - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:9 - label_profile.comment Poznámky @@ -478,7 +294,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:55 new @@ -488,7 +303,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:59 new @@ -497,11 +311,6 @@ - - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - templates\AdminPages\ManufacturerAdmin.html.twig:4 - manufacturer.caption Výrobci @@ -509,7 +318,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:8 new @@ -519,7 +327,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:12 new @@ -528,10 +335,6 @@ - - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - measurement_unit.caption Měrné jednotky @@ -544,15 +347,6 @@ - - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:5 - Part-DB1\templates\_sidebar.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:8 - templates\base.html.twig:171 - templates\base.html.twig:198 - templates\base.html.twig:226 - storelocation.labelp Umístění @@ -560,7 +354,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:32 new @@ -570,7 +363,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:36 new @@ -580,7 +372,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 new @@ -590,7 +381,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:20 new @@ -599,120 +389,66 @@ - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - user.edit.caption Uživatelé - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - user.edit.configuration Konfigurace - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - user.edit.password Heslo - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - user.edit.tfa.caption Dvoufaktorové ověřování - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - user.edit.tfa.google_active Aplikace Authenticator aktivní - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - tfa_backup.remaining_tokens Počet zbývajících záložních kódů - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - tfa_backup.generation_date Datum generování záložních kódů - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - user.edit.tfa.disabled Metoda není povolena - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - user.edit.tfa.u2f_keys_count Aktivní bezpečnostní klíče - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_title Opravdu chcete pokračovat? - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_message Tím deaktivujete <b>všechny aktivní dvoufaktorové metody ověřování uživatele</b> a odstraníte <b>záložní kódy</b>! @@ -722,10 +458,6 @@ Uživatel bude muset znovu nastavit všechny metody dvoufaktorového ověřován - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - user.edit.tfa.disable_tfa.btn Zakázat všechny metody dvoufaktorového ověřování @@ -733,7 +465,6 @@ Uživatel bude muset znovu nastavit všechny metody dvoufaktorového ověřován - Part-DB1\templates\AdminPages\UserAdmin.html.twig:85 new @@ -743,7 +474,6 @@ Uživatel bude muset znovu nastavit všechny metody dvoufaktorového ověřován - Part-DB1\templates\AdminPages\UserAdmin.html.twig:89 new @@ -752,13 +482,6 @@ Uživatel bude muset znovu nastavit všechny metody dvoufaktorového ověřován - - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:63 - attachment.delete Smazat @@ -771,102 +494,48 @@ Uživatel bude muset znovu nastavit všechny metody dvoufaktorového ověřován - - Part-DB1\templates\AdminPages\_attachments.html.twig:49 - Part-DB1\templates\Parts\edit\_attachments.html.twig:47 - Part-DB1\templates\AdminPages\_attachments.html.twig:47 - Part-DB1\templates\Parts\edit\_attachments.html.twig:45 - attachment.preview.alt Náhled přílohy - - Part-DB1\templates\AdminPages\_attachments.html.twig:52 - Part-DB1\templates\Parts\edit\_attachments.html.twig:50 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 - Part-DB1\templates\AdminPages\_attachments.html.twig:50 - Part-DB1\templates\Parts\edit\_attachments.html.twig:48 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:45 - attachment.view_local Zobrazit místní kopii - - Part-DB1\templates\AdminPages\_attachments.html.twig:58 - Part-DB1\templates\Parts\edit\_attachments.html.twig:56 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:43 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - Part-DB1\templates\AdminPages\_attachments.html.twig:56 - Part-DB1\templates\Parts\edit\_attachments.html.twig:54 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - attachment.file_not_found Soubor nebyl nalezen - - Part-DB1\templates\AdminPages\_attachments.html.twig:66 - Part-DB1\templates\Parts\edit\_attachments.html.twig:64 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:48 - Part-DB1\templates\Parts\edit\_attachments.html.twig:62 - attachment.secure Soukromá příloha - - Part-DB1\templates\AdminPages\_attachments.html.twig:79 - Part-DB1\templates\Parts\edit\_attachments.html.twig:77 - Part-DB1\templates\AdminPages\_attachments.html.twig:77 - Part-DB1\templates\Parts\edit\_attachments.html.twig:75 - attachment.create Přidat přílohu - - Part-DB1\templates\AdminPages\_attachments.html.twig:84 - Part-DB1\templates\Parts\edit\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - Part-DB1\templates\AdminPages\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_attachments.html.twig:80 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - part_lot.edit.delete.confirm Opravdu chcete tuto zásobu smazat? To nelze vzít zpět! - - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - templates\AdminPages\_delete_form.html.twig:2 - entity.delete.confirm_title Opravdu chcete smazat %name%? - - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - templates\AdminPages\_delete_form.html.twig:3 - entity.delete.message To nelze vrátit zpět! @@ -875,11 +544,6 @@ Související prvky budou přesunuty nahoru. - - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - templates\AdminPages\_delete_form.html.twig:9 - entity.delete Odstranit prvek @@ -887,12 +551,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:45 - Part-DB1\src\Form\Part\PartBaseType.php:286 - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:43 - Part-DB1\src\Form\Part\PartBaseType.php:267 new @@ -901,561 +559,300 @@ Související prvky budou přesunuty nahoru. - - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - templates\AdminPages\_delete_form.html.twig:12 - entity.delete.recursive Odstranit rekurzivně (všechny související prvky) - - Part-DB1\templates\AdminPages\_duplicate.html.twig:3 - entity.duplicate Duplikovat prvek - - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - templates\AdminPages\_export_form.html.twig:4 - src\Form\ImportType.php:67 - export.format Formát souboru - - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - templates\AdminPages\_export_form.html.twig:16 - export.level Úroveň podrobností - - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - templates\AdminPages\_export_form.html.twig:19 - export.level.simple Jednoduchý - - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - templates\AdminPages\_export_form.html.twig:20 - export.level.extended Rozšířený - - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - templates\AdminPages\_export_form.html.twig:21 - export.level.full Úplný - - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - templates\AdminPages\_export_form.html.twig:31 - export.include_children Zahrnutí podřízených prvků do exportu - - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - templates\AdminPages\_export_form.html.twig:39 - export.btn Export - - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - templates\AdminPages\EntityAdminBase.html.twig:94 - templates\Parts\edit_part_info.html.twig:12 - templates\Parts\show_part_info.html.twig:11 - id.label ID - - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:76 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:77 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:77 - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:59 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:60 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:53 - templates\AdminPages\EntityAdminBase.html.twig:101 - templates\Parts\show_part_info.html.twig:248 - createdAt Vytvořeno - - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:73 - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:49 - templates\AdminPages\EntityAdminBase.html.twig:114 - templates\Parts\show_part_info.html.twig:263 - lastModified Naposledy upraveno - - Part-DB1\templates\AdminPages\_info.html.twig:38 - Part-DB1\templates\AdminPages\_info.html.twig:38 - entity.info.parts_count Počet dílů s tímto prvkem - - Part-DB1\templates\AdminPages\_parameters.html.twig:6 - Part-DB1\templates\helper.twig:125 - Part-DB1\templates\Parts\edit\_specifications.html.twig:6 - specifications.property Parametr - - Part-DB1\templates\AdminPages\_parameters.html.twig:7 - Part-DB1\templates\Parts\edit\_specifications.html.twig:7 - specifications.symbol Symbol - - Part-DB1\templates\AdminPages\_parameters.html.twig:8 - Part-DB1\templates\Parts\edit\_specifications.html.twig:8 - specifications.value_min Min. - - Part-DB1\templates\AdminPages\_parameters.html.twig:9 - Part-DB1\templates\Parts\edit\_specifications.html.twig:9 - specifications.value_typ Typ. - - Part-DB1\templates\AdminPages\_parameters.html.twig:10 - Part-DB1\templates\Parts\edit\_specifications.html.twig:10 - specifications.value_max Max. - - Part-DB1\templates\AdminPages\_parameters.html.twig:11 - Part-DB1\templates\Parts\edit\_specifications.html.twig:11 - specifications.unit Jednotka - - Part-DB1\templates\AdminPages\_parameters.html.twig:12 - Part-DB1\templates\Parts\edit\_specifications.html.twig:12 - specifications.text Text - - Part-DB1\templates\AdminPages\_parameters.html.twig:13 - Part-DB1\templates\Parts\edit\_specifications.html.twig:13 - specifications.group Skupina - - Part-DB1\templates\AdminPages\_parameters.html.twig:26 - Part-DB1\templates\Parts\edit\_specifications.html.twig:26 - specification.create Nový parametr - - Part-DB1\templates\AdminPages\_parameters.html.twig:31 - Part-DB1\templates\Parts\edit\_specifications.html.twig:31 - parameter.delete.confirm Opravdu chcete tento parametr odstranit? - - Part-DB1\templates\attachment_list.html.twig:3 - Part-DB1\templates\attachment_list.html.twig:3 - attachment.list.title Seznam příloh - - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - part_list.loading.caption Načítání - - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - part_list.loading.message To může chvíli trvat. Pokud tato zpráva nezmizí, zkuste stránku načíst znovu. - - Part-DB1\templates\base.html.twig:68 - Part-DB1\templates\base.html.twig:68 - templates\base.html.twig:246 - vendor.base.javascript_hint Chcete-li používat všechny funkce, aktivujte prosím JavaScript! - - Part-DB1\templates\base.html.twig:73 - Part-DB1\templates\base.html.twig:73 - sidebar.big.toggle Zobrazit/skrýt postranní panel - - Part-DB1\templates\base.html.twig:95 - Part-DB1\templates\base.html.twig:95 - templates\base.html.twig:271 - loading.caption Načítání: - - Part-DB1\templates\base.html.twig:96 - Part-DB1\templates\base.html.twig:96 - templates\base.html.twig:272 - loading.message To může chvíli trvat. Pokud tato zpráva zůstává dlouho, zkuste stránku znovu načíst. - - Part-DB1\templates\base.html.twig:101 - Part-DB1\templates\base.html.twig:101 - templates\base.html.twig:277 - loading.bar Načítání... - - Part-DB1\templates\base.html.twig:112 - Part-DB1\templates\base.html.twig:112 - templates\base.html.twig:288 - back_to_top Zpět na začátek stránky - - Part-DB1\templates\Form\permissionLayout.html.twig:35 - Part-DB1\templates\Form\permissionLayout.html.twig:35 - permission.edit.permission Oprávnění - - Part-DB1\templates\Form\permissionLayout.html.twig:36 - Part-DB1\templates\Form\permissionLayout.html.twig:36 - permission.edit.value Hodnota - - Part-DB1\templates\Form\permissionLayout.html.twig:53 - Part-DB1\templates\Form\permissionLayout.html.twig:53 - permission.legend.title Vysvětlení režimů - - Part-DB1\templates\Form\permissionLayout.html.twig:57 - Part-DB1\templates\Form\permissionLayout.html.twig:57 - permission.legend.disallow Zakázáno - - Part-DB1\templates\Form\permissionLayout.html.twig:61 - Part-DB1\templates\Form\permissionLayout.html.twig:61 - permission.legend.allow Povoleno - - Part-DB1\templates\Form\permissionLayout.html.twig:65 - Part-DB1\templates\Form\permissionLayout.html.twig:65 - permission.legend.inherit Převzít z (nadřazené) skupiny - - Part-DB1\templates\helper.twig:3 - Part-DB1\templates\helper.twig:3 - bool.true Ano - - Part-DB1\templates\helper.twig:5 - Part-DB1\templates\helper.twig:5 - bool.false Ne - - Part-DB1\templates\helper.twig:92 - Part-DB1\templates\helper.twig:87 - Yes Ano - - Part-DB1\templates\helper.twig:94 - Part-DB1\templates\helper.twig:89 - No Ne - - Part-DB1\templates\helper.twig:126 - specifications.value Hodnota - - Part-DB1\templates\homepage.html.twig:7 - Part-DB1\templates\homepage.html.twig:7 - templates\homepage.html.twig:7 - version.caption Verze - - Part-DB1\templates\homepage.html.twig:22 - Part-DB1\templates\homepage.html.twig:22 - templates\homepage.html.twig:19 - homepage.license Informace o licenci - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.caption Stránka projektu - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.text Zdrojové kódy, soubory ke stažení, hlášení chyb, seznam úkolů atd. najdete na <a href="%href%" class="link-external" target="_blank">stránce projektu GitHub</a> - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - homepage.help.caption Nápověda - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - homepage.help.text Nápovědu a tipy najdete na Wiki na <a href="%href%" class="link-external" target="_blank">stránce GitHub</a> - - Part-DB1\templates\homepage.html.twig:33 - Part-DB1\templates\homepage.html.twig:33 - templates\homepage.html.twig:30 - homepage.forum.caption Fórum @@ -1463,8 +860,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\homepage.html.twig:45 - Part-DB1\templates\homepage.html.twig:45 new @@ -1473,138 +868,90 @@ Související prvky budou přesunuty nahoru. - - Part-DB1\templates\LabelSystem\dialog.html.twig:3 - Part-DB1\templates\LabelSystem\dialog.html.twig:6 - label_generator.title Generátor štítků - - Part-DB1\templates\LabelSystem\dialog.html.twig:16 - label_generator.common Obecné - - Part-DB1\templates\LabelSystem\dialog.html.twig:20 - label_generator.advanced Pokročilé - - Part-DB1\templates\LabelSystem\dialog.html.twig:24 - label_generator.profiles Profily - - Part-DB1\templates\LabelSystem\dialog.html.twig:58 - label_generator.selected_profile Aktuálně vybraný profil - - Part-DB1\templates\LabelSystem\dialog.html.twig:62 - label_generator.edit_profile Upravit profil - - Part-DB1\templates\LabelSystem\dialog.html.twig:75 - label_generator.load_profile Načíst profil - - Part-DB1\templates\LabelSystem\dialog.html.twig:102 - label_generator.download Stáhnout - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:3 - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:5 - label_generator.label_btn Vytvořit štítek - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:20 - label_generator.label_empty Nový prázdný štítek - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:3 - label_scanner.title Čtečka štítků - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - label_scanner.no_cam_found.title Nebyla nalezena žádná webová kamera - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - label_scanner.no_cam_found.text Potřebujete webovou kameru a povolení k použití funkce čtečky. Kód čárového kódu můžete zadat ručně níže. - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:27 - label_scanner.source_select Vybrat zdroj - - Part-DB1\templates\LogSystem\log_list.html.twig:3 - Part-DB1\templates\LogSystem\log_list.html.twig:3 - log.list.title Systémový protokol @@ -1612,8 +959,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\LogSystem\_log_table.html.twig:1 - Part-DB1\templates\LogSystem\_log_table.html.twig:1 new @@ -1623,8 +968,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\LogSystem\_log_table.html.twig:2 - Part-DB1\templates\LogSystem\_log_table.html.twig:2 new @@ -1633,194 +976,114 @@ Související prvky budou přesunuty nahoru. - - Part-DB1\templates\mail\base.html.twig:24 - Part-DB1\templates\mail\base.html.twig:24 - mail.footer.email_sent_by Tento e-mail byl automaticky odeslán - - Part-DB1\templates\mail\base.html.twig:24 - Part-DB1\templates\mail\base.html.twig:24 - mail.footer.dont_reply Na tento e-mail neodpovídejte. - - Part-DB1\templates\mail\pw_reset.html.twig:6 - Part-DB1\templates\mail\pw_reset.html.twig:6 - email.hi %name% Ahoj %name% - - Part-DB1\templates\mail\pw_reset.html.twig:7 - Part-DB1\templates\mail\pw_reset.html.twig:7 - email.pw_reset.message někdo (doufejme, že vy) požádal o obnovení vašeho hesla. Pokud jste tuto žádost nepodali vy, ignorujte tento e-mail. - - Part-DB1\templates\mail\pw_reset.html.twig:9 - Part-DB1\templates\mail\pw_reset.html.twig:9 - email.pw_reset.button Klikněte zde pro obnovení hesla - - Part-DB1\templates\mail\pw_reset.html.twig:11 - Part-DB1\templates\mail\pw_reset.html.twig:11 - email.pw_reset.fallback Pokud vám to nefunguje, přejděte na <a href="%url%">%url%</a> a zadejte následující informace. - - Part-DB1\templates\mail\pw_reset.html.twig:16 - Part-DB1\templates\mail\pw_reset.html.twig:16 - email.pw_reset.username Uživatelské jméno - - Part-DB1\templates\mail\pw_reset.html.twig:19 - Part-DB1\templates\mail\pw_reset.html.twig:19 - email.pw_reset.token Token - - Part-DB1\templates\mail\pw_reset.html.twig:24 - Part-DB1\templates\mail\pw_reset.html.twig:24 - email.pw_reset.valid_unit %date% Token obnovení bude platný do <i>%date%</i>. - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:18 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:78 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - orderdetail.delete Odstranit - - 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 Minimální množství slevy - - 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 Cena - - 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 za množství - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - pricedetail.create Přidat cenu - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - templates\Parts\edit_part_info.html.twig:4 - part.edit.title Upravit díl - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - templates\Parts\edit_part_info.html.twig:9 - part.edit.card_title Upravit díl - - 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 Obecné - - 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 Výrobce - - 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 Pokročilé @@ -1887,279 +1150,156 @@ Související prvky budou přesunuty nahoru. - - 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 Zásoby - - 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 Přílohy - - 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 Informace o nákupu - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 - part.edit.tab.specifications Parametry - - 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 Poznámky - - 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 Přidat nový díl - - Part-DB1\templates\Parts\edit\_lots.html.twig:5 - Part-DB1\templates\Parts\edit\_lots.html.twig:5 - part_lot.delete Odstranit - - Part-DB1\templates\Parts\edit\_lots.html.twig:28 - Part-DB1\templates\Parts\edit\_lots.html.twig:28 - part_lot.create Přidat zásoby - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 - orderdetail.create Přidat distributora - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 - pricedetails.edit.delete.confirm Opravdu chcete tuto cenu smazat? To nelze vzít zpět. - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:62 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:61 - orderdetails.edit.delete.confirm Opravdu chcete smazat informace o distributorovi? To nelze vzít zpět! - - 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 Detailní informace o dílu - - 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 Zásoby - - 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 Poznámky - - Part-DB1\templates\Parts\info\show_part_info.html.twig:64 - part.info.specifications Parametry - - 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 Přílohy - - 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 Informace o nákupu - - 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 Historie - - 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 Nástroje - - 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 Rozšířené informace - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 - attachment.name Jméno - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 - attachment.attachment_type Typ přílohy - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 - attachment.file_name Název souboru - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 - attachment.file_size Velikost souboru - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:54 - attachment.preview Náhled - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:67 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:50 - attachment.download_local Stáhnout místní kopii @@ -2167,8 +1307,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 new @@ -2177,14 +1315,6 @@ Související prvky budou přesunuty nahoru. - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Unknown Neznámý @@ -2192,10 +1322,6 @@ Související prvky budou přesunuty nahoru. - 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 @@ -2205,8 +1331,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 new @@ -2215,49 +1339,24 @@ Související prvky budou přesunuty nahoru. - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - part.isFavorite Oblíbené - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 - part.minOrderAmount Minimální množství - - 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 Výrobce - - 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 Jméno @@ -2265,8 +1364,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Parts\info\_main_infos.html.twig:27 - Part-DB1\templates\Parts\info\_main_infos.html.twig:27 new @@ -2275,767 +1372,432 @@ Související prvky budou přesunuty nahoru. - - 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 Popis - - 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 Kategorie - - 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 Skladem - - 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 Minimální skladová zásoba - - 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 Otisk - - 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 Průměrná cena - - Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - part.supplier.name Jméno - - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - part.supplier.partnr Objednací číslo - - Part-DB1\templates\Parts\info\_order_infos.html.twig:28 - Part-DB1\templates\Parts\info\_order_infos.html.twig:28 - part.order.minamount Minimální množství - - Part-DB1\templates\Parts\info\_order_infos.html.twig:29 - Part-DB1\templates\Parts\info\_order_infos.html.twig:29 - part.order.price Cena - - Part-DB1\templates\Parts\info\_order_infos.html.twig:31 - Part-DB1\templates\Parts\info\_order_infos.html.twig:31 - part.order.single_price Jednotková cena - - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 - Part-DB1\templates\Parts\info\_part_lots.html.twig:6 - part_lots.description Popis - - Part-DB1\templates\Parts\info\_part_lots.html.twig:8 - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 - part_lots.storage_location Umístění - - Part-DB1\templates\Parts\info\_part_lots.html.twig:9 - Part-DB1\templates\Parts\info\_part_lots.html.twig:8 - part_lots.amount Množství - - Part-DB1\templates\Parts\info\_part_lots.html.twig:24 - Part-DB1\templates\Parts\info\_part_lots.html.twig:22 - part_lots.location_unknown Umístění neznámé - - Part-DB1\templates\Parts\info\_part_lots.html.twig:31 - Part-DB1\templates\Parts\info\_part_lots.html.twig:29 - part_lots.instock_unknown Množství neznámé - - Part-DB1\templates\Parts\info\_part_lots.html.twig:40 - Part-DB1\templates\Parts\info\_part_lots.html.twig:38 - part_lots.expiration_date Datum vypršení platnosti - - Part-DB1\templates\Parts\info\_part_lots.html.twig:48 - Part-DB1\templates\Parts\info\_part_lots.html.twig:46 - part_lots.is_expired Platnost vypršela - - Part-DB1\templates\Parts\info\_part_lots.html.twig:55 - Part-DB1\templates\Parts\info\_part_lots.html.twig:53 - part_lots.need_refill Potřebuje doplnit - - Part-DB1\templates\Parts\info\_picture.html.twig:15 - Part-DB1\templates\Parts\info\_picture.html.twig:15 - part.info.prev_picture Předchozí obrázek - - Part-DB1\templates\Parts\info\_picture.html.twig:19 - Part-DB1\templates\Parts\info\_picture.html.twig:19 - part.info.next_picture Další obrázek - - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - part.mass.tooltip Hromadné - - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - part.needs_review.badge Vyžaduje kontrolu - - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - part.favorite.badge Oblíbené - - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - part.obsolete.badge Již není k dispozici - - Part-DB1\templates\Parts\info\_specifications.html.twig:10 - parameters.extracted_from_description Automaticky extrahováno z popisu - - Part-DB1\templates\Parts\info\_specifications.html.twig:15 - parameters.auto_extracted_from_comment Automaticky extrahované z poznámek - - Part-DB1\templates\Parts\info\_tools.html.twig:6 - Part-DB1\templates\Parts\info\_tools.html.twig:4 - templates\Parts\show_part_info.html.twig:125 - part.edit.btn Upravit díl - - Part-DB1\templates\Parts\info\_tools.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:14 - templates\Parts\show_part_info.html.twig:135 - part.clone.btn Duplikovat díl - - Part-DB1\templates\Parts\info\_tools.html.twig:24 - Part-DB1\templates\Parts\lists\_action_bar.html.twig:4 - templates\Parts\show_part_info.html.twig:143 - part.create.btn Přidat nový díl - - Part-DB1\templates\Parts\info\_tools.html.twig:31 - Part-DB1\templates\Parts\info\_tools.html.twig:29 - part.delete.confirm_title Opravdu chcete tento díl odstranit? - - Part-DB1\templates\Parts\info\_tools.html.twig:32 - Part-DB1\templates\Parts\info\_tools.html.twig:30 - part.delete.message Tento díl a všechny související informace (např. přílohy, informace o ceně atd.) budou odstraněny. Toto nelze vrátit zpět! - - Part-DB1\templates\Parts\info\_tools.html.twig:39 - Part-DB1\templates\Parts\info\_tools.html.twig:37 - part.delete Odstranit díl - - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - parts_list.all.title Všechny díly - - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - parts_list.category.title Díly s kategorií - - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - parts_list.footprint.title Díly s otiskem - - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - parts_list.manufacturer.title Díly s výrobcem - - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - parts_list.search.title Vyhledat díly - - 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 Díly s místy uložení - - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - parts_list.supplier.title Díly s dodavatelem - - Part-DB1\templates\Parts\lists\tags_list.html.twig:4 - Part-DB1\templates\Parts\lists\tags_list.html.twig:4 - parts_list.tags.title Díly se štítkem - - Part-DB1\templates\Parts\lists\_info_card.html.twig:22 - Part-DB1\templates\Parts\lists\_info_card.html.twig:17 - entity.info.common.tab Obecné - - Part-DB1\templates\Parts\lists\_info_card.html.twig:26 - Part-DB1\templates\Parts\lists\_info_card.html.twig:20 - entity.info.statistics.tab Statistika - - Part-DB1\templates\Parts\lists\_info_card.html.twig:31 - entity.info.attachments.tab Attachments - - Part-DB1\templates\Parts\lists\_info_card.html.twig:37 - entity.info.parameters.tab Parametry - - Part-DB1\templates\Parts\lists\_info_card.html.twig:54 - Part-DB1\templates\Parts\lists\_info_card.html.twig:30 - entity.info.name Jméno - - Part-DB1\templates\Parts\lists\_info_card.html.twig:58 - Part-DB1\templates\Parts\lists\_info_card.html.twig:96 - Part-DB1\templates\Parts\lists\_info_card.html.twig:34 - Part-DB1\templates\Parts\lists\_info_card.html.twig:67 - entity.info.parent Nadřazený - - Part-DB1\templates\Parts\lists\_info_card.html.twig:70 - Part-DB1\templates\Parts\lists\_info_card.html.twig:46 - entity.edit.btn Upravit - - Part-DB1\templates\Parts\lists\_info_card.html.twig:92 - Part-DB1\templates\Parts\lists\_info_card.html.twig:63 - entity.info.children_count Počet podřízených prvků - - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - tfa.check.title Potřeba dvoufaktorového ověřování - - Part-DB1\templates\security\2fa_base_form.html.twig:39 - Part-DB1\templates\security\2fa_base_form.html.twig:39 - tfa.code.trusted_pc Jedná se o důvěryhodný počítač (pokud je tato možnost povolena, neprovádějí se na tomto počítači žádné další dvoufaktorové dotazy). - - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - login.btn Přihlášení - - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:42 - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:40 - user.logout Odhlásit se - - Part-DB1\templates\security\2fa_form.html.twig:6 - Part-DB1\templates\security\2fa_form.html.twig:6 - tfa.check.code.label Kód aplikace Authenticator - - Part-DB1\templates\security\2fa_form.html.twig:10 - Part-DB1\templates\security\2fa_form.html.twig:10 - tfa.check.code.help Zde zadejte šestimístný kód z ověřovací aplikace nebo jeden ze záložních kódů, pokud ověřovací aplikace není k dispozici. - - Part-DB1\templates\security\login.html.twig:3 - Part-DB1\templates\security\login.html.twig:3 - templates\security\login.html.twig:3 - login.title Přihlášení - - Part-DB1\templates\security\login.html.twig:7 - Part-DB1\templates\security\login.html.twig:7 - templates\security\login.html.twig:7 - login.card_title Přihlášení - - Part-DB1\templates\security\login.html.twig:31 - Part-DB1\templates\security\login.html.twig:31 - templates\security\login.html.twig:31 - login.username.label Uživatelské jméno - - Part-DB1\templates\security\login.html.twig:34 - Part-DB1\templates\security\login.html.twig:34 - templates\security\login.html.twig:34 - login.username.placeholder Uživatelské jméno - - Part-DB1\templates\security\login.html.twig:38 - Part-DB1\templates\security\login.html.twig:38 - templates\security\login.html.twig:38 - login.password.label Heslo - - Part-DB1\templates\security\login.html.twig:40 - Part-DB1\templates\security\login.html.twig:40 - templates\security\login.html.twig:40 - login.password.placeholder Heslo - - Part-DB1\templates\security\login.html.twig:50 - Part-DB1\templates\security\login.html.twig:50 - templates\security\login.html.twig:50 - login.rememberme Zapamatovat si (nemělo by se používat na sdílených počítačích) - - Part-DB1\templates\security\login.html.twig:64 - Part-DB1\templates\security\login.html.twig:64 - pw_reset.password_forget Zapomněli jste uživatelské jméno/heslo? - - 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 Nastavit nové heslo - - 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 Požádat o nové heslo - - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - tfa_u2f.http_warning Na tuto stránku přistupujete pomocí nezabezpečené metody HTTP, takže U2F pravděpodobně nebude fungovat (chybová zpráva Bad Request). Pokud chcete používat bezpečnostní klíče, požádejte správce o nastavení zabezpečené metody HTTPS. - - Part-DB1\templates\security\U2F\u2f_login.html.twig:10 - Part-DB1\templates\security\U2F\u2f_register.html.twig:22 - 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 Připojte bezpečnostní klíč a stiskněte jeho tlačítko! - - 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 Přidání bezpečnostního klíče - - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - tfa_u2f.explanation Pomocí bezpečnostního klíče kompatibilního s U2F/FIDO (např. YubiKey nebo NitroKey) lze dosáhnout uživatelsky přívětivého a bezpečného dvoufaktorového ověřování. Bezpečnostní klíče lze zde zaregistrovat a pokud je vyžadováno dvoufaktorové ověření, stačí vložit klíč do USB, nebo zadat přes zařízení prostřednictvím NFC. - - 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 Pro zajištění přístupu i v případě ztráty klíče doporučujeme zaregistrovat druhý klíč jako zálohu a uložit jej na bezpečném místě! - - 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 Přidat bezpečnostní klíč - - 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 Zpět do nastavení @@ -3043,10 +1805,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 new @@ -3056,8 +1814,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Statistics\statistics.html.twig:14 - Part-DB1\templates\Statistics\statistics.html.twig:14 new @@ -3067,8 +1823,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Statistics\statistics.html.twig:19 - Part-DB1\templates\Statistics\statistics.html.twig:19 new @@ -3078,8 +1832,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Statistics\statistics.html.twig:24 - Part-DB1\templates\Statistics\statistics.html.twig:24 new @@ -3089,12 +1841,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 new @@ -3104,12 +1850,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 new @@ -3119,8 +1859,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Statistics\statistics.html.twig:40 - Part-DB1\templates\Statistics\statistics.html.twig:40 new @@ -3130,8 +1868,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Statistics\statistics.html.twig:44 - Part-DB1\templates\Statistics\statistics.html.twig:44 new @@ -3141,8 +1877,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Statistics\statistics.html.twig:48 - Part-DB1\templates\Statistics\statistics.html.twig:48 new @@ -3152,8 +1886,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Statistics\statistics.html.twig:65 - Part-DB1\templates\Statistics\statistics.html.twig:65 new @@ -3163,8 +1895,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Statistics\statistics.html.twig:69 - Part-DB1\templates\Statistics\statistics.html.twig:69 new @@ -3174,8 +1904,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Statistics\statistics.html.twig:73 - Part-DB1\templates\Statistics\statistics.html.twig:73 new @@ -3185,8 +1913,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Statistics\statistics.html.twig:77 - Part-DB1\templates\Statistics\statistics.html.twig:77 new @@ -3196,8 +1922,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Statistics\statistics.html.twig:81 - Part-DB1\templates\Statistics\statistics.html.twig:81 new @@ -3207,8 +1931,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Statistics\statistics.html.twig:85 - Part-DB1\templates\Statistics\statistics.html.twig:85 new @@ -3218,8 +1940,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Statistics\statistics.html.twig:89 - Part-DB1\templates\Statistics\statistics.html.twig:89 new @@ -3229,8 +1949,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Statistics\statistics.html.twig:93 - Part-DB1\templates\Statistics\statistics.html.twig:93 new @@ -3240,8 +1958,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Statistics\statistics.html.twig:110 - Part-DB1\templates\Statistics\statistics.html.twig:110 new @@ -3251,8 +1967,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Statistics\statistics.html.twig:114 - Part-DB1\templates\Statistics\statistics.html.twig:114 new @@ -3262,8 +1976,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Statistics\statistics.html.twig:118 - Part-DB1\templates\Statistics\statistics.html.twig:118 new @@ -3273,8 +1985,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Statistics\statistics.html.twig:122 - Part-DB1\templates\Statistics\statistics.html.twig:122 new @@ -3284,8 +1994,6 @@ Související prvky budou přesunuty nahoru. - Part-DB1\templates\Statistics\statistics.html.twig:126 - Part-DB1\templates\Statistics\statistics.html.twig:126 new @@ -3294,302 +2002,156 @@ Související prvky budou přesunuty nahoru. - - 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 Záložní kódy - - Part-DB1\templates\Users\backup_codes.html.twig:12 - Part-DB1\templates\Users\backup_codes.html.twig:12 - tfa_backup.codes.explanation Vytiskněte si tyto kódy a uschovejte je na bezpečném místě! - - Part-DB1\templates\Users\backup_codes.html.twig:13 - Part-DB1\templates\Users\backup_codes.html.twig:13 - tfa_backup.codes.help Pokud již nemáte přístup ke svému zařízení s aplikací Authenticator (ztráta smartphonu, ztráta dat atd.), můžete použít jeden z těchto kódů pro přístup ke svému účtu a případně nastavit novou aplikaci Authenticator. Každý z těchto kódů lze použít jednou, použité kódy se doporučuje odstranit. Kdokoli s přístupem k těmto kódům může potenciálně získat přístup k vašemu účtu, proto je uchovávejte na bezpečném místě. - - Part-DB1\templates\Users\backup_codes.html.twig:16 - Part-DB1\templates\Users\backup_codes.html.twig:16 - tfa_backup.username Uživatelské jméno - - Part-DB1\templates\Users\backup_codes.html.twig:29 - Part-DB1\templates\Users\backup_codes.html.twig:29 - tfa_backup.codes.page_generated_on Stránka vygenerovaná dne %date% - - Part-DB1\templates\Users\backup_codes.html.twig:32 - Part-DB1\templates\Users\backup_codes.html.twig:32 - tfa_backup.codes.print Tisk - - Part-DB1\templates\Users\backup_codes.html.twig:35 - Part-DB1\templates\Users\backup_codes.html.twig:35 - tfa_backup.codes.copy_clipboard Zkopírovat do schránky - - 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 Informace o uživateli - - 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 Jméno - - 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 Příjmení - - 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 e-mail - - 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 Oddělení - - 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 Uživatelské jméno - - 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 Skupina - - Part-DB1\templates\Users\user_info.html.twig:67 - Part-DB1\templates\Users\user_info.html.twig:67 - user.permissions Oprávnění - - 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 Uživatelské nastavení - - 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 Osobní údaje - - 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 Konfigurace - - 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 Změnit heslo - - Part-DB1\templates\Users\_2fa_settings.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:6 - user.settings.2fa_settings Dvoufaktorové ověřování - - Part-DB1\templates\Users\_2fa_settings.html.twig:13 - Part-DB1\templates\Users\_2fa_settings.html.twig:13 - tfa.settings.google.tab Authenticator app - - Part-DB1\templates\Users\_2fa_settings.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:17 - tfa.settings.bakup.tab Záložní kódy - - Part-DB1\templates\Users\_2fa_settings.html.twig:21 - Part-DB1\templates\Users\_2fa_settings.html.twig:21 - tfa.settings.u2f.tab Bezpečnostní klíče (U2F) - - Part-DB1\templates\Users\_2fa_settings.html.twig:25 - Part-DB1\templates\Users\_2fa_settings.html.twig:25 - tfa.settings.trustedDevices.tab Důvěryhodná zařízení - - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - tfa_google.disable.confirm_title Opravdu chcete aplikaci Authenticator zakázat? - - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - tfa_google.disable.confirm_message Pokud aplikaci Authenticator deaktivujete, všechny záložní kódy budou smazány, takže je možná budete muset vytisknout znovu.<br> @@ -3597,262 +2159,156 @@ Upozorňujeme také, že bez dvoufaktorového ověřování není váš účet t - - Part-DB1\templates\Users\_2fa_settings.html.twig:39 - Part-DB1\templates\Users\_2fa_settings.html.twig:39 - tfa_google.disabled_message Aplikace Authenticator deaktivována! - - Part-DB1\templates\Users\_2fa_settings.html.twig:48 - Part-DB1\templates\Users\_2fa_settings.html.twig:48 - tfa_google.step.download Stáhněte si aplikaci Authenticator (např. <a class="link-external" target="_blank" href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2">Google Authenticator</a> nebo <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 Naskenujte přiložený QR kód pomocí aplikace nebo zadejte údaje ručně. - - Part-DB1\templates\Users\_2fa_settings.html.twig:50 - Part-DB1\templates\Users\_2fa_settings.html.twig:50 - tfa_google.step.input_code Vygenerovaný kód zadejte do níže uvedeného pole a potvrďte. - - Part-DB1\templates\Users\_2fa_settings.html.twig:51 - Part-DB1\templates\Users\_2fa_settings.html.twig:51 - tfa_google.step.download_backup Vytiskněte si záložní kódy a uložte je na bezpečném místě. - - Part-DB1\templates\Users\_2fa_settings.html.twig:58 - Part-DB1\templates\Users\_2fa_settings.html.twig:58 - tfa_google.manual_setup Ruční nastavení - - Part-DB1\templates\Users\_2fa_settings.html.twig:62 - Part-DB1\templates\Users\_2fa_settings.html.twig:62 - tfa_google.manual_setup.type Typ - - Part-DB1\templates\Users\_2fa_settings.html.twig:63 - Part-DB1\templates\Users\_2fa_settings.html.twig:63 - tfa_google.manual_setup.username Uživatelské jméno - - Part-DB1\templates\Users\_2fa_settings.html.twig:64 - Part-DB1\templates\Users\_2fa_settings.html.twig:64 - tfa_google.manual_setup.secret Tajné - - Part-DB1\templates\Users\_2fa_settings.html.twig:65 - Part-DB1\templates\Users\_2fa_settings.html.twig:65 - tfa_google.manual_setup.digit_count Počet číslic - - Part-DB1\templates\Users\_2fa_settings.html.twig:74 - Part-DB1\templates\Users\_2fa_settings.html.twig:74 - tfa_google.enabled_message Aplikace Authenticator povolena - - Part-DB1\templates\Users\_2fa_settings.html.twig:83 - Part-DB1\templates\Users\_2fa_settings.html.twig:83 - tfa_backup.disabled Záložní kódy jsou zakázány. Nastavte aplikaci Authenticator pro povolení záložních kódů. - - 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 Tyto záložní kódy můžete použít k přístupu k účtu i v případě ztráty zařízení s aplikací Authenticator. Kódy si vytiskněte a uschovejte na bezpečném místě. - - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - tfa_backup.reset_codes.confirm_title Opravdu resetovat kódy? - - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - tfa_backup.reset_codes.confirm_message Tím se odstraní všechny předchozí kódy a vygeneruje se sada nových kódů. Tuto akci nelze vrátit zpět. Nezapomeňte si nové kódy vytisknout a uložit na bezpečném místě! - - Part-DB1\templates\Users\_2fa_settings.html.twig:91 - Part-DB1\templates\Users\_2fa_settings.html.twig:91 - tfa_backup.enabled Záložní kódy povoleny - - Part-DB1\templates\Users\_2fa_settings.html.twig:99 - Part-DB1\templates\Users\_2fa_settings.html.twig:99 - tfa_backup.show_codes Zobrazit záložní kódy - - Part-DB1\templates\Users\_2fa_settings.html.twig:114 - Part-DB1\templates\Users\_2fa_settings.html.twig:114 - tfa_u2f.table_caption Registrované bezpečnostní klíče - - Part-DB1\templates\Users\_2fa_settings.html.twig:115 - Part-DB1\templates\Users\_2fa_settings.html.twig:115 - tfa_u2f.delete_u2f.confirm_title Opravdu odstranit tento bezpečnostní klíč? - - Part-DB1\templates\Users\_2fa_settings.html.twig:116 - Part-DB1\templates\Users\_2fa_settings.html.twig:116 - tfa_u2f.delete_u2f.confirm_message Pokud tento klíč odstraníte, nebude již možné se pomocí tohoto klíče přihlásit. Pokud nezůstanou žádné bezpečnostní klíče, dvoufaktorové ověřování bude zakázáno. - - Part-DB1\templates\Users\_2fa_settings.html.twig:123 - Part-DB1\templates\Users\_2fa_settings.html.twig:123 - tfa_u2f.keys.name Název klíče - - Part-DB1\templates\Users\_2fa_settings.html.twig:124 - Part-DB1\templates\Users\_2fa_settings.html.twig:124 - tfa_u2f.keys.added_date Datum registrace - - Part-DB1\templates\Users\_2fa_settings.html.twig:134 - Part-DB1\templates\Users\_2fa_settings.html.twig:134 - tfa_u2f.key_delete Smazat klíč - - Part-DB1\templates\Users\_2fa_settings.html.twig:141 - Part-DB1\templates\Users\_2fa_settings.html.twig:141 - tfa_u2f.no_keys_registered Zatím nebyly zaregistrovány žádné klíče. - - Part-DB1\templates\Users\_2fa_settings.html.twig:144 - Part-DB1\templates\Users\_2fa_settings.html.twig:144 - tfa_u2f.add_new_key Registrace nového bezpečnostního klíče - - Part-DB1\templates\Users\_2fa_settings.html.twig:148 - Part-DB1\templates\Users\_2fa_settings.html.twig:148 - tfa_trustedDevices.explanation Při kontrole druhého faktoru lze aktuální počítač označit jako důvěryhodný, takže na tomto počítači již není třeba provádět žádné další dvoufaktorové kontroly. @@ -3860,326 +2316,168 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - - Part-DB1\templates\Users\_2fa_settings.html.twig:149 - Part-DB1\templates\Users\_2fa_settings.html.twig:149 - tfa_trustedDevices.invalidate.confirm_title Opravdu odebrat všechny důvěryhodné počítače? - - Part-DB1\templates\Users\_2fa_settings.html.twig:150 - Part-DB1\templates\Users\_2fa_settings.html.twig:150 - tfa_trustedDevices.invalidate.confirm_message Ve všech počítačích bude nutné znovu provést dvoufaktorové ověřování. Ujistěte se, že máte po ruce dvoufaktorové zařízení. - - Part-DB1\templates\Users\_2fa_settings.html.twig:154 - Part-DB1\templates\Users\_2fa_settings.html.twig:154 - tfa_trustedDevices.invalidate.btn Reset důvěryhodných zařízení - - Part-DB1\templates\_navbar.html.twig:4 - Part-DB1\templates\_navbar.html.twig:4 - templates\base.html.twig:29 - sidebar.toggle Přepnutí postranního panelu - - Part-DB1\templates\_navbar.html.twig:22 - navbar.scanner.link Čtečka štítků - - Part-DB1\templates\_navbar.html.twig:38 - Part-DB1\templates\_navbar.html.twig:36 - templates\base.html.twig:97 - user.loggedin.label Přihlášen jako - - Part-DB1\templates\_navbar.html.twig:44 - Part-DB1\templates\_navbar.html.twig:42 - templates\base.html.twig:103 - user.login Příhlásit - - Part-DB1\templates\_navbar.html.twig:50 - Part-DB1\templates\_navbar.html.twig:48 - ui.toggle_darkmode Tmavý režim - - Part-DB1\templates\_navbar.html.twig:54 - Part-DB1\src\Form\UserSettingsType.php:97 - Part-DB1\templates\_navbar.html.twig:52 - Part-DB1\src\Form\UserSettingsType.php:97 - templates\base.html.twig:106 - src\Form\UserSettingsType.php:44 - user.language_select Jazyk - - Part-DB1\templates\_navbar_search.html.twig:4 - Part-DB1\templates\_navbar_search.html.twig:4 - templates\base.html.twig:49 - search.options.label Možnosti hledání - - Part-DB1\templates\_navbar_search.html.twig:23 - tags.label Štítky - - Part-DB1\templates\_navbar_search.html.twig:27 - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - templates\base.html.twig:60 - templates\Parts\show_part_info.html.twig:36 - src\Form\PartType.php:77 - storelocation.label Umístění - - Part-DB1\templates\_navbar_search.html.twig:36 - Part-DB1\templates\_navbar_search.html.twig:31 - templates\base.html.twig:65 - ordernumber.label.short Číslo dílu dodavatele - - Part-DB1\templates\_navbar_search.html.twig:40 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - Part-DB1\templates\_navbar_search.html.twig:35 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - templates\base.html.twig:67 - supplier.label Dodavatel - - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_navbar_search.html.twig:56 - templates\base.html.twig:77 - search.regexmatching Reg.Ex. shoda - - Part-DB1\templates\_sidebar.html.twig:37 - Part-DB1\templates\_sidebar.html.twig:12 - Part-DB1\templates\_sidebar.html.twig:37 - Part-DB1\templates\_sidebar.html.twig:12 - templates\base.html.twig:175 - templates\base.html.twig:189 - templates\base.html.twig:202 - templates\base.html.twig:230 - project.labelp Projekty - - Part-DB1\templates\_sidebar.html.twig:2 - Part-DB1\templates\_sidebar.html.twig:2 - templates\base.html.twig:165 - templates\base.html.twig:192 - templates\base.html.twig:220 - actions Akce - - Part-DB1\templates\_sidebar.html.twig:6 - Part-DB1\templates\_sidebar.html.twig:6 - templates\base.html.twig:169 - templates\base.html.twig:196 - templates\base.html.twig:224 - datasource Zdroj dat - - Part-DB1\templates\_sidebar.html.twig:10 - Part-DB1\templates\_sidebar.html.twig:10 - templates\base.html.twig:173 - templates\base.html.twig:200 - templates\base.html.twig:228 - manufacturer.labelp Výrobce - - Part-DB1\templates\_sidebar.html.twig:11 - Part-DB1\templates\_sidebar.html.twig:11 - templates\base.html.twig:174 - templates\base.html.twig:201 - templates\base.html.twig:229 - supplier.labelp Dodavatelé - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:213 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:293 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:293 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:181 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:243 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:268 - attachment.download_failed Stažení externí přílohy se nezdařilo. - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:222 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:190 - entity.edit_flash Změny byly úspěšně uloženy. - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:231 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:196 - entity.edit_flash.invalid Nelze uložit změnit. Zkontrolujte prosím své zadání! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:302 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:252 - entity.created_flash Vytvořený prvek. - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:308 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:258 - entity.created_flash.invalid Nepodařilo se vytvořit prvek. Zkontrolujte prosím zadání! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:399 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:352 - src\Controller\BaseAdminController.php:154 - attachment_type.deleted Prvek smazán! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:401 - Part-DB1\src\Controller\UserController.php:109 - Part-DB1\src\Controller\UserSettingsController.php:159 - Part-DB1\src\Controller\UserSettingsController.php:193 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:354 - Part-DB1\src\Controller\UserController.php:101 - Part-DB1\src\Controller\UserSettingsController.php:150 - Part-DB1\src\Controller\UserSettingsController.php:182 - csfr_invalid Token CSFR je neplatný. Pokud tato zpráva přetrvává, načtěte prosím tuto stránku znovu nebo kontaktujte správce. - - Part-DB1\src\Controller\LabelController.php:125 - label_generator.no_entities_found Nebyly nalezeny žádné entity odpovídající zadání. @@ -4187,8 +2485,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\src\Controller\LogController.php:149 - Part-DB1\src\Controller\LogController.php:154 new @@ -4198,8 +2494,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\src\Controller\LogController.php:156 - Part-DB1\src\Controller\LogController.php:160 new @@ -4209,8 +2503,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\src\Controller\LogController.php:176 - Part-DB1\src\Controller\LogController.php:180 new @@ -4220,8 +2512,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\src\Controller\LogController.php:178 - Part-DB1\src\Controller\LogController.php:182 new @@ -4231,8 +2521,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\src\Controller\LogController.php:185 - Part-DB1\src\Controller\LogController.php:189 new @@ -4242,8 +2530,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\src\Controller\LogController.php:187 - Part-DB1\src\Controller\LogController.php:191 new @@ -4253,8 +2539,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\src\Controller\LogController.php:194 - Part-DB1\src\Controller\LogController.php:198 new @@ -4264,8 +2548,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\src\Controller\LogController.php:196 - Part-DB1\src\Controller\LogController.php:200 new @@ -4275,8 +2557,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\src\Controller\LogController.php:199 - Part-DB1\src\Controller\LogController.php:203 new @@ -4285,306 +2565,168 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - - Part-DB1\src\Controller\PartController.php:182 - Part-DB1\src\Controller\PartController.php:182 - src\Controller\PartController.php:80 - part.edited_flash Uložené změny! - - Part-DB1\src\Controller\PartController.php:216 - Part-DB1\src\Controller\PartController.php:219 - part.deleted Díl úspěšně vymazán. - - Part-DB1\src\Controller\PartController.php:302 - Part-DB1\src\Controller\PartController.php:277 - Part-DB1\src\Controller\PartController.php:317 - src\Controller\PartController.php:113 - src\Controller\PartController.php:142 - part.created_flash Díl vytvořen! - - Part-DB1\src\Controller\PartController.php:308 - Part-DB1\src\Controller\PartController.php:283 - part.created_flash.invalid Chyba při vytváření: Zkontrolujte prosím své zadání! - - Part-DB1\src\Controller\ScanController.php:68 - Part-DB1\src\Controller\ScanController.php:90 - scan.qr_not_found Pro daný čárový kód nebyl nalezen žádný prvek. - - Part-DB1\src\Controller\ScanController.php:71 - scan.format_unknown Neznámý formát! - - Part-DB1\src\Controller\ScanController.php:86 - scan.qr_success Nalezený prvek. - - Part-DB1\src\Controller\SecurityController.php:114 - Part-DB1\src\Controller\SecurityController.php:109 - pw_reset.user_or_email Uživatelské jméno / e-mail - - Part-DB1\src\Controller\SecurityController.php:131 - Part-DB1\src\Controller\SecurityController.php:126 - pw_reset.request.success Žádost o obnovení byla úspěšná! Zkontrolujte prosím své e-maily, kde najdete další pokyny. - - Part-DB1\src\Controller\SecurityController.php:162 - Part-DB1\src\Controller\SecurityController.php:160 - pw_reset.username Uživatelské jméno - - 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 Uživatelské jméno nebo token je neplatný! Zkontrolujte prosím své zadání. - - Part-DB1\src\Controller\SecurityController.php:196 - Part-DB1\src\Controller\SecurityController.php:194 - pw_reset.new_pw.success Heslo bylo úspěšně obnoveno. Nyní se můžete přihlásit pomocí nového hesla. - - Part-DB1\src\Controller\UserController.php:107 - Part-DB1\src\Controller\UserController.php:99 - user.edit.reset_success Všechny metody dvoufaktorového ověřování byly úspěšně zakázány. - - Part-DB1\src\Controller\UserSettingsController.php:101 - Part-DB1\src\Controller\UserSettingsController.php:92 - tfa_backup.no_codes_enabled Nejsou povoleny žádné zálohovací kódy! - - Part-DB1\src\Controller\UserSettingsController.php:138 - Part-DB1\src\Controller\UserSettingsController.php:132 - tfa_u2f.u2f_delete.not_existing Žádný bezpečnostní klíč s tímto ID neexistuje. - - Part-DB1\src\Controller\UserSettingsController.php:145 - Part-DB1\src\Controller\UserSettingsController.php:139 - tfa_u2f.u2f_delete.access_denied Bezpečnostní klíče jiných uživatelů nelze odstranit! - - Part-DB1\src\Controller\UserSettingsController.php:153 - Part-DB1\src\Controller\UserSettingsController.php:147 - tfa.u2f.u2f_delete.success Bezpečnostní klíč byl úspěšně odstraněn. - - Part-DB1\src\Controller\UserSettingsController.php:188 - Part-DB1\src\Controller\UserSettingsController.php:180 - tfa_trustedDevice.invalidate.success Důvěryhodná zařízení byla úspěšně resetována. - - Part-DB1\src\Controller\UserSettingsController.php:235 - Part-DB1\src\Controller\UserSettingsController.php:226 - src\Controller\UserController.php:98 - user.settings.saved_flash Nastavení uloženo! - - Part-DB1\src\Controller\UserSettingsController.php:297 - Part-DB1\src\Controller\UserSettingsController.php:288 - src\Controller\UserController.php:130 - user.settings.pw_changed_flash Heslo změněno! - - Part-DB1\src\Controller\UserSettingsController.php:317 - Part-DB1\src\Controller\UserSettingsController.php:306 - user.settings.2fa.google.activated Aplikace Authenticator byla úspěšně aktivována. - - Part-DB1\src\Controller\UserSettingsController.php:328 - Part-DB1\src\Controller\UserSettingsController.php:315 - user.settings.2fa.google.disabled Aplikace Authenticator byla úspěšně deaktivována. - - Part-DB1\src\Controller\UserSettingsController.php:346 - Part-DB1\src\Controller\UserSettingsController.php:332 - user.settings.2fa.backup_codes.regenerated Nové záložní kódy byly úspěšně vygenerovány. - - Part-DB1\src\DataTables\AttachmentDataTable.php:153 - Part-DB1\src\DataTables\AttachmentDataTable.php:153 - attachment.table.filesize Velikost souboru - - 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 pravda - - 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 nepravda - - Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:128 - Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:119 - log.target_deleted smazáno @@ -4592,8 +2734,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\src\DataTables\Column\RevertLogColumn.php:57 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:60 new @@ -4603,8 +2743,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\src\DataTables\Column\RevertLogColumn.php:63 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:66 new @@ -4614,8 +2752,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\src\DataTables\Column\RevertLogColumn.php:83 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:86 new @@ -4624,70 +2760,42 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - - 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 Časové razítko - - Part-DB1\src\DataTables\LogDataTable.php:183 - Part-DB1\src\DataTables\LogDataTable.php:171 - log.type Událost - - Part-DB1\src\DataTables\LogDataTable.php:191 - Part-DB1\src\DataTables\LogDataTable.php:179 - log.level Úroveň - - Part-DB1\src\DataTables\LogDataTable.php:200 - Part-DB1\src\DataTables\LogDataTable.php:188 - log.user Uživatel - - Part-DB1\src\DataTables\LogDataTable.php:213 - Part-DB1\src\DataTables\LogDataTable.php:201 - log.target_type Typ cíle - - Part-DB1\src\DataTables\LogDataTable.php:226 - Part-DB1\src\DataTables\LogDataTable.php:214 - log.target Cíl @@ -4695,8 +2803,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\src\DataTables\LogDataTable.php:231 - Part-DB1\src\DataTables\LogDataTable.php:218 new @@ -4705,100 +2811,60 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - - Part-DB1\src\DataTables\PartsDataTable.php:168 - Part-DB1\src\DataTables\PartsDataTable.php:116 - part.table.name Název - - 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 Popis - - Part-DB1\src\DataTables\PartsDataTable.php:185 - Part-DB1\src\DataTables\PartsDataTable.php:133 - part.table.category Kategorie - - Part-DB1\src\DataTables\PartsDataTable.php:190 - Part-DB1\src\DataTables\PartsDataTable.php:138 - part.table.footprint Otisk - - Part-DB1\src\DataTables\PartsDataTable.php:194 - Part-DB1\src\DataTables\PartsDataTable.php:142 - part.table.manufacturer Výrobce - - Part-DB1\src\DataTables\PartsDataTable.php:197 - Part-DB1\src\DataTables\PartsDataTable.php:145 - part.table.storeLocations Umístění - - Part-DB1\src\DataTables\PartsDataTable.php:216 - Part-DB1\src\DataTables\PartsDataTable.php:164 - part.table.amount Množství - - Part-DB1\src\DataTables\PartsDataTable.php:224 - Part-DB1\src\DataTables\PartsDataTable.php:172 - part.table.minamount Min. množství - - Part-DB1\src\DataTables\PartsDataTable.php:232 - Part-DB1\src\DataTables\PartsDataTable.php:180 - part.table.partUnit Měrné jednotky @@ -4811,864 +2877,522 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - - Part-DB1\src\DataTables\PartsDataTable.php:236 - Part-DB1\src\DataTables\PartsDataTable.php:184 - part.table.addedDate Vytvořeno - - Part-DB1\src\DataTables\PartsDataTable.php:240 - Part-DB1\src\DataTables\PartsDataTable.php:188 - part.table.lastModified Naposledy upraveno - - Part-DB1\src\DataTables\PartsDataTable.php:244 - Part-DB1\src\DataTables\PartsDataTable.php:192 - part.table.needsReview Vyžaduje kontrolu - - Part-DB1\src\DataTables\PartsDataTable.php:251 - Part-DB1\src\DataTables\PartsDataTable.php:199 - part.table.favorite Oblíbené - - Part-DB1\src\DataTables\PartsDataTable.php:258 - Part-DB1\src\DataTables\PartsDataTable.php:206 - part.table.manufacturingStatus Stav - - 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 Neznámý - - 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 Oznámeno - - 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 Aktivní - - 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 Nedoporučuje se pro nové návrhy - - 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 Ukončeno - - 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 Přerušeno - - 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 Hmotnost - - Part-DB1\src\DataTables\PartsDataTable.php:279 - Part-DB1\src\DataTables\PartsDataTable.php:227 - part.table.tags Štítky - - Part-DB1\src\DataTables\PartsDataTable.php:283 - Part-DB1\src\DataTables\PartsDataTable.php:231 - part.table.attachments Přílohy - - Part-DB1\src\EventSubscriber\UserSystem\LoginSuccessSubscriber.php:82 - Part-DB1\src\EventSubscriber\LoginSuccessListener.php:82 - flash.login_successful Přihlášení bylo úspěšné - - 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 Pokud je tato možnost aktivována, celý proces importu se přeruší, pokud jsou zjištěna neplatná data. Není-li tato možnost vybrána, neplatná data jsou ignorována a importér se pokusí importovat ostatní prvky. - - 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 oddělovač - - Part-DB1\src\Form\AdminPages\ImportType.php:93 - Part-DB1\src\Form\AdminPages\ImportType.php:93 - src\Form\ImportType.php:72 - parent.label Nadřazený prvek - - Part-DB1\src\Form\AdminPages\ImportType.php:101 - Part-DB1\src\Form\AdminPages\ImportType.php:101 - src\Form\ImportType.php:75 - import.file Soubor - - Part-DB1\src\Form\AdminPages\ImportType.php:111 - Part-DB1\src\Form\AdminPages\ImportType.php:111 - src\Form\ImportType.php:78 - import.preserve_children Zachování podřízených prvků při importu - - 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 Přerušit při neplatných datech - - Part-DB1\src\Form\AdminPages\ImportType.php:132 - Part-DB1\src\Form\AdminPages\ImportType.php:132 - src\Form\ImportType.php:85 - import.btn Import - - Part-DB1\src\Form\AttachmentFormType.php:113 - Part-DB1\src\Form\AttachmentFormType.php:109 - attachment.edit.secure_file.help K příloze označené jako soukromá mají přístup pouze ověření uživatelé s příslušným oprávněním. Pokud je tato funkce aktivována, negenerují se náhledy a přístup k souboru je méně výkonný. - - Part-DB1\src\Form\AttachmentFormType.php:127 - Part-DB1\src\Form\AttachmentFormType.php:123 - attachment.edit.url.help Zde můžete zadat adresu URL externího souboru nebo zadat klíčové slovo, které se používá k hledání ve vestavěných zdrojích (např. otisky). - - Part-DB1\src\Form\AttachmentFormType.php:82 - Part-DB1\src\Form\AttachmentFormType.php:79 - attachment.edit.name Název - - Part-DB1\src\Form\AttachmentFormType.php:85 - Part-DB1\src\Form\AttachmentFormType.php:82 - attachment.edit.attachment_type Typ přílohy - - Part-DB1\src\Form\AttachmentFormType.php:94 - Part-DB1\src\Form\AttachmentFormType.php:91 - attachment.edit.show_in_table Zobrazit v tabulce - - Part-DB1\src\Form\AttachmentFormType.php:105 - Part-DB1\src\Form\AttachmentFormType.php:102 - attachment.edit.secure_file Soukromá příloha - - 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 Stáhnout externí soubor - - Part-DB1\src\Form\AttachmentFormType.php:146 - Part-DB1\src\Form\AttachmentFormType.php:142 - attachment.edit.file Nahrát soubor - - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:86 - part.label Díl - - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:87 - part_lot.label Inventář - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.none Žádné - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.qr QR kód (doporučeno) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code128 Kód 128 (doporučeno) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code39 Kód 39 (doporučeno) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code93 Kód 39 - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.datamatrix Datamatrix - - Part-DB1\src\Form\LabelOptionsType.php:122 - label_options.lines_mode.html Zástupné symboly - - 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 Pokud zde vyberete Twig, bude pole obsahu interpretováno jako Twig šablona. Viz <a href="https://twig.symfony.com/doc/3.x/templates.html">dokumentace Twig</a> a <a href="https://docs.part-db.de/usage/labels.html#twig-mode">Wiki</a>, kde najdete další informace. - - Part-DB1\src\Form\LabelOptionsType.php:47 - label_options.page_size.label Velikost štítku - - Part-DB1\src\Form\LabelOptionsType.php:66 - label_options.supported_elements.label Typ cíle - - Part-DB1\src\Form\LabelOptionsType.php:75 - label_options.barcode_type.label Čárový kód - - Part-DB1\src\Form\LabelOptionsType.php:102 - label_profile.lines.label Obsah - - Part-DB1\src\Form\LabelOptionsType.php:111 - label_options.additional_css.label Další styly (CSS) - - Part-DB1\src\Form\LabelOptionsType.php:120 - label_options.lines_mode.label Režim parseru - - Part-DB1\src\Form\LabelOptionsType.php:51 - label_options.width.placeholder Šířka - - Part-DB1\src\Form\LabelOptionsType.php:60 - label_options.height.placeholder Výška - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:49 - label_generator.target_id.range_hint Zde můžete zadat více ID (např. 1,2,3) a/nebo rozsah (1-3), abyste mohli generovat štítky pro více prvků najednou. - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:46 - label_generator.target_id.label Cílové ID - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:59 - label_generator.update Aktualizovat - - Part-DB1\src\Form\LabelSystem\ScanDialogType.php:36 - scan_dialog.input Zadání - - Part-DB1\src\Form\LabelSystem\ScanDialogType.php:44 - scan_dialog.submit Odeslat - - Part-DB1\src\Form\ParameterType.php:41 - parameters.name.placeholder např. Stejnosměrný proudový zisk - - Part-DB1\src\Form\ParameterType.php:50 - parameters.symbol.placeholder např. h_{FE} - - Part-DB1\src\Form\ParameterType.php:60 - parameters.text.placeholder např. Testovací podmínky - - Part-DB1\src\Form\ParameterType.php:71 - parameters.max.placeholder např. 350 - - Part-DB1\src\Form\ParameterType.php:82 - parameters.min.placeholder např. 100 - - Part-DB1\src\Form\ParameterType.php:93 - parameters.typical.placeholder např. 200 - - Part-DB1\src\Form\ParameterType.php:103 - parameters.unit.placeholder např. V - - Part-DB1\src\Form\ParameterType.php:114 - parameter.group.placeholder např. Technické specifikace - - Part-DB1\src\Form\Part\OrderdetailType.php:72 - Part-DB1\src\Form\Part\OrderdetailType.php:75 - orderdetails.edit.supplierpartnr Číslo dílu dodavatele - - Part-DB1\src\Form\Part\OrderdetailType.php:81 - Part-DB1\src\Form\Part\OrderdetailType.php:84 - orderdetails.edit.supplier Dodavatel - - Part-DB1\src\Form\Part\OrderdetailType.php:87 - Part-DB1\src\Form\Part\OrderdetailType.php:90 - orderdetails.edit.url Odkaz na nabídku - - Part-DB1\src\Form\Part\OrderdetailType.php:93 - Part-DB1\src\Form\Part\OrderdetailType.php:96 - orderdetails.edit.obsolete Již není k dispozici - - Part-DB1\src\Form\Part\OrderdetailType.php:75 - Part-DB1\src\Form\Part\OrderdetailType.php:78 - orderdetails.edit.supplierpartnr.placeholder např. BC 547 - - Part-DB1\src\Form\Part\PartBaseType.php:101 - Part-DB1\src\Form\Part\PartBaseType.php:99 - part.edit.name Název - - Part-DB1\src\Form\Part\PartBaseType.php:109 - Part-DB1\src\Form\Part\PartBaseType.php:107 - part.edit.description Popis - - Part-DB1\src\Form\Part\PartBaseType.php:120 - Part-DB1\src\Form\Part\PartBaseType.php:118 - part.edit.mininstock Minimální zásoba - - Part-DB1\src\Form\Part\PartBaseType.php:129 - Part-DB1\src\Form\Part\PartBaseType.php:127 - part.edit.category Kategorie - - Part-DB1\src\Form\Part\PartBaseType.php:135 - Part-DB1\src\Form\Part\PartBaseType.php:133 - part.edit.footprint Otisk - - Part-DB1\src\Form\Part\PartBaseType.php:142 - Part-DB1\src\Form\Part\PartBaseType.php:140 - part.edit.tags Štítky - - Part-DB1\src\Form\Part\PartBaseType.php:154 - Part-DB1\src\Form\Part\PartBaseType.php:152 - part.edit.manufacturer.label Výrobce - - Part-DB1\src\Form\Part\PartBaseType.php:161 - Part-DB1\src\Form\Part\PartBaseType.php:159 - part.edit.manufacturer_url.label Odkaz na stránku produktu - - Part-DB1\src\Form\Part\PartBaseType.php:167 - Part-DB1\src\Form\Part\PartBaseType.php:165 - part.edit.mpn Číslo dílu výrobce - - Part-DB1\src\Form\Part\PartBaseType.php:173 - Part-DB1\src\Form\Part\PartBaseType.php:171 - part.edit.manufacturing_status Stav výroby - - Part-DB1\src\Form\Part\PartBaseType.php:181 - Part-DB1\src\Form\Part\PartBaseType.php:179 - part.edit.needs_review Vyžaduje kontrolu - - Part-DB1\src\Form\Part\PartBaseType.php:189 - Part-DB1\src\Form\Part\PartBaseType.php:187 - part.edit.is_favorite Oblíbené - - Part-DB1\src\Form\Part\PartBaseType.php:197 - Part-DB1\src\Form\Part\PartBaseType.php:195 - part.edit.mass Hmotnost - - Part-DB1\src\Form\Part\PartBaseType.php:203 - Part-DB1\src\Form\Part\PartBaseType.php:201 - part.edit.partUnit Měrná jednotka @@ -5681,287 +3405,168 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - - Part-DB1\src\Form\Part\PartBaseType.php:212 - Part-DB1\src\Form\Part\PartBaseType.php:210 - part.edit.comment Poznámky - - Part-DB1\src\Form\Part\PartBaseType.php:250 - Part-DB1\src\Form\Part\PartBaseType.php:246 - part.edit.master_attachment Náhled - - Part-DB1\src\Form\Part\PartBaseType.php:295 - Part-DB1\src\Form\Part\PartBaseType.php:276 - src\Form\PartType.php:91 - part.edit.save Uložit změny - - Part-DB1\src\Form\Part\PartBaseType.php:296 - Part-DB1\src\Form\Part\PartBaseType.php:277 - src\Form\PartType.php:92 - part.edit.reset Zrušit změny - - Part-DB1\src\Form\Part\PartBaseType.php:105 - Part-DB1\src\Form\Part\PartBaseType.php:103 - part.edit.name.placeholder např. BC547 - - Part-DB1\src\Form\Part\PartBaseType.php:115 - Part-DB1\src\Form\Part\PartBaseType.php:113 - part.edit.description.placeholder např. NPN 45V, 0,1A, 0,5W - - Part-DB1\src\Form\Part\PartBaseType.php:123 - Part-DB1\src\Form\Part\PartBaseType.php:121 - part.editmininstock.placeholder např. 1 - - Part-DB1\src\Form\Part\PartLotType.php:69 - Part-DB1\src\Form\Part\PartLotType.php:69 - part_lot.edit.description Popis - - Part-DB1\src\Form\Part\PartLotType.php:78 - Part-DB1\src\Form\Part\PartLotType.php:78 - part_lot.edit.location Umístění - - Part-DB1\src\Form\Part\PartLotType.php:89 - Part-DB1\src\Form\Part\PartLotType.php:89 - part_lot.edit.amount Množství - - Part-DB1\src\Form\Part\PartLotType.php:98 - Part-DB1\src\Form\Part\PartLotType.php:97 - part_lot.edit.instock_unknown Množství neznámé - - Part-DB1\src\Form\Part\PartLotType.php:109 - Part-DB1\src\Form\Part\PartLotType.php:108 - part_lot.edit.needs_refill Potřebuje doplnit - - Part-DB1\src\Form\Part\PartLotType.php:120 - Part-DB1\src\Form\Part\PartLotType.php:119 - part_lot.edit.expiration_date Datum vypršení platnosti - - Part-DB1\src\Form\Part\PartLotType.php:128 - Part-DB1\src\Form\Part\PartLotType.php:125 - part_lot.edit.comment Poznámky - - Part-DB1\src\Form\Permissions\PermissionsType.php:99 - Part-DB1\src\Form\Permissions\PermissionsType.php:99 - perm.group.other Různé - - Part-DB1\src\Form\TFAGoogleSettingsType.php:97 - Part-DB1\src\Form\TFAGoogleSettingsType.php:97 - tfa_google.enable Povolit aplikaci Authenticator - - Part-DB1\src\Form\TFAGoogleSettingsType.php:101 - Part-DB1\src\Form\TFAGoogleSettingsType.php:101 - tfa_google.disable Deaktivovat aplikaci Authenticator - - Part-DB1\src\Form\TFAGoogleSettingsType.php:74 - Part-DB1\src\Form\TFAGoogleSettingsType.php:74 - google_confirmation Potvrzovací kód - - Part-DB1\src\Form\UserSettingsType.php:108 - Part-DB1\src\Form\UserSettingsType.php:108 - src\Form\UserSettingsType.php:46 - user.timezone.label Časové pásmo - - Part-DB1\src\Form\UserSettingsType.php:133 - Part-DB1\src\Form\UserSettingsType.php:132 - user.currency.label Preferovaná měna - - Part-DB1\src\Form\UserSettingsType.php:140 - Part-DB1\src\Form\UserSettingsType.php:139 - src\Form\UserSettingsType.php:53 - save Použít změny - - Part-DB1\src\Form\UserSettingsType.php:141 - Part-DB1\src\Form\UserSettingsType.php:140 - src\Form\UserSettingsType.php:54 - reset Zrušit změny - - Part-DB1\src\Form\UserSettingsType.php:104 - Part-DB1\src\Form\UserSettingsType.php:104 - src\Form\UserSettingsType.php:45 - user_settings.language.placeholder Jazyk serveru - - Part-DB1\src\Form\UserSettingsType.php:115 - Part-DB1\src\Form\UserSettingsType.php:115 - src\Form\UserSettingsType.php:48 - user_settings.timezone.placeholder Časové pásmo serveru - - Part-DB1\src\Services\ElementTypeNameGenerator.php:79 - Part-DB1\src\Services\ElementTypeNameGenerator.php:79 - attachment.label Příloha - - Part-DB1\src\Services\ElementTypeNameGenerator.php:81 - Part-DB1\src\Services\ElementTypeNameGenerator.php:81 - attachment_type.label Typ přílohy - - Part-DB1\src\Services\ElementTypeNameGenerator.php:82 - Part-DB1\src\Services\ElementTypeNameGenerator.php:82 - project.label Projekt - - Part-DB1\src\Services\ElementTypeNameGenerator.php:85 - Part-DB1\src\Services\ElementTypeNameGenerator.php:85 - measurement_unit.label Měrná jednotka @@ -5974,58 +3579,36 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - - Part-DB1\src\Services\ElementTypeNameGenerator.php:90 - Part-DB1\src\Services\ElementTypeNameGenerator.php:90 - currency.label Měna - - Part-DB1\src\Services\ElementTypeNameGenerator.php:91 - Part-DB1\src\Services\ElementTypeNameGenerator.php:91 - orderdetail.label Detail objednávky - - Part-DB1\src\Services\ElementTypeNameGenerator.php:92 - Part-DB1\src\Services\ElementTypeNameGenerator.php:92 - pricedetail.label Detail ceny - - Part-DB1\src\Services\ElementTypeNameGenerator.php:94 - Part-DB1\src\Services\ElementTypeNameGenerator.php:94 - user.label Uživatel - - Part-DB1\src\Services\ElementTypeNameGenerator.php:95 - parameter.label Parametr - - Part-DB1\src\Services\ElementTypeNameGenerator.php:96 - label_profile.label Profil štítku @@ -6033,8 +3616,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:176 - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:161 new @@ -6043,174 +3624,102 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - - Part-DB1\src\Services\MarkdownParser.php:73 - Part-DB1\src\Services\MarkdownParser.php:73 - markdown.loading Načítání markdown. Pokud tato zpráva nezmizí, zkuste stránku načíst znovu. - - Part-DB1\src\Services\PasswordResetManager.php:98 - Part-DB1\src\Services\PasswordResetManager.php:98 - pw_reset.email.subject Obnovení hesla k účtu Part-DB - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 - tree.tools.tools Nástroje - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:107 - src\Services\ToolsTreeBuilder.php:74 - tree.tools.edit Upravit - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:110 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 - src\Services\ToolsTreeBuilder.php:81 - tree.tools.show Zobrazit - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:111 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 - tree.tools.system Systém - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:123 - tree.tools.tools.label_dialog Generátor štítků - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:130 - tree.tools.tools.label_scanner Čtečka štítků - - 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 Typy příloh - - 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 Kategorie - - 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 Projekty - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:167 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:144 - src\Services\ToolsTreeBuilder.php:68 - tree.tools.edit.suppliers Dodavatelé - - 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 Výrobce - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:179 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:156 - tree.tools.edit.storelocation Umístění - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:185 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:162 - tree.tools.edit.footprint Otisky - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:191 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:168 - tree.tools.edit.currency Měny - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:174 - tree.tools.edit.measurement_unit Měrné jednotky @@ -6223,40 +3732,24 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 - tree.tools.edit.label_profile Profily štítků - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:209 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:180 - tree.tools.edit.part Nový díl - - 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 Zobrazit všechny díly - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:232 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 - tree.tools.show.all_attachments Přílohy @@ -6264,8 +3757,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:239 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:210 new @@ -6274,20 +3765,12 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:258 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:229 - tree.tools.system.users Uživatelé - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:264 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:235 - tree.tools.system.groups Skupiny @@ -6295,8 +3778,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:271 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:242 new @@ -6305,11 +3786,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - src\Services\TreeBuilder.php:124 - entity.tree.new Nový prvek @@ -6317,7 +3793,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 obsolete @@ -6327,8 +3802,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\templates\_navbar.html.twig:27 - templates\base.html.twig:88 obsolete @@ -6338,8 +3811,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\src\Form\UserSettingsType.php:119 - src\Form\UserSettingsType.php:49 obsolete @@ -6349,8 +3820,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\src\Form\UserSettingsType.php:129 - src\Form\UserSettingsType.php:50 obsolete @@ -6360,7 +3829,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:100 new obsolete @@ -6371,10 +3839,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - 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 @@ -6385,10 +3849,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - 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 @@ -6399,7 +3859,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:139 new obsolete @@ -6410,7 +3869,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:160 new obsolete @@ -6421,7 +3879,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:184 new obsolete @@ -6432,7 +3889,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:198 new obsolete @@ -6443,7 +3899,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:214 new obsolete @@ -6454,7 +3909,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - templates\base.html.twig:81 obsolete obsolete @@ -6465,7 +3919,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - templates\base.html.twig:109 obsolete obsolete @@ -6476,7 +3929,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - templates\base.html.twig:112 obsolete obsolete @@ -6767,7 +4219,6 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn - src\Form\PartType.php:63 obsolete obsolete @@ -7440,7 +4891,6 @@ Element 3 - templates\Parts\show_part_info.html.twig:194 obsolete obsolete @@ -7451,7 +4901,6 @@ Element 3 - src\Form\PartType.php:83 obsolete obsolete @@ -13465,4 +10914,4 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz - + \ No newline at end of file diff --git a/translations/messages.da.xlf b/translations/messages.da.xlf index af92eea0..9878a09e 100644 --- a/translations/messages.da.xlf +++ b/translations/messages.da.xlf @@ -2,11 +2,6 @@ - - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - attachment_type.caption Bilag-filtyper @@ -14,7 +9,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:12 new @@ -24,7 +18,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:16 new @@ -33,45 +26,18 @@ - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - templates\AdminPages\CategoryAdmin.html.twig:4 - templates\base.html.twig:163 - templates\base.html.twig:170 - templates\base.html.twig:197 - templates\base.html.twig:225 - category.labelp Kategorier - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:19 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:11 - templates\AdminPages\CategoryAdmin.html.twig:8 - admin.options Optioner - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - templates\AdminPages\CategoryAdmin.html.twig:9 - admin.advanced Avanceret @@ -79,7 +45,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:13 new @@ -89,7 +54,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:17 new @@ -98,20 +62,12 @@ - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - currency.iso_code.caption ISO kode - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - currency.symbol.caption Valutaenhed @@ -119,7 +75,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:29 new @@ -129,7 +84,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:33 new @@ -139,7 +93,6 @@ - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 new @@ -149,7 +102,6 @@ - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:12 new @@ -158,89 +110,36 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Søg - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - templates\AdminPages\EntityAdminBase.html.twig:13 - templates\base.html.twig:166 - templates\base.html.twig:193 - templates\base.html.twig:221 - expandAll Udfold alle - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - templates\AdminPages\EntityAdminBase.html.twig:17 - templates\base.html.twig:167 - templates\base.html.twig:194 - templates\base.html.twig:222 - reduceAll Sammenfold alle - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - part.info.timetravel_hint Det er hvordan delen fremstod før %timestamp%. <i>Venligst bemærk at dette er en eksperimentel funktion. Så derfor kan info være ukorrekt.</i> - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - templates\AdminPages\EntityAdminBase.html.twig:42 - standard.label Egenskaber - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - templates\AdminPages\EntityAdminBase.html.twig:43 - infos.label Info @@ -248,8 +147,6 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 new @@ -258,120 +155,66 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - templates\AdminPages\EntityAdminBase.html.twig:45 - export.label Eksport - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - templates\AdminPages\EntityAdminBase.html.twig:47 - import_export.label Import - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - mass_creation.label Masseoprettelse - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - templates\AdminPages\EntityAdminBase.html.twig:59 - admin.common Fælles - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - admin.attachments Bilag - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:90 - admin.parameters Parametre - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:179 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:167 - templates\AdminPages\EntityAdminBase.html.twig:142 - export_all.label Eksportér alle elementer - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:185 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:173 - mass_creation.help Hver linje fortolkes og oprettes som et navn til et nyt element. Ved at indrykke tekst kan du lave strukturer - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - templates\AdminPages\EntityAdminBase.html.twig:35 - edit.caption Ret element "%name" - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - templates\AdminPages\EntityAdminBase.html.twig:37 - new.caption Nyt element - - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - templates\base.html.twig:172 - templates\base.html.twig:199 - templates\base.html.twig:227 - footprint.labelp Footprint @@ -379,7 +222,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:13 new @@ -389,7 +231,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:17 new @@ -398,12 +239,6 @@ - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - user.edit.permissions Rettigheder @@ -411,7 +246,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:24 new @@ -421,7 +255,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:28 new @@ -430,18 +263,12 @@ - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:8 - label_profile.advanced Avanceret - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:9 - label_profile.comment Notater @@ -449,7 +276,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:55 new @@ -459,7 +285,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:59 new @@ -469,7 +294,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:8 new @@ -479,7 +303,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:12 new @@ -488,15 +311,6 @@ - - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:5 - Part-DB1\templates\_sidebar.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:8 - templates\base.html.twig:171 - templates\base.html.twig:198 - templates\base.html.twig:226 - storelocation.labelp Lagerlokationer @@ -504,7 +318,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:32 new @@ -514,7 +327,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:36 new @@ -524,7 +336,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 new @@ -534,7 +345,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:20 new @@ -543,110 +353,60 @@ - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - user.edit.configuration Opsætning - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - user.edit.password Password - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - user.edit.tfa.caption To-faktor godkendelse - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - user.edit.tfa.google_active Godkendelses-app aktiv - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - tfa_backup.remaining_tokens Antal resterende backupkoder - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - tfa_backup.generation_date Oprettelsesdato for backupkoder - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - user.edit.tfa.disabled Metode ikke aktiveret - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - user.edit.tfa.u2f_keys_count Aktive sikkerhedsnøgler - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_title Ønsker du at fortsætte? - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_message Dette vil deaktivere <b>alle aktive to-faktor godkendelsesmetoder af brugere</b> og slette <b>backupkoderne</b>! @@ -656,10 +416,6 @@ Brugeren skal sætte alle to-faktor godkendelsesmetoder op igen og printe nye ba - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - user.edit.tfa.disable_tfa.btn Deaktivér all to-faktor godkendelsesmetoder @@ -667,7 +423,6 @@ Brugeren skal sætte alle to-faktor godkendelsesmetoder op igen og printe nye ba - Part-DB1\templates\AdminPages\UserAdmin.html.twig:85 new @@ -677,7 +432,6 @@ Brugeren skal sætte alle to-faktor godkendelsesmetoder op igen og printe nye ba - Part-DB1\templates\AdminPages\UserAdmin.html.twig:89 new @@ -686,13 +440,6 @@ Brugeren skal sætte alle to-faktor godkendelsesmetoder op igen og printe nye ba - - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:63 - attachment.delete Slet @@ -705,102 +452,48 @@ Brugeren skal sætte alle to-faktor godkendelsesmetoder op igen og printe nye ba - - Part-DB1\templates\AdminPages\_attachments.html.twig:49 - Part-DB1\templates\Parts\edit\_attachments.html.twig:47 - Part-DB1\templates\AdminPages\_attachments.html.twig:47 - Part-DB1\templates\Parts\edit\_attachments.html.twig:45 - attachment.preview.alt Billede af bilag - - Part-DB1\templates\AdminPages\_attachments.html.twig:52 - Part-DB1\templates\Parts\edit\_attachments.html.twig:50 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 - Part-DB1\templates\AdminPages\_attachments.html.twig:50 - Part-DB1\templates\Parts\edit\_attachments.html.twig:48 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:45 - attachment.view_local vedhæftning.vis_lokalt - - Part-DB1\templates\AdminPages\_attachments.html.twig:58 - Part-DB1\templates\Parts\edit\_attachments.html.twig:56 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:43 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - Part-DB1\templates\AdminPages\_attachments.html.twig:56 - Part-DB1\templates\Parts\edit\_attachments.html.twig:54 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - attachment.file_not_found Fil ikke fundet - - Part-DB1\templates\AdminPages\_attachments.html.twig:66 - Part-DB1\templates\Parts\edit\_attachments.html.twig:64 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:48 - Part-DB1\templates\Parts\edit\_attachments.html.twig:62 - attachment.secure Privat bilag - - Part-DB1\templates\AdminPages\_attachments.html.twig:79 - Part-DB1\templates\Parts\edit\_attachments.html.twig:77 - Part-DB1\templates\AdminPages\_attachments.html.twig:77 - Part-DB1\templates\Parts\edit\_attachments.html.twig:75 - attachment.create Tilføj bilag - - Part-DB1\templates\AdminPages\_attachments.html.twig:84 - Part-DB1\templates\Parts\edit\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - Part-DB1\templates\AdminPages\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_attachments.html.twig:80 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - part_lot.edit.delete.confirm Ønsker du virkeligt at slette dette lager? Du kan ikke fortryde det senere! - - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - templates\AdminPages\_delete_form.html.twig:2 - entity.delete.confirm_title Ønsker du virkeligt at slette %name%? - - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - templates\AdminPages\_delete_form.html.twig:3 - entity.delete.message Dette kan ikke fortrydes! @@ -809,11 +502,6 @@ Underelementer vil blive flyttet opad. - - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - templates\AdminPages\_delete_form.html.twig:9 - entity.delete Slet element @@ -821,12 +509,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:45 - Part-DB1\src\Form\Part\PartBaseType.php:286 - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:43 - Part-DB1\src\Form\Part\PartBaseType.php:267 new @@ -835,561 +517,300 @@ Underelementer vil blive flyttet opad. - - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - templates\AdminPages\_delete_form.html.twig:12 - entity.delete.recursive Slet rekursivt (alle underelementer) - - Part-DB1\templates\AdminPages\_duplicate.html.twig:3 - entity.duplicate Kopier element - - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - templates\AdminPages\_export_form.html.twig:4 - src\Form\ImportType.php:67 - export.format Filformat - - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - templates\AdminPages\_export_form.html.twig:16 - export.level Detaljegrad - - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - templates\AdminPages\_export_form.html.twig:19 - export.level.simple Simpel - - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - templates\AdminPages\_export_form.html.twig:20 - export.level.extended Udvidet - - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - templates\AdminPages\_export_form.html.twig:21 - export.level.full Fuldstændig - - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - templates\AdminPages\_export_form.html.twig:31 - export.include_children medtag underelementer ved eksport - - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - templates\AdminPages\_export_form.html.twig:39 - export.btn Eksport - - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - templates\AdminPages\EntityAdminBase.html.twig:94 - templates\Parts\edit_part_info.html.twig:12 - templates\Parts\show_part_info.html.twig:11 - id.label ID - - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:76 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:77 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:77 - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:59 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:60 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:53 - templates\AdminPages\EntityAdminBase.html.twig:101 - templates\Parts\show_part_info.html.twig:248 - createdAt Oprettet d. - - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:73 - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:49 - templates\AdminPages\EntityAdminBase.html.twig:114 - templates\Parts\show_part_info.html.twig:263 - lastModified Sidst rettet - - Part-DB1\templates\AdminPages\_info.html.twig:38 - Part-DB1\templates\AdminPages\_info.html.twig:38 - entity.info.parts_count antal dele med dette element - - Part-DB1\templates\AdminPages\_parameters.html.twig:6 - Part-DB1\templates\helper.twig:125 - Part-DB1\templates\Parts\edit\_specifications.html.twig:6 - specifications.property Parameter - - Part-DB1\templates\AdminPages\_parameters.html.twig:7 - Part-DB1\templates\Parts\edit\_specifications.html.twig:7 - specifications.symbol Symbol - - Part-DB1\templates\AdminPages\_parameters.html.twig:8 - Part-DB1\templates\Parts\edit\_specifications.html.twig:8 - specifications.value_min Min. - - Part-DB1\templates\AdminPages\_parameters.html.twig:9 - Part-DB1\templates\Parts\edit\_specifications.html.twig:9 - specifications.value_typ Typ. - - Part-DB1\templates\AdminPages\_parameters.html.twig:10 - Part-DB1\templates\Parts\edit\_specifications.html.twig:10 - specifications.value_max Max. - - Part-DB1\templates\AdminPages\_parameters.html.twig:11 - Part-DB1\templates\Parts\edit\_specifications.html.twig:11 - specifications.unit Enhed - - Part-DB1\templates\AdminPages\_parameters.html.twig:12 - Part-DB1\templates\Parts\edit\_specifications.html.twig:12 - specifications.text Tekst - - Part-DB1\templates\AdminPages\_parameters.html.twig:13 - Part-DB1\templates\Parts\edit\_specifications.html.twig:13 - specifications.group Gruppe - - Part-DB1\templates\AdminPages\_parameters.html.twig:26 - Part-DB1\templates\Parts\edit\_specifications.html.twig:26 - specification.create Ny parameter - - Part-DB1\templates\AdminPages\_parameters.html.twig:31 - Part-DB1\templates\Parts\edit\_specifications.html.twig:31 - parameter.delete.confirm Ønsker du at slette denne parameter? - - Part-DB1\templates\attachment_list.html.twig:3 - Part-DB1\templates\attachment_list.html.twig:3 - attachment.list.title Bilagsliste - - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - part_list.loading.caption Henter - - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - part_list.loading.message Dette kan tage et øjeblik. Hvis denne meddelelse ikke forsvinder, prøv at genindlæse siden. - - Part-DB1\templates\base.html.twig:68 - Part-DB1\templates\base.html.twig:68 - templates\base.html.twig:246 - vendor.base.javascript_hint Sørg for at aktivere alle Javascriptfunktioner! - - Part-DB1\templates\base.html.twig:73 - Part-DB1\templates\base.html.twig:73 - sidebar.big.toggle Vis/skjul sidepanel - - Part-DB1\templates\base.html.twig:95 - Part-DB1\templates\base.html.twig:95 - templates\base.html.twig:271 - loading.caption Henter: - - Part-DB1\templates\base.html.twig:96 - Part-DB1\templates\base.html.twig:96 - templates\base.html.twig:272 - loading.message Dette kan taget noget tid. Hvis denne meddelelse bliver stående i lang tid, forsøg da at genindlæse siden. - - Part-DB1\templates\base.html.twig:101 - Part-DB1\templates\base.html.twig:101 - templates\base.html.twig:277 - loading.bar Henter... - - Part-DB1\templates\base.html.twig:112 - Part-DB1\templates\base.html.twig:112 - templates\base.html.twig:288 - back_to_top Tilbage til toppen af siden - - Part-DB1\templates\Form\permissionLayout.html.twig:35 - Part-DB1\templates\Form\permissionLayout.html.twig:35 - permission.edit.permission Rettigheder - - Part-DB1\templates\Form\permissionLayout.html.twig:36 - Part-DB1\templates\Form\permissionLayout.html.twig:36 - permission.edit.value Værdi - - Part-DB1\templates\Form\permissionLayout.html.twig:53 - Part-DB1\templates\Form\permissionLayout.html.twig:53 - permission.legend.title Forklaring til tilstande - - Part-DB1\templates\Form\permissionLayout.html.twig:57 - Part-DB1\templates\Form\permissionLayout.html.twig:57 - permission.legend.disallow Ej tilladt - - Part-DB1\templates\Form\permissionLayout.html.twig:61 - Part-DB1\templates\Form\permissionLayout.html.twig:61 - permission.legend.allow Tilladt - - Part-DB1\templates\Form\permissionLayout.html.twig:65 - Part-DB1\templates\Form\permissionLayout.html.twig:65 - permission.legend.inherit Nedarv fra (overordnet) gruppe - - Part-DB1\templates\helper.twig:3 - Part-DB1\templates\helper.twig:3 - bool.true Sand - - Part-DB1\templates\helper.twig:5 - Part-DB1\templates\helper.twig:5 - bool.false Falsk - - Part-DB1\templates\helper.twig:92 - Part-DB1\templates\helper.twig:87 - Yes Ja - - Part-DB1\templates\helper.twig:94 - Part-DB1\templates\helper.twig:89 - No Nej - - Part-DB1\templates\helper.twig:126 - specifications.value Værdi - - Part-DB1\templates\homepage.html.twig:7 - Part-DB1\templates\homepage.html.twig:7 - templates\homepage.html.twig:7 - version.caption Version - - Part-DB1\templates\homepage.html.twig:22 - Part-DB1\templates\homepage.html.twig:22 - templates\homepage.html.twig:19 - homepage.license Licensinformation - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.caption Projektoversigt - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.text Kilde, downloads, fejlrapporter, to-do-list etc. kan findes på <a href="%href%" class="link-external" target="_blank">GitHub project page</a> - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - homepage.help.caption Hjælp - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - homepage.help.text Hjælp og tips kan findes på Wiki <a href="%href%" class="link-external" target="_blank">GitHub siden</a> - - Part-DB1\templates\homepage.html.twig:33 - Part-DB1\templates\homepage.html.twig:33 - templates\homepage.html.twig:30 - homepage.forum.caption Forum @@ -1397,8 +818,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\homepage.html.twig:45 - Part-DB1\templates\homepage.html.twig:45 new @@ -1407,138 +826,90 @@ Underelementer vil blive flyttet opad. - - Part-DB1\templates\LabelSystem\dialog.html.twig:3 - Part-DB1\templates\LabelSystem\dialog.html.twig:6 - label_generator.title Labelgenerator - - Part-DB1\templates\LabelSystem\dialog.html.twig:16 - label_generator.common Fælles - - Part-DB1\templates\LabelSystem\dialog.html.twig:20 - label_generator.advanced Avanceret - - Part-DB1\templates\LabelSystem\dialog.html.twig:24 - label_generator.profiles Profiler - - Part-DB1\templates\LabelSystem\dialog.html.twig:58 - label_generator.selected_profile Valgte profil - - Part-DB1\templates\LabelSystem\dialog.html.twig:62 - label_generator.edit_profile Ret profil - - Part-DB1\templates\LabelSystem\dialog.html.twig:75 - label_generator.load_profile Hent profil - - Part-DB1\templates\LabelSystem\dialog.html.twig:102 - label_generator.download Hent - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:3 - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:5 - label_generator.label_btn Opret label - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:20 - label_generator.label_empty Ny tom label - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:3 - label_scanner.title Label scanner - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - label_scanner.no_cam_found.title Intet webcam fundet - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - label_scanner.no_cam_found.text Du skal bruge et webcam og give lov til at bruge det som scanner. Du kan indtaste stregkoden manuelt nedenfor. - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:27 - label_scanner.source_select Vælg kilde - - Part-DB1\templates\LogSystem\log_list.html.twig:3 - Part-DB1\templates\LogSystem\log_list.html.twig:3 - log.list.title Systemlog @@ -1546,8 +917,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\LogSystem\_log_table.html.twig:1 - Part-DB1\templates\LogSystem\_log_table.html.twig:1 new @@ -1557,8 +926,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\LogSystem\_log_table.html.twig:2 - Part-DB1\templates\LogSystem\_log_table.html.twig:2 new @@ -1567,194 +934,114 @@ Underelementer vil blive flyttet opad. - - Part-DB1\templates\mail\base.html.twig:24 - Part-DB1\templates\mail\base.html.twig:24 - mail.footer.email_sent_by Denne e-mail er afsendt automatisk af - - Part-DB1\templates\mail\base.html.twig:24 - Part-DB1\templates\mail\base.html.twig:24 - mail.footer.dont_reply Venligt undlad at svare på denne e-mail. - - Part-DB1\templates\mail\pw_reset.html.twig:6 - Part-DB1\templates\mail\pw_reset.html.twig:6 - email.hi %name% Hej %name% - - Part-DB1\templates\mail\pw_reset.html.twig:7 - Part-DB1\templates\mail\pw_reset.html.twig:7 - email.pw_reset.message En eller anden (forhåbentlig dig) har anmodet om at nulstille det gemte password. Hvis du ikke har anmodet om dette, venligst ignorér denne e-mail. - - Part-DB1\templates\mail\pw_reset.html.twig:9 - Part-DB1\templates\mail\pw_reset.html.twig:9 - email.pw_reset.button Klik her for at nulstille password - - Part-DB1\templates\mail\pw_reset.html.twig:11 - Part-DB1\templates\mail\pw_reset.html.twig:11 - email.pw_reset.fallback Hvis dette ikke virker, gå til <a href="%url%">%url%</a> og indtast følgende information - - Part-DB1\templates\mail\pw_reset.html.twig:16 - Part-DB1\templates\mail\pw_reset.html.twig:16 - email.pw_reset.username Brugernavn - - Part-DB1\templates\mail\pw_reset.html.twig:19 - Part-DB1\templates\mail\pw_reset.html.twig:19 - email.pw_reset.token Token - - Part-DB1\templates\mail\pw_reset.html.twig:24 - Part-DB1\templates\mail\pw_reset.html.twig:24 - email.pw_reset.valid_unit %date% Nulstillingstoken'en vil være gyldig indtil <i>%date%</i>. - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:18 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:78 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - orderdetail.delete Slet - - 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 rabat-antal - - 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 Pris - - 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 mængde - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - pricedetail.create Anfør pris - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - templates\Parts\edit_part_info.html.twig:4 - part.edit.title Rediger komponent %name% - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - templates\Parts\edit_part_info.html.twig:9 - part.edit.card_title Rediger del - - 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 Fælles - - 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 Fabrikant - - 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 Avanceret @@ -1821,279 +1108,156 @@ Underelementer vil blive flyttet opad. - - 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 Lagerbestand - - 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 Vedhæftede filer - - 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 indkøbsinformation - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 - part.edit.tab.specifications Paremetre - - 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 Noter - - 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 Opret ny del - - Part-DB1\templates\Parts\edit\_lots.html.twig:5 - Part-DB1\templates\Parts\edit\_lots.html.twig:5 - part_lot.delete Slet - - Part-DB1\templates\Parts\edit\_lots.html.twig:28 - Part-DB1\templates\Parts\edit\_lots.html.twig:28 - part_lot.create Opret beholdning - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 - orderdetail.create tilføj distributør - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 - pricedetails.edit.delete.confirm Er du sikker på, at du vil slette denne pris? Dette kan ikke fortrydes! - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:62 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:61 - orderdetails.edit.delete.confirm Er du sikker på, at du vil slette denne leverandør? Dette kan ikke fortrydes! - - 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 Detaljerede oplysninger vedr. - - 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 Lagerbestand - - 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 Noter - - Part-DB1\templates\Parts\info\show_part_info.html.twig:64 - part.info.specifications Paremeter - - 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 Vedhæftede filer - - 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 Indkøbsinformation - - 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 Historik - - 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 Værktøjer - - 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 Yderligere Informationen - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 - attachment.name Navn - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 - attachment.attachment_type Vedhæft sikkerhedstype - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 - attachment.file_name vedhæft fil_navn - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 - attachment.file_size vedhæftet fil_størrelse - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:54 - attachment.preview Forhåndsvisningbillede - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:67 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:50 - attachment.download_local vedhæftning.download_lokalt @@ -2101,8 +1265,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 new @@ -2111,14 +1273,6 @@ Underelementer vil blive flyttet opad. - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Unknown Ukendt @@ -2126,10 +1280,6 @@ Underelementer vil blive flyttet opad. - 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 @@ -2139,8 +1289,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 new @@ -2149,49 +1297,24 @@ Underelementer vil blive flyttet opad. - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - part.isFavorite Favorit - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 - part.minOrderAmount Minimum ordrestørrelse - - 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 Fabrikant - - 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 Navn @@ -2199,8 +1322,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Parts\info\_main_infos.html.twig:27 - Part-DB1\templates\Parts\info\_main_infos.html.twig:27 new @@ -2209,767 +1330,432 @@ Underelementer vil blive flyttet opad. - - 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 Beskrivelse - - 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 Kategori - - 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 På lager - - 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 Minimumbestand - - 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 Footprint - - 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 Gennemsnitspris - - Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - part.supplier.name Navn - - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - part.supplier.partnr Bestillingsnummer. - - Part-DB1\templates\Parts\info\_order_infos.html.twig:28 - Part-DB1\templates\Parts\info\_order_infos.html.twig:28 - part.order.minamount Mindsteantal - - Part-DB1\templates\Parts\info\_order_infos.html.twig:29 - Part-DB1\templates\Parts\info\_order_infos.html.twig:29 - part.order.price Pris - - Part-DB1\templates\Parts\info\_order_infos.html.twig:31 - Part-DB1\templates\Parts\info\_order_infos.html.twig:31 - part.order.single_price Enhedspris - - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 - Part-DB1\templates\Parts\info\_part_lots.html.twig:6 - part_lots.description Beskrivelse - - Part-DB1\templates\Parts\info\_part_lots.html.twig:8 - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 - part_lots.storage_location Lagerlokation - - Part-DB1\templates\Parts\info\_part_lots.html.twig:9 - Part-DB1\templates\Parts\info\_part_lots.html.twig:8 - part_lots.amount Mængde - - Part-DB1\templates\Parts\info\_part_lots.html.twig:24 - Part-DB1\templates\Parts\info\_part_lots.html.twig:22 - part_lots.location_unknown Ukendt lagerlokation - - Part-DB1\templates\Parts\info\_part_lots.html.twig:31 - Part-DB1\templates\Parts\info\_part_lots.html.twig:29 - part_lots.instock_unknown Ukendt mængde - - Part-DB1\templates\Parts\info\_part_lots.html.twig:40 - Part-DB1\templates\Parts\info\_part_lots.html.twig:38 - part_lots.expiration_date Udløbsdato - - Part-DB1\templates\Parts\info\_part_lots.html.twig:48 - Part-DB1\templates\Parts\info\_part_lots.html.twig:46 - part_lots.is_expired Udløbet - - Part-DB1\templates\Parts\info\_part_lots.html.twig:55 - Part-DB1\templates\Parts\info\_part_lots.html.twig:53 - part_lots.need_refill Skal fyldes op - - Part-DB1\templates\Parts\info\_picture.html.twig:15 - Part-DB1\templates\Parts\info\_picture.html.twig:15 - part.info.prev_picture Forrige billede - - Part-DB1\templates\Parts\info\_picture.html.twig:19 - Part-DB1\templates\Parts\info\_picture.html.twig:19 - part.info.next_picture Næste billede - - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - part.mass.tooltip Vægt - - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - part.needs_review.badge Gennemgang nødvendig - - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - part.favorite.badge Favorit - - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - part.obsolete.badge Ikke længere tilgængelig - - Part-DB1\templates\Parts\info\_specifications.html.twig:10 - parameters.extracted_from_description Automatisk udtrukket fra beskrivelse - - Part-DB1\templates\Parts\info\_specifications.html.twig:15 - parameters.auto_extracted_from_comment Automatisk udtrukket fra noter - - Part-DB1\templates\Parts\info\_tools.html.twig:6 - Part-DB1\templates\Parts\info\_tools.html.twig:4 - templates\Parts\show_part_info.html.twig:125 - part.edit.btn Rediger komponent - - Part-DB1\templates\Parts\info\_tools.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:14 - templates\Parts\show_part_info.html.twig:135 - part.clone.btn Kopier komponent - - Part-DB1\templates\Parts\info\_tools.html.twig:24 - Part-DB1\templates\Parts\lists\_action_bar.html.twig:4 - templates\Parts\show_part_info.html.twig:143 - part.create.btn Opret ny komponent - - Part-DB1\templates\Parts\info\_tools.html.twig:31 - Part-DB1\templates\Parts\info\_tools.html.twig:29 - part.delete.confirm_title Vil du virkelig slette denne komponent - - Part-DB1\templates\Parts\info\_tools.html.twig:32 - Part-DB1\templates\Parts\info\_tools.html.twig:30 - part.delete.message Komponenten og alle dens relaterede oplysninger (bilag, priser osv. ) slettes. Dette kan ikke fortrydes! - - Part-DB1\templates\Parts\info\_tools.html.twig:39 - Part-DB1\templates\Parts\info\_tools.html.twig:37 - part.delete Slet komponent - - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - parts_list.all.title Alle komponenter - - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - parts_list.category.title Komponent med kategori - - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - parts_list.footprint.title Komponent med footprint - - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - parts_list.manufacturer.title Komponenter med fabrikanter - - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - parts_list.search.title Søg komponenter - - 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 Komponenter med lagerlokationer - - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - parts_list.supplier.title Komponenter med leverandører - - Part-DB1\templates\Parts\lists\tags_list.html.twig:4 - Part-DB1\templates\Parts\lists\tags_list.html.twig:4 - parts_list.tags.title Komponenter med tag - - Part-DB1\templates\Parts\lists\_info_card.html.twig:22 - Part-DB1\templates\Parts\lists\_info_card.html.twig:17 - entity.info.common.tab Fælles - - Part-DB1\templates\Parts\lists\_info_card.html.twig:26 - Part-DB1\templates\Parts\lists\_info_card.html.twig:20 - entity.info.statistics.tab Statistik - - Part-DB1\templates\Parts\lists\_info_card.html.twig:31 - entity.info.attachments.tab Vedhæftede filer - - Part-DB1\templates\Parts\lists\_info_card.html.twig:37 - entity.info.parameters.tab Parametre - - Part-DB1\templates\Parts\lists\_info_card.html.twig:54 - Part-DB1\templates\Parts\lists\_info_card.html.twig:30 - entity.info.name Navn - - Part-DB1\templates\Parts\lists\_info_card.html.twig:58 - Part-DB1\templates\Parts\lists\_info_card.html.twig:96 - Part-DB1\templates\Parts\lists\_info_card.html.twig:34 - Part-DB1\templates\Parts\lists\_info_card.html.twig:67 - entity.info.parent Overordnet element - - Part-DB1\templates\Parts\lists\_info_card.html.twig:70 - Part-DB1\templates\Parts\lists\_info_card.html.twig:46 - entity.edit.btn Redigere - - Part-DB1\templates\Parts\lists\_info_card.html.twig:92 - Part-DB1\templates\Parts\lists\_info_card.html.twig:63 - entity.info.children_count Antal af underelementer - - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - tfa.check.title To-faktor godkendelse påkrævet - - Part-DB1\templates\security\2fa_base_form.html.twig:39 - Part-DB1\templates\security\2fa_base_form.html.twig:39 - tfa.code.trusted_pc Dette er en pålidelig computer (hvis dette er aktiveret, udføres der ikke yderligere to-faktorforespørgsler på denne computer) - - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - login.btn Login - - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:42 - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:40 - user.logout Log ud - - Part-DB1\templates\security\2fa_form.html.twig:6 - Part-DB1\templates\security\2fa_form.html.twig:6 - tfa.check.code.label Godkendelses app kode - - Part-DB1\templates\security\2fa_form.html.twig:10 - Part-DB1\templates\security\2fa_form.html.twig:10 - tfa.check.code.help Indtast den 6-cifrede kode fra din godkendelsesapp her eller en af dine backupkoder, hvis godkendelses app'en ikke er tilgændelig. - - Part-DB1\templates\security\login.html.twig:3 - Part-DB1\templates\security\login.html.twig:3 - templates\security\login.html.twig:3 - login.title Login - - Part-DB1\templates\security\login.html.twig:7 - Part-DB1\templates\security\login.html.twig:7 - templates\security\login.html.twig:7 - login.card_title Login - - Part-DB1\templates\security\login.html.twig:31 - Part-DB1\templates\security\login.html.twig:31 - templates\security\login.html.twig:31 - login.username.label Brugernavn - - Part-DB1\templates\security\login.html.twig:34 - Part-DB1\templates\security\login.html.twig:34 - templates\security\login.html.twig:34 - login.username.placeholder Brugernavn - - Part-DB1\templates\security\login.html.twig:38 - Part-DB1\templates\security\login.html.twig:38 - templates\security\login.html.twig:38 - login.password.label Password - - Part-DB1\templates\security\login.html.twig:40 - Part-DB1\templates\security\login.html.twig:40 - templates\security\login.html.twig:40 - login.password.placeholder Password - - Part-DB1\templates\security\login.html.twig:50 - Part-DB1\templates\security\login.html.twig:50 - templates\security\login.html.twig:50 - login.rememberme Forbliv logget ind (anbefales ikke på delte computere) - - Part-DB1\templates\security\login.html.twig:64 - Part-DB1\templates\security\login.html.twig:64 - pw_reset.password_forget Glemt brugernavn/password? - - 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 Indstil ny adgangskode - - 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 Anmod om nyt password - - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - tfa_u2f.http_warning Du tilgår denne side ved hjælp af den usikre HTTP-metode, så U2F vil højst sandsynligt ikke fungere (Bad Request-fejlmeddelelse). Bed en administrator om at konfigurere den sikre HTTPS-metode, hvis du vil bruge sikkerhedsnøgler. - - Part-DB1\templates\security\U2F\u2f_login.html.twig:10 - Part-DB1\templates\security\U2F\u2f_register.html.twig:22 - 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 Indsæt venligst sikkerhedsnøglen og tryk på knappen - - 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 Tilføj sikkerhedsnøgle - - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - tfa_u2f.explanation Brug af en U2F/FIDO-kompatibel sikkerhedsnøgle (f.eks. YubiKey eller NitroKey) kan øge brugervenligheden og sikre en sikker to-faktor-godkendelse. Sikkerhedsnøglerne kan registreres her. Hvis to-faktor verifikation er påkrævet, skal nøglen kun tilsluttes via USB eller sættes op mod enheden via NFC. - - 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 For at sikre adgang, selvom nøglen går tabt, anbefales det at registrere en anden nøgle som backup og opbevare den et sikkert sted! - - 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 Tilføj sikkerhedsnøgle - - 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 Tilbage til indstillinger @@ -2977,10 +1763,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 new @@ -2990,8 +1772,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Statistics\statistics.html.twig:14 - Part-DB1\templates\Statistics\statistics.html.twig:14 new @@ -3001,8 +1781,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Statistics\statistics.html.twig:19 - Part-DB1\templates\Statistics\statistics.html.twig:19 new @@ -3012,8 +1790,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Statistics\statistics.html.twig:24 - Part-DB1\templates\Statistics\statistics.html.twig:24 new @@ -3023,12 +1799,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 new @@ -3038,12 +1808,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 new @@ -3053,8 +1817,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Statistics\statistics.html.twig:40 - Part-DB1\templates\Statistics\statistics.html.twig:40 new @@ -3064,8 +1826,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Statistics\statistics.html.twig:44 - Part-DB1\templates\Statistics\statistics.html.twig:44 new @@ -3075,8 +1835,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Statistics\statistics.html.twig:48 - Part-DB1\templates\Statistics\statistics.html.twig:48 new @@ -3086,8 +1844,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Statistics\statistics.html.twig:65 - Part-DB1\templates\Statistics\statistics.html.twig:65 new @@ -3097,8 +1853,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Statistics\statistics.html.twig:69 - Part-DB1\templates\Statistics\statistics.html.twig:69 new @@ -3108,8 +1862,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Statistics\statistics.html.twig:73 - Part-DB1\templates\Statistics\statistics.html.twig:73 new @@ -3119,8 +1871,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Statistics\statistics.html.twig:77 - Part-DB1\templates\Statistics\statistics.html.twig:77 new @@ -3130,8 +1880,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Statistics\statistics.html.twig:81 - Part-DB1\templates\Statistics\statistics.html.twig:81 new @@ -3141,8 +1889,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Statistics\statistics.html.twig:85 - Part-DB1\templates\Statistics\statistics.html.twig:85 new @@ -3152,8 +1898,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Statistics\statistics.html.twig:89 - Part-DB1\templates\Statistics\statistics.html.twig:89 new @@ -3163,8 +1907,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Statistics\statistics.html.twig:93 - Part-DB1\templates\Statistics\statistics.html.twig:93 new @@ -3174,8 +1916,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Statistics\statistics.html.twig:110 - Part-DB1\templates\Statistics\statistics.html.twig:110 new @@ -3185,8 +1925,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Statistics\statistics.html.twig:114 - Part-DB1\templates\Statistics\statistics.html.twig:114 new @@ -3196,8 +1934,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Statistics\statistics.html.twig:118 - Part-DB1\templates\Statistics\statistics.html.twig:118 new @@ -3207,8 +1943,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Statistics\statistics.html.twig:122 - Part-DB1\templates\Statistics\statistics.html.twig:122 new @@ -3218,8 +1952,6 @@ Underelementer vil blive flyttet opad. - Part-DB1\templates\Statistics\statistics.html.twig:126 - Part-DB1\templates\Statistics\statistics.html.twig:126 new @@ -3228,302 +1960,156 @@ Underelementer vil blive flyttet opad. - - 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 Backupkoder - - Part-DB1\templates\Users\backup_codes.html.twig:12 - Part-DB1\templates\Users\backup_codes.html.twig:12 - tfa_backup.codes.explanation Udskriv disse koder og opbevar dem et sikkert sted! - - Part-DB1\templates\Users\backup_codes.html.twig:13 - Part-DB1\templates\Users\backup_codes.html.twig:13 - tfa_backup.codes.help Hvis du ikke længere har adgang til din enhed med Godkendelses-appen (smartphone tabt, datatab osv.), kan du bruge en af ​​disse koder til at få adgang til din konto og eventuelt igen forbinde til godkendelses-app. Hver af disse koder kan bruges én gang; det er tilrådeligt at slette brugte koder. Alle med adgang til disse koder kan potentielt få adgang til din konto, så opbevar dem et sikkert sted. - - Part-DB1\templates\Users\backup_codes.html.twig:16 - Part-DB1\templates\Users\backup_codes.html.twig:16 - tfa_backup.username Brugernavn - - Part-DB1\templates\Users\backup_codes.html.twig:29 - Part-DB1\templates\Users\backup_codes.html.twig:29 - tfa_backup.codes.page_generated_on Side genereret den %date% - - Part-DB1\templates\Users\backup_codes.html.twig:32 - Part-DB1\templates\Users\backup_codes.html.twig:32 - tfa_backup.codes.print Udskriv - - Part-DB1\templates\Users\backup_codes.html.twig:35 - Part-DB1\templates\Users\backup_codes.html.twig:35 - tfa_backup.codes.copy_clipboard Kopier til udklipsholder - - 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 Brugerinformation - - 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 Fornavn - - 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 Efternavn - - 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 E-mail - - 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 Afdeling - - 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 Brugernavn - - 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 Gruppe - - Part-DB1\templates\Users\user_info.html.twig:67 - Part-DB1\templates\Users\user_info.html.twig:67 - user.permissions Tilladelser - - 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 Brugerindstillinger - - 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 Personlige data - - 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 Konfiguration - - 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 Ændre password - - Part-DB1\templates\Users\_2fa_settings.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:6 - user.settings.2fa_settings To-faktor godkendelse - - Part-DB1\templates\Users\_2fa_settings.html.twig:13 - Part-DB1\templates\Users\_2fa_settings.html.twig:13 - tfa.settings.google.tab Godkendelses-app - - Part-DB1\templates\Users\_2fa_settings.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:17 - tfa.settings.bakup.tab Backup-koder - - Part-DB1\templates\Users\_2fa_settings.html.twig:21 - Part-DB1\templates\Users\_2fa_settings.html.twig:21 - tfa.settings.u2f.tab Sikkerhedsnøgler (U2F) - - Part-DB1\templates\Users\_2fa_settings.html.twig:25 - Part-DB1\templates\Users\_2fa_settings.html.twig:25 - tfa.settings.trustedDevices.tab Pålidelige enheder - - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - tfa_google.disable.confirm_title Er du sikker på, at du vil deaktivere godkendelses-appen? - - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - tfa_google.disable.confirm_message Hvis du deaktiverer godkendelses-apen slettes alle backupkoder. Så du skal muligvis genudskrive dem.<br> @@ -3531,588 +2117,324 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - - Part-DB1\templates\Users\_2fa_settings.html.twig:39 - Part-DB1\templates\Users\_2fa_settings.html.twig:39 - tfa_google.disabled_message Godkendelses-app er deaktiveret - - Part-DB1\templates\Users\_2fa_settings.html.twig:48 - Part-DB1\templates\Users\_2fa_settings.html.twig:48 - tfa_google.step.download Download en godkendelses-app (f.eks. <a class="link-external" target="_blank" href="https://play.google.com/store/apps/details?id=com.google.android. apps. authenticator2">Google Authenticator</a> eller <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 Scan QR-koden nedenfor med appen eller indtast data manuelt - - Part-DB1\templates\Users\_2fa_settings.html.twig:50 - Part-DB1\templates\Users\_2fa_settings.html.twig:50 - tfa_google.step.input_code Indtast den genererede kode i feltet nedenfor og bekræft - - Part-DB1\templates\Users\_2fa_settings.html.twig:51 - Part-DB1\templates\Users\_2fa_settings.html.twig:51 - tfa_google.step.download_backup Udskriv dine backupkoder og gem dem et sikkert sted - - Part-DB1\templates\Users\_2fa_settings.html.twig:58 - Part-DB1\templates\Users\_2fa_settings.html.twig:58 - tfa_google.manual_setup Manuel opsætning - - Part-DB1\templates\Users\_2fa_settings.html.twig:62 - Part-DB1\templates\Users\_2fa_settings.html.twig:62 - tfa_google.manual_setup.type Type - - Part-DB1\templates\Users\_2fa_settings.html.twig:63 - Part-DB1\templates\Users\_2fa_settings.html.twig:63 - tfa_google.manual_setup.username Brugernavn - - Part-DB1\templates\Users\_2fa_settings.html.twig:64 - Part-DB1\templates\Users\_2fa_settings.html.twig:64 - tfa_google.manual_setup.secret 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 Antal ciffre - - Part-DB1\templates\Users\_2fa_settings.html.twig:74 - Part-DB1\templates\Users\_2fa_settings.html.twig:74 - tfa_google.enabled_message Godkendelses-app aktiv - - Part-DB1\templates\Users\_2fa_settings.html.twig:83 - Part-DB1\templates\Users\_2fa_settings.html.twig:83 - tfa_backup.disabled Backup-koder deaktiveret. Konfigurer godkendelses-appen for at aktivere backupkoder. - - 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 Disse backupkoder giver dig adgang til din konto, selvom du mister enheden med godkendelse-appen. Udskriv koderne og opbevar dem et sikkert sted. - - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - tfa_backup.reset_codes.confirm_title Vil du virkelig nulstille koder? - - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - tfa_backup.reset_codes.confirm_message Dette vil slette alle tidligere koder og generere et sæt nye koder. Dette kan ikke fortrydes. Husk at udskrive de nye koder og gem dem et sikkert sted! - - Part-DB1\templates\Users\_2fa_settings.html.twig:91 - Part-DB1\templates\Users\_2fa_settings.html.twig:91 - tfa_backup.enabled Backupkoder aktiveret - - Part-DB1\templates\Users\_2fa_settings.html.twig:99 - Part-DB1\templates\Users\_2fa_settings.html.twig:99 - tfa_backup.show_codes Vis backupkoder - - Part-DB1\templates\Users\_2fa_settings.html.twig:114 - Part-DB1\templates\Users\_2fa_settings.html.twig:114 - tfa_u2f.table_caption Gemte backupkoder - - Part-DB1\templates\Users\_2fa_settings.html.twig:115 - Part-DB1\templates\Users\_2fa_settings.html.twig:115 - tfa_u2f.delete_u2f.confirm_title Ønsker du virkelig at slette denne backupkode? - - Part-DB1\templates\Users\_2fa_settings.html.twig:116 - Part-DB1\templates\Users\_2fa_settings.html.twig:116 - tfa_u2f.delete_u2f.confirm_message Hvis du fjerner denne nøgle, vil du ikke længere kunne logge på med den. Hvis der ikke er nogen sikkerhedsnøgler tilbage, er to-faktor-godkendelse deaktiveret. - - Part-DB1\templates\Users\_2fa_settings.html.twig:123 - Part-DB1\templates\Users\_2fa_settings.html.twig:123 - tfa_u2f.keys.name Nøglenavn - - Part-DB1\templates\Users\_2fa_settings.html.twig:124 - Part-DB1\templates\Users\_2fa_settings.html.twig:124 - tfa_u2f.keys.added_date Registreringsdato - - Part-DB1\templates\Users\_2fa_settings.html.twig:134 - Part-DB1\templates\Users\_2fa_settings.html.twig:134 - tfa_u2f.key_delete Slet nøgle - - Part-DB1\templates\Users\_2fa_settings.html.twig:141 - Part-DB1\templates\Users\_2fa_settings.html.twig:141 - tfa_u2f.no_keys_registered Ingen gemte nøgler - - Part-DB1\templates\Users\_2fa_settings.html.twig:144 - Part-DB1\templates\Users\_2fa_settings.html.twig:144 - tfa_u2f.add_new_key Registrer ny sikkerhedsnøgle - - Part-DB1\templates\Users\_2fa_settings.html.twig:148 - Part-DB1\templates\Users\_2fa_settings.html.twig:148 - tfa_trustedDevices.explanation Når du tjekker to-faktor, kan den aktuelle computer markeres som troværdig og så er to-faktor-tjek er ikke længere nødvendig på denne computer. Hvis du udførte dette ved en fejl, eller hvis en computer ikke længere er troværdig. Så kan du nulstille status for <i>alle </i>computere her. - - Part-DB1\templates\Users\_2fa_settings.html.twig:149 - Part-DB1\templates\Users\_2fa_settings.html.twig:149 - tfa_trustedDevices.invalidate.confirm_title Vil du virkelig fjerne alle pålidelige computere? - - Part-DB1\templates\Users\_2fa_settings.html.twig:150 - Part-DB1\templates\Users\_2fa_settings.html.twig:150 - tfa_trustedDevices.invalidate.confirm_message Du skal opsætte to-faktor-godkendelse igen på alle computere. Sørg for, at du har din to-faktor-enhed ved hånden. - - Part-DB1\templates\Users\_2fa_settings.html.twig:154 - Part-DB1\templates\Users\_2fa_settings.html.twig:154 - tfa_trustedDevices.invalidate.btn Fjern alle pålidelige enheder - - Part-DB1\templates\_navbar.html.twig:4 - Part-DB1\templates\_navbar.html.twig:4 - templates\base.html.twig:29 - sidebar.toggle Aktivér/de-aktiver sidebjælke - - Part-DB1\templates\_navbar.html.twig:22 - navbar.scanner.link Scanner - - Part-DB1\templates\_navbar.html.twig:38 - Part-DB1\templates\_navbar.html.twig:36 - templates\base.html.twig:97 - user.loggedin.label Logget ind som - - Part-DB1\templates\_navbar.html.twig:44 - Part-DB1\templates\_navbar.html.twig:42 - templates\base.html.twig:103 - user.login Log ind - - Part-DB1\templates\_navbar.html.twig:50 - Part-DB1\templates\_navbar.html.twig:48 - ui.toggle_darkmode Darkmode - - Part-DB1\templates\_navbar.html.twig:54 - Part-DB1\src\Form\UserSettingsType.php:97 - Part-DB1\templates\_navbar.html.twig:52 - Part-DB1\src\Form\UserSettingsType.php:97 - templates\base.html.twig:106 - src\Form\UserSettingsType.php:44 - user.language_select Sprog - - Part-DB1\templates\_navbar_search.html.twig:4 - Part-DB1\templates\_navbar_search.html.twig:4 - templates\base.html.twig:49 - search.options.label Søgemuligheder - - Part-DB1\templates\_navbar_search.html.twig:23 - tags.label Tags - - Part-DB1\templates\_navbar_search.html.twig:27 - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - templates\base.html.twig:60 - templates\Parts\show_part_info.html.twig:36 - src\Form\PartType.php:77 - storelocation.label Lagerlokation - - Part-DB1\templates\_navbar_search.html.twig:36 - Part-DB1\templates\_navbar_search.html.twig:31 - templates\base.html.twig:65 - ordernumber.label.short Bestillingsnummer - - Part-DB1\templates\_navbar_search.html.twig:40 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - Part-DB1\templates\_navbar_search.html.twig:35 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - templates\base.html.twig:67 - supplier.label Leverandør - - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_navbar_search.html.twig:56 - templates\base.html.twig:77 - search.regexmatching Reg. Ex. matching - - Part-DB1\templates\_sidebar.html.twig:37 - Part-DB1\templates\_sidebar.html.twig:12 - Part-DB1\templates\_sidebar.html.twig:37 - Part-DB1\templates\_sidebar.html.twig:12 - templates\base.html.twig:175 - templates\base.html.twig:189 - templates\base.html.twig:202 - templates\base.html.twig:230 - project.labelp Projekter - - Part-DB1\templates\_sidebar.html.twig:2 - Part-DB1\templates\_sidebar.html.twig:2 - templates\base.html.twig:165 - templates\base.html.twig:192 - templates\base.html.twig:220 - actions Handlinger - - Part-DB1\templates\_sidebar.html.twig:6 - Part-DB1\templates\_sidebar.html.twig:6 - templates\base.html.twig:169 - templates\base.html.twig:196 - templates\base.html.twig:224 - datasource Datakilde - - Part-DB1\templates\_sidebar.html.twig:10 - Part-DB1\templates\_sidebar.html.twig:10 - templates\base.html.twig:173 - templates\base.html.twig:200 - templates\base.html.twig:228 - manufacturer.labelp Fabrikant - - Part-DB1\templates\_sidebar.html.twig:11 - Part-DB1\templates\_sidebar.html.twig:11 - templates\base.html.twig:174 - templates\base.html.twig:201 - templates\base.html.twig:229 - supplier.labelp Leverandører - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:213 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:293 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:293 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:181 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:243 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:268 - attachment.download_failed Download af eksterne data fejlet! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:222 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:190 - entity.edit_flash Ændringer gemt med succes. - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:231 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:196 - entity.edit_flash.invalid Handlinger - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:302 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:252 - entity.created_flash Element oprettet med succes! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:308 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:258 - entity.created_flash.invalid Elementet kunne ikke oprettes! Tjek dit input data - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:399 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:352 - src\Controller\BaseAdminController.php:154 - attachment_type.deleted Element slettet! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:401 - Part-DB1\src\Controller\UserController.php:109 - Part-DB1\src\Controller\UserSettingsController.php:159 - Part-DB1\src\Controller\UserSettingsController.php:193 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:354 - Part-DB1\src\Controller\UserController.php:101 - Part-DB1\src\Controller\UserSettingsController.php:150 - Part-DB1\src\Controller\UserSettingsController.php:182 - csfr_invalid CSRF-token er ugyldig! Genindlæs denne side, eller kontakt en administrator, hvis problemet fortsætter! - - Part-DB1\src\Controller\LabelController.php:125 - label_generator.no_entities_found ingen elementer fundet. @@ -4120,8 +2442,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\src\Controller\LogController.php:149 - Part-DB1\src\Controller\LogController.php:154 new @@ -4131,8 +2451,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\src\Controller\LogController.php:156 - Part-DB1\src\Controller\LogController.php:160 new @@ -4142,8 +2460,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\src\Controller\LogController.php:176 - Part-DB1\src\Controller\LogController.php:180 new @@ -4153,8 +2469,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\src\Controller\LogController.php:178 - Part-DB1\src\Controller\LogController.php:182 new @@ -4164,8 +2478,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\src\Controller\LogController.php:185 - Part-DB1\src\Controller\LogController.php:189 new @@ -4175,8 +2487,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\src\Controller\LogController.php:187 - Part-DB1\src\Controller\LogController.php:191 new @@ -4186,8 +2496,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\src\Controller\LogController.php:194 - Part-DB1\src\Controller\LogController.php:198 new @@ -4197,8 +2505,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\src\Controller\LogController.php:196 - Part-DB1\src\Controller\LogController.php:200 new @@ -4208,8 +2514,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\src\Controller\LogController.php:199 - Part-DB1\src\Controller\LogController.php:203 new @@ -4218,306 +2522,168 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - - Part-DB1\src\Controller\PartController.php:182 - Part-DB1\src\Controller\PartController.php:182 - src\Controller\PartController.php:80 - part.edited_flash Ændringer gemt! - - Part-DB1\src\Controller\PartController.php:216 - Part-DB1\src\Controller\PartController.php:219 - part.deleted Komponent slettet. - - Part-DB1\src\Controller\PartController.php:302 - Part-DB1\src\Controller\PartController.php:277 - Part-DB1\src\Controller\PartController.php:317 - src\Controller\PartController.php:113 - src\Controller\PartController.php:142 - part.created_flash Komponenter oprettet med succes! - - Part-DB1\src\Controller\PartController.php:308 - Part-DB1\src\Controller\PartController.php:283 - part.created_flash.invalid Fejl ved oprettelse: Tjek dine indtastninger! - - Part-DB1\src\Controller\ScanController.php:68 - Part-DB1\src\Controller\ScanController.php:90 - scan.qr_not_found Ingen element fundet - - Part-DB1\src\Controller\ScanController.php:71 - scan.format_unknown Ukendt format! - - Part-DB1\src\Controller\ScanController.php:86 - scan.qr_success Element fundet. - - Part-DB1\src\Controller\SecurityController.php:114 - Part-DB1\src\Controller\SecurityController.php:109 - pw_reset.user_or_email Brugernavn / e-mail - - Part-DB1\src\Controller\SecurityController.php:131 - Part-DB1\src\Controller\SecurityController.php:126 - pw_reset.request.success Anmodning om password lykkedes! Tjek din e-mail for mere information. - - Part-DB1\src\Controller\SecurityController.php:162 - Part-DB1\src\Controller\SecurityController.php:160 - pw_reset.username Brugernavn - - 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 Brugernavn eller token er ugyldigt! Tjek dine indtastninger. - - Part-DB1\src\Controller\SecurityController.php:196 - Part-DB1\src\Controller\SecurityController.php:194 - pw_reset.new_pw.success Password blev nulstillet. Du kan nu logge ind med det nye password. - - Part-DB1\src\Controller\UserController.php:107 - Part-DB1\src\Controller\UserController.php:99 - user.edit.reset_success Alle to-faktor-godkendelsesmetoder er blevet deaktiveret. - - Part-DB1\src\Controller\UserSettingsController.php:101 - Part-DB1\src\Controller\UserSettingsController.php:92 - tfa_backup.no_codes_enabled Ingen backup-koder er aktiveret! - - Part-DB1\src\Controller\UserSettingsController.php:138 - Part-DB1\src\Controller\UserSettingsController.php:132 - tfa_u2f.u2f_delete.not_existing Der er ingen sikkerhedsnøgle med dette ID! - - Part-DB1\src\Controller\UserSettingsController.php:145 - Part-DB1\src\Controller\UserSettingsController.php:139 - tfa_u2f.u2f_delete.access_denied Du kan kun slette dine egne sikkerhedsnøgler! - - Part-DB1\src\Controller\UserSettingsController.php:153 - Part-DB1\src\Controller\UserSettingsController.php:147 - tfa.u2f.u2f_delete.success Sikkerhedsnøglen blev fjernet. - - Part-DB1\src\Controller\UserSettingsController.php:188 - Part-DB1\src\Controller\UserSettingsController.php:180 - tfa_trustedDevice.invalidate.success Pålidelige enheder blev slettet. - - Part-DB1\src\Controller\UserSettingsController.php:235 - Part-DB1\src\Controller\UserSettingsController.php:226 - src\Controller\UserController.php:98 - user.settings.saved_flash Indstillinger gemt! - - Part-DB1\src\Controller\UserSettingsController.php:297 - Part-DB1\src\Controller\UserSettingsController.php:288 - src\Controller\UserController.php:130 - user.settings.pw_changed_flash Password ændret! - - Part-DB1\src\Controller\UserSettingsController.php:317 - Part-DB1\src\Controller\UserSettingsController.php:306 - user.settings.2fa.google.activated Godkendelses-app'en blev aktiveret. - - Part-DB1\src\Controller\UserSettingsController.php:328 - Part-DB1\src\Controller\UserSettingsController.php:315 - user.settings.2fa.google.disabled Godkendelses-app'en er deaktiveret - - Part-DB1\src\Controller\UserSettingsController.php:346 - Part-DB1\src\Controller\UserSettingsController.php:332 - user.settings.2fa.backup_codes.regenerated Nye backupkoder blev oprettet. - - Part-DB1\src\DataTables\AttachmentDataTable.php:153 - Part-DB1\src\DataTables\AttachmentDataTable.php:153 - attachment.table.filesize filstørrelse - - 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 Sand - - 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 Falsk - - Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:128 - Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:119 - log.target_deleted Slettet @@ -4525,8 +2691,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\src\DataTables\Column\RevertLogColumn.php:57 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:60 new @@ -4536,8 +2700,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\src\DataTables\Column\RevertLogColumn.php:63 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:66 new @@ -4547,8 +2709,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\src\DataTables\Column\RevertLogColumn.php:83 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:86 new @@ -4557,70 +2717,42 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - - 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 Tidsstempel - - Part-DB1\src\DataTables\LogDataTable.php:183 - Part-DB1\src\DataTables\LogDataTable.php:171 - log.type Begivenhed - - Part-DB1\src\DataTables\LogDataTable.php:191 - Part-DB1\src\DataTables\LogDataTable.php:179 - log.level Niveau - - Part-DB1\src\DataTables\LogDataTable.php:200 - Part-DB1\src\DataTables\LogDataTable.php:188 - log.user Bruger - - Part-DB1\src\DataTables\LogDataTable.php:213 - Part-DB1\src\DataTables\LogDataTable.php:201 - log.target_type Måltype - - Part-DB1\src\DataTables\LogDataTable.php:226 - Part-DB1\src\DataTables\LogDataTable.php:214 - log.target Mål @@ -4628,8 +2760,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\src\DataTables\LogDataTable.php:231 - Part-DB1\src\DataTables\LogDataTable.php:218 new @@ -4638,100 +2768,60 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - - Part-DB1\src\DataTables\PartsDataTable.php:168 - Part-DB1\src\DataTables\PartsDataTable.php:116 - part.table.name Navn - - 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 Beskrivelse - - Part-DB1\src\DataTables\PartsDataTable.php:185 - Part-DB1\src\DataTables\PartsDataTable.php:133 - part.table.category Kategori - - Part-DB1\src\DataTables\PartsDataTable.php:190 - Part-DB1\src\DataTables\PartsDataTable.php:138 - part.table.footprint Footprint - - Part-DB1\src\DataTables\PartsDataTable.php:194 - Part-DB1\src\DataTables\PartsDataTable.php:142 - part.table.manufacturer Fabrikant - - Part-DB1\src\DataTables\PartsDataTable.php:197 - Part-DB1\src\DataTables\PartsDataTable.php:145 - part.table.storeLocations Lagerlokationer - - Part-DB1\src\DataTables\PartsDataTable.php:216 - Part-DB1\src\DataTables\PartsDataTable.php:164 - part.table.amount Antal - - Part-DB1\src\DataTables\PartsDataTable.php:224 - Part-DB1\src\DataTables\PartsDataTable.php:172 - part.table.minamount Min. beholdning - - Part-DB1\src\DataTables\PartsDataTable.php:232 - Part-DB1\src\DataTables\PartsDataTable.php:180 - part.table.partUnit Måleenhed @@ -4744,864 +2834,522 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - - Part-DB1\src\DataTables\PartsDataTable.php:236 - Part-DB1\src\DataTables\PartsDataTable.php:184 - part.table.addedDate Tilføjet - - Part-DB1\src\DataTables\PartsDataTable.php:240 - Part-DB1\src\DataTables\PartsDataTable.php:188 - part.table.lastModified Sidst redigeret - - Part-DB1\src\DataTables\PartsDataTable.php:244 - Part-DB1\src\DataTables\PartsDataTable.php:192 - part.table.needsReview Gennemgang nødvendig - - Part-DB1\src\DataTables\PartsDataTable.php:251 - Part-DB1\src\DataTables\PartsDataTable.php:199 - part.table.favorite Favorit - - Part-DB1\src\DataTables\PartsDataTable.php:258 - Part-DB1\src\DataTables\PartsDataTable.php:206 - part.table.manufacturingStatus Status - - 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 Ukendt - - 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 Meddelt - - 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 Aktiv - - 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 Anbefales ikke til nye designs - - 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 End of life - - 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 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 Vægt - - Part-DB1\src\DataTables\PartsDataTable.php:279 - Part-DB1\src\DataTables\PartsDataTable.php:227 - part.table.tags Tags - - Part-DB1\src\DataTables\PartsDataTable.php:283 - Part-DB1\src\DataTables\PartsDataTable.php:231 - part.table.attachments Bilag - - Part-DB1\src\EventSubscriber\UserSystem\LoginSuccessSubscriber.php:82 - Part-DB1\src\EventSubscriber\LoginSuccessListener.php:82 - flash.login_successful Login lykkedes - - 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 Hvis denne indstilling er aktiveret, vil hele processen blive afbrudt, hvis der registreres ugyldige data. Hvis denne indstilling ikke er aktiv ignoreres ugyldige poster, og de andre poster forsøges importeret. - - 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-separator - - Part-DB1\src\Form\AdminPages\ImportType.php:93 - Part-DB1\src\Form\AdminPages\ImportType.php:93 - src\Form\ImportType.php:72 - parent.label Overordnet element - - Part-DB1\src\Form\AdminPages\ImportType.php:101 - Part-DB1\src\Form\AdminPages\ImportType.php:101 - src\Form\ImportType.php:75 - import.file Fil - - Part-DB1\src\Form\AdminPages\ImportType.php:111 - Part-DB1\src\Form\AdminPages\ImportType.php:111 - src\Form\ImportType.php:78 - import.preserve_children Importer også underelementer - - 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 Annuller ved ugyldige data - - Part-DB1\src\Form\AdminPages\ImportType.php:132 - Part-DB1\src\Form\AdminPages\ImportType.php:132 - src\Form\ImportType.php:85 - import.btn Importer - - Part-DB1\src\Form\AttachmentFormType.php:113 - Part-DB1\src\Form\AttachmentFormType.php:109 - attachment.edit.secure_file.help En vedhæftet fil, der er markeret som privat, kan kun tilgås af autoriseret bruger som har de relevante tilladelser. Når denne indstilling er aktiv, genereres der ikke miniaturebilleder, og adgangen til filen er langsommere. - - Part-DB1\src\Form\AttachmentFormType.php:127 - Part-DB1\src\Form\AttachmentFormType.php:123 - attachment.edit.url.help Her kan du enten indtaste en URL til en ekstern fil, eller du kan søge efter de indbyggede ressourcer ved at indtaste et nøgleord (f.eks. footprint). - - Part-DB1\src\Form\AttachmentFormType.php:82 - Part-DB1\src\Form\AttachmentFormType.php:79 - attachment.edit.name Navn - - Part-DB1\src\Form\AttachmentFormType.php:85 - Part-DB1\src\Form\AttachmentFormType.php:82 - attachment.edit.attachment_type Bilagstype - - Part-DB1\src\Form\AttachmentFormType.php:94 - Part-DB1\src\Form\AttachmentFormType.php:91 - attachment.edit.show_in_table Vis i tabel - - Part-DB1\src\Form\AttachmentFormType.php:105 - Part-DB1\src\Form\AttachmentFormType.php:102 - attachment.edit.secure_file Privat bilag - - 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 Download eksternt data - - Part-DB1\src\Form\AttachmentFormType.php:146 - Part-DB1\src\Form\AttachmentFormType.php:142 - attachment.edit.file Upload fil - - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:86 - part.label Komponent - - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:87 - part_lot.label Komponentbeholdning - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.none Ingen - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.qr QR-kode (anbefalet) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code128 Kode 128 (anbefalet) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code39 Kode 39 (anbefalet) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code93 Kode 93 - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.datamatrix Datamatrix - - Part-DB1\src\Form\LabelOptionsType.php:122 - label_options.lines_mode.html 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 Hvis du vælger Twig her, vil indholdsfeltet blive fortolket som en Twig-skabelon. Yderligere hjælp er tilgængelig i <a href="https://twig.symfony.com/doc/3.x/templates.html">Twig Dokumentation</a> og <a href="https://docs.part-db.dk/usage/labels.html#twig-mode">Wiki</a>. - - Part-DB1\src\Form\LabelOptionsType.php:47 - label_options.page_size.label Størrelse - - Part-DB1\src\Form\LabelOptionsType.php:66 - label_options.supported_elements.label Elementtype - - Part-DB1\src\Form\LabelOptionsType.php:75 - label_options.barcode_type.label Stregkodetype - - Part-DB1\src\Form\LabelOptionsType.php:102 - label_profile.lines.label Indhold - - Part-DB1\src\Form\LabelOptionsType.php:111 - label_options.additional_css.label Yderligere CSS - - Part-DB1\src\Form\LabelOptionsType.php:120 - label_options.lines_mode.label Parser mode - - Part-DB1\src\Form\LabelOptionsType.php:51 - label_options.width.placeholder Bredde - - Part-DB1\src\Form\LabelOptionsType.php:60 - label_options.height.placeholder Højde - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:49 - label_generator.target_id.range_hint Du kan her angive flere ID'er (f.eks. 1, 2, 3) og/eller et interval her for at generere stregkoder for flere elementer på én gang. - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:46 - label_generator.target_id.label Element ID'ere - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:59 - label_generator.update Opdatering - - Part-DB1\src\Form\LabelSystem\ScanDialogType.php:36 - scan_dialog.input Input - - Part-DB1\src\Form\LabelSystem\ScanDialogType.php:44 - scan_dialog.submit Afsend - - Part-DB1\src\Form\ParameterType.php:41 - parameters.name.placeholder F.eks. DC Current Gain - - Part-DB1\src\Form\ParameterType.php:50 - parameters.symbol.placeholder F.eks. h_[FE] - - Part-DB1\src\Form\ParameterType.php:60 - parameters.text.placeholder f.eks. Test specifikationer - - Part-DB1\src\Form\ParameterType.php:71 - parameters.max.placeholder f.eks. 350 - - Part-DB1\src\Form\ParameterType.php:82 - parameters.min.placeholder f.eks. 100 - - Part-DB1\src\Form\ParameterType.php:93 - parameters.typical.placeholder f.eks. 200 - - Part-DB1\src\Form\ParameterType.php:103 - parameters.unit.placeholder f.eks. V - - Part-DB1\src\Form\ParameterType.php:114 - parameter.group.placeholder f.eks. tekniske specifikationer - - Part-DB1\src\Form\Part\OrderdetailType.php:72 - Part-DB1\src\Form\Part\OrderdetailType.php:75 - orderdetails.edit.supplierpartnr Leverandør varenummer - - Part-DB1\src\Form\Part\OrderdetailType.php:81 - Part-DB1\src\Form\Part\OrderdetailType.php:84 - orderdetails.edit.supplier Leverandør - - Part-DB1\src\Form\Part\OrderdetailType.php:87 - Part-DB1\src\Form\Part\OrderdetailType.php:90 - orderdetails.edit.url Link til tilbud - - Part-DB1\src\Form\Part\OrderdetailType.php:93 - Part-DB1\src\Form\Part\OrderdetailType.php:96 - orderdetails.edit.obsolete Ikke længere tilgængelig - - Part-DB1\src\Form\Part\OrderdetailType.php:75 - Part-DB1\src\Form\Part\OrderdetailType.php:78 - orderdetails.edit.supplierpartnr.placeholder f.eks. BC 547 - - Part-DB1\src\Form\Part\PartBaseType.php:101 - Part-DB1\src\Form\Part\PartBaseType.php:99 - part.edit.name Navn - - Part-DB1\src\Form\Part\PartBaseType.php:109 - Part-DB1\src\Form\Part\PartBaseType.php:107 - part.edit.description Beskrivelse - - Part-DB1\src\Form\Part\PartBaseType.php:120 - Part-DB1\src\Form\Part\PartBaseType.php:118 - part.edit.mininstock Minimumsmængde - - Part-DB1\src\Form\Part\PartBaseType.php:129 - Part-DB1\src\Form\Part\PartBaseType.php:127 - part.edit.category Kategori - - Part-DB1\src\Form\Part\PartBaseType.php:135 - Part-DB1\src\Form\Part\PartBaseType.php:133 - part.edit.footprint Footprint - - Part-DB1\src\Form\Part\PartBaseType.php:142 - Part-DB1\src\Form\Part\PartBaseType.php:140 - part.edit.tags Tags - - Part-DB1\src\Form\Part\PartBaseType.php:154 - Part-DB1\src\Form\Part\PartBaseType.php:152 - part.edit.manufacturer.label Fabrikant - - Part-DB1\src\Form\Part\PartBaseType.php:161 - Part-DB1\src\Form\Part\PartBaseType.php:159 - part.edit.manufacturer_url.label Link til produktside - - Part-DB1\src\Form\Part\PartBaseType.php:167 - Part-DB1\src\Form\Part\PartBaseType.php:165 - part.edit.mpn Fabrikant partnummer - - Part-DB1\src\Form\Part\PartBaseType.php:173 - Part-DB1\src\Form\Part\PartBaseType.php:171 - part.edit.manufacturing_status Fabrikantstatus - - Part-DB1\src\Form\Part\PartBaseType.php:181 - Part-DB1\src\Form\Part\PartBaseType.php:179 - part.edit.needs_review Gennemgang nødvendig - - Part-DB1\src\Form\Part\PartBaseType.php:189 - Part-DB1\src\Form\Part\PartBaseType.php:187 - part.edit.is_favorite Favorit - - Part-DB1\src\Form\Part\PartBaseType.php:197 - Part-DB1\src\Form\Part\PartBaseType.php:195 - part.edit.mass Vægt - - Part-DB1\src\Form\Part\PartBaseType.php:203 - Part-DB1\src\Form\Part\PartBaseType.php:201 - part.edit.partUnit Måleenhed @@ -5614,287 +3362,168 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - - Part-DB1\src\Form\Part\PartBaseType.php:212 - Part-DB1\src\Form\Part\PartBaseType.php:210 - part.edit.comment Notater - - Part-DB1\src\Form\Part\PartBaseType.php:250 - Part-DB1\src\Form\Part\PartBaseType.php:246 - part.edit.master_attachment Miniaturebillede - - Part-DB1\src\Form\Part\PartBaseType.php:295 - Part-DB1\src\Form\Part\PartBaseType.php:276 - src\Form\PartType.php:91 - part.edit.save Anvend ændringer - - Part-DB1\src\Form\Part\PartBaseType.php:296 - Part-DB1\src\Form\Part\PartBaseType.php:277 - src\Form\PartType.php:92 - part.edit.reset Annuller ændringer - - Part-DB1\src\Form\Part\PartBaseType.php:105 - Part-DB1\src\Form\Part\PartBaseType.php:103 - part.edit.name.placeholder f.eks. BC547 - - Part-DB1\src\Form\Part\PartBaseType.php:115 - Part-DB1\src\Form\Part\PartBaseType.php:113 - part.edit.description.placeholder f.eks. NPN 45V, 0,1A 0,5W - - Part-DB1\src\Form\Part\PartBaseType.php:123 - Part-DB1\src\Form\Part\PartBaseType.php:121 - part.editmininstock.placeholder f.eks. 1 - - Part-DB1\src\Form\Part\PartLotType.php:69 - Part-DB1\src\Form\Part\PartLotType.php:69 - part_lot.edit.description Beskrivelse - - Part-DB1\src\Form\Part\PartLotType.php:78 - Part-DB1\src\Form\Part\PartLotType.php:78 - part_lot.edit.location Lagerlokation - - Part-DB1\src\Form\Part\PartLotType.php:89 - Part-DB1\src\Form\Part\PartLotType.php:89 - part_lot.edit.amount Antal - - Part-DB1\src\Form\Part\PartLotType.php:98 - Part-DB1\src\Form\Part\PartLotType.php:97 - part_lot.edit.instock_unknown Ukendt antal - - Part-DB1\src\Form\Part\PartLotType.php:109 - Part-DB1\src\Form\Part\PartLotType.php:108 - part_lot.edit.needs_refill skal fyldes op igen - - Part-DB1\src\Form\Part\PartLotType.php:120 - Part-DB1\src\Form\Part\PartLotType.php:119 - part_lot.edit.expiration_date Udløbsdato - - Part-DB1\src\Form\Part\PartLotType.php:128 - Part-DB1\src\Form\Part\PartLotType.php:125 - part_lot.edit.comment Bemærk - - Part-DB1\src\Form\Permissions\PermissionsType.php:99 - Part-DB1\src\Form\Permissions\PermissionsType.php:99 - perm.group.other Forskellige - - Part-DB1\src\Form\TFAGoogleSettingsType.php:97 - Part-DB1\src\Form\TFAGoogleSettingsType.php:97 - tfa_google.enable Aktiver godkendelses-app - - Part-DB1\src\Form\TFAGoogleSettingsType.php:101 - Part-DB1\src\Form\TFAGoogleSettingsType.php:101 - tfa_google.disable Deaktiver godkendelses-app - - Part-DB1\src\Form\TFAGoogleSettingsType.php:74 - Part-DB1\src\Form\TFAGoogleSettingsType.php:74 - google_confirmation Verifikationskode - - Part-DB1\src\Form\UserSettingsType.php:108 - Part-DB1\src\Form\UserSettingsType.php:108 - src\Form\UserSettingsType.php:46 - user.timezone.label Tidszone - - Part-DB1\src\Form\UserSettingsType.php:133 - Part-DB1\src\Form\UserSettingsType.php:132 - user.currency.label Foretrukken valuta - - Part-DB1\src\Form\UserSettingsType.php:140 - Part-DB1\src\Form\UserSettingsType.php:139 - src\Form\UserSettingsType.php:53 - save Anvend ændringer - - Part-DB1\src\Form\UserSettingsType.php:141 - Part-DB1\src\Form\UserSettingsType.php:140 - src\Form\UserSettingsType.php:54 - reset Kasser ændringer - - Part-DB1\src\Form\UserSettingsType.php:104 - Part-DB1\src\Form\UserSettingsType.php:104 - src\Form\UserSettingsType.php:45 - user_settings.language.placeholder Serversprog - - Part-DB1\src\Form\UserSettingsType.php:115 - Part-DB1\src\Form\UserSettingsType.php:115 - src\Form\UserSettingsType.php:48 - user_settings.timezone.placeholder Server tidszone - - Part-DB1\src\Services\ElementTypeNameGenerator.php:79 - Part-DB1\src\Services\ElementTypeNameGenerator.php:79 - attachment.label Bilag - - Part-DB1\src\Services\ElementTypeNameGenerator.php:81 - Part-DB1\src\Services\ElementTypeNameGenerator.php:81 - attachment_type.label Bilagstype - - Part-DB1\src\Services\ElementTypeNameGenerator.php:82 - Part-DB1\src\Services\ElementTypeNameGenerator.php:82 - project.label Projekt - - Part-DB1\src\Services\ElementTypeNameGenerator.php:85 - Part-DB1\src\Services\ElementTypeNameGenerator.php:85 - measurement_unit.label Måleenhed @@ -5907,58 +3536,36 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - - Part-DB1\src\Services\ElementTypeNameGenerator.php:90 - Part-DB1\src\Services\ElementTypeNameGenerator.php:90 - currency.label Valuta - - Part-DB1\src\Services\ElementTypeNameGenerator.php:91 - Part-DB1\src\Services\ElementTypeNameGenerator.php:91 - orderdetail.label Bestillingsoplysninger - - Part-DB1\src\Services\ElementTypeNameGenerator.php:92 - Part-DB1\src\Services\ElementTypeNameGenerator.php:92 - pricedetail.label Prisinformation - - Part-DB1\src\Services\ElementTypeNameGenerator.php:94 - Part-DB1\src\Services\ElementTypeNameGenerator.php:94 - user.label Rediger - - Part-DB1\src\Services\ElementTypeNameGenerator.php:95 - parameter.label Parameter - - Part-DB1\src\Services\ElementTypeNameGenerator.php:96 - label_profile.label Labelprofil @@ -5966,8 +3573,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:176 - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:161 new @@ -5976,174 +3581,102 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - - Part-DB1\src\Services\MarkdownParser.php:73 - Part-DB1\src\Services\MarkdownParser.php:73 - markdown.loading Indlæs Markdown. Hvis dette varer ved i lang tid, så prøv at indlæse hjemmesiden igen! - - Part-DB1\src\Services\PasswordResetManager.php:98 - Part-DB1\src\Services\PasswordResetManager.php:98 - pw_reset.email.subject Password nulstillet for din Part-DB-konto - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 - tree.tools.tools Værktøjer - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:107 - src\Services\ToolsTreeBuilder.php:74 - tree.tools.edit Rediger - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:110 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 - src\Services\ToolsTreeBuilder.php:81 - tree.tools.show Vis - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:111 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 - tree.tools.system System - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:123 - tree.tools.tools.label_dialog Labeldialog - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:130 - tree.tools.tools.label_scanner 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 Bilagstyper - - 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 Kategorier - - 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 Projekter - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:167 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:144 - src\Services\ToolsTreeBuilder.php:68 - tree.tools.edit.suppliers Leverandører - - 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 Fabrikanter - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:179 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:156 - tree.tools.edit.storelocation Lagerlokationer - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:185 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:162 - tree.tools.edit.footprint Footprints - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:191 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:168 - tree.tools.edit.currency Valutaer - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:174 - tree.tools.edit.measurement_unit Måleenheder @@ -6156,40 +3689,24 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 - tree.tools.edit.label_profile Labelprofiler - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:209 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:180 - tree.tools.edit.part Ny komponent - - 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 Vis alle dele - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:232 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 - tree.tools.show.all_attachments Bilag @@ -6197,8 +3714,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:239 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:210 new @@ -6207,20 +3722,12 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:258 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:229 - tree.tools.system.users Bruger - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:264 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:235 - tree.tools.system.groups Grupper @@ -6228,8 +3735,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:271 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:242 new @@ -6238,11 +3743,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - src\Services\TreeBuilder.php:124 - entity.tree.new Nyt element @@ -6250,7 +3750,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 obsolete @@ -6260,8 +3759,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\templates\_navbar.html.twig:27 - templates\base.html.twig:88 obsolete @@ -6271,8 +3768,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\src\Form\UserSettingsType.php:119 - src\Form\UserSettingsType.php:49 obsolete @@ -6282,8 +3777,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\src\Form\UserSettingsType.php:129 - src\Form\UserSettingsType.php:50 obsolete @@ -6293,7 +3786,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:100 new obsolete @@ -6304,10 +3796,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - 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 @@ -6318,10 +3806,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - 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 @@ -6332,7 +3816,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:139 new obsolete @@ -6343,7 +3826,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:160 new obsolete @@ -6354,7 +3836,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:184 new obsolete @@ -6365,7 +3846,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:198 new obsolete @@ -6376,7 +3856,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:214 new obsolete @@ -6387,7 +3866,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - templates\base.html.twig:81 obsolete obsolete @@ -6398,7 +3876,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - templates\base.html.twig:109 obsolete obsolete @@ -6409,7 +3886,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - templates\base.html.twig:112 obsolete obsolete @@ -6700,7 +4176,6 @@ Bemærk også, at uden to-faktor-godkendelse er din konto ikke længere så godt - src\Form\PartType.php:63 obsolete obsolete @@ -7373,7 +4848,6 @@ Element 3 - templates\Parts\show_part_info.html.twig:194 obsolete obsolete @@ -7384,7 +4858,6 @@ Element 3 - src\Form\PartType.php:83 obsolete obsolete @@ -14932,4 +12405,4 @@ Buerklin API-godkendelsesserver: 10 anmodninger/minut pr. IP-adresse - + \ No newline at end of file diff --git a/translations/messages.de.xlf b/translations/messages.de.xlf index e1677d74..c4f2d5d8 100644 --- a/translations/messages.de.xlf +++ b/translations/messages.de.xlf @@ -2,11 +2,6 @@ - - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - attachment_type.caption Dateitypen für Anhänge @@ -14,7 +9,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:12 new @@ -24,7 +18,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:16 new @@ -33,45 +26,18 @@ - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - templates\AdminPages\CategoryAdmin.html.twig:4 - templates\base.html.twig:163 - templates\base.html.twig:170 - templates\base.html.twig:197 - templates\base.html.twig:225 - category.labelp Kategorien - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:19 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:11 - templates\AdminPages\CategoryAdmin.html.twig:8 - admin.options Optionen - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - templates\AdminPages\CategoryAdmin.html.twig:9 - admin.advanced Erweitert @@ -79,7 +45,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:13 new @@ -89,7 +54,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:17 new @@ -98,20 +62,12 @@ - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - currency.iso_code.caption ISO Code - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - currency.symbol.caption Währungssymbol @@ -119,7 +75,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:29 new @@ -129,7 +84,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:33 new @@ -139,7 +93,6 @@ - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 new @@ -149,7 +102,6 @@ - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:12 new @@ -158,89 +110,36 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Suche - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - templates\AdminPages\EntityAdminBase.html.twig:13 - templates\base.html.twig:166 - templates\base.html.twig:193 - templates\base.html.twig:221 - expandAll Alle ausklappen - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - templates\AdminPages\EntityAdminBase.html.twig:17 - templates\base.html.twig:167 - templates\base.html.twig:194 - templates\base.html.twig:222 - reduceAll Alle einklappen - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - part.info.timetravel_hint So sah das Bauteil vor %timestamp% aus. <i>Beachten Sie, dass dieses Feature experimentell ist und die angezeigten Infos daher nicht unbedingt korrekt sind.</i> - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - templates\AdminPages\EntityAdminBase.html.twig:42 - standard.label Eigenschaften - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - templates\AdminPages\EntityAdminBase.html.twig:43 - infos.label Informationen @@ -248,8 +147,6 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 new @@ -258,120 +155,66 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - templates\AdminPages\EntityAdminBase.html.twig:45 - export.label Exportieren - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - templates\AdminPages\EntityAdminBase.html.twig:47 - import_export.label Import / Export - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - mass_creation.label Masseneingabe - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - templates\AdminPages\EntityAdminBase.html.twig:59 - admin.common Allgemein - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - admin.attachments Dateianhänge - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:90 - admin.parameters Parameter - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:179 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:167 - templates\AdminPages\EntityAdminBase.html.twig:142 - export_all.label Alles exportieren - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:185 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:173 - mass_creation.help Jede Zeile wird als Name für ein neues Element interpretiert und angelegt. - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - templates\AdminPages\EntityAdminBase.html.twig:35 - edit.caption Bearbeite Element "%name" - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - templates\AdminPages\EntityAdminBase.html.twig:37 - new.caption Neues Element - - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - templates\base.html.twig:172 - templates\base.html.twig:199 - templates\base.html.twig:227 - footprint.labelp Footprints @@ -379,7 +222,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:13 new @@ -389,7 +231,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:17 new @@ -398,12 +239,6 @@ - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - user.edit.permissions Berechtigungen @@ -411,7 +246,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:24 new @@ -421,7 +255,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:28 new @@ -430,18 +263,12 @@ - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:8 - label_profile.advanced Erweitert - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:9 - label_profile.comment Notizen @@ -449,7 +276,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:55 new @@ -459,7 +285,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:59 new @@ -469,7 +294,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:8 new @@ -479,7 +303,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:12 new @@ -488,15 +311,6 @@ - - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:5 - Part-DB1\templates\_sidebar.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:8 - templates\base.html.twig:171 - templates\base.html.twig:198 - templates\base.html.twig:226 - storelocation.labelp Lagerorte @@ -504,7 +318,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:32 new @@ -514,7 +327,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:36 new @@ -524,7 +336,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 new @@ -534,7 +345,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:20 new @@ -543,110 +353,60 @@ - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - user.edit.configuration Konfiguration - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - user.edit.password Passwort - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - user.edit.tfa.caption Zwei-Faktor-Authentifizierung - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - user.edit.tfa.google_active Authentifizierungsapp aktiv - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - tfa_backup.remaining_tokens Verbleibende Backupcodes - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - tfa_backup.generation_date Erzeugungsdatum der Backupcodes - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - user.edit.tfa.disabled Methode deaktiviert - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - user.edit.tfa.u2f_keys_count Aktive Sicherheitsschlüssel - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_title Wirklich fortfahren? - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_message Dies wird <b>alle aktiven Zwei-Faktor-Authentifizierungsmethoden des Nutzers deaktivieren</b> und die <b>Backupcodes löschen</b>! <br> @@ -655,10 +415,6 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - user.edit.tfa.disable_tfa.btn Alle Zwei-Faktor-Authentifizierungsmethoden deaktivieren @@ -666,7 +422,6 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs - Part-DB1\templates\AdminPages\UserAdmin.html.twig:85 new @@ -676,7 +431,6 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs - Part-DB1\templates\AdminPages\UserAdmin.html.twig:89 new @@ -685,13 +439,6 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs - - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:63 - attachment.delete Löschen @@ -704,102 +451,48 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs - - Part-DB1\templates\AdminPages\_attachments.html.twig:49 - Part-DB1\templates\Parts\edit\_attachments.html.twig:47 - Part-DB1\templates\AdminPages\_attachments.html.twig:47 - Part-DB1\templates\Parts\edit\_attachments.html.twig:45 - attachment.preview.alt Thumbnail des Dateianhanges - - Part-DB1\templates\AdminPages\_attachments.html.twig:52 - Part-DB1\templates\Parts\edit\_attachments.html.twig:50 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 - Part-DB1\templates\AdminPages\_attachments.html.twig:50 - Part-DB1\templates\Parts\edit\_attachments.html.twig:48 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:45 - attachment.view_local Lokale Datei anzeigen - - Part-DB1\templates\AdminPages\_attachments.html.twig:58 - Part-DB1\templates\Parts\edit\_attachments.html.twig:56 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:43 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - Part-DB1\templates\AdminPages\_attachments.html.twig:56 - Part-DB1\templates\Parts\edit\_attachments.html.twig:54 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - attachment.file_not_found Datei nicht gefunden - - Part-DB1\templates\AdminPages\_attachments.html.twig:66 - Part-DB1\templates\Parts\edit\_attachments.html.twig:64 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:48 - Part-DB1\templates\Parts\edit\_attachments.html.twig:62 - attachment.secure Privat - - Part-DB1\templates\AdminPages\_attachments.html.twig:79 - Part-DB1\templates\Parts\edit\_attachments.html.twig:77 - Part-DB1\templates\AdminPages\_attachments.html.twig:77 - Part-DB1\templates\Parts\edit\_attachments.html.twig:75 - attachment.create Dateianhang hinzufügen - - Part-DB1\templates\AdminPages\_attachments.html.twig:84 - Part-DB1\templates\Parts\edit\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - Part-DB1\templates\AdminPages\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_attachments.html.twig:80 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - part_lot.edit.delete.confirm Möchten Sie diesen Bestand wirklich löschen? Dies kann nicht rückgängig gemacht werden! - - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - templates\AdminPages\_delete_form.html.twig:2 - entity.delete.confirm_title Wollen sie das Element %name% wirklich löschen? - - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - templates\AdminPages\_delete_form.html.twig:3 - entity.delete.message Diese Aktion lässt sich nicht rückgängig machen! @@ -808,11 +501,6 @@ Subelemente werden beim Löschen nach oben verschoben. - - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - templates\AdminPages\_delete_form.html.twig:9 - entity.delete Element löschen @@ -820,12 +508,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:45 - Part-DB1\src\Form\Part\PartBaseType.php:286 - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:43 - Part-DB1\src\Form\Part\PartBaseType.php:267 new @@ -834,561 +516,300 @@ Subelemente werden beim Löschen nach oben verschoben. - - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - templates\AdminPages\_delete_form.html.twig:12 - entity.delete.recursive Rekursiv (alle Unterelemente) löschen - - Part-DB1\templates\AdminPages\_duplicate.html.twig:3 - entity.duplicate Element duplizieren - - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - templates\AdminPages\_export_form.html.twig:4 - src\Form\ImportType.php:67 - export.format Dateiformat - - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - templates\AdminPages\_export_form.html.twig:16 - export.level Ausführlichkeit - - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - templates\AdminPages\_export_form.html.twig:19 - export.level.simple Einfach - - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - templates\AdminPages\_export_form.html.twig:20 - export.level.extended Erweitert - - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - templates\AdminPages\_export_form.html.twig:21 - export.level.full Vollständig - - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - templates\AdminPages\_export_form.html.twig:31 - export.include_children Unterelemente auch exportieren - - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - templates\AdminPages\_export_form.html.twig:39 - export.btn Exportieren - - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - templates\AdminPages\EntityAdminBase.html.twig:94 - templates\Parts\edit_part_info.html.twig:12 - templates\Parts\show_part_info.html.twig:11 - id.label ID - - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:76 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:77 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:77 - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:59 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:60 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:53 - templates\AdminPages\EntityAdminBase.html.twig:101 - templates\Parts\show_part_info.html.twig:248 - createdAt Erstellt am - - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:73 - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:49 - templates\AdminPages\EntityAdminBase.html.twig:114 - templates\Parts\show_part_info.html.twig:263 - lastModified Zuletzt bearbeitet - - Part-DB1\templates\AdminPages\_info.html.twig:38 - Part-DB1\templates\AdminPages\_info.html.twig:38 - entity.info.parts_count Bauteile mit diesem Element - - Part-DB1\templates\AdminPages\_parameters.html.twig:6 - Part-DB1\templates\helper.twig:125 - Part-DB1\templates\Parts\edit\_specifications.html.twig:6 - specifications.property Parameter - - Part-DB1\templates\AdminPages\_parameters.html.twig:7 - Part-DB1\templates\Parts\edit\_specifications.html.twig:7 - specifications.symbol Symbol - - Part-DB1\templates\AdminPages\_parameters.html.twig:8 - Part-DB1\templates\Parts\edit\_specifications.html.twig:8 - specifications.value_min Min. - - Part-DB1\templates\AdminPages\_parameters.html.twig:9 - Part-DB1\templates\Parts\edit\_specifications.html.twig:9 - specifications.value_typ Typ. - - Part-DB1\templates\AdminPages\_parameters.html.twig:10 - Part-DB1\templates\Parts\edit\_specifications.html.twig:10 - specifications.value_max Max. - - Part-DB1\templates\AdminPages\_parameters.html.twig:11 - Part-DB1\templates\Parts\edit\_specifications.html.twig:11 - specifications.unit Einheit - - Part-DB1\templates\AdminPages\_parameters.html.twig:12 - Part-DB1\templates\Parts\edit\_specifications.html.twig:12 - specifications.text Text - - Part-DB1\templates\AdminPages\_parameters.html.twig:13 - Part-DB1\templates\Parts\edit\_specifications.html.twig:13 - specifications.group Sektion - - Part-DB1\templates\AdminPages\_parameters.html.twig:26 - Part-DB1\templates\Parts\edit\_specifications.html.twig:26 - specification.create Neuer Parameter - - Part-DB1\templates\AdminPages\_parameters.html.twig:31 - Part-DB1\templates\Parts\edit\_specifications.html.twig:31 - parameter.delete.confirm Möchten Sie den Parameter wirklich löschen? - - Part-DB1\templates\attachment_list.html.twig:3 - Part-DB1\templates\attachment_list.html.twig:3 - attachment.list.title Dateianhänge - - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - part_list.loading.caption Lade - - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - part_list.loading.message Dies kann einen Moment dauern. Wenn diese Nachricht längere Zeit bestehen bleibt, versuchen sie die Seite erneut zu laden. - - Part-DB1\templates\base.html.twig:68 - Part-DB1\templates\base.html.twig:68 - templates\base.html.twig:246 - vendor.base.javascript_hint Aktivieren Sie Javascript um alle Features zu nutzen! - - Part-DB1\templates\base.html.twig:73 - Part-DB1\templates\base.html.twig:73 - sidebar.big.toggle Seitenleiste ein/ausblenden - - Part-DB1\templates\base.html.twig:95 - Part-DB1\templates\base.html.twig:95 - templates\base.html.twig:271 - loading.caption Lade: - - Part-DB1\templates\base.html.twig:96 - Part-DB1\templates\base.html.twig:96 - templates\base.html.twig:272 - loading.message Dies kann einen Moment dauern. Sollte diese Nachricht bestehen bleiben, dann laden sie die Seite erneut. - - Part-DB1\templates\base.html.twig:101 - Part-DB1\templates\base.html.twig:101 - templates\base.html.twig:277 - loading.bar Lade... - - Part-DB1\templates\base.html.twig:112 - Part-DB1\templates\base.html.twig:112 - templates\base.html.twig:288 - back_to_top Zurück zum Seitenbeginn - - Part-DB1\templates\Form\permissionLayout.html.twig:35 - Part-DB1\templates\Form\permissionLayout.html.twig:35 - permission.edit.permission Berechtigung - - Part-DB1\templates\Form\permissionLayout.html.twig:36 - Part-DB1\templates\Form\permissionLayout.html.twig:36 - permission.edit.value Wert - - Part-DB1\templates\Form\permissionLayout.html.twig:53 - Part-DB1\templates\Form\permissionLayout.html.twig:53 - permission.legend.title Erläuterung der Zustände - - Part-DB1\templates\Form\permissionLayout.html.twig:57 - Part-DB1\templates\Form\permissionLayout.html.twig:57 - permission.legend.disallow Verboten - - Part-DB1\templates\Form\permissionLayout.html.twig:61 - Part-DB1\templates\Form\permissionLayout.html.twig:61 - permission.legend.allow Erlaubt - - Part-DB1\templates\Form\permissionLayout.html.twig:65 - Part-DB1\templates\Form\permissionLayout.html.twig:65 - permission.legend.inherit Erbe von (übergeordneter) Gruppe - - Part-DB1\templates\helper.twig:3 - Part-DB1\templates\helper.twig:3 - bool.true Ja - - Part-DB1\templates\helper.twig:5 - Part-DB1\templates\helper.twig:5 - bool.false Nein - - Part-DB1\templates\helper.twig:92 - Part-DB1\templates\helper.twig:87 - Yes Ja - - Part-DB1\templates\helper.twig:94 - Part-DB1\templates\helper.twig:89 - No Nein - - Part-DB1\templates\helper.twig:126 - specifications.value Wert - - Part-DB1\templates\homepage.html.twig:7 - Part-DB1\templates\homepage.html.twig:7 - templates\homepage.html.twig:7 - version.caption Version - - Part-DB1\templates\homepage.html.twig:22 - Part-DB1\templates\homepage.html.twig:22 - templates\homepage.html.twig:19 - homepage.license Lizenzinformation - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.caption Projektseite - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.text Quellcode, Downloads, Bugreports, ToDo-Liste usw. gibts auf der <a class="link-external" target="_blank" href="%href%">GitHub Projektseite</a> - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - homepage.help.caption Hilfe - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - homepage.help.text Hilfe und Tipps finden sie im <a class="link-external" rel="noopener" target="_blank" href="%href%">Wiki</a> der GitHub Seite. - - Part-DB1\templates\homepage.html.twig:33 - Part-DB1\templates\homepage.html.twig:33 - templates\homepage.html.twig:30 - homepage.forum.caption Forum @@ -1396,8 +817,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\homepage.html.twig:45 - Part-DB1\templates\homepage.html.twig:45 new @@ -1406,138 +825,90 @@ Subelemente werden beim Löschen nach oben verschoben. - - Part-DB1\templates\LabelSystem\dialog.html.twig:3 - Part-DB1\templates\LabelSystem\dialog.html.twig:6 - label_generator.title Labelgenerator - - Part-DB1\templates\LabelSystem\dialog.html.twig:16 - label_generator.common Allgemein - - Part-DB1\templates\LabelSystem\dialog.html.twig:20 - label_generator.advanced Erweitert - - Part-DB1\templates\LabelSystem\dialog.html.twig:24 - label_generator.profiles Profil - - Part-DB1\templates\LabelSystem\dialog.html.twig:58 - label_generator.selected_profile Ausgewähltes Profil - - Part-DB1\templates\LabelSystem\dialog.html.twig:62 - label_generator.edit_profile Profil ändern - - Part-DB1\templates\LabelSystem\dialog.html.twig:75 - label_generator.load_profile Profil laden - - Part-DB1\templates\LabelSystem\dialog.html.twig:102 - label_generator.download Download - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:3 - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:5 - label_generator.label_btn Label erzeugen - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:20 - label_generator.label_empty Leeres Label - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:3 - label_scanner.title Scanner - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - label_scanner.no_cam_found.title Keine Kamera gefunden - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - label_scanner.no_cam_found.text Sie müssen eine Kamera anschließen und die Berechtigung erteilen, um den Scanner nutzen zu können. Sie können unten den Barcode manuell eingeben. - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:27 - label_scanner.source_select Kamera auswählen - - Part-DB1\templates\LogSystem\log_list.html.twig:3 - Part-DB1\templates\LogSystem\log_list.html.twig:3 - log.list.title Systemlog @@ -1545,8 +916,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\LogSystem\_log_table.html.twig:1 - Part-DB1\templates\LogSystem\_log_table.html.twig:1 new @@ -1556,8 +925,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\LogSystem\_log_table.html.twig:2 - Part-DB1\templates\LogSystem\_log_table.html.twig:2 new @@ -1566,194 +933,114 @@ Subelemente werden beim Löschen nach oben verschoben. - - Part-DB1\templates\mail\base.html.twig:24 - Part-DB1\templates\mail\base.html.twig:24 - mail.footer.email_sent_by Diese E-Mail wurde automatisch erstellt von - - Part-DB1\templates\mail\base.html.twig:24 - Part-DB1\templates\mail\base.html.twig:24 - mail.footer.dont_reply Antworten Sie nicht auf diese E-Mail. - - Part-DB1\templates\mail\pw_reset.html.twig:6 - Part-DB1\templates\mail\pw_reset.html.twig:6 - email.hi %name% Hallo %name% - - Part-DB1\templates\mail\pw_reset.html.twig:7 - Part-DB1\templates\mail\pw_reset.html.twig:7 - email.pw_reset.message jemand (hoffentlich Sie) hat ein Reset ihres Passwortes angefordert. Wenn diese Anfrage nicht von Ihnen stammt, ignorieren Sie diese E-Mail. - - Part-DB1\templates\mail\pw_reset.html.twig:9 - Part-DB1\templates\mail\pw_reset.html.twig:9 - email.pw_reset.button Passwort zurücksetzen - - Part-DB1\templates\mail\pw_reset.html.twig:11 - Part-DB1\templates\mail\pw_reset.html.twig:11 - email.pw_reset.fallback Wenn dies nicht funktioniert, rufen Sie <a href="%url%">%url%</a> auf und geben Sie die folgenden Daten ein - - Part-DB1\templates\mail\pw_reset.html.twig:16 - Part-DB1\templates\mail\pw_reset.html.twig:16 - email.pw_reset.username Benutzername - - Part-DB1\templates\mail\pw_reset.html.twig:19 - Part-DB1\templates\mail\pw_reset.html.twig:19 - email.pw_reset.token Token - - Part-DB1\templates\mail\pw_reset.html.twig:24 - Part-DB1\templates\mail\pw_reset.html.twig:24 - email.pw_reset.valid_unit %date% Das Reset-Token ist gültig bis <i>%date%</i> - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:18 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:78 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - orderdetail.delete Löschen - - 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 Mindestbestellmenge - - 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 Preis - - 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 für Menge - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - pricedetail.create Preis hinzufügen - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - templates\Parts\edit_part_info.html.twig:4 - part.edit.title Bearbeite [Part] %name% - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - templates\Parts\edit_part_info.html.twig:9 - part.edit.card_title Bearbeite Bauteileinformationen von - - 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 Allgemein - - 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 Hersteller - - 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 Erweiterte Optionen @@ -1820,279 +1107,156 @@ Subelemente werden beim Löschen nach oben verschoben. - - 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 Lagerbestände - - 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 Dateianhänge - - 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 Bestellinformationen - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 - part.edit.tab.specifications Parameter - - 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 Notizen - - 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 Neues [Part] erstellen - - Part-DB1\templates\Parts\edit\_lots.html.twig:5 - Part-DB1\templates\Parts\edit\_lots.html.twig:5 - part_lot.delete Löschen - - Part-DB1\templates\Parts\edit\_lots.html.twig:28 - Part-DB1\templates\Parts\edit\_lots.html.twig:28 - part_lot.create Bestand anlegen - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 - orderdetail.create Lieferant hinzufügen - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 - pricedetails.edit.delete.confirm Möchten Sie diesen Preis wirklich löschen? Das kann nicht rückgängig gemacht werden! - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:62 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:61 - orderdetails.edit.delete.confirm Möchten Sie diesen Lieferanten wirklich löschen? Dies kann nicht rückgängig gemacht werden! - - 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 Detailinfo für - - 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 Lagerbestände - - 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 Notizen - - Part-DB1\templates\Parts\info\show_part_info.html.twig:64 - part.info.specifications Parameter - - 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 Dateianhänge - - 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 Einkaufsinformationen - - 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 Historie - - 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 Tools - - 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 Erweiterte Informationen - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 - attachment.name Name - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 - attachment.attachment_type Anhangstyp - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 - attachment.file_name Dateiname - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 - attachment.file_size Dateigröße - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:54 - attachment.preview Vorschaubild - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:67 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:50 - attachment.download_local Lokale Datei downloaden @@ -2100,8 +1264,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 new @@ -2110,14 +1272,6 @@ Subelemente werden beim Löschen nach oben verschoben. - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Unknown Unbekannt @@ -2125,10 +1279,6 @@ Subelemente werden beim Löschen nach oben verschoben. - 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 @@ -2138,8 +1288,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 new @@ -2148,49 +1296,24 @@ Subelemente werden beim Löschen nach oben verschoben. - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - part.isFavorite Favorit - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 - part.minOrderAmount Mindestbestellmenge - - 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 Hersteller - - 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 Name @@ -2198,8 +1321,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\_main_infos.html.twig:27 - Part-DB1\templates\Parts\info\_main_infos.html.twig:27 new @@ -2208,767 +1329,432 @@ Subelemente werden beim Löschen nach oben verschoben. - - 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 Beschreibung - - 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 Kategorie - - 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 Im Lager - - 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 Mindestbestand - - 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 Footprint - - 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 Durchschnittspreis - - Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - part.supplier.name Name - - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - part.supplier.partnr Bestellnr. - - Part-DB1\templates\Parts\info\_order_infos.html.twig:28 - Part-DB1\templates\Parts\info\_order_infos.html.twig:28 - part.order.minamount Mindestanzahl - - Part-DB1\templates\Parts\info\_order_infos.html.twig:29 - Part-DB1\templates\Parts\info\_order_infos.html.twig:29 - part.order.price Preis - - Part-DB1\templates\Parts\info\_order_infos.html.twig:31 - Part-DB1\templates\Parts\info\_order_infos.html.twig:31 - part.order.single_price Stückpreis - - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 - Part-DB1\templates\Parts\info\_part_lots.html.twig:6 - part_lots.description Beschreibung - - Part-DB1\templates\Parts\info\_part_lots.html.twig:8 - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 - part_lots.storage_location Lagerort - - Part-DB1\templates\Parts\info\_part_lots.html.twig:9 - Part-DB1\templates\Parts\info\_part_lots.html.twig:8 - part_lots.amount Menge - - Part-DB1\templates\Parts\info\_part_lots.html.twig:24 - Part-DB1\templates\Parts\info\_part_lots.html.twig:22 - part_lots.location_unknown Lagerort unbekannt - - Part-DB1\templates\Parts\info\_part_lots.html.twig:31 - Part-DB1\templates\Parts\info\_part_lots.html.twig:29 - part_lots.instock_unknown Menge unbekannt - - Part-DB1\templates\Parts\info\_part_lots.html.twig:40 - Part-DB1\templates\Parts\info\_part_lots.html.twig:38 - part_lots.expiration_date Ablaufdatum - - Part-DB1\templates\Parts\info\_part_lots.html.twig:48 - Part-DB1\templates\Parts\info\_part_lots.html.twig:46 - part_lots.is_expired Abgelaufen - - Part-DB1\templates\Parts\info\_part_lots.html.twig:55 - Part-DB1\templates\Parts\info\_part_lots.html.twig:53 - part_lots.need_refill Muss aufgefüllt werden - - Part-DB1\templates\Parts\info\_picture.html.twig:15 - Part-DB1\templates\Parts\info\_picture.html.twig:15 - part.info.prev_picture Vorheriges Bild - - Part-DB1\templates\Parts\info\_picture.html.twig:19 - Part-DB1\templates\Parts\info\_picture.html.twig:19 - part.info.next_picture Nächstes Bild - - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - part.mass.tooltip Gewicht - - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - part.needs_review.badge Review benötigt - - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - part.favorite.badge Favorit - - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - part.obsolete.badge Nicht mehr lieferbar - - Part-DB1\templates\Parts\info\_specifications.html.twig:10 - parameters.extracted_from_description Automatisch aus Beschreibung extrahiert - - Part-DB1\templates\Parts\info\_specifications.html.twig:15 - parameters.auto_extracted_from_comment Automatisch aus Notizen extrahiert - - Part-DB1\templates\Parts\info\_tools.html.twig:6 - Part-DB1\templates\Parts\info\_tools.html.twig:4 - templates\Parts\show_part_info.html.twig:125 - part.edit.btn Bauteil bearbeiten - - Part-DB1\templates\Parts\info\_tools.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:14 - templates\Parts\show_part_info.html.twig:135 - part.clone.btn Bauteil kopieren - - Part-DB1\templates\Parts\info\_tools.html.twig:24 - Part-DB1\templates\Parts\lists\_action_bar.html.twig:4 - templates\Parts\show_part_info.html.twig:143 - part.create.btn Neues Bauteil anlegen - - Part-DB1\templates\Parts\info\_tools.html.twig:31 - Part-DB1\templates\Parts\info\_tools.html.twig:29 - part.delete.confirm_title Möchten Sie dieses Bauteil wirklich löschen? - - Part-DB1\templates\Parts\info\_tools.html.twig:32 - Part-DB1\templates\Parts\info\_tools.html.twig:30 - part.delete.message Das Bauteil und alle zugehörigen Informationen (Bestände, Dateianhänge, etc.) werden gelöscht. Dies kann nicht rückgängig gemacht werden. - - Part-DB1\templates\Parts\info\_tools.html.twig:39 - Part-DB1\templates\Parts\info\_tools.html.twig:37 - part.delete Bauteil löschen - - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - parts_list.all.title Alle Bauteile - - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - parts_list.category.title Bauteile mit Kategorie - - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - parts_list.footprint.title Bauteile mit Footprint - - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - parts_list.manufacturer.title Bauteile mit Hersteller - - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - parts_list.search.title Bauteilesuche - - 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 Bauteile mit Lagerort - - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - parts_list.supplier.title Bauteile mit Lieferant - - Part-DB1\templates\Parts\lists\tags_list.html.twig:4 - Part-DB1\templates\Parts\lists\tags_list.html.twig:4 - parts_list.tags.title Bauteile mit Tag - - Part-DB1\templates\Parts\lists\_info_card.html.twig:22 - Part-DB1\templates\Parts\lists\_info_card.html.twig:17 - entity.info.common.tab Allgemein - - Part-DB1\templates\Parts\lists\_info_card.html.twig:26 - Part-DB1\templates\Parts\lists\_info_card.html.twig:20 - entity.info.statistics.tab Statistik - - Part-DB1\templates\Parts\lists\_info_card.html.twig:31 - entity.info.attachments.tab Dateianhänge - - Part-DB1\templates\Parts\lists\_info_card.html.twig:37 - entity.info.parameters.tab Parameter - - Part-DB1\templates\Parts\lists\_info_card.html.twig:54 - Part-DB1\templates\Parts\lists\_info_card.html.twig:30 - entity.info.name Name - - Part-DB1\templates\Parts\lists\_info_card.html.twig:58 - Part-DB1\templates\Parts\lists\_info_card.html.twig:96 - Part-DB1\templates\Parts\lists\_info_card.html.twig:34 - Part-DB1\templates\Parts\lists\_info_card.html.twig:67 - entity.info.parent Übergeordnetes Element - - Part-DB1\templates\Parts\lists\_info_card.html.twig:70 - Part-DB1\templates\Parts\lists\_info_card.html.twig:46 - entity.edit.btn Bearbeiten - - Part-DB1\templates\Parts\lists\_info_card.html.twig:92 - Part-DB1\templates\Parts\lists\_info_card.html.twig:63 - entity.info.children_count Anzahl an Unterelementen - - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - tfa.check.title Zwei-Faktor-Authentifizierung benötigt - - Part-DB1\templates\security\2fa_base_form.html.twig:39 - Part-DB1\templates\security\2fa_base_form.html.twig:39 - tfa.code.trusted_pc Dies ist ein vertrauenswürdiger Computer (wenn dies aktiviert ist, werden auf diesem Computer keine weiteren Zwei-Faktor-Abfragen durchgeführt) - - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - login.btn Login - - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:42 - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:40 - user.logout Ausloggen - - 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 - - Part-DB1\templates\security\2fa_form.html.twig:10 - Part-DB1\templates\security\2fa_form.html.twig:10 - tfa.check.code.help Geben Sie hier den 6-stelligen Code aus ihrer Authenticator App ein oder einen ihrer Backupcodes, wenn der Authenticator nicht verfügbar ist. - - Part-DB1\templates\security\login.html.twig:3 - Part-DB1\templates\security\login.html.twig:3 - templates\security\login.html.twig:3 - login.title Login - - Part-DB1\templates\security\login.html.twig:7 - Part-DB1\templates\security\login.html.twig:7 - templates\security\login.html.twig:7 - login.card_title Login - - Part-DB1\templates\security\login.html.twig:31 - Part-DB1\templates\security\login.html.twig:31 - templates\security\login.html.twig:31 - login.username.label Benutzername - - Part-DB1\templates\security\login.html.twig:34 - Part-DB1\templates\security\login.html.twig:34 - templates\security\login.html.twig:34 - login.username.placeholder Benutzername - - Part-DB1\templates\security\login.html.twig:38 - Part-DB1\templates\security\login.html.twig:38 - templates\security\login.html.twig:38 - login.password.label Passwort - - Part-DB1\templates\security\login.html.twig:40 - Part-DB1\templates\security\login.html.twig:40 - templates\security\login.html.twig:40 - login.password.placeholder Passwort - - Part-DB1\templates\security\login.html.twig:50 - Part-DB1\templates\security\login.html.twig:50 - templates\security\login.html.twig:50 - login.rememberme Eingeloggt bleiben (nicht empfohlen auf geteilten Computern) - - Part-DB1\templates\security\login.html.twig:64 - Part-DB1\templates\security\login.html.twig:64 - pw_reset.password_forget Nutzername/Passwort vergessen? - - 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 Neues Passwort setzen - - 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 Neues Passwort anfordern - - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - tfa_u2f.http_warning Sie greifen auf diese Seite über das unsichere HTTP-Verfahren zu, daher wird U2F sehr wahrscheinlich nicht funktionieren (Fehlermeldung Bad Request). Bitten Sie einen Administrator, das sichere HTTPS Verfahren einzurichten, wenn Sie Sicherheitsschlüssel benutzen möchten. - - Part-DB1\templates\security\U2F\u2f_login.html.twig:10 - Part-DB1\templates\security\U2F\u2f_register.html.twig:22 - 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 Bitte Sicherheitsschlüssel einstecken und Button drücken! - - 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 Sicherheitsschlüssel hinzufügen - - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - tfa_u2f.explanation Mithilfe eines U2F/FIDO kompatiblen Sicherheitsschlüssel (z.B. YubiKey oder NitroKey) kann eine benutzerfreundliche und sichere Zwei-Faktor-Authentifizierung ermöglicht. Die Sicherheitsschlüssel können hier registriert werden, und wird eine Zwei-Faktor-Überprüfung benötigt, so muss der Schlüssel nur per USB angesteckt oder per NFC gegen das Gerät getippt werden. - - 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 Um den Zugang auch bei Verlust des Schlüssels zu gewährleisten, ist es empfehlenswert einen zweiten Schlüssel als Backup zu registrieren und diesen an einem sicheren Ort zu lagern! - - 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 Schlüssel hinzufügen - - 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 Zurück zu den Einstellungen @@ -2976,10 +1762,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 new @@ -2989,8 +1771,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Statistics\statistics.html.twig:14 - Part-DB1\templates\Statistics\statistics.html.twig:14 new @@ -3000,8 +1780,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Statistics\statistics.html.twig:19 - Part-DB1\templates\Statistics\statistics.html.twig:19 new @@ -3011,8 +1789,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Statistics\statistics.html.twig:24 - Part-DB1\templates\Statistics\statistics.html.twig:24 new @@ -3022,12 +1798,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 new @@ -3037,12 +1807,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 new @@ -3052,8 +1816,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Statistics\statistics.html.twig:40 - Part-DB1\templates\Statistics\statistics.html.twig:40 new @@ -3063,8 +1825,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Statistics\statistics.html.twig:44 - Part-DB1\templates\Statistics\statistics.html.twig:44 new @@ -3074,8 +1834,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Statistics\statistics.html.twig:48 - Part-DB1\templates\Statistics\statistics.html.twig:48 new @@ -3085,8 +1843,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Statistics\statistics.html.twig:65 - Part-DB1\templates\Statistics\statistics.html.twig:65 new @@ -3096,8 +1852,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Statistics\statistics.html.twig:69 - Part-DB1\templates\Statistics\statistics.html.twig:69 new @@ -3107,8 +1861,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Statistics\statistics.html.twig:73 - Part-DB1\templates\Statistics\statistics.html.twig:73 new @@ -3118,8 +1870,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Statistics\statistics.html.twig:77 - Part-DB1\templates\Statistics\statistics.html.twig:77 new @@ -3129,8 +1879,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Statistics\statistics.html.twig:81 - Part-DB1\templates\Statistics\statistics.html.twig:81 new @@ -3140,8 +1888,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Statistics\statistics.html.twig:85 - Part-DB1\templates\Statistics\statistics.html.twig:85 new @@ -3151,8 +1897,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Statistics\statistics.html.twig:89 - Part-DB1\templates\Statistics\statistics.html.twig:89 new @@ -3162,8 +1906,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Statistics\statistics.html.twig:93 - Part-DB1\templates\Statistics\statistics.html.twig:93 new @@ -3173,8 +1915,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Statistics\statistics.html.twig:110 - Part-DB1\templates\Statistics\statistics.html.twig:110 new @@ -3184,8 +1924,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Statistics\statistics.html.twig:114 - Part-DB1\templates\Statistics\statistics.html.twig:114 new @@ -3195,8 +1933,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Statistics\statistics.html.twig:118 - Part-DB1\templates\Statistics\statistics.html.twig:118 new @@ -3206,8 +1942,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Statistics\statistics.html.twig:122 - Part-DB1\templates\Statistics\statistics.html.twig:122 new @@ -3217,8 +1951,6 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Statistics\statistics.html.twig:126 - Part-DB1\templates\Statistics\statistics.html.twig:126 new @@ -3227,302 +1959,156 @@ Subelemente werden beim Löschen nach oben verschoben. - - 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 Backupcodes - - Part-DB1\templates\Users\backup_codes.html.twig:12 - Part-DB1\templates\Users\backup_codes.html.twig:12 - tfa_backup.codes.explanation Drucken Sie diese Codes aus und bewahren Sie sie an einem sicheren Ort auf! - - Part-DB1\templates\Users\backup_codes.html.twig:13 - Part-DB1\templates\Users\backup_codes.html.twig:13 - tfa_backup.codes.help Wenn Sie keinen Zugriff auf ihr Gerät mit der Authenticator App mehr haben sollten (Smartphone verloren, Datenverlust, etc.) können Sie einen dieser Codes benutzen, um Zugriff auf ihren Account zu erhalten und evtl. eine neue Authenticator App einzurichten. Jeder dieser Codes lässt sich einmal einsetzen, es empfiehlt sich benutzte Codes zu streichen. Jeder mit Zugriff auf diese Codes kann potentiell auf ihren Account zugreifen, daher bewahren Sie sie an einem sicheren Ort auf. - - Part-DB1\templates\Users\backup_codes.html.twig:16 - Part-DB1\templates\Users\backup_codes.html.twig:16 - tfa_backup.username Benutzername - - Part-DB1\templates\Users\backup_codes.html.twig:29 - Part-DB1\templates\Users\backup_codes.html.twig:29 - tfa_backup.codes.page_generated_on Codes abgerufen am %date% - - Part-DB1\templates\Users\backup_codes.html.twig:32 - Part-DB1\templates\Users\backup_codes.html.twig:32 - tfa_backup.codes.print Drucken - - Part-DB1\templates\Users\backup_codes.html.twig:35 - Part-DB1\templates\Users\backup_codes.html.twig:35 - tfa_backup.codes.copy_clipboard In die Zwischenablage kopieren - - 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 Benutzerinformationen - - 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 Vorname - - 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 Nachname - - 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 E-Mail - - 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 Abteilung - - 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 Benutzername - - 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 Group - - Part-DB1\templates\Users\user_info.html.twig:67 - Part-DB1\templates\Users\user_info.html.twig:67 - user.permissions Berechtigungen - - 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 Benutzereinstellungen - - 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 Persönliche Daten - - 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 Konfiguration - - 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 Passwort ändern - - Part-DB1\templates\Users\_2fa_settings.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:6 - user.settings.2fa_settings Zwei-Faktor-Authentifizierung - - Part-DB1\templates\Users\_2fa_settings.html.twig:13 - Part-DB1\templates\Users\_2fa_settings.html.twig:13 - tfa.settings.google.tab Authenticator App - - Part-DB1\templates\Users\_2fa_settings.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:17 - tfa.settings.bakup.tab Backupcodes - - Part-DB1\templates\Users\_2fa_settings.html.twig:21 - Part-DB1\templates\Users\_2fa_settings.html.twig:21 - tfa.settings.u2f.tab Sicherheitsschlüssel (U2F) - - Part-DB1\templates\Users\_2fa_settings.html.twig:25 - Part-DB1\templates\Users\_2fa_settings.html.twig:25 - tfa.settings.trustedDevices.tab Vertrauenswürdige Geräte - - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - tfa_google.disable.confirm_title Möchten Sie die Authenticator App wirklich deaktivieren? - - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - tfa_google.disable.confirm_message Wenn Sie die Authenticator App deaktivieren, werden alle Backupcodes gelöscht, daher sie müssen sie evtl. neu ausdrucken.<br> @@ -3530,262 +2116,156 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich - - Part-DB1\templates\Users\_2fa_settings.html.twig:39 - Part-DB1\templates\Users\_2fa_settings.html.twig:39 - tfa_google.disabled_message Authenticator App deaktiviert - - Part-DB1\templates\Users\_2fa_settings.html.twig:48 - Part-DB1\templates\Users\_2fa_settings.html.twig:48 - tfa_google.step.download Laden Sie eine Authenticator App herunter (z.B. <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 Scannen Sie den nebenstehenden QR-Code mit der App oder geben Sie die Daten manuell ein - - Part-DB1\templates\Users\_2fa_settings.html.twig:50 - Part-DB1\templates\Users\_2fa_settings.html.twig:50 - tfa_google.step.input_code Geben Sie den erzeugten Code in das untere Feld ein und bestätigen Sie - - Part-DB1\templates\Users\_2fa_settings.html.twig:51 - Part-DB1\templates\Users\_2fa_settings.html.twig:51 - tfa_google.step.download_backup Drucken Sie ihre Backupcodes aus und lagern sie an einem sicheren Ort - - Part-DB1\templates\Users\_2fa_settings.html.twig:58 - Part-DB1\templates\Users\_2fa_settings.html.twig:58 - tfa_google.manual_setup Manuelle Einrichtung - - Part-DB1\templates\Users\_2fa_settings.html.twig:62 - Part-DB1\templates\Users\_2fa_settings.html.twig:62 - tfa_google.manual_setup.type Typ - - Part-DB1\templates\Users\_2fa_settings.html.twig:63 - Part-DB1\templates\Users\_2fa_settings.html.twig:63 - tfa_google.manual_setup.username Benutzername - - Part-DB1\templates\Users\_2fa_settings.html.twig:64 - Part-DB1\templates\Users\_2fa_settings.html.twig:64 - tfa_google.manual_setup.secret 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 Anzahl Stellen - - Part-DB1\templates\Users\_2fa_settings.html.twig:74 - Part-DB1\templates\Users\_2fa_settings.html.twig:74 - tfa_google.enabled_message Authenticator App aktiv - - Part-DB1\templates\Users\_2fa_settings.html.twig:83 - Part-DB1\templates\Users\_2fa_settings.html.twig:83 - tfa_backup.disabled Backupcodes deaktiviert. Authenticator App einrichten, um Backupcodes zu aktivieren. - - 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 Mithilfe dieser Backupcodes können Sie auf ihren Account zugreifen, selbst wenn Sie das Gerät mit der Authenticator App verlieren sollten. Drucken Sie die Codes aus und bewahren Sie sie an einem sicheren Ort auf. - - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - tfa_backup.reset_codes.confirm_title Codes wirklich zurücksetzen? - - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - tfa_backup.reset_codes.confirm_message Dies wird alle bisherigen Codes löschen und einen Satz neuer Codes generieren. Dies lässt sich nicht rückgängig machen. Denken Sie daran die neuen Codes auszudrucken und an einem sicheren Ort zu hinterlegen! - - Part-DB1\templates\Users\_2fa_settings.html.twig:91 - Part-DB1\templates\Users\_2fa_settings.html.twig:91 - tfa_backup.enabled Backupcodes aktiviert - - Part-DB1\templates\Users\_2fa_settings.html.twig:99 - Part-DB1\templates\Users\_2fa_settings.html.twig:99 - tfa_backup.show_codes Backupcodes anzeigen - - Part-DB1\templates\Users\_2fa_settings.html.twig:114 - Part-DB1\templates\Users\_2fa_settings.html.twig:114 - tfa_u2f.table_caption Registrierte Sicherheitsschlüssel - - Part-DB1\templates\Users\_2fa_settings.html.twig:115 - Part-DB1\templates\Users\_2fa_settings.html.twig:115 - tfa_u2f.delete_u2f.confirm_title Diesen Sicherheitsschlüssel wirklich entfernen? - - Part-DB1\templates\Users\_2fa_settings.html.twig:116 - Part-DB1\templates\Users\_2fa_settings.html.twig:116 - tfa_u2f.delete_u2f.confirm_message Wenn Sie diesen Schlüssel entfernen, dann wird kein Login mehr mit diesem möglich sein. Wenn keine Sicherheitsschlüssel verleiben, wird die Zwei-Faktor-Authentifizierung deaktiviert. - - Part-DB1\templates\Users\_2fa_settings.html.twig:123 - Part-DB1\templates\Users\_2fa_settings.html.twig:123 - tfa_u2f.keys.name Name des Schlüssels - - Part-DB1\templates\Users\_2fa_settings.html.twig:124 - Part-DB1\templates\Users\_2fa_settings.html.twig:124 - tfa_u2f.keys.added_date Datum der Registrierung - - Part-DB1\templates\Users\_2fa_settings.html.twig:134 - Part-DB1\templates\Users\_2fa_settings.html.twig:134 - tfa_u2f.key_delete Schlüssel löschen - - Part-DB1\templates\Users\_2fa_settings.html.twig:141 - Part-DB1\templates\Users\_2fa_settings.html.twig:141 - tfa_u2f.no_keys_registered Keine Sicherheitsschlüssel registriert - - Part-DB1\templates\Users\_2fa_settings.html.twig:144 - Part-DB1\templates\Users\_2fa_settings.html.twig:144 - tfa_u2f.add_new_key Neuen Sicherheitsschlüssel registrieren - - Part-DB1\templates\Users\_2fa_settings.html.twig:148 - Part-DB1\templates\Users\_2fa_settings.html.twig:148 - tfa_trustedDevices.explanation Bei der Überprüfung des zweiten Faktors, kann der aktuelle Computer als vertrauenswürdig gekennzeichnet werden, daher werden keine Zwei-Faktor-Überprüfungen mehr an diesem Computer benötigt. @@ -3793,326 +2273,168 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - - Part-DB1\templates\Users\_2fa_settings.html.twig:149 - Part-DB1\templates\Users\_2fa_settings.html.twig:149 - tfa_trustedDevices.invalidate.confirm_title Wirklich alle vertrauenswürdigen Computer entfernen? - - Part-DB1\templates\Users\_2fa_settings.html.twig:150 - Part-DB1\templates\Users\_2fa_settings.html.twig:150 - tfa_trustedDevices.invalidate.confirm_message Sie werden auf allen Rechnern erneut eine Zwei-Faktor-Authentifizierung durchführen müssen. Achten Sie darauf, dass Sie ihr Zwei-Faktor-Gerät zur Hand haben. - - Part-DB1\templates\Users\_2fa_settings.html.twig:154 - Part-DB1\templates\Users\_2fa_settings.html.twig:154 - tfa_trustedDevices.invalidate.btn Alle vertrauenswürdigen Geräte entfernen - - Part-DB1\templates\_navbar.html.twig:4 - Part-DB1\templates\_navbar.html.twig:4 - templates\base.html.twig:29 - sidebar.toggle Sidebar umschalten - - Part-DB1\templates\_navbar.html.twig:22 - navbar.scanner.link Scanner - - Part-DB1\templates\_navbar.html.twig:38 - Part-DB1\templates\_navbar.html.twig:36 - templates\base.html.twig:97 - user.loggedin.label Eingeloggt als - - Part-DB1\templates\_navbar.html.twig:44 - Part-DB1\templates\_navbar.html.twig:42 - templates\base.html.twig:103 - user.login Einloggen - - Part-DB1\templates\_navbar.html.twig:50 - Part-DB1\templates\_navbar.html.twig:48 - ui.toggle_darkmode Darkmode - - Part-DB1\templates\_navbar.html.twig:54 - Part-DB1\src\Form\UserSettingsType.php:97 - Part-DB1\templates\_navbar.html.twig:52 - Part-DB1\src\Form\UserSettingsType.php:97 - templates\base.html.twig:106 - src\Form\UserSettingsType.php:44 - user.language_select Sprache - - Part-DB1\templates\_navbar_search.html.twig:4 - Part-DB1\templates\_navbar_search.html.twig:4 - templates\base.html.twig:49 - search.options.label Suchoptionen - - Part-DB1\templates\_navbar_search.html.twig:23 - tags.label Tags - - Part-DB1\templates\_navbar_search.html.twig:27 - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - templates\base.html.twig:60 - templates\Parts\show_part_info.html.twig:36 - src\Form\PartType.php:77 - storelocation.label Lagerort - - Part-DB1\templates\_navbar_search.html.twig:36 - Part-DB1\templates\_navbar_search.html.twig:31 - templates\base.html.twig:65 - ordernumber.label.short Bestellnr. - - Part-DB1\templates\_navbar_search.html.twig:40 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - Part-DB1\templates\_navbar_search.html.twig:35 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - templates\base.html.twig:67 - supplier.label Lieferant - - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_navbar_search.html.twig:56 - templates\base.html.twig:77 - search.regexmatching Reg.Ex. Matching - - Part-DB1\templates\_sidebar.html.twig:37 - Part-DB1\templates\_sidebar.html.twig:12 - Part-DB1\templates\_sidebar.html.twig:37 - Part-DB1\templates\_sidebar.html.twig:12 - templates\base.html.twig:175 - templates\base.html.twig:189 - templates\base.html.twig:202 - templates\base.html.twig:230 - project.labelp Projekte - - Part-DB1\templates\_sidebar.html.twig:2 - Part-DB1\templates\_sidebar.html.twig:2 - templates\base.html.twig:165 - templates\base.html.twig:192 - templates\base.html.twig:220 - actions Aktionen - - Part-DB1\templates\_sidebar.html.twig:6 - Part-DB1\templates\_sidebar.html.twig:6 - templates\base.html.twig:169 - templates\base.html.twig:196 - templates\base.html.twig:224 - datasource Datenquelle - - Part-DB1\templates\_sidebar.html.twig:10 - Part-DB1\templates\_sidebar.html.twig:10 - templates\base.html.twig:173 - templates\base.html.twig:200 - templates\base.html.twig:228 - manufacturer.labelp Hersteller - - Part-DB1\templates\_sidebar.html.twig:11 - Part-DB1\templates\_sidebar.html.twig:11 - templates\base.html.twig:174 - templates\base.html.twig:201 - templates\base.html.twig:229 - supplier.labelp Lieferanten - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:213 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:293 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:293 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:181 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:243 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:268 - attachment.download_failed Download der externen Datei fehlgeschlagen! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:222 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:190 - entity.edit_flash Änderungen erfolgreich gespeichert. - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:231 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:196 - entity.edit_flash.invalid Änderungen konnten nicht gespeichert werden! Prüfen Sie ihre Eingaben! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:302 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:252 - entity.created_flash Element erfolgreich angelegt! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:308 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:258 - entity.created_flash.invalid Element konnte nicht angelegt werden! Prüfen Sie ihre Eingaben! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:399 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:352 - src\Controller\BaseAdminController.php:154 - attachment_type.deleted Element gelöscht! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:401 - Part-DB1\src\Controller\UserController.php:109 - Part-DB1\src\Controller\UserSettingsController.php:159 - Part-DB1\src\Controller\UserSettingsController.php:193 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:354 - Part-DB1\src\Controller\UserController.php:101 - Part-DB1\src\Controller\UserSettingsController.php:150 - Part-DB1\src\Controller\UserSettingsController.php:182 - csfr_invalid CSFR-Token ungültig! Laden Sie diese Seite erneut oder kontaktieren Sie einen Administrator, wenn das Problem bestehen bleibt! - - Part-DB1\src\Controller\LabelController.php:125 - label_generator.no_entities_found Keine Elemente gefunden @@ -4120,8 +2442,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\LogController.php:149 - Part-DB1\src\Controller\LogController.php:154 new @@ -4131,8 +2451,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\LogController.php:156 - Part-DB1\src\Controller\LogController.php:160 new @@ -4142,8 +2460,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\LogController.php:176 - Part-DB1\src\Controller\LogController.php:180 new @@ -4153,8 +2469,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\LogController.php:178 - Part-DB1\src\Controller\LogController.php:182 new @@ -4164,8 +2478,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\LogController.php:185 - Part-DB1\src\Controller\LogController.php:189 new @@ -4175,8 +2487,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\LogController.php:187 - Part-DB1\src\Controller\LogController.php:191 new @@ -4186,8 +2496,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\LogController.php:194 - Part-DB1\src\Controller\LogController.php:198 new @@ -4197,8 +2505,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\LogController.php:196 - Part-DB1\src\Controller\LogController.php:200 new @@ -4208,8 +2514,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\LogController.php:199 - Part-DB1\src\Controller\LogController.php:203 new @@ -4218,306 +2522,168 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - - Part-DB1\src\Controller\PartController.php:182 - Part-DB1\src\Controller\PartController.php:182 - src\Controller\PartController.php:80 - part.edited_flash Änderungen gespeichert! - - Part-DB1\src\Controller\PartController.php:216 - Part-DB1\src\Controller\PartController.php:219 - part.deleted Bauteil erfolgreich gelöscht. - - Part-DB1\src\Controller\PartController.php:302 - Part-DB1\src\Controller\PartController.php:277 - Part-DB1\src\Controller\PartController.php:317 - src\Controller\PartController.php:113 - src\Controller\PartController.php:142 - part.created_flash Bauteile erfolgreich angelegt! - - Part-DB1\src\Controller\PartController.php:308 - Part-DB1\src\Controller\PartController.php:283 - part.created_flash.invalid Fehler beim Anlegen: Überprüfen Sie ihre Eingaben! - - Part-DB1\src\Controller\ScanController.php:68 - Part-DB1\src\Controller\ScanController.php:90 - scan.qr_not_found Kein Element gefunden - - Part-DB1\src\Controller\ScanController.php:71 - scan.format_unknown Format unbekannt - - Part-DB1\src\Controller\ScanController.php:86 - scan.qr_success Element gefunden - - Part-DB1\src\Controller\SecurityController.php:114 - Part-DB1\src\Controller\SecurityController.php:109 - pw_reset.user_or_email Benutzername / E-Mail - - Part-DB1\src\Controller\SecurityController.php:131 - Part-DB1\src\Controller\SecurityController.php:126 - pw_reset.request.success Passwort-Anfrage erfolgreich! Überprüfen Sie Ihre E-Mails für weitere Informationen. - - Part-DB1\src\Controller\SecurityController.php:162 - Part-DB1\src\Controller\SecurityController.php:160 - pw_reset.username Benutzername - - 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 Benutzername oder Token ungültig! Überprüfen Sie ihre Eingaben. - - Part-DB1\src\Controller\SecurityController.php:196 - Part-DB1\src\Controller\SecurityController.php:194 - pw_reset.new_pw.success Passwort wurde erfolgreich zurückgesetzt. Sie können sich nun mit dem neuen Passwort einloggen. - - Part-DB1\src\Controller\UserController.php:107 - Part-DB1\src\Controller\UserController.php:99 - user.edit.reset_success Alle Zwei-Faktor-Authentisierungsmethoden wurden erfolgreich deaktiviert. - - Part-DB1\src\Controller\UserSettingsController.php:101 - Part-DB1\src\Controller\UserSettingsController.php:92 - tfa_backup.no_codes_enabled Es sind keine Backupcodes aktiviert! - - Part-DB1\src\Controller\UserSettingsController.php:138 - Part-DB1\src\Controller\UserSettingsController.php:132 - tfa_u2f.u2f_delete.not_existing Es existiert kein Sicherheitsschlüssel mit dieser ID! - - Part-DB1\src\Controller\UserSettingsController.php:145 - Part-DB1\src\Controller\UserSettingsController.php:139 - tfa_u2f.u2f_delete.access_denied Sie können nur ihre eigenen Sicherheitsschlüssel löschen! - - Part-DB1\src\Controller\UserSettingsController.php:153 - Part-DB1\src\Controller\UserSettingsController.php:147 - tfa.u2f.u2f_delete.success Sicherheitsschlüssel erfolgreich entfernt. - - Part-DB1\src\Controller\UserSettingsController.php:188 - Part-DB1\src\Controller\UserSettingsController.php:180 - tfa_trustedDevice.invalidate.success Vertrauenswürdige Geräte erfolgreich zurückgesetzt. - - Part-DB1\src\Controller\UserSettingsController.php:235 - Part-DB1\src\Controller\UserSettingsController.php:226 - src\Controller\UserController.php:98 - user.settings.saved_flash Einstellungen gespeichert! - - Part-DB1\src\Controller\UserSettingsController.php:297 - Part-DB1\src\Controller\UserSettingsController.php:288 - src\Controller\UserController.php:130 - user.settings.pw_changed_flash Passwort geändert! - - Part-DB1\src\Controller\UserSettingsController.php:317 - Part-DB1\src\Controller\UserSettingsController.php:306 - user.settings.2fa.google.activated Authenticator App erfolgreich aktiviert. - - Part-DB1\src\Controller\UserSettingsController.php:328 - Part-DB1\src\Controller\UserSettingsController.php:315 - user.settings.2fa.google.disabled Authenticator App erfolgreich deaktiviert. - - Part-DB1\src\Controller\UserSettingsController.php:346 - Part-DB1\src\Controller\UserSettingsController.php:332 - user.settings.2fa.backup_codes.regenerated Neue Backupcodes erfolgreich erzeugt. - - Part-DB1\src\DataTables\AttachmentDataTable.php:153 - Part-DB1\src\DataTables\AttachmentDataTable.php:153 - attachment.table.filesize Dateigröße - - 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 wahr - - 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 falsch - - Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:128 - Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:119 - log.target_deleted gelöscht @@ -4525,8 +2691,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\DataTables\Column\RevertLogColumn.php:57 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:60 new @@ -4536,8 +2700,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\DataTables\Column\RevertLogColumn.php:63 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:66 new @@ -4547,8 +2709,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\DataTables\Column\RevertLogColumn.php:83 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:86 new @@ -4557,70 +2717,42 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - - 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 Zeitstempel - - Part-DB1\src\DataTables\LogDataTable.php:183 - Part-DB1\src\DataTables\LogDataTable.php:171 - log.type Ereignis - - Part-DB1\src\DataTables\LogDataTable.php:191 - Part-DB1\src\DataTables\LogDataTable.php:179 - log.level Level - - Part-DB1\src\DataTables\LogDataTable.php:200 - Part-DB1\src\DataTables\LogDataTable.php:188 - log.user Benutzer - - Part-DB1\src\DataTables\LogDataTable.php:213 - Part-DB1\src\DataTables\LogDataTable.php:201 - log.target_type Zieltyp - - Part-DB1\src\DataTables\LogDataTable.php:226 - Part-DB1\src\DataTables\LogDataTable.php:214 - log.target Ziel @@ -4628,8 +2760,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\DataTables\LogDataTable.php:231 - Part-DB1\src\DataTables\LogDataTable.php:218 new @@ -4638,100 +2768,60 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - - Part-DB1\src\DataTables\PartsDataTable.php:168 - Part-DB1\src\DataTables\PartsDataTable.php:116 - part.table.name 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 Beschreibung - - Part-DB1\src\DataTables\PartsDataTable.php:185 - Part-DB1\src\DataTables\PartsDataTable.php:133 - part.table.category Kategorie - - Part-DB1\src\DataTables\PartsDataTable.php:190 - Part-DB1\src\DataTables\PartsDataTable.php:138 - part.table.footprint Footprint - - Part-DB1\src\DataTables\PartsDataTable.php:194 - Part-DB1\src\DataTables\PartsDataTable.php:142 - part.table.manufacturer Hersteller - - Part-DB1\src\DataTables\PartsDataTable.php:197 - Part-DB1\src\DataTables\PartsDataTable.php:145 - part.table.storeLocations Lagerorte - - Part-DB1\src\DataTables\PartsDataTable.php:216 - Part-DB1\src\DataTables\PartsDataTable.php:164 - part.table.amount Menge - - Part-DB1\src\DataTables\PartsDataTable.php:224 - Part-DB1\src\DataTables\PartsDataTable.php:172 - part.table.minamount Min. Menge - - Part-DB1\src\DataTables\PartsDataTable.php:232 - Part-DB1\src\DataTables\PartsDataTable.php:180 - part.table.partUnit Maßeinheit @@ -4744,864 +2834,522 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - - Part-DB1\src\DataTables\PartsDataTable.php:236 - Part-DB1\src\DataTables\PartsDataTable.php:184 - part.table.addedDate Hinzugefügt - - Part-DB1\src\DataTables\PartsDataTable.php:240 - Part-DB1\src\DataTables\PartsDataTable.php:188 - part.table.lastModified Zuletzt bearbeitet - - Part-DB1\src\DataTables\PartsDataTable.php:244 - Part-DB1\src\DataTables\PartsDataTable.php:192 - part.table.needsReview Review benötigt - - Part-DB1\src\DataTables\PartsDataTable.php:251 - Part-DB1\src\DataTables\PartsDataTable.php:199 - part.table.favorite Favorit - - Part-DB1\src\DataTables\PartsDataTable.php:258 - Part-DB1\src\DataTables\PartsDataTable.php:206 - part.table.manufacturingStatus Status - - 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 Unbekannt - - 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 Angekündigt - - 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 Aktiv - - 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 Not recommended for new designs - - 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 End of life - - 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 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 Gewicht - - Part-DB1\src\DataTables\PartsDataTable.php:279 - Part-DB1\src\DataTables\PartsDataTable.php:227 - part.table.tags Tags - - Part-DB1\src\DataTables\PartsDataTable.php:283 - Part-DB1\src\DataTables\PartsDataTable.php:231 - part.table.attachments Dateianhänge - - Part-DB1\src\EventSubscriber\UserSystem\LoginSuccessSubscriber.php:82 - Part-DB1\src\EventSubscriber\LoginSuccessListener.php:82 - flash.login_successful Login erfolgreich. - - 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 Wenn diese Option aktiviert ist, wird beim Erkennen ungültiger Daten der gesamte Vorgang abgebrochen. Ist diese Option nicht aktiv, werden ungültige Einträge ignoriert und versucht, die anderen Einträge zu importieren. - - 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 Trennzeichen - - Part-DB1\src\Form\AdminPages\ImportType.php:93 - Part-DB1\src\Form\AdminPages\ImportType.php:93 - src\Form\ImportType.php:72 - parent.label Übergeordnetes Element - - Part-DB1\src\Form\AdminPages\ImportType.php:101 - Part-DB1\src\Form\AdminPages\ImportType.php:101 - src\Form\ImportType.php:75 - import.file Datei - - Part-DB1\src\Form\AdminPages\ImportType.php:111 - Part-DB1\src\Form\AdminPages\ImportType.php:111 - src\Form\ImportType.php:78 - import.preserve_children Importiere auch Unterelemente - - 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 Breche bei Invaliden Daten ab - - Part-DB1\src\Form\AdminPages\ImportType.php:132 - Part-DB1\src\Form\AdminPages\ImportType.php:132 - src\Form\ImportType.php:85 - import.btn Importieren - - Part-DB1\src\Form\AttachmentFormType.php:113 - Part-DB1\src\Form\AttachmentFormType.php:109 - attachment.edit.secure_file.help Auf einen Anhang, der als privat gekennzeichnet wurde, kann nur durch einen angemeldeten Benutzer zugegriffen werden, der die entsprechende Berechtigung besitzt. Wenn diese Option aktiv ist, werden keine Thumbnails erzeugt, und der Zugriff auf die Datei ist langsamer. - - Part-DB1\src\Form\AttachmentFormType.php:127 - Part-DB1\src\Form\AttachmentFormType.php:123 - attachment.edit.url.help Hier kann entweder eine URL zu einer externen Datei eingetragen werden, oder es wird durch Eingabe eines Stichwortes in den eingebauten Ressourcen gesucht (z.B. Footprints). - - Part-DB1\src\Form\AttachmentFormType.php:82 - Part-DB1\src\Form\AttachmentFormType.php:79 - attachment.edit.name Name - - Part-DB1\src\Form\AttachmentFormType.php:85 - Part-DB1\src\Form\AttachmentFormType.php:82 - attachment.edit.attachment_type Anhangstyp - - Part-DB1\src\Form\AttachmentFormType.php:94 - Part-DB1\src\Form\AttachmentFormType.php:91 - attachment.edit.show_in_table Zeige in Tabelle - - Part-DB1\src\Form\AttachmentFormType.php:105 - Part-DB1\src\Form\AttachmentFormType.php:102 - attachment.edit.secure_file Privater Anhang - - 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 Downloade externe Datei - - Part-DB1\src\Form\AttachmentFormType.php:146 - Part-DB1\src\Form\AttachmentFormType.php:142 - attachment.edit.file Datei hochladen - - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:86 - part.label Bauteil - - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:87 - part_lot.label Bauteilebestand - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.none Keiner - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.qr QR-Code (empfohlen) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code128 Code 128 (empfohlen) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code39 Code 39 (empfohlen) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code93 Code 93 - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.datamatrix Datamatrix - - Part-DB1\src\Form\LabelOptionsType.php:122 - label_options.lines_mode.html 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 Wenn Sie hier Twig auswählen, wird das Contentfeld als Twig-Template interpretiert. Weitere Hilfe gibt es in der <a href="https://twig.symfony.com/doc/3.x/templates.html">Twig Dokumentation</a> und dem <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 Größe - - Part-DB1\src\Form\LabelOptionsType.php:66 - label_options.supported_elements.label Elementtyp - - Part-DB1\src\Form\LabelOptionsType.php:75 - label_options.barcode_type.label Barcode-Typ - - Part-DB1\src\Form\LabelOptionsType.php:102 - label_profile.lines.label Inhalt - - Part-DB1\src\Form\LabelOptionsType.php:111 - label_options.additional_css.label Zusätzliches CSS - - Part-DB1\src\Form\LabelOptionsType.php:120 - label_options.lines_mode.label Parser Modus - - Part-DB1\src\Form\LabelOptionsType.php:51 - label_options.width.placeholder Breite - - Part-DB1\src\Form\LabelOptionsType.php:60 - label_options.height.placeholder Höhe - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:49 - label_generator.target_id.range_hint Sie können hier mehrere IDs (z.B. 1, 2, 3) und/oder einen Bereich angeben, um Barcodes für mehrere Elemente auf einmal zu erzeugen. - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:46 - label_generator.target_id.label Element IDs - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:59 - label_generator.update Update - - Part-DB1\src\Form\LabelSystem\ScanDialogType.php:36 - scan_dialog.input Input - - Part-DB1\src\Form\LabelSystem\ScanDialogType.php:44 - scan_dialog.submit Absenden - - Part-DB1\src\Form\ParameterType.php:41 - parameters.name.placeholder z.B. DC Current Gain - - Part-DB1\src\Form\ParameterType.php:50 - parameters.symbol.placeholder z.B. h_{FE} - - Part-DB1\src\Form\ParameterType.php:60 - parameters.text.placeholder z.B. Test Specifications - - Part-DB1\src\Form\ParameterType.php:71 - parameters.max.placeholder z.B. 350 - - Part-DB1\src\Form\ParameterType.php:82 - parameters.min.placeholder z.B. 100 - - Part-DB1\src\Form\ParameterType.php:93 - parameters.typical.placeholder z.B. 200 - - Part-DB1\src\Form\ParameterType.php:103 - parameters.unit.placeholder z.B. V - - Part-DB1\src\Form\ParameterType.php:114 - parameter.group.placeholder z.B. Technische Spezifikationen - - Part-DB1\src\Form\Part\OrderdetailType.php:72 - Part-DB1\src\Form\Part\OrderdetailType.php:75 - orderdetails.edit.supplierpartnr Bestellnummer - - Part-DB1\src\Form\Part\OrderdetailType.php:81 - Part-DB1\src\Form\Part\OrderdetailType.php:84 - orderdetails.edit.supplier Lieferant - - Part-DB1\src\Form\Part\OrderdetailType.php:87 - Part-DB1\src\Form\Part\OrderdetailType.php:90 - orderdetails.edit.url Link zum Angebot - - Part-DB1\src\Form\Part\OrderdetailType.php:93 - Part-DB1\src\Form\Part\OrderdetailType.php:96 - orderdetails.edit.obsolete Nicht mehr lieferbar - - Part-DB1\src\Form\Part\OrderdetailType.php:75 - Part-DB1\src\Form\Part\OrderdetailType.php:78 - orderdetails.edit.supplierpartnr.placeholder z.B. BC 547C - - Part-DB1\src\Form\Part\PartBaseType.php:101 - Part-DB1\src\Form\Part\PartBaseType.php:99 - part.edit.name Name - - Part-DB1\src\Form\Part\PartBaseType.php:109 - Part-DB1\src\Form\Part\PartBaseType.php:107 - part.edit.description Beschreibung - - Part-DB1\src\Form\Part\PartBaseType.php:120 - Part-DB1\src\Form\Part\PartBaseType.php:118 - part.edit.mininstock Mindestbestand - - Part-DB1\src\Form\Part\PartBaseType.php:129 - Part-DB1\src\Form\Part\PartBaseType.php:127 - part.edit.category Kategorie - - Part-DB1\src\Form\Part\PartBaseType.php:135 - Part-DB1\src\Form\Part\PartBaseType.php:133 - part.edit.footprint Footprint - - Part-DB1\src\Form\Part\PartBaseType.php:142 - Part-DB1\src\Form\Part\PartBaseType.php:140 - part.edit.tags Tags - - Part-DB1\src\Form\Part\PartBaseType.php:154 - Part-DB1\src\Form\Part\PartBaseType.php:152 - part.edit.manufacturer.label Hersteller - - Part-DB1\src\Form\Part\PartBaseType.php:161 - Part-DB1\src\Form\Part\PartBaseType.php:159 - part.edit.manufacturer_url.label Link zur Produktseite - - Part-DB1\src\Form\Part\PartBaseType.php:167 - Part-DB1\src\Form\Part\PartBaseType.php:165 - part.edit.mpn Bauteilenummer des Herstellers - - Part-DB1\src\Form\Part\PartBaseType.php:173 - Part-DB1\src\Form\Part\PartBaseType.php:171 - part.edit.manufacturing_status Herstellungsstatus - - Part-DB1\src\Form\Part\PartBaseType.php:181 - Part-DB1\src\Form\Part\PartBaseType.php:179 - part.edit.needs_review Review benötigt - - Part-DB1\src\Form\Part\PartBaseType.php:189 - Part-DB1\src\Form\Part\PartBaseType.php:187 - part.edit.is_favorite Favorit - - Part-DB1\src\Form\Part\PartBaseType.php:197 - Part-DB1\src\Form\Part\PartBaseType.php:195 - part.edit.mass Gewicht - - Part-DB1\src\Form\Part\PartBaseType.php:203 - Part-DB1\src\Form\Part\PartBaseType.php:201 - part.edit.partUnit Maßeinheit @@ -5614,287 +3362,168 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - - Part-DB1\src\Form\Part\PartBaseType.php:212 - Part-DB1\src\Form\Part\PartBaseType.php:210 - part.edit.comment Notizen - - Part-DB1\src\Form\Part\PartBaseType.php:250 - Part-DB1\src\Form\Part\PartBaseType.php:246 - part.edit.master_attachment Vorschaubild - - Part-DB1\src\Form\Part\PartBaseType.php:295 - Part-DB1\src\Form\Part\PartBaseType.php:276 - src\Form\PartType.php:91 - part.edit.save Änderungen übernehmen - - Part-DB1\src\Form\Part\PartBaseType.php:296 - Part-DB1\src\Form\Part\PartBaseType.php:277 - src\Form\PartType.php:92 - part.edit.reset Änderungen verwerfen - - Part-DB1\src\Form\Part\PartBaseType.php:105 - Part-DB1\src\Form\Part\PartBaseType.php:103 - part.edit.name.placeholder z.B. BC547 - - Part-DB1\src\Form\Part\PartBaseType.php:115 - Part-DB1\src\Form\Part\PartBaseType.php:113 - part.edit.description.placeholder z.B. NPN 45V 0,1A 0,5W - - Part-DB1\src\Form\Part\PartBaseType.php:123 - Part-DB1\src\Form\Part\PartBaseType.php:121 - part.editmininstock.placeholder z.B. 1 - - Part-DB1\src\Form\Part\PartLotType.php:69 - Part-DB1\src\Form\Part\PartLotType.php:69 - part_lot.edit.description Beschreibung - - Part-DB1\src\Form\Part\PartLotType.php:78 - Part-DB1\src\Form\Part\PartLotType.php:78 - part_lot.edit.location Lagerort - - Part-DB1\src\Form\Part\PartLotType.php:89 - Part-DB1\src\Form\Part\PartLotType.php:89 - part_lot.edit.amount Menge - - Part-DB1\src\Form\Part\PartLotType.php:98 - Part-DB1\src\Form\Part\PartLotType.php:97 - part_lot.edit.instock_unknown Menge unbekannt - - Part-DB1\src\Form\Part\PartLotType.php:109 - Part-DB1\src\Form\Part\PartLotType.php:108 - part_lot.edit.needs_refill Muss aufgefüllt werden - - Part-DB1\src\Form\Part\PartLotType.php:120 - Part-DB1\src\Form\Part\PartLotType.php:119 - part_lot.edit.expiration_date Ablaufdatum - - Part-DB1\src\Form\Part\PartLotType.php:128 - Part-DB1\src\Form\Part\PartLotType.php:125 - part_lot.edit.comment Notiz - - Part-DB1\src\Form\Permissions\PermissionsType.php:99 - Part-DB1\src\Form\Permissions\PermissionsType.php:99 - perm.group.other Verschiedene - - Part-DB1\src\Form\TFAGoogleSettingsType.php:97 - Part-DB1\src\Form\TFAGoogleSettingsType.php:97 - tfa_google.enable Authenticator App aktivieren - - Part-DB1\src\Form\TFAGoogleSettingsType.php:101 - Part-DB1\src\Form\TFAGoogleSettingsType.php:101 - tfa_google.disable Authenticator App deaktivieren - - Part-DB1\src\Form\TFAGoogleSettingsType.php:74 - Part-DB1\src\Form\TFAGoogleSettingsType.php:74 - google_confirmation Bestätigungscode - - Part-DB1\src\Form\UserSettingsType.php:108 - Part-DB1\src\Form\UserSettingsType.php:108 - src\Form\UserSettingsType.php:46 - user.timezone.label Zeitzone - - Part-DB1\src\Form\UserSettingsType.php:133 - Part-DB1\src\Form\UserSettingsType.php:132 - user.currency.label Bevorzugte Währung - - Part-DB1\src\Form\UserSettingsType.php:140 - Part-DB1\src\Form\UserSettingsType.php:139 - src\Form\UserSettingsType.php:53 - save Änderungen übernehmen - - Part-DB1\src\Form\UserSettingsType.php:141 - Part-DB1\src\Form\UserSettingsType.php:140 - src\Form\UserSettingsType.php:54 - reset Änderungen verwerfen - - Part-DB1\src\Form\UserSettingsType.php:104 - Part-DB1\src\Form\UserSettingsType.php:104 - src\Form\UserSettingsType.php:45 - user_settings.language.placeholder Serverweite Sprache - - Part-DB1\src\Form\UserSettingsType.php:115 - Part-DB1\src\Form\UserSettingsType.php:115 - src\Form\UserSettingsType.php:48 - user_settings.timezone.placeholder Serverweite Zeitzone - - Part-DB1\src\Services\ElementTypeNameGenerator.php:79 - Part-DB1\src\Services\ElementTypeNameGenerator.php:79 - attachment.label Dateianhang - - Part-DB1\src\Services\ElementTypeNameGenerator.php:81 - Part-DB1\src\Services\ElementTypeNameGenerator.php:81 - attachment_type.label Anhangstyp - - Part-DB1\src\Services\ElementTypeNameGenerator.php:82 - Part-DB1\src\Services\ElementTypeNameGenerator.php:82 - project.label Projekt - - Part-DB1\src\Services\ElementTypeNameGenerator.php:85 - Part-DB1\src\Services\ElementTypeNameGenerator.php:85 - measurement_unit.label Maßeinheit @@ -5907,58 +3536,36 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - - Part-DB1\src\Services\ElementTypeNameGenerator.php:90 - Part-DB1\src\Services\ElementTypeNameGenerator.php:90 - currency.label Währung - - Part-DB1\src\Services\ElementTypeNameGenerator.php:91 - Part-DB1\src\Services\ElementTypeNameGenerator.php:91 - orderdetail.label Bestellinformation - - Part-DB1\src\Services\ElementTypeNameGenerator.php:92 - Part-DB1\src\Services\ElementTypeNameGenerator.php:92 - pricedetail.label Preisinformation - - Part-DB1\src\Services\ElementTypeNameGenerator.php:94 - Part-DB1\src\Services\ElementTypeNameGenerator.php:94 - user.label Benutzer - - Part-DB1\src\Services\ElementTypeNameGenerator.php:95 - parameter.label Parameter - - Part-DB1\src\Services\ElementTypeNameGenerator.php:96 - label_profile.label Labelprofil @@ -5966,8 +3573,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:176 - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:161 new @@ -5976,174 +3581,102 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - - Part-DB1\src\Services\MarkdownParser.php:73 - Part-DB1\src\Services\MarkdownParser.php:73 - markdown.loading Lade Markdown. Wenn diese längere Zeit bestehen bleibt, versuchen sie die Website erneut zu laden! - - Part-DB1\src\Services\PasswordResetManager.php:98 - Part-DB1\src\Services\PasswordResetManager.php:98 - pw_reset.email.subject Passwort-Reset für Ihren Part-DB-Account - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 - tree.tools.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 Bearbeiten - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:110 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 - src\Services\ToolsTreeBuilder.php:81 - tree.tools.show Zeige - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:111 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 - tree.tools.system System - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:123 - tree.tools.tools.label_dialog Labeldialog - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:130 - tree.tools.tools.label_scanner Labelscanner - - 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 [[Attachment_type]] - - 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 [[Category]] - - 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 [[Project]] - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:167 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:144 - src\Services\ToolsTreeBuilder.php:68 - tree.tools.edit.suppliers [[Supplier]] - - 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 [[Manufacturer]] - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:179 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:156 - tree.tools.edit.storelocation [[Storage_location]] - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:185 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:162 - tree.tools.edit.footprint [[Footprint]] - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:191 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:168 - tree.tools.edit.currency [[Currency]] - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:174 - tree.tools.edit.measurement_unit [[Measurement_unit]] @@ -6156,40 +3689,24 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 - tree.tools.edit.label_profile [[Label_profile]] - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:209 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:180 - tree.tools.edit.part Neues [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 Alle Teile - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:232 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 - tree.tools.show.all_attachments Dateianhänge @@ -6197,8 +3714,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:239 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:210 new @@ -6207,20 +3722,12 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:258 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:229 - tree.tools.system.users [[User]] - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:264 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:235 - tree.tools.system.groups [[Group]] @@ -6228,8 +3735,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:271 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:242 new @@ -6238,11 +3743,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - src\Services\TreeBuilder.php:124 - entity.tree.new Neues Element @@ -6250,7 +3750,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 obsolete @@ -6260,8 +3759,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\templates\_navbar.html.twig:27 - templates\base.html.twig:88 obsolete @@ -6271,8 +3768,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\UserSettingsType.php:119 - src\Form\UserSettingsType.php:49 obsolete @@ -6282,8 +3777,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\UserSettingsType.php:129 - src\Form\UserSettingsType.php:50 obsolete @@ -6293,7 +3786,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:100 new obsolete @@ -6304,10 +3796,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - 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 @@ -6318,10 +3806,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - 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 @@ -6332,7 +3816,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:139 new obsolete @@ -6343,7 +3826,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:160 new obsolete @@ -6354,7 +3836,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:184 new obsolete @@ -6365,7 +3846,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:198 new obsolete @@ -6376,7 +3856,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:214 new obsolete @@ -6387,7 +3866,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - templates\base.html.twig:81 obsolete obsolete @@ -6398,7 +3876,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - templates\base.html.twig:109 obsolete obsolete @@ -6409,7 +3886,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - templates\base.html.twig:112 obsolete obsolete @@ -6700,7 +4176,6 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - src\Form\PartType.php:63 obsolete obsolete @@ -7376,7 +4851,6 @@ Element 1 -> Element 1.2 - templates\Parts\show_part_info.html.twig:194 obsolete obsolete @@ -7387,7 +4861,6 @@ Element 1 -> Element 1.2 - src\Form\PartType.php:83 obsolete obsolete @@ -14927,4 +12400,4 @@ Buerklin-API-Authentication-Server: - + \ No newline at end of file diff --git a/translations/messages.el.xlf b/translations/messages.el.xlf index 5ce8f565..f93ec99f 100644 --- a/translations/messages.el.xlf +++ b/translations/messages.el.xlf @@ -2,317 +2,156 @@ - - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - attachment_type.caption τύπος επισυναπτόμενου αρχείου - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - templates\AdminPages\CategoryAdmin.html.twig:4 - templates\base.html.twig:163 - templates\base.html.twig:170 - templates\base.html.twig:197 - templates\base.html.twig:225 - category.labelp κατηγορίες - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:19 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:11 - templates\AdminPages\CategoryAdmin.html.twig:8 - admin.options Επιλογές - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - templates\AdminPages\CategoryAdmin.html.twig:9 - admin.advanced Προχωρημένες - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - currency.caption Νόμισμα - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - currency.iso_code.caption Κωδικός ISO - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - currency.symbol.caption Σύμβολο Νομίσματος - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Αναζήτηση - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - templates\AdminPages\EntityAdminBase.html.twig:13 - templates\base.html.twig:166 - templates\base.html.twig:193 - templates\base.html.twig:221 - expandAll Επεκτείνετε όλα - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - templates\AdminPages\EntityAdminBase.html.twig:17 - templates\base.html.twig:167 - templates\base.html.twig:194 - templates\base.html.twig:222 - reduceAll Αναδίπλωση όλων - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - templates\AdminPages\EntityAdminBase.html.twig:42 - standard.label Ιδιότητες - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - templates\AdminPages\EntityAdminBase.html.twig:43 - infos.label Πληροφορίες - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - templates\AdminPages\EntityAdminBase.html.twig:45 - export.label Εξαγωγή - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - templates\AdminPages\EntityAdminBase.html.twig:47 - import_export.label Εισαγωγή / Εξαγωγή - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - mass_creation.label Μαζική δημιουργία - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - templates\AdminPages\EntityAdminBase.html.twig:59 - admin.common Κοινός - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - admin.attachments Συνημμένα - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:179 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:167 - templates\AdminPages\EntityAdminBase.html.twig:142 - export_all.label Εξαγωγή όλων των στοιχείων - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:185 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:173 - mass_creation.help Κάθε γραμμή θα ερμηνευτεί ως όνομα ενός στοιχείου, το οποίο θα δημιουργηθεί - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - templates\AdminPages\EntityAdminBase.html.twig:35 - edit.caption Επεξεργασία στοιχείου "%name" - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - templates\AdminPages\EntityAdminBase.html.twig:37 - new.caption Νέο στοιχείο - - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - templates\base.html.twig:172 - templates\base.html.twig:199 - templates\base.html.twig:227 - footprint.labelp Footprints - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - group.edit.caption Ομάδες - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - user.edit.permissions Δικαιώματα - - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - templates\AdminPages\ManufacturerAdmin.html.twig:4 - manufacturer.caption Κατασκευαστές - - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - measurement_unit.caption Μονάδα μέτρησης @@ -325,135 +164,72 @@ - - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:5 - Part-DB1\templates\_sidebar.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:8 - templates\base.html.twig:171 - templates\base.html.twig:198 - templates\base.html.twig:226 - storelocation.labelp Χώροι αποθήκευσης - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - user.edit.caption Χρήστες - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - user.edit.configuration Παραμετροποίηση - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - user.edit.password Κωδικός - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - user.edit.tfa.caption Έλεγχος ταυτότητας δύο παραγόντων - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - user.edit.tfa.google_active Εφαρμογή επαλήθευσης είναι ενεργή - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - tfa_backup.remaining_tokens Υπόλοιποι εφεδρικοί κωδικοί υπολογίζονται - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - tfa_backup.generation_date Ημερομηνία παραγωγής των εφεδρικών κωδικών - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - user.edit.tfa.disabled Η μέθοδος δεν είναι ενεργοποιημένη - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - user.edit.tfa.u2f_keys_count Ενεργά κλειδιά ασφαλείας - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_title Θέλετε πραγματικά να προχωρήσετε; - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_message Αυτό θα απενεργοποιήσει <b> όλες τις ενεργές μεθόδους πολλαπλής ταυτοποίησης του χρήστη </b> και θα διαγράψει τους <b> εφεδρικούς κώδικούς </ b>! @@ -463,139 +239,66 @@ - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - user.edit.tfa.disable_tfa.btn Απενεργοποίηση της πολλαπλής μεθόδου τατυτοποίησης - - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:63 - attachment.delete Διαγραφή - - Part-DB1\templates\AdminPages\_attachments.html.twig:41 - Part-DB1\templates\Parts\edit\_attachments.html.twig:38 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:35 - Part-DB1\src\DataTables\AttachmentDataTable.php:159 - Part-DB1\templates\Parts\edit\_attachments.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:159 - attachment.external Εξωτερικός - - Part-DB1\templates\AdminPages\_attachments.html.twig:49 - Part-DB1\templates\Parts\edit\_attachments.html.twig:47 - Part-DB1\templates\AdminPages\_attachments.html.twig:47 - Part-DB1\templates\Parts\edit\_attachments.html.twig:45 - attachment.preview.alt Επισύναψη μικρογραφίας - - Part-DB1\templates\AdminPages\_attachments.html.twig:52 - Part-DB1\templates\Parts\edit\_attachments.html.twig:50 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 - Part-DB1\templates\AdminPages\_attachments.html.twig:50 - Part-DB1\templates\Parts\edit\_attachments.html.twig:48 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:45 - attachment.view Προβολή - - Part-DB1\templates\AdminPages\_attachments.html.twig:58 - Part-DB1\templates\Parts\edit\_attachments.html.twig:56 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:43 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - Part-DB1\templates\AdminPages\_attachments.html.twig:56 - Part-DB1\templates\Parts\edit\_attachments.html.twig:54 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - attachment.file_not_found Το αρχείο δεν βρέθηκε - - Part-DB1\templates\AdminPages\_attachments.html.twig:66 - Part-DB1\templates\Parts\edit\_attachments.html.twig:64 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:48 - Part-DB1\templates\Parts\edit\_attachments.html.twig:62 - attachment.secure Προσωπικό συνημμένο - - Part-DB1\templates\AdminPages\_attachments.html.twig:79 - Part-DB1\templates\Parts\edit\_attachments.html.twig:77 - Part-DB1\templates\AdminPages\_attachments.html.twig:77 - Part-DB1\templates\Parts\edit\_attachments.html.twig:75 - attachment.create Προσθήκη συννημένου - - Part-DB1\templates\AdminPages\_attachments.html.twig:84 - Part-DB1\templates\Parts\edit\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - Part-DB1\templates\AdminPages\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_attachments.html.twig:80 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - part_lot.edit.delete.confirm Θέλετε πραγματικά να διαγράψετε αυτό το απόθεμα; Αυτό δεν μπορεί να αναιρεθεί! - - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - templates\AdminPages\_delete_form.html.twig:2 - entity.delete.confirm_title Θέλετε πραγματικά να διαγράψετε %name%; - - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - templates\AdminPages\_delete_form.html.twig:3 - entity.delete.message Αυτό δεν μπορεί να αναιρεθεί! @@ -604,887 +307,474 @@ - - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - templates\AdminPages\_delete_form.html.twig:9 - entity.delete Διαγραφή στοιχείου - - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - templates\AdminPages\_delete_form.html.twig:12 - entity.delete.recursive Διαγραφή αναδρομικών (όλα τα υποστοιχεία) - - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - templates\AdminPages\_export_form.html.twig:4 - src\Form\ImportType.php:67 - export.format Μορφή αρχείου - - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - templates\AdminPages\_export_form.html.twig:19 - export.level.simple Απλός - - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - templates\AdminPages\_export_form.html.twig:20 - export.level.extended Επεκτάθηκε - - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - templates\AdminPages\_export_form.html.twig:21 - export.level.full Γεμάτος - - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - templates\AdminPages\_export_form.html.twig:31 - export.include_children Συμπεριλαβάνονται τα υποστοιχεία στην εξαγωγή - - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - templates\AdminPages\_export_form.html.twig:39 - export.btn Εξαγωγή - - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - templates\AdminPages\EntityAdminBase.html.twig:94 - templates\Parts\edit_part_info.html.twig:12 - templates\Parts\show_part_info.html.twig:11 - id.label Ταυτότητα - - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:76 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:77 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:77 - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:59 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:60 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:53 - templates\AdminPages\EntityAdminBase.html.twig:101 - templates\Parts\show_part_info.html.twig:248 - createdAt Δημιουργήθηκε στο - - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:73 - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:49 - templates\AdminPages\EntityAdminBase.html.twig:114 - templates\Parts\show_part_info.html.twig:263 - lastModified Τελευταία τροποποίηση - - Part-DB1\templates\AdminPages\_info.html.twig:38 - Part-DB1\templates\AdminPages\_info.html.twig:38 - entity.info.parts_count Αριθμός ανατλλακτικών με αυτό το στοιχείο - - Part-DB1\templates\attachment_list.html.twig:3 - Part-DB1\templates\attachment_list.html.twig:3 - attachment.list.title Λίστα συνημμένων - - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - part_list.loading.caption Φόρτωση - - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - part_list.loading.message Αυτό μπορεί να διαρκέσει λίγο. Εάν αυτό το μήνυμα δεν εξαφανιστεί, δοκιμάστε να φορτώσετε ξανά τη σελίδα. - - Part-DB1\templates\base.html.twig:68 - Part-DB1\templates\base.html.twig:68 - templates\base.html.twig:246 - vendor.base.javascript_hint Παρακαλούμε ενεργοποιήστε το Javascript για να χρησιμοποιήσετε όλες τις δυνατότητες! - - Part-DB1\templates\base.html.twig:73 - Part-DB1\templates\base.html.twig:73 - sidebar.big.toggle Εμφάνιση / Απόκρυψη της πλευρικής μπάρας - - Part-DB1\templates\base.html.twig:95 - Part-DB1\templates\base.html.twig:95 - templates\base.html.twig:271 - loading.caption Φόρτωση: - - Part-DB1\templates\base.html.twig:96 - Part-DB1\templates\base.html.twig:96 - templates\base.html.twig:272 - loading.message Αυτό μπορεί να διαρκέσει λίγο. Αν αυτά τα μηνύματα παραμείνουν για μεγάλο χρονικό διάστημα, δοκιμάστε να φορτώσετε ξανά τη σελίδα. - - Part-DB1\templates\base.html.twig:101 - Part-DB1\templates\base.html.twig:101 - templates\base.html.twig:277 - loading.bar Φορτώνει... - - Part-DB1\templates\base.html.twig:112 - Part-DB1\templates\base.html.twig:112 - templates\base.html.twig:288 - back_to_top Επιστροφή στην κορυφή της σελίδας - - Part-DB1\templates\Form\permissionLayout.html.twig:35 - Part-DB1\templates\Form\permissionLayout.html.twig:35 - permission.edit.permission Δικαιώματα - - Part-DB1\templates\Form\permissionLayout.html.twig:36 - Part-DB1\templates\Form\permissionLayout.html.twig:36 - permission.edit.value Τιμή - - Part-DB1\templates\Form\permissionLayout.html.twig:53 - Part-DB1\templates\Form\permissionLayout.html.twig:53 - permission.legend.title Επεξήγηση των καταστάσεων: - - Part-DB1\templates\Form\permissionLayout.html.twig:57 - Part-DB1\templates\Form\permissionLayout.html.twig:57 - permission.legend.disallow Απαγορευμένος - - Part-DB1\templates\Form\permissionLayout.html.twig:61 - Part-DB1\templates\Form\permissionLayout.html.twig:61 - permission.legend.allow Επιτρέπεται - - Part-DB1\templates\Form\permissionLayout.html.twig:65 - Part-DB1\templates\Form\permissionLayout.html.twig:65 - permission.legend.inherit Καθορισμός δικαιωμάτων από την ομάδα (μητρική) - - Part-DB1\templates\helper.twig:3 - Part-DB1\templates\helper.twig:3 - bool.true Αληθής - - Part-DB1\templates\helper.twig:5 - Part-DB1\templates\helper.twig:5 - bool.false Ψευδής - - Part-DB1\templates\helper.twig:92 - Part-DB1\templates\helper.twig:87 - Yes Ναι - - Part-DB1\templates\helper.twig:94 - Part-DB1\templates\helper.twig:89 - No Όχι - - Part-DB1\templates\homepage.html.twig:22 - Part-DB1\templates\homepage.html.twig:22 - templates\homepage.html.twig:19 - homepage.license Πληροφορίες σχετικά με τις άδειες - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.caption Σελίδα έργου - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.text Οι λήψεις, οι αναφορές σφαλμάτων, η λίστα εργασιών, κ.λπ. μπορούν να βρεθούν <a href="%href%" class="link-external" target="_blank">GitHub σελίδα έργου</a> - - 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:67 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:50 - attachment.download Κατεβάστε - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Unknown Άγνωστο - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - part.isFavorite Αγαπημένα - - 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: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 Footprint - - 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 - Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - part.supplier.name Όνομα - - 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\_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 - Part-DB1\templates\Parts\info\_part_lots.html.twig:22 - part_lots.location_unknown Άγνωστη θέση αποθήκευσης - - Part-DB1\templates\Parts\info\_part_lots.html.twig:31 - Part-DB1\templates\Parts\info\_part_lots.html.twig:29 - part_lots.instock_unknown Άγνωστό ποσό - - Part-DB1\templates\Parts\info\_part_lots.html.twig:40 - Part-DB1\templates\Parts\info\_part_lots.html.twig:38 - part_lots.expiration_date Ημερομηνία λήξης - - Part-DB1\templates\Parts\info\_part_lots.html.twig:48 - Part-DB1\templates\Parts\info\_part_lots.html.twig:46 - part_lots.is_expired Έχει λήξει - - Part-DB1\templates\Parts\info\_part_lots.html.twig:55 - Part-DB1\templates\Parts\info\_part_lots.html.twig:53 - part_lots.need_refill Ανάγκη για νέα παραγγελία - - Part-DB1\templates\Parts\info\_picture.html.twig:15 - Part-DB1\templates\Parts\info\_picture.html.twig:15 - part.info.prev_picture Προηγούμενη εικόνα - - Part-DB1\templates\Parts\info\_picture.html.twig:19 - Part-DB1\templates\Parts\info\_picture.html.twig:19 - part.info.next_picture Επόμενη εικόνα - - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - part.mass.tooltip Σύνολο - - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - part.needs_review.badge Xρειάζεται επανεξέταση - - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - part.favorite.badge Αγαπημένα - - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - part.obsolete.badge Δεν είναι πλέον διαθέσιμο - - Part-DB1\templates\Parts\info\_tools.html.twig:6 - Part-DB1\templates\Parts\info\_tools.html.twig:4 - templates\Parts\show_part_info.html.twig:125 - part.edit.btn Επεξεργασία εξαρτήματος - - Part-DB1\templates\Parts\info\_tools.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:14 - templates\Parts\show_part_info.html.twig:135 - part.clone.btn Κλωνοποίηση Εξαρτήματος - - Part-DB1\templates\Parts\info\_tools.html.twig:24 - Part-DB1\templates\Parts\lists\_action_bar.html.twig:4 - templates\Parts\show_part_info.html.twig:143 - part.create.btn Δημιουργία νέου εξαρτήματος - - Part-DB1\templates\Parts\info\_tools.html.twig:31 - Part-DB1\templates\Parts\info\_tools.html.twig:29 - part.delete.confirm_title Θέλετε πραγματικά να διαγράψετε αυτό το εξάρτημα; - - Part-DB1\templates\Parts\info\_tools.html.twig:32 - Part-DB1\templates\Parts\info\_tools.html.twig:30 - part.delete.message Αυτό το εξάρτημα και και κάθε σχετική πληροφορία (όπως συνημμένα, πληροφορίες σχετικά με τις τιμές κ.λπ.) θα διαγραφούν. Χωρις να υπάρχει η δυνατότητα σε αυτη την ενεργεια να αναίρεθεί! - - Part-DB1\templates\Parts\info\_tools.html.twig:39 - Part-DB1\templates\Parts\info\_tools.html.twig:37 - part.delete Διαγραφή εξαρτήματος - - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - parts_list.all.title Όλα τα εξαρτήματα - - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - parts_list.category.title Εξαρτήματα ανα κατηγορία - - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - parts_list.footprint.title Εξαρτήματα ανα footprint - - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - parts_list.manufacturer.title Εξαρτήματα ανα κατασκευαστή - - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - parts_list.search.title Αναζήτηση εξαρτημάτων - - 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 Εξαρτήματα ανα τοποθεσία αποθήκευσης - - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - 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 Συνηθισμένος @@ -1492,7 +782,6 @@ - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 obsolete @@ -1648,4 +937,4 @@ - + \ No newline at end of file diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 483a6c88..5692ed25 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -2,11 +2,6 @@ - - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - attachment_type.caption File types for attachments @@ -14,7 +9,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:12 new @@ -24,7 +18,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:16 new @@ -33,45 +26,18 @@ - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - templates\AdminPages\CategoryAdmin.html.twig:4 - templates\base.html.twig:163 - templates\base.html.twig:170 - templates\base.html.twig:197 - templates\base.html.twig:225 - category.labelp Categories - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:19 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:11 - templates\AdminPages\CategoryAdmin.html.twig:8 - admin.options Options - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - templates\AdminPages\CategoryAdmin.html.twig:9 - admin.advanced Advanced @@ -79,7 +45,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:13 new @@ -89,7 +54,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:17 new @@ -98,20 +62,12 @@ - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - currency.iso_code.caption ISO code - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - currency.symbol.caption Currency symbol @@ -119,7 +75,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:29 new @@ -129,7 +84,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:33 new @@ -139,7 +93,6 @@ - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 new @@ -149,7 +102,6 @@ - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:12 new @@ -158,89 +110,36 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Search - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - templates\AdminPages\EntityAdminBase.html.twig:13 - templates\base.html.twig:166 - templates\base.html.twig:193 - templates\base.html.twig:221 - expandAll Expand All - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - templates\AdminPages\EntityAdminBase.html.twig:17 - templates\base.html.twig:167 - templates\base.html.twig:194 - templates\base.html.twig:222 - reduceAll Reduce All - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - 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> - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - templates\AdminPages\EntityAdminBase.html.twig:42 - standard.label Properties - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - templates\AdminPages\EntityAdminBase.html.twig:43 - infos.label Info @@ -248,8 +147,6 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 new @@ -258,120 +155,66 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - templates\AdminPages\EntityAdminBase.html.twig:45 - export.label Export - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - templates\AdminPages\EntityAdminBase.html.twig:47 - import_export.label Import / Export - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - mass_creation.label Mass creation - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - templates\AdminPages\EntityAdminBase.html.twig:59 - admin.common Common - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - admin.attachments Attachments - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:90 - admin.parameters Parameters - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:179 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:167 - templates\AdminPages\EntityAdminBase.html.twig:142 - export_all.label Export all elements - - 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. - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - templates\AdminPages\EntityAdminBase.html.twig:35 - edit.caption Edit element "%name" - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - templates\AdminPages\EntityAdminBase.html.twig:37 - new.caption New element - - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - templates\base.html.twig:172 - templates\base.html.twig:199 - templates\base.html.twig:227 - footprint.labelp Footprints @@ -379,7 +222,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:13 new @@ -389,7 +231,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:17 new @@ -398,12 +239,6 @@ - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - user.edit.permissions Permissions @@ -411,7 +246,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:24 new @@ -421,7 +255,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:28 new @@ -430,18 +263,12 @@ - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:8 - label_profile.advanced Advanced - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:9 - label_profile.comment Notes @@ -449,7 +276,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:55 new @@ -459,7 +285,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:59 new @@ -469,7 +294,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:8 new @@ -479,7 +303,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:12 new @@ -488,15 +311,6 @@ - - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:5 - Part-DB1\templates\_sidebar.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:8 - templates\base.html.twig:171 - templates\base.html.twig:198 - templates\base.html.twig:226 - storelocation.labelp Storage locations @@ -504,7 +318,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:32 new @@ -514,7 +327,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:36 new @@ -524,7 +336,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 new @@ -534,7 +345,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:20 new @@ -543,110 +353,60 @@ - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - user.edit.configuration Configuration - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - user.edit.password Password - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - user.edit.tfa.caption Two-factor authentication - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - user.edit.tfa.google_active Authenticator app active - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - 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 - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - 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 - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - user.edit.tfa.disabled Method not enabled - - 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 - - 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? - - 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>! @@ -656,10 +416,6 @@ 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 @@ -667,7 +423,6 @@ The user will have to set up all two-factor authentication methods again and pri - Part-DB1\templates\AdminPages\UserAdmin.html.twig:85 new @@ -677,7 +432,6 @@ The user will have to set up all two-factor authentication methods again and pri - Part-DB1\templates\AdminPages\UserAdmin.html.twig:89 new @@ -686,13 +440,6 @@ The user will have to set up all two-factor authentication methods again and pri - - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:63 - attachment.delete Delete @@ -705,102 +452,48 @@ The user will have to set up all two-factor authentication methods again and pri - - Part-DB1\templates\AdminPages\_attachments.html.twig:49 - Part-DB1\templates\Parts\edit\_attachments.html.twig:47 - Part-DB1\templates\AdminPages\_attachments.html.twig:47 - Part-DB1\templates\Parts\edit\_attachments.html.twig:45 - attachment.preview.alt Attachment thumbnail - - Part-DB1\templates\AdminPages\_attachments.html.twig:52 - Part-DB1\templates\Parts\edit\_attachments.html.twig:50 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 - Part-DB1\templates\AdminPages\_attachments.html.twig:50 - Part-DB1\templates\Parts\edit\_attachments.html.twig:48 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:45 - attachment.view_local View Local Copy - - Part-DB1\templates\AdminPages\_attachments.html.twig:58 - Part-DB1\templates\Parts\edit\_attachments.html.twig:56 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:43 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - Part-DB1\templates\AdminPages\_attachments.html.twig:56 - Part-DB1\templates\Parts\edit\_attachments.html.twig:54 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - attachment.file_not_found File not found - - Part-DB1\templates\AdminPages\_attachments.html.twig:66 - Part-DB1\templates\Parts\edit\_attachments.html.twig:64 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:48 - Part-DB1\templates\Parts\edit\_attachments.html.twig:62 - attachment.secure Private attachment - - Part-DB1\templates\AdminPages\_attachments.html.twig:79 - Part-DB1\templates\Parts\edit\_attachments.html.twig:77 - Part-DB1\templates\AdminPages\_attachments.html.twig:77 - Part-DB1\templates\Parts\edit\_attachments.html.twig:75 - attachment.create Add attachment - - Part-DB1\templates\AdminPages\_attachments.html.twig:84 - Part-DB1\templates\Parts\edit\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - Part-DB1\templates\AdminPages\_attachments.html.twig:82 - 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! - - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - 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%? - - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - templates\AdminPages\_delete_form.html.twig:3 - entity.delete.message This can not be undone! @@ -809,11 +502,6 @@ Sub elements will be moved upwards. - - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - templates\AdminPages\_delete_form.html.twig:9 - entity.delete Delete element @@ -821,12 +509,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:45 - Part-DB1\src\Form\Part\PartBaseType.php:286 - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:43 - Part-DB1\src\Form\Part\PartBaseType.php:267 new @@ -835,561 +517,300 @@ Sub elements will be moved upwards. - - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - templates\AdminPages\_delete_form.html.twig:12 - entity.delete.recursive Delete recursive (all sub elements) - - Part-DB1\templates\AdminPages\_duplicate.html.twig:3 - entity.duplicate Duplicate element - - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - templates\AdminPages\_export_form.html.twig:4 - src\Form\ImportType.php:67 - export.format File format - - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - templates\AdminPages\_export_form.html.twig:16 - export.level Verbosity level - - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - templates\AdminPages\_export_form.html.twig:19 - export.level.simple Simple - - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - templates\AdminPages\_export_form.html.twig:20 - export.level.extended Extended - - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - templates\AdminPages\_export_form.html.twig:21 - export.level.full Full - - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - templates\AdminPages\_export_form.html.twig:31 - export.include_children Include children elements in export - - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - templates\AdminPages\_export_form.html.twig:39 - export.btn Export - - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - templates\AdminPages\EntityAdminBase.html.twig:94 - templates\Parts\edit_part_info.html.twig:12 - templates\Parts\show_part_info.html.twig:11 - id.label ID - - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:76 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:77 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:77 - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:59 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:60 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:53 - templates\AdminPages\EntityAdminBase.html.twig:101 - templates\Parts\show_part_info.html.twig:248 - createdAt Created At - - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:73 - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:49 - templates\AdminPages\EntityAdminBase.html.twig:114 - templates\Parts\show_part_info.html.twig:263 - lastModified Last modified - - Part-DB1\templates\AdminPages\_info.html.twig:38 - Part-DB1\templates\AdminPages\_info.html.twig:38 - entity.info.parts_count Number of [[part]] with this element - - Part-DB1\templates\AdminPages\_parameters.html.twig:6 - Part-DB1\templates\helper.twig:125 - Part-DB1\templates\Parts\edit\_specifications.html.twig:6 - specifications.property Parameter - - Part-DB1\templates\AdminPages\_parameters.html.twig:7 - Part-DB1\templates\Parts\edit\_specifications.html.twig:7 - specifications.symbol Symbol - - Part-DB1\templates\AdminPages\_parameters.html.twig:8 - Part-DB1\templates\Parts\edit\_specifications.html.twig:8 - specifications.value_min Min. - - Part-DB1\templates\AdminPages\_parameters.html.twig:9 - Part-DB1\templates\Parts\edit\_specifications.html.twig:9 - specifications.value_typ Typ. - - Part-DB1\templates\AdminPages\_parameters.html.twig:10 - Part-DB1\templates\Parts\edit\_specifications.html.twig:10 - specifications.value_max Max. - - Part-DB1\templates\AdminPages\_parameters.html.twig:11 - Part-DB1\templates\Parts\edit\_specifications.html.twig:11 - specifications.unit Unit - - Part-DB1\templates\AdminPages\_parameters.html.twig:12 - Part-DB1\templates\Parts\edit\_specifications.html.twig:12 - specifications.text Text - - Part-DB1\templates\AdminPages\_parameters.html.twig:13 - Part-DB1\templates\Parts\edit\_specifications.html.twig:13 - specifications.group Group - - Part-DB1\templates\AdminPages\_parameters.html.twig:26 - Part-DB1\templates\Parts\edit\_specifications.html.twig:26 - specification.create New Parameter - - 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? - - Part-DB1\templates\attachment_list.html.twig:3 - Part-DB1\templates\attachment_list.html.twig:3 - attachment.list.title Attachments list - - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - part_list.loading.caption Loading - - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - Part-DB1\templates\attachment_list.html.twig:11 - 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. - - Part-DB1\templates\base.html.twig:68 - Part-DB1\templates\base.html.twig:68 - templates\base.html.twig:246 - vendor.base.javascript_hint Please activate Javascript to use all features! - - Part-DB1\templates\base.html.twig:73 - Part-DB1\templates\base.html.twig:73 - sidebar.big.toggle Show/Hide sidebar - - Part-DB1\templates\base.html.twig:95 - Part-DB1\templates\base.html.twig:95 - templates\base.html.twig:271 - loading.caption Loading: - - Part-DB1\templates\base.html.twig:96 - 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. - - Part-DB1\templates\base.html.twig:101 - Part-DB1\templates\base.html.twig:101 - templates\base.html.twig:277 - loading.bar Loading... - - Part-DB1\templates\base.html.twig:112 - Part-DB1\templates\base.html.twig:112 - templates\base.html.twig:288 - back_to_top Back to page's top - - Part-DB1\templates\Form\permissionLayout.html.twig:35 - Part-DB1\templates\Form\permissionLayout.html.twig:35 - permission.edit.permission Permissions - - Part-DB1\templates\Form\permissionLayout.html.twig:36 - Part-DB1\templates\Form\permissionLayout.html.twig:36 - permission.edit.value Value - - Part-DB1\templates\Form\permissionLayout.html.twig:53 - Part-DB1\templates\Form\permissionLayout.html.twig:53 - permission.legend.title Explanation of the states - - Part-DB1\templates\Form\permissionLayout.html.twig:57 - Part-DB1\templates\Form\permissionLayout.html.twig:57 - permission.legend.disallow Forbidden - - Part-DB1\templates\Form\permissionLayout.html.twig:61 - Part-DB1\templates\Form\permissionLayout.html.twig:61 - permission.legend.allow Allowed - - Part-DB1\templates\Form\permissionLayout.html.twig:65 - Part-DB1\templates\Form\permissionLayout.html.twig:65 - permission.legend.inherit Inherit from (parent) group - - Part-DB1\templates\helper.twig:3 - Part-DB1\templates\helper.twig:3 - bool.true True - - Part-DB1\templates\helper.twig:5 - Part-DB1\templates\helper.twig:5 - bool.false False - - Part-DB1\templates\helper.twig:92 - Part-DB1\templates\helper.twig:87 - Yes Yes - - Part-DB1\templates\helper.twig:94 - Part-DB1\templates\helper.twig:89 - No No - - Part-DB1\templates\helper.twig:126 - specifications.value Value - - Part-DB1\templates\homepage.html.twig:7 - Part-DB1\templates\homepage.html.twig:7 - templates\homepage.html.twig:7 - version.caption Version - - Part-DB1\templates\homepage.html.twig:22 - Part-DB1\templates\homepage.html.twig:22 - templates\homepage.html.twig:19 - homepage.license License information - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.caption Project page - - Part-DB1\templates\homepage.html.twig:31 - 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> - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - homepage.help.caption Help - - Part-DB1\templates\homepage.html.twig:32 - 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> - - Part-DB1\templates\homepage.html.twig:33 - Part-DB1\templates\homepage.html.twig:33 - templates\homepage.html.twig:30 - homepage.forum.caption Forum @@ -1397,8 +818,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\homepage.html.twig:45 - Part-DB1\templates\homepage.html.twig:45 new @@ -1407,138 +826,90 @@ 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 - - Part-DB1\templates\LabelSystem\dialog.html.twig:16 - label_generator.common Common - - Part-DB1\templates\LabelSystem\dialog.html.twig:20 - label_generator.advanced Advanced - - Part-DB1\templates\LabelSystem\dialog.html.twig:24 - label_generator.profiles Profiles - - Part-DB1\templates\LabelSystem\dialog.html.twig:58 - label_generator.selected_profile Currently selected profile - - Part-DB1\templates\LabelSystem\dialog.html.twig:62 - label_generator.edit_profile Edit profile - - Part-DB1\templates\LabelSystem\dialog.html.twig:75 - label_generator.load_profile Load profile - - Part-DB1\templates\LabelSystem\dialog.html.twig:102 - label_generator.download Download - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:3 - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:5 - label_generator.label_btn Generate label - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:20 - label_generator.label_empty New empty label - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:3 - label_scanner.title Label scanner - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - label_scanner.no_cam_found.title No webcam found - - 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. - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:27 - label_scanner.source_select Select source - - Part-DB1\templates\LogSystem\log_list.html.twig:3 - Part-DB1\templates\LogSystem\log_list.html.twig:3 - log.list.title System log @@ -1546,8 +917,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\LogSystem\_log_table.html.twig:1 - Part-DB1\templates\LogSystem\_log_table.html.twig:1 new @@ -1557,8 +926,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\LogSystem\_log_table.html.twig:2 - Part-DB1\templates\LogSystem\_log_table.html.twig:2 new @@ -1567,194 +934,114 @@ 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 - - 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. - - Part-DB1\templates\mail\pw_reset.html.twig:6 - Part-DB1\templates\mail\pw_reset.html.twig:6 - email.hi %name% Hi %name% - - 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. - - 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 - - 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 - - Part-DB1\templates\mail\pw_reset.html.twig:16 - Part-DB1\templates\mail\pw_reset.html.twig:16 - email.pw_reset.username Username - - Part-DB1\templates\mail\pw_reset.html.twig:19 - Part-DB1\templates\mail\pw_reset.html.twig:19 - email.pw_reset.token Token - - 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>. - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:18 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - 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 - - 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 - - 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 - - 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 - - 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 - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - templates\Parts\edit_part_info.html.twig:4 - part.edit.title Edit [part] - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - 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] - - 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 - - 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 - - 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 @@ -1821,279 +1108,156 @@ 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 - - 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 - - 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 - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 - part.edit.tab.specifications Parameters - - 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 - - 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 Create new [part] - - Part-DB1\templates\Parts\edit\_lots.html.twig:5 - Part-DB1\templates\Parts\edit\_lots.html.twig:5 - part_lot.delete Delete - - Part-DB1\templates\Parts\edit\_lots.html.twig:28 - Part-DB1\templates\Parts\edit\_lots.html.twig:28 - part_lot.create Add stock - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 - orderdetail.create Add distributor - - 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. - - 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! - - 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 Detail info for [part] - - 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 - - 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 Notes - - Part-DB1\templates\Parts\info\show_part_info.html.twig:64 - part.info.specifications Parameters - - 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 Attachments - - 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 Shopping information - - 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 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 Tools - - 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 - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 - attachment.name Name - - 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 - - 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 - - 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 - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:54 - attachment.preview Preview picture - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:67 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:50 - attachment.download_local Download Local Copy @@ -2101,8 +1265,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 new @@ -2111,14 +1273,6 @@ Sub elements will be moved upwards. - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Unknown Unknown @@ -2126,10 +1280,6 @@ Sub elements will be moved upwards. - 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 @@ -2139,8 +1289,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 new @@ -2149,49 +1297,24 @@ 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 - - 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 - - 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 Manufacturer - - 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 Name @@ -2199,8 +1322,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Parts\info\_main_infos.html.twig:27 - Part-DB1\templates\Parts\info\_main_infos.html.twig:27 new @@ -2209,767 +1330,432 @@ Sub elements will be moved upwards. - - 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 Description - - 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 Category - - 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 Instock - - 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 Minimum Instock - - 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 Footprint - - 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 Average Price - - Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - part.supplier.name Name - - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - part.supplier.partnr Partnr. - - 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 - - Part-DB1\templates\Parts\info\_order_infos.html.twig:29 - Part-DB1\templates\Parts\info\_order_infos.html.twig:29 - part.order.price 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 Unit Price - - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 - Part-DB1\templates\Parts\info\_part_lots.html.twig:6 - part_lots.description 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 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 Amount - - 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 - - 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 - - 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 - - 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 - - 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 - - Part-DB1\templates\Parts\info\_picture.html.twig:15 - Part-DB1\templates\Parts\info\_picture.html.twig:15 - part.info.prev_picture Previous picture - - Part-DB1\templates\Parts\info\_picture.html.twig:19 - Part-DB1\templates\Parts\info\_picture.html.twig:19 - part.info.next_picture Next picture - - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - part.mass.tooltip Mass - - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - part.needs_review.badge Needs review - - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - part.favorite.badge Favorite - - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - part.obsolete.badge No longer available - - Part-DB1\templates\Parts\info\_specifications.html.twig:10 - parameters.extracted_from_description Automatically extracted from description - - Part-DB1\templates\Parts\info\_specifications.html.twig:15 - parameters.auto_extracted_from_comment Automatically extracted from notes - - Part-DB1\templates\Parts\info\_tools.html.twig:6 - Part-DB1\templates\Parts\info\_tools.html.twig:4 - templates\Parts\show_part_info.html.twig:125 - part.edit.btn Edit [part] - - Part-DB1\templates\Parts\info\_tools.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:14 - templates\Parts\show_part_info.html.twig:135 - part.clone.btn Clone [part] - - Part-DB1\templates\Parts\info\_tools.html.twig:24 - Part-DB1\templates\Parts\lists\_action_bar.html.twig:4 - templates\Parts\show_part_info.html.twig:143 - part.create.btn Create new [part] - - 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]? - - 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! - - Part-DB1\templates\Parts\info\_tools.html.twig:39 - Part-DB1\templates\Parts\info\_tools.html.twig:37 - part.delete Delete [part] - - 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 [[part]] - - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - parts_list.category.title [[Part]] with [category] - - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - parts_list.footprint.title [[Part]] with [footprint] - - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - parts_list.manufacturer.title [[Part]] with [manufacturer] - - 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 [[part]] - - 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 [[Part]] with [[storage_location]] - - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - parts_list.supplier.title [[Part]] with [supplier] - - 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 - - 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 - - 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 - - Part-DB1\templates\Parts\lists\_info_card.html.twig:31 - entity.info.attachments.tab Attachments - - Part-DB1\templates\Parts\lists\_info_card.html.twig:37 - entity.info.parameters.tab Parameters - - Part-DB1\templates\Parts\lists\_info_card.html.twig:54 - Part-DB1\templates\Parts\lists\_info_card.html.twig:30 - entity.info.name Name - - Part-DB1\templates\Parts\lists\_info_card.html.twig:58 - Part-DB1\templates\Parts\lists\_info_card.html.twig:96 - Part-DB1\templates\Parts\lists\_info_card.html.twig:34 - Part-DB1\templates\Parts\lists\_info_card.html.twig:67 - entity.info.parent Parent - - Part-DB1\templates\Parts\lists\_info_card.html.twig:70 - Part-DB1\templates\Parts\lists\_info_card.html.twig:46 - entity.edit.btn Edit - - 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 - - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - 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 - - 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) - - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - login.btn Login - - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:42 - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:40 - user.logout Logout - - 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 - - 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. - - Part-DB1\templates\security\login.html.twig:3 - Part-DB1\templates\security\login.html.twig:3 - templates\security\login.html.twig:3 - login.title Login - - Part-DB1\templates\security\login.html.twig:7 - Part-DB1\templates\security\login.html.twig:7 - templates\security\login.html.twig:7 - login.card_title Login - - Part-DB1\templates\security\login.html.twig:31 - Part-DB1\templates\security\login.html.twig:31 - templates\security\login.html.twig:31 - login.username.label Username - - Part-DB1\templates\security\login.html.twig:34 - Part-DB1\templates\security\login.html.twig:34 - templates\security\login.html.twig:34 - login.username.placeholder Username - - Part-DB1\templates\security\login.html.twig:38 - Part-DB1\templates\security\login.html.twig:38 - templates\security\login.html.twig:38 - login.password.label Password - - Part-DB1\templates\security\login.html.twig:40 - Part-DB1\templates\security\login.html.twig:40 - templates\security\login.html.twig:40 - login.password.placeholder Password - - Part-DB1\templates\security\login.html.twig:50 - 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) - - Part-DB1\templates\security\login.html.twig:64 - Part-DB1\templates\security\login.html.twig:64 - pw_reset.password_forget Forgot username/password? - - 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 - - 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 - - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - 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. - - Part-DB1\templates\security\U2F\u2f_login.html.twig:10 - Part-DB1\templates\security\U2F\u2f_register.html.twig:22 - 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! - - 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 - - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - 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. - - 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! - - 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 - - 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 @@ -2977,10 +1763,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 new @@ -2990,8 +1772,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Statistics\statistics.html.twig:14 - Part-DB1\templates\Statistics\statistics.html.twig:14 new @@ -3001,8 +1781,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Statistics\statistics.html.twig:19 - Part-DB1\templates\Statistics\statistics.html.twig:19 new @@ -3012,8 +1790,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Statistics\statistics.html.twig:24 - Part-DB1\templates\Statistics\statistics.html.twig:24 new @@ -3023,12 +1799,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 new @@ -3038,12 +1808,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 new @@ -3053,8 +1817,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Statistics\statistics.html.twig:40 - Part-DB1\templates\Statistics\statistics.html.twig:40 new @@ -3064,8 +1826,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Statistics\statistics.html.twig:44 - Part-DB1\templates\Statistics\statistics.html.twig:44 new @@ -3075,8 +1835,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Statistics\statistics.html.twig:48 - Part-DB1\templates\Statistics\statistics.html.twig:48 new @@ -3086,8 +1844,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Statistics\statistics.html.twig:65 - Part-DB1\templates\Statistics\statistics.html.twig:65 new @@ -3097,8 +1853,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Statistics\statistics.html.twig:69 - Part-DB1\templates\Statistics\statistics.html.twig:69 new @@ -3108,8 +1862,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Statistics\statistics.html.twig:73 - Part-DB1\templates\Statistics\statistics.html.twig:73 new @@ -3119,8 +1871,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Statistics\statistics.html.twig:77 - Part-DB1\templates\Statistics\statistics.html.twig:77 new @@ -3130,8 +1880,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Statistics\statistics.html.twig:81 - Part-DB1\templates\Statistics\statistics.html.twig:81 new @@ -3141,8 +1889,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Statistics\statistics.html.twig:85 - Part-DB1\templates\Statistics\statistics.html.twig:85 new @@ -3152,8 +1898,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Statistics\statistics.html.twig:89 - Part-DB1\templates\Statistics\statistics.html.twig:89 new @@ -3163,8 +1907,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Statistics\statistics.html.twig:93 - Part-DB1\templates\Statistics\statistics.html.twig:93 new @@ -3174,8 +1916,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Statistics\statistics.html.twig:110 - Part-DB1\templates\Statistics\statistics.html.twig:110 new @@ -3185,8 +1925,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Statistics\statistics.html.twig:114 - Part-DB1\templates\Statistics\statistics.html.twig:114 new @@ -3196,8 +1934,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Statistics\statistics.html.twig:118 - Part-DB1\templates\Statistics\statistics.html.twig:118 new @@ -3207,8 +1943,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Statistics\statistics.html.twig:122 - Part-DB1\templates\Statistics\statistics.html.twig:122 new @@ -3218,8 +1952,6 @@ Sub elements will be moved upwards. - Part-DB1\templates\Statistics\statistics.html.twig:126 - Part-DB1\templates\Statistics\statistics.html.twig:126 new @@ -3228,302 +1960,156 @@ Sub elements will be moved upwards. - - 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 Backup codes - - 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! - - 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. - - Part-DB1\templates\Users\backup_codes.html.twig:16 - Part-DB1\templates\Users\backup_codes.html.twig:16 - tfa_backup.username Username - - 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% - - Part-DB1\templates\Users\backup_codes.html.twig:32 - Part-DB1\templates\Users\backup_codes.html.twig:32 - tfa_backup.codes.print Print - - 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 - - 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 User information - - 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 First name - - 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 Last name - - 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 Email - - 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 Department - - 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 Username - - 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 Group - - Part-DB1\templates\Users\user_info.html.twig:67 - Part-DB1\templates\Users\user_info.html.twig:67 - user.permissions 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 User settings - - 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 Personal data - - 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 Configuration - - 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 Change password - - 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 - - Part-DB1\templates\Users\_2fa_settings.html.twig:13 - Part-DB1\templates\Users\_2fa_settings.html.twig:13 - tfa.settings.google.tab Authenticator app - - Part-DB1\templates\Users\_2fa_settings.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:17 - tfa.settings.bakup.tab Backup codes - - 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) - - Part-DB1\templates\Users\_2fa_settings.html.twig:25 - Part-DB1\templates\Users\_2fa_settings.html.twig:25 - tfa.settings.trustedDevices.tab Trusted devices - - 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? - - 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> @@ -3531,262 +2117,156 @@ Also note that without two-factor authentication, your account is no longer as w - - 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! - - 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>) - - Part-DB1\templates\Users\_2fa_settings.html.twig:49 - Part-DB1\templates\Users\_2fa_settings.html.twig:49 - tfa_google.step.scan Scan the adjacent QR Code with the app or enter the data manually - - 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 - - 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 - - Part-DB1\templates\Users\_2fa_settings.html.twig:58 - Part-DB1\templates\Users\_2fa_settings.html.twig:58 - tfa_google.manual_setup 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 Type - - Part-DB1\templates\Users\_2fa_settings.html.twig:63 - Part-DB1\templates\Users\_2fa_settings.html.twig:63 - tfa_google.manual_setup.username Username - - Part-DB1\templates\Users\_2fa_settings.html.twig:64 - Part-DB1\templates\Users\_2fa_settings.html.twig:64 - tfa_google.manual_setup.secret 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 Digit count - - 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 - - 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. - - 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 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. - - 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? - - 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! - - Part-DB1\templates\Users\_2fa_settings.html.twig:91 - Part-DB1\templates\Users\_2fa_settings.html.twig:91 - tfa_backup.enabled Backup codes enabled - - 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 - - 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 - - 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? - - 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. - - Part-DB1\templates\Users\_2fa_settings.html.twig:123 - Part-DB1\templates\Users\_2fa_settings.html.twig:123 - tfa_u2f.keys.name Key name - - 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 - - Part-DB1\templates\Users\_2fa_settings.html.twig:134 - Part-DB1\templates\Users\_2fa_settings.html.twig:134 - tfa_u2f.key_delete Delete key - - 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. - - 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 - - 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. @@ -3794,326 +2274,168 @@ 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? - - 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. - - 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 - - Part-DB1\templates\_navbar.html.twig:4 - Part-DB1\templates\_navbar.html.twig:4 - templates\base.html.twig:29 - sidebar.toggle Toggle Sidebar - - Part-DB1\templates\_navbar.html.twig:22 - navbar.scanner.link Scanner - - Part-DB1\templates\_navbar.html.twig:38 - Part-DB1\templates\_navbar.html.twig:36 - templates\base.html.twig:97 - user.loggedin.label Logged in as - - Part-DB1\templates\_navbar.html.twig:44 - Part-DB1\templates\_navbar.html.twig:42 - templates\base.html.twig:103 - user.login Login - - Part-DB1\templates\_navbar.html.twig:50 - Part-DB1\templates\_navbar.html.twig:48 - ui.toggle_darkmode Darkmode - - Part-DB1\templates\_navbar.html.twig:54 - Part-DB1\src\Form\UserSettingsType.php:97 - Part-DB1\templates\_navbar.html.twig:52 - Part-DB1\src\Form\UserSettingsType.php:97 - templates\base.html.twig:106 - src\Form\UserSettingsType.php:44 - user.language_select Switch Language - - Part-DB1\templates\_navbar_search.html.twig:4 - Part-DB1\templates\_navbar_search.html.twig:4 - templates\base.html.twig:49 - search.options.label Search options - - Part-DB1\templates\_navbar_search.html.twig:23 - tags.label Tags - - Part-DB1\templates\_navbar_search.html.twig:27 - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - templates\base.html.twig:60 - templates\Parts\show_part_info.html.twig:36 - src\Form\PartType.php:77 - storelocation.label Storage location - - Part-DB1\templates\_navbar_search.html.twig:36 - Part-DB1\templates\_navbar_search.html.twig:31 - templates\base.html.twig:65 - ordernumber.label.short supplier partnr. - - Part-DB1\templates\_navbar_search.html.twig:40 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - Part-DB1\templates\_navbar_search.html.twig:35 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - templates\base.html.twig:67 - supplier.label Supplier - - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_navbar_search.html.twig:56 - templates\base.html.twig:77 - search.regexmatching Reg.Ex. Matching - - Part-DB1\templates\_sidebar.html.twig:37 - Part-DB1\templates\_sidebar.html.twig:12 - Part-DB1\templates\_sidebar.html.twig:37 - Part-DB1\templates\_sidebar.html.twig:12 - templates\base.html.twig:175 - templates\base.html.twig:189 - templates\base.html.twig:202 - templates\base.html.twig:230 - project.labelp Projects - - Part-DB1\templates\_sidebar.html.twig:2 - Part-DB1\templates\_sidebar.html.twig:2 - templates\base.html.twig:165 - templates\base.html.twig:192 - templates\base.html.twig:220 - actions Actions - - Part-DB1\templates\_sidebar.html.twig:6 - Part-DB1\templates\_sidebar.html.twig:6 - templates\base.html.twig:169 - templates\base.html.twig:196 - templates\base.html.twig:224 - datasource Data source - - Part-DB1\templates\_sidebar.html.twig:10 - Part-DB1\templates\_sidebar.html.twig:10 - templates\base.html.twig:173 - templates\base.html.twig:200 - templates\base.html.twig:228 - manufacturer.labelp Manufacturers - - Part-DB1\templates\_sidebar.html.twig:11 - Part-DB1\templates\_sidebar.html.twig:11 - templates\base.html.twig:174 - templates\base.html.twig:201 - templates\base.html.twig:229 - supplier.labelp Suppliers - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:213 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:293 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:293 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:181 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:243 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:268 - attachment.download_failed Download of the external attachment failed. - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:222 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:190 - entity.edit_flash Changes saved successful. - - 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! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:302 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:252 - entity.created_flash Element created. - - 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! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:399 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:352 - src\Controller\BaseAdminController.php:154 - attachment_type.deleted Element deleted! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:401 - Part-DB1\src\Controller\UserController.php:109 - Part-DB1\src\Controller\UserSettingsController.php:159 - Part-DB1\src\Controller\UserSettingsController.php:193 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:354 - Part-DB1\src\Controller\UserController.php:101 - 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. - - Part-DB1\src\Controller\LabelController.php:125 - label_generator.no_entities_found No entities matching the range found. @@ -4121,8 +2443,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\LogController.php:149 - Part-DB1\src\Controller\LogController.php:154 new @@ -4132,8 +2452,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\LogController.php:156 - Part-DB1\src\Controller\LogController.php:160 new @@ -4143,8 +2461,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\LogController.php:176 - Part-DB1\src\Controller\LogController.php:180 new @@ -4154,8 +2470,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\LogController.php:178 - Part-DB1\src\Controller\LogController.php:182 new @@ -4165,8 +2479,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\LogController.php:185 - Part-DB1\src\Controller\LogController.php:189 new @@ -4176,8 +2488,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\LogController.php:187 - Part-DB1\src\Controller\LogController.php:191 new @@ -4187,8 +2497,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\LogController.php:194 - Part-DB1\src\Controller\LogController.php:198 new @@ -4198,8 +2506,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\LogController.php:196 - Part-DB1\src\Controller\LogController.php:200 new @@ -4209,8 +2515,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\LogController.php:199 - Part-DB1\src\Controller\LogController.php:203 new @@ -4219,306 +2523,168 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - - Part-DB1\src\Controller\PartController.php:182 - Part-DB1\src\Controller\PartController.php:182 - src\Controller\PartController.php:80 - part.edited_flash Saved changes! - - Part-DB1\src\Controller\PartController.php:216 - Part-DB1\src\Controller\PartController.php:219 - part.deleted Part deleted successful. - - Part-DB1\src\Controller\PartController.php:302 - Part-DB1\src\Controller\PartController.php:277 - Part-DB1\src\Controller\PartController.php:317 - src\Controller\PartController.php:113 - src\Controller\PartController.php:142 - part.created_flash Part created! - - 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! - - 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. - - Part-DB1\src\Controller\ScanController.php:71 - scan.format_unknown Format unknown! - - Part-DB1\src\Controller\ScanController.php:86 - scan.qr_success Element found. - - Part-DB1\src\Controller\SecurityController.php:114 - Part-DB1\src\Controller\SecurityController.php:109 - pw_reset.user_or_email Username / Email - - 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. - - Part-DB1\src\Controller\SecurityController.php:162 - Part-DB1\src\Controller\SecurityController.php:160 - pw_reset.username 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 Username or Token invalid! Please check your input. - - 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. - - 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. - - Part-DB1\src\Controller\UserSettingsController.php:101 - Part-DB1\src\Controller\UserSettingsController.php:92 - tfa_backup.no_codes_enabled No backup codes enabled! - - 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. - - 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! - - Part-DB1\src\Controller\UserSettingsController.php:153 - Part-DB1\src\Controller\UserSettingsController.php:147 - tfa.u2f.u2f_delete.success Security key successfully removed. - - Part-DB1\src\Controller\UserSettingsController.php:188 - Part-DB1\src\Controller\UserSettingsController.php:180 - tfa_trustedDevice.invalidate.success Trusted devices successfully reset. - - Part-DB1\src\Controller\UserSettingsController.php:235 - Part-DB1\src\Controller\UserSettingsController.php:226 - src\Controller\UserController.php:98 - user.settings.saved_flash Settings saved! - - Part-DB1\src\Controller\UserSettingsController.php:297 - Part-DB1\src\Controller\UserSettingsController.php:288 - src\Controller\UserController.php:130 - user.settings.pw_changed_flash Password changed! - - Part-DB1\src\Controller\UserSettingsController.php:317 - Part-DB1\src\Controller\UserSettingsController.php:306 - user.settings.2fa.google.activated Authenticator App successfully activated. - - Part-DB1\src\Controller\UserSettingsController.php:328 - Part-DB1\src\Controller\UserSettingsController.php:315 - user.settings.2fa.google.disabled Authenticator App successfully deactivated. - - 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. - - Part-DB1\src\DataTables\AttachmentDataTable.php:153 - Part-DB1\src\DataTables\AttachmentDataTable.php:153 - attachment.table.filesize File size - - 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 deleted @@ -4526,8 +2692,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\Column\RevertLogColumn.php:57 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:60 new @@ -4537,8 +2701,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\Column\RevertLogColumn.php:63 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:66 new @@ -4548,8 +2710,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\Column\RevertLogColumn.php:83 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:86 new @@ -4558,70 +2718,42 @@ 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 - - Part-DB1\src\DataTables\LogDataTable.php:178 - Part-DB1\src\DataTables\LogDataTable.php:166 - log.timestamp Timestamp - - Part-DB1\src\DataTables\LogDataTable.php:183 - Part-DB1\src\DataTables\LogDataTable.php:171 - log.type Event - - Part-DB1\src\DataTables\LogDataTable.php:191 - Part-DB1\src\DataTables\LogDataTable.php:179 - log.level Level - - Part-DB1\src\DataTables\LogDataTable.php:200 - Part-DB1\src\DataTables\LogDataTable.php:188 - log.user User - - Part-DB1\src\DataTables\LogDataTable.php:213 - Part-DB1\src\DataTables\LogDataTable.php:201 - log.target_type Target type - - Part-DB1\src\DataTables\LogDataTable.php:226 - Part-DB1\src\DataTables\LogDataTable.php:214 - log.target Target @@ -4629,8 +2761,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\LogDataTable.php:231 - Part-DB1\src\DataTables\LogDataTable.php:218 new @@ -4639,100 +2769,60 @@ 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 - - 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 Description - - Part-DB1\src\DataTables\PartsDataTable.php:185 - Part-DB1\src\DataTables\PartsDataTable.php:133 - part.table.category Category - - Part-DB1\src\DataTables\PartsDataTable.php:190 - Part-DB1\src\DataTables\PartsDataTable.php:138 - part.table.footprint Footprint - - Part-DB1\src\DataTables\PartsDataTable.php:194 - Part-DB1\src\DataTables\PartsDataTable.php:142 - part.table.manufacturer Manufacturer - - Part-DB1\src\DataTables\PartsDataTable.php:197 - Part-DB1\src\DataTables\PartsDataTable.php:145 - part.table.storeLocations Storage locations - - Part-DB1\src\DataTables\PartsDataTable.php:216 - Part-DB1\src\DataTables\PartsDataTable.php:164 - part.table.amount Amount - - Part-DB1\src\DataTables\PartsDataTable.php:224 - Part-DB1\src\DataTables\PartsDataTable.php:172 - part.table.minamount Min. Amount - - Part-DB1\src\DataTables\PartsDataTable.php:232 - Part-DB1\src\DataTables\PartsDataTable.php:180 - part.table.partUnit Measurement Unit @@ -4745,864 +2835,522 @@ 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 - - Part-DB1\src\DataTables\PartsDataTable.php:240 - Part-DB1\src\DataTables\PartsDataTable.php:188 - part.table.lastModified Last modified - - Part-DB1\src\DataTables\PartsDataTable.php:244 - Part-DB1\src\DataTables\PartsDataTable.php:192 - part.table.needsReview Needs review - - Part-DB1\src\DataTables\PartsDataTable.php:251 - Part-DB1\src\DataTables\PartsDataTable.php:199 - part.table.favorite Favorite - - Part-DB1\src\DataTables\PartsDataTable.php:258 - Part-DB1\src\DataTables\PartsDataTable.php:206 - part.table.manufacturingStatus Status - - 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 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 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 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 Not recommended for new designs - - 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 End of life - - 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 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 Mass - - Part-DB1\src\DataTables\PartsDataTable.php:279 - Part-DB1\src\DataTables\PartsDataTable.php:227 - part.table.tags Tags - - Part-DB1\src\DataTables\PartsDataTable.php:283 - Part-DB1\src\DataTables\PartsDataTable.php:231 - part.table.attachments Attachments - - Part-DB1\src\EventSubscriber\UserSystem\LoginSuccessSubscriber.php:82 - Part-DB1\src\EventSubscriber\LoginSuccessListener.php:82 - flash.login_successful 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 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. - - 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 separator - - Part-DB1\src\Form\AdminPages\ImportType.php:93 - Part-DB1\src\Form\AdminPages\ImportType.php:93 - src\Form\ImportType.php:72 - parent.label Parent element - - Part-DB1\src\Form\AdminPages\ImportType.php:101 - Part-DB1\src\Form\AdminPages\ImportType.php:101 - src\Form\ImportType.php:75 - import.file 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 Preserve child elements on import - - 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 Abort on invalid data - - Part-DB1\src\Form\AdminPages\ImportType.php:132 - Part-DB1\src\Form\AdminPages\ImportType.php:132 - src\Form\ImportType.php:85 - import.btn Import - - 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. - - 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) - - Part-DB1\src\Form\AttachmentFormType.php:82 - Part-DB1\src\Form\AttachmentFormType.php:79 - attachment.edit.name Name - - Part-DB1\src\Form\AttachmentFormType.php:85 - Part-DB1\src\Form\AttachmentFormType.php:82 - attachment.edit.attachment_type Attachment type - - Part-DB1\src\Form\AttachmentFormType.php:94 - Part-DB1\src\Form\AttachmentFormType.php:91 - attachment.edit.show_in_table Show in table - - Part-DB1\src\Form\AttachmentFormType.php:105 - Part-DB1\src\Form\AttachmentFormType.php:102 - attachment.edit.secure_file Private attachment - - 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 Download external file - - Part-DB1\src\Form\AttachmentFormType.php:146 - Part-DB1\src\Form\AttachmentFormType.php:142 - attachment.edit.file Upload file - - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:86 - part.label Part - - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:87 - part_lot.label Part lot - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.none None - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.qr QR Code (recommended) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code128 Code 128 (recommended) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code39 Code 39 (recommended) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code93 Code 93 - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.datamatrix Datamatrix - - Part-DB1\src\Form\LabelOptionsType.php:122 - label_options.lines_mode.html Placeholders - - 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 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 - - Part-DB1\src\Form\LabelOptionsType.php:66 - label_options.supported_elements.label Target type - - Part-DB1\src\Form\LabelOptionsType.php:75 - label_options.barcode_type.label Barcode - - Part-DB1\src\Form\LabelOptionsType.php:102 - label_profile.lines.label Content - - Part-DB1\src\Form\LabelOptionsType.php:111 - label_options.additional_css.label Additional styles (CSS) - - Part-DB1\src\Form\LabelOptionsType.php:120 - label_options.lines_mode.label Parser mode - - Part-DB1\src\Form\LabelOptionsType.php:51 - label_options.width.placeholder Width - - Part-DB1\src\Form\LabelOptionsType.php:60 - label_options.height.placeholder Height - - 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. - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:46 - label_generator.target_id.label Target IDs - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:59 - label_generator.update Update - - Part-DB1\src\Form\LabelSystem\ScanDialogType.php:36 - scan_dialog.input Input - - Part-DB1\src\Form\LabelSystem\ScanDialogType.php:44 - scan_dialog.submit Submit - - Part-DB1\src\Form\ParameterType.php:41 - parameters.name.placeholder e.g. DC Current Gain - - Part-DB1\src\Form\ParameterType.php:50 - parameters.symbol.placeholder e.g. h_{FE} - - Part-DB1\src\Form\ParameterType.php:60 - parameters.text.placeholder e.g. Test conditions - - Part-DB1\src\Form\ParameterType.php:71 - parameters.max.placeholder e.g. 350 - - Part-DB1\src\Form\ParameterType.php:82 - parameters.min.placeholder e.g. 100 - - Part-DB1\src\Form\ParameterType.php:93 - parameters.typical.placeholder e.g. 200 - - Part-DB1\src\Form\ParameterType.php:103 - parameters.unit.placeholder e.g. V - - Part-DB1\src\Form\ParameterType.php:114 - parameter.group.placeholder e.g. Technical Specifications - - Part-DB1\src\Form\Part\OrderdetailType.php:72 - Part-DB1\src\Form\Part\OrderdetailType.php:75 - orderdetails.edit.supplierpartnr Supplier part number - - Part-DB1\src\Form\Part\OrderdetailType.php:81 - Part-DB1\src\Form\Part\OrderdetailType.php:84 - orderdetails.edit.supplier Supplier - - Part-DB1\src\Form\Part\OrderdetailType.php:87 - Part-DB1\src\Form\Part\OrderdetailType.php:90 - orderdetails.edit.url Link to offer - - Part-DB1\src\Form\Part\OrderdetailType.php:93 - Part-DB1\src\Form\Part\OrderdetailType.php:96 - orderdetails.edit.obsolete No longer available - - Part-DB1\src\Form\Part\OrderdetailType.php:75 - Part-DB1\src\Form\Part\OrderdetailType.php:78 - orderdetails.edit.supplierpartnr.placeholder e.g. BC 547 - - Part-DB1\src\Form\Part\PartBaseType.php:101 - Part-DB1\src\Form\Part\PartBaseType.php:99 - part.edit.name Name - - Part-DB1\src\Form\Part\PartBaseType.php:109 - Part-DB1\src\Form\Part\PartBaseType.php:107 - part.edit.description Description - - Part-DB1\src\Form\Part\PartBaseType.php:120 - Part-DB1\src\Form\Part\PartBaseType.php:118 - part.edit.mininstock Minimum stock - - Part-DB1\src\Form\Part\PartBaseType.php:129 - Part-DB1\src\Form\Part\PartBaseType.php:127 - part.edit.category Category - - Part-DB1\src\Form\Part\PartBaseType.php:135 - Part-DB1\src\Form\Part\PartBaseType.php:133 - part.edit.footprint Footprint - - Part-DB1\src\Form\Part\PartBaseType.php:142 - Part-DB1\src\Form\Part\PartBaseType.php:140 - part.edit.tags Tags - - Part-DB1\src\Form\Part\PartBaseType.php:154 - Part-DB1\src\Form\Part\PartBaseType.php:152 - part.edit.manufacturer.label Manufacturer - - 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 - - Part-DB1\src\Form\Part\PartBaseType.php:167 - Part-DB1\src\Form\Part\PartBaseType.php:165 - part.edit.mpn Manufacturer part number - - Part-DB1\src\Form\Part\PartBaseType.php:173 - Part-DB1\src\Form\Part\PartBaseType.php:171 - part.edit.manufacturing_status Manufacturing status - - Part-DB1\src\Form\Part\PartBaseType.php:181 - Part-DB1\src\Form\Part\PartBaseType.php:179 - part.edit.needs_review Needs review - - Part-DB1\src\Form\Part\PartBaseType.php:189 - Part-DB1\src\Form\Part\PartBaseType.php:187 - part.edit.is_favorite Favorite - - Part-DB1\src\Form\Part\PartBaseType.php:197 - Part-DB1\src\Form\Part\PartBaseType.php:195 - part.edit.mass Mass - - Part-DB1\src\Form\Part\PartBaseType.php:203 - Part-DB1\src\Form\Part\PartBaseType.php:201 - part.edit.partUnit Measuring unit @@ -5615,287 +3363,168 @@ 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 - - Part-DB1\src\Form\Part\PartBaseType.php:250 - Part-DB1\src\Form\Part\PartBaseType.php:246 - part.edit.master_attachment Preview image - - Part-DB1\src\Form\Part\PartBaseType.php:295 - Part-DB1\src\Form\Part\PartBaseType.php:276 - src\Form\PartType.php:91 - part.edit.save Save changes - - Part-DB1\src\Form\Part\PartBaseType.php:296 - Part-DB1\src\Form\Part\PartBaseType.php:277 - src\Form\PartType.php:92 - part.edit.reset Reset changes - - Part-DB1\src\Form\Part\PartBaseType.php:105 - Part-DB1\src\Form\Part\PartBaseType.php:103 - part.edit.name.placeholder e.g. BC547 - - 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 - - Part-DB1\src\Form\Part\PartBaseType.php:123 - Part-DB1\src\Form\Part\PartBaseType.php:121 - part.editmininstock.placeholder e.g. 1 - - Part-DB1\src\Form\Part\PartLotType.php:69 - Part-DB1\src\Form\Part\PartLotType.php:69 - part_lot.edit.description Description - - Part-DB1\src\Form\Part\PartLotType.php:78 - Part-DB1\src\Form\Part\PartLotType.php:78 - part_lot.edit.location Storage location - - Part-DB1\src\Form\Part\PartLotType.php:89 - Part-DB1\src\Form\Part\PartLotType.php:89 - part_lot.edit.amount Amount - - Part-DB1\src\Form\Part\PartLotType.php:98 - Part-DB1\src\Form\Part\PartLotType.php:97 - part_lot.edit.instock_unknown Amount unknown - - Part-DB1\src\Form\Part\PartLotType.php:109 - Part-DB1\src\Form\Part\PartLotType.php:108 - part_lot.edit.needs_refill Needs refill - - Part-DB1\src\Form\Part\PartLotType.php:120 - Part-DB1\src\Form\Part\PartLotType.php:119 - part_lot.edit.expiration_date Expiration date - - Part-DB1\src\Form\Part\PartLotType.php:128 - Part-DB1\src\Form\Part\PartLotType.php:125 - part_lot.edit.comment Notes - - Part-DB1\src\Form\Permissions\PermissionsType.php:99 - Part-DB1\src\Form\Permissions\PermissionsType.php:99 - perm.group.other Miscellaneous - - Part-DB1\src\Form\TFAGoogleSettingsType.php:97 - Part-DB1\src\Form\TFAGoogleSettingsType.php:97 - tfa_google.enable Enable authenticator app - - Part-DB1\src\Form\TFAGoogleSettingsType.php:101 - Part-DB1\src\Form\TFAGoogleSettingsType.php:101 - tfa_google.disable Deactivate authenticator app - - Part-DB1\src\Form\TFAGoogleSettingsType.php:74 - Part-DB1\src\Form\TFAGoogleSettingsType.php:74 - google_confirmation Confirmation code - - Part-DB1\src\Form\UserSettingsType.php:108 - Part-DB1\src\Form\UserSettingsType.php:108 - src\Form\UserSettingsType.php:46 - user.timezone.label Timezone - - Part-DB1\src\Form\UserSettingsType.php:133 - Part-DB1\src\Form\UserSettingsType.php:132 - user.currency.label Preferred currency - - Part-DB1\src\Form\UserSettingsType.php:140 - Part-DB1\src\Form\UserSettingsType.php:139 - src\Form\UserSettingsType.php:53 - save Apply changes - - Part-DB1\src\Form\UserSettingsType.php:141 - Part-DB1\src\Form\UserSettingsType.php:140 - src\Form\UserSettingsType.php:54 - reset Discard changes - - Part-DB1\src\Form\UserSettingsType.php:104 - Part-DB1\src\Form\UserSettingsType.php:104 - src\Form\UserSettingsType.php:45 - user_settings.language.placeholder Serverwide language - - Part-DB1\src\Form\UserSettingsType.php:115 - Part-DB1\src\Form\UserSettingsType.php:115 - src\Form\UserSettingsType.php:48 - user_settings.timezone.placeholder Serverwide Timezone - - Part-DB1\src\Services\ElementTypeNameGenerator.php:79 - Part-DB1\src\Services\ElementTypeNameGenerator.php:79 - attachment.label Attachment - - Part-DB1\src\Services\ElementTypeNameGenerator.php:81 - Part-DB1\src\Services\ElementTypeNameGenerator.php:81 - attachment_type.label Attachment type - - Part-DB1\src\Services\ElementTypeNameGenerator.php:82 - Part-DB1\src\Services\ElementTypeNameGenerator.php:82 - project.label Project - - Part-DB1\src\Services\ElementTypeNameGenerator.php:85 - Part-DB1\src\Services\ElementTypeNameGenerator.php:85 - measurement_unit.label Measurement unit @@ -5908,58 +3537,36 @@ 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 - - Part-DB1\src\Services\ElementTypeNameGenerator.php:91 - Part-DB1\src\Services\ElementTypeNameGenerator.php:91 - orderdetail.label Order detail - - Part-DB1\src\Services\ElementTypeNameGenerator.php:92 - Part-DB1\src\Services\ElementTypeNameGenerator.php:92 - pricedetail.label Price detail - - Part-DB1\src\Services\ElementTypeNameGenerator.php:94 - Part-DB1\src\Services\ElementTypeNameGenerator.php:94 - user.label User - - Part-DB1\src\Services\ElementTypeNameGenerator.php:95 - parameter.label Parameter - - Part-DB1\src\Services\ElementTypeNameGenerator.php:96 - label_profile.label Label profile @@ -5967,8 +3574,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:176 - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:161 new @@ -5977,174 +3582,102 @@ 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. - - 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 - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 - tree.tools.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 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 Show - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:111 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 - tree.tools.system System - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:123 - tree.tools.tools.label_dialog Label generator - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:130 - tree.tools.tools.label_scanner 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 [[Attachment_type]] - - 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 [[Category]] - - 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 [[Project]] - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:167 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:144 - src\Services\ToolsTreeBuilder.php:68 - tree.tools.edit.suppliers [[Supplier]] - - 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 [[Manufacturer]] - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:179 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:156 - tree.tools.edit.storelocation [[Storage_location]] - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:185 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:162 - tree.tools.edit.footprint [[Footprint]] - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:191 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:168 - tree.tools.edit.currency [[Currency]] - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:174 - tree.tools.edit.measurement_unit [[Measurement_unit]] @@ -6157,40 +3690,24 @@ 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_profile]] - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:209 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:180 - tree.tools.edit.part New [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 Show all [[part]] - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:232 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 - tree.tools.show.all_attachments Attachments @@ -6198,8 +3715,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:239 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:210 new @@ -6208,20 +3723,12 @@ 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 [[User]] - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:264 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:235 - tree.tools.system.groups [[Group]] @@ -6229,8 +3736,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:271 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:242 new @@ -6239,11 +3744,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - src\Services\TreeBuilder.php:124 - entity.tree.new New Element @@ -6251,7 +3751,6 @@ 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 @@ -6261,8 +3760,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\templates\_navbar.html.twig:27 - templates\base.html.twig:88 obsolete @@ -6272,8 +3769,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\UserSettingsType.php:119 - src\Form\UserSettingsType.php:49 obsolete @@ -6283,8 +3778,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\UserSettingsType.php:129 - src\Form\UserSettingsType.php:50 obsolete @@ -6294,7 +3787,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:100 new obsolete @@ -6305,10 +3797,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - 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 @@ -6319,10 +3807,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - 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 @@ -6333,7 +3817,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:139 new obsolete @@ -6344,7 +3827,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:160 new obsolete @@ -6355,7 +3837,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:184 new obsolete @@ -6366,7 +3847,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:198 new obsolete @@ -6377,7 +3857,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:214 new obsolete @@ -6388,7 +3867,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - templates\base.html.twig:81 obsolete obsolete @@ -6399,7 +3877,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - templates\base.html.twig:109 obsolete obsolete @@ -6410,7 +3887,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - templates\base.html.twig:112 obsolete obsolete @@ -6701,7 +4177,6 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - src\Form\PartType.php:63 obsolete obsolete @@ -7377,7 +4852,6 @@ Element 1 -> Element 1.2 - templates\Parts\show_part_info.html.twig:194 obsolete obsolete @@ -7388,7 +4862,6 @@ Element 1 -> Element 1.2 - src\Form\PartType.php:83 obsolete obsolete @@ -14929,4 +12402,4 @@ Buerklin-API Authentication server: - + \ No newline at end of file diff --git a/translations/messages.es.xlf b/translations/messages.es.xlf index a7c1f906..17b2156b 100644 --- a/translations/messages.es.xlf +++ b/translations/messages.es.xlf @@ -2,11 +2,6 @@ - - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - attachment_type.caption Tipo de archivo para adjuntos @@ -14,7 +9,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:12 new @@ -24,7 +18,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:16 new @@ -33,45 +26,18 @@ - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - templates\AdminPages\CategoryAdmin.html.twig:4 - templates\base.html.twig:163 - templates\base.html.twig:170 - templates\base.html.twig:197 - templates\base.html.twig:225 - category.labelp Categorías - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:19 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:11 - templates\AdminPages\CategoryAdmin.html.twig:8 - admin.options Opciones - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - templates\AdminPages\CategoryAdmin.html.twig:9 - admin.advanced Avanzado @@ -79,7 +45,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:13 new @@ -89,7 +54,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:17 new @@ -98,30 +62,18 @@ - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - currency.caption Divisa - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - currency.iso_code.caption Código ISO - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - currency.symbol.caption Símbolo de divisa @@ -129,7 +81,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:29 new @@ -139,7 +90,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:33 new @@ -149,7 +99,6 @@ - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 new @@ -159,7 +108,6 @@ - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:12 new @@ -168,89 +116,36 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Buscar - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - templates\AdminPages\EntityAdminBase.html.twig:13 - templates\base.html.twig:166 - templates\base.html.twig:193 - templates\base.html.twig:221 - expandAll Expandir todo - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - templates\AdminPages\EntityAdminBase.html.twig:17 - templates\base.html.twig:167 - templates\base.html.twig:194 - templates\base.html.twig:222 - reduceAll Reducir todo - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - part.info.timetravel_hint Así aparecía el componente antes de: %timestamp%. <i>Esta función es experimental, así que la información podría no ser correcta.</i> - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - templates\AdminPages\EntityAdminBase.html.twig:42 - standard.label Propiedades - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - templates\AdminPages\EntityAdminBase.html.twig:43 - infos.label Información @@ -258,8 +153,6 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 new @@ -268,120 +161,66 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - templates\AdminPages\EntityAdminBase.html.twig:45 - export.label Exportar - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - templates\AdminPages\EntityAdminBase.html.twig:47 - import_export.label Importar / Exportar - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - mass_creation.label Creación en masa - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - templates\AdminPages\EntityAdminBase.html.twig:59 - admin.common Común - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - admin.attachments Adjuntos - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:90 - admin.parameters Parámetros - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:179 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:167 - templates\AdminPages\EntityAdminBase.html.twig:142 - export_all.label Exportar todos los elementos - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:185 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:173 - mass_creation.help Cada línea será interpretada como el nombre de un elemento, el cual será creado. Puedes crear estructuras anidadas con identificadores. - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - templates\AdminPages\EntityAdminBase.html.twig:35 - edit.caption Editar elemento "%name" - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - templates\AdminPages\EntityAdminBase.html.twig:37 - new.caption Nuevo elemento - - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - templates\base.html.twig:172 - templates\base.html.twig:199 - templates\base.html.twig:227 - footprint.labelp Footprints @@ -389,7 +228,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:13 new @@ -399,7 +237,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:17 new @@ -408,22 +245,12 @@ - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - group.edit.caption Grupos - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - user.edit.permissions Permisos @@ -431,7 +258,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:24 new @@ -441,7 +267,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:28 new @@ -450,27 +275,18 @@ - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:4 - label_profile.caption Perfiles de etiqueta - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:8 - label_profile.advanced Avanzado - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:9 - label_profile.comment Notas @@ -478,7 +294,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:55 new @@ -488,7 +303,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:59 new @@ -497,11 +311,6 @@ - - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - templates\AdminPages\ManufacturerAdmin.html.twig:4 - manufacturer.caption Fabricantes @@ -509,7 +318,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:8 new @@ -519,7 +327,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:12 new @@ -528,10 +335,6 @@ - - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - measurement_unit.caption Unidad de medida @@ -544,15 +347,6 @@ - - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:5 - Part-DB1\templates\_sidebar.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:8 - templates\base.html.twig:171 - templates\base.html.twig:198 - templates\base.html.twig:226 - storelocation.labelp Ubicación del almacén @@ -560,7 +354,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:32 new @@ -570,7 +363,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:36 new @@ -580,7 +372,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 new @@ -590,7 +381,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:20 new @@ -599,120 +389,66 @@ - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - user.edit.caption Usuarios - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - user.edit.configuration Configuración - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - user.edit.password Contraseña - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - user.edit.tfa.caption Autenticación en dos pasos - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - user.edit.tfa.google_active App de autenticación activa - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - tfa_backup.remaining_tokens Cuenta de códigos backup restantes - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - tfa_backup.generation_date Fecha de creación de los códigos backup - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - user.edit.tfa.disabled Método no habilitado - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - user.edit.tfa.u2f_keys_count Llaves de seguridad activas - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_title ¿Estás seguro de que quieres continuar? - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_message Esto deshabilitará <b>todos los métodos de autenticación en dos pasos del usuario</b> y eliminará los <b>códigos backup</b>! @@ -722,10 +458,6 @@ - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - user.edit.tfa.disable_tfa.btn Deshabilitar todos los métodos de autenticación en dos pasos @@ -733,7 +465,6 @@ - Part-DB1\templates\AdminPages\UserAdmin.html.twig:85 new @@ -743,7 +474,6 @@ - Part-DB1\templates\AdminPages\UserAdmin.html.twig:89 new @@ -752,13 +482,6 @@ - - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:63 - attachment.delete Eliminar @@ -771,102 +494,48 @@ - - Part-DB1\templates\AdminPages\_attachments.html.twig:49 - Part-DB1\templates\Parts\edit\_attachments.html.twig:47 - Part-DB1\templates\AdminPages\_attachments.html.twig:47 - Part-DB1\templates\Parts\edit\_attachments.html.twig:45 - attachment.preview.alt Miniatura del adjunto - - Part-DB1\templates\AdminPages\_attachments.html.twig:52 - Part-DB1\templates\Parts\edit\_attachments.html.twig:50 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 - Part-DB1\templates\AdminPages\_attachments.html.twig:50 - Part-DB1\templates\Parts\edit\_attachments.html.twig:48 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:45 - attachment.view_local Ver copia local - - Part-DB1\templates\AdminPages\_attachments.html.twig:58 - Part-DB1\templates\Parts\edit\_attachments.html.twig:56 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:43 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - Part-DB1\templates\AdminPages\_attachments.html.twig:56 - Part-DB1\templates\Parts\edit\_attachments.html.twig:54 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - attachment.file_not_found Archivo no encontrado - - Part-DB1\templates\AdminPages\_attachments.html.twig:66 - Part-DB1\templates\Parts\edit\_attachments.html.twig:64 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:48 - Part-DB1\templates\Parts\edit\_attachments.html.twig:62 - attachment.secure Adjunto privado - - Part-DB1\templates\AdminPages\_attachments.html.twig:79 - Part-DB1\templates\Parts\edit\_attachments.html.twig:77 - Part-DB1\templates\AdminPages\_attachments.html.twig:77 - Part-DB1\templates\Parts\edit\_attachments.html.twig:75 - attachment.create Añadir adjunto - - Part-DB1\templates\AdminPages\_attachments.html.twig:84 - Part-DB1\templates\Parts\edit\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - Part-DB1\templates\AdminPages\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_attachments.html.twig:80 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - part_lot.edit.delete.confirm ¿Estás seguro de que quieres eliminar este stock? ¡No se puede deshacer! - - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - templates\AdminPages\_delete_form.html.twig:2 - entity.delete.confirm_title ¿Estás seguro de que quieres eliminar %name%? - - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - templates\AdminPages\_delete_form.html.twig:3 - entity.delete.message ¡No se puede deshacer! @@ -875,11 +544,6 @@ Subelementos serán desplazados hacia arriba. - - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - templates\AdminPages\_delete_form.html.twig:9 - entity.delete Eliminar elemento @@ -887,12 +551,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:45 - Part-DB1\src\Form\Part\PartBaseType.php:286 - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:43 - Part-DB1\src\Form\Part\PartBaseType.php:267 new @@ -901,561 +559,300 @@ Subelementos serán desplazados hacia arriba. - - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - templates\AdminPages\_delete_form.html.twig:12 - entity.delete.recursive Eliminar recursivamente (todos los subelementos) - - Part-DB1\templates\AdminPages\_duplicate.html.twig:3 - entity.duplicate Duplicar elemento - - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - templates\AdminPages\_export_form.html.twig:4 - src\Form\ImportType.php:67 - export.format Formato de archivo - - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - templates\AdminPages\_export_form.html.twig:16 - export.level Nivel de verbosidad - - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - templates\AdminPages\_export_form.html.twig:19 - export.level.simple Simple - - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - templates\AdminPages\_export_form.html.twig:20 - export.level.extended Extendido - - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - templates\AdminPages\_export_form.html.twig:21 - export.level.full Completo - - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - templates\AdminPages\_export_form.html.twig:31 - export.include_children Incluir elementos hijo en la exportación - - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - templates\AdminPages\_export_form.html.twig:39 - export.btn Exportar - - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - templates\AdminPages\EntityAdminBase.html.twig:94 - templates\Parts\edit_part_info.html.twig:12 - templates\Parts\show_part_info.html.twig:11 - id.label ID - - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:76 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:77 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:77 - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:59 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:60 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:53 - templates\AdminPages\EntityAdminBase.html.twig:101 - templates\Parts\show_part_info.html.twig:248 - createdAt Creado en - - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:73 - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:49 - templates\AdminPages\EntityAdminBase.html.twig:114 - templates\Parts\show_part_info.html.twig:263 - lastModified Última modificación - - Part-DB1\templates\AdminPages\_info.html.twig:38 - Part-DB1\templates\AdminPages\_info.html.twig:38 - entity.info.parts_count Número de componentes de este elemento - - Part-DB1\templates\AdminPages\_parameters.html.twig:6 - Part-DB1\templates\helper.twig:125 - Part-DB1\templates\Parts\edit\_specifications.html.twig:6 - specifications.property Parámetro - - Part-DB1\templates\AdminPages\_parameters.html.twig:7 - Part-DB1\templates\Parts\edit\_specifications.html.twig:7 - specifications.symbol Símbolo - - Part-DB1\templates\AdminPages\_parameters.html.twig:8 - Part-DB1\templates\Parts\edit\_specifications.html.twig:8 - specifications.value_min Min. - - Part-DB1\templates\AdminPages\_parameters.html.twig:9 - Part-DB1\templates\Parts\edit\_specifications.html.twig:9 - specifications.value_typ Typ. - - Part-DB1\templates\AdminPages\_parameters.html.twig:10 - Part-DB1\templates\Parts\edit\_specifications.html.twig:10 - specifications.value_max Max. - - Part-DB1\templates\AdminPages\_parameters.html.twig:11 - Part-DB1\templates\Parts\edit\_specifications.html.twig:11 - specifications.unit Unidad - - Part-DB1\templates\AdminPages\_parameters.html.twig:12 - Part-DB1\templates\Parts\edit\_specifications.html.twig:12 - specifications.text Texto - - Part-DB1\templates\AdminPages\_parameters.html.twig:13 - Part-DB1\templates\Parts\edit\_specifications.html.twig:13 - specifications.group Grupo - - Part-DB1\templates\AdminPages\_parameters.html.twig:26 - Part-DB1\templates\Parts\edit\_specifications.html.twig:26 - specification.create Nuevo parámetro - - Part-DB1\templates\AdminPages\_parameters.html.twig:31 - Part-DB1\templates\Parts\edit\_specifications.html.twig:31 - parameter.delete.confirm ¿Estás seguro de que quieres eliminar este parámetro? - - Part-DB1\templates\attachment_list.html.twig:3 - Part-DB1\templates\attachment_list.html.twig:3 - attachment.list.title Lista de adjuntos - - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - part_list.loading.caption Cargando - - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - part_list.loading.message Esto puede llevar unos instantes. Si este mensaje no desaparece, prueba a refrescar la página. - - Part-DB1\templates\base.html.twig:68 - Part-DB1\templates\base.html.twig:68 - templates\base.html.twig:246 - vendor.base.javascript_hint ¡Por favor, activa Javascript para poder usar todas las funciones! - - Part-DB1\templates\base.html.twig:73 - Part-DB1\templates\base.html.twig:73 - sidebar.big.toggle Mostrar/Esconder barra lateral - - Part-DB1\templates\base.html.twig:95 - Part-DB1\templates\base.html.twig:95 - templates\base.html.twig:271 - loading.caption Cargando: - - Part-DB1\templates\base.html.twig:96 - Part-DB1\templates\base.html.twig:96 - templates\base.html.twig:272 - loading.message Esto puede llevar un rato. Si este mensaje tarda mucho en desaparecer, prueba a refrescar la página. - - Part-DB1\templates\base.html.twig:101 - Part-DB1\templates\base.html.twig:101 - templates\base.html.twig:277 - loading.bar Cargando... - - Part-DB1\templates\base.html.twig:112 - Part-DB1\templates\base.html.twig:112 - templates\base.html.twig:288 - back_to_top Volver al inicio de la página - - Part-DB1\templates\Form\permissionLayout.html.twig:35 - Part-DB1\templates\Form\permissionLayout.html.twig:35 - permission.edit.permission Permisos - - Part-DB1\templates\Form\permissionLayout.html.twig:36 - Part-DB1\templates\Form\permissionLayout.html.twig:36 - permission.edit.value Valor - - Part-DB1\templates\Form\permissionLayout.html.twig:53 - Part-DB1\templates\Form\permissionLayout.html.twig:53 - permission.legend.title Explicación de los estados - - Part-DB1\templates\Form\permissionLayout.html.twig:57 - Part-DB1\templates\Form\permissionLayout.html.twig:57 - permission.legend.disallow Prohibido - - Part-DB1\templates\Form\permissionLayout.html.twig:61 - Part-DB1\templates\Form\permissionLayout.html.twig:61 - permission.legend.allow Autorizado - - Part-DB1\templates\Form\permissionLayout.html.twig:65 - Part-DB1\templates\Form\permissionLayout.html.twig:65 - permission.legend.inherit Heredar de grupo padre - - Part-DB1\templates\helper.twig:3 - Part-DB1\templates\helper.twig:3 - bool.true Verdadero - - Part-DB1\templates\helper.twig:5 - Part-DB1\templates\helper.twig:5 - bool.false Falso - - Part-DB1\templates\helper.twig:92 - Part-DB1\templates\helper.twig:87 - Yes - - Part-DB1\templates\helper.twig:94 - Part-DB1\templates\helper.twig:89 - No No - - Part-DB1\templates\helper.twig:126 - specifications.value Valor - - Part-DB1\templates\homepage.html.twig:7 - Part-DB1\templates\homepage.html.twig:7 - templates\homepage.html.twig:7 - version.caption Versión - - Part-DB1\templates\homepage.html.twig:22 - Part-DB1\templates\homepage.html.twig:22 - templates\homepage.html.twig:19 - homepage.license Información de licencia - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.caption Página de proyecto - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.text Fuente, descargas, informes de error, listas de quehaceres etc. pueden ser encontrados en <a href="%href%" class="link-external" target="_blank">GitHub página de proyecto</a> - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - homepage.help.caption Ayuda - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - homepage.help.text Ayuda y sugerencias pueden ser encontradas en la Wiki de <a href="%href%" class="link-external" target="_blank">GitHub página</a> - - Part-DB1\templates\homepage.html.twig:33 - Part-DB1\templates\homepage.html.twig:33 - templates\homepage.html.twig:30 - homepage.forum.caption Foro @@ -1463,8 +860,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\homepage.html.twig:45 - Part-DB1\templates\homepage.html.twig:45 new @@ -1473,138 +868,90 @@ Subelementos serán desplazados hacia arriba. - - Part-DB1\templates\LabelSystem\dialog.html.twig:3 - Part-DB1\templates\LabelSystem\dialog.html.twig:6 - label_generator.title Generador de etiquetas - - Part-DB1\templates\LabelSystem\dialog.html.twig:16 - label_generator.common Común - - Part-DB1\templates\LabelSystem\dialog.html.twig:20 - label_generator.advanced Avanzado - - Part-DB1\templates\LabelSystem\dialog.html.twig:24 - label_generator.profiles Perfiles - - Part-DB1\templates\LabelSystem\dialog.html.twig:58 - label_generator.selected_profile Perfil seleccionado - - Part-DB1\templates\LabelSystem\dialog.html.twig:62 - label_generator.edit_profile Editar perfil - - Part-DB1\templates\LabelSystem\dialog.html.twig:75 - label_generator.load_profile Cargar perfil - - Part-DB1\templates\LabelSystem\dialog.html.twig:102 - label_generator.download Descargar - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:3 - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:5 - label_generator.label_btn Generar etiqueta - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:20 - label_generator.label_empty Nueva etiqueta vacía - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:3 - label_scanner.title Lector de etiquetas - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - label_scanner.no_cam_found.title Webcam no encontrada - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - label_scanner.no_cam_found.text Necesitas una webcam y dar permiso para utilizar la función del lector. Puedes introducir el código de barras manualmente abajo. - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:27 - label_scanner.source_select Selecciona una fuente - - Part-DB1\templates\LogSystem\log_list.html.twig:3 - Part-DB1\templates\LogSystem\log_list.html.twig:3 - log.list.title Registro de sistema @@ -1612,8 +959,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\LogSystem\_log_table.html.twig:1 - Part-DB1\templates\LogSystem\_log_table.html.twig:1 new @@ -1623,8 +968,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\LogSystem\_log_table.html.twig:2 - Part-DB1\templates\LogSystem\_log_table.html.twig:2 new @@ -1633,194 +976,114 @@ Subelementos serán desplazados hacia arriba. - - Part-DB1\templates\mail\base.html.twig:24 - Part-DB1\templates\mail\base.html.twig:24 - mail.footer.email_sent_by Este e-mail fue enviado automáticamente por - - Part-DB1\templates\mail\base.html.twig:24 - Part-DB1\templates\mail\base.html.twig:24 - mail.footer.dont_reply No respondas a este e-mail. - - Part-DB1\templates\mail\pw_reset.html.twig:6 - Part-DB1\templates\mail\pw_reset.html.twig:6 - email.hi %name% Hi %name% - - Part-DB1\templates\mail\pw_reset.html.twig:7 - Part-DB1\templates\mail\pw_reset.html.twig:7 - email.pw_reset.message Alguien (esperemos que tú) ha solicitado cambiar la contraseña. Si tú no lo has solicitado, ignora este email. - - Part-DB1\templates\mail\pw_reset.html.twig:9 - Part-DB1\templates\mail\pw_reset.html.twig:9 - email.pw_reset.button Pulsa aquí para restablecer la contraseña - - Part-DB1\templates\mail\pw_reset.html.twig:11 - Part-DB1\templates\mail\pw_reset.html.twig:11 - email.pw_reset.fallback Si esto no te funciona, ves a <a href="%url%">%url%</a> e introduce la siguiente información - - Part-DB1\templates\mail\pw_reset.html.twig:16 - Part-DB1\templates\mail\pw_reset.html.twig:16 - email.pw_reset.username Nombre de usuario - - Part-DB1\templates\mail\pw_reset.html.twig:19 - Part-DB1\templates\mail\pw_reset.html.twig:19 - email.pw_reset.token Token - - Part-DB1\templates\mail\pw_reset.html.twig:24 - Part-DB1\templates\mail\pw_reset.html.twig:24 - email.pw_reset.valid_unit %date% El token de reinicio será válido hasta <i>%date%</i>. - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:18 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:78 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - orderdetail.delete Eliminar - - 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 Cantidad mínima de descuento - - 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 Precio - - 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 Por la cantidad - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - pricedetail.create Añadir precio - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - templates\Parts\edit_part_info.html.twig:4 - part.edit.title Editar componente - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - templates\Parts\edit_part_info.html.twig:9 - part.edit.card_title Editar componente - - 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 Común - - 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 Fabricante - - 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 Avanzado @@ -1887,279 +1150,156 @@ Subelementos serán desplazados hacia arriba. - - 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 Stock - - 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 Adjuntos - - 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 Información del pedido - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 - part.edit.tab.specifications Parámetros - - 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 Notas - - 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 Crear nuevo componente - - Part-DB1\templates\Parts\edit\_lots.html.twig:5 - Part-DB1\templates\Parts\edit\_lots.html.twig:5 - part_lot.delete Eliminar - - Part-DB1\templates\Parts\edit\_lots.html.twig:28 - Part-DB1\templates\Parts\edit\_lots.html.twig:28 - part_lot.create Añadir stock - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 - orderdetail.create Añadir distribuidor - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 - pricedetails.edit.delete.confirm ¿Estás seguro de que quieres eliminar este precio? No se puede deshacer. - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:62 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:61 - orderdetails.edit.delete.confirm ¿Estás seguro de que quieres eliminar la información de este distribuidor? ¡No se puede deshacer! - - 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 Información detallada del componente - - 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 - - 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 Notas - - Part-DB1\templates\Parts\info\show_part_info.html.twig:64 - part.info.specifications Parámetros - - 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 Adjuntos - - 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 Información de la compra - - 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 Historial - - 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 Herramientas - - 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 Información adicional - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 - attachment.name Nombre - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 - attachment.attachment_type Tipo de archivo adjunto - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 - attachment.file_name Nombre de archivo - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 - attachment.file_size Tamaño de archivo - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:54 - attachment.preview Vista previa - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:67 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:50 - attachment.download_local Descargar copia en local @@ -2167,8 +1307,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 new @@ -2177,14 +1315,6 @@ Subelementos serán desplazados hacia arriba. - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Unknown Desconocido @@ -2192,10 +1322,6 @@ Subelementos serán desplazados hacia arriba. - 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 @@ -2205,8 +1331,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 new @@ -2215,49 +1339,24 @@ Subelementos serán desplazados hacia arriba. - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - part.isFavorite Favorito - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 - part.minOrderAmount Cantidad mínima de pedido - - 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 Fabricante - - 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 Nombre @@ -2265,8 +1364,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Parts\info\_main_infos.html.twig:27 - Part-DB1\templates\Parts\info\_main_infos.html.twig:27 new @@ -2275,767 +1372,432 @@ Subelementos serán desplazados hacia arriba. - - 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 Descripción - - 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 Categoría - - 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 En stock - - 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 Stock mínimo - - 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 Footprint - - 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 Precio promedio - - Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - part.supplier.name Nombre - - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - part.supplier.partnr Nº de pedido - - Part-DB1\templates\Parts\info\_order_infos.html.twig:28 - Part-DB1\templates\Parts\info\_order_infos.html.twig:28 - part.order.minamount Cantidad mínima - - Part-DB1\templates\Parts\info\_order_infos.html.twig:29 - Part-DB1\templates\Parts\info\_order_infos.html.twig:29 - part.order.price Precio - - Part-DB1\templates\Parts\info\_order_infos.html.twig:31 - Part-DB1\templates\Parts\info\_order_infos.html.twig:31 - part.order.single_price Precio unitario - - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 - Part-DB1\templates\Parts\info\_part_lots.html.twig:6 - part_lots.description Descripción - - Part-DB1\templates\Parts\info\_part_lots.html.twig:8 - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 - part_lots.storage_location Ubicación de almacenamiento - - Part-DB1\templates\Parts\info\_part_lots.html.twig:9 - Part-DB1\templates\Parts\info\_part_lots.html.twig:8 - part_lots.amount Cantidad - - Part-DB1\templates\Parts\info\_part_lots.html.twig:24 - Part-DB1\templates\Parts\info\_part_lots.html.twig:22 - part_lots.location_unknown Ubicación del almacén desconocida - - Part-DB1\templates\Parts\info\_part_lots.html.twig:31 - Part-DB1\templates\Parts\info\_part_lots.html.twig:29 - part_lots.instock_unknown Cantidad desconocida - - Part-DB1\templates\Parts\info\_part_lots.html.twig:40 - Part-DB1\templates\Parts\info\_part_lots.html.twig:38 - part_lots.expiration_date Fecha de vencimiento - - Part-DB1\templates\Parts\info\_part_lots.html.twig:48 - Part-DB1\templates\Parts\info\_part_lots.html.twig:46 - part_lots.is_expired Caducado - - Part-DB1\templates\Parts\info\_part_lots.html.twig:55 - Part-DB1\templates\Parts\info\_part_lots.html.twig:53 - part_lots.need_refill Necesita ser recargado - - Part-DB1\templates\Parts\info\_picture.html.twig:15 - Part-DB1\templates\Parts\info\_picture.html.twig:15 - part.info.prev_picture Imagen previa - - Part-DB1\templates\Parts\info\_picture.html.twig:19 - Part-DB1\templates\Parts\info\_picture.html.twig:19 - part.info.next_picture Siguiente imagen - - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - part.mass.tooltip Peso - - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - part.needs_review.badge Necesita revisión - - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - part.favorite.badge Favorito - - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - part.obsolete.badge No disponible - - Part-DB1\templates\Parts\info\_specifications.html.twig:10 - parameters.extracted_from_description Extraído automáticamente de la descripción - - Part-DB1\templates\Parts\info\_specifications.html.twig:15 - parameters.auto_extracted_from_comment Extraído automáticamente de las notas - - Part-DB1\templates\Parts\info\_tools.html.twig:6 - Part-DB1\templates\Parts\info\_tools.html.twig:4 - templates\Parts\show_part_info.html.twig:125 - part.edit.btn Editar componente - - Part-DB1\templates\Parts\info\_tools.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:14 - templates\Parts\show_part_info.html.twig:135 - part.clone.btn Clonar componente - - Part-DB1\templates\Parts\info\_tools.html.twig:24 - Part-DB1\templates\Parts\lists\_action_bar.html.twig:4 - templates\Parts\show_part_info.html.twig:143 - part.create.btn Crear nuevo componente - - Part-DB1\templates\Parts\info\_tools.html.twig:31 - Part-DB1\templates\Parts\info\_tools.html.twig:29 - part.delete.confirm_title ¿De verdad quieres eliminar este componente? - - Part-DB1\templates\Parts\info\_tools.html.twig:32 - Part-DB1\templates\Parts\info\_tools.html.twig:30 - part.delete.message Este componente y la información asociada (adjuntos, precio, etc.) serán eliminados. ¡Esto no se puede deshacer! - - Part-DB1\templates\Parts\info\_tools.html.twig:39 - Part-DB1\templates\Parts\info\_tools.html.twig:37 - part.delete Eliminar componente - - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - parts_list.all.title Todos los componentes - - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - parts_list.category.title Componentes con categoría - - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - parts_list.footprint.title Componentes con footprint - - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - parts_list.manufacturer.title Componentes con fabricante - - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - parts_list.search.title Buscar componentes - - 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 Componentes con ubicación de almacenaje - - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - parts_list.supplier.title Componentes con proveedor - - Part-DB1\templates\Parts\lists\tags_list.html.twig:4 - Part-DB1\templates\Parts\lists\tags_list.html.twig:4 - parts_list.tags.title Componentes con etiqueta - - Part-DB1\templates\Parts\lists\_info_card.html.twig:22 - Part-DB1\templates\Parts\lists\_info_card.html.twig:17 - entity.info.common.tab General - - Part-DB1\templates\Parts\lists\_info_card.html.twig:26 - Part-DB1\templates\Parts\lists\_info_card.html.twig:20 - entity.info.statistics.tab Estadísticas - - Part-DB1\templates\Parts\lists\_info_card.html.twig:31 - entity.info.attachments.tab Adjuntos - - Part-DB1\templates\Parts\lists\_info_card.html.twig:37 - entity.info.parameters.tab Parámetros - - Part-DB1\templates\Parts\lists\_info_card.html.twig:54 - Part-DB1\templates\Parts\lists\_info_card.html.twig:30 - entity.info.name Nombre - - Part-DB1\templates\Parts\lists\_info_card.html.twig:58 - Part-DB1\templates\Parts\lists\_info_card.html.twig:96 - Part-DB1\templates\Parts\lists\_info_card.html.twig:34 - Part-DB1\templates\Parts\lists\_info_card.html.twig:67 - entity.info.parent Padre - - Part-DB1\templates\Parts\lists\_info_card.html.twig:70 - Part-DB1\templates\Parts\lists\_info_card.html.twig:46 - entity.edit.btn Editar - - Part-DB1\templates\Parts\lists\_info_card.html.twig:92 - Part-DB1\templates\Parts\lists\_info_card.html.twig:63 - entity.info.children_count Número de elementos hijo - - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - tfa.check.title Autenticación en dos pasos requerida - - Part-DB1\templates\security\2fa_base_form.html.twig:39 - Part-DB1\templates\security\2fa_base_form.html.twig:39 - tfa.code.trusted_pc Este es un dispositivo fiable (si esto se habilita, no se realizarán más consultas en dos pasos en este dispositivo) - - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - login.btn Login - - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:42 - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:40 - user.logout Cerrar sesión - - Part-DB1\templates\security\2fa_form.html.twig:6 - Part-DB1\templates\security\2fa_form.html.twig:6 - tfa.check.code.label Código de la app de autenticación - - Part-DB1\templates\security\2fa_form.html.twig:10 - Part-DB1\templates\security\2fa_form.html.twig:10 - tfa.check.code.help Introduce tu código de seis dígitos de tu app de autenticación o de uno de tus códigos backup si el autenticador no está disponible. - - Part-DB1\templates\security\login.html.twig:3 - Part-DB1\templates\security\login.html.twig:3 - templates\security\login.html.twig:3 - login.title Login - - Part-DB1\templates\security\login.html.twig:7 - Part-DB1\templates\security\login.html.twig:7 - templates\security\login.html.twig:7 - login.card_title Login - - Part-DB1\templates\security\login.html.twig:31 - Part-DB1\templates\security\login.html.twig:31 - templates\security\login.html.twig:31 - login.username.label Nombre de usuario - - Part-DB1\templates\security\login.html.twig:34 - Part-DB1\templates\security\login.html.twig:34 - templates\security\login.html.twig:34 - login.username.placeholder Nombre de usuario - - Part-DB1\templates\security\login.html.twig:38 - Part-DB1\templates\security\login.html.twig:38 - templates\security\login.html.twig:38 - login.password.label Contraseña - - Part-DB1\templates\security\login.html.twig:40 - Part-DB1\templates\security\login.html.twig:40 - templates\security\login.html.twig:40 - login.password.placeholder Contraseña - - Part-DB1\templates\security\login.html.twig:50 - Part-DB1\templates\security\login.html.twig:50 - templates\security\login.html.twig:50 - login.rememberme Recuérdame (no aconsejado en dispositivos compartidos) - - Part-DB1\templates\security\login.html.twig:64 - Part-DB1\templates\security\login.html.twig:64 - pw_reset.password_forget ¿Has olvidado el nombre de usuario/contraseña? - - 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 Establecer nueva contraseña - - 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 Solicitar nueva contraseña - - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - tfa_u2f.http_warning Estás accediendo a esta página usando el método inseguro HTTP, por lo que seguramente U2F no funcione correctamente (mensaje de error Bad Request). Pídele a un administrador que establezca el método seguro HTTPS si quieres utilizar claves de seguridad. - - Part-DB1\templates\security\U2F\u2f_login.html.twig:10 - Part-DB1\templates\security\U2F\u2f_register.html.twig:22 - 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 ¡Por favor, introduce tu clave de seguridad y pulsa el botón! - - 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 Añadir clave de seguridad - - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - tfa_u2f.explanation Con la ayuda de una clave de seguridad U2F/FIDO compatible (e.g. YubiKey o NitroKey), se puede obtener una autentiación en dos pasos segura y fácil de usar. Las claves de seguridad pueden ser registradas aquí, y si se requiere una verificación en dos pasos, solo necesitarás insertar la clave vía USB o introducirla en el dispositivo mediante NFC. - - 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 Para garantizar el acceso incluso si has perdido la clave, ¡se recomienda registrar una segunda clave como copia de seguridad y guardarla en un lugar seguro! - - 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 Añadir clave de seguridad - - 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 Volver a ajustes @@ -3043,10 +1805,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 new @@ -3056,8 +1814,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Statistics\statistics.html.twig:14 - Part-DB1\templates\Statistics\statistics.html.twig:14 new @@ -3067,8 +1823,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Statistics\statistics.html.twig:19 - Part-DB1\templates\Statistics\statistics.html.twig:19 new @@ -3078,8 +1832,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Statistics\statistics.html.twig:24 - Part-DB1\templates\Statistics\statistics.html.twig:24 new @@ -3089,12 +1841,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 new @@ -3104,12 +1850,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 new @@ -3119,8 +1859,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Statistics\statistics.html.twig:40 - Part-DB1\templates\Statistics\statistics.html.twig:40 new @@ -3130,8 +1868,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Statistics\statistics.html.twig:44 - Part-DB1\templates\Statistics\statistics.html.twig:44 new @@ -3141,8 +1877,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Statistics\statistics.html.twig:48 - Part-DB1\templates\Statistics\statistics.html.twig:48 new @@ -3152,8 +1886,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Statistics\statistics.html.twig:65 - Part-DB1\templates\Statistics\statistics.html.twig:65 new @@ -3163,8 +1895,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Statistics\statistics.html.twig:69 - Part-DB1\templates\Statistics\statistics.html.twig:69 new @@ -3174,8 +1904,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Statistics\statistics.html.twig:73 - Part-DB1\templates\Statistics\statistics.html.twig:73 new @@ -3185,8 +1913,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Statistics\statistics.html.twig:77 - Part-DB1\templates\Statistics\statistics.html.twig:77 new @@ -3196,8 +1922,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Statistics\statistics.html.twig:81 - Part-DB1\templates\Statistics\statistics.html.twig:81 new @@ -3207,8 +1931,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Statistics\statistics.html.twig:85 - Part-DB1\templates\Statistics\statistics.html.twig:85 new @@ -3218,8 +1940,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Statistics\statistics.html.twig:89 - Part-DB1\templates\Statistics\statistics.html.twig:89 new @@ -3229,8 +1949,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Statistics\statistics.html.twig:93 - Part-DB1\templates\Statistics\statistics.html.twig:93 new @@ -3240,8 +1958,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Statistics\statistics.html.twig:110 - Part-DB1\templates\Statistics\statistics.html.twig:110 new @@ -3251,8 +1967,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Statistics\statistics.html.twig:114 - Part-DB1\templates\Statistics\statistics.html.twig:114 new @@ -3262,8 +1976,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Statistics\statistics.html.twig:118 - Part-DB1\templates\Statistics\statistics.html.twig:118 new @@ -3273,8 +1985,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Statistics\statistics.html.twig:122 - Part-DB1\templates\Statistics\statistics.html.twig:122 new @@ -3284,8 +1994,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Statistics\statistics.html.twig:126 - Part-DB1\templates\Statistics\statistics.html.twig:126 new @@ -3294,302 +2002,156 @@ Subelementos serán desplazados hacia arriba. - - 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 Códigos backup - - Part-DB1\templates\Users\backup_codes.html.twig:12 - Part-DB1\templates\Users\backup_codes.html.twig:12 - tfa_backup.codes.explanation ¡Imprime estos códigos y guárdalos en un lugar seguro! - - Part-DB1\templates\Users\backup_codes.html.twig:13 - Part-DB1\templates\Users\backup_codes.html.twig:13 - tfa_backup.codes.help Si ya no tienes acceso a tu dispositivo con la app de autenticación (has perdido el teléfono, pérdida de datos, etc.) puedes usar uno de estos códigos para acceder a tu cuenta y configurar una nueva app de autenticación. Cada uno de estos códigos puede usarse una única vez. Se recomienda eliminar dichos códigos. Cualquiera con acceso a estos códigos podría acceder a tu cuenta, así que guárdalos en un lugar seguro. - - Part-DB1\templates\Users\backup_codes.html.twig:16 - Part-DB1\templates\Users\backup_codes.html.twig:16 - tfa_backup.username Nombre de usuario - - Part-DB1\templates\Users\backup_codes.html.twig:29 - Part-DB1\templates\Users\backup_codes.html.twig:29 - tfa_backup.codes.page_generated_on Página generada el %date% - - Part-DB1\templates\Users\backup_codes.html.twig:32 - Part-DB1\templates\Users\backup_codes.html.twig:32 - tfa_backup.codes.print Imprimir - - Part-DB1\templates\Users\backup_codes.html.twig:35 - Part-DB1\templates\Users\backup_codes.html.twig:35 - tfa_backup.codes.copy_clipboard Copiar al portapapeles - - 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 Información del usuario - - 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 Nombre - - 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 Apellido - - 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 Email - - 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 Departamento - - 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 Nombre de usuario - - 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 Grupo: - - Part-DB1\templates\Users\user_info.html.twig:67 - Part-DB1\templates\Users\user_info.html.twig:67 - user.permissions Permisos - - 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 Configuración del usuario - - 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 Información personal - - 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 Configuración - - 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 Restablecer contraseña - - Part-DB1\templates\Users\_2fa_settings.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:6 - user.settings.2fa_settings Autenticación en dos pasos - - Part-DB1\templates\Users\_2fa_settings.html.twig:13 - Part-DB1\templates\Users\_2fa_settings.html.twig:13 - tfa.settings.google.tab App de autenticación - - Part-DB1\templates\Users\_2fa_settings.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:17 - tfa.settings.bakup.tab Códigos backup - - Part-DB1\templates\Users\_2fa_settings.html.twig:21 - Part-DB1\templates\Users\_2fa_settings.html.twig:21 - tfa.settings.u2f.tab Claves de seguridad (U2F) - - Part-DB1\templates\Users\_2fa_settings.html.twig:25 - Part-DB1\templates\Users\_2fa_settings.html.twig:25 - tfa.settings.trustedDevices.tab Dispositivos confiables - - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - tfa_google.disable.confirm_title ¿Estás seguro de que quieres deshabilitar la app de autenticación? - - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - tfa_google.disable.confirm_message Si deshabilitas la app de autenticación, todos tus códigos backup serán eliminados, por lo que necesitarás reimprimirlos todos.<br> @@ -3597,588 +2159,324 @@ Subelementos serán desplazados hacia arriba. - - Part-DB1\templates\Users\_2fa_settings.html.twig:39 - Part-DB1\templates\Users\_2fa_settings.html.twig:39 - tfa_google.disabled_message ¡App de autenticación desactivada! - - Part-DB1\templates\Users\_2fa_settings.html.twig:48 - Part-DB1\templates\Users\_2fa_settings.html.twig:48 - tfa_google.step.download Descarga una app de autenticación (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>) - - Part-DB1\templates\Users\_2fa_settings.html.twig:49 - Part-DB1\templates\Users\_2fa_settings.html.twig:49 - tfa_google.step.scan Escanea el código QR adjunto con la app o introduce los datos manualmente - - Part-DB1\templates\Users\_2fa_settings.html.twig:50 - Part-DB1\templates\Users\_2fa_settings.html.twig:50 - tfa_google.step.input_code Introduce el código generado en el campo de abajo y confirma - - Part-DB1\templates\Users\_2fa_settings.html.twig:51 - Part-DB1\templates\Users\_2fa_settings.html.twig:51 - tfa_google.step.download_backup Imprime tus códigos backup y guárdalos en un lugar seguro - - Part-DB1\templates\Users\_2fa_settings.html.twig:58 - Part-DB1\templates\Users\_2fa_settings.html.twig:58 - tfa_google.manual_setup Configuración manual - - Part-DB1\templates\Users\_2fa_settings.html.twig:62 - Part-DB1\templates\Users\_2fa_settings.html.twig:62 - tfa_google.manual_setup.type Tipo - - Part-DB1\templates\Users\_2fa_settings.html.twig:63 - Part-DB1\templates\Users\_2fa_settings.html.twig:63 - tfa_google.manual_setup.username Nombre de usuario - - Part-DB1\templates\Users\_2fa_settings.html.twig:64 - Part-DB1\templates\Users\_2fa_settings.html.twig:64 - tfa_google.manual_setup.secret Secreto - - Part-DB1\templates\Users\_2fa_settings.html.twig:65 - Part-DB1\templates\Users\_2fa_settings.html.twig:65 - tfa_google.manual_setup.digit_count Número de caracteres - - Part-DB1\templates\Users\_2fa_settings.html.twig:74 - Part-DB1\templates\Users\_2fa_settings.html.twig:74 - tfa_google.enabled_message App de autenticación activada - - Part-DB1\templates\Users\_2fa_settings.html.twig:83 - Part-DB1\templates\Users\_2fa_settings.html.twig:83 - tfa_backup.disabled Códigos backup desactivados. Configura la app de autenticación para activar los códigos backup de nuevo. - - 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 Puedes usar estos códigos backup para acceder a tu cuenta incluso si pierdes el dispositivo con la app de autenticación. Imprime los códigos y guárdalos en un lugar seguro. - - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - tfa_backup.reset_codes.confirm_title ¿Quieres restablecer los códigos? - - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - tfa_backup.reset_codes.confirm_message Esto eliminará los códigos previos y generará un nuevo conjunto de códigos. Esto no se puede deshacer. ¡Recuerda imprimir los nuevos códigos y guárdalos en un lugar seguro! - - Part-DB1\templates\Users\_2fa_settings.html.twig:91 - Part-DB1\templates\Users\_2fa_settings.html.twig:91 - tfa_backup.enabled Códigos backup activados - - Part-DB1\templates\Users\_2fa_settings.html.twig:99 - Part-DB1\templates\Users\_2fa_settings.html.twig:99 - tfa_backup.show_codes Mostrar códigos backup - - Part-DB1\templates\Users\_2fa_settings.html.twig:114 - Part-DB1\templates\Users\_2fa_settings.html.twig:114 - tfa_u2f.table_caption Claves de seguridad registradas - - Part-DB1\templates\Users\_2fa_settings.html.twig:115 - Part-DB1\templates\Users\_2fa_settings.html.twig:115 - tfa_u2f.delete_u2f.confirm_title ¿Quieres eliminar esta clave de seguridad? - - Part-DB1\templates\Users\_2fa_settings.html.twig:116 - Part-DB1\templates\Users\_2fa_settings.html.twig:116 - tfa_u2f.delete_u2f.confirm_message Si eliminas esta clave, ya no podrás iniciar sesión con esta clave. Si no quedan claves de seguridad, la autenticación en dos pasos se desactivará. - - Part-DB1\templates\Users\_2fa_settings.html.twig:123 - Part-DB1\templates\Users\_2fa_settings.html.twig:123 - tfa_u2f.keys.name Nombre de la clave - - Part-DB1\templates\Users\_2fa_settings.html.twig:124 - Part-DB1\templates\Users\_2fa_settings.html.twig:124 - tfa_u2f.keys.added_date Fecha de registro - - Part-DB1\templates\Users\_2fa_settings.html.twig:134 - Part-DB1\templates\Users\_2fa_settings.html.twig:134 - tfa_u2f.key_delete Eliminar clave - - Part-DB1\templates\Users\_2fa_settings.html.twig:141 - Part-DB1\templates\Users\_2fa_settings.html.twig:141 - tfa_u2f.no_keys_registered No hay claves registradas. - - Part-DB1\templates\Users\_2fa_settings.html.twig:144 - Part-DB1\templates\Users\_2fa_settings.html.twig:144 - tfa_u2f.add_new_key Registrar una nueva clave de seguridad - - Part-DB1\templates\Users\_2fa_settings.html.twig:148 - Part-DB1\templates\Users\_2fa_settings.html.twig:148 - tfa_trustedDevices.explanation Cuando compruebes el segundo factor, el dispositivo actual será marcado como fiable, por lo que no se necesitará comprobarlo más en el mismo dispositivo. - - Part-DB1\templates\Users\_2fa_settings.html.twig:149 - Part-DB1\templates\Users\_2fa_settings.html.twig:149 - tfa_trustedDevices.invalidate.confirm_title ¿Quieres eliminar todos los dispositivos fiables? - - Part-DB1\templates\Users\_2fa_settings.html.twig:150 - Part-DB1\templates\Users\_2fa_settings.html.twig:150 - tfa_trustedDevices.invalidate.confirm_message Tendrás que realizar de nuevo la autenticación en dos pasos en todos los dispositivos. Asegúrate de que tienes el dispositivo autenticador a mano. - - Part-DB1\templates\Users\_2fa_settings.html.twig:154 - Part-DB1\templates\Users\_2fa_settings.html.twig:154 - tfa_trustedDevices.invalidate.btn Restablecer los dispositivos fiables - - Part-DB1\templates\_navbar.html.twig:4 - Part-DB1\templates\_navbar.html.twig:4 - templates\base.html.twig:29 - sidebar.toggle Activar/desactivar la barra lateral - - Part-DB1\templates\_navbar.html.twig:22 - navbar.scanner.link Escáner - - Part-DB1\templates\_navbar.html.twig:38 - Part-DB1\templates\_navbar.html.twig:36 - templates\base.html.twig:97 - user.loggedin.label Se ha iniciado sesión como - - Part-DB1\templates\_navbar.html.twig:44 - Part-DB1\templates\_navbar.html.twig:42 - templates\base.html.twig:103 - user.login Iniciar sesión - - Part-DB1\templates\_navbar.html.twig:50 - Part-DB1\templates\_navbar.html.twig:48 - ui.toggle_darkmode Modo oscuro - - Part-DB1\templates\_navbar.html.twig:54 - Part-DB1\src\Form\UserSettingsType.php:97 - Part-DB1\templates\_navbar.html.twig:52 - Part-DB1\src\Form\UserSettingsType.php:97 - templates\base.html.twig:106 - src\Form\UserSettingsType.php:44 - user.language_select Cambiar idioma - - Part-DB1\templates\_navbar_search.html.twig:4 - Part-DB1\templates\_navbar_search.html.twig:4 - templates\base.html.twig:49 - search.options.label Opciones de búsqueda - - Part-DB1\templates\_navbar_search.html.twig:23 - tags.label Etiquetas - - Part-DB1\templates\_navbar_search.html.twig:27 - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - templates\base.html.twig:60 - templates\Parts\show_part_info.html.twig:36 - src\Form\PartType.php:77 - storelocation.label Ubicación de almacenaje - - Part-DB1\templates\_navbar_search.html.twig:36 - Part-DB1\templates\_navbar_search.html.twig:31 - templates\base.html.twig:65 - ordernumber.label.short Código del proveedor - - Part-DB1\templates\_navbar_search.html.twig:40 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - Part-DB1\templates\_navbar_search.html.twig:35 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - templates\base.html.twig:67 - supplier.label Proveedor - - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_navbar_search.html.twig:56 - templates\base.html.twig:77 - search.regexmatching Reg.Ex. Matching - - Part-DB1\templates\_sidebar.html.twig:37 - Part-DB1\templates\_sidebar.html.twig:12 - Part-DB1\templates\_sidebar.html.twig:37 - Part-DB1\templates\_sidebar.html.twig:12 - templates\base.html.twig:175 - templates\base.html.twig:189 - templates\base.html.twig:202 - templates\base.html.twig:230 - project.labelp Proyectos - - Part-DB1\templates\_sidebar.html.twig:2 - Part-DB1\templates\_sidebar.html.twig:2 - templates\base.html.twig:165 - templates\base.html.twig:192 - templates\base.html.twig:220 - actions Acciones - - Part-DB1\templates\_sidebar.html.twig:6 - Part-DB1\templates\_sidebar.html.twig:6 - templates\base.html.twig:169 - templates\base.html.twig:196 - templates\base.html.twig:224 - datasource Fuente de datos - - Part-DB1\templates\_sidebar.html.twig:10 - Part-DB1\templates\_sidebar.html.twig:10 - templates\base.html.twig:173 - templates\base.html.twig:200 - templates\base.html.twig:228 - manufacturer.labelp Fabricantes - - Part-DB1\templates\_sidebar.html.twig:11 - Part-DB1\templates\_sidebar.html.twig:11 - templates\base.html.twig:174 - templates\base.html.twig:201 - templates\base.html.twig:229 - supplier.labelp Proveedores - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:213 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:293 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:293 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:181 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:243 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:268 - attachment.download_failed Descarga fallida de adjuntos externos - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:222 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:190 - entity.edit_flash Cambios guardados con éxito. - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:231 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:196 - entity.edit_flash.invalid Los cambios no han podido guardarse. ¡Por favor, comprueba la información! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:302 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:252 - entity.created_flash Elemento creado - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:308 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:258 - entity.created_flash.invalid No se ha podido crear el elemento. ¡Por favor, comprueba los datos! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:399 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:352 - src\Controller\BaseAdminController.php:154 - attachment_type.deleted ¡Elemento eliminado! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:401 - Part-DB1\src\Controller\UserController.php:109 - Part-DB1\src\Controller\UserSettingsController.php:159 - Part-DB1\src\Controller\UserSettingsController.php:193 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:354 - Part-DB1\src\Controller\UserController.php:101 - Part-DB1\src\Controller\UserSettingsController.php:150 - Part-DB1\src\Controller\UserSettingsController.php:182 - csfr_invalid Token CSFR no válido. Por favor, refresca esta página o contacta con un administrador si este mensaje no desaparece. - - Part-DB1\src\Controller\LabelController.php:125 - label_generator.no_entities_found No se encontraron entidades que coincidan. @@ -4186,8 +2484,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\src\Controller\LogController.php:149 - Part-DB1\src\Controller\LogController.php:154 new @@ -4197,8 +2493,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\src\Controller\LogController.php:156 - Part-DB1\src\Controller\LogController.php:160 new @@ -4208,8 +2502,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\src\Controller\LogController.php:176 - Part-DB1\src\Controller\LogController.php:180 new @@ -4219,8 +2511,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\src\Controller\LogController.php:178 - Part-DB1\src\Controller\LogController.php:182 new @@ -4230,8 +2520,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\src\Controller\LogController.php:185 - Part-DB1\src\Controller\LogController.php:189 new @@ -4241,8 +2529,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\src\Controller\LogController.php:187 - Part-DB1\src\Controller\LogController.php:191 new @@ -4252,8 +2538,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\src\Controller\LogController.php:194 - Part-DB1\src\Controller\LogController.php:198 new @@ -4263,8 +2547,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\src\Controller\LogController.php:196 - Part-DB1\src\Controller\LogController.php:200 new @@ -4274,8 +2556,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\src\Controller\LogController.php:199 - Part-DB1\src\Controller\LogController.php:203 new @@ -4284,306 +2564,168 @@ Subelementos serán desplazados hacia arriba. - - Part-DB1\src\Controller\PartController.php:182 - Part-DB1\src\Controller\PartController.php:182 - src\Controller\PartController.php:80 - part.edited_flash ¡Los cambios han sido guardados! - - Part-DB1\src\Controller\PartController.php:216 - Part-DB1\src\Controller\PartController.php:219 - part.deleted Componente eliminado con éxito. - - Part-DB1\src\Controller\PartController.php:302 - Part-DB1\src\Controller\PartController.php:277 - Part-DB1\src\Controller\PartController.php:317 - src\Controller\PartController.php:113 - src\Controller\PartController.php:142 - part.created_flash ¡Componente creado! - - Part-DB1\src\Controller\PartController.php:308 - Part-DB1\src\Controller\PartController.php:283 - part.created_flash.invalid Error durante la creación: ¡Por favor, comprueba los datos! - - Part-DB1\src\Controller\ScanController.php:68 - Part-DB1\src\Controller\ScanController.php:90 - scan.qr_not_found No se ha encontrado elemento con ese código de barras. - - Part-DB1\src\Controller\ScanController.php:71 - scan.format_unknown ¡Formato desconocido! - - Part-DB1\src\Controller\ScanController.php:86 - scan.qr_success ¡Elemento encontrado! - - Part-DB1\src\Controller\SecurityController.php:114 - Part-DB1\src\Controller\SecurityController.php:109 - pw_reset.user_or_email Nombre de usuario / Email - - Part-DB1\src\Controller\SecurityController.php:131 - Part-DB1\src\Controller\SecurityController.php:126 - pw_reset.request.success ¡La solicitud de reinicio fue exitosa! Por favor, comprueba tus emails para más instrucciones. - - Part-DB1\src\Controller\SecurityController.php:162 - Part-DB1\src\Controller\SecurityController.php:160 - pw_reset.username Nombre de usuario - - 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 ¡Nombre de usuario o token no válidos! Por favor, comprueba los datos. - - Part-DB1\src\Controller\SecurityController.php:196 - Part-DB1\src\Controller\SecurityController.php:194 - pw_reset.new_pw.success La contraseña ha sido restablecida con éxito. Puedes ahora iniciar sesión con tu nueva contraseña. - - Part-DB1\src\Controller\UserController.php:107 - Part-DB1\src\Controller\UserController.php:99 - user.edit.reset_success Todos los métodos de autenticación en dos pasos han sido desactivados. - - Part-DB1\src\Controller\UserSettingsController.php:101 - Part-DB1\src\Controller\UserSettingsController.php:92 - tfa_backup.no_codes_enabled ¡No hay ningún código backup activado! - - Part-DB1\src\Controller\UserSettingsController.php:138 - Part-DB1\src\Controller\UserSettingsController.php:132 - tfa_u2f.u2f_delete.not_existing No existe ninguna clave de seguridad con este ID. - - Part-DB1\src\Controller\UserSettingsController.php:145 - Part-DB1\src\Controller\UserSettingsController.php:139 - tfa_u2f.u2f_delete.access_denied ¡No puedes eliminar las claves de seguridad de otros usuarios! - - Part-DB1\src\Controller\UserSettingsController.php:153 - Part-DB1\src\Controller\UserSettingsController.php:147 - tfa.u2f.u2f_delete.success La clave de seguridad ha sido eliminada con éxito. - - Part-DB1\src\Controller\UserSettingsController.php:188 - Part-DB1\src\Controller\UserSettingsController.php:180 - tfa_trustedDevice.invalidate.success Los dispositivos fiables han sido restablecidos con éxito. - - Part-DB1\src\Controller\UserSettingsController.php:235 - Part-DB1\src\Controller\UserSettingsController.php:226 - src\Controller\UserController.php:98 - user.settings.saved_flash ¡Configuración guardada! - - Part-DB1\src\Controller\UserSettingsController.php:297 - Part-DB1\src\Controller\UserSettingsController.php:288 - src\Controller\UserController.php:130 - user.settings.pw_changed_flash ¡Contraseña cambiada! - - Part-DB1\src\Controller\UserSettingsController.php:317 - Part-DB1\src\Controller\UserSettingsController.php:306 - user.settings.2fa.google.activated La app de autenticación ha sido activada con éxito. - - Part-DB1\src\Controller\UserSettingsController.php:328 - Part-DB1\src\Controller\UserSettingsController.php:315 - user.settings.2fa.google.disabled La app de autenticación ha sido desactivada con éxito. - - Part-DB1\src\Controller\UserSettingsController.php:346 - Part-DB1\src\Controller\UserSettingsController.php:332 - user.settings.2fa.backup_codes.regenerated Se han generado nuevos códigos backup con éxito. - - Part-DB1\src\DataTables\AttachmentDataTable.php:153 - Part-DB1\src\DataTables\AttachmentDataTable.php:153 - attachment.table.filesize Tamaño del archivo - - 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 Verdadero - - 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 Falso - - Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:128 - Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:119 - log.target_deleted Eliminado @@ -4591,8 +2733,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\src\DataTables\Column\RevertLogColumn.php:57 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:60 new @@ -4602,8 +2742,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\src\DataTables\Column\RevertLogColumn.php:63 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:66 new @@ -4613,8 +2751,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\src\DataTables\Column\RevertLogColumn.php:83 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:86 new @@ -4623,70 +2759,42 @@ Subelementos serán desplazados hacia arriba. - - 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 Fecha - - Part-DB1\src\DataTables\LogDataTable.php:183 - Part-DB1\src\DataTables\LogDataTable.php:171 - log.type Evento - - Part-DB1\src\DataTables\LogDataTable.php:191 - Part-DB1\src\DataTables\LogDataTable.php:179 - log.level Nivel - - Part-DB1\src\DataTables\LogDataTable.php:200 - Part-DB1\src\DataTables\LogDataTable.php:188 - log.user Usuario - - Part-DB1\src\DataTables\LogDataTable.php:213 - Part-DB1\src\DataTables\LogDataTable.php:201 - log.target_type Tipo de objetivo - - Part-DB1\src\DataTables\LogDataTable.php:226 - Part-DB1\src\DataTables\LogDataTable.php:214 - log.target Objetivo @@ -4694,8 +2802,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\src\DataTables\LogDataTable.php:231 - Part-DB1\src\DataTables\LogDataTable.php:218 new @@ -4704,100 +2810,60 @@ Subelementos serán desplazados hacia arriba. - - Part-DB1\src\DataTables\PartsDataTable.php:168 - Part-DB1\src\DataTables\PartsDataTable.php:116 - part.table.name Nombre - - 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 Descripción - - Part-DB1\src\DataTables\PartsDataTable.php:185 - Part-DB1\src\DataTables\PartsDataTable.php:133 - part.table.category Categoría - - Part-DB1\src\DataTables\PartsDataTable.php:190 - Part-DB1\src\DataTables\PartsDataTable.php:138 - part.table.footprint Footprint - - Part-DB1\src\DataTables\PartsDataTable.php:194 - Part-DB1\src\DataTables\PartsDataTable.php:142 - part.table.manufacturer Fabricante - - Part-DB1\src\DataTables\PartsDataTable.php:197 - Part-DB1\src\DataTables\PartsDataTable.php:145 - part.table.storeLocations Ubicación de almacenaje - - Part-DB1\src\DataTables\PartsDataTable.php:216 - Part-DB1\src\DataTables\PartsDataTable.php:164 - part.table.amount Cantidad - - Part-DB1\src\DataTables\PartsDataTable.php:224 - Part-DB1\src\DataTables\PartsDataTable.php:172 - part.table.minamount Cantidad mínima - - Part-DB1\src\DataTables\PartsDataTable.php:232 - Part-DB1\src\DataTables\PartsDataTable.php:180 - part.table.partUnit Unidad de Medida @@ -4810,864 +2876,522 @@ Subelementos serán desplazados hacia arriba. - - Part-DB1\src\DataTables\PartsDataTable.php:236 - Part-DB1\src\DataTables\PartsDataTable.php:184 - part.table.addedDate Creado en - - Part-DB1\src\DataTables\PartsDataTable.php:240 - Part-DB1\src\DataTables\PartsDataTable.php:188 - part.table.lastModified Última edición - - Part-DB1\src\DataTables\PartsDataTable.php:244 - Part-DB1\src\DataTables\PartsDataTable.php:192 - part.table.needsReview Necesita revisión - - Part-DB1\src\DataTables\PartsDataTable.php:251 - Part-DB1\src\DataTables\PartsDataTable.php:199 - part.table.favorite Favorito - - Part-DB1\src\DataTables\PartsDataTable.php:258 - Part-DB1\src\DataTables\PartsDataTable.php:206 - part.table.manufacturingStatus Estado - - 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 Desconocido - - 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 Anunciado - - 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 Activo - - 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 No recomendado para nuevos diseños - - 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 Final de vida - - 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 Descontinuado - - 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 Peso - - Part-DB1\src\DataTables\PartsDataTable.php:279 - Part-DB1\src\DataTables\PartsDataTable.php:227 - part.table.tags Etiquetas - - Part-DB1\src\DataTables\PartsDataTable.php:283 - Part-DB1\src\DataTables\PartsDataTable.php:231 - part.table.attachments Adjuntos - - Part-DB1\src\EventSubscriber\UserSystem\LoginSuccessSubscriber.php:82 - Part-DB1\src\EventSubscriber\LoginSuccessListener.php:82 - flash.login_successful Se ha iniciado sesión correctamente - - 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 Cuando esta opción se active, el proceso de importación será abortado si se selecciona información no válida. Si no se ha seleccionado, la información incorrecta se ignorará y el importador intentará importar el resto de elementos. - - Part-DB1\src\Form\AdminPages\ImportType.php:86 - Part-DB1\src\Form\AdminPages\ImportType.php:86 - src\Form\ImportType.php:70 - import.csv_separator Separador CSV - - Part-DB1\src\Form\AdminPages\ImportType.php:93 - Part-DB1\src\Form\AdminPages\ImportType.php:93 - src\Form\ImportType.php:72 - parent.label Elemento padre - - Part-DB1\src\Form\AdminPages\ImportType.php:101 - Part-DB1\src\Form\AdminPages\ImportType.php:101 - src\Form\ImportType.php:75 - import.file Archivo - - Part-DB1\src\Form\AdminPages\ImportType.php:111 - Part-DB1\src\Form\AdminPages\ImportType.php:111 - src\Form\ImportType.php:78 - import.preserve_children Preservar elementos hijos al importar - - 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 Anular en caso de datos inválidos - - Part-DB1\src\Form\AdminPages\ImportType.php:132 - Part-DB1\src\Form\AdminPages\ImportType.php:132 - src\Form\ImportType.php:85 - import.btn Importar - - Part-DB1\src\Form\AttachmentFormType.php:113 - Part-DB1\src\Form\AttachmentFormType.php:109 - attachment.edit.secure_file.help Un adjunto marcado como privado solo puede ser accedido por usuarios autenticados que tengan el permiso necesario. Si esta opción es activada, ninguna miniatura será generada y el acceso al archivo será más lento. - - Part-DB1\src\Form\AttachmentFormType.php:127 - Part-DB1\src\Form\AttachmentFormType.php:123 - attachment.edit.url.help Puedes especificar una URL a un archivo externo aquí, o introducir una palabra clave para buscar recursos incorporados (p.ej. footprints) - - Part-DB1\src\Form\AttachmentFormType.php:82 - Part-DB1\src\Form\AttachmentFormType.php:79 - attachment.edit.name Nombre - - Part-DB1\src\Form\AttachmentFormType.php:85 - Part-DB1\src\Form\AttachmentFormType.php:82 - attachment.edit.attachment_type Tipo de adjunto - - Part-DB1\src\Form\AttachmentFormType.php:94 - Part-DB1\src\Form\AttachmentFormType.php:91 - attachment.edit.show_in_table Mostrar en la tabla - - Part-DB1\src\Form\AttachmentFormType.php:105 - Part-DB1\src\Form\AttachmentFormType.php:102 - attachment.edit.secure_file Adjunto privado - - 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 Descargar archivo externo - - Part-DB1\src\Form\AttachmentFormType.php:146 - Part-DB1\src\Form\AttachmentFormType.php:142 - attachment.edit.file Subir archivo - - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:86 - part.label Componente - - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:87 - part_lot.label Lote del componente - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.none Ninguno - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.qr Código QR (recomendado) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code128 Código 128 (recomendado) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code39 Código 39 (recomendado) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code93 Código 93 - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.datamatrix Datamatrix - - Part-DB1\src\Form\LabelOptionsType.php:122 - label_options.lines_mode.html Marcador de posición - - 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 Si aquí seleccionas Twig, el campo de contenido se interpreta como una plantilla Twig. Visita <a href="https://twig.symfony.com/doc/3.x/templates.html">Twig documentation</a> y <a href="https://docs.part-db.de/usage/labels.html#twig-mode">Wiki</a> para más información. - - Part-DB1\src\Form\LabelOptionsType.php:47 - label_options.page_size.label Tamaño de etiqueta - - Part-DB1\src\Form\LabelOptionsType.php:66 - label_options.supported_elements.label Tipo de objetivo - - Part-DB1\src\Form\LabelOptionsType.php:75 - label_options.barcode_type.label Código de barras - - Part-DB1\src\Form\LabelOptionsType.php:102 - label_profile.lines.label Contenido - - Part-DB1\src\Form\LabelOptionsType.php:111 - label_options.additional_css.label Estilos adicionales (CSS) - - Part-DB1\src\Form\LabelOptionsType.php:120 - label_options.lines_mode.label Modo parser - - Part-DB1\src\Form\LabelOptionsType.php:51 - label_options.width.placeholder Anchura - - Part-DB1\src\Form\LabelOptionsType.php:60 - label_options.height.placeholder Altura - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:49 - label_generator.target_id.range_hint Puedes especificar múltiples ID (ej. 1, 2, 3) y/o un intervalo (1-3) aquí para generar etiquetas para múltiples elementos a la vez. - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:46 - label_generator.target_id.label ID del objetivo - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:59 - label_generator.update Actualizar - - Part-DB1\src\Form\LabelSystem\ScanDialogType.php:36 - scan_dialog.input Input - - Part-DB1\src\Form\LabelSystem\ScanDialogType.php:44 - scan_dialog.submit Subir - - Part-DB1\src\Form\ParameterType.php:41 - parameters.name.placeholder p.ej. DC Current Gain - - Part-DB1\src\Form\ParameterType.php:50 - parameters.symbol.placeholder p.ej. h_{FE} - - Part-DB1\src\Form\ParameterType.php:60 - parameters.text.placeholder p.ej. Test conditions - - Part-DB1\src\Form\ParameterType.php:71 - parameters.max.placeholder p.ej. 350 - - Part-DB1\src\Form\ParameterType.php:82 - parameters.min.placeholder p.ej. 100 - - Part-DB1\src\Form\ParameterType.php:93 - parameters.typical.placeholder p.ej. 200 - - Part-DB1\src\Form\ParameterType.php:103 - parameters.unit.placeholder p.ej. V - - Part-DB1\src\Form\ParameterType.php:114 - parameter.group.placeholder p.ej. Especificaciones técnicas - - Part-DB1\src\Form\Part\OrderdetailType.php:72 - Part-DB1\src\Form\Part\OrderdetailType.php:75 - orderdetails.edit.supplierpartnr Número de componente de proveedor - - Part-DB1\src\Form\Part\OrderdetailType.php:81 - Part-DB1\src\Form\Part\OrderdetailType.php:84 - orderdetails.edit.supplier Proveedor - - Part-DB1\src\Form\Part\OrderdetailType.php:87 - Part-DB1\src\Form\Part\OrderdetailType.php:90 - orderdetails.edit.url Enlace a la oferta - - Part-DB1\src\Form\Part\OrderdetailType.php:93 - Part-DB1\src\Form\Part\OrderdetailType.php:96 - orderdetails.edit.obsolete Ya no disponible - - Part-DB1\src\Form\Part\OrderdetailType.php:75 - Part-DB1\src\Form\Part\OrderdetailType.php:78 - orderdetails.edit.supplierpartnr.placeholder p.ej. BC 547C - - Part-DB1\src\Form\Part\PartBaseType.php:101 - Part-DB1\src\Form\Part\PartBaseType.php:99 - part.edit.name Nombre - - Part-DB1\src\Form\Part\PartBaseType.php:109 - Part-DB1\src\Form\Part\PartBaseType.php:107 - part.edit.description Descripción - - Part-DB1\src\Form\Part\PartBaseType.php:120 - Part-DB1\src\Form\Part\PartBaseType.php:118 - part.edit.mininstock Stock mínimo - - Part-DB1\src\Form\Part\PartBaseType.php:129 - Part-DB1\src\Form\Part\PartBaseType.php:127 - part.edit.category Categoría - - Part-DB1\src\Form\Part\PartBaseType.php:135 - Part-DB1\src\Form\Part\PartBaseType.php:133 - part.edit.footprint Footprint - - Part-DB1\src\Form\Part\PartBaseType.php:142 - Part-DB1\src\Form\Part\PartBaseType.php:140 - part.edit.tags Etiquetas - - Part-DB1\src\Form\Part\PartBaseType.php:154 - Part-DB1\src\Form\Part\PartBaseType.php:152 - part.edit.manufacturer.label Fabricante - - Part-DB1\src\Form\Part\PartBaseType.php:161 - Part-DB1\src\Form\Part\PartBaseType.php:159 - part.edit.manufacturer_url.label Link a la página del producto - - Part-DB1\src\Form\Part\PartBaseType.php:167 - Part-DB1\src\Form\Part\PartBaseType.php:165 - part.edit.mpn Número del fabricante del componente - - Part-DB1\src\Form\Part\PartBaseType.php:173 - Part-DB1\src\Form\Part\PartBaseType.php:171 - part.edit.manufacturing_status Estado de fabricación - - Part-DB1\src\Form\Part\PartBaseType.php:181 - Part-DB1\src\Form\Part\PartBaseType.php:179 - part.edit.needs_review Necesita revisión - - Part-DB1\src\Form\Part\PartBaseType.php:189 - Part-DB1\src\Form\Part\PartBaseType.php:187 - part.edit.is_favorite Favorito - - Part-DB1\src\Form\Part\PartBaseType.php:197 - Part-DB1\src\Form\Part\PartBaseType.php:195 - part.edit.mass Peso - - Part-DB1\src\Form\Part\PartBaseType.php:203 - Part-DB1\src\Form\Part\PartBaseType.php:201 - part.edit.partUnit Unidad de medida @@ -5680,287 +3404,168 @@ Subelementos serán desplazados hacia arriba. - - Part-DB1\src\Form\Part\PartBaseType.php:212 - Part-DB1\src\Form\Part\PartBaseType.php:210 - part.edit.comment Notas - - Part-DB1\src\Form\Part\PartBaseType.php:250 - Part-DB1\src\Form\Part\PartBaseType.php:246 - part.edit.master_attachment Vista previa - - Part-DB1\src\Form\Part\PartBaseType.php:295 - Part-DB1\src\Form\Part\PartBaseType.php:276 - src\Form\PartType.php:91 - part.edit.save Guardar cambios - - Part-DB1\src\Form\Part\PartBaseType.php:296 - Part-DB1\src\Form\Part\PartBaseType.php:277 - src\Form\PartType.php:92 - part.edit.reset Restablecer cambios - - Part-DB1\src\Form\Part\PartBaseType.php:105 - Part-DB1\src\Form\Part\PartBaseType.php:103 - part.edit.name.placeholder p.ej. BC547 - - Part-DB1\src\Form\Part\PartBaseType.php:115 - Part-DB1\src\Form\Part\PartBaseType.php:113 - part.edit.description.placeholder p.ej NPN 45V, 0,1A, 0,5W - - Part-DB1\src\Form\Part\PartBaseType.php:123 - Part-DB1\src\Form\Part\PartBaseType.php:121 - part.editmininstock.placeholder p.ej. 1 - - Part-DB1\src\Form\Part\PartLotType.php:69 - Part-DB1\src\Form\Part\PartLotType.php:69 - part_lot.edit.description Descripción - - Part-DB1\src\Form\Part\PartLotType.php:78 - Part-DB1\src\Form\Part\PartLotType.php:78 - part_lot.edit.location Ubicación de almacenaje - - Part-DB1\src\Form\Part\PartLotType.php:89 - Part-DB1\src\Form\Part\PartLotType.php:89 - part_lot.edit.amount Cantidad - - Part-DB1\src\Form\Part\PartLotType.php:98 - Part-DB1\src\Form\Part\PartLotType.php:97 - part_lot.edit.instock_unknown Cantidad desconocida - - Part-DB1\src\Form\Part\PartLotType.php:109 - Part-DB1\src\Form\Part\PartLotType.php:108 - part_lot.edit.needs_refill Necesita repuesto - - Part-DB1\src\Form\Part\PartLotType.php:120 - Part-DB1\src\Form\Part\PartLotType.php:119 - part_lot.edit.expiration_date Fecha de caducidad - - Part-DB1\src\Form\Part\PartLotType.php:128 - Part-DB1\src\Form\Part\PartLotType.php:125 - part_lot.edit.comment Comentarios - - Part-DB1\src\Form\Permissions\PermissionsType.php:99 - Part-DB1\src\Form\Permissions\PermissionsType.php:99 - perm.group.other Varios - - Part-DB1\src\Form\TFAGoogleSettingsType.php:97 - Part-DB1\src\Form\TFAGoogleSettingsType.php:97 - tfa_google.enable Habilitar app de autenticación - - Part-DB1\src\Form\TFAGoogleSettingsType.php:101 - Part-DB1\src\Form\TFAGoogleSettingsType.php:101 - tfa_google.disable Desactivar aplicación de autenticación - - Part-DB1\src\Form\TFAGoogleSettingsType.php:74 - Part-DB1\src\Form\TFAGoogleSettingsType.php:74 - google_confirmation Código de confirmación - - Part-DB1\src\Form\UserSettingsType.php:108 - Part-DB1\src\Form\UserSettingsType.php:108 - src\Form\UserSettingsType.php:46 - user.timezone.label Zona horaria - - Part-DB1\src\Form\UserSettingsType.php:133 - Part-DB1\src\Form\UserSettingsType.php:132 - user.currency.label Divisa preferida - - Part-DB1\src\Form\UserSettingsType.php:140 - Part-DB1\src\Form\UserSettingsType.php:139 - src\Form\UserSettingsType.php:53 - save Aplicar cambios - - Part-DB1\src\Form\UserSettingsType.php:141 - Part-DB1\src\Form\UserSettingsType.php:140 - src\Form\UserSettingsType.php:54 - reset Descartar cambios - - Part-DB1\src\Form\UserSettingsType.php:104 - Part-DB1\src\Form\UserSettingsType.php:104 - src\Form\UserSettingsType.php:45 - user_settings.language.placeholder Idioma del servidor - - Part-DB1\src\Form\UserSettingsType.php:115 - Part-DB1\src\Form\UserSettingsType.php:115 - src\Form\UserSettingsType.php:48 - user_settings.timezone.placeholder Zona horaria del servidor - - Part-DB1\src\Services\ElementTypeNameGenerator.php:79 - Part-DB1\src\Services\ElementTypeNameGenerator.php:79 - attachment.label Adjunto - - Part-DB1\src\Services\ElementTypeNameGenerator.php:81 - Part-DB1\src\Services\ElementTypeNameGenerator.php:81 - attachment_type.label Tipo de adjunto - - Part-DB1\src\Services\ElementTypeNameGenerator.php:82 - Part-DB1\src\Services\ElementTypeNameGenerator.php:82 - project.label Proyecto - - Part-DB1\src\Services\ElementTypeNameGenerator.php:85 - Part-DB1\src\Services\ElementTypeNameGenerator.php:85 - measurement_unit.label Unidad de medida @@ -5973,58 +3578,36 @@ Subelementos serán desplazados hacia arriba. - - Part-DB1\src\Services\ElementTypeNameGenerator.php:90 - Part-DB1\src\Services\ElementTypeNameGenerator.php:90 - currency.label Divisa - - Part-DB1\src\Services\ElementTypeNameGenerator.php:91 - Part-DB1\src\Services\ElementTypeNameGenerator.php:91 - orderdetail.label Información del pedido - - Part-DB1\src\Services\ElementTypeNameGenerator.php:92 - Part-DB1\src\Services\ElementTypeNameGenerator.php:92 - pricedetail.label Información del precio - - Part-DB1\src\Services\ElementTypeNameGenerator.php:94 - Part-DB1\src\Services\ElementTypeNameGenerator.php:94 - user.label Usuario - - Part-DB1\src\Services\ElementTypeNameGenerator.php:95 - parameter.label Parámetro - - Part-DB1\src\Services\ElementTypeNameGenerator.php:96 - label_profile.label Perfil de etiqueta @@ -6032,8 +3615,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:176 - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:161 new @@ -6042,174 +3623,102 @@ Subelementos serán desplazados hacia arriba. - - Part-DB1\src\Services\MarkdownParser.php:73 - Part-DB1\src\Services\MarkdownParser.php:73 - markdown.loading Cargando markdown. Si este mensaje no desaparece, prueba a refrescar la página. - - Part-DB1\src\Services\PasswordResetManager.php:98 - Part-DB1\src\Services\PasswordResetManager.php:98 - pw_reset.email.subject Restablecer contraseña de tu cuenta Part-DB. - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 - tree.tools.tools Herramientas - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:107 - src\Services\ToolsTreeBuilder.php:74 - tree.tools.edit Editar - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:110 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 - src\Services\ToolsTreeBuilder.php:81 - tree.tools.show Visualizar - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:111 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 - tree.tools.system Sistema - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:123 - tree.tools.tools.label_dialog Generador de etiquetas - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:130 - tree.tools.tools.label_scanner Escáner - - 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 Tipos de adjunto - - 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 Categorías - - 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 Proyectos - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:167 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:144 - src\Services\ToolsTreeBuilder.php:68 - tree.tools.edit.suppliers Proveedores - - 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 Fabricantes - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:179 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:156 - tree.tools.edit.storelocation Ubicaciones de almacenamiento - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:185 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:162 - tree.tools.edit.footprint Footprints - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:191 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:168 - tree.tools.edit.currency Divisas - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:174 - tree.tools.edit.measurement_unit Unidad de medida @@ -6222,40 +3731,24 @@ Subelementos serán desplazados hacia arriba. - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 - tree.tools.edit.label_profile Perfiles de etiqueta - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:209 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:180 - tree.tools.edit.part Nuevo componente - - 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 Visualizar todos los componentes - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:232 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 - tree.tools.show.all_attachments Adjuntos @@ -6263,8 +3756,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:239 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:210 new @@ -6273,20 +3764,12 @@ Subelementos serán desplazados hacia arriba. - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:258 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:229 - tree.tools.system.users Usuarios - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:264 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:235 - tree.tools.system.groups Grupos @@ -6294,8 +3777,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:271 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:242 new @@ -6304,11 +3785,6 @@ Subelementos serán desplazados hacia arriba. - - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - src\Services\TreeBuilder.php:124 - entity.tree.new Nuevo elemento @@ -6316,7 +3792,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 obsolete @@ -6326,8 +3801,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\templates\_navbar.html.twig:27 - templates\base.html.twig:88 obsolete @@ -6337,8 +3810,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\src\Form\UserSettingsType.php:119 - src\Form\UserSettingsType.php:49 obsolete @@ -6348,8 +3819,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\src\Form\UserSettingsType.php:129 - src\Form\UserSettingsType.php:50 obsolete @@ -6359,7 +3828,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:100 new obsolete @@ -6370,10 +3838,6 @@ Subelementos serán desplazados hacia arriba. - 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 @@ -6384,10 +3848,6 @@ Subelementos serán desplazados hacia arriba. - 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 @@ -6398,7 +3858,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:139 new obsolete @@ -6409,7 +3868,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:160 new obsolete @@ -6420,7 +3878,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:184 new obsolete @@ -6431,7 +3888,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:198 new obsolete @@ -6442,7 +3898,6 @@ Subelementos serán desplazados hacia arriba. - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:214 new obsolete @@ -6453,7 +3908,6 @@ Subelementos serán desplazados hacia arriba. - templates\base.html.twig:81 obsolete obsolete @@ -6464,7 +3918,6 @@ Subelementos serán desplazados hacia arriba. - templates\base.html.twig:109 obsolete obsolete @@ -6475,7 +3928,6 @@ Subelementos serán desplazados hacia arriba. - templates\base.html.twig:112 obsolete obsolete @@ -6766,7 +4218,6 @@ Subelementos serán desplazados hacia arriba. - src\Form\PartType.php:63 obsolete obsolete @@ -7439,7 +4890,6 @@ Elemento 3 - templates\Parts\show_part_info.html.twig:194 obsolete obsolete @@ -7450,7 +4900,6 @@ Elemento 3 - src\Form\PartType.php:83 obsolete obsolete @@ -12306,4 +9755,4 @@ Por favor ten en cuenta que no puedes personificar a un usuario deshabilitado. S - + \ No newline at end of file diff --git a/translations/messages.fr.xlf b/translations/messages.fr.xlf index 9492a94d..37e0d27e 100644 --- a/translations/messages.fr.xlf +++ b/translations/messages.fr.xlf @@ -2,11 +2,6 @@ - - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - attachment_type.caption Types pour fichiers joints @@ -14,7 +9,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:12 new @@ -24,7 +18,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:16 new @@ -33,45 +26,18 @@ - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - templates\AdminPages\CategoryAdmin.html.twig:4 - templates\base.html.twig:163 - templates\base.html.twig:170 - templates\base.html.twig:197 - templates\base.html.twig:225 - category.labelp Catégories - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:19 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:11 - templates\AdminPages\CategoryAdmin.html.twig:8 - admin.options Options - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - templates\AdminPages\CategoryAdmin.html.twig:9 - admin.advanced Avancé @@ -79,7 +45,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:13 new @@ -89,7 +54,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:17 new @@ -98,30 +62,18 @@ - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - currency.caption Devise - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - currency.iso_code.caption Code ISO - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - currency.symbol.caption Symbole de la devise @@ -129,7 +81,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:29 new @@ -139,7 +90,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:33 new @@ -148,89 +98,36 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Recherche - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - templates\AdminPages\EntityAdminBase.html.twig:13 - templates\base.html.twig:166 - templates\base.html.twig:193 - templates\base.html.twig:221 - expandAll Agrandir tout - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - templates\AdminPages\EntityAdminBase.html.twig:17 - templates\base.html.twig:167 - templates\base.html.twig:194 - templates\base.html.twig:222 - reduceAll Réduire tout - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - part.info.timetravel_hint C'est ainsi que le composant apparaissait avant le %timestamp%. <i>Veuillez noter que cette fonctionnalité est expérimentale, donc les infos ne sont peut-être pas correctes. </i> - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - templates\AdminPages\EntityAdminBase.html.twig:42 - standard.label Propriétés - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - templates\AdminPages\EntityAdminBase.html.twig:43 - infos.label Informations @@ -238,8 +135,6 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 new @@ -248,120 +143,66 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - templates\AdminPages\EntityAdminBase.html.twig:45 - export.label Exporter - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - templates\AdminPages\EntityAdminBase.html.twig:47 - import_export.label Importer exporter - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - mass_creation.label Création multiple - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - templates\AdminPages\EntityAdminBase.html.twig:59 - admin.common Commun - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - admin.attachments Fichiers joints - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:90 - admin.parameters Paramètres - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:179 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:167 - templates\AdminPages\EntityAdminBase.html.twig:142 - export_all.label Exporter tous les éléments - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:185 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:173 - mass_creation.help Chaque ligne sera interprétée comme le nom d'un élément qui sera créé. - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - templates\AdminPages\EntityAdminBase.html.twig:35 - edit.caption Éditer l'élément "%name" - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - templates\AdminPages\EntityAdminBase.html.twig:37 - new.caption Nouvel élément - - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - templates\base.html.twig:172 - templates\base.html.twig:199 - templates\base.html.twig:227 - footprint.labelp Empreintes @@ -369,7 +210,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:13 new @@ -379,7 +219,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:17 new @@ -388,22 +227,12 @@ - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - group.edit.caption Groupes - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - user.edit.permissions Permissions @@ -411,7 +240,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:24 new @@ -421,7 +249,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:28 new @@ -430,27 +257,18 @@ - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:4 - label_profile.caption Profil des étiquettes - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:8 - label_profile.advanced Avancé - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:9 - label_profile.comment Commentaire @@ -458,7 +276,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:55 new @@ -468,7 +285,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:59 new @@ -477,11 +293,6 @@ - - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - templates\AdminPages\ManufacturerAdmin.html.twig:4 - manufacturer.caption Fabricants @@ -489,7 +300,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:8 new @@ -499,7 +309,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:12 new @@ -508,10 +317,6 @@ - - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - measurement_unit.caption Unité de mesure @@ -524,15 +329,6 @@ - - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:5 - Part-DB1\templates\_sidebar.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:8 - templates\base.html.twig:171 - templates\base.html.twig:198 - templates\base.html.twig:226 - storelocation.labelp Emplacement de stockage @@ -540,7 +336,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:32 new @@ -550,7 +345,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:36 new @@ -560,7 +354,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 new @@ -570,7 +363,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:20 new @@ -579,120 +371,66 @@ - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - user.edit.caption Utilisateurs - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - user.edit.configuration Configuration - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - user.edit.password Mot de passe - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - user.edit.tfa.caption Authentification à deux facteurs - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - user.edit.tfa.google_active Application d'authentification active - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - tfa_backup.remaining_tokens Nombre de codes de secours restant - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - tfa_backup.generation_date Date de génération des codes de secours - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - user.edit.tfa.disabled Méthode désactivée - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - user.edit.tfa.u2f_keys_count Clés de sécurité actives - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_title Voulez vous vraiment poursuivre ? - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_message Cela désactivera <b> toutes les méthodes d'authentification à deux facteurs de l'utilisateur</b> et supprimera <b>les codes de secours</b>! @@ -702,10 +440,6 @@ L'utilisateur devra configurer à nouveau toutes les méthodes d'authentificatio - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - user.edit.tfa.disable_tfa.btn Désactiver toutes les méthodes d'authentification à deux facteurs @@ -713,7 +447,6 @@ L'utilisateur devra configurer à nouveau toutes les méthodes d'authentificatio - Part-DB1\templates\AdminPages\UserAdmin.html.twig:85 new @@ -723,7 +456,6 @@ L'utilisateur devra configurer à nouveau toutes les méthodes d'authentificatio - Part-DB1\templates\AdminPages\UserAdmin.html.twig:89 new @@ -732,129 +464,60 @@ L'utilisateur devra configurer à nouveau toutes les méthodes d'authentificatio - - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:63 - attachment.delete Supprimer - - Part-DB1\templates\AdminPages\_attachments.html.twig:41 - Part-DB1\templates\Parts\edit\_attachments.html.twig:38 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:35 - Part-DB1\src\DataTables\AttachmentDataTable.php:159 - Part-DB1\templates\Parts\edit\_attachments.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:159 - attachment.external Externe - - Part-DB1\templates\AdminPages\_attachments.html.twig:49 - Part-DB1\templates\Parts\edit\_attachments.html.twig:47 - Part-DB1\templates\AdminPages\_attachments.html.twig:47 - Part-DB1\templates\Parts\edit\_attachments.html.twig:45 - attachment.preview.alt Miniature du fichier joint - - Part-DB1\templates\AdminPages\_attachments.html.twig:52 - Part-DB1\templates\Parts\edit\_attachments.html.twig:50 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 - Part-DB1\templates\AdminPages\_attachments.html.twig:50 - Part-DB1\templates\Parts\edit\_attachments.html.twig:48 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:45 - attachment.view Afficher - - Part-DB1\templates\AdminPages\_attachments.html.twig:58 - Part-DB1\templates\Parts\edit\_attachments.html.twig:56 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:43 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - Part-DB1\templates\AdminPages\_attachments.html.twig:56 - Part-DB1\templates\Parts\edit\_attachments.html.twig:54 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - attachment.file_not_found Fichier introuvable - - Part-DB1\templates\AdminPages\_attachments.html.twig:66 - Part-DB1\templates\Parts\edit\_attachments.html.twig:64 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:48 - Part-DB1\templates\Parts\edit\_attachments.html.twig:62 - attachment.secure Fichier joint privé - - Part-DB1\templates\AdminPages\_attachments.html.twig:79 - Part-DB1\templates\Parts\edit\_attachments.html.twig:77 - Part-DB1\templates\AdminPages\_attachments.html.twig:77 - Part-DB1\templates\Parts\edit\_attachments.html.twig:75 - attachment.create Ajouter un fichier joint - - Part-DB1\templates\AdminPages\_attachments.html.twig:84 - Part-DB1\templates\Parts\edit\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - Part-DB1\templates\AdminPages\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_attachments.html.twig:80 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - part_lot.edit.delete.confirm Voulez vous vraiment supprimer ce stock ? Cette action ne pourra pas être annulée! - - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - templates\AdminPages\_delete_form.html.twig:2 - entity.delete.confirm_title Voulez vous vraiment supprimer %name%? - - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - templates\AdminPages\_delete_form.html.twig:3 - entity.delete.message Cette action ne pourra pas être annulée! @@ -863,11 +526,6 @@ Les sous éléments seront déplacés vers le haut. - - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - templates\AdminPages\_delete_form.html.twig:9 - entity.delete Supprimer l'élément @@ -875,12 +533,6 @@ Les sous éléments seront déplacés vers le haut. - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:45 - Part-DB1\src\Form\Part\PartBaseType.php:286 - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:43 - Part-DB1\src\Form\Part\PartBaseType.php:267 new @@ -889,331 +541,168 @@ Les sous éléments seront déplacés vers le haut. - - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - templates\AdminPages\_delete_form.html.twig:12 - entity.delete.recursive Suppression récursive (tous les sous éléments) - - Part-DB1\templates\AdminPages\_duplicate.html.twig:3 - entity.duplicate Dupliquer l’élément - - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - templates\AdminPages\_export_form.html.twig:4 - src\Form\ImportType.php:67 - export.format Format de fichier - - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - templates\AdminPages\_export_form.html.twig:16 - export.level Niveau de verbosité - - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - templates\AdminPages\_export_form.html.twig:19 - export.level.simple Simple - - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - templates\AdminPages\_export_form.html.twig:20 - export.level.extended Étendu - - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - templates\AdminPages\_export_form.html.twig:21 - export.level.full Complet - - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - templates\AdminPages\_export_form.html.twig:31 - export.include_children Exporter également les sous éléments - - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - templates\AdminPages\_export_form.html.twig:39 - export.btn Exporter - - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - templates\AdminPages\EntityAdminBase.html.twig:94 - templates\Parts\edit_part_info.html.twig:12 - templates\Parts\show_part_info.html.twig:11 - id.label ID - - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:76 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:77 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:77 - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:59 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:60 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:53 - templates\AdminPages\EntityAdminBase.html.twig:101 - templates\Parts\show_part_info.html.twig:248 - createdAt Créé le - - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:73 - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:49 - templates\AdminPages\EntityAdminBase.html.twig:114 - templates\Parts\show_part_info.html.twig:263 - lastModified Dernière modification - - Part-DB1\templates\AdminPages\_info.html.twig:38 - Part-DB1\templates\AdminPages\_info.html.twig:38 - entity.info.parts_count Nombre de composants avec cet élément - - Part-DB1\templates\AdminPages\_parameters.html.twig:6 - Part-DB1\templates\helper.twig:125 - Part-DB1\templates\Parts\edit\_specifications.html.twig:6 - specifications.property Paramètre - - Part-DB1\templates\AdminPages\_parameters.html.twig:7 - Part-DB1\templates\Parts\edit\_specifications.html.twig:7 - specifications.symbol Symbole - - Part-DB1\templates\AdminPages\_parameters.html.twig:8 - Part-DB1\templates\Parts\edit\_specifications.html.twig:8 - specifications.value_min Min. - - Part-DB1\templates\AdminPages\_parameters.html.twig:9 - Part-DB1\templates\Parts\edit\_specifications.html.twig:9 - specifications.value_typ Typ. - - Part-DB1\templates\AdminPages\_parameters.html.twig:10 - Part-DB1\templates\Parts\edit\_specifications.html.twig:10 - specifications.value_max Max. - - Part-DB1\templates\AdminPages\_parameters.html.twig:11 - Part-DB1\templates\Parts\edit\_specifications.html.twig:11 - specifications.unit Unité - - Part-DB1\templates\AdminPages\_parameters.html.twig:12 - Part-DB1\templates\Parts\edit\_specifications.html.twig:12 - specifications.text Texte - - Part-DB1\templates\AdminPages\_parameters.html.twig:13 - Part-DB1\templates\Parts\edit\_specifications.html.twig:13 - specifications.group Groupe - - Part-DB1\templates\AdminPages\_parameters.html.twig:26 - Part-DB1\templates\Parts\edit\_specifications.html.twig:26 - specification.create Nouveau paramètre - - Part-DB1\templates\AdminPages\_parameters.html.twig:31 - Part-DB1\templates\Parts\edit\_specifications.html.twig:31 - parameter.delete.confirm Souhaitez-vous vraiment supprimer ce paramètre ? - - Part-DB1\templates\attachment_list.html.twig:3 - Part-DB1\templates\attachment_list.html.twig:3 - attachment.list.title Liste des fichiers joints - - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - part_list.loading.caption Chargement - - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - part_list.loading.message Cela peut prendre un moment.Si ce message ne disparaît pas, essayez de recharger la page. - - Part-DB1\templates\base.html.twig:68 - Part-DB1\templates\base.html.twig:68 - templates\base.html.twig:246 - vendor.base.javascript_hint Activez Javascipt pour profiter de toutes les fonctionnalités! - - Part-DB1\templates\base.html.twig:73 - Part-DB1\templates\base.html.twig:73 - sidebar.big.toggle Afficher/Cacher le panneau latéral @@ -1221,230 +710,132 @@ Show/Hide sidebar - - Part-DB1\templates\base.html.twig:95 - Part-DB1\templates\base.html.twig:95 - templates\base.html.twig:271 - loading.caption Chargement: - - Part-DB1\templates\base.html.twig:96 - Part-DB1\templates\base.html.twig:96 - templates\base.html.twig:272 - loading.message Cela peut prendre un moment.Si ce message ne disparaît pas, essayez de recharger la page. - - Part-DB1\templates\base.html.twig:101 - Part-DB1\templates\base.html.twig:101 - templates\base.html.twig:277 - loading.bar Chargement... - - Part-DB1\templates\base.html.twig:112 - Part-DB1\templates\base.html.twig:112 - templates\base.html.twig:288 - back_to_top Retour en haut de page - - Part-DB1\templates\Form\permissionLayout.html.twig:35 - Part-DB1\templates\Form\permissionLayout.html.twig:35 - permission.edit.permission Permissions - - Part-DB1\templates\Form\permissionLayout.html.twig:36 - Part-DB1\templates\Form\permissionLayout.html.twig:36 - permission.edit.value Valeur - - Part-DB1\templates\Form\permissionLayout.html.twig:53 - Part-DB1\templates\Form\permissionLayout.html.twig:53 - permission.legend.title Explication des états: - - Part-DB1\templates\Form\permissionLayout.html.twig:57 - Part-DB1\templates\Form\permissionLayout.html.twig:57 - permission.legend.disallow Interdire - - Part-DB1\templates\Form\permissionLayout.html.twig:61 - Part-DB1\templates\Form\permissionLayout.html.twig:61 - permission.legend.allow Autoriser - - Part-DB1\templates\Form\permissionLayout.html.twig:65 - Part-DB1\templates\Form\permissionLayout.html.twig:65 - permission.legend.inherit Hériter du groupe (parent) - - Part-DB1\templates\helper.twig:3 - Part-DB1\templates\helper.twig:3 - bool.true Vrai - - Part-DB1\templates\helper.twig:5 - Part-DB1\templates\helper.twig:5 - bool.false Faux - - Part-DB1\templates\helper.twig:92 - Part-DB1\templates\helper.twig:87 - Yes Oui - - Part-DB1\templates\helper.twig:94 - Part-DB1\templates\helper.twig:89 - No Non - - Part-DB1\templates\helper.twig:126 - specifications.value Valeur - - Part-DB1\templates\homepage.html.twig:7 - Part-DB1\templates\homepage.html.twig:7 - templates\homepage.html.twig:7 - version.caption Version - - Part-DB1\templates\homepage.html.twig:22 - Part-DB1\templates\homepage.html.twig:22 - templates\homepage.html.twig:19 - homepage.license Information de license - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.caption Page du projet - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.text Retrouvez les téléchargements, report de bugs, to-do-list etc. sur <a href="%href%" class="link-external" target="_blank">la page du projet GitHub</a> - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - homepage.help.caption Aide - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - homepage.help.text De l'aide et des conseils sont disponibles sur le Wiki de la <a href="%href%" class="link-external" target="_blank">page GitHub</a> - - Part-DB1\templates\homepage.html.twig:33 - Part-DB1\templates\homepage.html.twig:33 - templates\homepage.html.twig:30 - homepage.forum.caption Forum @@ -1452,8 +843,6 @@ Show/Hide sidebar - Part-DB1\templates\homepage.html.twig:45 - Part-DB1\templates\homepage.html.twig:45 new @@ -1462,138 +851,90 @@ Show/Hide sidebar - - Part-DB1\templates\LabelSystem\dialog.html.twig:3 - Part-DB1\templates\LabelSystem\dialog.html.twig:6 - label_generator.title Générateur d'étiquettes - - Part-DB1\templates\LabelSystem\dialog.html.twig:16 - label_generator.common Commun - - Part-DB1\templates\LabelSystem\dialog.html.twig:20 - label_generator.advanced Avancé - - Part-DB1\templates\LabelSystem\dialog.html.twig:24 - label_generator.profiles Profils - - Part-DB1\templates\LabelSystem\dialog.html.twig:58 - label_generator.selected_profile Profil actuellement sélectionné - - Part-DB1\templates\LabelSystem\dialog.html.twig:62 - label_generator.edit_profile Modifier le profil - - Part-DB1\templates\LabelSystem\dialog.html.twig:75 - label_generator.load_profile Charger le profil - - Part-DB1\templates\LabelSystem\dialog.html.twig:102 - label_generator.download Télécharger - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:3 - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:5 - label_generator.label_btn Générer une étiquette - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:20 - label_generator.label_empty Nouvelle étiquette vide - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:3 - label_scanner.title Lecteur d'étiquettes - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - label_scanner.no_cam_found.title Aucune webcam trouvée - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - label_scanner.no_cam_found.text Vous devez disposer d'une webcam et donner l'autorisation d'utiliser la fonction de scanner. Vous pouvez entrer le code à barres manuellement ci-dessous. - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:27 - label_scanner.source_select Sélectionnez une source - - Part-DB1\templates\LogSystem\log_list.html.twig:3 - Part-DB1\templates\LogSystem\log_list.html.twig:3 - log.list.title Journal système @@ -1601,8 +942,6 @@ Show/Hide sidebar - Part-DB1\templates\LogSystem\_log_table.html.twig:1 - Part-DB1\templates\LogSystem\_log_table.html.twig:1 new @@ -1612,8 +951,6 @@ Show/Hide sidebar - Part-DB1\templates\LogSystem\_log_table.html.twig:2 - Part-DB1\templates\LogSystem\_log_table.html.twig:2 new @@ -1622,194 +959,114 @@ Show/Hide sidebar - - Part-DB1\templates\mail\base.html.twig:24 - Part-DB1\templates\mail\base.html.twig:24 - mail.footer.email_sent_by Cet email a été envoyé automatiquement par - - Part-DB1\templates\mail\base.html.twig:24 - Part-DB1\templates\mail\base.html.twig:24 - mail.footer.dont_reply Ne répondez pas à cet email. - - Part-DB1\templates\mail\pw_reset.html.twig:6 - Part-DB1\templates\mail\pw_reset.html.twig:6 - email.hi %name% Bonjour %name% - - Part-DB1\templates\mail\pw_reset.html.twig:7 - Part-DB1\templates\mail\pw_reset.html.twig:7 - email.pw_reset.message Quelqu’un (surement vous) a demandé une réinitialisation de votre mot de passe.Si ce n'est pas le cas, ignorez simplement cet email. - - Part-DB1\templates\mail\pw_reset.html.twig:9 - Part-DB1\templates\mail\pw_reset.html.twig:9 - email.pw_reset.button Cliquez ici pour réinitialiser votre mot de passe - - Part-DB1\templates\mail\pw_reset.html.twig:11 - Part-DB1\templates\mail\pw_reset.html.twig:11 - email.pw_reset.fallback Si cela ne fonctionne pas pour vous, allez à <a href="%url%">%url%</a> et entrez les informations suivantes - - Part-DB1\templates\mail\pw_reset.html.twig:16 - Part-DB1\templates\mail\pw_reset.html.twig:16 - email.pw_reset.username Nom d'utilisateur - - Part-DB1\templates\mail\pw_reset.html.twig:19 - Part-DB1\templates\mail\pw_reset.html.twig:19 - email.pw_reset.token Jeton - - Part-DB1\templates\mail\pw_reset.html.twig:24 - Part-DB1\templates\mail\pw_reset.html.twig:24 - email.pw_reset.valid_unit %date% Le jeton de réinitialisation sera valable jusqu'au <i>%date%</i>. - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:18 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:78 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - orderdetail.delete Supprimer - - 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 Quantité minimale de commande - - 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 Prix - - 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 Pour la quantité - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - pricedetail.create Ajouter prix - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - templates\Parts\edit_part_info.html.twig:4 - part.edit.title Éditer le composant - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - templates\Parts\edit_part_info.html.twig:9 - part.edit.card_title Éditer le composant - - 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 Général - - 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 Fabricant - - 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 Avancé @@ -1876,279 +1133,156 @@ Show/Hide sidebar - - 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 - - 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 Fichiers joints - - 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 Informations pour la commande - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 - part.edit.tab.specifications Caractéristiques - - 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 Commentaire - - 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 Créer un nouveau composant - - Part-DB1\templates\Parts\edit\_lots.html.twig:5 - Part-DB1\templates\Parts\edit\_lots.html.twig:5 - part_lot.delete Supprimer - - Part-DB1\templates\Parts\edit\_lots.html.twig:28 - Part-DB1\templates\Parts\edit\_lots.html.twig:28 - part_lot.create Créer un inventaire - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 - orderdetail.create Ajouter un fournisseur - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 - pricedetails.edit.delete.confirm Voulez-vous vraiment supprimer ce prix ? Cela ne peut pas être défait ! - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:62 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:61 - orderdetails.edit.delete.confirm Voulez-vous vraiment supprimer ce fournisseur ? Cela ne peut pas être défait ! - - 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 Informations détaillées pour - - 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 - - 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 Commentaire - - Part-DB1\templates\Parts\info\show_part_info.html.twig:64 - part.info.specifications Caractéristiques - - 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 Fichiers joints - - 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 Informations de commande - - 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 Historique - - 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 Outils - - 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 Informations complémentaires - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 - attachment.name Nom - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 - attachment.attachment_type Type de fichier joint - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 - attachment.file_name Nom du fichier - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 - attachment.file_size Taille du fichier - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:54 - attachment.preview Aperçu de l'image - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:67 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:50 - attachment.download Téléchargement @@ -2156,8 +1290,6 @@ Show/Hide sidebar - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 new @@ -2166,14 +1298,6 @@ Show/Hide sidebar - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Unknown Inconnu @@ -2181,10 +1305,6 @@ Show/Hide sidebar - 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 @@ -2194,8 +1314,6 @@ Show/Hide sidebar - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 new @@ -2204,49 +1322,24 @@ Show/Hide sidebar - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - part.isFavorite Favoris - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 - part.minOrderAmount Quantité minimale de commande - - 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 Fabricant - - 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 Nom @@ -2254,8 +1347,6 @@ Show/Hide sidebar - Part-DB1\templates\Parts\info\_main_infos.html.twig:27 - Part-DB1\templates\Parts\info\_main_infos.html.twig:27 new @@ -2264,767 +1355,432 @@ Show/Hide sidebar - - 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 Description - - 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 Catégorie - - 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 En stock - - 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 Stock minimum - - 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 Empreinte - - 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 Prix moyen - - Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - part.supplier.name Nom - - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - part.supplier.partnr Lien/Code cmd. - - Part-DB1\templates\Parts\info\_order_infos.html.twig:28 - Part-DB1\templates\Parts\info\_order_infos.html.twig:28 - part.order.minamount Nombre minimum - - Part-DB1\templates\Parts\info\_order_infos.html.twig:29 - Part-DB1\templates\Parts\info\_order_infos.html.twig:29 - part.order.price Prix - - Part-DB1\templates\Parts\info\_order_infos.html.twig:31 - Part-DB1\templates\Parts\info\_order_infos.html.twig:31 - part.order.single_price Prix unitaire - - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 - Part-DB1\templates\Parts\info\_part_lots.html.twig:6 - part_lots.description 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 Emplacement de stockage - - Part-DB1\templates\Parts\info\_part_lots.html.twig:9 - Part-DB1\templates\Parts\info\_part_lots.html.twig:8 - part_lots.amount Quantité - - Part-DB1\templates\Parts\info\_part_lots.html.twig:24 - Part-DB1\templates\Parts\info\_part_lots.html.twig:22 - part_lots.location_unknown Emplacement de stockage inconnu - - Part-DB1\templates\Parts\info\_part_lots.html.twig:31 - Part-DB1\templates\Parts\info\_part_lots.html.twig:29 - part_lots.instock_unknown Quantité inconnue - - Part-DB1\templates\Parts\info\_part_lots.html.twig:40 - Part-DB1\templates\Parts\info\_part_lots.html.twig:38 - part_lots.expiration_date Date d'expiration - - Part-DB1\templates\Parts\info\_part_lots.html.twig:48 - Part-DB1\templates\Parts\info\_part_lots.html.twig:46 - part_lots.is_expired Expiré - - Part-DB1\templates\Parts\info\_part_lots.html.twig:55 - Part-DB1\templates\Parts\info\_part_lots.html.twig:53 - part_lots.need_refill Doit être rempli à nouveau - - Part-DB1\templates\Parts\info\_picture.html.twig:15 - Part-DB1\templates\Parts\info\_picture.html.twig:15 - part.info.prev_picture Image précédente - - Part-DB1\templates\Parts\info\_picture.html.twig:19 - Part-DB1\templates\Parts\info\_picture.html.twig:19 - part.info.next_picture Image suivante - - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - part.mass.tooltip Poids - - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - part.needs_review.badge Révision nécessaire - - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - part.favorite.badge Favoris - - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - part.obsolete.badge N'est plus disponible - - Part-DB1\templates\Parts\info\_specifications.html.twig:10 - parameters.extracted_from_description Automatiquement extrait de la description - - Part-DB1\templates\Parts\info\_specifications.html.twig:15 - parameters.auto_extracted_from_comment Automatiquement extrait du commentaire - - Part-DB1\templates\Parts\info\_tools.html.twig:6 - Part-DB1\templates\Parts\info\_tools.html.twig:4 - templates\Parts\show_part_info.html.twig:125 - part.edit.btn Éditer - - Part-DB1\templates\Parts\info\_tools.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:14 - templates\Parts\show_part_info.html.twig:135 - part.clone.btn Duplication - - Part-DB1\templates\Parts\info\_tools.html.twig:24 - Part-DB1\templates\Parts\lists\_action_bar.html.twig:4 - templates\Parts\show_part_info.html.twig:143 - part.create.btn Créer un nouveau composant - - Part-DB1\templates\Parts\info\_tools.html.twig:31 - Part-DB1\templates\Parts\info\_tools.html.twig:29 - part.delete.confirm_title Voulez-vous vraiment supprimer ce composant ? - - Part-DB1\templates\Parts\info\_tools.html.twig:32 - Part-DB1\templates\Parts\info\_tools.html.twig:30 - part.delete.message Le composant et toutes les informations associées (stocks, fichiers joints, etc.) sont supprimés. Cela ne pourra pas être annulé. - - Part-DB1\templates\Parts\info\_tools.html.twig:39 - Part-DB1\templates\Parts\info\_tools.html.twig:37 - part.delete Supprimer le composant - - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - parts_list.all.title Tous les composants - - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - parts_list.category.title Composants avec catégorie - - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - parts_list.footprint.title Composants avec empreinte - - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - parts_list.manufacturer.title Composants avec fabricant - - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - parts_list.search.title Recherche de composants - - 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 Composants avec lieu de stockage - - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - parts_list.supplier.title Composants avec fournisseur - - Part-DB1\templates\Parts\lists\tags_list.html.twig:4 - Part-DB1\templates\Parts\lists\tags_list.html.twig:4 - parts_list.tags.title Composants avec tag - - Part-DB1\templates\Parts\lists\_info_card.html.twig:22 - Part-DB1\templates\Parts\lists\_info_card.html.twig:17 - entity.info.common.tab Général - - Part-DB1\templates\Parts\lists\_info_card.html.twig:26 - Part-DB1\templates\Parts\lists\_info_card.html.twig:20 - entity.info.statistics.tab Statistiques - - Part-DB1\templates\Parts\lists\_info_card.html.twig:31 - entity.info.attachments.tab Pièces jointes - - Part-DB1\templates\Parts\lists\_info_card.html.twig:37 - entity.info.parameters.tab Caractéristiques - - Part-DB1\templates\Parts\lists\_info_card.html.twig:54 - Part-DB1\templates\Parts\lists\_info_card.html.twig:30 - entity.info.name Nom - - Part-DB1\templates\Parts\lists\_info_card.html.twig:58 - Part-DB1\templates\Parts\lists\_info_card.html.twig:96 - Part-DB1\templates\Parts\lists\_info_card.html.twig:34 - Part-DB1\templates\Parts\lists\_info_card.html.twig:67 - entity.info.parent Parent - - Part-DB1\templates\Parts\lists\_info_card.html.twig:70 - Part-DB1\templates\Parts\lists\_info_card.html.twig:46 - entity.edit.btn Éditer - - Part-DB1\templates\Parts\lists\_info_card.html.twig:92 - Part-DB1\templates\Parts\lists\_info_card.html.twig:63 - entity.info.children_count Nombre de sous-éléments - - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - tfa.check.title Authentification à deux facteurs requise - - Part-DB1\templates\security\2fa_base_form.html.twig:39 - Part-DB1\templates\security\2fa_base_form.html.twig:39 - tfa.code.trusted_pc Il s'agit d'un ordinateur de confiance (si cette fonction est activée, aucune autre requête à deux facteurs n'est effectuée sur cet ordinateur) - - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - login.btn Connexion - - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:42 - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:40 - user.logout Déconnexion - - Part-DB1\templates\security\2fa_form.html.twig:6 - Part-DB1\templates\security\2fa_form.html.twig:6 - tfa.check.code.label Code d'application de l'authentificateur - - Part-DB1\templates\security\2fa_form.html.twig:10 - Part-DB1\templates\security\2fa_form.html.twig:10 - tfa.check.code.help Entrez le code à 6 chiffres de votre application d'authentification ou l'un de vos codes de secours si l'authentificateur n'est pas disponible. - - Part-DB1\templates\security\login.html.twig:3 - Part-DB1\templates\security\login.html.twig:3 - templates\security\login.html.twig:3 - login.title Connexion - - Part-DB1\templates\security\login.html.twig:7 - Part-DB1\templates\security\login.html.twig:7 - templates\security\login.html.twig:7 - login.card_title Connexion - - Part-DB1\templates\security\login.html.twig:31 - Part-DB1\templates\security\login.html.twig:31 - templates\security\login.html.twig:31 - login.username.label Nom d'utilisateur - - Part-DB1\templates\security\login.html.twig:34 - Part-DB1\templates\security\login.html.twig:34 - templates\security\login.html.twig:34 - login.username.placeholder Nom d'utilisateur - - Part-DB1\templates\security\login.html.twig:38 - Part-DB1\templates\security\login.html.twig:38 - templates\security\login.html.twig:38 - login.password.label Mot de passe - - Part-DB1\templates\security\login.html.twig:40 - Part-DB1\templates\security\login.html.twig:40 - templates\security\login.html.twig:40 - login.password.placeholder Mot de passe - - Part-DB1\templates\security\login.html.twig:50 - Part-DB1\templates\security\login.html.twig:50 - templates\security\login.html.twig:50 - login.rememberme Rester connecté (non recommandé sur les ordinateurs publics) - - Part-DB1\templates\security\login.html.twig:64 - Part-DB1\templates\security\login.html.twig:64 - pw_reset.password_forget Nom d'utilisateur/mot de passe oublié ? - - 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 Définir un nouveau mot de passe - - 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 Demander un nouveau mot de passe - - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - tfa_u2f.http_warning Vous accédez à cette page en utilisant la méthode HTTP non sécurisée, donc U2F ne fonctionnera probablement pas (message d'erreur "Bad Request"). Demandez à un administrateur de mettre en place la méthode HTTPS sécurisée si vous souhaitez utiliser des clés de sécurité. - - Part-DB1\templates\security\U2F\u2f_login.html.twig:10 - Part-DB1\templates\security\U2F\u2f_register.html.twig:22 - 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 Veuillez insérer la clé de sécurité et appuyer sur le bouton ! - - 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 Ajouter une clé de sécurité - - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - tfa_u2f.explanation À l'aide d'une clé de sécurité compatible U2F/FIDO (par exemple YubiKey ou NitroKey), une authentification à deux facteurs sûre et pratique peut être obtenue. Les clés de sécurité peuvent être enregistrées ici, et si une vérification à deux facteurs est nécessaire, il suffit d'insérer la clé via USB ou de la taper sur le dispositif via NFC. - - 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 Pour garantir l'accès même en cas de perte de la clé, il est recommandé d'enregistrer une deuxième clé en guise de sauvegarde et de la conserver dans un endroit sûr ! - - 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 Ajouter une clé de sécurité - - 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 Retour aux paramètres @@ -3032,10 +1788,6 @@ Show/Hide sidebar - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 new @@ -3045,8 +1797,6 @@ Show/Hide sidebar - Part-DB1\templates\Statistics\statistics.html.twig:14 - Part-DB1\templates\Statistics\statistics.html.twig:14 new @@ -3056,8 +1806,6 @@ Show/Hide sidebar - Part-DB1\templates\Statistics\statistics.html.twig:19 - Part-DB1\templates\Statistics\statistics.html.twig:19 new @@ -3067,8 +1815,6 @@ Show/Hide sidebar - Part-DB1\templates\Statistics\statistics.html.twig:24 - Part-DB1\templates\Statistics\statistics.html.twig:24 new @@ -3078,12 +1824,6 @@ Show/Hide sidebar - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 new @@ -3093,12 +1833,6 @@ Show/Hide sidebar - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 new @@ -3108,8 +1842,6 @@ Show/Hide sidebar - Part-DB1\templates\Statistics\statistics.html.twig:40 - Part-DB1\templates\Statistics\statistics.html.twig:40 new @@ -3119,8 +1851,6 @@ Show/Hide sidebar - Part-DB1\templates\Statistics\statistics.html.twig:44 - Part-DB1\templates\Statistics\statistics.html.twig:44 new @@ -3130,8 +1860,6 @@ Show/Hide sidebar - Part-DB1\templates\Statistics\statistics.html.twig:48 - Part-DB1\templates\Statistics\statistics.html.twig:48 new @@ -3141,8 +1869,6 @@ Show/Hide sidebar - Part-DB1\templates\Statistics\statistics.html.twig:65 - Part-DB1\templates\Statistics\statistics.html.twig:65 new @@ -3152,8 +1878,6 @@ Show/Hide sidebar - Part-DB1\templates\Statistics\statistics.html.twig:69 - Part-DB1\templates\Statistics\statistics.html.twig:69 new @@ -3163,8 +1887,6 @@ Show/Hide sidebar - Part-DB1\templates\Statistics\statistics.html.twig:73 - Part-DB1\templates\Statistics\statistics.html.twig:73 new @@ -3174,8 +1896,6 @@ Show/Hide sidebar - Part-DB1\templates\Statistics\statistics.html.twig:77 - Part-DB1\templates\Statistics\statistics.html.twig:77 new @@ -3185,8 +1905,6 @@ Show/Hide sidebar - Part-DB1\templates\Statistics\statistics.html.twig:81 - Part-DB1\templates\Statistics\statistics.html.twig:81 new @@ -3196,8 +1914,6 @@ Show/Hide sidebar - Part-DB1\templates\Statistics\statistics.html.twig:85 - Part-DB1\templates\Statistics\statistics.html.twig:85 new @@ -3207,8 +1923,6 @@ Show/Hide sidebar - Part-DB1\templates\Statistics\statistics.html.twig:89 - Part-DB1\templates\Statistics\statistics.html.twig:89 new @@ -3218,8 +1932,6 @@ Show/Hide sidebar - Part-DB1\templates\Statistics\statistics.html.twig:93 - Part-DB1\templates\Statistics\statistics.html.twig:93 new @@ -3229,8 +1941,6 @@ Show/Hide sidebar - Part-DB1\templates\Statistics\statistics.html.twig:110 - Part-DB1\templates\Statistics\statistics.html.twig:110 new @@ -3240,8 +1950,6 @@ Show/Hide sidebar - Part-DB1\templates\Statistics\statistics.html.twig:114 - Part-DB1\templates\Statistics\statistics.html.twig:114 new @@ -3251,8 +1959,6 @@ Show/Hide sidebar - Part-DB1\templates\Statistics\statistics.html.twig:118 - Part-DB1\templates\Statistics\statistics.html.twig:118 new @@ -3262,8 +1968,6 @@ Show/Hide sidebar - Part-DB1\templates\Statistics\statistics.html.twig:122 - Part-DB1\templates\Statistics\statistics.html.twig:122 new @@ -3273,8 +1977,6 @@ Show/Hide sidebar - Part-DB1\templates\Statistics\statistics.html.twig:126 - Part-DB1\templates\Statistics\statistics.html.twig:126 new @@ -3283,302 +1985,156 @@ Show/Hide sidebar - - 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 Codes de secours - - Part-DB1\templates\Users\backup_codes.html.twig:12 - Part-DB1\templates\Users\backup_codes.html.twig:12 - tfa_backup.codes.explanation Imprimez ces codes et conservez-les dans un endroit sûr ! - - Part-DB1\templates\Users\backup_codes.html.twig:13 - Part-DB1\templates\Users\backup_codes.html.twig:13 - tfa_backup.codes.help Si vous n'avez plus accès à votre appareil avec l'application d'authentification (smartphone perdu, perte de données, etc.), vous pouvez utiliser un de ces codes pour accéder à votre compte et éventuellement configurer une nouvelle application d'authentification. Chacun de ces codes peut être utilisé une fois, il est recommandé de supprimer les codes utilisés. Toute personne ayant accès à ces codes peut potentiellement accéder à votre compte, alors gardez-les en lieu sûr. - - Part-DB1\templates\Users\backup_codes.html.twig:16 - Part-DB1\templates\Users\backup_codes.html.twig:16 - tfa_backup.username Nom d'utilisateur - - 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 générée le %date% - - Part-DB1\templates\Users\backup_codes.html.twig:32 - Part-DB1\templates\Users\backup_codes.html.twig:32 - tfa_backup.codes.print Imprimer - - Part-DB1\templates\Users\backup_codes.html.twig:35 - Part-DB1\templates\Users\backup_codes.html.twig:35 - tfa_backup.codes.copy_clipboard Copier dans le presse-papier - - 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 Informations sur l'utilisateur - - 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 Prénom - - 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 Nom - - 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 Email - - 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 Département - - 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 Nom d'utilisateur - - 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 Groupe - - Part-DB1\templates\Users\user_info.html.twig:67 - Part-DB1\templates\Users\user_info.html.twig:67 - user.permissions Autorisations - - 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 Paramètres utilisateur - - 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 Données personnelles - - 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 Configuration - - 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 Changer de mot de passe - - Part-DB1\templates\Users\_2fa_settings.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:6 - user.settings.2fa_settings Authentification à deux facteurs - - Part-DB1\templates\Users\_2fa_settings.html.twig:13 - Part-DB1\templates\Users\_2fa_settings.html.twig:13 - tfa.settings.google.tab Application d'authentification - - Part-DB1\templates\Users\_2fa_settings.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:17 - tfa.settings.bakup.tab Codes de secours - - Part-DB1\templates\Users\_2fa_settings.html.twig:21 - Part-DB1\templates\Users\_2fa_settings.html.twig:21 - tfa.settings.u2f.tab Clés de sécurité (U2F) - - Part-DB1\templates\Users\_2fa_settings.html.twig:25 - Part-DB1\templates\Users\_2fa_settings.html.twig:25 - tfa.settings.trustedDevices.tab Appareils de confiance - - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - tfa_google.disable.confirm_title Voulez-vous vraiment désactiver l'application d'authentification ? - - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - tfa_google.disable.confirm_message Si vous désactivez l'application d'authentification, tous les codes de sauvegarde seront supprimés, vous devrez donc peut-être les réimprimer.<br> @@ -3586,262 +2142,156 @@ Notez également que sans authentification à deux facteurs, votre compte n'est - - Part-DB1\templates\Users\_2fa_settings.html.twig:39 - Part-DB1\templates\Users\_2fa_settings.html.twig:39 - tfa_google.disabled_message Application d'authentification désactivée - - Part-DB1\templates\Users\_2fa_settings.html.twig:48 - Part-DB1\templates\Users\_2fa_settings.html.twig:48 - tfa_google.step.download Télécharger une application d'authentification (par exemple <a class="link-external" target="_blank" href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2">Authentificateur Google</a> ou <a class="link-external" target="_blank" href="https://play.google.com/store/apps/details?id=org.fedorahosted.freeotp">Authentificateur FreeOTP</a>) - - Part-DB1\templates\Users\_2fa_settings.html.twig:49 - Part-DB1\templates\Users\_2fa_settings.html.twig:49 - tfa_google.step.scan Scannez le QR code adjacent avec l'application ou saisissez les données manuellement - - Part-DB1\templates\Users\_2fa_settings.html.twig:50 - Part-DB1\templates\Users\_2fa_settings.html.twig:50 - tfa_google.step.input_code Entrez le code généré dans le champ ci-dessous et confirmez - - Part-DB1\templates\Users\_2fa_settings.html.twig:51 - Part-DB1\templates\Users\_2fa_settings.html.twig:51 - tfa_google.step.download_backup Imprimez vos codes de secours et conservez-les dans un endroit sûr - - Part-DB1\templates\Users\_2fa_settings.html.twig:58 - Part-DB1\templates\Users\_2fa_settings.html.twig:58 - tfa_google.manual_setup Configuration manuelle - - Part-DB1\templates\Users\_2fa_settings.html.twig:62 - Part-DB1\templates\Users\_2fa_settings.html.twig:62 - tfa_google.manual_setup.type Type - - Part-DB1\templates\Users\_2fa_settings.html.twig:63 - Part-DB1\templates\Users\_2fa_settings.html.twig:63 - tfa_google.manual_setup.username Nom d'utilisateur - - Part-DB1\templates\Users\_2fa_settings.html.twig:64 - Part-DB1\templates\Users\_2fa_settings.html.twig:64 - tfa_google.manual_setup.secret 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 Nombre de caractères - - Part-DB1\templates\Users\_2fa_settings.html.twig:74 - Part-DB1\templates\Users\_2fa_settings.html.twig:74 - tfa_google.enabled_message Application d'authentification activée - - Part-DB1\templates\Users\_2fa_settings.html.twig:83 - Part-DB1\templates\Users\_2fa_settings.html.twig:83 - tfa_backup.disabled Codes de secours désactivés. Configurez l'application d'authentification pour activer les codes de secours. - - 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 Grâce à ces codes de secours, vous pouvez accéder à votre compte même si vous perdez l'appareil avec l'application d'authentification. Imprimez les codes et conservez-les dans un endroit sûr. - - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - tfa_backup.reset_codes.confirm_title Etes vous sûr de vouloir réinitialiser les codes ? - - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - tfa_backup.reset_codes.confirm_message Cela permettra de supprimer tous les codes précédents et de générer un ensemble de nouveaux codes. Cela ne peut pas être annulé. N'oubliez pas d'imprimer les nouveaux codes et de les conserver dans un endroit sûr ! - - Part-DB1\templates\Users\_2fa_settings.html.twig:91 - Part-DB1\templates\Users\_2fa_settings.html.twig:91 - tfa_backup.enabled Codes de secours activés - - Part-DB1\templates\Users\_2fa_settings.html.twig:99 - Part-DB1\templates\Users\_2fa_settings.html.twig:99 - tfa_backup.show_codes Afficher les codes de secours - - Part-DB1\templates\Users\_2fa_settings.html.twig:114 - Part-DB1\templates\Users\_2fa_settings.html.twig:114 - tfa_u2f.table_caption Clés de sécurité enregistrées - - Part-DB1\templates\Users\_2fa_settings.html.twig:115 - Part-DB1\templates\Users\_2fa_settings.html.twig:115 - tfa_u2f.delete_u2f.confirm_title Etes vous sûr de vouloir supprimer cette clé de sécurité ? - - Part-DB1\templates\Users\_2fa_settings.html.twig:116 - Part-DB1\templates\Users\_2fa_settings.html.twig:116 - tfa_u2f.delete_u2f.confirm_message Si vous supprimez cette clé, il ne sera plus possible de se connecter avec cette clé. S'il ne reste aucune clé de sécurité, l'authentification à deux facteurs sera désactivée. - - Part-DB1\templates\Users\_2fa_settings.html.twig:123 - Part-DB1\templates\Users\_2fa_settings.html.twig:123 - tfa_u2f.keys.name Nom de la clé - - Part-DB1\templates\Users\_2fa_settings.html.twig:124 - Part-DB1\templates\Users\_2fa_settings.html.twig:124 - tfa_u2f.keys.added_date Date d'enregistrement - - Part-DB1\templates\Users\_2fa_settings.html.twig:134 - Part-DB1\templates\Users\_2fa_settings.html.twig:134 - tfa_u2f.key_delete Supprimer la clé - - Part-DB1\templates\Users\_2fa_settings.html.twig:141 - Part-DB1\templates\Users\_2fa_settings.html.twig:141 - tfa_u2f.no_keys_registered Aucune clé de sécurité enregistrée - - Part-DB1\templates\Users\_2fa_settings.html.twig:144 - Part-DB1\templates\Users\_2fa_settings.html.twig:144 - tfa_u2f.add_new_key Enregistrer une nouvelle clé de sécurité - - Part-DB1\templates\Users\_2fa_settings.html.twig:148 - Part-DB1\templates\Users\_2fa_settings.html.twig:148 - tfa_trustedDevices.explanation Lors de la vérification du deuxième facteur, l'ordinateur actuel peut être marqué comme étant digne de confiance, de sorte qu'il n'est plus nécessaire de procéder à des vérifications à deux facteurs sur cet ordinateur. @@ -3849,310 +2299,162 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - - Part-DB1\templates\Users\_2fa_settings.html.twig:149 - Part-DB1\templates\Users\_2fa_settings.html.twig:149 - tfa_trustedDevices.invalidate.confirm_title Etes vous sûr de vouloir supprimer tous les ordinateurs de confiance ? - - Part-DB1\templates\Users\_2fa_settings.html.twig:150 - Part-DB1\templates\Users\_2fa_settings.html.twig:150 - tfa_trustedDevices.invalidate.confirm_message Vous devrez à nouveau procéder à une authentification à deux facteurs sur tous les ordinateurs. Assurez-vous d'avoir votre appareil à deux facteurs à portée de main. - - Part-DB1\templates\Users\_2fa_settings.html.twig:154 - Part-DB1\templates\Users\_2fa_settings.html.twig:154 - tfa_trustedDevices.invalidate.btn Supprimer tous les dispositifs de confiance - - Part-DB1\templates\_navbar.html.twig:4 - Part-DB1\templates\_navbar.html.twig:4 - templates\base.html.twig:29 - sidebar.toggle Activer/désactiver la barre latérale - - Part-DB1\templates\_navbar.html.twig:22 - navbar.scanner.link Scanner - - Part-DB1\templates\_navbar.html.twig:38 - Part-DB1\templates\_navbar.html.twig:36 - templates\base.html.twig:97 - user.loggedin.label Connecté en tant que - - Part-DB1\templates\_navbar.html.twig:44 - Part-DB1\templates\_navbar.html.twig:42 - templates\base.html.twig:103 - user.login Connexion - - Part-DB1\templates\_navbar.html.twig:50 - Part-DB1\templates\_navbar.html.twig:48 - ui.toggle_darkmode Darkmode - - Part-DB1\templates\_navbar.html.twig:54 - Part-DB1\src\Form\UserSettingsType.php:97 - Part-DB1\templates\_navbar.html.twig:52 - Part-DB1\src\Form\UserSettingsType.php:97 - templates\base.html.twig:106 - src\Form\UserSettingsType.php:44 - user.language_select Langue - - Part-DB1\templates\_navbar_search.html.twig:4 - Part-DB1\templates\_navbar_search.html.twig:4 - templates\base.html.twig:49 - search.options.label Options de recherche - - Part-DB1\templates\_navbar_search.html.twig:23 - tags.label Tags - - Part-DB1\templates\_navbar_search.html.twig:27 - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - templates\base.html.twig:60 - templates\Parts\show_part_info.html.twig:36 - src\Form\PartType.php:77 - storelocation.label Emplacement de stockage - - Part-DB1\templates\_navbar_search.html.twig:36 - Part-DB1\templates\_navbar_search.html.twig:31 - templates\base.html.twig:65 - ordernumber.label.short Codecmd. - - Part-DB1\templates\_navbar_search.html.twig:40 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - Part-DB1\templates\_navbar_search.html.twig:35 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - templates\base.html.twig:67 - supplier.label Fournisseur - - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_navbar_search.html.twig:56 - templates\base.html.twig:77 - search.regexmatching Reg.Ex. Correspondance - - Part-DB1\templates\_sidebar.html.twig:2 - Part-DB1\templates\_sidebar.html.twig:2 - templates\base.html.twig:165 - templates\base.html.twig:192 - templates\base.html.twig:220 - actions Actions - - Part-DB1\templates\_sidebar.html.twig:6 - Part-DB1\templates\_sidebar.html.twig:6 - templates\base.html.twig:169 - templates\base.html.twig:196 - templates\base.html.twig:224 - datasource Source de données - - Part-DB1\templates\_sidebar.html.twig:10 - Part-DB1\templates\_sidebar.html.twig:10 - templates\base.html.twig:173 - templates\base.html.twig:200 - templates\base.html.twig:228 - manufacturer.labelp Fabricants - - Part-DB1\templates\_sidebar.html.twig:11 - Part-DB1\templates\_sidebar.html.twig:11 - templates\base.html.twig:174 - templates\base.html.twig:201 - templates\base.html.twig:229 - supplier.labelp Fournisseurs - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:213 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:293 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:293 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:181 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:243 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:268 - attachment.download_failed Le téléchargement du fichier joint a échoué ! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:222 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:190 - entity.edit_flash Changements sauvegardés avec succès. - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:231 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:196 - entity.edit_flash.invalid Les changements n'ont pas pu être sauvegardés ! Veuillez vérifier vos données ! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:302 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:252 - entity.created_flash Élément créé avec succès ! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:308 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:258 - entity.created_flash.invalid L'élément n'a pas pu être créé ! Vérifiez vos données ! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:399 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:352 - src\Controller\BaseAdminController.php:154 - attachment_type.deleted Élément supprimé ! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:401 - Part-DB1\src\Controller\UserController.php:109 - Part-DB1\src\Controller\UserSettingsController.php:159 - Part-DB1\src\Controller\UserSettingsController.php:193 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:354 - Part-DB1\src\Controller\UserController.php:101 - Part-DB1\src\Controller\UserSettingsController.php:150 - Part-DB1\src\Controller\UserSettingsController.php:182 - csfr_invalid Le jeton RFTS n'est pas valable ! Rechargez cette page ou contactez un administrateur si le problème persiste ! - - Part-DB1\src\Controller\LabelController.php:125 - label_generator.no_entities_found Aucune entité correspondant à la gamme trouvée. @@ -4160,8 +2462,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\src\Controller\LogController.php:149 - Part-DB1\src\Controller\LogController.php:154 new @@ -4171,8 +2471,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\src\Controller\LogController.php:156 - Part-DB1\src\Controller\LogController.php:160 new @@ -4182,8 +2480,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\src\Controller\LogController.php:176 - Part-DB1\src\Controller\LogController.php:180 new @@ -4193,8 +2489,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\src\Controller\LogController.php:178 - Part-DB1\src\Controller\LogController.php:182 new @@ -4204,8 +2498,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\src\Controller\LogController.php:185 - Part-DB1\src\Controller\LogController.php:189 new @@ -4215,8 +2507,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\src\Controller\LogController.php:187 - Part-DB1\src\Controller\LogController.php:191 new @@ -4226,8 +2516,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\src\Controller\LogController.php:194 - Part-DB1\src\Controller\LogController.php:198 new @@ -4237,8 +2525,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\src\Controller\LogController.php:196 - Part-DB1\src\Controller\LogController.php:200 new @@ -4248,8 +2534,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\src\Controller\LogController.php:199 - Part-DB1\src\Controller\LogController.php:203 new @@ -4258,306 +2542,168 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - - Part-DB1\src\Controller\PartController.php:182 - Part-DB1\src\Controller\PartController.php:182 - src\Controller\PartController.php:80 - part.edited_flash Changements sauvegardés ! - - Part-DB1\src\Controller\PartController.php:216 - Part-DB1\src\Controller\PartController.php:219 - part.deleted Composant supprimé avec succès. - - Part-DB1\src\Controller\PartController.php:302 - Part-DB1\src\Controller\PartController.php:277 - Part-DB1\src\Controller\PartController.php:317 - src\Controller\PartController.php:113 - src\Controller\PartController.php:142 - part.created_flash Composants créés avec succès ! - - Part-DB1\src\Controller\PartController.php:308 - Part-DB1\src\Controller\PartController.php:283 - part.created_flash.invalid Erreur lors de la création : Vérifiez vos données ! - - Part-DB1\src\Controller\ScanController.php:68 - Part-DB1\src\Controller\ScanController.php:90 - scan.qr_not_found Aucun élément trouvé pour le code-barres donné. - - Part-DB1\src\Controller\ScanController.php:71 - scan.format_unknown Format inconnu ! - - Part-DB1\src\Controller\ScanController.php:86 - scan.qr_success Élément trouvé. - - Part-DB1\src\Controller\SecurityController.php:114 - Part-DB1\src\Controller\SecurityController.php:109 - pw_reset.user_or_email Nom d'utilisateur / Email - - Part-DB1\src\Controller\SecurityController.php:131 - Part-DB1\src\Controller\SecurityController.php:126 - pw_reset.request.success Demande de mot de passe réussie ! Consultez vos e-mails pour plus d'informations. - - Part-DB1\src\Controller\SecurityController.php:162 - Part-DB1\src\Controller\SecurityController.php:160 - pw_reset.username Nom d'utilisateur - - Part-DB1\src\Controller\SecurityController.php:165 - Part-DB1\src\Controller\SecurityController.php:163 - pw_reset.token Jeton - - Part-DB1\src\Controller\SecurityController.php:194 - Part-DB1\src\Controller\SecurityController.php:192 - pw_reset.new_pw.error Nom d'utilisateur ou jeton invalide ! Veuillez vérifier vos données. - - Part-DB1\src\Controller\SecurityController.php:196 - Part-DB1\src\Controller\SecurityController.php:194 - pw_reset.new_pw.success Le mot de passe a été réinitialisé avec succès. Vous pouvez maintenant vous connecter avec le nouveau mot de passe. - - Part-DB1\src\Controller\UserController.php:107 - Part-DB1\src\Controller\UserController.php:99 - user.edit.reset_success Toutes les méthodes d'authentification à deux facteurs ont été désactivées avec succès. - - Part-DB1\src\Controller\UserSettingsController.php:101 - Part-DB1\src\Controller\UserSettingsController.php:92 - tfa_backup.no_codes_enabled Aucun code de secours n'est activé ! - - Part-DB1\src\Controller\UserSettingsController.php:138 - Part-DB1\src\Controller\UserSettingsController.php:132 - tfa_u2f.u2f_delete.not_existing Il n'y a pas de clé de sécurité avec cet ID ! - - Part-DB1\src\Controller\UserSettingsController.php:145 - Part-DB1\src\Controller\UserSettingsController.php:139 - tfa_u2f.u2f_delete.access_denied Vous ne pouvez pas supprimer les clés de sécurité des autres utilisateurs ! - - Part-DB1\src\Controller\UserSettingsController.php:153 - Part-DB1\src\Controller\UserSettingsController.php:147 - tfa.u2f.u2f_delete.success Clé de sécurité retirée avec succès. - - Part-DB1\src\Controller\UserSettingsController.php:188 - Part-DB1\src\Controller\UserSettingsController.php:180 - tfa_trustedDevice.invalidate.success Les appareils de confiance ont été réinitialisés avec succès. - - Part-DB1\src\Controller\UserSettingsController.php:235 - Part-DB1\src\Controller\UserSettingsController.php:226 - src\Controller\UserController.php:98 - user.settings.saved_flash Paramètres sauvegardés ! - - Part-DB1\src\Controller\UserSettingsController.php:297 - Part-DB1\src\Controller\UserSettingsController.php:288 - src\Controller\UserController.php:130 - user.settings.pw_changed_flash Mot de passe changé ! - - Part-DB1\src\Controller\UserSettingsController.php:317 - Part-DB1\src\Controller\UserSettingsController.php:306 - user.settings.2fa.google.activated L'application d'authentification a été activée avec succès. - - Part-DB1\src\Controller\UserSettingsController.php:328 - Part-DB1\src\Controller\UserSettingsController.php:315 - user.settings.2fa.google.disabled L'application d'authentification a été désactivée avec succès. - - Part-DB1\src\Controller\UserSettingsController.php:346 - Part-DB1\src\Controller\UserSettingsController.php:332 - user.settings.2fa.backup_codes.regenerated De nouveaux codes de secours ont été générés avec succès. - - Part-DB1\src\DataTables\AttachmentDataTable.php:153 - Part-DB1\src\DataTables\AttachmentDataTable.php:153 - attachment.table.filesize Taille du fichier - - 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 Vrai - - 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 Faux - - Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:128 - Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:119 - log.target_deleted Cible supprimée. @@ -4565,8 +2711,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\src\DataTables\Column\RevertLogColumn.php:57 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:60 new @@ -4576,8 +2720,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\src\DataTables\Column\RevertLogColumn.php:63 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:66 new @@ -4587,8 +2729,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\src\DataTables\Column\RevertLogColumn.php:83 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:86 new @@ -4597,70 +2737,42 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - - 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 Horodatage - - Part-DB1\src\DataTables\LogDataTable.php:183 - Part-DB1\src\DataTables\LogDataTable.php:171 - log.type Type - - Part-DB1\src\DataTables\LogDataTable.php:191 - Part-DB1\src\DataTables\LogDataTable.php:179 - log.level Niveau - - Part-DB1\src\DataTables\LogDataTable.php:200 - Part-DB1\src\DataTables\LogDataTable.php:188 - log.user Utilisateur - - Part-DB1\src\DataTables\LogDataTable.php:213 - Part-DB1\src\DataTables\LogDataTable.php:201 - log.target_type Type de cible - - Part-DB1\src\DataTables\LogDataTable.php:226 - Part-DB1\src\DataTables\LogDataTable.php:214 - log.target Cible @@ -4668,8 +2780,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\src\DataTables\LogDataTable.php:231 - Part-DB1\src\DataTables\LogDataTable.php:218 new @@ -4678,100 +2788,60 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - - Part-DB1\src\DataTables\PartsDataTable.php:168 - Part-DB1\src\DataTables\PartsDataTable.php:116 - part.table.name Nom - - 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 Description - - Part-DB1\src\DataTables\PartsDataTable.php:185 - Part-DB1\src\DataTables\PartsDataTable.php:133 - part.table.category Catégorie - - Part-DB1\src\DataTables\PartsDataTable.php:190 - Part-DB1\src\DataTables\PartsDataTable.php:138 - part.table.footprint Empreinte - - Part-DB1\src\DataTables\PartsDataTable.php:194 - Part-DB1\src\DataTables\PartsDataTable.php:142 - part.table.manufacturer Fabricant - - Part-DB1\src\DataTables\PartsDataTable.php:197 - Part-DB1\src\DataTables\PartsDataTable.php:145 - part.table.storeLocations Emplacement de stockage - - Part-DB1\src\DataTables\PartsDataTable.php:216 - Part-DB1\src\DataTables\PartsDataTable.php:164 - part.table.amount Quantité - - Part-DB1\src\DataTables\PartsDataTable.php:224 - Part-DB1\src\DataTables\PartsDataTable.php:172 - part.table.minamount Quantité min. - - Part-DB1\src\DataTables\PartsDataTable.php:232 - Part-DB1\src\DataTables\PartsDataTable.php:180 - part.table.partUnit Unité de mesure @@ -4784,864 +2854,522 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - - Part-DB1\src\DataTables\PartsDataTable.php:236 - Part-DB1\src\DataTables\PartsDataTable.php:184 - part.table.addedDate Créé le - - Part-DB1\src\DataTables\PartsDataTable.php:240 - Part-DB1\src\DataTables\PartsDataTable.php:188 - part.table.lastModified Dernière modification - - Part-DB1\src\DataTables\PartsDataTable.php:244 - Part-DB1\src\DataTables\PartsDataTable.php:192 - part.table.needsReview Révision nécessaire - - Part-DB1\src\DataTables\PartsDataTable.php:251 - Part-DB1\src\DataTables\PartsDataTable.php:199 - part.table.favorite Favoris - - Part-DB1\src\DataTables\PartsDataTable.php:258 - Part-DB1\src\DataTables\PartsDataTable.php:206 - part.table.manufacturingStatus État - - 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 Inconnu - - 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 Annoncé - - 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 Actif - - 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 Non recommandé pour les nouvelles conceptions - - 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 Fin de vie - - 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 Arrêtés - - 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 Poids - - Part-DB1\src\DataTables\PartsDataTable.php:279 - Part-DB1\src\DataTables\PartsDataTable.php:227 - part.table.tags Tags - - Part-DB1\src\DataTables\PartsDataTable.php:283 - Part-DB1\src\DataTables\PartsDataTable.php:231 - part.table.attachments Fichiers joints - - Part-DB1\src\EventSubscriber\UserSystem\LoginSuccessSubscriber.php:82 - Part-DB1\src\EventSubscriber\LoginSuccessListener.php:82 - flash.login_successful Connexion réussie. - - 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 Si cette option est activée, l'ensemble du processus est interrompu si des données non valides sont détectées. Si cette option n'est pas active, les entrées non valides sont ignorées et une tentative est faite pour importer les autres entrées. - - Part-DB1\src\Form\AdminPages\ImportType.php:86 - Part-DB1\src\Form\AdminPages\ImportType.php:86 - src\Form\ImportType.php:70 - import.csv_separator Séparateur CSV - - Part-DB1\src\Form\AdminPages\ImportType.php:93 - Part-DB1\src\Form\AdminPages\ImportType.php:93 - src\Form\ImportType.php:72 - parent.label Élément parent - - Part-DB1\src\Form\AdminPages\ImportType.php:101 - Part-DB1\src\Form\AdminPages\ImportType.php:101 - src\Form\ImportType.php:75 - import.file Fichier - - Part-DB1\src\Form\AdminPages\ImportType.php:111 - Part-DB1\src\Form\AdminPages\ImportType.php:111 - src\Form\ImportType.php:78 - import.preserve_children Importer également des sous-éléments - - 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 Interrompre sur donnée invalide - - Part-DB1\src\Form\AdminPages\ImportType.php:132 - Part-DB1\src\Form\AdminPages\ImportType.php:132 - src\Form\ImportType.php:85 - import.btn Importer - - Part-DB1\src\Form\AttachmentFormType.php:113 - Part-DB1\src\Form\AttachmentFormType.php:109 - attachment.edit.secure_file.help Un fichier joint marqué comme étant privé ne peut être consulté que par un utilisateur connecté qui a l'autorisation appropriée. Si cette option est activée, aucune miniature n'est générée et l'accès au fichier est plus lent. - - Part-DB1\src\Form\AttachmentFormType.php:127 - Part-DB1\src\Form\AttachmentFormType.php:123 - attachment.edit.url.help Il est possible de saisir ici soit l'URL d'un fichier externe, soit un mot clé pour rechercher les ressources intégrées (par exemple les empreintes). - - Part-DB1\src\Form\AttachmentFormType.php:82 - Part-DB1\src\Form\AttachmentFormType.php:79 - attachment.edit.name Nom - - Part-DB1\src\Form\AttachmentFormType.php:85 - Part-DB1\src\Form\AttachmentFormType.php:82 - attachment.edit.attachment_type Type de fichier joint - - Part-DB1\src\Form\AttachmentFormType.php:94 - Part-DB1\src\Form\AttachmentFormType.php:91 - attachment.edit.show_in_table Voir dans le tableau - - Part-DB1\src\Form\AttachmentFormType.php:105 - Part-DB1\src\Form\AttachmentFormType.php:102 - attachment.edit.secure_file Fichier joint privé - - 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 Télécharger un fichier externe - - Part-DB1\src\Form\AttachmentFormType.php:146 - Part-DB1\src\Form\AttachmentFormType.php:142 - attachment.edit.file Télécharger le fichier - - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:86 - part.label Composant - - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:87 - part_lot.label Lot de composant - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.none Aucun - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.qr QR Code (recommandé) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code128 Code 128 (recommandé) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code39 Code 39 (recommandé) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code93 Code 93 - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.datamatrix Datamatrix - - Part-DB1\src\Form\LabelOptionsType.php:122 - label_options.lines_mode.html Placeholders - - 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 Si vous sélectionnez Twig ici, le champ de contenu est interprété comme un modèle Twig. Voir <a href="https://twig.symfony.com/doc/3.x/templates.html">Documentation de Twig</a> et <a href="https://github.com/Part-DB/Part-DB-symfony/wiki/Labels#twig-mode">Wiki</a> pour plus d'informations. - - Part-DB1\src\Form\LabelOptionsType.php:47 - label_options.page_size.label Taille de l'étiquette - - Part-DB1\src\Form\LabelOptionsType.php:66 - label_options.supported_elements.label Type de cible - - Part-DB1\src\Form\LabelOptionsType.php:75 - label_options.barcode_type.label Code barre - - Part-DB1\src\Form\LabelOptionsType.php:102 - label_profile.lines.label Contenu - - Part-DB1\src\Form\LabelOptionsType.php:111 - label_options.additional_css.label Styles supplémentaires (CSS) - - Part-DB1\src\Form\LabelOptionsType.php:120 - label_options.lines_mode.label Parser mode - - Part-DB1\src\Form\LabelOptionsType.php:51 - label_options.width.placeholder Largeur - - Part-DB1\src\Form\LabelOptionsType.php:60 - label_options.height.placeholder Hauteur - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:49 - label_generator.target_id.range_hint Vous pouvez spécifier ici plusieurs ID (par exemple 1,2,3) et/ou une plage (1-3) pour générer des étiquettes pour plusieurs éléments à la fois. - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:46 - label_generator.target_id.label ID des cibles - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:59 - label_generator.update Actualisation - - Part-DB1\src\Form\LabelSystem\ScanDialogType.php:36 - scan_dialog.input Saisie - - Part-DB1\src\Form\LabelSystem\ScanDialogType.php:44 - scan_dialog.submit Soumettre - - Part-DB1\src\Form\ParameterType.php:41 - parameters.name.placeholder ex. Gain de courant DC - - Part-DB1\src\Form\ParameterType.php:50 - parameters.symbol.placeholder ex. h_{FE} - - Part-DB1\src\Form\ParameterType.php:60 - parameters.text.placeholder ex. Test conditions - - Part-DB1\src\Form\ParameterType.php:71 - parameters.max.placeholder ex. 350 - - Part-DB1\src\Form\ParameterType.php:82 - parameters.min.placeholder ex. 100 - - Part-DB1\src\Form\ParameterType.php:93 - parameters.typical.placeholder ex. 200 - - Part-DB1\src\Form\ParameterType.php:103 - parameters.unit.placeholder ex. V - - Part-DB1\src\Form\ParameterType.php:114 - parameter.group.placeholder ex. Spécifications techniques - - Part-DB1\src\Form\Part\OrderdetailType.php:72 - Part-DB1\src\Form\Part\OrderdetailType.php:75 - orderdetails.edit.supplierpartnr Numéro de commande - - Part-DB1\src\Form\Part\OrderdetailType.php:81 - Part-DB1\src\Form\Part\OrderdetailType.php:84 - orderdetails.edit.supplier Fournisseur - - Part-DB1\src\Form\Part\OrderdetailType.php:87 - Part-DB1\src\Form\Part\OrderdetailType.php:90 - orderdetails.edit.url Lien vers l'offre - - Part-DB1\src\Form\Part\OrderdetailType.php:93 - Part-DB1\src\Form\Part\OrderdetailType.php:96 - orderdetails.edit.obsolete Plus disponible - - Part-DB1\src\Form\Part\OrderdetailType.php:75 - Part-DB1\src\Form\Part\OrderdetailType.php:78 - orderdetails.edit.supplierpartnr.placeholder Ex. BC 547C - - Part-DB1\src\Form\Part\PartBaseType.php:101 - Part-DB1\src\Form\Part\PartBaseType.php:99 - part.edit.name Nom - - Part-DB1\src\Form\Part\PartBaseType.php:109 - Part-DB1\src\Form\Part\PartBaseType.php:107 - part.edit.description Description - - Part-DB1\src\Form\Part\PartBaseType.php:120 - Part-DB1\src\Form\Part\PartBaseType.php:118 - part.edit.mininstock Stock minimum - - Part-DB1\src\Form\Part\PartBaseType.php:129 - Part-DB1\src\Form\Part\PartBaseType.php:127 - part.edit.category Catégories - - Part-DB1\src\Form\Part\PartBaseType.php:135 - Part-DB1\src\Form\Part\PartBaseType.php:133 - part.edit.footprint Empreinte - - Part-DB1\src\Form\Part\PartBaseType.php:142 - Part-DB1\src\Form\Part\PartBaseType.php:140 - part.edit.tags Tags - - Part-DB1\src\Form\Part\PartBaseType.php:154 - Part-DB1\src\Form\Part\PartBaseType.php:152 - part.edit.manufacturer.label Fabricant - - Part-DB1\src\Form\Part\PartBaseType.php:161 - Part-DB1\src\Form\Part\PartBaseType.php:159 - part.edit.manufacturer_url.label Lien vers la page du produit - - Part-DB1\src\Form\Part\PartBaseType.php:167 - Part-DB1\src\Form\Part\PartBaseType.php:165 - part.edit.mpn Numéro de pièce du fabricant - - Part-DB1\src\Form\Part\PartBaseType.php:173 - Part-DB1\src\Form\Part\PartBaseType.php:171 - part.edit.manufacturing_status État de la fabrication - - Part-DB1\src\Form\Part\PartBaseType.php:181 - Part-DB1\src\Form\Part\PartBaseType.php:179 - part.edit.needs_review Révision nécessaire - - Part-DB1\src\Form\Part\PartBaseType.php:189 - Part-DB1\src\Form\Part\PartBaseType.php:187 - part.edit.is_favorite Favoris - - Part-DB1\src\Form\Part\PartBaseType.php:197 - Part-DB1\src\Form\Part\PartBaseType.php:195 - part.edit.mass Poids - - Part-DB1\src\Form\Part\PartBaseType.php:203 - Part-DB1\src\Form\Part\PartBaseType.php:201 - part.edit.partUnit Unité de mesure @@ -5654,277 +3382,162 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - - Part-DB1\src\Form\Part\PartBaseType.php:212 - Part-DB1\src\Form\Part\PartBaseType.php:210 - part.edit.comment Commentaire - - Part-DB1\src\Form\Part\PartBaseType.php:250 - Part-DB1\src\Form\Part\PartBaseType.php:246 - part.edit.master_attachment Miniature - - Part-DB1\src\Form\Part\PartBaseType.php:295 - Part-DB1\src\Form\Part\PartBaseType.php:276 - src\Form\PartType.php:91 - part.edit.save Sauvegarder les modifications - - Part-DB1\src\Form\Part\PartBaseType.php:296 - Part-DB1\src\Form\Part\PartBaseType.php:277 - src\Form\PartType.php:92 - part.edit.reset rejeter les modifications - - Part-DB1\src\Form\Part\PartBaseType.php:105 - Part-DB1\src\Form\Part\PartBaseType.php:103 - part.edit.name.placeholder Ex. BC547 - - Part-DB1\src\Form\Part\PartBaseType.php:115 - Part-DB1\src\Form\Part\PartBaseType.php:113 - part.edit.description.placeholder Ex. NPN 45V, 0,1A, 0,5W - - Part-DB1\src\Form\Part\PartBaseType.php:123 - Part-DB1\src\Form\Part\PartBaseType.php:121 - part.editmininstock.placeholder Ex. 1 - - Part-DB1\src\Form\Part\PartLotType.php:69 - Part-DB1\src\Form\Part\PartLotType.php:69 - part_lot.edit.description Description - - Part-DB1\src\Form\Part\PartLotType.php:78 - Part-DB1\src\Form\Part\PartLotType.php:78 - part_lot.edit.location Emplacement de stockage - - Part-DB1\src\Form\Part\PartLotType.php:89 - Part-DB1\src\Form\Part\PartLotType.php:89 - part_lot.edit.amount Quantité - - Part-DB1\src\Form\Part\PartLotType.php:98 - Part-DB1\src\Form\Part\PartLotType.php:97 - part_lot.edit.instock_unknown Quantité inconnue - - Part-DB1\src\Form\Part\PartLotType.php:109 - Part-DB1\src\Form\Part\PartLotType.php:108 - part_lot.edit.needs_refill Doit être rempli - - Part-DB1\src\Form\Part\PartLotType.php:120 - Part-DB1\src\Form\Part\PartLotType.php:119 - part_lot.edit.expiration_date Date d'expiration - - Part-DB1\src\Form\Part\PartLotType.php:128 - Part-DB1\src\Form\Part\PartLotType.php:125 - part_lot.edit.comment Commentaire - - Part-DB1\src\Form\Permissions\PermissionsType.php:99 - Part-DB1\src\Form\Permissions\PermissionsType.php:99 - perm.group.other Divers - - Part-DB1\src\Form\TFAGoogleSettingsType.php:97 - Part-DB1\src\Form\TFAGoogleSettingsType.php:97 - tfa_google.enable Activer l'application d'authentification - - Part-DB1\src\Form\TFAGoogleSettingsType.php:101 - Part-DB1\src\Form\TFAGoogleSettingsType.php:101 - tfa_google.disable Désactiver l'application d'authentification - - Part-DB1\src\Form\TFAGoogleSettingsType.php:74 - Part-DB1\src\Form\TFAGoogleSettingsType.php:74 - google_confirmation Code de confirmation - - Part-DB1\src\Form\UserSettingsType.php:108 - Part-DB1\src\Form\UserSettingsType.php:108 - src\Form\UserSettingsType.php:46 - user.timezone.label Fuseau horaire - - Part-DB1\src\Form\UserSettingsType.php:133 - Part-DB1\src\Form\UserSettingsType.php:132 - user.currency.label Devise préférée - - Part-DB1\src\Form\UserSettingsType.php:140 - Part-DB1\src\Form\UserSettingsType.php:139 - src\Form\UserSettingsType.php:53 - save Appliquer les modifications - - Part-DB1\src\Form\UserSettingsType.php:141 - Part-DB1\src\Form\UserSettingsType.php:140 - src\Form\UserSettingsType.php:54 - reset Rejeter les modifications - - Part-DB1\src\Form\UserSettingsType.php:104 - Part-DB1\src\Form\UserSettingsType.php:104 - src\Form\UserSettingsType.php:45 - user_settings.language.placeholder Langue du serveur - - Part-DB1\src\Form\UserSettingsType.php:115 - Part-DB1\src\Form\UserSettingsType.php:115 - src\Form\UserSettingsType.php:48 - user_settings.timezone.placeholder Fuseau horaire du serveur - - Part-DB1\src\Services\ElementTypeNameGenerator.php:79 - Part-DB1\src\Services\ElementTypeNameGenerator.php:79 - attachment.label Fichier joint - - Part-DB1\src\Services\ElementTypeNameGenerator.php:81 - Part-DB1\src\Services\ElementTypeNameGenerator.php:81 - attachment_type.label Type de fichier joint - - Part-DB1\src\Services\ElementTypeNameGenerator.php:85 - Part-DB1\src\Services\ElementTypeNameGenerator.php:85 - measurement_unit.label Unité de mesure @@ -5937,58 +3550,36 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - - Part-DB1\src\Services\ElementTypeNameGenerator.php:90 - Part-DB1\src\Services\ElementTypeNameGenerator.php:90 - currency.label Devise - - Part-DB1\src\Services\ElementTypeNameGenerator.php:91 - Part-DB1\src\Services\ElementTypeNameGenerator.php:91 - orderdetail.label Informations de commande - - Part-DB1\src\Services\ElementTypeNameGenerator.php:92 - Part-DB1\src\Services\ElementTypeNameGenerator.php:92 - pricedetail.label Informations sur les prix - - Part-DB1\src\Services\ElementTypeNameGenerator.php:94 - Part-DB1\src\Services\ElementTypeNameGenerator.php:94 - user.label Utilisateur - - Part-DB1\src\Services\ElementTypeNameGenerator.php:95 - parameter.label Caractéristique - - Part-DB1\src\Services\ElementTypeNameGenerator.php:96 - label_profile.label Profil d'étiquette @@ -5996,8 +3587,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:176 - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:161 new @@ -6006,163 +3595,96 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - - Part-DB1\src\Services\MarkdownParser.php:73 - Part-DB1\src\Services\MarkdownParser.php:73 - markdown.loading Chargement de la remise. Si ce message ne disparaît pas, essayez de recharger la page. - - Part-DB1\src\Services\PasswordResetManager.php:98 - Part-DB1\src\Services\PasswordResetManager.php:98 - pw_reset.email.subject Réinitialisation du mot de passe de votre compte Part-DB - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 - tree.tools.tools Outils - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:107 - src\Services\ToolsTreeBuilder.php:74 - tree.tools.edit Éditer - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:110 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 - src\Services\ToolsTreeBuilder.php:81 - tree.tools.show Afficher - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:111 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 - tree.tools.system Système - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:123 - tree.tools.tools.label_dialog Générateur d'étiquettes - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:130 - tree.tools.tools.label_scanner 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 Types de fichier joint - - 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 Catégories - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:167 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:144 - src\Services\ToolsTreeBuilder.php:68 - tree.tools.edit.suppliers Fournisseurs - - 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 Fabricants - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:179 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:156 - tree.tools.edit.storelocation Emplacements de stockage - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:185 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:162 - tree.tools.edit.footprint Empreintes - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:191 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:168 - tree.tools.edit.currency Devises - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:174 - tree.tools.edit.measurement_unit Unité de mesure @@ -6175,40 +3697,24 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 - tree.tools.edit.label_profile Profils d'étiquettes - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:209 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:180 - tree.tools.edit.part Composant - - 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 Voir tous les composants - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:232 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 - tree.tools.show.all_attachments Fichiers joints @@ -6216,8 +3722,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:239 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:210 new @@ -6226,20 +3730,12 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:258 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:229 - tree.tools.system.users Utilisateurs - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:264 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:235 - tree.tools.system.groups Groupes @@ -6247,8 +3743,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:271 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:242 new @@ -6257,11 +3751,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - src\Services\TreeBuilder.php:124 - entity.tree.new Nouvel élément @@ -6269,7 +3758,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 obsolete @@ -6279,8 +3767,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\templates\_navbar.html.twig:27 - templates\base.html.twig:88 obsolete @@ -6290,8 +3776,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\src\Form\UserSettingsType.php:119 - src\Form\UserSettingsType.php:49 obsolete @@ -6301,8 +3785,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\src\Form\UserSettingsType.php:129 - src\Form\UserSettingsType.php:50 obsolete @@ -6312,7 +3794,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:100 new obsolete @@ -6323,10 +3804,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - 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 @@ -6337,10 +3814,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - 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 @@ -6351,7 +3824,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:139 new obsolete @@ -6362,7 +3834,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:160 new obsolete @@ -6373,7 +3844,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:184 new obsolete @@ -6384,7 +3854,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:198 new obsolete @@ -6395,7 +3864,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:214 new obsolete @@ -6406,7 +3874,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - templates\base.html.twig:81 obsolete obsolete @@ -6417,7 +3884,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - templates\base.html.twig:109 obsolete obsolete @@ -6428,7 +3894,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - templates\base.html.twig:112 obsolete obsolete @@ -6719,7 +4184,6 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia - src\Form\PartType.php:63 obsolete obsolete @@ -7389,7 +4853,6 @@ exemple de ville - templates\Parts\show_part_info.html.twig:194 obsolete obsolete @@ -7400,7 +4863,6 @@ exemple de ville - src\Form\PartType.php:83 obsolete obsolete @@ -9076,4 +6538,4 @@ exemple de ville - + \ No newline at end of file diff --git a/translations/messages.hu.xlf b/translations/messages.hu.xlf index a7a56611..ba47c2e2 100644 --- a/translations/messages.hu.xlf +++ b/translations/messages.hu.xlf @@ -2,11 +2,6 @@ - - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - attachment_type.caption Mellékletek fájltípusai @@ -14,7 +9,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:12 new @@ -24,7 +18,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:16 new @@ -33,45 +26,18 @@ - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - templates\AdminPages\CategoryAdmin.html.twig:4 - templates\base.html.twig:163 - templates\base.html.twig:170 - templates\base.html.twig:197 - templates\base.html.twig:225 - category.labelp Kategóriák - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:19 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:11 - templates\AdminPages\CategoryAdmin.html.twig:8 - admin.options Beállítások - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - templates\AdminPages\CategoryAdmin.html.twig:9 - admin.advanced Speciális @@ -79,7 +45,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:13 new @@ -89,7 +54,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:17 new @@ -98,30 +62,18 @@ - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - currency.caption Pénznem - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - currency.iso_code.caption ISO code - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - currency.symbol.caption Pénznem szimbólum @@ -129,7 +81,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:29 new @@ -139,7 +90,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:33 new @@ -149,7 +99,6 @@ - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 new @@ -159,7 +108,6 @@ - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:12 new @@ -168,89 +116,36 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Keresés - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - templates\AdminPages\EntityAdminBase.html.twig:13 - templates\base.html.twig:166 - templates\base.html.twig:193 - templates\base.html.twig:221 - expandAll Összes kibontása - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - templates\AdminPages\EntityAdminBase.html.twig:17 - templates\base.html.twig:167 - templates\base.html.twig:194 - templates\base.html.twig:222 - reduceAll Összes összecsukása - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - part.info.timetravel_hint Így nézett ki az alkatrész %timestamp% előtt. <i>Kérjük, vedd figyelembe, hogy ez a funkció kísérleti, így az információk nem biztos, hogy helyesek.</i> - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - templates\AdminPages\EntityAdminBase.html.twig:42 - standard.label Tulajdonságok - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - templates\AdminPages\EntityAdminBase.html.twig:43 - infos.label Információ @@ -258,8 +153,6 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 new @@ -268,120 +161,66 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - templates\AdminPages\EntityAdminBase.html.twig:45 - export.label Exportálás - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - templates\AdminPages\EntityAdminBase.html.twig:47 - import_export.label Importálás / Exportálás - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - mass_creation.label Tömeges létrehozás - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - templates\AdminPages\EntityAdminBase.html.twig:59 - admin.common Általános - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - admin.attachments Mellékletek - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:90 - admin.parameters Paraméterek - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:179 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:167 - templates\AdminPages\EntityAdminBase.html.twig:142 - export_all.label Összes elem exportálása - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:185 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:173 - mass_creation.help Minden sor egy elem neveként lesz értelmezve, amely létrejön. Behúzásokkal hierarchikus struktúrákat hozhatsz létre. - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - templates\AdminPages\EntityAdminBase.html.twig:35 - edit.caption "%name" elem szerkesztése - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - templates\AdminPages\EntityAdminBase.html.twig:37 - new.caption Új elem - - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - templates\base.html.twig:172 - templates\base.html.twig:199 - templates\base.html.twig:227 - footprint.labelp Lábnyomok @@ -389,7 +228,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:13 new @@ -399,7 +237,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:17 new @@ -408,22 +245,12 @@ - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - group.edit.caption Csoportok - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - user.edit.permissions Engedélyek @@ -431,7 +258,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:24 new @@ -441,7 +267,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:28 new @@ -450,27 +275,18 @@ - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:4 - label_profile.caption Címkeprofilok - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:8 - label_profile.advanced Speciális - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:9 - label_profile.comment Jegyzetek @@ -478,7 +294,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:55 new @@ -488,7 +303,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:59 new @@ -497,11 +311,6 @@ - - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - templates\AdminPages\ManufacturerAdmin.html.twig:4 - manufacturer.caption Gyártók @@ -509,7 +318,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:8 new @@ -519,7 +327,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:12 new @@ -528,25 +335,12 @@ - - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - measurement_unit.caption Mértékegység - - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:5 - Part-DB1\templates\_sidebar.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:8 - templates\base.html.twig:171 - templates\base.html.twig:198 - templates\base.html.twig:226 - storelocation.labelp Tárolási helyszínek @@ -554,7 +348,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:32 new @@ -564,7 +357,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:36 new @@ -574,7 +366,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 new @@ -584,7 +375,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:20 new @@ -593,130 +383,72 @@ - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - user.edit.caption Felhasználók - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - user.edit.configuration Konfiguráció - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - user.edit.password Jelszó - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - user.edit.tfa.caption Kétfaktoros hitelesítés - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - user.edit.tfa.google_active Hitelesítő alkalmazás aktív - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - tfa_backup.remaining_tokens Hátralévő biztonsági kódok száma - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - tfa_backup.generation_date Biztonsági kódok generálásának dátuma - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - user.edit.tfa.disabled A módszer nincs engedélyezve - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - user.edit.tfa.u2f_keys_count Aktív biztonsági kulcsok - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_title Valóban folytatni szeretnéd? - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_message Ez letiltja <b>a felhasználó összes aktív kétfaktoros hitelesítési módszerét</b> és törli a <b>biztonsági kódokat</b>! - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - user.edit.tfa.disable_tfa.btn Összes kétfaktoros hitelesítési módszer letiltása @@ -724,7 +456,6 @@ - Part-DB1\templates\AdminPages\UserAdmin.html.twig:85 new @@ -734,7 +465,6 @@ - Part-DB1\templates\AdminPages\UserAdmin.html.twig:89 new @@ -743,13 +473,6 @@ - - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:63 - attachment.delete Törlés @@ -762,113 +485,54 @@ - - Part-DB1\templates\AdminPages\_attachments.html.twig:49 - Part-DB1\templates\Parts\edit\_attachments.html.twig:47 - Part-DB1\templates\AdminPages\_attachments.html.twig:47 - Part-DB1\templates\Parts\edit\_attachments.html.twig:45 - attachment.preview.alt Melléklet miniatűr - - Part-DB1\templates\AdminPages\_attachments.html.twig:52 - Part-DB1\templates\Parts\edit\_attachments.html.twig:50 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 - Part-DB1\templates\AdminPages\_attachments.html.twig:50 - Part-DB1\templates\Parts\edit\_attachments.html.twig:48 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:45 - attachment.view_local Helyi másolat megtekintése - - Part-DB1\templates\AdminPages\_attachments.html.twig:58 - Part-DB1\templates\Parts\edit\_attachments.html.twig:56 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:43 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - Part-DB1\templates\AdminPages\_attachments.html.twig:56 - Part-DB1\templates\Parts\edit\_attachments.html.twig:54 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - attachment.file_not_found Fájl nem található - - Part-DB1\templates\AdminPages\_attachments.html.twig:66 - Part-DB1\templates\Parts\edit\_attachments.html.twig:64 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:48 - Part-DB1\templates\Parts\edit\_attachments.html.twig:62 - attachment.secure Privát melléklet - - Part-DB1\templates\AdminPages\_attachments.html.twig:79 - Part-DB1\templates\Parts\edit\_attachments.html.twig:77 - Part-DB1\templates\AdminPages\_attachments.html.twig:77 - Part-DB1\templates\Parts\edit\_attachments.html.twig:75 - attachment.create Melléklet hozzáadása - - Part-DB1\templates\AdminPages\_attachments.html.twig:84 - Part-DB1\templates\Parts\edit\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - Part-DB1\templates\AdminPages\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_attachments.html.twig:80 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - part_lot.edit.delete.confirm Valóban törölni szeretnéd ezt a készletet? Ez nem vonható vissza! - - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - templates\AdminPages\_delete_form.html.twig:2 - entity.delete.confirm_title Valóban törölni szeretnéd a(z) %name% elemet? - - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - templates\AdminPages\_delete_form.html.twig:3 - entity.delete.message Ez nem vonható vissza! - - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - templates\AdminPages\_delete_form.html.twig:9 - entity.delete Elem törlése @@ -876,12 +540,6 @@ - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:45 - Part-DB1\src\Form\Part\PartBaseType.php:286 - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:43 - Part-DB1\src\Form\Part\PartBaseType.php:267 new @@ -890,561 +548,300 @@ - - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - templates\AdminPages\_delete_form.html.twig:12 - entity.delete.recursive Rekurzív törlés (összes alárendelt elem) - - Part-DB1\templates\AdminPages\_duplicate.html.twig:3 - entity.duplicate Elem duplikálása - - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - templates\AdminPages\_export_form.html.twig:4 - src\Form\ImportType.php:67 - export.format Fájlformátum - - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - templates\AdminPages\_export_form.html.twig:16 - export.level Részletességi szint - - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - templates\AdminPages\_export_form.html.twig:19 - export.level.simple Egyszerű - - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - templates\AdminPages\_export_form.html.twig:20 - export.level.extended Bővített - - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - templates\AdminPages\_export_form.html.twig:21 - export.level.full Teljes - - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - templates\AdminPages\_export_form.html.twig:31 - export.include_children Gyermek elemek belefoglalása az exportálásba - - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - templates\AdminPages\_export_form.html.twig:39 - export.btn Exportálás - - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - templates\AdminPages\EntityAdminBase.html.twig:94 - templates\Parts\edit_part_info.html.twig:12 - templates\Parts\show_part_info.html.twig:11 - id.label ID - - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:76 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:77 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:77 - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:59 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:60 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:53 - templates\AdminPages\EntityAdminBase.html.twig:101 - templates\Parts\show_part_info.html.twig:248 - createdAt Létrehozva - - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:73 - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:49 - templates\AdminPages\EntityAdminBase.html.twig:114 - templates\Parts\show_part_info.html.twig:263 - lastModified Utolsó módosítás - - Part-DB1\templates\AdminPages\_info.html.twig:38 - Part-DB1\templates\AdminPages\_info.html.twig:38 - entity.info.parts_count Az ezzel az elemmel rendelkező alkatrészek száma - - Part-DB1\templates\AdminPages\_parameters.html.twig:6 - Part-DB1\templates\helper.twig:125 - Part-DB1\templates\Parts\edit\_specifications.html.twig:6 - specifications.property Paraméter - - Part-DB1\templates\AdminPages\_parameters.html.twig:7 - Part-DB1\templates\Parts\edit\_specifications.html.twig:7 - specifications.symbol Szimbólum - - Part-DB1\templates\AdminPages\_parameters.html.twig:8 - Part-DB1\templates\Parts\edit\_specifications.html.twig:8 - specifications.value_min Min. - - Part-DB1\templates\AdminPages\_parameters.html.twig:9 - Part-DB1\templates\Parts\edit\_specifications.html.twig:9 - specifications.value_typ Tip. - - Part-DB1\templates\AdminPages\_parameters.html.twig:10 - Part-DB1\templates\Parts\edit\_specifications.html.twig:10 - specifications.value_max Max. - - Part-DB1\templates\AdminPages\_parameters.html.twig:11 - Part-DB1\templates\Parts\edit\_specifications.html.twig:11 - specifications.unit Egység - - Part-DB1\templates\AdminPages\_parameters.html.twig:12 - Part-DB1\templates\Parts\edit\_specifications.html.twig:12 - specifications.text Szöveg - - Part-DB1\templates\AdminPages\_parameters.html.twig:13 - Part-DB1\templates\Parts\edit\_specifications.html.twig:13 - specifications.group Csoport - - Part-DB1\templates\AdminPages\_parameters.html.twig:26 - Part-DB1\templates\Parts\edit\_specifications.html.twig:26 - specification.create Új paraméter - - Part-DB1\templates\AdminPages\_parameters.html.twig:31 - Part-DB1\templates\Parts\edit\_specifications.html.twig:31 - parameter.delete.confirm Valóban törölni szeretnéd ezt a paramétert? - - Part-DB1\templates\attachment_list.html.twig:3 - Part-DB1\templates\attachment_list.html.twig:3 - attachment.list.title Mellékletek listája - - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - part_list.loading.caption Betöltés - - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - part_list.loading.message Ez eltarthat egy ideig. Ha ez az üzenet nem tűnik el, próbáld meg újratölteni az oldalt. - - Part-DB1\templates\base.html.twig:68 - Part-DB1\templates\base.html.twig:68 - templates\base.html.twig:246 - vendor.base.javascript_hint Kérjük, aktiváld a Javascriptet az összes funkció használatához! - - Part-DB1\templates\base.html.twig:73 - Part-DB1\templates\base.html.twig:73 - sidebar.big.toggle Oldalsáv megjelenítése/elrejtése - - Part-DB1\templates\base.html.twig:95 - Part-DB1\templates\base.html.twig:95 - templates\base.html.twig:271 - loading.caption Betöltés: - - Part-DB1\templates\base.html.twig:96 - Part-DB1\templates\base.html.twig:96 - templates\base.html.twig:272 - loading.message Ez eltarthat egy ideig. Ha ez az üzenet sokáig megmarad, próbáld meg újratölteni az oldalt. - - Part-DB1\templates\base.html.twig:101 - Part-DB1\templates\base.html.twig:101 - templates\base.html.twig:277 - loading.bar Betöltés... - - Part-DB1\templates\base.html.twig:112 - Part-DB1\templates\base.html.twig:112 - templates\base.html.twig:288 - back_to_top Vissza az oldal tetejére - - Part-DB1\templates\Form\permissionLayout.html.twig:35 - Part-DB1\templates\Form\permissionLayout.html.twig:35 - permission.edit.permission Engedélyek - - Part-DB1\templates\Form\permissionLayout.html.twig:36 - Part-DB1\templates\Form\permissionLayout.html.twig:36 - permission.edit.value Érték - - Part-DB1\templates\Form\permissionLayout.html.twig:53 - Part-DB1\templates\Form\permissionLayout.html.twig:53 - permission.legend.title Az állapotok magyarázata - - Part-DB1\templates\Form\permissionLayout.html.twig:57 - Part-DB1\templates\Form\permissionLayout.html.twig:57 - permission.legend.disallow Tiltott - - Part-DB1\templates\Form\permissionLayout.html.twig:61 - Part-DB1\templates\Form\permissionLayout.html.twig:61 - permission.legend.allow Engedélyezett - - Part-DB1\templates\Form\permissionLayout.html.twig:65 - Part-DB1\templates\Form\permissionLayout.html.twig:65 - permission.legend.inherit Öröklés a (szülő) csoporttól - - Part-DB1\templates\helper.twig:3 - Part-DB1\templates\helper.twig:3 - bool.true Igaz - - Part-DB1\templates\helper.twig:5 - Part-DB1\templates\helper.twig:5 - bool.false Hamis - - Part-DB1\templates\helper.twig:92 - Part-DB1\templates\helper.twig:87 - Yes Igen - - Part-DB1\templates\helper.twig:94 - Part-DB1\templates\helper.twig:89 - No Nem - - Part-DB1\templates\helper.twig:126 - specifications.value Érték - - Part-DB1\templates\homepage.html.twig:7 - Part-DB1\templates\homepage.html.twig:7 - templates\homepage.html.twig:7 - version.caption Verzió - - Part-DB1\templates\homepage.html.twig:22 - Part-DB1\templates\homepage.html.twig:22 - templates\homepage.html.twig:19 - homepage.license Licencinformáció - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.caption Projektoldal - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.text Forráskód, letöltések, hibajelentések, teendőlista stb. megtalálható a <a href="%href%" class="link-external" target="_blank">GitHub projektoldalon</a> - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - homepage.help.caption Súgó - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - homepage.help.text Súgó és tippek megtalálhatók a Wiki <a href="%href%" class="link-external" target="_blank">GitHub oldalon</a> - - Part-DB1\templates\homepage.html.twig:33 - Part-DB1\templates\homepage.html.twig:33 - templates\homepage.html.twig:30 - homepage.forum.caption Fórum @@ -1452,8 +849,6 @@ - Part-DB1\templates\homepage.html.twig:45 - Part-DB1\templates\homepage.html.twig:45 new @@ -1462,138 +857,90 @@ - - Part-DB1\templates\LabelSystem\dialog.html.twig:3 - Part-DB1\templates\LabelSystem\dialog.html.twig:6 - label_generator.title Címkegenerátor - - Part-DB1\templates\LabelSystem\dialog.html.twig:16 - label_generator.common Általános - - Part-DB1\templates\LabelSystem\dialog.html.twig:20 - label_generator.advanced Speciális - - Part-DB1\templates\LabelSystem\dialog.html.twig:24 - label_generator.profiles Profilok - - Part-DB1\templates\LabelSystem\dialog.html.twig:58 - label_generator.selected_profile Jelenleg kiválasztott profil - - Part-DB1\templates\LabelSystem\dialog.html.twig:62 - label_generator.edit_profile Profil szerkesztése - - Part-DB1\templates\LabelSystem\dialog.html.twig:75 - label_generator.load_profile Profil betöltése - - Part-DB1\templates\LabelSystem\dialog.html.twig:102 - label_generator.download Letöltés - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:3 - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:5 - label_generator.label_btn Címke generálása - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:20 - label_generator.label_empty Új üres címke - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:3 - label_scanner.title Címkeszkenner - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - label_scanner.no_cam_found.title Nem található webkamera - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - label_scanner.no_cam_found.text Szükséged van egy webkamerára, és engedélyt kell adnod a szkenner funkció használatához. A vonalkódot manuálisan is megadhatod alább. - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:27 - label_scanner.source_select Forrás kiválasztása - - Part-DB1\templates\LogSystem\log_list.html.twig:3 - Part-DB1\templates\LogSystem\log_list.html.twig:3 - log.list.title Rendszernapló @@ -1601,8 +948,6 @@ - Part-DB1\templates\LogSystem\_log_table.html.twig:1 - Part-DB1\templates\LogSystem\_log_table.html.twig:1 new @@ -1612,8 +957,6 @@ - Part-DB1\templates\LogSystem\_log_table.html.twig:2 - Part-DB1\templates\LogSystem\_log_table.html.twig:2 new @@ -1622,473 +965,270 @@ - - Part-DB1\templates\mail\base.html.twig:24 - Part-DB1\templates\mail\base.html.twig:24 - mail.footer.email_sent_by Ezt az e-mailt automatikusan küldte a - - Part-DB1\templates\mail\base.html.twig:24 - Part-DB1\templates\mail\base.html.twig:24 - mail.footer.dont_reply Ne válaszolj erre az e-mailre. - - Part-DB1\templates\mail\pw_reset.html.twig:6 - Part-DB1\templates\mail\pw_reset.html.twig:6 - email.hi %name% Szia %name% - - Part-DB1\templates\mail\pw_reset.html.twig:7 - Part-DB1\templates\mail\pw_reset.html.twig:7 - email.pw_reset.message valaki (remélhetőleg te) kérte a jelszavad visszaállítását. Ha nem te küldted a kérést, hagyd figyelmen kívül ezt az e-mailt. - - Part-DB1\templates\mail\pw_reset.html.twig:9 - Part-DB1\templates\mail\pw_reset.html.twig:9 - email.pw_reset.button Kattints ide a jelszó visszaállításához - - Part-DB1\templates\mail\pw_reset.html.twig:11 - Part-DB1\templates\mail\pw_reset.html.twig:11 - email.pw_reset.fallback Ha ez nem működik, látogass el a <a href="%url%">%url%</a> oldalra, és add meg az alábbi információkat - - Part-DB1\templates\mail\pw_reset.html.twig:16 - Part-DB1\templates\mail\pw_reset.html.twig:16 - email.pw_reset.username Felhasználónév - - Part-DB1\templates\mail\pw_reset.html.twig:19 - Part-DB1\templates\mail\pw_reset.html.twig:19 - email.pw_reset.token Token - - Part-DB1\templates\mail\pw_reset.html.twig:24 - Part-DB1\templates\mail\pw_reset.html.twig:24 - email.pw_reset.valid_unit %date% A visszaállítási token <i>%date%</i>-ig érvényes. - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:18 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:78 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - orderdetail.delete Törlés - - 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 Minimális kedvezményes mennyiség - - 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 Ár - - 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 - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - pricedetail.create Ár hozzáadása - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - templates\Parts\edit_part_info.html.twig:4 - part.edit.title Alkatrész szerkesztése - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - templates\Parts\edit_part_info.html.twig:9 - part.edit.card_title Alkatrész szerkesztése - - 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 Általános - - 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 Gyártó - - 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 Speciális - - 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 Készletek - - 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 Mellékletek - - 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 Beszerzési információk - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 - part.edit.tab.specifications Paraméterek - - 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 Jegyzetek - - 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 Új alkatrész létrehozása - - Part-DB1\templates\Parts\edit\_lots.html.twig:5 - Part-DB1\templates\Parts\edit\_lots.html.twig:5 - part_lot.delete Törlés - - Part-DB1\templates\Parts\edit\_lots.html.twig:28 - Part-DB1\templates\Parts\edit\_lots.html.twig:28 - part_lot.create Készlet hozzáadása - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 - orderdetail.create Forgalmazó hozzáadása - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 - pricedetails.edit.delete.confirm Valóban törölni szeretnéd ezt az árat? Ez nem vonható vissza. - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:62 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:61 - orderdetails.edit.delete.confirm Valóban törölni szeretnéd ezt a forgalmazói információt? Ez nem vonható vissza! - - 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 Részletes információk az alkatrészhez - - 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 Készletek - - 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 Jegyzetek - - Part-DB1\templates\Parts\info\show_part_info.html.twig:64 - part.info.specifications Paraméterek - - 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 Mellékletek - - 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 Vásárlási információk - - 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 Előzmények - - 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 Eszközök - - 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 Bővített információ - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 - attachment.name Név - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 - attachment.attachment_type Melléklet típusa - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 - attachment.file_name Fájlnév - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 - attachment.file_size Fájlméret - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:54 - attachment.preview Előnézeti kép - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:67 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:50 - attachment.download_local Helyi másolat letöltése @@ -2096,8 +1236,6 @@ - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 new @@ -2106,14 +1244,6 @@ - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Unknown Ismeretlen @@ -2121,10 +1251,6 @@ - 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 @@ -2134,8 +1260,6 @@ - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 new @@ -2144,49 +1268,24 @@ - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - part.isFavorite Kedvenc - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 - part.minOrderAmount Minimális rendelési mennyiség - - 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 Gyártó - - 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 Név @@ -2194,8 +1293,6 @@ - Part-DB1\templates\Parts\info\_main_infos.html.twig:27 - Part-DB1\templates\Parts\info\_main_infos.html.twig:27 new @@ -2204,767 +1301,432 @@ - - 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 Leírás - - 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 Kategória - - 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 Készleten - - 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 Minimális készlet - - 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 Lábnyom - - 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 Átlagár - - Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - part.supplier.name Név - - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - part.supplier.partnr Alkatrészszám - - Part-DB1\templates\Parts\info\_order_infos.html.twig:28 - Part-DB1\templates\Parts\info\_order_infos.html.twig:28 - part.order.minamount Minimális mennyiség - - Part-DB1\templates\Parts\info\_order_infos.html.twig:29 - Part-DB1\templates\Parts\info\_order_infos.html.twig:29 - part.order.price Ár - - Part-DB1\templates\Parts\info\_order_infos.html.twig:31 - Part-DB1\templates\Parts\info\_order_infos.html.twig:31 - part.order.single_price Egységár - - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 - Part-DB1\templates\Parts\info\_part_lots.html.twig:6 - part_lots.description Leírás - - Part-DB1\templates\Parts\info\_part_lots.html.twig:8 - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 - part_lots.storage_location Tárolási helyszín - - Part-DB1\templates\Parts\info\_part_lots.html.twig:9 - Part-DB1\templates\Parts\info\_part_lots.html.twig:8 - part_lots.amount Mennyiség - - Part-DB1\templates\Parts\info\_part_lots.html.twig:24 - Part-DB1\templates\Parts\info\_part_lots.html.twig:22 - part_lots.location_unknown Ismeretlen tárolási helyszín - - Part-DB1\templates\Parts\info\_part_lots.html.twig:31 - Part-DB1\templates\Parts\info\_part_lots.html.twig:29 - part_lots.instock_unknown Ismeretlen mennyiség - - Part-DB1\templates\Parts\info\_part_lots.html.twig:40 - Part-DB1\templates\Parts\info\_part_lots.html.twig:38 - part_lots.expiration_date Lejárati dátum - - Part-DB1\templates\Parts\info\_part_lots.html.twig:48 - Part-DB1\templates\Parts\info\_part_lots.html.twig:46 - part_lots.is_expired Lejárt - - Part-DB1\templates\Parts\info\_part_lots.html.twig:55 - Part-DB1\templates\Parts\info\_part_lots.html.twig:53 - part_lots.need_refill Utántöltés szükséges - - Part-DB1\templates\Parts\info\_picture.html.twig:15 - Part-DB1\templates\Parts\info\_picture.html.twig:15 - part.info.prev_picture Előző kép - - Part-DB1\templates\Parts\info\_picture.html.twig:19 - Part-DB1\templates\Parts\info\_picture.html.twig:19 - part.info.next_picture Következő kép - - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - part.mass.tooltip Tömeg - - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - part.needs_review.badge Ellenőrzés szükséges - - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - part.favorite.badge Kedvenc - - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - part.obsolete.badge Már nem kapható - - Part-DB1\templates\Parts\info\_specifications.html.twig:10 - parameters.extracted_from_description Automatikusan kinyert a leírásból - - Part-DB1\templates\Parts\info\_specifications.html.twig:15 - parameters.auto_extracted_from_comment Automatikusan kinyert a jegyzetekből - - Part-DB1\templates\Parts\info\_tools.html.twig:6 - Part-DB1\templates\Parts\info\_tools.html.twig:4 - templates\Parts\show_part_info.html.twig:125 - part.edit.btn Alkatrész szerkesztése - - Part-DB1\templates\Parts\info\_tools.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:14 - templates\Parts\show_part_info.html.twig:135 - part.clone.btn Alkatrész klónozása - - Part-DB1\templates\Parts\info\_tools.html.twig:24 - Part-DB1\templates\Parts\lists\_action_bar.html.twig:4 - templates\Parts\show_part_info.html.twig:143 - part.create.btn Új alkatrész létrehozása - - Part-DB1\templates\Parts\info\_tools.html.twig:31 - Part-DB1\templates\Parts\info\_tools.html.twig:29 - part.delete.confirm_title Valóban törölni szeretnéd ezt az alkatrészt? - - Part-DB1\templates\Parts\info\_tools.html.twig:32 - Part-DB1\templates\Parts\info\_tools.html.twig:30 - part.delete.message Ez az alkatrész és minden hozzá kapcsolódó információ (például mellékletek, árinformációk stb.) törlésre kerül. Ez nem vonható vissza! - - Part-DB1\templates\Parts\info\_tools.html.twig:39 - Part-DB1\templates\Parts\info\_tools.html.twig:37 - part.delete Alkatrész törlése - - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - parts_list.all.title Összes alkatrész - - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - parts_list.category.title Kategóriával rendelkező alkatrészek - - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - parts_list.footprint.title Lábnyommal rendelkező alkatrészek - - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - parts_list.manufacturer.title Gyártóval rendelkező alkatrészek - - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - parts_list.search.title Alkatrészek keresése - - 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 Tárolási helyszínekkel rendelkező alkatrészek - - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - parts_list.supplier.title Beszállítóval rendelkező alkatrészek - - Part-DB1\templates\Parts\lists\tags_list.html.twig:4 - Part-DB1\templates\Parts\lists\tags_list.html.twig:4 - parts_list.tags.title Címkével rendelkező alkatrészek - - Part-DB1\templates\Parts\lists\_info_card.html.twig:22 - Part-DB1\templates\Parts\lists\_info_card.html.twig:17 - entity.info.common.tab Általános - - Part-DB1\templates\Parts\lists\_info_card.html.twig:26 - Part-DB1\templates\Parts\lists\_info_card.html.twig:20 - entity.info.statistics.tab Statisztikák - - Part-DB1\templates\Parts\lists\_info_card.html.twig:31 - entity.info.attachments.tab Mellékletek - - Part-DB1\templates\Parts\lists\_info_card.html.twig:37 - entity.info.parameters.tab Paraméterek - - Part-DB1\templates\Parts\lists\_info_card.html.twig:54 - Part-DB1\templates\Parts\lists\_info_card.html.twig:30 - entity.info.name Név - - Part-DB1\templates\Parts\lists\_info_card.html.twig:58 - Part-DB1\templates\Parts\lists\_info_card.html.twig:96 - Part-DB1\templates\Parts\lists\_info_card.html.twig:34 - Part-DB1\templates\Parts\lists\_info_card.html.twig:67 - entity.info.parent Szülő - - Part-DB1\templates\Parts\lists\_info_card.html.twig:70 - Part-DB1\templates\Parts\lists\_info_card.html.twig:46 - entity.edit.btn Szerkesztés - - Part-DB1\templates\Parts\lists\_info_card.html.twig:92 - Part-DB1\templates\Parts\lists\_info_card.html.twig:63 - entity.info.children_count Gyermek elemek száma - - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - tfa.check.title Kétfaktoros hitelesítés szükséges - - Part-DB1\templates\security\2fa_base_form.html.twig:39 - Part-DB1\templates\security\2fa_base_form.html.twig:39 - tfa.code.trusted_pc Ez egy megbízható számítógép (ha ez engedélyezve van, nem kell további kétfaktoros lekérdezéseket végezni ezen a számítógépen) - - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - login.btn Bejelentkezés - - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:42 - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:40 - user.logout Kijelentkezés - - Part-DB1\templates\security\2fa_form.html.twig:6 - Part-DB1\templates\security\2fa_form.html.twig:6 - tfa.check.code.label Hitelesítő alkalmazás kódja - - Part-DB1\templates\security\2fa_form.html.twig:10 - Part-DB1\templates\security\2fa_form.html.twig:10 - tfa.check.code.help Add meg a 6 jegyű kódot a hitelesítő alkalmazásodból, vagy egy biztonsági kódot, ha a hitelesítő alkalmazás nem elérhető. - - Part-DB1\templates\security\login.html.twig:3 - Part-DB1\templates\security\login.html.twig:3 - templates\security\login.html.twig:3 - login.title Bejelentkezés - - Part-DB1\templates\security\login.html.twig:7 - Part-DB1\templates\security\login.html.twig:7 - templates\security\login.html.twig:7 - login.card_title Bejelentkezés - - Part-DB1\templates\security\login.html.twig:31 - Part-DB1\templates\security\login.html.twig:31 - templates\security\login.html.twig:31 - login.username.label Felhasználónév - - Part-DB1\templates\security\login.html.twig:34 - Part-DB1\templates\security\login.html.twig:34 - templates\security\login.html.twig:34 - login.username.placeholder Felhasználónév - - Part-DB1\templates\security\login.html.twig:38 - Part-DB1\templates\security\login.html.twig:38 - templates\security\login.html.twig:38 - login.password.label Jelszó - - Part-DB1\templates\security\login.html.twig:40 - Part-DB1\templates\security\login.html.twig:40 - templates\security\login.html.twig:40 - login.password.placeholder Jelszó - - Part-DB1\templates\security\login.html.twig:50 - Part-DB1\templates\security\login.html.twig:50 - templates\security\login.html.twig:50 - login.rememberme Emlékezz rám (nem ajánlott megosztott számítógépeken) - - Part-DB1\templates\security\login.html.twig:64 - Part-DB1\templates\security\login.html.twig:64 - pw_reset.password_forget Elfelejtetted a felhasználóneved/jelszavad? - - 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 Új jelszó beállítása - - 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 Új jelszó kérése - - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - tfa_u2f.http_warning Ezt az oldalt nem biztonságos HTTP módszerrel éred el, így az U2F valószínűleg nem fog működni (Hibás kérés hibaüzenet). Kérj meg egy adminisztrátort, hogy állítsa be a biztonságos HTTPS módszert, ha biztonsági kulcsokat szeretnél használni. - - Part-DB1\templates\security\U2F\u2f_login.html.twig:10 - Part-DB1\templates\security\U2F\u2f_register.html.twig:22 - 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 Kérjük, csatlakoztasd a biztonsági kulcsodat, és nyomd meg a gombját! - - 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 Biztonsági kulcs hozzáadása - - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - tfa_u2f.explanation Egy U2F/FIDO kompatibilis biztonsági kulcs (például YubiKey vagy NitroKey) segítségével felhasználóbarát és biztonságos kétfaktoros hitelesítést érhetsz el. A biztonsági kulcsokat itt regisztrálhatod, és ha kétfaktoros ellenőrzés szükséges, a kulcsot csak USB-n keresztül kell csatlakoztatni, vagy NFC-n keresztül a készülékhez érinteni. - - 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 Az elérhetőség biztosítása érdekében, ha a kulcs elveszik, ajánlott egy második kulcsot is regisztrálni tartalékként, és biztonságos helyen tárolni! - - 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 Biztonsági kulcs hozzáadása - - 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 Vissza a beállításokhoz @@ -2972,10 +1734,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 new @@ -2985,8 +1743,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:14 - Part-DB1\templates\Statistics\statistics.html.twig:14 new @@ -2996,8 +1752,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:19 - Part-DB1\templates\Statistics\statistics.html.twig:19 new @@ -3007,8 +1761,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:24 - Part-DB1\templates\Statistics\statistics.html.twig:24 new @@ -3018,12 +1770,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 new @@ -3033,12 +1779,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 new @@ -3048,8 +1788,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:40 - Part-DB1\templates\Statistics\statistics.html.twig:40 new @@ -3059,8 +1797,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:44 - Part-DB1\templates\Statistics\statistics.html.twig:44 new @@ -3070,8 +1806,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:48 - Part-DB1\templates\Statistics\statistics.html.twig:48 new @@ -3081,8 +1815,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:65 - Part-DB1\templates\Statistics\statistics.html.twig:65 new @@ -3092,8 +1824,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:69 - Part-DB1\templates\Statistics\statistics.html.twig:69 new @@ -3103,8 +1833,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:73 - Part-DB1\templates\Statistics\statistics.html.twig:73 new @@ -3114,8 +1842,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:77 - Part-DB1\templates\Statistics\statistics.html.twig:77 new @@ -3125,8 +1851,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:81 - Part-DB1\templates\Statistics\statistics.html.twig:81 new @@ -3136,8 +1860,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:85 - Part-DB1\templates\Statistics\statistics.html.twig:85 new @@ -3147,8 +1869,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:89 - Part-DB1\templates\Statistics\statistics.html.twig:89 new @@ -3158,8 +1878,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:93 - Part-DB1\templates\Statistics\statistics.html.twig:93 new @@ -3169,8 +1887,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:110 - Part-DB1\templates\Statistics\statistics.html.twig:110 new @@ -3180,8 +1896,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:114 - Part-DB1\templates\Statistics\statistics.html.twig:114 new @@ -3191,8 +1905,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:118 - Part-DB1\templates\Statistics\statistics.html.twig:118 new @@ -3202,8 +1914,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:122 - Part-DB1\templates\Statistics\statistics.html.twig:122 new @@ -3213,8 +1923,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:126 - Part-DB1\templates\Statistics\statistics.html.twig:126 new @@ -3223,890 +1931,480 @@ - - 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 Biztonsági kódok - - Part-DB1\templates\Users\backup_codes.html.twig:12 - Part-DB1\templates\Users\backup_codes.html.twig:12 - tfa_backup.codes.explanation Nyomtasd ki ezeket a kódokat, és tartsd őket biztonságos helyen! - - Part-DB1\templates\Users\backup_codes.html.twig:13 - Part-DB1\templates\Users\backup_codes.html.twig:13 - tfa_backup.codes.help Ha már nincs hozzáférésed az eszközödhöz, amelyen a hitelesítő alkalmazás van (elveszett okostelefon, adatvesztés stb.), ezekkel a kódokkal hozzáférhetsz a fiókodhoz, és esetleg új hitelesítő alkalmazást állíthatsz be. Ezek a kódok egyszer használhatók, az használt kódokat ajánlott törölni. Bárki, aki hozzáfér ezekhez a kódokhoz, potenciálisan hozzáférhet a fiókodhoz, ezért tartsd őket biztonságos helyen. - - Part-DB1\templates\Users\backup_codes.html.twig:16 - Part-DB1\templates\Users\backup_codes.html.twig:16 - tfa_backup.username Felhasználónév - - Part-DB1\templates\Users\backup_codes.html.twig:29 - Part-DB1\templates\Users\backup_codes.html.twig:29 - tfa_backup.codes.page_generated_on Az oldal generálva: %date% - - Part-DB1\templates\Users\backup_codes.html.twig:32 - Part-DB1\templates\Users\backup_codes.html.twig:32 - tfa_backup.codes.print Nyomtatás - - Part-DB1\templates\Users\backup_codes.html.twig:35 - Part-DB1\templates\Users\backup_codes.html.twig:35 - tfa_backup.codes.copy_clipboard Másolás a vágólapra - - 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 Felhasználói információk - - 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 Keresztnév - - 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 Vezetéknév - - 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 E-mail - - 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 Osztály - - 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 Felhasználónév - - 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 Csoport: - - Part-DB1\templates\Users\user_info.html.twig:67 - Part-DB1\templates\Users\user_info.html.twig:67 - user.permissions Engedélyek - - 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 Felhasználói beállítások - - 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 Személyes adatok - - 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 Konfiguráció - - 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 Jelszó módosítása - - Part-DB1\templates\Users\_2fa_settings.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:6 - user.settings.2fa_settings Kétfaktoros hitelesítés - - Part-DB1\templates\Users\_2fa_settings.html.twig:13 - Part-DB1\templates\Users\_2fa_settings.html.twig:13 - tfa.settings.google.tab Hitelesítő alkalmazás - - Part-DB1\templates\Users\_2fa_settings.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:17 - tfa.settings.bakup.tab Biztonsági kódok - - Part-DB1\templates\Users\_2fa_settings.html.twig:21 - Part-DB1\templates\Users\_2fa_settings.html.twig:21 - tfa.settings.u2f.tab Biztonsági kulcsok (U2F) - - Part-DB1\templates\Users\_2fa_settings.html.twig:25 - Part-DB1\templates\Users\_2fa_settings.html.twig:25 - tfa.settings.trustedDevices.tab Megbízható eszközök - - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - tfa_google.disable.confirm_title Valóban letiltod a hitelesítő alkalmazást? - - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - tfa_google.disable.confirm_message Ha letiltod a hitelesítő alkalmazást, az összes biztonsági kód törlődik, így újra ki kell nyomtatnod őket.<br> - - Part-DB1\templates\Users\_2fa_settings.html.twig:39 - Part-DB1\templates\Users\_2fa_settings.html.twig:39 - tfa_google.disabled_message Hitelesítő alkalmazás deaktiválva! - - Part-DB1\templates\Users\_2fa_settings.html.twig:48 - Part-DB1\templates\Users\_2fa_settings.html.twig:48 - tfa_google.step.download Tölts le egy hitelesítő alkalmazást (például <a class="link-external" target="_blank" href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2">Google Authenticator</a> vagy <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 Szkenneld be a mellette lévő QR-kódot az alkalmazással, vagy add meg az adatokat manuálisan - - Part-DB1\templates\Users\_2fa_settings.html.twig:50 - Part-DB1\templates\Users\_2fa_settings.html.twig:50 - tfa_google.step.input_code Add meg a generált kódot az alábbi mezőben, és erősítsd meg - - Part-DB1\templates\Users\_2fa_settings.html.twig:51 - Part-DB1\templates\Users\_2fa_settings.html.twig:51 - tfa_google.step.download_backup Nyomtasd ki a biztonsági kódokat, és tárold őket biztonságos helyen - - Part-DB1\templates\Users\_2fa_settings.html.twig:58 - Part-DB1\templates\Users\_2fa_settings.html.twig:58 - tfa_google.manual_setup Manuális beállítás - - Part-DB1\templates\Users\_2fa_settings.html.twig:62 - Part-DB1\templates\Users\_2fa_settings.html.twig:62 - tfa_google.manual_setup.type Típus - - Part-DB1\templates\Users\_2fa_settings.html.twig:63 - Part-DB1\templates\Users\_2fa_settings.html.twig:63 - tfa_google.manual_setup.username Felhasználónév - - Part-DB1\templates\Users\_2fa_settings.html.twig:64 - Part-DB1\templates\Users\_2fa_settings.html.twig:64 - tfa_google.manual_setup.secret Titok - - Part-DB1\templates\Users\_2fa_settings.html.twig:65 - Part-DB1\templates\Users\_2fa_settings.html.twig:65 - tfa_google.manual_setup.digit_count Számjegyek száma - - Part-DB1\templates\Users\_2fa_settings.html.twig:74 - Part-DB1\templates\Users\_2fa_settings.html.twig:74 - tfa_google.enabled_message Hitelesítő alkalmazás engedélyezve - - Part-DB1\templates\Users\_2fa_settings.html.twig:83 - Part-DB1\templates\Users\_2fa_settings.html.twig:83 - tfa_backup.disabled Biztonsági kódok letiltva. Állítsd be a hitelesítő alkalmazást a biztonsági kódok engedélyezéséhez. - - 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 Ezeket a biztonsági kódokat használhatod a fiókod eléréséhez, ha elveszíted a hitelesítő alkalmazással rendelkező eszközt. Nyomtasd ki a kódokat, és tartsd őket biztonságos helyen. - - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - tfa_backup.reset_codes.confirm_title Valóban visszaállítod a kódokat? - - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - tfa_backup.reset_codes.confirm_message Ez törli az összes korábbi kódot, és új kódokat generál. Ez nem vonható vissza. Ne felejtsd el kinyomtatni az új kódokat, és biztonságos helyen tárolni őket! - - Part-DB1\templates\Users\_2fa_settings.html.twig:91 - Part-DB1\templates\Users\_2fa_settings.html.twig:91 - tfa_backup.enabled Biztonsági kódok engedélyezve - - Part-DB1\templates\Users\_2fa_settings.html.twig:99 - Part-DB1\templates\Users\_2fa_settings.html.twig:99 - tfa_backup.show_codes Biztonsági kódok megjelenítése - - Part-DB1\templates\Users\_2fa_settings.html.twig:114 - Part-DB1\templates\Users\_2fa_settings.html.twig:114 - tfa_u2f.table_caption Regisztrált biztonsági kulcsok - - Part-DB1\templates\Users\_2fa_settings.html.twig:115 - Part-DB1\templates\Users\_2fa_settings.html.twig:115 - tfa_u2f.delete_u2f.confirm_title Valóban eltávolítod ezt a biztonsági kulcsot? - - Part-DB1\templates\Users\_2fa_settings.html.twig:116 - Part-DB1\templates\Users\_2fa_settings.html.twig:116 - tfa_u2f.delete_u2f.confirm_message Ha eltávolítod ezt a kulcsot, azzal többé nem lehet bejelentkezni. Ha nem marad biztonsági kulcs, a kétfaktoros hitelesítés letiltásra kerül. - - Part-DB1\templates\Users\_2fa_settings.html.twig:123 - Part-DB1\templates\Users\_2fa_settings.html.twig:123 - tfa_u2f.keys.name Kulcs neve - - Part-DB1\templates\Users\_2fa_settings.html.twig:124 - Part-DB1\templates\Users\_2fa_settings.html.twig:124 - tfa_u2f.keys.added_date Regisztráció dátuma - - Part-DB1\templates\Users\_2fa_settings.html.twig:134 - Part-DB1\templates\Users\_2fa_settings.html.twig:134 - tfa_u2f.key_delete Kulcs törlése - - Part-DB1\templates\Users\_2fa_settings.html.twig:141 - Part-DB1\templates\Users\_2fa_settings.html.twig:141 - tfa_u2f.no_keys_registered Még nincsenek regisztrált kulcsok. - - Part-DB1\templates\Users\_2fa_settings.html.twig:144 - Part-DB1\templates\Users\_2fa_settings.html.twig:144 - tfa_u2f.add_new_key Új biztonsági kulcs regisztrálása - - Part-DB1\templates\Users\_2fa_settings.html.twig:148 - Part-DB1\templates\Users\_2fa_settings.html.twig:148 - tfa_trustedDevices.explanation A második faktor ellenőrzésekor az aktuális számítógépet megbízhatóként jelölheted, így nem lesz szükség további kétfaktoros ellenőrzésekre ezen a számítógépen. - - Part-DB1\templates\Users\_2fa_settings.html.twig:149 - Part-DB1\templates\Users\_2fa_settings.html.twig:149 - tfa_trustedDevices.invalidate.confirm_title Valóban eltávolítod az összes megbízható számítógépet? - - Part-DB1\templates\Users\_2fa_settings.html.twig:150 - Part-DB1\templates\Users\_2fa_settings.html.twig:150 - tfa_trustedDevices.invalidate.confirm_message Újra el kell végezned a kétfaktoros hitelesítést az összes számítógépen. Győződj meg róla, hogy kéznél van a kétfaktoros eszközöd. - - Part-DB1\templates\Users\_2fa_settings.html.twig:154 - Part-DB1\templates\Users\_2fa_settings.html.twig:154 - tfa_trustedDevices.invalidate.btn Megbízható eszközök visszaállítása - - Part-DB1\templates\_navbar.html.twig:4 - Part-DB1\templates\_navbar.html.twig:4 - templates\base.html.twig:29 - sidebar.toggle Oldalsáv váltása - - Part-DB1\templates\_navbar.html.twig:22 - navbar.scanner.link Szkenner - - Part-DB1\templates\_navbar.html.twig:38 - Part-DB1\templates\_navbar.html.twig:36 - templates\base.html.twig:97 - user.loggedin.label Bejelentkezve mint - - Part-DB1\templates\_navbar.html.twig:44 - Part-DB1\templates\_navbar.html.twig:42 - templates\base.html.twig:103 - user.login Bejelentkezés - - Part-DB1\templates\_navbar.html.twig:50 - Part-DB1\templates\_navbar.html.twig:48 - ui.toggle_darkmode Sötét mód - - Part-DB1\templates\_navbar.html.twig:54 - Part-DB1\src\Form\UserSettingsType.php:97 - Part-DB1\templates\_navbar.html.twig:52 - Part-DB1\src\Form\UserSettingsType.php:97 - templates\base.html.twig:106 - src\Form\UserSettingsType.php:44 - user.language_select Nyelv váltása - - Part-DB1\templates\_navbar_search.html.twig:4 - Part-DB1\templates\_navbar_search.html.twig:4 - templates\base.html.twig:49 - search.options.label Keresési opciók - - Part-DB1\templates\_navbar_search.html.twig:23 - tags.label Címkék - - Part-DB1\templates\_navbar_search.html.twig:27 - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - templates\base.html.twig:60 - templates\Parts\show_part_info.html.twig:36 - src\Form\PartType.php:77 - storelocation.label Tárolási helyszín - - Part-DB1\templates\_navbar_search.html.twig:36 - Part-DB1\templates\_navbar_search.html.twig:31 - templates\base.html.twig:65 - ordernumber.label.short supplier partnr. - - Part-DB1\templates\_navbar_search.html.twig:40 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - Part-DB1\templates\_navbar_search.html.twig:35 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - templates\base.html.twig:67 - supplier.label Beszállító - - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_navbar_search.html.twig:56 - templates\base.html.twig:77 - search.regexmatching Reguláris kifejezés egyezés - - Part-DB1\templates\_sidebar.html.twig:37 - Part-DB1\templates\_sidebar.html.twig:12 - Part-DB1\templates\_sidebar.html.twig:37 - Part-DB1\templates\_sidebar.html.twig:12 - templates\base.html.twig:175 - templates\base.html.twig:189 - templates\base.html.twig:202 - templates\base.html.twig:230 - project.labelp Projektek - - Part-DB1\templates\_sidebar.html.twig:2 - Part-DB1\templates\_sidebar.html.twig:2 - templates\base.html.twig:165 - templates\base.html.twig:192 - templates\base.html.twig:220 - actions Műveletek - - Part-DB1\templates\_sidebar.html.twig:6 - Part-DB1\templates\_sidebar.html.twig:6 - templates\base.html.twig:169 - templates\base.html.twig:196 - templates\base.html.twig:224 - datasource Adatforrás - - Part-DB1\templates\_sidebar.html.twig:10 - Part-DB1\templates\_sidebar.html.twig:10 - templates\base.html.twig:173 - templates\base.html.twig:200 - templates\base.html.twig:228 - manufacturer.labelp Gyártók - - Part-DB1\templates\_sidebar.html.twig:11 - Part-DB1\templates\_sidebar.html.twig:11 - templates\base.html.twig:174 - templates\base.html.twig:201 - templates\base.html.twig:229 - supplier.labelp Beszállítók - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:213 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:293 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:293 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:181 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:243 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:268 - attachment.download_failed Külső melléklet letöltése nem sikerült. - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:222 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:190 - entity.edit_flash Változtatások sikeresen mentve. - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:231 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:196 - entity.edit_flash.invalid Nem lehet menteni a változtatásokat. Kérjük, ellenőrizd az adatbevitelt! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:302 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:252 - entity.created_flash Elem létrehozva. - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:308 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:258 - entity.created_flash.invalid Nem sikerült az elem létrehozása. Kérjük, ellenőrizd az adatbevitelt! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:399 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:352 - src\Controller\BaseAdminController.php:154 - attachment_type.deleted Elem törölve! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:401 - Part-DB1\src\Controller\UserController.php:109 - Part-DB1\src\Controller\UserSettingsController.php:159 - Part-DB1\src\Controller\UserSettingsController.php:193 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:354 - Part-DB1\src\Controller\UserController.php:101 - Part-DB1\src\Controller\UserSettingsController.php:150 - Part-DB1\src\Controller\UserSettingsController.php:182 - csfr_invalid Érvénytelen CSFR token. Kérjük, töltsd újra az oldalt, vagy lépj kapcsolatba egy adminisztrátorral, ha ez az üzenet megmarad. - - Part-DB1\src\Controller\LabelController.php:125 - label_generator.no_entities_found Nem található entitás a megadott tartományban. @@ -4114,8 +2412,6 @@ - Part-DB1\src\Controller\LogController.php:149 - Part-DB1\src\Controller\LogController.php:154 new @@ -4125,8 +2421,6 @@ - Part-DB1\src\Controller\LogController.php:156 - Part-DB1\src\Controller\LogController.php:160 new @@ -4136,8 +2430,6 @@ - Part-DB1\src\Controller\LogController.php:176 - Part-DB1\src\Controller\LogController.php:180 new @@ -4147,8 +2439,6 @@ - Part-DB1\src\Controller\LogController.php:178 - Part-DB1\src\Controller\LogController.php:182 new @@ -4158,8 +2448,6 @@ - Part-DB1\src\Controller\LogController.php:185 - Part-DB1\src\Controller\LogController.php:189 new @@ -4169,8 +2457,6 @@ - Part-DB1\src\Controller\LogController.php:187 - Part-DB1\src\Controller\LogController.php:191 new @@ -4180,8 +2466,6 @@ - Part-DB1\src\Controller\LogController.php:194 - Part-DB1\src\Controller\LogController.php:198 new @@ -4191,8 +2475,6 @@ - Part-DB1\src\Controller\LogController.php:196 - Part-DB1\src\Controller\LogController.php:200 new @@ -4202,8 +2484,6 @@ - Part-DB1\src\Controller\LogController.php:199 - Part-DB1\src\Controller\LogController.php:203 new @@ -4212,306 +2492,168 @@ - - Part-DB1\src\Controller\PartController.php:182 - Part-DB1\src\Controller\PartController.php:182 - src\Controller\PartController.php:80 - part.edited_flash Változtatások mentve! - - Part-DB1\src\Controller\PartController.php:216 - Part-DB1\src\Controller\PartController.php:219 - part.deleted Alkatrész sikeresen törölve. - - Part-DB1\src\Controller\PartController.php:302 - Part-DB1\src\Controller\PartController.php:277 - Part-DB1\src\Controller\PartController.php:317 - src\Controller\PartController.php:113 - src\Controller\PartController.php:142 - part.created_flash Alkatrész létrehozva! - - Part-DB1\src\Controller\PartController.php:308 - Part-DB1\src\Controller\PartController.php:283 - part.created_flash.invalid Hiba létrehozás közben: Kérjük, ellenőrizd az adatbevitelt! - - Part-DB1\src\Controller\ScanController.php:68 - Part-DB1\src\Controller\ScanController.php:90 - scan.qr_not_found Nem található elem a megadott vonalkódhoz. - - Part-DB1\src\Controller\ScanController.php:71 - scan.format_unknown Ismeretlen formátum! - - Part-DB1\src\Controller\ScanController.php:86 - scan.qr_success Elem megtalálva. - - Part-DB1\src\Controller\SecurityController.php:114 - Part-DB1\src\Controller\SecurityController.php:109 - pw_reset.user_or_email Felhasználónév / E-mail - - Part-DB1\src\Controller\SecurityController.php:131 - Part-DB1\src\Controller\SecurityController.php:126 - pw_reset.request.success A visszaállítási kérelem sikeres volt! Kérjük, ellenőrizd az e-mailjeidet további utasításokért. - - Part-DB1\src\Controller\SecurityController.php:162 - Part-DB1\src\Controller\SecurityController.php:160 - pw_reset.username Felhasználónév - - 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 Érvénytelen felhasználónév vagy token! Kérjük, ellenőrizd az adatbevitelt. - - Part-DB1\src\Controller\SecurityController.php:196 - Part-DB1\src\Controller\SecurityController.php:194 - pw_reset.new_pw.success A jelszó visszaállítása sikeresen megtörtént. Most bejelentkezhetsz az új jelszóval. - - Part-DB1\src\Controller\UserController.php:107 - Part-DB1\src\Controller\UserController.php:99 - user.edit.reset_success Az összes kétfaktoros hitelesítési módszer sikeresen letiltva. - - Part-DB1\src\Controller\UserSettingsController.php:101 - Part-DB1\src\Controller\UserSettingsController.php:92 - tfa_backup.no_codes_enabled Nincsenek engedélyezve biztonsági kódok! - - Part-DB1\src\Controller\UserSettingsController.php:138 - Part-DB1\src\Controller\UserSettingsController.php:132 - tfa_u2f.u2f_delete.not_existing Nem létezik biztonsági kulcs ezzel az azonosítóval. - - Part-DB1\src\Controller\UserSettingsController.php:145 - Part-DB1\src\Controller\UserSettingsController.php:139 - tfa_u2f.u2f_delete.access_denied Nem törölheted más felhasználók biztonsági kulcsait! - - Part-DB1\src\Controller\UserSettingsController.php:153 - Part-DB1\src\Controller\UserSettingsController.php:147 - tfa.u2f.u2f_delete.success Biztonsági kulcs sikeresen eltávolítva. - - Part-DB1\src\Controller\UserSettingsController.php:188 - Part-DB1\src\Controller\UserSettingsController.php:180 - tfa_trustedDevice.invalidate.success Megbízható eszközök sikeresen visszaállítva. - - Part-DB1\src\Controller\UserSettingsController.php:235 - Part-DB1\src\Controller\UserSettingsController.php:226 - src\Controller\UserController.php:98 - user.settings.saved_flash Beállítások mentve! - - Part-DB1\src\Controller\UserSettingsController.php:297 - Part-DB1\src\Controller\UserSettingsController.php:288 - src\Controller\UserController.php:130 - user.settings.pw_changed_flash Jelszó módosítva! - - Part-DB1\src\Controller\UserSettingsController.php:317 - Part-DB1\src\Controller\UserSettingsController.php:306 - user.settings.2fa.google.activated Hitelesítő alkalmazás sikeresen aktiválva. - - Part-DB1\src\Controller\UserSettingsController.php:328 - Part-DB1\src\Controller\UserSettingsController.php:315 - user.settings.2fa.google.disabled Hitelesítő alkalmazás sikeresen deaktiválva. - - Part-DB1\src\Controller\UserSettingsController.php:346 - Part-DB1\src\Controller\UserSettingsController.php:332 - user.settings.2fa.backup_codes.regenerated Új biztonsági kódok sikeresen generálva. - - Part-DB1\src\DataTables\AttachmentDataTable.php:153 - Part-DB1\src\DataTables\AttachmentDataTable.php:153 - attachment.table.filesize Fájlméret - - 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 deleted @@ -4519,8 +2661,6 @@ - Part-DB1\src\DataTables\Column\RevertLogColumn.php:57 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:60 new @@ -4530,8 +2670,6 @@ - Part-DB1\src\DataTables\Column\RevertLogColumn.php:63 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:66 new @@ -4541,8 +2679,6 @@ - Part-DB1\src\DataTables\Column\RevertLogColumn.php:83 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:86 new @@ -4551,70 +2687,42 @@ - - 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 Időbélyeg - - Part-DB1\src\DataTables\LogDataTable.php:183 - Part-DB1\src\DataTables\LogDataTable.php:171 - log.type Esemény - - Part-DB1\src\DataTables\LogDataTable.php:191 - Part-DB1\src\DataTables\LogDataTable.php:179 - log.level Szint - - Part-DB1\src\DataTables\LogDataTable.php:200 - Part-DB1\src\DataTables\LogDataTable.php:188 - log.user Felhasználó - - Part-DB1\src\DataTables\LogDataTable.php:213 - Part-DB1\src\DataTables\LogDataTable.php:201 - log.target_type Cél típusa - - Part-DB1\src\DataTables\LogDataTable.php:226 - Part-DB1\src\DataTables\LogDataTable.php:214 - log.target Cél @@ -4622,8 +2730,6 @@ - Part-DB1\src\DataTables\LogDataTable.php:231 - Part-DB1\src\DataTables\LogDataTable.php:218 new @@ -4632,1309 +2738,786 @@ - - Part-DB1\src\DataTables\PartsDataTable.php:168 - Part-DB1\src\DataTables\PartsDataTable.php:116 - part.table.name Név - - Part-DB1\src\DataTables\PartsDataTable.php:178 - Part-DB1\src\DataTables\PartsDataTable.php:126 - part.table.id Azonosító - - Part-DB1\src\DataTables\PartsDataTable.php:182 - Part-DB1\src\DataTables\PartsDataTable.php:130 - part.table.description Leírás - - Part-DB1\src\DataTables\PartsDataTable.php:185 - Part-DB1\src\DataTables\PartsDataTable.php:133 - part.table.category Kategória - - Part-DB1\src\DataTables\PartsDataTable.php:190 - Part-DB1\src\DataTables\PartsDataTable.php:138 - part.table.footprint Lábnyom - - Part-DB1\src\DataTables\PartsDataTable.php:194 - Part-DB1\src\DataTables\PartsDataTable.php:142 - part.table.manufacturer Gyártó - - Part-DB1\src\DataTables\PartsDataTable.php:197 - Part-DB1\src\DataTables\PartsDataTable.php:145 - part.table.storeLocations Tárolási helyszínek - - Part-DB1\src\DataTables\PartsDataTable.php:216 - Part-DB1\src\DataTables\PartsDataTable.php:164 - part.table.amount Mennyiség - - Part-DB1\src\DataTables\PartsDataTable.php:224 - Part-DB1\src\DataTables\PartsDataTable.php:172 - part.table.minamount Minimális mennyiség - - Part-DB1\src\DataTables\PartsDataTable.php:232 - Part-DB1\src\DataTables\PartsDataTable.php:180 - part.table.partUnit Mértékegység - - Part-DB1\src\DataTables\PartsDataTable.php:236 - Part-DB1\src\DataTables\PartsDataTable.php:184 - part.table.addedDate Létrehozva - - Part-DB1\src\DataTables\PartsDataTable.php:240 - Part-DB1\src\DataTables\PartsDataTable.php:188 - part.table.lastModified Utolsó módosítás - - Part-DB1\src\DataTables\PartsDataTable.php:244 - Part-DB1\src\DataTables\PartsDataTable.php:192 - part.table.needsReview Ellenőrzés szükséges - - Part-DB1\src\DataTables\PartsDataTable.php:251 - Part-DB1\src\DataTables\PartsDataTable.php:199 - part.table.favorite Kedvenc - - Part-DB1\src\DataTables\PartsDataTable.php:258 - Part-DB1\src\DataTables\PartsDataTable.php:206 - part.table.manufacturingStatus Állapot - - 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 Ismeretlen - - 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 Bejelentve - - 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 Aktív - - 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 Nem ajánlott új tervekhez - - 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 Értéktelen - - 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 Megszűnt - - 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 Tömeg - - Part-DB1\src\DataTables\PartsDataTable.php:279 - Part-DB1\src\DataTables\PartsDataTable.php:227 - part.table.tags Címkék - - Part-DB1\src\DataTables\PartsDataTable.php:283 - Part-DB1\src\DataTables\PartsDataTable.php:231 - part.table.attachments Mellékletek - - Part-DB1\src\EventSubscriber\UserSystem\LoginSuccessSubscriber.php:82 - Part-DB1\src\EventSubscriber\LoginSuccessListener.php:82 - flash.login_successful Bejelentkezés sikeres - - 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 Ha ez az opció aktiválva van, az importálási folyamat megszakad, ha érvénytelen adatokat észlel. Ha nincs kiválasztva, az érvénytelen adatok figyelmen kívül hagyásra kerülnek, és az importáló megpróbálja importálni a többi elemet. - - 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 separator - - Part-DB1\src\Form\AdminPages\ImportType.php:93 - Part-DB1\src\Form\AdminPages\ImportType.php:93 - src\Form\ImportType.php:72 - parent.label Szülő elem - - Part-DB1\src\Form\AdminPages\ImportType.php:101 - Part-DB1\src\Form\AdminPages\ImportType.php:101 - src\Form\ImportType.php:75 - import.file Fájl - - Part-DB1\src\Form\AdminPages\ImportType.php:111 - Part-DB1\src\Form\AdminPages\ImportType.php:111 - src\Form\ImportType.php:78 - import.preserve_children Gyermek elemek megőrzése importáláskor - - 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 Megszakítás érvénytelen adatok esetén - - Part-DB1\src\Form\AdminPages\ImportType.php:132 - Part-DB1\src\Form\AdminPages\ImportType.php:132 - src\Form\ImportType.php:85 - import.btn Importálás - - Part-DB1\src\Form\AttachmentFormType.php:113 - Part-DB1\src\Form\AttachmentFormType.php:109 - attachment.edit.secure_file.help A privátként megjelölt melléklet csak hitelesített felhasználók számára érhető el megfelelő jogosultságokkal. Ha ez aktiválva van, nem generálódnak miniatűrök, és a fájlhoz való hozzáférés kevésbé hatékony. - - Part-DB1\src\Form\AttachmentFormType.php:127 - Part-DB1\src\Form\AttachmentFormType.php:123 - attachment.edit.url.help Itt megadhatsz egy külső fájl URL-jét, vagy egy kulcsszót, amelyet a beépített erőforrásokban való kereséshez használnak (például lábnyomok). - - Part-DB1\src\Form\AttachmentFormType.php:82 - Part-DB1\src\Form\AttachmentFormType.php:79 - attachment.edit.name Név - - Part-DB1\src\Form\AttachmentFormType.php:85 - Part-DB1\src\Form\AttachmentFormType.php:82 - attachment.edit.attachment_type Melléklet típusa - - Part-DB1\src\Form\AttachmentFormType.php:94 - Part-DB1\src\Form\AttachmentFormType.php:91 - attachment.edit.show_in_table Táblázatban megjelenítés - - Part-DB1\src\Form\AttachmentFormType.php:105 - Part-DB1\src\Form\AttachmentFormType.php:102 - attachment.edit.secure_file Privát melléklet - - 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 Külső fájl letöltése - - Part-DB1\src\Form\AttachmentFormType.php:146 - Part-DB1\src\Form\AttachmentFormType.php:142 - attachment.edit.file Fájl feltöltése - - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:86 - part.label Alkatrész - - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:87 - part_lot.label Alkatrész tétel - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.none Nincs - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.qr QR-kód (ajánlott) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code128 Code 128 (ajánlott) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code39 Code 39 (ajánlott) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code93 Code 93 - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.datamatrix Datamatrix - - Part-DB1\src\Form\LabelOptionsType.php:122 - label_options.lines_mode.html Helyőrzők - - 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 Ha itt a Twig-et választod, a tartalom mező Twig sablonként lesz értelmezve. További információkért lásd a <a href="https://twig.symfony.com/doc/3.x/templates.html">Twig dokumentációt</a> és a <a href="https://docs.part-db.de/usage/labels.html#twig-mode">Wiki-t</a>. - - Part-DB1\src\Form\LabelOptionsType.php:47 - label_options.page_size.label Címke mérete - - Part-DB1\src\Form\LabelOptionsType.php:66 - label_options.supported_elements.label Cél típusa - - Part-DB1\src\Form\LabelOptionsType.php:75 - label_options.barcode_type.label Vonalkód - - Part-DB1\src\Form\LabelOptionsType.php:102 - label_profile.lines.label Tartalom - - Part-DB1\src\Form\LabelOptionsType.php:111 - label_options.additional_css.label További stílusok (CSS) - - Part-DB1\src\Form\LabelOptionsType.php:120 - label_options.lines_mode.label Értelmező mód - - Part-DB1\src\Form\LabelOptionsType.php:51 - label_options.width.placeholder Szélesség - - Part-DB1\src\Form\LabelOptionsType.php:60 - label_options.height.placeholder Magasság - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:49 - label_generator.target_id.range_hint Több azonosítót is megadhatsz itt (például 1,2,3) és/vagy egy tartományt (1-3) több elemhez való címkék generálásához egyszerre. - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:46 - label_generator.target_id.label Cél azonosítók - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:59 - label_generator.update Frissítés - - Part-DB1\src\Form\LabelSystem\ScanDialogType.php:36 - scan_dialog.input Bemenet - - Part-DB1\src\Form\LabelSystem\ScanDialogType.php:44 - scan_dialog.submit Benyújtás - - Part-DB1\src\Form\ParameterType.php:41 - parameters.name.placeholder pl. DC áramerősítés - - Part-DB1\src\Form\ParameterType.php:50 - parameters.symbol.placeholder e.g. h_{FE} - - Part-DB1\src\Form\ParameterType.php:60 - parameters.text.placeholder pl. Tesztkörülmények - - Part-DB1\src\Form\ParameterType.php:71 - parameters.max.placeholder e.g. 350 - - Part-DB1\src\Form\ParameterType.php:82 - parameters.min.placeholder e.g. 100 - - Part-DB1\src\Form\ParameterType.php:93 - parameters.typical.placeholder e.g. 200 - - Part-DB1\src\Form\ParameterType.php:103 - parameters.unit.placeholder e.g. V - - Part-DB1\src\Form\ParameterType.php:114 - parameter.group.placeholder pl. Műszaki specifikációk - - Part-DB1\src\Form\Part\OrderdetailType.php:72 - Part-DB1\src\Form\Part\OrderdetailType.php:75 - orderdetails.edit.supplierpartnr Beszállítói alkatrészszám - - Part-DB1\src\Form\Part\OrderdetailType.php:81 - Part-DB1\src\Form\Part\OrderdetailType.php:84 - orderdetails.edit.supplier Beszállító - - Part-DB1\src\Form\Part\OrderdetailType.php:87 - Part-DB1\src\Form\Part\OrderdetailType.php:90 - orderdetails.edit.url Ajánlatra mutató link - - Part-DB1\src\Form\Part\OrderdetailType.php:93 - Part-DB1\src\Form\Part\OrderdetailType.php:96 - orderdetails.edit.obsolete Már nem kapható - - Part-DB1\src\Form\Part\OrderdetailType.php:75 - Part-DB1\src\Form\Part\OrderdetailType.php:78 - orderdetails.edit.supplierpartnr.placeholder e.g. BC 547 - - Part-DB1\src\Form\Part\PartBaseType.php:101 - Part-DB1\src\Form\Part\PartBaseType.php:99 - part.edit.name Név - - Part-DB1\src\Form\Part\PartBaseType.php:109 - Part-DB1\src\Form\Part\PartBaseType.php:107 - part.edit.description Leírás - - Part-DB1\src\Form\Part\PartBaseType.php:120 - Part-DB1\src\Form\Part\PartBaseType.php:118 - part.edit.mininstock Minimális készlet - - Part-DB1\src\Form\Part\PartBaseType.php:129 - Part-DB1\src\Form\Part\PartBaseType.php:127 - part.edit.category Kategória - - Part-DB1\src\Form\Part\PartBaseType.php:135 - Part-DB1\src\Form\Part\PartBaseType.php:133 - part.edit.footprint Lábnyom - - Part-DB1\src\Form\Part\PartBaseType.php:142 - Part-DB1\src\Form\Part\PartBaseType.php:140 - part.edit.tags Címkék - - Part-DB1\src\Form\Part\PartBaseType.php:154 - Part-DB1\src\Form\Part\PartBaseType.php:152 - part.edit.manufacturer.label Gyártó - - Part-DB1\src\Form\Part\PartBaseType.php:161 - Part-DB1\src\Form\Part\PartBaseType.php:159 - part.edit.manufacturer_url.label Termékoldalra mutató link - - Part-DB1\src\Form\Part\PartBaseType.php:167 - Part-DB1\src\Form\Part\PartBaseType.php:165 - part.edit.mpn Gyártói alkatrészszám - - Part-DB1\src\Form\Part\PartBaseType.php:173 - Part-DB1\src\Form\Part\PartBaseType.php:171 - part.edit.manufacturing_status Gyártási állapot - - Part-DB1\src\Form\Part\PartBaseType.php:181 - Part-DB1\src\Form\Part\PartBaseType.php:179 - part.edit.needs_review Ellenőrzés szükséges - - Part-DB1\src\Form\Part\PartBaseType.php:189 - Part-DB1\src\Form\Part\PartBaseType.php:187 - part.edit.is_favorite Kedvenc - - Part-DB1\src\Form\Part\PartBaseType.php:197 - Part-DB1\src\Form\Part\PartBaseType.php:195 - part.edit.mass Tömeg - - Part-DB1\src\Form\Part\PartBaseType.php:203 - Part-DB1\src\Form\Part\PartBaseType.php:201 - part.edit.partUnit Mértékegység - - Part-DB1\src\Form\Part\PartBaseType.php:212 - Part-DB1\src\Form\Part\PartBaseType.php:210 - part.edit.comment Jegyzetek - - Part-DB1\src\Form\Part\PartBaseType.php:250 - Part-DB1\src\Form\Part\PartBaseType.php:246 - part.edit.master_attachment Előnézeti kép - - Part-DB1\src\Form\Part\PartBaseType.php:295 - Part-DB1\src\Form\Part\PartBaseType.php:276 - src\Form\PartType.php:91 - part.edit.save Változtatások mentése - - Part-DB1\src\Form\Part\PartBaseType.php:296 - Part-DB1\src\Form\Part\PartBaseType.php:277 - src\Form\PartType.php:92 - part.edit.reset Változtatások visszaállítása - - Part-DB1\src\Form\Part\PartBaseType.php:105 - Part-DB1\src\Form\Part\PartBaseType.php:103 - part.edit.name.placeholder e.g. BC547 - - 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 - - Part-DB1\src\Form\Part\PartBaseType.php:123 - Part-DB1\src\Form\Part\PartBaseType.php:121 - part.editmininstock.placeholder e.g. 1 - - Part-DB1\src\Form\Part\PartLotType.php:69 - Part-DB1\src\Form\Part\PartLotType.php:69 - part_lot.edit.description Leírás - - Part-DB1\src\Form\Part\PartLotType.php:78 - Part-DB1\src\Form\Part\PartLotType.php:78 - part_lot.edit.location Tárolási helyszín - - Part-DB1\src\Form\Part\PartLotType.php:89 - Part-DB1\src\Form\Part\PartLotType.php:89 - part_lot.edit.amount Mennyiség - - Part-DB1\src\Form\Part\PartLotType.php:98 - Part-DB1\src\Form\Part\PartLotType.php:97 - part_lot.edit.instock_unknown Ismeretlen mennyiség - - Part-DB1\src\Form\Part\PartLotType.php:109 - Part-DB1\src\Form\Part\PartLotType.php:108 - part_lot.edit.needs_refill Utántöltés szükséges - - Part-DB1\src\Form\Part\PartLotType.php:120 - Part-DB1\src\Form\Part\PartLotType.php:119 - part_lot.edit.expiration_date Lejárati dátum - - Part-DB1\src\Form\Part\PartLotType.php:128 - Part-DB1\src\Form\Part\PartLotType.php:125 - part_lot.edit.comment Jegyzetek - - Part-DB1\src\Form\Permissions\PermissionsType.php:99 - Part-DB1\src\Form\Permissions\PermissionsType.php:99 - perm.group.other Egyéb - - Part-DB1\src\Form\TFAGoogleSettingsType.php:97 - Part-DB1\src\Form\TFAGoogleSettingsType.php:97 - tfa_google.enable Hitelesítő alkalmazás engedélyezése - - Part-DB1\src\Form\TFAGoogleSettingsType.php:101 - Part-DB1\src\Form\TFAGoogleSettingsType.php:101 - tfa_google.disable Hitelesítő alkalmazás deaktiválása - - Part-DB1\src\Form\TFAGoogleSettingsType.php:74 - Part-DB1\src\Form\TFAGoogleSettingsType.php:74 - google_confirmation Megerősítő kód - - Part-DB1\src\Form\UserSettingsType.php:108 - Part-DB1\src\Form\UserSettingsType.php:108 - src\Form\UserSettingsType.php:46 - user.timezone.label Időzóna - - Part-DB1\src\Form\UserSettingsType.php:133 - Part-DB1\src\Form\UserSettingsType.php:132 - user.currency.label Előnyben részesített pénznem - - Part-DB1\src\Form\UserSettingsType.php:140 - Part-DB1\src\Form\UserSettingsType.php:139 - src\Form\UserSettingsType.php:53 - save Változtatások alkalmazása - - Part-DB1\src\Form\UserSettingsType.php:141 - Part-DB1\src\Form\UserSettingsType.php:140 - src\Form\UserSettingsType.php:54 - reset Változtatások elvetése - - Part-DB1\src\Form\UserSettingsType.php:104 - Part-DB1\src\Form\UserSettingsType.php:104 - src\Form\UserSettingsType.php:45 - user_settings.language.placeholder Szerver szintű nyelv - - Part-DB1\src\Form\UserSettingsType.php:115 - Part-DB1\src\Form\UserSettingsType.php:115 - src\Form\UserSettingsType.php:48 - user_settings.timezone.placeholder Szerver szintű időzóna - - Part-DB1\src\Services\ElementTypeNameGenerator.php:79 - Part-DB1\src\Services\ElementTypeNameGenerator.php:79 - attachment.label Melléklet - - Part-DB1\src\Services\ElementTypeNameGenerator.php:81 - Part-DB1\src\Services\ElementTypeNameGenerator.php:81 - attachment_type.label Melléklet típusa - - Part-DB1\src\Services\ElementTypeNameGenerator.php:82 - Part-DB1\src\Services\ElementTypeNameGenerator.php:82 - project.label Projekt - - Part-DB1\src\Services\ElementTypeNameGenerator.php:85 - Part-DB1\src\Services\ElementTypeNameGenerator.php:85 - measurement_unit.label Mértékegység - - Part-DB1\src\Services\ElementTypeNameGenerator.php:90 - Part-DB1\src\Services\ElementTypeNameGenerator.php:90 - currency.label Pénznem - - Part-DB1\src\Services\ElementTypeNameGenerator.php:91 - Part-DB1\src\Services\ElementTypeNameGenerator.php:91 - orderdetail.label Rendelési részletek - - Part-DB1\src\Services\ElementTypeNameGenerator.php:92 - Part-DB1\src\Services\ElementTypeNameGenerator.php:92 - pricedetail.label Ár részletek - - Part-DB1\src\Services\ElementTypeNameGenerator.php:94 - Part-DB1\src\Services\ElementTypeNameGenerator.php:94 - user.label Felhasználó - - Part-DB1\src\Services\ElementTypeNameGenerator.php:95 - parameter.label Paraméter - - Part-DB1\src\Services\ElementTypeNameGenerator.php:96 - label_profile.label Címkeprofil @@ -5942,8 +3525,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:176 - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:161 new @@ -5952,214 +3533,126 @@ - - Part-DB1\src\Services\MarkdownParser.php:73 - Part-DB1\src\Services\MarkdownParser.php:73 - markdown.loading Markdown betöltése. Ha ez az üzenet nem tűnik el, próbáld meg újratölteni az oldalt. - - Part-DB1\src\Services\PasswordResetManager.php:98 - Part-DB1\src\Services\PasswordResetManager.php:98 - pw_reset.email.subject Jelszó visszaállítás a Part-DB fiókodhoz - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 - tree.tools.tools Eszközök - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:107 - src\Services\ToolsTreeBuilder.php:74 - tree.tools.edit Szerkesztés - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:110 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 - src\Services\ToolsTreeBuilder.php:81 - tree.tools.show Megjelenítés - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:111 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 - tree.tools.system Rendszer - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:123 - tree.tools.tools.label_dialog Címkegenerátor - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:130 - tree.tools.tools.label_scanner Szkenner - - 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 Melléklet típusok - - 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 Kategóriák - - 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 Projektek - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:167 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:144 - src\Services\ToolsTreeBuilder.php:68 - tree.tools.edit.suppliers Beszállítók - - 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 Gyártók - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:179 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:156 - tree.tools.edit.storelocation Tárolási helyszínek - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:185 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:162 - tree.tools.edit.footprint Lábnyomok - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:191 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:168 - tree.tools.edit.currency Pénznemek - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:174 - tree.tools.edit.measurement_unit Mértékegység - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 - tree.tools.edit.label_profile Címkeprofilok - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:209 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:180 - tree.tools.edit.part Új alkatrész - - 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 Összes alkatrész megjelenítése - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:232 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 - tree.tools.show.all_attachments Mellékletek @@ -6167,8 +3660,6 @@ - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:239 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:210 new @@ -6177,20 +3668,12 @@ - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:258 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:229 - tree.tools.system.users Felhasználók - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:264 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:235 - tree.tools.system.groups Csoportok @@ -6198,8 +3681,6 @@ - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:271 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:242 new @@ -6208,11 +3689,6 @@ - - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - src\Services\TreeBuilder.php:124 - entity.tree.new Új elem @@ -6220,7 +3696,6 @@ - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 obsolete @@ -6230,8 +3705,6 @@ - Part-DB1\templates\_navbar.html.twig:27 - templates\base.html.twig:88 obsolete @@ -6241,8 +3714,6 @@ - Part-DB1\src\Form\UserSettingsType.php:119 - src\Form\UserSettingsType.php:49 obsolete @@ -6252,8 +3723,6 @@ - Part-DB1\src\Form\UserSettingsType.php:129 - src\Form\UserSettingsType.php:50 obsolete @@ -6263,7 +3732,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:100 new obsolete @@ -6274,10 +3742,6 @@ - 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 @@ -6288,10 +3752,6 @@ - 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 @@ -6302,7 +3762,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:139 new obsolete @@ -6313,7 +3772,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:160 new obsolete @@ -6324,7 +3782,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:184 new obsolete @@ -6335,7 +3792,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:198 new obsolete @@ -6346,7 +3802,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:214 new obsolete @@ -6357,7 +3812,6 @@ - templates\base.html.twig:81 obsolete obsolete @@ -6368,7 +3822,6 @@ - templates\base.html.twig:109 obsolete obsolete @@ -6379,7 +3832,6 @@ - templates\base.html.twig:112 obsolete obsolete @@ -6670,7 +4122,6 @@ - src\Form\PartType.php:63 obsolete obsolete @@ -7331,7 +4782,6 @@ - templates\Parts\show_part_info.html.twig:194 obsolete obsolete @@ -7342,7 +4792,6 @@ - src\Form\PartType.php:83 obsolete obsolete @@ -14019,4 +11468,4 @@ - + \ No newline at end of file diff --git a/translations/messages.it.xlf b/translations/messages.it.xlf index 5de5b7e5..6cdcf00f 100644 --- a/translations/messages.it.xlf +++ b/translations/messages.it.xlf @@ -2,11 +2,6 @@ - - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - attachment_type.caption Tipi di file per allegati @@ -14,7 +9,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:12 new @@ -24,7 +18,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:16 new @@ -33,45 +26,18 @@ - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - templates\AdminPages\CategoryAdmin.html.twig:4 - templates\base.html.twig:163 - templates\base.html.twig:170 - templates\base.html.twig:197 - templates\base.html.twig:225 - category.labelp Categorie - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:19 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:11 - templates\AdminPages\CategoryAdmin.html.twig:8 - admin.options Opzioni - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - templates\AdminPages\CategoryAdmin.html.twig:9 - admin.advanced Avanzato @@ -79,7 +45,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:13 new @@ -89,7 +54,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:17 new @@ -98,30 +62,18 @@ - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - currency.caption Valuta - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - currency.iso_code.caption Codice ISO - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - currency.symbol.caption Simbolo della valuta @@ -129,7 +81,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:29 new @@ -139,7 +90,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:33 new @@ -149,7 +99,6 @@ - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 new @@ -159,7 +108,6 @@ - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:12 new @@ -168,89 +116,36 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Ricerca - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - templates\AdminPages\EntityAdminBase.html.twig:13 - templates\base.html.twig:166 - templates\base.html.twig:193 - templates\base.html.twig:221 - expandAll Espande tutto - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - templates\AdminPages\EntityAdminBase.html.twig:17 - templates\base.html.twig:167 - templates\base.html.twig:194 - templates\base.html.twig:222 - reduceAll Ridurre tutto - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - part.info.timetravel_hint Così appare il componente prima di %timestamp%. <i>Si prega di notare che questa funzione è sperimentale, quindi le informazioni potrebbero non essere corrette.</i> - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - templates\AdminPages\EntityAdminBase.html.twig:42 - standard.label Proprietà - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - templates\AdminPages\EntityAdminBase.html.twig:43 - infos.label Informazioni @@ -258,8 +153,6 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 new @@ -268,120 +161,66 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - templates\AdminPages\EntityAdminBase.html.twig:45 - export.label Esportare - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - templates\AdminPages\EntityAdminBase.html.twig:47 - import_export.label Importare / Esportare - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - mass_creation.label Creazione di massa - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - templates\AdminPages\EntityAdminBase.html.twig:59 - admin.common Comune - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - admin.attachments Allegati - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:90 - admin.parameters Parametri - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:179 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:167 - templates\AdminPages\EntityAdminBase.html.twig:142 - export_all.label Esportare tutti gli elementi - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:185 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:173 - mass_creation.help Ogni riga sarà interpretata come il nome di un elemento, che verrà creato. Si possono creare strutture nidificate tramite indentazione. - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - templates\AdminPages\EntityAdminBase.html.twig:35 - edit.caption Modificare l'elemento "%name" - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - templates\AdminPages\EntityAdminBase.html.twig:37 - new.caption Nuovo elemento - - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - templates\base.html.twig:172 - templates\base.html.twig:199 - templates\base.html.twig:227 - footprint.labelp Footprints @@ -389,7 +228,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:13 new @@ -399,7 +237,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:17 new @@ -408,22 +245,12 @@ - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - group.edit.caption Gruppi - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - user.edit.permissions Permessi @@ -431,7 +258,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:24 new @@ -441,7 +267,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:28 new @@ -450,27 +275,18 @@ - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:4 - label_profile.caption Profili di etichette - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:8 - label_profile.advanced Avanzate - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:9 - label_profile.comment Note @@ -478,7 +294,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:55 new @@ -488,7 +303,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:59 new @@ -497,11 +311,6 @@ - - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - templates\AdminPages\ManufacturerAdmin.html.twig:4 - manufacturer.caption Produttori @@ -509,7 +318,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:8 new @@ -519,7 +327,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:12 new @@ -528,10 +335,6 @@ - - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - measurement_unit.caption Unità di misura @@ -544,15 +347,6 @@ - - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:5 - Part-DB1\templates\_sidebar.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:8 - templates\base.html.twig:171 - templates\base.html.twig:198 - templates\base.html.twig:226 - storelocation.labelp Ubicazioni @@ -560,7 +354,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:32 new @@ -570,7 +363,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:36 new @@ -580,7 +372,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 new @@ -590,7 +381,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:20 new @@ -599,120 +389,66 @@ - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - user.edit.caption Utenti - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - user.edit.configuration Configurazione - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - user.edit.password Password - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - user.edit.tfa.caption Autenticazione a due fattori - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - user.edit.tfa.google_active App di autenticazione attiva - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - tfa_backup.remaining_tokens Conteggio dei codici di backup restanti - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - tfa_backup.generation_date Data di creazione dei codici di backup - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - user.edit.tfa.disabled Metodo disabilitato - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - user.edit.tfa.u2f_keys_count Chiavi di sicurezza attive - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_title Si vuole veramente procedere? - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_message Questo disabiliterà <b>tutti i metodi di autenticazione a due fattori attivi dell'utente</b> ed eliminerà i <b>codici di backup</b>! @@ -722,10 +458,6 @@ L'utente dovrà configurare nuovamente tutti i metodi di autenticazione a due fa - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - user.edit.tfa.disable_tfa.btn Disabilitare tutti i metodi di autenticazione a due fattori @@ -733,7 +465,6 @@ L'utente dovrà configurare nuovamente tutti i metodi di autenticazione a due fa - Part-DB1\templates\AdminPages\UserAdmin.html.twig:85 new @@ -743,7 +474,6 @@ L'utente dovrà configurare nuovamente tutti i metodi di autenticazione a due fa - Part-DB1\templates\AdminPages\UserAdmin.html.twig:89 new @@ -752,13 +482,6 @@ L'utente dovrà configurare nuovamente tutti i metodi di autenticazione a due fa - - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:63 - attachment.delete Eliminare @@ -771,102 +494,48 @@ L'utente dovrà configurare nuovamente tutti i metodi di autenticazione a due fa - - Part-DB1\templates\AdminPages\_attachments.html.twig:49 - Part-DB1\templates\Parts\edit\_attachments.html.twig:47 - Part-DB1\templates\AdminPages\_attachments.html.twig:47 - Part-DB1\templates\Parts\edit\_attachments.html.twig:45 - attachment.preview.alt Miniatura dell'allegato - - Part-DB1\templates\AdminPages\_attachments.html.twig:52 - Part-DB1\templates\Parts\edit\_attachments.html.twig:50 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 - Part-DB1\templates\AdminPages\_attachments.html.twig:50 - Part-DB1\templates\Parts\edit\_attachments.html.twig:48 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:45 - attachment.view_local Visualizza la copia locale - - Part-DB1\templates\AdminPages\_attachments.html.twig:58 - Part-DB1\templates\Parts\edit\_attachments.html.twig:56 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:43 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - Part-DB1\templates\AdminPages\_attachments.html.twig:56 - Part-DB1\templates\Parts\edit\_attachments.html.twig:54 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - attachment.file_not_found File non trovato - - Part-DB1\templates\AdminPages\_attachments.html.twig:66 - Part-DB1\templates\Parts\edit\_attachments.html.twig:64 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:48 - Part-DB1\templates\Parts\edit\_attachments.html.twig:62 - attachment.secure Allegato privato - - Part-DB1\templates\AdminPages\_attachments.html.twig:79 - Part-DB1\templates\Parts\edit\_attachments.html.twig:77 - Part-DB1\templates\AdminPages\_attachments.html.twig:77 - Part-DB1\templates\Parts\edit\_attachments.html.twig:75 - attachment.create Aggiungere un allegato - - Part-DB1\templates\AdminPages\_attachments.html.twig:84 - Part-DB1\templates\Parts\edit\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - Part-DB1\templates\AdminPages\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_attachments.html.twig:80 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - part_lot.edit.delete.confirm Si vuole davvero cancellare questo stock? Questa azione non potrà essere annullata! - - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - templates\AdminPages\_delete_form.html.twig:2 - entity.delete.confirm_title Si vuole veramente eliminare %name%? - - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - templates\AdminPages\_delete_form.html.twig:3 - entity.delete.message Questo non può essere annullato! @@ -875,11 +544,6 @@ I sub elementi saranno spostati verso l'alto. - - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - templates\AdminPages\_delete_form.html.twig:9 - entity.delete Cancella elemento @@ -887,12 +551,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:45 - Part-DB1\src\Form\Part\PartBaseType.php:286 - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:43 - Part-DB1\src\Form\Part\PartBaseType.php:267 new @@ -901,561 +559,300 @@ I sub elementi saranno spostati verso l'alto. - - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - templates\AdminPages\_delete_form.html.twig:12 - entity.delete.recursive Elimina ricorsivo (tutti i sub elementi) - - Part-DB1\templates\AdminPages\_duplicate.html.twig:3 - entity.duplicate Duplicare l'elemento - - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - templates\AdminPages\_export_form.html.twig:4 - src\Form\ImportType.php:67 - export.format Formato del file - - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - templates\AdminPages\_export_form.html.twig:16 - export.level Livello di verbosità - - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - templates\AdminPages\_export_form.html.twig:19 - export.level.simple Semplice - - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - templates\AdminPages\_export_form.html.twig:20 - export.level.extended Esteso - - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - templates\AdminPages\_export_form.html.twig:21 - export.level.full Completo - - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - templates\AdminPages\_export_form.html.twig:31 - export.include_children Includi i sub elementi nell'esportazione - - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - templates\AdminPages\_export_form.html.twig:39 - export.btn Esportare - - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - templates\AdminPages\EntityAdminBase.html.twig:94 - templates\Parts\edit_part_info.html.twig:12 - templates\Parts\show_part_info.html.twig:11 - id.label ID - - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:76 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:77 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:77 - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:59 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:60 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:53 - templates\AdminPages\EntityAdminBase.html.twig:101 - templates\Parts\show_part_info.html.twig:248 - createdAt Creato il - - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:73 - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:49 - templates\AdminPages\EntityAdminBase.html.twig:114 - templates\Parts\show_part_info.html.twig:263 - lastModified Ultima modifica - - Part-DB1\templates\AdminPages\_info.html.twig:38 - Part-DB1\templates\AdminPages\_info.html.twig:38 - entity.info.parts_count Numero di componenti con questo elemento - - Part-DB1\templates\AdminPages\_parameters.html.twig:6 - Part-DB1\templates\helper.twig:125 - Part-DB1\templates\Parts\edit\_specifications.html.twig:6 - specifications.property Parametro - - Part-DB1\templates\AdminPages\_parameters.html.twig:7 - Part-DB1\templates\Parts\edit\_specifications.html.twig:7 - specifications.symbol Simbolo - - Part-DB1\templates\AdminPages\_parameters.html.twig:8 - Part-DB1\templates\Parts\edit\_specifications.html.twig:8 - specifications.value_min Min. - - Part-DB1\templates\AdminPages\_parameters.html.twig:9 - Part-DB1\templates\Parts\edit\_specifications.html.twig:9 - specifications.value_typ Typ. - - Part-DB1\templates\AdminPages\_parameters.html.twig:10 - Part-DB1\templates\Parts\edit\_specifications.html.twig:10 - specifications.value_max Max. - - Part-DB1\templates\AdminPages\_parameters.html.twig:11 - Part-DB1\templates\Parts\edit\_specifications.html.twig:11 - specifications.unit Unità - - Part-DB1\templates\AdminPages\_parameters.html.twig:12 - Part-DB1\templates\Parts\edit\_specifications.html.twig:12 - specifications.text Testo - - Part-DB1\templates\AdminPages\_parameters.html.twig:13 - Part-DB1\templates\Parts\edit\_specifications.html.twig:13 - specifications.group Gruppo - - Part-DB1\templates\AdminPages\_parameters.html.twig:26 - Part-DB1\templates\Parts\edit\_specifications.html.twig:26 - specification.create Nuovo parametro - - Part-DB1\templates\AdminPages\_parameters.html.twig:31 - Part-DB1\templates\Parts\edit\_specifications.html.twig:31 - parameter.delete.confirm Si vuole davvero eliminare questo parametro? - - Part-DB1\templates\attachment_list.html.twig:3 - Part-DB1\templates\attachment_list.html.twig:3 - attachment.list.title Lista allegati - - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - part_list.loading.caption Caricamento - - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - part_list.loading.message Questo può richiedere un attimo. Se questo messaggio non scompare, provare a ricaricare la pagina. - - Part-DB1\templates\base.html.twig:68 - Part-DB1\templates\base.html.twig:68 - templates\base.html.twig:246 - vendor.base.javascript_hint Attivare Javascript per utilizzare tutte le funzionalità! - - Part-DB1\templates\base.html.twig:73 - Part-DB1\templates\base.html.twig:73 - sidebar.big.toggle Mostra/Nascondi la barra laterale - - Part-DB1\templates\base.html.twig:95 - Part-DB1\templates\base.html.twig:95 - templates\base.html.twig:271 - loading.caption Caricamento: - - Part-DB1\templates\base.html.twig:96 - Part-DB1\templates\base.html.twig:96 - templates\base.html.twig:272 - loading.message Questo può richiedere un attimo. Se questo messaggio non scompare, provare a ricaricare la pagina. - - Part-DB1\templates\base.html.twig:101 - Part-DB1\templates\base.html.twig:101 - templates\base.html.twig:277 - loading.bar Caricamento... - - Part-DB1\templates\base.html.twig:112 - Part-DB1\templates\base.html.twig:112 - templates\base.html.twig:288 - back_to_top Torna all'inizio della pagina - - Part-DB1\templates\Form\permissionLayout.html.twig:35 - Part-DB1\templates\Form\permissionLayout.html.twig:35 - permission.edit.permission Autorizzazioni - - Part-DB1\templates\Form\permissionLayout.html.twig:36 - Part-DB1\templates\Form\permissionLayout.html.twig:36 - permission.edit.value Valore - - Part-DB1\templates\Form\permissionLayout.html.twig:53 - Part-DB1\templates\Form\permissionLayout.html.twig:53 - permission.legend.title Spiegazione degli stati: - - Part-DB1\templates\Form\permissionLayout.html.twig:57 - Part-DB1\templates\Form\permissionLayout.html.twig:57 - permission.legend.disallow Vietato - - Part-DB1\templates\Form\permissionLayout.html.twig:61 - Part-DB1\templates\Form\permissionLayout.html.twig:61 - permission.legend.allow Consentito - - Part-DB1\templates\Form\permissionLayout.html.twig:65 - Part-DB1\templates\Form\permissionLayout.html.twig:65 - permission.legend.inherit Ereditare dal gruppo (genitore) - - Part-DB1\templates\helper.twig:3 - Part-DB1\templates\helper.twig:3 - bool.true Vero - - Part-DB1\templates\helper.twig:5 - Part-DB1\templates\helper.twig:5 - bool.false Falso - - Part-DB1\templates\helper.twig:92 - Part-DB1\templates\helper.twig:87 - Yes Si - - Part-DB1\templates\helper.twig:94 - Part-DB1\templates\helper.twig:89 - No No - - Part-DB1\templates\helper.twig:126 - specifications.value Valore - - Part-DB1\templates\homepage.html.twig:7 - Part-DB1\templates\homepage.html.twig:7 - templates\homepage.html.twig:7 - version.caption Versione - - Part-DB1\templates\homepage.html.twig:22 - Part-DB1\templates\homepage.html.twig:22 - templates\homepage.html.twig:19 - homepage.license Informazioni di licenza - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.caption Pagina del progetto - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.text Sorgenti, download, segnalazioni di bug, to-do-list ecc. possono essere trovati su <a href="%href%" class="link-external" target="_blank">GitHub project page</a> - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - homepage.help.caption Aiuto - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - homepage.help.text Aiuto e suggerimenti possono essere trovati in Wiki di <a href="%href%" class="link-external" target="_blank">GitHub page</a> - - Part-DB1\templates\homepage.html.twig:33 - Part-DB1\templates\homepage.html.twig:33 - templates\homepage.html.twig:30 - homepage.forum.caption Forum @@ -1463,8 +860,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\homepage.html.twig:45 - Part-DB1\templates\homepage.html.twig:45 new @@ -1473,138 +868,90 @@ I sub elementi saranno spostati verso l'alto. - - Part-DB1\templates\LabelSystem\dialog.html.twig:3 - Part-DB1\templates\LabelSystem\dialog.html.twig:6 - label_generator.title Generatore di etichette - - Part-DB1\templates\LabelSystem\dialog.html.twig:16 - label_generator.common Comune - - Part-DB1\templates\LabelSystem\dialog.html.twig:20 - label_generator.advanced Avanzate - - Part-DB1\templates\LabelSystem\dialog.html.twig:24 - label_generator.profiles Profili - - Part-DB1\templates\LabelSystem\dialog.html.twig:58 - label_generator.selected_profile Profilo attualmente selezionato - - Part-DB1\templates\LabelSystem\dialog.html.twig:62 - label_generator.edit_profile Modificare il profilo - - Part-DB1\templates\LabelSystem\dialog.html.twig:75 - label_generator.load_profile Caricare il profilo - - Part-DB1\templates\LabelSystem\dialog.html.twig:102 - label_generator.download Download - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:3 - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:5 - label_generator.label_btn Generare una etichetta - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:20 - label_generator.label_empty Nuova etichetta vuota - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:3 - label_scanner.title Lettore di etichette - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - label_scanner.no_cam_found.title Webcam non trovata - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - label_scanner.no_cam_found.text E' necessaria una webcam e bisogna dare il permesso di usare la funzione scanner. Si può inserire manualmente il codice a barre qui sotto. - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:27 - label_scanner.source_select Selezionare una sorgente - - Part-DB1\templates\LogSystem\log_list.html.twig:3 - Part-DB1\templates\LogSystem\log_list.html.twig:3 - log.list.title Registro di sistema @@ -1612,8 +959,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\LogSystem\_log_table.html.twig:1 - Part-DB1\templates\LogSystem\_log_table.html.twig:1 new @@ -1623,8 +968,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\LogSystem\_log_table.html.twig:2 - Part-DB1\templates\LogSystem\_log_table.html.twig:2 new @@ -1633,194 +976,114 @@ I sub elementi saranno spostati verso l'alto. - - Part-DB1\templates\mail\base.html.twig:24 - Part-DB1\templates\mail\base.html.twig:24 - mail.footer.email_sent_by Questa e-mail è stata inviata automaticamente da - - Part-DB1\templates\mail\base.html.twig:24 - Part-DB1\templates\mail\base.html.twig:24 - mail.footer.dont_reply Non rispondere a questa e-mail. - - Part-DB1\templates\mail\pw_reset.html.twig:6 - Part-DB1\templates\mail\pw_reset.html.twig:6 - email.hi %name% Buongiorno %name% - - Part-DB1\templates\mail\pw_reset.html.twig:7 - Part-DB1\templates\mail\pw_reset.html.twig:7 - email.pw_reset.message Qualcuno (si spera tu) ha richiesto una reimpostazione della tua password. Se questa richiesta non è stata fatta da te, ignora questa mail. - - Part-DB1\templates\mail\pw_reset.html.twig:9 - Part-DB1\templates\mail\pw_reset.html.twig:9 - email.pw_reset.button Clicca qui per reimpostare la password - - Part-DB1\templates\mail\pw_reset.html.twig:11 - Part-DB1\templates\mail\pw_reset.html.twig:11 - email.pw_reset.fallback Se questo non funziona, vai su <a href="%url%">%url%</a> e inserisci le seguenti informazioni - - Part-DB1\templates\mail\pw_reset.html.twig:16 - Part-DB1\templates\mail\pw_reset.html.twig:16 - email.pw_reset.username Nome utente - - Part-DB1\templates\mail\pw_reset.html.twig:19 - Part-DB1\templates\mail\pw_reset.html.twig:19 - email.pw_reset.token Token - - Part-DB1\templates\mail\pw_reset.html.twig:24 - Part-DB1\templates\mail\pw_reset.html.twig:24 - email.pw_reset.valid_unit %date% Il token di reset sarà valido fino al <i>%date%</i>. - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:18 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:78 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - orderdetail.delete Cancellare - - 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 Quantità minima d'ordine - - 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 Prezzo - - 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 per la quantità - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - pricedetail.create Aggiungi prezzo - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - templates\Parts\edit_part_info.html.twig:4 - part.edit.title Modifica il componente %name% - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - templates\Parts\edit_part_info.html.twig:9 - part.edit.card_title Modificare le informazioni sui componenti di - - 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 In generale - - 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 Produttore - - 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 Avanzate @@ -1887,279 +1150,156 @@ I sub elementi saranno spostati verso l'alto. - - 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 Stock - - 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 Allegati - - 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 Informazioni di acquisto - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 - part.edit.tab.specifications Parametri - - 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 Note - - 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 Creare nuovo componente - - Part-DB1\templates\Parts\edit\_lots.html.twig:5 - Part-DB1\templates\Parts\edit\_lots.html.twig:5 - part_lot.delete Cancellare - - Part-DB1\templates\Parts\edit\_lots.html.twig:28 - Part-DB1\templates\Parts\edit\_lots.html.twig:28 - part_lot.create Aggiungere stock - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 - orderdetail.create Aggiungere un distributore - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 - pricedetails.edit.delete.confirm Vuoi davvero cancellare questo prezzo? Questo non può essere annullato! - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:62 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:61 - orderdetails.edit.delete.confirm Vuoi davvero cancellare questo fornitore? Questo non può essere annullato! - - 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 Informazioni dettagliate per - - 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 Stock - - 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 Note - - Part-DB1\templates\Parts\info\show_part_info.html.twig:64 - part.info.specifications Parametri - - 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 Allegati - - 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 Informazioni di acquisto - - 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 Storico - - 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 Utilità - - 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 Informazioni estese - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 - attachment.name Nome - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 - attachment.attachment_type Tipo di allegato - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 - attachment.file_name Nome del file - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 - attachment.file_size Dimensioni del file - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:54 - attachment.preview Immagine di anteprima - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:67 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:50 - attachment.download_local Scarica la copia in locale @@ -2167,8 +1307,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 new @@ -2177,14 +1315,6 @@ I sub elementi saranno spostati verso l'alto. - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Unknown Sconosciuto @@ -2192,10 +1322,6 @@ I sub elementi saranno spostati verso l'alto. - 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 @@ -2205,8 +1331,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 new @@ -2215,49 +1339,24 @@ I sub elementi saranno spostati verso l'alto. - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - part.isFavorite Preferito - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 - part.minOrderAmount Importo minimo dell'ordine - - 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 Produttore - - 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 Nome @@ -2265,8 +1364,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Parts\info\_main_infos.html.twig:27 - Part-DB1\templates\Parts\info\_main_infos.html.twig:27 new @@ -2275,767 +1372,432 @@ I sub elementi saranno spostati verso l'alto. - - 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 Descrizione - - 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 Categoria - - 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 A stock - - 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 Scorta minima - - 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 Footprint - - 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 Prezzo medio - - Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - part.supplier.name Nome - - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - part.supplier.partnr Codice - - Part-DB1\templates\Parts\info\_order_infos.html.twig:28 - Part-DB1\templates\Parts\info\_order_infos.html.twig:28 - part.order.minamount Importo minimo - - Part-DB1\templates\Parts\info\_order_infos.html.twig:29 - Part-DB1\templates\Parts\info\_order_infos.html.twig:29 - part.order.price Prezzo - - Part-DB1\templates\Parts\info\_order_infos.html.twig:31 - Part-DB1\templates\Parts\info\_order_infos.html.twig:31 - part.order.single_price Prezzo unitario - - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 - Part-DB1\templates\Parts\info\_part_lots.html.twig:6 - part_lots.description Descrizione - - Part-DB1\templates\Parts\info\_part_lots.html.twig:8 - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 - part_lots.storage_location Ubicazione - - Part-DB1\templates\Parts\info\_part_lots.html.twig:9 - Part-DB1\templates\Parts\info\_part_lots.html.twig:8 - part_lots.amount Quantità - - Part-DB1\templates\Parts\info\_part_lots.html.twig:24 - Part-DB1\templates\Parts\info\_part_lots.html.twig:22 - part_lots.location_unknown Ubicazione sconosciuta - - Part-DB1\templates\Parts\info\_part_lots.html.twig:31 - Part-DB1\templates\Parts\info\_part_lots.html.twig:29 - part_lots.instock_unknown Quantità sconosciuta - - Part-DB1\templates\Parts\info\_part_lots.html.twig:40 - Part-DB1\templates\Parts\info\_part_lots.html.twig:38 - part_lots.expiration_date Data di scadenza - - Part-DB1\templates\Parts\info\_part_lots.html.twig:48 - Part-DB1\templates\Parts\info\_part_lots.html.twig:46 - part_lots.is_expired Scaduto - - Part-DB1\templates\Parts\info\_part_lots.html.twig:55 - Part-DB1\templates\Parts\info\_part_lots.html.twig:53 - part_lots.need_refill Necessita di rifornimento - - Part-DB1\templates\Parts\info\_picture.html.twig:15 - Part-DB1\templates\Parts\info\_picture.html.twig:15 - part.info.prev_picture Immagine precedente - - Part-DB1\templates\Parts\info\_picture.html.twig:19 - Part-DB1\templates\Parts\info\_picture.html.twig:19 - part.info.next_picture Immagine successiva - - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - part.mass.tooltip Peso - - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - part.needs_review.badge Necessita revisione - - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - part.favorite.badge Preferito - - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - part.obsolete.badge Non più disponibile - - Part-DB1\templates\Parts\info\_specifications.html.twig:10 - parameters.extracted_from_description Estratto automaticamente dalla descrizione - - Part-DB1\templates\Parts\info\_specifications.html.twig:15 - parameters.auto_extracted_from_comment Estratto automaticamente dalle note - - Part-DB1\templates\Parts\info\_tools.html.twig:6 - Part-DB1\templates\Parts\info\_tools.html.twig:4 - templates\Parts\show_part_info.html.twig:125 - part.edit.btn Modifica componente - - Part-DB1\templates\Parts\info\_tools.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:14 - templates\Parts\show_part_info.html.twig:135 - part.clone.btn Clona il componente - - Part-DB1\templates\Parts\info\_tools.html.twig:24 - Part-DB1\templates\Parts\lists\_action_bar.html.twig:4 - templates\Parts\show_part_info.html.twig:143 - part.create.btn Creare un nuovo componente - - Part-DB1\templates\Parts\info\_tools.html.twig:31 - Part-DB1\templates\Parts\info\_tools.html.twig:29 - part.delete.confirm_title Si vuole cancellare questo componente? - - Part-DB1\templates\Parts\info\_tools.html.twig:32 - Part-DB1\templates\Parts\info\_tools.html.twig:30 - part.delete.message Il componente e tutte le informazioni associate (stock, file allegati, ecc.) verranno cancellati. Questa azione non può essere annullata. - - Part-DB1\templates\Parts\info\_tools.html.twig:39 - Part-DB1\templates\Parts\info\_tools.html.twig:37 - part.delete Cancellare il componente - - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - parts_list.all.title Tutti i componenti - - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - parts_list.category.title Componenti con categoria - - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - parts_list.footprint.title Componenti con footprint - - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - parts_list.manufacturer.title Componenti con produttore - - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - parts_list.search.title Ricerca componenti - - 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 Componenti con ubicazione - - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - parts_list.supplier.title Componenti con fornitore - - Part-DB1\templates\Parts\lists\tags_list.html.twig:4 - Part-DB1\templates\Parts\lists\tags_list.html.twig:4 - parts_list.tags.title Componenti con tag - - Part-DB1\templates\Parts\lists\_info_card.html.twig:22 - Part-DB1\templates\Parts\lists\_info_card.html.twig:17 - entity.info.common.tab Di base - - Part-DB1\templates\Parts\lists\_info_card.html.twig:26 - Part-DB1\templates\Parts\lists\_info_card.html.twig:20 - entity.info.statistics.tab Statistiche - - Part-DB1\templates\Parts\lists\_info_card.html.twig:31 - entity.info.attachments.tab Allegati - - Part-DB1\templates\Parts\lists\_info_card.html.twig:37 - entity.info.parameters.tab Parametri - - Part-DB1\templates\Parts\lists\_info_card.html.twig:54 - Part-DB1\templates\Parts\lists\_info_card.html.twig:30 - entity.info.name Nome - - Part-DB1\templates\Parts\lists\_info_card.html.twig:58 - Part-DB1\templates\Parts\lists\_info_card.html.twig:96 - Part-DB1\templates\Parts\lists\_info_card.html.twig:34 - Part-DB1\templates\Parts\lists\_info_card.html.twig:67 - entity.info.parent Elemento padre - - Part-DB1\templates\Parts\lists\_info_card.html.twig:70 - Part-DB1\templates\Parts\lists\_info_card.html.twig:46 - entity.edit.btn Modificare - - Part-DB1\templates\Parts\lists\_info_card.html.twig:92 - Part-DB1\templates\Parts\lists\_info_card.html.twig:63 - entity.info.children_count Conteggio degli elementi figli - - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - tfa.check.title E' richiesta l'autenticazione a due fattori - - Part-DB1\templates\security\2fa_base_form.html.twig:39 - Part-DB1\templates\security\2fa_base_form.html.twig:39 - tfa.code.trusted_pc Questo è un computer attendibile (se questo è abilitato, non vengono eseguite altre query a due fattori su questo computer) - - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - login.btn Login - - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:42 - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:40 - user.logout Logout - - Part-DB1\templates\security\2fa_form.html.twig:6 - Part-DB1\templates\security\2fa_form.html.twig:6 - tfa.check.code.label Codice Authenticator app - - Part-DB1\templates\security\2fa_form.html.twig:10 - Part-DB1\templates\security\2fa_form.html.twig:10 - tfa.check.code.help Inserire il codice a 6 cifre dall'app Authenticator o uno dei codici di backup se l'Authenticator app non è disponibile. - - Part-DB1\templates\security\login.html.twig:3 - Part-DB1\templates\security\login.html.twig:3 - templates\security\login.html.twig:3 - login.title Login - - Part-DB1\templates\security\login.html.twig:7 - Part-DB1\templates\security\login.html.twig:7 - templates\security\login.html.twig:7 - login.card_title Login - - Part-DB1\templates\security\login.html.twig:31 - Part-DB1\templates\security\login.html.twig:31 - templates\security\login.html.twig:31 - login.username.label Nome utente - - Part-DB1\templates\security\login.html.twig:34 - Part-DB1\templates\security\login.html.twig:34 - templates\security\login.html.twig:34 - login.username.placeholder Nome utente - - Part-DB1\templates\security\login.html.twig:38 - Part-DB1\templates\security\login.html.twig:38 - templates\security\login.html.twig:38 - login.password.label Password - - Part-DB1\templates\security\login.html.twig:40 - Part-DB1\templates\security\login.html.twig:40 - templates\security\login.html.twig:40 - login.password.placeholder Password - - Part-DB1\templates\security\login.html.twig:50 - Part-DB1\templates\security\login.html.twig:50 - templates\security\login.html.twig:50 - login.rememberme Ricordami (non deve essere utilizzato su computer pubblici) - - Part-DB1\templates\security\login.html.twig:64 - Part-DB1\templates\security\login.html.twig:64 - pw_reset.password_forget Hai dimenticato il nome utente o la password? - - 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 Digitare una nuova password - - 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 Richiedere una nuova password - - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - tfa_u2f.http_warning Si sta accedendo a questa pagina utilizzando il metodo HTTP non sicuro, quindi molto probabilmente U2F non funzionerà (messaggio di errore "Bad Request"). Chiedi a un amministratore di impostare il metodo HTTPS sicuro se si vogliono usare le chiavi di sicurezza. - - Part-DB1\templates\security\U2F\u2f_login.html.twig:10 - Part-DB1\templates\security\U2F\u2f_register.html.twig:22 - 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 Si prega di inserire la chiave di sicurezza e premere il bottone! - - 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 Aggiungere una chiave di sicurezza - - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - tfa_u2f.explanation Con l'aiuto di una chiave di sicurezza compatibile con U2F/FIDO (ad es. YubiKey o NitroKey), è possibile ottenere un'autenticazione a due fattori user-friendly e sicura. Le chiavi di sicurezza possono essere registrate qui e, se è richiesta la verifica a due fattori, la chiave deve essere inserita solo tramite USB o digitata sul dispositivo tramite NFC. - - 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 Per garantire l'accesso anche se la chiave viene persa, si consiglia di registrare una seconda chiave come backup e conservarla in un luogo sicuro! - - 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 Aggiungere chiave di sicurezza - - 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 Ritornare ai parametri @@ -3043,10 +1805,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 new @@ -3056,8 +1814,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Statistics\statistics.html.twig:14 - Part-DB1\templates\Statistics\statistics.html.twig:14 new @@ -3067,8 +1823,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Statistics\statistics.html.twig:19 - Part-DB1\templates\Statistics\statistics.html.twig:19 new @@ -3078,8 +1832,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Statistics\statistics.html.twig:24 - Part-DB1\templates\Statistics\statistics.html.twig:24 new @@ -3089,12 +1841,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 new @@ -3104,12 +1850,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 new @@ -3119,8 +1859,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Statistics\statistics.html.twig:40 - Part-DB1\templates\Statistics\statistics.html.twig:40 new @@ -3130,8 +1868,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Statistics\statistics.html.twig:44 - Part-DB1\templates\Statistics\statistics.html.twig:44 new @@ -3141,8 +1877,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Statistics\statistics.html.twig:48 - Part-DB1\templates\Statistics\statistics.html.twig:48 new @@ -3152,8 +1886,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Statistics\statistics.html.twig:65 - Part-DB1\templates\Statistics\statistics.html.twig:65 new @@ -3163,8 +1895,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Statistics\statistics.html.twig:69 - Part-DB1\templates\Statistics\statistics.html.twig:69 new @@ -3174,8 +1904,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Statistics\statistics.html.twig:73 - Part-DB1\templates\Statistics\statistics.html.twig:73 new @@ -3185,8 +1913,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Statistics\statistics.html.twig:77 - Part-DB1\templates\Statistics\statistics.html.twig:77 new @@ -3196,8 +1922,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Statistics\statistics.html.twig:81 - Part-DB1\templates\Statistics\statistics.html.twig:81 new @@ -3207,8 +1931,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Statistics\statistics.html.twig:85 - Part-DB1\templates\Statistics\statistics.html.twig:85 new @@ -3218,8 +1940,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Statistics\statistics.html.twig:89 - Part-DB1\templates\Statistics\statistics.html.twig:89 new @@ -3229,8 +1949,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Statistics\statistics.html.twig:93 - Part-DB1\templates\Statistics\statistics.html.twig:93 new @@ -3240,8 +1958,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Statistics\statistics.html.twig:110 - Part-DB1\templates\Statistics\statistics.html.twig:110 new @@ -3251,8 +1967,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Statistics\statistics.html.twig:114 - Part-DB1\templates\Statistics\statistics.html.twig:114 new @@ -3262,8 +1976,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Statistics\statistics.html.twig:118 - Part-DB1\templates\Statistics\statistics.html.twig:118 new @@ -3273,8 +1985,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Statistics\statistics.html.twig:122 - Part-DB1\templates\Statistics\statistics.html.twig:122 new @@ -3284,8 +1994,6 @@ I sub elementi saranno spostati verso l'alto. - Part-DB1\templates\Statistics\statistics.html.twig:126 - Part-DB1\templates\Statistics\statistics.html.twig:126 new @@ -3294,302 +2002,156 @@ I sub elementi saranno spostati verso l'alto. - - 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 Codici di backup - - Part-DB1\templates\Users\backup_codes.html.twig:12 - Part-DB1\templates\Users\backup_codes.html.twig:12 - tfa_backup.codes.explanation Stampare questi codici e conservare in luogo sicuro! - - Part-DB1\templates\Users\backup_codes.html.twig:13 - Part-DB1\templates\Users\backup_codes.html.twig:13 - tfa_backup.codes.help Se non si ha più accesso al proprio dispositivo con l'app Authenticator (smartphone perso, perdita di dati, ecc.) si può utilizzare uno di questi codici per accedere all'account ed eventualmente impostare una nuova app Authenticator. Ciascuno di questi codici può essere utilizzato una volta, si consiglia di eliminare i codici già utilizzati. Chiunque abbia accesso a questi codici può potenzialmente accedere al suo account, quindi sono da tenere in un luogo sicuro. - - Part-DB1\templates\Users\backup_codes.html.twig:16 - Part-DB1\templates\Users\backup_codes.html.twig:16 - tfa_backup.username Nome utente - - Part-DB1\templates\Users\backup_codes.html.twig:29 - Part-DB1\templates\Users\backup_codes.html.twig:29 - tfa_backup.codes.page_generated_on Pagina generata il %date% - - Part-DB1\templates\Users\backup_codes.html.twig:32 - Part-DB1\templates\Users\backup_codes.html.twig:32 - tfa_backup.codes.print Stampa - - Part-DB1\templates\Users\backup_codes.html.twig:35 - Part-DB1\templates\Users\backup_codes.html.twig:35 - tfa_backup.codes.copy_clipboard Copiare negli appunti - - 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 Informazioni utente - - 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 Nome - - 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 Cognome - - 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 Indirizzo email - - 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 Dipartimento - - 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 Nome utente - - 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 Gruppo: - - Part-DB1\templates\Users\user_info.html.twig:67 - Part-DB1\templates\Users\user_info.html.twig:67 - user.permissions Permessi - - 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 Impostazioni utente - - 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 Dati personali - - 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 Configurazione - - 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 Cambio password - - Part-DB1\templates\Users\_2fa_settings.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:6 - user.settings.2fa_settings Autenticazione a due fattori - - Part-DB1\templates\Users\_2fa_settings.html.twig:13 - Part-DB1\templates\Users\_2fa_settings.html.twig:13 - tfa.settings.google.tab App di autenticazione - - Part-DB1\templates\Users\_2fa_settings.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:17 - tfa.settings.bakup.tab Codici di backup - - Part-DB1\templates\Users\_2fa_settings.html.twig:21 - Part-DB1\templates\Users\_2fa_settings.html.twig:21 - tfa.settings.u2f.tab Chiavi di sicurezza (U2F) - - Part-DB1\templates\Users\_2fa_settings.html.twig:25 - Part-DB1\templates\Users\_2fa_settings.html.twig:25 - tfa.settings.trustedDevices.tab Dispositivi attendibili - - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - tfa_google.disable.confirm_title Si vuole veramente disabilitare l'App di autenticazione? - - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - tfa_google.disable.confirm_message Se si disabilita l'app di autenticazione, tutti i codici di backup verranno eliminati, quindi potrebbe essere necessario ristamparli.<br> @@ -3597,262 +2159,156 @@ Attenzione: senza l'autenticazione a due fattori il suo account non è ben prote - - Part-DB1\templates\Users\_2fa_settings.html.twig:39 - Part-DB1\templates\Users\_2fa_settings.html.twig:39 - tfa_google.disabled_message App di autenticazione disattivata! - - Part-DB1\templates\Users\_2fa_settings.html.twig:48 - Part-DB1\templates\Users\_2fa_settings.html.twig:48 - tfa_google.step.download Scaricare un'App di autenticazione (ad esempio <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 Scansionare con l'app il codice QR adiacente o inserire i dati manualmente - - Part-DB1\templates\Users\_2fa_settings.html.twig:50 - Part-DB1\templates\Users\_2fa_settings.html.twig:50 - tfa_google.step.input_code Digitare il codice generato nel campo sotto e confermare - - Part-DB1\templates\Users\_2fa_settings.html.twig:51 - Part-DB1\templates\Users\_2fa_settings.html.twig:51 - tfa_google.step.download_backup Stampare i propri codici di backup e conservarli in un luogo sicuro - - Part-DB1\templates\Users\_2fa_settings.html.twig:58 - Part-DB1\templates\Users\_2fa_settings.html.twig:58 - tfa_google.manual_setup Configurazione manuale - - Part-DB1\templates\Users\_2fa_settings.html.twig:62 - Part-DB1\templates\Users\_2fa_settings.html.twig:62 - tfa_google.manual_setup.type Tipo - - Part-DB1\templates\Users\_2fa_settings.html.twig:63 - Part-DB1\templates\Users\_2fa_settings.html.twig:63 - tfa_google.manual_setup.username Nome utente - - Part-DB1\templates\Users\_2fa_settings.html.twig:64 - Part-DB1\templates\Users\_2fa_settings.html.twig:64 - tfa_google.manual_setup.secret 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 Numero di caratteri - - Part-DB1\templates\Users\_2fa_settings.html.twig:74 - Part-DB1\templates\Users\_2fa_settings.html.twig:74 - tfa_google.enabled_message App Authenticator abilitata - - Part-DB1\templates\Users\_2fa_settings.html.twig:83 - Part-DB1\templates\Users\_2fa_settings.html.twig:83 - tfa_backup.disabled Codici di backup disattivati. Impostare l'app Authenticator per attivare i codici di backup. - - 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 Questi codici di backup permettono di accedere al tuo account anche se si perde il dispositivo con l'app Authenticator. Stampare i codici e conservarli in un luogo sicuro. - - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - tfa_backup.reset_codes.confirm_title Reimpostare davvero i codici? - - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - tfa_backup.reset_codes.confirm_message Questo cancellerà tutti i codici precedenti e genererà un set di nuovi codici. Questa azione non può essere annullata. Stampare i nuovi codici e depositarli in un luogo sicuro! - - Part-DB1\templates\Users\_2fa_settings.html.twig:91 - Part-DB1\templates\Users\_2fa_settings.html.twig:91 - tfa_backup.enabled Codici di backup attivati - - Part-DB1\templates\Users\_2fa_settings.html.twig:99 - Part-DB1\templates\Users\_2fa_settings.html.twig:99 - tfa_backup.show_codes Visualizzare i codici di backup - - Part-DB1\templates\Users\_2fa_settings.html.twig:114 - Part-DB1\templates\Users\_2fa_settings.html.twig:114 - tfa_u2f.table_caption Chiavi di sicurezza registrate - - Part-DB1\templates\Users\_2fa_settings.html.twig:115 - Part-DB1\templates\Users\_2fa_settings.html.twig:115 - tfa_u2f.delete_u2f.confirm_title Rimuovere questa chiave di sicurezza? - - Part-DB1\templates\Users\_2fa_settings.html.twig:116 - Part-DB1\templates\Users\_2fa_settings.html.twig:116 - tfa_u2f.delete_u2f.confirm_message Se si rimuove questa chiave, non sarà più possibile effettuare il login con essa. Se non ci sono chiavi di sicurezza, l'autenticazione a due fattori è disabilitata. - - Part-DB1\templates\Users\_2fa_settings.html.twig:123 - Part-DB1\templates\Users\_2fa_settings.html.twig:123 - tfa_u2f.keys.name Nome della chiave - - Part-DB1\templates\Users\_2fa_settings.html.twig:124 - Part-DB1\templates\Users\_2fa_settings.html.twig:124 - tfa_u2f.keys.added_date Data di registrazione - - Part-DB1\templates\Users\_2fa_settings.html.twig:134 - Part-DB1\templates\Users\_2fa_settings.html.twig:134 - tfa_u2f.key_delete Cancellare la chiave - - Part-DB1\templates\Users\_2fa_settings.html.twig:141 - Part-DB1\templates\Users\_2fa_settings.html.twig:141 - tfa_u2f.no_keys_registered Nessuna chiave di sicurezza registrata - - Part-DB1\templates\Users\_2fa_settings.html.twig:144 - Part-DB1\templates\Users\_2fa_settings.html.twig:144 - tfa_u2f.add_new_key Registrare una nuova chiave di sicurezza - - Part-DB1\templates\Users\_2fa_settings.html.twig:148 - Part-DB1\templates\Users\_2fa_settings.html.twig:148 - tfa_trustedDevices.explanation Quando si controlla il secondo fattore, il computer corrente può essere contrassegnato come affidabile, quindi non sono più necessari controlli a due fattori su questo computer. @@ -3861,326 +2317,168 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - - Part-DB1\templates\Users\_2fa_settings.html.twig:149 - Part-DB1\templates\Users\_2fa_settings.html.twig:149 - tfa_trustedDevices.invalidate.confirm_title Rimuovere tutti i computer attendibili? - - Part-DB1\templates\Users\_2fa_settings.html.twig:150 - Part-DB1\templates\Users\_2fa_settings.html.twig:150 - tfa_trustedDevices.invalidate.confirm_message Bisognerà eseguire di nuovo l'autenticazione a due fattori su tutti i computer. Assicurati di avere il tuo dispositivo a due fattori a portata di mano. - - Part-DB1\templates\Users\_2fa_settings.html.twig:154 - Part-DB1\templates\Users\_2fa_settings.html.twig:154 - tfa_trustedDevices.invalidate.btn Rimuovere tutti i dispositivi attendibili - - Part-DB1\templates\_navbar.html.twig:4 - Part-DB1\templates\_navbar.html.twig:4 - templates\base.html.twig:29 - sidebar.toggle Commuta la barra laterale - - Part-DB1\templates\_navbar.html.twig:22 - navbar.scanner.link Scanner - - Part-DB1\templates\_navbar.html.twig:38 - Part-DB1\templates\_navbar.html.twig:36 - templates\base.html.twig:97 - user.loggedin.label Loggato come - - Part-DB1\templates\_navbar.html.twig:44 - Part-DB1\templates\_navbar.html.twig:42 - templates\base.html.twig:103 - user.login Login - - Part-DB1\templates\_navbar.html.twig:50 - Part-DB1\templates\_navbar.html.twig:48 - ui.toggle_darkmode Modalità scura - - Part-DB1\templates\_navbar.html.twig:54 - Part-DB1\src\Form\UserSettingsType.php:97 - Part-DB1\templates\_navbar.html.twig:52 - Part-DB1\src\Form\UserSettingsType.php:97 - templates\base.html.twig:106 - src\Form\UserSettingsType.php:44 - user.language_select Cambia lingua - - Part-DB1\templates\_navbar_search.html.twig:4 - Part-DB1\templates\_navbar_search.html.twig:4 - templates\base.html.twig:49 - search.options.label Opzioni di ricerca - - Part-DB1\templates\_navbar_search.html.twig:23 - tags.label Tags - - Part-DB1\templates\_navbar_search.html.twig:27 - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - templates\base.html.twig:60 - templates\Parts\show_part_info.html.twig:36 - src\Form\PartType.php:77 - storelocation.label Ubicazione - - Part-DB1\templates\_navbar_search.html.twig:36 - Part-DB1\templates\_navbar_search.html.twig:31 - templates\base.html.twig:65 - ordernumber.label.short Codice del fornitore - - Part-DB1\templates\_navbar_search.html.twig:40 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - Part-DB1\templates\_navbar_search.html.twig:35 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - templates\base.html.twig:67 - supplier.label Fornitore - - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_navbar_search.html.twig:56 - templates\base.html.twig:77 - search.regexmatching Corrispondenza Reg.Ex. - - Part-DB1\templates\_sidebar.html.twig:37 - Part-DB1\templates\_sidebar.html.twig:12 - Part-DB1\templates\_sidebar.html.twig:37 - Part-DB1\templates\_sidebar.html.twig:12 - templates\base.html.twig:175 - templates\base.html.twig:189 - templates\base.html.twig:202 - templates\base.html.twig:230 - project.labelp Progetti - - Part-DB1\templates\_sidebar.html.twig:2 - Part-DB1\templates\_sidebar.html.twig:2 - templates\base.html.twig:165 - templates\base.html.twig:192 - templates\base.html.twig:220 - actions Azioni - - Part-DB1\templates\_sidebar.html.twig:6 - Part-DB1\templates\_sidebar.html.twig:6 - templates\base.html.twig:169 - templates\base.html.twig:196 - templates\base.html.twig:224 - datasource Fonte dati - - Part-DB1\templates\_sidebar.html.twig:10 - Part-DB1\templates\_sidebar.html.twig:10 - templates\base.html.twig:173 - templates\base.html.twig:200 - templates\base.html.twig:228 - manufacturer.labelp Produttori - - Part-DB1\templates\_sidebar.html.twig:11 - Part-DB1\templates\_sidebar.html.twig:11 - templates\base.html.twig:174 - templates\base.html.twig:201 - templates\base.html.twig:229 - supplier.labelp Fornitori - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:213 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:293 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:293 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:181 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:243 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:268 - attachment.download_failed Il download dell'allegato è fallito. - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:222 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:190 - entity.edit_flash Modifiche salvate con successo. - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:231 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:196 - entity.edit_flash.invalid Non è stato possibile salvare le modifiche! Controllare i dati! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:302 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:252 - entity.created_flash Elemento creato. - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:308 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:258 - entity.created_flash.invalid Non è stato possibile creare l'elemento. Controllare i dati! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:399 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:352 - src\Controller\BaseAdminController.php:154 - attachment_type.deleted Elemento cancellato! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:401 - Part-DB1\src\Controller\UserController.php:109 - Part-DB1\src\Controller\UserSettingsController.php:159 - Part-DB1\src\Controller\UserSettingsController.php:193 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:354 - Part-DB1\src\Controller\UserController.php:101 - Part-DB1\src\Controller\UserSettingsController.php:150 - Part-DB1\src\Controller\UserSettingsController.php:182 - csfr_invalid Token CSFR non valido! Ricaricare questa pagina o contattare un amministratore se il problema persiste! - - Part-DB1\src\Controller\LabelController.php:125 - label_generator.no_entities_found Nessun elemento trovato @@ -4188,8 +2486,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\src\Controller\LogController.php:149 - Part-DB1\src\Controller\LogController.php:154 new @@ -4199,8 +2495,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\src\Controller\LogController.php:156 - Part-DB1\src\Controller\LogController.php:160 new @@ -4210,8 +2504,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\src\Controller\LogController.php:176 - Part-DB1\src\Controller\LogController.php:180 new @@ -4221,8 +2513,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\src\Controller\LogController.php:178 - Part-DB1\src\Controller\LogController.php:182 new @@ -4232,8 +2522,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\src\Controller\LogController.php:185 - Part-DB1\src\Controller\LogController.php:189 new @@ -4243,8 +2531,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\src\Controller\LogController.php:187 - Part-DB1\src\Controller\LogController.php:191 new @@ -4254,8 +2540,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\src\Controller\LogController.php:194 - Part-DB1\src\Controller\LogController.php:198 new @@ -4265,8 +2549,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\src\Controller\LogController.php:196 - Part-DB1\src\Controller\LogController.php:200 new @@ -4276,8 +2558,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\src\Controller\LogController.php:199 - Part-DB1\src\Controller\LogController.php:203 new @@ -4286,306 +2566,168 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - - Part-DB1\src\Controller\PartController.php:182 - Part-DB1\src\Controller\PartController.php:182 - src\Controller\PartController.php:80 - part.edited_flash Modifiche salvate! - - Part-DB1\src\Controller\PartController.php:216 - Part-DB1\src\Controller\PartController.php:219 - part.deleted Componente eliminato con successo. - - Part-DB1\src\Controller\PartController.php:302 - Part-DB1\src\Controller\PartController.php:277 - Part-DB1\src\Controller\PartController.php:317 - src\Controller\PartController.php:113 - src\Controller\PartController.php:142 - part.created_flash Componente creato! - - Part-DB1\src\Controller\PartController.php:308 - Part-DB1\src\Controller\PartController.php:283 - part.created_flash.invalid Errore durante la creazione: per favore verificare i dati immessi! - - Part-DB1\src\Controller\ScanController.php:68 - Part-DB1\src\Controller\ScanController.php:90 - scan.qr_not_found Nessun elemento corrispondente al dato codice a barre. - - Part-DB1\src\Controller\ScanController.php:71 - scan.format_unknown Formato sconosciuto! - - Part-DB1\src\Controller\ScanController.php:86 - scan.qr_success Elemento trovato. - - Part-DB1\src\Controller\SecurityController.php:114 - Part-DB1\src\Controller\SecurityController.php:109 - pw_reset.user_or_email Nome utente / Email - - Part-DB1\src\Controller\SecurityController.php:131 - Part-DB1\src\Controller\SecurityController.php:126 - pw_reset.request.success La richiesta di reimpostazione della password è andata a buon fine! Controllare la casella e-mail per ulteriori istruzioni. - - Part-DB1\src\Controller\SecurityController.php:162 - Part-DB1\src\Controller\SecurityController.php:160 - pw_reset.username Nome utente - - 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 Nome utente o Token non valido! Per favore controllare i dati immessi. - - Part-DB1\src\Controller\SecurityController.php:196 - Part-DB1\src\Controller\SecurityController.php:194 - pw_reset.new_pw.success La password è stata reimpostata correttamente. Ora puoi accedere con la tua nuova password. - - Part-DB1\src\Controller\UserController.php:107 - Part-DB1\src\Controller\UserController.php:99 - user.edit.reset_success Tutti i metodi di autenticazione a due fattori sono stati disabilitati con successo. - - Part-DB1\src\Controller\UserSettingsController.php:101 - Part-DB1\src\Controller\UserSettingsController.php:92 - tfa_backup.no_codes_enabled Nessun codice di backup abilitato! - - Part-DB1\src\Controller\UserSettingsController.php:138 - Part-DB1\src\Controller\UserSettingsController.php:132 - tfa_u2f.u2f_delete.not_existing Non esiste una chiave di sicurezza con questo ID. - - Part-DB1\src\Controller\UserSettingsController.php:145 - Part-DB1\src\Controller\UserSettingsController.php:139 - tfa_u2f.u2f_delete.access_denied Non puoi eliminare le chiavi di sicurezza di altri utenti! - - Part-DB1\src\Controller\UserSettingsController.php:153 - Part-DB1\src\Controller\UserSettingsController.php:147 - tfa.u2f.u2f_delete.success Chiave di sicurezza rimossa correttamente. - - Part-DB1\src\Controller\UserSettingsController.php:188 - Part-DB1\src\Controller\UserSettingsController.php:180 - tfa_trustedDevice.invalidate.success Dispositivi attendibili reimpostati correttamente. - - Part-DB1\src\Controller\UserSettingsController.php:235 - Part-DB1\src\Controller\UserSettingsController.php:226 - src\Controller\UserController.php:98 - user.settings.saved_flash Impostazioni salvate! - - Part-DB1\src\Controller\UserSettingsController.php:297 - Part-DB1\src\Controller\UserSettingsController.php:288 - src\Controller\UserController.php:130 - user.settings.pw_changed_flash Password cambiata! - - Part-DB1\src\Controller\UserSettingsController.php:317 - Part-DB1\src\Controller\UserSettingsController.php:306 - user.settings.2fa.google.activated App di autenticazione attivata con successo. - - Part-DB1\src\Controller\UserSettingsController.php:328 - Part-DB1\src\Controller\UserSettingsController.php:315 - user.settings.2fa.google.disabled App di autenticazione disattivata con successo. - - Part-DB1\src\Controller\UserSettingsController.php:346 - Part-DB1\src\Controller\UserSettingsController.php:332 - user.settings.2fa.backup_codes.regenerated I nuovi codici di backup sono stati generati. - - Part-DB1\src\DataTables\AttachmentDataTable.php:153 - Part-DB1\src\DataTables\AttachmentDataTable.php:153 - attachment.table.filesize Dimensioni del file - - 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 vero - - 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 falso - - Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:128 - Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:119 - log.target_deleted eliminato @@ -4593,8 +2735,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\src\DataTables\Column\RevertLogColumn.php:57 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:60 new @@ -4604,8 +2744,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\src\DataTables\Column\RevertLogColumn.php:63 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:66 new @@ -4615,8 +2753,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\src\DataTables\Column\RevertLogColumn.php:83 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:86 new @@ -4625,70 +2761,42 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - - 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 Data - - Part-DB1\src\DataTables\LogDataTable.php:183 - Part-DB1\src\DataTables\LogDataTable.php:171 - log.type Evento - - Part-DB1\src\DataTables\LogDataTable.php:191 - Part-DB1\src\DataTables\LogDataTable.php:179 - log.level Livello - - Part-DB1\src\DataTables\LogDataTable.php:200 - Part-DB1\src\DataTables\LogDataTable.php:188 - log.user Utente - - Part-DB1\src\DataTables\LogDataTable.php:213 - Part-DB1\src\DataTables\LogDataTable.php:201 - log.target_type Tipo di target - - Part-DB1\src\DataTables\LogDataTable.php:226 - Part-DB1\src\DataTables\LogDataTable.php:214 - log.target Target @@ -4696,8 +2804,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\src\DataTables\LogDataTable.php:231 - Part-DB1\src\DataTables\LogDataTable.php:218 new @@ -4706,100 +2812,60 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - - Part-DB1\src\DataTables\PartsDataTable.php:168 - Part-DB1\src\DataTables\PartsDataTable.php:116 - part.table.name Nome - - 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 Descrizione - - Part-DB1\src\DataTables\PartsDataTable.php:185 - Part-DB1\src\DataTables\PartsDataTable.php:133 - part.table.category Categoria - - Part-DB1\src\DataTables\PartsDataTable.php:190 - Part-DB1\src\DataTables\PartsDataTable.php:138 - part.table.footprint Footprint - - Part-DB1\src\DataTables\PartsDataTable.php:194 - Part-DB1\src\DataTables\PartsDataTable.php:142 - part.table.manufacturer Produttore - - Part-DB1\src\DataTables\PartsDataTable.php:197 - Part-DB1\src\DataTables\PartsDataTable.php:145 - part.table.storeLocations Ubicazione - - Part-DB1\src\DataTables\PartsDataTable.php:216 - Part-DB1\src\DataTables\PartsDataTable.php:164 - part.table.amount Quantità - - Part-DB1\src\DataTables\PartsDataTable.php:224 - Part-DB1\src\DataTables\PartsDataTable.php:172 - part.table.minamount Scorta minima - - Part-DB1\src\DataTables\PartsDataTable.php:232 - Part-DB1\src\DataTables\PartsDataTable.php:180 - part.table.partUnit Unità di misura @@ -4812,864 +2878,522 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - - Part-DB1\src\DataTables\PartsDataTable.php:236 - Part-DB1\src\DataTables\PartsDataTable.php:184 - part.table.addedDate Creato il - - Part-DB1\src\DataTables\PartsDataTable.php:240 - Part-DB1\src\DataTables\PartsDataTable.php:188 - part.table.lastModified Ultima modifica - - Part-DB1\src\DataTables\PartsDataTable.php:244 - Part-DB1\src\DataTables\PartsDataTable.php:192 - part.table.needsReview Necessita revisione - - Part-DB1\src\DataTables\PartsDataTable.php:251 - Part-DB1\src\DataTables\PartsDataTable.php:199 - part.table.favorite Favorito - - Part-DB1\src\DataTables\PartsDataTable.php:258 - Part-DB1\src\DataTables\PartsDataTable.php:206 - part.table.manufacturingStatus Stato - - 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 Sconosciuto - - 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 Annunciato - - 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 Attivo - - 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 Non raccomandato per nuovi progetti - - 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 Fine vita - - 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 Fuori produzione - - 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 Peso - - Part-DB1\src\DataTables\PartsDataTable.php:279 - Part-DB1\src\DataTables\PartsDataTable.php:227 - part.table.tags Tags - - Part-DB1\src\DataTables\PartsDataTable.php:283 - Part-DB1\src\DataTables\PartsDataTable.php:231 - part.table.attachments Allegati - - Part-DB1\src\EventSubscriber\UserSystem\LoginSuccessSubscriber.php:82 - Part-DB1\src\EventSubscriber\LoginSuccessListener.php:82 - flash.login_successful Accesso riuscito - - 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 Quando questa opzione è abilitata, il rilevamento di dati non validi annullerà l'intero processo. Se questa opzione non è attiva, le voci non valide vengono ignorate e si continuerà a tentare l'importazione delle altre voci. - - Part-DB1\src\Form\AdminPages\ImportType.php:86 - Part-DB1\src\Form\AdminPages\ImportType.php:86 - src\Form\ImportType.php:70 - import.csv_separator Separatore CSV - - Part-DB1\src\Form\AdminPages\ImportType.php:93 - Part-DB1\src\Form\AdminPages\ImportType.php:93 - src\Form\ImportType.php:72 - parent.label Elemento padre - - Part-DB1\src\Form\AdminPages\ImportType.php:101 - Part-DB1\src\Form\AdminPages\ImportType.php:101 - src\Form\ImportType.php:75 - import.file 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 Importa anche sottoelementi - - 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 Interrompi in caso di dati non validi - - Part-DB1\src\Form\AdminPages\ImportType.php:132 - Part-DB1\src\Form\AdminPages\ImportType.php:132 - src\Form\ImportType.php:85 - import.btn Importare - - Part-DB1\src\Form\AttachmentFormType.php:113 - Part-DB1\src\Form\AttachmentFormType.php:109 - attachment.edit.secure_file.help Un allegato contrassegnato come privato è accessibile solo da un utente loggato che ha l'autorizzazione corrispondente. Quando questa opzione è attiva, non vengono generate miniature e l'accesso al file è più lento. - - Part-DB1\src\Form\AttachmentFormType.php:127 - Part-DB1\src\Form\AttachmentFormType.php:123 - attachment.edit.url.help Qui è possibile inserire un URL per un file esterno o cercare inserendo una parola chiave nelle risorse incorporate (ad es. footprints). - - Part-DB1\src\Form\AttachmentFormType.php:82 - Part-DB1\src\Form\AttachmentFormType.php:79 - attachment.edit.name Nome - - Part-DB1\src\Form\AttachmentFormType.php:85 - Part-DB1\src\Form\AttachmentFormType.php:82 - attachment.edit.attachment_type Tipo di allegato - - Part-DB1\src\Form\AttachmentFormType.php:94 - Part-DB1\src\Form\AttachmentFormType.php:91 - attachment.edit.show_in_table Mostrare in tabella - - Part-DB1\src\Form\AttachmentFormType.php:105 - Part-DB1\src\Form\AttachmentFormType.php:102 - attachment.edit.secure_file Allegato privato - - 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 Download di un file esterno - - Part-DB1\src\Form\AttachmentFormType.php:146 - Part-DB1\src\Form\AttachmentFormType.php:142 - attachment.edit.file Upload del file - - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:86 - part.label Componente - - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:87 - part_lot.label Lotto di componenti - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.none Nessuno - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.qr QR Code (raccomandato) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code128 Code 128 (raccomandato) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code39 Code 39 (raccomandato) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code93 Code 93 - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.datamatrix Datamatrix - - Part-DB1\src\Form\LabelOptionsType.php:122 - label_options.lines_mode.html Segnaposto - - 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 Se si seleziona Twig qui, il campo del contenuto viene interpretato come modello Twig. Vedere <a href="https://twig.symfony.com/doc/3.x/templates.html">Twig documentation</a> e <a href="https://docs.part-db.de/usage/labels.html#twig-mode">Wiki</a> per ulteriori informazioni. - - Part-DB1\src\Form\LabelOptionsType.php:47 - label_options.page_size.label Misure dell'etichetta - - Part-DB1\src\Form\LabelOptionsType.php:66 - label_options.supported_elements.label Tipo di target - - Part-DB1\src\Form\LabelOptionsType.php:75 - label_options.barcode_type.label Codice a barre - - Part-DB1\src\Form\LabelOptionsType.php:102 - label_profile.lines.label Contenuto - - Part-DB1\src\Form\LabelOptionsType.php:111 - label_options.additional_css.label Stile aggiuntivo (CSS) - - Part-DB1\src\Form\LabelOptionsType.php:120 - label_options.lines_mode.label Parser mode - - Part-DB1\src\Form\LabelOptionsType.php:51 - label_options.width.placeholder Larghezza - - Part-DB1\src\Form\LabelOptionsType.php:60 - label_options.height.placeholder Altezza - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:49 - label_generator.target_id.range_hint Qui puoi specificare più ID (ad esempio 1,2,3) e/o un intervallo (1-3) per generare etichette per più elementi contemporaneamente. - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:46 - label_generator.target_id.label Target ID - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:59 - label_generator.update Aggiornamento - - Part-DB1\src\Form\LabelSystem\ScanDialogType.php:36 - scan_dialog.input Input - - Part-DB1\src\Form\LabelSystem\ScanDialogType.php:44 - scan_dialog.submit Invia - - Part-DB1\src\Form\ParameterType.php:41 - parameters.name.placeholder es. DC Current Gain - - Part-DB1\src\Form\ParameterType.php:50 - parameters.symbol.placeholder es. h_{FE} - - Part-DB1\src\Form\ParameterType.php:60 - parameters.text.placeholder es. Test conditions - - Part-DB1\src\Form\ParameterType.php:71 - parameters.max.placeholder es. 350 - - Part-DB1\src\Form\ParameterType.php:82 - parameters.min.placeholder es. 100 - - Part-DB1\src\Form\ParameterType.php:93 - parameters.typical.placeholder es. 200 - - Part-DB1\src\Form\ParameterType.php:103 - parameters.unit.placeholder es. V - - Part-DB1\src\Form\ParameterType.php:114 - parameter.group.placeholder es. Specifiche tecniche - - Part-DB1\src\Form\Part\OrderdetailType.php:72 - Part-DB1\src\Form\Part\OrderdetailType.php:75 - orderdetails.edit.supplierpartnr Codice componente del fornitore - - Part-DB1\src\Form\Part\OrderdetailType.php:81 - Part-DB1\src\Form\Part\OrderdetailType.php:84 - orderdetails.edit.supplier Fornitore - - Part-DB1\src\Form\Part\OrderdetailType.php:87 - Part-DB1\src\Form\Part\OrderdetailType.php:90 - orderdetails.edit.url Link all'offerta - - Part-DB1\src\Form\Part\OrderdetailType.php:93 - Part-DB1\src\Form\Part\OrderdetailType.php:96 - orderdetails.edit.obsolete Non più disponibile - - Part-DB1\src\Form\Part\OrderdetailType.php:75 - Part-DB1\src\Form\Part\OrderdetailType.php:78 - orderdetails.edit.supplierpartnr.placeholder es. BC 547 - - Part-DB1\src\Form\Part\PartBaseType.php:101 - Part-DB1\src\Form\Part\PartBaseType.php:99 - part.edit.name Nome - - Part-DB1\src\Form\Part\PartBaseType.php:109 - Part-DB1\src\Form\Part\PartBaseType.php:107 - part.edit.description Descrizione - - Part-DB1\src\Form\Part\PartBaseType.php:120 - Part-DB1\src\Form\Part\PartBaseType.php:118 - part.edit.mininstock Scorta minima - - Part-DB1\src\Form\Part\PartBaseType.php:129 - Part-DB1\src\Form\Part\PartBaseType.php:127 - part.edit.category Categoria - - Part-DB1\src\Form\Part\PartBaseType.php:135 - Part-DB1\src\Form\Part\PartBaseType.php:133 - part.edit.footprint Footprint - - Part-DB1\src\Form\Part\PartBaseType.php:142 - Part-DB1\src\Form\Part\PartBaseType.php:140 - part.edit.tags Tags - - Part-DB1\src\Form\Part\PartBaseType.php:154 - Part-DB1\src\Form\Part\PartBaseType.php:152 - part.edit.manufacturer.label Produttore - - Part-DB1\src\Form\Part\PartBaseType.php:161 - Part-DB1\src\Form\Part\PartBaseType.php:159 - part.edit.manufacturer_url.label Link alla pagina del prodotto - - Part-DB1\src\Form\Part\PartBaseType.php:167 - Part-DB1\src\Form\Part\PartBaseType.php:165 - part.edit.mpn Codice componente del produttore - - Part-DB1\src\Form\Part\PartBaseType.php:173 - Part-DB1\src\Form\Part\PartBaseType.php:171 - part.edit.manufacturing_status Stato di produzione - - Part-DB1\src\Form\Part\PartBaseType.php:181 - Part-DB1\src\Form\Part\PartBaseType.php:179 - part.edit.needs_review Necessita revisione - - Part-DB1\src\Form\Part\PartBaseType.php:189 - Part-DB1\src\Form\Part\PartBaseType.php:187 - part.edit.is_favorite Preferito - - Part-DB1\src\Form\Part\PartBaseType.php:197 - Part-DB1\src\Form\Part\PartBaseType.php:195 - part.edit.mass Peso - - Part-DB1\src\Form\Part\PartBaseType.php:203 - Part-DB1\src\Form\Part\PartBaseType.php:201 - part.edit.partUnit Unità di misura @@ -5682,287 +3406,168 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - - Part-DB1\src\Form\Part\PartBaseType.php:212 - Part-DB1\src\Form\Part\PartBaseType.php:210 - part.edit.comment Note - - Part-DB1\src\Form\Part\PartBaseType.php:250 - Part-DB1\src\Form\Part\PartBaseType.php:246 - part.edit.master_attachment Immagine di anteprima - - Part-DB1\src\Form\Part\PartBaseType.php:295 - Part-DB1\src\Form\Part\PartBaseType.php:276 - src\Form\PartType.php:91 - part.edit.save Salvare le modifiche - - Part-DB1\src\Form\Part\PartBaseType.php:296 - Part-DB1\src\Form\Part\PartBaseType.php:277 - src\Form\PartType.php:92 - part.edit.reset Annullare le modifiche - - Part-DB1\src\Form\Part\PartBaseType.php:105 - Part-DB1\src\Form\Part\PartBaseType.php:103 - part.edit.name.placeholder es. BC547 - - Part-DB1\src\Form\Part\PartBaseType.php:115 - Part-DB1\src\Form\Part\PartBaseType.php:113 - part.edit.description.placeholder es. NPN 45V, 0,1A, 0,5W - - Part-DB1\src\Form\Part\PartBaseType.php:123 - Part-DB1\src\Form\Part\PartBaseType.php:121 - part.editmininstock.placeholder es. 1 - - Part-DB1\src\Form\Part\PartLotType.php:69 - Part-DB1\src\Form\Part\PartLotType.php:69 - part_lot.edit.description Descrizione - - Part-DB1\src\Form\Part\PartLotType.php:78 - Part-DB1\src\Form\Part\PartLotType.php:78 - part_lot.edit.location Ubicazione - - Part-DB1\src\Form\Part\PartLotType.php:89 - Part-DB1\src\Form\Part\PartLotType.php:89 - part_lot.edit.amount Quantità - - Part-DB1\src\Form\Part\PartLotType.php:98 - Part-DB1\src\Form\Part\PartLotType.php:97 - part_lot.edit.instock_unknown Quantità sconosciuta - - Part-DB1\src\Form\Part\PartLotType.php:109 - Part-DB1\src\Form\Part\PartLotType.php:108 - part_lot.edit.needs_refill Deve essere rifornito - - Part-DB1\src\Form\Part\PartLotType.php:120 - Part-DB1\src\Form\Part\PartLotType.php:119 - part_lot.edit.expiration_date Data di scadenza - - Part-DB1\src\Form\Part\PartLotType.php:128 - Part-DB1\src\Form\Part\PartLotType.php:125 - part_lot.edit.comment Note - - Part-DB1\src\Form\Permissions\PermissionsType.php:99 - Part-DB1\src\Form\Permissions\PermissionsType.php:99 - perm.group.other Varie - - Part-DB1\src\Form\TFAGoogleSettingsType.php:97 - Part-DB1\src\Form\TFAGoogleSettingsType.php:97 - tfa_google.enable Attivare l'app Authenticator - - Part-DB1\src\Form\TFAGoogleSettingsType.php:101 - Part-DB1\src\Form\TFAGoogleSettingsType.php:101 - tfa_google.disable Disattivare l'app Authenticator - - Part-DB1\src\Form\TFAGoogleSettingsType.php:74 - Part-DB1\src\Form\TFAGoogleSettingsType.php:74 - google_confirmation Codice di conferma - - Part-DB1\src\Form\UserSettingsType.php:108 - Part-DB1\src\Form\UserSettingsType.php:108 - src\Form\UserSettingsType.php:46 - user.timezone.label Fuso orario - - Part-DB1\src\Form\UserSettingsType.php:133 - Part-DB1\src\Form\UserSettingsType.php:132 - user.currency.label Valuta preferita - - Part-DB1\src\Form\UserSettingsType.php:140 - Part-DB1\src\Form\UserSettingsType.php:139 - src\Form\UserSettingsType.php:53 - save Applicare le modifiche - - Part-DB1\src\Form\UserSettingsType.php:141 - Part-DB1\src\Form\UserSettingsType.php:140 - src\Form\UserSettingsType.php:54 - reset Scartare le modifiche - - Part-DB1\src\Form\UserSettingsType.php:104 - Part-DB1\src\Form\UserSettingsType.php:104 - src\Form\UserSettingsType.php:45 - user_settings.language.placeholder Lingua del server - - Part-DB1\src\Form\UserSettingsType.php:115 - Part-DB1\src\Form\UserSettingsType.php:115 - src\Form\UserSettingsType.php:48 - user_settings.timezone.placeholder Fuso orario del server - - Part-DB1\src\Services\ElementTypeNameGenerator.php:79 - Part-DB1\src\Services\ElementTypeNameGenerator.php:79 - attachment.label Allegato - - Part-DB1\src\Services\ElementTypeNameGenerator.php:81 - Part-DB1\src\Services\ElementTypeNameGenerator.php:81 - attachment_type.label Tipo di allegato - - Part-DB1\src\Services\ElementTypeNameGenerator.php:82 - Part-DB1\src\Services\ElementTypeNameGenerator.php:82 - project.label Progetto - - Part-DB1\src\Services\ElementTypeNameGenerator.php:85 - Part-DB1\src\Services\ElementTypeNameGenerator.php:85 - measurement_unit.label Unità di misura @@ -5975,58 +3580,36 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - - Part-DB1\src\Services\ElementTypeNameGenerator.php:90 - Part-DB1\src\Services\ElementTypeNameGenerator.php:90 - currency.label Valuta - - Part-DB1\src\Services\ElementTypeNameGenerator.php:91 - Part-DB1\src\Services\ElementTypeNameGenerator.php:91 - orderdetail.label Dettagli dell'ordine - - Part-DB1\src\Services\ElementTypeNameGenerator.php:92 - Part-DB1\src\Services\ElementTypeNameGenerator.php:92 - pricedetail.label Informazioni sul prezzo - - Part-DB1\src\Services\ElementTypeNameGenerator.php:94 - Part-DB1\src\Services\ElementTypeNameGenerator.php:94 - user.label Utente - - Part-DB1\src\Services\ElementTypeNameGenerator.php:95 - parameter.label Parametro - - Part-DB1\src\Services\ElementTypeNameGenerator.php:96 - label_profile.label Profilo di etichetta @@ -6034,8 +3617,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:176 - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:161 new @@ -6044,174 +3625,102 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - - Part-DB1\src\Services\MarkdownParser.php:73 - Part-DB1\src\Services\MarkdownParser.php:73 - markdown.loading Markdown in caricamento. Se questo dura troppo a lungo, provare a ricaricare la pagina! - - Part-DB1\src\Services\PasswordResetManager.php:98 - Part-DB1\src\Services\PasswordResetManager.php:98 - pw_reset.email.subject Reimpostazione della password per l'account Part-DB - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 - tree.tools.tools Utilità - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:107 - src\Services\ToolsTreeBuilder.php:74 - tree.tools.edit Modificare - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:110 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 - src\Services\ToolsTreeBuilder.php:81 - tree.tools.show Visualizzare - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:111 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 - tree.tools.system Sistema - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:123 - tree.tools.tools.label_dialog Generatore di etichette - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:130 - tree.tools.tools.label_scanner 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 Tipo di allegato - - 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 Categorie - - 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 Progetti - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:167 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:144 - src\Services\ToolsTreeBuilder.php:68 - tree.tools.edit.suppliers Fornitori - - 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 Produttori - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:179 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:156 - tree.tools.edit.storelocation Ubicazioni - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:185 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:162 - tree.tools.edit.footprint Footprints - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:191 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:168 - tree.tools.edit.currency Valute - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:174 - tree.tools.edit.measurement_unit Unità di misura @@ -6224,40 +3733,24 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 - tree.tools.edit.label_profile Profili di etichette - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:209 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:180 - tree.tools.edit.part Nuovo componente - - 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 Tutti i componenti - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:232 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 - tree.tools.show.all_attachments Allegati @@ -6265,8 +3758,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:239 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:210 new @@ -6275,20 +3766,12 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:258 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:229 - tree.tools.system.users Utenti - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:264 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:235 - tree.tools.system.groups Gruppi @@ -6296,8 +3779,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:271 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:242 new @@ -6306,11 +3787,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - src\Services\TreeBuilder.php:124 - entity.tree.new Nuovo elemento @@ -6318,7 +3794,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 obsolete @@ -6328,8 +3803,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\templates\_navbar.html.twig:27 - templates\base.html.twig:88 obsolete @@ -6339,8 +3812,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\src\Form\UserSettingsType.php:119 - src\Form\UserSettingsType.php:49 obsolete @@ -6350,8 +3821,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\src\Form\UserSettingsType.php:129 - src\Form\UserSettingsType.php:50 obsolete @@ -6361,7 +3830,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:100 new obsolete @@ -6372,10 +3840,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - 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 @@ -6386,10 +3850,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - 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 @@ -6400,7 +3860,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:139 new obsolete @@ -6411,7 +3870,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:160 new obsolete @@ -6422,7 +3880,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:184 new obsolete @@ -6433,7 +3890,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:198 new obsolete @@ -6444,7 +3900,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:214 new obsolete @@ -6455,7 +3910,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - templates\base.html.twig:81 obsolete obsolete @@ -6466,7 +3920,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - templates\base.html.twig:109 obsolete obsolete @@ -6477,7 +3930,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - templates\base.html.twig:112 obsolete obsolete @@ -6768,7 +4220,6 @@ Se è stato fatto in modo errato o se un computer non è più attendibile, puoi - src\Form\PartType.php:63 obsolete obsolete @@ -7441,7 +4892,6 @@ Element 3 - templates\Parts\show_part_info.html.twig:194 obsolete obsolete @@ -7452,7 +4902,6 @@ Element 3 - src\Form\PartType.php:83 obsolete obsolete @@ -12308,4 +9757,4 @@ Notare che non è possibile impersonare un utente disattivato. Quando si prova a - + \ No newline at end of file diff --git a/translations/messages.ja.xlf b/translations/messages.ja.xlf index acb0fdd9..98c5c77a 100644 --- a/translations/messages.ja.xlf +++ b/translations/messages.ja.xlf @@ -2,11 +2,6 @@ - - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - attachment_type.caption 添付ファイルの種類 @@ -14,7 +9,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:12 new @@ -24,7 +18,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:16 new @@ -33,45 +26,18 @@ - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - templates\AdminPages\CategoryAdmin.html.twig:4 - templates\base.html.twig:163 - templates\base.html.twig:170 - templates\base.html.twig:197 - templates\base.html.twig:225 - category.labelp カテゴリー - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:19 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:11 - templates\AdminPages\CategoryAdmin.html.twig:8 - admin.options オプション - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - templates\AdminPages\CategoryAdmin.html.twig:9 - admin.advanced 詳細 @@ -79,7 +45,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:13 new @@ -89,7 +54,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:17 new @@ -98,30 +62,18 @@ - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - currency.caption 通貨 - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - currency.iso_code.caption ISOコード - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - currency.symbol.caption 通貨記号 @@ -129,7 +81,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:29 new @@ -139,7 +90,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:33 new @@ -148,89 +98,36 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder 検索 - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - templates\AdminPages\EntityAdminBase.html.twig:13 - templates\base.html.twig:166 - templates\base.html.twig:193 - templates\base.html.twig:221 - expandAll すべて開く - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - templates\AdminPages\EntityAdminBase.html.twig:17 - templates\base.html.twig:167 - templates\base.html.twig:194 - templates\base.html.twig:222 - reduceAll すべて閉じる - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - part.info.timetravel_hint %timestamp%より前の部品はこのように表示されます。<i>これは実験的機能です。情報が正しくない可能性があります。</i> - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - templates\AdminPages\EntityAdminBase.html.twig:42 - standard.label プロパティ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - templates\AdminPages\EntityAdminBase.html.twig:43 - infos.label 情報 @@ -238,8 +135,6 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 new @@ -248,120 +143,66 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - templates\AdminPages\EntityAdminBase.html.twig:45 - export.label エクスポート - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - templates\AdminPages\EntityAdminBase.html.twig:47 - import_export.label インポート / エクスポート - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - mass_creation.label 一括作成 - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - templates\AdminPages\EntityAdminBase.html.twig:59 - admin.common 一般 - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - admin.attachments 添付ファイル - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:90 - admin.parameters パラメーター - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:179 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:167 - templates\AdminPages\EntityAdminBase.html.twig:142 - export_all.label すべてエクスポートする - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:185 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:173 - mass_creation.help 各行は作成する要素名として解釈されます。 - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - templates\AdminPages\EntityAdminBase.html.twig:35 - edit.caption "%name"を編集 - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - templates\AdminPages\EntityAdminBase.html.twig:37 - new.caption 新規作成 - - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - templates\base.html.twig:172 - templates\base.html.twig:199 - templates\base.html.twig:227 - footprint.labelp フットプリント @@ -369,7 +210,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:13 new @@ -379,7 +219,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:17 new @@ -388,22 +227,12 @@ - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - group.edit.caption グループ - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - user.edit.permissions 権限 @@ -411,7 +240,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:24 new @@ -421,7 +249,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:28 new @@ -430,27 +257,18 @@ - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:4 - label_profile.caption ラベルのプロファイル - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:8 - label_profile.advanced 詳細 - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:9 - label_profile.comment コメント @@ -458,7 +276,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:55 new @@ -468,7 +285,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:59 new @@ -477,11 +293,6 @@ - - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - templates\AdminPages\ManufacturerAdmin.html.twig:4 - manufacturer.caption メーカー @@ -489,7 +300,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:8 new @@ -499,7 +309,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:12 new @@ -508,10 +317,6 @@ - - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - measurement_unit.caption 単位 @@ -524,15 +329,6 @@ - - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:5 - Part-DB1\templates\_sidebar.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:8 - templates\base.html.twig:171 - templates\base.html.twig:198 - templates\base.html.twig:226 - storelocation.labelp 保管場所 @@ -540,7 +336,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:32 new @@ -550,7 +345,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:36 new @@ -560,7 +354,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 new @@ -570,7 +363,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:20 new @@ -579,120 +371,66 @@ - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - user.edit.caption ユーザー - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - user.edit.configuration 設定 - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - user.edit.password パスワード - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - user.edit.tfa.caption 二要素認証 - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - user.edit.tfa.google_active 認証アプリが有効 - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - tfa_backup.remaining_tokens バックアップコードの残り数 - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - tfa_backup.generation_date バックアップコードの生成日 - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - user.edit.tfa.disabled メソッドが有効化されていません - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - user.edit.tfa.u2f_keys_count セキュリティ キーを有効化 - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_title 本当に続けますか? - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_message これは<b>ユーザーの有効な二要素認証すべて</b>と<b>バックアップコード</b>を削除します。 @@ -703,10 +441,6 @@ - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - user.edit.tfa.disable_tfa.btn すべての二要素認証を無効化する @@ -714,7 +448,6 @@ - Part-DB1\templates\AdminPages\UserAdmin.html.twig:85 new @@ -724,7 +457,6 @@ - Part-DB1\templates\AdminPages\UserAdmin.html.twig:89 new @@ -733,129 +465,60 @@ - - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:63 - attachment.delete 削除 - - Part-DB1\templates\AdminPages\_attachments.html.twig:41 - Part-DB1\templates\Parts\edit\_attachments.html.twig:38 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:35 - Part-DB1\src\DataTables\AttachmentDataTable.php:159 - Part-DB1\templates\Parts\edit\_attachments.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:159 - attachment.external 外部 - - Part-DB1\templates\AdminPages\_attachments.html.twig:49 - Part-DB1\templates\Parts\edit\_attachments.html.twig:47 - Part-DB1\templates\AdminPages\_attachments.html.twig:47 - Part-DB1\templates\Parts\edit\_attachments.html.twig:45 - attachment.preview.alt 添付ファイルのサムネイル - - Part-DB1\templates\AdminPages\_attachments.html.twig:52 - Part-DB1\templates\Parts\edit\_attachments.html.twig:50 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 - Part-DB1\templates\AdminPages\_attachments.html.twig:50 - Part-DB1\templates\Parts\edit\_attachments.html.twig:48 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:45 - attachment.view ビュー - - Part-DB1\templates\AdminPages\_attachments.html.twig:58 - Part-DB1\templates\Parts\edit\_attachments.html.twig:56 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:43 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - Part-DB1\templates\AdminPages\_attachments.html.twig:56 - Part-DB1\templates\Parts\edit\_attachments.html.twig:54 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - attachment.file_not_found ファイルが見つかりません - - Part-DB1\templates\AdminPages\_attachments.html.twig:66 - Part-DB1\templates\Parts\edit\_attachments.html.twig:64 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:48 - Part-DB1\templates\Parts\edit\_attachments.html.twig:62 - attachment.secure プライベートな添付ファイル - - Part-DB1\templates\AdminPages\_attachments.html.twig:79 - Part-DB1\templates\Parts\edit\_attachments.html.twig:77 - Part-DB1\templates\AdminPages\_attachments.html.twig:77 - Part-DB1\templates\Parts\edit\_attachments.html.twig:75 - attachment.create 添付ファイルを追加 - - Part-DB1\templates\AdminPages\_attachments.html.twig:84 - Part-DB1\templates\Parts\edit\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - Part-DB1\templates\AdminPages\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_attachments.html.twig:80 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - part_lot.edit.delete.confirm 本当にこの在庫を削除しますか?この操作はやり直しできません。 - - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - templates\AdminPages\_delete_form.html.twig:2 - entity.delete.confirm_title 本当に%name%を削除しますか? - - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - templates\AdminPages\_delete_form.html.twig:3 - entity.delete.message この操作はやり直しできません! @@ -864,11 +527,6 @@ - - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - templates\AdminPages\_delete_form.html.twig:9 - entity.delete 削除 @@ -876,12 +534,6 @@ - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:45 - Part-DB1\src\Form\Part\PartBaseType.php:286 - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:43 - Part-DB1\src\Form\Part\PartBaseType.php:267 new @@ -890,561 +542,300 @@ - - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - templates\AdminPages\_delete_form.html.twig:12 - entity.delete.recursive 再帰的に削除(全ての子要素) - - Part-DB1\templates\AdminPages\_duplicate.html.twig:3 - entity.duplicate 複製 - - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - templates\AdminPages\_export_form.html.twig:4 - src\Form\ImportType.php:67 - export.format ファイル形式 - - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - templates\AdminPages\_export_form.html.twig:16 - export.level エクスポートレベル - - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - templates\AdminPages\_export_form.html.twig:19 - export.level.simple 最小 - - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - templates\AdminPages\_export_form.html.twig:20 - export.level.extended 拡張 - - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - templates\AdminPages\_export_form.html.twig:21 - export.level.full フル - - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - templates\AdminPages\_export_form.html.twig:31 - export.include_children 子要素もエクスポートする - - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - templates\AdminPages\_export_form.html.twig:39 - export.btn エクスポート - - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - templates\AdminPages\EntityAdminBase.html.twig:94 - templates\Parts\edit_part_info.html.twig:12 - templates\Parts\show_part_info.html.twig:11 - id.label ID - - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:76 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:77 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:77 - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:59 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:60 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:53 - templates\AdminPages\EntityAdminBase.html.twig:101 - templates\Parts\show_part_info.html.twig:248 - createdAt 作成日時 - - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:73 - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:49 - templates\AdminPages\EntityAdminBase.html.twig:114 - templates\Parts\show_part_info.html.twig:263 - lastModified 最終更新 - - Part-DB1\templates\AdminPages\_info.html.twig:38 - Part-DB1\templates\AdminPages\_info.html.twig:38 - entity.info.parts_count この要素を持つ部品の数 - - Part-DB1\templates\AdminPages\_parameters.html.twig:6 - Part-DB1\templates\helper.twig:125 - Part-DB1\templates\Parts\edit\_specifications.html.twig:6 - specifications.property パラメーター - - Part-DB1\templates\AdminPages\_parameters.html.twig:7 - Part-DB1\templates\Parts\edit\_specifications.html.twig:7 - specifications.symbol 記号 - - Part-DB1\templates\AdminPages\_parameters.html.twig:8 - Part-DB1\templates\Parts\edit\_specifications.html.twig:8 - specifications.value_min 最小 - - Part-DB1\templates\AdminPages\_parameters.html.twig:9 - Part-DB1\templates\Parts\edit\_specifications.html.twig:9 - specifications.value_typ 標準 - - Part-DB1\templates\AdminPages\_parameters.html.twig:10 - Part-DB1\templates\Parts\edit\_specifications.html.twig:10 - specifications.value_max 最大 - - Part-DB1\templates\AdminPages\_parameters.html.twig:11 - Part-DB1\templates\Parts\edit\_specifications.html.twig:11 - specifications.unit 単位 - - Part-DB1\templates\AdminPages\_parameters.html.twig:12 - Part-DB1\templates\Parts\edit\_specifications.html.twig:12 - specifications.text テキスト - - Part-DB1\templates\AdminPages\_parameters.html.twig:13 - Part-DB1\templates\Parts\edit\_specifications.html.twig:13 - specifications.group グループ - - Part-DB1\templates\AdminPages\_parameters.html.twig:26 - Part-DB1\templates\Parts\edit\_specifications.html.twig:26 - specification.create 新規パラメーター - - Part-DB1\templates\AdminPages\_parameters.html.twig:31 - Part-DB1\templates\Parts\edit\_specifications.html.twig:31 - parameter.delete.confirm 本当にこのパラメーターを削除しますか? - - Part-DB1\templates\attachment_list.html.twig:3 - Part-DB1\templates\attachment_list.html.twig:3 - attachment.list.title 添付ファイル一覧 - - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - part_list.loading.caption 読み込み中 - - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - part_list.loading.message しばらくお待ちください。このメッセージが消えない場合は再読み込みしてください。 - - Part-DB1\templates\base.html.twig:68 - Part-DB1\templates\base.html.twig:68 - templates\base.html.twig:246 - vendor.base.javascript_hint すべての機能を利用するにはJavascriptを有効にしてください。 - - Part-DB1\templates\base.html.twig:73 - Part-DB1\templates\base.html.twig:73 - sidebar.big.toggle サイドバーの表示/非表示 - - Part-DB1\templates\base.html.twig:95 - Part-DB1\templates\base.html.twig:95 - templates\base.html.twig:271 - loading.caption 読み込み中: - - Part-DB1\templates\base.html.twig:96 - Part-DB1\templates\base.html.twig:96 - templates\base.html.twig:272 - loading.message しばらくお待ちください。このメッセージが消えない場合は再読み込みしてください。 - - Part-DB1\templates\base.html.twig:101 - Part-DB1\templates\base.html.twig:101 - templates\base.html.twig:277 - loading.bar 読み込み中... - - Part-DB1\templates\base.html.twig:112 - Part-DB1\templates\base.html.twig:112 - templates\base.html.twig:288 - back_to_top ページ上部に戻る - - Part-DB1\templates\Form\permissionLayout.html.twig:35 - Part-DB1\templates\Form\permissionLayout.html.twig:35 - permission.edit.permission 権限 - - Part-DB1\templates\Form\permissionLayout.html.twig:36 - Part-DB1\templates\Form\permissionLayout.html.twig:36 - permission.edit.value - - Part-DB1\templates\Form\permissionLayout.html.twig:53 - Part-DB1\templates\Form\permissionLayout.html.twig:53 - permission.legend.title 状態について - - Part-DB1\templates\Form\permissionLayout.html.twig:57 - Part-DB1\templates\Form\permissionLayout.html.twig:57 - permission.legend.disallow 拒否 - - Part-DB1\templates\Form\permissionLayout.html.twig:61 - Part-DB1\templates\Form\permissionLayout.html.twig:61 - permission.legend.allow 許可 - - Part-DB1\templates\Form\permissionLayout.html.twig:65 - Part-DB1\templates\Form\permissionLayout.html.twig:65 - permission.legend.inherit グループまたは親を継承 - - Part-DB1\templates\helper.twig:3 - Part-DB1\templates\helper.twig:3 - bool.true はい - - Part-DB1\templates\helper.twig:5 - Part-DB1\templates\helper.twig:5 - bool.false いいえ - - Part-DB1\templates\helper.twig:92 - Part-DB1\templates\helper.twig:87 - Yes はい - - Part-DB1\templates\helper.twig:94 - Part-DB1\templates\helper.twig:89 - No いいえ - - Part-DB1\templates\helper.twig:126 - specifications.value - - Part-DB1\templates\homepage.html.twig:7 - Part-DB1\templates\homepage.html.twig:7 - templates\homepage.html.twig:7 - version.caption バージョン - - Part-DB1\templates\homepage.html.twig:22 - Part-DB1\templates\homepage.html.twig:22 - templates\homepage.html.twig:19 - homepage.license ライセンス情報 - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.caption プロジェクトのページ - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.text ソースコード、ダウンロード、バグレポート、ToDoリスト他は<a href="%href%" class="link-external" target="_blank">GitHub project page</a>にあります。 - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - homepage.help.caption ヘルプ - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - homepage.help.text ヘルプとtipsが<a href="%href%" class="link-external" target="_blank">GitHub page</a>にあります - - Part-DB1\templates\homepage.html.twig:33 - Part-DB1\templates\homepage.html.twig:33 - templates\homepage.html.twig:30 - homepage.forum.caption フォーラム @@ -1452,8 +843,6 @@ - Part-DB1\templates\homepage.html.twig:45 - Part-DB1\templates\homepage.html.twig:45 new @@ -1462,138 +851,90 @@ - - Part-DB1\templates\LabelSystem\dialog.html.twig:3 - Part-DB1\templates\LabelSystem\dialog.html.twig:6 - label_generator.title ラベルジェネレーター - - Part-DB1\templates\LabelSystem\dialog.html.twig:16 - label_generator.common 一般 - - Part-DB1\templates\LabelSystem\dialog.html.twig:20 - label_generator.advanced 詳細 - - Part-DB1\templates\LabelSystem\dialog.html.twig:24 - label_generator.profiles プロファイル - - Part-DB1\templates\LabelSystem\dialog.html.twig:58 - label_generator.selected_profile 選択中のプロファイル - - Part-DB1\templates\LabelSystem\dialog.html.twig:62 - label_generator.edit_profile プロファイルを編集 - - Part-DB1\templates\LabelSystem\dialog.html.twig:75 - label_generator.load_profile プロファイルを読み込む - - Part-DB1\templates\LabelSystem\dialog.html.twig:102 - label_generator.download ダウンロード - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:3 - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:5 - label_generator.label_btn ラベルを生成 - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:20 - label_generator.label_empty 空のラベルを新規作成 - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:3 - label_scanner.title ラベルスキャナー - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - label_scanner.no_cam_found.title ウェブカメラが見つかりません - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - label_scanner.no_cam_found.text スキャナー機能を使用するには、許可されたウェブカメラが必要です。下にバーコードのコードを手動で入力することもできます。 - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:27 - label_scanner.source_select ソースを選択 - - Part-DB1\templates\LogSystem\log_list.html.twig:3 - Part-DB1\templates\LogSystem\log_list.html.twig:3 - log.list.title システムログ @@ -1601,8 +942,6 @@ - Part-DB1\templates\LogSystem\_log_table.html.twig:1 - Part-DB1\templates\LogSystem\_log_table.html.twig:1 new @@ -1612,8 +951,6 @@ - Part-DB1\templates\LogSystem\_log_table.html.twig:2 - Part-DB1\templates\LogSystem\_log_table.html.twig:2 new @@ -1622,194 +959,114 @@ - - Part-DB1\templates\mail\base.html.twig:24 - Part-DB1\templates\mail\base.html.twig:24 - mail.footer.email_sent_by このメールは自動送信です: - - Part-DB1\templates\mail\base.html.twig:24 - Part-DB1\templates\mail\base.html.twig:24 - mail.footer.dont_reply このメールに返信しないでください - - Part-DB1\templates\mail\pw_reset.html.twig:6 - Part-DB1\templates\mail\pw_reset.html.twig:6 - email.hi %name% こんにちは、%name% - - Part-DB1\templates\mail\pw_reset.html.twig:7 - Part-DB1\templates\mail\pw_reset.html.twig:7 - email.pw_reset.message パスワードリセットの要求がありました。この要求に心当たりがない場合は、このメールを無視してください。 - - Part-DB1\templates\mail\pw_reset.html.twig:9 - Part-DB1\templates\mail\pw_reset.html.twig:9 - email.pw_reset.button パスワードをリセットするにはここをクリック - - Part-DB1\templates\mail\pw_reset.html.twig:11 - Part-DB1\templates\mail\pw_reset.html.twig:11 - email.pw_reset.fallback 問題がある場合は<a href="%url%">%url%</a> で以下の情報を入力してください - - Part-DB1\templates\mail\pw_reset.html.twig:16 - Part-DB1\templates\mail\pw_reset.html.twig:16 - email.pw_reset.username ユーザー名 - - Part-DB1\templates\mail\pw_reset.html.twig:19 - Part-DB1\templates\mail\pw_reset.html.twig:19 - email.pw_reset.token トークン - - Part-DB1\templates\mail\pw_reset.html.twig:24 - Part-DB1\templates\mail\pw_reset.html.twig:24 - email.pw_reset.valid_unit %date% リセット トークンは <i>%date%</i> まで有効です。 - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:18 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:78 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - orderdetail.delete 削除 - - 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 最小注文数量 - - 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 価格 - - 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 数量について - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - pricedetail.create 価格を追加 - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - templates\Parts\edit_part_info.html.twig:4 - part.edit.title 部品を編集 - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - templates\Parts\edit_part_info.html.twig:9 - part.edit.card_title 部品を編集 - - 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 一般 - - 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 メーカー - - 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 詳細 @@ -1876,279 +1133,156 @@ - - 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 在庫 - - 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 添付ファイル - - 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 購入情報 - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 - part.edit.tab.specifications パラメーター - - 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 コメント - - 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 ダウンロード @@ -2156,8 +1290,6 @@ - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 new @@ -2166,14 +1298,6 @@ - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Unknown 不明 @@ -2181,10 +1305,6 @@ - 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 @@ -2194,8 +1314,6 @@ - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 new @@ -2204,49 +1322,24 @@ - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - part.isFavorite お気に入り - - 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 名前 @@ -2254,8 +1347,6 @@ - Part-DB1\templates\Parts\info\_main_infos.html.twig:27 - Part-DB1\templates\Parts\info\_main_infos.html.twig:27 new @@ -2264,767 +1355,432 @@ - - 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 - Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - part.supplier.name 名称 - - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - 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\_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 - Part-DB1\templates\Parts\info\_part_lots.html.twig:22 - part_lots.location_unknown 保管場所不明 - - Part-DB1\templates\Parts\info\_part_lots.html.twig:31 - Part-DB1\templates\Parts\info\_part_lots.html.twig:29 - part_lots.instock_unknown 数量不明 - - Part-DB1\templates\Parts\info\_part_lots.html.twig:40 - Part-DB1\templates\Parts\info\_part_lots.html.twig:38 - part_lots.expiration_date 有効期限 - - Part-DB1\templates\Parts\info\_part_lots.html.twig:48 - Part-DB1\templates\Parts\info\_part_lots.html.twig:46 - part_lots.is_expired 期限切れ - - Part-DB1\templates\Parts\info\_part_lots.html.twig:55 - Part-DB1\templates\Parts\info\_part_lots.html.twig:53 - part_lots.need_refill 補充が必要 - - Part-DB1\templates\Parts\info\_picture.html.twig:15 - Part-DB1\templates\Parts\info\_picture.html.twig:15 - part.info.prev_picture 前の画像 - - Part-DB1\templates\Parts\info\_picture.html.twig:19 - Part-DB1\templates\Parts\info\_picture.html.twig:19 - part.info.next_picture 次の画像 - - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - part.mass.tooltip 質量 - - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - part.needs_review.badge 確認が必要 - - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - part.favorite.badge お気に入り - - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - part.obsolete.badge 使用不可 - - Part-DB1\templates\Parts\info\_specifications.html.twig:10 - parameters.extracted_from_description 説明から自動的に抽出されました - - Part-DB1\templates\Parts\info\_specifications.html.twig:15 - parameters.auto_extracted_from_comment コメントから自動的に抽出されました - - Part-DB1\templates\Parts\info\_tools.html.twig:6 - Part-DB1\templates\Parts\info\_tools.html.twig:4 - templates\Parts\show_part_info.html.twig:125 - part.edit.btn 部品を編集 - - Part-DB1\templates\Parts\info\_tools.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:14 - templates\Parts\show_part_info.html.twig:135 - part.clone.btn 部品を複製 - - Part-DB1\templates\Parts\info\_tools.html.twig:24 - Part-DB1\templates\Parts\lists\_action_bar.html.twig:4 - templates\Parts\show_part_info.html.twig:143 - part.create.btn 新規部品作成 - - Part-DB1\templates\Parts\info\_tools.html.twig:31 - Part-DB1\templates\Parts\info\_tools.html.twig:29 - part.delete.confirm_title 本当にこの部品を削除しますか? - - Part-DB1\templates\Parts\info\_tools.html.twig:32 - Part-DB1\templates\Parts\info\_tools.html.twig:30 - part.delete.message この部品と、関連付けられた情報(添付ファイル、価格など)は削除されます。この操作はやり直しできません! - - Part-DB1\templates\Parts\info\_tools.html.twig:39 - Part-DB1\templates\Parts\info\_tools.html.twig:37 - part.delete 部品を削除 - - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - parts_list.all.title すべての部品 - - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - parts_list.category.title 部品とカテゴリー - - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - parts_list.footprint.title 部品とフットプリント - - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - parts_list.manufacturer.title 部品とメーカー - - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - parts_list.search.title 部品を検索 - - 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 部品と保管場所 - - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - 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 一般 - - Part-DB1\templates\Parts\lists\_info_card.html.twig:26 - Part-DB1\templates\Parts\lists\_info_card.html.twig:20 - entity.info.statistics.tab 統計情報 - - Part-DB1\templates\Parts\lists\_info_card.html.twig:31 - entity.info.attachments.tab 添付ファイル - - Part-DB1\templates\Parts\lists\_info_card.html.twig:37 - entity.info.parameters.tab パラメーター - - Part-DB1\templates\Parts\lists\_info_card.html.twig:54 - Part-DB1\templates\Parts\lists\_info_card.html.twig:30 - entity.info.name 名称 - - Part-DB1\templates\Parts\lists\_info_card.html.twig:58 - Part-DB1\templates\Parts\lists\_info_card.html.twig:96 - Part-DB1\templates\Parts\lists\_info_card.html.twig:34 - Part-DB1\templates\Parts\lists\_info_card.html.twig:67 - entity.info.parent - - Part-DB1\templates\Parts\lists\_info_card.html.twig:70 - Part-DB1\templates\Parts\lists\_info_card.html.twig:46 - entity.edit.btn 編集 - - Part-DB1\templates\Parts\lists\_info_card.html.twig:92 - Part-DB1\templates\Parts\lists\_info_card.html.twig:63 - entity.info.children_count 子要素の数 - - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - tfa.check.title 二要素認証が必要 - - Part-DB1\templates\security\2fa_base_form.html.twig:39 - Part-DB1\templates\security\2fa_base_form.html.twig:39 - tfa.code.trusted_pc このコンピューターを信頼(有効化すると、このコンピューターで二要素認証は求められません) - - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - login.btn ログイン - - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:42 - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:40 - user.logout ログアウト - - Part-DB1\templates\security\2fa_form.html.twig:6 - Part-DB1\templates\security\2fa_form.html.twig:6 - tfa.check.code.label 認証アプリのコード - - Part-DB1\templates\security\2fa_form.html.twig:10 - Part-DB1\templates\security\2fa_form.html.twig:10 - tfa.check.code.help 認証アプリの6桁のコードを入力してください。アプリを使用できない場合はバックアップコードを入力してください。 - - Part-DB1\templates\security\login.html.twig:3 - Part-DB1\templates\security\login.html.twig:3 - templates\security\login.html.twig:3 - login.title ログイン - - Part-DB1\templates\security\login.html.twig:7 - Part-DB1\templates\security\login.html.twig:7 - templates\security\login.html.twig:7 - login.card_title ログイン - - Part-DB1\templates\security\login.html.twig:31 - Part-DB1\templates\security\login.html.twig:31 - templates\security\login.html.twig:31 - login.username.label ユーザー名 - - Part-DB1\templates\security\login.html.twig:34 - Part-DB1\templates\security\login.html.twig:34 - templates\security\login.html.twig:34 - login.username.placeholder ユーザー名 - - Part-DB1\templates\security\login.html.twig:38 - Part-DB1\templates\security\login.html.twig:38 - templates\security\login.html.twig:38 - login.password.label パスワード - - Part-DB1\templates\security\login.html.twig:40 - Part-DB1\templates\security\login.html.twig:40 - templates\security\login.html.twig:40 - login.password.placeholder パスワード - - Part-DB1\templates\security\login.html.twig:50 - Part-DB1\templates\security\login.html.twig:50 - templates\security\login.html.twig:50 - login.rememberme 記憶する(共用コンピューターでは使用しないでください) - - Part-DB1\templates\security\login.html.twig:64 - Part-DB1\templates\security\login.html.twig:64 - pw_reset.password_forget ユーザー名/パスワードを忘れた - - 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 新しいパスワードを設定 - - 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 新しいパスワードを要求 - - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - tfa_u2f.http_warning 安全でないHTTPでアクセスしているため、U2Fが動作しない可能性が高いです(Bad Requestのエラーメッセージ)。セキュリティー キーを使用したい場合は、管理者に安全なHTTPSにするよう依頼してください。 - - Part-DB1\templates\security\U2F\u2f_login.html.twig:10 - Part-DB1\templates\security\U2F\u2f_register.html.twig:22 - 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 セキュリティー キーを挿入しボタンを押してください。 - - 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 セキュリティー キーを追加 - - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - tfa_u2f.explanation U2F/FIDO互換のセキュリティキー(例: YubiKeyやNitroKey)により、ユーザーフレンドリーで安全な二要素認証を実現できます。セキュリティキーはここで登録することができ、二要素認証が必要な場合は、USB経由でキーを挿入するか、NFC経由でデバイスに入力するだけです。 - - 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 鍵を紛失しても確実にアクセスできるように、別のキーををバックアップとして登録し、大切に保管しておくことをおすすめします。 - - 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 セキュリティー キーを追加 - - 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 設定に戻る @@ -3032,10 +1788,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 new @@ -3045,8 +1797,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:14 - Part-DB1\templates\Statistics\statistics.html.twig:14 new @@ -3056,8 +1806,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:19 - Part-DB1\templates\Statistics\statistics.html.twig:19 new @@ -3067,8 +1815,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:24 - Part-DB1\templates\Statistics\statistics.html.twig:24 new @@ -3078,12 +1824,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 new @@ -3093,12 +1833,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 new @@ -3108,8 +1842,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:40 - Part-DB1\templates\Statistics\statistics.html.twig:40 new @@ -3119,8 +1851,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:44 - Part-DB1\templates\Statistics\statistics.html.twig:44 new @@ -3130,8 +1860,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:48 - Part-DB1\templates\Statistics\statistics.html.twig:48 new @@ -3141,8 +1869,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:65 - Part-DB1\templates\Statistics\statistics.html.twig:65 new @@ -3152,8 +1878,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:69 - Part-DB1\templates\Statistics\statistics.html.twig:69 new @@ -3163,8 +1887,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:73 - Part-DB1\templates\Statistics\statistics.html.twig:73 new @@ -3174,8 +1896,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:77 - Part-DB1\templates\Statistics\statistics.html.twig:77 new @@ -3185,8 +1905,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:81 - Part-DB1\templates\Statistics\statistics.html.twig:81 new @@ -3196,8 +1914,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:85 - Part-DB1\templates\Statistics\statistics.html.twig:85 new @@ -3207,8 +1923,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:89 - Part-DB1\templates\Statistics\statistics.html.twig:89 new @@ -3218,8 +1932,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:93 - Part-DB1\templates\Statistics\statistics.html.twig:93 new @@ -3229,8 +1941,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:110 - Part-DB1\templates\Statistics\statistics.html.twig:110 new @@ -3240,8 +1950,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:114 - Part-DB1\templates\Statistics\statistics.html.twig:114 new @@ -3251,8 +1959,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:118 - Part-DB1\templates\Statistics\statistics.html.twig:118 new @@ -3262,8 +1968,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:122 - Part-DB1\templates\Statistics\statistics.html.twig:122 new @@ -3273,8 +1977,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:126 - Part-DB1\templates\Statistics\statistics.html.twig:126 new @@ -3283,302 +1985,156 @@ - - 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 このコードのうち1つを使うことで、スマートフォンの紛失やデータ破損等で認証アプリをインストールしたデバイスが使えない場合にアカウントにアクセスし、新しい認証アプリを設定できます。それぞれのコードは1回のみ使えます。使用済みのコードは削除することをおすすめします。また、このコードは安全な場所に保管してください。第三者がアカウントに不正にアクセスする恐れがあります。 - - Part-DB1\templates\Users\backup_codes.html.twig:16 - Part-DB1\templates\Users\backup_codes.html.twig:16 - tfa_backup.username ユーザー名 - - 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 二要素認証 - - 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> @@ -3586,262 +2142,156 @@ - - 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> や <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 表示されているQRコードをアプリでスキャンするか、データを手動で入力 - - 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 このキーを削除すると、このキーを使ってログインできなくなります。他のセキュリティー キーがない場合は、二要素認証が無効化されます。 - - 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 - Part-DB1\templates\Users\_2fa_settings.html.twig:134 - tfa_u2f.key_delete キーを削除 - - Part-DB1\templates\Users\_2fa_settings.html.twig:141 - Part-DB1\templates\Users\_2fa_settings.html.twig:141 - tfa_u2f.no_keys_registered キーが登録されていません。 - - Part-DB1\templates\Users\_2fa_settings.html.twig:144 - Part-DB1\templates\Users\_2fa_settings.html.twig:144 - tfa_u2f.add_new_key 新しいセキュリティー キーを登録 - - Part-DB1\templates\Users\_2fa_settings.html.twig:148 - Part-DB1\templates\Users\_2fa_settings.html.twig:148 - tfa_trustedDevices.explanation 2つ目の要素をチェックすると、現在のコンピューターは信頼できるとマークされるので、このコンピューターの2つ目の要素チェックはもう必要ありません。 @@ -3849,310 +2299,162 @@ - - Part-DB1\templates\Users\_2fa_settings.html.twig:149 - Part-DB1\templates\Users\_2fa_settings.html.twig:149 - tfa_trustedDevices.invalidate.confirm_title 本当に登録されたコンピューターを全て削除しますか? - - Part-DB1\templates\Users\_2fa_settings.html.twig:150 - Part-DB1\templates\Users\_2fa_settings.html.twig:150 - tfa_trustedDevices.invalidate.confirm_message 全てのコンピューターでもう一度二要素認証をする必要があります。二要素認証に使う端末を手元に用意してください。 - - Part-DB1\templates\Users\_2fa_settings.html.twig:154 - Part-DB1\templates\Users\_2fa_settings.html.twig:154 - tfa_trustedDevices.invalidate.btn 信頼した端末をリセット - - Part-DB1\templates\_navbar.html.twig:4 - Part-DB1\templates\_navbar.html.twig:4 - templates\base.html.twig:29 - sidebar.toggle サイドバーを切り替え - - Part-DB1\templates\_navbar.html.twig:22 - navbar.scanner.link スキャナー - - Part-DB1\templates\_navbar.html.twig:38 - Part-DB1\templates\_navbar.html.twig:36 - templates\base.html.twig:97 - user.loggedin.label 以下としてログイン: - - Part-DB1\templates\_navbar.html.twig:44 - Part-DB1\templates\_navbar.html.twig:42 - templates\base.html.twig:103 - user.login ログイン - - Part-DB1\templates\_navbar.html.twig:50 - Part-DB1\templates\_navbar.html.twig:48 - ui.toggle_darkmode ダークモード - - Part-DB1\templates\_navbar.html.twig:54 - Part-DB1\src\Form\UserSettingsType.php:97 - Part-DB1\templates\_navbar.html.twig:52 - Part-DB1\src\Form\UserSettingsType.php:97 - templates\base.html.twig:106 - src\Form\UserSettingsType.php:44 - user.language_select 言語切り替え - - Part-DB1\templates\_navbar_search.html.twig:4 - Part-DB1\templates\_navbar_search.html.twig:4 - templates\base.html.twig:49 - search.options.label 検索オプション - - Part-DB1\templates\_navbar_search.html.twig:23 - tags.label タグ - - Part-DB1\templates\_navbar_search.html.twig:27 - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - templates\base.html.twig:60 - templates\Parts\show_part_info.html.twig:36 - src\Form\PartType.php:77 - storelocation.label 保管場所 - - Part-DB1\templates\_navbar_search.html.twig:36 - Part-DB1\templates\_navbar_search.html.twig:31 - templates\base.html.twig:65 - ordernumber.label.short 注文番号 - - Part-DB1\templates\_navbar_search.html.twig:40 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - Part-DB1\templates\_navbar_search.html.twig:35 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - templates\base.html.twig:67 - supplier.label サプライヤー - - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_navbar_search.html.twig:56 - templates\base.html.twig:77 - search.regexmatching 正規表現で検索 - - Part-DB1\templates\_sidebar.html.twig:2 - Part-DB1\templates\_sidebar.html.twig:2 - templates\base.html.twig:165 - templates\base.html.twig:192 - templates\base.html.twig:220 - actions アクション - - Part-DB1\templates\_sidebar.html.twig:6 - Part-DB1\templates\_sidebar.html.twig:6 - templates\base.html.twig:169 - templates\base.html.twig:196 - templates\base.html.twig:224 - datasource データソース - - Part-DB1\templates\_sidebar.html.twig:10 - Part-DB1\templates\_sidebar.html.twig:10 - templates\base.html.twig:173 - templates\base.html.twig:200 - templates\base.html.twig:228 - manufacturer.labelp メーカー - - Part-DB1\templates\_sidebar.html.twig:11 - Part-DB1\templates\_sidebar.html.twig:11 - templates\base.html.twig:174 - templates\base.html.twig:201 - templates\base.html.twig:229 - supplier.labelp サプライヤー - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:213 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:293 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:293 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:181 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:243 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:268 - attachment.download_failed 外部ファイルのダウンロードに失敗しました。 - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:222 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:190 - entity.edit_flash 変更が保存されました。 - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:231 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:196 - entity.edit_flash.invalid 変更を保存できません。入力を確認してください。 - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:302 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:252 - entity.created_flash 要素が作成されました。 - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:308 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:258 - entity.created_flash.invalid 要素が作成できません。入力を確認してください。 - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:399 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:352 - src\Controller\BaseAdminController.php:154 - attachment_type.deleted 要素が削除されました。 - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:401 - Part-DB1\src\Controller\UserController.php:109 - Part-DB1\src\Controller\UserSettingsController.php:159 - Part-DB1\src\Controller\UserSettingsController.php:193 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:354 - Part-DB1\src\Controller\UserController.php:101 - Part-DB1\src\Controller\UserSettingsController.php:150 - Part-DB1\src\Controller\UserSettingsController.php:182 - csfr_invalid CSRFトークンが無効です。このページを再読み込みしてください。このメッセージが消えない場合は管理者に連絡してください。 - - Part-DB1\src\Controller\LabelController.php:125 - label_generator.no_entities_found この範囲に該当するエンティティはありません @@ -4160,8 +2462,6 @@ - Part-DB1\src\Controller\LogController.php:149 - Part-DB1\src\Controller\LogController.php:154 new @@ -4171,8 +2471,6 @@ - Part-DB1\src\Controller\LogController.php:156 - Part-DB1\src\Controller\LogController.php:160 new @@ -4182,8 +2480,6 @@ - Part-DB1\src\Controller\LogController.php:176 - Part-DB1\src\Controller\LogController.php:180 new @@ -4193,8 +2489,6 @@ - Part-DB1\src\Controller\LogController.php:178 - Part-DB1\src\Controller\LogController.php:182 new @@ -4204,8 +2498,6 @@ - Part-DB1\src\Controller\LogController.php:185 - Part-DB1\src\Controller\LogController.php:189 new @@ -4215,8 +2507,6 @@ - Part-DB1\src\Controller\LogController.php:187 - Part-DB1\src\Controller\LogController.php:191 new @@ -4226,8 +2516,6 @@ - Part-DB1\src\Controller\LogController.php:194 - Part-DB1\src\Controller\LogController.php:198 new @@ -4237,8 +2525,6 @@ - Part-DB1\src\Controller\LogController.php:196 - Part-DB1\src\Controller\LogController.php:200 new @@ -4248,8 +2534,6 @@ - Part-DB1\src\Controller\LogController.php:199 - Part-DB1\src\Controller\LogController.php:203 new @@ -4258,306 +2542,168 @@ - - Part-DB1\src\Controller\PartController.php:182 - Part-DB1\src\Controller\PartController.php:182 - src\Controller\PartController.php:80 - part.edited_flash 変更を保存しました。 - - Part-DB1\src\Controller\PartController.php:216 - Part-DB1\src\Controller\PartController.php:219 - part.deleted 部品は正常に削除されました。 - - Part-DB1\src\Controller\PartController.php:302 - Part-DB1\src\Controller\PartController.php:277 - Part-DB1\src\Controller\PartController.php:317 - src\Controller\PartController.php:113 - src\Controller\PartController.php:142 - part.created_flash 部品が作成されました。 - - Part-DB1\src\Controller\PartController.php:308 - Part-DB1\src\Controller\PartController.php:283 - part.created_flash.invalid 作成中のエラー: 入力を確認してください。 - - Part-DB1\src\Controller\ScanController.php:68 - Part-DB1\src\Controller\ScanController.php:90 - scan.qr_not_found このバーコードに該当するものはありません - - Part-DB1\src\Controller\ScanController.php:71 - scan.format_unknown フォーマットが不明です - - Part-DB1\src\Controller\ScanController.php:86 - scan.qr_success 該当するものが見つかりました - - Part-DB1\src\Controller\SecurityController.php:114 - Part-DB1\src\Controller\SecurityController.php:109 - 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 トークン - - Part-DB1\src\Controller\SecurityController.php:194 - Part-DB1\src\Controller\SecurityController.php:192 - pw_reset.new_pw.error ユーザー名またはトークンが無効です。入力を確認してください。 - - 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 すべての二要素認証を無効化しました。 - - 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: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 はい - - 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 いいえ - - Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:128 - Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:119 - log.target_deleted 削除されました @@ -4565,8 +2711,6 @@ - Part-DB1\src\DataTables\Column\RevertLogColumn.php:57 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:60 new @@ -4576,8 +2720,6 @@ - Part-DB1\src\DataTables\Column\RevertLogColumn.php:63 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:66 new @@ -4587,8 +2729,6 @@ - Part-DB1\src\DataTables\Column\RevertLogColumn.php:83 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:86 new @@ -4597,70 +2737,42 @@ - - 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 対象 @@ -4668,8 +2780,6 @@ - Part-DB1\src\DataTables\LogDataTable.php:231 - Part-DB1\src\DataTables\LogDataTable.php:218 new @@ -4678,100 +2788,60 @@ - - 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 単位 @@ -4784,864 +2854,522 @@ - - 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 部品ロット - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.none なし - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.qr QRコード (推奨) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code128 Code 128 (推奨) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code39 Code 39 (推奨) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code93 Code 93 - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.datamatrix Datamatrix - - 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 documentation</a> や <a href="https://github.com/Part-DB/Part-DB-symfony/wiki/Labels#twig-mode">Wiki</a> を参照してください。 - - Part-DB1\src\Form\LabelOptionsType.php:47 - label_options.page_size.label ラベルサイズ - - Part-DB1\src\Form\LabelOptionsType.php:66 - label_options.supported_elements.label 対象 - - Part-DB1\src\Form\LabelOptionsType.php:75 - label_options.barcode_type.label バーコード - - 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 更新 - - Part-DB1\src\Form\LabelSystem\ScanDialogType.php:36 - scan_dialog.input 入力 - - Part-DB1\src\Form\LabelSystem\ScanDialogType.php:44 - scan_dialog.submit 送信 - - Part-DB1\src\Form\ParameterType.php:41 - parameters.name.placeholder 例: DC電流ゲイン - - Part-DB1\src\Form\ParameterType.php:50 - parameters.symbol.placeholder 例: h_{FE} - - Part-DB1\src\Form\ParameterType.php:60 - parameters.text.placeholder 例: 試験条件 - - Part-DB1\src\Form\ParameterType.php:71 - parameters.max.placeholder 例: 350 - - Part-DB1\src\Form\ParameterType.php:82 - parameters.min.placeholder 例: 100 - - Part-DB1\src\Form\ParameterType.php:93 - parameters.typical.placeholder 例: 200 - - Part-DB1\src\Form\ParameterType.php:103 - parameters.unit.placeholder 例: V - - Part-DB1\src\Form\ParameterType.php:114 - parameter.group.placeholder 例: 技術仕様 - - Part-DB1\src\Form\Part\OrderdetailType.php:72 - Part-DB1\src\Form\Part\OrderdetailType.php:75 - orderdetails.edit.supplierpartnr 注文番号 - - Part-DB1\src\Form\Part\OrderdetailType.php:81 - Part-DB1\src\Form\Part\OrderdetailType.php:84 - 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 利用できません - - Part-DB1\src\Form\Part\OrderdetailType.php:75 - Part-DB1\src\Form\Part\OrderdetailType.php:78 - 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 単位 @@ -5654,277 +3382,162 @@ - - 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 例: BC547 - - Part-DB1\src\Form\Part\PartBaseType.php:115 - Part-DB1\src\Form\Part\PartBaseType.php:113 - part.edit.description.placeholder 例: NPN 45V, 0,1A, 0,5W - - Part-DB1\src\Form\Part\PartBaseType.php:123 - Part-DB1\src\Form\Part\PartBaseType.php:121 - part.editmininstock.placeholder 例: 1 - - 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:85 - Part-DB1\src\Services\ElementTypeNameGenerator.php:85 - measurement_unit.label 単位 @@ -5937,58 +3550,36 @@ - - 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 ラベルプロファイル @@ -5996,8 +3587,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:176 - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:161 new @@ -6006,163 +3595,96 @@ - - 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-DBアカウントのパスワードをリセット - - 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:167 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:144 - src\Services\ToolsTreeBuilder.php:68 - 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 単位 @@ -6175,40 +3697,24 @@ - - 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 添付ファイル @@ -6216,8 +3722,6 @@ - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:239 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:210 new @@ -6226,20 +3730,12 @@ - - 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 グループ @@ -6247,8 +3743,6 @@ - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:271 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:242 new @@ -6257,11 +3751,6 @@ - - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - src\Services\TreeBuilder.php:124 - entity.tree.new 新規作成 @@ -6269,7 +3758,6 @@ - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 obsolete @@ -6279,8 +3767,6 @@ - Part-DB1\templates\_navbar.html.twig:27 - templates\base.html.twig:88 obsolete @@ -6290,8 +3776,6 @@ - Part-DB1\src\Form\UserSettingsType.php:119 - src\Form\UserSettingsType.php:49 obsolete @@ -6301,8 +3785,6 @@ - Part-DB1\src\Form\UserSettingsType.php:129 - src\Form\UserSettingsType.php:50 obsolete @@ -6312,7 +3794,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:100 new obsolete @@ -6323,10 +3804,6 @@ - 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 @@ -6337,10 +3814,6 @@ - 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 @@ -6351,7 +3824,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:139 new obsolete @@ -6362,7 +3834,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:160 new obsolete @@ -6373,7 +3844,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:184 new obsolete @@ -6384,7 +3854,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:198 new obsolete @@ -6395,7 +3864,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:214 new obsolete @@ -6406,7 +3874,6 @@ - templates\base.html.twig:81 obsolete obsolete @@ -6417,7 +3884,6 @@ - templates\base.html.twig:109 obsolete obsolete @@ -6428,7 +3894,6 @@ - templates\base.html.twig:112 obsolete obsolete @@ -6719,7 +4184,6 @@ - src\Form\PartType.php:63 obsolete obsolete @@ -7390,7 +4854,6 @@ Exampletown - templates\Parts\show_part_info.html.twig:194 obsolete obsolete @@ -7401,7 +4864,6 @@ Exampletown - src\Form\PartType.php:83 obsolete obsolete @@ -8813,4 +6275,4 @@ Exampletown - + \ No newline at end of file diff --git a/translations/messages.nl.xlf b/translations/messages.nl.xlf index 58cd8599..377beeaf 100644 --- a/translations/messages.nl.xlf +++ b/translations/messages.nl.xlf @@ -2,11 +2,6 @@ - - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - attachment_type.caption Bijlage bestandstypen @@ -14,7 +9,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:12 new @@ -24,7 +18,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:16 new @@ -33,45 +26,18 @@ - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - templates\AdminPages\CategoryAdmin.html.twig:4 - templates\base.html.twig:163 - templates\base.html.twig:170 - templates\base.html.twig:197 - templates\base.html.twig:225 - category.labelp Categorieën - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:19 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:11 - templates\AdminPages\CategoryAdmin.html.twig:8 - admin.options Opties - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - templates\AdminPages\CategoryAdmin.html.twig:9 - admin.advanced Geavanceerd @@ -79,7 +45,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:13 new @@ -89,7 +54,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:17 new @@ -98,30 +62,18 @@ - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - currency.caption Valuta - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - currency.iso_code.caption ISO-code - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - currency.symbol.caption Valutateken @@ -129,7 +81,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:29 new @@ -139,7 +90,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:33 new @@ -149,7 +99,6 @@ - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 new @@ -159,7 +108,6 @@ - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:12 new @@ -168,89 +116,36 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Zoeken - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - templates\AdminPages\EntityAdminBase.html.twig:13 - templates\base.html.twig:166 - templates\base.html.twig:193 - templates\base.html.twig:221 - expandAll Alles uitvouwen - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - templates\AdminPages\EntityAdminBase.html.twig:17 - templates\base.html.twig:167 - templates\base.html.twig:194 - templates\base.html.twig:222 - reduceAll Alles inklappen - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - part.info.timetravel_hint Dit is hoe het component er uitzag voor %timestamp%. <i>Let op: deze feature is nog experimenteel, de getoonde informatie kan onnauwkeurig zijn.</i> - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - templates\AdminPages\EntityAdminBase.html.twig:42 - standard.label Eigenschappen - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - templates\AdminPages\EntityAdminBase.html.twig:43 - infos.label Informatie @@ -258,8 +153,6 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 new @@ -268,120 +161,66 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - templates\AdminPages\EntityAdminBase.html.twig:45 - export.label Exporteren - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - templates\AdminPages\EntityAdminBase.html.twig:47 - import_export.label Importeren/Exporteren - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - mass_creation.label Bulk toevoegen - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - templates\AdminPages\EntityAdminBase.html.twig:59 - admin.common Algemeen - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - admin.attachments Bijlagen - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:90 - admin.parameters Parameters - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:179 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:167 - templates\AdminPages\EntityAdminBase.html.twig:142 - export_all.label Exporteer alle elementen - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:185 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:173 - mass_creation.help Elke regel wordt geïnterpreteerd als de naam van een element, dat aangemaakt zal worden. Je kunt geneste structuren maken d.m.v. indentatie. - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - templates\AdminPages\EntityAdminBase.html.twig:35 - edit.caption Bewerk element "%name" - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - templates\AdminPages\EntityAdminBase.html.twig:37 - new.caption Nieuw element - - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - templates\base.html.twig:172 - templates\base.html.twig:199 - templates\base.html.twig:227 - footprint.labelp Voetafdruk @@ -389,7 +228,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:13 new @@ -399,7 +237,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:17 new @@ -408,22 +245,12 @@ - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - group.edit.caption Groepen - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - user.edit.permissions Rechten @@ -431,7 +258,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:24 new @@ -441,7 +267,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:28 new @@ -450,27 +275,18 @@ - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:4 - label_profile.caption Label profiel - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:8 - label_profile.advanced Geavanceerd - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:9 - label_profile.comment Notities @@ -478,7 +294,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:55 new @@ -488,7 +303,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:59 new @@ -497,11 +311,6 @@ - - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - templates\AdminPages\ManufacturerAdmin.html.twig:4 - manufacturer.caption Fabrikanten @@ -509,7 +318,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:8 new @@ -519,7 +327,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:12 new @@ -528,10 +335,6 @@ - - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - measurement_unit.caption Meeteenheden @@ -544,15 +347,6 @@ - - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:5 - Part-DB1\templates\_sidebar.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:8 - templates\base.html.twig:171 - templates\base.html.twig:198 - templates\base.html.twig:226 - storelocation.labelp Opslag locaties @@ -560,7 +354,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:32 new @@ -570,7 +363,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:36 new @@ -580,7 +372,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 new @@ -590,7 +381,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:20 new @@ -599,110 +389,60 @@ - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - user.edit.caption Gebruikers - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - user.edit.configuration Instellingen - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - user.edit.password Wachtwoord - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - user.edit.tfa.caption Tweefactorauthenticatie - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - user.edit.tfa.google_active Tweefactorauthenticatie-app actief - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - tfa_backup.remaining_tokens Aantal resterende back-up codes - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - tfa_backup.generation_date Datum waarop de back-up codes gegenereerd zijn - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - user.edit.tfa.disabled Methode niet geactiveerd - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - user.edit.tfa.u2f_keys_count Actieve beveiligingssleutels - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_title Weet u zeker dat u wilt doorgaan? @@ -850,4 +590,4 @@ - + \ No newline at end of file diff --git a/translations/messages.pl.xlf b/translations/messages.pl.xlf index 7409e4df..a4eb1cda 100644 --- a/translations/messages.pl.xlf +++ b/translations/messages.pl.xlf @@ -2,11 +2,6 @@ - - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - attachment_type.caption Typy plików dla załącznikówRegPrzerwanie w przypadku nieprawidłowych danychport @@ -14,7 +9,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:12 new @@ -24,7 +18,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:16 new @@ -33,45 +26,18 @@ - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - templates\AdminPages\CategoryAdmin.html.twig:4 - templates\base.html.twig:163 - templates\base.html.twig:170 - templates\base.html.twig:197 - templates\base.html.twig:225 - category.labelp Kategorie - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:19 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:11 - templates\AdminPages\CategoryAdmin.html.twig:8 - admin.options Opcje - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - templates\AdminPages\CategoryAdmin.html.twig:9 - admin.advanced Zaawansowane @@ -79,7 +45,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:13 new @@ -89,7 +54,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:17 new @@ -98,30 +62,18 @@ - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - currency.caption Waluta - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - currency.iso_code.caption Kod ISO waluty - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - currency.symbol.caption Symbol waluty @@ -129,7 +81,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:29 new @@ -139,7 +90,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:33 new @@ -149,7 +99,6 @@ - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 new @@ -159,7 +108,6 @@ - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:12 new @@ -168,89 +116,36 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Szukaj - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - templates\AdminPages\EntityAdminBase.html.twig:13 - templates\base.html.twig:166 - templates\base.html.twig:193 - templates\base.html.twig:221 - expandAll Rozwiń wszystko - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - templates\AdminPages\EntityAdminBase.html.twig:17 - templates\base.html.twig:167 - templates\base.html.twig:194 - templates\base.html.twig:222 - reduceAll Zwiń wszystko - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - part.info.timetravel_hint Tak wyglądał komponent przed %timestamp%. <i>Należy pamiętać, że ta funkcja jest eksperymentalna, a wyświetlane informacje niekoniecznie są poprawne.</i>or - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - templates\AdminPages\EntityAdminBase.html.twig:42 - standard.label Właściwości - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - templates\AdminPages\EntityAdminBase.html.twig:43 - infos.label Informacje @@ -258,8 +153,6 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 new @@ -268,120 +161,66 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - templates\AdminPages\EntityAdminBase.html.twig:45 - export.label Eksport - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - templates\AdminPages\EntityAdminBase.html.twig:47 - import_export.label Importuj / Eksportuj - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - mass_creation.label Masowe tworzenie - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - templates\AdminPages\EntityAdminBase.html.twig:59 - admin.common Ogólne - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - admin.attachments Załączniki - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:90 - admin.parameters Parametry - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:179 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:167 - templates\AdminPages\EntityAdminBase.html.twig:142 - export_all.label Eksportuj wszystkie elementy - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:185 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:173 - mass_creation.help Każda linia będzie interpretowana jako nazwa elementu, który zostanie utworzony. Struktury zagnieżdżone można tworzyć poprzez wcięcia. - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - templates\AdminPages\EntityAdminBase.html.twig:35 - edit.caption Edytuj element - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - templates\AdminPages\EntityAdminBase.html.twig:37 - new.caption Nowy element - - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - templates\base.html.twig:172 - templates\base.html.twig:199 - templates\base.html.twig:227 - footprint.labelp Pola lutownicze @@ -389,7 +228,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:13 new @@ -399,7 +237,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:17 new @@ -408,22 +245,12 @@ - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - group.edit.caption Grupy - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - user.edit.permissions Uprawnienia @@ -431,7 +258,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:24 new @@ -441,7 +267,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:28 new @@ -450,27 +275,18 @@ - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:4 - label_profile.caption Profile etykiet - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:8 - label_profile.advanced Zaawansowane - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:9 - label_profile.comment Komentarz @@ -478,7 +294,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:55 new @@ -488,7 +303,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:59 new @@ -497,11 +311,6 @@ - - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - templates\AdminPages\ManufacturerAdmin.html.twig:4 - manufacturer.caption Producenci @@ -509,7 +318,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:8 new @@ -519,7 +327,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:12 new @@ -528,10 +335,6 @@ - - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - measurement_unit.caption Jednostka miary @@ -544,15 +347,6 @@ - - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:5 - Part-DB1\templates\_sidebar.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:8 - templates\base.html.twig:171 - templates\base.html.twig:198 - templates\base.html.twig:226 - storelocation.labelp Lokalizacja miejsca przechowywania @@ -560,7 +354,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:32 new @@ -570,7 +363,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:36 new @@ -580,7 +372,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 new @@ -590,7 +381,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:20 new @@ -599,130 +389,72 @@ - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - user.edit.caption Użytkownicy - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - user.edit.configuration Konfiguracja - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - user.edit.password Hasło - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - user.edit.tfa.caption Uwierzytelnianie dwuskładnikowe - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - user.edit.tfa.google_active Aplikacja uwierzytelniająca aktywna - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - tfa_backup.remaining_tokens Pozostałe kody zapasowe - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - tfa_backup.generation_date Data utworzenia kodów zapasowych - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - user.edit.tfa.disabled Metoda wyłączona - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - user.edit.tfa.u2f_keys_count Aktywne klucze bezpieczeństwa - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_title Czy na pewno chcesz kontynuować? - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_message Dostęp zabroniony! Zaloguj się, aby kontynuować. - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - user.edit.tfa.disable_tfa.btn Wyłącz wszystkie metody uwierzytelniania dwuskładnikowego @@ -730,7 +462,6 @@ - Part-DB1\templates\AdminPages\UserAdmin.html.twig:85 new @@ -740,7 +471,6 @@ - Part-DB1\templates\AdminPages\UserAdmin.html.twig:89 new @@ -749,129 +479,60 @@ - - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:63 - attachment.delete Usuń - - Part-DB1\templates\AdminPages\_attachments.html.twig:41 - Part-DB1\templates\Parts\edit\_attachments.html.twig:38 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:35 - Part-DB1\src\DataTables\AttachmentDataTable.php:159 - Part-DB1\templates\Parts\edit\_attachments.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:159 - attachment.external Zewnętrzny - - Part-DB1\templates\AdminPages\_attachments.html.twig:49 - Part-DB1\templates\Parts\edit\_attachments.html.twig:47 - Part-DB1\templates\AdminPages\_attachments.html.twig:47 - Part-DB1\templates\Parts\edit\_attachments.html.twig:45 - attachment.preview.alt Miniaturka załącznika - - Part-DB1\templates\AdminPages\_attachments.html.twig:52 - Part-DB1\templates\Parts\edit\_attachments.html.twig:50 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 - Part-DB1\templates\AdminPages\_attachments.html.twig:50 - Part-DB1\templates\Parts\edit\_attachments.html.twig:48 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:45 - attachment.view Widok - - Part-DB1\templates\AdminPages\_attachments.html.twig:58 - Part-DB1\templates\Parts\edit\_attachments.html.twig:56 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:43 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - Part-DB1\templates\AdminPages\_attachments.html.twig:56 - Part-DB1\templates\Parts\edit\_attachments.html.twig:54 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - attachment.file_not_found Plik nie znaleziony - - Part-DB1\templates\AdminPages\_attachments.html.twig:66 - Part-DB1\templates\Parts\edit\_attachments.html.twig:64 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:48 - Part-DB1\templates\Parts\edit\_attachments.html.twig:62 - attachment.secure Załącznik prywatny - - Part-DB1\templates\AdminPages\_attachments.html.twig:79 - Part-DB1\templates\Parts\edit\_attachments.html.twig:77 - Part-DB1\templates\AdminPages\_attachments.html.twig:77 - Part-DB1\templates\Parts\edit\_attachments.html.twig:75 - attachment.create Utwórz załącznik - - Part-DB1\templates\AdminPages\_attachments.html.twig:84 - Part-DB1\templates\Parts\edit\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - Part-DB1\templates\AdminPages\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_attachments.html.twig:80 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - part_lot.edit.delete.confirm Czy na pewno chcesz usunąć magazyn? Tej operacji nie można cofnąć. - - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - templates\AdminPages\_delete_form.html.twig:2 - entity.delete.confirm_title Czy na pewno chcesz usunąć %name%? - - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - templates\AdminPages\_delete_form.html.twig:3 - entity.delete.message Tego działania nie można cofnąć! @@ -880,11 +541,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - templates\AdminPages\_delete_form.html.twig:9 - entity.delete Usuń element @@ -892,12 +548,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:45 - Part-DB1\src\Form\Part\PartBaseType.php:286 - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:43 - Part-DB1\src\Form\Part\PartBaseType.php:267 new @@ -906,561 +556,300 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - templates\AdminPages\_delete_form.html.twig:12 - entity.delete.recursive Usuń rekursywnie (wszystkie elementy podrzędne) - - Part-DB1\templates\AdminPages\_duplicate.html.twig:3 - entity.duplicate Duplikat - - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - templates\AdminPages\_export_form.html.twig:4 - src\Form\ImportType.php:67 - export.format Typ pliku - - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - templates\AdminPages\_export_form.html.twig:16 - export.level Szczegółowość - - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - templates\AdminPages\_export_form.html.twig:19 - export.level.simple Podstawowa - - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - templates\AdminPages\_export_form.html.twig:20 - export.level.extended Rozszerzona - - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - templates\AdminPages\_export_form.html.twig:21 - export.level.full Pełna - - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - templates\AdminPages\_export_form.html.twig:31 - export.include_children Eksportuj również podelementy - - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - templates\AdminPages\_export_form.html.twig:39 - export.btn Eksport - - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - templates\AdminPages\EntityAdminBase.html.twig:94 - templates\Parts\edit_part_info.html.twig:12 - templates\Parts\show_part_info.html.twig:11 - id.label ID - - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:76 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:77 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:77 - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:59 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:60 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:53 - templates\AdminPages\EntityAdminBase.html.twig:101 - templates\Parts\show_part_info.html.twig:248 - createdAt Utworzony o - - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:73 - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:49 - templates\AdminPages\EntityAdminBase.html.twig:114 - templates\Parts\show_part_info.html.twig:263 - lastModified Ostatnio zmodyfikowany - - Part-DB1\templates\AdminPages\_info.html.twig:38 - Part-DB1\templates\AdminPages\_info.html.twig:38 - entity.info.parts_count Liczba komponentów z tym elementem - - Part-DB1\templates\AdminPages\_parameters.html.twig:6 - Part-DB1\templates\helper.twig:125 - Part-DB1\templates\Parts\edit\_specifications.html.twig:6 - specifications.property Parametr - - Part-DB1\templates\AdminPages\_parameters.html.twig:7 - Part-DB1\templates\Parts\edit\_specifications.html.twig:7 - specifications.symbol Symbol - - Part-DB1\templates\AdminPages\_parameters.html.twig:8 - Part-DB1\templates\Parts\edit\_specifications.html.twig:8 - specifications.value_min Wartość minimalna - - Part-DB1\templates\AdminPages\_parameters.html.twig:9 - Part-DB1\templates\Parts\edit\_specifications.html.twig:9 - specifications.value_typ Wartość nominalna - - Part-DB1\templates\AdminPages\_parameters.html.twig:10 - Part-DB1\templates\Parts\edit\_specifications.html.twig:10 - specifications.value_max Wartość maksymalna - - Part-DB1\templates\AdminPages\_parameters.html.twig:11 - Part-DB1\templates\Parts\edit\_specifications.html.twig:11 - specifications.unit Jednostka - - Part-DB1\templates\AdminPages\_parameters.html.twig:12 - Part-DB1\templates\Parts\edit\_specifications.html.twig:12 - specifications.text Tekst - - Part-DB1\templates\AdminPages\_parameters.html.twig:13 - Part-DB1\templates\Parts\edit\_specifications.html.twig:13 - specifications.group Grupa - - Part-DB1\templates\AdminPages\_parameters.html.twig:26 - Part-DB1\templates\Parts\edit\_specifications.html.twig:26 - specification.create Nowy parametr - - Part-DB1\templates\AdminPages\_parameters.html.twig:31 - Part-DB1\templates\Parts\edit\_specifications.html.twig:31 - parameter.delete.confirm Czy na pewno chcesz usunąć ten parametr? - - Part-DB1\templates\attachment_list.html.twig:3 - Part-DB1\templates\attachment_list.html.twig:3 - attachment.list.title Lista załączników - - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - part_list.loading.caption Ładowanie - - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - part_list.loading.message To może chwilę potrwać. Jeśli ten komunikat nie zniknie, spróbuj ponownie załadować stronę. - - Part-DB1\templates\base.html.twig:68 - Part-DB1\templates\base.html.twig:68 - templates\base.html.twig:246 - vendor.base.javascript_hint Aktywuj JavaScript, aby móc korzystać ze wszystkich funkcji! - - Part-DB1\templates\base.html.twig:73 - Part-DB1\templates\base.html.twig:73 - sidebar.big.toggle Pokaż/ukryj pasek boczny - - Part-DB1\templates\base.html.twig:95 - Part-DB1\templates\base.html.twig:95 - templates\base.html.twig:271 - loading.caption Ładowanie: - - Part-DB1\templates\base.html.twig:96 - Part-DB1\templates\base.html.twig:96 - templates\base.html.twig:272 - loading.message To może chwilę potrwać. Jeśli ten komunikat będzie się wyświetlał przez dłuższy czas, spróbuj ponownie załadować stronę. - - Part-DB1\templates\base.html.twig:101 - Part-DB1\templates\base.html.twig:101 - templates\base.html.twig:277 - loading.bar Ładowanie... - - Part-DB1\templates\base.html.twig:112 - Part-DB1\templates\base.html.twig:112 - templates\base.html.twig:288 - back_to_top Powrót na górę strony - - Part-DB1\templates\Form\permissionLayout.html.twig:35 - Part-DB1\templates\Form\permissionLayout.html.twig:35 - permission.edit.permission Uprawnienia - - Part-DB1\templates\Form\permissionLayout.html.twig:36 - Part-DB1\templates\Form\permissionLayout.html.twig:36 - permission.edit.value Wartość - - Part-DB1\templates\Form\permissionLayout.html.twig:53 - Part-DB1\templates\Form\permissionLayout.html.twig:53 - permission.legend.title Wyjaśnienie stanów - - Part-DB1\templates\Form\permissionLayout.html.twig:57 - Part-DB1\templates\Form\permissionLayout.html.twig:57 - permission.legend.disallow Nie zezwalaj - - Part-DB1\templates\Form\permissionLayout.html.twig:61 - Part-DB1\templates\Form\permissionLayout.html.twig:61 - permission.legend.allow Zezwalaj - - Part-DB1\templates\Form\permissionLayout.html.twig:65 - Part-DB1\templates\Form\permissionLayout.html.twig:65 - permission.legend.inherit Dziedziczenie z grupy (nadrzędnej) - - Part-DB1\templates\helper.twig:3 - Part-DB1\templates\helper.twig:3 - bool.true Prawda - - Part-DB1\templates\helper.twig:5 - Part-DB1\templates\helper.twig:5 - bool.false Fałsz - - Part-DB1\templates\helper.twig:92 - Part-DB1\templates\helper.twig:87 - Yes Tak - - Part-DB1\templates\helper.twig:94 - Part-DB1\templates\helper.twig:89 - No Nie - - Part-DB1\templates\helper.twig:126 - specifications.value Wartość - - Part-DB1\templates\homepage.html.twig:7 - Part-DB1\templates\homepage.html.twig:7 - templates\homepage.html.twig:7 - version.caption Wersja - - Part-DB1\templates\homepage.html.twig:22 - Part-DB1\templates\homepage.html.twig:22 - templates\homepage.html.twig:19 - homepage.license Licencja - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.caption Strona projektu - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.text Kod źródłowy, pliki do pobrania, raporty o błędach, listę rzeczy do zrobienia itp. można znaleźć na stronie projektu <a class=„link-external” target=„_blank” href=„%href%”>GitHub</a> - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - homepage.help.caption Pomoc - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - homepage.help.text Pomoc i wskazówki można znaleźć w Wiki na stronie <a href=„%href%” class=„link-external” target=„_blank”>GitHub</a>. - - Part-DB1\templates\homepage.html.twig:33 - Part-DB1\templates\homepage.html.twig:33 - templates\homepage.html.twig:30 - homepage.forum.caption Forum @@ -1468,8 +857,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\homepage.html.twig:45 - Part-DB1\templates\homepage.html.twig:45 new @@ -1478,138 +865,90 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - - Part-DB1\templates\LabelSystem\dialog.html.twig:3 - Part-DB1\templates\LabelSystem\dialog.html.twig:6 - label_generator.title Generator etykiet - - Part-DB1\templates\LabelSystem\dialog.html.twig:16 - label_generator.common Ogólne - - Part-DB1\templates\LabelSystem\dialog.html.twig:20 - label_generator.advanced Zaawansowane - - Part-DB1\templates\LabelSystem\dialog.html.twig:24 - label_generator.profiles Profile - - Part-DB1\templates\LabelSystem\dialog.html.twig:58 - label_generator.selected_profile Aktualnie wybrany profil - - Part-DB1\templates\LabelSystem\dialog.html.twig:62 - label_generator.edit_profile Edytuj profil - - Part-DB1\templates\LabelSystem\dialog.html.twig:75 - label_generator.load_profile Załaduj profil - - Part-DB1\templates\LabelSystem\dialog.html.twig:102 - label_generator.download Pobierz - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:3 - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:5 - label_generator.label_btn Wygeneruj etykietę - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:20 - label_generator.label_empty Utwórz pustą etykietę - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:3 - label_scanner.title Skaner etykiet - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - label_scanner.no_cam_found.title Nie znaleziono kamery - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - label_scanner.no_cam_found.text Potrzebujesz kamery internetowej oraz wyrazić zgodę na korzystanie z funkcji skanera. Poniżej możesz ręcznie wprowadzić kod kreskowy. - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:27 - label_scanner.source_select Wybierz źródło - - Part-DB1\templates\LogSystem\log_list.html.twig:3 - Part-DB1\templates\LogSystem\log_list.html.twig:3 - log.list.title Dziennik systemowy @@ -1617,8 +956,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\LogSystem\_log_table.html.twig:1 - Part-DB1\templates\LogSystem\_log_table.html.twig:1 new @@ -1628,8 +965,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\LogSystem\_log_table.html.twig:2 - Part-DB1\templates\LogSystem\_log_table.html.twig:2 new @@ -1638,194 +973,114 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - - Part-DB1\templates\mail\base.html.twig:24 - Part-DB1\templates\mail\base.html.twig:24 - mail.footer.email_sent_by Ten e-mail został wysłany automatycznie przez - - Part-DB1\templates\mail\base.html.twig:24 - Part-DB1\templates\mail\base.html.twig:24 - mail.footer.dont_reply Nie odpowiadaj na tego e-maila. - - Part-DB1\templates\mail\pw_reset.html.twig:6 - Part-DB1\templates\mail\pw_reset.html.twig:6 - email.hi %name% Cześć %name% - - Part-DB1\templates\mail\pw_reset.html.twig:7 - Part-DB1\templates\mail\pw_reset.html.twig:7 - email.pw_reset.message ktoś (miejmy nadzieję, że Ty) poprosił o zresetowanie Twojego hasła. Jeżeli to nie Ty wysłałeś tę prośbę, zignoruj tę wiadomość. - - Part-DB1\templates\mail\pw_reset.html.twig:9 - Part-DB1\templates\mail\pw_reset.html.twig:9 - email.pw_reset.button Kliknij tutaj, aby zresetować hasło - - Part-DB1\templates\mail\pw_reset.html.twig:11 - Part-DB1\templates\mail\pw_reset.html.twig:11 - email.pw_reset.fallback Jeśli to nie zadziała, zadzwoń pod numer <a href="%url%">%url%</a> i wprowadź następujące informacje - - Part-DB1\templates\mail\pw_reset.html.twig:16 - Part-DB1\templates\mail\pw_reset.html.twig:16 - email.pw_reset.username Nazwa użytkownika - - Part-DB1\templates\mail\pw_reset.html.twig:19 - Part-DB1\templates\mail\pw_reset.html.twig:19 - email.pw_reset.token Token - - Part-DB1\templates\mail\pw_reset.html.twig:24 - Part-DB1\templates\mail\pw_reset.html.twig:24 - email.pw_reset.valid_unit %date% Token resetowania jest ważny do <i>%date%</i> - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:18 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:78 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - orderdetail.delete Usuń - - 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 Minimalna ilość zamówienia - - 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 Cena - - 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 dla ilości - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - pricedetail.create Utwórz cenę - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - templates\Parts\edit_part_info.html.twig:4 - part.edit.title Edytuj komponent %name% - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - templates\Parts\edit_part_info.html.twig:9 - part.edit.card_title Edytuj komponent - - 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 Ogólne - - 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 Producent - - 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 Zaawansowane @@ -1892,279 +1147,156 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - - 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 Zapasy - - 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 Załączniki - - 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 Informacja o zakupie - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 - part.edit.tab.specifications Parametry - - 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 Notatki - - 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 Utwórz nowy komponent - - Part-DB1\templates\Parts\edit\_lots.html.twig:5 - Part-DB1\templates\Parts\edit\_lots.html.twig:5 - part_lot.delete Usuń - - Part-DB1\templates\Parts\edit\_lots.html.twig:28 - Part-DB1\templates\Parts\edit\_lots.html.twig:28 - part_lot.create Dodaj zapas - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 - orderdetail.create Dodaj dystrybutora - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 - pricedetails.edit.delete.confirm Czy na pewno chcesz usunąć tę cenę? Tego nie da się cofnąć! - - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:62 - Part-DB1\templates\Parts\edit\_orderdetails.html.twig:61 - orderdetails.edit.delete.confirm Czy naprawdę chcesz usunąć tego dostawcę? Nie można tego cofnąć! - - 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 Informacje szczegółowe dla komponentu - - 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 Zapasy - - 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 Notatki - - Part-DB1\templates\Parts\info\show_part_info.html.twig:64 - part.info.specifications Parametry - - 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 Załączniki - - 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 Informacje o zakupach - - 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 Historia - - 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 Narzędzia - - 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 Informacje rozszerzone - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 - attachment.name Nazwa - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 - attachment.attachment_type Typ załącznika - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 - attachment.file_name Nazwa pliku - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 - attachment.file_size Rozmiar pliku - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:54 - attachment.preview Podgląd obrazu - - Part-DB1\templates\Parts\info\_attachments_info.html.twig:67 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:50 - attachment.download Pobierz @@ -2172,8 +1304,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 new @@ -2182,14 +1312,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Unknown Nieznany @@ -2197,10 +1319,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - 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 @@ -2210,8 +1328,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 new @@ -2220,49 +1336,24 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - part.isFavorite Ulubiony - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 - part.minOrderAmount Minimalna ilość zamawiana - - 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 Producent - - 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 Nazwa @@ -2270,8 +1361,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Parts\info\_main_infos.html.twig:27 - Part-DB1\templates\Parts\info\_main_infos.html.twig:27 new @@ -2280,767 +1369,432 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - - 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 Opis - - 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 Kategoria - - 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 Na stanie - - 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 Minimalny stan zapasów - - 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 Układ padów (footprint) - - 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 Średnia cena - - Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - part.supplier.name Nazwa - - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - part.supplier.partnr Nr zamówienia - - Part-DB1\templates\Parts\info\_order_infos.html.twig:28 - Part-DB1\templates\Parts\info\_order_infos.html.twig:28 - part.order.minamount Ilość minimalna - - Part-DB1\templates\Parts\info\_order_infos.html.twig:29 - Part-DB1\templates\Parts\info\_order_infos.html.twig:29 - part.order.price Cena - - Part-DB1\templates\Parts\info\_order_infos.html.twig:31 - Part-DB1\templates\Parts\info\_order_infos.html.twig:31 - part.order.single_price Cena jednostkowa - - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 - Part-DB1\templates\Parts\info\_part_lots.html.twig:6 - part_lots.description Opis - - Part-DB1\templates\Parts\info\_part_lots.html.twig:8 - Part-DB1\templates\Parts\info\_part_lots.html.twig:7 - part_lots.storage_location Miejsce przechowywania - - Part-DB1\templates\Parts\info\_part_lots.html.twig:9 - Part-DB1\templates\Parts\info\_part_lots.html.twig:8 - part_lots.amount Ilość - - Part-DB1\templates\Parts\info\_part_lots.html.twig:24 - Part-DB1\templates\Parts\info\_part_lots.html.twig:22 - part_lots.location_unknown Miejsce przechowywania nieznane - - Part-DB1\templates\Parts\info\_part_lots.html.twig:31 - Part-DB1\templates\Parts\info\_part_lots.html.twig:29 - part_lots.instock_unknown Ilość nieznana - - Part-DB1\templates\Parts\info\_part_lots.html.twig:40 - Part-DB1\templates\Parts\info\_part_lots.html.twig:38 - part_lots.expiration_date Data ważności - - Part-DB1\templates\Parts\info\_part_lots.html.twig:48 - Part-DB1\templates\Parts\info\_part_lots.html.twig:46 - part_lots.is_expired Wygasł - - Part-DB1\templates\Parts\info\_part_lots.html.twig:55 - Part-DB1\templates\Parts\info\_part_lots.html.twig:53 - part_lots.need_refill Wymaga uzupełnienia - - Part-DB1\templates\Parts\info\_picture.html.twig:15 - Part-DB1\templates\Parts\info\_picture.html.twig:15 - part.info.prev_picture Poprzedni obraz - - Part-DB1\templates\Parts\info\_picture.html.twig:19 - Part-DB1\templates\Parts\info\_picture.html.twig:19 - part.info.next_picture Następny obraz - - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - part.mass.tooltip Masa - - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - part.needs_review.badge Wymaga recenzji - - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - part.favorite.badge Ulubiony - - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - part.obsolete.badge Nie dostępny - - Part-DB1\templates\Parts\info\_specifications.html.twig:10 - parameters.extracted_from_description Automatycznie pobrane z opisu - - Part-DB1\templates\Parts\info\_specifications.html.twig:15 - parameters.auto_extracted_from_comment Automatycznie pobierane z notatek - - Part-DB1\templates\Parts\info\_tools.html.twig:6 - Part-DB1\templates\Parts\info\_tools.html.twig:4 - templates\Parts\show_part_info.html.twig:125 - part.edit.btn Edytuj komponent - - Part-DB1\templates\Parts\info\_tools.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:14 - templates\Parts\show_part_info.html.twig:135 - part.clone.btn Sklonuj komponent - - Part-DB1\templates\Parts\info\_tools.html.twig:24 - Part-DB1\templates\Parts\lists\_action_bar.html.twig:4 - templates\Parts\show_part_info.html.twig:143 - part.create.btn Utwórz nowy komponent - - Part-DB1\templates\Parts\info\_tools.html.twig:31 - Part-DB1\templates\Parts\info\_tools.html.twig:29 - part.delete.confirm_title Na pewno chcesz usunąć ten komponent? - - Part-DB1\templates\Parts\info\_tools.html.twig:32 - Part-DB1\templates\Parts\info\_tools.html.twig:30 - part.delete.message Ta część i wszelkie powiązane z nią informacje (takie jak załączniki, informacje o cenie itp.) zostaną usunięte. Nie można tego cofnąć! - - Part-DB1\templates\Parts\info\_tools.html.twig:39 - Part-DB1\templates\Parts\info\_tools.html.twig:37 - part.delete Usuń komponent - - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - parts_list.all.title Wszystkie komponenty - - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - parts_list.category.title Komponenty z kategorią - - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - parts_list.footprint.title Komponenty z polami lutowniczymi - - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - parts_list.manufacturer.title Komponenty z producentem - - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - parts_list.search.title Wyszukiwarka komponentów - - 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 Komponenty z lokalizacją magazynu - - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - parts_list.supplier.title Komponenty z dostawcą - - Part-DB1\templates\Parts\lists\tags_list.html.twig:4 - Part-DB1\templates\Parts\lists\tags_list.html.twig:4 - parts_list.tags.title Komponenty z etykietą - - Part-DB1\templates\Parts\lists\_info_card.html.twig:22 - Part-DB1\templates\Parts\lists\_info_card.html.twig:17 - entity.info.common.tab Ogólne - - Part-DB1\templates\Parts\lists\_info_card.html.twig:26 - Part-DB1\templates\Parts\lists\_info_card.html.twig:20 - entity.info.statistics.tab Statystyki - - Part-DB1\templates\Parts\lists\_info_card.html.twig:31 - entity.info.attachments.tab Załączniki - - Part-DB1\templates\Parts\lists\_info_card.html.twig:37 - entity.info.parameters.tab Parametry - - Part-DB1\templates\Parts\lists\_info_card.html.twig:54 - Part-DB1\templates\Parts\lists\_info_card.html.twig:30 - entity.info.name Nazwa - - Part-DB1\templates\Parts\lists\_info_card.html.twig:58 - Part-DB1\templates\Parts\lists\_info_card.html.twig:96 - Part-DB1\templates\Parts\lists\_info_card.html.twig:34 - Part-DB1\templates\Parts\lists\_info_card.html.twig:67 - entity.info.parent Nadrzędny - - Part-DB1\templates\Parts\lists\_info_card.html.twig:70 - Part-DB1\templates\Parts\lists\_info_card.html.twig:46 - entity.edit.btn Edycja - - Part-DB1\templates\Parts\lists\_info_card.html.twig:92 - Part-DB1\templates\Parts\lists\_info_card.html.twig:63 - entity.info.children_count Ilość elementów podrzędnych - - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - tfa.check.title Wymagane uwierzytelnianie dwuskładnikowe - - Part-DB1\templates\security\2fa_base_form.html.twig:39 - Part-DB1\templates\security\2fa_base_form.html.twig:39 - tfa.code.trusted_pc To jest zaufany komputer (jeśli ta opcja jest włączona, na tym komputerze nie są wykonywane żadne dalsze zapytania dwuskładnikowe). - - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - login.btn Zaloguj - - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:42 - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:40 - user.logout Wyloguj - - Part-DB1\templates\security\2fa_form.html.twig:6 - Part-DB1\templates\security\2fa_form.html.twig:6 - tfa.check.code.label Kod z aplikacji Authenticator - - Part-DB1\templates\security\2fa_form.html.twig:10 - Part-DB1\templates\security\2fa_form.html.twig:10 - tfa.check.code.help Wprowadź 6-cyfrowy kod z aplikacji Authenticator lub jeden z kodów zapasowych, jeśli Authenticator nie jest dostępny. - - Part-DB1\templates\security\login.html.twig:3 - Part-DB1\templates\security\login.html.twig:3 - templates\security\login.html.twig:3 - login.title Login - - Part-DB1\templates\security\login.html.twig:7 - Part-DB1\templates\security\login.html.twig:7 - templates\security\login.html.twig:7 - login.card_title Login - - Part-DB1\templates\security\login.html.twig:31 - Part-DB1\templates\security\login.html.twig:31 - templates\security\login.html.twig:31 - login.username.label Nazwa użytkownika - - Part-DB1\templates\security\login.html.twig:34 - Part-DB1\templates\security\login.html.twig:34 - templates\security\login.html.twig:34 - login.username.placeholder Nazwa użytkownika - - Part-DB1\templates\security\login.html.twig:38 - Part-DB1\templates\security\login.html.twig:38 - templates\security\login.html.twig:38 - login.password.label Hasło - - Part-DB1\templates\security\login.html.twig:40 - Part-DB1\templates\security\login.html.twig:40 - templates\security\login.html.twig:40 - login.password.placeholder Hasło - - Part-DB1\templates\security\login.html.twig:50 - Part-DB1\templates\security\login.html.twig:50 - templates\security\login.html.twig:50 - login.rememberme Zapamiętaj mnie (nie należy używać na współdzielonych komputerach) - - Part-DB1\templates\security\login.html.twig:64 - Part-DB1\templates\security\login.html.twig:64 - pw_reset.password_forget Nie pamiętasz nazwy użytkownika/hasła? - - 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 Ustaw nowe hasło - - 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 Poproś o nowe hasło - - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - tfa_u2f.http_warning Uzyskujesz dostęp do tej strony przy użyciu niezabezpieczonej metody HTTP, więc KLUCZ U2F najprawdopodobniej nie będzie działać (komunikat o błędzie Bad Request). Jeśli chcesz używać kluczy bezpieczeństwa, poproś administratora o skonfigurowanie bezpiecznej metody HTTPS. - - Part-DB1\templates\security\U2F\u2f_login.html.twig:10 - Part-DB1\templates\security\U2F\u2f_register.html.twig:22 - 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 Podłącz klucz bezpieczeństwa i naciśnij jego przycisk! - - 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 Dodaj klucz bezpieczeństwa - - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - tfa_u2f.explanation Za pomocą klucza bezpieczeństwa kompatybilnego z U2F/FIDO (np. YubiKey lub NitroKey) można osiągnąć przyjazne dla użytkownika i bezpieczne uwierzytelnianie dwuskładnikowe. Klucze bezpieczeństwa można tutaj zarejestrować, a jeśli wymagana jest weryfikacja dwuskładnikowa, wystarczy włożyć klucz przez USB lub wpisać go na urządzeniu za pomocą NFC. - - 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 Aby mieć pewność dostępu nawet w przypadku zgubienia klucza, zaleca się zarejestrowanie drugiego klucza jako kopię zapasową i przechowywanie go w bezpiecznym miejscu! - - 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 Dodaj klucz - - 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 Powrót do ustawień @@ -3048,10 +1802,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 new @@ -3061,8 +1811,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Statistics\statistics.html.twig:14 - Part-DB1\templates\Statistics\statistics.html.twig:14 new @@ -3072,8 +1820,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Statistics\statistics.html.twig:19 - Part-DB1\templates\Statistics\statistics.html.twig:19 new @@ -3083,8 +1829,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Statistics\statistics.html.twig:24 - Part-DB1\templates\Statistics\statistics.html.twig:24 new @@ -3094,12 +1838,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 new @@ -3109,12 +1847,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 new @@ -3124,8 +1856,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Statistics\statistics.html.twig:40 - Part-DB1\templates\Statistics\statistics.html.twig:40 new @@ -3135,8 +1865,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Statistics\statistics.html.twig:44 - Part-DB1\templates\Statistics\statistics.html.twig:44 new @@ -3146,8 +1874,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Statistics\statistics.html.twig:48 - Part-DB1\templates\Statistics\statistics.html.twig:48 new @@ -3157,8 +1883,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Statistics\statistics.html.twig:65 - Part-DB1\templates\Statistics\statistics.html.twig:65 new @@ -3168,8 +1892,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Statistics\statistics.html.twig:69 - Part-DB1\templates\Statistics\statistics.html.twig:69 new @@ -3179,8 +1901,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Statistics\statistics.html.twig:73 - Part-DB1\templates\Statistics\statistics.html.twig:73 new @@ -3190,8 +1910,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Statistics\statistics.html.twig:77 - Part-DB1\templates\Statistics\statistics.html.twig:77 new @@ -3201,8 +1919,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Statistics\statistics.html.twig:81 - Part-DB1\templates\Statistics\statistics.html.twig:81 new @@ -3212,8 +1928,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Statistics\statistics.html.twig:85 - Part-DB1\templates\Statistics\statistics.html.twig:85 new @@ -3223,8 +1937,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Statistics\statistics.html.twig:89 - Part-DB1\templates\Statistics\statistics.html.twig:89 new @@ -3234,8 +1946,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Statistics\statistics.html.twig:93 - Part-DB1\templates\Statistics\statistics.html.twig:93 new @@ -3245,8 +1955,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Statistics\statistics.html.twig:110 - Part-DB1\templates\Statistics\statistics.html.twig:110 new @@ -3256,8 +1964,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Statistics\statistics.html.twig:114 - Part-DB1\templates\Statistics\statistics.html.twig:114 new @@ -3267,8 +1973,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Statistics\statistics.html.twig:118 - Part-DB1\templates\Statistics\statistics.html.twig:118 new @@ -3278,8 +1982,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Statistics\statistics.html.twig:122 - Part-DB1\templates\Statistics\statistics.html.twig:122 new @@ -3289,8 +1991,6 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - Part-DB1\templates\Statistics\statistics.html.twig:126 - Part-DB1\templates\Statistics\statistics.html.twig:126 new @@ -3299,564 +1999,312 @@ Po usunięciu pod elementy zostaną przeniesione na górę. - - 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 Kody zapasowe - - Part-DB1\templates\Users\backup_codes.html.twig:12 - Part-DB1\templates\Users\backup_codes.html.twig:12 - tfa_backup.codes.explanation Wydrukuj te kody i przechowuj je w bezpiecznym miejscu! - - Part-DB1\templates\Users\backup_codes.html.twig:13 - Part-DB1\templates\Users\backup_codes.html.twig:13 - tfa_backup.codes.help Jeśli nie masz już dostępu do urządzenia z aplikacją Authenticator (zgubiony smartfon, utrata danych itp.), możesz użyć jednego z tych kodów, aby uzyskać dostęp do swojego konta i ewentualnie skonfigurować nową aplikację Authenticator. Każdy z tych kodów można użyć tylko raz, zaleca się usunięcie wykorzystanych kodów. Każdy, kto ma dostęp do tych kodów, może potencjalnie uzyskać dostęp do Twojego konta, dlatego przechowuj je w bezpiecznym miejscu. - - Part-DB1\templates\Users\backup_codes.html.twig:16 - Part-DB1\templates\Users\backup_codes.html.twig:16 - tfa_backup.username Nazwa użytkownika - - Part-DB1\templates\Users\backup_codes.html.twig:29 - Part-DB1\templates\Users\backup_codes.html.twig:29 - tfa_backup.codes.page_generated_on Strona wygenerowana w dniu %date% - - Part-DB1\templates\Users\backup_codes.html.twig:32 - Part-DB1\templates\Users\backup_codes.html.twig:32 - tfa_backup.codes.print Drukuj - - Part-DB1\templates\Users\backup_codes.html.twig:35 - Part-DB1\templates\Users\backup_codes.html.twig:35 - tfa_backup.codes.copy_clipboard Kopiuj do schowka - - 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 Informacje o użytkowniku - - 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 Imię - - 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 Nazwisko - - 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 E-mail - - 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 Dział - - 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 Nazwa użytkownika - - 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 Grupa - - Part-DB1\templates\Users\user_info.html.twig:67 - Part-DB1\templates\Users\user_info.html.twig:67 - user.permissions Uprawnienia - - 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 Ustawienia użytkownika - - 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 Dane personalne - - 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 Konfiguracja - - 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 Zmień hasło - - Part-DB1\templates\Users\_2fa_settings.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:6 - user.settings.2fa_settings Uwierzytelnianie dwuskładnikowe - - Part-DB1\templates\Users\_2fa_settings.html.twig:13 - Part-DB1\templates\Users\_2fa_settings.html.twig:13 - tfa.settings.google.tab Aplikacja Authenticator - - Part-DB1\templates\Users\_2fa_settings.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:17 - tfa.settings.bakup.tab Kody zapasowe - - Part-DB1\templates\Users\_2fa_settings.html.twig:21 - Part-DB1\templates\Users\_2fa_settings.html.twig:21 - tfa.settings.u2f.tab Klucze bezpieczeństwa (U2F) - - Part-DB1\templates\Users\_2fa_settings.html.twig:25 - Part-DB1\templates\Users\_2fa_settings.html.twig:25 - tfa.settings.trustedDevices.tab Zaufane urządzenia - - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - tfa_google.disable.confirm_title Czy naprawdę chcesz wyłączyć aplikację Authenticator? - - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - Part-DB1\templates\Users\_2fa_settings.html.twig:33 - tfa_google.disable.confirm_message Jeśli wyłączysz aplikację Authenticator, wszystkie kody zapasowe zostaną usunięte, więc możesz potrzebować ich ponownego wydrukowania.<br> Również pamiętaj, że bez weryfikacji dwuetapowej Twoje konto nie jest już tak dobrze chronione przed atakami! - - Part-DB1\templates\Users\_2fa_settings.html.twig:39 - Part-DB1\templates\Users\_2fa_settings.html.twig:39 - tfa_google.disabled_message Aplikacja Authenticator wyłączona! - - Part-DB1\templates\Users\_2fa_settings.html.twig:48 - Part-DB1\templates\Users\_2fa_settings.html.twig:48 - tfa_google.step.download Pobierz aplikację uwierzytelniającą (np. <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 Zeskanuj sąsiedni kod QR za pomocą aplikacji lub wprowadź dane ręcznie. - - Part-DB1\templates\Users\_2fa_settings.html.twig:50 - Part-DB1\templates\Users\_2fa_settings.html.twig:50 - tfa_google.step.input_code Zeskanuj sąsiadujący kod QR za pomocą aplikacji lub wprowadź dane ręcznie. - - Part-DB1\templates\Users\_2fa_settings.html.twig:51 - Part-DB1\templates\Users\_2fa_settings.html.twig:51 - tfa_google.step.download_backup Wydrukuj kody zapasowe i przechowuj je w bezpiecznym miejscu. - - Part-DB1\templates\Users\_2fa_settings.html.twig:58 - Part-DB1\templates\Users\_2fa_settings.html.twig:58 - tfa_google.manual_setup Konfiguracja ręczna - - Part-DB1\templates\Users\_2fa_settings.html.twig:62 - Part-DB1\templates\Users\_2fa_settings.html.twig:62 - tfa_google.manual_setup.type Typ - - Part-DB1\templates\Users\_2fa_settings.html.twig:63 - Part-DB1\templates\Users\_2fa_settings.html.twig:63 - tfa_google.manual_setup.username Nazwa użytkownika - - Part-DB1\templates\Users\_2fa_settings.html.twig:64 - Part-DB1\templates\Users\_2fa_settings.html.twig:64 - tfa_google.manual_setup.secret Sekret - - Part-DB1\templates\Users\_2fa_settings.html.twig:65 - Part-DB1\templates\Users\_2fa_settings.html.twig:65 - tfa_google.manual_setup.digit_count Liczba cyfr - - Part-DB1\templates\Users\_2fa_settings.html.twig:74 - Part-DB1\templates\Users\_2fa_settings.html.twig:74 - tfa_google.enabled_message Włączona aplikacja Authenticator - - Part-DB1\templates\Users\_2fa_settings.html.twig:83 - Part-DB1\templates\Users\_2fa_settings.html.twig:83 - tfa_backup.disabled Kody zapasowe wyłączone. Skonfiguruj aplikację uwierzytelniającą, aby włączyć kody zapasowe. - - 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 Możesz użyć tych kodów zapasowych, aby uzyskać dostęp do konta, nawet jeśli zgubisz urządzenie z aplikacją Authenticator. Wydrukuj kody i przechowuj je w bezpiecznym miejscu. - - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - tfa_backup.reset_codes.confirm_title Naprawdę zresetować kody? - - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - Part-DB1\templates\Users\_2fa_settings.html.twig:88 - tfa_backup.reset_codes.confirm_message Spowoduje to usunięcie wszystkich poprzednich kodów i wygenerowanie zestawu nowych kodów. Nie można tego cofnąć. Pamiętaj, aby wydrukować nowe kody i przechowywać je w bezpiecznym miejscu! - - Part-DB1\templates\Users\_2fa_settings.html.twig:91 - Part-DB1\templates\Users\_2fa_settings.html.twig:91 - tfa_backup.enabled Kody zapasowe włączone - - Part-DB1\templates\Users\_2fa_settings.html.twig:99 - Part-DB1\templates\Users\_2fa_settings.html.twig:99 - tfa_backup.show_codes Pokaż kody zapasowe - - Part-DB1\templates\Users\_2fa_settings.html.twig:114 - Part-DB1\templates\Users\_2fa_settings.html.twig:114 - tfa_u2f.table_caption Zarejestrowane klucze bezpieczeństwa - - Part-DB1\templates\Users\_2fa_settings.html.twig:115 - Part-DB1\templates\Users\_2fa_settings.html.twig:115 - tfa_u2f.delete_u2f.confirm_title Naprawdę usunąć ten klucz bezpieczeństwa? - - Part-DB1\templates\Users\_2fa_settings.html.twig:116 - Part-DB1\templates\Users\_2fa_settings.html.twig:116 - tfa_u2f.delete_u2f.confirm_message Jeśli usuniesz ten klucz, logowanie za jego pomocą nie będzie już możliwe. Jeśli nie pozostaną żadne klucze zabezpieczeń, uwierzytelnianie dwuskładnikowe zostanie wyłączone. - - Part-DB1\templates\Users\_2fa_settings.html.twig:123 - Part-DB1\templates\Users\_2fa_settings.html.twig:123 - tfa_u2f.keys.name Nazwa klucza - - Part-DB1\templates\Users\_2fa_settings.html.twig:124 - Part-DB1\templates\Users\_2fa_settings.html.twig:124 - tfa_u2f.keys.added_date Data dodania - - Part-DB1\templates\Users\_2fa_settings.html.twig:134 - Part-DB1\templates\Users\_2fa_settings.html.twig:134 - tfa_u2f.key_delete Usuń klucz - - Part-DB1\templates\Users\_2fa_settings.html.twig:141 - Part-DB1\templates\Users\_2fa_settings.html.twig:141 - tfa_u2f.no_keys_registered Brak zarejestrowanych kluczy - - Part-DB1\templates\Users\_2fa_settings.html.twig:144 - Part-DB1\templates\Users\_2fa_settings.html.twig:144 - tfa_u2f.add_new_key Dodaj nowy klucz - - Part-DB1\templates\Users\_2fa_settings.html.twig:148 - Part-DB1\templates\Users\_2fa_settings.html.twig:148 - tfa_trustedDevices.explanation Podczas sprawdzania drugiego czynnika bieżący komputer może zostać oznaczony jako godny zaufania, więc nie są już wymagane żadne kontrole dwuskładnikowe na tym komputerze. @@ -3864,326 +2312,168 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - - Part-DB1\templates\Users\_2fa_settings.html.twig:149 - Part-DB1\templates\Users\_2fa_settings.html.twig:149 - tfa_trustedDevices.invalidate.confirm_title Naprawdę usunąć wszystkie zaufane komputery? - - Part-DB1\templates\Users\_2fa_settings.html.twig:150 - Part-DB1\templates\Users\_2fa_settings.html.twig:150 - tfa_trustedDevices.invalidate.confirm_message Konieczne będzie ponowne przeprowadzenie uwierzytelniania dwuskładnikowego na wszystkich komputerach. Upewnij się, że masz pod ręką swoje urządzenie dwuskładnikowe. - - Part-DB1\templates\Users\_2fa_settings.html.twig:154 - Part-DB1\templates\Users\_2fa_settings.html.twig:154 - tfa_trustedDevices.invalidate.btn Resetuj zaufane urządzenia - - Part-DB1\templates\_navbar.html.twig:4 - Part-DB1\templates\_navbar.html.twig:4 - templates\base.html.twig:29 - sidebar.toggle Przełącz pasek boczny - - Part-DB1\templates\_navbar.html.twig:22 - navbar.scanner.link Skaner - - Part-DB1\templates\_navbar.html.twig:38 - Part-DB1\templates\_navbar.html.twig:36 - templates\base.html.twig:97 - user.loggedin.label Zalogowany jako - - Part-DB1\templates\_navbar.html.twig:44 - Part-DB1\templates\_navbar.html.twig:42 - templates\base.html.twig:103 - user.login Zaloguj - - Part-DB1\templates\_navbar.html.twig:50 - Part-DB1\templates\_navbar.html.twig:48 - ui.toggle_darkmode Tryb ciemny - - Part-DB1\templates\_navbar.html.twig:54 - Part-DB1\src\Form\UserSettingsType.php:97 - Part-DB1\templates\_navbar.html.twig:52 - Part-DB1\src\Form\UserSettingsType.php:97 - templates\base.html.twig:106 - src\Form\UserSettingsType.php:44 - user.language_select Język - - Part-DB1\templates\_navbar_search.html.twig:4 - Part-DB1\templates\_navbar_search.html.twig:4 - templates\base.html.twig:49 - search.options.label Opcje wyszukiwania - - Part-DB1\templates\_navbar_search.html.twig:23 - tags.label Tagi - - Part-DB1\templates\_navbar_search.html.twig:27 - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - templates\base.html.twig:60 - templates\Parts\show_part_info.html.twig:36 - src\Form\PartType.php:77 - storelocation.label Miejsce przechowywania - - Part-DB1\templates\_navbar_search.html.twig:36 - Part-DB1\templates\_navbar_search.html.twig:31 - templates\base.html.twig:65 - ordernumber.label.short Nr zamówienia. - - Part-DB1\templates\_navbar_search.html.twig:40 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - Part-DB1\templates\_navbar_search.html.twig:35 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - templates\base.html.twig:67 - supplier.label Dostawca - - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_navbar_search.html.twig:56 - templates\base.html.twig:77 - search.regexmatching Dopasowywanie Reg.Ex. - - Part-DB1\templates\_sidebar.html.twig:37 - Part-DB1\templates\_sidebar.html.twig:12 - Part-DB1\templates\_sidebar.html.twig:37 - Part-DB1\templates\_sidebar.html.twig:12 - templates\base.html.twig:175 - templates\base.html.twig:189 - templates\base.html.twig:202 - templates\base.html.twig:230 - project.labelp Projekty - - Part-DB1\templates\_sidebar.html.twig:2 - Part-DB1\templates\_sidebar.html.twig:2 - templates\base.html.twig:165 - templates\base.html.twig:192 - templates\base.html.twig:220 - actions Akcje - - Part-DB1\templates\_sidebar.html.twig:6 - Part-DB1\templates\_sidebar.html.twig:6 - templates\base.html.twig:169 - templates\base.html.twig:196 - templates\base.html.twig:224 - datasource Źródło danych - - Part-DB1\templates\_sidebar.html.twig:10 - Part-DB1\templates\_sidebar.html.twig:10 - templates\base.html.twig:173 - templates\base.html.twig:200 - templates\base.html.twig:228 - manufacturer.labelp Producenci - - Part-DB1\templates\_sidebar.html.twig:11 - Part-DB1\templates\_sidebar.html.twig:11 - templates\base.html.twig:174 - templates\base.html.twig:201 - templates\base.html.twig:229 - supplier.labelp Dostawcy - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:213 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:293 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:293 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:181 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:243 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:268 - attachment.download_failed Pobieranie zewnętrznego załącznika nie powiodło się. - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:222 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:190 - entity.edit_flash Zmiany zostały pomyślnie zapisane. - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:231 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:196 - entity.edit_flash.invalid Nie można zapisać zmienionych danych. Sprawdź wprowadzone dane! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:302 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:252 - entity.created_flash Utworzony element. - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:308 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:258 - entity.created_flash.invalid Nie można utworzyć elementu. Sprawdź wprowadzone dane! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:399 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:352 - src\Controller\BaseAdminController.php:154 - attachment_type.deleted Element usunięty! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:401 - Part-DB1\src\Controller\UserController.php:109 - Part-DB1\src\Controller\UserSettingsController.php:159 - Part-DB1\src\Controller\UserSettingsController.php:193 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:354 - Part-DB1\src\Controller\UserController.php:101 - Part-DB1\src\Controller\UserSettingsController.php:150 - Part-DB1\src\Controller\UserSettingsController.php:182 - csfr_invalid Token CSRF jest nieprawidłowy. Załaduj ponownie tę stronę lub skontaktuj się z administratorem, jeśli ten komunikat będzie się powtarzał. - - Part-DB1\src\Controller\LabelController.php:125 - label_generator.no_entities_found Nie znaleziono żadnych elementów @@ -4191,8 +2481,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\src\Controller\LogController.php:149 - Part-DB1\src\Controller\LogController.php:154 new @@ -4202,8 +2490,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\src\Controller\LogController.php:156 - Part-DB1\src\Controller\LogController.php:160 new @@ -4213,8 +2499,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\src\Controller\LogController.php:176 - Part-DB1\src\Controller\LogController.php:180 new @@ -4224,8 +2508,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\src\Controller\LogController.php:178 - Part-DB1\src\Controller\LogController.php:182 new @@ -4235,8 +2517,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\src\Controller\LogController.php:185 - Part-DB1\src\Controller\LogController.php:189 new @@ -4246,8 +2526,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\src\Controller\LogController.php:187 - Part-DB1\src\Controller\LogController.php:191 new @@ -4257,8 +2535,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\src\Controller\LogController.php:194 - Part-DB1\src\Controller\LogController.php:198 new @@ -4268,8 +2544,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\src\Controller\LogController.php:196 - Part-DB1\src\Controller\LogController.php:200 new @@ -4279,8 +2553,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\src\Controller\LogController.php:199 - Part-DB1\src\Controller\LogController.php:203 new @@ -4289,306 +2561,168 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - - Part-DB1\src\Controller\PartController.php:182 - Part-DB1\src\Controller\PartController.php:182 - src\Controller\PartController.php:80 - part.edited_flash Zmiany zapisane! - - Part-DB1\src\Controller\PartController.php:216 - Part-DB1\src\Controller\PartController.php:219 - part.deleted Komponent został pomyślnie usunięty. - - Part-DB1\src\Controller\PartController.php:302 - Part-DB1\src\Controller\PartController.php:277 - Part-DB1\src\Controller\PartController.php:317 - src\Controller\PartController.php:113 - src\Controller\PartController.php:142 - part.created_flash Komponenty zostały utworzone pomyślnie! - - Part-DB1\src\Controller\PartController.php:308 - Part-DB1\src\Controller\PartController.php:283 - part.created_flash.invalid Błąd podczas tworzenia: Proszę sprawdzić swoje dane wejściowe! - - Part-DB1\src\Controller\ScanController.php:68 - Part-DB1\src\Controller\ScanController.php:90 - scan.qr_not_found Nie znaleziono elementu dla podanego kodu kreskowego. - - Part-DB1\src\Controller\ScanController.php:71 - scan.format_unknown Format nieznany - - Part-DB1\src\Controller\ScanController.php:86 - scan.qr_success Element znaleziono - - Part-DB1\src\Controller\SecurityController.php:114 - Part-DB1\src\Controller\SecurityController.php:109 - pw_reset.user_or_email Nazwa użytkownika / adres e-mail - - Part-DB1\src\Controller\SecurityController.php:131 - Part-DB1\src\Controller\SecurityController.php:126 - pw_reset.request.success Prośba o zresetowanie została pomyślnie wykonana! Aby uzyskać dalsze instrukcje, sprawdź swoją pocztę e-mail. - - Part-DB1\src\Controller\SecurityController.php:162 - Part-DB1\src\Controller\SecurityController.php:160 - pw_reset.username Nazwa użytkownika - - 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 Nazwa użytkownika lub token są nieprawidłowe! Sprawdź wprowadzone dane. - - Part-DB1\src\Controller\SecurityController.php:196 - Part-DB1\src\Controller\SecurityController.php:194 - pw_reset.new_pw.success Hasło zostało pomyślnie zresetowane. Możesz teraz zalogować się przy użyciu nowego hasła. - - Part-DB1\src\Controller\UserController.php:107 - Part-DB1\src\Controller\UserController.php:99 - user.edit.reset_success Wszystkie metody uwierzytelniania dwuskładnikowego zostały pomyślnie wyłączone. - - Part-DB1\src\Controller\UserSettingsController.php:101 - Part-DB1\src\Controller\UserSettingsController.php:92 - tfa_backup.no_codes_enabled Nie włączono żadnych kodów zapasowych! - - Part-DB1\src\Controller\UserSettingsController.php:138 - Part-DB1\src\Controller\UserSettingsController.php:132 - tfa_u2f.u2f_delete.not_existing Żaden klucz bezpieczeństwa o tym identyfikatorze nie istnieje. - - Part-DB1\src\Controller\UserSettingsController.php:145 - Part-DB1\src\Controller\UserSettingsController.php:139 - tfa_u2f.u2f_delete.access_denied Nie możesz usuwać kluczy bezpieczeństwa innych użytkowników! - - Part-DB1\src\Controller\UserSettingsController.php:153 - Part-DB1\src\Controller\UserSettingsController.php:147 - tfa.u2f.u2f_delete.success Klucz bezpieczeństwa został pomyślnie usunięty. - - Part-DB1\src\Controller\UserSettingsController.php:188 - Part-DB1\src\Controller\UserSettingsController.php:180 - tfa_trustedDevice.invalidate.success Zaufane urządzenia zostały pomyślnie zresetowane. - - Part-DB1\src\Controller\UserSettingsController.php:235 - Part-DB1\src\Controller\UserSettingsController.php:226 - src\Controller\UserController.php:98 - user.settings.saved_flash Ustawienia zapisane! - - Part-DB1\src\Controller\UserSettingsController.php:297 - Part-DB1\src\Controller\UserSettingsController.php:288 - src\Controller\UserController.php:130 - user.settings.pw_changed_flash Hasło zostało zmienione! - - Part-DB1\src\Controller\UserSettingsController.php:317 - Part-DB1\src\Controller\UserSettingsController.php:306 - user.settings.2fa.google.activated Aplikacja uwierzytelniająca została pomyślnie aktywowana. - - Part-DB1\src\Controller\UserSettingsController.php:328 - Part-DB1\src\Controller\UserSettingsController.php:315 - user.settings.2fa.google.disabled Aplikacja uwierzytelniająca została pomyślnie dezaktywowana. - - Part-DB1\src\Controller\UserSettingsController.php:346 - Part-DB1\src\Controller\UserSettingsController.php:332 - user.settings.2fa.backup_codes.regenerated Pomyślnie wygenerowano nowe kody zapasowe. - - Part-DB1\src\DataTables\AttachmentDataTable.php:153 - Part-DB1\src\DataTables\AttachmentDataTable.php:153 - attachment.table.filesize Rozmiar pliku - - 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 prawda - - 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 fałsz - - Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:128 - Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:119 - log.target_deleted usunięto @@ -4596,8 +2730,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\src\DataTables\Column\RevertLogColumn.php:57 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:60 new @@ -4607,8 +2739,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\src\DataTables\Column\RevertLogColumn.php:63 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:66 new @@ -4618,8 +2748,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\src\DataTables\Column\RevertLogColumn.php:83 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:86 new @@ -4628,70 +2756,42 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - - 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 Znacznik czasu - - Part-DB1\src\DataTables\LogDataTable.php:183 - Part-DB1\src\DataTables\LogDataTable.php:171 - log.type Zdarzenie - - Part-DB1\src\DataTables\LogDataTable.php:191 - Part-DB1\src\DataTables\LogDataTable.php:179 - log.level Poziom - - Part-DB1\src\DataTables\LogDataTable.php:200 - Part-DB1\src\DataTables\LogDataTable.php:188 - log.user Użytkownik - - Part-DB1\src\DataTables\LogDataTable.php:213 - Part-DB1\src\DataTables\LogDataTable.php:201 - log.target_type Typ docelowy - - Part-DB1\src\DataTables\LogDataTable.php:226 - Part-DB1\src\DataTables\LogDataTable.php:214 - log.target Target @@ -4699,8 +2799,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\src\DataTables\LogDataTable.php:231 - Part-DB1\src\DataTables\LogDataTable.php:218 new @@ -4709,100 +2807,60 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - - Part-DB1\src\DataTables\PartsDataTable.php:168 - Part-DB1\src\DataTables\PartsDataTable.php:116 - part.table.name Nazwa - - 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 Opis - - Part-DB1\src\DataTables\PartsDataTable.php:185 - Part-DB1\src\DataTables\PartsDataTable.php:133 - part.table.category Kategoria - - Part-DB1\src\DataTables\PartsDataTable.php:190 - Part-DB1\src\DataTables\PartsDataTable.php:138 - part.table.footprint Pola lutownicze - - Part-DB1\src\DataTables\PartsDataTable.php:194 - Part-DB1\src\DataTables\PartsDataTable.php:142 - part.table.manufacturer Producent - - Part-DB1\src\DataTables\PartsDataTable.php:197 - Part-DB1\src\DataTables\PartsDataTable.php:145 - part.table.storeLocations Miejsca przechowywania - - Part-DB1\src\DataTables\PartsDataTable.php:216 - Part-DB1\src\DataTables\PartsDataTable.php:164 - part.table.amount Ilość - - Part-DB1\src\DataTables\PartsDataTable.php:224 - Part-DB1\src\DataTables\PartsDataTable.php:172 - part.table.minamount Ilość minimalna - - Part-DB1\src\DataTables\PartsDataTable.php:232 - Part-DB1\src\DataTables\PartsDataTable.php:180 - part.table.partUnit Jednostka pomiarowa @@ -4815,864 +2873,522 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - - Part-DB1\src\DataTables\PartsDataTable.php:236 - Part-DB1\src\DataTables\PartsDataTable.php:184 - part.table.addedDate Data dodania - - Part-DB1\src\DataTables\PartsDataTable.php:240 - Part-DB1\src\DataTables\PartsDataTable.php:188 - part.table.lastModified Ostatnio zmodyfikowany - - Part-DB1\src\DataTables\PartsDataTable.php:244 - Part-DB1\src\DataTables\PartsDataTable.php:192 - part.table.needsReview Wymaga sprawdzenia - - Part-DB1\src\DataTables\PartsDataTable.php:251 - Part-DB1\src\DataTables\PartsDataTable.php:199 - part.table.favorite Ulubiony - - Part-DB1\src\DataTables\PartsDataTable.php:258 - Part-DB1\src\DataTables\PartsDataTable.php:206 - part.table.manufacturingStatus Status - - 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 Nieznany - - 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 Ogłoszono - - 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 Aktywny - - 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 Nie zalecane dla nowych projektów - - 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 End of life - - 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 Wycofany - - 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 Masa - - Part-DB1\src\DataTables\PartsDataTable.php:279 - Part-DB1\src\DataTables\PartsDataTable.php:227 - part.table.tags Tagi - - Part-DB1\src\DataTables\PartsDataTable.php:283 - Part-DB1\src\DataTables\PartsDataTable.php:231 - part.table.attachments Załączniki - - Part-DB1\src\EventSubscriber\UserSystem\LoginSuccessSubscriber.php:82 - Part-DB1\src\EventSubscriber\LoginSuccessListener.php:82 - flash.login_successful Zalogowano poprawnie - - 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 Gdy ta opcja jest aktywna, cały proces importu jest przerywany w przypadku wykrycia nieprawidłowych danych. Jeśli opcja ta nie zostanie wybrana, nieprawidłowe dane zostaną zignorowane, a importer spróbuje zaimportować pozostałe elementy. - - Part-DB1\src\Form\AdminPages\ImportType.php:86 - Part-DB1\src\Form\AdminPages\ImportType.php:86 - src\Form\ImportType.php:70 - import.csv_separator 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 Element nadrzędny - - Part-DB1\src\Form\AdminPages\ImportType.php:101 - Part-DB1\src\Form\AdminPages\ImportType.php:101 - src\Form\ImportType.php:75 - import.file Plik - - Part-DB1\src\Form\AdminPages\ImportType.php:111 - Part-DB1\src\Form\AdminPages\ImportType.php:111 - src\Form\ImportType.php:78 - import.preserve_children Zachowaj elementy podrzędne podczas importu - - 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 Przerwij w przypadku nieprawidłowych danych - - Part-DB1\src\Form\AdminPages\ImportType.php:132 - Part-DB1\src\Form\AdminPages\ImportType.php:132 - src\Form\ImportType.php:85 - import.btn Importuj - - Part-DB1\src\Form\AttachmentFormType.php:113 - Part-DB1\src\Form\AttachmentFormType.php:109 - attachment.edit.secure_file.help Załącznik oznaczony jako prywatny może być dostępny tylko dla uwierzytelnionych użytkowników z odpowiednimi uprawnieniami. Jeśli ta opcja jest włączona, nie są generowane miniatury, a dostęp do pliku jest mniej wydajny. - - Part-DB1\src\Form\AttachmentFormType.php:127 - Part-DB1\src\Form\AttachmentFormType.php:123 - attachment.edit.url.help W tym miejscu można wprowadzić adres URL do pliku zewnętrznego lub słowo kluczowe w celu wyszukiwania we wbudowanych zasobach (np. footprints). - - Part-DB1\src\Form\AttachmentFormType.php:82 - Part-DB1\src\Form\AttachmentFormType.php:79 - attachment.edit.name Nazwa - - Part-DB1\src\Form\AttachmentFormType.php:85 - Part-DB1\src\Form\AttachmentFormType.php:82 - attachment.edit.attachment_type Typ załącznika - - Part-DB1\src\Form\AttachmentFormType.php:94 - Part-DB1\src\Form\AttachmentFormType.php:91 - attachment.edit.show_in_table Pokaż w tabeli - - Part-DB1\src\Form\AttachmentFormType.php:105 - Part-DB1\src\Form\AttachmentFormType.php:102 - attachment.edit.secure_file Załącznik prywatny - - Part-DB1\src\Form\AttachmentFormType.php:119 - Part-DB1\src\Form\AttachmentFormType.php:115 - attachment.edit.url Adres URL - - Part-DB1\src\Form\AttachmentFormType.php:133 - Part-DB1\src\Form\AttachmentFormType.php:129 - attachment.edit.download_url Pobierz plik zewnętrzny - - Part-DB1\src\Form\AttachmentFormType.php:146 - Part-DB1\src\Form\AttachmentFormType.php:142 - attachment.edit.file Wyślij plik - - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:86 - part.label Komponent - - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:87 - part_lot.label Spis komponentów - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.none Brak - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.qr QR Code (zalecane) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code128 Code 128 (zalecane) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code39 Code 39 (zalecane) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code93 Code 93 - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.datamatrix Datamatrix - - Part-DB1\src\Form\LabelOptionsType.php:122 - label_options.lines_mode.html Placeholders (symbole zastępcze) - - 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 Jeśli wybierzesz Twig tutaj, pole treści będzie interpretowane jako szablon Twig. Zobacz <a href="https://twig.symfony.com/doc/3.x/templates.html">dokumentację Twig</a> oraz <a href="https://docs.part-db.de/usage/labels.html#twig-mode">Wiki</a>, aby uzyskać więcej informacji. - - Part-DB1\src\Form\LabelOptionsType.php:47 - label_options.page_size.label Rozmiar etykiety - - Part-DB1\src\Form\LabelOptionsType.php:66 - label_options.supported_elements.label Typ docelowy - - Part-DB1\src\Form\LabelOptionsType.php:75 - label_options.barcode_type.label Kod kreskowy - - Part-DB1\src\Form\LabelOptionsType.php:102 - label_profile.lines.label Treść - - Part-DB1\src\Form\LabelOptionsType.php:111 - label_options.additional_css.label Style dodatkowe (CSS) - - Part-DB1\src\Form\LabelOptionsType.php:120 - label_options.lines_mode.label Tryb parsera - - Part-DB1\src\Form\LabelOptionsType.php:51 - label_options.width.placeholder Szerokość - - Part-DB1\src\Form\LabelOptionsType.php:60 - label_options.height.placeholder Wysokość - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:49 - label_generator.target_id.range_hint W tym miejscu można określić wiele identyfikatorów ID (np. 1,2,3) i/lub zakres (1-3), aby wygenerować etykiety dla wielu elementów jednocześnie. - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:46 - label_generator.target_id.label ID obiektu - - Part-DB1\src\Form\LabelSystem\LabelDialogType.php:59 - label_generator.update Aktualizacja - - Part-DB1\src\Form\LabelSystem\ScanDialogType.php:36 - scan_dialog.input Wejście - - Part-DB1\src\Form\LabelSystem\ScanDialogType.php:44 - scan_dialog.submit Prześlij - - Part-DB1\src\Form\ParameterType.php:41 - parameters.name.placeholder np. DC Current Gain - - Part-DB1\src\Form\ParameterType.php:50 - parameters.symbol.placeholder np. h_{FE} - - Part-DB1\src\Form\ParameterType.php:60 - parameters.text.placeholder np. Warunki testowe - - Part-DB1\src\Form\ParameterType.php:71 - parameters.max.placeholder np. 350 - - Part-DB1\src\Form\ParameterType.php:82 - parameters.min.placeholder np. 100 - - Part-DB1\src\Form\ParameterType.php:93 - parameters.typical.placeholder np. 200 - - Part-DB1\src\Form\ParameterType.php:103 - parameters.unit.placeholder np. V - - Part-DB1\src\Form\ParameterType.php:114 - parameter.group.placeholder np. Specyfikacje techniczne - - Part-DB1\src\Form\Part\OrderdetailType.php:72 - Part-DB1\src\Form\Part\OrderdetailType.php:75 - orderdetails.edit.supplierpartnr Numer katalogowy dostawcy - - Part-DB1\src\Form\Part\OrderdetailType.php:81 - Part-DB1\src\Form\Part\OrderdetailType.php:84 - orderdetails.edit.supplier Dostawca - - Part-DB1\src\Form\Part\OrderdetailType.php:87 - Part-DB1\src\Form\Part\OrderdetailType.php:90 - orderdetails.edit.url Link do oferty - - Part-DB1\src\Form\Part\OrderdetailType.php:93 - Part-DB1\src\Form\Part\OrderdetailType.php:96 - orderdetails.edit.obsolete Już niedostępne - - Part-DB1\src\Form\Part\OrderdetailType.php:75 - Part-DB1\src\Form\Part\OrderdetailType.php:78 - orderdetails.edit.supplierpartnr.placeholder np. BC 547 - - Part-DB1\src\Form\Part\PartBaseType.php:101 - Part-DB1\src\Form\Part\PartBaseType.php:99 - part.edit.name Nazwa - - Part-DB1\src\Form\Part\PartBaseType.php:109 - Part-DB1\src\Form\Part\PartBaseType.php:107 - part.edit.description Opis - - Part-DB1\src\Form\Part\PartBaseType.php:120 - Part-DB1\src\Form\Part\PartBaseType.php:118 - part.edit.mininstock Minimalny stan magazynowy - - Part-DB1\src\Form\Part\PartBaseType.php:129 - Part-DB1\src\Form\Part\PartBaseType.php:127 - part.edit.category Kategoria - - Part-DB1\src\Form\Part\PartBaseType.php:135 - Part-DB1\src\Form\Part\PartBaseType.php:133 - part.edit.footprint Pola lutownicze - - Part-DB1\src\Form\Part\PartBaseType.php:142 - Part-DB1\src\Form\Part\PartBaseType.php:140 - part.edit.tags Tagi - - Part-DB1\src\Form\Part\PartBaseType.php:154 - Part-DB1\src\Form\Part\PartBaseType.php:152 - part.edit.manufacturer.label Producent - - Part-DB1\src\Form\Part\PartBaseType.php:161 - Part-DB1\src\Form\Part\PartBaseType.php:159 - part.edit.manufacturer_url.label Link do strony produktu - - Part-DB1\src\Form\Part\PartBaseType.php:167 - Part-DB1\src\Form\Part\PartBaseType.php:165 - part.edit.mpn Numer katalogowy producenta - - Part-DB1\src\Form\Part\PartBaseType.php:173 - Part-DB1\src\Form\Part\PartBaseType.php:171 - part.edit.manufacturing_status Status produkcji - - Part-DB1\src\Form\Part\PartBaseType.php:181 - Part-DB1\src\Form\Part\PartBaseType.php:179 - part.edit.needs_review Wymaga sprawdzenia - - Part-DB1\src\Form\Part\PartBaseType.php:189 - Part-DB1\src\Form\Part\PartBaseType.php:187 - part.edit.is_favorite Ulubiony - - Part-DB1\src\Form\Part\PartBaseType.php:197 - Part-DB1\src\Form\Part\PartBaseType.php:195 - part.edit.mass Masa - - Part-DB1\src\Form\Part\PartBaseType.php:203 - Part-DB1\src\Form\Part\PartBaseType.php:201 - part.edit.partUnit Jednostka pomiarowa @@ -5685,287 +3401,168 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - - Part-DB1\src\Form\Part\PartBaseType.php:212 - Part-DB1\src\Form\Part\PartBaseType.php:210 - part.edit.comment Komentarz - - Part-DB1\src\Form\Part\PartBaseType.php:250 - Part-DB1\src\Form\Part\PartBaseType.php:246 - part.edit.master_attachment Miniaturka - - Part-DB1\src\Form\Part\PartBaseType.php:295 - Part-DB1\src\Form\Part\PartBaseType.php:276 - src\Form\PartType.php:91 - part.edit.save Zapisz zmiany - - Part-DB1\src\Form\Part\PartBaseType.php:296 - Part-DB1\src\Form\Part\PartBaseType.php:277 - src\Form\PartType.php:92 - part.edit.reset Zresetuj zmiany - - Part-DB1\src\Form\Part\PartBaseType.php:105 - Part-DB1\src\Form\Part\PartBaseType.php:103 - part.edit.name.placeholder np. BC547 - - Part-DB1\src\Form\Part\PartBaseType.php:115 - Part-DB1\src\Form\Part\PartBaseType.php:113 - part.edit.description.placeholder np. NPN 45V, 0,1A, 0,5W - - Part-DB1\src\Form\Part\PartBaseType.php:123 - Part-DB1\src\Form\Part\PartBaseType.php:121 - part.editmininstock.placeholder np. 1 - - Part-DB1\src\Form\Part\PartLotType.php:69 - Part-DB1\src\Form\Part\PartLotType.php:69 - part_lot.edit.description Opis - - Part-DB1\src\Form\Part\PartLotType.php:78 - Part-DB1\src\Form\Part\PartLotType.php:78 - part_lot.edit.location Miejsce przechowywania - - Part-DB1\src\Form\Part\PartLotType.php:89 - Part-DB1\src\Form\Part\PartLotType.php:89 - part_lot.edit.amount Ilość - - Part-DB1\src\Form\Part\PartLotType.php:98 - Part-DB1\src\Form\Part\PartLotType.php:97 - part_lot.edit.instock_unknown Ilość nieznana - - Part-DB1\src\Form\Part\PartLotType.php:109 - Part-DB1\src\Form\Part\PartLotType.php:108 - part_lot.edit.needs_refill Wymaga uzupełnienia - - Part-DB1\src\Form\Part\PartLotType.php:120 - Part-DB1\src\Form\Part\PartLotType.php:119 - part_lot.edit.expiration_date Data wygaśnięcia - - Part-DB1\src\Form\Part\PartLotType.php:128 - Part-DB1\src\Form\Part\PartLotType.php:125 - part_lot.edit.comment Komentarz - - Part-DB1\src\Form\Permissions\PermissionsType.php:99 - Part-DB1\src\Form\Permissions\PermissionsType.php:99 - perm.group.other Różne - - Part-DB1\src\Form\TFAGoogleSettingsType.php:97 - Part-DB1\src\Form\TFAGoogleSettingsType.php:97 - tfa_google.enable Włącz aplikację uwierzytelniającą - - Part-DB1\src\Form\TFAGoogleSettingsType.php:101 - Part-DB1\src\Form\TFAGoogleSettingsType.php:101 - tfa_google.disable Dezaktywacja aplikacji uwierzytelniającej - - Part-DB1\src\Form\TFAGoogleSettingsType.php:74 - Part-DB1\src\Form\TFAGoogleSettingsType.php:74 - google_confirmation Kod potwierdzenia - - Part-DB1\src\Form\UserSettingsType.php:108 - Part-DB1\src\Form\UserSettingsType.php:108 - src\Form\UserSettingsType.php:46 - user.timezone.label Strefa czasowa - - Part-DB1\src\Form\UserSettingsType.php:133 - Part-DB1\src\Form\UserSettingsType.php:132 - user.currency.label Preferowana waluta - - Part-DB1\src\Form\UserSettingsType.php:140 - Part-DB1\src\Form\UserSettingsType.php:139 - src\Form\UserSettingsType.php:53 - save Zapisz zmiany - - Part-DB1\src\Form\UserSettingsType.php:141 - Part-DB1\src\Form\UserSettingsType.php:140 - src\Form\UserSettingsType.php:54 - reset Porzuć zmiany - - Part-DB1\src\Form\UserSettingsType.php:104 - Part-DB1\src\Form\UserSettingsType.php:104 - src\Form\UserSettingsType.php:45 - user_settings.language.placeholder Język obowiązujący na serwerze - - Part-DB1\src\Form\UserSettingsType.php:115 - Part-DB1\src\Form\UserSettingsType.php:115 - src\Form\UserSettingsType.php:48 - user_settings.timezone.placeholder Strefa czasowa obejmująca cały serwer - - Part-DB1\src\Services\ElementTypeNameGenerator.php:79 - Part-DB1\src\Services\ElementTypeNameGenerator.php:79 - attachment.label Załącznik - - Part-DB1\src\Services\ElementTypeNameGenerator.php:81 - Part-DB1\src\Services\ElementTypeNameGenerator.php:81 - attachment_type.label Typ załącznika - - Part-DB1\src\Services\ElementTypeNameGenerator.php:82 - Part-DB1\src\Services\ElementTypeNameGenerator.php:82 - project.label Projekt - - Part-DB1\src\Services\ElementTypeNameGenerator.php:85 - Part-DB1\src\Services\ElementTypeNameGenerator.php:85 - measurement_unit.label Jednostka pomiarowa @@ -5978,58 +3575,36 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - - Part-DB1\src\Services\ElementTypeNameGenerator.php:90 - Part-DB1\src\Services\ElementTypeNameGenerator.php:90 - currency.label Waluta - - Part-DB1\src\Services\ElementTypeNameGenerator.php:91 - Part-DB1\src\Services\ElementTypeNameGenerator.php:91 - orderdetail.label Szczegóły zamówienia - - Part-DB1\src\Services\ElementTypeNameGenerator.php:92 - Part-DB1\src\Services\ElementTypeNameGenerator.php:92 - pricedetail.label Szczegóły ceny - - Part-DB1\src\Services\ElementTypeNameGenerator.php:94 - Part-DB1\src\Services\ElementTypeNameGenerator.php:94 - user.label Użytkownik - - Part-DB1\src\Services\ElementTypeNameGenerator.php:95 - parameter.label Parametr - - Part-DB1\src\Services\ElementTypeNameGenerator.php:96 - label_profile.label Profil etykiety @@ -6037,8 +3612,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:176 - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:161 new @@ -6047,174 +3620,102 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - - Part-DB1\src\Services\MarkdownParser.php:73 - Part-DB1\src\Services\MarkdownParser.php:73 - markdown.loading Ładowanie Markdown. Jeśli ta wiadomość nie zniknie, spróbuj odświeżyć stronę. - - Part-DB1\src\Services\PasswordResetManager.php:98 - Part-DB1\src\Services\PasswordResetManager.php:98 - pw_reset.email.subject Resetowanie hasła do konta Part-DB - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 - tree.tools.tools Narzędzia - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:107 - src\Services\ToolsTreeBuilder.php:74 - tree.tools.edit Edycja - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:110 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 - src\Services\ToolsTreeBuilder.php:81 - tree.tools.show Pokaż - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:111 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 - tree.tools.system System - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:123 - tree.tools.tools.label_dialog Generator etykiet - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:130 - tree.tools.tools.label_scanner Skaner - - 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 Typy załączników - - 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 Kategorie - - 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 Projekty - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:167 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:144 - src\Services\ToolsTreeBuilder.php:68 - tree.tools.edit.suppliers Dostawcy - - 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 Producenci - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:179 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:156 - tree.tools.edit.storelocation Miejsca przechowywania - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:185 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:162 - tree.tools.edit.footprint Pola lutownicze - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:191 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:168 - tree.tools.edit.currency Waluty - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:174 - tree.tools.edit.measurement_unit Jednostka miary @@ -6227,40 +3728,24 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 - tree.tools.edit.label_profile Profile etykiet - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:209 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:180 - tree.tools.edit.part Nowy komponent - - 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 Pokaż wszystkie części - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:232 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 - tree.tools.show.all_attachments Załączniki @@ -6268,8 +3753,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:239 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:210 new @@ -6278,20 +3761,12 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:258 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:229 - tree.tools.system.users Użytkownicy - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:264 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:235 - tree.tools.system.groups Grupy @@ -6299,8 +3774,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:271 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:242 new @@ -6309,11 +3782,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - src\Services\TreeBuilder.php:124 - entity.tree.new Nowy element @@ -6321,7 +3789,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 obsolete @@ -6331,8 +3798,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\templates\_navbar.html.twig:27 - templates\base.html.twig:88 obsolete @@ -6342,8 +3807,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\src\Form\UserSettingsType.php:119 - src\Form\UserSettingsType.php:49 obsolete @@ -6353,8 +3816,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\src\Form\UserSettingsType.php:129 - src\Form\UserSettingsType.php:50 obsolete @@ -6364,7 +3825,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:100 new obsolete @@ -6375,10 +3835,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - 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 @@ -6389,10 +3845,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - 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 @@ -6403,7 +3855,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:139 new obsolete @@ -6414,7 +3865,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:160 new obsolete @@ -6425,7 +3875,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:184 new obsolete @@ -6436,7 +3885,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:198 new obsolete @@ -6447,7 +3895,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:214 new obsolete @@ -6458,7 +3905,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - templates\base.html.twig:81 obsolete obsolete @@ -6469,7 +3915,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - templates\base.html.twig:109 obsolete obsolete @@ -6480,7 +3925,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - templates\base.html.twig:112 obsolete obsolete @@ -6771,7 +4215,6 @@ Jeśli zrobiłeś to niepoprawnie lub komputer nie jest już godny zaufania, mo - src\Form\PartType.php:63 obsolete obsolete @@ -7444,7 +4887,6 @@ Element 3 - templates\Parts\show_part_info.html.twig:194 obsolete obsolete @@ -7455,7 +4897,6 @@ Element 3 - src\Form\PartType.php:83 obsolete obsolete @@ -12161,4 +9602,4 @@ Należy pamiętać, że nie możesz udawać nieaktywnych użytkowników. Jeśli - + \ No newline at end of file diff --git a/translations/messages.ru.xlf b/translations/messages.ru.xlf index c5100410..4fd2aa82 100644 --- a/translations/messages.ru.xlf +++ b/translations/messages.ru.xlf @@ -2,11 +2,6 @@ - - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - attachment_type.caption Типы прикрепленных файлов @@ -14,7 +9,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:12 new @@ -24,7 +18,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:16 new @@ -33,45 +26,18 @@ - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - templates\AdminPages\CategoryAdmin.html.twig:4 - templates\base.html.twig:163 - templates\base.html.twig:170 - templates\base.html.twig:197 - templates\base.html.twig:225 - category.labelp Категории - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:19 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:11 - templates\AdminPages\CategoryAdmin.html.twig:8 - admin.options Опции - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - templates\AdminPages\CategoryAdmin.html.twig:9 - admin.advanced Расширенные @@ -79,7 +45,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:13 new @@ -89,7 +54,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:17 new @@ -98,30 +62,18 @@ - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - currency.caption Валюта - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - currency.iso_code.caption Код ISO - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - currency.symbol.caption Знак валюты @@ -129,7 +81,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:29 new @@ -139,7 +90,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:33 new @@ -149,7 +99,6 @@ - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 new @@ -159,7 +108,6 @@ - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:12 new @@ -168,89 +116,36 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder Поиск - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - templates\AdminPages\EntityAdminBase.html.twig:13 - templates\base.html.twig:166 - templates\base.html.twig:193 - templates\base.html.twig:221 - expandAll Раскрыть всё - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - templates\AdminPages\EntityAdminBase.html.twig:17 - templates\base.html.twig:167 - templates\base.html.twig:194 - templates\base.html.twig:222 - reduceAll Свернуть всё - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - part.info.timetravel_hint Так этот компонент выглядел до %timestamp%. <i>Это экспериментальная возможность, поэтому информация может быть неверной.</i> - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - templates\AdminPages\EntityAdminBase.html.twig:42 - standard.label Свойства - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - templates\AdminPages\EntityAdminBase.html.twig:43 - infos.label Информация @@ -258,8 +153,6 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 new @@ -268,120 +161,66 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - templates\AdminPages\EntityAdminBase.html.twig:45 - export.label Экспорт - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - templates\AdminPages\EntityAdminBase.html.twig:47 - import_export.label Импорт / Экспорт - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - mass_creation.label Создать несколько - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - templates\AdminPages\EntityAdminBase.html.twig:59 - admin.common Общие - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - admin.attachments Вложения - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:90 - admin.parameters Параметры - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:179 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:167 - templates\AdminPages\EntityAdminBase.html.twig:142 - export_all.label Экспортировать всё - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:185 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:173 - mass_creation.help Каждая строка будет интерпретирована как имя создаваемого элемента - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - templates\AdminPages\EntityAdminBase.html.twig:35 - edit.caption Редактировать элемент "%name" - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - templates\AdminPages\EntityAdminBase.html.twig:37 - new.caption Новый элемент - - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - templates\base.html.twig:172 - templates\base.html.twig:199 - templates\base.html.twig:227 - footprint.labelp Посадочные места @@ -389,7 +228,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:13 new @@ -399,7 +237,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:17 new @@ -408,22 +245,12 @@ - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - group.edit.caption Группы - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - user.edit.permissions Разрешения @@ -431,7 +258,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:24 new @@ -441,7 +267,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:28 new @@ -450,27 +275,18 @@ - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:4 - label_profile.caption Профили этикеток - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:8 - label_profile.advanced Расширенные - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:9 - label_profile.comment Комментарий @@ -478,7 +294,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:55 new @@ -488,7 +303,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:59 new @@ -497,11 +311,6 @@ - - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - templates\AdminPages\ManufacturerAdmin.html.twig:4 - manufacturer.caption Производители @@ -509,7 +318,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:8 new @@ -519,7 +327,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:12 new @@ -528,10 +335,6 @@ - - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - measurement_unit.caption Единица измерения @@ -544,15 +347,6 @@ - - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:5 - Part-DB1\templates\_sidebar.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:8 - templates\base.html.twig:171 - templates\base.html.twig:198 - templates\base.html.twig:226 - storelocation.labelp Хранилища @@ -560,7 +354,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:32 new @@ -570,7 +363,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:36 new @@ -580,7 +372,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 new @@ -590,7 +381,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:20 new @@ -599,120 +389,66 @@ - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - user.edit.caption Пользователь - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - user.edit.configuration Конфигурация - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - user.edit.password Пароль - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - user.edit.tfa.caption Двухфакторная аутентификация - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - user.edit.tfa.google_active Приложение аутентификации активно - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - tfa_backup.remaining_tokens Количество оставшихся резервных кодов - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - tfa_backup.generation_date Дата создания резервных кодов - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - user.edit.tfa.disabled Способ выключен - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - user.edit.tfa.u2f_keys_count Активные ключи безопасности - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_title Вы действительно хотите продолжить? - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_message Это выключит <b>все активные двухфакторной способы аутентификации пользователя</b>и удалит <b>резервные коды</b>! @@ -722,10 +458,6 @@ - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - user.edit.tfa.disable_tfa.btn Запретить все способы двухфакторной аутентификации @@ -733,7 +465,6 @@ - Part-DB1\templates\AdminPages\UserAdmin.html.twig:85 new @@ -743,7 +474,6 @@ - Part-DB1\templates\AdminPages\UserAdmin.html.twig:89 new @@ -752,129 +482,60 @@ - - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:63 - attachment.delete Удалить - - Part-DB1\templates\AdminPages\_attachments.html.twig:41 - Part-DB1\templates\Parts\edit\_attachments.html.twig:38 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:35 - Part-DB1\src\DataTables\AttachmentDataTable.php:159 - Part-DB1\templates\Parts\edit\_attachments.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:159 - attachment.external Внешний - - Part-DB1\templates\AdminPages\_attachments.html.twig:49 - Part-DB1\templates\Parts\edit\_attachments.html.twig:47 - Part-DB1\templates\AdminPages\_attachments.html.twig:47 - Part-DB1\templates\Parts\edit\_attachments.html.twig:45 - attachment.preview.alt Значок вложения - - Part-DB1\templates\AdminPages\_attachments.html.twig:52 - Part-DB1\templates\Parts\edit\_attachments.html.twig:50 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 - Part-DB1\templates\AdminPages\_attachments.html.twig:50 - Part-DB1\templates\Parts\edit\_attachments.html.twig:48 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:45 - attachment.view Посмотреть - - Part-DB1\templates\AdminPages\_attachments.html.twig:58 - Part-DB1\templates\Parts\edit\_attachments.html.twig:56 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:43 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - Part-DB1\templates\AdminPages\_attachments.html.twig:56 - Part-DB1\templates\Parts\edit\_attachments.html.twig:54 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - attachment.file_not_found Файл не найден - - Part-DB1\templates\AdminPages\_attachments.html.twig:66 - Part-DB1\templates\Parts\edit\_attachments.html.twig:64 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:48 - Part-DB1\templates\Parts\edit\_attachments.html.twig:62 - attachment.secure Личное - - Part-DB1\templates\AdminPages\_attachments.html.twig:79 - Part-DB1\templates\Parts\edit\_attachments.html.twig:77 - Part-DB1\templates\AdminPages\_attachments.html.twig:77 - Part-DB1\templates\Parts\edit\_attachments.html.twig:75 - attachment.create Добавить вложение - - Part-DB1\templates\AdminPages\_attachments.html.twig:84 - Part-DB1\templates\Parts\edit\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - Part-DB1\templates\AdminPages\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_attachments.html.twig:80 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - part_lot.edit.delete.confirm Вы уверены, что хотите удалить этот склад? Это не может быть отменено! - - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - templates\AdminPages\_delete_form.html.twig:2 - entity.delete.confirm_title Вы действительно хотите удалить %name%? - - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - templates\AdminPages\_delete_form.html.twig:3 - entity.delete.message Это не может быть отменено! @@ -883,11 +544,6 @@ - - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - templates\AdminPages\_delete_form.html.twig:9 - entity.delete Удалить элемент @@ -895,12 +551,6 @@ - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:45 - Part-DB1\src\Form\Part\PartBaseType.php:286 - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:43 - Part-DB1\src\Form\Part\PartBaseType.php:267 new @@ -909,561 +559,300 @@ - - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - templates\AdminPages\_delete_form.html.twig:12 - entity.delete.recursive Удалить рекурсивно (все подэлементы) - - Part-DB1\templates\AdminPages\_duplicate.html.twig:3 - entity.duplicate Повторный элемент - - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - templates\AdminPages\_export_form.html.twig:4 - src\Form\ImportType.php:67 - export.format Формат файла - - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - templates\AdminPages\_export_form.html.twig:16 - export.level Уровень детализации - - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - templates\AdminPages\_export_form.html.twig:19 - export.level.simple Простой - - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - templates\AdminPages\_export_form.html.twig:20 - export.level.extended Расширенный - - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - templates\AdminPages\_export_form.html.twig:21 - export.level.full Полный - - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - templates\AdminPages\_export_form.html.twig:31 - export.include_children Включить подэлементы в экспорт - - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - templates\AdminPages\_export_form.html.twig:39 - export.btn Экспорт - - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - templates\AdminPages\EntityAdminBase.html.twig:94 - templates\Parts\edit_part_info.html.twig:12 - templates\Parts\show_part_info.html.twig:11 - id.label ID - - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:76 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:77 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:77 - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:59 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:60 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:53 - templates\AdminPages\EntityAdminBase.html.twig:101 - templates\Parts\show_part_info.html.twig:248 - createdAt Создан - - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:73 - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:49 - templates\AdminPages\EntityAdminBase.html.twig:114 - templates\Parts\show_part_info.html.twig:263 - lastModified Последнее изменение - - Part-DB1\templates\AdminPages\_info.html.twig:38 - Part-DB1\templates\AdminPages\_info.html.twig:38 - entity.info.parts_count Количество компонентов в этом элементе - - Part-DB1\templates\AdminPages\_parameters.html.twig:6 - Part-DB1\templates\helper.twig:125 - Part-DB1\templates\Parts\edit\_specifications.html.twig:6 - specifications.property Параметр - - Part-DB1\templates\AdminPages\_parameters.html.twig:7 - Part-DB1\templates\Parts\edit\_specifications.html.twig:7 - specifications.symbol Символ - - Part-DB1\templates\AdminPages\_parameters.html.twig:8 - Part-DB1\templates\Parts\edit\_specifications.html.twig:8 - specifications.value_min Мин. - - Part-DB1\templates\AdminPages\_parameters.html.twig:9 - Part-DB1\templates\Parts\edit\_specifications.html.twig:9 - specifications.value_typ Тип. - - Part-DB1\templates\AdminPages\_parameters.html.twig:10 - Part-DB1\templates\Parts\edit\_specifications.html.twig:10 - specifications.value_max Макс. - - Part-DB1\templates\AdminPages\_parameters.html.twig:11 - Part-DB1\templates\Parts\edit\_specifications.html.twig:11 - specifications.unit Единица - - Part-DB1\templates\AdminPages\_parameters.html.twig:12 - Part-DB1\templates\Parts\edit\_specifications.html.twig:12 - specifications.text Текст - - Part-DB1\templates\AdminPages\_parameters.html.twig:13 - Part-DB1\templates\Parts\edit\_specifications.html.twig:13 - specifications.group Группа - - Part-DB1\templates\AdminPages\_parameters.html.twig:26 - Part-DB1\templates\Parts\edit\_specifications.html.twig:26 - specification.create Новый Параметр - - Part-DB1\templates\AdminPages\_parameters.html.twig:31 - Part-DB1\templates\Parts\edit\_specifications.html.twig:31 - parameter.delete.confirm Вы точно уверены что хотите удалить этот параметр ? - - Part-DB1\templates\attachment_list.html.twig:3 - Part-DB1\templates\attachment_list.html.twig:3 - attachment.list.title Список вложений - - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - part_list.loading.caption Загрузка - - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - part_list.loading.message Это может занять время. Если это сообщение не пропадает, попробуйте перегрузить страницу. - - Part-DB1\templates\base.html.twig:68 - Part-DB1\templates\base.html.twig:68 - templates\base.html.twig:246 - vendor.base.javascript_hint Включите Javascript чтобы использовать весь функционал! - - Part-DB1\templates\base.html.twig:73 - Part-DB1\templates\base.html.twig:73 - sidebar.big.toggle Показать/Скрыть боковую панель - - Part-DB1\templates\base.html.twig:95 - Part-DB1\templates\base.html.twig:95 - templates\base.html.twig:271 - loading.caption Загрузка: - - Part-DB1\templates\base.html.twig:96 - Part-DB1\templates\base.html.twig:96 - templates\base.html.twig:272 - loading.message Это может занять время. Если это сообщение показывается слишком долго, попробуйте перегрузить страницу. - - Part-DB1\templates\base.html.twig:101 - Part-DB1\templates\base.html.twig:101 - templates\base.html.twig:277 - loading.bar Загрузка... - - Part-DB1\templates\base.html.twig:112 - Part-DB1\templates\base.html.twig:112 - templates\base.html.twig:288 - back_to_top Назад на верх страницы - - Part-DB1\templates\Form\permissionLayout.html.twig:35 - Part-DB1\templates\Form\permissionLayout.html.twig:35 - permission.edit.permission Разрешения - - Part-DB1\templates\Form\permissionLayout.html.twig:36 - Part-DB1\templates\Form\permissionLayout.html.twig:36 - permission.edit.value Значение - - Part-DB1\templates\Form\permissionLayout.html.twig:53 - Part-DB1\templates\Form\permissionLayout.html.twig:53 - permission.legend.title Объяснение состояний - - Part-DB1\templates\Form\permissionLayout.html.twig:57 - Part-DB1\templates\Form\permissionLayout.html.twig:57 - permission.legend.disallow Запрещено - - Part-DB1\templates\Form\permissionLayout.html.twig:61 - Part-DB1\templates\Form\permissionLayout.html.twig:61 - permission.legend.allow Разрешено - - Part-DB1\templates\Form\permissionLayout.html.twig:65 - Part-DB1\templates\Form\permissionLayout.html.twig:65 - permission.legend.inherit Наследовать от родительской группы - - Part-DB1\templates\helper.twig:3 - Part-DB1\templates\helper.twig:3 - bool.true Да - - Part-DB1\templates\helper.twig:5 - Part-DB1\templates\helper.twig:5 - bool.false Нет - - Part-DB1\templates\helper.twig:92 - Part-DB1\templates\helper.twig:87 - Yes Да - - Part-DB1\templates\helper.twig:94 - Part-DB1\templates\helper.twig:89 - No Нет - - Part-DB1\templates\helper.twig:126 - specifications.value Значение - - Part-DB1\templates\homepage.html.twig:7 - Part-DB1\templates\homepage.html.twig:7 - templates\homepage.html.twig:7 - version.caption Версия - - Part-DB1\templates\homepage.html.twig:22 - Part-DB1\templates\homepage.html.twig:22 - templates\homepage.html.twig:19 - homepage.license Информация о лицензии - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.caption Страница проекта - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.text Загрузки, отчеты об ошибках, список пожеланий и т.д. находятся на <a href="%href%" class="link-external" target="_blank">странице проекта в GitHub</a> - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - homepage.help.caption Помощь - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - homepage.help.text Помощь и подсказки находятся в документах Wiki <a href="%href%" class="link-external" target="_blank">на странице в GitHub</a> - - Part-DB1\templates\homepage.html.twig:33 - Part-DB1\templates\homepage.html.twig:33 - templates\homepage.html.twig:30 - homepage.forum.caption Форум @@ -1471,8 +860,6 @@ - Part-DB1\templates\homepage.html.twig:45 - Part-DB1\templates\homepage.html.twig:45 new @@ -1481,138 +868,90 @@ - - Part-DB1\templates\LabelSystem\dialog.html.twig:3 - Part-DB1\templates\LabelSystem\dialog.html.twig:6 - label_generator.title Генератор этикеток - - Part-DB1\templates\LabelSystem\dialog.html.twig:16 - label_generator.common Общее - - Part-DB1\templates\LabelSystem\dialog.html.twig:20 - label_generator.advanced Расширенные - - Part-DB1\templates\LabelSystem\dialog.html.twig:24 - label_generator.profiles Профили - - Part-DB1\templates\LabelSystem\dialog.html.twig:58 - label_generator.selected_profile Выбранный профиль - - Part-DB1\templates\LabelSystem\dialog.html.twig:62 - label_generator.edit_profile Изменить профиль - - Part-DB1\templates\LabelSystem\dialog.html.twig:75 - label_generator.load_profile Загрузить профиль - - Part-DB1\templates\LabelSystem\dialog.html.twig:102 - label_generator.download Скачать - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:3 - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:5 - label_generator.label_btn Генерировать этикетку - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:20 - label_generator.label_empty Новая пустая этикетка - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:3 - label_scanner.title Сканер этикеток - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - label_scanner.no_cam_found.title Веб-камера не найдена - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - label_scanner.no_cam_found.text Чтобы использовать функцию сканирования вам понадобится веб-камера и разрешение для ее использования. Ниже, вы можете ввести штрихкод вручную. - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:27 - label_scanner.source_select Выбор источника - - Part-DB1\templates\LogSystem\log_list.html.twig:3 - Part-DB1\templates\LogSystem\log_list.html.twig:3 - log.list.title Системный лог @@ -1620,8 +959,6 @@ - Part-DB1\templates\LogSystem\_log_table.html.twig:1 - Part-DB1\templates\LogSystem\_log_table.html.twig:1 new @@ -1631,8 +968,6 @@ - Part-DB1\templates\LogSystem\_log_table.html.twig:2 - Part-DB1\templates\LogSystem\_log_table.html.twig:2 new @@ -1641,194 +976,114 @@ - - Part-DB1\templates\mail\base.html.twig:24 - Part-DB1\templates\mail\base.html.twig:24 - mail.footer.email_sent_by Это письмо послано автоматически от - - Part-DB1\templates\mail\base.html.twig:24 - Part-DB1\templates\mail\base.html.twig:24 - mail.footer.dont_reply Не отвечайте на это письмо. - - Part-DB1\templates\mail\pw_reset.html.twig:6 - Part-DB1\templates\mail\pw_reset.html.twig:6 - email.hi %name% Привет %name% - - Part-DB1\templates\mail\pw_reset.html.twig:7 - Part-DB1\templates\mail\pw_reset.html.twig:7 - email.pw_reset.message кто-то (надеемся что Вы) запросил сброс пароля. Если это сделали не Вы - игнорируйте это письмо. - - Part-DB1\templates\mail\pw_reset.html.twig:9 - Part-DB1\templates\mail\pw_reset.html.twig:9 - email.pw_reset.button Нажмите здесь для сброса пароля - - Part-DB1\templates\mail\pw_reset.html.twig:11 - Part-DB1\templates\mail\pw_reset.html.twig:11 - email.pw_reset.fallback Если это не помогло, откройте ссылку <a href="%url%">%url%</a> и введите следующую информацию - - Part-DB1\templates\mail\pw_reset.html.twig:16 - Part-DB1\templates\mail\pw_reset.html.twig:16 - email.pw_reset.username Имя пользователя - - Part-DB1\templates\mail\pw_reset.html.twig:19 - Part-DB1\templates\mail\pw_reset.html.twig:19 - email.pw_reset.token Жетон - - Part-DB1\templates\mail\pw_reset.html.twig:24 - Part-DB1\templates\mail\pw_reset.html.twig:24 - email.pw_reset.valid_unit %date% Жетон на сброс будет действителен до <i>%date%</i> - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:18 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:78 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - orderdetail.delete Удалить - - 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 Минимальное количество для скидки - - 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 Цена - - 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 для количества - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - pricedetail.create Добавить цену - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - templates\Parts\edit_part_info.html.twig:4 - part.edit.title Редактировать %name% - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - templates\Parts\edit_part_info.html.twig:9 - part.edit.card_title Редактировать информацию о компоненте - - 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 Общие - - 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 Производитель - - 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 Расширенные @@ -1895,279 +1150,156 @@ - - 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 Склады - - 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 Вложения - - 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 Информация для заказа - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 - part.edit.tab.specifications Параметры - - 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 Комментарий - - 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 Скачать @@ -2175,8 +1307,6 @@ - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 new @@ -2185,14 +1315,6 @@ - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Unknown Неизвестный тип @@ -2200,10 +1322,6 @@ - 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 @@ -2213,8 +1331,6 @@ - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 new @@ -2223,49 +1339,24 @@ - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - part.isFavorite Избранное - - 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 Имя @@ -2273,8 +1364,6 @@ - Part-DB1\templates\Parts\info\_main_infos.html.twig:27 - Part-DB1\templates\Parts\info\_main_infos.html.twig:27 new @@ -2283,346 +1372,192 @@ - - 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 - Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - part.supplier.name Название - - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - 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\_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 - Part-DB1\templates\Parts\info\_part_lots.html.twig:22 - part_lots.location_unknown Место хранения неизвестно - - Part-DB1\templates\Parts\info\_part_lots.html.twig:31 - Part-DB1\templates\Parts\info\_part_lots.html.twig:29 - part_lots.instock_unknown Наличие неизвестно - - Part-DB1\templates\Parts\info\_part_lots.html.twig:40 - Part-DB1\templates\Parts\info\_part_lots.html.twig:38 - part_lots.expiration_date Дата истечения - - Part-DB1\templates\Parts\info\_part_lots.html.twig:48 - Part-DB1\templates\Parts\info\_part_lots.html.twig:46 - part_lots.is_expired Истекло - - Part-DB1\templates\Parts\info\_part_lots.html.twig:55 - Part-DB1\templates\Parts\info\_part_lots.html.twig:53 - part_lots.need_refill Нужно пополнить - - Part-DB1\templates\Parts\info\_picture.html.twig:15 - Part-DB1\templates\Parts\info\_picture.html.twig:15 - part.info.prev_picture Предыдущая картинка - - Part-DB1\templates\Parts\info\_picture.html.twig:19 - Part-DB1\templates\Parts\info\_picture.html.twig:19 - part.info.next_picture Следующая картинка - - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - part.mass.tooltip Вес - - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - part.needs_review.badge Нужно рассмотреть - - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - part.favorite.badge Избранное - - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - part.obsolete.badge Больше не доступно - - Part-DB1\templates\Parts\info\_specifications.html.twig:10 - parameters.extracted_from_description Автоматически получено из описания - - Part-DB1\templates\Parts\info\_specifications.html.twig:15 - parameters.auto_extracted_from_comment Автоматически получено из комментария - - Part-DB1\templates\Parts\info\_tools.html.twig:6 - Part-DB1\templates\Parts\info\_tools.html.twig:4 - templates\Parts\show_part_info.html.twig:125 - part.edit.btn Редактировать компонент - - Part-DB1\templates\Parts\info\_tools.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:14 - templates\Parts\show_part_info.html.twig:135 - part.clone.btn Клонировать компонент - - Part-DB1\templates\Parts\info\_tools.html.twig:24 - Part-DB1\templates\Parts\lists\_action_bar.html.twig:4 - templates\Parts\show_part_info.html.twig:143 - part.create.btn Создать новый компонент - - Part-DB1\templates\Parts\info\_tools.html.twig:31 - Part-DB1\templates\Parts\info\_tools.html.twig:29 - part.delete.confirm_title Вы действительно хотите удалить этот компонент? - - Part-DB1\templates\Parts\info\_tools.html.twig:32 - Part-DB1\templates\Parts\info\_tools.html.twig:30 - part.delete.message Этот компонент и любые связанные с ним данные (вложения, цены и т.п.) будут удалены. @@ -2630,421 +1565,240 @@ - - Part-DB1\templates\Parts\info\_tools.html.twig:39 - Part-DB1\templates\Parts\info\_tools.html.twig:37 - part.delete Удалить компонент - - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - parts_list.all.title Все компоненты - - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - parts_list.category.title Компоненты с категорией - - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - parts_list.footprint.title Компоненты с посадочным местом - - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - parts_list.manufacturer.title Компоненты производителя - - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - parts_list.search.title Поиск компонентов - - 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 Компоненты хранилища - - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - 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 Общие - - Part-DB1\templates\Parts\lists\_info_card.html.twig:26 - Part-DB1\templates\Parts\lists\_info_card.html.twig:20 - entity.info.statistics.tab Статистика - - Part-DB1\templates\Parts\lists\_info_card.html.twig:31 - entity.info.attachments.tab Вложения - - Part-DB1\templates\Parts\lists\_info_card.html.twig:37 - entity.info.parameters.tab Параметры - - Part-DB1\templates\Parts\lists\_info_card.html.twig:54 - Part-DB1\templates\Parts\lists\_info_card.html.twig:30 - entity.info.name Имя - - Part-DB1\templates\Parts\lists\_info_card.html.twig:58 - Part-DB1\templates\Parts\lists\_info_card.html.twig:96 - Part-DB1\templates\Parts\lists\_info_card.html.twig:34 - Part-DB1\templates\Parts\lists\_info_card.html.twig:67 - entity.info.parent Родитель - - Part-DB1\templates\Parts\lists\_info_card.html.twig:70 - Part-DB1\templates\Parts\lists\_info_card.html.twig:46 - entity.edit.btn Редактировать - - Part-DB1\templates\Parts\lists\_info_card.html.twig:92 - Part-DB1\templates\Parts\lists\_info_card.html.twig:63 - entity.info.children_count Количество дочерних элементов - - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - tfa.check.title Нужна двухфакторная аутентификация - - Part-DB1\templates\security\2fa_base_form.html.twig:39 - Part-DB1\templates\security\2fa_base_form.html.twig:39 - tfa.code.trusted_pc Это доверенный компьютер (если включено то двухфакторная аутентификация на этом компьютере больше не будет запрашиваться) - - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - login.btn Вход - - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:42 - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:40 - user.logout Выход - - Part-DB1\templates\security\2fa_form.html.twig:6 - Part-DB1\templates\security\2fa_form.html.twig:6 - tfa.check.code.label код приложения Аутентификатор - - Part-DB1\templates\security\2fa_form.html.twig:10 - Part-DB1\templates\security\2fa_form.html.twig:10 - tfa.check.code.help Введите 6-значный код из вашего приложения Аутентификатор или один из резервных кодов если приложение не доступно. - - Part-DB1\templates\security\login.html.twig:3 - Part-DB1\templates\security\login.html.twig:3 - templates\security\login.html.twig:3 - login.title Вход - - Part-DB1\templates\security\login.html.twig:7 - Part-DB1\templates\security\login.html.twig:7 - templates\security\login.html.twig:7 - login.card_title Вход - - Part-DB1\templates\security\login.html.twig:31 - Part-DB1\templates\security\login.html.twig:31 - templates\security\login.html.twig:31 - login.username.label Имя пользователя - - Part-DB1\templates\security\login.html.twig:34 - Part-DB1\templates\security\login.html.twig:34 - templates\security\login.html.twig:34 - login.username.placeholder Имя пользователя - - Part-DB1\templates\security\login.html.twig:38 - Part-DB1\templates\security\login.html.twig:38 - templates\security\login.html.twig:38 - login.password.label Пароль - - Part-DB1\templates\security\login.html.twig:40 - Part-DB1\templates\security\login.html.twig:40 - templates\security\login.html.twig:40 - login.password.placeholder Пароль - - Part-DB1\templates\security\login.html.twig:50 - Part-DB1\templates\security\login.html.twig:50 - templates\security\login.html.twig:50 - login.rememberme Запомнить меня (включайте это только на личном компьютере) - - Part-DB1\templates\security\login.html.twig:64 - Part-DB1\templates\security\login.html.twig:64 - pw_reset.password_forget Забыл имя пользователя/пароль? - - 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 Установить новый пароль - - 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 Запросить новый пароль - - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - tfa_u2f.http_warning Вы зашли на эту страницу используя небезопасный протокол HTTP, поэтому U2F скорее всего не будет работать (сообщение об ошибке: Неверный запрос). Попросите администратора настроить HTTPS если Вы хотите использовать ключи безопасности. - - Part-DB1\templates\security\U2F\u2f_login.html.twig:10 - Part-DB1\templates\security\U2F\u2f_register.html.twig:22 - 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 Пожалуйста вставьте Ваш ключ безопасности и нажмите на нем кнопку! - - 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 Добавить ключ безопасности - - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - tfa_u2f.explanation U2F/FIDO совместимый ключ (например YubiKey или NitroKey) предоставляет удобный и безопасный двухфакторный способ аутентификации. Здесь вы можете зарегистрировать свои ключи безопасности и, если Вас запросят пройти двухфакторную проверку, просто вставьте ключ в USB порт или поднесите его к устройству считывания NFC. - - 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 Чтобы не утратить доступ в случае потери ключа мы рекомендуем зарегистрировать еще один как резервный и хранить его в безопасном месте! - - 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 Добавить ключ безопасности - - 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 Вернуться к настройкам @@ -3052,10 +1806,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 new @@ -3065,8 +1815,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:14 - Part-DB1\templates\Statistics\statistics.html.twig:14 new @@ -3076,8 +1824,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:19 - Part-DB1\templates\Statistics\statistics.html.twig:19 new @@ -3087,8 +1833,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:24 - Part-DB1\templates\Statistics\statistics.html.twig:24 new @@ -3098,12 +1842,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 new @@ -3113,12 +1851,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 new @@ -3128,8 +1860,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:40 - Part-DB1\templates\Statistics\statistics.html.twig:40 new @@ -3139,8 +1869,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:44 - Part-DB1\templates\Statistics\statistics.html.twig:44 new @@ -3150,8 +1878,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:48 - Part-DB1\templates\Statistics\statistics.html.twig:48 new @@ -3161,8 +1887,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:65 - Part-DB1\templates\Statistics\statistics.html.twig:65 new @@ -3172,8 +1896,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:69 - Part-DB1\templates\Statistics\statistics.html.twig:69 new @@ -3183,8 +1905,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:73 - Part-DB1\templates\Statistics\statistics.html.twig:73 new @@ -3194,8 +1914,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:77 - Part-DB1\templates\Statistics\statistics.html.twig:77 new @@ -3205,8 +1923,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:81 - Part-DB1\templates\Statistics\statistics.html.twig:81 new @@ -3216,8 +1932,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:85 - Part-DB1\templates\Statistics\statistics.html.twig:85 new @@ -3227,8 +1941,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:89 - Part-DB1\templates\Statistics\statistics.html.twig:89 new @@ -3238,8 +1950,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:93 - Part-DB1\templates\Statistics\statistics.html.twig:93 new @@ -3249,8 +1959,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:110 - Part-DB1\templates\Statistics\statistics.html.twig:110 new @@ -3260,8 +1968,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:114 - Part-DB1\templates\Statistics\statistics.html.twig:114 new @@ -3271,8 +1977,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:118 - Part-DB1\templates\Statistics\statistics.html.twig:118 new @@ -3282,8 +1986,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:122 - Part-DB1\templates\Statistics\statistics.html.twig:122 new @@ -3293,8 +1995,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:126 - Part-DB1\templates\Statistics\statistics.html.twig:126 new @@ -3303,302 +2003,156 @@ - - 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 Если Вы больше не можете использовать приложение Аутентификатор (потеряли смартфон, утратили данные и т.п.) то используйте один из этих кодов чтобы получить доступ к своему аккаунту и возможности заново настроить приложение Аутентификатор. Каждый из этих кодов может быть использован только один раз, после чего мы рекомендуем уничтожить использованные коды. Храните коды в безопасном месте, в противном случае любой кто получит к ним доступ сможет зайти в Ваш аккаунт. - - Part-DB1\templates\Users\backup_codes.html.twig:16 - Part-DB1\templates\Users\backup_codes.html.twig:16 - tfa_backup.username Имя пользователя - - 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 Email - - 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 Двухфакторная аутентификация - - 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> @@ -3606,152 +2160,90 @@ - - 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 Скачать приложение для аутентификации можно по ссылке (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>) - - Part-DB1\templates\Users\_2fa_settings.html.twig:49 - Part-DB1\templates\Users\_2fa_settings.html.twig:49 - tfa_google.step.scan Считать QR код используя приложение или ввести данные вручную - - 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 Это удалит все предыдущие коды и создаст набор новых. Это не может быть отменено. @@ -3759,110 +2251,66 @@ - - 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 Если вы удалите этот ключ то вы больше не сможете использовать его для входа. Если не останется зарегистрированных ключей то двухфакторная аутентификация будет запрещена. - - 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 - Part-DB1\templates\Users\_2fa_settings.html.twig:134 - tfa_u2f.key_delete Удалить ключ - - Part-DB1\templates\Users\_2fa_settings.html.twig:141 - Part-DB1\templates\Users\_2fa_settings.html.twig:141 - tfa_u2f.no_keys_registered Еще нет зарегистрированных ключей. - - Part-DB1\templates\Users\_2fa_settings.html.twig:144 - Part-DB1\templates\Users\_2fa_settings.html.twig:144 - tfa_u2f.add_new_key Зарегистрировать новый ключ безопасности - - Part-DB1\templates\Users\_2fa_settings.html.twig:148 - Part-DB1\templates\Users\_2fa_settings.html.twig:148 - tfa_trustedDevices.explanation Когда второй этап подтверждения успешно произведен, этот компьютер может быть отмечен как доверенный и больше не потребуется использовать двухфакторную аутентификацию. @@ -3870,326 +2318,168 @@ - - Part-DB1\templates\Users\_2fa_settings.html.twig:149 - Part-DB1\templates\Users\_2fa_settings.html.twig:149 - tfa_trustedDevices.invalidate.confirm_title Точно хотите удалить все доверенные компьютеры? - - Part-DB1\templates\Users\_2fa_settings.html.twig:150 - Part-DB1\templates\Users\_2fa_settings.html.twig:150 - tfa_trustedDevices.invalidate.confirm_message Вам снова нужно будет использовать двухфакторную аутентификацию на всех компьютерах. Убедитесь что у вас есть на руках устройство для двухфакторного подтверждения. - - Part-DB1\templates\Users\_2fa_settings.html.twig:154 - Part-DB1\templates\Users\_2fa_settings.html.twig:154 - tfa_trustedDevices.invalidate.btn Сбросить доверенные устройства - - Part-DB1\templates\_navbar.html.twig:4 - Part-DB1\templates\_navbar.html.twig:4 - templates\base.html.twig:29 - sidebar.toggle Переключить боковую панель - - Part-DB1\templates\_navbar.html.twig:22 - navbar.scanner.link Сканер - - Part-DB1\templates\_navbar.html.twig:38 - Part-DB1\templates\_navbar.html.twig:36 - templates\base.html.twig:97 - user.loggedin.label Вошел как - - Part-DB1\templates\_navbar.html.twig:44 - Part-DB1\templates\_navbar.html.twig:42 - templates\base.html.twig:103 - user.login Вход - - Part-DB1\templates\_navbar.html.twig:50 - Part-DB1\templates\_navbar.html.twig:48 - ui.toggle_darkmode Темный режим - - Part-DB1\templates\_navbar.html.twig:54 - Part-DB1\src\Form\UserSettingsType.php:97 - Part-DB1\templates\_navbar.html.twig:52 - Part-DB1\src\Form\UserSettingsType.php:97 - templates\base.html.twig:106 - src\Form\UserSettingsType.php:44 - user.language_select Выбрать язык - - Part-DB1\templates\_navbar_search.html.twig:4 - Part-DB1\templates\_navbar_search.html.twig:4 - templates\base.html.twig:49 - search.options.label Опции поиска - - Part-DB1\templates\_navbar_search.html.twig:23 - tags.label Метки - - Part-DB1\templates\_navbar_search.html.twig:27 - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - templates\base.html.twig:60 - templates\Parts\show_part_info.html.twig:36 - src\Form\PartType.php:77 - storelocation.label Место хранения - - Part-DB1\templates\_navbar_search.html.twig:36 - Part-DB1\templates\_navbar_search.html.twig:31 - templates\base.html.twig:65 - ordernumber.label.short Ном.заказа - - Part-DB1\templates\_navbar_search.html.twig:40 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - Part-DB1\templates\_navbar_search.html.twig:35 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - templates\base.html.twig:67 - supplier.label Поставщик - - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_navbar_search.html.twig:56 - templates\base.html.twig:77 - search.regexmatching Соответствие рег.выраж. - - Part-DB1\templates\_sidebar.html.twig:37 - Part-DB1\templates\_sidebar.html.twig:12 - Part-DB1\templates\_sidebar.html.twig:37 - Part-DB1\templates\_sidebar.html.twig:12 - templates\base.html.twig:175 - templates\base.html.twig:189 - templates\base.html.twig:202 - templates\base.html.twig:230 - project.labelp Проекты - - Part-DB1\templates\_sidebar.html.twig:2 - Part-DB1\templates\_sidebar.html.twig:2 - templates\base.html.twig:165 - templates\base.html.twig:192 - templates\base.html.twig:220 - actions Действия - - Part-DB1\templates\_sidebar.html.twig:6 - Part-DB1\templates\_sidebar.html.twig:6 - templates\base.html.twig:169 - templates\base.html.twig:196 - templates\base.html.twig:224 - datasource Источник данных - - Part-DB1\templates\_sidebar.html.twig:10 - Part-DB1\templates\_sidebar.html.twig:10 - templates\base.html.twig:173 - templates\base.html.twig:200 - templates\base.html.twig:228 - manufacturer.labelp Производители - - Part-DB1\templates\_sidebar.html.twig:11 - Part-DB1\templates\_sidebar.html.twig:11 - templates\base.html.twig:174 - templates\base.html.twig:201 - templates\base.html.twig:229 - supplier.labelp Поставщики - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:213 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:293 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:293 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:181 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:243 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:268 - attachment.download_failed Не удалось скачать внешнее вложение. - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:222 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:190 - entity.edit_flash Изменения успешно сохранены. - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:231 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:196 - entity.edit_flash.invalid Изменения не могут быть сохранены! Проверьте введенные данные! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:302 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:252 - entity.created_flash Элемент создан. - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:308 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:258 - entity.created_flash.invalid Не могу создать элемент. Проверьте введенные данные! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:399 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:352 - src\Controller\BaseAdminController.php:154 - attachment_type.deleted Элемент удален! - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:401 - Part-DB1\src\Controller\UserController.php:109 - Part-DB1\src\Controller\UserSettingsController.php:159 - Part-DB1\src\Controller\UserSettingsController.php:193 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:354 - Part-DB1\src\Controller\UserController.php:101 - Part-DB1\src\Controller\UserSettingsController.php:150 - Part-DB1\src\Controller\UserSettingsController.php:182 - csfr_invalid CSFR жетон неверен. Перегрузите эту страницу или свяжитесь с администратором если это сообщение остаётся на экране. - - Part-DB1\src\Controller\LabelController.php:125 - label_generator.no_entities_found Ничего не найдено @@ -4197,8 +2487,6 @@ - Part-DB1\src\Controller\LogController.php:149 - Part-DB1\src\Controller\LogController.php:154 new @@ -4208,8 +2496,6 @@ - Part-DB1\src\Controller\LogController.php:156 - Part-DB1\src\Controller\LogController.php:160 new @@ -4219,8 +2505,6 @@ - Part-DB1\src\Controller\LogController.php:176 - Part-DB1\src\Controller\LogController.php:180 new @@ -4230,8 +2514,6 @@ - Part-DB1\src\Controller\LogController.php:178 - Part-DB1\src\Controller\LogController.php:182 new @@ -4241,8 +2523,6 @@ - Part-DB1\src\Controller\LogController.php:185 - Part-DB1\src\Controller\LogController.php:189 new @@ -4252,8 +2532,6 @@ - Part-DB1\src\Controller\LogController.php:187 - Part-DB1\src\Controller\LogController.php:191 new @@ -4263,8 +2541,6 @@ - Part-DB1\src\Controller\LogController.php:194 - Part-DB1\src\Controller\LogController.php:198 new @@ -4274,8 +2550,6 @@ - Part-DB1\src\Controller\LogController.php:196 - Part-DB1\src\Controller\LogController.php:200 new @@ -4285,8 +2559,6 @@ - Part-DB1\src\Controller\LogController.php:199 - Part-DB1\src\Controller\LogController.php:203 new @@ -4295,306 +2567,168 @@ - - Part-DB1\src\Controller\PartController.php:182 - Part-DB1\src\Controller\PartController.php:182 - src\Controller\PartController.php:80 - part.edited_flash Изменения сохранены! - - Part-DB1\src\Controller\PartController.php:216 - Part-DB1\src\Controller\PartController.php:219 - part.deleted Компонент успешно удален. - - Part-DB1\src\Controller\PartController.php:302 - Part-DB1\src\Controller\PartController.php:277 - Part-DB1\src\Controller\PartController.php:317 - src\Controller\PartController.php:113 - src\Controller\PartController.php:142 - part.created_flash Компонент создан! - - Part-DB1\src\Controller\PartController.php:308 - Part-DB1\src\Controller\PartController.php:283 - part.created_flash.invalid Пожалуйста проверьте введенные данные! - - Part-DB1\src\Controller\ScanController.php:68 - Part-DB1\src\Controller\ScanController.php:90 - scan.qr_not_found По данному штрихкоду совпадений не найдено. - - Part-DB1\src\Controller\ScanController.php:71 - scan.format_unknown Неизвестный формат! - - Part-DB1\src\Controller\ScanController.php:86 - scan.qr_success Элемент найден. - - Part-DB1\src\Controller\SecurityController.php:114 - Part-DB1\src\Controller\SecurityController.php:109 - pw_reset.user_or_email Имя пользователя / 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 Жетон - - Part-DB1\src\Controller\SecurityController.php:194 - Part-DB1\src\Controller\SecurityController.php:192 - pw_reset.new_pw.error Имя пользователя или Жетон неверные! Проверьте введенные данные. - - 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 Все двухфакторные способы аутентификации успешно запрещены. - - 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: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 истина - - 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 ложь - - Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:128 - Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:119 - log.target_deleted Объект удален @@ -4602,8 +2736,6 @@ - Part-DB1\src\DataTables\Column\RevertLogColumn.php:57 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:60 new @@ -4613,8 +2745,6 @@ - Part-DB1\src\DataTables\Column\RevertLogColumn.php:63 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:66 new @@ -4624,8 +2754,6 @@ - Part-DB1\src\DataTables\Column\RevertLogColumn.php:83 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:86 new @@ -4634,70 +2762,42 @@ - - 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 Объект @@ -4705,8 +2805,6 @@ - Part-DB1\src\DataTables\LogDataTable.php:231 - Part-DB1\src\DataTables\LogDataTable.php:218 new @@ -4715,100 +2813,60 @@ - - 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 Единица измерения @@ -4821,864 +2879,522 @@ - - 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 Лот на компонент - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.none Ничто - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.qr QR Код (рекомендуется) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code128 Код 128 (рекомендуется) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code39 Код 39 (рекомендуется) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code93 Код 93 - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.datamatrix Матричный Штрихкод - - Part-DB1\src\Form\LabelOptionsType.php:122 - label_options.lines_mode.html 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> и <a href="https://github.com/Part-DB/Part-DB-symfony/wiki/Labels#twig-mode">Wiki</a> для пополнительной информации. - - Part-DB1\src\Form\LabelOptionsType.php:47 - label_options.page_size.label Размер этикетки - - Part-DB1\src\Form\LabelOptionsType.php:66 - label_options.supported_elements.label Тип элемента - - Part-DB1\src\Form\LabelOptionsType.php:75 - label_options.barcode_type.label Штрихкод - - 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 Обновить - - Part-DB1\src\Form\LabelSystem\ScanDialogType.php:36 - scan_dialog.input Ввод - - Part-DB1\src\Form\LabelSystem\ScanDialogType.php:44 - scan_dialog.submit Отправить - - Part-DB1\src\Form\ParameterType.php:41 - parameters.name.placeholder н.р. Коэффициент усиления - - Part-DB1\src\Form\ParameterType.php:50 - parameters.symbol.placeholder н.р. h_{FE} - - Part-DB1\src\Form\ParameterType.php:60 - parameters.text.placeholder н.р. Тестовые условия - - Part-DB1\src\Form\ParameterType.php:71 - parameters.max.placeholder н.р. 350 - - Part-DB1\src\Form\ParameterType.php:82 - parameters.min.placeholder н.р. 100 - - Part-DB1\src\Form\ParameterType.php:93 - parameters.typical.placeholder н.р. 200 - - Part-DB1\src\Form\ParameterType.php:103 - parameters.unit.placeholder н.р. V - - Part-DB1\src\Form\ParameterType.php:114 - parameter.group.placeholder н.р. Технические спецификации - - Part-DB1\src\Form\Part\OrderdetailType.php:72 - Part-DB1\src\Form\Part\OrderdetailType.php:75 - orderdetails.edit.supplierpartnr Номер заказа - - Part-DB1\src\Form\Part\OrderdetailType.php:81 - Part-DB1\src\Form\Part\OrderdetailType.php:84 - 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 Больше не доступно - - Part-DB1\src\Form\Part\OrderdetailType.php:75 - Part-DB1\src\Form\Part\OrderdetailType.php:78 - 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 Единица измерения @@ -5691,287 +3407,168 @@ - - 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 н.р. BC547 - - Part-DB1\src\Form\Part\PartBaseType.php:115 - Part-DB1\src\Form\Part\PartBaseType.php:113 - part.edit.description.placeholder н.р. NPN 45V, 0,1A, 0,5W - - Part-DB1\src\Form\Part\PartBaseType.php:123 - Part-DB1\src\Form\Part\PartBaseType.php:121 - part.editmininstock.placeholder н.р. 1 - - 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 Единица измерения @@ -5984,58 +3581,36 @@ - - 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 Профиль этикетки @@ -6043,8 +3618,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:176 - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:161 new @@ -6053,174 +3626,102 @@ - - Part-DB1\src\Services\MarkdownParser.php:73 - Part-DB1\src\Services\MarkdownParser.php:73 - markdown.loading Загрузка документа. Если это сообщение не пропадает, попробуйте перегрузить страницу. - - Part-DB1\src\Services\PasswordResetManager.php:98 - Part-DB1\src\Services\PasswordResetManager.php:98 - pw_reset.email.subject Сброс пароль для вашего Part-DB аккаунта - - 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 Проекты - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:167 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:144 - src\Services\ToolsTreeBuilder.php:68 - 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 Единица измерения @@ -6233,40 +3734,24 @@ - - 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 Вложения @@ -6274,8 +3759,6 @@ - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:239 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:210 new @@ -6284,20 +3767,12 @@ - - 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 Группы @@ -6305,8 +3780,6 @@ - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:271 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:242 new @@ -6315,11 +3788,6 @@ - - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - src\Services\TreeBuilder.php:124 - entity.tree.new Новый Элемент @@ -6327,7 +3795,6 @@ - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 obsolete @@ -6337,8 +3804,6 @@ - Part-DB1\templates\_navbar.html.twig:27 - templates\base.html.twig:88 obsolete @@ -6348,8 +3813,6 @@ - Part-DB1\src\Form\UserSettingsType.php:119 - src\Form\UserSettingsType.php:49 obsolete @@ -6359,8 +3822,6 @@ - Part-DB1\src\Form\UserSettingsType.php:129 - src\Form\UserSettingsType.php:50 obsolete @@ -6370,7 +3831,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:100 new obsolete @@ -6381,10 +3841,6 @@ - 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 @@ -6395,10 +3851,6 @@ - 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 @@ -6409,7 +3861,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:139 new obsolete @@ -6420,7 +3871,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:160 new obsolete @@ -6431,7 +3881,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:184 new obsolete @@ -6442,7 +3891,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:198 new obsolete @@ -6453,7 +3901,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:214 new obsolete @@ -6464,7 +3911,6 @@ - templates\base.html.twig:81 obsolete obsolete @@ -6475,7 +3921,6 @@ - templates\base.html.twig:109 obsolete obsolete @@ -6486,7 +3931,6 @@ - templates\base.html.twig:112 obsolete obsolete @@ -6777,7 +4221,6 @@ - src\Form\PartType.php:63 obsolete obsolete @@ -7448,7 +4891,6 @@ - templates\Parts\show_part_info.html.twig:194 obsolete obsolete @@ -7459,7 +4901,6 @@ - src\Form\PartType.php:83 obsolete obsolete @@ -12261,4 +9702,4 @@ - + \ No newline at end of file diff --git a/translations/messages.zh.xlf b/translations/messages.zh.xlf index 44678eb6..9455240c 100644 --- a/translations/messages.zh.xlf +++ b/translations/messages.zh.xlf @@ -2,11 +2,6 @@ - - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - attachment_type.caption 附件类型 @@ -14,7 +9,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:12 new @@ -24,7 +18,6 @@ - Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:16 new @@ -33,45 +26,18 @@ - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:22 - Part-DB1\templates\_sidebar.html.twig:7 - templates\AdminPages\CategoryAdmin.html.twig:4 - templates\base.html.twig:163 - templates\base.html.twig:170 - templates\base.html.twig:197 - templates\base.html.twig:225 - category.labelp 类别 - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:19 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:11 - templates\AdminPages\CategoryAdmin.html.twig:8 - admin.options 选项 - - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 - Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 - templates\AdminPages\CategoryAdmin.html.twig:9 - admin.advanced 高级 @@ -79,7 +45,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:13 new @@ -89,7 +54,6 @@ - Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:17 new @@ -98,30 +62,18 @@ - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - currency.caption 货币 - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - currency.iso_code.caption 货币ISO代码 - - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - currency.symbol.caption 货币符号 @@ -129,7 +81,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:29 new @@ -139,7 +90,6 @@ - Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:33 new @@ -149,7 +99,6 @@ - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 new @@ -159,7 +108,6 @@ - Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:12 new @@ -168,89 +116,36 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:67 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_sidebar.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:43 - Part-DB1\templates\_sidebar.html.twig:63 - templates\AdminPages\EntityAdminBase.html.twig:9 - templates\base.html.twig:80 - templates\base.html.twig:179 - templates\base.html.twig:206 - templates\base.html.twig:237 - search.placeholder 搜索 - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 - Part-DB1\templates\_sidebar.html.twig:3 - templates\AdminPages\EntityAdminBase.html.twig:13 - templates\base.html.twig:166 - templates\base.html.twig:193 - templates\base.html.twig:221 - expandAll 全部展开 - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 - Part-DB1\templates\_sidebar.html.twig:4 - templates\AdminPages\EntityAdminBase.html.twig:17 - templates\base.html.twig:167 - templates\base.html.twig:194 - templates\base.html.twig:222 - reduceAll 全部收起 - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - part.info.timetravel_hint 在 %timestamp% 之前,部件是这样显示的。 <i>请注意,这是试验性功能,信息可能不正确。</i> - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 - templates\AdminPages\EntityAdminBase.html.twig:42 - standard.label 属性 - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 - templates\AdminPages\EntityAdminBase.html.twig:43 - infos.label 信息 @@ -258,8 +153,6 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 new @@ -268,120 +161,66 @@ - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 - templates\AdminPages\EntityAdminBase.html.twig:45 - export.label 导出 - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 - templates\AdminPages\EntityAdminBase.html.twig:47 - import_export.label 导入/导出 - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - mass_creation.label 大量创建 - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 - templates\AdminPages\EntityAdminBase.html.twig:59 - admin.common 基本 - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - admin.attachments 附件 - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:90 - admin.parameters 参数 - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:179 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:167 - templates\AdminPages\EntityAdminBase.html.twig:142 - export_all.label 导出所有元素 - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:185 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:173 - mass_creation.help 每一行将被解析为新建元素的名称。可以通过缩进创建嵌套元素。 - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 - templates\AdminPages\EntityAdminBase.html.twig:35 - edit.caption 编辑元素 "%name" - - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 - templates\AdminPages\EntityAdminBase.html.twig:37 - new.caption 新建元素 - - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:9 - templates\base.html.twig:172 - templates\base.html.twig:199 - templates\base.html.twig:227 - footprint.labelp 封装 @@ -389,7 +228,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:13 new @@ -399,7 +237,6 @@ - Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:17 new @@ -408,22 +245,12 @@ - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - group.edit.caption - - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - user.edit.permissions 权限 @@ -431,7 +258,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:24 new @@ -441,7 +267,6 @@ - Part-DB1\templates\AdminPages\GroupAdmin.html.twig:28 new @@ -450,27 +275,18 @@ - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:4 - label_profile.caption 标签配置 - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:8 - label_profile.advanced 高级 - - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:9 - label_profile.comment 注释 @@ -478,7 +294,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:55 new @@ -488,7 +303,6 @@ - Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:59 new @@ -497,11 +311,6 @@ - - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 - templates\AdminPages\ManufacturerAdmin.html.twig:4 - manufacturer.caption 制造商 @@ -509,7 +318,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:8 new @@ -519,7 +327,6 @@ - Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:12 new @@ -528,10 +335,6 @@ - - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - measurement_unit.caption 计量单位 @@ -544,15 +347,6 @@ - - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:5 - Part-DB1\templates\_sidebar.html.twig:8 - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:4 - Part-DB1\templates\_sidebar.html.twig:8 - templates\base.html.twig:171 - templates\base.html.twig:198 - templates\base.html.twig:226 - storelocation.labelp 储存位置 @@ -560,7 +354,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:32 new @@ -570,7 +363,6 @@ - Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:36 new @@ -580,7 +372,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 new @@ -590,7 +381,6 @@ - Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:20 new @@ -599,120 +389,66 @@ - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - user.edit.caption Users - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - user.edit.configuration 配置 - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - user.edit.password 密码 - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - user.edit.tfa.caption 2FA身份验证 - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - user.edit.tfa.google_active 身份验证器应用处于活动状态 - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 - Part-DB1\templates\Users\backup_codes.html.twig:15 - Part-DB1\templates\Users\_2fa_settings.html.twig:95 - tfa_backup.remaining_tokens 剩余备份代码计数 - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 - Part-DB1\templates\Users\backup_codes.html.twig:17 - Part-DB1\templates\Users\_2fa_settings.html.twig:96 - tfa_backup.generation_date 备份代码的生成日期 - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - user.edit.tfa.disabled 方法未启用 - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - user.edit.tfa.u2f_keys_count 主动安全密钥 - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_title 确定继续? - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - user.edit.tfa.disable_tfa_message 这将禁用 <b>账号的所有活动2FA身份验证方法</b> 并删除 <b>备份代码</b>! @@ -722,10 +458,6 @@ - - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - user.edit.tfa.disable_tfa.btn 禁用所有2FA身份验证方法 @@ -733,7 +465,6 @@ - Part-DB1\templates\AdminPages\UserAdmin.html.twig:85 new @@ -743,7 +474,6 @@ - Part-DB1\templates\AdminPages\UserAdmin.html.twig:89 new @@ -752,129 +482,60 @@ - - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\AdminPages\_attachments.html.twig:4 - Part-DB1\templates\Parts\edit\_attachments.html.twig:4 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:63 - attachment.delete 删除 - - Part-DB1\templates\AdminPages\_attachments.html.twig:41 - Part-DB1\templates\Parts\edit\_attachments.html.twig:38 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:35 - Part-DB1\src\DataTables\AttachmentDataTable.php:159 - Part-DB1\templates\Parts\edit\_attachments.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:159 - attachment.external 外部 - - Part-DB1\templates\AdminPages\_attachments.html.twig:49 - Part-DB1\templates\Parts\edit\_attachments.html.twig:47 - Part-DB1\templates\AdminPages\_attachments.html.twig:47 - Part-DB1\templates\Parts\edit\_attachments.html.twig:45 - attachment.preview.alt 附件缩略图 - - Part-DB1\templates\AdminPages\_attachments.html.twig:52 - Part-DB1\templates\Parts\edit\_attachments.html.twig:50 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 - Part-DB1\templates\AdminPages\_attachments.html.twig:50 - Part-DB1\templates\Parts\edit\_attachments.html.twig:48 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:45 - attachment.view 查看 - - Part-DB1\templates\AdminPages\_attachments.html.twig:58 - Part-DB1\templates\Parts\edit\_attachments.html.twig:56 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:43 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - Part-DB1\templates\AdminPages\_attachments.html.twig:56 - Part-DB1\templates\Parts\edit\_attachments.html.twig:54 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:166 - attachment.file_not_found 文件未找到 - - Part-DB1\templates\AdminPages\_attachments.html.twig:66 - Part-DB1\templates\Parts\edit\_attachments.html.twig:64 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:48 - Part-DB1\templates\Parts\edit\_attachments.html.twig:62 - attachment.secure 私有附件 - - Part-DB1\templates\AdminPages\_attachments.html.twig:79 - Part-DB1\templates\Parts\edit\_attachments.html.twig:77 - Part-DB1\templates\AdminPages\_attachments.html.twig:77 - Part-DB1\templates\Parts\edit\_attachments.html.twig:75 - attachment.create 添加附件 - - Part-DB1\templates\AdminPages\_attachments.html.twig:84 - Part-DB1\templates\Parts\edit\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - Part-DB1\templates\AdminPages\_attachments.html.twig:82 - Part-DB1\templates\Parts\edit\_attachments.html.twig:80 - Part-DB1\templates\Parts\edit\_lots.html.twig:33 - part_lot.edit.delete.confirm 确认删除 该库存 ? 该操作不能被撤消 - - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - Part-DB1\templates\AdminPages\_delete_form.html.twig:2 - templates\AdminPages\_delete_form.html.twig:2 - entity.delete.confirm_title 确定删除 %name%? - - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - Part-DB1\templates\AdminPages\_delete_form.html.twig:3 - templates\AdminPages\_delete_form.html.twig:3 - entity.delete.message 该操作不能被撤销 @@ -883,11 +544,6 @@ - - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - Part-DB1\templates\AdminPages\_delete_form.html.twig:11 - templates\AdminPages\_delete_form.html.twig:9 - entity.delete Delete element @@ -895,12 +551,6 @@ - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:45 - Part-DB1\src\Form\Part\PartBaseType.php:286 - Part-DB1\templates\AdminPages\_delete_form.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:43 - Part-DB1\src\Form\Part\PartBaseType.php:267 new @@ -909,561 +559,300 @@ - - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - Part-DB1\templates\AdminPages\_delete_form.html.twig:24 - templates\AdminPages\_delete_form.html.twig:12 - entity.delete.recursive 递归删除(所有子元素) - - Part-DB1\templates\AdminPages\_duplicate.html.twig:3 - entity.duplicate 重复元素 - - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:76 - templates\AdminPages\_export_form.html.twig:4 - src\Form\ImportType.php:67 - export.format 文件格式 - - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - Part-DB1\templates\AdminPages\_export_form.html.twig:16 - templates\AdminPages\_export_form.html.twig:16 - export.level 详细程度 - - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - Part-DB1\templates\AdminPages\_export_form.html.twig:19 - templates\AdminPages\_export_form.html.twig:19 - export.level.simple 简单 - - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - Part-DB1\templates\AdminPages\_export_form.html.twig:20 - templates\AdminPages\_export_form.html.twig:20 - export.level.extended 扩展 - - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - Part-DB1\templates\AdminPages\_export_form.html.twig:21 - templates\AdminPages\_export_form.html.twig:21 - export.level.full 完全 - - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - Part-DB1\templates\AdminPages\_export_form.html.twig:31 - templates\AdminPages\_export_form.html.twig:31 - export.include_children 在导出中包含子元素 - - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - Part-DB1\templates\AdminPages\_export_form.html.twig:39 - templates\AdminPages\_export_form.html.twig:39 - export.btn 导出 - - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - Part-DB1\templates\AdminPages\_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:24 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 - templates\AdminPages\EntityAdminBase.html.twig:94 - templates\Parts\edit_part_info.html.twig:12 - templates\Parts\show_part_info.html.twig:11 - id.label ID - - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:76 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:77 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:77 - Part-DB1\templates\AdminPages\_info.html.twig:11 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:59 - Part-DB1\templates\Parts\info\_attachments_info.html.twig:60 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:12 - Part-DB1\templates\Parts\lists\_info_card.html.twig:53 - templates\AdminPages\EntityAdminBase.html.twig:101 - templates\Parts\show_part_info.html.twig:248 - createdAt 创建于 - - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:73 - Part-DB1\templates\AdminPages\_info.html.twig:25 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 - Part-DB1\templates\Parts\lists\_info_card.html.twig:49 - templates\AdminPages\EntityAdminBase.html.twig:114 - templates\Parts\show_part_info.html.twig:263 - lastModified 上次修改 - - Part-DB1\templates\AdminPages\_info.html.twig:38 - Part-DB1\templates\AdminPages\_info.html.twig:38 - entity.info.parts_count 具有该元素的部件数量 - - Part-DB1\templates\AdminPages\_parameters.html.twig:6 - Part-DB1\templates\helper.twig:125 - Part-DB1\templates\Parts\edit\_specifications.html.twig:6 - specifications.property 参数 - - Part-DB1\templates\AdminPages\_parameters.html.twig:7 - Part-DB1\templates\Parts\edit\_specifications.html.twig:7 - specifications.symbol 符号 - - Part-DB1\templates\AdminPages\_parameters.html.twig:8 - Part-DB1\templates\Parts\edit\_specifications.html.twig:8 - specifications.value_min 最小. - - Part-DB1\templates\AdminPages\_parameters.html.twig:9 - Part-DB1\templates\Parts\edit\_specifications.html.twig:9 - specifications.value_typ 标称. - - Part-DB1\templates\AdminPages\_parameters.html.twig:10 - Part-DB1\templates\Parts\edit\_specifications.html.twig:10 - specifications.value_max 最大. - - Part-DB1\templates\AdminPages\_parameters.html.twig:11 - Part-DB1\templates\Parts\edit\_specifications.html.twig:11 - specifications.unit 单位 - - Part-DB1\templates\AdminPages\_parameters.html.twig:12 - Part-DB1\templates\Parts\edit\_specifications.html.twig:12 - specifications.text 文本 - - Part-DB1\templates\AdminPages\_parameters.html.twig:13 - Part-DB1\templates\Parts\edit\_specifications.html.twig:13 - specifications.group Group - - Part-DB1\templates\AdminPages\_parameters.html.twig:26 - Part-DB1\templates\Parts\edit\_specifications.html.twig:26 - specification.create 新建参数 - - Part-DB1\templates\AdminPages\_parameters.html.twig:31 - Part-DB1\templates\Parts\edit\_specifications.html.twig:31 - parameter.delete.confirm 确实删除该参数? - - Part-DB1\templates\attachment_list.html.twig:3 - Part-DB1\templates\attachment_list.html.twig:3 - attachment.list.title 附件列表 - - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - Part-DB1\templates\attachment_list.html.twig:10 - Part-DB1\templates\LogSystem\_log_table.html.twig:8 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - part_list.loading.caption 加载中... - - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - Part-DB1\templates\attachment_list.html.twig:11 - Part-DB1\templates\LogSystem\_log_table.html.twig:9 - Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - part_list.loading.message 这可能需要一些时间。如果此消息没有消失,请尝试重新加载页面。 - - Part-DB1\templates\base.html.twig:68 - Part-DB1\templates\base.html.twig:68 - templates\base.html.twig:246 - vendor.base.javascript_hint 需要激活 Javascript 才能使用所有功能 - - Part-DB1\templates\base.html.twig:73 - Part-DB1\templates\base.html.twig:73 - sidebar.big.toggle 显示/隐藏 侧边栏 - - Part-DB1\templates\base.html.twig:95 - Part-DB1\templates\base.html.twig:95 - templates\base.html.twig:271 - loading.caption 加载中: - - Part-DB1\templates\base.html.twig:96 - Part-DB1\templates\base.html.twig:96 - templates\base.html.twig:272 - loading.message 这可能需要一段时间。如果此消息长时间存在,请尝试重新加载页面。 - - Part-DB1\templates\base.html.twig:101 - Part-DB1\templates\base.html.twig:101 - templates\base.html.twig:277 - loading.bar 加载中... - - Part-DB1\templates\base.html.twig:112 - Part-DB1\templates\base.html.twig:112 - templates\base.html.twig:288 - back_to_top 返回页面顶部 - - Part-DB1\templates\Form\permissionLayout.html.twig:35 - Part-DB1\templates\Form\permissionLayout.html.twig:35 - permission.edit.permission 权限 - - Part-DB1\templates\Form\permissionLayout.html.twig:36 - Part-DB1\templates\Form\permissionLayout.html.twig:36 - permission.edit.value 配置 - - Part-DB1\templates\Form\permissionLayout.html.twig:53 - Part-DB1\templates\Form\permissionLayout.html.twig:53 - permission.legend.title 状态说明 - - Part-DB1\templates\Form\permissionLayout.html.twig:57 - Part-DB1\templates\Form\permissionLayout.html.twig:57 - permission.legend.disallow 禁止 - - Part-DB1\templates\Form\permissionLayout.html.twig:61 - Part-DB1\templates\Form\permissionLayout.html.twig:61 - permission.legend.allow 允许 - - Part-DB1\templates\Form\permissionLayout.html.twig:65 - Part-DB1\templates\Form\permissionLayout.html.twig:65 - permission.legend.inherit 继承 - - Part-DB1\templates\helper.twig:3 - Part-DB1\templates\helper.twig:3 - bool.true TRUE - - Part-DB1\templates\helper.twig:5 - Part-DB1\templates\helper.twig:5 - bool.false FALSE - - Part-DB1\templates\helper.twig:92 - Part-DB1\templates\helper.twig:87 - Yes YES - - Part-DB1\templates\helper.twig:94 - Part-DB1\templates\helper.twig:89 - No NO - - Part-DB1\templates\helper.twig:126 - specifications.value - - Part-DB1\templates\homepage.html.twig:7 - Part-DB1\templates\homepage.html.twig:7 - templates\homepage.html.twig:7 - version.caption 版本 - - Part-DB1\templates\homepage.html.twig:22 - Part-DB1\templates\homepage.html.twig:22 - templates\homepage.html.twig:19 - homepage.license 许可信息 - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.caption 项目页面 - - Part-DB1\templates\homepage.html.twig:31 - Part-DB1\templates\homepage.html.twig:31 - templates\homepage.html.twig:28 - homepage.github.text 源代码、下载、错误报告、待办事项列表等可以在 <a href="%href%" class="link-external" target="_blank">项目仓库</a> 上找到。 - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - homepage.help.caption 帮助 - - Part-DB1\templates\homepage.html.twig:32 - Part-DB1\templates\homepage.html.twig:32 - templates\homepage.html.twig:29 - homepage.help.text 帮助和提示可以在 <a href="%href%" class="link-external" target="_blank">文档</a>中找到。 - - Part-DB1\templates\homepage.html.twig:33 - Part-DB1\templates\homepage.html.twig:33 - templates\homepage.html.twig:30 - homepage.forum.caption 论坛 @@ -1471,8 +860,6 @@ - Part-DB1\templates\homepage.html.twig:45 - Part-DB1\templates\homepage.html.twig:45 new @@ -1481,138 +868,90 @@ - - Part-DB1\templates\LabelSystem\dialog.html.twig:3 - Part-DB1\templates\LabelSystem\dialog.html.twig:6 - label_generator.title 标签生成器 - - Part-DB1\templates\LabelSystem\dialog.html.twig:16 - label_generator.common 基本 - - Part-DB1\templates\LabelSystem\dialog.html.twig:20 - label_generator.advanced 高级 - - Part-DB1\templates\LabelSystem\dialog.html.twig:24 - label_generator.profiles 标签配置 - - Part-DB1\templates\LabelSystem\dialog.html.twig:58 - label_generator.selected_profile 当前选择的配置 - - Part-DB1\templates\LabelSystem\dialog.html.twig:62 - label_generator.edit_profile 编辑配置 - - Part-DB1\templates\LabelSystem\dialog.html.twig:75 - label_generator.load_profile 载入配置 - - Part-DB1\templates\LabelSystem\dialog.html.twig:102 - label_generator.download 下载 - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:3 - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:5 - label_generator.label_btn 生成标签 - - Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:20 - label_generator.label_empty 新建空标签 - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:3 - label_scanner.title 标签扫描器 - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - label_scanner.no_cam_found.title 未找到摄像头 - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - label_scanner.no_cam_found.text 您需要一个摄像头并授予权限。或在下面手动输入条形码。 - - Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:27 - label_scanner.source_select 选择源 - - Part-DB1\templates\LogSystem\log_list.html.twig:3 - Part-DB1\templates\LogSystem\log_list.html.twig:3 - log.list.title 系统日志 @@ -1620,8 +959,6 @@ - Part-DB1\templates\LogSystem\_log_table.html.twig:1 - Part-DB1\templates\LogSystem\_log_table.html.twig:1 new @@ -1631,8 +968,6 @@ - Part-DB1\templates\LogSystem\_log_table.html.twig:2 - Part-DB1\templates\LogSystem\_log_table.html.twig:2 new @@ -1641,194 +976,114 @@ - - Part-DB1\templates\mail\base.html.twig:24 - Part-DB1\templates\mail\base.html.twig:24 - mail.footer.email_sent_by 这封电子邮件是自动发送的,由 - - Part-DB1\templates\mail\base.html.twig:24 - Part-DB1\templates\mail\base.html.twig:24 - mail.footer.dont_reply 不要回复此电子邮件。 - - Part-DB1\templates\mail\pw_reset.html.twig:6 - Part-DB1\templates\mail\pw_reset.html.twig:6 - email.hi %name% 你好 %name% - - Part-DB1\templates\mail\pw_reset.html.twig:7 - Part-DB1\templates\mail\pw_reset.html.twig:7 - email.pw_reset.message 有人请求重置您的密码。 如果此请求不是您提出的,请忽略此邮件。 - - Part-DB1\templates\mail\pw_reset.html.twig:9 - Part-DB1\templates\mail\pw_reset.html.twig:9 - email.pw_reset.button 单击此处重置密码 - - Part-DB1\templates\mail\pw_reset.html.twig:11 - Part-DB1\templates\mail\pw_reset.html.twig:11 - email.pw_reset.fallback 如果这对您不起作用,请转到 <a href="%url%">%url%</a> 并输入以下信息 - - Part-DB1\templates\mail\pw_reset.html.twig:16 - Part-DB1\templates\mail\pw_reset.html.twig:16 - email.pw_reset.username 用户名 - - Part-DB1\templates\mail\pw_reset.html.twig:19 - Part-DB1\templates\mail\pw_reset.html.twig:19 - email.pw_reset.token Token - - Part-DB1\templates\mail\pw_reset.html.twig:24 - Part-DB1\templates\mail\pw_reset.html.twig:24 - email.pw_reset.valid_unit %date% 重置令牌将在 <i>%date%</i> 之前有效。 - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:18 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - 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 - - 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 最低折扣数量 - - 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 价格 - - 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 数量 - - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - pricedetail.create 添加价格 - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 - templates\Parts\edit_part_info.html.twig:4 - part.edit.title 编辑部件 - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 - templates\Parts\edit_part_info.html.twig:9 - part.edit.card_title 编辑部件 - - 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 基础 - - 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 制造商 - - 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 高级 @@ -1895,279 +1150,156 @@ - - 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 库存 - - 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 附件 - - 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 采购信息 - - Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 - part.edit.tab.specifications 参数 - - 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 注释 - - 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 下载 @@ -2175,8 +1307,6 @@ - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 new @@ -2185,14 +1315,6 @@ - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - Unknown 未知 @@ -2200,10 +1322,6 @@ - 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 @@ -2213,8 +1331,6 @@ - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 new @@ -2223,49 +1339,24 @@ - - 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 名称 @@ -2273,8 +1364,6 @@ - Part-DB1\templates\Parts\info\_main_infos.html.twig:27 - Part-DB1\templates\Parts\info\_main_infos.html.twig:27 new @@ -2283,767 +1372,432 @@ - - 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 - Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - part.supplier.name 名称 - - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - 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\_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 - Part-DB1\templates\Parts\info\_part_lots.html.twig:22 - part_lots.location_unknown 存储位置未知 - - Part-DB1\templates\Parts\info\_part_lots.html.twig:31 - Part-DB1\templates\Parts\info\_part_lots.html.twig:29 - part_lots.instock_unknown 数量未知 - - Part-DB1\templates\Parts\info\_part_lots.html.twig:40 - Part-DB1\templates\Parts\info\_part_lots.html.twig:38 - part_lots.expiration_date 到期时间 - - Part-DB1\templates\Parts\info\_part_lots.html.twig:48 - Part-DB1\templates\Parts\info\_part_lots.html.twig:46 - part_lots.is_expired 已到期 - - Part-DB1\templates\Parts\info\_part_lots.html.twig:55 - Part-DB1\templates\Parts\info\_part_lots.html.twig:53 - part_lots.need_refill 需要补充 - - Part-DB1\templates\Parts\info\_picture.html.twig:15 - Part-DB1\templates\Parts\info\_picture.html.twig:15 - part.info.prev_picture 上一张图片 - - Part-DB1\templates\Parts\info\_picture.html.twig:19 - Part-DB1\templates\Parts\info\_picture.html.twig:19 - part.info.next_picture 下一张图片 - - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - part.mass.tooltip 重量 - - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - part.needs_review.badge 需要审查 - - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - part.favorite.badge 收藏 - - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - part.obsolete.badge 不再可用 - - Part-DB1\templates\Parts\info\_specifications.html.twig:10 - parameters.extracted_from_description 从描述中自动提取 - - Part-DB1\templates\Parts\info\_specifications.html.twig:15 - parameters.auto_extracted_from_comment 从注释中自动提取 - - Part-DB1\templates\Parts\info\_tools.html.twig:6 - Part-DB1\templates\Parts\info\_tools.html.twig:4 - templates\Parts\show_part_info.html.twig:125 - part.edit.btn 编辑部件 - - Part-DB1\templates\Parts\info\_tools.html.twig:16 - Part-DB1\templates\Parts\info\_tools.html.twig:14 - templates\Parts\show_part_info.html.twig:135 - part.clone.btn 克隆部件 - - Part-DB1\templates\Parts\info\_tools.html.twig:24 - Part-DB1\templates\Parts\lists\_action_bar.html.twig:4 - templates\Parts\show_part_info.html.twig:143 - part.create.btn 新建部件 - - Part-DB1\templates\Parts\info\_tools.html.twig:31 - Part-DB1\templates\Parts\info\_tools.html.twig:29 - part.delete.confirm_title 确定删除该部件? - - Part-DB1\templates\Parts\info\_tools.html.twig:32 - Part-DB1\templates\Parts\info\_tools.html.twig:30 - part.delete.message 此部件与它的任何相关信息(如附件、价格信息等)将被删除。 该操作不能被撤消 - - Part-DB1\templates\Parts\info\_tools.html.twig:39 - Part-DB1\templates\Parts\info\_tools.html.twig:37 - part.delete 删除部件 - - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - Part-DB1\templates\Parts\lists\all_list.html.twig:4 - parts_list.all.title 所有部件 - - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - Part-DB1\templates\Parts\lists\category_list.html.twig:4 - parts_list.category.title 部件(根据类别) - - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - parts_list.footprint.title 部件(根据封装) - - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - parts_list.manufacturer.title 部件(根据制造商) - - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - Part-DB1\templates\Parts\lists\search_list.html.twig:4 - parts_list.search.title 搜索部件 - - 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 部件(根据存储位置) - - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - 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 基本 - - Part-DB1\templates\Parts\lists\_info_card.html.twig:26 - Part-DB1\templates\Parts\lists\_info_card.html.twig:20 - entity.info.statistics.tab 统计数据 - - Part-DB1\templates\Parts\lists\_info_card.html.twig:31 - entity.info.attachments.tab 附件 - - Part-DB1\templates\Parts\lists\_info_card.html.twig:37 - entity.info.parameters.tab 参数 - - Part-DB1\templates\Parts\lists\_info_card.html.twig:54 - Part-DB1\templates\Parts\lists\_info_card.html.twig:30 - entity.info.name 名称 - - Part-DB1\templates\Parts\lists\_info_card.html.twig:58 - Part-DB1\templates\Parts\lists\_info_card.html.twig:96 - Part-DB1\templates\Parts\lists\_info_card.html.twig:34 - Part-DB1\templates\Parts\lists\_info_card.html.twig:67 - entity.info.parent 父元素 - - Part-DB1\templates\Parts\lists\_info_card.html.twig:70 - Part-DB1\templates\Parts\lists\_info_card.html.twig:46 - entity.edit.btn 编辑 - - Part-DB1\templates\Parts\lists\_info_card.html.twig:92 - Part-DB1\templates\Parts\lists\_info_card.html.twig:63 - entity.info.children_count 子元素计数 - - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - Part-DB1\templates\security\2fa_base_form.html.twig:3 - Part-DB1\templates\security\2fa_base_form.html.twig:5 - tfa.check.title 需要2FA身份验证 - - Part-DB1\templates\security\2fa_base_form.html.twig:39 - Part-DB1\templates\security\2fa_base_form.html.twig:39 - tfa.code.trusted_pc 这是受信任的计算机(如果启用此功能,则不会在此计算机上执行进一步的2FA查询) - - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - Part-DB1\templates\security\2fa_base_form.html.twig:52 - Part-DB1\templates\security\login.html.twig:58 - login.btn 登录 - - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:42 - Part-DB1\templates\security\2fa_base_form.html.twig:53 - Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:40 - user.logout 注销 - - Part-DB1\templates\security\2fa_form.html.twig:6 - Part-DB1\templates\security\2fa_form.html.twig:6 - tfa.check.code.label 身份验证器应用代码 - - Part-DB1\templates\security\2fa_form.html.twig:10 - Part-DB1\templates\security\2fa_form.html.twig:10 - tfa.check.code.help 输入身份验证器应用中的6位代码,如果身份验证器不可用,请输入备用代码之一。 - - Part-DB1\templates\security\login.html.twig:3 - Part-DB1\templates\security\login.html.twig:3 - templates\security\login.html.twig:3 - login.title 登录 - - Part-DB1\templates\security\login.html.twig:7 - Part-DB1\templates\security\login.html.twig:7 - templates\security\login.html.twig:7 - login.card_title 登录 - - Part-DB1\templates\security\login.html.twig:31 - Part-DB1\templates\security\login.html.twig:31 - templates\security\login.html.twig:31 - login.username.label 用户名 - - Part-DB1\templates\security\login.html.twig:34 - Part-DB1\templates\security\login.html.twig:34 - templates\security\login.html.twig:34 - login.username.placeholder 用户名 - - Part-DB1\templates\security\login.html.twig:38 - Part-DB1\templates\security\login.html.twig:38 - templates\security\login.html.twig:38 - login.password.label 密码 - - Part-DB1\templates\security\login.html.twig:40 - Part-DB1\templates\security\login.html.twig:40 - templates\security\login.html.twig:40 - login.password.placeholder 密码 - - Part-DB1\templates\security\login.html.twig:50 - Part-DB1\templates\security\login.html.twig:50 - templates\security\login.html.twig:50 - login.rememberme 记住我(不应在公共计算机上使用) - - Part-DB1\templates\security\login.html.twig:64 - Part-DB1\templates\security\login.html.twig:64 - pw_reset.password_forget 忘记用户名/密码? - - 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 设置新密码 - - 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 要求新的密码 - - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - Part-DB1\templates\security\U2F\u2f_login.html.twig:7 - Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - tfa_u2f.http_warning 您正在使用不安全的 HTTP 方法访问此页面,因此 U2F 很可能无法工作(错误请求错误消息)。 如果您想使用安全密钥,请要求管理员设置安全 HTTPS 方法。 - - Part-DB1\templates\security\U2F\u2f_login.html.twig:10 - Part-DB1\templates\security\U2F\u2f_register.html.twig:22 - 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 请插入您的安全密钥并按下其按钮 - - 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 添加安全密钥 - - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - Part-DB1\templates\security\U2F\u2f_register.html.twig:6 - Part-DB1\templates\Users\_2fa_settings.html.twig:111 - tfa_u2f.explanation 借助 U2F/FIDO 兼容的安全密钥(例如 YubiKey 或 NitroKey),可以实现用户友好且安全的2FA身份验证。 可以在此处注册安全密钥,如果需要两步验证,只需通过 USB 插入密钥或通过 NFC 在设备上输入密钥即可。 - - 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 为了确保即使密钥丢失也能访问,建议注册第二个密钥作为备份并将其存放在安全的地方! - - 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 添加安全密钥 - - 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 返回设置 @@ -3051,10 +1805,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 - Part-DB1\templates\Statistics\statistics.html.twig:5 - Part-DB1\templates\Statistics\statistics.html.twig:8 new @@ -3064,8 +1814,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:14 - Part-DB1\templates\Statistics\statistics.html.twig:14 new @@ -3075,8 +1823,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:19 - Part-DB1\templates\Statistics\statistics.html.twig:19 new @@ -3086,8 +1832,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:24 - Part-DB1\templates\Statistics\statistics.html.twig:24 new @@ -3097,12 +1841,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 - Part-DB1\templates\Statistics\statistics.html.twig:34 - Part-DB1\templates\Statistics\statistics.html.twig:59 - Part-DB1\templates\Statistics\statistics.html.twig:104 new @@ -3112,12 +1850,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 - Part-DB1\templates\Statistics\statistics.html.twig:35 - Part-DB1\templates\Statistics\statistics.html.twig:60 - Part-DB1\templates\Statistics\statistics.html.twig:105 new @@ -3127,8 +1859,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:40 - Part-DB1\templates\Statistics\statistics.html.twig:40 new @@ -3138,8 +1868,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:44 - Part-DB1\templates\Statistics\statistics.html.twig:44 new @@ -3149,8 +1877,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:48 - Part-DB1\templates\Statistics\statistics.html.twig:48 new @@ -3160,8 +1886,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:65 - Part-DB1\templates\Statistics\statistics.html.twig:65 new @@ -3171,8 +1895,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:69 - Part-DB1\templates\Statistics\statistics.html.twig:69 new @@ -3182,8 +1904,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:73 - Part-DB1\templates\Statistics\statistics.html.twig:73 new @@ -3193,8 +1913,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:77 - Part-DB1\templates\Statistics\statistics.html.twig:77 new @@ -3204,8 +1922,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:81 - Part-DB1\templates\Statistics\statistics.html.twig:81 new @@ -3215,8 +1931,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:85 - Part-DB1\templates\Statistics\statistics.html.twig:85 new @@ -3226,8 +1940,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:89 - Part-DB1\templates\Statistics\statistics.html.twig:89 new @@ -3237,8 +1949,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:93 - Part-DB1\templates\Statistics\statistics.html.twig:93 new @@ -3248,8 +1958,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:110 - Part-DB1\templates\Statistics\statistics.html.twig:110 new @@ -3259,8 +1967,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:114 - Part-DB1\templates\Statistics\statistics.html.twig:114 new @@ -3270,8 +1976,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:118 - Part-DB1\templates\Statistics\statistics.html.twig:118 new @@ -3281,8 +1985,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:122 - Part-DB1\templates\Statistics\statistics.html.twig:122 new @@ -3292,8 +1994,6 @@ - Part-DB1\templates\Statistics\statistics.html.twig:126 - Part-DB1\templates\Statistics\statistics.html.twig:126 new @@ -3302,302 +2002,156 @@ - - 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 如果您无法再使用身份验证器应用程序访问您的设备(智能手机丢失、数据丢失等),您可以使用这些代码之一来访问您的帐户,并可能设置一个新的身份验证器应用程序。 每个代码只能使用一次,建议删除已使用的代码。 有权访问这些代码的任何人都可能访问您的帐户,因此请将它们保存在安全的地方。 - - Part-DB1\templates\Users\backup_codes.html.twig:16 - Part-DB1\templates\Users\backup_codes.html.twig:16 - tfa_backup.username 用户名 - - 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> @@ -3605,262 +2159,156 @@ - - 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 - Part-DB1\templates\Users\_2fa_settings.html.twig:134 - tfa_u2f.key_delete 删除密钥 - - Part-DB1\templates\Users\_2fa_settings.html.twig:141 - Part-DB1\templates\Users\_2fa_settings.html.twig:141 - tfa_u2f.no_keys_registered 尚未注册密钥。 - - Part-DB1\templates\Users\_2fa_settings.html.twig:144 - Part-DB1\templates\Users\_2fa_settings.html.twig:144 - tfa_u2f.add_new_key 注册新的安全密钥 - - Part-DB1\templates\Users\_2fa_settings.html.twig:148 - Part-DB1\templates\Users\_2fa_settings.html.twig:148 - tfa_trustedDevices.explanation 在检查第二因素时,可以将当前计算机标记为可信,因此不再需要对此计算机进行2FA检查。 @@ -3868,326 +2316,168 @@ - - Part-DB1\templates\Users\_2fa_settings.html.twig:149 - Part-DB1\templates\Users\_2fa_settings.html.twig:149 - tfa_trustedDevices.invalidate.confirm_title 确认删除所有受信任的计算机? - - Part-DB1\templates\Users\_2fa_settings.html.twig:150 - Part-DB1\templates\Users\_2fa_settings.html.twig:150 - tfa_trustedDevices.invalidate.confirm_message 必须在所有计算机上再次执行2FA身份验证。确保有可用的身份验证器应用设备。 - - Part-DB1\templates\Users\_2fa_settings.html.twig:154 - Part-DB1\templates\Users\_2fa_settings.html.twig:154 - tfa_trustedDevices.invalidate.btn 重置受信任设备 - - Part-DB1\templates\_navbar.html.twig:4 - Part-DB1\templates\_navbar.html.twig:4 - templates\base.html.twig:29 - sidebar.toggle 切换侧边栏 - - Part-DB1\templates\_navbar.html.twig:22 - navbar.scanner.link 扫描器 - - Part-DB1\templates\_navbar.html.twig:38 - Part-DB1\templates\_navbar.html.twig:36 - templates\base.html.twig:97 - user.loggedin.label 登录: - - Part-DB1\templates\_navbar.html.twig:44 - Part-DB1\templates\_navbar.html.twig:42 - templates\base.html.twig:103 - user.login 登录 - - Part-DB1\templates\_navbar.html.twig:50 - Part-DB1\templates\_navbar.html.twig:48 - ui.toggle_darkmode 暗色模式 - - Part-DB1\templates\_navbar.html.twig:54 - Part-DB1\src\Form\UserSettingsType.php:97 - Part-DB1\templates\_navbar.html.twig:52 - Part-DB1\src\Form\UserSettingsType.php:97 - templates\base.html.twig:106 - src\Form\UserSettingsType.php:44 - user.language_select 切换语言 - - Part-DB1\templates\_navbar_search.html.twig:4 - Part-DB1\templates\_navbar_search.html.twig:4 - templates\base.html.twig:49 - search.options.label 搜索选项 - - Part-DB1\templates\_navbar_search.html.twig:23 - tags.label 标签 - - Part-DB1\templates\_navbar_search.html.twig:27 - Part-DB1\src\Form\LabelOptionsType.php:68 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - Part-DB1\src\Services\ElementTypeNameGenerator.php:88 - templates\base.html.twig:60 - templates\Parts\show_part_info.html.twig:36 - src\Form\PartType.php:77 - storelocation.label 存储位置 - - Part-DB1\templates\_navbar_search.html.twig:36 - Part-DB1\templates\_navbar_search.html.twig:31 - templates\base.html.twig:65 - ordernumber.label.short 供应商合作伙伴 - - Part-DB1\templates\_navbar_search.html.twig:40 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - Part-DB1\templates\_navbar_search.html.twig:35 - Part-DB1\src\Services\ElementTypeNameGenerator.php:89 - templates\base.html.twig:67 - supplier.label 供应商 - - Part-DB1\templates\_navbar_search.html.twig:61 - Part-DB1\templates\_navbar_search.html.twig:56 - templates\base.html.twig:77 - search.regexmatching 正则匹配 - - Part-DB1\templates\_sidebar.html.twig:37 - Part-DB1\templates\_sidebar.html.twig:12 - Part-DB1\templates\_sidebar.html.twig:37 - Part-DB1\templates\_sidebar.html.twig:12 - templates\base.html.twig:175 - templates\base.html.twig:189 - templates\base.html.twig:202 - templates\base.html.twig:230 - project.labelp 项目 - - Part-DB1\templates\_sidebar.html.twig:2 - Part-DB1\templates\_sidebar.html.twig:2 - templates\base.html.twig:165 - templates\base.html.twig:192 - templates\base.html.twig:220 - actions 操作 - - Part-DB1\templates\_sidebar.html.twig:6 - Part-DB1\templates\_sidebar.html.twig:6 - templates\base.html.twig:169 - templates\base.html.twig:196 - templates\base.html.twig:224 - datasource 数据源 - - Part-DB1\templates\_sidebar.html.twig:10 - Part-DB1\templates\_sidebar.html.twig:10 - templates\base.html.twig:173 - templates\base.html.twig:200 - templates\base.html.twig:228 - manufacturer.labelp 制造商 - - Part-DB1\templates\_sidebar.html.twig:11 - Part-DB1\templates\_sidebar.html.twig:11 - templates\base.html.twig:174 - templates\base.html.twig:201 - templates\base.html.twig:229 - supplier.labelp 供应商 - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:213 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:293 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:293 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:181 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:243 - Part-DB1\src\Controller\PartController.php:173 - Part-DB1\src\Controller\PartController.php:268 - attachment.download_failed 外部附件下载失败。 - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:222 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:190 - entity.edit_flash 更改保存成功。 - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:231 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:196 - entity.edit_flash.invalid 无法保存更改。请检查输入 - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:302 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:252 - entity.created_flash 元素已创建。 - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:308 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:258 - entity.created_flash.invalid 无法创建元素。请检查输入 - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:399 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:352 - src\Controller\BaseAdminController.php:154 - attachment_type.deleted 元素已删除。 - - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:401 - Part-DB1\src\Controller\UserController.php:109 - Part-DB1\src\Controller\UserSettingsController.php:159 - Part-DB1\src\Controller\UserSettingsController.php:193 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:354 - Part-DB1\src\Controller\UserController.php:101 - Part-DB1\src\Controller\UserSettingsController.php:150 - Part-DB1\src\Controller\UserSettingsController.php:182 - csfr_invalid CSRF Token 无效。如果此消息仍然存在,请重新加载此页面或联系管理员。 - - Part-DB1\src\Controller\LabelController.php:125 - label_generator.no_entities_found 未找到匹配的实体。 @@ -4195,8 +2485,6 @@ - Part-DB1\src\Controller\LogController.php:149 - Part-DB1\src\Controller\LogController.php:154 new @@ -4206,8 +2494,6 @@ - Part-DB1\src\Controller\LogController.php:156 - Part-DB1\src\Controller\LogController.php:160 new @@ -4217,8 +2503,6 @@ - Part-DB1\src\Controller\LogController.php:176 - Part-DB1\src\Controller\LogController.php:180 new @@ -4228,8 +2512,6 @@ - Part-DB1\src\Controller\LogController.php:178 - Part-DB1\src\Controller\LogController.php:182 new @@ -4239,8 +2521,6 @@ - Part-DB1\src\Controller\LogController.php:185 - Part-DB1\src\Controller\LogController.php:189 new @@ -4250,8 +2530,6 @@ - Part-DB1\src\Controller\LogController.php:187 - Part-DB1\src\Controller\LogController.php:191 new @@ -4261,8 +2539,6 @@ - Part-DB1\src\Controller\LogController.php:194 - Part-DB1\src\Controller\LogController.php:198 new @@ -4272,8 +2548,6 @@ - Part-DB1\src\Controller\LogController.php:196 - Part-DB1\src\Controller\LogController.php:200 new @@ -4283,8 +2557,6 @@ - Part-DB1\src\Controller\LogController.php:199 - Part-DB1\src\Controller\LogController.php:203 new @@ -4293,306 +2565,168 @@ - - Part-DB1\src\Controller\PartController.php:182 - Part-DB1\src\Controller\PartController.php:182 - src\Controller\PartController.php:80 - part.edited_flash 已保存更改。 - - Part-DB1\src\Controller\PartController.php:216 - Part-DB1\src\Controller\PartController.php:219 - part.deleted 部件删除成功。 - - Part-DB1\src\Controller\PartController.php:302 - Part-DB1\src\Controller\PartController.php:277 - Part-DB1\src\Controller\PartController.php:317 - src\Controller\PartController.php:113 - src\Controller\PartController.php:142 - part.created_flash 部件已创建。 - - Part-DB1\src\Controller\PartController.php:308 - Part-DB1\src\Controller\PartController.php:283 - part.created_flash.invalid 创建过程中出错。请检查输入 - - Part-DB1\src\Controller\ScanController.php:68 - Part-DB1\src\Controller\ScanController.php:90 - scan.qr_not_found 未找到匹配条形码的元素。 - - Part-DB1\src\Controller\ScanController.php:71 - scan.format_unknown 格式未知。 - - Part-DB1\src\Controller\ScanController.php:86 - scan.qr_success 找到元素。 - - Part-DB1\src\Controller\SecurityController.php:114 - Part-DB1\src\Controller\SecurityController.php:109 - 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: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 已删除 @@ -4600,8 +2734,6 @@ - Part-DB1\src\DataTables\Column\RevertLogColumn.php:57 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:60 new @@ -4611,8 +2743,6 @@ - Part-DB1\src\DataTables\Column\RevertLogColumn.php:63 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:66 new @@ -4622,8 +2752,6 @@ - Part-DB1\src\DataTables\Column\RevertLogColumn.php:83 - Part-DB1\src\DataTables\Column\RevertLogColumn.php:86 new @@ -4632,70 +2760,42 @@ - - 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 目标 @@ -4703,8 +2803,6 @@ - Part-DB1\src\DataTables\LogDataTable.php:231 - Part-DB1\src\DataTables\LogDataTable.php:218 new @@ -4713,100 +2811,60 @@ - - 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 计量单位 @@ -4819,864 +2877,522 @@ - - 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 部件批次 - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.none - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.qr 二维码(推荐) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code128 Code 128(推荐) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code39 Code 39(推荐) - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.code93 Code 93 - - Part-DB1\src\Form\LabelOptionsType.php:78 - label_options.barcode_type.datamatrix 数据矩阵 - - 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 - label_options.barcode_type.label 条码 - - 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 - Part-DB1\src\Form\Part\OrderdetailType.php:75 - orderdetails.edit.supplierpartnr 供应商部件号 - - Part-DB1\src\Form\Part\OrderdetailType.php:81 - Part-DB1\src\Form\Part\OrderdetailType.php:84 - 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 不再可用 - - Part-DB1\src\Form\Part\OrderdetailType.php:75 - Part-DB1\src\Form\Part\OrderdetailType.php:78 - orderdetails.edit.supplierpartnr.placeholder - - 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 计量单位 @@ -5689,287 +3405,168 @@ - - 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 计量单位 @@ -5982,58 +3579,36 @@ - - 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 标签配置 @@ -6041,8 +3616,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:176 - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:161 new @@ -6051,174 +3624,102 @@ - - 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 项目 - - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:167 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:144 - src\Services\ToolsTreeBuilder.php:68 - 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 计量单位 @@ -6231,40 +3732,24 @@ - - 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 所有附件 @@ -6272,8 +3757,6 @@ - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:239 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:210 new @@ -6282,20 +3765,12 @@ - - 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 @@ -6303,8 +3778,6 @@ - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:271 - Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:242 new @@ -6313,11 +3786,6 @@ - - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 - src\Services\TreeBuilder.php:124 - entity.tree.new 新建 @@ -6325,7 +3793,6 @@ - Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 obsolete @@ -6335,8 +3802,6 @@ - Part-DB1\templates\_navbar.html.twig:27 - templates\base.html.twig:88 obsolete @@ -6346,8 +3811,6 @@ - Part-DB1\src\Form\UserSettingsType.php:119 - src\Form\UserSettingsType.php:49 obsolete @@ -6357,8 +3820,6 @@ - Part-DB1\src\Form\UserSettingsType.php:129 - src\Form\UserSettingsType.php:50 obsolete @@ -6368,7 +3829,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:100 new obsolete @@ -6379,10 +3839,6 @@ - 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 @@ -6393,10 +3849,6 @@ - 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 @@ -6407,7 +3859,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:139 new obsolete @@ -6418,7 +3869,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:160 new obsolete @@ -6429,7 +3879,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:184 new obsolete @@ -6440,7 +3889,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:198 new obsolete @@ -6451,7 +3899,6 @@ - Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:214 new obsolete @@ -6462,7 +3909,6 @@ - templates\base.html.twig:81 obsolete obsolete @@ -6473,7 +3919,6 @@ - templates\base.html.twig:109 obsolete obsolete @@ -6484,7 +3929,6 @@ - templates\base.html.twig:112 obsolete obsolete @@ -6775,7 +4219,6 @@ - src\Form\PartType.php:63 obsolete obsolete @@ -7447,7 +4890,6 @@ Element 3 - templates\Parts\show_part_info.html.twig:194 obsolete obsolete @@ -7458,7 +4900,6 @@ Element 3 - src\Form\PartType.php:83 obsolete obsolete @@ -12146,4 +9587,4 @@ Element 3 - + \ No newline at end of file diff --git a/translations/security.cs.xlf b/translations/security.cs.xlf index 4e9570c2..59de9f9f 100644 --- a/translations/security.cs.xlf +++ b/translations/security.cs.xlf @@ -20,4 +20,4 @@ - + \ No newline at end of file diff --git a/translations/security.da.xlf b/translations/security.da.xlf index ab35c605..99329533 100644 --- a/translations/security.da.xlf +++ b/translations/security.da.xlf @@ -20,4 +20,4 @@ - + \ No newline at end of file diff --git a/translations/security.de.xlf b/translations/security.de.xlf index 927f8f9c..2a357094 100644 --- a/translations/security.de.xlf +++ b/translations/security.de.xlf @@ -20,4 +20,4 @@ - + \ No newline at end of file diff --git a/translations/security.el.xlf b/translations/security.el.xlf index 9ab60206..fb14dc50 100644 --- a/translations/security.el.xlf +++ b/translations/security.el.xlf @@ -8,4 +8,4 @@ - + \ No newline at end of file diff --git a/translations/security.en.xlf b/translations/security.en.xlf index 0b0b4569..5a79d6ec 100644 --- a/translations/security.en.xlf +++ b/translations/security.en.xlf @@ -20,4 +20,4 @@ - + \ No newline at end of file diff --git a/translations/security.es.xlf b/translations/security.es.xlf index e9baee3d..163e6a1a 100644 --- a/translations/security.es.xlf +++ b/translations/security.es.xlf @@ -20,4 +20,4 @@ - + \ No newline at end of file diff --git a/translations/security.fr.xlf b/translations/security.fr.xlf index 334f9c21..9e40b8bf 100644 --- a/translations/security.fr.xlf +++ b/translations/security.fr.xlf @@ -20,4 +20,4 @@ - + \ No newline at end of file diff --git a/translations/security.hr.xlf b/translations/security.hr.xlf index 46664730..be52f241 100644 --- a/translations/security.hr.xlf +++ b/translations/security.hr.xlf @@ -14,4 +14,4 @@ - + \ No newline at end of file diff --git a/translations/security.hu.xlf b/translations/security.hu.xlf index 7c448da0..3c885815 100644 --- a/translations/security.hu.xlf +++ b/translations/security.hu.xlf @@ -20,4 +20,4 @@ - + \ No newline at end of file diff --git a/translations/security.it.xlf b/translations/security.it.xlf index 9200458c..b75de148 100644 --- a/translations/security.it.xlf +++ b/translations/security.it.xlf @@ -20,4 +20,4 @@ - + \ No newline at end of file diff --git a/translations/security.ja.xlf b/translations/security.ja.xlf index 8e496e9e..8e31057f 100644 --- a/translations/security.ja.xlf +++ b/translations/security.ja.xlf @@ -8,4 +8,4 @@ - + \ No newline at end of file diff --git a/translations/security.nl.xlf b/translations/security.nl.xlf index 7ba9fcc1..0e4ecc41 100644 --- a/translations/security.nl.xlf +++ b/translations/security.nl.xlf @@ -20,4 +20,4 @@ - + \ No newline at end of file diff --git a/translations/security.pl.xlf b/translations/security.pl.xlf index 2ae0f64b..14e8652b 100644 --- a/translations/security.pl.xlf +++ b/translations/security.pl.xlf @@ -20,4 +20,4 @@ - + \ No newline at end of file diff --git a/translations/security.ru.xlf b/translations/security.ru.xlf index ebd29669..b506b2fc 100644 --- a/translations/security.ru.xlf +++ b/translations/security.ru.xlf @@ -20,4 +20,4 @@ - + \ No newline at end of file diff --git a/translations/security.uk.xlf b/translations/security.uk.xlf index 12737cf3..03be9410 100644 --- a/translations/security.uk.xlf +++ b/translations/security.uk.xlf @@ -20,4 +20,4 @@ - + \ No newline at end of file diff --git a/translations/security.vi.xlf b/translations/security.vi.xlf index de4647bf..c5c46e84 100644 --- a/translations/security.vi.xlf +++ b/translations/security.vi.xlf @@ -14,4 +14,4 @@ - + \ No newline at end of file diff --git a/translations/security.zh.xlf b/translations/security.zh.xlf index 58fbb26f..181c9c0f 100644 --- a/translations/security.zh.xlf +++ b/translations/security.zh.xlf @@ -20,4 +20,4 @@ - + \ No newline at end of file diff --git a/translations/validators.cs.xlf b/translations/validators.cs.xlf index c298266a..5a1c723f 100644 --- a/translations/validators.cs.xlf +++ b/translations/validators.cs.xlf @@ -2,166 +2,42 @@ - - Part-DB1\src\Entity\Attachments\AttachmentContainingDBElement.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\LabelSystem\LabelProfile.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - part.master_attachment.must_be_picture Příloha náhledu musí být platný obrázek! - - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - src\Entity\AttachmentType.php:0 - src\Entity\Category.php:0 - src\Entity\Company.php:0 - src\Entity\Device.php:0 - src\Entity\Footprint.php:0 - src\Entity\Group.php:0 - src\Entity\Manufacturer.php:0 - src\Entity\PartsContainingDBElement.php:0 - src\Entity\Storelocation.php:0 - src\Entity\StructuralDBElement.php:0 - src\Entity\Supplier.php:0 - structural.entity.unique_name Prvek s tímto názvem již na této úrovni existuje! - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_typical Hodnota musí být menší nebo rovna typické hodnotě ({{ compared_value }}). - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_max Hodnota musí být menší než maximální hodnota ({{ compared_value }}). - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.max_greater_typical Hodnota musí být větší nebo rovna typické hodnotě ({{ compared_value }}). - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - validator.user.username_already_used Uživatel s tímto jménem již existuje - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - user.invalid_username Uživatelské jméno musí obsahovat pouze písmena, číslice, podtržítka, tečky, plusy nebo mínusy! @@ -366,4 +242,4 @@ - + \ No newline at end of file diff --git a/translations/validators.da.xlf b/translations/validators.da.xlf index fac84f4c..e7379173 100644 --- a/translations/validators.da.xlf +++ b/translations/validators.da.xlf @@ -2,166 +2,42 @@ - - Part-DB1\src\Entity\Attachments\AttachmentContainingDBElement.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\LabelSystem\LabelProfile.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - part.master_attachment.must_be_picture Forhåndsvisnings-bilaget skal være et rigtigt billede! - - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - src\Entity\AttachmentType.php:0 - src\Entity\Category.php:0 - src\Entity\Company.php:0 - src\Entity\Device.php:0 - src\Entity\Footprint.php:0 - src\Entity\Group.php:0 - src\Entity\Manufacturer.php:0 - src\Entity\PartsContainingDBElement.php:0 - src\Entity\Storelocation.php:0 - src\Entity\StructuralDBElement.php:0 - src\Entity\Supplier.php:0 - structural.entity.unique_name Der eksisterer allerede et element med dette navn på dette niveau! - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_typical Værdi skal være mindre end eller lig med den typiske værdi ({{ compared_value }}). - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_max Værdi skal være mindre end maksumumværdien ({{ compared_value }}). - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.max_greater_typical Værdi skal være større eller lig med den typiske værdi ({{ compared_value }}). - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - validator.user.username_already_used Der eksisterer allerede en bruger med dette navn - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - user.invalid_username Brugernavn skal må kun indeholde bogstager, tal, understregningstegn, punktummer, plusser og minusser! @@ -372,4 +248,4 @@ - + \ No newline at end of file diff --git a/translations/validators.de.xlf b/translations/validators.de.xlf index 1cc7c00f..17dc1641 100644 --- a/translations/validators.de.xlf +++ b/translations/validators.de.xlf @@ -2,166 +2,42 @@ - - Part-DB1\src\Entity\Attachments\AttachmentContainingDBElement.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\LabelSystem\LabelProfile.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - part.master_attachment.must_be_picture Der Vorschauanhang muss ein gültiges Bild sein! - - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - src\Entity\AttachmentType.php:0 - src\Entity\Category.php:0 - src\Entity\Company.php:0 - src\Entity\Device.php:0 - src\Entity\Footprint.php:0 - src\Entity\Group.php:0 - src\Entity\Manufacturer.php:0 - src\Entity\PartsContainingDBElement.php:0 - src\Entity\Storelocation.php:0 - src\Entity\StructuralDBElement.php:0 - src\Entity\Supplier.php:0 - structural.entity.unique_name Es kann auf jeder Ebene nur ein Objekt mit dem gleichem Namen geben! - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_typical Wert muss kleiner oder gleich als der typische Wert sein ({{ compared_value }}). - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_max Wert muss kleiner als der Maximalwert sein ({{ compared_value }}). - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.max_greater_typical Wert muss größer oder gleich dem typischen Wert sein ({{ compared_value }}). - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - validator.user.username_already_used Es existiert bereits ein Benutzer mit diesem Namen. - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - user.invalid_username Der Benutzername darf nur Buchstaben, Zahlen, Unterstriche, Punkte, Plus- oder Minuszeichen enthalten und darf nicht mit einem @ beginnen. @@ -372,4 +248,4 @@ - + \ No newline at end of file diff --git a/translations/validators.el.xlf b/translations/validators.el.xlf index 9ef5b3de..c4f1d8b1 100644 --- a/translations/validators.el.xlf +++ b/translations/validators.el.xlf @@ -8,4 +8,4 @@ - + \ No newline at end of file diff --git a/translations/validators.en.xlf b/translations/validators.en.xlf index c1d6f6b8..e2e70d03 100644 --- a/translations/validators.en.xlf +++ b/translations/validators.en.xlf @@ -2,166 +2,42 @@ - - Part-DB1\src\Entity\Attachments\AttachmentContainingDBElement.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\LabelSystem\LabelProfile.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - part.master_attachment.must_be_picture The preview attachment must be a valid picture! - - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - src\Entity\AttachmentType.php:0 - src\Entity\Category.php:0 - src\Entity\Company.php:0 - src\Entity\Device.php:0 - src\Entity\Footprint.php:0 - src\Entity\Group.php:0 - src\Entity\Manufacturer.php:0 - src\Entity\PartsContainingDBElement.php:0 - src\Entity\Storelocation.php:0 - src\Entity\StructuralDBElement.php:0 - src\Entity\Supplier.php:0 - structural.entity.unique_name An element with this name already exists on this level! - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_typical Value must be less than or equal to the typical value ({{ compared_value }}). - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_max Value must be less than the maximum value ({{ compared_value }}). - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.max_greater_typical Value must be greater than or equal to the typical value ({{ compared_value }}). - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - validator.user.username_already_used A user with this name already exists - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - user.invalid_username The username must contain only letters, numbers, underscores, dots, pluses or minuses and must not begin with an @! @@ -372,4 +248,4 @@ - + \ No newline at end of file diff --git a/translations/validators.fr.xlf b/translations/validators.fr.xlf index 45c992c0..ac1ea192 100644 --- a/translations/validators.fr.xlf +++ b/translations/validators.fr.xlf @@ -2,166 +2,42 @@ - - Part-DB1\src\Entity\Attachments\AttachmentContainingDBElement.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\LabelSystem\LabelProfile.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - part.master_attachment.must_be_picture La pièce jointe de l'aperçu doit être une image valide ! - - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - src\Entity\AttachmentType.php:0 - src\Entity\Category.php:0 - src\Entity\Company.php:0 - src\Entity\Device.php:0 - src\Entity\Footprint.php:0 - src\Entity\Group.php:0 - src\Entity\Manufacturer.php:0 - src\Entity\PartsContainingDBElement.php:0 - src\Entity\Storelocation.php:0 - src\Entity\StructuralDBElement.php:0 - src\Entity\Supplier.php:0 - structural.entity.unique_name Un élément portant ce nom existe déjà à ce niveau ! - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_typical La valeur doit être inférieure ou égale à la valeur type ({{ compared_value }}). - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_max La valeur doit être inférieure à la valeur maximale ({{ compared_value }}). - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.max_greater_typical La valeur doit être supérieure ou égale à la valeur type ({{ compared_value)}}. - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - validator.user.username_already_used Un utilisateur portant ce nom existe déjà - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - user.invalid_username Le nom d'utilisateur ne doit contenir que des lettres, des chiffres, des traits de soulignement, des points, des plus ou des moins. @@ -366,4 +242,4 @@ - + \ No newline at end of file diff --git a/translations/validators.hr.xlf b/translations/validators.hr.xlf index 29e32a16..1effea8d 100644 --- a/translations/validators.hr.xlf +++ b/translations/validators.hr.xlf @@ -2,166 +2,42 @@ - - Part-DB1\src\Entity\Attachments\AttachmentContainingDBElement.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\LabelSystem\LabelProfile.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - part.master_attachment.must_be_picture Pretpregledna fotografija mora biti validna fotografija! - - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - src\Entity\AttachmentType.php:0 - src\Entity\Category.php:0 - src\Entity\Company.php:0 - src\Entity\Device.php:0 - src\Entity\Footprint.php:0 - src\Entity\Group.php:0 - src\Entity\Manufacturer.php:0 - src\Entity\PartsContainingDBElement.php:0 - src\Entity\Storelocation.php:0 - src\Entity\StructuralDBElement.php:0 - src\Entity\Supplier.php:0 - structural.entity.unique_name Element s ovim nazivom već postoji! - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_typical Vrijednost mora biti manja ili jednaka od tipične vrijednosti ({{ compared_value }}). - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_max Vrijednost mora biti manja od maksimalne vrijednosti ({{ compared_value }}). - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.max_greater_typical Vrijednost mora biti veća ili jednaka od tipične vrijednosti ({{ compared_value }}). - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - validator.user.username_already_used Korisnik s ovim imenom već postoji. - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - user.invalid_username Korisničko ime mora sadržavati samo slova, brojeve, donje crte, točke, pluseve ili minuse! @@ -360,4 +236,4 @@ - + \ No newline at end of file diff --git a/translations/validators.hu.xlf b/translations/validators.hu.xlf index 58d2e66b..b70a3761 100644 --- a/translations/validators.hu.xlf +++ b/translations/validators.hu.xlf @@ -2,166 +2,42 @@ - - Part-DB1\src\Entity\Attachments\AttachmentContainingDBElement.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\LabelSystem\LabelProfile.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - part.master_attachment.must_be_picture Az előnézeti mellékletnek érvényes képnek kell lennie! - - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - src\Entity\AttachmentType.php:0 - src\Entity\Category.php:0 - src\Entity\Company.php:0 - src\Entity\Device.php:0 - src\Entity\Footprint.php:0 - src\Entity\Group.php:0 - src\Entity\Manufacturer.php:0 - src\Entity\PartsContainingDBElement.php:0 - src\Entity\Storelocation.php:0 - src\Entity\StructuralDBElement.php:0 - src\Entity\Supplier.php:0 - structural.entity.unique_name Egy elem ezzel a névvel már létezik ezen a szinten! - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_typical Az értéknek kisebbnek vagy egyenlőnek kell lennie a tipikus értékkel ({{ compared_value }}). - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_max Az értéknek kisebbnek kell lennie a maximális értéknél ({{ compared_value }}). - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.max_greater_typical Az értéknek nagyobbnak vagy egyenlőnek kell lennie a tipikus értéknél ({{ compared_value }}). - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - validator.user.username_already_used Egy felhasználó ezzel a névvel már létezik - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - user.invalid_username A felhasználónév csak betűket, számokat, aláhúzásokat, pontokat, pluszokat vagy mínuszokat tartalmazhat és nem kezdődhet @ jellel! @@ -366,4 +242,4 @@ - + \ No newline at end of file diff --git a/translations/validators.it.xlf b/translations/validators.it.xlf index 7043f4f3..ee13b814 100644 --- a/translations/validators.it.xlf +++ b/translations/validators.it.xlf @@ -2,166 +2,42 @@ - - Part-DB1\src\Entity\Attachments\AttachmentContainingDBElement.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\LabelSystem\LabelProfile.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - part.master_attachment.must_be_picture L'anteprima di un allegato deve essere un'immagine valida! - - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - src\Entity\AttachmentType.php:0 - src\Entity\Category.php:0 - src\Entity\Company.php:0 - src\Entity\Device.php:0 - src\Entity\Footprint.php:0 - src\Entity\Group.php:0 - src\Entity\Manufacturer.php:0 - src\Entity\PartsContainingDBElement.php:0 - src\Entity\Storelocation.php:0 - src\Entity\StructuralDBElement.php:0 - src\Entity\Supplier.php:0 - structural.entity.unique_name Un elemento con questo nome esiste già a questo livello! - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_typical Il valore deve essere inferiore o uguale al valore tipico ({{ compared_value }}). - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_max Il valore deve essere inferiore al valore massimo ({{ compared_value }}). - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.max_greater_typical Il valore deve essere maggiore o uguale al valore tipico ({{ compared_value }}). - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - validator.user.username_already_used Esiste già un utente con questo nome - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - user.invalid_username Il nome utente deve contenere solo lettere, numeri, trattini bassi, punti, più o meno! @@ -360,4 +236,4 @@ - + \ No newline at end of file diff --git a/translations/validators.ja.xlf b/translations/validators.ja.xlf index 01cc3f77..c72b8441 100644 --- a/translations/validators.ja.xlf +++ b/translations/validators.ja.xlf @@ -2,166 +2,42 @@ - - Part-DB1\src\Entity\Attachments\AttachmentContainingDBElement.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\LabelSystem\LabelProfile.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - part.master_attachment.must_be_picture プレビュー用の添付ファイルは有効な画像ファイルである必要があります。 - - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - src\Entity\AttachmentType.php:0 - src\Entity\Category.php:0 - src\Entity\Company.php:0 - src\Entity\Device.php:0 - src\Entity\Footprint.php:0 - src\Entity\Group.php:0 - src\Entity\Manufacturer.php:0 - src\Entity\PartsContainingDBElement.php:0 - src\Entity\Storelocation.php:0 - src\Entity\StructuralDBElement.php:0 - src\Entity\Supplier.php:0 - structural.entity.unique_name 同じレベルにすでにこの名前を持つ要素があります。 - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_typical 値は標準値 ({{ compared_value }}) 以下である必要があります。 - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_max 値は最大値 ({{ compared_value }}) 未満である必要があります。 - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.max_greater_typical 値は標準値 ({{ compared_value }}) 以上である必要があります。 - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - validator.user.username_already_used 同じ名前のユーザーがすでに存在します。 - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - user.invalid_username ユーザー名にはアルファベット・数字・アンダースコア・ドット・プラス・マイナスのみを使用できます。 @@ -204,4 +80,4 @@ - + \ No newline at end of file diff --git a/translations/validators.nl.xlf b/translations/validators.nl.xlf index 91b5e26f..c2815002 100644 --- a/translations/validators.nl.xlf +++ b/translations/validators.nl.xlf @@ -2,166 +2,42 @@ - - Part-DB1\src\Entity\Attachments\AttachmentContainingDBElement.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\LabelSystem\LabelProfile.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - part.master_attachment.must_be_picture De voorbeeldbijlage moet een geldige afbeelding zijn! - - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - src\Entity\AttachmentType.php:0 - src\Entity\Category.php:0 - src\Entity\Company.php:0 - src\Entity\Device.php:0 - src\Entity\Footprint.php:0 - src\Entity\Group.php:0 - src\Entity\Manufacturer.php:0 - src\Entity\PartsContainingDBElement.php:0 - src\Entity\Storelocation.php:0 - src\Entity\StructuralDBElement.php:0 - src\Entity\Supplier.php:0 - structural.entity.unique_name Een element met deze naam bestaat al op dit niveau! - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_typical Waarde moet minder dan of gelijk zijn aan de typische waarde ({{ compared_value }}). - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_max Waarde moet minder zijn dan de maximale waarde ({{ compared_value }}). - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.max_greater_typical Waarde moet groter of gelijk zijn aan de typische waarde ({{ compared_value }}). - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - validator.user.username_already_used Een gebruiker met deze naam bestaat al - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - user.invalid_username De gebruikersnaam mag alleen letters, nummers, underscores, puntjes, plusjes of minnen bevatten en mag niet beginnen met een @! @@ -366,4 +242,4 @@ - + \ No newline at end of file diff --git a/translations/validators.pl.xlf b/translations/validators.pl.xlf index 6c997798..03942667 100644 --- a/translations/validators.pl.xlf +++ b/translations/validators.pl.xlf @@ -2,166 +2,42 @@ - - Part-DB1\src\Entity\Attachments\AttachmentContainingDBElement.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\LabelSystem\LabelProfile.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - part.master_attachment.must_be_picture Załącznik podglądowy musi zawierać prawidłowe zdjęcie! - - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - src\Entity\AttachmentType.php:0 - src\Entity\Category.php:0 - src\Entity\Company.php:0 - src\Entity\Device.php:0 - src\Entity\Footprint.php:0 - src\Entity\Group.php:0 - src\Entity\Manufacturer.php:0 - src\Entity\PartsContainingDBElement.php:0 - src\Entity\Storelocation.php:0 - src\Entity\StructuralDBElement.php:0 - src\Entity\Supplier.php:0 - structural.entity.unique_name Element o tej nazwie już istnieje na tym poziomie! - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_typical Wartość musi być mniejsza lub równa wartości nominalnej ({{compare_value }}). - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_max Wartość musi być mniejsza niż wartość maksymalna ({{ compare_value }}). - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.max_greater_typical Wartość musi być większa lub równa wartości nominalnej ({{ compare_value }}). - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - validator.user.username_already_used Użytkownik o tej nazwie już istnieje - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - user.invalid_username Nazwa użytkownika może zawierać wyłącznie litery, cyfry, podkreślenia, kropki, plusy i minusy! @@ -360,4 +236,4 @@ - + \ No newline at end of file diff --git a/translations/validators.ru.xlf b/translations/validators.ru.xlf index 0f97c478..5ed1278d 100644 --- a/translations/validators.ru.xlf +++ b/translations/validators.ru.xlf @@ -2,166 +2,42 @@ - - Part-DB1\src\Entity\Attachments\AttachmentContainingDBElement.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\LabelSystem\LabelProfile.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - part.master_attachment.must_be_picture Предварительный просмотр возможен только для картинок! - - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - src\Entity\AttachmentType.php:0 - src\Entity\Category.php:0 - src\Entity\Company.php:0 - src\Entity\Device.php:0 - src\Entity\Footprint.php:0 - src\Entity\Group.php:0 - src\Entity\Manufacturer.php:0 - src\Entity\PartsContainingDBElement.php:0 - src\Entity\Storelocation.php:0 - src\Entity\StructuralDBElement.php:0 - src\Entity\Supplier.php:0 - structural.entity.unique_name Элемент с таким именем уже существует на данном уровне! - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_typical Значение должно быть меньше или равно типичного значения ({{ compared_value }}). - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_max Значение должно быть меньше максимального значения ({{ compared_value }}). - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.max_greater_typical Значение должно быть больше или равно типичного значения ({{ compared_value }}). - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - validator.user.username_already_used Пользователь с таким именем уже существует - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - user.invalid_username Имя пользователя должно содержать только буквы, цифры, знак подчеркивания, знаки препинания, плюс и минус. @@ -360,4 +236,4 @@ - + \ No newline at end of file diff --git a/translations/validators.uk.xlf b/translations/validators.uk.xlf index 3f14daeb..a4eee60d 100644 --- a/translations/validators.uk.xlf +++ b/translations/validators.uk.xlf @@ -2,166 +2,42 @@ - - Part-DB1\src\Entity\Attachments\AttachmentContainingDBElement.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\LabelSystem\LabelProfile.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - part.master_attachment.must_be_picture Вкладення для попереднього перегляду має бути коректним зображенням! - - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - src\Entity\AttachmentType.php:0 - src\Entity\Category.php:0 - src\Entity\Company.php:0 - src\Entity\Device.php:0 - src\Entity\Footprint.php:0 - src\Entity\Group.php:0 - src\Entity\Manufacturer.php:0 - src\Entity\PartsContainingDBElement.php:0 - src\Entity\Storelocation.php:0 - src\Entity\StructuralDBElement.php:0 - src\Entity\Supplier.php:0 - structural.entity.unique_name Елемент із такою назвою вже існує на цьому рівні! - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_typical Значення має бути меншим або рівним типовому значенню ({{ compared_value }}). - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_max Значення має бути меншим за максимальне значення ({{ compared_value }}). - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.max_greater_typical Значення має бути більшим або рівним типовому значенню ({{ compared_value }}). - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - validator.user.username_already_used Користувач із таким ім'ям вже існує - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - user.invalid_username Ім'я користувача має містити лише літери, цифри, підкреслення, крапки, знаки плюс або мінус і не може починатися з @! @@ -372,4 +248,4 @@ - + \ No newline at end of file diff --git a/translations/validators.zh.xlf b/translations/validators.zh.xlf index 90775edf..8e3e50a9 100644 --- a/translations/validators.zh.xlf +++ b/translations/validators.zh.xlf @@ -2,166 +2,42 @@ - - Part-DB1\src\Entity\Attachments\AttachmentContainingDBElement.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\LabelSystem\LabelProfile.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Part.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - part.master_attachment.must_be_picture 预览附件必须是有效的图片 - - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\AbstractCompany.php:0 - Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 - Part-DB1\src\Entity\Devices\Device.php:0 - Part-DB1\src\Entity\Parts\Category.php:0 - Part-DB1\src\Entity\Parts\Footprint.php:0 - Part-DB1\src\Entity\Parts\Manufacturer.php:0 - Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 - Part-DB1\src\Entity\Parts\Storelocation.php:0 - Part-DB1\src\Entity\Parts\Supplier.php:0 - Part-DB1\src\Entity\PriceInformations\Currency.php:0 - Part-DB1\src\Entity\UserSystem\Group.php:0 - src\Entity\AttachmentType.php:0 - src\Entity\Category.php:0 - src\Entity\Company.php:0 - src\Entity\Device.php:0 - src\Entity\Footprint.php:0 - src\Entity\Group.php:0 - src\Entity\Manufacturer.php:0 - src\Entity\PartsContainingDBElement.php:0 - src\Entity\Storelocation.php:0 - src\Entity\StructuralDBElement.php:0 - src\Entity\Supplier.php:0 - structural.entity.unique_name 相同层下已存在同名元素 - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_typical 值必须小于或等于标称值 ({{compare_value}})。 - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.min_lesser_max 值必须小于最大值 ({{compare_value}})。 - - Part-DB1\src\Entity\Parameters\AbstractParameter.php:0 - Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0 - Part-DB1\src\Entity\Parameters\CategoryParameter.php:0 - Part-DB1\src\Entity\Parameters\CurrencyParameter.php:0 - Part-DB1\src\Entity\Parameters\DeviceParameter.php:0 - Part-DB1\src\Entity\Parameters\FootprintParameter.php:0 - Part-DB1\src\Entity\Parameters\GroupParameter.php:0 - Part-DB1\src\Entity\Parameters\ManufacturerParameter.php:0 - Part-DB1\src\Entity\Parameters\MeasurementUnitParameter.php:0 - Part-DB1\src\Entity\Parameters\PartParameter.php:0 - Part-DB1\src\Entity\Parameters\StorelocationParameter.php:0 - Part-DB1\src\Entity\Parameters\SupplierParameter.php:0 - parameters.validator.max_greater_typical 值必须大于或等于标称值 ({{compare_value}})。 - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - validator.user.username_already_used 已存在同名用户 - - Part-DB1\src\Entity\UserSystem\User.php:0 - Part-DB1\src\Entity\UserSystem\User.php:0 - user.invalid_username 用户名只能包含字母、数字、下划线、点、加号或减号。 @@ -372,4 +248,4 @@ - + \ No newline at end of file From cae0cd8ac101f77ac15262a769f26768c6e1e98f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 7 Feb 2026 19:07:37 +0100 Subject: [PATCH 233/235] Bumped version to 2.6.0 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 8f87ff7d..e70b4523 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.6.0-dev +2.6.0 From c2a51e57b7cdda52be7896bd530d5a1ebcf41058 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 7 Feb 2026 19:14:35 +0100 Subject: [PATCH 234/235] New Crowdin updates (#1227) * New translations security.en.xlf (French) * New translations security.en.xlf (Spanish) * New translations security.en.xlf (Czech) * New translations security.en.xlf (Italian) * New translations security.en.xlf (Polish) * New translations security.en.xlf (Russian) * New translations frontend.en.xlf (French) * New translations frontend.en.xlf (Spanish) * New translations frontend.en.xlf (Czech) * New translations frontend.en.xlf (Italian) * New translations frontend.en.xlf (Polish) * New translations frontend.en.xlf (Russian) --- translations/frontend.cs.xlf | 94 ++++++++++++++++++------------------ translations/frontend.es.xlf | 94 ++++++++++++++++++------------------ translations/frontend.fr.xlf | 74 ++++++++++++++++++++-------- translations/frontend.it.xlf | 94 ++++++++++++++++++------------------ translations/frontend.pl.xlf | 94 ++++++++++++++++++------------------ translations/frontend.ru.xlf | 94 ++++++++++++++++++------------------ translations/security.cs.xlf | 2 +- translations/security.es.xlf | 2 +- translations/security.fr.xlf | 2 +- translations/security.it.xlf | 2 +- translations/security.pl.xlf | 2 +- translations/security.ru.xlf | 2 +- 12 files changed, 296 insertions(+), 260 deletions(-) diff --git a/translations/frontend.cs.xlf b/translations/frontend.cs.xlf index 08bd2b5e..4ba1f913 100644 --- a/translations/frontend.cs.xlf +++ b/translations/frontend.cs.xlf @@ -1,59 +1,59 @@ - + - - search.placeholder - Hledat - - + + search.placeholder + Hledat + + - - part.labelp - Díly - - + + part.labelp + Díly + + - - entity.select.group.new_not_added_to_DB - Nový (zatím nebyl přidán do DB) - - + + entity.select.group.new_not_added_to_DB + Nový (zatím nebyl přidán do DB) + + - - user.password_strength.very_weak - Velmi slabé - - + + user.password_strength.very_weak + Velmi slabé + + - - user.password_strength.weak - Slabé - - + + user.password_strength.weak + Slabé + + - - user.password_strength.medium - Střední - - + + user.password_strength.medium + Střední + + - - user.password_strength.strong - Silné - - + + user.password_strength.strong + Silné + + - - user.password_strength.very_strong - Velmi silné - - + + user.password_strength.very_strong + Velmi silné + + - - search.submit - Jdi! - - + + search.submit + Jdi! + + - \ No newline at end of file + diff --git a/translations/frontend.es.xlf b/translations/frontend.es.xlf index 361d9104..7d339959 100644 --- a/translations/frontend.es.xlf +++ b/translations/frontend.es.xlf @@ -1,59 +1,59 @@ - + - - search.placeholder - Buscar - - + + search.placeholder + Buscar + + - - part.labelp - Componentes - - + + part.labelp + Componentes + + - - entity.select.group.new_not_added_to_DB - Nuevo (no añadido a la base de datos) - - + + entity.select.group.new_not_added_to_DB + Nuevo (no añadido a la base de datos) + + - - user.password_strength.very_weak - Muy débil - - + + user.password_strength.very_weak + Muy débil + + - - user.password_strength.weak - Débil - - + + user.password_strength.weak + Débil + + - - user.password_strength.medium - Medio - - + + user.password_strength.medium + Medio + + - - user.password_strength.strong - Fuerte - - + + user.password_strength.strong + Fuerte + + - - user.password_strength.very_strong - Muy fuerte - - + + user.password_strength.very_strong + Muy fuerte + + - - search.submit - ¡Vamos! - - + + search.submit + ¡Vamos! + + - \ No newline at end of file + diff --git a/translations/frontend.fr.xlf b/translations/frontend.fr.xlf index 353c9002..5ebfca51 100644 --- a/translations/frontend.fr.xlf +++ b/translations/frontend.fr.xlf @@ -1,23 +1,59 @@ - - - - search.placeholder - Recherche - - + + + + search.placeholder + Recherche + + - - part.labelp - Composants - - - - - search.submit - Rechercher! - - + + part.labelp + Composants + + + + + entity.select.group.new_not_added_to_DB + Nouveau (pas encore ajouté à la BDD) + + + + + user.password_strength.very_weak + Très faible + + + + + user.password_strength.weak + Faible + + + + + user.password_strength.medium + Moyen + + + + + user.password_strength.strong + Fort + + + + + user.password_strength.very_strong + Très fort + + + + + search.submit + Rechercher ! + + - \ No newline at end of file + diff --git a/translations/frontend.it.xlf b/translations/frontend.it.xlf index 56d0e0f0..f163e3e2 100644 --- a/translations/frontend.it.xlf +++ b/translations/frontend.it.xlf @@ -1,59 +1,59 @@ - + - - search.placeholder - Ricerca - - + + search.placeholder + Ricerca + + - - part.labelp - Componenti - - + + part.labelp + Componenti + + - - entity.select.group.new_not_added_to_DB - Nuovo (non ancora aggiunto al DB) - - + + entity.select.group.new_not_added_to_DB + Nuovo (non ancora aggiunto al DB) + + - - user.password_strength.very_weak - Molto debole - - + + user.password_strength.very_weak + Molto debole + + - - user.password_strength.weak - Debole - - + + user.password_strength.weak + Debole + + - - user.password_strength.medium - Media - - + + user.password_strength.medium + Media + + - - user.password_strength.strong - Forte - - + + user.password_strength.strong + Forte + + - - user.password_strength.very_strong - Molto forte - - + + user.password_strength.very_strong + Molto forte + + - - search.submit - Cerca! - - + + search.submit + Cerca! + + - \ No newline at end of file + diff --git a/translations/frontend.pl.xlf b/translations/frontend.pl.xlf index dfdd8887..fface684 100644 --- a/translations/frontend.pl.xlf +++ b/translations/frontend.pl.xlf @@ -1,59 +1,59 @@ - + - - search.placeholder - Szukaj - - + + search.placeholder + Szukaj + + - - part.labelp - Komponenty - - + + part.labelp + Komponenty + + - - entity.select.group.new_not_added_to_DB - Nowość (jeszcze niedodana do DB) - - + + entity.select.group.new_not_added_to_DB + Nowość (jeszcze niedodana do DB) + + - - user.password_strength.very_weak - Bardzo słabe - - + + user.password_strength.very_weak + Bardzo słabe + + - - user.password_strength.weak - Słabe - - + + user.password_strength.weak + Słabe + + - - user.password_strength.medium - Średnie - - + + user.password_strength.medium + Średnie + + - - user.password_strength.strong - Mocne - - + + user.password_strength.strong + Mocne + + - - user.password_strength.very_strong - Bardzo mocne - - + + user.password_strength.very_strong + Bardzo mocne + + - - search.submit - Idź! - - + + search.submit + Idź! + + - \ No newline at end of file + diff --git a/translations/frontend.ru.xlf b/translations/frontend.ru.xlf index a09cb348..f4665a74 100644 --- a/translations/frontend.ru.xlf +++ b/translations/frontend.ru.xlf @@ -1,59 +1,59 @@ - + - - search.placeholder - Поиск - - + + search.placeholder + Поиск + +
    - - part.labelp - Компоненты - - + + part.labelp + Компоненты + +
    - - entity.select.group.new_not_added_to_DB - Новый (еще не добавленный в БД) - - + + entity.select.group.new_not_added_to_DB + Новый (еще не добавленный в БД) + +
    - - user.password_strength.very_weak - Очень слабый - - + + user.password_strength.very_weak + Очень слабый + +
    - - user.password_strength.weak - Слабый - - + + user.password_strength.weak + Слабый + +
    - - user.password_strength.medium - Средний - - + + user.password_strength.medium + Средний + +
    - - user.password_strength.strong - Сильный - - + + user.password_strength.strong + Сильный + +
    - - user.password_strength.very_strong - Очень сильный - - + + user.password_strength.very_strong + Очень сильный + +
    - - search.submit - Поехали! - - + + search.submit + Поехали! + +
    - \ No newline at end of file + diff --git a/translations/security.cs.xlf b/translations/security.cs.xlf index 59de9f9f..4e9570c2 100644 --- a/translations/security.cs.xlf +++ b/translations/security.cs.xlf @@ -20,4 +20,4 @@
    - \ No newline at end of file + diff --git a/translations/security.es.xlf b/translations/security.es.xlf index 163e6a1a..e9baee3d 100644 --- a/translations/security.es.xlf +++ b/translations/security.es.xlf @@ -20,4 +20,4 @@
    - \ No newline at end of file + diff --git a/translations/security.fr.xlf b/translations/security.fr.xlf index 9e40b8bf..334f9c21 100644 --- a/translations/security.fr.xlf +++ b/translations/security.fr.xlf @@ -20,4 +20,4 @@
    - \ No newline at end of file + diff --git a/translations/security.it.xlf b/translations/security.it.xlf index b75de148..9200458c 100644 --- a/translations/security.it.xlf +++ b/translations/security.it.xlf @@ -20,4 +20,4 @@
    - \ No newline at end of file + diff --git a/translations/security.pl.xlf b/translations/security.pl.xlf index 14e8652b..2ae0f64b 100644 --- a/translations/security.pl.xlf +++ b/translations/security.pl.xlf @@ -20,4 +20,4 @@
    - \ No newline at end of file + diff --git a/translations/security.ru.xlf b/translations/security.ru.xlf index b506b2fc..ebd29669 100644 --- a/translations/security.ru.xlf +++ b/translations/security.ru.xlf @@ -20,4 +20,4 @@
    - \ No newline at end of file + From 41252d8bb9e0364ca5f692e00082f975b0c2a299 Mon Sep 17 00:00:00 2001 From: Marc Date: Tue, 10 Feb 2026 15:26:26 +0100 Subject: [PATCH 235/235] Implement URLHandlerInfoProviderInterface in BuerklinProvider (#1235) * Implement URLHandlerInfoProviderInterface in BuerklinProvider Added URL handling capabilities to BuerklinProvider. * Refactor ID extraction logic in BuerklinProvider * Add tests for BuerklinProvider URLHandlerInfoProviderInterface * Revert "Refactor ID extraction logic in BuerklinProvider" This reverts commit 5f651766362ff165b1c3082ce918189e0aa2bdd3. * Exclude 'p' from valid ID return in BuerklinProvider --- .../Providers/BuerklinProvider.php | 33 +++++++- .../Providers/BuerklinProviderTest.php | 76 +++++++++++++++++++ 2 files changed, 108 insertions(+), 1 deletion(-) diff --git a/src/Services/InfoProviderSystem/Providers/BuerklinProvider.php b/src/Services/InfoProviderSystem/Providers/BuerklinProvider.php index 07125c73..aa165bfe 100644 --- a/src/Services/InfoProviderSystem/Providers/BuerklinProvider.php +++ b/src/Services/InfoProviderSystem/Providers/BuerklinProvider.php @@ -34,7 +34,7 @@ use App\Settings\InfoProviderSystem\BuerklinSettings; use Psr\Cache\CacheItemPoolInterface; use Symfony\Contracts\HttpClient\HttpClientInterface; -class BuerklinProvider implements BatchInfoProviderInterface +class BuerklinProvider implements BatchInfoProviderInterface, URLHandlerInfoProviderInterface { private const ENDPOINT_URL = 'https://www.buerklin.com/buerklinws/v2/buerklin'; @@ -636,4 +636,35 @@ class BuerklinProvider implements BatchInfoProviderInterface ); } + public function getHandledDomains(): array + { + return ['buerklin.com']; + } + + public function getIDFromURL(string $url): ?string + { + //Inputs: + //https://www.buerklin.com/de/p/bkl-electronic/niedervoltsteckverbinder/072341-l/40F1332/ + //https://www.buerklin.com/de/p/40F1332/ + //https://www.buerklin.com/en/p/bkl-electronic/dc-connectors/072341-l/40F1332/ + //https://www.buerklin.com/en/p/40F1332/ + //The ID is the last part after the manufacturer/category/mpn segment and before the final slash + //https://www.buerklin.com/de/p/bkl-electronic/niedervoltsteckverbinder/072341-l/40F1332/#download should also work + + $path = parse_url($url, PHP_URL_PATH); + + if (!$path) { + return null; + } + + // Ensure it's actually a product URL + if (strpos($path, '/p/') === false) { + return null; + } + + $id = basename(rtrim($path, '/')); + + return $id !== '' && $id !== 'p' ? $id : null; + } + } diff --git a/tests/Services/InfoProviderSystem/Providers/BuerklinProviderTest.php b/tests/Services/InfoProviderSystem/Providers/BuerklinProviderTest.php index 3193db89..8283b7d3 100644 --- a/tests/Services/InfoProviderSystem/Providers/BuerklinProviderTest.php +++ b/tests/Services/InfoProviderSystem/Providers/BuerklinProviderTest.php @@ -268,4 +268,80 @@ class BuerklinProviderTest extends TestCase $this->assertSame('PartX', $dto->name); $this->assertSame('https://img', $dto->preview_image_url); } + public function testGetHandledDomains(): void + { + $this->assertSame(['buerklin.com'], $this->provider->getHandledDomains()); + } + + /** + * @dataProvider buerklinIdFromUrlProvider + */ + public function testGetIDFromURLExtractsId(string $url, ?string $expected): void + { + $this->assertSame($expected, $this->provider->getIDFromURL($url)); + } + + public static function buerklinIdFromUrlProvider(): array + { + return [ + 'de long path' => [ + 'https://www.buerklin.com/de/p/bkl-electronic/niedervoltsteckverbinder/072341-l/40F1332/', + '40F1332', + ], + 'de short path' => [ + 'https://www.buerklin.com/de/p/40F1332/', + '40F1332', + ], + 'en long path' => [ + 'https://www.buerklin.com/en/p/bkl-electronic/dc-connectors/072341-l/40F1332/', + '40F1332', + ], + 'en short path' => [ + 'https://www.buerklin.com/en/p/40F1332/', + '40F1332', + ], + 'fragment should be ignored' => [ + 'https://www.buerklin.com/de/p/bkl-electronic/niedervoltsteckverbinder/072341-l/40F1332/#download', + '40F1332', + ], + 'no trailing slash' => [ + 'https://www.buerklin.com/en/p/40F1332', + '40F1332', + ], + 'query should be ignored' => [ + 'https://www.buerklin.com/en/p/40F1332/?foo=bar', + '40F1332', + ], + 'query and fragment should be ignored' => [ + 'https://www.buerklin.com/en/p/40F1332/?foo=bar#download', + '40F1332', + ], + + // Negative cases + 'not a product url (no /p/ segment)' => [ + 'https://www.buerklin.com/de/impressum/', + null, + ], + 'path contains "p" but not "/p/"' => [ + 'https://www.buerklin.com/de/help/price/', + null, + ], + 'ends with /p/ (no id)' => [ + 'https://www.buerklin.com/de/p/', + null, + ], + 'ends with /p (no trailing slash)' => [ + 'https://www.buerklin.com/de/p', + null, + ], + 'empty string' => [ + '', + null, + ], + 'not a url string' => [ + 'not a url', + null, + ], + ]; + } }