diff --git a/.env b/.env index 7db81e46..e969be4a 100644 --- a/.env +++ b/.env @@ -71,6 +71,9 @@ HISTORY_SAVE_CHANGED_FIELDS=1 HISTORY_SAVE_CHANGED_DATA=1 # Save the data of an element that gets removed into log entry. This allows to undelete an element HISTORY_SAVE_REMOVED_DATA=1 +# Save the new data of an element that gets changed or added. This allows an easy comparison of the old and new data on the detail page +# This option only becomes active when HISTORY_SAVE_CHANGED_DATA is set to 1 +HISTORY_SAVE_NEW_DATA=1 ################################################################################### # Error pages settings diff --git a/assets/controllers/elements/delete_btn_controller.js b/assets/controllers/elements/delete_btn_controller.js index b688605b..1b28de13 100644 --- a/assets/controllers/elements/delete_btn_controller.js +++ b/assets/controllers/elements/delete_btn_controller.js @@ -44,6 +44,7 @@ export default class extends Controller const title = this.element.dataset.deleteTitle; const form = this.element; + const submitter = event.submitter; const that = this; const confirm = bootbox.confirm({ @@ -58,6 +59,14 @@ export default class extends Controller const submit_btn = document.createElement('button'); submit_btn.type = 'submit'; submit_btn.style.display = 'none'; + + //If the clicked button has a value, set it on the submit button + if (submitter.value) { + submit_btn.value = submitter.value; + } + if (submitter.name) { + submit_btn.name = submitter.name; + } form.appendChild(submit_btn); submit_btn.click(); } else { diff --git a/assets/controllers/elements/json_formatter_controller.js b/assets/controllers/elements/json_formatter_controller.js new file mode 100644 index 00000000..c72814e3 --- /dev/null +++ b/assets/controllers/elements/json_formatter_controller.js @@ -0,0 +1,40 @@ +/* + * This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony). + * + * Copyright (C) 2019 - 2023 Jan Böhmer (https://github.com/jbtronics) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + + +import {Controller} from "@hotwired/stimulus"; + +import JSONFormatter from 'json-formatter-js'; + +/** + * This controller implements an element that renders a JSON object as a collapsible tree. + * The JSON object is passed as a data attribute. + * You have to apply the controller to a div element or similar block element which can contain other elements. + */ +export default class extends Controller { + connect() { + const depth_to_open = this.element.dataset.depthToOpen ?? 0; + const json_string = this.element.dataset.json; + const json_object = JSON.parse(json_string); + + const formatter = new JSONFormatter(json_object, depth_to_open); + + this.element.appendChild(formatter.render()); + } +} \ No newline at end of file diff --git a/assets/css/app/bs-overrides.css b/assets/css/app/bs-overrides.css index 6043aafe..61a36bc4 100644 --- a/assets/css/app/bs-overrides.css +++ b/assets/css/app/bs-overrides.css @@ -105,4 +105,19 @@ form .col-form-label.required:after, form label.required:after { position: relative; right: -2px; z-index: 700; +} + +/**************************************** + * HTML diff styling + ****************************************/ + +/* Insertations are marked with green background and bold */ +ins { + background-color: #95f095; + font-weight: bold; +} + +del { + background-color: #f09595; + font-weight: bold; } \ No newline at end of file diff --git a/composer.json b/composer.json index 1be31dc2..0f5c6450 100644 --- a/composer.json +++ b/composer.json @@ -4,16 +4,17 @@ "require": { "php": "^7.4 || ^8.0", "ext-ctype": "*", + "ext-dom": "*", "ext-gd": "*", "ext-iconv": "*", "ext-intl": "*", "ext-json": "*", "ext-mbstring": "*", - "ext-dom": "*", "beberlei/doctrineextensions": "^1.2", "brick/math": "^0.8.15", "composer/package-versions-deprecated": "1.11.99.4", "doctrine/annotations": "^1.6", + "doctrine/data-fixtures": "^1.6.6", "doctrine/dbal": "^3.4.6", "doctrine/doctrine-bundle": "^2.0", "doctrine/doctrine-migrations-bundle": "^3.0", @@ -25,6 +26,7 @@ "gregwar/captcha-bundle": "^2.1.0", "hslavich/oneloginsaml-bundle": "^2.10", "jbtronics/2fa-webauthn": "^1.0.0", + "jfcherng/php-diff": "^6.14", "league/csv": "^9.8.0", "league/html-to-markdown": "^5.0.1", "liip/imagine-bundle": "^2.2", @@ -78,9 +80,7 @@ "twig/intl-extra": "^3.0", "twig/markdown-extra": "^3.0", "web-auth/webauthn-symfony-bundle": "^3.3", - "webmozart/assert": "^1.4", - "doctrine/data-fixtures": "^1.6.6" - + "webmozart/assert": "^1.4" }, "require-dev": { "dama/doctrine-test-bundle": "^7.0", diff --git a/composer.lock b/composer.lock index 609e595c..b72b96f0 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": "112549e8d6425274bb56b648d18c3878", + "content-hash": "51206f9aa7e372b40ef62a105c4a3f13", "packages": [ { "name": "beberlei/assert", @@ -1538,16 +1538,16 @@ }, { "name": "doctrine/orm", - "version": "2.15.0", + "version": "2.15.1", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "7b5fafffbeb560e75adc349e71bf1e90463796d2" + "reference": "9bc6f5b4ac6f1e7d4248b2efbd01a748782075bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/7b5fafffbeb560e75adc349e71bf1e90463796d2", - "reference": "7b5fafffbeb560e75adc349e71bf1e90463796d2", + "url": "https://api.github.com/repos/doctrine/orm/zipball/9bc6f5b4ac6f1e7d4248b2efbd01a748782075bc", + "reference": "9bc6f5b4ac6f1e7d4248b2efbd01a748782075bc", "shasum": "" }, "require": { @@ -1583,7 +1583,7 @@ "symfony/cache": "^4.4 || ^5.4 || ^6.0", "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2", "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "vimeo/psalm": "4.30.0 || 5.9.0" + "vimeo/psalm": "4.30.0 || 5.11.0" }, "suggest": { "ext-dom": "Provides support for XSD validation for XML mapping files", @@ -1633,9 +1633,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.15.0" + "source": "https://github.com/doctrine/orm/tree/2.15.1" }, - "time": "2023-04-26T18:52:02+00:00" + "time": "2023-05-07T18:56:25+00:00" }, { "name": "doctrine/persistence", @@ -2628,6 +2628,242 @@ }, "time": "2022-10-03T22:29:32+00:00" }, + { + "name": "jfcherng/php-color-output", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/jfcherng/php-color-output.git", + "reference": "6c7bf16686cc6a291647fcb87491640a2d5edd20" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jfcherng/php-color-output/zipball/6c7bf16686cc6a291647fcb87491640a2d5edd20", + "reference": "6c7bf16686cc6a291647fcb87491640a2d5edd20", + "shasum": "" + }, + "require": { + "php": ">=7.1.3" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.19", + "liip/rmt": "^1.6", + "phan/phan": "^2 || ^3 || ^4", + "phpunit/phpunit": ">=7 <10", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Jfcherng\\Utility\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jack Cherng", + "email": "jfcherng@gmail.com" + } + ], + "description": "Make your PHP command-line application colorful.", + "keywords": [ + "ansi-colors", + "color", + "command-line", + "str-color" + ], + "support": { + "issues": "https://github.com/jfcherng/php-color-output/issues", + "source": "https://github.com/jfcherng/php-color-output/tree/3.0.0" + }, + "funding": [ + { + "url": "https://www.paypal.me/jfcherng/5usd", + "type": "custom" + } + ], + "time": "2021-05-27T02:45:54+00:00" + }, + { + "name": "jfcherng/php-diff", + "version": "6.14.2", + "source": { + "type": "git", + "url": "https://github.com/jfcherng/php-diff.git", + "reference": "8b2bd0c987f69835a816642193d62a7c3664ca96" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jfcherng/php-diff/zipball/8b2bd0c987f69835a816642193d62a7c3664ca96", + "reference": "8b2bd0c987f69835a816642193d62a7c3664ca96", + "shasum": "" + }, + "require": { + "jfcherng/php-color-output": "^3", + "jfcherng/php-mb-string": "^1.4.6", + "jfcherng/php-sequence-matcher": "^3.2.9", + "php": ">=7.4" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.8", + "liip/rmt": "^1.6", + "phan/phan": "^5", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.6" + }, + "type": "library", + "autoload": { + "psr-4": { + "Jfcherng\\Diff\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jack Cherng", + "email": "jfcherng@gmail.com" + }, + { + "name": "Chris Boulton", + "email": "chris.boulton@interspire.com" + } + ], + "description": "A comprehensive library for generating differences between two strings in multiple formats (unified, side by side HTML etc).", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/jfcherng/php-diff/issues", + "source": "https://github.com/jfcherng/php-diff/tree/6.14.2" + }, + "funding": [ + { + "url": "https://www.paypal.me/jfcherng/5usd", + "type": "custom" + } + ], + "time": "2023-03-15T19:26:28+00:00" + }, + { + "name": "jfcherng/php-mb-string", + "version": "1.4.8", + "source": { + "type": "git", + "url": "https://github.com/jfcherng/php-mb-string.git", + "reference": "ef8926ff849863bfea234e99ee827947bedd86b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jfcherng/php-mb-string/zipball/ef8926ff849863bfea234e99ee827947bedd86b0", + "reference": "ef8926ff849863bfea234e99ee827947bedd86b0", + "shasum": "" + }, + "require": { + "php": ">=7.1.3" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.18", + "phan/phan": "^2 || ^3 || ^4", + "phpunit/phpunit": "^7.2 || ^8 || ^9" + }, + "suggest": { + "ext-iconv": "Either \"ext-iconv\" or \"ext-mbstring\" is requried.", + "ext-mbstring": "Either \"ext-iconv\" or \"ext-mbstring\" is requried." + }, + "type": "library", + "autoload": { + "psr-4": { + "Jfcherng\\Utility\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jack Cherng", + "email": "jfcherng@gmail.com" + } + ], + "description": "A high performance multibytes sting implementation for frequently reading/writing operations.", + "support": { + "issues": "https://github.com/jfcherng/php-mb-string/issues", + "source": "https://github.com/jfcherng/php-mb-string/tree/1.4.8" + }, + "funding": [ + { + "url": "https://www.paypal.me/jfcherng/5usd", + "type": "custom" + } + ], + "time": "2023-04-17T14:22:37+00:00" + }, + { + "name": "jfcherng/php-sequence-matcher", + "version": "3.2.9", + "source": { + "type": "git", + "url": "https://github.com/jfcherng/php-sequence-matcher.git", + "reference": "5de2243aa611a66395d85ba1a9169b439bd13e4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jfcherng/php-sequence-matcher/zipball/5de2243aa611a66395d85ba1a9169b439bd13e4d", + "reference": "5de2243aa611a66395d85ba1a9169b439bd13e4d", + "shasum": "" + }, + "require": { + "php": ">=7.1.3" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.19", + "phan/phan": "^2.5 || ^3 || ^4 || ^5", + "phpunit/phpunit": ">=7 <10", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Jfcherng\\Diff\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jack Cherng", + "email": "jfcherng@gmail.com" + }, + { + "name": "Chris Boulton", + "email": "chris.boulton@interspire.com" + } + ], + "description": "A longest sequence matcher. The logic is primarily based on the Python difflib package.", + "support": { + "issues": "https://github.com/jfcherng/php-sequence-matcher/issues", + "source": "https://github.com/jfcherng/php-sequence-matcher/tree/3.2.9" + }, + "funding": [ + { + "url": "https://www.paypal.me/jfcherng/5usd", + "type": "custom" + } + ], + "time": "2023-03-11T06:56:44+00:00" + }, { "name": "laminas/laminas-code", "version": "4.7.1", @@ -4393,6 +4629,7 @@ "issues": "https://github.com/php-http/message-factory/issues", "source": "https://github.com/php-http/message-factory/tree/1.1.0" }, + "abandoned": "psr/http-factory", "time": "2023-04-14T14:16:17+00:00" }, { @@ -14575,16 +14812,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.14", + "version": "1.10.15", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "d232901b09e67538e5c86a724be841bea5768a7c" + "reference": "762c4dac4da6f8756eebb80e528c3a47855da9bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d232901b09e67538e5c86a724be841bea5768a7c", - "reference": "d232901b09e67538e5c86a724be841bea5768a7c", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/762c4dac4da6f8756eebb80e528c3a47855da9bd", + "reference": "762c4dac4da6f8756eebb80e528c3a47855da9bd", "shasum": "" }, "require": { @@ -14633,20 +14870,20 @@ "type": "tidelift" } ], - "time": "2023-04-19T13:47:27+00:00" + "time": "2023-05-09T15:28:01+00:00" }, { "name": "phpstan/phpstan-doctrine", - "version": "1.3.38", + "version": "1.3.40", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "f1499e54358052fef17d349881ee87a7c4cc4c67" + "reference": "f741919a720af6f84249abc62befeb15eee7bc88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/f1499e54358052fef17d349881ee87a7c4cc4c67", - "reference": "f1499e54358052fef17d349881ee87a7c4cc4c67", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/f741919a720af6f84249abc62befeb15eee7bc88", + "reference": "f741919a720af6f84249abc62befeb15eee7bc88", "shasum": "" }, "require": { @@ -14701,9 +14938,9 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.38" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.40" }, - "time": "2023-05-04T10:53:10+00:00" + "time": "2023-05-11T11:26:04+00:00" }, { "name": "phpstan/phpstan-symfony", @@ -14847,12 +15084,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "f86a07b7eb07f9297e939d8c5f97178b2c189dfe" + "reference": "d1af11449398214f9664514ce705c5154ead9c38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/f86a07b7eb07f9297e939d8c5f97178b2c189dfe", - "reference": "f86a07b7eb07f9297e939d8c5f97178b2c189dfe", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/d1af11449398214f9664514ce705c5154ead9c38", + "reference": "d1af11449398214f9664514ce705c5154ead9c38", "shasum": "" }, "conflict": { @@ -15037,6 +15274,7 @@ "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3", "ibexa/graphql": ">=2.5,<2.5.31|>=3.3,<3.3.28|>=4.2,<4.2.3", "ibexa/post-install": "<=1.0.4", + "ibexa/user": ">=4,<4.4.3", "icecoder/icecoder": "<=8.1", "idno/known": "<=1.3.1", "illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10", @@ -15079,7 +15317,7 @@ "laravel/framework": "<6.20.42|>=7,<7.30.6|>=8,<8.75", "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", "latte/latte": "<2.10.8", - "lavalite/cms": "<=5.8", + "lavalite/cms": "<=9", "lcobucci/jwt": ">=3.4,<3.4.6|>=4,<4.0.4|>=4.1,<4.1.5", "league/commonmark": "<0.18.3", "league/flysystem": "<1.1.4|>=2,<2.1.1", @@ -15177,6 +15415,7 @@ "phpwhois/phpwhois": "<=4.2.5", "phpxmlrpc/extras": "<0.6.1", "phpxmlrpc/phpxmlrpc": "<4.9.2", + "pimcore/customer-management-framework-bundle": "<3.3.9", "pimcore/data-hub": "<1.2.4", "pimcore/perspective-editor": "<1.5.1", "pimcore/pimcore": "<10.5.21", @@ -15363,7 +15602,7 @@ "wp-graphql/wp-graphql": "<0.3.5", "wpanel/wpanel4-cms": "<=4.3.1", "wpcloud/wp-stateless": "<3.2", - "wwbn/avideo": "<12.4", + "wwbn/avideo": "<=12.4", "xataface/xataface": "<3", "xpressengine/xpressengine": "<3.0.15", "yeswiki/yeswiki": "<4.1", @@ -15445,20 +15684,20 @@ "type": "tidelift" } ], - "time": "2023-05-06T00:13:11+00:00" + "time": "2023-05-12T21:03:58+00:00" }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", "shasum": "" }, "require": { @@ -15503,7 +15742,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" }, "funding": [ { @@ -15511,7 +15750,7 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2023-05-07T05:35:17+00:00" }, { "name": "spatie/array-to-xml", @@ -16059,16 +16298,16 @@ }, { "name": "symplify/easy-coding-standard", - "version": "11.3.2", + "version": "11.3.4", "source": { "type": "git", "url": "https://github.com/easy-coding-standard/easy-coding-standard.git", - "reference": "d4159e06c0970e71a2a58d350160241e7cb3994b" + "reference": "c72eb4bdf30e54de2d31aef596f96642ff443741" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/d4159e06c0970e71a2a58d350160241e7cb3994b", - "reference": "d4159e06c0970e71a2a58d350160241e7cb3994b", + "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/c72eb4bdf30e54de2d31aef596f96642ff443741", + "reference": "c72eb4bdf30e54de2d31aef596f96642ff443741", "shasum": "" }, "require": { @@ -16101,7 +16340,7 @@ ], "support": { "issues": "https://github.com/easy-coding-standard/easy-coding-standard/issues", - "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/11.3.2" + "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/11.3.4" }, "funding": [ { @@ -16113,7 +16352,7 @@ "type": "github" } ], - "time": "2023-03-22T15:28:51+00:00" + "time": "2023-05-10T14:44:08+00:00" }, { "name": "vimeo/psalm", @@ -16233,12 +16472,12 @@ "platform": { "php": "^7.4 || ^8.0", "ext-ctype": "*", + "ext-dom": "*", "ext-gd": "*", "ext-iconv": "*", "ext-intl": "*", "ext-json": "*", - "ext-mbstring": "*", - "ext-dom": "*" + "ext-mbstring": "*" }, "platform-dev": [], "platform-overrides": { diff --git a/config/parameters.yaml b/config/parameters.yaml index a7a23db3..ba63a202 100644 --- a/config/parameters.yaml +++ b/config/parameters.yaml @@ -125,3 +125,9 @@ parameters: env(DEFAULT_URI): 'https://partdb.changeme.invalid/' env(SAML_ROLE_MAPPING): '{}' + + env(HISTORY_SAVE_CHANGED_DATA): 1 + env(HISTORY_SAVE_CHANGED_FIELDS): 1 + env(HISTORY_SAVE_REMOVED_DATA): 1 + env(HISTORY_SAVE_NEW_DATA): 1 + diff --git a/config/services.yaml b/config/services.yaml index 360963c3..84b80fdd 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -78,6 +78,7 @@ services: $save_changed_fields: '%env(bool:HISTORY_SAVE_CHANGED_FIELDS)%' $save_changed_data: '%env(bool:HISTORY_SAVE_CHANGED_DATA)%' $save_removed_data: '%env(bool:HISTORY_SAVE_REMOVED_DATA)%' + $save_new_data: '%env(bool:HISTORY_SAVE_NEW_DATA)%' tags: - { name: 'doctrine.event_subscriber' } diff --git a/docs/configuration.md b/docs/configuration.md index 1132f6a7..39a714e7 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -46,8 +46,9 @@ The following configuration options can only be changed by the server administra ### History/Eventlog related settings The following options are used to configure, which (and how much) data is written to the system log: * `HISTORY_SAVE_CHANGED_FIELDS`: When this option is set to true, the name of the fields which are changed, are saved to the DB (so for example it is logged that a user has changed, that the user has changed the name and description of the field, but not the data/content of these changes) -* `HISTORY_SAVE_CHANGED_DATA`: When this option is set to true, the changed data is saved to log (so it is logged, that a user has changed the name of a part and what the name was before). This can increase database size, when you have a lot of changes to enties. +* `HISTORY_SAVE_CHANGED_DATA`: When this option is set to true, the changed data is saved to log (so it is logged, that a user has changed the name of a part and what the name was before). This can increase database size, when you have a lot of changes to entities. * `HISTORY_SAVE_REMOVED_DATA`: When this option is set to true, removed data is saved to log, meaning that you can easily undelete an entity, when it was removed accidentally. +* `HISTORY_SAVE_NEW_DATA`: When this option is set to true, the new data (the data after a change) is saved to element changed log entries. This allows you to easily see the changes between two revisions of an entity. This can increase database size, when you have a lot of changes to entities. If you wanna use want to revert changes or view older revisions of entities, then `HISTORY_SAVE_CHANGED_FIELDS`, `HISTORY_SAVE_CHANGED_DATA` and `HISTORY_SAVE_REMOVED_DATA` all have to be true. diff --git a/package.json b/package.json index a8e3fc6a..8c5d7599 100644 --- a/package.json +++ b/package.json @@ -77,6 +77,7 @@ "emoji.json": "^14.0.0", "exports-loader": "^3.0.0", "html5-qrcode": "^2.2.1", + "json-formatter-js": "^2.3.4", "jszip": "^3.2.0", "katex": "^0.16.0", "marked": "^4.3.0", diff --git a/src/Controller/LogController.php b/src/Controller/LogController.php index de5d3c17..24be85c9 100644 --- a/src/Controller/LogController.php +++ b/src/Controller/LogController.php @@ -22,6 +22,7 @@ declare(strict_types=1); namespace App\Controller; +use App\DataTables\Column\LogEntryTargetColumn; use App\DataTables\Filters\LogFilter; use App\DataTables\LogDataTable; use App\Entity\Base\AbstractDBElement; @@ -33,6 +34,9 @@ use App\Entity\LogSystem\ElementEditedLogEntry; use App\Form\Filters\LogFilterType; use App\Repository\DBElementRepository; use App\Services\LogSystem\EventUndoHelper; +use App\Services\LogSystem\LogEntryExtraFormatter; +use App\Services\LogSystem\LogLevelHelper; +use App\Services\LogSystem\LogTargetHelper; use App\Services\LogSystem\TimeTravel; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityRepository; @@ -93,6 +97,51 @@ class LogController extends AbstractController ]); } + /** + * @Route("/{id}/details", name="log_details") + * @param Request $request + * @param AbstractLogEntry $logEntry + * @return Response + */ + public function logDetails(Request $request, AbstractLogEntry $logEntry, LogEntryExtraFormatter $logEntryExtraFormatter, + LogLevelHelper $logLevelHelper, LogTargetHelper $logTargetHelper, EntityManagerInterface $entityManager): Response + { + $this->denyAccessUnlessGranted('show_details', $logEntry); + + $extra_html = $logEntryExtraFormatter->format($logEntry); + $target_html = $logTargetHelper->formatTarget($logEntry); + + $repo = $entityManager->getRepository(AbstractLogEntry::class); + $target_element = $repo->getTargetElement($logEntry); + + return $this->render('log_system/details/log_details.html.twig', [ + 'log_entry' => $logEntry, + 'target_element' => $target_element, + 'extra_html' => $extra_html, + 'target_html' => $target_html, + 'log_level_helper' => $logLevelHelper, + ]); + } + + /** + * @Route("/{id}/delete", name="log_delete", methods={"DELETE"}) + */ + public function deleteLogEntry(Request $request, AbstractLogEntry $logEntry, EntityManagerInterface $entityManager): RedirectResponse + { + $this->denyAccessUnlessGranted('delete', $logEntry); + + if ($this->isCsrfTokenValid('delete'.$logEntry->getId(), $request->request->get('_token'))) { + //Remove part + $entityManager->remove($logEntry); + //Flush changes + $entityManager->flush(); + $this->addFlash('success', 'log.delete.success'); + } + + return $this->redirectToRoute('homepage'); + } + + /** * @Route("/undo", name="log_undo", methods={"POST"}) */ diff --git a/src/DataTables/Column/LogEntryTargetColumn.php b/src/DataTables/Column/LogEntryTargetColumn.php index 4aaeb069..0f61d567 100644 --- a/src/DataTables/Column/LogEntryTargetColumn.php +++ b/src/DataTables/Column/LogEntryTargetColumn.php @@ -36,6 +36,7 @@ use App\Exceptions\EntityNotSupportedException; use App\Repository\LogEntryRepository; use App\Services\ElementTypeNameGenerator; use App\Services\EntityURLGenerator; +use App\Services\LogSystem\LogTargetHelper; use Doctrine\ORM\EntityManagerInterface; use Omines\DataTablesBundle\Column\AbstractColumn; use Symfony\Component\OptionsResolver\OptionsResolver; @@ -43,21 +44,11 @@ use Symfony\Contracts\Translation\TranslatorInterface; class LogEntryTargetColumn extends AbstractColumn { - protected EntityManagerInterface $em; - protected LogEntryRepository $entryRepository; - protected EntityURLGenerator $entityURLGenerator; - protected ElementTypeNameGenerator $elementTypeNameGenerator; - protected TranslatorInterface $translator; + private LogTargetHelper $logTargetHelper; - public function __construct(EntityManagerInterface $entityManager, EntityURLGenerator $entityURLGenerator, - ElementTypeNameGenerator $elementTypeNameGenerator, TranslatorInterface $translator) + public function __construct(LogTargetHelper $logTargetHelper) { - $this->em = $entityManager; - $this->entryRepository = $entityManager->getRepository(AbstractLogEntry::class); - - $this->entityURLGenerator = $entityURLGenerator; - $this->elementTypeNameGenerator = $elementTypeNameGenerator; - $this->translator = $translator; + $this->logTargetHelper = $logTargetHelper; } /** @@ -80,71 +71,9 @@ class LogEntryTargetColumn extends AbstractColumn public function render($value, $context): string { - if ($context instanceof UserNotAllowedLogEntry && $this->options['showAccessDeniedPath']) { - return htmlspecialchars($context->getPath()); - } - - /** @var AbstractLogEntry $context */ - $target = $this->entryRepository->getTargetElement($context); - - $tmp = ''; - - //The element is existing - if ($target instanceof NamedElementInterface && !empty($target->getName())) { - try { - $tmp = sprintf( - '%s', - $this->entityURLGenerator->infoURL($target), - $this->elementTypeNameGenerator->getTypeNameCombination($target, true) - ); - } catch (EntityNotSupportedException $exception) { - $tmp = $this->elementTypeNameGenerator->getTypeNameCombination($target, true); - } - } elseif ($target instanceof AbstractDBElement) { //Target does not have a name - $tmp = sprintf( - '%s: %s', - $this->elementTypeNameGenerator->getLocalizedTypeLabel($target), - $target->getID() - ); - } elseif (null === $target && $context->hasTarget()) { //Element was deleted - $tmp = sprintf( - '%s: %s [%s]', - $this->elementTypeNameGenerator->getLocalizedTypeLabel($context->getTargetClass()), - $context->getTargetID(), - $this->translator->trans('log.target_deleted') - ); - } - - //Add a hint to the associated element if possible - if (null !== $target && $this->options['show_associated']) { - if ($target instanceof Attachment && null !== $target->getElement()) { - $on = $target->getElement(); - } elseif ($target instanceof AbstractParameter && null !== $target->getElement()) { - $on = $target->getElement(); - } elseif ($target instanceof PartLot && null !== $target->getPart()) { - $on = $target->getPart(); - } elseif ($target instanceof Orderdetail && null !== $target->getPart()) { - $on = $target->getPart(); - } elseif ($target instanceof Pricedetail && null !== $target->getOrderdetail() && null !== $target->getOrderdetail()->getPart()) { - $on = $target->getOrderdetail()->getPart(); - } elseif ($target instanceof ProjectBOMEntry && null !== $target->getProject()) { - $on = $target->getProject(); - } - - if (isset($on) && is_object($on)) { - try { - $tmp .= sprintf( - ' (%s)', - $this->entityURLGenerator->infoURL($on), - $this->elementTypeNameGenerator->getTypeNameCombination($on, true) - ); - } catch (EntityNotSupportedException $exception) { - $tmp .= ' ('.$this->elementTypeNameGenerator->getTypeNameCombination($target, true).')'; - } - } - } - - //Log is not associated with an element - return $tmp; + return $this->logTargetHelper->formatTarget($context, [ + 'showAccessDeniedPath' => $this->options['showAccessDeniedPath'], + 'show_associated' => $this->options['show_associated'], + ]); } } diff --git a/src/DataTables/Column/RevertLogColumn.php b/src/DataTables/Column/RevertLogColumn.php index 2b71d8f0..16f3365a 100644 --- a/src/DataTables/Column/RevertLogColumn.php +++ b/src/DataTables/Column/RevertLogColumn.php @@ -73,13 +73,13 @@ class RevertLogColumn extends AbstractColumn { if ( $context instanceof CollectionElementDeleted - || ($context instanceof ElementDeletedLogEntry && $context->hasOldDataInformations()) + || ($context instanceof ElementDeletedLogEntry && $context->hasOldDataInformation()) ) { $icon = 'fa-trash-restore'; $title = $this->translator->trans('log.undo.undelete'); } elseif ( $context instanceof ElementCreatedLogEntry - || ($context instanceof ElementEditedLogEntry && $context->hasOldDataInformations()) + || ($context instanceof ElementEditedLogEntry && $context->hasOldDataInformation()) ) { $icon = 'fa-undo'; $title = $this->translator->trans('log.undo.undo'); diff --git a/src/DataTables/LogDataTable.php b/src/DataTables/LogDataTable.php index f85c4e37..bef88955 100644 --- a/src/DataTables/LogDataTable.php +++ b/src/DataTables/LogDataTable.php @@ -43,6 +43,7 @@ use App\Exceptions\EntityNotSupportedException; use App\Repository\LogEntryRepository; use App\Services\ElementTypeNameGenerator; use App\Services\EntityURLGenerator; +use App\Services\LogSystem\LogLevelHelper; use App\Services\UserSystem\UserAvatarHelper; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\QueryBuilder; @@ -67,10 +68,11 @@ class LogDataTable implements DataTableTypeInterface protected LogEntryRepository $logRepo; protected Security $security; protected UserAvatarHelper $userAvatarHelper; + protected LogLevelHelper $logLevelHelper; public function __construct(ElementTypeNameGenerator $elementTypeNameGenerator, TranslatorInterface $translator, UrlGeneratorInterface $urlGenerator, EntityURLGenerator $entityURLGenerator, EntityManagerInterface $entityManager, - Security $security, UserAvatarHelper $userAvatarHelper) + Security $security, UserAvatarHelper $userAvatarHelper, LogLevelHelper $logLevelHelper) { $this->elementTypeNameGenerator = $elementTypeNameGenerator; $this->translator = $translator; @@ -79,6 +81,7 @@ class LogDataTable implements DataTableTypeInterface $this->logRepo = $entityManager->getRepository(AbstractLogEntry::class); $this->security = $security; $this->userAvatarHelper = $userAvatarHelper; + $this->logLevelHelper = $logLevelHelper; } public function configureOptions(OptionsResolver $optionsResolver): void @@ -112,69 +115,18 @@ class LogDataTable implements DataTableTypeInterface //This special $$rowClass column is used to set the row class depending on the log level. The class gets set by the frontend controller $dataTable->add('dont_matter', RowClassColumn::class, [ - 'render' => static function ($value, AbstractLogEntry $context) { - switch ($context->getLevel()) { - case AbstractLogEntry::LEVEL_EMERGENCY: - case AbstractLogEntry::LEVEL_ALERT: - case AbstractLogEntry::LEVEL_CRITICAL: - case AbstractLogEntry::LEVEL_ERROR: - return 'table-danger'; - case AbstractLogEntry::LEVEL_WARNING: - return 'table-warning'; - case AbstractLogEntry::LEVEL_NOTICE: - return 'table-info'; - default: - return ''; - } + 'render' => function ($value, AbstractLogEntry $context) { + return $this->logLevelHelper->logLevelToTableColorClass($context->getLevelString()); }, ]); $dataTable->add('symbol', TextColumn::class, [ 'label' => '', 'className' => 'no-colvis', - 'render' => static function ($value, AbstractLogEntry $context) { - switch ($context->getLevelString()) { - case LogLevel::DEBUG: - $symbol = 'fa-bug'; - - break; - case LogLevel::INFO: - $symbol = 'fa-info'; - - break; - case LogLevel::NOTICE: - $symbol = 'fa-flag'; - - break; - case LogLevel::WARNING: - $symbol = 'fa-exclamation-circle'; - - break; - case LogLevel::ERROR: - $symbol = 'fa-exclamation-triangle'; - - break; - case LogLevel::CRITICAL: - $symbol = 'fa-bolt'; - - break; - case LogLevel::ALERT: - $symbol = 'fa-radiation'; - - break; - case LogLevel::EMERGENCY: - $symbol = 'fa-skull-crossbones'; - - break; - default: - $symbol = 'fa-question-circle'; - - break; - } - + 'render' => function ($value, AbstractLogEntry $context) { return sprintf( '', - $symbol, + $this->logLevelHelper->logLevelToIconClass($context->getLevelString()), $context->getLevelString() ); }, @@ -188,6 +140,12 @@ class LogDataTable implements DataTableTypeInterface $dataTable->add('timestamp', LocaleDateTimeColumn::class, [ 'label' => 'log.timestamp', 'timeFormat' => 'medium', + 'render' => function (string $value, AbstractLogEntry $context) { + return sprintf('%s', + $this->urlGenerator->generate('log_details', ['id' => $context->getId()]), + $value + ); + } ]); $dataTable->add('type', TextColumn::class, [ @@ -278,7 +236,7 @@ class LogDataTable implements DataTableTypeInterface 'href' => function ($value, AbstractLogEntry $context) { if ( ($context instanceof TimeTravelInterface - && $context->hasOldDataInformations()) + && $context->hasOldDataInformation()) || $context instanceof CollectionElementDeleted ) { try { diff --git a/src/Entity/Contracts/LogWithNewDataInterface.php b/src/Entity/Contracts/LogWithNewDataInterface.php new file mode 100644 index 00000000..0ecad0f2 --- /dev/null +++ b/src/Entity/Contracts/LogWithNewDataInterface.php @@ -0,0 +1,41 @@ +. + */ + +namespace App\Entity\Contracts; + +interface LogWithNewDataInterface +{ + /** + * Checks if this entry has information about the new data. + * @return bool + */ + public function hasNewDataInformation(): bool; + + /** + * Returns the new data for this entry. + */ + public function getNewData(): array; + + /** + * Sets the new data for this entry. + * @return $this + */ + public function setNewData(array $new_data): self; +} \ No newline at end of file diff --git a/src/Entity/Contracts/TimeTravelInterface.php b/src/Entity/Contracts/TimeTravelInterface.php index 22841cc8..c756f53e 100644 --- a/src/Entity/Contracts/TimeTravelInterface.php +++ b/src/Entity/Contracts/TimeTravelInterface.php @@ -31,7 +31,7 @@ interface TimeTravelInterface * * @return bool true if this entry has information about the changed data */ - public function hasOldDataInformations(): bool; + public function hasOldDataInformation(): bool; /** * Returns the data the entity had before this log entry. diff --git a/src/Entity/LogSystem/ElementDeletedLogEntry.php b/src/Entity/LogSystem/ElementDeletedLogEntry.php index a25f9bf7..c20bf87c 100644 --- a/src/Entity/LogSystem/ElementDeletedLogEntry.php +++ b/src/Entity/LogSystem/ElementDeletedLogEntry.php @@ -88,7 +88,7 @@ class ElementDeletedLogEntry extends AbstractLogEntry implements TimeTravelInter return $this; } - public function hasOldDataInformations(): bool + public function hasOldDataInformation(): bool { return !empty($this->extra['o']); } diff --git a/src/Entity/LogSystem/ElementEditedLogEntry.php b/src/Entity/LogSystem/ElementEditedLogEntry.php index ec5b9f80..fb5f2e5c 100644 --- a/src/Entity/LogSystem/ElementEditedLogEntry.php +++ b/src/Entity/LogSystem/ElementEditedLogEntry.php @@ -25,6 +25,7 @@ namespace App\Entity\LogSystem; use App\Entity\Base\AbstractDBElement; use App\Entity\Contracts\LogWithCommentInterface; use App\Entity\Contracts\LogWithEventUndoInterface; +use App\Entity\Contracts\LogWithNewDataInterface; use App\Entity\Contracts\TimeTravelInterface; use Doctrine\ORM\Mapping as ORM; use InvalidArgumentException; @@ -32,7 +33,7 @@ use InvalidArgumentException; /** * @ORM\Entity() */ -class ElementEditedLogEntry extends AbstractLogEntry implements TimeTravelInterface, LogWithCommentInterface, LogWithEventUndoInterface +class ElementEditedLogEntry extends AbstractLogEntry implements TimeTravelInterface, LogWithCommentInterface, LogWithEventUndoInterface, LogWithNewDataInterface { protected string $typeString = 'element_edited'; @@ -49,7 +50,7 @@ class ElementEditedLogEntry extends AbstractLogEntry implements TimeTravelInterf */ public function hasChangedFieldsInfo(): bool { - return isset($this->extra['f']) || $this->hasOldDataInformations(); + return isset($this->extra['f']) || $this->hasOldDataInformation(); } /** @@ -59,7 +60,7 @@ class ElementEditedLogEntry extends AbstractLogEntry implements TimeTravelInterf */ public function getChangedFields(): array { - if ($this->hasOldDataInformations()) { + if ($this->hasOldDataInformation()) { return array_keys($this->getOldData()); } @@ -92,7 +93,29 @@ class ElementEditedLogEntry extends AbstractLogEntry implements TimeTravelInterf return $this; } - public function hasOldDataInformations(): bool + public function hasNewDataInformation(): bool + { + return !empty($this->extra['n']); + } + + public function getNewData(): array + { + return $this->extra['n'] ?? []; + } + + /** + * Sets the old data for this entry. + * + * @return $this + */ + public function setNewData(array $new_data): self + { + $this->extra['n'] = $new_data; + + return $this; + } + + public function hasOldDataInformation(): bool { return !empty($this->extra['d']); } diff --git a/src/Entity/LogSystem/SecurityEventLogEntry.php b/src/Entity/LogSystem/SecurityEventLogEntry.php index 9503e023..2113beb9 100644 --- a/src/Entity/LogSystem/SecurityEventLogEntry.php +++ b/src/Entity/LogSystem/SecurityEventLogEntry.php @@ -113,7 +113,7 @@ class SecurityEventLogEntry extends AbstractLogEntry { $key = $this->extra['e']; - return static::SECURITY_TYPE_MAPPING[$key] ?? 'unkown'; + return static::SECURITY_TYPE_MAPPING[$key] ?? 'unknown'; } /** diff --git a/src/EventSubscriber/LogSystem/EventLoggerSubscriber.php b/src/EventSubscriber/LogSystem/EventLoggerSubscriber.php index d9c1173d..eed5953d 100644 --- a/src/EventSubscriber/LogSystem/EventLoggerSubscriber.php +++ b/src/EventSubscriber/LogSystem/EventLoggerSubscriber.php @@ -78,11 +78,12 @@ class EventLoggerSubscriber implements EventSubscriber protected bool $save_changed_fields; protected bool $save_changed_data; protected bool $save_removed_data; + protected bool $save_new_data; protected PropertyAccessorInterface $propertyAccessor; public function __construct(EventLogger $logger, SerializerInterface $serializer, EventCommentHelper $commentHelper, - bool $save_changed_fields, bool $save_changed_data, bool $save_removed_data, PropertyAccessorInterface $propertyAccessor, - EventUndoHelper $eventUndoHelper) + bool $save_changed_fields, bool $save_changed_data, bool $save_removed_data, bool $save_new_data, + PropertyAccessorInterface $propertyAccessor, EventUndoHelper $eventUndoHelper) { $this->logger = $logger; $this->serializer = $serializer; @@ -93,6 +94,8 @@ class EventLoggerSubscriber implements EventSubscriber $this->save_changed_fields = $save_changed_fields; $this->save_changed_data = $save_changed_data; $this->save_removed_data = $save_removed_data; + //This option only makes sense if save_changed_data is true + $this->save_new_data = $save_new_data && $save_changed_data; } public function onFlush(OnFlushEventArgs $eventArgs): void @@ -150,6 +153,7 @@ class EventLoggerSubscriber implements EventSubscriber $log->setTargetElementID($undoEvent->getDeletedElementID()); } } + $this->logger->log($log); } } @@ -301,6 +305,24 @@ class EventLoggerSubscriber implements EventSubscriber }, ARRAY_FILTER_USE_BOTH); } + /** + * Restrict the length of every string in the given array to MAX_STRING_LENGTH, to save memory in the case of very + * long strings (e.g. images in notes) + * @param array $fields + * @return array + */ + protected function fieldLengthRestrict(array $fields): array + { + return array_map( + static function ($value) { + if (is_string($value)) { + return mb_strimwidth($value, 0, self::MAX_STRING_LENGTH, '...'); + } + + return $value; + }, $fields); + } + protected function saveChangeSet(AbstractDBElement $entity, AbstractLogEntry $logEntry, EntityManagerInterface $em, bool $element_deleted = false): void { $uow = $em->getUnitOfWork(); @@ -314,20 +336,24 @@ class EventLoggerSubscriber implements EventSubscriber } else { //Otherwise we have to get it from entity changeset $changeSet = $uow->getEntityChangeSet($entity); $old_data = array_combine(array_keys($changeSet), array_column($changeSet, 0)); + //If save_new_data is enabled, we extract it from the change set + if ($this->save_new_data) { + $new_data = array_combine(array_keys($changeSet), array_column($changeSet, 1)); + } } $old_data = $this->filterFieldRestrictions($entity, $old_data); //Restrict length of string fields, to save memory... - $old_data = array_map( - static function ($value) { - if (is_string($value)) { - return mb_strimwidth($value, 0, self::MAX_STRING_LENGTH, '...'); - } - - return $value; - }, $old_data); + $old_data = $this->fieldLengthRestrict($old_data); $logEntry->setOldData($old_data); + + if (!empty($new_data)) { + $new_data = $this->filterFieldRestrictions($entity, $new_data); + $new_data = $this->fieldLengthRestrict($new_data); + + $logEntry->setNewData($new_data); + } } /** diff --git a/src/Security/Voter/LogEntryVoter.php b/src/Security/Voter/LogEntryVoter.php index b03cd99f..f05de596 100644 --- a/src/Security/Voter/LogEntryVoter.php +++ b/src/Security/Voter/LogEntryVoter.php @@ -24,13 +24,28 @@ namespace App\Security\Voter; use App\Entity\LogSystem\AbstractLogEntry; use App\Entity\UserSystem\User; +use App\Services\UserSystem\PermissionManager; +use Doctrine\ORM\EntityManagerInterface; +use Symfony\Component\Security\Core\Security; class LogEntryVoter extends ExtendedVoter { - public const ALLOWED_OPS = ['read', 'delete']; + public const ALLOWED_OPS = ['read', 'show_details', 'delete']; + + private Security $security; + + public function __construct(PermissionManager $resolver, EntityManagerInterface $entityManager, Security $security) + { + parent::__construct($resolver, $entityManager); + $this->security = $security; + } protected function voteOnUser(string $attribute, $subject, User $user): bool { + if (!$subject instanceof AbstractLogEntry) { + throw new \InvalidArgumentException('The subject must be an instance of '.AbstractLogEntry::class); + } + if ('delete' === $attribute) { return $this->resolver->inherit($user, 'system', 'delete_logs') ?? false; } @@ -47,13 +62,24 @@ class LogEntryVoter extends ExtendedVoter return $this->resolver->inherit($user, 'system', 'show_logs') ?? false; } + if ('show_details' === $attribute) { + //To view details of a element related log entry, the user needs to be able to view the history of this entity type + $targetClass = $subject->getTargetClass(); + if (null !== $targetClass) { + return $this->security->isGranted('show_history', $targetClass) ?? false; + } + + //In other cases, this behaves like the read permission + return $this->voteOnUser('read', $subject, $user); + } + return false; } protected function supports($attribute, $subject): bool { if ($subject instanceof AbstractLogEntry) { - return in_array($subject, static::ALLOWED_OPS, true); + return in_array($attribute, static::ALLOWED_OPS, true); } return false; diff --git a/src/Services/ElementTypeNameGenerator.php b/src/Services/ElementTypeNameGenerator.php index 12c7f0d0..cbe8344f 100644 --- a/src/Services/ElementTypeNameGenerator.php +++ b/src/Services/ElementTypeNameGenerator.php @@ -24,6 +24,7 @@ namespace App\Services; use App\Entity\Attachments\Attachment; use App\Entity\Attachments\AttachmentType; +use App\Entity\Base\AbstractDBElement; use App\Entity\Contracts\NamedElementInterface; use App\Entity\ProjectSystem\Project; use App\Entity\LabelSystem\LabelProfile; @@ -43,17 +44,20 @@ use App\Entity\ProjectSystem\ProjectBOMEntry; use App\Entity\UserSystem\Group; use App\Entity\UserSystem\User; use App\Exceptions\EntityNotSupportedException; +use Doctrine\ORM\Mapping\Entity; use function get_class; use Symfony\Contracts\Translation\TranslatorInterface; class ElementTypeNameGenerator { protected TranslatorInterface $translator; + private EntityURLGenerator $entityURLGenerator; protected array $mapping; - public function __construct(TranslatorInterface $translator) + public function __construct(TranslatorInterface $translator, EntityURLGenerator $entityURLGenerator) { $this->translator = $translator; + $this->entityURLGenerator = $entityURLGenerator; //Child classes has to become before parent classes $this->mapping = [ @@ -132,4 +136,81 @@ class ElementTypeNameGenerator return $type.': '.$entity->getName(); } + + + /** + * Returns a HTML formatted label for the given enitity 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 + * @return string + */ + public function formatLabelHTMLForEntity(AbstractDBElement $entity, bool $include_associated = false): string + { + //The element is existing + if ($entity instanceof NamedElementInterface && !empty($entity->getName())) { + try { + $tmp = sprintf( + '%s', + $this->entityURLGenerator->infoURL($entity), + $this->getTypeNameCombination($entity, true) + ); + } catch (EntityNotSupportedException $exception) { + $tmp = $this->getTypeNameCombination($entity, true); + } + } else { //Target does not have a name + $tmp = sprintf( + '%s: %s', + $this->getLocalizedTypeLabel($entity), + $entity->getID() + ); + } + + //Add a hint to the associated element if possible + if ($include_associated) { + if ($entity instanceof Attachment && null !== $entity->getElement()) { + $on = $entity->getElement(); + } elseif ($entity instanceof AbstractParameter && null !== $entity->getElement()) { + $on = $entity->getElement(); + } elseif ($entity instanceof PartLot && null !== $entity->getPart()) { + $on = $entity->getPart(); + } elseif ($entity instanceof Orderdetail && null !== $entity->getPart()) { + $on = $entity->getPart(); + } elseif ($entity instanceof Pricedetail && null !== $entity->getOrderdetail() && null !== $entity->getOrderdetail()->getPart()) { + $on = $entity->getOrderdetail()->getPart(); + } elseif ($entity instanceof ProjectBOMEntry && null !== $entity->getProject()) { + $on = $entity->getProject(); + } + + if (isset($on) && is_object($on)) { + try { + $tmp .= sprintf( + ' (%s)', + $this->entityURLGenerator->infoURL($on), + $this->getTypeNameCombination($on, true) + ); + } catch (EntityNotSupportedException $exception) { + } + } + } + + return $tmp; + } + + /** + * Create a HTML formatted label for a deleted element of which we only know the class and the ID. + * Please note that it is not checked if the element really not exists anymore, so you have to do this yourself. + * @param string $class + * @param int $id + * @return string + */ + public function formatElementDeletedHTML(string $class, int $id): string + { + return sprintf( + '%s: %s [%s]', + $this->getLocalizedTypeLabel($class), + $id, + $this->translator->trans('log.target_deleted') + ); + } } diff --git a/src/Services/LogSystem/LogDataFormatter.php b/src/Services/LogSystem/LogDataFormatter.php new file mode 100644 index 00000000..1980c029 --- /dev/null +++ b/src/Services/LogSystem/LogDataFormatter.php @@ -0,0 +1,163 @@ +. + */ + +namespace App\Services\LogSystem; + +use App\Entity\LogSystem\AbstractLogEntry; +use App\Services\ElementTypeNameGenerator; +use Doctrine\ORM\EntityManagerInterface; +use Symfony\Contracts\Translation\TranslatorInterface; + +class LogDataFormatter +{ + private const STRING_MAX_LENGTH = 1024; + + private TranslatorInterface $translator; + private EntityManagerInterface $entityManager; + private ElementTypeNameGenerator $elementTypeNameGenerator; + + public function __construct(TranslatorInterface $translator, EntityManagerInterface $entityManager, ElementTypeNameGenerator $elementTypeNameGenerator) + { + $this->translator = $translator; + $this->entityManager = $entityManager; + $this->elementTypeNameGenerator = $elementTypeNameGenerator; + } + + /** + * Formats the given data of a log entry as HTML + * @param mixed $data + * @param AbstractLogEntry $logEntry + * @param string $fieldName + * @return string + */ + public function formatData($data, AbstractLogEntry $logEntry, string $fieldName): string + { + if (is_string($data)) { + $tmp = '"' . mb_strimwidth(htmlspecialchars($data), 0, self::STRING_MAX_LENGTH, ) . '"'; + + //Show special characters and line breaks + $tmp = preg_replace('/\n/', '\\n
', $tmp); + $tmp = preg_replace('/\r/', '\\r', $tmp); + $tmp = preg_replace('/\t/', '\\t', $tmp); + + return $tmp; + } + + if (is_bool($data)) { + return $this->formatBool($data); + } + + if (is_int($data)) { + return (string) $data; + } + + if (is_float($data)) { + return (string) $data; + } + + if (is_null($data)) { + return 'null'; + } + + if (is_array($data)) { + //If the array contains only one element with the key @id, it is a reference to another entity (foreign key) + if (isset($data['@id'])) { + return $this->formatForeignKey($data, $logEntry, $fieldName); + } + + //If the array contains a "date", "timezone_type" and "timezone" key, it is a DateTime object + if (isset($data['date'], $data['timezone_type'], $data['timezone'])) { + return $this->formatDateTime($data); + } + + + return $this->formatJSON($data); + } + + + throw new \RuntimeException('Type of $data not supported (' . gettype($data) . ')'); + } + + private function formatJSON(array $data): string + { + $json = htmlspecialchars(json_encode($data, JSON_PRETTY_PRINT), ENT_QUOTES | ENT_SUBSTITUTE); + + return sprintf( + '
', + $json + ); + } + + private function formatForeignKey(array $data, AbstractLogEntry $logEntry, string $fieldName): string + { + //Extract the id from the @id key + $id = $data['@id']; + + try { + //Retrieve the class type from the logEntry and retrieve the doctrine metadata + $classMetadata = $this->entityManager->getClassMetadata($logEntry->getTargetClass()); + $fkTargetClass = $classMetadata->getAssociationTargetClass($fieldName); + + //Try to retrieve the entity from the database + $entity = $this->entityManager->getRepository($fkTargetClass)->find($id); + + //If the entity was found, return a label for this entity + if ($entity) { + return $this->elementTypeNameGenerator->formatLabelHTMLForEntity($entity, true); + } else { //Otherwise the entity was deleted, so return the id + return $this->elementTypeNameGenerator->formatElementDeletedHTML($fkTargetClass, $id); + } + + + } catch (\InvalidArgumentException|\ReflectionException $exception) { + return 'unknown target class: ' . $id; + } + } + + private function formatDateTime(array $data): string + { + if (!isset($data['date'], $data['timezone_type'], $data['timezone'])) { + return 'unknown DateTime format'; + } + + $date = $data['date']; + $timezoneType = $data['timezone_type']; + $timezone = $data['timezone']; + + if (!is_string($date) || !is_int($timezoneType) || !is_string($timezone)) { + return 'unknown DateTime format'; + } + + try { + $dateTime = new \DateTime($date, new \DateTimeZone($timezone)); + } catch (\Exception $exception) { + return 'unknown DateTime format'; + } + + //Format it to the users locale + $formatter = new \IntlDateFormatter(null, \IntlDateFormatter::MEDIUM, \IntlDateFormatter::MEDIUM); + return $formatter->format($dateTime); + } + + private function formatBool(bool $data): string + { + return $data ? $this->translator->trans('true') : $this->translator->trans('false'); + } +} \ No newline at end of file diff --git a/src/Services/LogSystem/LogDiffFormatter.php b/src/Services/LogSystem/LogDiffFormatter.php new file mode 100644 index 00000000..92b6d814 --- /dev/null +++ b/src/Services/LogSystem/LogDiffFormatter.php @@ -0,0 +1,76 @@ +. + */ + +namespace App\Services\LogSystem; + +use Jfcherng\Diff\DiffHelper; + +class LogDiffFormatter +{ + /** + * Format the diff between the given data, depending on the type of the data. + * If the diff is not possible, an empty string is returned. + * @param $old_data + * @param $new_data + * @return string + */ + public function formatDiff($old_data, $new_data): string + { + if (is_string($old_data) && is_string($new_data)) { + return $this->diffString($old_data, $new_data); + } + + if (is_numeric($old_data) && is_numeric($new_data)) { + return $this->diffNumeric($old_data, $new_data); + } + + return ''; + } + + private function diffString(string $old_data, string $new_data): string + { + return DiffHelper::calculate($old_data, $new_data, 'Combined', + [ //Diff options + 'context' => 2, + ], + [ //Render options + 'detailLevel' => 'char', + 'showHeader' => false, + ]); + } + + private function diffNumeric($old_data, $new_data): string + { + if ((!is_numeric($old_data)) || (!is_numeric($new_data))) { + throw new \InvalidArgumentException('The given data is not numeric.'); + } + + $difference = $new_data - $old_data; + + //Positive difference + if ($difference > 0) { + return sprintf('+%s', $difference); + } else if ($difference < 0) { + return sprintf('%s', $difference); + } else { + return sprintf('%s', $difference); + } + } +} \ No newline at end of file diff --git a/src/Services/LogSystem/LogEntryExtraFormatter.php b/src/Services/LogSystem/LogEntryExtraFormatter.php index 2950842b..8ec328d0 100644 --- a/src/Services/LogSystem/LogEntryExtraFormatter.php +++ b/src/Services/LogSystem/LogEntryExtraFormatter.php @@ -131,9 +131,9 @@ class LogEntryExtraFormatter if (($context instanceof LogWithEventUndoInterface) && $context->isUndoEvent()) { if ('undo' === $context->getUndoMode()) { - $array['log.undo_mode.undo'] = (string) $context->getUndoEventID(); + $array['log.undo_mode.undo'] = '#' . $context->getUndoEventID(); } elseif ('revert' === $context->getUndoMode()) { - $array['log.undo_mode.revert'] = (string) $context->getUndoEventID(); + $array['log.undo_mode.revert'] = '#' . $context->getUndoEventID(); } } diff --git a/src/Services/LogSystem/LogLevelHelper.php b/src/Services/LogSystem/LogLevelHelper.php new file mode 100644 index 00000000..926531da --- /dev/null +++ b/src/Services/LogSystem/LogLevelHelper.php @@ -0,0 +1,80 @@ +. + */ + +namespace App\Services\LogSystem; + +use App\Entity\LogSystem\AbstractLogEntry; +use Psr\Log\LogLevel; + +class LogLevelHelper +{ + /** + * Returns the FontAwesome icon class for the given log level. + * This returns just the specific icon class (so 'fa-info' for example). + * @param string $logLevel The string representation of the log level (one of the LogLevel::* constants) + * @return string + */ + public function logLevelToIconClass(string $logLevel): string + { + switch ($logLevel) { + case LogLevel::DEBUG: + return 'fa-bug'; + case LogLevel::INFO: + return 'fa-info'; + case LogLevel::NOTICE: + return 'fa-flag'; + case LogLevel::WARNING: + return 'fa-exclamation-circle'; + case LogLevel::ERROR: + return 'fa-exclamation-triangle'; + case LogLevel::CRITICAL: + return 'fa-bolt'; + case LogLevel::ALERT: + return 'fa-radiation'; + case LogLevel::EMERGENCY: + return 'fa-skull-crossbones'; + default: + return 'fa-question-circle'; + } + } + + /** + * Returns the Bootstrap table color class for the given log level. + * @param string $logLevel The string representation of the log level (one of the LogLevel::* constants) + * @return string The table color class (one of the 'table-*' classes) + */ + public function logLevelToTableColorClass(string $logLevel): string + { + + switch ($logLevel) { + case LogLevel::EMERGENCY: + case LogLevel::ALERT: + case LogLevel::CRITICAL: + case LogLevel::ERROR: + return 'table-danger'; + case LogLevel::WARNING: + return 'table-warning'; + case LogLevel::NOTICE: + return 'table-info'; + default: + return ''; + } + } +} \ No newline at end of file diff --git a/src/Services/LogSystem/LogTargetHelper.php b/src/Services/LogSystem/LogTargetHelper.php new file mode 100644 index 00000000..63946a0f --- /dev/null +++ b/src/Services/LogSystem/LogTargetHelper.php @@ -0,0 +1,94 @@ +. + */ + +namespace App\Services\LogSystem; + +use App\Entity\Attachments\Attachment; +use App\Entity\Base\AbstractDBElement; +use App\Entity\Contracts\NamedElementInterface; +use App\Entity\LogSystem\AbstractLogEntry; +use App\Entity\LogSystem\UserNotAllowedLogEntry; +use App\Entity\Parameters\AbstractParameter; +use App\Entity\Parts\PartLot; +use App\Entity\PriceInformations\Orderdetail; +use App\Entity\PriceInformations\Pricedetail; +use App\Entity\ProjectSystem\ProjectBOMEntry; +use App\Exceptions\EntityNotSupportedException; +use App\Repository\LogEntryRepository; +use App\Services\ElementTypeNameGenerator; +use App\Services\EntityURLGenerator; +use Doctrine\ORM\EntityManagerInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; +use Symfony\Contracts\Translation\TranslatorInterface; + +class LogTargetHelper +{ + protected EntityManagerInterface $em; + protected LogEntryRepository $entryRepository; + protected EntityURLGenerator $entityURLGenerator; + protected ElementTypeNameGenerator $elementTypeNameGenerator; + protected TranslatorInterface $translator; + + public function __construct(EntityManagerInterface $entityManager, EntityURLGenerator $entityURLGenerator, + ElementTypeNameGenerator $elementTypeNameGenerator, TranslatorInterface $translator) + { + $this->em = $entityManager; + $this->entryRepository = $entityManager->getRepository(AbstractLogEntry::class); + + $this->entityURLGenerator = $entityURLGenerator; + $this->elementTypeNameGenerator = $elementTypeNameGenerator; + $this->translator = $translator; + } + + private function configureOptions(OptionsResolver $resolver): self + { + $resolver->setDefault('show_associated', true); + $resolver->setDefault('showAccessDeniedPath', true); + + return $this; + } + + public function formatTarget(AbstractLogEntry $context, array $options = []): string + { + $optionsResolver = new OptionsResolver(); + $this->configureOptions($optionsResolver); + $options = $optionsResolver->resolve($options); + + if ($context instanceof UserNotAllowedLogEntry && $options['showAccessDeniedPath']) { + return htmlspecialchars($context->getPath()); + } + + /** @var AbstractLogEntry $context */ + $target = $this->entryRepository->getTargetElement($context); + + //If the target is null and the context has a target, that means that the target was deleted. Show it that way. + if ($target === null) { + if ($context->hasTarget()) { + return $this->elementTypeNameGenerator->formatElementDeletedHTML($context->getTargetClass(), + $context->getTargetId()); + } + //If no target is set, we can't do anything + return ''; + } + + //Otherwise we can return a label for the target + return $this->elementTypeNameGenerator->formatLabelHTMLForEntity($target, $options['show_associated']); + } +} \ No newline at end of file diff --git a/src/Services/LogSystem/TimeTravel.php b/src/Services/LogSystem/TimeTravel.php index 99bda007..daeed7ea 100644 --- a/src/Services/LogSystem/TimeTravel.php +++ b/src/Services/LogSystem/TimeTravel.php @@ -194,7 +194,7 @@ class TimeTravel public function applyEntry(AbstractDBElement $element, TimeTravelInterface $logEntry): void { //Skip if this does not provide any info... - if (!$logEntry->hasOldDataInformations()) { + if (!$logEntry->hasOldDataInformation()) { return; } if (!$element instanceof TimeStampableInterface) { diff --git a/src/Twig/EntityExtension.php b/src/Twig/EntityExtension.php index 6d477d88..c892c8f1 100644 --- a/src/Twig/EntityExtension.php +++ b/src/Twig/EntityExtension.php @@ -71,6 +71,8 @@ final class EntityExtension extends AbstractExtension new TwigFunction('entity_type', [$this, 'getEntityType']), /* Returns the URL to the given entity */ new TwigFunction('entity_url', [$this, 'generateEntityURL']), + /* Returns the URL to the given entity in timetravel mode */ + new TwigFunction('timetravel_url', [$this->entityURLGenerator, 'timetravelURL']), /* Generates a JSON array of the given tree */ new TwigFunction('tree_data', [$this, 'treeData']), diff --git a/src/Twig/LogExtension.php b/src/Twig/LogExtension.php new file mode 100644 index 00000000..a56b9275 --- /dev/null +++ b/src/Twig/LogExtension.php @@ -0,0 +1,47 @@ +. + */ + +namespace App\Twig; + +use App\Services\LogSystem\LogDataFormatter; +use App\Services\LogSystem\LogDiffFormatter; +use Twig\Extension\AbstractExtension; +use Twig\TwigFunction; + +final class LogExtension extends AbstractExtension +{ + + private LogDataFormatter $logDataFormatter; + private LogDiffFormatter $logDiffFormatter; + + public function __construct(LogDataFormatter $logDataFormatter, LogDiffFormatter $logDiffFormatter) + { + $this->logDataFormatter = $logDataFormatter; + $this->logDiffFormatter = $logDiffFormatter; + } + + public function getFunctions() + { + return [ + new TwigFunction('format_log_data', [$this->logDataFormatter, 'formatData'], ['is_safe' => ['html']]), + new TwigFunction('format_log_diff', [$this->logDiffFormatter, 'formatDiff'], ['is_safe' => ['html']]), + ]; + } +} \ No newline at end of file diff --git a/templates/log_system/details/_extra_database_updated.html.twig b/templates/log_system/details/_extra_database_updated.html.twig new file mode 100644 index 00000000..7ee42c4f --- /dev/null +++ b/templates/log_system/details/_extra_database_updated.html.twig @@ -0,0 +1,23 @@ +{# @var entry \App\Entity\LogSystem\DatabaseUpdatedLogEntry #} + +{% if entry.successful %} +
+ + {% trans %}log.database_updated.success{% endtrans %} +
+{% else %} +
+ + {% trans %}log.database_updated.failed{% endtrans %} +
+{% endif %} + + + + {{ entry.oldVersion }} + + + + + {{ entry.newVersion }} + \ No newline at end of file diff --git a/templates/log_system/details/_extra_element_created.html.twig b/templates/log_system/details/_extra_element_created.html.twig new file mode 100644 index 00000000..8f7ce457 --- /dev/null +++ b/templates/log_system/details/_extra_element_created.html.twig @@ -0,0 +1,11 @@ +{# @var entry \App\Entity\LogSystem\ElementCreatedLogEntry #} + +{% import "log_system/details/helper.macro.html.twig" as log_helper %} + +{{ log_helper.comment_field(entry) }} +{% if entry.creationInstockValue %} +

+ {% trans %}log.element_created.original_instock{% endtrans %}: + {{ entry.creationInstockValue }} +

+{% endif %} \ No newline at end of file diff --git a/templates/log_system/details/_extra_element_deleted.html.twig b/templates/log_system/details/_extra_element_deleted.html.twig new file mode 100644 index 00000000..ceb9e9e2 --- /dev/null +++ b/templates/log_system/details/_extra_element_deleted.html.twig @@ -0,0 +1,8 @@ +{# @var entry \App\Entity\LogSystem\ElementDeletedLogEntry #} + +{% import "log_system/details/helper.macro.html.twig" as log_helper %} + + + +{{ log_helper.comment_field(entry) }} +{{ log_helper.data_change_table(entry) }} \ No newline at end of file diff --git a/templates/log_system/details/_extra_element_edited.html.twig b/templates/log_system/details/_extra_element_edited.html.twig new file mode 100644 index 00000000..f0c2bc75 --- /dev/null +++ b/templates/log_system/details/_extra_element_edited.html.twig @@ -0,0 +1,11 @@ +{# @var entry \App\Entity\LogSystem\ElementDeletedLogEntry #} + +{% import "log_system/details/helper.macro.html.twig" as log_helper %} + +{% if entry.undoEvent %} + Test +{% endif %} + +{{ log_helper.comment_field(entry) }} + +{{ log_helper.data_change_table(entry) }} diff --git a/templates/log_system/details/_extra_security_event.html.twig b/templates/log_system/details/_extra_security_event.html.twig new file mode 100644 index 00000000..fa023db6 --- /dev/null +++ b/templates/log_system/details/_extra_security_event.html.twig @@ -0,0 +1,9 @@ +{# @var entry \App\Entity\LogSystem\UserLoginLogEntry #} + +IP:   + + + {{ entry.iPAddress }} + + +

{% trans %}log.user_login.ip_anonymize_hint{% endtrans %}

\ No newline at end of file diff --git a/templates/log_system/details/_extra_user_login.html.twig b/templates/log_system/details/_extra_user_login.html.twig new file mode 100644 index 00000000..4c7e8680 --- /dev/null +++ b/templates/log_system/details/_extra_user_login.html.twig @@ -0,0 +1,9 @@ +{# @var entry \App\Entity\LogSystem\UserLoginLogEntry #} + +{% trans %}log.user_login.login_from_ip{% endtrans %}:   + + + {{ entry.iPAddress }} + + +

{% trans %}log.user_login.ip_anonymize_hint{% endtrans %}

\ No newline at end of file diff --git a/templates/log_system/details/_extra_user_not_allowed.html.twig b/templates/log_system/details/_extra_user_not_allowed.html.twig new file mode 100644 index 00000000..43ab1500 --- /dev/null +++ b/templates/log_system/details/_extra_user_not_allowed.html.twig @@ -0,0 +1,4 @@ +{# @var entry \App\Entity\LogSystem\UserNotAllowedLogEntry #} + +{% trans %}log.user_not_allowed.unauthorized_access_attempt_to{% endtrans %}:  {{ entry.path }} +

{% trans %}log.user_not_allowed.hint{% endtrans %}

\ No newline at end of file diff --git a/templates/log_system/details/helper.macro.html.twig b/templates/log_system/details/helper.macro.html.twig new file mode 100644 index 00000000..cc6fedd6 --- /dev/null +++ b/templates/log_system/details/helper.macro.html.twig @@ -0,0 +1,140 @@ +{% macro undo_buttons(entry, target_element) %} + {# @var entry \App\Entity\LogSystem\ElementEditedLogEntry|\App\Entity\LogSystem\ElementDeletedLogEntry entry #} + {% set disabled = not is_granted('revert_element', entry.targetClass) %} + + {% if entry is instanceof('App\\Entity\\LogSystem\\CollectionElementDeleted') + or (entry is instanceof('App\\Entity\\LogSystem\\ElementDeletedLogEntry') and entry.hasOldDataInformation) %} + + {% set icon = 'fa-trash-restore' %} + {% set title = 'log.undo.undelete'|trans %} + {% set title_short = 'log.undo.undelete.short'|trans %} + + {% elseif entry is instanceof('App\\Entity\\LogSystem\\ElementCreatedLogEntry') + or (entry is instanceof('App\\Entity\\LogSystem\\ElementEditedLogEntry') and entry.hasOldDataInformation) %} + + {% set icon = 'fa-undo' %} + {% set title = 'log.undo.undo'|trans %} + {% set title_short = 'log.undo.undo.short'|trans %} + {% endif %} + +
+ + + +
+ + + + {# View button #} + {% if target_element and ((attribute(entry, 'oldDataInformation') is defined and entry.oldDataInformation) + or entry is instanceof('App\\Entity\\LogSystem\\CollectionElementDeleted')) %} + + {% trans %}log.view_version{% endtrans %} + + {% endif %} +
+
+{% endmacro %} + + +{% macro comment_field(entry) %} + {# @var entry \App\Entity\Contracts\LogWithComment #} +

+ {% trans %}edit.log_comment{% endtrans %}: + {% if entry.comment %} + {{ entry.comment }} + {% else %} + {% trans %}log.no_comment{% endtrans %} + {% endif %} +

+{% endmacro %} + +{% macro data_change_table(entry) %} + {# @var entry \App\Entity\LogSystem\ElementEditedLogEntry|\App\Entity\LogSystem\ElementDeletedLogEntry entry #} + + {% set fields, old_data, new_data = {}, {}, {} %} + + {# For log entries where only the changed fields are saved, this is the last executed assignment #} + {% if attribute(entry, 'changedFieldInfo') is defined and entry.changedFieldsInfo %} + {% set fields = entry.changedFields %} + {% endif %} + + {# For log entries, where we know the old data, this is the last exectuted assignment #} + {% if attribute(entry, 'oldDataInformation') is defined and entry.oldDataInformation %} + {# We have to use the keys of oldData here, as changedFields might not be available #} + {% set fields = entry.oldData | keys %} + {% set old_data = entry.oldData %} + {% endif %} + + {# For log entries, where we have new data, we define it #} + {% if attribute(entry, 'newDataInformation') is defined and entry.newDataInformation %} + {# We have to use the keys of oldData here, as changedFields might not be available #} + {% set fields = entry.newData | keys %} + {% set new_data = entry.newData %} + {% endif %} + + {% if fields is not empty %} + + + + + {% if old_data is not empty %} + + {% endif %} + {% if new_data is not empty %} + + {% endif %} + {% if new_data is not empty and old_data is not empty %} {# Diff column #} + + {% endif %} + + + + {% for field in fields %} + + + {% if old_data is not empty %} + + {% endif %} + {% if new_data is not empty %} + + {% endif %} + + {% if new_data is not empty and old_data is not empty %} + + {% endif %} + + {% endfor %} + +
{% trans %}log.element_changed.field{% endtrans %}{% trans %}log.element_changed.data_before{% endtrans %}{% trans %}log.element_changed.data_after{% endtrans %}{% trans %}log.element_changed.diff{% endtrans %}
+ {% set trans_key = 'log.element_edited.changed_fields.'~field %} + {# If the translation key is not found, the translation key is returned, and we dont show the translation #} + {% if trans_key|trans != trans_key %} + {{ ('log.element_edited.changed_fields.'~field) | trans }} + ({{ field }}) + {% else %} + {{ field }} + {% endif %} + + + {% if old_data[field] is defined %} + {{ format_log_data(old_data[field], entry, field) }} + {% endif %} + + {% if new_data[field] is defined %} + {{ format_log_data(new_data[field], entry, field) }} + {% endif %} + + {% if new_data[field] is defined and old_data[field] is defined %} + {{ format_log_diff(old_data[field], new_data[field]) }} + {% endif %} +
+ {% endif %} +{% endmacro %} \ No newline at end of file diff --git a/templates/log_system/details/log_details.html.twig b/templates/log_system/details/log_details.html.twig new file mode 100644 index 00000000..2cd8a968 --- /dev/null +++ b/templates/log_system/details/log_details.html.twig @@ -0,0 +1,115 @@ +{% extends "main_card.html.twig" %} + +{% import "helper.twig" as helper %} +{% import "log_system/details/helper.macro.html.twig" as log_helper %} + +{% block title %} + {% trans %}log.details.title{% endtrans %}: + {{ ('log.type.' ~ log_entry.type) | trans }} ({{ log_entry.timestamp | format_datetime('short') }}) +{% endblock %} + +{% block card_title %} + + {% trans %}log.details.title{% endtrans %}: + {{ ('log.type.' ~ log_entry.type) | trans }} ({{ log_entry.timestamp | format_datetime('short') }}) + ID: {{ log_entry.iD }} +{% endblock %} + +{% block card_body %} + + + + + + + + + + + + + + + + + + + + +
{% trans %}log.timestamp{% endtrans %}{{ log_entry.timestamp | format_datetime('full') }}
{% trans %}log.type{% endtrans %} + {{ ('log.type.' ~ log_entry.type) | trans }} + {% if log_entry.type == 'part_stock_changed' %} + ({{ ('log.part_stock_changed.' ~ log_entry.instockChangeType)|trans }}) + {% endif %} + + {% if log_entry is instanceof('App\\Entity\\Contracts\\LogWithEventUndoInterface') and log_entry.undoEvent %} + ({{ ('log.undo_mode.' ~ log_entry.undoMode)|trans }}: #{{ log_entry.UndoEventID }}) + {% endif %} +
{% trans %}log.level{% endtrans %} + + {{ ('log.level.'~ log_entry.levelString)|trans }} +
{% trans %}log.user{% endtrans %} + + {% if log_entry.cLIEntry %} + + {{ log_entry.cLIUsername }} ({% trans %}log.cli_user{% endtrans %}) + {% else %} + {% if log_entry.user %} + {{ helper.user_icon_link(log_entry.user) }} (@{{ log_entry.user.username }}) + {% else %} + @{{ log_entry.username }} ({% trans %}log.target_deleted{% endtrans %} + {% endif %} + {% endif %} +
{% trans %}log.target{% endtrans %}{{ target_html|raw }}
+ +
+ +
+
+ {% if log_entry is instanceof('App\\Entity\\LogSystem\\CollectionElementDeleted') + or log_entry is instanceof('App\\Entity\\LogSystem\\ElementDeletedLogEntry') + or log_entry is instanceof('App\\Entity\\LogSystem\\ElementCreatedLogEntry') + or log_entry is instanceof('App\\Entity\\LogSystem\\ElementEditedLogEntry') + %} + {{ log_helper.undo_buttons(log_entry, target_element) }} + {% endif %} +
+ +
+
+ + + + + +
+
+
+ + {# This assignment is to improve autocomplete on the subpages, as PHPstorm ignores typehints for log_entry #} + {% set entry = log_entry %} + {% if log_entry is instanceof('App\\Entity\\LogSystem\\DatabaseUpdatedLogEntry') %} + {% include "log_system/details/_extra_database_updated.html.twig" %} + {% elseif log_entry is instanceof('App\\Entity\\LogSystem\\ElementCreatedLogEntry') %} + {% include "log_system/details/_extra_element_created.html.twig" %} + {% elseif log_entry is instanceof('App\\Entity\\LogSystem\\ElementEditedLogEntry') %} + {% include "log_system/details/_extra_element_edited.html.twig" %} + {% elseif log_entry is instanceof('App\\Entity\\LogSystem\\ElementDeletedLogEntry') %} + {% include "log_system/details/_extra_element_deleted.html.twig" %} + {% elseif log_entry is instanceof('App\\Entity\\LogSystem\\UserLoginLogEntry') + or log_entry is instanceof('App\\Entity\\LogSystem\\UserLogoutLogEntry') %} + {% include "log_system/details/_extra_user_login.html.twig" %} + {% elseif log_entry is instanceof('App\\Entity\\LogSystem\\UserNotAllowedLogEntry') %} + {% include "log_system/details/_extra_user_not_allowed.html.twig" %} + {% elseif log_entry is instanceof('App\\Entity\\LogSystem\\SecurityEventLogEntry') %} + {% include "log_system/details/_extra_security_event.html.twig" %} + {% else %} + {{ extra_html | raw }} + {% endif %} +
+{% endblock %} \ No newline at end of file diff --git a/translations/messages.de.xlf b/translations/messages.de.xlf index 6a939183..9c469ea7 100644 --- a/translations/messages.de.xlf +++ b/translations/messages.de.xlf @@ -1,13 +1,13 @@ - + 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 @@ -17,7 +17,7 @@ Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:12 new - + attachment_type.edit Bearbeite Dateityp @@ -27,7 +27,7 @@ Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:16 new - + attachment_type.new Neuer Dateityp @@ -46,7 +46,7 @@ templates\base.html.twig:197 templates\base.html.twig:225 - + category.labelp Kategorien @@ -59,7 +59,7 @@ Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:11 templates\AdminPages\CategoryAdmin.html.twig:8 - + admin.options Optionen @@ -72,7 +72,7 @@ Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 templates\AdminPages\CategoryAdmin.html.twig:9 - + admin.advanced Erweitert @@ -82,7 +82,7 @@ Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:13 new - + category.edit Bearbeite Kategorie @@ -92,7 +92,7 @@ Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:17 new - + category.new Neue Kategorie @@ -102,7 +102,7 @@ Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - + currency.caption Währung @@ -112,7 +112,7 @@ Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - + currency.iso_code.caption ISO Code @@ -122,7 +122,7 @@ Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - + currency.symbol.caption Währungssymbol @@ -132,7 +132,7 @@ Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:29 new - + currency.edit Bearbeite Währung @@ -142,7 +142,7 @@ Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:33 new - + currency.new Neue Währung @@ -153,7 +153,7 @@ Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 templates\AdminPages\DeviceAdmin.html.twig:4 - + project.caption Projekte @@ -163,7 +163,7 @@ Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 new - + project.edit Bearbeite Projekt @@ -173,7 +173,7 @@ Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:12 new - + project.new Neues Projekt @@ -196,7 +196,7 @@ templates\base.html.twig:206 templates\base.html.twig:237 - + search.placeholder Suche @@ -212,7 +212,7 @@ templates\base.html.twig:193 templates\base.html.twig:221 - + expandAll Alle ausklappen @@ -228,7 +228,7 @@ templates\base.html.twig:194 templates\base.html.twig:222 - + reduceAll Alle einklappen @@ -240,9 +240,9 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - + part.info.timetravel_hint - Dies ist wie das Bauteil bevor dem %timestamp% aussah. <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.]]> @@ -251,7 +251,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 templates\AdminPages\EntityAdminBase.html.twig:42 - + standard.label Eigenschaften @@ -262,7 +262,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 templates\AdminPages\EntityAdminBase.html.twig:43 - + infos.label Informationen @@ -273,7 +273,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 new - + history.label Historie @@ -284,7 +284,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 templates\AdminPages\EntityAdminBase.html.twig:45 - + export.label Exportieren @@ -295,7 +295,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 templates\AdminPages\EntityAdminBase.html.twig:47 - + import_export.label Import / Export @@ -305,7 +305,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - + mass_creation.label Masseneingabe @@ -316,7 +316,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 templates\AdminPages\EntityAdminBase.html.twig:59 - + admin.common Allgemein @@ -326,7 +326,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - + admin.attachments Dateianhänge @@ -335,7 +335,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:90 - + admin.parameters Parameter @@ -346,7 +346,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:167 templates\AdminPages\EntityAdminBase.html.twig:142 - + export_all.label Alles exportieren @@ -356,7 +356,7 @@ 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. @@ -367,7 +367,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 templates\AdminPages\EntityAdminBase.html.twig:35 - + edit.caption Bearbeite Element "%name" @@ -378,7 +378,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 templates\AdminPages\EntityAdminBase.html.twig:37 - + new.caption Neues Element @@ -393,7 +393,7 @@ templates\base.html.twig:199 templates\base.html.twig:227 - + footprint.labelp Footprints @@ -403,7 +403,7 @@ Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:13 new - + footprint.edit Bearbeite Footprint @@ -413,7 +413,7 @@ Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:17 new - + footprint.new Neuer Footprint @@ -423,7 +423,7 @@ Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - + group.edit.caption Gruppen @@ -435,7 +435,7 @@ Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - + user.edit.permissions Berechtigungen @@ -445,7 +445,7 @@ Part-DB1\templates\AdminPages\GroupAdmin.html.twig:24 new - + group.edit Bearbeite Gruppe @@ -455,7 +455,7 @@ Part-DB1\templates\AdminPages\GroupAdmin.html.twig:28 new - + group.new Neue Gruppe @@ -464,7 +464,7 @@ Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:4 - + label_profile.caption Labelprofile @@ -473,7 +473,7 @@ Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:8 - + label_profile.advanced Erweitert @@ -482,7 +482,7 @@ Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:9 - + label_profile.comment Notizen @@ -492,7 +492,7 @@ Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:55 new - + label_profile.edit Bearbeite Labelprofil @@ -502,7 +502,7 @@ Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:59 new - + label_profile.new Neues Labelprofil @@ -513,7 +513,7 @@ Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 templates\AdminPages\ManufacturerAdmin.html.twig:4 - + manufacturer.caption Hersteller @@ -523,7 +523,7 @@ Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:8 new - + manufacturer.edit Bearbeite Hersteller @@ -533,7 +533,7 @@ Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:12 new - + manufacturer.new Neuer Hersteller @@ -543,7 +543,7 @@ Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - + measurement_unit.caption Maßeinheit @@ -558,7 +558,7 @@ templates\base.html.twig:198 templates\base.html.twig:226 - + storelocation.labelp Lagerorte @@ -568,7 +568,7 @@ Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:32 new - + storelocation.edit Bearbeite Lagerort @@ -578,7 +578,7 @@ Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:36 new - + storelocation.new Neuer Lagerort @@ -589,7 +589,7 @@ Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 templates\AdminPages\SupplierAdmin.html.twig:4 - + supplier.caption Lieferanten @@ -599,7 +599,7 @@ Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 new - + supplier.edit Bearbeite Lieferant @@ -609,7 +609,7 @@ Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:20 new - + supplier.new Neuer Lieferant @@ -619,7 +619,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - + user.edit.caption Benutzer @@ -629,7 +629,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - + user.edit.configuration Konfiguration @@ -639,7 +639,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - + user.edit.password Passwort @@ -649,7 +649,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - + user.edit.tfa.caption Zwei-Faktor-Authentifizierung @@ -659,7 +659,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - + user.edit.tfa.google_active Authentifizierungsapp aktiv @@ -673,7 +673,7 @@ Part-DB1\templates\Users\backup_codes.html.twig:15 Part-DB1\templates\Users\_2fa_settings.html.twig:95 - + tfa_backup.remaining_tokens Verbleibende Backupcodes @@ -687,7 +687,7 @@ Part-DB1\templates\Users\backup_codes.html.twig:17 Part-DB1\templates\Users\_2fa_settings.html.twig:96 - + tfa_backup.generation_date Erzeugungsdatum der Backupcodes @@ -699,7 +699,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - + user.edit.tfa.disabled Methode deaktiviert @@ -709,7 +709,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - + user.edit.tfa.u2f_keys_count Aktive Sicherheitsschlüssel @@ -719,7 +719,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - + user.edit.tfa.disable_tfa_title Wirklich fortfahren? @@ -729,11 +729,11 @@ 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> -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!]]>
@@ -741,7 +741,7 @@ 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 @@ -751,7 +751,7 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs Part-DB1\templates\AdminPages\UserAdmin.html.twig:85 new - + user.edit Bearbeite Benutzer @@ -761,7 +761,7 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs Part-DB1\templates\AdminPages\UserAdmin.html.twig:89 new - + user.new Neuer Benutzer @@ -774,7 +774,7 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs Part-DB1\templates\Parts\edit\_attachments.html.twig:4 Part-DB1\templates\Parts\info\_attachments_info.html.twig:63 - + attachment.delete Löschen @@ -788,7 +788,7 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs Part-DB1\templates\Parts\edit\_attachments.html.twig:38 Part-DB1\src\DataTables\AttachmentDataTable.php:159 - + attachment.external Extern @@ -800,7 +800,7 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs Part-DB1\templates\AdminPages\_attachments.html.twig:47 Part-DB1\templates\Parts\edit\_attachments.html.twig:45 - + attachment.preview.alt Thumbnail des Dateianhanges @@ -814,7 +814,7 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs Part-DB1\templates\Parts\edit\_attachments.html.twig:48 Part-DB1\templates\Parts\info\_attachments_info.html.twig:45 - + attachment.view Anzeigen @@ -830,7 +830,7 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs Part-DB1\templates\Parts\info\_attachments_info.html.twig:38 Part-DB1\src\DataTables\AttachmentDataTable.php:166 - + attachment.file_not_found Datei nicht gefunden @@ -842,7 +842,7 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs Part-DB1\templates\Parts\info\_attachments_info.html.twig:48 Part-DB1\templates\Parts\edit\_attachments.html.twig:62 - + attachment.secure Privat @@ -854,7 +854,7 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs Part-DB1\templates\AdminPages\_attachments.html.twig:77 Part-DB1\templates\Parts\edit\_attachments.html.twig:75 - + attachment.create Dateianhang hinzufügen @@ -868,7 +868,7 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs 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! @@ -879,7 +879,7 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs 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? @@ -890,7 +890,7 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs 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! @@ -903,7 +903,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_delete_form.html.twig:11 templates\AdminPages\_delete_form.html.twig:9 - + entity.delete Element löschen @@ -918,7 +918,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\src\Form\Part\PartBaseType.php:267 new - + edit.log_comment Änderungskommentar @@ -929,7 +929,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_delete_form.html.twig:24 templates\AdminPages\_delete_form.html.twig:12 - + entity.delete.recursive Rekursiv (alle Unterelemente) löschen @@ -938,7 +938,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_duplicate.html.twig:3 - + entity.duplicate Element duplizieren @@ -952,7 +952,7 @@ Subelemente werden beim Löschen nach oben verschoben. templates\AdminPages\_export_form.html.twig:4 src\Form\ImportType.php:67 - + export.format Dateiformat @@ -963,7 +963,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_export_form.html.twig:16 templates\AdminPages\_export_form.html.twig:16 - + export.level Ausführlichkeit @@ -974,7 +974,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_export_form.html.twig:19 templates\AdminPages\_export_form.html.twig:19 - + export.level.simple Einfach @@ -985,7 +985,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_export_form.html.twig:20 templates\AdminPages\_export_form.html.twig:20 - + export.level.extended Erweitert @@ -996,7 +996,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_export_form.html.twig:21 templates\AdminPages\_export_form.html.twig:21 - + export.level.full Vollständig @@ -1007,7 +1007,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_export_form.html.twig:31 templates\AdminPages\_export_form.html.twig:31 - + export.include_children Unterelemente auch exportieren @@ -1018,7 +1018,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_export_form.html.twig:39 templates\AdminPages\_export_form.html.twig:39 - + export.btn Exportieren @@ -1037,7 +1037,7 @@ Subelemente werden beim Löschen nach oben verschoben. templates\Parts\edit_part_info.html.twig:12 templates\Parts\show_part_info.html.twig:11 - + id.label ID @@ -1061,7 +1061,7 @@ Subelemente werden beim Löschen nach oben verschoben. templates\AdminPages\EntityAdminBase.html.twig:101 templates\Parts\show_part_info.html.twig:248 - + createdAt Erstellt am @@ -1079,7 +1079,7 @@ Subelemente werden beim Löschen nach oben verschoben. templates\AdminPages\EntityAdminBase.html.twig:114 templates\Parts\show_part_info.html.twig:263 - + lastModified Zuletzt bearbeitet @@ -1089,7 +1089,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_info.html.twig:38 Part-DB1\templates\AdminPages\_info.html.twig:38 - + entity.info.parts_count Bauteile mit diesem Element @@ -1100,7 +1100,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\helper.twig:125 Part-DB1\templates\Parts\edit\_specifications.html.twig:6 - + specifications.property Parameter @@ -1110,7 +1110,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_parameters.html.twig:7 Part-DB1\templates\Parts\edit\_specifications.html.twig:7 - + specifications.symbol Symbol @@ -1120,7 +1120,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_parameters.html.twig:8 Part-DB1\templates\Parts\edit\_specifications.html.twig:8 - + specifications.value_min Min. @@ -1130,7 +1130,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_parameters.html.twig:9 Part-DB1\templates\Parts\edit\_specifications.html.twig:9 - + specifications.value_typ Typ. @@ -1140,7 +1140,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_parameters.html.twig:10 Part-DB1\templates\Parts\edit\_specifications.html.twig:10 - + specifications.value_max Max. @@ -1150,7 +1150,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_parameters.html.twig:11 Part-DB1\templates\Parts\edit\_specifications.html.twig:11 - + specifications.unit Einheit @@ -1160,7 +1160,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_parameters.html.twig:12 Part-DB1\templates\Parts\edit\_specifications.html.twig:12 - + specifications.text Text @@ -1170,7 +1170,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_parameters.html.twig:13 Part-DB1\templates\Parts\edit\_specifications.html.twig:13 - + specifications.group Sektion @@ -1180,7 +1180,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_parameters.html.twig:26 Part-DB1\templates\Parts\edit\_specifications.html.twig:26 - + specification.create Neuer Parameter @@ -1190,7 +1190,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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? @@ -1200,7 +1200,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\attachment_list.html.twig:3 Part-DB1\templates\attachment_list.html.twig:3 - + attachment.list.title Dateianhänge @@ -1214,7 +1214,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\LogSystem\_log_table.html.twig:8 Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - + part_list.loading.caption Lade @@ -1228,7 +1228,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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. @@ -1239,7 +1239,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\base.html.twig:68 templates\base.html.twig:246 - + vendor.base.javascript_hint Aktivieren Sie Javascript um alle Features zu nutzen! @@ -1249,7 +1249,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\base.html.twig:73 Part-DB1\templates\base.html.twig:73 - + sidebar.big.toggle Seitenleiste ein/ausblenden @@ -1260,7 +1260,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\base.html.twig:95 templates\base.html.twig:271 - + loading.caption Lade: @@ -1271,7 +1271,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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. @@ -1282,7 +1282,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\base.html.twig:101 templates\base.html.twig:277 - + loading.bar Lade... @@ -1293,7 +1293,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\base.html.twig:112 templates\base.html.twig:288 - + back_to_top Zurück zum Seitenbeginn @@ -1303,7 +1303,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Form\permissionLayout.html.twig:35 Part-DB1\templates\Form\permissionLayout.html.twig:35 - + permission.edit.permission Berechtigung @@ -1313,7 +1313,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Form\permissionLayout.html.twig:36 Part-DB1\templates\Form\permissionLayout.html.twig:36 - + permission.edit.value Wert @@ -1323,7 +1323,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Form\permissionLayout.html.twig:53 Part-DB1\templates\Form\permissionLayout.html.twig:53 - + permission.legend.title Erläuterung der Zustände @@ -1333,7 +1333,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Form\permissionLayout.html.twig:57 Part-DB1\templates\Form\permissionLayout.html.twig:57 - + permission.legend.disallow Verboten @@ -1343,7 +1343,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Form\permissionLayout.html.twig:61 Part-DB1\templates\Form\permissionLayout.html.twig:61 - + permission.legend.allow Erlaubt @@ -1353,7 +1353,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Form\permissionLayout.html.twig:65 Part-DB1\templates\Form\permissionLayout.html.twig:65 - + permission.legend.inherit Erbe von (übergeordneter) Gruppe @@ -1363,7 +1363,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\helper.twig:3 Part-DB1\templates\helper.twig:3 - + bool.true Ja @@ -1373,7 +1373,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\helper.twig:5 Part-DB1\templates\helper.twig:5 - + bool.false Nein @@ -1383,7 +1383,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\helper.twig:92 Part-DB1\templates\helper.twig:87 - + Yes Ja @@ -1393,7 +1393,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\helper.twig:94 Part-DB1\templates\helper.twig:89 - + No Nein @@ -1402,7 +1402,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\helper.twig:126 - + specifications.value Wert @@ -1413,7 +1413,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\homepage.html.twig:7 templates\homepage.html.twig:7 - + version.caption Version @@ -1424,7 +1424,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\homepage.html.twig:22 templates\homepage.html.twig:19 - + homepage.license Lizenzinformation @@ -1435,7 +1435,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\homepage.html.twig:31 templates\homepage.html.twig:28 - + homepage.github.caption Projektseite @@ -1446,9 +1446,9 @@ Subelemente werden beim Löschen nach oben verschoben. 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> + GitHub Projektseite]]> @@ -1457,7 +1457,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\homepage.html.twig:32 templates\homepage.html.twig:29 - + homepage.help.caption Hilfe @@ -1468,9 +1468,9 @@ Subelemente werden beim Löschen nach oben verschoben. 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. + Wiki der GitHub Seite.]]> @@ -1479,7 +1479,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\homepage.html.twig:33 templates\homepage.html.twig:30 - + homepage.forum.caption Forum @@ -1490,7 +1490,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\homepage.html.twig:36 templates\homepage.html.twig:33 - + homepage.basedOn Basierend auf dem originale Part-DB von @@ -1501,7 +1501,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\homepage.html.twig:39 templates\homepage.html.twig:36 - + homepage.others und anderen @@ -1512,7 +1512,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\homepage.html.twig:45 new - + homepage.last_activity Letzte Aktivitäten @@ -1522,7 +1522,7 @@ 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 @@ -1531,7 +1531,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\LabelSystem\dialog.html.twig:16 - + label_generator.common Allgemein @@ -1540,7 +1540,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\LabelSystem\dialog.html.twig:20 - + label_generator.advanced Erweitert @@ -1549,7 +1549,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\LabelSystem\dialog.html.twig:24 - + label_generator.profiles Profil @@ -1558,7 +1558,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\LabelSystem\dialog.html.twig:58 - + label_generator.selected_profile Ausgewähltes Profil @@ -1567,7 +1567,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\LabelSystem\dialog.html.twig:62 - + label_generator.edit_profile Profil ändern @@ -1576,7 +1576,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\LabelSystem\dialog.html.twig:75 - + label_generator.load_profile Profil laden @@ -1585,7 +1585,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\LabelSystem\dialog.html.twig:102 - + label_generator.download Download @@ -1595,7 +1595,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:3 Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:5 - + label_generator.label_btn Label erzeugen @@ -1604,7 +1604,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:20 - + label_generator.label_empty Leeres Label @@ -1613,7 +1613,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:3 - + label_scanner.title Scanner @@ -1622,7 +1622,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - + label_scanner.no_cam_found.title Keine Kamera gefunden @@ -1631,7 +1631,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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. @@ -1640,7 +1640,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:27 - + label_scanner.source_select Kamera auswählen @@ -1650,7 +1650,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\LogSystem\log_list.html.twig:3 Part-DB1\templates\LogSystem\log_list.html.twig:3 - + log.list.title Systemlog @@ -1661,7 +1661,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\LogSystem\_log_table.html.twig:1 new - + log.undo.confirm_title Änderung wirklich rückgängig machen / Element wirklich zurücksetzen? @@ -1672,7 +1672,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\LogSystem\_log_table.html.twig:2 new - + log.undo.confirm_message Wollen Sie wirklich die gegebene Änderung rückgängig machen / Das Element auf einen alten Versionsstand zurücksetzen? @@ -1682,7 +1682,7 @@ 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 Email wurde automatisch erstellt von @@ -1692,7 +1692,7 @@ 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.dont_reply Antworten Sie nicht auf diese Email. @@ -1702,7 +1702,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\mail\pw_reset.html.twig:6 Part-DB1\templates\mail\pw_reset.html.twig:6 - + email.hi %name% Hallo %name% @@ -1712,7 +1712,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 Email. @@ -1722,7 +1722,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -1732,9 +1732,9 @@ Subelemente werden beim Löschen nach oben verschoben. 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 + %url% auf und geben Sie die folgenden Daten ein]]> @@ -1742,7 +1742,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\mail\pw_reset.html.twig:16 Part-DB1\templates\mail\pw_reset.html.twig:16 - + email.pw_reset.username Benutzername @@ -1752,7 +1752,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\mail\pw_reset.html.twig:19 Part-DB1\templates\mail\pw_reset.html.twig:19 - + email.pw_reset.token Token @@ -1762,9 +1762,9 @@ Subelemente werden beim Löschen nach oben verschoben. 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> + %date%]]> @@ -1774,7 +1774,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -1784,7 +1784,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -1794,7 +1794,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -1804,7 +1804,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -1814,7 +1814,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -1825,7 +1825,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 templates\Parts\edit_part_info.html.twig:4 - + part.edit.title Bearbeite Bauteil %name% @@ -1836,7 +1836,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -1846,7 +1846,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -1856,7 +1856,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -1866,7 +1866,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -1876,7 +1876,7 @@ 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 @@ -1886,7 +1886,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -1896,7 +1896,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -1905,7 +1905,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 - + part.edit.tab.specifications Parameter @@ -1915,7 +1915,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -1926,7 +1926,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\edit\new_part.html.twig:8 templates\Parts\new_part.html.twig:8 - + part.new.card_title Neues Bauteil erstellen @@ -1936,7 +1936,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\edit\_lots.html.twig:5 Part-DB1\templates\Parts\edit\_lots.html.twig:5 - + part_lot.delete Löschen @@ -1946,7 +1946,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\edit\_lots.html.twig:28 Part-DB1\templates\Parts\edit\_lots.html.twig:28 - + part_lot.create Bestand anlegen @@ -1956,7 +1956,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 - + orderdetail.create Lieferant hinzufügen @@ -1966,7 +1966,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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! @@ -1976,7 +1976,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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! @@ -1990,7 +1990,7 @@ Subelemente werden beim Löschen nach oben verschoben. templates\Parts\show_part_info.html.twig:4 templates\Parts\show_part_info.html.twig:9 - + part.info.title Detailinfo für @@ -2000,7 +2000,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2015,7 +2015,7 @@ Subelemente werden beim Löschen nach oben verschoben. templates\Parts\show_part_info.html.twig:74 src\Form\PartType.php:86 - + comment.label Notizen @@ -2024,7 +2024,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\show_part_info.html.twig:64 - + part.info.specifications Parameter @@ -2035,7 +2035,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\show_part_info.html.twig:64 templates\Parts\show_part_info.html.twig:82 - + attachment.labelp Dateianhänge @@ -2046,7 +2046,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\show_part_info.html.twig:71 templates\Parts\show_part_info.html.twig:88 - + vendor.partinfo.shopping_infos Einkaufsinformationen @@ -2057,7 +2057,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\show_part_info.html.twig:78 templates\Parts\show_part_info.html.twig:94 - + vendor.partinfo.history Historie @@ -2076,7 +2076,7 @@ Subelemente werden beim Löschen nach oben verschoben. templates\base.html.twig:231 templates\Parts\show_part_info.html.twig:100 - + tools.label Tools @@ -2086,7 +2086,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2096,7 +2096,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 - + attachment.name Name @@ -2106,7 +2106,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 - + attachment.attachment_type Anhangstyp @@ -2116,7 +2116,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 - + attachment.file_name Dateiname @@ -2126,7 +2126,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2135,7 +2135,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_attachments_info.html.twig:54 - + attachment.preview Vorschaubild @@ -2145,7 +2145,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_attachments_info.html.twig:67 Part-DB1\templates\Parts\info\_attachments_info.html.twig:50 - + attachment.download Herunterladen @@ -2156,7 +2156,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 new - + user.creating_user Nutzer der dieses Bauteil erstellte @@ -2170,7 +2170,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - + Unknown Unbekannt @@ -2183,7 +2183,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_extended_infos.html.twig:30 new - + accessDenied Zugriff verboten @@ -2194,7 +2194,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 new - + user.last_editing_user Nutzer der dieses Bauteil zu Letzt bearbeitete @@ -2204,7 +2204,7 @@ 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 @@ -2214,7 +2214,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 - + part.minOrderAmount Mindestbestellmenge @@ -2231,7 +2231,7 @@ Subelemente werden beim Löschen nach oben verschoben. templates\Parts\show_part_info.html.twig:24 src\Form\PartType.php:80 - + manufacturer.label Hersteller @@ -2243,7 +2243,7 @@ Subelemente werden beim Löschen nach oben verschoben. templates\base.html.twig:54 src\Form\PartType.php:62 - + name.label Name @@ -2254,7 +2254,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_main_infos.html.twig:27 new - + part.back_to_info Zurück zum aktuellen Versionsstand @@ -2269,7 +2269,7 @@ Subelemente werden beim Löschen nach oben verschoben. templates\Parts\show_part_info.html.twig:31 src\Form\PartType.php:65 - + description.label Beschreibung @@ -2286,7 +2286,7 @@ Subelemente werden beim Löschen nach oben verschoben. templates\Parts\show_part_info.html.twig:32 src\Form\PartType.php:74 - + category.label Kategorie @@ -2298,7 +2298,7 @@ Subelemente werden beim Löschen nach oben verschoben. templates\Parts\show_part_info.html.twig:42 src\Form\PartType.php:69 - + instock.label Im Lager @@ -2310,7 +2310,7 @@ Subelemente werden beim Löschen nach oben verschoben. templates\Parts\show_part_info.html.twig:44 src\Form\PartType.php:72 - + mininstock.label Mindestbestand @@ -2326,7 +2326,7 @@ Subelemente werden beim Löschen nach oben verschoben. templates\base.html.twig:73 templates\Parts\show_part_info.html.twig:47 - + footprint.label Footprint @@ -2339,7 +2339,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_main_infos.html.twig:60 templates\Parts\show_part_info.html.twig:51 - + part.avg_price.label Durchschnittspreis @@ -2349,7 +2349,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_order_infos.html.twig:5 Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - + part.supplier.name Name @@ -2359,7 +2359,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_order_infos.html.twig:6 Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - + part.supplier.partnr Bestellnr. @@ -2369,7 +2369,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_order_infos.html.twig:28 Part-DB1\templates\Parts\info\_order_infos.html.twig:28 - + part.order.minamount Mindestanzahl @@ -2379,7 +2379,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_order_infos.html.twig:29 Part-DB1\templates\Parts\info\_order_infos.html.twig:29 - + part.order.price Preis @@ -2389,7 +2389,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2399,7 +2399,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_order_infos.html.twig:71 Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - + edit.caption_short Bearbeiten @@ -2409,7 +2409,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_order_infos.html.twig:72 Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - + delete.caption Löschen @@ -2419,7 +2419,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_part_lots.html.twig:7 Part-DB1\templates\Parts\info\_part_lots.html.twig:6 - + part_lots.description Beschreibung @@ -2429,7 +2429,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2439,7 +2439,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_part_lots.html.twig:9 Part-DB1\templates\Parts\info\_part_lots.html.twig:8 - + part_lots.amount Menge @@ -2449,7 +2449,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2459,7 +2459,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2469,7 +2469,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2479,7 +2479,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2489,7 +2489,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2499,7 +2499,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_picture.html.twig:15 Part-DB1\templates\Parts\info\_picture.html.twig:15 - + part.info.prev_picture Vorheriges Bild @@ -2509,7 +2509,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2519,7 +2519,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_sidebar.html.twig:21 Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - + part.mass.tooltip Gewicht @@ -2529,7 +2529,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2539,7 +2539,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_sidebar.html.twig:39 Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - + part.favorite.badge Favorit @@ -2549,7 +2549,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_sidebar.html.twig:47 Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - + part.obsolete.badge Nicht mehr lieferbar @@ -2558,7 +2558,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_specifications.html.twig:10 - + parameters.extracted_from_description Automatisch aus Beschreibung extrahiert @@ -2567,7 +2567,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_specifications.html.twig:15 - + parameters.auto_extracted_from_comment Automatisch aus Notizen extrahiert @@ -2578,7 +2578,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_tools.html.twig:4 templates\Parts\show_part_info.html.twig:125 - + part.edit.btn Bauteil bearbeiten @@ -2589,7 +2589,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_tools.html.twig:14 templates\Parts\show_part_info.html.twig:135 - + part.clone.btn Bauteil kopieren @@ -2600,7 +2600,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\lists\_action_bar.html.twig:4 templates\Parts\show_part_info.html.twig:143 - + part.create.btn Neues Bauteil anlegen @@ -2610,7 +2610,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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? @@ -2620,7 +2620,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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. @@ -2630,7 +2630,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_tools.html.twig:39 Part-DB1\templates\Parts\info\_tools.html.twig:37 - + part.delete Bauteil löschen @@ -2640,7 +2640,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2650,7 +2650,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2660,7 +2660,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2670,7 +2670,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2680,7 +2680,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2690,7 +2690,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2700,7 +2700,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2710,7 +2710,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2720,7 +2720,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2730,7 +2730,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2739,7 +2739,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\lists\_info_card.html.twig:31 - + entity.info.attachments.tab Dateianhänge @@ -2748,7 +2748,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\lists\_info_card.html.twig:37 - + entity.info.parameters.tab Parameter @@ -2758,7 +2758,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\lists\_info_card.html.twig:54 Part-DB1\templates\Parts\lists\_info_card.html.twig:30 - + entity.info.name Name @@ -2770,7 +2770,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2780,7 +2780,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\lists\_info_card.html.twig:70 Part-DB1\templates\Parts\lists\_info_card.html.twig:46 - + entity.edit.btn Bearbeiten @@ -2790,7 +2790,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2802,7 +2802,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2812,7 +2812,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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) @@ -2824,7 +2824,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\security\2fa_base_form.html.twig:52 Part-DB1\templates\security\login.html.twig:58 - + login.btn Login @@ -2838,7 +2838,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\security\U2F\u2f_login.html.twig:13 Part-DB1\templates\_navbar.html.twig:40 - + user.logout Ausloggen @@ -2848,7 +2848,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2858,7 +2858,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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. @@ -2869,7 +2869,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\security\login.html.twig:3 templates\security\login.html.twig:3 - + login.title Login @@ -2880,7 +2880,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\security\login.html.twig:7 templates\security\login.html.twig:7 - + login.card_title Login @@ -2891,7 +2891,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\security\login.html.twig:31 templates\security\login.html.twig:31 - + login.username.label Benutzername @@ -2902,7 +2902,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\security\login.html.twig:34 templates\security\login.html.twig:34 - + login.username.placeholder Benutzername @@ -2913,7 +2913,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\security\login.html.twig:38 templates\security\login.html.twig:38 - + login.password.label Passwort @@ -2924,7 +2924,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\security\login.html.twig:40 templates\security\login.html.twig:40 - + login.password.placeholder Passwort @@ -2935,7 +2935,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\security\login.html.twig:50 templates\security\login.html.twig:50 - + login.rememberme Eingeloggt bleiben (nicht empfohlen auf geteilten Computern) @@ -2945,7 +2945,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\security\login.html.twig:64 Part-DB1\templates\security\login.html.twig:64 - + pw_reset.password_forget Nutzername/Passwort vergessen? @@ -2955,7 +2955,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2965,7 +2965,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -2977,7 +2977,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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. @@ -2989,7 +2989,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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! @@ -2999,7 +2999,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -3011,7 +3011,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 kompatiblem 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. @@ -3021,7 +3021,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 sicherem Ort zu lagern! @@ -3031,7 +3031,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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) @@ -3041,7 +3041,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -3051,7 +3051,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -3064,7 +3064,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Statistics\statistics.html.twig:8 new - + statistics.title Statistik @@ -3075,7 +3075,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Statistics\statistics.html.twig:14 new - + statistics.parts Bauteile @@ -3086,7 +3086,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Statistics\statistics.html.twig:19 new - + statistics.data_structures Datenstrukturen @@ -3097,7 +3097,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Statistics\statistics.html.twig:24 new - + statistics.attachments Dateianhänge @@ -3112,7 +3112,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Statistics\statistics.html.twig:104 new - + statistics.property Eigenschaft @@ -3127,7 +3127,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Statistics\statistics.html.twig:105 new - + statistics.value Wert @@ -3138,7 +3138,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Statistics\statistics.html.twig:40 new - + statistics.distinct_parts_count Anzahl verschiedener Bauteile @@ -3149,7 +3149,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Statistics\statistics.html.twig:44 new - + statistics.parts_instock_sum Summe aller vorhanden Bauteilebestände @@ -3160,7 +3160,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Statistics\statistics.html.twig:48 new - + statistics.parts_with_price Bauteile mit Preisinformationen @@ -3171,7 +3171,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Statistics\statistics.html.twig:65 new - + statistics.categories_count Anzahl Kategorien @@ -3182,7 +3182,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Statistics\statistics.html.twig:69 new - + statistics.footprints_count Anzahl Footprints @@ -3193,7 +3193,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Statistics\statistics.html.twig:73 new - + statistics.manufacturers_count Anzahl Hersteller @@ -3204,7 +3204,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Statistics\statistics.html.twig:77 new - + statistics.storelocations_count Anzahl Lagerorte @@ -3215,7 +3215,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Statistics\statistics.html.twig:81 new - + statistics.suppliers_count Anzahl Lieferanten @@ -3226,7 +3226,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Statistics\statistics.html.twig:85 new - + statistics.currencies_count Anzahl Währungen @@ -3237,7 +3237,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Statistics\statistics.html.twig:89 new - + statistics.measurement_units_count Anzahl Maßeinheiten @@ -3248,7 +3248,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Statistics\statistics.html.twig:93 new - + statistics.devices_count Anzahl Baugruppen @@ -3259,7 +3259,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Statistics\statistics.html.twig:110 new - + statistics.attachment_types_count Anzahl Anhangstypen @@ -3270,7 +3270,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Statistics\statistics.html.twig:114 new - + statistics.all_attachments_count Anzahl aller Dateianhänge @@ -3281,7 +3281,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Statistics\statistics.html.twig:118 new - + statistics.user_uploaded_attachments_count Anzahl aller vom Nutzer hochgeladener Anhänge @@ -3292,7 +3292,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Statistics\statistics.html.twig:122 new - + statistics.private_attachments_count Anzahl aller privaten Anhänge @@ -3303,7 +3303,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Statistics\statistics.html.twig:126 new - + statistics.external_attachments_count Anzahl aller externen Anhänge (URL) @@ -3315,7 +3315,7 @@ 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 - + tfa_backup.codes.title Backupcodes @@ -3325,7 +3325,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 sicherem Ort auf! @@ -3335,7 +3335,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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. @@ -3345,7 +3345,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Users\backup_codes.html.twig:16 Part-DB1\templates\Users\backup_codes.html.twig:16 - + tfa_backup.username Benutzername @@ -3355,7 +3355,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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% @@ -3365,7 +3365,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Users\backup_codes.html.twig:32 Part-DB1\templates\Users\backup_codes.html.twig:32 - + tfa_backup.codes.print Drucken @@ -3375,7 +3375,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -3392,7 +3392,7 @@ Subelemente werden beim Löschen nach oben verschoben. templates\Users\user_info.html.twig:3 templates\Users\user_info.html.twig:6 - + user.info.label Benutzerinformationen @@ -3406,7 +3406,7 @@ Subelemente werden beim Löschen nach oben verschoben. templates\Users\user_info.html.twig:18 src\Form\UserSettingsType.php:32 - + user.firstName.label Vorname @@ -3420,7 +3420,7 @@ Subelemente werden beim Löschen nach oben verschoben. templates\Users\user_info.html.twig:24 src\Form\UserSettingsType.php:35 - + user.lastName.label Nachname @@ -3434,7 +3434,7 @@ Subelemente werden beim Löschen nach oben verschoben. templates\Users\user_info.html.twig:30 src\Form\UserSettingsType.php:41 - + user.email.label Email @@ -3448,7 +3448,7 @@ Subelemente werden beim Löschen nach oben verschoben. templates\Users\user_info.html.twig:37 src\Form\UserSettingsType.php:38 - + user.department.label Abteilung @@ -3462,7 +3462,7 @@ Subelemente werden beim Löschen nach oben verschoben. templates\Users\user_info.html.twig:47 src\Form\UserSettingsType.php:30 - + user.username.label Benutzername @@ -3475,7 +3475,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\src\Services\ElementTypeNameGenerator.php:93 templates\Users\user_info.html.twig:53 - + group.label Group @@ -3485,7 +3485,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Users\user_info.html.twig:67 Part-DB1\templates\Users\user_info.html.twig:67 - + user.permissions Berechtigungen @@ -3502,7 +3502,7 @@ Subelemente werden beim Löschen nach oben verschoben. templates\Users\user_settings.html.twig:3 templates\Users\user_settings.html.twig:6 - + user.settings.label Benutzereinstellungen @@ -3513,7 +3513,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Users\user_settings.html.twig:18 templates\Users\user_settings.html.twig:14 - + user_settings.data.label Persönliche Daten @@ -3524,7 +3524,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Users\user_settings.html.twig:22 templates\Users\user_settings.html.twig:18 - + user_settings.configuration.label Konfiguration @@ -3535,7 +3535,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Users\user_settings.html.twig:55 templates\Users\user_settings.html.twig:48 - + user.settings.change_pw Passwort ändern @@ -3545,7 +3545,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -3555,7 +3555,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Users\_2fa_settings.html.twig:13 Part-DB1\templates\Users\_2fa_settings.html.twig:13 - + tfa.settings.google.tab Authenticator App @@ -3565,7 +3565,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Users\_2fa_settings.html.twig:17 Part-DB1\templates\Users\_2fa_settings.html.twig:17 - + tfa.settings.bakup.tab Backupcodes @@ -3575,7 +3575,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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) @@ -3585,7 +3585,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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 @@ -3595,7 +3595,7 @@ Subelemente werden beim Löschen nach oben verschoben. 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? @@ -3605,10 +3605,10 @@ Subelemente werden beim Löschen nach oben verschoben. 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> -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!]]> @@ -3616,7 +3616,7 @@ 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 @@ -3626,9 +3626,9 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich 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>) + Google Authenticator oder FreeOTP Authenticator)]]> @@ -3636,7 +3636,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich 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 @@ -3646,7 +3646,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich 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 @@ -3656,7 +3656,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich 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 @@ -3666,7 +3666,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich Part-DB1\templates\Users\_2fa_settings.html.twig:58 Part-DB1\templates\Users\_2fa_settings.html.twig:58 - + tfa_google.manual_setup Manuelle Einrichtung @@ -3676,7 +3676,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich Part-DB1\templates\Users\_2fa_settings.html.twig:62 Part-DB1\templates\Users\_2fa_settings.html.twig:62 - + tfa_google.manual_setup.type Typ @@ -3686,7 +3686,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich Part-DB1\templates\Users\_2fa_settings.html.twig:63 Part-DB1\templates\Users\_2fa_settings.html.twig:63 - + tfa_google.manual_setup.username Benutzername @@ -3696,7 +3696,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich Part-DB1\templates\Users\_2fa_settings.html.twig:64 Part-DB1\templates\Users\_2fa_settings.html.twig:64 - + tfa_google.manual_setup.secret Secret @@ -3706,7 +3706,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich 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 @@ -3716,7 +3716,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich 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 @@ -3726,7 +3726,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich 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. @@ -3738,7 +3738,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich 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 sicherem Ort auf. @@ -3748,7 +3748,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich 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? @@ -3758,7 +3758,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich 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! @@ -3768,7 +3768,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich Part-DB1\templates\Users\_2fa_settings.html.twig:91 Part-DB1\templates\Users\_2fa_settings.html.twig:91 - + tfa_backup.enabled Backupcodes aktiviert @@ -3778,7 +3778,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich Part-DB1\templates\Users\_2fa_settings.html.twig:99 Part-DB1\templates\Users\_2fa_settings.html.twig:99 - + tfa_backup.show_codes Backupcodes anzeigen @@ -3788,7 +3788,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich 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 @@ -3798,7 +3798,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich 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? @@ -3808,7 +3808,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich 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. @@ -3818,7 +3818,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich 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 @@ -3828,7 +3828,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich 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 @@ -3838,7 +3838,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich 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 @@ -3848,7 +3848,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich 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 @@ -3858,7 +3858,7 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich 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 @@ -3868,10 +3868,10 @@ Beachten Sie außerdem, dass ihr Account ohne Zwei-Faktor-Authentifizierung nich 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 es 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.]]> @@ -3879,7 +3879,7 @@ 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? @@ -3889,7 +3889,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr 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. @@ -3899,7 +3899,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr 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 @@ -3910,7 +3910,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\templates\_navbar.html.twig:4 templates\base.html.twig:29 - + sidebar.toggle Sidebar umschalten @@ -3919,7 +3919,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\templates\_navbar.html.twig:22 - + navbar.scanner.link Scanner @@ -3930,7 +3930,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\templates\_navbar.html.twig:36 templates\base.html.twig:97 - + user.loggedin.label Eingeloggt als @@ -3941,7 +3941,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\templates\_navbar.html.twig:42 templates\base.html.twig:103 - + user.login Einloggen @@ -3951,7 +3951,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\templates\_navbar.html.twig:50 Part-DB1\templates\_navbar.html.twig:48 - + ui.toggle_darkmode Darkmode @@ -3965,7 +3965,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr templates\base.html.twig:106 src\Form\UserSettingsType.php:44 - + user.language_select Sprache @@ -3976,7 +3976,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\templates\_navbar_search.html.twig:4 templates\base.html.twig:49 - + search.options.label Suchoptionen @@ -3985,7 +3985,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\templates\_navbar_search.html.twig:23 - + tags.label Tags @@ -4000,7 +4000,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr templates\Parts\show_part_info.html.twig:36 src\Form\PartType.php:77 - + storelocation.label Lagerort @@ -4011,7 +4011,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\templates\_navbar_search.html.twig:31 templates\base.html.twig:65 - + ordernumber.label.short Bestellnr. @@ -4024,7 +4024,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\ElementTypeNameGenerator.php:89 templates\base.html.twig:67 - + supplier.label Lieferant @@ -4035,7 +4035,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\templates\_navbar_search.html.twig:52 templates\base.html.twig:75 - + search.deactivateBarcode Deakt. Barcode @@ -4046,7 +4046,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\templates\_navbar_search.html.twig:56 templates\base.html.twig:77 - + search.regexmatching Reg.Ex. Matching @@ -4056,7 +4056,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\templates\_navbar_search.html.twig:68 Part-DB1\templates\_navbar_search.html.twig:62 - + search.submit Los! @@ -4072,7 +4072,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr templates\base.html.twig:202 templates\base.html.twig:230 - + project.labelp Projekte @@ -4085,7 +4085,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr templates\base.html.twig:192 templates\base.html.twig:220 - + actions Aktionen @@ -4098,7 +4098,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr templates\base.html.twig:196 templates\base.html.twig:224 - + datasource Datenquelle @@ -4111,7 +4111,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr templates\base.html.twig:200 templates\base.html.twig:228 - + manufacturer.labelp Hersteller @@ -4124,7 +4124,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr templates\base.html.twig:201 templates\base.html.twig:229 - + supplier.labelp Lieferanten @@ -4140,7 +4140,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\PartController.php:173 Part-DB1\src\Controller\PartController.php:268 - + attachment.download_failed Download der externen Datei fehlgeschlagen! @@ -4150,7 +4150,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\AdminPages\BaseAdminController.php:222 Part-DB1\src\Controller\AdminPages\BaseAdminController.php:190 - + entity.edit_flash Änderungen erfolgreich gespeichert. @@ -4160,7 +4160,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr 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! @@ -4170,7 +4170,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\AdminPages\BaseAdminController.php:302 Part-DB1\src\Controller\AdminPages\BaseAdminController.php:252 - + entity.created_flash Element erfolgreich angelegt! @@ -4180,7 +4180,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr 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! @@ -4191,7 +4191,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\AdminPages\BaseAdminController.php:352 src\Controller\BaseAdminController.php:154 - + attachment_type.deleted Element gelöscht! @@ -4207,7 +4207,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr 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! @@ -4216,7 +4216,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\LabelController.php:125 - + label_generator.no_entities_found Keine Elemente gefunden @@ -4227,7 +4227,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\LogController.php:154 new - + log.undo.target_not_found Zielelement nicht in Datenbank gefunden! @@ -4238,7 +4238,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\LogController.php:160 new - + log.undo.revert_success Bauteil erfolgreich zurückgesetzt. @@ -4249,7 +4249,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\LogController.php:180 new - + log.undo.element_undelete_success Bauteil erfolgreich wiederhergestellt. @@ -4260,7 +4260,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\LogController.php:182 new - + log.undo.element_element_already_undeleted Bauteile wurde bereits wiederhergestellt! @@ -4271,7 +4271,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\LogController.php:189 new - + log.undo.element_delete_success Bauteil erfolgreich gelöscht. @@ -4282,7 +4282,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\LogController.php:191 new - + log.undo.element.element_already_delted Bauteil wurde bereits gelöscht @@ -4293,7 +4293,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\LogController.php:198 new - + log.undo.element_change_undone Änderung erfolgreich rückgängig gemacht. @@ -4304,7 +4304,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\LogController.php:200 new - + log.undo.do_undelete_before Sie müssen das Element zuerst wiederherstellen bevor sie diese Änderung rückgängig machen können! @@ -4315,7 +4315,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\LogController.php:203 new - + log.undo.log_type_invalid Dieser Logtyp kann nicht rückgängig gemacht werden! @@ -4326,7 +4326,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\PartController.php:182 src\Controller\PartController.php:80 - + part.edited_flash Änderungen gespeichert! @@ -4336,7 +4336,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr 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! @@ -4346,7 +4346,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\PartController.php:216 Part-DB1\src\Controller\PartController.php:219 - + part.deleted Bauteil erfolgreich gelöscht. @@ -4359,7 +4359,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr src\Controller\PartController.php:113 src\Controller\PartController.php:142 - + part.created_flash Bauteile erfolgreich angelegt! @@ -4369,7 +4369,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr 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! @@ -4379,7 +4379,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\ScanController.php:68 Part-DB1\src\Controller\ScanController.php:90 - + scan.qr_not_found Kein Element gefunden @@ -4388,7 +4388,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\ScanController.php:71 - + scan.format_unknown Format unbekannt @@ -4397,7 +4397,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\ScanController.php:86 - + scan.qr_success Element gefunden @@ -4407,7 +4407,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\SecurityController.php:114 Part-DB1\src\Controller\SecurityController.php:109 - + pw_reset.user_or_email Benutzername / Email @@ -4417,7 +4417,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr 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 Emails für weitere Informationen. @@ -4427,7 +4427,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\SecurityController.php:162 Part-DB1\src\Controller\SecurityController.php:160 - + pw_reset.username Benutzername @@ -4437,7 +4437,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\SecurityController.php:165 Part-DB1\src\Controller\SecurityController.php:163 - + pw_reset.token Token @@ -4447,7 +4447,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr 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. @@ -4457,7 +4457,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr 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. @@ -4467,7 +4467,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr 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. @@ -4477,7 +4477,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\UserSettingsController.php:101 Part-DB1\src\Controller\UserSettingsController.php:92 - + tfa_backup.no_codes_enabled Es sind keine Backupcodes aktiviert! @@ -4487,7 +4487,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr 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! @@ -4497,7 +4497,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr 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! @@ -4507,7 +4507,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\UserSettingsController.php:153 Part-DB1\src\Controller\UserSettingsController.php:147 - + tfa.u2f.u2f_delete.success Sicherheitsschlüssel erfolgreich entfernt. @@ -4517,7 +4517,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr 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. @@ -4528,7 +4528,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\UserSettingsController.php:226 src\Controller\UserController.php:98 - + user.settings.saved_flash Einstellungen gespeichert! @@ -4539,7 +4539,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\UserSettingsController.php:288 src\Controller\UserController.php:130 - + user.settings.pw_changed_flash Passwort geändert! @@ -4549,7 +4549,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\UserSettingsController.php:317 Part-DB1\src\Controller\UserSettingsController.php:306 - + user.settings.2fa.google.activated Authenticator App erfolgreich aktiviert. @@ -4559,7 +4559,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\UserSettingsController.php:328 Part-DB1\src\Controller\UserSettingsController.php:315 - + user.settings.2fa.google.disabled Authenticator App erfolgreich deaktiviert. @@ -4569,7 +4569,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Controller\UserSettingsController.php:346 Part-DB1\src\Controller\UserSettingsController.php:332 - + user.settings.2fa.backup_codes.regenerated Neue Backupcodes erfolgreich erzeugt. @@ -4579,7 +4579,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\AttachmentDataTable.php:148 Part-DB1\src\DataTables\AttachmentDataTable.php:148 - + attachment.table.filename Dateiname @@ -4589,7 +4589,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\AttachmentDataTable.php:153 Part-DB1\src\DataTables\AttachmentDataTable.php:153 - + attachment.table.filesize Dateigröße @@ -4609,7 +4609,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:193 Part-DB1\src\DataTables\PartsDataTable.php:200 - + true wahr @@ -4631,7 +4631,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:201 Part-DB1\src\Form\Type\SIUnitType.php:139 - + false falsch @@ -4641,7 +4641,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:128 Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:119 - + log.target_deleted gelöscht @@ -4652,7 +4652,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\Column\RevertLogColumn.php:60 new - + log.undo.undelete Bauteil wiederherstellen @@ -4663,7 +4663,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\Column\RevertLogColumn.php:66 new - + log.undo.undo Änderung rückgängig machen @@ -4674,7 +4674,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\Column\RevertLogColumn.php:86 new - + log.undo.revert Element auf Stand dieses Zeitpunktes zurücksetzen! @@ -4684,7 +4684,7 @@ 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 @@ -4694,7 +4694,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\LogDataTable.php:178 Part-DB1\src\DataTables\LogDataTable.php:166 - + log.timestamp Zeitstempel @@ -4704,7 +4704,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\LogDataTable.php:183 Part-DB1\src\DataTables\LogDataTable.php:171 - + log.type Ereignis @@ -4714,7 +4714,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\LogDataTable.php:191 Part-DB1\src\DataTables\LogDataTable.php:179 - + log.level Level @@ -4724,7 +4724,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\LogDataTable.php:200 Part-DB1\src\DataTables\LogDataTable.php:188 - + log.user Benutzer @@ -4734,7 +4734,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\LogDataTable.php:213 Part-DB1\src\DataTables\LogDataTable.php:201 - + log.target_type Zieltyp @@ -4744,7 +4744,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\LogDataTable.php:226 Part-DB1\src\DataTables\LogDataTable.php:214 - + log.target Ziel @@ -4755,7 +4755,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\LogDataTable.php:218 new - + log.extra Extra @@ -4765,7 +4765,7 @@ 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 @@ -4775,7 +4775,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:178 Part-DB1\src\DataTables\PartsDataTable.php:126 - + part.table.id ID @@ -4785,7 +4785,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:182 Part-DB1\src\DataTables\PartsDataTable.php:130 - + part.table.description Beschreibung @@ -4795,7 +4795,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:185 Part-DB1\src\DataTables\PartsDataTable.php:133 - + part.table.category Kategorie @@ -4805,7 +4805,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:190 Part-DB1\src\DataTables\PartsDataTable.php:138 - + part.table.footprint Footprint @@ -4815,7 +4815,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:194 Part-DB1\src\DataTables\PartsDataTable.php:142 - + part.table.manufacturer Hersteller @@ -4825,7 +4825,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:197 Part-DB1\src\DataTables\PartsDataTable.php:145 - + part.table.storeLocations Lagerorte @@ -4835,7 +4835,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:216 Part-DB1\src\DataTables\PartsDataTable.php:164 - + part.table.amount Menge @@ -4845,7 +4845,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:224 Part-DB1\src\DataTables\PartsDataTable.php:172 - + part.table.minamount Min. Menge @@ -4855,7 +4855,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:232 Part-DB1\src\DataTables\PartsDataTable.php:180 - + part.table.partUnit Maßeinheit @@ -4865,7 +4865,7 @@ 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 @@ -4875,7 +4875,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:240 Part-DB1\src\DataTables\PartsDataTable.php:188 - + part.table.lastModified Zuletzt bearbeitet @@ -4885,7 +4885,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:244 Part-DB1\src\DataTables\PartsDataTable.php:192 - + part.table.needsReview Review benötigt @@ -4895,7 +4895,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:251 Part-DB1\src\DataTables\PartsDataTable.php:199 - + part.table.favorite Favorit @@ -4905,7 +4905,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:258 Part-DB1\src\DataTables\PartsDataTable.php:206 - + part.table.manufacturingStatus Status @@ -4919,7 +4919,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:210 Part-DB1\src\Form\Part\PartBaseType.php:88 - + m_status.unknown Unbekannt @@ -4931,7 +4931,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:211 Part-DB1\src\Form\Part\PartBaseType.php:88 - + m_status.announced Angekündigt @@ -4943,7 +4943,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:212 Part-DB1\src\Form\Part\PartBaseType.php:88 - + m_status.active Aktiv @@ -4955,7 +4955,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:213 Part-DB1\src\Form\Part\PartBaseType.php:88 - + m_status.nrfnd Not recommended for new designs @@ -4967,7 +4967,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:214 Part-DB1\src\Form\Part\PartBaseType.php:88 - + m_status.eol End of life @@ -4979,7 +4979,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:215 Part-DB1\src\Form\Part\PartBaseType.php:88 - + m_status.discontinued Discontinued @@ -4989,7 +4989,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:271 Part-DB1\src\DataTables\PartsDataTable.php:219 - + part.table.mpn MPN @@ -4999,7 +4999,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:275 Part-DB1\src\DataTables\PartsDataTable.php:223 - + part.table.mass Gewicht @@ -5009,7 +5009,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:279 Part-DB1\src\DataTables\PartsDataTable.php:227 - + part.table.tags Tags @@ -5019,7 +5019,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\DataTables\PartsDataTable.php:283 Part-DB1\src\DataTables\PartsDataTable.php:231 - + part.table.attachments Dateianhänge @@ -5029,7 +5029,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\EventSubscriber\UserSystem\LoginSuccessSubscriber.php:82 Part-DB1\src\EventSubscriber\LoginSuccessListener.php:82 - + flash.login_successful Login erfolgreich. @@ -5040,7 +5040,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\AdminPages\ImportType.php:77 src\Form\ImportType.php:68 - + JSON JSON @@ -5051,7 +5051,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\AdminPages\ImportType.php:77 src\Form\ImportType.php:68 - + XML XML @@ -5062,7 +5062,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\AdminPages\ImportType.php:77 src\Form\ImportType.php:68 - + CSV CSV @@ -5073,7 +5073,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\AdminPages\ImportType.php:77 src\Form\ImportType.php:68 - + YAML YAML @@ -5083,7 +5083,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr 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. @@ -5094,7 +5094,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\AdminPages\ImportType.php:86 src\Form\ImportType.php:70 - + import.csv_separator CSV Trennzeichen @@ -5105,7 +5105,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\AdminPages\ImportType.php:93 src\Form\ImportType.php:72 - + parent.label Übergeordnetes Element @@ -5116,7 +5116,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\AdminPages\ImportType.php:101 src\Form\ImportType.php:75 - + import.file Datei @@ -5127,7 +5127,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\AdminPages\ImportType.php:111 src\Form\ImportType.php:78 - + import.preserve_children Importiere auch Unterelemente @@ -5138,7 +5138,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\AdminPages\ImportType.php:120 src\Form\ImportType.php:80 - + import.abort_on_validation Breche bei Invaliden Daten ab @@ -5149,7 +5149,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\AdminPages\ImportType.php:132 src\Form\ImportType.php:85 - + import.btn Importieren @@ -5159,7 +5159,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\AttachmentFormType.php:113 Part-DB1\src\Form\AttachmentFormType.php:109 - + attachment.edit.secure_file.help Auf ein Anhang der als privat gekennzeichnet ist, 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. @@ -5169,7 +5169,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr 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). @@ -5179,7 +5179,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\AttachmentFormType.php:82 Part-DB1\src\Form\AttachmentFormType.php:79 - + attachment.edit.name Name @@ -5189,7 +5189,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\AttachmentFormType.php:85 Part-DB1\src\Form\AttachmentFormType.php:82 - + attachment.edit.attachment_type Anhangstyp @@ -5199,7 +5199,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\AttachmentFormType.php:94 Part-DB1\src\Form\AttachmentFormType.php:91 - + attachment.edit.show_in_table Zeige in Tabelle @@ -5209,7 +5209,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\AttachmentFormType.php:105 Part-DB1\src\Form\AttachmentFormType.php:102 - + attachment.edit.secure_file Privater Anhang @@ -5219,7 +5219,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\AttachmentFormType.php:119 Part-DB1\src\Form\AttachmentFormType.php:115 - + attachment.edit.url URL @@ -5229,7 +5229,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\AttachmentFormType.php:133 Part-DB1\src\Form\AttachmentFormType.php:129 - + attachment.edit.download_url Downloade externe Datei @@ -5239,7 +5239,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\AttachmentFormType.php:146 Part-DB1\src\Form\AttachmentFormType.php:142 - + attachment.edit.file Datei hochladen @@ -5249,7 +5249,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\LabelOptionsType.php:68 Part-DB1\src\Services\ElementTypeNameGenerator.php:86 - + part.label Bauteil @@ -5259,7 +5259,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\LabelOptionsType.php:68 Part-DB1\src\Services\ElementTypeNameGenerator.php:87 - + part_lot.label Bauteilebestand @@ -5268,7 +5268,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\LabelOptionsType.php:78 - + label_options.barcode_type.none Keiner @@ -5277,7 +5277,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\LabelOptionsType.php:78 - + label_options.barcode_type.qr QR-Code (empfohlen) @@ -5286,7 +5286,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\LabelOptionsType.php:78 - + label_options.barcode_type.code128 Code 128 (empfohlen) @@ -5295,7 +5295,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\LabelOptionsType.php:78 - + label_options.barcode_type.code39 Code 39 (empfohlen) @@ -5304,7 +5304,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\LabelOptionsType.php:78 - + label_options.barcode_type.code93 Code 93 @@ -5313,7 +5313,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\LabelOptionsType.php:78 - + label_options.barcode_type.datamatrix Datamatrix @@ -5322,7 +5322,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\LabelOptionsType.php:122 - + label_options.lines_mode.html HTML @@ -5331,7 +5331,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\LabelOptionsType.php:122 - + label.options.lines_mode.twig Twig @@ -5340,16 +5340,16 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr 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>. + Twig Dokumentation und dem Wiki.]]> Part-DB1\src\Form\LabelOptionsType.php:47 - + label_options.page_size.label Größe @@ -5358,7 +5358,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\LabelOptionsType.php:66 - + label_options.supported_elements.label Elementtyp @@ -5367,7 +5367,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\LabelOptionsType.php:75 - + label_options.barcode_type.label Barcodetyp @@ -5376,7 +5376,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\LabelOptionsType.php:102 - + label_profile.lines.label Inhalt @@ -5385,7 +5385,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\LabelOptionsType.php:111 - + label_options.additional_css.label Zusätzliches CSS @@ -5394,7 +5394,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\LabelOptionsType.php:120 - + label_options.lines_mode.label Parser Modus @@ -5403,7 +5403,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\LabelOptionsType.php:51 - + label_options.width.placeholder Breite @@ -5412,7 +5412,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\LabelOptionsType.php:60 - + label_options.height.placeholder Höhe @@ -5421,7 +5421,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr 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. @@ -5430,7 +5430,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\LabelSystem\LabelDialogType.php:46 - + label_generator.target_id.label Element IDs @@ -5439,7 +5439,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\LabelSystem\LabelDialogType.php:59 - + label_generator.update Update @@ -5448,7 +5448,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\LabelSystem\ScanDialogType.php:36 - + scan_dialog.input Input @@ -5457,7 +5457,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\LabelSystem\ScanDialogType.php:44 - + scan_dialog.submit Absenden @@ -5466,7 +5466,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\ParameterType.php:41 - + parameters.name.placeholder z.B. DC Current Gain @@ -5475,7 +5475,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\ParameterType.php:50 - + parameters.symbol.placeholder z.B. h_{FE} @@ -5484,7 +5484,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\ParameterType.php:60 - + parameters.text.placeholder z.B. Test Specifications @@ -5493,7 +5493,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\ParameterType.php:71 - + parameters.max.placeholder z.B. 350 @@ -5502,7 +5502,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\ParameterType.php:82 - + parameters.min.placeholder z.B. 100 @@ -5511,7 +5511,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\ParameterType.php:93 - + parameters.typical.placeholder z.B. 200 @@ -5520,7 +5520,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\ParameterType.php:103 - + parameters.unit.placeholder z.B. V @@ -5529,7 +5529,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\ParameterType.php:114 - + parameter.group.placeholder z.B. Technische Spezifikationen @@ -5539,7 +5539,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\OrderdetailType.php:72 Part-DB1\src\Form\Part\OrderdetailType.php:75 - + orderdetails.edit.supplierpartnr Bestellnummer @@ -5549,7 +5549,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\OrderdetailType.php:81 Part-DB1\src\Form\Part\OrderdetailType.php:84 - + orderdetails.edit.supplier Lieferant @@ -5559,7 +5559,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\OrderdetailType.php:87 Part-DB1\src\Form\Part\OrderdetailType.php:90 - + orderdetails.edit.url Link zum Angebot @@ -5569,7 +5569,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\OrderdetailType.php:93 Part-DB1\src\Form\Part\OrderdetailType.php:96 - + orderdetails.edit.obsolete Nicht mehr lieferbar @@ -5579,7 +5579,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\OrderdetailType.php:75 Part-DB1\src\Form\Part\OrderdetailType.php:78 - + orderdetails.edit.supplierpartnr.placeholder z.B. BC 547C @@ -5589,7 +5589,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartBaseType.php:101 Part-DB1\src\Form\Part\PartBaseType.php:99 - + part.edit.name Name @@ -5599,7 +5599,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartBaseType.php:109 Part-DB1\src\Form\Part\PartBaseType.php:107 - + part.edit.description Beschreibung @@ -5609,7 +5609,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartBaseType.php:120 Part-DB1\src\Form\Part\PartBaseType.php:118 - + part.edit.mininstock Mindestbestand @@ -5619,7 +5619,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartBaseType.php:129 Part-DB1\src\Form\Part\PartBaseType.php:127 - + part.edit.category Kategorie @@ -5629,7 +5629,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartBaseType.php:135 Part-DB1\src\Form\Part\PartBaseType.php:133 - + part.edit.footprint Footprint @@ -5639,7 +5639,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartBaseType.php:142 Part-DB1\src\Form\Part\PartBaseType.php:140 - + part.edit.tags Tags @@ -5649,7 +5649,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartBaseType.php:154 Part-DB1\src\Form\Part\PartBaseType.php:152 - + part.edit.manufacturer.label Hersteller @@ -5659,7 +5659,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartBaseType.php:161 Part-DB1\src\Form\Part\PartBaseType.php:159 - + part.edit.manufacturer_url.label Link zur Produktseite @@ -5669,7 +5669,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartBaseType.php:167 Part-DB1\src\Form\Part\PartBaseType.php:165 - + part.edit.mpn Bauteilenummer des Herstellers @@ -5679,7 +5679,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartBaseType.php:173 Part-DB1\src\Form\Part\PartBaseType.php:171 - + part.edit.manufacturing_status Herstellungsstatus @@ -5689,7 +5689,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartBaseType.php:181 Part-DB1\src\Form\Part\PartBaseType.php:179 - + part.edit.needs_review Review benötigt @@ -5699,7 +5699,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartBaseType.php:189 Part-DB1\src\Form\Part\PartBaseType.php:187 - + part.edit.is_favorite Favorit @@ -5709,7 +5709,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartBaseType.php:197 Part-DB1\src\Form\Part\PartBaseType.php:195 - + part.edit.mass Gewicht @@ -5719,7 +5719,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartBaseType.php:203 Part-DB1\src\Form\Part\PartBaseType.php:201 - + part.edit.partUnit Maßeinheit @@ -5729,7 +5729,7 @@ 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 @@ -5739,7 +5739,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartBaseType.php:250 Part-DB1\src\Form\Part\PartBaseType.php:246 - + part.edit.master_attachment Vorschaubild @@ -5750,7 +5750,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartBaseType.php:276 src\Form\PartType.php:91 - + part.edit.save Änderungen übernehmen @@ -5761,7 +5761,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartBaseType.php:277 src\Form\PartType.php:92 - + part.edit.reset Änderungen verwerfen @@ -5771,7 +5771,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartBaseType.php:105 Part-DB1\src\Form\Part\PartBaseType.php:103 - + part.edit.name.placeholder z.B. BC547 @@ -5781,7 +5781,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr 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 @@ -5791,7 +5791,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartBaseType.php:123 Part-DB1\src\Form\Part\PartBaseType.php:121 - + part.editmininstock.placeholder z.B. 1 @@ -5801,7 +5801,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartLotType.php:69 Part-DB1\src\Form\Part\PartLotType.php:69 - + part_lot.edit.description Beschreibung @@ -5811,7 +5811,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartLotType.php:78 Part-DB1\src\Form\Part\PartLotType.php:78 - + part_lot.edit.location Lagerort @@ -5821,7 +5821,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartLotType.php:89 Part-DB1\src\Form\Part\PartLotType.php:89 - + part_lot.edit.amount Menge @@ -5831,7 +5831,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartLotType.php:98 Part-DB1\src\Form\Part\PartLotType.php:97 - + part_lot.edit.instock_unknown Menge unbekannt @@ -5841,7 +5841,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr 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 @@ -5851,7 +5851,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartLotType.php:120 Part-DB1\src\Form\Part\PartLotType.php:119 - + part_lot.edit.expiration_date Ablaufdatum @@ -5861,7 +5861,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Part\PartLotType.php:128 Part-DB1\src\Form\Part\PartLotType.php:125 - + part_lot.edit.comment Notiz @@ -5871,7 +5871,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Permissions\PermissionsType.php:99 Part-DB1\src\Form\Permissions\PermissionsType.php:99 - + perm.group.other Verschiedene @@ -5881,7 +5881,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\TFAGoogleSettingsType.php:97 Part-DB1\src\Form\TFAGoogleSettingsType.php:97 - + tfa_google.enable Authenticator App aktivieren @@ -5891,7 +5891,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\TFAGoogleSettingsType.php:101 Part-DB1\src\Form\TFAGoogleSettingsType.php:101 - + tfa_google.disable Authenticator App deaktivieren @@ -5901,7 +5901,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\TFAGoogleSettingsType.php:74 Part-DB1\src\Form\TFAGoogleSettingsType.php:74 - + google_confirmation Bestätigungscode @@ -5912,7 +5912,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\UserSettingsType.php:108 src\Form\UserSettingsType.php:46 - + user.timezone.label Zeitzone @@ -5922,7 +5922,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\UserSettingsType.php:133 Part-DB1\src\Form\UserSettingsType.php:132 - + user.currency.label Bevorzugte Währung @@ -5933,7 +5933,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\UserSettingsType.php:139 src\Form\UserSettingsType.php:53 - + save Änderungen übernehmen @@ -5944,7 +5944,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\UserSettingsType.php:140 src\Form\UserSettingsType.php:54 - + reset Änderungen verwerfen @@ -5955,7 +5955,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\UserSettingsType.php:104 src\Form\UserSettingsType.php:45 - + user_settings.language.placeholder Serverweite Sprache @@ -5966,7 +5966,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\UserSettingsType.php:115 src\Form\UserSettingsType.php:48 - + user_settings.timezone.placeholder Serverweite Zeitzone @@ -5976,7 +5976,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\ElementTypeNameGenerator.php:79 Part-DB1\src\Services\ElementTypeNameGenerator.php:79 - + attachment.label Dateianhang @@ -5986,7 +5986,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\ElementTypeNameGenerator.php:81 Part-DB1\src\Services\ElementTypeNameGenerator.php:81 - + attachment_type.label Anhangstyp @@ -5996,7 +5996,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\ElementTypeNameGenerator.php:82 Part-DB1\src\Services\ElementTypeNameGenerator.php:82 - + project.label Projekt @@ -6006,7 +6006,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\ElementTypeNameGenerator.php:85 Part-DB1\src\Services\ElementTypeNameGenerator.php:85 - + measurement_unit.label Maßeinheit @@ -6016,7 +6016,7 @@ 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 @@ -6026,7 +6026,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\ElementTypeNameGenerator.php:91 Part-DB1\src\Services\ElementTypeNameGenerator.php:91 - + orderdetail.label Bestellinformation @@ -6036,7 +6036,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\ElementTypeNameGenerator.php:92 Part-DB1\src\Services\ElementTypeNameGenerator.php:92 - + pricedetail.label Preisinformation @@ -6046,7 +6046,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\ElementTypeNameGenerator.php:94 Part-DB1\src\Services\ElementTypeNameGenerator.php:94 - + user.label Benutzer @@ -6055,7 +6055,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\ElementTypeNameGenerator.php:95 - + parameter.label Parameter @@ -6064,7 +6064,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\ElementTypeNameGenerator.php:96 - + label_profile.label Labelprofil @@ -6075,7 +6075,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:161 new - + log.element_deleted.old_name.unknown Unbekannt @@ -6085,7 +6085,7 @@ 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! @@ -6095,7 +6095,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr 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 @@ -6104,7 +6104,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 - + tree.tools.tools Tools @@ -6115,7 +6115,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:107 src\Services\ToolsTreeBuilder.php:74 - + tree.tools.edit Bearbeiten @@ -6126,7 +6126,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 src\Services\ToolsTreeBuilder.php:81 - + tree.tools.show Zeige @@ -6136,7 +6136,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:111 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 - + tree.tools.system System @@ -6145,7 +6145,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:123 - + tree.tools.tools.label_dialog Labeldialog @@ -6154,7 +6154,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:130 - + tree.tools.tools.label_scanner Labelscanner @@ -6165,7 +6165,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:126 src\Services\ToolsTreeBuilder.php:62 - + tree.tools.edit.attachment_types Dateitypen @@ -6176,7 +6176,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:132 src\Services\ToolsTreeBuilder.php:64 - + tree.tools.edit.categories Kategorien @@ -6187,7 +6187,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:138 src\Services\ToolsTreeBuilder.php:66 - + tree.tools.edit.projects Projekte @@ -6198,7 +6198,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:144 src\Services\ToolsTreeBuilder.php:68 - + tree.tools.edit.suppliers Lieferanten @@ -6209,7 +6209,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:150 src\Services\ToolsTreeBuilder.php:70 - + tree.tools.edit.manufacturer Hersteller @@ -6219,7 +6219,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:179 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:156 - + tree.tools.edit.storelocation Lagerorte @@ -6229,7 +6229,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:185 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:162 - + tree.tools.edit.footprint Footprints @@ -6239,7 +6239,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:191 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:168 - + tree.tools.edit.currency Währungen @@ -6249,7 +6249,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:174 - + tree.tools.edit.measurement_unit Maßeinheiten @@ -6258,7 +6258,7 @@ 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 Labelprofil @@ -6268,7 +6268,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:209 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:180 - + tree.tools.edit.part Neues Bauteil @@ -6279,7 +6279,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 src\Services\ToolsTreeBuilder.php:77 - + tree.tools.show.all_parts Alle Teile @@ -6289,7 +6289,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:232 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 - + tree.tools.show.all_attachments Dateianhänge @@ -6300,7 +6300,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:210 new - + tree.tools.show.statistics Statistik @@ -6310,7 +6310,7 @@ 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 Benutzer @@ -6320,7 +6320,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:264 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:235 - + tree.tools.system.groups Gruppen @@ -6331,7 +6331,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:242 new - + tree.tools.system.event_log Event log @@ -6342,7 +6342,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 src\Services\TreeBuilder.php:124 - + entity.tree.new Neues Element @@ -6352,7 +6352,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\templates\Parts\info\_attachments_info.html.twig:34 obsolete - + attachment.external_file Externe Datei @@ -6362,7 +6362,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 obsolete - + attachment.edit Bearbeiten @@ -6373,7 +6373,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr templates\base.html.twig:88 obsolete - + barcode.scan Scanne Barcode @@ -6384,7 +6384,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr src\Form\UserSettingsType.php:49 obsolete - + user.theme.label Theme @@ -6395,7 +6395,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr src\Form\UserSettingsType.php:50 obsolete - + user_settings.theme.placeholder Serverweites Theme @@ -6405,7 +6405,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Type\SIUnitType.php:141 obsolete - + M M @@ -6415,14 +6415,14 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Type\SIUnitType.php:141 obsolete - + k k - + @@ -6431,7 +6431,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Type\SIUnitType.php:141 obsolete - + m m @@ -6441,7 +6441,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\src\Form\Type\SIUnitType.php:141 obsolete - + µ µ @@ -6452,7 +6452,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr new obsolete - + log.user_login.ip IP: @@ -6466,7 +6466,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr new obsolete - + log.undo_mode.undo Änderung rückgängig gemacht @@ -6480,7 +6480,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr new obsolete - + log.undo_mode.revert Element zurückgesetzt @@ -6491,7 +6491,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr new obsolete - + log.element_created.original_instock Alter Bestand @@ -6502,7 +6502,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr new obsolete - + log.element_deleted.old_name Alter Name @@ -6513,7 +6513,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr new obsolete - + log.element_edited.changed_fields Geänderte Eigenschaften @@ -6524,7 +6524,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr new obsolete - + log.instock_changed.comment Kommentar @@ -6535,7 +6535,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr new obsolete - + log.collection_deleted.deleted gelöschtes Element @@ -6546,7 +6546,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + go.exclamation Los! @@ -6557,7 +6557,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + language.english Englisch @@ -6568,7 +6568,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + language.german Deutsch @@ -6578,7 +6578,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + flash.password_change_needed Ihr Password muss geändert werden! @@ -6588,7 +6588,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + attachment.table.type Anhangstyp @@ -6598,7 +6598,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + attachment.table.element verknüpftes Element @@ -6608,7 +6608,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + attachment.edit.isPicture Bild? @@ -6618,7 +6618,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + attachment.edit.is3DModel 3D Modell? @@ -6628,7 +6628,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + attachment.edit.isBuiltin Eingebaute Ressource? @@ -6638,7 +6638,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + category.edit.default_comment.placeholder z.B. Nützlich für Schaltnetzteile @@ -6648,7 +6648,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + tfa_backup.regenerate_codes Neue Backupcodes erzeugen @@ -6658,7 +6658,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + validator.noneofitschild.self Ein Element kann nicht sich selbst als übergeordnet sein! @@ -6668,7 +6668,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + validator.noneofitschild.children Ein Kindelement kann nicht das übergeordnete Element sein! @@ -6678,7 +6678,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr 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 }}) @@ -6688,7 +6688,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + validator.part_lot.location_full Der Lagerort ist voll, daher können keine neue Teile hinzugefügt werden. @@ -6698,7 +6698,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + validator.part_lot.only_existing Der Lagerort wurde als "nur bestehende Teile" markiert, daher können keine neuen Teile hinzugefügt werden. @@ -6708,7 +6708,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + validator.part_lot.single_part Der Lagerort wurde als "Nur ein Bauteil" markiert, daher kann kein neues Bauteil hinzugefügt werden. @@ -6718,7 +6718,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + m_status.active.help Das Bauteil wird momentan und in absehbarer Zukunft produziert. @@ -6728,7 +6728,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + m_status.announced.help Das Bauteil wurde angekündigt, ist aber noch nicht erhältlich. @@ -6738,7 +6738,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + m_status.discontinued.help Das Bauteil wird nicht mehr hergestellt. @@ -6748,7 +6748,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + m_status.eol.help Die Produktion des Bauteils wird bald eingestellt. @@ -6758,7 +6758,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + m_status.nrfnd.help Im Moment wird das Bauteil noch hergestellt, die Verwendung für neue Designs ist nicht mehr empfohlen. @@ -6768,7 +6768,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + m_status.unknown.help Der Produktionsstatus ist nicht bekannt. @@ -6778,7 +6778,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + flash.success Erfolg @@ -6788,7 +6788,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + flash.error Fehler @@ -6798,7 +6798,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + flash.warning Warnung @@ -6808,7 +6808,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + flash.notice Hinweis @@ -6818,7 +6818,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + flash.info Info @@ -6828,7 +6828,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + validator.noLockout Sie können sich nicht selbst die Berechtigung Berechtigungen zu bearbeiten entziehen, um sich nicht versehentlich auszusperren! @@ -6838,7 +6838,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + attachment_type.edit.filetype_filter Erlaubte Dateitypen @@ -6848,7 +6848,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + attachment_type.edit.filetype_filter.help Sie können hier eine kommaseparierte Liste von Dateiendungen oder Mimetypen angeben, die eine hochgeladene Datei mit diesem Anhangstyp haben muss. Um alle unterstützten Bilddateien zu erlauben, kann image/* benutzt werden. @@ -6858,7 +6858,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + attachment_type.edit.filetype_filter.placeholder z.B. .txt, application/pdf, image/* @@ -6869,7 +6869,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + part.name.placeholder z.B. BC547 @@ -6879,7 +6879,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + entity.edit.not_selectable Nicht auswählbar @@ -6889,7 +6889,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + entity.edit.not_selectable.help Wenn diese Option aktiviert ist, dann kann dieses Element keinem Bauteil als Eigenschaft zugewiesen werden. Hilfreich z.B. wenn dieses Element nur der reinen Sortierung dienen soll. @@ -6899,7 +6899,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + bbcode.hint Hier kann BBCode verwendet werden (z.B. [b]Fett[/b]) @@ -6909,7 +6909,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + entity.create Element anlegen @@ -6919,7 +6919,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + entity.edit.save Speichern @@ -6929,7 +6929,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + category.edit.disable_footprints Deaktiviere Footprints @@ -6939,7 +6939,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + category.edit.disable_footprints.help Wenn diese Option aktiviert ist, ist die Footprint Eigenschaft für alle Bauteile in dieser Kategorie, deaktiviert. @@ -6949,7 +6949,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + category.edit.disable_manufacturers Deaktiviere Hersteller @@ -6959,7 +6959,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + category.edit.disable_manufacturers.help Wenn diese Option aktiviert ist, ist die Hersteller Eigenschaft für alle Bauteile in dieser Kategorie, deaktiviert. @@ -6969,7 +6969,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + category.edit.disable_autodatasheets Deaktiviere Automatische Datenblatt links @@ -6979,7 +6979,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + category.edit.disable_autodatasheets.help Wenn diese Option aktiviert ist, werden für Bauteile mit dieser Kategorie keine automatischen Datenblattlinks erzeugt. @@ -6989,7 +6989,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + category.edit.disable_properties Deaktiviere Eigenschaften @@ -6999,7 +6999,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + category.edit.disable_properties.help Wenn diese Option aktiviert ist, sind die Bauteileeigenschaften für alle Bauteile in dieser Kategorie, deaktiviert. @@ -7009,7 +7009,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + category.edit.partname_hint Namenshinweis @@ -7019,7 +7019,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + category.edit.partname_hint.placeholder z.B. 100nF @@ -7029,7 +7029,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + category.edit.partname_regex Namensfilter @@ -7039,7 +7039,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + category.edit.default_description Standard Beschreibung @@ -7049,7 +7049,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + category.edit.default_description.placeholder z.B. Kondensator, 10mmx10mm, SMD @@ -7059,7 +7059,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + category.edit.default_comment Standard Kommentar @@ -7069,7 +7069,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + company.edit.address Anschrift @@ -7079,7 +7079,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + company.edit.address.placeholder Musterstraße 314 31415 Beispielhausen @@ -7090,7 +7090,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + company.edit.phone_number Telefonnummer @@ -7100,7 +7100,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + company.edit.phone_number.placeholder +49 12345 6789 @@ -7110,7 +7110,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + company.edit.fax_number Faxnummer @@ -7120,7 +7120,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + company.edit.email E-Mail @@ -7130,7 +7130,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + company.edit.email.placeholder contact@foo.bar @@ -7140,7 +7140,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + company.edit.website Website @@ -7150,7 +7150,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + company.edit.website.placeholder https://www.foo.bar @@ -7160,7 +7160,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + company.edit.auto_product_url Produkt URL @@ -7170,7 +7170,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + company.edit.auto_product_url.help Wenn diese URL gesetzt ist, wird sie benutzt, um die URL eines Bauteils auf der Website des Herstellers zu erzeugen. Dabei wird %PARTNUMBER% mit der Bestellnummer ersetzt. @@ -7180,7 +7180,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + company.edit.auto_product_url.placeholder https://foo.bar/product/%PARTNUMBER% @@ -7190,7 +7190,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + currency.edit.iso_code ISO Code @@ -7200,7 +7200,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + currency.edit.exchange_rate Wechselkurs @@ -7210,7 +7210,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + footprint.edit.3d_model 3D Modell @@ -7220,7 +7220,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + mass_creation.lines Eingabe @@ -7230,7 +7230,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr obsolete obsolete - + mass_creation.lines.placeholder Element 1 Element 2 @@ -7242,7 +7242,7 @@ Element 3 obsolete obsolete - + entity.mass_creation.btn Anlegen @@ -7252,7 +7252,7 @@ Element 3 obsolete obsolete - + measurement_unit.edit.is_integer Ganzzahlig @@ -7262,7 +7262,7 @@ Element 3 obsolete obsolete - + measurement_unit.edit.is_integer.help Wenn diese Option aktiviert ist, werden alle Mengen in dieser Einheit auf ganze Zahlen gerundet. @@ -7272,7 +7272,7 @@ Element 3 obsolete obsolete - + measurement_unit.edit.use_si_prefix Benutze SI Prefixe @@ -7282,7 +7282,7 @@ Element 3 obsolete obsolete - + measurement_unit.edit.use_si_prefix.help Wenn diese Option aktiviert ist, werden bei Ausgabe der Zahlen SI Prefixe benutzt (z.B. 1,2kg anstatt 1200g) @@ -7292,7 +7292,7 @@ Element 3 obsolete obsolete - + measurement_unit.edit.unit_symbol Einheitensymbol @@ -7302,7 +7302,7 @@ Element 3 obsolete obsolete - + measurement_unit.edit.unit_symbol.placeholder z.B. m @@ -7312,7 +7312,7 @@ Element 3 obsolete obsolete - + storelocation.edit.is_full.label Lagerort voll @@ -7322,7 +7322,7 @@ Element 3 obsolete obsolete - + storelocation.edit.is_full.help Wenn diese Option aktiviert ist, ist es weder möglich neue Bauteile zu diesem Lagerort hinzuzufügen, noch die Anzahl bereits vorhandener Bauteile zu erhöhen. @@ -7332,7 +7332,7 @@ Element 3 obsolete obsolete - + storelocation.limit_to_existing.label Nur bestehende Bauteile @@ -7342,7 +7342,7 @@ Element 3 obsolete obsolete - + storelocation.limit_to_existing.help Wenn diese Option aktiv ist, ist es nicht möglich neue Bauteile zu diesem Lagerort hinzuzufügen, es ist aber möglich die Anzahl bereits vorhandener Bauteile zu erhöhen. @@ -7352,7 +7352,7 @@ Element 3 obsolete obsolete - + storelocation.only_single_part.label Nur ein Bauteil @@ -7362,7 +7362,7 @@ Element 3 obsolete obsolete - + storelocation.only_single_part.help Wenn diese Option aktiviert ist, kann dieser Lagerort nur ein einzelnes Bauteil aber in beliebiger Menge fassen. Hilfreich für kleine SMD Fächer oder Feeder. @@ -7372,7 +7372,7 @@ Element 3 obsolete obsolete - + storelocation.storage_type.label Lagertyp @@ -7382,7 +7382,7 @@ Element 3 obsolete obsolete - + storelocation.storage_type.help Hier kann eine Maßeinheit gewählt werden, die ein Bauteil haben muss, damit es in diesem Lagerort gelagert werden kann. @@ -7392,7 +7392,7 @@ Element 3 obsolete obsolete - + supplier.edit.default_currency Standardwährung @@ -7402,7 +7402,7 @@ Element 3 obsolete obsolete - + supplier.shipping_costs.label Versandkosten @@ -7412,7 +7412,7 @@ Element 3 obsolete obsolete - + user.username.placeholder z.B. m.muster @@ -7422,7 +7422,7 @@ Element 3 obsolete obsolete - + user.firstName.placeholder z.B. Max @@ -7432,7 +7432,7 @@ Element 3 obsolete obsolete - + user.lastName.placeholder z.B. Muster @@ -7442,7 +7442,7 @@ Element 3 obsolete obsolete - + user.email.placeholder z.B. m.muster@ecorp.com @@ -7452,7 +7452,7 @@ Element 3 obsolete obsolete - + user.department.placeholder z.B. Entwicklung @@ -7462,7 +7462,7 @@ Element 3 obsolete obsolete - + user.settings.pw_new.label Neues Passwort @@ -7472,7 +7472,7 @@ Element 3 obsolete obsolete - + user.settings.pw_confirm.label Neues Passwort bestätigen @@ -7482,7 +7482,7 @@ Element 3 obsolete obsolete - + user.edit.needs_pw_change Nutzer muss Passwort ändern @@ -7492,7 +7492,7 @@ Element 3 obsolete obsolete - + user.edit.user_disabled Benutzer deaktiviert (kein Login möglich) @@ -7502,7 +7502,7 @@ Element 3 obsolete obsolete - + user.create Benutzer anlegen @@ -7512,7 +7512,7 @@ Element 3 obsolete obsolete - + user.edit.save Speichern @@ -7522,7 +7522,7 @@ Element 3 obsolete obsolete - + entity.edit.reset Änderungen verwerfen @@ -7533,7 +7533,7 @@ Element 3 obsolete obsolete - + part.withdraw.caption: Bauteile entnehmen: @@ -7544,7 +7544,7 @@ Element 3 obsolete obsolete - + part.withdraw.btn Entnehmen @@ -7555,7 +7555,7 @@ Element 3 obsolete obsolete - + part.withdraw.comment: Kommentar/Zweck @@ -7566,7 +7566,7 @@ Element 3 obsolete obsolete - + part.add.caption Bauteil hinzufügen @@ -7577,7 +7577,7 @@ Element 3 obsolete obsolete - + part.add.btn Hinzufügen @@ -7588,7 +7588,7 @@ Element 3 obsolete obsolete - + part.add.comment Kommentar/Zweck @@ -7599,7 +7599,7 @@ Element 3 obsolete obsolete - + admin.comment Notizen @@ -7610,7 +7610,7 @@ Element 3 obsolete obsolete - + manufacturer_url.label Herstellerlink @@ -7621,7 +7621,7 @@ Element 3 obsolete obsolete - + part.description.placeholder z.B. NPN 45V 0,1A 0,5W @@ -7632,7 +7632,7 @@ Element 3 obsolete obsolete - + part.instock.placeholder z.B. 12 @@ -7643,7 +7643,7 @@ Element 3 obsolete obsolete - + part.mininstock.placeholder z.B. 10 @@ -7653,7 +7653,7 @@ Element 3 obsolete obsolete - + homepage.basedOn basierend auf Arbeit von @@ -7663,7 +7663,7 @@ Element 3 obsolete obsolete - + homepage.others und anderen @@ -7673,7 +7673,7 @@ Element 3 obsolete obsolete - + part.order.price_per pro @@ -7683,7 +7683,7 @@ Element 3 obsolete obsolete - + part.withdraw.caption Bauteile entnehmen @@ -7693,7 +7693,7 @@ Element 3 obsolete obsolete - + datatable.datatable.lengthMenu _MENU_ @@ -7703,7 +7703,7 @@ Element 3 obsolete obsolete - + perm.group.parts Bauteile @@ -7713,7 +7713,7 @@ Element 3 obsolete obsolete - + perm.group.structures Datenstrukturen @@ -7723,7 +7723,7 @@ Element 3 obsolete obsolete - + perm.group.system System @@ -7733,7 +7733,7 @@ Element 3 obsolete obsolete - + perm.parts Allgemein @@ -7743,7 +7743,7 @@ Element 3 obsolete obsolete - + perm.read Anzeigen @@ -7753,7 +7753,7 @@ Element 3 obsolete obsolete - + perm.edit Bearbeiten @@ -7763,7 +7763,7 @@ Element 3 obsolete obsolete - + perm.create Anlegen @@ -7773,7 +7773,7 @@ Element 3 obsolete obsolete - + perm.part.move Kategorie verändern @@ -7783,7 +7783,7 @@ Element 3 obsolete obsolete - + perm.delete Löschen @@ -7793,7 +7793,7 @@ Element 3 obsolete obsolete - + perm.part.search Suchen @@ -7803,7 +7803,7 @@ Element 3 obsolete obsolete - + perm.part.all_parts Alle Bauteile auflisten @@ -7813,7 +7813,7 @@ Element 3 obsolete obsolete - + perm.part.no_price_parts Teile ohne Preis auflisten @@ -7823,7 +7823,7 @@ Element 3 obsolete obsolete - + perm.part.obsolete_parts Obsolete Teile auflisten @@ -7833,7 +7833,7 @@ Element 3 obsolete obsolete - + perm.part.unknown_instock_parts Bauteile mit unbekanntem Bestand auflisten @@ -7843,7 +7843,7 @@ Element 3 obsolete obsolete - + perm.part.change_favorite Favoritenstatus ändern @@ -7853,7 +7853,7 @@ Element 3 obsolete obsolete - + perm.part.show_favorite Favoriten anzeigen @@ -7863,7 +7863,7 @@ Element 3 obsolete obsolete - + perm.part.show_last_edit_parts Zeige zuletzt bearbeitete/hinzugefügte Bauteile @@ -7873,7 +7873,7 @@ Element 3 obsolete obsolete - + perm.part.show_users Letzten bearbeitenden Nutzer anzeigen @@ -7883,7 +7883,7 @@ Element 3 obsolete obsolete - + perm.part.show_history Historie anzeigen @@ -7893,7 +7893,7 @@ Element 3 obsolete obsolete - + perm.part.name Name @@ -7903,7 +7903,7 @@ Element 3 obsolete obsolete - + perm.part.description Beschreibung @@ -7913,7 +7913,7 @@ Element 3 obsolete obsolete - + perm.part.instock Vorhanden @@ -7923,7 +7923,7 @@ Element 3 obsolete obsolete - + perm.part.mininstock Min. Bestand @@ -7933,7 +7933,7 @@ Element 3 obsolete obsolete - + perm.part.comment Notizen @@ -7943,7 +7943,7 @@ Element 3 obsolete obsolete - + perm.part.storelocation Lagerort @@ -7953,7 +7953,7 @@ Element 3 obsolete obsolete - + perm.part.manufacturer Hersteller @@ -7963,7 +7963,7 @@ Element 3 obsolete obsolete - + perm.part.orderdetails Bestellinformationen @@ -7973,7 +7973,7 @@ Element 3 obsolete obsolete - + perm.part.prices Preise @@ -7983,7 +7983,7 @@ Element 3 obsolete obsolete - + perm.part.attachments Dateianhänge @@ -7993,7 +7993,7 @@ Element 3 obsolete obsolete - + perm.part.order Bestellungen @@ -8003,7 +8003,7 @@ Element 3 obsolete obsolete - + perm.storelocations Lagerorte @@ -8013,7 +8013,7 @@ Element 3 obsolete obsolete - + perm.move Verschieben @@ -8023,7 +8023,7 @@ Element 3 obsolete obsolete - + perm.list_parts Teile auflisten @@ -8033,7 +8033,7 @@ Element 3 obsolete obsolete - + perm.part.footprints Footprints @@ -8043,7 +8043,7 @@ Element 3 obsolete obsolete - + perm.part.categories Kategorien @@ -8053,7 +8053,7 @@ Element 3 obsolete obsolete - + perm.part.supplier Lieferanten @@ -8063,7 +8063,7 @@ Element 3 obsolete obsolete - + perm.part.manufacturers Hersteller @@ -8073,7 +8073,7 @@ Element 3 obsolete obsolete - + perm.projects Projekte @@ -8083,7 +8083,7 @@ Element 3 obsolete obsolete - + perm.part.attachment_types Dateitypen @@ -8093,7 +8093,7 @@ Element 3 obsolete obsolete - + perm.tools.import Import @@ -8103,7 +8103,7 @@ Element 3 obsolete obsolete - + perm.tools.labels Labels @@ -8113,7 +8113,7 @@ Element 3 obsolete obsolete - + perm.tools.calculator Widerstandsrechner @@ -8123,7 +8123,7 @@ Element 3 obsolete obsolete - + perm.tools.footprints Footprints @@ -8133,7 +8133,7 @@ Element 3 obsolete obsolete - + perm.tools.ic_logos IC-Logos @@ -8143,7 +8143,7 @@ Element 3 obsolete obsolete - + perm.tools.statistics Statistik @@ -8153,7 +8153,7 @@ Element 3 obsolete obsolete - + perm.edit_permissions Berechtigungen ändern @@ -8163,7 +8163,7 @@ Element 3 obsolete obsolete - + perm.users.edit_user_name Nutzernamen ändern @@ -8173,7 +8173,7 @@ Element 3 obsolete obsolete - + perm.users.edit_change_group Gruppe ändern @@ -8183,7 +8183,7 @@ Element 3 obsolete obsolete - + perm.users.edit_infos Informationen ändern @@ -8193,7 +8193,7 @@ Element 3 obsolete obsolete - + perm.users.edit_permissions Berechtigungen ändern @@ -8203,7 +8203,7 @@ Element 3 obsolete obsolete - + perm.users.set_password Passwort ändern @@ -8213,7 +8213,7 @@ Element 3 obsolete obsolete - + perm.users.change_user_settings Benutzereinstellungen ändern @@ -8223,7 +8223,7 @@ Element 3 obsolete obsolete - + perm.database.see_status Status anzeigen @@ -8233,7 +8233,7 @@ Element 3 obsolete obsolete - + perm.database.update_db Datenbank updaten @@ -8243,7 +8243,7 @@ Element 3 obsolete obsolete - + perm.database.read_db_settings Einstellungen anzeigen @@ -8253,7 +8253,7 @@ Element 3 obsolete obsolete - + perm.database.write_db_settings Einstellungen ändern @@ -8263,7 +8263,7 @@ Element 3 obsolete obsolete - + perm.config.read_config Konfiguration anzeigen @@ -8273,7 +8273,7 @@ Element 3 obsolete obsolete - + perm.config.edit_config Konfiguration ändern @@ -8283,7 +8283,7 @@ Element 3 obsolete obsolete - + perm.config.server_info Server info @@ -8293,7 +8293,7 @@ Element 3 obsolete obsolete - + perm.config.use_debug Debugtools benutzen @@ -8303,7 +8303,7 @@ Element 3 obsolete obsolete - + perm.show_logs Logs anzeigen @@ -8313,7 +8313,7 @@ Element 3 obsolete obsolete - + perm.delete_logs Logeinträge löschen @@ -8323,7 +8323,7 @@ Element 3 obsolete obsolete - + perm.self.edit_infos Informationen ändern @@ -8333,7 +8333,7 @@ Element 3 obsolete obsolete - + perm.self.edit_username Benutzernamen ändern @@ -8343,7 +8343,7 @@ Element 3 obsolete obsolete - + perm.self.show_permissions Berechtigungen anzeigen @@ -8353,7 +8353,7 @@ Element 3 obsolete obsolete - + perm.self.show_logs Logs anzeigen @@ -8363,7 +8363,7 @@ Element 3 obsolete obsolete - + perm.self.create_labels Labels erstellen @@ -8373,7 +8373,7 @@ Element 3 obsolete obsolete - + perm.self.edit_options Einstellungen ändern @@ -8383,7 +8383,7 @@ Element 3 obsolete obsolete - + perm.self.delete_profiles Profile löschen @@ -8393,7 +8393,7 @@ Element 3 obsolete obsolete - + perm.self.edit_profiles Profile bearbeiten @@ -8403,7 +8403,7 @@ Element 3 obsolete obsolete - + perm.part.tools Tools @@ -8413,7 +8413,7 @@ Element 3 obsolete obsolete - + perm.groups Gruppen @@ -8423,7 +8423,7 @@ Element 3 obsolete obsolete - + perm.users Benutzer @@ -8433,7 +8433,7 @@ Element 3 obsolete obsolete - + perm.database Datenbank @@ -8443,7 +8443,7 @@ Element 3 obsolete obsolete - + perm.config Einstellungen @@ -8453,7 +8453,7 @@ Element 3 obsolete obsolete - + perm.system System @@ -8463,7 +8463,7 @@ Element 3 obsolete obsolete - + perm.self Eigenen Benutzer bearbeiten @@ -8473,7 +8473,7 @@ Element 3 obsolete obsolete - + perm.labels Labels @@ -8483,7 +8483,7 @@ Element 3 obsolete obsolete - + perm.part.category Kategorie @@ -8493,7 +8493,7 @@ Element 3 obsolete obsolete - + perm.part.minamount Mindestbestand @@ -8503,7 +8503,7 @@ Element 3 obsolete obsolete - + perm.part.footprint Footprint @@ -8513,7 +8513,7 @@ Element 3 obsolete obsolete - + perm.part.mpn MPN @@ -8523,7 +8523,7 @@ Element 3 obsolete obsolete - + perm.part.status Herstellungsstatus @@ -8533,7 +8533,7 @@ Element 3 obsolete obsolete - + perm.part.tags Tags @@ -8543,7 +8543,7 @@ Element 3 obsolete obsolete - + perm.part.unit Maßeinheit @@ -8553,7 +8553,7 @@ Element 3 obsolete obsolete - + perm.part.mass Gewicht @@ -8563,7 +8563,7 @@ Element 3 obsolete obsolete - + perm.part.lots Lagerorte @@ -8573,7 +8573,7 @@ Element 3 obsolete obsolete - + perm.show_users Letzten bearbeitenden Nutzer anzeigen @@ -8583,7 +8583,7 @@ Element 3 obsolete obsolete - + perm.currencies Währungen @@ -8593,7 +8593,7 @@ Element 3 obsolete obsolete - + perm.measurement_units Maßeinheiten @@ -8603,7 +8603,7 @@ Element 3 obsolete obsolete - + user.settings.pw_old.label Altes Passwort @@ -8613,7 +8613,7 @@ Element 3 obsolete obsolete - + pw_reset.submit Passwort zurücksetzen @@ -8623,7 +8623,7 @@ Element 3 obsolete obsolete - + u2f_two_factor Sicherheitsschlüssel (U2F) @@ -8633,13 +8633,13 @@ Element 3 obsolete obsolete - + google Google - + tfa.provider.webauthn_two_factor_provider Sicherheitsschlüssel @@ -8649,7 +8649,7 @@ Element 3 obsolete obsolete - + tfa.provider.google Authenticator App @@ -8659,7 +8659,7 @@ Element 3 obsolete obsolete - + Login successful Erfolgreich eingeloggt! @@ -8669,7 +8669,7 @@ Element 3 obsolete obsolete - + log.type.exception Unbehandelte Exception (veraltet) @@ -8679,7 +8679,7 @@ Element 3 obsolete obsolete - + log.type.user_login Nutzer eingeloggt @@ -8689,7 +8689,7 @@ Element 3 obsolete obsolete - + log.type.user_logout Nutzer ausgeloggt @@ -8699,7 +8699,7 @@ Element 3 obsolete obsolete - + log.type.unknown Unbekannt @@ -8709,7 +8709,7 @@ Element 3 obsolete obsolete - + log.type.element_created Element angelegt @@ -8719,7 +8719,7 @@ Element 3 obsolete obsolete - + log.type.element_edited Element bearbeitet @@ -8729,7 +8729,7 @@ Element 3 obsolete obsolete - + log.type.element_deleted Element gelöscht @@ -8739,7 +8739,7 @@ Element 3 obsolete obsolete - + log.type.database_updated Datenbank aktualisiert @@ -8748,7 +8748,7 @@ Element 3 obsolete - + perm.revert_elements Element zurücksetzen @@ -8757,7 +8757,7 @@ Element 3 obsolete - + perm.show_history Historie anzeigen @@ -8766,7 +8766,7 @@ Element 3 obsolete - + perm.tools.lastActivity Letzte Aktivität anzeigen @@ -8775,7 +8775,7 @@ Element 3 obsolete - + perm.tools.timeTravel Alte Versionsstände anzeigen (Zeitreisen) @@ -8784,7 +8784,7 @@ Element 3 obsolete - + log.type. __log.type. @@ -8793,7 +8793,7 @@ Element 3 obsolete - + tfa_u2f.key_added_successful Sicherheitsschlüssel erfolgreich hinzugefügt. @@ -8802,7 +8802,7 @@ Element 3 obsolete - + Username Benutzername @@ -8811,7 +8811,7 @@ Element 3 obsolete - + log.type.security.google_disabled Authenticator App deaktiviert @@ -8820,7 +8820,7 @@ Element 3 obsolete - + log.type.security.u2f_removed Sicherheitsschlüssel gelöscht @@ -8829,7 +8829,7 @@ Element 3 obsolete - + log.type.security.u2f_added Sicherheitsschlüssel hinzugefügt @@ -8838,7 +8838,7 @@ Element 3 obsolete - + log.type.security.backup_keys_reset Neue Backupkeys erzeugt @@ -8847,7 +8847,7 @@ Element 3 obsolete - + log.type.security.google_enabled Authenticator App aktiviert @@ -8856,7 +8856,7 @@ Element 3 obsolete - + log.type.security.password_changed Passwort geändert @@ -8865,7 +8865,7 @@ Element 3 obsolete - + log.type.security.trusted_device_reset Vertrauenswürdige Geräte zurückgesetzt @@ -8874,7 +8874,7 @@ Element 3 obsolete - + log.type.collection_element_deleted Kollektionselement gelöscht @@ -8883,7 +8883,7 @@ Element 3 obsolete - + log.type.security.password_reset Passwort zurückgesetzt @@ -8892,7 +8892,7 @@ Element 3 obsolete - + log.type.security.2fa_admin_reset Zwei-Faktor-Authentifizierung durch Administrator zurückgesetzt @@ -8901,7 +8901,7 @@ Element 3 obsolete - + log.type.user_not_allowed Unerlaubter Zugriffsversuch @@ -8910,7 +8910,7 @@ Element 3 obsolete - + log.database_updated.success Erfolgreich @@ -8919,7 +8919,7 @@ Element 3 obsolete - + label_options.barcode_type.2D 2D @@ -8928,7 +8928,7 @@ Element 3 obsolete - + label_options.barcode_type.1D 1D @@ -8937,7 +8937,7 @@ Element 3 obsolete - + perm.part.parameters Parameter @@ -8946,7 +8946,7 @@ Element 3 obsolete - + perm.attachment_show_private Private Anhänge zeigen @@ -8955,7 +8955,7 @@ Element 3 obsolete - + perm.tools.label_scanner Labelscanner @@ -8964,7 +8964,7 @@ Element 3 obsolete - + perm.self.read_profiles Profile anzeigen @@ -8973,7 +8973,7 @@ Element 3 obsolete - + perm.self.create_profiles Profil anlegen @@ -8982,2203 +8982,2203 @@ Element 3 obsolete - + perm.labels.use_twig Twig Modus benutzen - + label_profile.showInDropdown In Barcode Schnellauswahl anzeigen - + group.edit.enforce_2fa Erzwinge Zwei-Faktor-Authentifizierung (2FA) - + group.edit.enforce_2fa.help 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 Nichts ausgewählt - + entity.delete.must_not_contain_parts Element "%PATH%" enthält noch Bauteile. Bearbeite die Bauteile, um dieses Element löschen zu können. - + entity.delete.must_not_contain_attachments Dateityp enthält noch Bauteile. Ändere deren Dateityp, um diesen Dateityp löschen zu können. - + entity.delete.must_not_contain_prices Währung enthält noch Bauteile. Ändere deren Währung, um diese Währung löschen zu können. - + entity.delete.must_not_contain_users Benutzer sind noch Teil dieser Gruppe. Ändere deren Gruppe, um diese Gruppe löschen zu können. - + part.table.edit Ändern - + part.table.edit.title Bauteil ändern - + part_list.action.action.title Aktion auswählen - + part_list.action.action.group.favorite Favorit - + part_list.action.action.favorite Bauteile favorisieren - + part_list.action.action.unfavorite Favorisierung aufheben - + part_list.action.action.group.change_field Change field - + part_list.action.action.change_category Kategorie ändern - + part_list.action.action.change_footprint Footprint ändern - + part_list.action.action.change_manufacturer Hersteller ändern - + part_list.action.action.change_unit Maßeinheit ändern - + part_list.action.action.delete Löschen - + part_list.action.submit Ok - + part_list.action.part_count %count% Bauteile ausgewählt! - + company.edit.quick.website Website öffnen - + company.edit.quick.email E-Mail senden - + company.edit.quick.phone Call phone - + company.edit.quick.fax Fax senden - + company.fax_number.placeholder z.B. +49 1234 567890 - + part.edit.save_and_clone Speichern und duplizieren - + validator.file_ext_not_allowed Dateierweiterung nicht erlaubt für diesen Anhangstyp. - + tools.reel_calc.title SMD Reel Rechner - + tools.reel_calc.inner_dia Innerer Durchmesser - + tools.reel_calc.outer_dia Äußerer Durchmesser - + tools.reel_calc.tape_thick Tape Dicke - + tools.reel_calc.part_distance Bauteile Abstand - + tools.reel_calc.update Update - + tools.reel_calc.parts_per_meter Bauteile pro Meter - + tools.reel_calc.result_length Tape Länge - + tools.reel_calc.result_amount Ungefähre Anzahl Bauteile - + tools.reel_calc.outer_greater_inner_error Fehler: Äußerer Durchmesser muss großer sein als der innere Durchmesser! - + tools.reel_calc.missing_values.error Bitte alle Werte angeben! - + tools.reel_calc.load_preset Preset laden - + tools.reel_calc.explanation Dieser Rechner erlaubt es Abzuschätzen wie viele Bauteile noch auf einer SMD Rolle (Reel) vorhanden sind. Messen Sie die angegeben Dimensionen auf der Rolle nach (oder nutzen Sie die Vorgaben) und drücken Sie "Update". - + perm.tools.reel_calculator SMD Reel Rechner - + tree.tools.tools.reel_calculator SMD Reel Rechner - + user.pw_change_needed.flash Passwortänderung benötigt! Bitte setze ein neues Passwort. - + tree.root_node.text Wurzel - + part_list.action.select_null Keine Elemente vorhanden! - + part_list.action.delete-title Möchten Sie diese Bauteile wirklich löschen? - + part_list.action.delete-message Diese Bauteile und alle verknüpften Informationen (Anhänge, Preisinformationen, etc.) werden gelöscht. Dies kann nicht rückgängig gemacht werden! - + part.table.actions.success Aktionen erfolgreich. - + attachment.edit.delete.confirm Möchten Sie diesen Anhang wirklich löschen? - + filter.text_constraint.value.operator.EQ Gleich - + filter.text_constraint.value.operator.NEQ Ungleich - + filter.text_constraint.value.operator.STARTS Beginnt mit - + filter.text_constraint.value.operator.CONTAINS Enthält - + filter.text_constraint.value.operator.ENDS Endet mit - + filter.text_constraint.value.operator.LIKE LIKE Ausdruck - + filter.text_constraint.value.operator.REGEX Regulärer Ausdruck - + filter.number_constraint.value.operator.BETWEEN Zwischen - + filter.number_constraint.AND und - + filter.entity_constraint.operator.EQ Gleich (ohne Kindelemente) - + filter.entity_constraint.operator.NEQ Ungleich (ohne Kindelemente) - + filter.entity_constraint.operator.INCLUDING_CHILDREN Gleich (inklusive Kindelementen) - + filter.entity_constraint.operator.EXCLUDING_CHILDREN Nicht gleich (inklusive Kindelemente) - + part.filter.dbId Datenbank ID - + filter.tags_constraint.operator.ANY Irgendeiner der Tags - + filter.tags_constraint.operator.ALL Alle der Tags - + filter.tags_constraint.operator.NONE Keine der Tags - + part.filter.lot_count Anzahl der Lagerbestände - + part.filter.attachments_count Anzahl der Anhänge - + part.filter.orderdetails_count Anzahl der Bestellinformationen - + part.filter.lotExpirationDate Bauteilebestand Ablaufdatum - + part.filter.lotNeedsRefill Lagerbestand benötigt Auffüllung - + part.filter.lotUnknwonAmount Lagerbestand mit unbekannter Anzahl - + part.filter.attachmentName Name des Anhangs - + filter.choice_constraint.operator.ANY Einer der Ausgewählten - + filter.choice_constraint.operator.NONE Keine der Ausgewählten - + part.filter.amount_sum Gesamtmenge - + filter.submit Update - + filter.discard Änderungen verwerfen - + filter.clear_filters Alle Filter zurücksetzen - + filter.title Filter - + 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 > + ]]> - + filter.parameter_value_constraint.operator.<= - Typ. Wert <= + - + filter.parameter_value_constraint.operator.>= - Typ. Wert >= + =]]> - + filter.parameter_value_constraint.operator.BETWEEN Typ. Wert zwischen - + filter.parameter_value_constraint.operator.IN_RANGE Im Wertebereich - + filter.parameter_value_constraint.operator.NOT_IN_RANGE Nicht im Wertebereich - + filter.parameter_value_constraint.operator.GREATER_THAN_RANGE Größer als der Wertebereich - + filter.parameter_value_constraint.operator.GREATER_EQUAL_RANGE Größer gleich der Wertebereich - + filter.parameter_value_constraint.operator.LESS_THAN_RANGE Kleiner als der Wertebereich - + filter.parameter_value_constraint.operator.LESS_EQUAL_RANGE Kleiner gleich der Wertebereich - + filter.parameter_value_constraint.operator.RANGE_IN_RANGE Bereich ist komplett im Wertebereich - + filter.parameter_value_constraint.operator.RANGE_INTERSECT_RANGE Bereich schneidet Wertebereich - + filter.text_constraint.value Kein Wert gesetzt - + filter.number_constraint.value1 Kein Wert gesetzt - + filter.number_constraint.value2 Maximaler Wert - + filter.datetime_constraint.value1 Kein Datum/Uhrzeit gesetzt - + filter.datetime_constraint.value2 Maximale Datum/Uhrzeit - + filter.constraint.add Filter hinzufügen - + part.filter.parameters_count Anzahl der Parameter - + part.filter.lotDescription Beschreibung des Bauteilebestand - + parts_list.search.searching_for - Suche Teile mit dem Suchbegriff <b>%keyword%</b> + %keyword%]]> - + parts_list.search_options.caption Aktivierte Suchoptionen - + attachment.table.element_type Typ des verknüpften Elements - + log.level.debug Debug - + log.level.info Info - + log.level.notice Hinweis - + log.level.warning Warnung - + log.level.error Fehler - + log.level.critical Kritisch - + log.level.alert Alarm - + log.level.emergency Notfall - + log.type.security Sicherheitsereignis - + log.type.instock_changed [ALT] Bestand geändert - + log.target_id ID des Zielelements - + entity.info.parts_count_recursive Bauteile mit diesem Element oder dessen Kindelementen - + tools.server_infos.title Server Infos - + permission.preset.read_only Nur Lesen - + permission.preset.read_only.desc Erlaube nur lesende Operationen auf Daten - + permission.preset.all_inherit Alle Erben - + permission.preset.all_inherit.desc Setze all Berechtigungen auf Erben - + permission.preset.all_forbid Alles Verbieten - + permission.preset.all_forbid.desc Setze alle Berechtigungen auf Verbieten - + permission.preset.all_allow Alles Erlauben - + permission.preset.all_allow.desc Setze alle Berechtigungen auf Erlauben - + perm.server_infos Server Infos - + permission.preset.editor Bearbeiter - + permission.preset.editor.desc Erlauben Bauteile und Datenstrukturen zu bearbeiten - + permission.preset.admin Administrator - + permission.preset.admin.desc Administrative Aktionen erlauben - + permission.preset.button Vorlage Anwenden - + perm.attachments.show_private Private Anhänge anzeigen - + perm.attachments.list_attachments Liste aller Anhänge anzeigen - + user.edit.permission_success Berechtigungsvorlage erfolgreich angewendet. Prüfen Sie, dass die neuen Berechtigungen ihrer Erwartung entsprechen. - + perm.group.data Daten - + part_list.action.action.group.needs_review Review benötigt - + part_list.action.action.set_needs_review Review benötigt Status setzen - + part_list.action.action.unset_needs_review Review benötigt Status entfernen - + part.edit.ipn Internal Part Number (IPN) - + part.ipn.not_defined Nicht definiert - + part.table.ipn IPN - + currency.edit.update_rate Wechselkurs abfragen - + currency.edit.exchange_rate_update.unsupported_currency Die Währung wird vom Wechselkursprovider nicht unterstützt. Bitte überprüfen Sie die Konfiguration der Wechselkursprovider. - + currency.edit.exchange_rate_update.generic_error Wechselkurs kann nicht abgefragt werden. Bitte überprüfen Sie die Konfiguration der Wechselkursprovider. - + currency.edit.exchange_rate_updated.success Wechselkurs erfolgreich aktualisiert. - + project.bom.quantity BOM Menge - + project.bom.mountnames Bestückungsnamen - + project.bom.name Name - + project.bom.comment Notizen - + project.bom.part Bauteil - + project.bom.add_entry Eintrag hinzufügen - + part_list.action.group.projects Projekte - + part_list.action.projects.add_to_project Bauteile zu Projekt hinzufügen - + project.bom.delete.confirm Wollen sie diesen BOM Eintrag wirklich löschen? - + project.add_parts_to_project Bauteile zur Projekt BOM hinzufügen - + part.info.add_part_to_project Dieses Bauteil zu einem Projekt hinzufügen - + project_bom_entry.label BOM Eintrag - + project.edit.status Projektstatus - + project.status.draft Entwurf - + project.status.planning In Planung - + project.status.in_production In Produktion - + project.status.finished Abgeschlossen - + project.status.archived Archiviert - + part.new_build_part.error.build_part_already_exists Dieses Projekt hat bereits ein verknüpftes Bauteil. - + project.edit.associated_build_part Verknüpftes Produktionsbauteil - + project.edit.associated_build_part.add Produktionsbauteil hinzufügen - + project.edit.associated_build.hint Dieses Bauteil repräsentiert die gebauten Instanzen des Projektes, die irgendwo gelagert werden - + part.info.projectBuildPart.hint Dieses Bauteil repräsentiert die gebauten Instanzen folgendes Projektes und ist mit diesem verknüpft - + part.is_build_part Ist Produktionsbauteil - + project.info.title Projektinfo - + project.info.bom_entries_count BOM Einträge - + project.info.sub_projects_count Unterprojekte - + project.info.bom_add_parts BOM Einträge hinzufügen - + project.info.info.label Info - + project.info.sub_projects.label Unterprojekte - + project.bom.price Preis - + part.info.withdraw_modal.title.withdraw Bauteile aus Lot entnehmen - + part.info.withdraw_modal.title.add Bauteile zu Lot hinzufügen - + part.info.withdraw_modal.title.move Verschiebe Bauteile in ein anderes Lot - + part.info.withdraw_modal.amount Menge - + part.info.withdraw_modal.move_to Verschieben in - + part.info.withdraw_modal.comment Kommentar - + part.info.withdraw_modal.comment.hint Sie können hier einen Kommentar eintragen, der beschreibt warum diese Aktion durchgeführt wurde (z.B. wofür dieses Bauteil benötigt wurde). Diese Information wird im Log gespeichert. - + modal.close Schließen - + modal.submit Absenden - + part.withdraw.success Bauteile erfolgreich entnommen/hinzugefügt/verschoben. - + perm.parts_stock Bauteilbestand - + perm.parts_stock.withdraw Bauteile aus Bestand entnehmen - + perm.parts_stock.add Bauteile zu Bestand hinzufügen - + perm.parts_stock.move Bauteile zwischen Beständen verschieben - + user.permissions_schema_updated Das Berechtigungsschema deines Benutzeraccounts wurde auf die neuste Version aktualisiert. - + log.type.part_stock_changed Bauteilebestand geändert - + log.part_stock_changed.withdraw Bauteile entnommen - + log.part_stock_changed.add Bauteile hinzugefügt - + log.part_stock_changed.move Bauteile verschoben - + log.part_stock_changed.comment Kommentar - + log.part_stock_changed.change Änderung - + log.part_stock_changed.move_target Verschoben in - + tools.builtin_footprints_viewer.title Mitgelieferte Footprint Bilder - + tools.builtin_footprints_viewer.hint Diese Galerie listet alle mitgelieferten Footprint Bilder auf. Wenn Sie diese in einem Anhang nutzen wollen, tippen Sie den Namen (oder ein Stichwort) in das URL-Feld des Anhangs ein und wählen Sie das gewünschte Bild aus dem Dropdown-Menü aus. - + tools.ic_logos.title IC Logos - + part_list.action.group.labels Labels - + part_list.action.projects.generate_label Labels erzeugen (für Bauteile) - + part_list.action.projects.generate_label_lot Labels erzeugen (für Bestände der Bauteile) - + part_list.action.generate_label.empty Leeres Label - + project.info.builds.label Bau - + project.builds.build_not_possible Bau nicht möglich: Nicht genügend Bauteile vorhanden - + project.builds.following_bom_entries_miss_instock Folgende Bauteile haben nicht genug Bestand um dieses Projekt mindestens einmal zu bauen: - + project.builds.stocked vorhanden - + project.builds.needed benötigt - + project.builds.build_possible Bau möglich - + 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!]]> - + project.builds.following_bom_entries_miss_instock_n Es sind nicht genügend Bauteile auf Lager, um dieses Projekt %number_of_builds% mal zu bauen. Von folgenden Bauteilen ist nicht genügend auf Lager. - + project.build.flash.invalid_input Projekt kann nicht gebaut werden. Bitte Eingaben überprüfen! - + project.build.required_qty Benötigte Anzahl - + project.build.btn_build Bauen - + project.build.help Wählen Sie aus, aus welchen Beständen die zum Bau notwendigen Bauteile genommen werden sollen (und in welcher Anzahl). Setzen Sie den Haken für jeden BOM Eintrag, wenn sie die Bauteile entnommen haben, oder nutzen Sie die oberste Checkbox, um alle Haken auf einmal zu setzen. - + project.build.buildsPartLot.new_lot Neuen Bestand anlegen - + project.build.add_builds_to_builds_part Gebaute Instanzen zum Produktionsbauteil des Projektes hinzufügen - + project.build.builds_part_lot Ziel-Bestand - + project.builds.number_of_builds Zu bauende Anzahl - + project.builds.no_stocked_builds Anzahl gelagerter gebauter Instanzen - + user.change_avatar.label Profilbild ändern - + user_settings.change_avatar.label Profilbild ändern - + user_settings.remove_avatar.label Profilbild löschen - + part.edit.name.category_hint Hinweis von Kategorie - + category.edit.partname_regex.placeholder z.B. "/Kondensator \d+ nF/i" - + category.edit.partname_regex.help Ein PCRE-kompatibler regulärer Ausdruck, den der Bauteilename erfüllen muss. - + 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"]]> - + entity.select.group.new_not_added_to_DB Neu (noch nicht zur DB hinzugefügt) - + part.edit.save_and_new Speichern und neues leeres Bauteil erstellen - + homepage.first_steps.title Erste Schritte - + 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önne direkt ein <a href="%url%">neues Bauteil erstellen</a>. + neues Bauteil erstellen.]]> - + homepage.first_steps.hide_hint Dieser Hinweis wird verborgen, sobald Sie das erste Bauteil erstellt haben. - + 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]]> - + log.element_edited.changed_fields.category Kategorie - + log.element_edited.changed_fields.footprint Footprint - + log.element_edited.changed_fields.manufacturer Hersteller - + log.element_edited.changed_fields.value_typical typ. Wert - + log.element_edited.changed_fields.pw_reset_expires Passwort Reset - + log.element_edited.changed_fields.comment Notizen - + log.element_edited.changed_fields.supplierpartnr Bestellnummer - + log.element_edited.changed_fields.supplier_product_url Produkt URL - + log.element_edited.changed_fields.price Preis - + log.element_edited.changed_fields.min_discount_quantity Mindestbestellmenge - + log.element_edited.changed_fields.original_filename Originaler Dateiname - + log.element_edited.changed_fields.path Dateipfad - + log.element_edited.changed_fields.description Beschreibung - + log.element_edited.changed_fields.manufacturing_status Herstellungsstatus - + log.element_edited.changed_fields.options.barcode_type Barcodetyp - + log.element_edited.changed_fields.status Status - + log.element_edited.changed_fields.quantity BOM Menge - + log.element_edited.changed_fields.mountnames Bestückungsnamen - + log.element_edited.changed_fields.name Name - + log.element_edited.changed_fields.part Bauteil - + log.element_edited.changed_fields.price_currency Währung des Preises - + log.element_edited.changed_fields.partname_hint Namenshinweis - + log.element_edited.changed_fields.partname_regex Namensfilter - + log.element_edited.changed_fields.disable_footprints Deaktiviere Footprints - + log.element_edited.changed_fields.disable_manufacturers Deaktiviere Hersteller - + log.element_edited.changed_fields.disable_autodatasheets Deaktiviere Automatische Datenblatt links - + log.element_edited.changed_fields.disable_properties Deaktiviere Eigenschaften - + log.element_edited.changed_fields.default_description Standard Beschreibung - + log.element_edited.changed_fields.default_comment Standard Kommentar - + log.element_edited.changed_fields.filetype_filter Erlaubte Dateitypen - + log.element_edited.changed_fields.not_selectable Nicht auswählbar - + log.element_edited.changed_fields.parent Übergeordnetes Element - + log.element_edited.changed_fields.shipping_costs Versandkosten - + log.element_edited.changed_fields.default_currency Standardwährung - + log.element_edited.changed_fields.address Anschrift - + log.element_edited.changed_fields.phone_number Telefonnummer - + log.element_edited.changed_fields.fax_number Faxnummer - + log.element_edited.changed_fields.email_address E-Mail - + log.element_edited.changed_fields.website Website - + log.element_edited.changed_fields.auto_product_url Produkt URL - + log.element_edited.changed_fields.is_full Lagerort voll - + log.element_edited.changed_fields.limit_to_existing_parts Nur bestehende Bauteile - + log.element_edited.changed_fields.only_single_part Nur ein Bauteil - + log.element_edited.changed_fields.storage_type Lagertyp - + log.element_edited.changed_fields.footprint_3d 3D Modell - + log.element_edited.changed_fields.master_picture_attachment Vorschaubild - + log.element_edited.changed_fields.exchange_rate Wechselkurs - + log.element_edited.changed_fields.iso_code ISO Code - + log.element_edited.changed_fields.unit Einheitensymbol - + log.element_edited.changed_fields.is_integer Ganzzahlig - + log.element_edited.changed_fields.use_si_prefix Benutze SI Prefixe - + log.element_edited.changed_fields.options.width Breite - + log.element_edited.changed_fields.options.height Höhe - + log.element_edited.changed_fields.options.supported_element Elementtyp - + log.element_edited.changed_fields.options.additional_css Zusätzliches CSS - + log.element_edited.changed_fields.options.lines Content - + log.element_edited.changed_fields.permissions.data Berechtigungen - + log.element_edited.changed_fields.disabled Deaktiviert - + log.element_edited.changed_fields.theme Theme - + log.element_edited.changed_fields.timezone Zeitzone - + log.element_edited.changed_fields.language Sprache - + log.element_edited.changed_fields.email E-Mail - + log.element_edited.changed_fields.department Abteilung - + log.element_edited.changed_fields.last_name Vorname - + log.element_edited.changed_fields.first_name Nachname - + log.element_edited.changed_fields.group Gruppe - + log.element_edited.changed_fields.currency Währung - + log.element_edited.changed_fields.enforce2FA Erzwinge 2FA - + log.element_edited.changed_fields.symbol Symbol - + log.element_edited.changed_fields.value_min Min. Wert - + log.element_edited.changed_fields.value_max Max. Wert - + log.element_edited.changed_fields.value_text Text Wert - + log.element_edited.changed_fields.show_in_table In Tabelle anzeigen - + log.element_edited.changed_fields.attachment_type Dateityp - + log.element_edited.changed_fields.needs_review Review benötigt - + 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 Mindestbestand - + log.element_edited.changed_fields.manufacturer_product_url Link zur Produktseite - + log.element_edited.changed_fields.manufacturer_product_number MPN - + log.element_edited.changed_fields.partUnit Maßeinheit - + log.element_edited.changed_fields.expiration_date Ablaufdatum - + log.element_edited.changed_fields.amount Menge - + log.element_edited.changed_fields.storage_location Lagerort - + attachment.max_file_size Maximale Dateigröße - + user.saml_user SSO / SAML Benutzer - + user.saml_user.pw_change_hint Sie verwenden Single Sign-On (SSO) zum Einloggen. Sie können ihr Passwort und Zwei-Faktor-Authentifizierungen deshalb hier nicht konfigurieren. Nutzen Sie stattdessen die zentrale Seite ihres SSO Anbieters! - + login.sso_saml_login Single Sign-On Login (SSO) - + login.local_login_hint Das untenstehende Formular kann nur für den Login mit einem lokalen Benutzer verwendet werden. Wenn Sie sich stattdessen via Single Sign-On einloggen wollen, nutzen Sie den obenstehenden Button. - + part_list.action.action.export Bauteile exportieren - + part_list.action.export_json Export als JSON - + part_list.action.export_csv Export als CSV - + part_list.action.export_yaml Export als YAML - + part_list.action.export_xml Export als XML - + parts.import.title Bauteile importieren - + parts.import.errors.title Probleme beim Import - + parts.import.flash.error Es sind Fehler während des Exports aufgetreten. Dies ist vermutlich durch fehlerhafte Daten verursacht. - + parts.import.format.auto Automatisch (basierend auf Dateiendung) - + parts.import.flash.error.unknown_format Das Format konnte nicht automatisch bestimmt werden. Bitte wählen Sie das korrekte Format manuell! - + parts.import.flash.error.invalid_file Datei fehlerhaft / falsch formatiert. Überprüfen Sie, dass sie das richtige Format gewählt haben. - + parts.import.part_category.label Erzwinge Kategorie - + parts.import.part_category.help Wenn Sie hier eine Kategorie auswählen, dann werden alle importierten Bauteile dieser Kategorie zugewiesen, unabhängig davon, was in den Importdaten steht. - + import.create_unknown_datastructures Erstelle unbekannte Datenstrukturen - + import.create_unknown_datastructures.help Wenn diese Option gewählt ist, dann werden Datenstrukturen (z.B. Kategorien, Footprints, etc.), die noch nicht in der Datenbank existieren, automatisch angelegt. Wenn diese Option nicht gewählt ist, werden nur Datenstrukturen, die bereits in der Datenbank existieren, verwendet, und falls keine passende Struktur existiert, wird das entsprechende Feld des Bauteils leer gelassen. - + import.path_delimiter Pfadbegrenzer - + import.path_delimiter.help Der Begrenzer wird benutzt, um die verschiedenen Ebenen von Datenstrukturen (wie Kategorien, Footprints, etc.) in Pfadangaben zu trennen. - + 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.]]> - + parts.import.help Mit diesem Tool können sie Bauteile aus bestehenden Dateien importieren. Die Bauteile werden direkt in die Datenbank gespeichert (ohne die Möglichkeit, sie vorher noch einmal zu überprüfen). Prüfen Sie daher ihre Importdatei vor dem Upload hier! - + parts.import.flash.success Bauteileimport erfolgreich! - + parts.import.errors.imported_entities Importierte Bauteile - + perm.import Daten importieren - + parts.import.part_needs_review.label Markiere alle Bauteile als "Review benötigt" - + parts.import.part_needs_review.help Wenn diese Option ausgewählt ist, werden alle importierten Bauteile als "Review benötigt" markiert, unabhängig davon, was in den Importdaten steht. - + project.bom_import.flash.success %count% BOM Einträge erfolgreich importiert. - + project.bom_import.type Typ - + project.bom_import.type.kicad_pcbnew KiCAD Pcbnew BOM (CSV Datei) - + project.bom_import.clear_existing_bom Lösche existierende BOM Einträge vor dem Import - + project.bom_import.clear_existing_bom.help Wenn diese Option ausgewählt ist, werden alle bereits im Projekt existierenden BOM Einträge gelöscht und mit den importierten BOM Daten überschrieben. - + project.bom_import.flash.invalid_file Datei konnte nicht importiert werden. Überprüfen Sie, dass Sie den richtigen Dateityp gewählt haben. Fehlermeldung: %message% - + project.bom_import.flash.invalid_entries Validierungsfehler! Bitte überprüfen Sie die importierte Datei! - + project.import_bom Importiere BOM für Projekt - + project.edit.bom.import_bom BOM importieren diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 9f7464c2..ce14496e 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -11289,6 +11289,54 @@ Element 3 Show email on public profile page + + + log.details.title + Log details + + + + + log.user_login.login_from_ip + Login from IP address + + + + + log.user_login.ip_anonymize_hint + If the last digits of the IP address are missing, then the GPDR mode is enabled, in which IP addresses are anynomized. + + + + + log.user_not_allowed.unauthorized_access_attempt_to + Unauthorized access attempt to page + + + + + log.user_not_allowed.hint + The request was blocked. No action should be required. + + + + + log.no_comment + No comment + + + + + log.element_changed.field + Field + + + + + log.element_changed.data_before + Data before change + + error_table.error @@ -11301,5 +11349,77 @@ Element 3 Invalid Regex expression + + + log.element_changed.data_after + Data after change + + + + + log.element_changed.diff + Diff + + + + + log.undo.undo.short + Undo + + + + + log.undo.revert.short + Revert to this timestamp + + + + + log.view_version + View version + + + + + log.undo.undelete.short + Undelete + + + + + log.element_edited.changed_fields.id + ID + + + + + log.element_edited.changed_fields.id_owner + Owner + + + + + log.element_edited.changed_fields.parent_id + Parent + + + + + log.details.delete_entry + Delete log entry + + + + + log.delete.message.title + Do you really want to delete the log entry? + + + + + log.delete.message + If this is an element history entry, this breaks the element history! This can lead to unexpected results when using the time travel function. + +
diff --git a/translations/security.de.xlf b/translations/security.de.xlf index ef0a6b80..88e40a41 100644 --- a/translations/security.de.xlf +++ b/translations/security.de.xlf @@ -1,14 +1,14 @@ - + - + user.login_error.user_disabled Ihr Account ist deaktiviert! Kontaktiere einen Administrator, wenn Sie denken, dass dies ein Fehler ist. - + saml.error.cannot_login_local_user_per_saml Sie können sich per SSO nicht als lokaler Nutzer einloggen! Nutzen Sie stattdessen ihr lokales Passwort. diff --git a/translations/validators.de.xlf b/translations/validators.de.xlf index d9f05ac9..40068f2e 100644 --- a/translations/validators.de.xlf +++ b/translations/validators.de.xlf @@ -1,6 +1,6 @@ - + Part-DB1\src\Entity\Attachments\AttachmentContainingDBElement.php:0 @@ -37,7 +37,7 @@ 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! @@ -82,7 +82,7 @@ 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! @@ -102,7 +102,7 @@ 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 }}). @@ -122,7 +122,7 @@ 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 }}). @@ -142,7 +142,7 @@ 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 }}). @@ -152,7 +152,7 @@ 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. @@ -162,7 +162,7 @@ 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. @@ -171,7 +171,7 @@ obsolete - + validator.noneofitschild.self Ein Element kann nicht sein eigenenes übergeordnetes Element sein! @@ -180,127 +180,127 @@ obsolete - + validator.noneofitschild.children Ein Kindelement kann nicht das übergeordnete Element sein! - + validator.select_valid_category Bitte wählen Sie eine gültige Kategorie. - + validator.part_lot.only_existing Der Lagerort wurde als "nur bestehende Teile" markiert, daher können keine neuen Teile hinzugefügt werden. - + validator.part_lot.location_full.no_increase Lagerort ist voll. Bestand kann nicht erhöht werden (neuer Wert muss kleiner sein als {{old_amount}}). - + validator.part_lot.location_full Der Lagerort ist voll, daher können keine neue Teile hinzugefügt werden. - + validator.part_lot.single_part Der Lagerort wurde als "Nur ein Bauteil" markiert, daher kann kein neues Bauteil hinzugefügt werden. - + validator.attachment.must_not_be_null Sie müssen ein Dateitypen auswählen! - + validator.orderdetail.supplier_must_not_be_null Sie müssen einen Lieferanten auswählen! - + validator.measurement_unit.use_si_prefix_needs_unit Um SI-Prefixe zu aktivieren, müssen Sie einen Einheitensymbol setzen! - + part.ipn.must_be_unique Die Internal Part Number (IPN) muss einzigartig sein. Der Wert {{value}} wird bereits benutzt! - + validator.project.bom_entry.name_or_part_needed Sie müssen ein Bauteil auswählen, oder einen Namen für ein nicht-Bauteil BOM-Eintrag setzen! - + project.bom_entry.name_already_in_bom Es gibt bereits einen BOM Eintrag mit diesem Namen! - + project.bom_entry.part_already_in_bom Dieses Bauteil existiert bereits in der BOM! - + project.bom_entry.mountnames_quantity_mismatch Die Anzahl der Bestückungsnamen muss mit der Menge der zu bestückenden Bauteile übereinstimmen! - + project.bom_entry.can_not_add_own_builds_part Die BOM eines Projektes kann nicht das eigene Produktionsbauteil enthalten! - + project.bom_has_to_include_all_subelement_parts Die Projekt-BOM muss alle Produktionsbauteile der Unterprojekte enthalten. Bauteil %part_name% des Projektes %project_name% fehlt! - + project.bom_entry.price_not_allowed_on_parts Sie können keinen Preis für Bauteil-BOM-Einträge definieren. Definieren Sie die Preise stattdessen auf dem Bauteil. - + validator.project_build.lot_bigger_than_needed Sie haben mehr zur Entnahme ausgewählt als notwendig. Entfernen Sie die überflüssige Anzahl. - + validator.project_build.lot_smaller_than_needed Sie haben weniger zur Entnahme ausgewählt, als zum Bau notwendig ist! Fügen Sie mehr hinzu. - + part.name.must_match_category_regex Der Bauteilename entspricht nicht dem regulären Ausdruck, der von der Kategorie vorgegeben wurde: %regex% - + validator.attachment.name_not_blank Wählen Sie einen Wert, oder laden Sie eine Datei hoch, um dessen Dateiname automatisch als Namen für diesen Anhang zu nutzen. diff --git a/yarn.lock b/yarn.lock index 07d0cf08..f2b509c7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1327,115 +1327,115 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== -"@esbuild/android-arm64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.18.tgz#4aa8d8afcffb4458736ca9b32baa97d7cb5861ea" - integrity sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw== +"@esbuild/android-arm64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" + integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== -"@esbuild/android-arm@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.18.tgz#74a7e95af4ee212ebc9db9baa87c06a594f2a427" - integrity sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw== +"@esbuild/android-arm@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d" + integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== -"@esbuild/android-x64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.18.tgz#1dcd13f201997c9fe0b204189d3a0da4eb4eb9b6" - integrity sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg== +"@esbuild/android-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1" + integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== -"@esbuild/darwin-arm64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.18.tgz#444f3b961d4da7a89eb9bd35cfa4415141537c2a" - integrity sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ== +"@esbuild/darwin-arm64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276" + integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== -"@esbuild/darwin-x64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.18.tgz#a6da308d0ac8a498c54d62e0b2bfb7119b22d315" - integrity sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A== +"@esbuild/darwin-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb" + integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== -"@esbuild/freebsd-arm64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.18.tgz#b83122bb468889399d0d63475d5aea8d6829c2c2" - integrity sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA== +"@esbuild/freebsd-arm64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2" + integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== -"@esbuild/freebsd-x64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.18.tgz#af59e0e03fcf7f221b34d4c5ab14094862c9c864" - integrity sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew== +"@esbuild/freebsd-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4" + integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== -"@esbuild/linux-arm64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.18.tgz#8551d72ba540c5bce4bab274a81c14ed01eafdcf" - integrity sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ== +"@esbuild/linux-arm64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb" + integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== -"@esbuild/linux-arm@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.18.tgz#e09e76e526df4f665d4d2720d28ff87d15cdf639" - integrity sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg== +"@esbuild/linux-arm@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a" + integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== -"@esbuild/linux-ia32@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.18.tgz#47878860ce4fe73a36fd8627f5647bcbbef38ba4" - integrity sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ== +"@esbuild/linux-ia32@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a" + integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== -"@esbuild/linux-loong64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.18.tgz#3f8fbf5267556fc387d20b2e708ce115de5c967a" - integrity sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ== +"@esbuild/linux-loong64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" + integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== -"@esbuild/linux-mips64el@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.18.tgz#9d896d8f3c75f6c226cbeb840127462e37738226" - integrity sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA== +"@esbuild/linux-mips64el@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289" + integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== -"@esbuild/linux-ppc64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.18.tgz#3d9deb60b2d32c9985bdc3e3be090d30b7472783" - integrity sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ== +"@esbuild/linux-ppc64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" + integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== -"@esbuild/linux-riscv64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.18.tgz#8a943cf13fd24ff7ed58aefb940ef178f93386bc" - integrity sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA== +"@esbuild/linux-riscv64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09" + integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== -"@esbuild/linux-s390x@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.18.tgz#66cb01f4a06423e5496facabdce4f7cae7cb80e5" - integrity sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw== +"@esbuild/linux-s390x@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829" + integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== -"@esbuild/linux-x64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.18.tgz#23c26050c6c5d1359c7b774823adc32b3883b6c9" - integrity sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA== +"@esbuild/linux-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4" + integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== -"@esbuild/netbsd-x64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.18.tgz#789a203d3115a52633ff6504f8cbf757f15e703b" - integrity sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg== +"@esbuild/netbsd-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462" + integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== -"@esbuild/openbsd-x64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.18.tgz#d7b998a30878f8da40617a10af423f56f12a5e90" - integrity sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA== +"@esbuild/openbsd-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691" + integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== -"@esbuild/sunos-x64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.18.tgz#ecad0736aa7dae07901ba273db9ef3d3e93df31f" - integrity sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg== +"@esbuild/sunos-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273" + integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== -"@esbuild/win32-arm64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.18.tgz#58dfc177da30acf956252d7c8ae9e54e424887c4" - integrity sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg== +"@esbuild/win32-arm64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f" + integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== -"@esbuild/win32-ia32@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.18.tgz#340f6163172b5272b5ae60ec12c312485f69232b" - integrity sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw== +"@esbuild/win32-ia32@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03" + integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== -"@esbuild/win32-x64@0.17.18": - version "0.17.18" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.18.tgz#3a8e57153905308db357fd02f57c180ee3a0a1fa" - integrity sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg== +"@esbuild/win32-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061" + integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== "@foliojs-fork/fontkit@^1.9.1": version "1.9.1" @@ -1752,9 +1752,9 @@ integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.17.34" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz#c119e85b75215178bc127de588e93100698ab4cc" - integrity sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w== + version "4.17.35" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz#c95dd4424f0d32e525d23812aa8ab8e4d3906c4f" + integrity sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg== dependencies: "@types/node" "*" "@types/qs" "*" @@ -1826,9 +1826,9 @@ integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== "@types/node@*": - version "20.1.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.1.0.tgz#258805edc37c327cf706e64c6957f241ca4c4c20" - integrity sha512-O+z53uwx64xY7D6roOi4+jApDGFg0qn6WHcxe5QeqjMaTezBO/mxdfFXIVAVVyNWKx84OmPB3L8kbVYOTeN34A== + version "20.1.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.1.4.tgz#83f148d2d1f5fe6add4c53358ba00d97fc4cdb71" + integrity sha512-At4pvmIOki8yuwLtd7BNHl3CiWNbtclUbNtScGx4OHfBd4/oWoJC8KRCIxXwkdndzhxOsPXihrsOoydxBjlE9Q== "@types/parse-json@^4.0.0": version "4.0.0" @@ -1904,125 +1904,125 @@ dependencies: "@types/yargs-parser" "*" -"@webassemblyjs/ast@1.11.5", "@webassemblyjs/ast@^1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.5.tgz#6e818036b94548c1fb53b754b5cae3c9b208281c" - integrity sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ== +"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" + integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== dependencies: - "@webassemblyjs/helper-numbers" "1.11.5" - "@webassemblyjs/helper-wasm-bytecode" "1.11.5" + "@webassemblyjs/helper-numbers" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" -"@webassemblyjs/floating-point-hex-parser@1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz#e85dfdb01cad16b812ff166b96806c050555f1b4" - integrity sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ== +"@webassemblyjs/floating-point-hex-parser@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" + integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== -"@webassemblyjs/helper-api-error@1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz#1e82fa7958c681ddcf4eabef756ce09d49d442d1" - integrity sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA== +"@webassemblyjs/helper-api-error@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" + integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== -"@webassemblyjs/helper-buffer@1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz#91381652ea95bb38bbfd270702351c0c89d69fba" - integrity sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg== +"@webassemblyjs/helper-buffer@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" + integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== -"@webassemblyjs/helper-numbers@1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz#23380c910d56764957292839006fecbe05e135a9" - integrity sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA== +"@webassemblyjs/helper-numbers@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" + integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.5" - "@webassemblyjs/helper-api-error" "1.11.5" + "@webassemblyjs/floating-point-hex-parser" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" "@xtuc/long" "4.2.2" -"@webassemblyjs/helper-wasm-bytecode@1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz#e258a25251bc69a52ef817da3001863cc1c24b9f" - integrity sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA== +"@webassemblyjs/helper-wasm-bytecode@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" + integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== -"@webassemblyjs/helper-wasm-section@1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz#966e855a6fae04d5570ad4ec87fbcf29b42ba78e" - integrity sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA== +"@webassemblyjs/helper-wasm-section@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" + integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== dependencies: - "@webassemblyjs/ast" "1.11.5" - "@webassemblyjs/helper-buffer" "1.11.5" - "@webassemblyjs/helper-wasm-bytecode" "1.11.5" - "@webassemblyjs/wasm-gen" "1.11.5" + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" -"@webassemblyjs/ieee754@1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz#b2db1b33ce9c91e34236194c2b5cba9b25ca9d60" - integrity sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg== +"@webassemblyjs/ieee754@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" + integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.5.tgz#482e44d26b6b949edf042a8525a66c649e38935a" - integrity sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ== +"@webassemblyjs/leb128@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" + integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.5.tgz#83bef94856e399f3740e8df9f63bc47a987eae1a" - integrity sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ== +"@webassemblyjs/utf8@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" + integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== "@webassemblyjs/wasm-edit@^1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz#93ee10a08037657e21c70de31c47fdad6b522b2d" - integrity sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ== + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" + integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== dependencies: - "@webassemblyjs/ast" "1.11.5" - "@webassemblyjs/helper-buffer" "1.11.5" - "@webassemblyjs/helper-wasm-bytecode" "1.11.5" - "@webassemblyjs/helper-wasm-section" "1.11.5" - "@webassemblyjs/wasm-gen" "1.11.5" - "@webassemblyjs/wasm-opt" "1.11.5" - "@webassemblyjs/wasm-parser" "1.11.5" - "@webassemblyjs/wast-printer" "1.11.5" + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-opt" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + "@webassemblyjs/wast-printer" "1.11.6" -"@webassemblyjs/wasm-gen@1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz#ceb1c82b40bf0cf67a492c53381916756ef7f0b1" - integrity sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA== +"@webassemblyjs/wasm-gen@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" + integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== dependencies: - "@webassemblyjs/ast" "1.11.5" - "@webassemblyjs/helper-wasm-bytecode" "1.11.5" - "@webassemblyjs/ieee754" "1.11.5" - "@webassemblyjs/leb128" "1.11.5" - "@webassemblyjs/utf8" "1.11.5" + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" -"@webassemblyjs/wasm-opt@1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz#b52bac29681fa62487e16d3bb7f0633d5e62ca0a" - integrity sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw== +"@webassemblyjs/wasm-opt@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" + integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== dependencies: - "@webassemblyjs/ast" "1.11.5" - "@webassemblyjs/helper-buffer" "1.11.5" - "@webassemblyjs/wasm-gen" "1.11.5" - "@webassemblyjs/wasm-parser" "1.11.5" + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" -"@webassemblyjs/wasm-parser@1.11.5", "@webassemblyjs/wasm-parser@^1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz#7ba0697ca74c860ea13e3ba226b29617046982e2" - integrity sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew== +"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" + integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== dependencies: - "@webassemblyjs/ast" "1.11.5" - "@webassemblyjs/helper-api-error" "1.11.5" - "@webassemblyjs/helper-wasm-bytecode" "1.11.5" - "@webassemblyjs/ieee754" "1.11.5" - "@webassemblyjs/leb128" "1.11.5" - "@webassemblyjs/utf8" "1.11.5" + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" -"@webassemblyjs/wast-printer@1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz#7a5e9689043f3eca82d544d7be7a8e6373a6fa98" - integrity sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA== +"@webassemblyjs/wast-printer@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" + integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== dependencies: - "@webassemblyjs/ast" "1.11.5" + "@webassemblyjs/ast" "1.11.6" "@xtuc/long" "4.2.2" "@webpack-cli/configtest@^1.2.0": @@ -2074,9 +2074,9 @@ acorn-globals@^6.0.0: acorn-walk "^7.1.1" acorn-import-assertions@^1.7.6: - version "1.8.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" - integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== + version "1.9.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== acorn-node@^1.3.0: version "1.8.2" @@ -2524,9 +2524,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001449: - version "1.0.30001485" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001485.tgz#026bb7319f1e483391872dc303a973d4f513f619" - integrity sha512-8aUpZ7sjhlOyiNsg+pgcrTTPUXKh+rg544QYHSvQErljVEKJzvkYkCR/hUFeeVoEfTToUtY9cUKNRC7+c45YkA== + version "1.0.30001487" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001487.tgz#d882d1a34d89c11aea53b8cdc791931bdab5fe1b" + integrity sha512-83564Z3yWGqXsh2vaH/mhXfEM0wX+NlBCm1jYHOb97TrTWJEmPTccZgeLTPBUUb0PNVo+oomb7wkimZBIERClA== chalk@^2.0.0, chalk@^2.3.2: version "2.4.2" @@ -3312,9 +3312,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.284: - version "1.4.385" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.385.tgz#1afd8d6280d510145148777b899ff481c65531ff" - integrity sha512-L9zlje9bIw0h+CwPQumiuVlfMcV4boxRjFIWDcLfFqTZNbkwOExBzfmswytHawObQX4OUhtNv8gIiB21kOurIg== + version "1.4.394" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.394.tgz#989abe104a40366755648876cde2cdeda9f31133" + integrity sha512-0IbC2cfr8w5LxTz+nmn2cJTGafsK9iauV2r5A5scfzyovqLrxuLoxOHE5OBobP3oVIggJT+0JfKnw9sm87c8Hw== emoji-regex@^8.0.0: version "8.0.0" @@ -3336,10 +3336,10 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -enhanced-resolve@^5.0.0, enhanced-resolve@^5.13.0: - version "5.13.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.13.0.tgz#26d1ecc448c02de997133217b5c1053f34a0a275" - integrity sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg== +enhanced-resolve@^5.0.0, enhanced-resolve@^5.14.0: + version "5.14.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.14.0.tgz#0b6c676c8a3266c99fa281e4433a706f5c0c61c4" + integrity sha512-+DCows0XNwLDcUhbFJPdlQEVnT2zXlCv7hPxemTz86/O+B/hCQ+mb7ydkPKiflpVraqLPCAfu7lDy+hBXueojw== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -3434,32 +3434,32 @@ esbuild-loader@^3.0.1: webpack-sources "^1.4.3" esbuild@^0.17.6: - version "0.17.18" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.18.tgz#f4f8eb6d77384d68cd71c53eb6601c7efe05e746" - integrity sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w== + version "0.17.19" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955" + integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw== optionalDependencies: - "@esbuild/android-arm" "0.17.18" - "@esbuild/android-arm64" "0.17.18" - "@esbuild/android-x64" "0.17.18" - "@esbuild/darwin-arm64" "0.17.18" - "@esbuild/darwin-x64" "0.17.18" - "@esbuild/freebsd-arm64" "0.17.18" - "@esbuild/freebsd-x64" "0.17.18" - "@esbuild/linux-arm" "0.17.18" - "@esbuild/linux-arm64" "0.17.18" - "@esbuild/linux-ia32" "0.17.18" - "@esbuild/linux-loong64" "0.17.18" - "@esbuild/linux-mips64el" "0.17.18" - "@esbuild/linux-ppc64" "0.17.18" - "@esbuild/linux-riscv64" "0.17.18" - "@esbuild/linux-s390x" "0.17.18" - "@esbuild/linux-x64" "0.17.18" - "@esbuild/netbsd-x64" "0.17.18" - "@esbuild/openbsd-x64" "0.17.18" - "@esbuild/sunos-x64" "0.17.18" - "@esbuild/win32-arm64" "0.17.18" - "@esbuild/win32-ia32" "0.17.18" - "@esbuild/win32-x64" "0.17.18" + "@esbuild/android-arm" "0.17.19" + "@esbuild/android-arm64" "0.17.19" + "@esbuild/android-x64" "0.17.19" + "@esbuild/darwin-arm64" "0.17.19" + "@esbuild/darwin-x64" "0.17.19" + "@esbuild/freebsd-arm64" "0.17.19" + "@esbuild/freebsd-x64" "0.17.19" + "@esbuild/linux-arm" "0.17.19" + "@esbuild/linux-arm64" "0.17.19" + "@esbuild/linux-ia32" "0.17.19" + "@esbuild/linux-loong64" "0.17.19" + "@esbuild/linux-mips64el" "0.17.19" + "@esbuild/linux-ppc64" "0.17.19" + "@esbuild/linux-riscv64" "0.17.19" + "@esbuild/linux-s390x" "0.17.19" + "@esbuild/linux-x64" "0.17.19" + "@esbuild/netbsd-x64" "0.17.19" + "@esbuild/openbsd-x64" "0.17.19" + "@esbuild/sunos-x64" "0.17.19" + "@esbuild/win32-arm64" "0.17.19" + "@esbuild/win32-ia32" "0.17.19" + "@esbuild/win32-x64" "0.17.19" escalade@^3.1.1: version "3.1.1" @@ -3832,12 +3832,13 @@ get-assigned-identifiers@^1.1.0: integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ== get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" - integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== dependencies: function-bind "^1.1.1" has "^1.0.3" + has-proto "^1.0.1" has-symbols "^1.0.3" get-port@^3.1.0: @@ -3955,6 +3956,11 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" @@ -4370,9 +4376,9 @@ jest-worker@^29.1.2: supports-color "^8.0.0" jquery@>=1.7, jquery@^3.5.1: - version "3.6.4" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.4.tgz#ba065c188142100be4833699852bf7c24dc0252f" - integrity sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ== + version "3.7.0" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.0.tgz#fe2c01a05da500709006d8790fe21c8a39d75612" + integrity sha512-umpJ0/k8X0MvD1ds0P9SfowREz2LenHsQaxSohMZ5OMNEU2r0tf8pdeEFTHMFxWVxKNyU9rTtK3CWzUCTKJUeQ== js-tokens@^4.0.0: version "4.0.0" @@ -4422,6 +4428,11 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== +json-formatter-js@^2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/json-formatter-js/-/json-formatter-js-2.3.4.tgz#0b49b6facd0d54cb220eb65988157c0977a85c6f" + integrity sha512-gmAzYRtPRmYzeAT4T7+t3NhTF89JOAIioCVDddl9YDb3ls3kWcskirafw/MZGJaRhEU6fRimGJHl7CC7gaAI2Q== + json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" @@ -5826,9 +5837,9 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.8: - version "7.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0" - integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== + version "7.5.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" + integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== dependencies: lru-cache "^6.0.0" @@ -6250,20 +6261,20 @@ terser-webpack-plugin@^4.2.3: webpack-sources "^1.4.3" terser-webpack-plugin@^5.3.0, terser-webpack-plugin@^5.3.7: - version "5.3.7" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz#ef760632d24991760f339fe9290deb936ad1ffc7" - integrity sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw== + version "5.3.8" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.8.tgz#415e03d2508f7de63d59eca85c5d102838f06610" + integrity sha512-WiHL3ElchZMsK27P8uIUh4604IgJyAW47LVXGbEoB21DbQcZ+OuMpGjVYnEUaqcWM6dO8uS2qUbA7LSCWqvsbg== dependencies: "@jridgewell/trace-mapping" "^0.3.17" jest-worker "^27.4.5" schema-utils "^3.1.1" serialize-javascript "^6.0.1" - terser "^5.16.5" + terser "^5.16.8" -terser@^5.16.5, terser@^5.3.4: - version "5.17.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.17.1.tgz#948f10830454761e2eeedc6debe45c532c83fd69" - integrity sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw== +terser@^5.16.8, terser@^5.3.4: + version "5.17.3" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.17.3.tgz#7f908f16b3cdf3f6c0f8338e6c1c674837f90d25" + integrity sha512-AudpAZKmZHkG9jueayypz4duuCFJMMNGRMwaPvQKWfxKedh8Z2x3OCoDqIIi1xx5+iwx1u6Au8XQcc9Lke65Yg== dependencies: "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" @@ -6618,9 +6629,9 @@ webpack-dev-middleware@^5.3.1: schema-utils "^4.0.0" webpack-dev-server@^4.8.0: - version "4.13.3" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.13.3.tgz#9feb740b8b56b886260bae1360286818a221bae8" - integrity sha512-KqqzrzMRSRy5ePz10VhjyL27K2dxqwXQLP5rAKwRJBPUahe7Z2bBWzHw37jeb8GCPKxZRO79ZdQUAPesMh/Nug== + version "4.15.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.0.tgz#87ba9006eca53c551607ea0d663f4ae88be7af21" + integrity sha512-HmNB5QeSl1KpulTBQ8UT4FPrByYyaLxpJoQ0+s7EvUrMc16m0ZS1sgb1XGqzmgCPk0c9y+aaXxn11tbLzuM7NQ== dependencies: "@types/bonjour" "^3.5.9" "@types/connect-history-api-fallback" "^1.3.5" @@ -6691,9 +6702,9 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5.74.0: - version "5.82.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.82.0.tgz#3c0d074dec79401db026b4ba0fb23d6333f88e7d" - integrity sha512-iGNA2fHhnDcV1bONdUu554eZx+XeldsaeQ8T67H6KKHl2nUSwX8Zm7cmzOA46ox/X1ARxf7Bjv8wQ/HsB5fxBg== + version "5.82.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.82.1.tgz#8f38c78e53467556e8a89054ebd3ef6e9f67dbab" + integrity sha512-C6uiGQJ+Gt4RyHXXYt+v9f+SN1v83x68URwgxNQ98cvH8kxiuywWGP4XeNZ1paOzZ63aY3cTciCEQJNFUljlLw== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^1.0.0" @@ -6704,7 +6715,7 @@ webpack@^5.74.0: acorn-import-assertions "^1.7.6" browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.13.0" + enhanced-resolve "^5.14.0" es-module-lexer "^1.2.1" eslint-scope "5.1.1" events "^3.2.0"