diff --git a/.env b/.env index 1eb7f8da..6e7c8362 100644 --- a/.env +++ b/.env @@ -59,3 +59,17 @@ EMAIL_SENDER_EMAIL=noreply@partdb.changeme # Set this to 1 to allow reset of a password per email ALLOW_EMAIL_PW_RESET=0 + +###################################################################################### +# History/Eventlog related settings +###################################################################################### + +# If you want to use full timetrave functionality + +# Save which fields were changed in a ElementEdited log entry +HISTORY_SAVE_CHANGED_FIELDS=1 +# Save the old data in the ElementEdited log entry (warning this could increase the database size in short time) +HISTORY_SAVE_CHANGED_DATA=0 +# Save the data of an element that gets removed into log entry. This allows to undelete an element +HISTORY_SAVE_REMOVED_DATA=0 + diff --git a/assets/css/app.css b/assets/css/app.css index d0a3fcf7..7d624435 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -242,6 +242,16 @@ showing the sidebar (on devices with md or higher) * Bootstrap extensions *****************************************/ +.bg-primary-striped { + background: repeating-linear-gradient( + -45deg, + var(--primary), + var(--primary) 10px, + var(--info) 10px, + var(--info) 20px + ) +} + .form-group-sm { margin-bottom: 5px; } @@ -310,6 +320,10 @@ showing the sidebar (on devices with md or higher) } } +.not-allowed { + cursor: not-allowed !important; +} + /************************************** btn-xs btn-xs diff --git a/config/packages/php_translation.yaml b/config/packages/php_translation.yaml index 0c5cce0e..7c4f6ad9 100644 --- a/config/packages/php_translation.yaml +++ b/config/packages/php_translation.yaml @@ -1,5 +1,5 @@ translation: - locales: ["en", "de", "ru"] + locales: ["en", "de"] edit_in_place: enabled: false config_name: app diff --git a/config/permissions.yaml b/config/permissions.yaml index 43e21fea..bdac5571 100644 --- a/config/permissions.yaml +++ b/config/permissions.yaml @@ -67,6 +67,10 @@ perms: # Here comes a list with all Permission names (they have a perm_[name] co show_history: label: "perm.part.show_history" bit: 30 + revert_element: + label: "perm.revert_elements" + bit: 32 + alsoSet: ["read", "edit", "create", "delete", "show_history"] parts_name: &PART_ATTRIBUTE # We define a template here, that we can use for all part attributes. label: "perm.part.name" @@ -154,8 +158,31 @@ perms: # Here comes a list with all Permission names (they have a perm_[name] co label: "perm.part.lots" parts_attachments: - <<: *PART_MULTI_ATTRIBUTE + group: "structures" label: "perm.part.attachments" + operations: + read: + label: "perm.read" + bit: 0 + edit: + label: "perm.edit" + bit: 2 + alsoSet: 'read' + create: + label: "perm.create" + bit: 4 + alsoSet: ['read', 'edit'] + delete: + label: "perm.delete" + bit: 6 + alsoSet: ['read'] + show_history: + label: "perm.show_history" + bit: 8 + revert_element: + label: "perm.revert_elements" + bit: 10 + alsoSet: ["read", "edit", "create", "delete", "show_history"] parts_order: <<: *PART_ATTRIBUTE @@ -189,6 +216,13 @@ perms: # Here comes a list with all Permission names (they have a perm_[name] co show_users: label: "perm.show_users" bit: 12 + show_history: + label: "perm.show_history" + bit: 14 + revert_element: + label: "perm.revert_elements" + bit: 16 + alsoSet: ["read", "edit", "create", "delete", "show_history"] footprints: <<: *PART_CONTAINING @@ -243,6 +277,12 @@ perms: # Here comes a list with all Permission names (they have a perm_[name] co statistics: label: "perm.tools.statistics" bit: 10 + lastActivity: + label: "perm.tools.lastActivity" + bit: 12 + timetravel: + label: "perm.tools.timeTravel" + bit: 14 groups: label: "perm.groups" @@ -270,6 +310,13 @@ perms: # Here comes a list with all Permission names (they have a perm_[name] co label: "perm.edit_permissions" alsoSet: ['read', 'edit'] bit: 10 + show_history: + label: "perm.show_history" + bit: 12 + revert_element: + label: "perm.revert_elements" + bit: 14 + alsoSet: ["read", "edit", "create", "delete", "move", "edit_permissions", "show_history"] users: label: "perm.users" @@ -309,6 +356,13 @@ perms: # Here comes a list with all Permission names (they have a perm_[name] co change_user_settings: label: "perm.users.change_user_settings" bit: 16 + show_history: + label: "perm.show_history" + bit: 18 + revert_element: + label: "perm.revert_elements" + bit: 20 + alsoSet: ["read", "edit", "create", "delete", "move", "edit_permissions", "show_history", "edit_infos", "change_group", "edit_username"] database: label: "perm.database" diff --git a/config/services.yaml b/config/services.yaml index 146ac71e..2b97c116 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -74,6 +74,10 @@ services: - { name: "doctrine.orm.entity_listener" } App\EventSubscriber\EventLoggerSubscriber: + arguments: + $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)%' tags: - { name: 'doctrine.event_subscriber' } @@ -92,6 +96,11 @@ services: tags: - name: doctrine.orm.entity_listener + # Dont use JSONSerializable Interface, + serializer.normalizer.json_serializable: + class: Symfony\Component\Serializer\Normalizer\JsonSerializableNormalizer + tags: + - {name: serializer.normalizer, priority: -9000} App\Controller\RedirectController: arguments: diff --git a/src/Command/ShowEventLogCommand.php b/src/Command/ShowEventLogCommand.php index 0097ea4d..e03afc0f 100644 --- a/src/Command/ShowEventLogCommand.php +++ b/src/Command/ShowEventLogCommand.php @@ -137,6 +137,7 @@ class ShowEventLogCommand extends Command $headers = ['ID', 'Timestamp', 'Type', 'User', 'Target Type', 'Target']; if ($showExtra) { $headers[] = 'Extra data'; + $table->setColumnMaxWidth(6, 50); } $table->setHeaders($headers); @@ -144,6 +145,9 @@ class ShowEventLogCommand extends Command $this->addTableRow($table, $entry, $showExtra); } + $table->setColumnMaxWidth(3, 20); + $table->setColumnMaxWidth(5, 30); + $table->render(); } diff --git a/src/Controller/AdminPages/AttachmentTypeController.php b/src/Controller/AdminPages/AttachmentTypeController.php index 3318837a..73a66b91 100644 --- a/src/Controller/AdminPages/AttachmentTypeController.php +++ b/src/Controller/AdminPages/AttachmentTypeController.php @@ -79,7 +79,7 @@ class AttachmentTypeController extends BaseAdminController } /** - * @Route("/{id}/edit", requirements={"id"="\d+"}, name="attachment_type_edit") + * @Route("/{id}/edit/{timestamp}", requirements={"id"="\d+"}, name="attachment_type_edit") * @Route("/{id}", requirements={"id"="\d+"}) * * @param AttachmentType $entity @@ -87,9 +87,9 @@ class AttachmentTypeController extends BaseAdminController * @param EntityManagerInterface $em * @return Response */ - public function edit(AttachmentType $entity, Request $request, EntityManagerInterface $em): Response + public function edit(AttachmentType $entity, Request $request, EntityManagerInterface $em, ?string $timestamp = null): Response { - return $this->_edit($entity, $request, $em); + return $this->_edit($entity, $request, $em, $timestamp); } /** diff --git a/src/Controller/AdminPages/BaseAdminController.php b/src/Controller/AdminPages/BaseAdminController.php index a4c41b16..0944d59e 100644 --- a/src/Controller/AdminPages/BaseAdminController.php +++ b/src/Controller/AdminPages/BaseAdminController.php @@ -42,6 +42,7 @@ declare(strict_types=1); namespace App\Controller\AdminPages; +use App\DataTables\LogDataTable; use App\Entity\Base\AbstractNamedDBElement; use App\Entity\Base\AbstractStructuralDBElement; use App\Entity\UserSystem\User; @@ -52,9 +53,13 @@ use App\Services\Attachments\AttachmentManager; use App\Services\Attachments\AttachmentSubmitHandler; use App\Services\EntityExporter; use App\Services\EntityImporter; +use App\Services\LogSystem\EventCommentHelper; +use App\Services\LogSystem\HistoryHelper; +use App\Services\LogSystem\TimeTravel; use App\Services\StructuralElementRecursionHelper; use Doctrine\ORM\EntityManagerInterface; use InvalidArgumentException; +use Omines\DataTablesBundle\DataTableFactory; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Form\FormInterface; use Symfony\Component\HttpFoundation\File\UploadedFile; @@ -77,9 +82,16 @@ abstract class BaseAdminController extends AbstractController protected $translator; protected $attachmentHelper; protected $attachmentSubmitHandler; + protected $commentHelper; + + protected $historyHelper; + protected $timeTravel; + protected $dataTableFactory; public function __construct(TranslatorInterface $translator, UserPasswordEncoderInterface $passwordEncoder, - AttachmentManager $attachmentHelper, AttachmentSubmitHandler $attachmentSubmitHandler) + AttachmentManager $attachmentHelper, AttachmentSubmitHandler $attachmentSubmitHandler, + EventCommentHelper $commentHelper, HistoryHelper $historyHelper, TimeTravel $timeTravel, + DataTableFactory $dataTableFactory) { if ('' === $this->entity_class || '' === $this->form_class || '' === $this->twig_template || '' === $this->route_base) { throw new InvalidArgumentException('You have to override the $entity_class, $form_class, $route_base and $twig_template value in your subclasss!'); @@ -93,14 +105,54 @@ abstract class BaseAdminController extends AbstractController $this->passwordEncoder = $passwordEncoder; $this->attachmentHelper = $attachmentHelper; $this->attachmentSubmitHandler = $attachmentSubmitHandler; + $this->commentHelper = $commentHelper; + $this->historyHelper = $historyHelper; + $this->timeTravel = $timeTravel; + $this->dataTableFactory = $dataTableFactory; } - protected function _edit(AbstractNamedDBElement $entity, Request $request, EntityManagerInterface $em) : Response + protected function _edit(AbstractNamedDBElement $entity, Request $request, EntityManagerInterface $em, ?string $timestamp = null) : Response { $this->denyAccessUnlessGranted('read', $entity); - $form = $this->createForm($this->form_class, $entity, ['attachment_class' => $this->attachment_class]); + + $timeTravel_timestamp = null; + if ($timestamp !== null) { + $this->denyAccessUnlessGranted('@tools.timeTravel'); + $this->denyAccessUnlessGranted('show_history', $entity); + //If the timestamp only contains numbers interpret it as unix timestamp + if (ctype_digit($timestamp)) { + $timeTravel_timestamp = new \DateTime(); + $timeTravel_timestamp->setTimestamp((int) $timestamp); + } else { //Try to parse it via DateTime + $timeTravel_timestamp = new \DateTime($timestamp); + } + $this->timeTravel->revertEntityToTimestamp($entity, $timeTravel_timestamp); + } + + if ($this->isGranted('show_history', $entity) ) { + $table = $this->dataTableFactory->createFromType( + LogDataTable::class, + [ + 'filter_elements' => $this->historyHelper->getAssociatedElements($entity), + 'mode' => 'element_history' + ], + ['pageLength' => 10] + ) + ->handleRequest($request); + + if ($table->isCallback()) { + return $table->getResponse(); + } + } else { + $table = null; + } + + $form = $this->createForm($this->form_class, $entity, [ + 'attachment_class' => $this->attachment_class, + 'disabled' => $timeTravel_timestamp !== null ? true : null + ]); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { @@ -131,6 +183,8 @@ abstract class BaseAdminController extends AbstractController } } + $this->commentHelper->setMessage($form['log_comment']->getData()); + $em->persist($entity); $em->flush(); $this->addFlash('success', 'entity.edit_flash'); @@ -146,6 +200,9 @@ abstract class BaseAdminController extends AbstractController 'entity' => $entity, 'form' => $form->createView(), 'attachment_helper' => $this->attachmentHelper, + 'route_base' => $this->route_base, + 'datatable' => $table, + 'timeTravel' => $timeTravel_timestamp ]); } @@ -188,6 +245,8 @@ abstract class BaseAdminController extends AbstractController } } + $this->commentHelper->setMessage($form['log_comment']->getData()); + $em->persist($new_entity); $em->flush(); $this->addFlash('success', 'entity.created_flash'); @@ -215,6 +274,10 @@ abstract class BaseAdminController extends AbstractController 'csv_separator' => $data['csv_separator'], ]; + $this->commentHelper->setMessage('Import ' . $file->getClientOriginalName()); + + + $errors = $importer->fileToDBEntities($file, $this->entity_class, $options); foreach ($errors as $name => $error) { @@ -252,6 +315,7 @@ abstract class BaseAdminController extends AbstractController 'import_form' => $import_form->createView(), 'mass_creation_form' => $mass_creation_form->createView(), 'attachment_helper' => $this->attachmentHelper, + 'route_base' => $this->route_base, ]); } @@ -280,6 +344,8 @@ abstract class BaseAdminController extends AbstractController $entityManager->remove($entity); } + $this->commentHelper->setMessage($request->request->get('log_comment', null)); + //Flush changes $entityManager->flush(); diff --git a/src/Controller/AdminPages/CategoryController.php b/src/Controller/AdminPages/CategoryController.php index 79030d84..6bbde77d 100644 --- a/src/Controller/AdminPages/CategoryController.php +++ b/src/Controller/AdminPages/CategoryController.php @@ -79,7 +79,7 @@ class CategoryController extends BaseAdminController } /** - * @Route("/{id}/edit", requirements={"id"="\d+"}, name="category_edit") + * @Route("/{id}/edit/{timestamp}", requirements={"id"="\d+"}, name="category_edit") * @Route("/{id}", requirements={"id"="\d+"}) * * @param Category $entity @@ -87,9 +87,9 @@ class CategoryController extends BaseAdminController * @param EntityManagerInterface $em * @return Response */ - public function edit(Category $entity, Request $request, EntityManagerInterface $em): Response + public function edit(Category $entity, Request $request, EntityManagerInterface $em, ?string $timestamp = null): Response { - return $this->_edit($entity, $request, $em); + return $this->_edit($entity, $request, $em, $timestamp); } /** diff --git a/src/Controller/AdminPages/CurrencyController.php b/src/Controller/AdminPages/CurrencyController.php index 60813d52..35a72ee3 100644 --- a/src/Controller/AdminPages/CurrencyController.php +++ b/src/Controller/AdminPages/CurrencyController.php @@ -81,7 +81,7 @@ class CurrencyController extends BaseAdminController } /** - * @Route("/{id}/edit", requirements={"id"="\d+"}, name="currency_edit") + * @Route("/{id}/edit/{timestamp}", requirements={"id"="\d+"}, name="currency_edit") * @Route("/{id}", requirements={"id"="\d+"}) * * @param Currency $entity @@ -89,9 +89,9 @@ class CurrencyController extends BaseAdminController * @param EntityManagerInterface $em * @return Response */ - public function edit(Currency $entity, Request $request, EntityManagerInterface $em): Response + public function edit(Currency $entity, Request $request, EntityManagerInterface $em, ?string $timestamp = null): Response { - return $this->_edit($entity, $request, $em); + return $this->_edit($entity, $request, $em, $timestamp); } /** diff --git a/src/Controller/AdminPages/DeviceController.php b/src/Controller/AdminPages/DeviceController.php index 1f70b5ca..e643612e 100644 --- a/src/Controller/AdminPages/DeviceController.php +++ b/src/Controller/AdminPages/DeviceController.php @@ -79,7 +79,7 @@ class DeviceController extends BaseAdminController } /** - * @Route("/{id}/edit", requirements={"id"="\d+"}, name="device_edit") + * @Route("/{id}/edit/{timestamp}", requirements={"id"="\d+"}, name="device_edit") * @Route("/{id}", requirements={"id"="\d+"}) * * @param Device $entity @@ -87,9 +87,9 @@ class DeviceController extends BaseAdminController * @param EntityManagerInterface $em * @return Response */ - public function edit(Device $entity, Request $request, EntityManagerInterface $em): Response + public function edit(Device $entity, Request $request, EntityManagerInterface $em, ?string $timestamp = null): Response { - return $this->_edit($entity, $request, $em); + return $this->_edit($entity, $request, $em, $timestamp); } /** diff --git a/src/Controller/AdminPages/FootprintController.php b/src/Controller/AdminPages/FootprintController.php index b00860a5..ed786b89 100644 --- a/src/Controller/AdminPages/FootprintController.php +++ b/src/Controller/AdminPages/FootprintController.php @@ -78,16 +78,16 @@ class FootprintController extends BaseAdminController } /** - * @Route("/{id}/edit", requirements={"id"="\d+"}, name="footprint_edit") + * @Route("/{id}/edit/{timestamp}", requirements={"id"="\d+"}, name="footprint_edit") * @Route("/{id}", requirements={"id"="\d+"}) * @param Footprint $entity * @param Request $request * @param EntityManagerInterface $em * @return Response */ - public function edit(Footprint $entity, Request $request, EntityManagerInterface $em) + public function edit(Footprint $entity, Request $request, EntityManagerInterface $em, ?string $timestamp = null) { - return $this->_edit($entity, $request, $em); + return $this->_edit($entity, $request, $em, $timestamp); } /** diff --git a/src/Controller/AdminPages/ManufacturerController.php b/src/Controller/AdminPages/ManufacturerController.php index 7beb6005..672eb1b7 100644 --- a/src/Controller/AdminPages/ManufacturerController.php +++ b/src/Controller/AdminPages/ManufacturerController.php @@ -77,16 +77,16 @@ class ManufacturerController extends BaseAdminController } /** - * @Route("/{id}/edit", requirements={"id"="\d+"}, name="manufacturer_edit") + * @Route("/{id}/edit/{timestamp}", requirements={"id"="\d+"}, name="manufacturer_edit") * @Route("/{id}", requirements={"id"="\d+"}) * @param Manufacturer $entity * @param Request $request * @param EntityManagerInterface $em * @return Response */ - public function edit(Manufacturer $entity, Request $request, EntityManagerInterface $em) + public function edit(Manufacturer $entity, Request $request, EntityManagerInterface $em, ?string $timestamp = null) { - return $this->_edit($entity, $request, $em); + return $this->_edit($entity, $request, $em, $timestamp); } /** diff --git a/src/Controller/AdminPages/MeasurementUnitController.php b/src/Controller/AdminPages/MeasurementUnitController.php index 5d4bf750..dd29d7ff 100644 --- a/src/Controller/AdminPages/MeasurementUnitController.php +++ b/src/Controller/AdminPages/MeasurementUnitController.php @@ -78,16 +78,16 @@ class MeasurementUnitController extends BaseAdminController } /** - * @Route("/{id}/edit", requirements={"id"="\d+"}, name="measurement_unit_edit") + * @Route("/{id}/edit/{timestamp}", requirements={"id"="\d+"}, name="measurement_unit_edit") * @Route("/{id}", requirements={"id"="\d+"}) * @param MeasurementUnit $entity * @param Request $request * @param EntityManagerInterface $em * @return Response */ - public function edit(MeasurementUnit $entity, Request $request, EntityManagerInterface $em) + public function edit(MeasurementUnit $entity, Request $request, EntityManagerInterface $em, ?string $timestamp = null) { - return $this->_edit($entity, $request, $em); + return $this->_edit($entity, $request, $em, $timestamp); } /** diff --git a/src/Controller/AdminPages/StorelocationController.php b/src/Controller/AdminPages/StorelocationController.php index d36f69a9..cddfdcc4 100644 --- a/src/Controller/AdminPages/StorelocationController.php +++ b/src/Controller/AdminPages/StorelocationController.php @@ -76,16 +76,16 @@ class StorelocationController extends BaseAdminController } /** - * @Route("/{id}/edit", requirements={"id"="\d+"}, name="store_location_edit") + * @Route("/{id}/edit/{timestamp}", requirements={"id"="\d+"}, name="store_location_edit") * @Route("/{id}", requirements={"id"="\d+"}) * @param Storelocation $entity * @param Request $request * @param EntityManagerInterface $em * @return Response */ - public function edit(Storelocation $entity, Request $request, EntityManagerInterface $em) + public function edit(Storelocation $entity, Request $request, EntityManagerInterface $em, ?string $timestamp = null) { - return $this->_edit($entity, $request, $em); + return $this->_edit($entity, $request, $em, $timestamp); } /** diff --git a/src/Controller/AdminPages/SupplierController.php b/src/Controller/AdminPages/SupplierController.php index cef77aa4..339da87e 100644 --- a/src/Controller/AdminPages/SupplierController.php +++ b/src/Controller/AdminPages/SupplierController.php @@ -77,16 +77,16 @@ class SupplierController extends BaseAdminController } /** - * @Route("/{id}/edit", requirements={"id"="\d+"}, name="supplier_edit") + * @Route("/{id}/edit/{timestamp}", requirements={"id"="\d+"}, name="supplier_edit") * @Route("/{id}", requirements={"id"="\d+"}) * @param Supplier $entity * @param Request $request * @param EntityManagerInterface $em * @return Response */ - public function edit(Supplier $entity, Request $request, EntityManagerInterface $em) + public function edit(Supplier $entity, Request $request, EntityManagerInterface $em, ?string $timestamp = null) { - return $this->_edit($entity, $request, $em); + return $this->_edit($entity, $request, $em, $timestamp); } /** diff --git a/src/Controller/GroupController.php b/src/Controller/GroupController.php index 710bb0b8..cdcdd6b9 100644 --- a/src/Controller/GroupController.php +++ b/src/Controller/GroupController.php @@ -67,7 +67,7 @@ class GroupController extends BaseAdminController protected $attachment_class = GroupAttachment::class; /** - * @Route("/{id}/edit", requirements={"id"="\d+"}, name="group_edit") + * @Route("/{id}/edit/{timestamp}", requirements={"id"="\d+"}, name="group_edit") * @Route("/{id}/", requirements={"id"="\d+"}) * * @param Group $entity @@ -75,9 +75,9 @@ class GroupController extends BaseAdminController * @param EntityManagerInterface $em * @return Response */ - public function edit(Group $entity, Request $request, EntityManagerInterface $em): Response + public function edit(Group $entity, Request $request, EntityManagerInterface $em, ?string $timestamp = null): Response { - return $this->_edit($entity, $request, $em); + return $this->_edit($entity, $request, $em, $timestamp); } /** diff --git a/src/Controller/HomepageController.php b/src/Controller/HomepageController.php index 3edb4485..8e6732c0 100644 --- a/src/Controller/HomepageController.php +++ b/src/Controller/HomepageController.php @@ -42,7 +42,11 @@ declare(strict_types=1); namespace App\Controller; +use App\DataTables\LogDataTable; use App\Services\GitVersionInfo; +use Omines\DataTablesBundle\DataTableFactory; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; use const DIRECTORY_SEPARATOR; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpKernel\KernelInterface; @@ -53,11 +57,13 @@ class HomepageController extends AbstractController { protected $cache; protected $kernel; + protected $dataTable; - public function __construct(CacheInterface $cache, KernelInterface $kernel) + public function __construct(CacheInterface $cache, KernelInterface $kernel, DataTableFactory $dataTable) { $this->cache = $cache; $this->kernel = $kernel; + $this->dataTable = $dataTable; } public function getBanner(): string @@ -78,12 +84,30 @@ class HomepageController extends AbstractController * @param GitVersionInfo $versionInfo * @return \Symfony\Component\HttpFoundation\Response */ - public function homepage(GitVersionInfo $versionInfo): \Symfony\Component\HttpFoundation\Response + public function homepage(Request $request, GitVersionInfo $versionInfo): Response { + if ($this->isGranted("@tools.lastActivity")) { + $table = $this->dataTable->createFromType( + LogDataTable::class, + [ + 'mode' => 'last_activity' + ], + ['pageLength' => 10] + ) + ->handleRequest($request); + + if ($table->isCallback()) { + return $table->getResponse(); + } + } else { + $table = null; + } + return $this->render('homepage.html.twig', [ 'banner' => $this->getBanner(), 'git_branch' => $versionInfo->getGitBranchName(), 'git_commit' => $versionInfo->getGitCommitHash(), + 'datatable' => $table ]); } } diff --git a/src/Controller/LogController.php b/src/Controller/LogController.php index bb978c4a..1db56664 100644 --- a/src/Controller/LogController.php +++ b/src/Controller/LogController.php @@ -43,9 +43,20 @@ declare(strict_types=1); namespace App\Controller; use App\DataTables\LogDataTable; +use App\Entity\Base\AbstractDBElement; +use App\Entity\LogSystem\AbstractLogEntry; +use App\Entity\LogSystem\CollectionElementDeleted; +use App\Entity\LogSystem\ElementCreatedLogEntry; +use App\Entity\LogSystem\ElementDeletedLogEntry; +use App\Entity\LogSystem\ElementEditedLogEntry; +use App\Services\LogSystem\EventUndoHelper; +use App\Services\LogSystem\TimeTravel; +use Doctrine\ORM\EntityManagerInterface; use Omines\DataTablesBundle\DataTableFactory; +use phpDocumentor\Reflection\Element; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; +use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; @@ -55,6 +66,18 @@ use Symfony\Component\Routing\Annotation\Route; */ class LogController extends AbstractController { + protected $entityManager; + protected $timeTravel; + protected $dbRepository; + + + public function __construct(EntityManagerInterface $entityManager, TimeTravel $timeTravel) + { + $this->entityManager = $entityManager; + $this->timeTravel = $timeTravel; + $this->dbRepository = $entityManager->getRepository(AbstractDBElement::class); + } + /** * @Route("/", name="log_view") * @@ -77,4 +100,107 @@ class LogController extends AbstractController 'datatable' => $table, ]); } + + /** + * @Route("/undo", name="log_undo", methods={"POST"}) + * @param Request $request + */ + public function undoRevertLog(Request $request, EventUndoHelper $eventUndoHelper) + { + $mode = EventUndoHelper::MODE_UNDO; + $id = $request->request->get('undo'); + + //If no undo value was set check if a revert was set + if ($id === null) { + $id = $request->get('revert'); + $mode = EventUndoHelper::MODE_REVERT; + } + + $log_element = $this->entityManager->find(AbstractLogEntry::class, $id); + if ($log_element === null) { + throw new \InvalidArgumentException('No log entry with the given ID is existing!'); + } + + $this->denyAccessUnlessGranted('revert_element', $log_element->getTargetClass()); + + $eventUndoHelper->setMode($mode); + $eventUndoHelper->setUndoneEvent($log_element); + + if ($mode === EventUndoHelper::MODE_UNDO) { + $this->undoLog($log_element); + } elseif ($mode === EventUndoHelper::MODE_REVERT) { + $this->revertLog($log_element); + } + + $eventUndoHelper->clearUndoneEvent(); + + $redirect = $request->request->get('redirect_back'); + return $this->redirect($redirect); + } + + protected function revertLog(AbstractLogEntry $logEntry): void + { + $timestamp = $logEntry->getTimestamp(); + $element = $this->entityManager->find($logEntry->getTargetClass(), $logEntry->getTargetID()); + //If the element is not available in DB try to undelete it + if ($element === null) { + $element = $this->timeTravel->undeleteEntity($logEntry->getTargetClass(), $logEntry->getTargetID()); + $this->entityManager->persist($element); + $this->entityManager->flush(); + $this->dbRepository->changeID($element, $logEntry->getTargetID()); + } + + if (!$element instanceof AbstractDBElement) { + $this->addFlash('error', 'log.undo.target_not_found'); + return; + } + + $this->timeTravel->revertEntityToTimestamp($element, $timestamp); + $this->entityManager->flush(); + $this->addFlash('success', 'log.undo.revert_success'); + } + + protected function undoLog(AbstractLogEntry $log_element): void + { + if ($log_element instanceof ElementDeletedLogEntry || $log_element instanceof CollectionElementDeleted) { + if ($log_element instanceof ElementDeletedLogEntry) { + $element_class = $log_element->getTargetClass(); + $element_id = $log_element->getTargetID(); + } else { + $element_class = $log_element->getDeletedElementClass(); + $element_id = $log_element->getDeletedElementID(); + } + + //Check if the element we want to undelete already exits + if ($this->entityManager->find($element_class, $element_id) == null) { + $undeleted_element = $this->timeTravel->undeleteEntity($element_class, $element_id); + $this->entityManager->persist($undeleted_element); + $this->entityManager->flush(); + $this->dbRepository->changeID($undeleted_element, $element_id); + $this->addFlash('success', 'log.undo.element_undelete_success'); + } else { + $this->addFlash('warning', 'log.undo.element_element_already_undeleted'); + } + } elseif ($log_element instanceof ElementCreatedLogEntry) { + $element = $this->entityManager->find($log_element->getTargetClass(), $log_element->getTargetID()); + if ($element !== null) { + $this->entityManager->remove($element); + $this->entityManager->flush(); + $this->addFlash('success', 'log.undo.element_delete_success'); + } else { + $this->addFlash('warning', 'log.undo.element.element_already_delted'); + } + } elseif ($log_element instanceof ElementEditedLogEntry) { + $element = $this->entityManager->find($log_element->getTargetClass(), $log_element->getTargetID()); + if ($element instanceof AbstractDBElement) { + $this->timeTravel->applyEntry($element, $log_element); + $this->entityManager->flush(); + $this->addFlash('success', 'log.undo.element_change_undone'); + } else { + $this->addFlash('error', 'log.undo.do_undelete_before'); + } + } else { + $this->addFlash('error', 'log.undo.log_type_invalid'); + } + } } diff --git a/src/Controller/PartController.php b/src/Controller/PartController.php index c15bbe90..b8bcf8ee 100644 --- a/src/Controller/PartController.php +++ b/src/Controller/PartController.php @@ -42,6 +42,7 @@ declare(strict_types=1); namespace App\Controller; +use App\DataTables\LogDataTable; use App\Entity\Parts\Category; use App\Entity\Parts\Part; use App\Exceptions\AttachmentDownloadException; @@ -49,8 +50,12 @@ use App\Form\Part\PartBaseType; use App\Services\Attachments\AttachmentManager; use App\Services\Attachments\AttachmentSubmitHandler; use App\Services\Attachments\PartPreviewGenerator; +use App\Services\LogSystem\EventCommentHelper; +use App\Services\LogSystem\HistoryHelper; +use App\Services\LogSystem\TimeTravel; use App\Services\PricedetailHelper; use Doctrine\ORM\EntityManagerInterface; +use Omines\DataTablesBundle\DataTableFactory; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Form\FormInterface; use Symfony\Component\HttpFoundation\RedirectResponse; @@ -64,27 +69,70 @@ use Symfony\Contracts\Translation\TranslatorInterface; */ class PartController extends AbstractController { + protected $attachmentManager; + protected $pricedetailHelper; + protected $partPreviewGenerator; + protected $commentHelper; + + public function __construct(AttachmentManager $attachmentManager, PricedetailHelper $pricedetailHelper, + PartPreviewGenerator $partPreviewGenerator, EventCommentHelper $commentHelper) + { + $this->attachmentManager = $attachmentManager; + $this->pricedetailHelper = $pricedetailHelper; + $this->partPreviewGenerator = $partPreviewGenerator; + $this->commentHelper = $commentHelper; + } + /** - * @Route("/{id}/info", name="part_info") + * @Route("/{id}/info/{timestamp}", name="part_info") * @Route("/{id}", requirements={"id"="\d+"}) * * @param Part $part - * @param AttachmentManager $attachmentHelper - * @param PricedetailHelper $pricedetailHelper - * @param PartPreviewGenerator $previewGenerator * @return Response + * @throws \Exception */ - public function show(Part $part, AttachmentManager $attachmentHelper, PricedetailHelper $pricedetailHelper, PartPreviewGenerator $previewGenerator): Response + public function show(Part $part, Request $request, TimeTravel $timeTravel, HistoryHelper $historyHelper, + DataTableFactory $dataTable, ?string $timestamp = null): Response { $this->denyAccessUnlessGranted('read', $part); + $timeTravel_timestamp = null; + if ($timestamp !== null) { + $this->denyAccessUnlessGranted('@tools.timeTravel'); + $this->denyAccessUnlessGranted('show_history', $part); + //If the timestamp only contains numbers interpret it as unix timestamp + if (ctype_digit($timestamp)) { + $timeTravel_timestamp = new \DateTime(); + $timeTravel_timestamp->setTimestamp((int) $timestamp); + } else { //Try to parse it via DateTime + $timeTravel_timestamp = new \DateTime($timestamp); + } + $timeTravel->revertEntityToTimestamp($part, $timeTravel_timestamp); + } + + if ($this->isGranted('show_history', $part) ) { + $table = $dataTable->createFromType(LogDataTable::class, [ + 'filter_elements' => $historyHelper->getAssociatedElements($part), + 'mode' => 'element_history' + ], ['pageLength' => 10]) + ->handleRequest($request); + + if ($table->isCallback()) { + return $table->getResponse(); + } + } else { + $table = null; + } + return $this->render( 'Parts/info/show_part_info.html.twig', [ 'part' => $part, - 'attachment_helper' => $attachmentHelper, - 'pricedetail_helper' => $pricedetailHelper, - 'pictures' => $previewGenerator->getPreviewAttachments($part), + 'datatable' => $table, + 'attachment_helper' => $this->attachmentManager, + 'pricedetail_helper' => $this->pricedetailHelper, + 'pictures' => $this->partPreviewGenerator->getPreviewAttachments($part), + 'timeTravel' => $timeTravel_timestamp ] ); } @@ -96,12 +144,11 @@ class PartController extends AbstractController * @param Request $request * @param EntityManagerInterface $em * @param TranslatorInterface $translator - * @param AttachmentManager $attachmentHelper * @param AttachmentSubmitHandler $attachmentSubmitHandler * @return Response */ public function edit(Part $part, Request $request, EntityManagerInterface $em, TranslatorInterface $translator, - AttachmentManager $attachmentHelper, AttachmentSubmitHandler $attachmentSubmitHandler): Response + AttachmentSubmitHandler $attachmentSubmitHandler): Response { $this->denyAccessUnlessGranted('edit', $part); @@ -128,6 +175,8 @@ class PartController extends AbstractController } } + $this->commentHelper->setMessage($form['log_comment']->getData()); + $em->persist($part); $em->flush(); $this->addFlash('info', 'part.edited_flash'); @@ -138,11 +187,11 @@ class PartController extends AbstractController } return $this->render('Parts/edit/edit_part_info.html.twig', - [ - 'part' => $part, - 'form' => $form->createView(), - 'attachment_helper' => $attachmentHelper, - ]); + [ + 'part' => $part, + 'form' => $form->createView(), + 'attachment_helper' => $this->attachmentManager, + ]); } /** @@ -159,6 +208,8 @@ class PartController extends AbstractController if ($this->isCsrfTokenValid('delete'.$part->getId(), $request->request->get('_token'))) { $entityManager = $this->getDoctrine()->getManager(); + $this->commentHelper->setMessage($request->request->get('log_comment', null)); + //Remove part $entityManager->remove($part); @@ -182,7 +233,7 @@ class PartController extends AbstractController * @return Response */ public function new(Request $request, EntityManagerInterface $em, TranslatorInterface $translator, - AttachmentManager $attachmentHelper, AttachmentSubmitHandler $attachmentSubmitHandler): Response + AttachmentManager $attachmentHelper, AttachmentSubmitHandler $attachmentSubmitHandler): Response { $new_part = new Part(); @@ -219,6 +270,8 @@ class PartController extends AbstractController } } + $this->commentHelper->setMessage($form['log_comment']->getData()); + $em->persist($new_part); $em->flush(); $this->addFlash('success', 'part.created_flash'); @@ -231,11 +284,11 @@ class PartController extends AbstractController } return $this->render('Parts/edit/new_part.html.twig', - [ - 'part' => $new_part, - 'form' => $form->createView(), - 'attachment_helper' => $attachmentHelper, - ]); + [ + 'part' => $new_part, + 'form' => $form->createView(), + 'attachment_helper' => $attachmentHelper, + ]); } /** @@ -267,9 +320,9 @@ class PartController extends AbstractController } return $this->render('Parts/edit/new_part.html.twig', - [ - 'part' => $new_part, - 'form' => $form->createView(), - ]); + [ + 'part' => $new_part, + 'form' => $form->createView(), + ]); } } diff --git a/src/Controller/UserController.php b/src/Controller/UserController.php index d4b75dfc..68532c12 100644 --- a/src/Controller/UserController.php +++ b/src/Controller/UserController.php @@ -69,7 +69,7 @@ class UserController extends AdminPages\BaseAdminController protected $attachment_class = UserAttachment::class; /** - * @Route("/{id}/edit", requirements={"id"="\d+"}, name="user_edit") + * @Route("/{id}/edit/{timestamp}", requirements={"id"="\d+"}, name="user_edit") * @Route("/{id}/", requirements={"id"="\d+"}) * @param User $entity * @param Request $request @@ -77,7 +77,7 @@ class UserController extends AdminPages\BaseAdminController * @return Response * @throws \Exception */ - public function edit(User $entity, Request $request, EntityManagerInterface $em) + public function edit(User $entity, Request $request, EntityManagerInterface $em, ?string $timestamp = null) { //Handle 2FA disabling @@ -102,7 +102,7 @@ class UserController extends AdminPages\BaseAdminController } } - return $this->_edit($entity, $request, $em); + return $this->_edit($entity, $request, $em, $timestamp); } /** diff --git a/src/DataTables/Column/IconLinkColumn.php b/src/DataTables/Column/IconLinkColumn.php new file mode 100644 index 00000000..54859e33 --- /dev/null +++ b/src/DataTables/Column/IconLinkColumn.php @@ -0,0 +1,126 @@ +. + */ + +namespace App\DataTables\Column; + + +use Omines\DataTablesBundle\Column\AbstractColumn; +use Symfony\Component\OptionsResolver\OptionsResolver; + +class IconLinkColumn extends AbstractColumn +{ + + /** + * @inheritDoc + */ + public function normalize($value) + { + return $value; + } + + public function configureOptions(OptionsResolver $resolver) + { + parent::configureOptions($resolver); + $resolver->setDefaults([ + 'icon' => 'fas fa-fw fa-edit', + 'title' => null, + 'href' => null, + 'disabled' => false, + ]); + + $resolver->setAllowedTypes('title', ['null', 'string', 'callable']); + $resolver->setAllowedTypes('icon', ['null', 'string', 'callable']); + $resolver->setAllowedTypes('href', ['null', 'string', 'callable']); + $resolver->setAllowedTypes('disabled', ['bool', 'callable']); + + return $this; + } + + public function render($value, $context) + { + $href = $this->getHref($value, $context); + $icon = $this->getIcon($value, $context); + $title = $this->getTitle($value, $context); + $disabled = $this->getDisabled($value, $context); + + if ($href !== null) { + return sprintf( + '', + $disabled ? 'disabled' : '', + $href, + $title, + $icon + ); + } + + return ""; + } + + protected function getDisabled($value, $context): bool + { + $provider = $this->options['disabled']; + if (is_bool($provider)) { + return $provider; + } + if (is_callable($provider)) { + return call_user_func($provider, $value, $context); + } + return false; + } + + protected function getHref($value, $context): ?string + { + $provider = $this->options['href']; + if (is_string($provider)) { + return $provider; + } + if (is_callable($provider)) { + return call_user_func($provider, $value, $context); + } + + return null; + } + + protected function getIcon($value, $context): ?string + { + $provider = $this->options['icon']; + if (is_string($provider)) { + return $provider; + } + if (is_callable($provider)) { + return call_user_func($provider, $value, $context); + } + + return null; + } + + protected function getTitle($value, $context): ?string + { + $provider = $this->options['title']; + if (is_string($provider)) { + return $provider; + } + if (is_callable($provider)) { + return call_user_func($provider, $value, $context); + } + + return null; + } +} \ No newline at end of file diff --git a/src/DataTables/Column/RevertLogColumn.php b/src/DataTables/Column/RevertLogColumn.php new file mode 100644 index 00000000..09b78d4c --- /dev/null +++ b/src/DataTables/Column/RevertLogColumn.php @@ -0,0 +1,93 @@ +. + */ + +namespace App\DataTables\Column; + + +use App\Entity\LogSystem\AbstractLogEntry; +use App\Entity\LogSystem\CollectionElementDeleted; +use App\Entity\LogSystem\ElementCreatedLogEntry; +use App\Entity\LogSystem\ElementDeletedLogEntry; +use App\Entity\LogSystem\ElementEditedLogEntry; +use Omines\DataTablesBundle\Column\AbstractColumn; +use Symfony\Component\Security\Core\Security; +use Symfony\Contracts\Translation\TranslatorInterface; + +class RevertLogColumn extends AbstractColumn +{ + protected $translator; + protected $security; + + public function __construct(TranslatorInterface $translator, Security $security) + { + $this->translator = $translator; + $this->security = $security; + } + + /** + * @inheritDoc + */ + public function normalize($value) + { + return $value; + } + + public function render($value, $context) + { + $revertable = true; + if ( + $context instanceof CollectionElementDeleted + || ($context instanceof ElementDeletedLogEntry && $context->hasOldDataInformations()) + ) { + $icon = 'fa-trash-restore'; + $title = $this->translator->trans('log.undo.undelete'); + } elseif ( + $context instanceof ElementCreatedLogEntry + || ($context instanceof ElementEditedLogEntry && $context->hasOldDataInformations()) + ) { + $icon = 'fa-undo'; + $title = $this->translator->trans('log.undo.undo'); + } else { + return ''; + } + + $disabled = !$this->security->isGranted('revert_element', $context->getTargetClass()); + + $tmp = '
'; + $tmp .= sprintf( + '', + $context->getID(), + $disabled ? 'disabled' : '', + $icon, + $title + ); + + $tmp .= sprintf( + '', + $context->getID(), + $disabled ? 'disabled' : '', + $this->translator->trans('log.undo.revert') + ); + + $tmp .= '
'; + + return $tmp; + } +} \ No newline at end of file diff --git a/src/DataTables/LogDataTable.php b/src/DataTables/LogDataTable.php index 145fbef8..9ae2b8db 100644 --- a/src/DataTables/LogDataTable.php +++ b/src/DataTables/LogDataTable.php @@ -42,36 +42,73 @@ declare(strict_types=1); namespace App\DataTables; +use App\DataTables\Column\IconLinkColumn; use App\DataTables\Column\LocaleDateTimeColumn; use App\DataTables\Column\LogEntryExtraColumn; use App\DataTables\Column\LogEntryTargetColumn; +use App\DataTables\Column\RevertLogColumn; +use App\Entity\Base\AbstractDBElement; +use App\Entity\Contracts\TimeTravelInterface; use App\Entity\LogSystem\AbstractLogEntry; +use App\Entity\LogSystem\CollectionElementDeleted; +use App\Entity\LogSystem\ElementCreatedLogEntry; +use App\Entity\LogSystem\ElementDeletedLogEntry; +use App\Entity\LogSystem\ElementEditedLogEntry; +use App\Entity\UserSystem\Group; +use App\Entity\UserSystem\User; +use App\Exceptions\EntityNotSupportedException; use App\Services\ElementTypeNameGenerator; +use App\Services\EntityURLGenerator; +use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\QueryBuilder; use Omines\DataTablesBundle\Adapter\Doctrine\ORMAdapter; use Omines\DataTablesBundle\Column\TextColumn; use Omines\DataTablesBundle\DataTable; use Omines\DataTablesBundle\DataTableTypeInterface; use Psr\Log\LogLevel; +use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; +use Symfony\Component\Security\Core\Security; use Symfony\Contracts\Translation\TranslatorInterface; +use Symfony\Flex\Options; class LogDataTable implements DataTableTypeInterface { protected $elementTypeNameGenerator; protected $translator; protected $urlGenerator; + protected $entityURLGenerator; + protected $logRepo; + protected $security; public function __construct(ElementTypeNameGenerator $elementTypeNameGenerator, TranslatorInterface $translator, - UrlGeneratorInterface $urlGenerator) + UrlGeneratorInterface $urlGenerator, EntityURLGenerator $entityURLGenerator, EntityManagerInterface $entityManager, Security $security) { $this->elementTypeNameGenerator = $elementTypeNameGenerator; $this->translator = $translator; $this->urlGenerator = $urlGenerator; + $this->entityURLGenerator = $entityURLGenerator; + $this->logRepo = $entityManager->getRepository(AbstractLogEntry::class); + $this->security = $security; + } + + public function configureOptions(OptionsResolver $optionsResolver) + { + $optionsResolver->setDefaults([ + 'mode' => 'system_log', + 'filter_elements' => [], + ]); + + $optionsResolver->setAllowedValues('mode', ['system_log', 'element_history', 'last_activity']); } public function configure(DataTable $dataTable, array $options): void { + $resolver = new OptionsResolver(); + $this->configureOptions($resolver); + $options = $resolver->resolve($options); + + $dataTable->add('symbol', TextColumn::class, [ 'label' => '', 'render' => function ($value, AbstractLogEntry $context) { @@ -114,7 +151,11 @@ class LogDataTable implements DataTableTypeInterface break; } - return sprintf('', $symbol); + return sprintf( + '', + $symbol, + $context->getLevelString() + ); }, ]); @@ -138,6 +179,7 @@ class LogDataTable implements DataTableTypeInterface $dataTable->add('level', TextColumn::class, [ 'label' => $this->translator->trans('log.level'), + 'visible' => $options['mode'] === 'system_log', 'propertyPath' => 'levelString', 'render' => function (string $value, AbstractLogEntry $context) { return $value; @@ -178,21 +220,77 @@ class LogDataTable implements DataTableTypeInterface 'label' => $this->translator->trans('log.extra'), ]); + $dataTable->add('timeTravel', IconLinkColumn::class,[ + 'label' => '', + 'icon' => 'fas fa-fw fa-eye', + 'href' => function ($value, AbstractLogEntry $context) { + if ( + ($context instanceof TimeTravelInterface + && $context->hasOldDataInformations()) + || $context instanceof CollectionElementDeleted + ) { + try { + $target = $this->logRepo->getTargetElement($context); + if($target !== null) { + $str = $this->entityURLGenerator->timeTravelURL($target, $context->getTimestamp()); + return $str; + } + } catch (EntityNotSupportedException $exception) { + return null; + } + } + return null; + }, + 'disabled' => function ($value, AbstractLogEntry $context) { + return + !$this->security->isGranted('@tools.timetravel') + || !$this->security->isGranted('show_history', $context->getTargetClass()); + } + + ]); + + $dataTable->add('actionRevert', RevertLogColumn::class, [ + 'label' => '' + ]); + $dataTable->addOrderBy('timestamp', DataTable::SORT_DESCENDING); $dataTable->createAdapter(ORMAdapter::class, [ 'entity' => AbstractLogEntry::class, - 'query' => function (QueryBuilder $builder): void { - $this->getQuery($builder); + 'query' => function (QueryBuilder $builder) use ($options): void { + $this->getQuery($builder, $options); }, ]); } - protected function getQuery(QueryBuilder $builder): void + protected function getQuery(QueryBuilder $builder, array $options): void { $builder->distinct()->select('log') ->addSelect('user') ->from(AbstractLogEntry::class, 'log') ->leftJoin('log.user', 'user'); + + if ($options['mode'] === 'last_activity') { + $builder->where('log INSTANCE OF ' . ElementCreatedLogEntry::class) + ->orWhere('log INSTANCE OF ' . ElementDeletedLogEntry::class) + ->orWhere('log INSTANCE OF ' . ElementEditedLogEntry::class) + ->orWhere('log INSTANCE OF ' . CollectionElementDeleted::class) + ->andWhere('log.target_type NOT IN (:disallowed)');; + + $builder->setParameter('disallowed', [ + AbstractLogEntry::targetTypeClassToID(User::class), + AbstractLogEntry::targetTypeClassToID(Group::class), + ]); + } + + if (!empty($options['filter_elements'])) { + foreach ($options['filter_elements'] as $element) { + /** @var AbstractDBElement $element */ + + $target_type = AbstractLogEntry::targetTypeClassToID(get_class($element)); + $target_id = $element->getID(); + $builder->orWhere("log.target_type = $target_type AND log.target_id = $target_id"); + } + } } } diff --git a/src/Entity/Base/AbstractDBElement.php b/src/Entity/Base/AbstractDBElement.php index 02177177..46dac31f 100644 --- a/src/Entity/Base/AbstractDBElement.php +++ b/src/Entity/Base/AbstractDBElement.php @@ -34,7 +34,7 @@ use Symfony\Component\Serializer\Annotation\Groups; * Every database table which are managed with this class (or a subclass of it) * must have the table row "id"!! The ID is the unique key to identify the elements. * - * @ORM\MappedSuperclass() + * @ORM\MappedSuperclass(repositoryClass="App\Repository\DBElementRepository") * * @ORM\EntityListeners({"App\Security\EntityListeners\ElementPermissionListener"}) * @@ -55,7 +55,7 @@ use Symfony\Component\Serializer\Annotation\Groups; * "user" = "App\Entity\User" * }) */ -abstract class AbstractDBElement +abstract class AbstractDBElement implements \JsonSerializable { /** @var int|null The Identification number for this part. This value is unique for the element in this table. * Null if the element is not saved to DB yet. @@ -92,4 +92,9 @@ abstract class AbstractDBElement * @return string The ID as a string; */ abstract public function getIDString(): string; + + public function jsonSerialize() + { + return ['@id' => $this->getID()]; + } } diff --git a/src/Entity/Base/AbstractNamedDBElement.php b/src/Entity/Base/AbstractNamedDBElement.php index 902d224d..212211f3 100644 --- a/src/Entity/Base/AbstractNamedDBElement.php +++ b/src/Entity/Base/AbstractNamedDBElement.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace App\Entity\Base; use App\Entity\Contracts\NamedElementInterface; +use App\Entity\Contracts\TimeStampableInterface; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Validator\Constraints as Assert; @@ -30,10 +31,10 @@ use Symfony\Component\Validator\Constraints as Assert; /** * All subclasses of this class have an attribute "name". * - * @ORM\MappedSuperclass(repositoryClass="App\Repository\UserRepository") + * @ORM\MappedSuperclass(repositoryClass="App\Repository\NamedDBElement") * @ORM\HasLifecycleCallbacks() */ -abstract class AbstractNamedDBElement extends AbstractDBElement implements NamedElementInterface +abstract class AbstractNamedDBElement extends AbstractDBElement implements NamedElementInterface, TimeStampableInterface { use TimestampTrait; diff --git a/src/Entity/Contracts/LogWithCommentInterface.php b/src/Entity/Contracts/LogWithCommentInterface.php new file mode 100644 index 00000000..3a423166 --- /dev/null +++ b/src/Entity/Contracts/LogWithCommentInterface.php @@ -0,0 +1,45 @@ +. + */ + +namespace App\Entity\Contracts; + + +interface LogWithCommentInterface +{ + /** + * Checks if this log entry has a user provided comment. + * @return bool + */ + public function hasComment(): bool; + + /** + * Gets the user provided comment associated with this log entry. + * Returns null if not comment was set. + * @return string|null + */ + public function getComment(): ?string; + + /** + * Sets the user provided comment associated with this log entry. + * @param string|null $new_comment + * @return $this + */ + public function setComment(?string $new_comment): self; +} \ No newline at end of file diff --git a/src/Entity/Contracts/LogWithEventUndoInterface.php b/src/Entity/Contracts/LogWithEventUndoInterface.php new file mode 100644 index 00000000..7ce7f611 --- /dev/null +++ b/src/Entity/Contracts/LogWithEventUndoInterface.php @@ -0,0 +1,55 @@ +. + */ + +namespace App\Entity\Contracts; + + +use App\Entity\LogSystem\AbstractLogEntry; + +interface LogWithEventUndoInterface +{ + /** + * Checks if this element undoes another event. + * @return bool + */ + public function isUndoEvent(): bool; + + /** + * Returns the ID of the undone event or null if no event is undone. + * @return int|null + */ + public function getUndoEventID(): ?int; + + /** + * Sets the event that is undone, and the undo mode. + * @param AbstractLogEntry $event + * @param string $mode + * @return $this + */ + public function setUndoneEvent(AbstractLogEntry $event, string $mode = 'undo'): self; + + /** + * Returns the mode how the event was undone: + * "undo" = Only a single event was applied to element + * "revert" = Element was reverted to the state it was to the timestamp of the log. + * @return string + */ + public function getUndoMode(): string; +} \ No newline at end of file diff --git a/src/Entity/Contracts/TimeStampableInterface.php b/src/Entity/Contracts/TimeStampableInterface.php new file mode 100644 index 00000000..8b61e05e --- /dev/null +++ b/src/Entity/Contracts/TimeStampableInterface.php @@ -0,0 +1,44 @@ +target_id = $target_id; + return $this; + } + public function getExtraData(): array { return $this->extra; diff --git a/src/Entity/LogSystem/CollectionElementDeleted.php b/src/Entity/LogSystem/CollectionElementDeleted.php new file mode 100644 index 00000000..3d127e41 --- /dev/null +++ b/src/Entity/LogSystem/CollectionElementDeleted.php @@ -0,0 +1,136 @@ +. + */ + +namespace App\Entity\LogSystem; + + +use App\Entity\Base\AbstractDBElement; +use App\Entity\Contracts\LogWithEventUndoInterface; +use App\Entity\Contracts\NamedElementInterface; +use Doctrine\ORM\Mapping as ORM; + +/** + * @ORM\Entity() + * This log entry is created when an element is deleted, that is used in a collection of an other entity. + * This is needed to signal time travel, that it has to undelete the deleted entity. + */ +class CollectionElementDeleted extends AbstractLogEntry implements LogWithEventUndoInterface +{ + protected $typeString = 'collection_element_deleted'; + protected $level = self::LEVEL_INFO; + + public function __construct(AbstractDBElement $changed_element, string $collection_name, AbstractDBElement $deletedElement) + { + parent::__construct(); + + $this->level = self::LEVEL_INFO; + $this->setTargetElement($changed_element); + $this->extra['n'] = $collection_name; + $this->extra['c'] = self::targetTypeClassToID(get_class($deletedElement)); + $this->extra['i'] = $deletedElement->getID(); + if ($deletedElement instanceof NamedElementInterface) { + $this->extra['o'] = $deletedElement->getName(); + } + } + + /** + * Get the name of the collection (on target element) that was changed. + * @return string + */ + public function getCollectionName(): string + { + return $this->extra['n']; + } + + /** + * Gets the name of the element that was deleted. + * Return null, if the element did not have a name. + * @return string|null + */ + public function getOldName(): ?string + { + return $this->extra['o'] ?? null; + } + + /** + * Returns the class of the deleted element. + * @return string + */ + public function getDeletedElementClass(): string + { + return self::targetTypeIdToClass($this->extra['c']); + } + + /** + * Returns the ID of the deleted element. + * @return int + */ + public function getDeletedElementID(): int + { + return $this->extra['i']; + } + + /** + * @inheritDoc + */ + public function isUndoEvent(): bool + { + return isset($this->extra['u']); + } + + /** + * @inheritDoc + */ + public function getUndoEventID(): ?int + { + return $this->extra['u'] ?? null; + } + + /** + * @inheritDoc + */ + public function setUndoneEvent(AbstractLogEntry $event, string $mode = 'undo'): LogWithEventUndoInterface + { + $this->extra['u'] = $event->getID(); + + if ($mode === 'undo') { + $this->extra['um'] = 1; + } elseif ($mode === 'revert') { + $this->extra['um'] = 2; + } else { + throw new \InvalidArgumentException('Passed invalid $mode!'); + } + + return $this; + } + + /** + * @inheritDoc + */ + public function getUndoMode(): string + { + $mode_int = $this->extra['um'] ?? 1; + if ($mode_int === 1) { + return 'undo'; + } else { + return 'revert'; + } + } +} \ No newline at end of file diff --git a/src/Entity/LogSystem/ElementCreatedLogEntry.php b/src/Entity/LogSystem/ElementCreatedLogEntry.php index f03f2187..cc591db3 100644 --- a/src/Entity/LogSystem/ElementCreatedLogEntry.php +++ b/src/Entity/LogSystem/ElementCreatedLogEntry.php @@ -43,12 +43,16 @@ declare(strict_types=1); namespace App\Entity\LogSystem; use App\Entity\Base\AbstractDBElement; +use App\Entity\Contracts\LogWithCommentInterface; +use App\Entity\Contracts\LogWithEventUndoInterface; +use App\Entity\UserSystem\Group; +use App\Entity\UserSystem\User; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity() */ -class ElementCreatedLogEntry extends AbstractLogEntry +class ElementCreatedLogEntry extends AbstractLogEntry implements LogWithCommentInterface, LogWithEventUndoInterface { protected $typeString = 'element_created'; @@ -57,6 +61,11 @@ class ElementCreatedLogEntry extends AbstractLogEntry parent::__construct(); $this->level = self::LEVEL_INFO; $this->setTargetElement($new_element); + + //Creation of new users is maybe more interesting... + if ($new_element instanceof User || $new_element instanceof Group) { + $this->level = self::LEVEL_NOTICE; + } } /** @@ -78,4 +87,76 @@ class ElementCreatedLogEntry extends AbstractLogEntry { return null !== $this->getCreationInstockValue(); } + + /** + * @inheritDoc + */ + public function hasComment(): bool + { + return isset($this->extra['m']); + } + + /** + * @inheritDoc + */ + public function getComment(): ?string + { + return $this->extra['m'] ?? null; + } + + /** + * @inheritDoc + */ + public function setComment(?string $new_comment): LogWithCommentInterface + { + $this->extra['m'] = $new_comment; + return $this; + } + + /** + * @inheritDoc + */ + public function isUndoEvent(): bool + { + return isset($this->extra['u']); + } + + /** + * @inheritDoc + */ + public function getUndoEventID(): ?int + { + return $this->extra['u'] ?? null; + } + + /** + * @inheritDoc + */ + public function setUndoneEvent(AbstractLogEntry $event, string $mode = 'undo'): LogWithEventUndoInterface + { + $this->extra['u'] = $event->getID(); + + if ($mode === 'undo') { + $this->extra['um'] = 1; + } elseif ($mode === 'revert') { + $this->extra['um'] = 2; + } else { + throw new \InvalidArgumentException('Passed invalid $mode!'); + } + + return $this; + } + + /** + * @inheritDoc + */ + public function getUndoMode(): string + { + $mode_int = $this->extra['um'] ?? 1; + if ($mode_int === 1) { + return 'undo'; + } else { + return 'revert'; + } + } } diff --git a/src/Entity/LogSystem/ElementDeletedLogEntry.php b/src/Entity/LogSystem/ElementDeletedLogEntry.php index 5ff35fe9..c6e6c4f3 100644 --- a/src/Entity/LogSystem/ElementDeletedLogEntry.php +++ b/src/Entity/LogSystem/ElementDeletedLogEntry.php @@ -43,13 +43,18 @@ declare(strict_types=1); namespace App\Entity\LogSystem; use App\Entity\Base\AbstractDBElement; +use App\Entity\Contracts\LogWithCommentInterface; +use App\Entity\Contracts\LogWithEventUndoInterface; use App\Entity\Contracts\NamedElementInterface; +use App\Entity\Contracts\TimeTravelInterface; +use App\Entity\UserSystem\Group; +use App\Entity\UserSystem\User; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity() */ -class ElementDeletedLogEntry extends AbstractLogEntry +class ElementDeletedLogEntry extends AbstractLogEntry implements TimeTravelInterface, LogWithCommentInterface, LogWithEventUndoInterface { protected $typeString = 'element_deleted'; @@ -58,6 +63,11 @@ class ElementDeletedLogEntry extends AbstractLogEntry parent::__construct(); $this->level = self::LEVEL_INFO; $this->setTargetElement($deleted_element); + + //Deletion of a user is maybe more interesting... + if ($deleted_element instanceof User || $deleted_element instanceof Group) { + $this->level = self::LEVEL_NOTICE; + } } /** @@ -83,4 +93,102 @@ class ElementDeletedLogEntry extends AbstractLogEntry { return $this->extra['n'] ?? null; } + + /** + * Sets the old data for this entry. + * @param array $old_data + * @return $this + */ + public function setOldData(array $old_data): self + { + $this->extra['o'] = $old_data; + return $this; + } + + /** + * @inheritDoc + */ + public function hasOldDataInformations(): bool + { + return !empty($this->extra['o']); + } + + /** + * @inheritDoc + */ + public function getOldData(): array + { + return $this->extra['o'] ?? []; + } + + /** + * @inheritDoc + */ + public function hasComment(): bool + { + return isset($this->extra['m']); + } + + /** + * @inheritDoc + */ + public function getComment(): ?string + { + return $this->extra['m'] ?? null; + } + + /** + * @inheritDoc + */ + public function setComment(?string $new_comment): LogWithCommentInterface + { + $this->extra['m'] = $new_comment; + return $this; + } + + /** + * @inheritDoc + */ + public function isUndoEvent(): bool + { + return isset($this->extra['u']); + } + + /** + * @inheritDoc + */ + public function getUndoEventID(): ?int + { + return $this->extra['u'] ?? null; + } + + /** + * @inheritDoc + */ + public function setUndoneEvent(AbstractLogEntry $event, string $mode = 'undo'): LogWithEventUndoInterface + { + $this->extra['u'] = $event->getID(); + + if ($mode === 'undo') { + $this->extra['um'] = 1; + } elseif ($mode === 'revert') { + $this->extra['um'] = 2; + } else { + throw new \InvalidArgumentException('Passed invalid $mode!'); + } + + return $this; + } + + /** + * @inheritDoc + */ + public function getUndoMode(): string + { + $mode_int = $this->extra['um'] ?? 1; + if ($mode_int === 1) { + return 'undo'; + } + return 'revert'; + } } diff --git a/src/Entity/LogSystem/ElementEditedLogEntry.php b/src/Entity/LogSystem/ElementEditedLogEntry.php index b774a5c8..2d22edc9 100644 --- a/src/Entity/LogSystem/ElementEditedLogEntry.php +++ b/src/Entity/LogSystem/ElementEditedLogEntry.php @@ -43,12 +43,15 @@ declare(strict_types=1); namespace App\Entity\LogSystem; use App\Entity\Base\AbstractDBElement; +use App\Entity\Contracts\LogWithCommentInterface; +use App\Entity\Contracts\LogWithEventUndoInterface; +use App\Entity\Contracts\TimeTravelInterface; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity() */ -class ElementEditedLogEntry extends AbstractLogEntry +class ElementEditedLogEntry extends AbstractLogEntry implements TimeTravelInterface, LogWithCommentInterface, LogWithEventUndoInterface { protected $typeString = 'element_edited'; @@ -61,12 +64,138 @@ class ElementEditedLogEntry extends AbstractLogEntry } /** - * Returns the message associated with this edit change. - * - * @return string + * Checks if this log contains infos about which fields has changed. + * @return bool */ - public function getMessage(): string + public function hasChangedFieldsInfo(): bool { - return $this->extra['m'] ?? ''; + return isset($this->extra['f']) || $this->hasOldDataInformations(); + } + + /** + * Return the names of all fields that were changed during the change. + * @return string[] + */ + public function getChangedFields(): array + { + if ($this->hasOldDataInformations()) { + return array_keys($this->getOldData()); + } + + if (isset($this->extra['f'])) { + return $this->extra['f']; + } + + return []; + } + + /** + * Set the fields that were changed during this element change. + * @param string[] $changed_fields The names of the fields that were changed during the elements + * @return $this + */ + public function setChangedFields(array $changed_fields): self + { + $this->extra['f'] = $changed_fields; + return $this; + } + + /** + * Sets the old data for this entry. + * @param array $old_data + * @return $this + */ + public function setOldData(array $old_data): self + { + $this->extra['d'] = $old_data; + return $this; + } + + /** + * @inheritDoc + */ + public function hasOldDataInformations(): bool + { + return !empty($this->extra['d']); + } + + /** + * @inheritDoc + */ + public function getOldData(): array + { + return $this->extra['d'] ?? []; + } + + /** + * @inheritDoc + */ + public function hasComment(): bool + { + return isset($this->extra['m']); + } + + /** + * @inheritDoc + */ + public function getComment(): ?string + { + return $this->extra['m'] ?? null; + } + + /** + * @inheritDoc + */ + public function setComment(?string $new_comment): LogWithCommentInterface + { + $this->extra['m'] = $new_comment; + return $this; + } + + /** + * @inheritDoc + */ + public function isUndoEvent(): bool + { + return isset($this->extra['u']); + } + + /** + * @inheritDoc + */ + public function getUndoEventID(): ?int + { + return $this->extra['u'] ?? null; + } + + /** + * @inheritDoc + */ + public function setUndoneEvent(AbstractLogEntry $event, string $mode = 'undo'): LogWithEventUndoInterface + { + $this->extra['u'] = $event->getID(); + + if ($mode === 'undo') { + $this->extra['um'] = 1; + } elseif ($mode === 'revert') { + $this->extra['um'] = 2; + } else { + throw new \InvalidArgumentException('Passed invalid $mode!'); + } + + return $this; + } + + /** + * @inheritDoc + */ + public function getUndoMode(): string + { + $mode_int = $this->extra['um'] ?? 1; + if ($mode_int === 1) { + return 'undo'; + } else { + return 'revert'; + } } } diff --git a/src/Entity/Parts/Part.php b/src/Entity/Parts/Part.php index 61c08672..a94fa37f 100644 --- a/src/Entity/Parts/Part.php +++ b/src/Entity/Parts/Part.php @@ -85,7 +85,7 @@ class Part extends AttachmentContainingDBElement /** * TODO. */ - protected $devices; + protected $devices = []; /** * @ColumnSecurity(type="datetime") diff --git a/src/Entity/Parts/PartLot.php b/src/Entity/Parts/PartLot.php index 5f808a9c..ef738bd8 100644 --- a/src/Entity/Parts/PartLot.php +++ b/src/Entity/Parts/PartLot.php @@ -44,6 +44,7 @@ namespace App\Entity\Parts; use App\Entity\Base\AbstractDBElement; use App\Entity\Base\TimestampTrait; +use App\Entity\Contracts\TimeStampableInterface; use App\Validator\Constraints\Selectable; use App\Validator\Constraints\ValidPartLot; use DateTime; @@ -60,7 +61,7 @@ use Symfony\Component\Validator\Constraints as Assert; * @ORM\HasLifecycleCallbacks() * @ValidPartLot() */ -class PartLot extends AbstractDBElement +class PartLot extends AbstractDBElement implements TimeStampableInterface { use TimestampTrait; diff --git a/src/Entity/PriceInformations/Orderdetail.php b/src/Entity/PriceInformations/Orderdetail.php index 98ca1591..04bf748c 100644 --- a/src/Entity/PriceInformations/Orderdetail.php +++ b/src/Entity/PriceInformations/Orderdetail.php @@ -52,6 +52,7 @@ namespace App\Entity\PriceInformations; use App\Entity\Base\AbstractDBElement; use App\Entity\Base\TimestampTrait; +use App\Entity\Contracts\TimeStampableInterface; use App\Entity\Parts\Part; use App\Entity\Parts\Supplier; use Doctrine\Common\Collections\ArrayCollection; @@ -66,7 +67,7 @@ use Symfony\Component\Validator\Constraints as Assert; * @ORM\Entity() * @ORM\HasLifecycleCallbacks() */ -class Orderdetail extends AbstractDBElement +class Orderdetail extends AbstractDBElement implements TimeStampableInterface { use TimestampTrait; diff --git a/src/Entity/PriceInformations/Pricedetail.php b/src/Entity/PriceInformations/Pricedetail.php index 23205b44..d7f19608 100644 --- a/src/Entity/PriceInformations/Pricedetail.php +++ b/src/Entity/PriceInformations/Pricedetail.php @@ -52,6 +52,7 @@ namespace App\Entity\PriceInformations; use App\Entity\Base\AbstractDBElement; use App\Entity\Base\TimestampTrait; +use App\Entity\Contracts\TimeStampableInterface; use App\Validator\Constraints\Selectable; use Doctrine\ORM\Mapping as ORM; use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; @@ -65,7 +66,7 @@ use Symfony\Component\Validator\Constraints as Assert; * @ORM\HasLifecycleCallbacks() * @UniqueEntity(fields={"orderdetail", "min_discount_quantity"}) */ -class Pricedetail extends AbstractDBElement +class Pricedetail extends AbstractDBElement implements TimeStampableInterface { use TimestampTrait; diff --git a/src/Entity/UserSystem/PermissionsEmbed.php b/src/Entity/UserSystem/PermissionsEmbed.php index 99c93427..c6b01782 100644 --- a/src/Entity/UserSystem/PermissionsEmbed.php +++ b/src/Entity/UserSystem/PermissionsEmbed.php @@ -481,7 +481,7 @@ class PermissionsEmbed */ final protected static function readBitPair($data, int $n): int { - Assert::lessThanEq($n, 31, '$n must be smaller than 32, because only a 32bit int is used! Got %s.'); + //Assert::lessThanEq($n, 31, '$n must be smaller than 32, because only a 32bit int is used! Got %s.'); if (0 !== $n % 2) { throw new InvalidArgumentException('$n must be dividable by 2, because we address bit pairs here!'); } @@ -501,7 +501,7 @@ class PermissionsEmbed */ final protected static function writeBitPair(int $data, int $n, int $new): int { - Assert::lessThanEq($n, 31, '$n must be smaller than 32, because only a 32bit int is used! Got %s.'); + //Assert::lessThanEq($n, 31, '$n must be smaller than 32, because only a 32bit int is used! Got %s.'); Assert::lessThanEq($new, 3, '$new must be smaller than 3, because a bit pair is written! Got %s.'); Assert::greaterThanEq($new, 0, '$new must not be negative, because a bit pair is written! Got %s.'); diff --git a/src/EventSubscriber/EventLoggerSubscriber.php b/src/EventSubscriber/EventLoggerSubscriber.php index b3809de3..0053f688 100644 --- a/src/EventSubscriber/EventLoggerSubscriber.php +++ b/src/EventSubscriber/EventLoggerSubscriber.php @@ -20,25 +20,71 @@ namespace App\EventSubscriber; +use App\Entity\Attachments\Attachment; +use App\Entity\Attachments\AttachmentType; use App\Entity\Base\AbstractDBElement; +use App\Entity\Base\AbstractPartsContainingDBElement; +use App\Entity\Base\AbstractStructuralDBElement; use App\Entity\LogSystem\AbstractLogEntry; +use App\Entity\LogSystem\CollectionElementDeleted; use App\Entity\LogSystem\ElementCreatedLogEntry; use App\Entity\LogSystem\ElementDeletedLogEntry; use App\Entity\LogSystem\ElementEditedLogEntry; +use App\Entity\Parts\PartLot; +use App\Entity\PriceInformations\Orderdetail; +use App\Entity\PriceInformations\Pricedetail; +use App\Entity\UserSystem\User; +use App\Services\LogSystem\EventCommentHelper; use App\Services\LogSystem\EventLogger; +use App\Services\LogSystem\EventUndoHelper; use Doctrine\Common\EventSubscriber; +use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Event\OnFlushEventArgs; use Doctrine\ORM\Event\PostFlushEventArgs; use Doctrine\ORM\Events; use Doctrine\Persistence\Event\LifecycleEventArgs; +use Symfony\Component\PropertyAccess\PropertyAccessorInterface; +use Symfony\Component\Serializer\SerializerInterface; class EventLoggerSubscriber implements EventSubscriber { - protected $logger; + /** @var array The given fields will not be saved, because they contain sensitive informations */ + protected const FIELD_BLACKLIST = [ + User::class => ['password', 'need_pw_change', 'googleAuthenticatorSecret', 'backupCodes', 'trustedDeviceCookieVersion', 'pw_reset_token', 'backupCodesGenerationDate'], + ]; - public function __construct(EventLogger $logger) + /** @var array If elements of the given class are deleted, a log for the given fields will be triggered */ + protected const TRIGGER_ASSOCIATION_LOG_WHITELIST = [ + PartLot::class => ['part'], + Orderdetail::class => ['part'], + Pricedetail::class => ['orderdetail'], + Attachment::class => ['element'], + ]; + + protected const MAX_STRING_LENGTH = 2000; + + protected $logger; + protected $serializer; + protected $eventCommentHelper; + protected $eventUndoHelper; + protected $save_changed_fields; + protected $save_changed_data; + protected $save_removed_data; + protected $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) { $this->logger = $logger; + $this->serializer = $serializer; + $this->eventCommentHelper = $commentHelper; + $this->propertyAccessor = $propertyAccessor; + $this->eventUndoHelper = $eventUndoHelper; + + $this->save_changed_fields = $save_changed_fields; + $this->save_changed_data = $save_changed_data; + $this->save_removed_data = $save_removed_data; } public function onFlush(OnFlushEventArgs $eventArgs) @@ -53,30 +99,43 @@ class EventLoggerSubscriber implements EventSubscriber foreach ($uow->getScheduledEntityUpdates() as $entity) { if ($this->validEntity($entity)) { - $log = new ElementEditedLogEntry($entity); - $this->logger->log($log); + $this->logElementEdited($entity, $em); } } foreach ($uow->getScheduledEntityDeletions() as $entity) { if ($this->validEntity($entity)) { - $log = new ElementDeletedLogEntry($entity); - $this->logger->log($log); + $this->logElementDeleted($entity, $em); } } - $uow->computeChangeSets(); } public function postPersist(LifecycleEventArgs $args) { - //Create an log entry + //Create an log entry, we have to do this post persist, cause we have to know the ID /** @var AbstractDBElement $entity */ $entity = $args->getObject(); if ($this->validEntity($entity)) { $log = new ElementCreatedLogEntry($entity); + //Add user comment to log entry + if ($this->eventCommentHelper->isMessageSet()) { + $log->setComment($this->eventCommentHelper->getMessage()); + } + if ($this->eventUndoHelper->isUndo()) { + $undoEvent = $this->eventUndoHelper->getUndoneEvent(); + + $log->setUndoneEvent($undoEvent, $this->eventUndoHelper->getMode()); + + if($undoEvent instanceof ElementDeletedLogEntry && $undoEvent->getTargetClass() === $log->getTargetClass()) { + $log->setTargetElementID($undoEvent->getTargetID()); + } + if($undoEvent instanceof CollectionElementDeleted && $undoEvent->getDeletedElementClass() === $log->getTargetClass()) { + $log->setTargetElementID($undoEvent->getDeletedElementID()); + } + } $this->logger->log($log); } } @@ -89,6 +148,158 @@ class EventLoggerSubscriber implements EventSubscriber if ($uow->hasPendingInsertions()) { $em->flush(); } + + //Clear the message provided by user. + $this->eventCommentHelper->clearMessage(); + $this->eventUndoHelper->clearUndoneEvent(); + } + + protected function logElementDeleted(AbstractDBElement $entity, EntityManagerInterface $em): void + { + $log = new ElementDeletedLogEntry($entity); + //Add user comment to log entry + if ($this->eventCommentHelper->isMessageSet()) { + $log->setComment($this->eventCommentHelper->getMessage()); + } + if ($this->eventUndoHelper->isUndo()) { + $log->setUndoneEvent($this->eventUndoHelper->getUndoneEvent(), $this->eventUndoHelper->getMode()); + } + if ($this->save_removed_data) { + //The 4th param is important here, as we delete the element... + $this->saveChangeSet($entity, $log, $em, true); + } + $this->logger->log($log); + + //Check if we have to log CollectionElementDeleted entries + if ($this->save_changed_data) { + $metadata = $em->getClassMetadata(get_class($entity)); + $mappings = $metadata->getAssociationMappings(); + //Check if class is whitelisted for CollectionElementDeleted entry + foreach (static::TRIGGER_ASSOCIATION_LOG_WHITELIST as $class => $whitelist) { + if (is_a($entity, $class)) { + //Check names + foreach ($mappings as $field => $mapping) { + if (in_array($field, $whitelist)) { + $changed = $this->propertyAccessor->getValue($entity, $field); + $log = new CollectionElementDeleted($changed, $mapping['inversedBy'], $entity); + if ($this->eventUndoHelper->isUndo()) { + $log->setUndoneEvent($this->eventUndoHelper->getUndoneEvent(), $this->eventUndoHelper->getMode()); + } + $this->logger->log($log); + } + } + } + } + } + } + + protected function logElementEdited(AbstractDBElement $entity, EntityManagerInterface $em): void + { + $uow = $em->getUnitOfWork(); + + $log = new ElementEditedLogEntry($entity); + if ($this->save_changed_data) { + $this->saveChangeSet($entity, $log, $em); + } elseif ($this->save_changed_fields) { + $changed_fields = array_keys($uow->getEntityChangeSet($entity)); + //Remove lastModified field, as this is always changed (gives us no additional info) + $changed_fields = array_diff($changed_fields, ['lastModified']); + $log->setChangedFields($changed_fields); + } + //Add user comment to log entry + if ($this->eventCommentHelper->isMessageSet()) { + $log->setComment($this->eventCommentHelper->getMessage()); + } + if ($this->eventUndoHelper->isUndo()) { + $log->setUndoneEvent($this->eventUndoHelper->getUndoneEvent(), $this->eventUndoHelper->getMode()); + } + $this->logger->log($log); + } + + /** + * Check if the given element class has restrictions to its fields + * @param AbstractDBElement $element + * @return bool True if there are restrictions, and further checking is needed + */ + public function hasFieldRestrictions(AbstractDBElement $element): bool + { + foreach (static::FIELD_BLACKLIST as $class => $blacklist) { + if (is_a($element, $class)) { + return true; + } + } + + return false; + } + + /** + * Filter out every forbidden field and return the cleaned array. + * @param AbstractDBElement $element + * @param array $fields + * @return array + */ + protected function filterFieldRestrictions(AbstractDBElement $element, array $fields): array + { + unset($fields['lastModified']); + + if (!$this->hasFieldRestrictions($element)) { + return $fields; + } + + return array_filter($fields, function ($value, $key) use ($element) { + //Associative array (save changed data) case + if (is_string($key)) { + return $this->shouldFieldBeSaved($element, $key); + } + + return $this->shouldFieldBeSaved($element, $value); + }, ARRAY_FILTER_USE_BOTH); + } + + /** + * Checks if the field of the given element should be saved (if it is not blacklisted). + * @param AbstractDBElement $element + * @param string $field_name + * @return bool + */ + public function shouldFieldBeSaved(AbstractDBElement $element, string $field_name): bool + { + foreach (static::FIELD_BLACKLIST as $class => $blacklist) { + if (is_a($element, $class) && in_array($field_name, $blacklist)) { + return false; + } + } + + //By default allow every field. + return true; + } + + protected function saveChangeSet(AbstractDBElement $entity, AbstractLogEntry $logEntry, EntityManagerInterface $em, $element_deleted = false): void + { + $uow = $em->getUnitOfWork(); + + if (!$logEntry instanceof ElementEditedLogEntry && !$logEntry instanceof ElementDeletedLogEntry) { + throw new \InvalidArgumentException('$logEntry must be ElementEditedLogEntry or ElementDeletedLogEntry!'); + } + + if ($element_deleted) { //If the element was deleted we can use getOriginalData to save its content + $old_data = $uow->getOriginalEntityData($entity); + } 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)); + } + $old_data = $this->filterFieldRestrictions($entity, $old_data); + + //Restrict length of string fields, to save memory... + $old_data = array_map(function ($value) { + if (is_string($value)) { + return mb_strimwidth($value, 0, self::MAX_STRING_LENGTH, '...'); + } + + return $value; + }, $old_data); + + $logEntry->setOldData($old_data); } /** diff --git a/src/Form/AdminPages/BaseEntityAdminForm.php b/src/Form/AdminPages/BaseEntityAdminForm.php index 6930b02e..da9dfcfe 100644 --- a/src/Form/AdminPages/BaseEntityAdminForm.php +++ b/src/Form/AdminPages/BaseEntityAdminForm.php @@ -144,6 +144,13 @@ class BaseEntityAdminForm extends AbstractType 'entity' => $entity, ]); + $builder->add('log_comment', TextType::class, [ + 'label' => 'edit.log_comment', + 'mapped' => false, + 'required' => false, + 'empty_data' => null, + ]); + //Buttons $builder->add('save', SubmitType::class, [ 'label' => $is_new ? 'entity.create' : 'entity.edit.save', diff --git a/src/Form/Part/PartBaseType.php b/src/Form/Part/PartBaseType.php index 0390bbad..cf30f988 100644 --- a/src/Form/Part/PartBaseType.php +++ b/src/Form/Part/PartBaseType.php @@ -264,6 +264,13 @@ class PartBaseType extends AbstractType ], ]); + $builder->add('log_comment', TextType::class, [ + 'label' => 'edit.log_comment', + 'mapped' => false, + 'required' => false, + 'empty_data' => null, + ]); + $builder //Buttons ->add('save', SubmitType::class, ['label' => 'part.edit.save']) diff --git a/src/Form/UserAdminForm.php b/src/Form/UserAdminForm.php index a4af2f81..ec356710 100644 --- a/src/Form/UserAdminForm.php +++ b/src/Form/UserAdminForm.php @@ -250,6 +250,13 @@ class UserAdminForm extends AbstractType 'disabled' => ! $this->security->isGranted($is_new ? 'create' : 'edit', $entity), ]); + $builder->add('log_comment', TextType::class, [ + 'label' => 'edit.log_comment', + 'mapped' => false, + 'required' => false, + 'empty_data' => null, + ]); + //Buttons $builder->add('save', SubmitType::class, [ 'label' => $is_new ? 'user.create' : 'user.edit.save', diff --git a/src/Repository/AttachmentRepository.php b/src/Repository/AttachmentRepository.php index f2c6c774..f8b78e41 100644 --- a/src/Repository/AttachmentRepository.php +++ b/src/Repository/AttachmentRepository.php @@ -23,7 +23,7 @@ namespace App\Repository; use Doctrine\ORM\EntityRepository; -class AttachmentRepository extends EntityRepository +class AttachmentRepository extends DBElementRepository { /** * Gets the count of all private/secure attachments. diff --git a/src/Repository/DBElementRepository.php b/src/Repository/DBElementRepository.php new file mode 100644 index 00000000..94b19ec2 --- /dev/null +++ b/src/Repository/DBElementRepository.php @@ -0,0 +1,56 @@ +. + */ + +namespace App\Repository; + + +use App\Entity\Base\AbstractDBElement; +use Doctrine\ORM\EntityRepository; + +class DBElementRepository extends EntityRepository +{ + /** + * Changes the ID of the given element to a new value. + * You should only use it to undelete former existing elements, everything else is most likely a bad idea! + * @param AbstractDBElement $element The element whose ID should be changed + * @param int $new_id The new ID + */ + public function changeID(AbstractDBElement $element, int $new_id): void + { + $qb = $this->createQueryBuilder('element'); + $q = $qb->update(get_class($element), 'element') + ->set('element.id', $new_id) + ->where('element.id = ?1') + ->setParameter(1, $element->getID()) + ->getQuery(); + + $p = $q->execute(); + + $this->setField($element, 'id', $new_id); + } + + protected function setField(AbstractDBElement $element, string $field, $new_value) + { + $reflection = new \ReflectionClass(get_class($element)); + $property = $reflection->getProperty($field); + $property->setAccessible(true); + $property->setValue($element, $new_value); + } +} \ No newline at end of file diff --git a/src/Repository/LogEntryRepository.php b/src/Repository/LogEntryRepository.php index ae571f80..53c9b4d9 100644 --- a/src/Repository/LogEntryRepository.php +++ b/src/Repository/LogEntryRepository.php @@ -44,13 +44,15 @@ namespace App\Repository; use App\Entity\Base\AbstractDBElement; use App\Entity\LogSystem\AbstractLogEntry; +use App\Entity\LogSystem\CollectionElementDeleted; use App\Entity\LogSystem\ElementCreatedLogEntry; +use App\Entity\LogSystem\ElementDeletedLogEntry; use App\Entity\LogSystem\ElementEditedLogEntry; use App\Entity\UserSystem\User; use Doctrine\ORM\EntityRepository; use Doctrine\ORM\QueryBuilder; -class LogEntryRepository extends EntityRepository +class LogEntryRepository extends DBElementRepository { public function findBy(array $criteria, ?array $orderBy = null, $limit = null, $offset = null) { @@ -81,6 +83,93 @@ class LogEntryRepository extends EntityRepository return $this->findBy(['element' => $element], ['timestamp' => $order], $limit, $offset); } + /** + * Try to get a log entry that contains the information to undete a given element + * @param string $class The class of the element that should be undeleted + * @param int $id The ID of the element that should be deleted + * @return ElementDeletedLogEntry + */ + public function getUndeleteDataForElement(string $class, int $id): ElementDeletedLogEntry + { + $qb = $this->createQueryBuilder('log'); + $qb->select('log') + //->where('log INSTANCE OF App\Entity\LogSystem\ElementEditedLogEntry') + ->where('log INSTANCE OF ' . ElementDeletedLogEntry::class) + ->andWhere('log.target_type = :target_type') + ->andWhere('log.target_id = :target_id') + ->orderBy('log.timestamp', 'DESC') + ->setMaxResults(1); + + $qb->setParameters([ + 'target_type' => AbstractLogEntry::targetTypeClassToID($class), + 'target_id' => $id, + ]); + + $query = $qb->getQuery(); + + $results = $query->execute(); + + if (empty($results)) { + throw new \RuntimeException("No undelete data could be found for this element"); + } + return $results[0]; + } + + /** + * Gets all log entries that are related to time travelling + * @param AbstractDBElement $element The element for which the time travel data should be retrieved + * @param \DateTime $until Back to which timestamp should the data be get (including the timestamp) + * @return AbstractLogEntry[] + */ + public function getTimetravelDataForElement(AbstractDBElement $element, \DateTime $until): array + { + $qb = $this->createQueryBuilder('log'); + $qb->select('log') + //->where('log INSTANCE OF App\Entity\LogSystem\ElementEditedLogEntry') + ->where('log INSTANCE OF ' . ElementEditedLogEntry::class) + ->orWhere('log INSTANCE OF ' . CollectionElementDeleted::class) + ->andWhere('log.target_type = :target_type') + ->andWhere('log.target_id = :target_id') + ->andWhere('log.timestamp >= :until') + ->orderBy('log.timestamp', 'DESC'); + + $qb->setParameters([ + 'target_type' => AbstractLogEntry::targetTypeClassToID(get_class($element)), + 'target_id' => $element->getID(), + 'until' => $until + ]); + + $query = $qb->getQuery(); + return $query->execute(); + } + + /** + * Check if the given element has existed at the given timestamp + * @param AbstractDBElement $element + * @param \DateTime $timestamp + * @return bool True if the element existed at the given timestamp + */ + public function getElementExistedAtTimestamp(AbstractDBElement $element, \DateTime $timestamp): bool + { + $qb = $this->createQueryBuilder('log'); + $qb->select('count(log)') + ->where('log INSTANCE OF ' . ElementCreatedLogEntry::class) + ->andWhere('log.target_type = :target_type') + ->andWhere('log.target_id = :target_id') + ->andWhere('log.timestamp >= :until') + ->orderBy('log.timestamp', 'DESC'); + + $qb->setParameters([ + 'target_type' => AbstractLogEntry::targetTypeClassToID(get_class($element)), + 'target_id' => $element->getID(), + 'until' => $timestamp + ]); + + $query = $qb->getQuery(); + $count = $query->getSingleScalarResult(); + return !($count > 0); + } + /** * Gets the last log entries ordered by timestamp. * diff --git a/src/Repository/NamedDBElementRepository.php b/src/Repository/NamedDBElementRepository.php index 8fa4ecc1..404efed0 100644 --- a/src/Repository/NamedDBElementRepository.php +++ b/src/Repository/NamedDBElementRepository.php @@ -46,7 +46,7 @@ use App\Entity\Base\AbstractNamedDBElement; use App\Helpers\Trees\TreeViewNode; use Doctrine\ORM\EntityRepository; -class NamedDBElementRepository extends EntityRepository +class NamedDBElementRepository extends DBElementRepository { /** * Gets a tree of TreeViewNode elements. The root elements has $parent as parent. diff --git a/src/Repository/PartRepository.php b/src/Repository/PartRepository.php index bd069632..0ac94932 100644 --- a/src/Repository/PartRepository.php +++ b/src/Repository/PartRepository.php @@ -46,7 +46,7 @@ use App\Entity\Parts\PartLot; use Doctrine\ORM\EntityRepository; use Doctrine\ORM\QueryBuilder; -class PartRepository extends EntityRepository +class PartRepository extends NamedDBElementRepository { /** * Gets the summed up instock of all parts (only parts without an measurent unit) diff --git a/src/Security/Voter/AttachmentVoter.php b/src/Security/Voter/AttachmentVoter.php index 01727806..07cc9c25 100644 --- a/src/Security/Voter/AttachmentVoter.php +++ b/src/Security/Voter/AttachmentVoter.php @@ -58,11 +58,7 @@ class AttachmentVoter extends ExtendedVoter */ protected function voteOnUser($attribute, $subject, User $user): bool { - if ($subject instanceof Attachment) { - return $this->resolver->inherit($user, 'parts_attachments', $attribute) ?? false; - } - - return false; + return $this->resolver->inherit($user, 'parts_attachments', $attribute) ?? false; } /** @@ -75,10 +71,11 @@ class AttachmentVoter extends ExtendedVoter */ protected function supports($attribute, $subject) { - if ($subject instanceof Attachment) { + if (is_a($subject, Attachment::class, true)) { return in_array($attribute, $this->resolver->listOperationsForPermission('parts_attachments'), false); } + //Allow class name as subject return false; } } diff --git a/src/Security/Voter/GroupVoter.php b/src/Security/Voter/GroupVoter.php index 0b88b8a0..0201cbe5 100644 --- a/src/Security/Voter/GroupVoter.php +++ b/src/Security/Voter/GroupVoter.php @@ -57,11 +57,7 @@ class GroupVoter extends ExtendedVoter */ protected function voteOnUser($attribute, $subject, User $user): bool { - if ($subject instanceof Group) { - return $this->resolver->inherit($user, 'groups', $attribute) ?? false; - } - - return false; + return $this->resolver->inherit($user, 'groups', $attribute) ?? false; } /** @@ -74,7 +70,7 @@ class GroupVoter extends ExtendedVoter */ protected function supports($attribute, $subject) { - if ($subject instanceof Group) { + if (is_a($subject, Group::class, true)) { return $this->resolver->isValidOperation('groups', $attribute); } diff --git a/src/Security/Voter/LogEntryVoter.php b/src/Security/Voter/LogEntryVoter.php index cb1c54a1..24fe857a 100644 --- a/src/Security/Voter/LogEntryVoter.php +++ b/src/Security/Voter/LogEntryVoter.php @@ -51,22 +51,20 @@ class LogEntryVoter extends ExtendedVoter protected function voteOnUser($attribute, $subject, User $user): bool { - if ($subject instanceof AbstractLogEntry) { - if ('delete' === $attribute) { - return $this->resolver->inherit($user, 'system', 'delete_logs') ?? false; + if ('delete' === $attribute) { + return $this->resolver->inherit($user, 'system', 'delete_logs') ?? false; + } + + if ('read' === $attribute) { + //Allow read of the users own log entries + if ( + $subject->getUser() === $user + && $this->resolver->inherit($user, 'self', 'show_logs') + ) { + return true; } - if ('read' === $attribute) { - //Allow read of the users own log entries - if ( - $subject->getUser() === $user - && $this->resolver->inherit($user, 'self', 'show_logs') - ) { - return true; - } - - return $this->resolver->inherit($user, 'system', 'show_logs') ?? false; - } + return $this->resolver->inherit($user, 'system', 'show_logs') ?? false; } return false; diff --git a/src/Security/Voter/OrderdetailVoter.php b/src/Security/Voter/OrderdetailVoter.php new file mode 100644 index 00000000..f214685e --- /dev/null +++ b/src/Security/Voter/OrderdetailVoter.php @@ -0,0 +1,59 @@ +. + */ + +namespace App\Security\Voter; + + +use App\Entity\Parts\PartLot; +use App\Entity\PriceInformations\Orderdetail; +use App\Entity\UserSystem\User; + +class OrderdetailVoter extends ExtendedVoter +{ + /** @var string[] When this permsission are encountered, they are checked on part */ + protected const PART_PERMS = ['show_history', 'revert_element']; + + /** + * @inheritDoc + */ + protected function voteOnUser($attribute, $subject, User $user): bool + { + if (in_array($attribute, self::PART_PERMS, true)) { + return $this->resolver->inherit($user, 'parts', $attribute) ?? false; + } + + return $this->resolver->inherit($user, 'parts_orderdetails', $attribute) ?? false; + } + + /** + * @inheritDoc + */ + protected function supports($attribute, $subject) + { + if (is_a($subject, Orderdetail::class, true)) { + return in_array($attribute, array_merge( + self::PART_PERMS, + $this->resolver->listOperationsForPermission('parts_orderdetails') + ), true); + } + + return false; + } +} \ No newline at end of file diff --git a/src/Security/Voter/PartLotVoter.php b/src/Security/Voter/PartLotVoter.php new file mode 100644 index 00000000..cf022a73 --- /dev/null +++ b/src/Security/Voter/PartLotVoter.php @@ -0,0 +1,58 @@ +. + */ + +namespace App\Security\Voter; + + +use App\Entity\Parts\PartLot; +use App\Entity\UserSystem\User; + +class PartLotVoter extends ExtendedVoter +{ + /** @var string[] When this permsission are encountered, they are checked on part */ + protected const PART_PERMS = ['show_history', 'revert_element']; + + /** + * @inheritDoc + */ + protected function voteOnUser($attribute, $subject, User $user): bool + { + if (in_array($attribute, self::PART_PERMS, true)) { + return $this->resolver->inherit($user, 'parts', $attribute) ?? false; + } + + return $this->resolver->inherit($user, 'parts_lots', $attribute) ?? false; + } + + /** + * @inheritDoc + */ + protected function supports($attribute, $subject) + { + if (is_a($subject, PartLot::class, true)) { + return in_array($attribute, array_merge( + self::PART_PERMS, + $this->resolver->listOperationsForPermission('parts_lots') + ), true); + } + + return false; + } +} \ No newline at end of file diff --git a/src/Security/Voter/PartVoter.php b/src/Security/Voter/PartVoter.php index d7d375cc..f829f557 100644 --- a/src/Security/Voter/PartVoter.php +++ b/src/Security/Voter/PartVoter.php @@ -57,11 +57,7 @@ class PartVoter extends ExtendedVoter protected function supports($attribute, $subject) { - // replace with your own logic - // https://symfony.com/doc/current/security/voters.html - //return ($subject instanceof Part || in_array($subject, ['PERM_parts', 'PERM_parts_name'])); - - if ($subject instanceof Part) { + if (is_a($subject, Part::class, true)) { //Check if a sub permission should be checked -> $attribute has format name.edit if (false !== strpos($attribute, '.')) { [$perm, $op] = explode('.', $attribute); @@ -72,24 +68,21 @@ class PartVoter extends ExtendedVoter return $this->resolver->isValidOperation('parts', $attribute); } + //Allow class name as subject return false; } protected function voteOnUser($attribute, $subject, User $user): bool { - if ($subject instanceof Part) { - //Check for sub permissions - if (false !== strpos($attribute, '.')) { - [$perm, $op] = explode('.', $attribute); + //Check for sub permissions + if (false !== strpos($attribute, '.')) { + [$perm, $op] = explode('.', $attribute); - return $this->resolver->inherit($user, 'parts_'.$perm, $op) ?? false; - } - - //Null concealing operator means, that no - return $this->resolver->inherit($user, 'parts', $attribute) ?? false; + return $this->resolver->inherit($user, 'parts_'.$perm, $op) ?? false; } - //Deny access by default. - return false; + //Null concealing operator means, that no + return $this->resolver->inherit($user, 'parts', $attribute) ?? false; + } } diff --git a/src/Security/Voter/PricedetailVoter.php b/src/Security/Voter/PricedetailVoter.php new file mode 100644 index 00000000..e4ec0251 --- /dev/null +++ b/src/Security/Voter/PricedetailVoter.php @@ -0,0 +1,59 @@ +. + */ + +namespace App\Security\Voter; + + +use App\Entity\Parts\PartLot; +use App\Entity\PriceInformations\Pricedetail; +use App\Entity\UserSystem\User; + +class PricedetailVoter extends ExtendedVoter +{ + /** @var string[] When this permsission are encountered, they are checked on part */ + protected const PART_PERMS = ['show_history', 'revert_element']; + + /** + * @inheritDoc + */ + protected function voteOnUser($attribute, $subject, User $user): bool + { + if (in_array($attribute, self::PART_PERMS, true)) { + return $this->resolver->inherit($user, 'parts', $attribute) ?? false; + } + + return $this->resolver->inherit($user, 'parts_prices', $attribute) ?? false; + } + + /** + * @inheritDoc + */ + protected function supports($attribute, $subject) + { + if (is_a($subject, Pricedetail::class, true)) { + return in_array($attribute, array_merge( + self::PART_PERMS, + $this->resolver->listOperationsForPermission('parts_prices') + ), true); + } + + return false; + } +} \ No newline at end of file diff --git a/src/Security/Voter/StructureVoter.php b/src/Security/Voter/StructureVoter.php index e2699b48..d5d6eb51 100644 --- a/src/Security/Voter/StructureVoter.php +++ b/src/Security/Voter/StructureVoter.php @@ -43,11 +43,13 @@ declare(strict_types=1); namespace App\Security\Voter; use App\Entity\Attachments\AttachmentType; +use App\Entity\Base\AbstractStructuralDBElement; use App\Entity\Devices\Device; use App\Entity\Parts\Category; use App\Entity\Parts\Footprint; use App\Entity\Parts\Manufacturer; use App\Entity\Parts\MeasurementUnit; +use App\Entity\Parts\Part; use App\Entity\Parts\Storelocation; use App\Entity\Parts\Supplier; use App\Entity\PriceInformations\Currency; @@ -67,24 +69,29 @@ class StructureVoter extends ExtendedVoter */ protected function supports($attribute, $subject) { - if (is_object($subject)) { + if (is_object($subject) || is_string($subject)) { $permission_name = $this->instanceToPermissionName($subject); //If permission name is null, then the subject is not supported return (null !== $permission_name) && $this->resolver->isValidOperation($permission_name, $attribute); } + return false; } /** * Maps a instance type to the permission name. * - * @param mixed $subject The subject for which the permission name should be generated + * @param object|string $subject The subject for which the permission name should be generated * * @return string|null the name of the permission for the subject's type or null, if the subject is not supported */ protected function instanceToPermissionName($subject): ?string { - $class_name = get_class($subject); + if (!is_string($subject)) { + $class_name = get_class($subject); + } else { + $class_name = $subject; + } switch ($class_name) { case AttachmentType::class: return 'attachment_types'; diff --git a/src/Security/Voter/UserVoter.php b/src/Security/Voter/UserVoter.php index d724a2e6..de7d165b 100644 --- a/src/Security/Voter/UserVoter.php +++ b/src/Security/Voter/UserVoter.php @@ -57,11 +57,11 @@ class UserVoter extends ExtendedVoter */ protected function supports($attribute, $subject) { - if ($subject instanceof User) { + if (is_a($subject, User::class, true)) { return in_array($attribute, array_merge( $this->resolver->listOperationsForPermission('users'), $this->resolver->listOperationsForPermission('self')), - false + false ); } @@ -89,10 +89,11 @@ class UserVoter extends ExtendedVoter return $tmp; } } - //Else just check users permission: - if ($this->resolver->isValidOperation('users', $attribute)) { - return $this->resolver->inherit($user, 'users', $attribute) ?? false; - } + } + + //Else just check users permission: + if ($this->resolver->isValidOperation('users', $attribute)) { + return $this->resolver->inherit($user, 'users', $attribute) ?? false; } return false; diff --git a/src/Services/EntityExporter.php b/src/Services/EntityExporter.php index 5f06e2ca..d55e09ba 100644 --- a/src/Services/EntityExporter.php +++ b/src/Services/EntityExporter.php @@ -43,6 +43,14 @@ declare(strict_types=1); namespace App\Services; use App\Entity\Base\AbstractNamedDBElement; +use Symfony\Component\Serializer\Encoder\CsvEncoder; +use Symfony\Component\Serializer\Encoder\JsonEncoder; +use Symfony\Component\Serializer\Encoder\XmlEncoder; +use Symfony\Component\Serializer\Encoder\YamlEncoder; +use Symfony\Component\Serializer\Normalizer\DataUriNormalizer; +use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer; +use Symfony\Component\Serializer\Normalizer\ObjectNormalizer; +use Symfony\Component\Serializer\Serializer; use function in_array; use InvalidArgumentException; use function is_array; @@ -62,6 +70,10 @@ class EntityExporter public function __construct(SerializerInterface $serializer) { + /*$encoders = [new XmlEncoder(), new JsonEncoder(), new CSVEncoder(), new YamlEncoder()]; + $normalizers = [new ObjectNormalizer(), new DateTimeNormalizer()]; + $this->serializer = new Serializer($normalizers, $encoders); + $this->serializer-> */ $this->serializer = $serializer; } @@ -120,13 +132,15 @@ class EntityExporter $entity_array = [$entity]; } - $response = new Response($this->serializer->serialize($entity_array, $format, - [ - 'groups' => $groups, - 'as_collection' => true, - 'csv_delimiter' => ';', //Better for Excel - 'xml_root_node_name' => 'PartDBExport', - ])); + $serialized_data = $this->serializer->serialize($entity_array, $format, + [ + 'groups' => $groups, + 'as_collection' => true, + 'csv_delimiter' => ';', //Better for Excel + 'xml_root_node_name' => 'PartDBExport', + ]); + + $response = new Response($serialized_data); $response->headers->set('Content-Type', $content_type); @@ -151,7 +165,8 @@ class EntityExporter // Create the disposition of the file $disposition = $response->headers->makeDisposition( ResponseHeaderBag::DISPOSITION_ATTACHMENT, - $filename + $filename, + $string = preg_replace('![^'.preg_quote('-').'a-z0-_9\s]+!', '', strtolower($filename)) ); // Set the content disposition $response->headers->set('Content-Disposition', $disposition); diff --git a/src/Services/EntityURLGenerator.php b/src/Services/EntityURLGenerator.php index 879afc20..28d691e6 100644 --- a/src/Services/EntityURLGenerator.php +++ b/src/Services/EntityURLGenerator.php @@ -44,6 +44,7 @@ namespace App\Services; use App\Entity\Attachments\Attachment; use App\Entity\Attachments\AttachmentType; +use App\Entity\Attachments\PartAttachment; use App\Entity\Base\AbstractDBElement; use App\Entity\Devices\Device; use App\Entity\Parts\Category; @@ -51,9 +52,12 @@ use App\Entity\Parts\Footprint; use App\Entity\Parts\Manufacturer; use App\Entity\Parts\MeasurementUnit; use App\Entity\Parts\Part; +use App\Entity\Parts\PartLot; use App\Entity\Parts\Storelocation; use App\Entity\Parts\Supplier; use App\Entity\PriceInformations\Currency; +use App\Entity\PriceInformations\Orderdetail; +use App\Entity\PriceInformations\Pricedetail; use App\Entity\UserSystem\Group; use App\Entity\UserSystem\User; use App\Exceptions\EntityNotSupportedException; @@ -120,6 +124,70 @@ class EntityURLGenerator throw new InvalidArgumentException('Method is not supported!'); } + /** + * Gets the URL to view the given element at a given timestamp + * @param AbstractDBElement $entity + * @param \DateTime $dateTime + * @return string + */ + public function timeTravelURL(AbstractDBElement $entity, \DateTime $dateTime): string + { + $map = [ + Part::class => 'part_info', + + //As long we does not have own things for it use edit page + AttachmentType::class => 'attachment_type_edit', + Category::class => 'category_edit', + Device::class => 'device_edit', + Supplier::class => 'supplier_edit', + Manufacturer::class => 'manufacturer_edit', + Storelocation::class => 'store_location_edit', + Footprint::class => 'footprint_edit', + User::class => 'user_edit', + Currency::class => 'currency_edit', + MeasurementUnit::class => 'measurement_unit_edit', + Group::class => 'group_edit', + ]; + + try { + return $this->urlGenerator->generate( + $this->mapToController($map, $entity), + [ + 'id' => $entity->getID(), + 'timestamp' => $dateTime->getTimestamp() + ] + ); + } catch (EntityNotSupportedException $exception) { + if ($entity instanceof PartLot) { + return $this->urlGenerator->generate('part_info', [ + 'id' => $entity->getPart()->getID(), + 'timestamp' => $dateTime->getTimestamp() + ]); + } + if ($entity instanceof PartAttachment) { + return $this->urlGenerator->generate('part_info', [ + 'id' => $entity->getElement()->getID(), + 'timestamp' => $dateTime->getTimestamp() + ]); + } + if ($entity instanceof Orderdetail) { + return $this->urlGenerator->generate('part_info', [ + 'id' => $entity->getPart()->getID(), + 'timestamp' => $dateTime->getTimestamp() + ]); + } + if ($entity instanceof Pricedetail) { + return $this->urlGenerator->generate('part_info', [ + 'id' => $entity->getOrderdetail()->getPart()->getID(), + 'timestamp' => $dateTime->getTimestamp() + ]); + } + } + + //Otherwise throw an error + throw new EntityNotSupportedException('The given entity is not supported yet!'); + } + public function viewURL($entity): string { if ($entity instanceof Attachment) { diff --git a/src/Services/LogSystem/EventCommentHelper.php b/src/Services/LogSystem/EventCommentHelper.php new file mode 100644 index 00000000..6a7b25fc --- /dev/null +++ b/src/Services/LogSystem/EventCommentHelper.php @@ -0,0 +1,72 @@ +. + */ + +namespace App\Services\LogSystem; + + +class EventCommentHelper +{ + protected const MAX_MESSAGE_LENGTH = 255; + + protected $message; + + public function __construct() + { + $message = null; + } + + /** + * Set the message that will be saved for all ElementEdited/Created/Deleted messages during the next flush. + * Set to null if no message should be shown. + * After the flush this message is cleared. + * @param string|null $message + */ + public function setMessage(?string $message): void + { + //Restrict the length of the string + $this->message = mb_strimwidth($message, 0, self::MAX_MESSAGE_LENGTH, '...'); + } + + /** + * Returns the currently set message, or null if no message is set yet. + * @return string|null + */ + public function getMessage(): ?string + { + return $this->message; + } + + /** + * Clear the currently set message. + */ + public function clearMessage(): void + { + $this->message = null; + } + + /** + * Check if a message is currently set. + * @return bool + */ + public function isMessageSet(): bool + { + return is_string($this->message); + } +} \ No newline at end of file diff --git a/src/Services/LogSystem/EventUndoHelper.php b/src/Services/LogSystem/EventUndoHelper.php new file mode 100644 index 00000000..f61171e9 --- /dev/null +++ b/src/Services/LogSystem/EventUndoHelper.php @@ -0,0 +1,90 @@ +. + */ + +namespace App\Services\LogSystem; + + +use App\Entity\LogSystem\AbstractLogEntry; + +class EventUndoHelper +{ + public const MODE_UNDO = 'undo'; + public const MODE_REVERT = 'revert'; + + protected const ALLOWED_MODES = [self::MODE_REVERT, self::MODE_UNDO]; + + protected $undone_event; + protected $mode; + + public function __construct() + { + $undone_event = null; + $this->mode = self::MODE_UNDO; + } + + public function setMode(string $mode): void + { + if (!in_array($mode, self::ALLOWED_MODES)) { + throw new \InvalidArgumentException('Invalid mode passed!'); + } + $this->mode = $mode; + } + + public function getMode(): string + { + return $this->mode; + } + + /** + * Set which event log is currently undone. + * After the flush this message is cleared. + * @param AbstractLogEntry|null $undone_event + */ + public function setUndoneEvent(?AbstractLogEntry $undone_event): void + { + $this->undone_event = $undone_event; + } + + /** + * Returns event that is currently undone. + * @return AbstractLogEntry|null + */ + public function getUndoneEvent(): ?AbstractLogEntry + { + return $this->undone_event; + } + + /** + * Clear the currently the set undone event. + */ + public function clearUndoneEvent(): void + { + $this->undone_event = null; + } + + /** + * Check if a event is undone + * @return bool + */ + public function isUndo(): bool + { + return ($this->undone_event instanceof AbstractLogEntry); + } +} \ No newline at end of file diff --git a/src/Services/LogSystem/HistoryHelper.php b/src/Services/LogSystem/HistoryHelper.php new file mode 100644 index 00000000..32ee98b8 --- /dev/null +++ b/src/Services/LogSystem/HistoryHelper.php @@ -0,0 +1,61 @@ +. + */ + +namespace App\Services\LogSystem; + + +use App\Entity\Attachments\AttachmentContainingDBElement; +use App\Entity\Base\AbstractDBElement; +use App\Entity\Parts\Part; + +class HistoryHelper +{ + public function __construct() + { + + } + + /** + * Returns an array containing all elements that are associated with the argument. + * The returned array contains the given element. + * @param AbstractDBElement $element + * @return array + */ + public function getAssociatedElements(AbstractDBElement $element): array + { + $array = [$element]; + if ($element instanceof AttachmentContainingDBElement) { + $array = array_merge($array, $element->getAttachments()->toArray()); + } + + if ($element instanceof Part) { + $array = array_merge( + $array, + $element->getPartLots()->toArray(), + $element->getOrderdetails()->toArray() + ); + foreach ($element->getOrderdetails() as $orderdetail) { + $array = array_merge($array, $orderdetail->getPricedetails()->toArray()); + } + } + + return $array; + } +} \ No newline at end of file diff --git a/src/Services/LogSystem/LogEntryExtraFormatter.php b/src/Services/LogSystem/LogEntryExtraFormatter.php index 434cadf0..b28623d8 100644 --- a/src/Services/LogSystem/LogEntryExtraFormatter.php +++ b/src/Services/LogSystem/LogEntryExtraFormatter.php @@ -42,7 +42,10 @@ declare(strict_types=1); namespace App\Services\LogSystem; +use App\Entity\Contracts\LogWithCommentInterface; +use App\Entity\Contracts\LogWithEventUndoInterface; use App\Entity\LogSystem\AbstractLogEntry; +use App\Entity\LogSystem\CollectionElementDeleted; use App\Entity\LogSystem\DatabaseUpdatedLogEntry; use App\Entity\LogSystem\ElementCreatedLogEntry; use App\Entity\LogSystem\ElementDeletedLogEntry; @@ -52,6 +55,8 @@ use App\Entity\LogSystem\InstockChangedLogEntry; use App\Entity\LogSystem\UserLoginLogEntry; use App\Entity\LogSystem\UserLogoutLogEntry; use App\Entity\LogSystem\UserNotAllowedLogEntry; +use App\Services\ElementTypeNameGenerator; +use Doctrine\ORM\EntityManagerInterface; use Symfony\Contracts\Translation\TranslatorInterface; /** @@ -60,10 +65,15 @@ use Symfony\Contracts\Translation\TranslatorInterface; class LogEntryExtraFormatter { protected $translator; + protected $elementTypeNameGenerator; - public function __construct(TranslatorInterface $translator) + protected const CONSOLE_SEARCH = ['', '', '', '', '', ]; + protected const CONSOLE_REPLACE = ['→', '', '', '', '']; + + public function __construct(TranslatorInterface $translator, ElementTypeNameGenerator $elementTypeNameGenerator) { $this->translator = $translator; + $this->elementTypeNameGenerator = $elementTypeNameGenerator; } /** @@ -73,32 +83,33 @@ class LogEntryExtraFormatter */ public function formatConsole(AbstractLogEntry $logEntry): string { - $tmp = $this->format($logEntry); + $arr = $this->getInternalFormat($logEntry); + $tmp = []; - //Just a simple tweak to make the console output more pretty. - $search = ['', '', '', '', ' ']; - $replace = ['', '', '', '', '→']; + //Make an array with entries in the form "Key: Value" + foreach ($arr as $key => $value) { + $str = ''; + if (is_string($key)) { + $str .= '' . $this->translator->trans($key) . ': '; + } + $str .= $value; + if (!empty($str)) { + $tmp[] = $str; + } + } - return str_replace($search, $replace, $tmp); + return str_replace(static::CONSOLE_SEARCH, static::CONSOLE_REPLACE, implode("; ", $tmp)); } - /** - * Return a HTML formatted string containing a user viewable form of the Extra data. - * - * @return string - */ - public function format(AbstractLogEntry $context): string + protected function getInternalFormat(AbstractLogEntry $context): array { + $array = []; if ($context instanceof UserLoginLogEntry || $context instanceof UserLogoutLogEntry) { - return sprintf( - '%s: %s', - $this->translator->trans('log.user_login.ip'), - htmlspecialchars($context->getIPAddress()) - ); + $array['log.user_login.ip'] = htmlspecialchars($context->getIPAddress()); } if ($context instanceof ExceptionLogEntry) { - return sprintf( + $array[] = sprintf( '%s %s:%d : %s', htmlspecialchars($context->getExceptionClass()), htmlspecialchars($context->getFile()), @@ -108,7 +119,7 @@ class LogEntryExtraFormatter } if ($context instanceof DatabaseUpdatedLogEntry) { - return sprintf( + $array[] = sprintf( '%s %s %s', $this->translator->trans($context->isSuccessful() ? 'log.database_updated.success' : 'log.database_updated.failure'), $context->getOldVersion(), @@ -116,42 +127,85 @@ class LogEntryExtraFormatter ); } + if ($context instanceof LogWithEventUndoInterface) { + if ($context->isUndoEvent()) { + if ($context->getUndoMode() === 'undo') { + $array['log.undo_mode.undo'] = (string) $context->getUndoEventID(); + } elseif ($context->getUndoMode() === 'revert') { + $array['log.undo_mode.revert'] = (string) $context->getUndoEventID(); + } + } + } + + if ($context instanceof LogWithCommentInterface && $context->hasComment()) { + $array[] = htmlspecialchars($context->getComment()); + } + if ($context instanceof ElementCreatedLogEntry && $context->hasCreationInstockValue()) { - return sprintf( - '%s: %s', - $this->translator->trans('log.element_created.original_instock'), - $context->getCreationInstockValue() - ); + $array['log.element_created.original_instock'] = (string) $context->getCreationInstockValue(); } if ($context instanceof ElementDeletedLogEntry) { - return sprintf( - '%s: %s', - $this->translator->trans('log.element_deleted.old_name'), - $context->getOldName() ?? $this->translator->trans('log.element_deleted.old_name.unknown') - ); + if ($context->getOldName() !== null) { + $array['log.element_deleted.old_name'] = htmlspecialchars($context->getOldName()); + } else { + $array['log.element_deleted.old_name'] = $this->translator->trans('log.element_deleted.old_name.unknown'); + } } - if ($context instanceof ElementEditedLogEntry && ! empty($context->getMessage())) { - return htmlspecialchars($context->getMessage()); + if ($context instanceof ElementEditedLogEntry && $context->hasChangedFieldsInfo()) { + $array['log.element_edited.changed_fields'] = htmlspecialchars(implode(', ', $context->getChangedFields())); } if ($context instanceof InstockChangedLogEntry) { - return sprintf( - '%s; %s %s (%s); %s: %s', - $this->translator->trans($context->isWithdrawal() ? 'log.instock_changed.withdrawal' : 'log.instock_changed.added'), + $array[] = $this->translator->trans($context->isWithdrawal() ? 'log.instock_changed.withdrawal' : 'log.instock_changed.added'); + $array[] = sprintf( + '%s %s (%s)', $context->getOldInstock(), $context->getNewInstock(), - (! $context->isWithdrawal() ? '+' : '-').$context->getDifference(true), - $this->translator->trans('log.instock_changed.comment'), - htmlspecialchars($context->getComment()) + (! $context->isWithdrawal() ? '+' : '-').$context->getDifference(true) + ); + $array['log.instock_changed.comment'] = htmlspecialchars($context->getComment()); + } + + if ($context instanceof CollectionElementDeleted) { + $array['log.collection_deleted.deleted'] = sprintf( + '%s: %s (%s)', + $this->elementTypeNameGenerator->getLocalizedTypeLabel($context->getDeletedElementClass()), + $context->getOldName() ?? $context->getDeletedElementID(), + $context->getCollectionName() ); } if ($context instanceof UserNotAllowedLogEntry) { - return htmlspecialchars($context->getMessage()); + $array[] = htmlspecialchars($context->getMessage()); } - return ''; + return $array; + } + + /** + * Return a HTML formatted string containing a user viewable form of the Extra data. + * + * @return string + */ + public function format(AbstractLogEntry $context): string + { + $arr = $this->getInternalFormat($context); + $tmp = []; + + //Make an array with entries in the form "Key: Value" + foreach ($arr as $key => $value) { + $str = ''; + if (is_string($key)) { + $str .= '' . $this->translator->trans($key) . ': '; + } + $str .= $value; + if (!empty($str)) { + $tmp[] = $str; + } + } + + return implode("; ", $tmp); } } diff --git a/src/Services/LogSystem/TimeTravel.php b/src/Services/LogSystem/TimeTravel.php new file mode 100644 index 00000000..54e9fa72 --- /dev/null +++ b/src/Services/LogSystem/TimeTravel.php @@ -0,0 +1,217 @@ +em = $em; + $this->repo = $em->getRepository(AbstractLogEntry::class); + } + + /** + * Undeletes the element with the given ID. + * @param string $class The class name of the element that should be undeleted + * @param int $id The ID of the element that should be undeleted. + * @return AbstractDBElement + */ + public function undeleteEntity(string $class, int $id): AbstractDBElement + { + $log = $this->repo->getUndeleteDataForElement($class, $id); + $element = new $class(); + $this->applyEntry($element, $log); + + //Set internal ID so the element can be reverted + $this->setField($element, 'id', $id); + + //Let database determine when it will be created + $this->setField($element,'addedDate', null); + + return $element; + } + + /** + * Revert the given element to the state it has on the given timestamp + * @param AbstractDBElement $element + * @param \DateTime $timestamp + * @param AbstractLogEntry[] $reverted_elements + * @throws \Exception + */ + public function revertEntityToTimestamp(AbstractDBElement $element, \DateTime $timestamp, array $reverted_elements = []) + { + if (!$element instanceof TimeStampableInterface) { + throw new \InvalidArgumentException('$element must have a Timestamp!'); + } + + if ($timestamp > new \DateTime('now')) { + throw new \InvalidArgumentException('You can not travel to the future (yet)...'); + } + + //Skip this process if already were reverted... + if (in_array($element, $reverted_elements)) { + return; + } + $reverted_elements[] = $element; + + $history = $this->repo->getTimetravelDataForElement($element, $timestamp); + + /* + if (!$this->repo->getElementExistedAtTimestamp($element, $timestamp)) { + $element = null; + return; + }*/ + + foreach ($history as $logEntry) { + if ($logEntry instanceof ElementEditedLogEntry) { + $this->applyEntry($element, $logEntry); + } + if ($logEntry instanceof CollectionElementDeleted) { + //Undelete element and add it to collection again + $undeleted = $this->undeleteEntity( + $logEntry->getDeletedElementClass(), + $logEntry->getDeletedElementID() + ); + if ($this->repo->getElementExistedAtTimestamp($undeleted, $timestamp)) { + $this->revertEntityToTimestamp($undeleted, $timestamp, $reverted_elements); + $collection = $this->getField($element, $logEntry->getCollectionName()); + if ($collection instanceof Collection) { + $collection->add($undeleted); + } + } + } + } + + // Revert any of the associated elements + $metadata = $this->em->getClassMetadata(get_class($element)); + $associations = $metadata->getAssociationMappings(); + foreach ($associations as $field => $mapping) { + if ( + ($element instanceof AbstractStructuralDBElement && ($field === 'parts' || $field === 'children')) + || ($element instanceof AttachmentType && $field === 'attachments') + ) { + continue; + } + + + //Revert many to one association (one element in property) + if ( + $mapping['type'] === ClassMetadata::MANY_TO_ONE + || $mapping['type'] === ClassMetadata::ONE_TO_ONE + ) { + $target_element = $this->getField($element, $field); + if ($target_element !== null && $element->getLastModified() > $timestamp) { + $this->revertEntityToTimestamp($target_element, $timestamp, $reverted_elements); + } + } elseif ( //Revert *_TO_MANY associations (collection properties) + ($mapping['type'] === ClassMetadata::MANY_TO_MANY + || $mapping['type'] === ClassMetadata::ONE_TO_MANY) + && $mapping['isOwningSide'] === false + ) { + $target_elements = $this->getField($element, $field); + if ($target_elements === null || count($target_elements) > 10) { + continue; + } + foreach ($target_elements as $target_element) { + if ($target_element !== null && $element->getLastModified() >= $timestamp) { + //Remove the element from collection, if it did not existed at $timestamp + if (!$this->repo->getElementExistedAtTimestamp($target_element, $timestamp)) { + if ($target_elements instanceof Collection) { + $target_elements->removeElement($target_element); + } + } + $this->revertEntityToTimestamp($target_element, $timestamp, $reverted_elements); + } + } + } + + } + } + + /** + * Apply the changeset in the given LogEntry to the element + * @param AbstractDBElement $element + * @param TimeTravelInterface $logEntry + * @throws \Doctrine\ORM\Mapping\MappingException + */ + public function applyEntry(AbstractDBElement $element, TimeTravelInterface $logEntry): void + { + //Skip if this does not provide any info... + if (!$logEntry->hasOldDataInformations()) { + return; + } + if (!$element instanceof TimeStampableInterface) { + return; + } + $metadata = $this->em->getClassMetadata(get_class($element)); + $old_data = $logEntry->getOldData(); + + foreach ($old_data as $field => $data) { + if ($metadata->hasField($field)) { + $this->setField($element, $field, $data); + } + if ($metadata->hasAssociation($field)) { + $mapping = $metadata->getAssociationMapping($field); + $target_class = $mapping['targetEntity']; + //Try to extract the old ID: + if (is_array($data) && isset($data['@id'])) { + $entity = $this->em->getPartialReference($target_class, $data['@id']); + $this->setField($element, $field, $entity); + } + } + } + + $this->setField($element, 'lastModified', $logEntry->getTimestamp()); + } + + protected function getField(AbstractDBElement $element, string $field) + { + $reflection = new \ReflectionClass(get_class($element)); + $property = $reflection->getProperty($field); + $property->setAccessible(true); + return $property->getValue($element); + } + + protected function setField(AbstractDBElement $element, string $field, $new_value) + { + $reflection = new \ReflectionClass(get_class($element)); + $property = $reflection->getProperty($field); + $property->setAccessible(true); + $property->setValue($element, $new_value); + } +} \ No newline at end of file diff --git a/templates/AdminPages/EntityAdminBase.html.twig b/templates/AdminPages/EntityAdminBase.html.twig index 2c96c401..f298b841 100644 --- a/templates/AdminPages/EntityAdminBase.html.twig +++ b/templates/AdminPages/EntityAdminBase.html.twig @@ -1,5 +1,15 @@ {% extends "main_card.html.twig" %} +{% block card_type %} + {% if timeTravel is defined and timeTravel is not null %} + bg-primary-striped text-white + {% else %} + bg-primary text-white + {% endif %} +{% endblock %} + +{% form_theme form.log_comment 'bootstrap_4_layout.html.twig' %} + {% block card_content %}
@@ -33,16 +43,25 @@ {% if entity.ID %} {% trans with {'%name': entity.name} %}edit.caption{% endtrans %} + {% if timeTravel is defined and timeTravel is not null %} + ({{ timeTravel|format_datetime('short') }}) + {% endif %} {% else %} {% trans %}new.caption{% endtrans %} {% endif %} + {% if timeTravel is defined and timeTravel is not null %} + {% trans with {'%timestamp%': timeTravel|format_datetime('short')} %}part.info.timetravel_hint{% endtrans %} + {% endif %} {{ form_errors(form) }}
- {{ form_row(form.save) }} +
+
+
+ {{ form_widget(form.save) }} + + +
+ +
+
+ {{ form_row(form.reset) }} {{ form_end(form) }} @@ -112,11 +145,15 @@ {% include "AdminPages/_info.html.twig" %} - + {% if datatable is defined and datatable is not null %} +
+ {% include "LogSystem/_log_table.html.twig" %} +
+ {% endif %} {% if entity.id %}
- {% include 'AdminPages/_export_form.html.twig' with {'path' : path('attachment_type_export', {'id': entity.id})} %} + {% include 'AdminPages/_export_form.html.twig' with {'path' : path(route_base ~ '_export', {'id': entity.id})} %}
{% else %} {# For new element we have a combined import/export tab #}
diff --git a/templates/AdminPages/_delete_form.html.twig b/templates/AdminPages/_delete_form.html.twig index c20fdae5..b05d4fc0 100644 --- a/templates/AdminPages/_delete_form.html.twig +++ b/templates/AdminPages/_delete_form.html.twig @@ -7,12 +7,22 @@
{% set delete_disabled = (not is_granted("delete", entity)) or (entity.group is defined and entity.id == 1) %} - - {% if entity.parent is defined %} -
- - +
+ + +
+ {% if entity.parent is defined %} +
+ + +
{% endif %}
diff --git a/templates/LogSystem/_log_table.html.twig b/templates/LogSystem/_log_table.html.twig new file mode 100644 index 00000000..0b432932 --- /dev/null +++ b/templates/LogSystem/_log_table.html.twig @@ -0,0 +1,14 @@ +
+ +
+
+
+
+

{% trans %}part_list.loading.caption{% endtrans %}

+
{% trans %}part_list.loading.message{% endtrans %}
+
+
+
+
+
\ No newline at end of file diff --git a/templates/LogSystem/log_list.html.twig b/templates/LogSystem/log_list.html.twig index 1b2cc2ed..5ad1d7a3 100644 --- a/templates/LogSystem/log_list.html.twig +++ b/templates/LogSystem/log_list.html.twig @@ -3,14 +3,5 @@ {% block title %}{% trans %}log.list.title{% endtrans %}{% endblock %} {% block content %} -
-
-
-
-

{% trans %}part_list.loading.caption{% endtrans %}

-
{% trans %}part_list.loading.message{% endtrans %}
-
-
-
-
+ {% include "LogSystem/_log_table.html.twig" %} {% endblock %} \ No newline at end of file diff --git a/templates/Parts/edit/edit_part_info.html.twig b/templates/Parts/edit/edit_part_info.html.twig index ec8d1c4f..b57e7653 100644 --- a/templates/Parts/edit/edit_part_info.html.twig +++ b/templates/Parts/edit/edit_part_info.html.twig @@ -84,11 +84,23 @@
{{ form_widget(form.comment)}}
- - -
- {{ form_row(form.save) }} + +
+
+
+ {{ form_widget(form.save) }} + + +
+ +
+
+ {{ form_row(form.reset) }} {{ form_errors(form) }} {{ form_end(form) }} diff --git a/templates/Parts/info/_history.html.twig b/templates/Parts/info/_history.html.twig new file mode 100644 index 00000000..390a007f --- /dev/null +++ b/templates/Parts/info/_history.html.twig @@ -0,0 +1,5 @@ +
+ {% if datatable is not null %} + {% include "LogSystem/_log_table.html.twig" %} + {% endif %} +
\ No newline at end of file diff --git a/templates/Parts/info/_main_infos.html.twig b/templates/Parts/info/_main_infos.html.twig index 51564746..ebe321a4 100644 --- a/templates/Parts/info/_main_infos.html.twig +++ b/templates/Parts/info/_main_infos.html.twig @@ -23,7 +23,9 @@

{{ part.name }} {# You need edit permission to use the edit button #} - {% if is_granted('edit', part) %} + {% if timeTravel is not null %} + + {% elseif is_granted('edit', part) %} {% endif %}

diff --git a/templates/Parts/info/_sidebar.html.twig b/templates/Parts/info/_sidebar.html.twig index 2d3f715a..f6272fa1 100644 --- a/templates/Parts/info/_sidebar.html.twig +++ b/templates/Parts/info/_sidebar.html.twig @@ -1,5 +1,9 @@ {% import "helper.twig" as helper %} +{% if timeTravel is not null %} + {% trans with {'%timestamp%': timeTravel|format_datetime('short')} %}part.info.timetravel_hint{% endtrans %} +{% endif %} +
{{ helper.date_user_combination(part, true) }} diff --git a/templates/Parts/info/_tools.html.twig b/templates/Parts/info/_tools.html.twig index 48a84e04..eb2cbe72 100644 --- a/templates/Parts/info/_tools.html.twig +++ b/templates/Parts/info/_tools.html.twig @@ -31,9 +31,19 @@
- +
+ + + +
\ No newline at end of file diff --git a/templates/Parts/info/show_part_info.html.twig b/templates/Parts/info/show_part_info.html.twig index 1dbe0e2c..9f319529 100644 --- a/templates/Parts/info/show_part_info.html.twig +++ b/templates/Parts/info/show_part_info.html.twig @@ -4,16 +4,28 @@ {% trans %}part.info.title{% endtrans %} {{ part.name }} {% endblock %} +{% block card_type %} + + {% if timeTravel == null %} + bg-primary text-white + {% else %} + bg-primary-striped text-white + {% endif %} + +{% endblock %} + {% block card_title %} {% trans %}part.info.title{% endtrans %} "{{ part.name }}" + {% if timeTravel != null %} + ({{ timeTravel | format_datetime('short') }}) + {% endif %}
{% trans %}id.label{% endtrans %}: {{ part.id }}
{% endblock %} {% block card_content %} -
{% include "Parts/info/_main_infos.html.twig" %} @@ -28,14 +40,14 @@
- TODO + {% include "Parts/info/_history.html.twig" %}
- {% include "Parts/info/_tools.html.twig" %} -
diff --git a/templates/homepage.html.twig b/templates/homepage.html.twig index 4aee4dd4..ba029fc1 100644 --- a/templates/homepage.html.twig +++ b/templates/homepage.html.twig @@ -39,4 +39,13 @@ {% trans %} homepage.others {% endtrans %}
+ + {% if datatable is not null %} +
+
{% trans %}homepage.last_activity{% endtrans %}
+
+ {% include "LogSystem/_log_table.html.twig" %} +
+
+ {% endif %} {% endblock %} \ No newline at end of file diff --git a/tests/Entity/UserSystem/PermissionsEmbedTest.php b/tests/Entity/UserSystem/PermissionsEmbedTest.php index 2c616835..94aee84c 100644 --- a/tests/Entity/UserSystem/PermissionsEmbedTest.php +++ b/tests/Entity/UserSystem/PermissionsEmbedTest.php @@ -137,14 +137,6 @@ class PermissionsEmbedTest extends TestCase $embed->getPermissionValue('parts', 1); } - public function testInvalidBit3(): void - { - $embed = new PermissionsEmbed(); - //When encoutering an too high bit number it must throw an error. - $this->expectException(InvalidArgumentException::class); - $embed->getPermissionValue('parts', 32); - } - public function getStatesBINARY() { return [ diff --git a/tests/Services/LogSystem/EventCommentHelperTest.php b/tests/Services/LogSystem/EventCommentHelperTest.php new file mode 100644 index 00000000..8ce44503 --- /dev/null +++ b/tests/Services/LogSystem/EventCommentHelperTest.php @@ -0,0 +1,71 @@ +. + */ + +namespace App\Tests\Services\LogSystem; + +use App\Services\LogSystem\EventCommentHelper; +use App\Services\LogSystem\EventLogger; +use PHPUnit\Framework\TestCase; +use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; + +class EventCommentHelperTest extends WebTestCase +{ + /** + * @var EventCommentHelper + */ + protected $service; + + protected function setUp(): void + { + parent::setUp(); // TODO: Change the autogenerated stub + + //Get an service instance. + self::bootKernel(); + $this->service = self::$container->get(EventCommentHelper::class); + } + + public function testInitialState() + { + $this->assertNull($this->service->getMessage()); + $this->assertFalse($this->service->isMessageSet()); + } + + public function testClearMessage() + { + $this->service->setMessage('Test'); + $this->assertTrue($this->service->isMessageSet()); + $this->service->clearMessage(); + $this->assertFalse($this->service->isMessageSet()); + } + + public function testGetSetMessage() + { + $this->service->setMessage('Test'); + $this->assertSame('Test', $this->service->getMessage()); + } + + public function testIsMessageSet() + { + $this->service->setMessage('Test'); + $this->assertTrue($this->service->isMessageSet()); + $this->service->clearMessage(); + $this->assertFalse($this->service->isMessageSet()); + } +} diff --git a/translations/SchebTwoFactorBundle+intl-icu.de.xlf b/translations/SchebTwoFactorBundle+intl-icu.de.xlf index e9fb4cc6..38bb6db0 100644 --- a/translations/SchebTwoFactorBundle+intl-icu.de.xlf +++ b/translations/SchebTwoFactorBundle+intl-icu.de.xlf @@ -1,11 +1,14 @@ - - - - + + +
+ +
+ + login Login -
-
+ +
diff --git a/translations/SchebTwoFactorBundle.de.xlf b/translations/SchebTwoFactorBundle.de.xlf new file mode 100644 index 00000000..27ee3946 --- /dev/null +++ b/translations/SchebTwoFactorBundle.de.xlf @@ -0,0 +1,14 @@ + + + + + + Part-DB1\templates\security\2fa_base_form.html.twig:52 + + + login + Login + + + + diff --git a/translations/SchebTwoFactorBundle.en.xlf b/translations/SchebTwoFactorBundle.en.xlf new file mode 100644 index 00000000..b43243a6 --- /dev/null +++ b/translations/SchebTwoFactorBundle.en.xlf @@ -0,0 +1,14 @@ + + + + + + Part-DB1\templates\security\2fa_base_form.html.twig:52 + + + login + Login + + + + diff --git a/translations/messages.de.xlf b/translations/messages.de.xlf index 4d2b797f..8f7704b7 100644 --- a/translations/messages.de.xlf +++ b/translations/messages.de.xlf @@ -4,6 +4,7 @@ Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 + Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 templates\AdminPages\AttachmentTypeAdmin.html.twig:4 @@ -16,6 +17,9 @@ Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 Part-DB1\templates\_sidebar.html.twig:22 Part-DB1\templates\_sidebar.html.twig:7 + Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 + Part-DB1\templates\_sidebar.html.twig:22 + Part-DB1\templates\_sidebar.html.twig:7 templates\AdminPages\CategoryAdmin.html.twig:4 templates\base.html.twig:163 templates\base.html.twig:170 @@ -31,6 +35,8 @@ Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:11 + Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 + Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:11 templates\AdminPages\CategoryAdmin.html.twig:8 @@ -42,6 +48,8 @@ Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 + Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 + Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 templates\AdminPages\CategoryAdmin.html.twig:9 @@ -52,6 +60,7 @@ Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 + Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 currency.caption @@ -61,6 +70,7 @@ Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 + Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 currency.iso_code.caption @@ -70,6 +80,7 @@ Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 + Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 currency.symbol.caption @@ -79,6 +90,7 @@ Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 + Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 templates\AdminPages\DeviceAdmin.html.twig:4 new @@ -89,11 +101,16 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:9 - Part-DB1\templates\_navbar.html.twig:81 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 Part-DB1\templates\_sidebar.html.twig:27 Part-DB1\templates\_sidebar.html.twig:43 Part-DB1\templates\_sidebar.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 templates\AdminPages\EntityAdminBase.html.twig:9 templates\base.html.twig:80 templates\base.html.twig:179 @@ -107,8 +124,10 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:13 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 Part-DB1\templates\_sidebar.html.twig:3 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 + Part-DB1\templates\_sidebar.html.twig:3 templates\AdminPages\EntityAdminBase.html.twig:13 templates\base.html.twig:166 templates\base.html.twig:193 @@ -121,8 +140,10 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:17 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 Part-DB1\templates\_sidebar.html.twig:4 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:4 templates\AdminPages\EntityAdminBase.html.twig:17 templates\base.html.twig:167 templates\base.html.twig:194 @@ -135,7 +156,8 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:35 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 templates\AdminPages\EntityAdminBase.html.twig:35 @@ -145,7 +167,8 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:37 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 templates\AdminPages\EntityAdminBase.html.twig:37 @@ -153,9 +176,22 @@ Neues Element + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 + Part-DB1\templates\Parts\info\_sidebar.html.twig:4 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 + Part-DB1\templates\Parts\info\_sidebar.html.twig:4 + + + part.info.timetravel_hint + part.info.timetravel_hint + + - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:44 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 templates\AdminPages\EntityAdminBase.html.twig:42 @@ -165,7 +201,8 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 templates\AdminPages\EntityAdminBase.html.twig:43 @@ -173,9 +210,21 @@ Informationen + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 + new + + + history.label + Historie + + - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:47 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 templates\AdminPages\EntityAdminBase.html.twig:45 @@ -185,7 +234,8 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:49 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 templates\AdminPages\EntityAdminBase.html.twig:47 @@ -195,7 +245,8 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 mass_creation.label @@ -204,7 +255,8 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 templates\AdminPages\EntityAdminBase.html.twig:59 @@ -214,7 +266,8 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:67 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 admin.attachments @@ -223,7 +276,8 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:130 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:167 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:167 templates\AdminPages\EntityAdminBase.html.twig:142 @@ -233,7 +287,8 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:136 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:173 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:173 mass_creation.help @@ -244,6 +299,8 @@ Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 Part-DB1\templates\_sidebar.html.twig:9 + Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 + Part-DB1\templates\_sidebar.html.twig:9 templates\base.html.twig:172 templates\base.html.twig:199 templates\base.html.twig:227 @@ -256,6 +313,7 @@ Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 + Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 group.edit.caption @@ -266,6 +324,8 @@ Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 + Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 user.edit.permissions @@ -275,6 +335,7 @@ Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 + Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 templates\AdminPages\ManufacturerAdmin.html.twig:4 new @@ -286,6 +347,7 @@ Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 + Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 measurement_unit.caption @@ -296,6 +358,8 @@ Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:4 Part-DB1\templates\_sidebar.html.twig:8 + Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:4 + Part-DB1\templates\_sidebar.html.twig:8 templates\base.html.twig:171 templates\base.html.twig:198 templates\base.html.twig:226 @@ -308,6 +372,7 @@ Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 + Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 templates\AdminPages\SupplierAdmin.html.twig:4 new @@ -319,6 +384,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 user.edit.caption @@ -328,6 +394,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 user.edit.configuration @@ -337,6 +404,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 user.edit.password @@ -346,6 +414,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 user.edit.tfa.caption @@ -355,6 +424,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 user.edit.tfa.google_active @@ -366,6 +436,9 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 Part-DB1\templates\Users\backup_codes.html.twig:15 Part-DB1\templates\Users\_2fa_settings.html.twig:95 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 + Part-DB1\templates\Users\backup_codes.html.twig:15 + Part-DB1\templates\Users\_2fa_settings.html.twig:95 tfa_backup.remaining_tokens @@ -377,6 +450,9 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 Part-DB1\templates\Users\backup_codes.html.twig:17 Part-DB1\templates\Users\_2fa_settings.html.twig:96 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 + Part-DB1\templates\Users\backup_codes.html.twig:17 + Part-DB1\templates\Users\_2fa_settings.html.twig:96 tfa_backup.generation_date @@ -387,6 +463,8 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 user.edit.tfa.disabled @@ -396,6 +474,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 user.edit.tfa.u2f_keys_count @@ -405,6 +484,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 user.edit.tfa.disable_tfa_title @@ -414,6 +494,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 user.edit.tfa.disable_tfa_message @@ -425,6 +506,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 @@ -436,6 +518,9 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs Part-DB1\templates\AdminPages\_attachments.html.twig:4 Part-DB1\templates\Parts\edit\_attachments.html.twig:4 Part-DB1\templates\Parts\info\_attachments_info.html.twig:63 + Part-DB1\templates\AdminPages\_attachments.html.twig:4 + Part-DB1\templates\Parts\edit\_attachments.html.twig:4 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:63 attachment.delete @@ -446,7 +531,10 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs Part-DB1\templates\AdminPages\_attachments.html.twig:41 Part-DB1\templates\Parts\edit\_attachments.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:146 + Part-DB1\src\DataTables\AttachmentDataTable.php:159 + Part-DB1\templates\AdminPages\_attachments.html.twig:41 + Part-DB1\templates\Parts\edit\_attachments.html.twig:38 + Part-DB1\src\DataTables\AttachmentDataTable.php:159 attachment.external @@ -457,6 +545,8 @@ 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 + Part-DB1\templates\AdminPages\_attachments.html.twig:47 + Part-DB1\templates\Parts\edit\_attachments.html.twig:45 attachment.preview.alt @@ -468,6 +558,9 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs Part-DB1\templates\AdminPages\_attachments.html.twig:50 Part-DB1\templates\Parts\edit\_attachments.html.twig:48 Part-DB1\templates\Parts\info\_attachments_info.html.twig:45 + Part-DB1\templates\AdminPages\_attachments.html.twig:50 + Part-DB1\templates\Parts\edit\_attachments.html.twig:48 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:45 attachment.view @@ -479,7 +572,11 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs Part-DB1\templates\AdminPages\_attachments.html.twig:56 Part-DB1\templates\Parts\edit\_attachments.html.twig:54 Part-DB1\templates\Parts\info\_attachments_info.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:153 + Part-DB1\src\DataTables\AttachmentDataTable.php:166 + Part-DB1\templates\AdminPages\_attachments.html.twig:56 + Part-DB1\templates\Parts\edit\_attachments.html.twig:54 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:38 + Part-DB1\src\DataTables\AttachmentDataTable.php:166 attachment.file_not_found @@ -490,6 +587,8 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs Part-DB1\templates\AdminPages\_attachments.html.twig:64 Part-DB1\templates\Parts\edit\_attachments.html.twig:62 + Part-DB1\templates\AdminPages\_attachments.html.twig:64 + Part-DB1\templates\Parts\edit\_attachments.html.twig:62 attachment.secure @@ -500,6 +599,8 @@ 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 + Part-DB1\templates\AdminPages\_attachments.html.twig:77 + Part-DB1\templates\Parts\edit\_attachments.html.twig:75 attachment.create @@ -511,6 +612,9 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs Part-DB1\templates\AdminPages\_attachments.html.twig:82 Part-DB1\templates\Parts\edit\_attachments.html.twig:80 Part-DB1\templates\Parts\edit\_lots.html.twig:33 + Part-DB1\templates\AdminPages\_attachments.html.twig:82 + Part-DB1\templates\Parts\edit\_attachments.html.twig:80 + Part-DB1\templates\Parts\edit\_lots.html.twig:33 part_lot.edit.delete.confirm @@ -520,6 +624,7 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs Part-DB1\templates\AdminPages\_delete_form.html.twig:2 + Part-DB1\templates\AdminPages\_delete_form.html.twig:2 templates\AdminPages\_delete_form.html.twig:2 @@ -530,6 +635,7 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs Part-DB1\templates\AdminPages\_delete_form.html.twig:3 + Part-DB1\templates\AdminPages\_delete_form.html.twig:3 templates\AdminPages\_delete_form.html.twig:3 @@ -541,7 +647,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\AdminPages\_delete_form.html.twig:10 + Part-DB1\templates\AdminPages\_delete_form.html.twig:11 + Part-DB1\templates\AdminPages\_delete_form.html.twig:11 templates\AdminPages\_delete_form.html.twig:9 @@ -549,9 +656,25 @@ Subelemente werden beim Löschen nach oben verschoben. Element löschen + + + Part-DB1\templates\AdminPages\_delete_form.html.twig:16 + Part-DB1\templates\Parts\info\_tools.html.twig:43 + Part-DB1\src\Form\Part\PartBaseType.php:267 + Part-DB1\templates\AdminPages\_delete_form.html.twig:16 + Part-DB1\templates\Parts\info\_tools.html.twig:43 + Part-DB1\src\Form\Part\PartBaseType.php:267 + new + + + edit.log_comment + Änderungskommentar + + - Part-DB1\templates\AdminPages\_delete_form.html.twig:14 + Part-DB1\templates\AdminPages\_delete_form.html.twig:24 + Part-DB1\templates\AdminPages\_delete_form.html.twig:24 templates\AdminPages\_delete_form.html.twig:12 new @@ -563,7 +686,9 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:56 + Part-DB1\src\Form\AdminPages\ImportType.php:76 + Part-DB1\templates\AdminPages\_export_form.html.twig:4 + Part-DB1\src\Form\AdminPages\ImportType.php:76 templates\AdminPages\_export_form.html.twig:4 src\Form\ImportType.php:67 @@ -575,6 +700,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_export_form.html.twig:16 + Part-DB1\templates\AdminPages\_export_form.html.twig:16 templates\AdminPages\_export_form.html.twig:16 @@ -585,6 +711,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_export_form.html.twig:19 + Part-DB1\templates\AdminPages\_export_form.html.twig:19 templates\AdminPages\_export_form.html.twig:19 @@ -595,6 +722,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_export_form.html.twig:20 + Part-DB1\templates\AdminPages\_export_form.html.twig:20 templates\AdminPages\_export_form.html.twig:20 @@ -605,6 +733,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_export_form.html.twig:21 + Part-DB1\templates\AdminPages\_export_form.html.twig:21 templates\AdminPages\_export_form.html.twig:21 @@ -615,6 +744,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_export_form.html.twig:31 + Part-DB1\templates\AdminPages\_export_form.html.twig:31 templates\AdminPages\_export_form.html.twig:31 @@ -625,6 +755,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\AdminPages\_export_form.html.twig:39 + Part-DB1\templates\AdminPages\_export_form.html.twig:39 templates\AdminPages\_export_form.html.twig:39 @@ -634,10 +765,14 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\AdminPages\_info.html.twig:2 + Part-DB1\templates\AdminPages\_info.html.twig:4 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:11 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:16 + Part-DB1\templates\Parts\info\show_part_info.html.twig:24 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 + Part-DB1\templates\AdminPages\_info.html.twig:4 + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 + Part-DB1\templates\Parts\info\show_part_info.html.twig:24 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 templates\AdminPages\EntityAdminBase.html.twig:94 templates\Parts\edit_part_info.html.twig:12 templates\Parts\show_part_info.html.twig:11 @@ -649,13 +784,20 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\AdminPages\_info.html.twig:9 + Part-DB1\templates\AdminPages\_info.html.twig:11 Part-DB1\templates\Parts\info\_attachments_info.html.twig:59 Part-DB1\templates\Parts\info\_attachments_info.html.twig:60 Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 + Part-DB1\templates\Parts\info\_sidebar.html.twig:12 Part-DB1\templates\Parts\lists\_info_card.html.twig:53 + Part-DB1\templates\AdminPages\_info.html.twig:11 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:59 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:60 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 + Part-DB1\templates\Parts\info\_order_infos.html.twig:69 + Part-DB1\templates\Parts\info\_sidebar.html.twig:12 + Part-DB1\templates\Parts\lists\_info_card.html.twig:53 templates\AdminPages\EntityAdminBase.html.twig:101 templates\Parts\show_part_info.html.twig:248 @@ -666,10 +808,14 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\AdminPages\_info.html.twig:23 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 + Part-DB1\templates\AdminPages\_info.html.twig:25 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 + Part-DB1\templates\Parts\info\_sidebar.html.twig:8 Part-DB1\templates\Parts\lists\_info_card.html.twig:49 + Part-DB1\templates\AdminPages\_info.html.twig:25 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 + Part-DB1\templates\Parts\info\_sidebar.html.twig:8 + Part-DB1\templates\Parts\lists\_info_card.html.twig:49 templates\AdminPages\EntityAdminBase.html.twig:114 templates\Parts\show_part_info.html.twig:263 @@ -680,7 +826,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\AdminPages\_info.html.twig:36 + Part-DB1\templates\AdminPages\_info.html.twig:38 + Part-DB1\templates\AdminPages\_info.html.twig:38 entity.info.parts_count @@ -690,6 +837,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 @@ -699,8 +847,11 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\attachment_list.html.twig:10 + Part-DB1\templates\LogSystem\_log_table.html.twig:8 Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - templates\parts_list.html.twig:22 + Part-DB1\templates\attachment_list.html.twig:10 + Part-DB1\templates\LogSystem\_log_table.html.twig:8 + Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 part_list.loading.caption @@ -710,8 +861,11 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\attachment_list.html.twig:11 + Part-DB1\templates\LogSystem\_log_table.html.twig:9 Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - templates\parts_list.html.twig:23 + Part-DB1\templates\attachment_list.html.twig:11 + Part-DB1\templates\LogSystem\_log_table.html.twig:9 + Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 part_list.loading.message @@ -720,7 +874,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\base.html.twig:71 + Part-DB1\templates\base.html.twig:68 + Part-DB1\templates\base.html.twig:68 templates\base.html.twig:246 @@ -730,7 +885,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\base.html.twig:76 + Part-DB1\templates\base.html.twig:73 + Part-DB1\templates\base.html.twig:73 sidebar.big.toggle @@ -739,7 +895,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\base.html.twig:98 + Part-DB1\templates\base.html.twig:95 + Part-DB1\templates\base.html.twig:95 templates\base.html.twig:271 @@ -749,7 +906,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\base.html.twig:99 + Part-DB1\templates\base.html.twig:96 + Part-DB1\templates\base.html.twig:96 templates\base.html.twig:272 @@ -759,7 +917,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\base.html.twig:104 + Part-DB1\templates\base.html.twig:101 + Part-DB1\templates\base.html.twig:101 templates\base.html.twig:277 @@ -769,7 +928,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\base.html.twig:115 + Part-DB1\templates\base.html.twig:112 + Part-DB1\templates\base.html.twig:112 templates\base.html.twig:288 @@ -780,6 +940,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 @@ -789,6 +950,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 @@ -798,6 +960,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 @@ -807,6 +970,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 @@ -816,6 +980,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 @@ -825,6 +990,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 @@ -834,6 +1000,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\helper.twig:3 + Part-DB1\templates\helper.twig:3 bool.true @@ -843,6 +1010,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\helper.twig:5 + Part-DB1\templates\helper.twig:5 bool.false @@ -852,6 +1020,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\helper.twig:87 + Part-DB1\templates\helper.twig:87 Yes @@ -861,6 +1030,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\helper.twig:89 + Part-DB1\templates\helper.twig:89 No @@ -870,6 +1040,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\homepage.html.twig:7 + Part-DB1\templates\homepage.html.twig:7 templates\homepage.html.twig:7 @@ -880,6 +1051,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\homepage.html.twig:22 + Part-DB1\templates\homepage.html.twig:22 templates\homepage.html.twig:19 @@ -890,6 +1062,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\homepage.html.twig:31 + Part-DB1\templates\homepage.html.twig:31 templates\homepage.html.twig:28 @@ -900,6 +1073,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\homepage.html.twig:31 + Part-DB1\templates\homepage.html.twig:31 templates\homepage.html.twig:28 @@ -910,6 +1084,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\homepage.html.twig:32 + Part-DB1\templates\homepage.html.twig:32 templates\homepage.html.twig:29 @@ -920,6 +1095,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\homepage.html.twig:32 + Part-DB1\templates\homepage.html.twig:32 templates\homepage.html.twig:29 @@ -930,6 +1106,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\homepage.html.twig:33 + Part-DB1\templates\homepage.html.twig:33 templates\homepage.html.twig:30 @@ -940,6 +1117,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\homepage.html.twig:33 + Part-DB1\templates\homepage.html.twig:33 templates\homepage.html.twig:30 @@ -950,6 +1128,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\homepage.html.twig:34 + Part-DB1\templates\homepage.html.twig:34 templates\homepage.html.twig:31 @@ -960,6 +1139,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\homepage.html.twig:34 + Part-DB1\templates\homepage.html.twig:34 templates\homepage.html.twig:31 @@ -970,6 +1150,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\homepage.html.twig:36 + Part-DB1\templates\homepage.html.twig:36 templates\homepage.html.twig:33 new @@ -981,6 +1162,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\homepage.html.twig:39 + Part-DB1\templates\homepage.html.twig:39 templates\homepage.html.twig:36 new @@ -989,9 +1171,53 @@ Subelemente werden beim Löschen nach oben verschoben. und anderen + + + Part-DB1\templates\homepage.html.twig:45 + Part-DB1\templates\homepage.html.twig:45 + new + + + homepage.last_activity + Letzte Aktivitäten + + + + + Part-DB1\templates\LogSystem\log_list.html.twig:3 + Part-DB1\templates\LogSystem\log_list.html.twig:3 + + + log.list.title + Systemlog + + + + + Part-DB1\templates\LogSystem\_log_table.html.twig:1 + Part-DB1\templates\LogSystem\_log_table.html.twig:1 + new + + + log.undo.confirm_title + Änderung wirklich rückgängig machen / Element wirklich zurücksetzen? + + + + + Part-DB1\templates\LogSystem\_log_table.html.twig:2 + 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? + + Part-DB1\templates\mail\base.html.twig:24 + Part-DB1\templates\mail\base.html.twig:24 mail.footer.email_sent_by @@ -1001,6 +1227,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 @@ -1010,6 +1237,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% @@ -1019,6 +1247,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 @@ -1028,6 +1257,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 @@ -1037,6 +1267,7 @@ 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 @@ -1046,6 +1277,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 @@ -1055,6 +1287,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 @@ -1064,6 +1297,7 @@ 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% @@ -1074,6 +1308,8 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:18 Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 + Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:18 + Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 orderdetail.delete @@ -1083,6 +1319,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 @@ -1092,6 +1329,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 @@ -1101,6 +1339,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 @@ -1110,6 +1349,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 @@ -1119,6 +1359,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 templates\Parts\edit_part_info.html.twig:4 @@ -1129,6 +1370,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 templates\Parts\edit_part_info.html.twig:9 @@ -1139,6 +1381,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 @@ -1148,6 +1391,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 @@ -1157,6 +1401,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 @@ -1166,6 +1411,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 @@ -1175,6 +1421,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 @@ -1184,6 +1431,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 @@ -1193,6 +1441,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 part.edit.tab.comment @@ -1202,6 +1451,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\edit\new_part.html.twig:8 + Part-DB1\templates\Parts\edit\new_part.html.twig:8 templates\Parts\new_part.html.twig:8 @@ -1212,6 +1462,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 @@ -1221,6 +1472,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 @@ -1230,6 +1482,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 @@ -1239,6 +1492,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 @@ -1248,6 +1502,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\edit\_orderdetails.html.twig:61 + Part-DB1\templates\Parts\edit\_orderdetails.html.twig:61 orderdetails.edit.delete.confirm @@ -1257,7 +1512,9 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\show_part_info.html.twig:4 - Part-DB1\templates\Parts\info\show_part_info.html.twig:9 + Part-DB1\templates\Parts\info\show_part_info.html.twig:19 + Part-DB1\templates\Parts\info\show_part_info.html.twig:4 + Part-DB1\templates\Parts\info\show_part_info.html.twig:19 templates\Parts\show_part_info.html.twig:4 templates\Parts\show_part_info.html.twig:9 @@ -1268,7 +1525,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\show_part_info.html.twig:36 + 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 @@ -1277,8 +1535,10 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\show_part_info.html.twig:46 - Part-DB1\templates\_navbar.html.twig:46 + Part-DB1\templates\Parts\info\show_part_info.html.twig:56 + Part-DB1\templates\_navbar_search.html.twig:26 + Part-DB1\templates\Parts\info\show_part_info.html.twig:56 + Part-DB1\templates\_navbar_search.html.twig:26 templates\base.html.twig:62 templates\Parts\show_part_info.html.twig:74 src\Form\PartType.php:86 @@ -1290,7 +1550,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\show_part_info.html.twig:54 + Part-DB1\templates\Parts\info\show_part_info.html.twig:64 + Part-DB1\templates\Parts\info\show_part_info.html.twig:64 templates\Parts\show_part_info.html.twig:82 @@ -1300,7 +1561,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\show_part_info.html.twig:60 + Part-DB1\templates\Parts\info\show_part_info.html.twig:71 + Part-DB1\templates\Parts\info\show_part_info.html.twig:71 templates\Parts\show_part_info.html.twig:88 @@ -1310,7 +1572,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\show_part_info.html.twig:66 + Part-DB1\templates\Parts\info\show_part_info.html.twig:78 + Part-DB1\templates\Parts\info\show_part_info.html.twig:78 templates\Parts\show_part_info.html.twig:94 @@ -1320,9 +1583,12 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\show_part_info.html.twig:72 + Part-DB1\templates\Parts\info\show_part_info.html.twig:84 Part-DB1\templates\_sidebar.html.twig:54 Part-DB1\templates\_sidebar.html.twig:13 + Part-DB1\templates\Parts\info\show_part_info.html.twig:84 + Part-DB1\templates\_sidebar.html.twig:54 + Part-DB1\templates\_sidebar.html.twig:13 templates\base.html.twig:176 templates\base.html.twig:203 templates\base.html.twig:217 @@ -1336,7 +1602,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\show_part_info.html.twig:78 + Part-DB1\templates\Parts\info\show_part_info.html.twig:90 + Part-DB1\templates\Parts\info\show_part_info.html.twig:90 extended_info.label @@ -1346,6 +1613,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 @@ -1355,6 +1623,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 @@ -1364,6 +1633,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 @@ -1373,6 +1643,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 @@ -1382,6 +1653,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_attachments_info.html.twig:34 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:34 attachment.external_file @@ -1391,6 +1663,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_attachments_info.html.twig:50 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:50 attachment.download @@ -1400,15 +1673,66 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 attachment.edit Bearbeiten + + + Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 + new + + + user.creating_user + Nutzer der dieses Bauteil erstellte + + + + + Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 + + + Unknown + Unbekannt + + + + + Part-DB1\templates\Parts\info\_extended_infos.html.twig:15 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:30 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:15 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:30 + new + + + accessDenied + Zugriff verboten + + + + + Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 + new + + + user.last_editing_user + Nutzer der dieses Bauteil zu Letzt bearbeitete + + - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 part.isFavorite @@ -1417,27 +1741,22 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 part.minOrderAmount Mindestbestellmenge - - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:30 - - - Unknown - Unbekannt - - Part-DB1\templates\Parts\info\_main_infos.html.twig:8 - Part-DB1\templates\_navbar.html.twig:61 - Part-DB1\src\Services\ElementTypeNameGenerator.php:61 + Part-DB1\templates\_navbar_search.html.twig:41 + Part-DB1\src\Services\ElementTypeNameGenerator.php:84 + Part-DB1\templates\Parts\info\_main_infos.html.twig:8 + Part-DB1\templates\_navbar_search.html.twig:41 + Part-DB1\src\Services\ElementTypeNameGenerator.php:84 templates\base.html.twig:70 templates\Parts\show_part_info.html.twig:24 src\Form\PartType.php:80 @@ -1447,10 +1766,23 @@ Subelemente werden beim Löschen nach oben verschoben. Hersteller + + + Part-DB1\templates\Parts\info\_main_infos.html.twig:27 + Part-DB1\templates\Parts\info\_main_infos.html.twig:27 + new + + + part.back_to_info + Zurück zum aktuellen Versionsstand + + - Part-DB1\templates\Parts\info\_main_infos.html.twig:30 - Part-DB1\templates\_navbar.html.twig:38 + Part-DB1\templates\Parts\info\_main_infos.html.twig:32 + Part-DB1\templates\_navbar_search.html.twig:18 + Part-DB1\templates\Parts\info\_main_infos.html.twig:32 + Part-DB1\templates\_navbar_search.html.twig:18 templates\base.html.twig:58 templates\Parts\show_part_info.html.twig:31 src\Form\PartType.php:65 @@ -1462,9 +1794,12 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\_main_infos.html.twig:32 - Part-DB1\templates\_navbar.html.twig:34 - Part-DB1\src\Services\ElementTypeNameGenerator.php:57 + Part-DB1\templates\Parts\info\_main_infos.html.twig:34 + Part-DB1\templates\_navbar_search.html.twig:14 + Part-DB1\src\Services\ElementTypeNameGenerator.php:80 + Part-DB1\templates\Parts\info\_main_infos.html.twig:34 + Part-DB1\templates\_navbar_search.html.twig:14 + Part-DB1\src\Services\ElementTypeNameGenerator.php:80 templates\base.html.twig:56 templates\Parts\show_part_info.html.twig:32 src\Form\PartType.php:74 @@ -1476,7 +1811,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\_main_infos.html.twig:37 + Part-DB1\templates\Parts\info\_main_infos.html.twig:39 + Part-DB1\templates\Parts\info\_main_infos.html.twig:39 templates\Parts\show_part_info.html.twig:42 src\Form\PartType.php:69 @@ -1487,7 +1823,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\_main_infos.html.twig:39 + Part-DB1\templates\Parts\info\_main_infos.html.twig:41 + Part-DB1\templates\Parts\info\_main_infos.html.twig:41 templates\Parts\show_part_info.html.twig:44 src\Form\PartType.php:72 @@ -1498,9 +1835,12 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\_main_infos.html.twig:43 - Part-DB1\templates\_navbar.html.twig:67 - Part-DB1\src\Services\ElementTypeNameGenerator.php:60 + Part-DB1\templates\Parts\info\_main_infos.html.twig:45 + Part-DB1\templates\_navbar_search.html.twig:47 + Part-DB1\src\Services\ElementTypeNameGenerator.php:83 + Part-DB1\templates\Parts\info\_main_infos.html.twig:45 + Part-DB1\templates\_navbar_search.html.twig:47 + Part-DB1\src\Services\ElementTypeNameGenerator.php:83 templates\base.html.twig:73 templates\Parts\show_part_info.html.twig:47 @@ -1511,8 +1851,10 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\_main_infos.html.twig:55 - Part-DB1\templates\Parts\info\_main_infos.html.twig:58 + Part-DB1\templates\Parts\info\_main_infos.html.twig:57 + Part-DB1\templates\Parts\info\_main_infos.html.twig:60 + Part-DB1\templates\Parts\info\_main_infos.html.twig:57 + Part-DB1\templates\Parts\info\_main_infos.html.twig:60 templates\Parts\show_part_info.html.twig:51 @@ -1523,6 +1865,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 @@ -1532,6 +1875,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 @@ -1541,6 +1885,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 @@ -1550,6 +1895,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 @@ -1559,6 +1905,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 @@ -1568,6 +1915,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 @@ -1577,6 +1925,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 @@ -1586,6 +1935,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_part_lots.html.twig:6 + Part-DB1\templates\Parts\info\_part_lots.html.twig:6 part_lots.description @@ -1595,6 +1945,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:7 part_lots.storage_location @@ -1604,6 +1955,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:8 part_lots.amount @@ -1612,7 +1964,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\_part_lots.html.twig:23 + Part-DB1\templates\Parts\info\_part_lots.html.twig:22 + Part-DB1\templates\Parts\info\_part_lots.html.twig:22 part_lots.location_unknown @@ -1621,7 +1974,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\_part_lots.html.twig:30 + Part-DB1\templates\Parts\info\_part_lots.html.twig:29 + Part-DB1\templates\Parts\info\_part_lots.html.twig:29 part_lots.instock_unknown @@ -1630,7 +1984,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\_part_lots.html.twig:39 + Part-DB1\templates\Parts\info\_part_lots.html.twig:38 + Part-DB1\templates\Parts\info\_part_lots.html.twig:38 part_lots.expiration_date @@ -1639,7 +1994,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\_part_lots.html.twig:47 + Part-DB1\templates\Parts\info\_part_lots.html.twig:46 + Part-DB1\templates\Parts\info\_part_lots.html.twig:46 part_lots.is_expired @@ -1648,7 +2004,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\_part_lots.html.twig:54 + Part-DB1\templates\Parts\info\_part_lots.html.twig:53 + Part-DB1\templates\Parts\info\_part_lots.html.twig:53 part_lots.need_refill @@ -1658,6 +2015,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 @@ -1667,6 +2025,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 @@ -1675,7 +2034,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\_sidebar.html.twig:17 + Part-DB1\templates\Parts\info\_sidebar.html.twig:21 + Part-DB1\templates\Parts\info\_sidebar.html.twig:21 part.mass.tooltip @@ -1684,7 +2044,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\_sidebar.html.twig:26 + Part-DB1\templates\Parts\info\_sidebar.html.twig:30 + Part-DB1\templates\Parts\info\_sidebar.html.twig:30 part.needs_review.badge @@ -1693,7 +2054,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\_sidebar.html.twig:35 + Part-DB1\templates\Parts\info\_sidebar.html.twig:39 + Part-DB1\templates\Parts\info\_sidebar.html.twig:39 part.favorite.badge @@ -1702,7 +2064,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\_sidebar.html.twig:43 + Part-DB1\templates\Parts\info\_sidebar.html.twig:47 + Part-DB1\templates\Parts\info\_sidebar.html.twig:47 part.obsolete.badge @@ -1712,6 +2075,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_tools.html.twig:4 + Part-DB1\templates\Parts\info\_tools.html.twig:4 templates\Parts\show_part_info.html.twig:125 new @@ -1723,6 +2087,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_tools.html.twig:14 + Part-DB1\templates\Parts\info\_tools.html.twig:14 templates\Parts\show_part_info.html.twig:135 new @@ -1734,6 +2099,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_tools.html.twig:22 + Part-DB1\templates\Parts\info\_tools.html.twig:22 templates\Parts\show_part_info.html.twig:143 new @@ -1745,6 +2111,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_tools.html.twig:29 + Part-DB1\templates\Parts\info\_tools.html.twig:29 part.delete.confirm_title @@ -1754,6 +2121,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\info\_tools.html.twig:30 + Part-DB1\templates\Parts\info\_tools.html.twig:30 part.delete.message @@ -1762,7 +2130,8 @@ Subelemente werden beim Löschen nach oben verschoben. - Part-DB1\templates\Parts\info\_tools.html.twig:36 + Part-DB1\templates\Parts\info\_tools.html.twig:37 + Part-DB1\templates\Parts\info\_tools.html.twig:37 part.delete @@ -1772,6 +2141,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 @@ -1781,6 +2151,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 @@ -1790,6 +2161,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 @@ -1799,6 +2171,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 @@ -1808,6 +2181,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 @@ -1817,6 +2191,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 @@ -1826,6 +2201,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 @@ -1835,6 +2211,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 @@ -1844,6 +2221,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\lists\_info_card.html.twig:17 + Part-DB1\templates\Parts\lists\_info_card.html.twig:17 entity.info.common.tab @@ -1853,6 +2231,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\lists\_info_card.html.twig:20 + Part-DB1\templates\Parts\lists\_info_card.html.twig:20 entity.info.statistics.tab @@ -1862,6 +2241,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\lists\_info_card.html.twig:30 + Part-DB1\templates\Parts\lists\_info_card.html.twig:30 entity.info.name @@ -1872,6 +2252,8 @@ 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 + Part-DB1\templates\Parts\lists\_info_card.html.twig:34 + Part-DB1\templates\Parts\lists\_info_card.html.twig:67 entity.info.parent @@ -1881,6 +2263,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\lists\_info_card.html.twig:46 + Part-DB1\templates\Parts\lists\_info_card.html.twig:46 entity.edit.btn @@ -1890,6 +2273,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Parts\lists\_info_card.html.twig:63 + Part-DB1\templates\Parts\lists\_info_card.html.twig:63 entity.info.children_count @@ -1900,6 +2284,8 @@ 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 + Part-DB1\templates\security\2fa_base_form.html.twig:3 + Part-DB1\templates\security\2fa_base_form.html.twig:5 tfa.check.title @@ -1909,6 +2295,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 @@ -1919,6 +2306,8 @@ 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 + Part-DB1\templates\security\2fa_base_form.html.twig:52 + Part-DB1\templates\security\login.html.twig:58 login.btn @@ -1929,7 +2318,10 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\security\2fa_base_form.html.twig:53 Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:103 + Part-DB1\templates\_navbar.html.twig:40 + Part-DB1\templates\security\2fa_base_form.html.twig:53 + Part-DB1\templates\security\U2F\u2f_login.html.twig:13 + Part-DB1\templates\_navbar.html.twig:40 user.logout @@ -1939,6 +2331,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 @@ -1948,6 +2341,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 @@ -1957,6 +2351,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\security\login.html.twig:3 + Part-DB1\templates\security\login.html.twig:3 templates\security\login.html.twig:3 @@ -1967,6 +2362,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\security\login.html.twig:7 + Part-DB1\templates\security\login.html.twig:7 templates\security\login.html.twig:7 @@ -1977,6 +2373,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\security\login.html.twig:31 + Part-DB1\templates\security\login.html.twig:31 templates\security\login.html.twig:31 @@ -1987,6 +2384,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\security\login.html.twig:34 + Part-DB1\templates\security\login.html.twig:34 templates\security\login.html.twig:34 @@ -1997,6 +2395,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\security\login.html.twig:38 + Part-DB1\templates\security\login.html.twig:38 templates\security\login.html.twig:38 @@ -2007,6 +2406,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\security\login.html.twig:40 + Part-DB1\templates\security\login.html.twig:40 templates\security\login.html.twig:40 @@ -2017,6 +2417,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\security\login.html.twig:50 + Part-DB1\templates\security\login.html.twig:50 templates\security\login.html.twig:50 @@ -2027,6 +2428,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 @@ -2036,6 +2438,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 @@ -2045,6 +2448,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 @@ -2055,6 +2459,8 @@ 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 + Part-DB1\templates\security\U2F\u2f_login.html.twig:7 + Part-DB1\templates\security\U2F\u2f_register.html.twig:10 tfa_u2f.http_warning @@ -2065,6 +2471,8 @@ 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 + 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 @@ -2074,6 +2482,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 @@ -2084,6 +2493,8 @@ 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 + Part-DB1\templates\security\U2F\u2f_register.html.twig:6 + Part-DB1\templates\Users\_2fa_settings.html.twig:111 tfa_u2f.explanation @@ -2093,6 +2504,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 @@ -2102,6 +2514,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 @@ -2111,6 +2524,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 @@ -2120,16 +2534,271 @@ 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 + + + Part-DB1\templates\Statistics\statistics.html.twig:5 + Part-DB1\templates\Statistics\statistics.html.twig:8 + Part-DB1\templates\Statistics\statistics.html.twig:5 + Part-DB1\templates\Statistics\statistics.html.twig:8 + new + + + statistics.title + Statistik + + + + + Part-DB1\templates\Statistics\statistics.html.twig:14 + Part-DB1\templates\Statistics\statistics.html.twig:14 + new + + + statistics.parts + Bauteile + + + + + Part-DB1\templates\Statistics\statistics.html.twig:19 + Part-DB1\templates\Statistics\statistics.html.twig:19 + new + + + statistics.data_structures + Datenstrukturen + + + + + Part-DB1\templates\Statistics\statistics.html.twig:24 + Part-DB1\templates\Statistics\statistics.html.twig:24 + new + + + statistics.attachments + Dateianhänge + + + + + Part-DB1\templates\Statistics\statistics.html.twig:34 + Part-DB1\templates\Statistics\statistics.html.twig:59 + Part-DB1\templates\Statistics\statistics.html.twig:104 + Part-DB1\templates\Statistics\statistics.html.twig:34 + Part-DB1\templates\Statistics\statistics.html.twig:59 + Part-DB1\templates\Statistics\statistics.html.twig:104 + new + + + statistics.property + Eigenschaft + + + + + Part-DB1\templates\Statistics\statistics.html.twig:35 + Part-DB1\templates\Statistics\statistics.html.twig:60 + Part-DB1\templates\Statistics\statistics.html.twig:105 + Part-DB1\templates\Statistics\statistics.html.twig:35 + Part-DB1\templates\Statistics\statistics.html.twig:60 + Part-DB1\templates\Statistics\statistics.html.twig:105 + new + + + statistics.value + Wert + + + + + Part-DB1\templates\Statistics\statistics.html.twig:40 + Part-DB1\templates\Statistics\statistics.html.twig:40 + new + + + statistics.distinct_parts_count + Anzahl verschiedener Bauteile + + + + + Part-DB1\templates\Statistics\statistics.html.twig:44 + Part-DB1\templates\Statistics\statistics.html.twig:44 + new + + + statistics.parts_instock_sum + Summe aller vorhanden Bauteilebestände + + + + + Part-DB1\templates\Statistics\statistics.html.twig:48 + Part-DB1\templates\Statistics\statistics.html.twig:48 + new + + + statistics.parts_with_price + Bauteile mit Preisinformationen + + + + + Part-DB1\templates\Statistics\statistics.html.twig:65 + Part-DB1\templates\Statistics\statistics.html.twig:65 + new + + + statistics.categories_count + Anzahl Kategorien + + + + + Part-DB1\templates\Statistics\statistics.html.twig:69 + Part-DB1\templates\Statistics\statistics.html.twig:69 + new + + + statistics.footprints_count + Anzahl Footprints + + + + + Part-DB1\templates\Statistics\statistics.html.twig:73 + Part-DB1\templates\Statistics\statistics.html.twig:73 + new + + + statistics.manufacturers_count + Anzahl Hersteller + + + + + Part-DB1\templates\Statistics\statistics.html.twig:77 + Part-DB1\templates\Statistics\statistics.html.twig:77 + new + + + statistics.storelocations_count + Anzahl Lagerorte + + + + + Part-DB1\templates\Statistics\statistics.html.twig:81 + Part-DB1\templates\Statistics\statistics.html.twig:81 + new + + + statistics.suppliers_count + Anzahl Lieferanten + + + + + Part-DB1\templates\Statistics\statistics.html.twig:85 + Part-DB1\templates\Statistics\statistics.html.twig:85 + new + + + statistics.currencies_count + Anzahl Währungen + + + + + Part-DB1\templates\Statistics\statistics.html.twig:89 + Part-DB1\templates\Statistics\statistics.html.twig:89 + new + + + statistics.measurement_units_count + Anzahl Maßeinheiten + + + + + Part-DB1\templates\Statistics\statistics.html.twig:93 + Part-DB1\templates\Statistics\statistics.html.twig:93 + new + + + statistics.devices_count + Anzahl Baugruppen + + + + + Part-DB1\templates\Statistics\statistics.html.twig:110 + Part-DB1\templates\Statistics\statistics.html.twig:110 + new + + + statistics.attachment_types_count + Anzahl Anhangstypen + + + + + Part-DB1\templates\Statistics\statistics.html.twig:114 + Part-DB1\templates\Statistics\statistics.html.twig:114 + new + + + statistics.all_attachments_count + Anzahl aller Dateianhänge + + + + + Part-DB1\templates\Statistics\statistics.html.twig:118 + Part-DB1\templates\Statistics\statistics.html.twig:118 + new + + + statistics.user_uploaded_attachments_count + Anzahl aller vom Nutzer hochgeladener Anhänge + + + + + Part-DB1\templates\Statistics\statistics.html.twig:122 + Part-DB1\templates\Statistics\statistics.html.twig:122 + new + + + statistics.private_attachments_count + Anzahl aller privaten Anhänge + + + + + Part-DB1\templates\Statistics\statistics.html.twig:126 + Part-DB1\templates\Statistics\statistics.html.twig:126 + new + + + statistics.external_attachments_count + Anzahl aller externen Anhänge (URL) + + Part-DB1\templates\Users\backup_codes.html.twig:3 Part-DB1\templates\Users\backup_codes.html.twig:9 + Part-DB1\templates\Users\backup_codes.html.twig:3 + Part-DB1\templates\Users\backup_codes.html.twig:9 tfa_backup.codes.title @@ -2139,6 +2808,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 @@ -2148,6 +2818,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 @@ -2157,6 +2828,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 @@ -2166,6 +2838,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 @@ -2175,6 +2848,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 @@ -2184,6 +2858,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 @@ -2194,7 +2869,10 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Users\user_info.html.twig:3 Part-DB1\templates\Users\user_info.html.twig:6 - Part-DB1\templates\_navbar.html.twig:101 + Part-DB1\templates\_navbar.html.twig:38 + Part-DB1\templates\Users\user_info.html.twig:3 + Part-DB1\templates\Users\user_info.html.twig:6 + Part-DB1\templates\_navbar.html.twig:38 templates\base.html.twig:99 templates\Users\user_info.html.twig:3 templates\Users\user_info.html.twig:6 @@ -2207,7 +2885,9 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Users\user_info.html.twig:18 - Part-DB1\src\Form\UserSettingsType.php:57 + Part-DB1\src\Form\UserSettingsType.php:77 + Part-DB1\templates\Users\user_info.html.twig:18 + Part-DB1\src\Form\UserSettingsType.php:77 templates\Users\user_info.html.twig:18 src\Form\UserSettingsType.php:32 @@ -2219,7 +2899,9 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Users\user_info.html.twig:24 - Part-DB1\src\Form\UserSettingsType.php:62 + Part-DB1\src\Form\UserSettingsType.php:82 + Part-DB1\templates\Users\user_info.html.twig:24 + Part-DB1\src\Form\UserSettingsType.php:82 templates\Users\user_info.html.twig:24 src\Form\UserSettingsType.php:35 @@ -2231,7 +2913,9 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Users\user_info.html.twig:30 - Part-DB1\src\Form\UserSettingsType.php:72 + Part-DB1\src\Form\UserSettingsType.php:92 + Part-DB1\templates\Users\user_info.html.twig:30 + Part-DB1\src\Form\UserSettingsType.php:92 templates\Users\user_info.html.twig:30 src\Form\UserSettingsType.php:41 @@ -2243,7 +2927,9 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Users\user_info.html.twig:37 - Part-DB1\src\Form\UserSettingsType.php:67 + Part-DB1\src\Form\UserSettingsType.php:87 + Part-DB1\templates\Users\user_info.html.twig:37 + Part-DB1\src\Form\UserSettingsType.php:87 templates\Users\user_info.html.twig:37 src\Form\UserSettingsType.php:38 @@ -2255,7 +2941,9 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Users\user_info.html.twig:47 - Part-DB1\src\Form\UserSettingsType.php:53 + Part-DB1\src\Form\UserSettingsType.php:73 + Part-DB1\templates\Users\user_info.html.twig:47 + Part-DB1\src\Form\UserSettingsType.php:73 templates\Users\user_info.html.twig:47 src\Form\UserSettingsType.php:30 @@ -2267,7 +2955,9 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Users\user_info.html.twig:53 - Part-DB1\src\Services\ElementTypeNameGenerator.php:70 + Part-DB1\src\Services\ElementTypeNameGenerator.php:93 + Part-DB1\templates\Users\user_info.html.twig:53 + Part-DB1\src\Services\ElementTypeNameGenerator.php:93 templates\Users\user_info.html.twig:53 @@ -2278,6 +2968,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 @@ -2288,7 +2979,10 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Users\user_settings.html.twig:3 Part-DB1\templates\Users\user_settings.html.twig:6 - Part-DB1\templates\_navbar.html.twig:100 + Part-DB1\templates\_navbar.html.twig:37 + Part-DB1\templates\Users\user_settings.html.twig:3 + Part-DB1\templates\Users\user_settings.html.twig:6 + Part-DB1\templates\_navbar.html.twig:37 templates\base.html.twig:98 templates\Users\user_settings.html.twig:3 templates\Users\user_settings.html.twig:6 @@ -2301,6 +2995,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Users\user_settings.html.twig:18 + Part-DB1\templates\Users\user_settings.html.twig:18 templates\Users\user_settings.html.twig:14 @@ -2311,6 +3006,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Users\user_settings.html.twig:22 + Part-DB1\templates\Users\user_settings.html.twig:22 templates\Users\user_settings.html.twig:18 @@ -2321,6 +3017,7 @@ Subelemente werden beim Löschen nach oben verschoben. Part-DB1\templates\Users\user_settings.html.twig:55 + Part-DB1\templates\Users\user_settings.html.twig:55 templates\Users\user_settings.html.twig:48 @@ -2331,6 +3028,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 @@ -2340,6 +3038,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 @@ -2349,6 +3048,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 @@ -2358,6 +3058,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 @@ -2367,6 +3068,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 @@ -2376,6 +3078,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 @@ -2385,6 +3088,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_message @@ -2395,6 +3099,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 @@ -2404,6 +3109,7 @@ 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 @@ -2413,6 +3119,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 @@ -2422,6 +3129,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 @@ -2431,6 +3139,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 @@ -2440,6 +3149,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 @@ -2449,6 +3159,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 @@ -2458,6 +3169,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 @@ -2467,6 +3179,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 @@ -2476,6 +3189,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 @@ -2485,6 +3199,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 @@ -2494,6 +3209,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 @@ -2504,6 +3220,8 @@ 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 + Part-DB1\templates\Users\_2fa_settings.html.twig:84 + Part-DB1\templates\Users\_2fa_settings.html.twig:92 tfa_backup.explanation @@ -2513,6 +3231,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 @@ -2522,6 +3241,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 @@ -2531,6 +3251,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 @@ -2540,6 +3261,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 @@ -2549,6 +3271,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 @@ -2558,6 +3281,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 @@ -2567,6 +3291,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 @@ -2576,6 +3301,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 @@ -2585,6 +3311,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 @@ -2594,6 +3321,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 @@ -2603,6 +3331,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 @@ -2612,6 +3341,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 @@ -2621,6 +3351,7 @@ 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 @@ -2631,6 +3362,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 @@ -2640,6 +3372,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 @@ -2649,6 +3382,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 @@ -2658,6 +3392,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\templates\_navbar.html.twig:4 + Part-DB1\templates\_navbar.html.twig:4 templates\base.html.twig:29 @@ -2665,9 +3400,67 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Sidebar umschalten + + + Part-DB1\templates\_navbar.html.twig:27 + Part-DB1\templates\_navbar.html.twig:27 + templates\base.html.twig:88 + + + barcode.scan + Scanne Barcode + + + + + Part-DB1\templates\_navbar.html.twig:36 + Part-DB1\templates\_navbar.html.twig:36 + templates\base.html.twig:97 + + + user.loggedin.label + Eingeloggt als + + + + + Part-DB1\templates\_navbar.html.twig:42 + Part-DB1\templates\_navbar.html.twig:42 + templates\base.html.twig:103 + + + user.login + Einloggen + + + + + Part-DB1\templates\_navbar.html.twig:48 + Part-DB1\templates\_navbar.html.twig:48 + + + ui.toggle_darkmode + Darkmode + + + + + Part-DB1\templates\_navbar.html.twig:52 + Part-DB1\src\Form\UserSettingsType.php:97 + Part-DB1\templates\_navbar.html.twig:52 + Part-DB1\src\Form\UserSettingsType.php:97 + templates\base.html.twig:106 + src\Form\UserSettingsType.php:44 + + + user.language_select + Sprache + + - Part-DB1\templates\_navbar.html.twig:24 + Part-DB1\templates\_navbar_search.html.twig:4 + Part-DB1\templates\_navbar_search.html.twig:4 templates\base.html.twig:49 @@ -2677,7 +3470,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\templates\_navbar.html.twig:30 + Part-DB1\templates\_navbar_search.html.twig:10 + Part-DB1\templates\_navbar_search.html.twig:10 templates\base.html.twig:54 src\Form\PartType.php:62 @@ -2688,8 +3482,10 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\templates\_navbar.html.twig:42 - Part-DB1\src\Services\ElementTypeNameGenerator.php:65 + Part-DB1\templates\_navbar_search.html.twig:22 + Part-DB1\src\Services\ElementTypeNameGenerator.php:88 + Part-DB1\templates\_navbar_search.html.twig:22 + Part-DB1\src\Services\ElementTypeNameGenerator.php:88 templates\base.html.twig:60 templates\Parts\show_part_info.html.twig:36 src\Form\PartType.php:77 @@ -2701,7 +3497,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\templates\_navbar.html.twig:51 + Part-DB1\templates\_navbar_search.html.twig:31 + Part-DB1\templates\_navbar_search.html.twig:31 templates\base.html.twig:65 @@ -2711,8 +3508,10 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\templates\_navbar.html.twig:55 - Part-DB1\src\Services\ElementTypeNameGenerator.php:66 + Part-DB1\templates\_navbar_search.html.twig:35 + Part-DB1\src\Services\ElementTypeNameGenerator.php:89 + Part-DB1\templates\_navbar_search.html.twig:35 + Part-DB1\src\Services\ElementTypeNameGenerator.php:89 templates\base.html.twig:67 @@ -2722,7 +3521,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\templates\_navbar.html.twig:72 + Part-DB1\templates\_navbar_search.html.twig:52 + Part-DB1\templates\_navbar_search.html.twig:52 templates\base.html.twig:75 @@ -2732,7 +3532,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\templates\_navbar.html.twig:76 + Part-DB1\templates\_navbar_search.html.twig:56 + Part-DB1\templates\_navbar_search.html.twig:56 templates\base.html.twig:77 @@ -2740,91 +3541,22 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Reg.Ex. Matching - + - Part-DB1\templates\_navbar.html.twig:83 - templates\base.html.twig:81 + Part-DB1\templates\_navbar_search.html.twig:62 + Part-DB1\templates\_navbar_search.html.twig:62 - go.exclamation + search.submit Los! - - - Part-DB1\templates\_navbar.html.twig:90 - templates\base.html.twig:88 - - - barcode.scan - Scanne Barcode - - - - - Part-DB1\templates\_navbar.html.twig:99 - templates\base.html.twig:97 - - - user.loggedin.label - Eingeloggt als - - - - - Part-DB1\templates\_navbar.html.twig:105 - templates\base.html.twig:103 - - - user.login - Einloggen - - - - - Part-DB1\templates\_navbar.html.twig:111 - - - ui.toggle_darkmode - Darkmode - - - - - Part-DB1\templates\_navbar.html.twig:115 - Part-DB1\src\Form\UserSettingsType.php:77 - templates\base.html.twig:106 - src\Form\UserSettingsType.php:44 - - - user.language_select - Sprache - - - - - Part-DB1\templates\_navbar.html.twig:118 - templates\base.html.twig:109 - - - language.english - Englisch - - - - - Part-DB1\templates\_navbar.html.twig:121 - templates\base.html.twig:112 - - - language.german - Deutsch - - Part-DB1\templates\_sidebar.html.twig:37 Part-DB1\templates\_sidebar.html.twig:12 + Part-DB1\templates\_sidebar.html.twig:37 + Part-DB1\templates\_sidebar.html.twig:12 templates\base.html.twig:175 templates\base.html.twig:189 templates\base.html.twig:202 @@ -2838,6 +3570,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\templates\_sidebar.html.twig:2 + Part-DB1\templates\_sidebar.html.twig:2 templates\base.html.twig:165 templates\base.html.twig:192 templates\base.html.twig:220 @@ -2850,6 +3583,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\templates\_sidebar.html.twig:6 + Part-DB1\templates\_sidebar.html.twig:6 templates\base.html.twig:169 templates\base.html.twig:196 templates\base.html.twig:224 @@ -2862,6 +3596,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\templates\_sidebar.html.twig:10 + Part-DB1\templates\_sidebar.html.twig:10 templates\base.html.twig:173 templates\base.html.twig:200 templates\base.html.twig:228 @@ -2874,6 +3609,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Part-DB1\templates\_sidebar.html.twig:11 + Part-DB1\templates\_sidebar.html.twig:11 templates\base.html.twig:174 templates\base.html.twig:201 templates\base.html.twig:229 @@ -2885,10 +3621,14 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:103 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:159 - Part-DB1\src\Controller\PartController.php:93 - Part-DB1\src\Controller\PartController.php:176 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:181 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:243 + Part-DB1\src\Controller\PartController.php:173 + Part-DB1\src\Controller\PartController.php:268 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:181 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:243 + Part-DB1\src\Controller\PartController.php:173 + Part-DB1\src\Controller\PartController.php:268 attachment.download_failed @@ -2897,7 +3637,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:110 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:190 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:190 entity.edit_flash @@ -2906,7 +3647,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:116 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:196 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:196 entity.edit_flash.invalid @@ -2915,7 +3657,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:166 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:252 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:252 entity.created_flash @@ -2924,7 +3667,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:172 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:258 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:258 entity.created_flash.invalid @@ -2933,7 +3677,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:255 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:352 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:352 src\Controller\BaseAdminController.php:154 new @@ -2944,19 +3689,123 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:257 - Part-DB1\src\Controller\UserController.php:89 - Part-DB1\src\Controller\UserSettingsController.php:125 - Part-DB1\src\Controller\UserSettingsController.php:155 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:354 + Part-DB1\src\Controller\UserController.php:101 + Part-DB1\src\Controller\UserSettingsController.php:150 + Part-DB1\src\Controller\UserSettingsController.php:182 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:354 + Part-DB1\src\Controller\UserController.php:101 + Part-DB1\src\Controller\UserSettingsController.php:150 + Part-DB1\src\Controller\UserSettingsController.php:182 csfr_invalid CSFR-Token ungültig! Laden Sie diese Seite erneut oder kontaktieren Sie einen Administrator, wenn das Problem bestehen bleibt! + + + Part-DB1\src\Controller\LogController.php:154 + Part-DB1\src\Controller\LogController.php:154 + new + + + log.undo.target_not_found + Zielelement nicht in Datenbank gefunden! + + + + + Part-DB1\src\Controller\LogController.php:160 + Part-DB1\src\Controller\LogController.php:160 + new + + + log.undo.revert_success + Bauteil erfolgreich zurückgesetzt. + + + + + Part-DB1\src\Controller\LogController.php:180 + Part-DB1\src\Controller\LogController.php:180 + new + + + log.undo.element_undelete_success + Bauteil erfolgreich wiederhergestellt. + + + + + Part-DB1\src\Controller\LogController.php:182 + Part-DB1\src\Controller\LogController.php:182 + new + + + log.undo.element_element_already_undeleted + Bauteile wurde bereits wiederhergestellt! + + + + + Part-DB1\src\Controller\LogController.php:189 + Part-DB1\src\Controller\LogController.php:189 + new + + + log.undo.element_delete_success + Bauteil erfolgreich gelöscht. + + + + + Part-DB1\src\Controller\LogController.php:191 + Part-DB1\src\Controller\LogController.php:191 + new + + + log.undo.element.element_already_delted + Bauteil wurde bereits gelöscht + + + + + Part-DB1\src\Controller\LogController.php:198 + Part-DB1\src\Controller\LogController.php:198 + new + + + log.undo.element_change_undone + Änderung erfolgreich rückgängig gemacht. + + + + + Part-DB1\src\Controller\LogController.php:200 + 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! + + + + + Part-DB1\src\Controller\LogController.php:203 + Part-DB1\src\Controller\LogController.php:203 + new + + + log.undo.log_type_invalid + Dieser Logtyp kann nicht rückgängig gemacht werden! + + - Part-DB1\src\Controller\PartController.php:100 + Part-DB1\src\Controller\PartController.php:182 + Part-DB1\src\Controller\PartController.php:182 src\Controller\PartController.php:80 new @@ -2967,7 +3816,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\PartController.php:104 + Part-DB1\src\Controller\PartController.php:186 + Part-DB1\src\Controller\PartController.php:186 part.edited_flash.invalid @@ -2976,7 +3826,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\PartController.php:133 + Part-DB1\src\Controller\PartController.php:219 + Part-DB1\src\Controller\PartController.php:219 part.deleted @@ -2985,8 +3836,10 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\PartController.php:183 - Part-DB1\src\Controller\PartController.php:219 + Part-DB1\src\Controller\PartController.php:277 + Part-DB1\src\Controller\PartController.php:317 + Part-DB1\src\Controller\PartController.php:277 + Part-DB1\src\Controller\PartController.php:317 src\Controller\PartController.php:113 src\Controller\PartController.php:142 new @@ -2998,25 +3851,18 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\PartController.php:189 + Part-DB1\src\Controller\PartController.php:283 + Part-DB1\src\Controller\PartController.php:283 part.created_flash.invalid Fehler beim Anlegen: Überprüfen Sie ihre Eingaben! - - - Part-DB1\src\Controller\RedirectController.php:64 - - - flash.password_change_needed - Ihr Password muss geändert werden! - - - Part-DB1\src\Controller\SecurityController.php:90 + Part-DB1\src\Controller\SecurityController.php:109 + Part-DB1\src\Controller\SecurityController.php:109 pw_reset.user_or_email @@ -3025,7 +3871,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\SecurityController.php:107 + Part-DB1\src\Controller\SecurityController.php:126 + Part-DB1\src\Controller\SecurityController.php:126 pw_reset.request.success @@ -3034,7 +3881,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\SecurityController.php:132 + Part-DB1\src\Controller\SecurityController.php:160 + Part-DB1\src\Controller\SecurityController.php:160 pw_reset.username @@ -3043,7 +3891,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\SecurityController.php:135 + Part-DB1\src\Controller\SecurityController.php:163 + Part-DB1\src\Controller\SecurityController.php:163 pw_reset.token @@ -3052,7 +3901,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\SecurityController.php:160 + Part-DB1\src\Controller\SecurityController.php:192 + Part-DB1\src\Controller\SecurityController.php:192 pw_reset.new_pw.error @@ -3061,7 +3911,8 @@ 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:194 + Part-DB1\src\Controller\SecurityController.php:194 pw_reset.new_pw.success @@ -3070,7 +3921,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\UserController.php:87 + Part-DB1\src\Controller\UserController.php:99 + Part-DB1\src\Controller\UserController.php:99 user.edit.reset_success @@ -3079,7 +3931,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\UserSettingsController.php:72 + Part-DB1\src\Controller\UserSettingsController.php:92 + Part-DB1\src\Controller\UserSettingsController.php:92 tfa_backup.no_codes_enabled @@ -3088,7 +3941,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\UserSettingsController.php:109 + Part-DB1\src\Controller\UserSettingsController.php:132 + Part-DB1\src\Controller\UserSettingsController.php:132 tfa_u2f.u2f_delete.not_existing @@ -3097,7 +3951,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\UserSettingsController.php:115 + Part-DB1\src\Controller\UserSettingsController.php:139 + Part-DB1\src\Controller\UserSettingsController.php:139 tfa_u2f.u2f_delete.access_denied @@ -3106,7 +3961,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\UserSettingsController.php:122 + Part-DB1\src\Controller\UserSettingsController.php:147 + Part-DB1\src\Controller\UserSettingsController.php:147 tfa.u2f.u2f_delete.success @@ -3115,7 +3971,8 @@ 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:180 + Part-DB1\src\Controller\UserSettingsController.php:180 tfa_trustedDevice.invalidate.success @@ -3124,7 +3981,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\UserSettingsController.php:195 + Part-DB1\src\Controller\UserSettingsController.php:226 + Part-DB1\src\Controller\UserSettingsController.php:226 src\Controller\UserController.php:98 new @@ -3135,7 +3993,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\UserSettingsController.php:244 + Part-DB1\src\Controller\UserSettingsController.php:288 + Part-DB1\src\Controller\UserSettingsController.php:288 src\Controller\UserController.php:130 new @@ -3146,7 +4005,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\UserSettingsController.php:262 + Part-DB1\src\Controller\UserSettingsController.php:306 + Part-DB1\src\Controller\UserSettingsController.php:306 user.settings.2fa.google.activated @@ -3155,7 +4015,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\UserSettingsController.php:269 + Part-DB1\src\Controller\UserSettingsController.php:315 + Part-DB1\src\Controller\UserSettingsController.php:315 user.settings.2fa.google.disabled @@ -3164,79 +4025,48 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Controller\UserSettingsController.php:284 + Part-DB1\src\Controller\UserSettingsController.php:332 + Part-DB1\src\Controller\UserSettingsController.php:332 user.settings.2fa.backup_codes.regenerated Neue Backupcodes erfolgreich erzeugt. - + - Part-DB1\src\DataTables\AttachmentDataTable.php:89 - Part-DB1\src\Form\AttachmentFormType.php:59 + Part-DB1\src\DataTables\AttachmentDataTable.php:148 + Part-DB1\src\DataTables\AttachmentDataTable.php:148 - attachment.edit.name - Name + attachment.table.filename + Dateiname - + - Part-DB1\src\DataTables\AttachmentDataTable.php:113 + Part-DB1\src\DataTables\AttachmentDataTable.php:153 + Part-DB1\src\DataTables\AttachmentDataTable.php:153 - attachment.table.type - Anhangstyp - - - - - Part-DB1\src\DataTables\AttachmentDataTable.php:125 - - - attachment.table.element - verknüpftes Element - - - - - Part-DB1\src\DataTables\AttachmentDataTable.php:160 - Part-DB1\src\DataTables\PartsDataTable.php:248 - - - part.table.addedDate - Hinzugefügt - - - - - Part-DB1\src\DataTables\AttachmentDataTable.php:164 - Part-DB1\src\DataTables\PartsDataTable.php:252 - - - part.table.lastModified - Zuletzt bearbeitet - - - - - Part-DB1\src\DataTables\AttachmentDataTable.php:169 - Part-DB1\src\Form\AttachmentFormType.php:69 - - - attachment.edit.show_in_table - Zeige in Tabelle + attachment.table.filesize + Dateigröße - Part-DB1\src\DataTables\AttachmentDataTable.php:170 - Part-DB1\src\DataTables\AttachmentDataTable.php:178 - Part-DB1\src\DataTables\AttachmentDataTable.php:187 - Part-DB1\src\DataTables\AttachmentDataTable.php:196 - Part-DB1\src\DataTables\PartsDataTable.php:257 - Part-DB1\src\DataTables\PartsDataTable.php:264 + Part-DB1\src\DataTables\AttachmentDataTable.php:183 + Part-DB1\src\DataTables\AttachmentDataTable.php:191 + Part-DB1\src\DataTables\AttachmentDataTable.php:200 + Part-DB1\src\DataTables\AttachmentDataTable.php:209 + Part-DB1\src\DataTables\PartsDataTable.php:193 + Part-DB1\src\DataTables\PartsDataTable.php:200 + Part-DB1\src\DataTables\AttachmentDataTable.php:183 + Part-DB1\src\DataTables\AttachmentDataTable.php:191 + Part-DB1\src\DataTables\AttachmentDataTable.php:200 + Part-DB1\src\DataTables\AttachmentDataTable.php:209 + Part-DB1\src\DataTables\PartsDataTable.php:193 + Part-DB1\src\DataTables\PartsDataTable.php:200 true @@ -3245,49 +4075,154 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\DataTables\AttachmentDataTable.php:171 - Part-DB1\src\DataTables\AttachmentDataTable.php:179 - Part-DB1\src\DataTables\AttachmentDataTable.php:188 - Part-DB1\src\DataTables\AttachmentDataTable.php:197 - Part-DB1\src\DataTables\PartsDataTable.php:258 - Part-DB1\src\DataTables\PartsDataTable.php:265 - Part-DB1\src\Form\Type\SIUnitType.php:115 + Part-DB1\src\DataTables\AttachmentDataTable.php:184 + Part-DB1\src\DataTables\AttachmentDataTable.php:192 + Part-DB1\src\DataTables\AttachmentDataTable.php:201 + Part-DB1\src\DataTables\AttachmentDataTable.php:210 + Part-DB1\src\DataTables\PartsDataTable.php:194 + Part-DB1\src\DataTables\PartsDataTable.php:201 + Part-DB1\src\Form\Type\SIUnitType.php:139 + Part-DB1\src\DataTables\AttachmentDataTable.php:184 + Part-DB1\src\DataTables\AttachmentDataTable.php:192 + Part-DB1\src\DataTables\AttachmentDataTable.php:201 + Part-DB1\src\DataTables\AttachmentDataTable.php:210 + Part-DB1\src\DataTables\PartsDataTable.php:194 + Part-DB1\src\DataTables\PartsDataTable.php:201 + Part-DB1\src\Form\Type\SIUnitType.php:139 false falsch - + - Part-DB1\src\DataTables\AttachmentDataTable.php:177 + Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:119 + Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:119 - attachment.edit.isPicture - Bild? + log.target_deleted + gelöscht - + - Part-DB1\src\DataTables\AttachmentDataTable.php:186 + Part-DB1\src\DataTables\Column\RevertLogColumn.php:60 + Part-DB1\src\DataTables\Column\RevertLogColumn.php:60 + new - - attachment.edit.is3DModel - 3D Modell? + + log.undo.undelete + Bauteil wiederherstellen - + - Part-DB1\src\DataTables\AttachmentDataTable.php:195 + Part-DB1\src\DataTables\Column\RevertLogColumn.php:66 + Part-DB1\src\DataTables\Column\RevertLogColumn.php:66 + new + + + log.undo.undo + Änderung rückgängig machen + + + + + Part-DB1\src\DataTables\Column\RevertLogColumn.php:86 + Part-DB1\src\DataTables\Column\RevertLogColumn.php:86 + new + + + log.undo.revert + Element auf Stand dieses Zeitpunktes zurücksetzen! + + + + + Part-DB1\src\DataTables\LogDataTable.php:161 + Part-DB1\src\DataTables\LogDataTable.php:161 - attachment.edit.isBuiltin - Eingebaute Ressource? + log.id + ID + + + + + Part-DB1\src\DataTables\LogDataTable.php:166 + Part-DB1\src\DataTables\LogDataTable.php:166 + + + log.timestamp + Zeitstempel + + + + + Part-DB1\src\DataTables\LogDataTable.php:171 + Part-DB1\src\DataTables\LogDataTable.php:171 + + + log.type + Ereignis + + + + + Part-DB1\src\DataTables\LogDataTable.php:179 + Part-DB1\src\DataTables\LogDataTable.php:179 + + + log.level + Level + + + + + Part-DB1\src\DataTables\LogDataTable.php:188 + Part-DB1\src\DataTables\LogDataTable.php:188 + + + log.user + Benutzer + + + + + Part-DB1\src\DataTables\LogDataTable.php:201 + Part-DB1\src\DataTables\LogDataTable.php:201 + + + log.target_type + Zieltyp + + + + + Part-DB1\src\DataTables\LogDataTable.php:214 + Part-DB1\src\DataTables\LogDataTable.php:214 + + + log.target + Ziel + + + + + Part-DB1\src\DataTables\LogDataTable.php:218 + Part-DB1\src\DataTables\LogDataTable.php:218 + new + + + log.extra + Extra - Part-DB1\src\DataTables\PartsDataTable.php:180 + Part-DB1\src\DataTables\PartsDataTable.php:116 + Part-DB1\src\DataTables\PartsDataTable.php:116 part.table.name @@ -3296,7 +4231,8 @@ 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:126 + Part-DB1\src\DataTables\PartsDataTable.php:126 part.table.id @@ -3305,7 +4241,8 @@ 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:130 + Part-DB1\src\DataTables\PartsDataTable.php:130 part.table.description @@ -3314,7 +4251,8 @@ 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:133 + Part-DB1\src\DataTables\PartsDataTable.php:133 part.table.category @@ -3323,7 +4261,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\DataTables\PartsDataTable.php:202 + Part-DB1\src\DataTables\PartsDataTable.php:138 + Part-DB1\src\DataTables\PartsDataTable.php:138 part.table.footprint @@ -3332,7 +4271,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\DataTables\PartsDataTable.php:206 + Part-DB1\src\DataTables\PartsDataTable.php:142 + Part-DB1\src\DataTables\PartsDataTable.php:142 part.table.manufacturer @@ -3341,7 +4281,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\DataTables\PartsDataTable.php:209 + Part-DB1\src\DataTables\PartsDataTable.php:145 + Part-DB1\src\DataTables\PartsDataTable.php:145 part.table.storeLocations @@ -3350,7 +4291,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\DataTables\PartsDataTable.php:228 + Part-DB1\src\DataTables\PartsDataTable.php:164 + Part-DB1\src\DataTables\PartsDataTable.php:164 part.table.amount @@ -3359,7 +4301,8 @@ 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:172 + Part-DB1\src\DataTables\PartsDataTable.php:172 part.table.minamount @@ -3368,16 +4311,38 @@ 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:180 + Part-DB1\src\DataTables\PartsDataTable.php:180 part.table.partUnit Maßeinheit + + + Part-DB1\src\DataTables\PartsDataTable.php:184 + Part-DB1\src\DataTables\PartsDataTable.php:184 + + + part.table.addedDate + Hinzugefügt + + + + + Part-DB1\src\DataTables\PartsDataTable.php:188 + Part-DB1\src\DataTables\PartsDataTable.php:188 + + + part.table.lastModified + Zuletzt bearbeitet + + - Part-DB1\src\DataTables\PartsDataTable.php:256 + Part-DB1\src\DataTables\PartsDataTable.php:192 + Part-DB1\src\DataTables\PartsDataTable.php:192 part.table.needsReview @@ -3386,7 +4351,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\DataTables\PartsDataTable.php:263 + Part-DB1\src\DataTables\PartsDataTable.php:199 + Part-DB1\src\DataTables\PartsDataTable.php:199 part.table.favorite @@ -3395,7 +4361,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\DataTables\PartsDataTable.php:270 + Part-DB1\src\DataTables\PartsDataTable.php:206 + Part-DB1\src\DataTables\PartsDataTable.php:206 part.table.manufacturingStatus @@ -3404,9 +4371,12 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\DataTables\PartsDataTable.php:272 - Part-DB1\src\DataTables\PartsDataTable.php:274 - Part-DB1\src\Form\Part\PartBaseType.php:68 + Part-DB1\src\DataTables\PartsDataTable.php:208 + Part-DB1\src\DataTables\PartsDataTable.php:210 + Part-DB1\src\Form\Part\PartBaseType.php:88 + Part-DB1\src\DataTables\PartsDataTable.php:208 + Part-DB1\src\DataTables\PartsDataTable.php:210 + Part-DB1\src\Form\Part\PartBaseType.php:88 m_status.unknown @@ -3415,8 +4385,10 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\DataTables\PartsDataTable.php:275 - Part-DB1\src\Form\Part\PartBaseType.php:68 + Part-DB1\src\DataTables\PartsDataTable.php:211 + Part-DB1\src\Form\Part\PartBaseType.php:88 + Part-DB1\src\DataTables\PartsDataTable.php:211 + Part-DB1\src\Form\Part\PartBaseType.php:88 m_status.announced @@ -3425,8 +4397,10 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\DataTables\PartsDataTable.php:276 - Part-DB1\src\Form\Part\PartBaseType.php:68 + Part-DB1\src\DataTables\PartsDataTable.php:212 + Part-DB1\src\Form\Part\PartBaseType.php:88 + Part-DB1\src\DataTables\PartsDataTable.php:212 + Part-DB1\src\Form\Part\PartBaseType.php:88 m_status.active @@ -3435,8 +4409,10 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\DataTables\PartsDataTable.php:277 - Part-DB1\src\Form\Part\PartBaseType.php:68 + Part-DB1\src\DataTables\PartsDataTable.php:213 + Part-DB1\src\Form\Part\PartBaseType.php:88 + Part-DB1\src\DataTables\PartsDataTable.php:213 + Part-DB1\src\Form\Part\PartBaseType.php:88 m_status.nrfnd @@ -3445,8 +4421,10 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\DataTables\PartsDataTable.php:278 - Part-DB1\src\Form\Part\PartBaseType.php:68 + Part-DB1\src\DataTables\PartsDataTable.php:214 + Part-DB1\src\Form\Part\PartBaseType.php:88 + Part-DB1\src\DataTables\PartsDataTable.php:214 + Part-DB1\src\Form\Part\PartBaseType.php:88 m_status.eol @@ -3455,8 +4433,10 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\DataTables\PartsDataTable.php:279 - Part-DB1\src\Form\Part\PartBaseType.php:68 + Part-DB1\src\DataTables\PartsDataTable.php:215 + Part-DB1\src\Form\Part\PartBaseType.php:88 + Part-DB1\src\DataTables\PartsDataTable.php:215 + Part-DB1\src\Form\Part\PartBaseType.php:88 m_status.discontinued @@ -3465,7 +4445,8 @@ 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:219 + Part-DB1\src\DataTables\PartsDataTable.php:219 part.table.mpn @@ -3474,7 +4455,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\DataTables\PartsDataTable.php:287 + Part-DB1\src\DataTables\PartsDataTable.php:223 + Part-DB1\src\DataTables\PartsDataTable.php:223 part.table.mass @@ -3483,7 +4465,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\DataTables\PartsDataTable.php:291 + Part-DB1\src\DataTables\PartsDataTable.php:227 + Part-DB1\src\DataTables\PartsDataTable.php:227 part.table.tags @@ -3492,7 +4475,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\DataTables\PartsDataTable.php:295 + Part-DB1\src\DataTables\PartsDataTable.php:231 + Part-DB1\src\DataTables\PartsDataTable.php:231 part.table.attachments @@ -3501,7 +4485,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\EventSubscriber\LoginSuccessListener.php:46 + Part-DB1\src\EventSubscriber\LoginSuccessListener.php:82 + Part-DB1\src\EventSubscriber\LoginSuccessListener.php:82 flash.login_successful @@ -3510,7 +4495,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\AdminPages\ImportType.php:57 + Part-DB1\src\Form\AdminPages\ImportType.php:77 + Part-DB1\src\Form\AdminPages\ImportType.php:77 src\Form\ImportType.php:68 @@ -3520,7 +4506,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\AdminPages\ImportType.php:57 + Part-DB1\src\Form\AdminPages\ImportType.php:77 + Part-DB1\src\Form\AdminPages\ImportType.php:77 src\Form\ImportType.php:68 @@ -3530,7 +4517,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\AdminPages\ImportType.php:57 + Part-DB1\src\Form\AdminPages\ImportType.php:77 + Part-DB1\src\Form\AdminPages\ImportType.php:77 src\Form\ImportType.php:68 @@ -3540,7 +4528,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\AdminPages\ImportType.php:57 + Part-DB1\src\Form\AdminPages\ImportType.php:77 + Part-DB1\src\Form\AdminPages\ImportType.php:77 src\Form\ImportType.php:68 @@ -3550,7 +4539,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\AdminPages\ImportType.php:84 + Part-DB1\src\Form\AdminPages\ImportType.php:124 + Part-DB1\src\Form\AdminPages\ImportType.php:124 import.abort_on_validation.help @@ -3559,7 +4549,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\AdminPages\ImportType.php:60 + Part-DB1\src\Form\AdminPages\ImportType.php:86 + Part-DB1\src\Form\AdminPages\ImportType.php:86 src\Form\ImportType.php:70 @@ -3569,7 +4560,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\AdminPages\ImportType.php:65 + Part-DB1\src\Form\AdminPages\ImportType.php:93 + Part-DB1\src\Form\AdminPages\ImportType.php:93 src\Form\ImportType.php:72 @@ -3579,7 +4571,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\AdminPages\ImportType.php:73 + Part-DB1\src\Form\AdminPages\ImportType.php:101 + Part-DB1\src\Form\AdminPages\ImportType.php:101 src\Form\ImportType.php:75 @@ -3589,7 +4582,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\AdminPages\ImportType.php:79 + Part-DB1\src\Form\AdminPages\ImportType.php:111 + Part-DB1\src\Form\AdminPages\ImportType.php:111 src\Form\ImportType.php:78 @@ -3599,7 +4593,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\AdminPages\ImportType.php:82 + Part-DB1\src\Form\AdminPages\ImportType.php:120 + Part-DB1\src\Form\AdminPages\ImportType.php:120 src\Form\ImportType.php:80 @@ -3609,7 +4604,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\AdminPages\ImportType.php:88 + Part-DB1\src\Form\AdminPages\ImportType.php:132 + Part-DB1\src\Form\AdminPages\ImportType.php:132 src\Form\ImportType.php:85 @@ -3619,7 +4615,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\AttachmentFormType.php:78 + Part-DB1\src\Form\AttachmentFormType.php:109 + Part-DB1\src\Form\AttachmentFormType.php:109 attachment.edit.secure_file.help @@ -3628,25 +4625,48 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\AttachmentFormType.php:89 + Part-DB1\src\Form\AttachmentFormType.php:123 + Part-DB1\src\Form\AttachmentFormType.php:123 attachment.edit.url.help Hier kann entweder eine URL zu einer externen Datei eingetragen werden, oder es wird durch Eingabe eines Stichwortes in den eingebauten Ressourcen gesucht (z.B. Footprints). + + + Part-DB1\src\Form\AttachmentFormType.php:79 + Part-DB1\src\Form\AttachmentFormType.php:79 + + + attachment.edit.name + Name + + - Part-DB1\src\Form\AttachmentFormType.php:62 + Part-DB1\src\Form\AttachmentFormType.php:82 + Part-DB1\src\Form\AttachmentFormType.php:82 attachment.edit.attachment_type Anhangstyp + + + Part-DB1\src\Form\AttachmentFormType.php:91 + Part-DB1\src\Form\AttachmentFormType.php:91 + + + attachment.edit.show_in_table + Zeige in Tabelle + + - Part-DB1\src\Form\AttachmentFormType.php:74 + Part-DB1\src\Form\AttachmentFormType.php:102 + Part-DB1\src\Form\AttachmentFormType.php:102 attachment.edit.secure_file @@ -3655,7 +4675,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\AttachmentFormType.php:81 + Part-DB1\src\Form\AttachmentFormType.php:115 + Part-DB1\src\Form\AttachmentFormType.php:115 attachment.edit.url @@ -3664,7 +4685,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\AttachmentFormType.php:95 + Part-DB1\src\Form\AttachmentFormType.php:129 + Part-DB1\src\Form\AttachmentFormType.php:129 attachment.edit.download_url @@ -3673,7 +4695,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\AttachmentFormType.php:102 + Part-DB1\src\Form\AttachmentFormType.php:142 + Part-DB1\src\Form\AttachmentFormType.php:142 attachment.edit.file @@ -3682,7 +4705,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\OrderdetailType.php:55 + Part-DB1\src\Form\Part\OrderdetailType.php:75 + Part-DB1\src\Form\Part\OrderdetailType.php:75 orderdetails.edit.supplierpartnr @@ -3691,7 +4715,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\OrderdetailType.php:62 + Part-DB1\src\Form\Part\OrderdetailType.php:84 + Part-DB1\src\Form\Part\OrderdetailType.php:84 orderdetails.edit.supplier @@ -3700,7 +4725,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\OrderdetailType.php:67 + Part-DB1\src\Form\Part\OrderdetailType.php:90 + Part-DB1\src\Form\Part\OrderdetailType.php:90 orderdetails.edit.url @@ -3709,7 +4735,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\OrderdetailType.php:73 + Part-DB1\src\Form\Part\OrderdetailType.php:96 + Part-DB1\src\Form\Part\OrderdetailType.php:96 orderdetails.edit.obsolete @@ -3718,7 +4745,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\OrderdetailType.php:57 + Part-DB1\src\Form\Part\OrderdetailType.php:78 + Part-DB1\src\Form\Part\OrderdetailType.php:78 orderdetails.edit.supplierpartnr.placeholder @@ -3727,7 +4755,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\PartBaseType.php:79 + Part-DB1\src\Form\Part\PartBaseType.php:99 + Part-DB1\src\Form\Part\PartBaseType.php:99 part.edit.name @@ -3736,7 +4765,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\PartBaseType.php:85 + Part-DB1\src\Form\Part\PartBaseType.php:107 + Part-DB1\src\Form\Part\PartBaseType.php:107 part.edit.description @@ -3745,7 +4775,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\PartBaseType.php:93 + Part-DB1\src\Form\Part\PartBaseType.php:118 + Part-DB1\src\Form\Part\PartBaseType.php:118 part.edit.mininstock @@ -3754,7 +4785,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\PartBaseType.php:99 + Part-DB1\src\Form\Part\PartBaseType.php:127 + Part-DB1\src\Form\Part\PartBaseType.php:127 part.edit.category @@ -3763,7 +4795,8 @@ 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:133 + Part-DB1\src\Form\Part\PartBaseType.php:133 part.edit.footprint @@ -3772,7 +4805,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\PartBaseType.php:112 + Part-DB1\src\Form\Part\PartBaseType.php:140 + Part-DB1\src\Form\Part\PartBaseType.php:140 part.edit.tags @@ -3781,7 +4815,8 @@ 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:152 + Part-DB1\src\Form\Part\PartBaseType.php:152 part.edit.manufacturer.label @@ -3790,7 +4825,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\PartBaseType.php:130 + Part-DB1\src\Form\Part\PartBaseType.php:159 + Part-DB1\src\Form\Part\PartBaseType.php:159 part.edit.manufacturer_url.label @@ -3799,7 +4835,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\PartBaseType.php:136 + Part-DB1\src\Form\Part\PartBaseType.php:165 + Part-DB1\src\Form\Part\PartBaseType.php:165 part.edit.mpn @@ -3808,7 +4845,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\PartBaseType.php:141 + Part-DB1\src\Form\Part\PartBaseType.php:171 + Part-DB1\src\Form\Part\PartBaseType.php:171 part.edit.manufacturing_status @@ -3817,7 +4855,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\PartBaseType.php:149 + Part-DB1\src\Form\Part\PartBaseType.php:179 + Part-DB1\src\Form\Part\PartBaseType.php:179 part.edit.needs_review @@ -3826,7 +4865,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\PartBaseType.php:155 + Part-DB1\src\Form\Part\PartBaseType.php:187 + Part-DB1\src\Form\Part\PartBaseType.php:187 part.edit.is_favorite @@ -3835,7 +4875,8 @@ 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:195 + Part-DB1\src\Form\Part\PartBaseType.php:195 part.edit.mass @@ -3844,7 +4885,8 @@ 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:201 + Part-DB1\src\Form\Part\PartBaseType.php:201 part.edit.partUnit @@ -3853,7 +4895,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\PartBaseType.php:176 + Part-DB1\src\Form\Part\PartBaseType.php:210 + Part-DB1\src\Form\Part\PartBaseType.php:210 part.edit.comment @@ -3862,7 +4905,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\PartBaseType.php:209 + Part-DB1\src\Form\Part\PartBaseType.php:246 + Part-DB1\src\Form\Part\PartBaseType.php:246 part.edit.master_attachment @@ -3871,7 +4915,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\PartBaseType.php:232 + Part-DB1\src\Form\Part\PartBaseType.php:276 + Part-DB1\src\Form\Part\PartBaseType.php:276 src\Form\PartType.php:91 @@ -3881,7 +4926,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\PartBaseType.php:233 + Part-DB1\src\Form\Part\PartBaseType.php:277 + Part-DB1\src\Form\Part\PartBaseType.php:277 src\Form\PartType.php:92 @@ -3891,7 +4937,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\PartBaseType.php:82 + Part-DB1\src\Form\Part\PartBaseType.php:103 + Part-DB1\src\Form\Part\PartBaseType.php:103 part.edit.name.placeholder @@ -3900,7 +4947,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\PartBaseType.php:90 + Part-DB1\src\Form\Part\PartBaseType.php:113 + Part-DB1\src\Form\Part\PartBaseType.php:113 part.edit.description.placeholder @@ -3909,7 +4957,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\PartBaseType.php:94 + Part-DB1\src\Form\Part\PartBaseType.php:121 + Part-DB1\src\Form\Part\PartBaseType.php:121 part.editmininstock.placeholder @@ -3918,7 +4967,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\PartLotType.php:49 + Part-DB1\src\Form\Part\PartLotType.php:69 + Part-DB1\src\Form\Part\PartLotType.php:69 part_lot.edit.description @@ -3927,7 +4977,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\PartLotType.php:56 + Part-DB1\src\Form\Part\PartLotType.php:78 + Part-DB1\src\Form\Part\PartLotType.php:78 part_lot.edit.location @@ -3936,7 +4987,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\PartLotType.php:63 + Part-DB1\src\Form\Part\PartLotType.php:89 + Part-DB1\src\Form\Part\PartLotType.php:89 part_lot.edit.amount @@ -3945,7 +4997,8 @@ 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:97 + Part-DB1\src\Form\Part\PartLotType.php:97 part_lot.edit.instock_unknown @@ -3954,7 +5007,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\PartLotType.php:75 + Part-DB1\src\Form\Part\PartLotType.php:108 + Part-DB1\src\Form\Part\PartLotType.php:108 part_lot.edit.needs_refill @@ -3963,7 +5017,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\PartLotType.php:81 + Part-DB1\src\Form\Part\PartLotType.php:119 + Part-DB1\src\Form\Part\PartLotType.php:119 part_lot.edit.expiration_date @@ -3972,7 +5027,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Part\PartLotType.php:86 + Part-DB1\src\Form\Part\PartLotType.php:125 + Part-DB1\src\Form\Part\PartLotType.php:125 part_lot.edit.comment @@ -3981,7 +5037,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Permissions\PermissionsType.php:78 + Part-DB1\src\Form\Permissions\PermissionsType.php:99 + Part-DB1\src\Form\Permissions\PermissionsType.php:99 perm.group.other @@ -3990,7 +5047,8 @@ 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:97 + Part-DB1\src\Form\TFAGoogleSettingsType.php:97 tfa_google.enable @@ -3999,7 +5057,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\TFAGoogleSettingsType.php:78 + Part-DB1\src\Form\TFAGoogleSettingsType.php:101 + Part-DB1\src\Form\TFAGoogleSettingsType.php:101 tfa_google.disable @@ -4008,7 +5067,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\TFAGoogleSettingsType.php:56 + Part-DB1\src\Form\TFAGoogleSettingsType.php:74 + Part-DB1\src\Form\TFAGoogleSettingsType.php:74 google_confirmation @@ -4017,7 +5077,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Type\SIUnitType.php:117 + Part-DB1\src\Form\Type\SIUnitType.php:141 + Part-DB1\src\Form\Type\SIUnitType.php:141 M @@ -4026,7 +5087,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Type\SIUnitType.php:117 + Part-DB1\src\Form\Type\SIUnitType.php:141 + Part-DB1\src\Form\Type\SIUnitType.php:141 k @@ -4035,13 +5097,14 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - + - Part-DB1\src\Form\Type\SIUnitType.php:117 + Part-DB1\src\Form\Type\SIUnitType.php:141 + Part-DB1\src\Form\Type\SIUnitType.php:141 m @@ -4050,7 +5113,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\Type\SIUnitType.php:117 + Part-DB1\src\Form\Type\SIUnitType.php:141 + Part-DB1\src\Form\Type\SIUnitType.php:141 µ @@ -4059,7 +5123,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\UserSettingsType.php:85 + Part-DB1\src\Form\UserSettingsType.php:108 + Part-DB1\src\Form\UserSettingsType.php:108 src\Form\UserSettingsType.php:46 @@ -4069,7 +5134,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\UserSettingsType.php:93 + Part-DB1\src\Form\UserSettingsType.php:119 + Part-DB1\src\Form\UserSettingsType.php:119 src\Form\UserSettingsType.php:49 @@ -4079,7 +5145,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\UserSettingsType.php:104 + Part-DB1\src\Form\UserSettingsType.php:132 + Part-DB1\src\Form\UserSettingsType.php:132 user.currency.label @@ -4088,7 +5155,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\UserSettingsType.php:111 + Part-DB1\src\Form\UserSettingsType.php:139 + Part-DB1\src\Form\UserSettingsType.php:139 src\Form\UserSettingsType.php:53 @@ -4098,7 +5166,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\UserSettingsType.php:112 + Part-DB1\src\Form\UserSettingsType.php:140 + Part-DB1\src\Form\UserSettingsType.php:140 src\Form\UserSettingsType.php:54 @@ -4108,7 +5177,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\UserSettingsType.php:81 + Part-DB1\src\Form\UserSettingsType.php:104 + Part-DB1\src\Form\UserSettingsType.php:104 src\Form\UserSettingsType.php:45 @@ -4118,7 +5188,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\UserSettingsType.php:89 + Part-DB1\src\Form\UserSettingsType.php:115 + Part-DB1\src\Form\UserSettingsType.php:115 src\Form\UserSettingsType.php:48 @@ -4128,7 +5199,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Form\UserSettingsType.php:101 + Part-DB1\src\Form\UserSettingsType.php:129 + Part-DB1\src\Form\UserSettingsType.php:129 src\Form\UserSettingsType.php:50 @@ -4138,7 +5210,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ElementTypeNameGenerator.php:56 + Part-DB1\src\Services\ElementTypeNameGenerator.php:79 + Part-DB1\src\Services\ElementTypeNameGenerator.php:79 attachment.label @@ -4147,7 +5220,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ElementTypeNameGenerator.php:58 + Part-DB1\src\Services\ElementTypeNameGenerator.php:81 + Part-DB1\src\Services\ElementTypeNameGenerator.php:81 attachment_type.label @@ -4156,7 +5230,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ElementTypeNameGenerator.php:59 + Part-DB1\src\Services\ElementTypeNameGenerator.php:82 + Part-DB1\src\Services\ElementTypeNameGenerator.php:82 device.label @@ -4165,7 +5240,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ElementTypeNameGenerator.php:62 + Part-DB1\src\Services\ElementTypeNameGenerator.php:85 + Part-DB1\src\Services\ElementTypeNameGenerator.php:85 measurement_unit.label @@ -4174,7 +5250,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ElementTypeNameGenerator.php:63 + Part-DB1\src\Services\ElementTypeNameGenerator.php:86 + Part-DB1\src\Services\ElementTypeNameGenerator.php:86 part.label @@ -4183,7 +5260,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ElementTypeNameGenerator.php:64 + Part-DB1\src\Services\ElementTypeNameGenerator.php:87 + Part-DB1\src\Services\ElementTypeNameGenerator.php:87 part_lot.label @@ -4192,7 +5270,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ElementTypeNameGenerator.php:67 + Part-DB1\src\Services\ElementTypeNameGenerator.php:90 + Part-DB1\src\Services\ElementTypeNameGenerator.php:90 currency.label @@ -4201,7 +5280,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ElementTypeNameGenerator.php:68 + Part-DB1\src\Services\ElementTypeNameGenerator.php:91 + Part-DB1\src\Services\ElementTypeNameGenerator.php:91 orderdetail.label @@ -4210,7 +5290,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ElementTypeNameGenerator.php:69 + Part-DB1\src\Services\ElementTypeNameGenerator.php:92 + Part-DB1\src\Services\ElementTypeNameGenerator.php:92 pricedetail.label @@ -4219,16 +5300,129 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ElementTypeNameGenerator.php:71 + Part-DB1\src\Services\ElementTypeNameGenerator.php:94 + Part-DB1\src\Services\ElementTypeNameGenerator.php:94 user.label Benutzer + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:100 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:100 + new + + + log.user_login.ip + + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:128 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:150 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:169 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:207 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:128 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:150 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:169 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:207 + new + + + log.undo_mode.undo + Änderung rückgängig gemacht + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:130 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:152 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:171 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:209 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:130 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:152 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:171 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:209 + new + + + log.undo_mode.revert + Element zurückgesetzt + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:139 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:139 + new + + + log.element_created.original_instock + Alter Bestand + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:160 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:160 + new + + + log.element_deleted.old_name + Alter Name + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:161 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:161 + new + + + log.element_deleted.old_name.unknown + Unbekannt + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:184 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:184 + new + + + log.element_edited.changed_fields + Geänderte Eigenschaften + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:198 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:198 + new + + + log.instock_changed.comment + Kommentar + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:214 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:214 + new + + + log.collection_deleted.deleted + gelöschtes Element + + - Part-DB1\src\Services\MarkdownParser.php:52 + Part-DB1\src\Services\MarkdownParser.php:73 + Part-DB1\src\Services\MarkdownParser.php:73 markdown.loading @@ -4237,7 +5431,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\PasswordResetManager.php:78 + Part-DB1\src\Services\PasswordResetManager.php:98 + Part-DB1\src\Services\PasswordResetManager.php:98 pw_reset.email.subject @@ -4246,7 +5441,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ToolsTreeBuilder.php:85 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:107 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:107 src\Services\ToolsTreeBuilder.php:74 new @@ -4257,7 +5453,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ToolsTreeBuilder.php:86 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 src\Services\ToolsTreeBuilder.php:81 new @@ -4268,7 +5465,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ToolsTreeBuilder.php:87 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 tree.tools.system @@ -4277,7 +5475,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ToolsTreeBuilder.php:104 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:126 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:126 src\Services\ToolsTreeBuilder.php:62 new @@ -4288,7 +5487,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ToolsTreeBuilder.php:110 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:132 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:132 src\Services\ToolsTreeBuilder.php:64 new @@ -4299,7 +5499,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ToolsTreeBuilder.php:116 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:138 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:138 src\Services\ToolsTreeBuilder.php:66 new @@ -4310,7 +5511,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ToolsTreeBuilder.php:122 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:144 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:144 src\Services\ToolsTreeBuilder.php:68 new @@ -4321,7 +5523,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ToolsTreeBuilder.php:128 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:150 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:150 src\Services\ToolsTreeBuilder.php:70 new @@ -4332,7 +5535,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ToolsTreeBuilder.php:134 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:156 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:156 tree.tools.edit.storelocation @@ -4341,7 +5545,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ToolsTreeBuilder.php:140 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:162 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:162 tree.tools.edit.footprint @@ -4350,7 +5555,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ToolsTreeBuilder.php:146 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:168 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:168 tree.tools.edit.currency @@ -4359,7 +5565,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ToolsTreeBuilder.php:152 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:174 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:174 tree.tools.edit.measurement_unit @@ -4368,7 +5575,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ToolsTreeBuilder.php:158 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:180 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:180 tree.tools.edit.part @@ -4377,7 +5585,8 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ToolsTreeBuilder.php:175 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 src\Services\ToolsTreeBuilder.php:77 new @@ -4388,16 +5597,29 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ToolsTreeBuilder.php:181 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 tree.tools.show.all_attachments Dateianhänge + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:210 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:210 + new + + + tree.tools.show.statistics + Statistik + + - Part-DB1\src\Services\ToolsTreeBuilder.php:200 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:229 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:229 tree.tools.system.users @@ -4406,16 +5628,29 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr - Part-DB1\src\Services\ToolsTreeBuilder.php:206 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:235 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:235 tree.tools.system.groups Gruppen + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:242 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:242 + new + + + tree.tools.system.event_log + Event log + + - Part-DB1\src\Services\TreeBuilder.php:133 + Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 + Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 src\Services\TreeBuilder.php:124 @@ -4423,8 +5658,102 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr Neues Element + + + templates\base.html.twig:81 + obsolete + obsolete + + + go.exclamation + Los! + + + + + templates\base.html.twig:109 + obsolete + obsolete + + + language.english + Englisch + + + + + templates\base.html.twig:112 + obsolete + obsolete + + + language.german + Deutsch + + + + + obsolete + obsolete + + + flash.password_change_needed + Ihr Password muss geändert werden! + + + + + obsolete + obsolete + + + attachment.table.type + Anhangstyp + + + + + obsolete + obsolete + + + attachment.table.element + verknüpftes Element + + + + + obsolete + obsolete + + + attachment.edit.isPicture + Bild? + + + + + obsolete + obsolete + + + attachment.edit.is3DModel + 3D Modell? + + + + + obsolete + obsolete + + + attachment.edit.isBuiltin + Eingebaute Ressource? + + + obsolete obsolete @@ -4434,6 +5763,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4443,6 +5773,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4452,6 +5783,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4461,6 +5793,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4470,6 +5803,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4479,6 +5813,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4488,6 +5823,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4497,6 +5833,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4506,6 +5843,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4515,6 +5853,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4524,6 +5863,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4533,6 +5873,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4542,6 +5883,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4551,6 +5893,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4560,6 +5903,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4569,6 +5913,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4578,6 +5923,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4587,6 +5933,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4596,6 +5943,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4605,6 +5953,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4614,6 +5963,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4623,6 +5973,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4632,6 +5983,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4641,6 +5993,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4651,6 +6004,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr src\Form\PartType.php:63 + obsolete obsolete @@ -4660,6 +6014,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4669,6 +6024,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4678,6 +6034,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4687,6 +6044,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4696,6 +6054,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4705,6 +6064,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4714,6 +6074,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4723,6 +6084,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4732,6 +6094,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4741,6 +6104,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4750,6 +6114,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4759,6 +6124,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4768,6 +6134,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4777,6 +6144,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4786,6 +6154,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4795,6 +6164,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4804,6 +6174,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4813,6 +6184,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4822,6 +6194,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4831,6 +6204,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4840,6 +6214,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4850,6 +6225,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4859,6 +6235,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4868,6 +6245,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4877,6 +6255,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4886,6 +6265,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4895,6 +6275,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4904,6 +6285,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4913,6 +6295,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4922,6 +6305,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4931,6 +6315,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4940,6 +6325,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4949,6 +6335,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4958,6 +6345,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4967,6 +6355,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4976,6 +6365,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr + obsolete obsolete @@ -4987,6 +6377,7 @@ Element 3 + obsolete obsolete @@ -4996,6 +6387,7 @@ Element 3 + obsolete obsolete @@ -5005,6 +6397,7 @@ Element 3 + obsolete obsolete @@ -5014,6 +6407,7 @@ Element 3 + obsolete obsolete @@ -5023,6 +6417,7 @@ Element 3 + obsolete obsolete @@ -5032,6 +6427,7 @@ Element 3 + obsolete obsolete @@ -5041,6 +6437,7 @@ Element 3 + obsolete obsolete @@ -5050,6 +6447,7 @@ Element 3 + obsolete obsolete @@ -5059,6 +6457,7 @@ Element 3 + obsolete obsolete @@ -5068,6 +6467,7 @@ Element 3 + obsolete obsolete @@ -5077,6 +6477,7 @@ Element 3 + obsolete obsolete @@ -5086,6 +6487,7 @@ Element 3 + obsolete obsolete @@ -5095,6 +6497,7 @@ Element 3 + obsolete obsolete @@ -5104,6 +6507,7 @@ Element 3 + obsolete obsolete @@ -5113,6 +6517,7 @@ Element 3 + obsolete obsolete @@ -5122,6 +6527,7 @@ Element 3 + obsolete obsolete @@ -5131,6 +6537,7 @@ Element 3 + obsolete obsolete @@ -5140,6 +6547,7 @@ Element 3 + obsolete obsolete @@ -5149,6 +6557,7 @@ Element 3 + obsolete obsolete @@ -5158,6 +6567,7 @@ Element 3 + obsolete obsolete @@ -5167,6 +6577,7 @@ Element 3 + obsolete obsolete @@ -5176,6 +6587,7 @@ Element 3 + obsolete obsolete @@ -5185,6 +6597,7 @@ Element 3 + obsolete obsolete @@ -5194,6 +6607,7 @@ Element 3 + obsolete obsolete @@ -5203,6 +6617,7 @@ Element 3 + obsolete obsolete @@ -5212,6 +6627,7 @@ Element 3 + obsolete obsolete @@ -5221,6 +6637,7 @@ Element 3 + obsolete obsolete @@ -5230,6 +6647,7 @@ Element 3 + obsolete obsolete @@ -5239,6 +6657,7 @@ Element 3 + obsolete obsolete @@ -5249,6 +6668,7 @@ Element 3 templates\Parts\show_part_info.html.twig:161 + obsolete obsolete @@ -5259,6 +6679,7 @@ Element 3 templates\Parts\show_part_info.html.twig:166 + obsolete obsolete @@ -5269,6 +6690,7 @@ Element 3 templates\Parts\show_part_info.html.twig:171 + obsolete obsolete @@ -5279,6 +6701,7 @@ Element 3 templates\Parts\show_part_info.html.twig:189 + obsolete obsolete @@ -5289,6 +6712,7 @@ Element 3 templates\Parts\show_part_info.html.twig:194 + obsolete obsolete @@ -5299,6 +6723,7 @@ Element 3 templates\Parts\show_part_info.html.twig:199 + obsolete obsolete @@ -5309,6 +6734,7 @@ Element 3 src\Form\PartType.php:66 + obsolete obsolete @@ -5319,6 +6745,7 @@ Element 3 src\Form\PartType.php:69 + obsolete obsolete @@ -5329,6 +6756,7 @@ Element 3 src\Form\PartType.php:72 + obsolete obsolete @@ -5339,6 +6767,7 @@ Element 3 src\Form\PartType.php:83 + obsolete obsolete @@ -5350,6 +6779,7 @@ Element 3 templates\AdminPages\CompanyAdminBase.html.twig:15 new + obsolete obsolete @@ -5359,6 +6789,7 @@ Element 3 + obsolete obsolete @@ -5368,6 +6799,7 @@ Element 3 + obsolete obsolete @@ -5377,6 +6809,7 @@ Element 3 + obsolete obsolete @@ -5386,6 +6819,7 @@ Element 3 + obsolete obsolete @@ -5395,6 +6829,7 @@ Element 3 + obsolete obsolete @@ -5404,6 +6839,7 @@ Element 3 + obsolete obsolete @@ -5413,6 +6849,7 @@ Element 3 + obsolete obsolete @@ -5422,6 +6859,7 @@ Element 3 + obsolete obsolete @@ -5431,6 +6869,7 @@ Element 3 + obsolete obsolete @@ -5440,6 +6879,7 @@ Element 3 + obsolete obsolete @@ -5449,6 +6889,7 @@ Element 3 + obsolete obsolete @@ -5458,6 +6899,7 @@ Element 3 + obsolete obsolete @@ -5467,6 +6909,7 @@ Element 3 + obsolete obsolete @@ -5476,6 +6919,7 @@ Element 3 + obsolete obsolete @@ -5485,6 +6929,7 @@ Element 3 + obsolete obsolete @@ -5494,6 +6939,7 @@ Element 3 + obsolete obsolete @@ -5503,6 +6949,7 @@ Element 3 + obsolete obsolete @@ -5512,6 +6959,7 @@ Element 3 + obsolete obsolete @@ -5521,6 +6969,7 @@ Element 3 + obsolete obsolete @@ -5530,6 +6979,7 @@ Element 3 + obsolete obsolete @@ -5539,6 +6989,7 @@ Element 3 + obsolete obsolete @@ -5548,6 +6999,7 @@ Element 3 + obsolete obsolete @@ -5557,6 +7009,7 @@ Element 3 + obsolete obsolete @@ -5566,6 +7019,7 @@ Element 3 + obsolete obsolete @@ -5575,6 +7029,7 @@ Element 3 + obsolete obsolete @@ -5584,6 +7039,7 @@ Element 3 + obsolete obsolete @@ -5593,6 +7049,7 @@ Element 3 + obsolete obsolete @@ -5602,6 +7059,7 @@ Element 3 + obsolete obsolete @@ -5611,6 +7069,7 @@ Element 3 + obsolete obsolete @@ -5620,6 +7079,7 @@ Element 3 + obsolete obsolete @@ -5629,6 +7089,7 @@ Element 3 + obsolete obsolete @@ -5638,6 +7099,7 @@ Element 3 + obsolete obsolete @@ -5647,6 +7109,7 @@ Element 3 + obsolete obsolete @@ -5656,6 +7119,7 @@ Element 3 + obsolete obsolete @@ -5665,6 +7129,7 @@ Element 3 + obsolete obsolete @@ -5674,6 +7139,7 @@ Element 3 + obsolete obsolete @@ -5683,6 +7149,7 @@ Element 3 + obsolete obsolete @@ -5692,6 +7159,7 @@ Element 3 + obsolete obsolete @@ -5701,6 +7169,7 @@ Element 3 + obsolete obsolete @@ -5710,6 +7179,7 @@ Element 3 + obsolete obsolete @@ -5719,6 +7189,7 @@ Element 3 + obsolete obsolete @@ -5728,6 +7199,7 @@ Element 3 + obsolete obsolete @@ -5737,6 +7209,7 @@ Element 3 + obsolete obsolete @@ -5746,6 +7219,7 @@ Element 3 + obsolete obsolete @@ -5755,6 +7229,7 @@ Element 3 + obsolete obsolete @@ -5764,6 +7239,7 @@ Element 3 + obsolete obsolete @@ -5773,6 +7249,7 @@ Element 3 + obsolete obsolete @@ -5782,6 +7259,7 @@ Element 3 + obsolete obsolete @@ -5791,6 +7269,7 @@ Element 3 + obsolete obsolete @@ -5800,6 +7279,7 @@ Element 3 + obsolete obsolete @@ -5809,6 +7289,7 @@ Element 3 + obsolete obsolete @@ -5818,6 +7299,7 @@ Element 3 + obsolete obsolete @@ -5827,6 +7309,7 @@ Element 3 + obsolete obsolete @@ -5836,6 +7319,7 @@ Element 3 + obsolete obsolete @@ -5845,6 +7329,7 @@ Element 3 + obsolete obsolete @@ -5854,6 +7339,7 @@ Element 3 + obsolete obsolete @@ -5863,6 +7349,7 @@ Element 3 + obsolete obsolete @@ -5872,6 +7359,7 @@ Element 3 + obsolete obsolete @@ -5881,6 +7369,7 @@ Element 3 + obsolete obsolete @@ -5890,6 +7379,7 @@ Element 3 + obsolete obsolete @@ -5899,6 +7389,7 @@ Element 3 + obsolete obsolete @@ -5908,6 +7399,7 @@ Element 3 + obsolete obsolete @@ -5917,6 +7409,7 @@ Element 3 + obsolete obsolete @@ -5926,6 +7419,7 @@ Element 3 + obsolete obsolete @@ -5935,6 +7429,7 @@ Element 3 + obsolete obsolete @@ -5944,6 +7439,7 @@ Element 3 + obsolete obsolete @@ -5953,6 +7449,7 @@ Element 3 + obsolete obsolete @@ -5962,6 +7459,7 @@ Element 3 + obsolete obsolete @@ -5971,6 +7469,7 @@ Element 3 + obsolete obsolete @@ -5980,6 +7479,7 @@ Element 3 + obsolete obsolete @@ -5989,6 +7489,7 @@ Element 3 + obsolete obsolete @@ -5998,6 +7499,7 @@ Element 3 + obsolete obsolete @@ -6007,6 +7509,7 @@ Element 3 + obsolete obsolete @@ -6016,6 +7519,7 @@ Element 3 + obsolete obsolete @@ -6025,6 +7529,7 @@ Element 3 + obsolete obsolete @@ -6034,6 +7539,7 @@ Element 3 + obsolete obsolete @@ -6043,6 +7549,7 @@ Element 3 + obsolete obsolete @@ -6052,6 +7559,7 @@ Element 3 + obsolete obsolete @@ -6061,6 +7569,7 @@ Element 3 + obsolete obsolete @@ -6070,6 +7579,7 @@ Element 3 + obsolete obsolete @@ -6079,6 +7589,7 @@ Element 3 + obsolete obsolete @@ -6088,6 +7599,7 @@ Element 3 + obsolete obsolete @@ -6097,6 +7609,7 @@ Element 3 + obsolete obsolete @@ -6106,6 +7619,7 @@ Element 3 + obsolete obsolete @@ -6115,6 +7629,7 @@ Element 3 + obsolete obsolete @@ -6124,6 +7639,7 @@ Element 3 + obsolete obsolete @@ -6133,6 +7649,7 @@ Element 3 + obsolete obsolete @@ -6142,6 +7659,7 @@ Element 3 + obsolete obsolete @@ -6151,6 +7669,7 @@ Element 3 + obsolete obsolete @@ -6160,6 +7679,7 @@ Element 3 + obsolete obsolete @@ -6169,6 +7689,7 @@ Element 3 + obsolete obsolete @@ -6178,6 +7699,7 @@ Element 3 + obsolete obsolete @@ -6187,6 +7709,7 @@ Element 3 + obsolete obsolete @@ -6196,6 +7719,7 @@ Element 3 + obsolete obsolete @@ -6205,6 +7729,7 @@ Element 3 + obsolete obsolete @@ -6214,6 +7739,7 @@ Element 3 + obsolete obsolete @@ -6223,6 +7749,7 @@ Element 3 + obsolete obsolete @@ -6232,6 +7759,7 @@ Element 3 + obsolete obsolete @@ -6241,6 +7769,7 @@ Element 3 + obsolete obsolete @@ -6250,6 +7779,7 @@ Element 3 + obsolete obsolete @@ -6259,6 +7789,7 @@ Element 3 + obsolete obsolete @@ -6268,6 +7799,7 @@ Element 3 + obsolete obsolete @@ -6275,125 +7807,130 @@ Element 3 Sicherheitsschlüssel - - - search.submit - Los! - - - - - attachment.table.filename - Dateiname - - - - - attachment.table.filesize - Dateigröße - - - - - log.id - ID - - - - - log.timestamp - Zeitstempel - - - - - log.type - Ereignis - - - - - log.level - Level - - - - - log.user - Benutzer - - - - - log.target_type - Zieltyp - - - - - log.list.title - Systemlog - - - - - log.target - Ziel - - + + obsolete + obsolete + log.type.element_edited Element bearbeitet + + obsolete + obsolete + log.type.user_login Nutzer eingeloggt + + obsolete + obsolete + log.type.unknown Unbekannt + + obsolete + obsolete + log.type.database_updated Datenbank aktualisiert + + obsolete + obsolete + log.type.exception Unbehandelte Exception (veraltet) - - - log.target_deleted - gelöscht - - + + obsolete + obsolete + log.type.user_logout Nutzer ausgeloggt + + obsolete + obsolete + log.type.element_created Element angelegt + + obsolete + obsolete + log.type.element_deleted Element gelöscht + + + obsolete + + + perm.revert_elements + Element zurücksetzen + + + + + obsolete + + + perm.show_history + Historie anzeigen + + + + + obsolete + + + perm.tools.lastActivity + Letzte Aktivität anzeigen + + + + + obsolete + + + perm.tools.timeTravel + Alte Versionsstände anzeigen (Zeitreisen) + + + + + obsolete + + + log.type. + __log.type. + + diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index c97750ac..cdb5b936 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -4,6 +4,7 @@ Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 + Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 templates\AdminPages\AttachmentTypeAdmin.html.twig:4 @@ -16,6 +17,9 @@ Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 Part-DB1\templates\_sidebar.html.twig:22 Part-DB1\templates\_sidebar.html.twig:7 + Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:4 + Part-DB1\templates\_sidebar.html.twig:22 + Part-DB1\templates\_sidebar.html.twig:7 templates\AdminPages\CategoryAdmin.html.twig:4 templates\base.html.twig:163 templates\base.html.twig:170 @@ -31,6 +35,8 @@ Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:11 + Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:8 + Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:11 templates\AdminPages\CategoryAdmin.html.twig:8 @@ -42,6 +48,8 @@ Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 + Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:9 + Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 templates\AdminPages\CategoryAdmin.html.twig:9 @@ -52,6 +60,7 @@ Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 + Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 currency.caption @@ -61,6 +70,7 @@ Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 + Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 currency.iso_code.caption @@ -70,6 +80,7 @@ Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 + Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 currency.symbol.caption @@ -79,6 +90,7 @@ Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 + Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 templates\AdminPages\DeviceAdmin.html.twig:4 @@ -88,11 +100,16 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:9 - Part-DB1\templates\_navbar.html.twig:81 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 Part-DB1\templates\_sidebar.html.twig:27 Part-DB1\templates\_sidebar.html.twig:43 Part-DB1\templates\_sidebar.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:19 + Part-DB1\templates\_navbar_search.html.twig:61 + Part-DB1\templates\_sidebar.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:43 + Part-DB1\templates\_sidebar.html.twig:63 templates\AdminPages\EntityAdminBase.html.twig:9 templates\base.html.twig:80 templates\base.html.twig:179 @@ -106,8 +123,10 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:13 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 Part-DB1\templates\_sidebar.html.twig:3 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:23 + Part-DB1\templates\_sidebar.html.twig:3 templates\AdminPages\EntityAdminBase.html.twig:13 templates\base.html.twig:166 templates\base.html.twig:193 @@ -120,8 +139,10 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:17 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 Part-DB1\templates\_sidebar.html.twig:4 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:27 + Part-DB1\templates\_sidebar.html.twig:4 templates\AdminPages\EntityAdminBase.html.twig:17 templates\base.html.twig:167 templates\base.html.twig:194 @@ -134,7 +155,8 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:35 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 templates\AdminPages\EntityAdminBase.html.twig:35 @@ -144,7 +166,8 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:37 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 templates\AdminPages\EntityAdminBase.html.twig:37 @@ -152,9 +175,22 @@ New element + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 + Part-DB1\templates\Parts\info\_sidebar.html.twig:4 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 + Part-DB1\templates\Parts\info\_sidebar.html.twig:4 + + + part.info.timetravel_hint + Please note that this feature is experimental, so the infos are maybe not correct.
]]> + + - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:44 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 templates\AdminPages\EntityAdminBase.html.twig:42 @@ -164,7 +200,8 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 templates\AdminPages\EntityAdminBase.html.twig:43 @@ -172,9 +209,21 @@ Infos + + + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 + new + + + history.label + History + + - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:47 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 templates\AdminPages\EntityAdminBase.html.twig:45 @@ -184,7 +233,8 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:49 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 templates\AdminPages\EntityAdminBase.html.twig:47 @@ -194,7 +244,8 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 mass_creation.label @@ -203,7 +254,8 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 templates\AdminPages\EntityAdminBase.html.twig:59 @@ -213,7 +265,8 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:67 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 admin.attachments @@ -222,7 +275,8 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:130 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:167 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:167 templates\AdminPages\EntityAdminBase.html.twig:142 @@ -232,7 +286,8 @@ - Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:136 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:173 + Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:173 mass_creation.help @@ -243,6 +298,8 @@ Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 Part-DB1\templates\_sidebar.html.twig:9 + Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:4 + Part-DB1\templates\_sidebar.html.twig:9 templates\base.html.twig:172 templates\base.html.twig:199 templates\base.html.twig:227 @@ -255,6 +312,7 @@ Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 + Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 group.edit.caption @@ -265,6 +323,8 @@ Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 + Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 user.edit.permissions @@ -274,6 +334,7 @@ Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 + Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 templates\AdminPages\ManufacturerAdmin.html.twig:4 @@ -284,6 +345,7 @@ Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 + Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 measurement_unit.caption @@ -294,6 +356,8 @@ Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:4 Part-DB1\templates\_sidebar.html.twig:8 + Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:4 + Part-DB1\templates\_sidebar.html.twig:8 templates\base.html.twig:171 templates\base.html.twig:198 templates\base.html.twig:226 @@ -306,6 +370,7 @@ Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 + Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 templates\AdminPages\SupplierAdmin.html.twig:4 @@ -316,6 +381,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 user.edit.caption @@ -325,6 +391,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 user.edit.configuration @@ -334,6 +401,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 user.edit.password @@ -343,6 +411,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 user.edit.tfa.caption @@ -352,6 +421,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 user.edit.tfa.google_active @@ -363,6 +433,9 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 Part-DB1\templates\Users\backup_codes.html.twig:15 Part-DB1\templates\Users\_2fa_settings.html.twig:95 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:48 + Part-DB1\templates\Users\backup_codes.html.twig:15 + Part-DB1\templates\Users\_2fa_settings.html.twig:95 tfa_backup.remaining_tokens @@ -374,6 +447,9 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 Part-DB1\templates\Users\backup_codes.html.twig:17 Part-DB1\templates\Users\_2fa_settings.html.twig:96 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:49 + Part-DB1\templates\Users\backup_codes.html.twig:17 + Part-DB1\templates\Users\_2fa_settings.html.twig:96 tfa_backup.generation_date @@ -384,6 +460,8 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 user.edit.tfa.disabled @@ -393,6 +471,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 user.edit.tfa.u2f_keys_count @@ -402,6 +481,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 user.edit.tfa.disable_tfa_title @@ -411,6 +491,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 user.edit.tfa.disable_tfa_message @@ -423,6 +504,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 + Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 user.edit.tfa.disable_tfa.btn @@ -434,6 +516,9 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\_attachments.html.twig:4 Part-DB1\templates\Parts\edit\_attachments.html.twig:4 Part-DB1\templates\Parts\info\_attachments_info.html.twig:63 + Part-DB1\templates\AdminPages\_attachments.html.twig:4 + Part-DB1\templates\Parts\edit\_attachments.html.twig:4 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:63 attachment.delete @@ -444,7 +529,10 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\_attachments.html.twig:41 Part-DB1\templates\Parts\edit\_attachments.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:146 + Part-DB1\src\DataTables\AttachmentDataTable.php:159 + Part-DB1\templates\AdminPages\_attachments.html.twig:41 + Part-DB1\templates\Parts\edit\_attachments.html.twig:38 + Part-DB1\src\DataTables\AttachmentDataTable.php:159 attachment.external @@ -455,6 +543,8 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\_attachments.html.twig:47 Part-DB1\templates\Parts\edit\_attachments.html.twig:45 + Part-DB1\templates\AdminPages\_attachments.html.twig:47 + Part-DB1\templates\Parts\edit\_attachments.html.twig:45 attachment.preview.alt @@ -466,6 +556,9 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\_attachments.html.twig:50 Part-DB1\templates\Parts\edit\_attachments.html.twig:48 Part-DB1\templates\Parts\info\_attachments_info.html.twig:45 + Part-DB1\templates\AdminPages\_attachments.html.twig:50 + Part-DB1\templates\Parts\edit\_attachments.html.twig:48 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:45 attachment.view @@ -477,7 +570,11 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\_attachments.html.twig:56 Part-DB1\templates\Parts\edit\_attachments.html.twig:54 Part-DB1\templates\Parts\info\_attachments_info.html.twig:38 - Part-DB1\src\DataTables\AttachmentDataTable.php:153 + Part-DB1\src\DataTables\AttachmentDataTable.php:166 + Part-DB1\templates\AdminPages\_attachments.html.twig:56 + Part-DB1\templates\Parts\edit\_attachments.html.twig:54 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:38 + Part-DB1\src\DataTables\AttachmentDataTable.php:166 attachment.file_not_found @@ -488,6 +585,8 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\_attachments.html.twig:64 Part-DB1\templates\Parts\edit\_attachments.html.twig:62 + Part-DB1\templates\AdminPages\_attachments.html.twig:64 + Part-DB1\templates\Parts\edit\_attachments.html.twig:62 attachment.secure @@ -498,6 +597,8 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\_attachments.html.twig:77 Part-DB1\templates\Parts\edit\_attachments.html.twig:75 + Part-DB1\templates\AdminPages\_attachments.html.twig:77 + Part-DB1\templates\Parts\edit\_attachments.html.twig:75 attachment.create @@ -509,6 +610,9 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\_attachments.html.twig:82 Part-DB1\templates\Parts\edit\_attachments.html.twig:80 Part-DB1\templates\Parts\edit\_lots.html.twig:33 + Part-DB1\templates\AdminPages\_attachments.html.twig:82 + Part-DB1\templates\Parts\edit\_attachments.html.twig:80 + Part-DB1\templates\Parts\edit\_lots.html.twig:33 part_lot.edit.delete.confirm @@ -518,6 +622,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\_delete_form.html.twig:2 + Part-DB1\templates\AdminPages\_delete_form.html.twig:2 templates\AdminPages\_delete_form.html.twig:2 @@ -528,6 +633,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\_delete_form.html.twig:3 + Part-DB1\templates\AdminPages\_delete_form.html.twig:3 templates\AdminPages\_delete_form.html.twig:3 @@ -539,7 +645,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\AdminPages\_delete_form.html.twig:10 + Part-DB1\templates\AdminPages\_delete_form.html.twig:11 + Part-DB1\templates\AdminPages\_delete_form.html.twig:11 templates\AdminPages\_delete_form.html.twig:9 @@ -547,9 +654,25 @@ Subelements will be moved upwards.]]> Delete element + + + Part-DB1\templates\AdminPages\_delete_form.html.twig:16 + Part-DB1\templates\Parts\info\_tools.html.twig:43 + Part-DB1\src\Form\Part\PartBaseType.php:267 + Part-DB1\templates\AdminPages\_delete_form.html.twig:16 + Part-DB1\templates\Parts\info\_tools.html.twig:43 + Part-DB1\src\Form\Part\PartBaseType.php:267 + new + + + edit.log_comment + Change comment + + - Part-DB1\templates\AdminPages\_delete_form.html.twig:14 + Part-DB1\templates\AdminPages\_delete_form.html.twig:24 + Part-DB1\templates\AdminPages\_delete_form.html.twig:24 templates\AdminPages\_delete_form.html.twig:12 @@ -560,7 +683,9 @@ Subelements will be moved upwards.]]> Part-DB1\templates\AdminPages\_export_form.html.twig:4 - Part-DB1\src\Form\AdminPages\ImportType.php:56 + Part-DB1\src\Form\AdminPages\ImportType.php:76 + Part-DB1\templates\AdminPages\_export_form.html.twig:4 + Part-DB1\src\Form\AdminPages\ImportType.php:76 templates\AdminPages\_export_form.html.twig:4 src\Form\ImportType.php:67 @@ -572,6 +697,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\AdminPages\_export_form.html.twig:16 + Part-DB1\templates\AdminPages\_export_form.html.twig:16 templates\AdminPages\_export_form.html.twig:16 @@ -582,6 +708,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\AdminPages\_export_form.html.twig:19 + Part-DB1\templates\AdminPages\_export_form.html.twig:19 templates\AdminPages\_export_form.html.twig:19 @@ -592,6 +719,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\AdminPages\_export_form.html.twig:20 + Part-DB1\templates\AdminPages\_export_form.html.twig:20 templates\AdminPages\_export_form.html.twig:20 @@ -602,6 +730,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\AdminPages\_export_form.html.twig:21 + Part-DB1\templates\AdminPages\_export_form.html.twig:21 templates\AdminPages\_export_form.html.twig:21 @@ -612,6 +741,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\AdminPages\_export_form.html.twig:31 + Part-DB1\templates\AdminPages\_export_form.html.twig:31 templates\AdminPages\_export_form.html.twig:31 @@ -622,6 +752,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\AdminPages\_export_form.html.twig:39 + Part-DB1\templates\AdminPages\_export_form.html.twig:39 templates\AdminPages\_export_form.html.twig:39 @@ -631,10 +762,14 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\AdminPages\_info.html.twig:2 + Part-DB1\templates\AdminPages\_info.html.twig:4 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 - Part-DB1\templates\Parts\info\show_part_info.html.twig:11 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:16 + Part-DB1\templates\Parts\info\show_part_info.html.twig:24 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 + Part-DB1\templates\AdminPages\_info.html.twig:4 + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:12 + Part-DB1\templates\Parts\info\show_part_info.html.twig:24 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:36 templates\AdminPages\EntityAdminBase.html.twig:94 templates\Parts\edit_part_info.html.twig:12 templates\Parts\show_part_info.html.twig:11 @@ -646,13 +781,20 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\AdminPages\_info.html.twig:9 + Part-DB1\templates\AdminPages\_info.html.twig:11 Part-DB1\templates\Parts\info\_attachments_info.html.twig:59 Part-DB1\templates\Parts\info\_attachments_info.html.twig:60 Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 Part-DB1\templates\Parts\info\_order_infos.html.twig:69 - Part-DB1\templates\Parts\info\_sidebar.html.twig:8 + Part-DB1\templates\Parts\info\_sidebar.html.twig:12 Part-DB1\templates\Parts\lists\_info_card.html.twig:53 + Part-DB1\templates\AdminPages\_info.html.twig:11 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:59 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:60 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:6 + Part-DB1\templates\Parts\info\_order_infos.html.twig:69 + Part-DB1\templates\Parts\info\_sidebar.html.twig:12 + Part-DB1\templates\Parts\lists\_info_card.html.twig:53 templates\AdminPages\EntityAdminBase.html.twig:101 templates\Parts\show_part_info.html.twig:248 @@ -663,10 +805,14 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\AdminPages\_info.html.twig:23 - Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 - Part-DB1\templates\Parts\info\_sidebar.html.twig:4 + Part-DB1\templates\AdminPages\_info.html.twig:25 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 + Part-DB1\templates\Parts\info\_sidebar.html.twig:8 Part-DB1\templates\Parts\lists\_info_card.html.twig:49 + Part-DB1\templates\AdminPages\_info.html.twig:25 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 + Part-DB1\templates\Parts\info\_sidebar.html.twig:8 + Part-DB1\templates\Parts\lists\_info_card.html.twig:49 templates\AdminPages\EntityAdminBase.html.twig:114 templates\Parts\show_part_info.html.twig:263 @@ -677,7 +823,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\AdminPages\_info.html.twig:36 + Part-DB1\templates\AdminPages\_info.html.twig:38 + Part-DB1\templates\AdminPages\_info.html.twig:38 entity.info.parts_count @@ -687,6 +834,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\attachment_list.html.twig:3 + Part-DB1\templates\attachment_list.html.twig:3 attachment.list.title @@ -696,8 +844,11 @@ Subelements will be moved upwards.]]> Part-DB1\templates\attachment_list.html.twig:10 + Part-DB1\templates\LogSystem\_log_table.html.twig:8 Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - templates\parts_list.html.twig:22 + Part-DB1\templates\attachment_list.html.twig:10 + Part-DB1\templates\LogSystem\_log_table.html.twig:8 + Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 part_list.loading.caption @@ -707,8 +858,11 @@ Subelements will be moved upwards.]]> Part-DB1\templates\attachment_list.html.twig:11 + Part-DB1\templates\LogSystem\_log_table.html.twig:9 Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - templates\parts_list.html.twig:23 + Part-DB1\templates\attachment_list.html.twig:11 + Part-DB1\templates\LogSystem\_log_table.html.twig:9 + Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 part_list.loading.message @@ -717,7 +871,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\base.html.twig:71 + Part-DB1\templates\base.html.twig:68 + Part-DB1\templates\base.html.twig:68 templates\base.html.twig:246 @@ -727,7 +882,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\base.html.twig:76 + Part-DB1\templates\base.html.twig:73 + Part-DB1\templates\base.html.twig:73 sidebar.big.toggle @@ -736,7 +892,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\base.html.twig:98 + Part-DB1\templates\base.html.twig:95 + Part-DB1\templates\base.html.twig:95 templates\base.html.twig:271 @@ -746,7 +903,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\base.html.twig:99 + Part-DB1\templates\base.html.twig:96 + Part-DB1\templates\base.html.twig:96 templates\base.html.twig:272 @@ -756,7 +914,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\base.html.twig:104 + Part-DB1\templates\base.html.twig:101 + Part-DB1\templates\base.html.twig:101 templates\base.html.twig:277 @@ -766,7 +925,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\base.html.twig:115 + Part-DB1\templates\base.html.twig:112 + Part-DB1\templates\base.html.twig:112 templates\base.html.twig:288 @@ -777,6 +937,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Form\permissionLayout.html.twig:35 + Part-DB1\templates\Form\permissionLayout.html.twig:35 permission.edit.permission @@ -786,6 +947,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Form\permissionLayout.html.twig:36 + Part-DB1\templates\Form\permissionLayout.html.twig:36 permission.edit.value @@ -795,6 +957,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Form\permissionLayout.html.twig:53 + Part-DB1\templates\Form\permissionLayout.html.twig:53 permission.legend.title @@ -804,6 +967,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Form\permissionLayout.html.twig:57 + Part-DB1\templates\Form\permissionLayout.html.twig:57 permission.legend.disallow @@ -813,6 +977,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Form\permissionLayout.html.twig:61 + Part-DB1\templates\Form\permissionLayout.html.twig:61 permission.legend.allow @@ -822,6 +987,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Form\permissionLayout.html.twig:65 + Part-DB1\templates\Form\permissionLayout.html.twig:65 permission.legend.inherit @@ -831,6 +997,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\helper.twig:3 + Part-DB1\templates\helper.twig:3 bool.true @@ -840,6 +1007,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\helper.twig:5 + Part-DB1\templates\helper.twig:5 bool.false @@ -849,6 +1017,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\helper.twig:87 + Part-DB1\templates\helper.twig:87 Yes @@ -858,6 +1027,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\helper.twig:89 + Part-DB1\templates\helper.twig:89 No @@ -867,6 +1037,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\homepage.html.twig:7 + Part-DB1\templates\homepage.html.twig:7 templates\homepage.html.twig:7 @@ -877,6 +1048,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\homepage.html.twig:22 + Part-DB1\templates\homepage.html.twig:22 templates\homepage.html.twig:19 @@ -887,6 +1059,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\homepage.html.twig:31 + Part-DB1\templates\homepage.html.twig:31 templates\homepage.html.twig:28 @@ -897,6 +1070,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\homepage.html.twig:31 + Part-DB1\templates\homepage.html.twig:31 templates\homepage.html.twig:28 @@ -907,6 +1081,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\homepage.html.twig:32 + Part-DB1\templates\homepage.html.twig:32 templates\homepage.html.twig:29 @@ -917,6 +1092,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\homepage.html.twig:32 + Part-DB1\templates\homepage.html.twig:32 templates\homepage.html.twig:29 @@ -927,6 +1103,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\homepage.html.twig:33 + Part-DB1\templates\homepage.html.twig:33 templates\homepage.html.twig:30 @@ -937,6 +1114,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\homepage.html.twig:33 + Part-DB1\templates\homepage.html.twig:33 templates\homepage.html.twig:30 @@ -947,6 +1125,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\homepage.html.twig:34 + Part-DB1\templates\homepage.html.twig:34 templates\homepage.html.twig:31 @@ -957,6 +1136,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\homepage.html.twig:34 + Part-DB1\templates\homepage.html.twig:34 templates\homepage.html.twig:31 @@ -967,6 +1147,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\homepage.html.twig:36 + Part-DB1\templates\homepage.html.twig:36 templates\homepage.html.twig:33 @@ -977,6 +1158,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\homepage.html.twig:39 + Part-DB1\templates\homepage.html.twig:39 templates\homepage.html.twig:36 @@ -984,9 +1166,53 @@ Subelements will be moved upwards.]]> and others + + + Part-DB1\templates\homepage.html.twig:45 + Part-DB1\templates\homepage.html.twig:45 + new + + + homepage.last_activity + Last activity + + + + + Part-DB1\templates\LogSystem\log_list.html.twig:3 + Part-DB1\templates\LogSystem\log_list.html.twig:3 + + + log.list.title + System log + + + + + Part-DB1\templates\LogSystem\_log_table.html.twig:1 + Part-DB1\templates\LogSystem\_log_table.html.twig:1 + new + + + log.undo.confirm_title + Really undo change / revert to timestamp? + + + + + Part-DB1\templates\LogSystem\_log_table.html.twig:2 + Part-DB1\templates\LogSystem\_log_table.html.twig:2 + new + + + log.undo.confirm_message + Do you really want to undo the given change / reset the element to the given timestamp? + + Part-DB1\templates\mail\base.html.twig:24 + Part-DB1\templates\mail\base.html.twig:24 mail.footer.email_sent_by @@ -996,6 +1222,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\mail\base.html.twig:24 + Part-DB1\templates\mail\base.html.twig:24 mail.footer.dont_reply @@ -1005,6 +1232,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\mail\pw_reset.html.twig:6 + Part-DB1\templates\mail\pw_reset.html.twig:6 email.hi %name% @@ -1014,6 +1242,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\mail\pw_reset.html.twig:7 + Part-DB1\templates\mail\pw_reset.html.twig:7 email.pw_reset.message @@ -1023,6 +1252,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\mail\pw_reset.html.twig:9 + Part-DB1\templates\mail\pw_reset.html.twig:9 email.pw_reset.button @@ -1032,6 +1262,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\mail\pw_reset.html.twig:11 + Part-DB1\templates\mail\pw_reset.html.twig:11 email.pw_reset.fallback @@ -1041,6 +1272,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\mail\pw_reset.html.twig:16 + Part-DB1\templates\mail\pw_reset.html.twig:16 email.pw_reset.username @@ -1050,6 +1282,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\mail\pw_reset.html.twig:19 + Part-DB1\templates\mail\pw_reset.html.twig:19 email.pw_reset.token @@ -1059,6 +1292,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\mail\pw_reset.html.twig:24 + Part-DB1\templates\mail\pw_reset.html.twig:24 email.pw_reset.valid_unit %date% @@ -1069,6 +1303,8 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:18 Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 + Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:18 + Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 orderdetail.delete @@ -1078,6 +1314,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:39 + Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:39 pricedetails.edit.min_qty @@ -1087,6 +1324,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:40 + Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:40 pricedetails.edit.price @@ -1096,6 +1334,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:41 + Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:41 pricedetails.edit.price_qty @@ -1105,6 +1344,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 + Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 pricedetail.create @@ -1114,6 +1354,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 templates\Parts\edit_part_info.html.twig:4 @@ -1124,6 +1365,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 templates\Parts\edit_part_info.html.twig:9 @@ -1134,6 +1376,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_part_info.html.twig:22 + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:22 part.edit.tab.common @@ -1143,6 +1386,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_part_info.html.twig:28 + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:28 part.edit.tab.manufacturer @@ -1152,6 +1396,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_part_info.html.twig:34 + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:34 part.edit.tab.advanced @@ -1161,6 +1406,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_part_info.html.twig:40 + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:40 part.edit.tab.part_lots @@ -1170,6 +1416,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_part_info.html.twig:46 + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:46 part.edit.tab.attachments @@ -1179,6 +1426,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_part_info.html.twig:52 + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:52 part.edit.tab.orderdetails @@ -1188,6 +1436,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 + Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 part.edit.tab.comment @@ -1197,6 +1446,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\edit\new_part.html.twig:8 + Part-DB1\templates\Parts\edit\new_part.html.twig:8 templates\Parts\new_part.html.twig:8 @@ -1207,6 +1457,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\edit\_lots.html.twig:5 + Part-DB1\templates\Parts\edit\_lots.html.twig:5 part_lot.delete @@ -1216,6 +1467,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\edit\_lots.html.twig:28 + Part-DB1\templates\Parts\edit\_lots.html.twig:28 part_lot.create @@ -1225,6 +1477,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 + Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 orderdetail.create @@ -1234,6 +1487,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 + Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 pricedetails.edit.delete.confirm @@ -1243,6 +1497,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\edit\_orderdetails.html.twig:61 + Part-DB1\templates\Parts\edit\_orderdetails.html.twig:61 orderdetails.edit.delete.confirm @@ -1252,7 +1507,9 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\show_part_info.html.twig:4 - Part-DB1\templates\Parts\info\show_part_info.html.twig:9 + Part-DB1\templates\Parts\info\show_part_info.html.twig:19 + Part-DB1\templates\Parts\info\show_part_info.html.twig:4 + Part-DB1\templates\Parts\info\show_part_info.html.twig:19 templates\Parts\show_part_info.html.twig:4 templates\Parts\show_part_info.html.twig:9 @@ -1263,7 +1520,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\Parts\info\show_part_info.html.twig:36 + 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 @@ -1272,8 +1530,10 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\Parts\info\show_part_info.html.twig:46 - Part-DB1\templates\_navbar.html.twig:46 + Part-DB1\templates\Parts\info\show_part_info.html.twig:56 + Part-DB1\templates\_navbar_search.html.twig:26 + Part-DB1\templates\Parts\info\show_part_info.html.twig:56 + Part-DB1\templates\_navbar_search.html.twig:26 templates\base.html.twig:62 templates\Parts\show_part_info.html.twig:74 src\Form\PartType.php:86 @@ -1285,7 +1545,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\Parts\info\show_part_info.html.twig:54 + Part-DB1\templates\Parts\info\show_part_info.html.twig:64 + Part-DB1\templates\Parts\info\show_part_info.html.twig:64 templates\Parts\show_part_info.html.twig:82 @@ -1295,7 +1556,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\Parts\info\show_part_info.html.twig:60 + Part-DB1\templates\Parts\info\show_part_info.html.twig:71 + Part-DB1\templates\Parts\info\show_part_info.html.twig:71 templates\Parts\show_part_info.html.twig:88 @@ -1305,7 +1567,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\Parts\info\show_part_info.html.twig:66 + Part-DB1\templates\Parts\info\show_part_info.html.twig:78 + Part-DB1\templates\Parts\info\show_part_info.html.twig:78 templates\Parts\show_part_info.html.twig:94 @@ -1315,9 +1578,12 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\Parts\info\show_part_info.html.twig:72 + Part-DB1\templates\Parts\info\show_part_info.html.twig:84 Part-DB1\templates\_sidebar.html.twig:54 Part-DB1\templates\_sidebar.html.twig:13 + Part-DB1\templates\Parts\info\show_part_info.html.twig:84 + Part-DB1\templates\_sidebar.html.twig:54 + Part-DB1\templates\_sidebar.html.twig:13 templates\base.html.twig:176 templates\base.html.twig:203 templates\base.html.twig:217 @@ -1331,7 +1597,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\Parts\info\show_part_info.html.twig:78 + Part-DB1\templates\Parts\info\show_part_info.html.twig:90 + Part-DB1\templates\Parts\info\show_part_info.html.twig:90 extended_info.label @@ -1341,6 +1608,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 attachment.name @@ -1350,6 +1618,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 attachment.attachment_type @@ -1359,6 +1628,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 attachment.file_name @@ -1368,6 +1638,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 attachment.file_size @@ -1377,6 +1648,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\_attachments_info.html.twig:34 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:34 attachment.external_file @@ -1386,6 +1658,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\_attachments_info.html.twig:50 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:50 attachment.download @@ -1395,15 +1668,66 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 attachment.edit Edit + + + Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 + new + + + user.creating_user + User who created this part + + + + + Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:13 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 + + + Unknown + Unknown + + + + + Part-DB1\templates\Parts\info\_extended_infos.html.twig:15 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:30 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:15 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:30 + new + + + accessDenied + Access Denied + + + + + Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 + new + + + user.last_editing_user + User who edited this part last + + - Part-DB1\templates\Parts\info\_extended_infos.html.twig:21 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 part.isFavorite @@ -1412,27 +1736,22 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 part.minOrderAmount Minimum order amount - - - Part-DB1\templates\Parts\info\_extended_infos.html.twig:30 - - - Unknown - Unknown - - Part-DB1\templates\Parts\info\_main_infos.html.twig:8 - Part-DB1\templates\_navbar.html.twig:61 - Part-DB1\src\Services\ElementTypeNameGenerator.php:61 + Part-DB1\templates\_navbar_search.html.twig:41 + Part-DB1\src\Services\ElementTypeNameGenerator.php:84 + Part-DB1\templates\Parts\info\_main_infos.html.twig:8 + Part-DB1\templates\_navbar_search.html.twig:41 + Part-DB1\src\Services\ElementTypeNameGenerator.php:84 templates\base.html.twig:70 templates\Parts\show_part_info.html.twig:24 src\Form\PartType.php:80 @@ -1442,10 +1761,23 @@ Subelements will be moved upwards.]]> Manufacturer + + + Part-DB1\templates\Parts\info\_main_infos.html.twig:27 + Part-DB1\templates\Parts\info\_main_infos.html.twig:27 + new + + + part.back_to_info + Back to current version + + - Part-DB1\templates\Parts\info\_main_infos.html.twig:30 - Part-DB1\templates\_navbar.html.twig:38 + Part-DB1\templates\Parts\info\_main_infos.html.twig:32 + Part-DB1\templates\_navbar_search.html.twig:18 + Part-DB1\templates\Parts\info\_main_infos.html.twig:32 + Part-DB1\templates\_navbar_search.html.twig:18 templates\base.html.twig:58 templates\Parts\show_part_info.html.twig:31 src\Form\PartType.php:65 @@ -1457,9 +1789,12 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\Parts\info\_main_infos.html.twig:32 - Part-DB1\templates\_navbar.html.twig:34 - Part-DB1\src\Services\ElementTypeNameGenerator.php:57 + Part-DB1\templates\Parts\info\_main_infos.html.twig:34 + Part-DB1\templates\_navbar_search.html.twig:14 + Part-DB1\src\Services\ElementTypeNameGenerator.php:80 + Part-DB1\templates\Parts\info\_main_infos.html.twig:34 + Part-DB1\templates\_navbar_search.html.twig:14 + Part-DB1\src\Services\ElementTypeNameGenerator.php:80 templates\base.html.twig:56 templates\Parts\show_part_info.html.twig:32 src\Form\PartType.php:74 @@ -1471,7 +1806,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\Parts\info\_main_infos.html.twig:37 + Part-DB1\templates\Parts\info\_main_infos.html.twig:39 + Part-DB1\templates\Parts\info\_main_infos.html.twig:39 templates\Parts\show_part_info.html.twig:42 src\Form\PartType.php:69 @@ -1482,7 +1818,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\Parts\info\_main_infos.html.twig:39 + Part-DB1\templates\Parts\info\_main_infos.html.twig:41 + Part-DB1\templates\Parts\info\_main_infos.html.twig:41 templates\Parts\show_part_info.html.twig:44 src\Form\PartType.php:72 @@ -1493,9 +1830,12 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\Parts\info\_main_infos.html.twig:43 - Part-DB1\templates\_navbar.html.twig:67 - Part-DB1\src\Services\ElementTypeNameGenerator.php:60 + Part-DB1\templates\Parts\info\_main_infos.html.twig:45 + Part-DB1\templates\_navbar_search.html.twig:47 + Part-DB1\src\Services\ElementTypeNameGenerator.php:83 + Part-DB1\templates\Parts\info\_main_infos.html.twig:45 + Part-DB1\templates\_navbar_search.html.twig:47 + Part-DB1\src\Services\ElementTypeNameGenerator.php:83 templates\base.html.twig:73 templates\Parts\show_part_info.html.twig:47 @@ -1506,8 +1846,10 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\Parts\info\_main_infos.html.twig:55 - Part-DB1\templates\Parts\info\_main_infos.html.twig:58 + Part-DB1\templates\Parts\info\_main_infos.html.twig:57 + Part-DB1\templates\Parts\info\_main_infos.html.twig:60 + Part-DB1\templates\Parts\info\_main_infos.html.twig:57 + Part-DB1\templates\Parts\info\_main_infos.html.twig:60 templates\Parts\show_part_info.html.twig:51 @@ -1518,6 +1860,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\_order_infos.html.twig:5 + Part-DB1\templates\Parts\info\_order_infos.html.twig:5 part.supplier.name @@ -1527,6 +1870,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\_order_infos.html.twig:6 + Part-DB1\templates\Parts\info\_order_infos.html.twig:6 part.supplier.partnr @@ -1536,6 +1880,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\_order_infos.html.twig:28 + Part-DB1\templates\Parts\info\_order_infos.html.twig:28 part.order.minamount @@ -1545,6 +1890,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\_order_infos.html.twig:29 + Part-DB1\templates\Parts\info\_order_infos.html.twig:29 part.order.price @@ -1554,6 +1900,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\_order_infos.html.twig:31 + Part-DB1\templates\Parts\info\_order_infos.html.twig:31 part.order.single_price @@ -1563,6 +1910,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\_order_infos.html.twig:71 + Part-DB1\templates\Parts\info\_order_infos.html.twig:71 edit.caption_short @@ -1572,6 +1920,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\_order_infos.html.twig:72 + Part-DB1\templates\Parts\info\_order_infos.html.twig:72 delete.caption @@ -1581,6 +1930,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\_part_lots.html.twig:6 + Part-DB1\templates\Parts\info\_part_lots.html.twig:6 part_lots.description @@ -1590,6 +1940,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\_part_lots.html.twig:7 + Part-DB1\templates\Parts\info\_part_lots.html.twig:7 part_lots.storage_location @@ -1599,6 +1950,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\_part_lots.html.twig:8 + Part-DB1\templates\Parts\info\_part_lots.html.twig:8 part_lots.amount @@ -1607,7 +1959,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\Parts\info\_part_lots.html.twig:23 + Part-DB1\templates\Parts\info\_part_lots.html.twig:22 + Part-DB1\templates\Parts\info\_part_lots.html.twig:22 part_lots.location_unknown @@ -1616,7 +1969,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\Parts\info\_part_lots.html.twig:30 + Part-DB1\templates\Parts\info\_part_lots.html.twig:29 + Part-DB1\templates\Parts\info\_part_lots.html.twig:29 part_lots.instock_unknown @@ -1625,7 +1979,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\Parts\info\_part_lots.html.twig:39 + Part-DB1\templates\Parts\info\_part_lots.html.twig:38 + Part-DB1\templates\Parts\info\_part_lots.html.twig:38 part_lots.expiration_date @@ -1634,7 +1989,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\Parts\info\_part_lots.html.twig:47 + Part-DB1\templates\Parts\info\_part_lots.html.twig:46 + Part-DB1\templates\Parts\info\_part_lots.html.twig:46 part_lots.is_expired @@ -1643,7 +1999,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\Parts\info\_part_lots.html.twig:54 + Part-DB1\templates\Parts\info\_part_lots.html.twig:53 + Part-DB1\templates\Parts\info\_part_lots.html.twig:53 part_lots.need_refill @@ -1653,6 +2010,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\_picture.html.twig:15 + Part-DB1\templates\Parts\info\_picture.html.twig:15 part.info.prev_picture @@ -1662,6 +2020,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\_picture.html.twig:19 + Part-DB1\templates\Parts\info\_picture.html.twig:19 part.info.next_picture @@ -1670,7 +2029,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\Parts\info\_sidebar.html.twig:17 + Part-DB1\templates\Parts\info\_sidebar.html.twig:21 + Part-DB1\templates\Parts\info\_sidebar.html.twig:21 part.mass.tooltip @@ -1679,7 +2039,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\Parts\info\_sidebar.html.twig:26 + Part-DB1\templates\Parts\info\_sidebar.html.twig:30 + Part-DB1\templates\Parts\info\_sidebar.html.twig:30 part.needs_review.badge @@ -1688,7 +2049,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\Parts\info\_sidebar.html.twig:35 + Part-DB1\templates\Parts\info\_sidebar.html.twig:39 + Part-DB1\templates\Parts\info\_sidebar.html.twig:39 part.favorite.badge @@ -1697,7 +2059,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\Parts\info\_sidebar.html.twig:43 + Part-DB1\templates\Parts\info\_sidebar.html.twig:47 + Part-DB1\templates\Parts\info\_sidebar.html.twig:47 part.obsolete.badge @@ -1707,6 +2070,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\_tools.html.twig:4 + Part-DB1\templates\Parts\info\_tools.html.twig:4 templates\Parts\show_part_info.html.twig:125 @@ -1717,6 +2081,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\_tools.html.twig:14 + Part-DB1\templates\Parts\info\_tools.html.twig:14 templates\Parts\show_part_info.html.twig:135 @@ -1727,6 +2092,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\_tools.html.twig:22 + Part-DB1\templates\Parts\info\_tools.html.twig:22 templates\Parts\show_part_info.html.twig:143 @@ -1737,6 +2103,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\_tools.html.twig:29 + Part-DB1\templates\Parts\info\_tools.html.twig:29 part.delete.confirm_title @@ -1746,6 +2113,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\info\_tools.html.twig:30 + Part-DB1\templates\Parts\info\_tools.html.twig:30 part.delete.message @@ -1754,7 +2122,8 @@ Subelements will be moved upwards.]]> - Part-DB1\templates\Parts\info\_tools.html.twig:36 + Part-DB1\templates\Parts\info\_tools.html.twig:37 + Part-DB1\templates\Parts\info\_tools.html.twig:37 part.delete @@ -1764,6 +2133,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\lists\all_list.html.twig:4 + Part-DB1\templates\Parts\lists\all_list.html.twig:4 parts_list.all.title @@ -1773,6 +2143,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\lists\category_list.html.twig:4 + Part-DB1\templates\Parts\lists\category_list.html.twig:4 parts_list.category.title @@ -1782,6 +2153,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 + Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 parts_list.footprint.title @@ -1791,6 +2163,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 + Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 parts_list.manufacturer.title @@ -1800,6 +2173,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\lists\search_list.html.twig:4 + Part-DB1\templates\Parts\lists\search_list.html.twig:4 parts_list.search.title @@ -1809,6 +2183,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\lists\store_location_list.html.twig:4 + Part-DB1\templates\Parts\lists\store_location_list.html.twig:4 parts_list.storelocation.title @@ -1818,6 +2193,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 + Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 parts_list.supplier.title @@ -1827,6 +2203,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\lists\tags_list.html.twig:4 + Part-DB1\templates\Parts\lists\tags_list.html.twig:4 parts_list.tags.title @@ -1836,6 +2213,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\lists\_info_card.html.twig:17 + Part-DB1\templates\Parts\lists\_info_card.html.twig:17 entity.info.common.tab @@ -1845,6 +2223,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\lists\_info_card.html.twig:20 + Part-DB1\templates\Parts\lists\_info_card.html.twig:20 entity.info.statistics.tab @@ -1854,6 +2233,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\lists\_info_card.html.twig:30 + Part-DB1\templates\Parts\lists\_info_card.html.twig:30 entity.info.name @@ -1864,6 +2244,8 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\lists\_info_card.html.twig:34 Part-DB1\templates\Parts\lists\_info_card.html.twig:67 + Part-DB1\templates\Parts\lists\_info_card.html.twig:34 + Part-DB1\templates\Parts\lists\_info_card.html.twig:67 entity.info.parent @@ -1873,6 +2255,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\lists\_info_card.html.twig:46 + Part-DB1\templates\Parts\lists\_info_card.html.twig:46 entity.edit.btn @@ -1882,6 +2265,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Parts\lists\_info_card.html.twig:63 + Part-DB1\templates\Parts\lists\_info_card.html.twig:63 entity.info.children_count @@ -1892,6 +2276,8 @@ Subelements will be moved upwards.]]> Part-DB1\templates\security\2fa_base_form.html.twig:3 Part-DB1\templates\security\2fa_base_form.html.twig:5 + Part-DB1\templates\security\2fa_base_form.html.twig:3 + Part-DB1\templates\security\2fa_base_form.html.twig:5 tfa.check.title @@ -1901,6 +2287,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\security\2fa_base_form.html.twig:39 + Part-DB1\templates\security\2fa_base_form.html.twig:39 tfa.code.trusted_pc @@ -1911,6 +2298,8 @@ Subelements will be moved upwards.]]> Part-DB1\templates\security\2fa_base_form.html.twig:52 Part-DB1\templates\security\login.html.twig:58 + Part-DB1\templates\security\2fa_base_form.html.twig:52 + Part-DB1\templates\security\login.html.twig:58 login.btn @@ -1921,7 +2310,10 @@ Subelements will be moved upwards.]]> Part-DB1\templates\security\2fa_base_form.html.twig:53 Part-DB1\templates\security\U2F\u2f_login.html.twig:13 - Part-DB1\templates\_navbar.html.twig:103 + Part-DB1\templates\_navbar.html.twig:40 + Part-DB1\templates\security\2fa_base_form.html.twig:53 + Part-DB1\templates\security\U2F\u2f_login.html.twig:13 + Part-DB1\templates\_navbar.html.twig:40 user.logout @@ -1931,6 +2323,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\security\2fa_form.html.twig:6 + Part-DB1\templates\security\2fa_form.html.twig:6 tfa.check.code.label @@ -1940,6 +2333,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\security\2fa_form.html.twig:10 + Part-DB1\templates\security\2fa_form.html.twig:10 tfa.check.code.help @@ -1949,6 +2343,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\security\login.html.twig:3 + Part-DB1\templates\security\login.html.twig:3 templates\security\login.html.twig:3 @@ -1959,6 +2354,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\security\login.html.twig:7 + Part-DB1\templates\security\login.html.twig:7 templates\security\login.html.twig:7 @@ -1969,6 +2365,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\security\login.html.twig:31 + Part-DB1\templates\security\login.html.twig:31 templates\security\login.html.twig:31 @@ -1979,6 +2376,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\security\login.html.twig:34 + Part-DB1\templates\security\login.html.twig:34 templates\security\login.html.twig:34 @@ -1989,6 +2387,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\security\login.html.twig:38 + Part-DB1\templates\security\login.html.twig:38 templates\security\login.html.twig:38 @@ -1999,6 +2398,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\security\login.html.twig:40 + Part-DB1\templates\security\login.html.twig:40 templates\security\login.html.twig:40 @@ -2009,6 +2409,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\security\login.html.twig:50 + Part-DB1\templates\security\login.html.twig:50 templates\security\login.html.twig:50 @@ -2019,6 +2420,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\security\login.html.twig:64 + Part-DB1\templates\security\login.html.twig:64 pw_reset.password_forget @@ -2028,6 +2430,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\security\pw_reset_new_pw.html.twig:5 + Part-DB1\templates\security\pw_reset_new_pw.html.twig:5 pw_reset.new_pw.header.title @@ -2037,6 +2440,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\security\pw_reset_request.html.twig:5 + Part-DB1\templates\security\pw_reset_request.html.twig:5 pw_reset.request.header.title @@ -2047,6 +2451,8 @@ Subelements will be moved upwards.]]> Part-DB1\templates\security\U2F\u2f_login.html.twig:7 Part-DB1\templates\security\U2F\u2f_register.html.twig:10 + Part-DB1\templates\security\U2F\u2f_login.html.twig:7 + Part-DB1\templates\security\U2F\u2f_register.html.twig:10 tfa_u2f.http_warning @@ -2057,6 +2463,8 @@ Subelements will be moved upwards.]]> Part-DB1\templates\security\U2F\u2f_login.html.twig:10 Part-DB1\templates\security\U2F\u2f_register.html.twig:22 + Part-DB1\templates\security\U2F\u2f_login.html.twig:10 + Part-DB1\templates\security\U2F\u2f_register.html.twig:22 r_u2f_two_factor.pressbutton @@ -2066,6 +2474,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\security\U2F\u2f_register.html.twig:3 + Part-DB1\templates\security\U2F\u2f_register.html.twig:3 tfa_u2f.add_key.title @@ -2076,6 +2485,8 @@ Subelements will be moved upwards.]]> Part-DB1\templates\security\U2F\u2f_register.html.twig:6 Part-DB1\templates\Users\_2fa_settings.html.twig:111 + Part-DB1\templates\security\U2F\u2f_register.html.twig:6 + Part-DB1\templates\Users\_2fa_settings.html.twig:111 tfa_u2f.explanation @@ -2085,6 +2496,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\security\U2F\u2f_register.html.twig:7 + Part-DB1\templates\security\U2F\u2f_register.html.twig:7 tfa_u2f.add_key.backup_hint @@ -2094,6 +2506,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\security\U2F\u2f_register.html.twig:16 + Part-DB1\templates\security\U2F\u2f_register.html.twig:16 r_u2f_two_factor.name @@ -2103,6 +2516,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\security\U2F\u2f_register.html.twig:19 + Part-DB1\templates\security\U2F\u2f_register.html.twig:19 tfa_u2f.add_key.add_button @@ -2112,16 +2526,271 @@ Subelements will be moved upwards.]]> Part-DB1\templates\security\U2F\u2f_register.html.twig:27 + Part-DB1\templates\security\U2F\u2f_register.html.twig:27 tfa_u2f.add_key.back_to_settings Back to settings + + + Part-DB1\templates\Statistics\statistics.html.twig:5 + Part-DB1\templates\Statistics\statistics.html.twig:8 + Part-DB1\templates\Statistics\statistics.html.twig:5 + Part-DB1\templates\Statistics\statistics.html.twig:8 + new + + + statistics.title + Statistics + + + + + Part-DB1\templates\Statistics\statistics.html.twig:14 + Part-DB1\templates\Statistics\statistics.html.twig:14 + new + + + statistics.parts + Parts + + + + + Part-DB1\templates\Statistics\statistics.html.twig:19 + Part-DB1\templates\Statistics\statistics.html.twig:19 + new + + + statistics.data_structures + Data structures + + + + + Part-DB1\templates\Statistics\statistics.html.twig:24 + Part-DB1\templates\Statistics\statistics.html.twig:24 + new + + + statistics.attachments + Attachments + + + + + Part-DB1\templates\Statistics\statistics.html.twig:34 + Part-DB1\templates\Statistics\statistics.html.twig:59 + Part-DB1\templates\Statistics\statistics.html.twig:104 + Part-DB1\templates\Statistics\statistics.html.twig:34 + Part-DB1\templates\Statistics\statistics.html.twig:59 + Part-DB1\templates\Statistics\statistics.html.twig:104 + new + + + statistics.property + Property + + + + + Part-DB1\templates\Statistics\statistics.html.twig:35 + Part-DB1\templates\Statistics\statistics.html.twig:60 + Part-DB1\templates\Statistics\statistics.html.twig:105 + Part-DB1\templates\Statistics\statistics.html.twig:35 + Part-DB1\templates\Statistics\statistics.html.twig:60 + Part-DB1\templates\Statistics\statistics.html.twig:105 + new + + + statistics.value + Value + + + + + Part-DB1\templates\Statistics\statistics.html.twig:40 + Part-DB1\templates\Statistics\statistics.html.twig:40 + new + + + statistics.distinct_parts_count + Number of distinct parts + + + + + Part-DB1\templates\Statistics\statistics.html.twig:44 + Part-DB1\templates\Statistics\statistics.html.twig:44 + new + + + statistics.parts_instock_sum + Sum of all part instocks + + + + + Part-DB1\templates\Statistics\statistics.html.twig:48 + Part-DB1\templates\Statistics\statistics.html.twig:48 + new + + + statistics.parts_with_price + Number of parts with price information + + + + + Part-DB1\templates\Statistics\statistics.html.twig:65 + Part-DB1\templates\Statistics\statistics.html.twig:65 + new + + + statistics.categories_count + Number of categories + + + + + Part-DB1\templates\Statistics\statistics.html.twig:69 + Part-DB1\templates\Statistics\statistics.html.twig:69 + new + + + statistics.footprints_count + Number of footprints + + + + + Part-DB1\templates\Statistics\statistics.html.twig:73 + Part-DB1\templates\Statistics\statistics.html.twig:73 + new + + + statistics.manufacturers_count + Number of manufacturers + + + + + Part-DB1\templates\Statistics\statistics.html.twig:77 + Part-DB1\templates\Statistics\statistics.html.twig:77 + new + + + statistics.storelocations_count + Number of storelocations + + + + + Part-DB1\templates\Statistics\statistics.html.twig:81 + Part-DB1\templates\Statistics\statistics.html.twig:81 + new + + + statistics.suppliers_count + Number of suppliers + + + + + Part-DB1\templates\Statistics\statistics.html.twig:85 + Part-DB1\templates\Statistics\statistics.html.twig:85 + new + + + statistics.currencies_count + Number of currencies + + + + + Part-DB1\templates\Statistics\statistics.html.twig:89 + Part-DB1\templates\Statistics\statistics.html.twig:89 + new + + + statistics.measurement_units_count + Number of measurement units + + + + + Part-DB1\templates\Statistics\statistics.html.twig:93 + Part-DB1\templates\Statistics\statistics.html.twig:93 + new + + + statistics.devices_count + Number of devices + + + + + Part-DB1\templates\Statistics\statistics.html.twig:110 + Part-DB1\templates\Statistics\statistics.html.twig:110 + new + + + statistics.attachment_types_count + Number of attachment types + + + + + Part-DB1\templates\Statistics\statistics.html.twig:114 + Part-DB1\templates\Statistics\statistics.html.twig:114 + new + + + statistics.all_attachments_count + Number of all attachments + + + + + Part-DB1\templates\Statistics\statistics.html.twig:118 + Part-DB1\templates\Statistics\statistics.html.twig:118 + new + + + statistics.user_uploaded_attachments_count + Number of user uploaded attachments + + + + + Part-DB1\templates\Statistics\statistics.html.twig:122 + Part-DB1\templates\Statistics\statistics.html.twig:122 + new + + + statistics.private_attachments_count + Number of private attachments + + + + + Part-DB1\templates\Statistics\statistics.html.twig:126 + Part-DB1\templates\Statistics\statistics.html.twig:126 + new + + + statistics.external_attachments_count + Number of external attachments (URL) + + Part-DB1\templates\Users\backup_codes.html.twig:3 Part-DB1\templates\Users\backup_codes.html.twig:9 + Part-DB1\templates\Users\backup_codes.html.twig:3 + Part-DB1\templates\Users\backup_codes.html.twig:9 tfa_backup.codes.title @@ -2131,6 +2800,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\backup_codes.html.twig:12 + Part-DB1\templates\Users\backup_codes.html.twig:12 tfa_backup.codes.explanation @@ -2140,6 +2810,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\backup_codes.html.twig:13 + Part-DB1\templates\Users\backup_codes.html.twig:13 tfa_backup.codes.help @@ -2149,6 +2820,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\backup_codes.html.twig:16 + Part-DB1\templates\Users\backup_codes.html.twig:16 tfa_backup.username @@ -2158,6 +2830,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\backup_codes.html.twig:29 + Part-DB1\templates\Users\backup_codes.html.twig:29 tfa_backup.codes.page_generated_on @@ -2167,6 +2840,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\backup_codes.html.twig:32 + Part-DB1\templates\Users\backup_codes.html.twig:32 tfa_backup.codes.print @@ -2176,6 +2850,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\backup_codes.html.twig:35 + Part-DB1\templates\Users\backup_codes.html.twig:35 tfa_backup.codes.copy_clipboard @@ -2186,7 +2861,10 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\user_info.html.twig:3 Part-DB1\templates\Users\user_info.html.twig:6 - Part-DB1\templates\_navbar.html.twig:101 + Part-DB1\templates\_navbar.html.twig:38 + Part-DB1\templates\Users\user_info.html.twig:3 + Part-DB1\templates\Users\user_info.html.twig:6 + Part-DB1\templates\_navbar.html.twig:38 templates\base.html.twig:99 templates\Users\user_info.html.twig:3 templates\Users\user_info.html.twig:6 @@ -2199,7 +2877,9 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\user_info.html.twig:18 - Part-DB1\src\Form\UserSettingsType.php:57 + Part-DB1\src\Form\UserSettingsType.php:77 + Part-DB1\templates\Users\user_info.html.twig:18 + Part-DB1\src\Form\UserSettingsType.php:77 templates\Users\user_info.html.twig:18 src\Form\UserSettingsType.php:32 @@ -2211,7 +2891,9 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\user_info.html.twig:24 - Part-DB1\src\Form\UserSettingsType.php:62 + Part-DB1\src\Form\UserSettingsType.php:82 + Part-DB1\templates\Users\user_info.html.twig:24 + Part-DB1\src\Form\UserSettingsType.php:82 templates\Users\user_info.html.twig:24 src\Form\UserSettingsType.php:35 @@ -2223,7 +2905,9 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\user_info.html.twig:30 - Part-DB1\src\Form\UserSettingsType.php:72 + Part-DB1\src\Form\UserSettingsType.php:92 + Part-DB1\templates\Users\user_info.html.twig:30 + Part-DB1\src\Form\UserSettingsType.php:92 templates\Users\user_info.html.twig:30 src\Form\UserSettingsType.php:41 @@ -2235,7 +2919,9 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\user_info.html.twig:37 - Part-DB1\src\Form\UserSettingsType.php:67 + Part-DB1\src\Form\UserSettingsType.php:87 + Part-DB1\templates\Users\user_info.html.twig:37 + Part-DB1\src\Form\UserSettingsType.php:87 templates\Users\user_info.html.twig:37 src\Form\UserSettingsType.php:38 @@ -2247,7 +2933,9 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\user_info.html.twig:47 - Part-DB1\src\Form\UserSettingsType.php:53 + Part-DB1\src\Form\UserSettingsType.php:73 + Part-DB1\templates\Users\user_info.html.twig:47 + Part-DB1\src\Form\UserSettingsType.php:73 templates\Users\user_info.html.twig:47 src\Form\UserSettingsType.php:30 @@ -2259,7 +2947,9 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\user_info.html.twig:53 - Part-DB1\src\Services\ElementTypeNameGenerator.php:70 + Part-DB1\src\Services\ElementTypeNameGenerator.php:93 + Part-DB1\templates\Users\user_info.html.twig:53 + Part-DB1\src\Services\ElementTypeNameGenerator.php:93 templates\Users\user_info.html.twig:53 @@ -2270,6 +2960,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\user_info.html.twig:67 + Part-DB1\templates\Users\user_info.html.twig:67 user.permissions @@ -2280,7 +2971,10 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\user_settings.html.twig:3 Part-DB1\templates\Users\user_settings.html.twig:6 - Part-DB1\templates\_navbar.html.twig:100 + Part-DB1\templates\_navbar.html.twig:37 + Part-DB1\templates\Users\user_settings.html.twig:3 + Part-DB1\templates\Users\user_settings.html.twig:6 + Part-DB1\templates\_navbar.html.twig:37 templates\base.html.twig:98 templates\Users\user_settings.html.twig:3 templates\Users\user_settings.html.twig:6 @@ -2293,6 +2987,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\user_settings.html.twig:18 + Part-DB1\templates\Users\user_settings.html.twig:18 templates\Users\user_settings.html.twig:14 @@ -2303,6 +2998,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\user_settings.html.twig:22 + Part-DB1\templates\Users\user_settings.html.twig:22 templates\Users\user_settings.html.twig:18 @@ -2313,6 +3009,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\user_settings.html.twig:55 + Part-DB1\templates\Users\user_settings.html.twig:55 templates\Users\user_settings.html.twig:48 @@ -2323,6 +3020,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\_2fa_settings.html.twig:6 + Part-DB1\templates\Users\_2fa_settings.html.twig:6 user.settings.2fa_settings @@ -2332,6 +3030,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\_2fa_settings.html.twig:13 + Part-DB1\templates\Users\_2fa_settings.html.twig:13 tfa.settings.google.tab @@ -2341,6 +3040,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\_2fa_settings.html.twig:17 + Part-DB1\templates\Users\_2fa_settings.html.twig:17 tfa.settings.bakup.tab @@ -2350,6 +3050,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\_2fa_settings.html.twig:21 + Part-DB1\templates\Users\_2fa_settings.html.twig:21 tfa.settings.u2f.tab @@ -2359,6 +3060,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\_2fa_settings.html.twig:25 + Part-DB1\templates\Users\_2fa_settings.html.twig:25 tfa.settings.trustedDevices.tab @@ -2368,6 +3070,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\_2fa_settings.html.twig:33 + Part-DB1\templates\Users\_2fa_settings.html.twig:33 tfa_google.disable.confirm_title @@ -2377,6 +3080,7 @@ Subelements will be moved upwards.]]> Part-DB1\templates\Users\_2fa_settings.html.twig:33 + Part-DB1\templates\Users\_2fa_settings.html.twig:33 tfa_google.disable.confirm_message @@ -2387,6 +3091,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:39 + Part-DB1\templates\Users\_2fa_settings.html.twig:39 tfa_google.disabled_message @@ -2396,6 +3101,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:48 + Part-DB1\templates\Users\_2fa_settings.html.twig:48 tfa_google.step.download @@ -2405,6 +3111,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:49 + Part-DB1\templates\Users\_2fa_settings.html.twig:49 tfa_google.step.scan @@ -2414,6 +3121,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:50 + Part-DB1\templates\Users\_2fa_settings.html.twig:50 tfa_google.step.input_code @@ -2423,6 +3131,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:51 + Part-DB1\templates\Users\_2fa_settings.html.twig:51 tfa_google.step.download_backup @@ -2432,6 +3141,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:58 + Part-DB1\templates\Users\_2fa_settings.html.twig:58 tfa_google.manual_setup @@ -2441,6 +3151,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:62 + Part-DB1\templates\Users\_2fa_settings.html.twig:62 tfa_google.manual_setup.type @@ -2450,6 +3161,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:63 + Part-DB1\templates\Users\_2fa_settings.html.twig:63 tfa_google.manual_setup.username @@ -2459,6 +3171,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:64 + Part-DB1\templates\Users\_2fa_settings.html.twig:64 tfa_google.manual_setup.secret @@ -2468,6 +3181,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:65 + Part-DB1\templates\Users\_2fa_settings.html.twig:65 tfa_google.manual_setup.digit_count @@ -2477,6 +3191,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:74 + Part-DB1\templates\Users\_2fa_settings.html.twig:74 tfa_google.enabled_message @@ -2486,6 +3201,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:83 + Part-DB1\templates\Users\_2fa_settings.html.twig:83 tfa_backup.disabled @@ -2496,6 +3212,8 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:84 Part-DB1\templates\Users\_2fa_settings.html.twig:92 + Part-DB1\templates\Users\_2fa_settings.html.twig:84 + Part-DB1\templates\Users\_2fa_settings.html.twig:92 tfa_backup.explanation @@ -2505,6 +3223,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:88 + Part-DB1\templates\Users\_2fa_settings.html.twig:88 tfa_backup.reset_codes.confirm_title @@ -2514,6 +3233,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:88 + Part-DB1\templates\Users\_2fa_settings.html.twig:88 tfa_backup.reset_codes.confirm_message @@ -2523,6 +3243,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:91 + Part-DB1\templates\Users\_2fa_settings.html.twig:91 tfa_backup.enabled @@ -2532,6 +3253,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:99 + Part-DB1\templates\Users\_2fa_settings.html.twig:99 tfa_backup.show_codes @@ -2541,6 +3263,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:114 + Part-DB1\templates\Users\_2fa_settings.html.twig:114 tfa_u2f.table_caption @@ -2550,6 +3273,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:115 + Part-DB1\templates\Users\_2fa_settings.html.twig:115 tfa_u2f.delete_u2f.confirm_title @@ -2559,6 +3283,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:116 + Part-DB1\templates\Users\_2fa_settings.html.twig:116 tfa_u2f.delete_u2f.confirm_message @@ -2568,6 +3293,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:123 + Part-DB1\templates\Users\_2fa_settings.html.twig:123 tfa_u2f.keys.name @@ -2577,6 +3303,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:124 + Part-DB1\templates\Users\_2fa_settings.html.twig:124 tfa_u2f.keys.added_date @@ -2586,6 +3313,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:134 + Part-DB1\templates\Users\_2fa_settings.html.twig:134 tfa_u2f.key_delete @@ -2595,6 +3323,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:141 + Part-DB1\templates\Users\_2fa_settings.html.twig:141 tfa_u2f.no_keys_registered @@ -2604,6 +3333,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:144 + Part-DB1\templates\Users\_2fa_settings.html.twig:144 tfa_u2f.add_new_key @@ -2613,6 +3343,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:148 + Part-DB1\templates\Users\_2fa_settings.html.twig:148 tfa_trustedDevices.explanation @@ -2623,6 +3354,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\Users\_2fa_settings.html.twig:149 + Part-DB1\templates\Users\_2fa_settings.html.twig:149 tfa_trustedDevices.invalidate.confirm_title @@ -2632,6 +3364,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\Users\_2fa_settings.html.twig:150 + Part-DB1\templates\Users\_2fa_settings.html.twig:150 tfa_trustedDevices.invalidate.confirm_message @@ -2641,6 +3374,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\Users\_2fa_settings.html.twig:154 + Part-DB1\templates\Users\_2fa_settings.html.twig:154 tfa_trustedDevices.invalidate.btn @@ -2650,6 +3384,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_navbar.html.twig:4 + Part-DB1\templates\_navbar.html.twig:4 templates\base.html.twig:29 @@ -2657,9 +3392,67 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Toggle Sidebar + + + Part-DB1\templates\_navbar.html.twig:27 + Part-DB1\templates\_navbar.html.twig:27 + templates\base.html.twig:88 + + + barcode.scan + Scan Barcode + + + + + Part-DB1\templates\_navbar.html.twig:36 + Part-DB1\templates\_navbar.html.twig:36 + templates\base.html.twig:97 + + + user.loggedin.label + Logged in as + + + + + Part-DB1\templates\_navbar.html.twig:42 + Part-DB1\templates\_navbar.html.twig:42 + templates\base.html.twig:103 + + + user.login + Login + + + + + Part-DB1\templates\_navbar.html.twig:48 + Part-DB1\templates\_navbar.html.twig:48 + + + ui.toggle_darkmode + Darkmode + + + + + Part-DB1\templates\_navbar.html.twig:52 + Part-DB1\src\Form\UserSettingsType.php:97 + Part-DB1\templates\_navbar.html.twig:52 + Part-DB1\src\Form\UserSettingsType.php:97 + templates\base.html.twig:106 + src\Form\UserSettingsType.php:44 + + + user.language_select + Switch Language + + - Part-DB1\templates\_navbar.html.twig:24 + Part-DB1\templates\_navbar_search.html.twig:4 + Part-DB1\templates\_navbar_search.html.twig:4 templates\base.html.twig:49 @@ -2669,7 +3462,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\templates\_navbar.html.twig:30 + Part-DB1\templates\_navbar_search.html.twig:10 + Part-DB1\templates\_navbar_search.html.twig:10 templates\base.html.twig:54 src\Form\PartType.php:62 @@ -2680,8 +3474,10 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\templates\_navbar.html.twig:42 - Part-DB1\src\Services\ElementTypeNameGenerator.php:65 + Part-DB1\templates\_navbar_search.html.twig:22 + Part-DB1\src\Services\ElementTypeNameGenerator.php:88 + Part-DB1\templates\_navbar_search.html.twig:22 + Part-DB1\src\Services\ElementTypeNameGenerator.php:88 templates\base.html.twig:60 templates\Parts\show_part_info.html.twig:36 src\Form\PartType.php:77 @@ -2693,7 +3489,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\templates\_navbar.html.twig:51 + Part-DB1\templates\_navbar_search.html.twig:31 + Part-DB1\templates\_navbar_search.html.twig:31 templates\base.html.twig:65 @@ -2703,8 +3500,10 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\templates\_navbar.html.twig:55 - Part-DB1\src\Services\ElementTypeNameGenerator.php:66 + Part-DB1\templates\_navbar_search.html.twig:35 + Part-DB1\src\Services\ElementTypeNameGenerator.php:89 + Part-DB1\templates\_navbar_search.html.twig:35 + Part-DB1\src\Services\ElementTypeNameGenerator.php:89 templates\base.html.twig:67 @@ -2714,7 +3513,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\templates\_navbar.html.twig:72 + Part-DB1\templates\_navbar_search.html.twig:52 + Part-DB1\templates\_navbar_search.html.twig:52 templates\base.html.twig:75 @@ -2724,7 +3524,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\templates\_navbar.html.twig:76 + Part-DB1\templates\_navbar_search.html.twig:56 + Part-DB1\templates\_navbar_search.html.twig:56 templates\base.html.twig:77 @@ -2732,91 +3533,22 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Reg.Ex. Matching - + - Part-DB1\templates\_navbar.html.twig:83 - templates\base.html.twig:81 + Part-DB1\templates\_navbar_search.html.twig:62 + Part-DB1\templates\_navbar_search.html.twig:62 - go.exclamation + search.submit Go! - - - Part-DB1\templates\_navbar.html.twig:90 - templates\base.html.twig:88 - - - barcode.scan - Scan Barcode - - - - - Part-DB1\templates\_navbar.html.twig:99 - templates\base.html.twig:97 - - - user.loggedin.label - Logged in as - - - - - Part-DB1\templates\_navbar.html.twig:105 - templates\base.html.twig:103 - - - user.login - Login - - - - - Part-DB1\templates\_navbar.html.twig:111 - - - ui.toggle_darkmode - Darkmode - - - - - Part-DB1\templates\_navbar.html.twig:115 - Part-DB1\src\Form\UserSettingsType.php:77 - templates\base.html.twig:106 - src\Form\UserSettingsType.php:44 - - - user.language_select - Switch Language - - - - - Part-DB1\templates\_navbar.html.twig:118 - templates\base.html.twig:109 - - - language.english - English - - - - - Part-DB1\templates\_navbar.html.twig:121 - templates\base.html.twig:112 - - - language.german - German - - Part-DB1\templates\_sidebar.html.twig:37 Part-DB1\templates\_sidebar.html.twig:12 + Part-DB1\templates\_sidebar.html.twig:37 + Part-DB1\templates\_sidebar.html.twig:12 templates\base.html.twig:175 templates\base.html.twig:189 templates\base.html.twig:202 @@ -2830,6 +3562,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_sidebar.html.twig:2 + Part-DB1\templates\_sidebar.html.twig:2 templates\base.html.twig:165 templates\base.html.twig:192 templates\base.html.twig:220 @@ -2842,6 +3575,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_sidebar.html.twig:6 + Part-DB1\templates\_sidebar.html.twig:6 templates\base.html.twig:169 templates\base.html.twig:196 templates\base.html.twig:224 @@ -2854,6 +3588,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_sidebar.html.twig:10 + Part-DB1\templates\_sidebar.html.twig:10 templates\base.html.twig:173 templates\base.html.twig:200 templates\base.html.twig:228 @@ -2866,6 +3601,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_sidebar.html.twig:11 + Part-DB1\templates\_sidebar.html.twig:11 templates\base.html.twig:174 templates\base.html.twig:201 templates\base.html.twig:229 @@ -2877,10 +3613,14 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:103 - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:159 - Part-DB1\src\Controller\PartController.php:93 - Part-DB1\src\Controller\PartController.php:176 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:181 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:243 + Part-DB1\src\Controller\PartController.php:173 + Part-DB1\src\Controller\PartController.php:268 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:181 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:243 + Part-DB1\src\Controller\PartController.php:173 + Part-DB1\src\Controller\PartController.php:268 attachment.download_failed @@ -2889,7 +3629,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:110 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:190 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:190 entity.edit_flash @@ -2898,7 +3639,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:116 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:196 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:196 entity.edit_flash.invalid @@ -2907,7 +3649,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:166 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:252 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:252 entity.created_flash @@ -2916,7 +3659,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:172 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:258 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:258 entity.created_flash.invalid @@ -2925,7 +3669,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:255 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:352 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:352 src\Controller\BaseAdminController.php:154 @@ -2935,19 +3680,123 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\AdminPages\BaseAdminController.php:257 - Part-DB1\src\Controller\UserController.php:89 - Part-DB1\src\Controller\UserSettingsController.php:125 - Part-DB1\src\Controller\UserSettingsController.php:155 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:354 + Part-DB1\src\Controller\UserController.php:101 + Part-DB1\src\Controller\UserSettingsController.php:150 + Part-DB1\src\Controller\UserSettingsController.php:182 + Part-DB1\src\Controller\AdminPages\BaseAdminController.php:354 + Part-DB1\src\Controller\UserController.php:101 + Part-DB1\src\Controller\UserSettingsController.php:150 + Part-DB1\src\Controller\UserSettingsController.php:182 csfr_invalid CSFR Token invalid. Please reload this page or contact an administrator if this message stays. + + + Part-DB1\src\Controller\LogController.php:154 + Part-DB1\src\Controller\LogController.php:154 + new + + + log.undo.target_not_found + Target element could not be found in DB! + + + + + Part-DB1\src\Controller\LogController.php:160 + Part-DB1\src\Controller\LogController.php:160 + new + + + log.undo.revert_success + Reverted to timestamp successfully. + + + + + Part-DB1\src\Controller\LogController.php:180 + Part-DB1\src\Controller\LogController.php:180 + new + + + log.undo.element_undelete_success + Undeleted element successfully. + + + + + Part-DB1\src\Controller\LogController.php:182 + Part-DB1\src\Controller\LogController.php:182 + new + + + log.undo.element_element_already_undeleted + Element was already undeleted! + + + + + Part-DB1\src\Controller\LogController.php:189 + Part-DB1\src\Controller\LogController.php:189 + new + + + log.undo.element_delete_success + Element deleted successfully. + + + + + Part-DB1\src\Controller\LogController.php:191 + Part-DB1\src\Controller\LogController.php:191 + new + + + log.undo.element.element_already_delted + Element was already deleted! + + + + + Part-DB1\src\Controller\LogController.php:198 + Part-DB1\src\Controller\LogController.php:198 + new + + + log.undo.element_change_undone + Change undone successfully! + + + + + Part-DB1\src\Controller\LogController.php:200 + Part-DB1\src\Controller\LogController.php:200 + new + + + log.undo.do_undelete_before + You have to undelete the element before you can undo this change! + + + + + Part-DB1\src\Controller\LogController.php:203 + Part-DB1\src\Controller\LogController.php:203 + new + + + log.undo.log_type_invalid + This log entry can not be undone! + + - Part-DB1\src\Controller\PartController.php:100 + Part-DB1\src\Controller\PartController.php:182 + Part-DB1\src\Controller\PartController.php:182 src\Controller\PartController.php:80 @@ -2957,7 +3806,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\PartController.php:104 + Part-DB1\src\Controller\PartController.php:186 + Part-DB1\src\Controller\PartController.php:186 part.edited_flash.invalid @@ -2966,7 +3816,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\PartController.php:133 + Part-DB1\src\Controller\PartController.php:219 + Part-DB1\src\Controller\PartController.php:219 part.deleted @@ -2975,8 +3826,10 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\PartController.php:183 - Part-DB1\src\Controller\PartController.php:219 + Part-DB1\src\Controller\PartController.php:277 + Part-DB1\src\Controller\PartController.php:317 + Part-DB1\src\Controller\PartController.php:277 + Part-DB1\src\Controller\PartController.php:317 src\Controller\PartController.php:113 src\Controller\PartController.php:142 @@ -2987,25 +3840,18 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\PartController.php:189 + Part-DB1\src\Controller\PartController.php:283 + Part-DB1\src\Controller\PartController.php:283 part.created_flash.invalid Error during creation: Please check your inputs! - - - Part-DB1\src\Controller\RedirectController.php:64 - - - flash.password_change_needed - Password change needed! - - - Part-DB1\src\Controller\SecurityController.php:90 + Part-DB1\src\Controller\SecurityController.php:109 + Part-DB1\src\Controller\SecurityController.php:109 pw_reset.user_or_email @@ -3014,7 +3860,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\SecurityController.php:107 + Part-DB1\src\Controller\SecurityController.php:126 + Part-DB1\src\Controller\SecurityController.php:126 pw_reset.request.success @@ -3023,7 +3870,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\SecurityController.php:132 + Part-DB1\src\Controller\SecurityController.php:160 + Part-DB1\src\Controller\SecurityController.php:160 pw_reset.username @@ -3032,7 +3880,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\SecurityController.php:135 + Part-DB1\src\Controller\SecurityController.php:163 + Part-DB1\src\Controller\SecurityController.php:163 pw_reset.token @@ -3041,7 +3890,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\SecurityController.php:160 + Part-DB1\src\Controller\SecurityController.php:192 + Part-DB1\src\Controller\SecurityController.php:192 pw_reset.new_pw.error @@ -3050,7 +3900,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\SecurityController.php:162 + Part-DB1\src\Controller\SecurityController.php:194 + Part-DB1\src\Controller\SecurityController.php:194 pw_reset.new_pw.success @@ -3059,7 +3910,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\UserController.php:87 + Part-DB1\src\Controller\UserController.php:99 + Part-DB1\src\Controller\UserController.php:99 user.edit.reset_success @@ -3068,7 +3920,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\UserSettingsController.php:72 + Part-DB1\src\Controller\UserSettingsController.php:92 + Part-DB1\src\Controller\UserSettingsController.php:92 tfa_backup.no_codes_enabled @@ -3077,7 +3930,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\UserSettingsController.php:109 + Part-DB1\src\Controller\UserSettingsController.php:132 + Part-DB1\src\Controller\UserSettingsController.php:132 tfa_u2f.u2f_delete.not_existing @@ -3086,7 +3940,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\UserSettingsController.php:115 + Part-DB1\src\Controller\UserSettingsController.php:139 + Part-DB1\src\Controller\UserSettingsController.php:139 tfa_u2f.u2f_delete.access_denied @@ -3095,7 +3950,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\UserSettingsController.php:122 + Part-DB1\src\Controller\UserSettingsController.php:147 + Part-DB1\src\Controller\UserSettingsController.php:147 tfa.u2f.u2f_delete.success @@ -3104,7 +3960,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\UserSettingsController.php:153 + Part-DB1\src\Controller\UserSettingsController.php:180 + Part-DB1\src\Controller\UserSettingsController.php:180 tfa_trustedDevice.invalidate.success @@ -3113,7 +3970,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\UserSettingsController.php:195 + Part-DB1\src\Controller\UserSettingsController.php:226 + Part-DB1\src\Controller\UserSettingsController.php:226 src\Controller\UserController.php:98 @@ -3123,7 +3981,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\UserSettingsController.php:244 + Part-DB1\src\Controller\UserSettingsController.php:288 + Part-DB1\src\Controller\UserSettingsController.php:288 src\Controller\UserController.php:130 @@ -3133,7 +3992,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\UserSettingsController.php:262 + Part-DB1\src\Controller\UserSettingsController.php:306 + Part-DB1\src\Controller\UserSettingsController.php:306 user.settings.2fa.google.activated @@ -3142,7 +4002,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\UserSettingsController.php:269 + Part-DB1\src\Controller\UserSettingsController.php:315 + Part-DB1\src\Controller\UserSettingsController.php:315 user.settings.2fa.google.disabled @@ -3151,79 +4012,48 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Controller\UserSettingsController.php:284 + Part-DB1\src\Controller\UserSettingsController.php:332 + Part-DB1\src\Controller\UserSettingsController.php:332 user.settings.2fa.backup_codes.regenerated New backup codes successfully generated. - + - Part-DB1\src\DataTables\AttachmentDataTable.php:89 - Part-DB1\src\Form\AttachmentFormType.php:59 + Part-DB1\src\DataTables\AttachmentDataTable.php:148 + Part-DB1\src\DataTables\AttachmentDataTable.php:148 - attachment.edit.name - Name + attachment.table.filename + File name - + - Part-DB1\src\DataTables\AttachmentDataTable.php:113 + Part-DB1\src\DataTables\AttachmentDataTable.php:153 + Part-DB1\src\DataTables\AttachmentDataTable.php:153 - attachment.table.type - Attachment type - - - - - Part-DB1\src\DataTables\AttachmentDataTable.php:125 - - - attachment.table.element - Associated element - - - - - Part-DB1\src\DataTables\AttachmentDataTable.php:160 - Part-DB1\src\DataTables\PartsDataTable.php:248 - - - part.table.addedDate - Created at - - - - - Part-DB1\src\DataTables\AttachmentDataTable.php:164 - Part-DB1\src\DataTables\PartsDataTable.php:252 - - - part.table.lastModified - Last modified - - - - - Part-DB1\src\DataTables\AttachmentDataTable.php:169 - Part-DB1\src\Form\AttachmentFormType.php:69 - - - attachment.edit.show_in_table - Show in table + attachment.table.filesize + File size - Part-DB1\src\DataTables\AttachmentDataTable.php:170 - Part-DB1\src\DataTables\AttachmentDataTable.php:178 - Part-DB1\src\DataTables\AttachmentDataTable.php:187 - Part-DB1\src\DataTables\AttachmentDataTable.php:196 - Part-DB1\src\DataTables\PartsDataTable.php:257 - Part-DB1\src\DataTables\PartsDataTable.php:264 + Part-DB1\src\DataTables\AttachmentDataTable.php:183 + Part-DB1\src\DataTables\AttachmentDataTable.php:191 + Part-DB1\src\DataTables\AttachmentDataTable.php:200 + Part-DB1\src\DataTables\AttachmentDataTable.php:209 + Part-DB1\src\DataTables\PartsDataTable.php:193 + Part-DB1\src\DataTables\PartsDataTable.php:200 + Part-DB1\src\DataTables\AttachmentDataTable.php:183 + Part-DB1\src\DataTables\AttachmentDataTable.php:191 + Part-DB1\src\DataTables\AttachmentDataTable.php:200 + Part-DB1\src\DataTables\AttachmentDataTable.php:209 + Part-DB1\src\DataTables\PartsDataTable.php:193 + Part-DB1\src\DataTables\PartsDataTable.php:200 true @@ -3232,49 +4062,154 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\AttachmentDataTable.php:171 - Part-DB1\src\DataTables\AttachmentDataTable.php:179 - Part-DB1\src\DataTables\AttachmentDataTable.php:188 - Part-DB1\src\DataTables\AttachmentDataTable.php:197 - Part-DB1\src\DataTables\PartsDataTable.php:258 - Part-DB1\src\DataTables\PartsDataTable.php:265 - Part-DB1\src\Form\Type\SIUnitType.php:115 + Part-DB1\src\DataTables\AttachmentDataTable.php:184 + Part-DB1\src\DataTables\AttachmentDataTable.php:192 + Part-DB1\src\DataTables\AttachmentDataTable.php:201 + Part-DB1\src\DataTables\AttachmentDataTable.php:210 + Part-DB1\src\DataTables\PartsDataTable.php:194 + Part-DB1\src\DataTables\PartsDataTable.php:201 + Part-DB1\src\Form\Type\SIUnitType.php:139 + Part-DB1\src\DataTables\AttachmentDataTable.php:184 + Part-DB1\src\DataTables\AttachmentDataTable.php:192 + Part-DB1\src\DataTables\AttachmentDataTable.php:201 + Part-DB1\src\DataTables\AttachmentDataTable.php:210 + Part-DB1\src\DataTables\PartsDataTable.php:194 + Part-DB1\src\DataTables\PartsDataTable.php:201 + Part-DB1\src\Form\Type\SIUnitType.php:139 false false - + - Part-DB1\src\DataTables\AttachmentDataTable.php:177 + Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:119 + Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:119 - attachment.edit.isPicture - Picture? + log.target_deleted + deleted - + - Part-DB1\src\DataTables\AttachmentDataTable.php:186 + Part-DB1\src\DataTables\Column\RevertLogColumn.php:60 + Part-DB1\src\DataTables\Column\RevertLogColumn.php:60 + new - - attachment.edit.is3DModel - 3D model? + + log.undo.undelete + Undelete element - + - Part-DB1\src\DataTables\AttachmentDataTable.php:195 + Part-DB1\src\DataTables\Column\RevertLogColumn.php:66 + Part-DB1\src\DataTables\Column\RevertLogColumn.php:66 + new + + + log.undo.undo + Undo change + + + + + Part-DB1\src\DataTables\Column\RevertLogColumn.php:86 + Part-DB1\src\DataTables\Column\RevertLogColumn.php:86 + new + + + log.undo.revert + Revert element to this timestamp + + + + + Part-DB1\src\DataTables\LogDataTable.php:161 + Part-DB1\src\DataTables\LogDataTable.php:161 - attachment.edit.isBuiltin - Builtin? + log.id + ID + + + + + Part-DB1\src\DataTables\LogDataTable.php:166 + Part-DB1\src\DataTables\LogDataTable.php:166 + + + log.timestamp + Timestamp + + + + + Part-DB1\src\DataTables\LogDataTable.php:171 + Part-DB1\src\DataTables\LogDataTable.php:171 + + + log.type + Event + + + + + Part-DB1\src\DataTables\LogDataTable.php:179 + Part-DB1\src\DataTables\LogDataTable.php:179 + + + log.level + Level + + + + + Part-DB1\src\DataTables\LogDataTable.php:188 + Part-DB1\src\DataTables\LogDataTable.php:188 + + + log.user + User + + + + + Part-DB1\src\DataTables\LogDataTable.php:201 + Part-DB1\src\DataTables\LogDataTable.php:201 + + + log.target_type + Target type + + + + + Part-DB1\src\DataTables\LogDataTable.php:214 + Part-DB1\src\DataTables\LogDataTable.php:214 + + + log.target + Target + + + + + Part-DB1\src\DataTables\LogDataTable.php:218 + Part-DB1\src\DataTables\LogDataTable.php:218 + new + + + log.extra + Extra - Part-DB1\src\DataTables\PartsDataTable.php:180 + Part-DB1\src\DataTables\PartsDataTable.php:116 + Part-DB1\src\DataTables\PartsDataTable.php:116 part.table.name @@ -3283,7 +4218,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\PartsDataTable.php:190 + Part-DB1\src\DataTables\PartsDataTable.php:126 + Part-DB1\src\DataTables\PartsDataTable.php:126 part.table.id @@ -3292,7 +4228,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\PartsDataTable.php:194 + Part-DB1\src\DataTables\PartsDataTable.php:130 + Part-DB1\src\DataTables\PartsDataTable.php:130 part.table.description @@ -3301,7 +4238,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\PartsDataTable.php:197 + Part-DB1\src\DataTables\PartsDataTable.php:133 + Part-DB1\src\DataTables\PartsDataTable.php:133 part.table.category @@ -3310,7 +4248,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\PartsDataTable.php:202 + Part-DB1\src\DataTables\PartsDataTable.php:138 + Part-DB1\src\DataTables\PartsDataTable.php:138 part.table.footprint @@ -3319,7 +4258,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\PartsDataTable.php:206 + Part-DB1\src\DataTables\PartsDataTable.php:142 + Part-DB1\src\DataTables\PartsDataTable.php:142 part.table.manufacturer @@ -3328,7 +4268,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\PartsDataTable.php:209 + Part-DB1\src\DataTables\PartsDataTable.php:145 + Part-DB1\src\DataTables\PartsDataTable.php:145 part.table.storeLocations @@ -3337,7 +4278,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\PartsDataTable.php:228 + Part-DB1\src\DataTables\PartsDataTable.php:164 + Part-DB1\src\DataTables\PartsDataTable.php:164 part.table.amount @@ -3346,7 +4288,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\PartsDataTable.php:236 + Part-DB1\src\DataTables\PartsDataTable.php:172 + Part-DB1\src\DataTables\PartsDataTable.php:172 part.table.minamount @@ -3355,16 +4298,38 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\PartsDataTable.php:244 + Part-DB1\src\DataTables\PartsDataTable.php:180 + Part-DB1\src\DataTables\PartsDataTable.php:180 part.table.partUnit Measurement Unit + + + Part-DB1\src\DataTables\PartsDataTable.php:184 + Part-DB1\src\DataTables\PartsDataTable.php:184 + + + part.table.addedDate + Created at + + + + + Part-DB1\src\DataTables\PartsDataTable.php:188 + Part-DB1\src\DataTables\PartsDataTable.php:188 + + + part.table.lastModified + Last modified + + - Part-DB1\src\DataTables\PartsDataTable.php:256 + Part-DB1\src\DataTables\PartsDataTable.php:192 + Part-DB1\src\DataTables\PartsDataTable.php:192 part.table.needsReview @@ -3373,7 +4338,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\PartsDataTable.php:263 + Part-DB1\src\DataTables\PartsDataTable.php:199 + Part-DB1\src\DataTables\PartsDataTable.php:199 part.table.favorite @@ -3382,7 +4348,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\PartsDataTable.php:270 + Part-DB1\src\DataTables\PartsDataTable.php:206 + Part-DB1\src\DataTables\PartsDataTable.php:206 part.table.manufacturingStatus @@ -3391,9 +4358,12 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\PartsDataTable.php:272 - Part-DB1\src\DataTables\PartsDataTable.php:274 - Part-DB1\src\Form\Part\PartBaseType.php:68 + Part-DB1\src\DataTables\PartsDataTable.php:208 + Part-DB1\src\DataTables\PartsDataTable.php:210 + Part-DB1\src\Form\Part\PartBaseType.php:88 + Part-DB1\src\DataTables\PartsDataTable.php:208 + Part-DB1\src\DataTables\PartsDataTable.php:210 + Part-DB1\src\Form\Part\PartBaseType.php:88 m_status.unknown @@ -3402,8 +4372,10 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\PartsDataTable.php:275 - Part-DB1\src\Form\Part\PartBaseType.php:68 + Part-DB1\src\DataTables\PartsDataTable.php:211 + Part-DB1\src\Form\Part\PartBaseType.php:88 + Part-DB1\src\DataTables\PartsDataTable.php:211 + Part-DB1\src\Form\Part\PartBaseType.php:88 m_status.announced @@ -3412,8 +4384,10 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\PartsDataTable.php:276 - Part-DB1\src\Form\Part\PartBaseType.php:68 + Part-DB1\src\DataTables\PartsDataTable.php:212 + Part-DB1\src\Form\Part\PartBaseType.php:88 + Part-DB1\src\DataTables\PartsDataTable.php:212 + Part-DB1\src\Form\Part\PartBaseType.php:88 m_status.active @@ -3422,8 +4396,10 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\PartsDataTable.php:277 - Part-DB1\src\Form\Part\PartBaseType.php:68 + Part-DB1\src\DataTables\PartsDataTable.php:213 + Part-DB1\src\Form\Part\PartBaseType.php:88 + Part-DB1\src\DataTables\PartsDataTable.php:213 + Part-DB1\src\Form\Part\PartBaseType.php:88 m_status.nrfnd @@ -3432,8 +4408,10 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\PartsDataTable.php:278 - Part-DB1\src\Form\Part\PartBaseType.php:68 + Part-DB1\src\DataTables\PartsDataTable.php:214 + Part-DB1\src\Form\Part\PartBaseType.php:88 + Part-DB1\src\DataTables\PartsDataTable.php:214 + Part-DB1\src\Form\Part\PartBaseType.php:88 m_status.eol @@ -3442,8 +4420,10 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\PartsDataTable.php:279 - Part-DB1\src\Form\Part\PartBaseType.php:68 + Part-DB1\src\DataTables\PartsDataTable.php:215 + Part-DB1\src\Form\Part\PartBaseType.php:88 + Part-DB1\src\DataTables\PartsDataTable.php:215 + Part-DB1\src\Form\Part\PartBaseType.php:88 m_status.discontinued @@ -3452,7 +4432,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\PartsDataTable.php:283 + Part-DB1\src\DataTables\PartsDataTable.php:219 + Part-DB1\src\DataTables\PartsDataTable.php:219 part.table.mpn @@ -3461,7 +4442,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\PartsDataTable.php:287 + Part-DB1\src\DataTables\PartsDataTable.php:223 + Part-DB1\src\DataTables\PartsDataTable.php:223 part.table.mass @@ -3470,7 +4452,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\PartsDataTable.php:291 + Part-DB1\src\DataTables\PartsDataTable.php:227 + Part-DB1\src\DataTables\PartsDataTable.php:227 part.table.tags @@ -3479,7 +4462,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\DataTables\PartsDataTable.php:295 + Part-DB1\src\DataTables\PartsDataTable.php:231 + Part-DB1\src\DataTables\PartsDataTable.php:231 part.table.attachments @@ -3488,7 +4472,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\EventSubscriber\LoginSuccessListener.php:46 + Part-DB1\src\EventSubscriber\LoginSuccessListener.php:82 + Part-DB1\src\EventSubscriber\LoginSuccessListener.php:82 flash.login_successful @@ -3497,7 +4482,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\AdminPages\ImportType.php:57 + Part-DB1\src\Form\AdminPages\ImportType.php:77 + Part-DB1\src\Form\AdminPages\ImportType.php:77 src\Form\ImportType.php:68 @@ -3507,7 +4493,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\AdminPages\ImportType.php:57 + Part-DB1\src\Form\AdminPages\ImportType.php:77 + Part-DB1\src\Form\AdminPages\ImportType.php:77 src\Form\ImportType.php:68 @@ -3517,7 +4504,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\AdminPages\ImportType.php:57 + Part-DB1\src\Form\AdminPages\ImportType.php:77 + Part-DB1\src\Form\AdminPages\ImportType.php:77 src\Form\ImportType.php:68 @@ -3527,7 +4515,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\AdminPages\ImportType.php:57 + Part-DB1\src\Form\AdminPages\ImportType.php:77 + Part-DB1\src\Form\AdminPages\ImportType.php:77 src\Form\ImportType.php:68 @@ -3537,7 +4526,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\AdminPages\ImportType.php:84 + Part-DB1\src\Form\AdminPages\ImportType.php:124 + Part-DB1\src\Form\AdminPages\ImportType.php:124 import.abort_on_validation.help @@ -3546,7 +4536,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\AdminPages\ImportType.php:60 + Part-DB1\src\Form\AdminPages\ImportType.php:86 + Part-DB1\src\Form\AdminPages\ImportType.php:86 src\Form\ImportType.php:70 @@ -3556,7 +4547,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\AdminPages\ImportType.php:65 + Part-DB1\src\Form\AdminPages\ImportType.php:93 + Part-DB1\src\Form\AdminPages\ImportType.php:93 src\Form\ImportType.php:72 @@ -3566,7 +4558,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\AdminPages\ImportType.php:73 + Part-DB1\src\Form\AdminPages\ImportType.php:101 + Part-DB1\src\Form\AdminPages\ImportType.php:101 src\Form\ImportType.php:75 @@ -3576,7 +4569,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\AdminPages\ImportType.php:79 + Part-DB1\src\Form\AdminPages\ImportType.php:111 + Part-DB1\src\Form\AdminPages\ImportType.php:111 src\Form\ImportType.php:78 @@ -3586,7 +4580,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\AdminPages\ImportType.php:82 + Part-DB1\src\Form\AdminPages\ImportType.php:120 + Part-DB1\src\Form\AdminPages\ImportType.php:120 src\Form\ImportType.php:80 @@ -3596,7 +4591,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\AdminPages\ImportType.php:88 + Part-DB1\src\Form\AdminPages\ImportType.php:132 + Part-DB1\src\Form\AdminPages\ImportType.php:132 src\Form\ImportType.php:85 @@ -3606,7 +4602,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\AttachmentFormType.php:78 + Part-DB1\src\Form\AttachmentFormType.php:109 + Part-DB1\src\Form\AttachmentFormType.php:109 attachment.edit.secure_file.help @@ -3615,25 +4612,48 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\AttachmentFormType.php:89 + Part-DB1\src\Form\AttachmentFormType.php:123 + Part-DB1\src\Form\AttachmentFormType.php:123 attachment.edit.url.help You can specify a url to an external file here, or input an keyword which is used to search in builtin ressources (e.g. footprints) + + + Part-DB1\src\Form\AttachmentFormType.php:79 + Part-DB1\src\Form\AttachmentFormType.php:79 + + + attachment.edit.name + Name + + - Part-DB1\src\Form\AttachmentFormType.php:62 + Part-DB1\src\Form\AttachmentFormType.php:82 + Part-DB1\src\Form\AttachmentFormType.php:82 attachment.edit.attachment_type Attachment type + + + Part-DB1\src\Form\AttachmentFormType.php:91 + Part-DB1\src\Form\AttachmentFormType.php:91 + + + attachment.edit.show_in_table + Show in table + + - Part-DB1\src\Form\AttachmentFormType.php:74 + Part-DB1\src\Form\AttachmentFormType.php:102 + Part-DB1\src\Form\AttachmentFormType.php:102 attachment.edit.secure_file @@ -3642,7 +4662,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\AttachmentFormType.php:81 + Part-DB1\src\Form\AttachmentFormType.php:115 + Part-DB1\src\Form\AttachmentFormType.php:115 attachment.edit.url @@ -3651,7 +4672,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\AttachmentFormType.php:95 + Part-DB1\src\Form\AttachmentFormType.php:129 + Part-DB1\src\Form\AttachmentFormType.php:129 attachment.edit.download_url @@ -3660,7 +4682,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\AttachmentFormType.php:102 + Part-DB1\src\Form\AttachmentFormType.php:142 + Part-DB1\src\Form\AttachmentFormType.php:142 attachment.edit.file @@ -3669,7 +4692,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\OrderdetailType.php:55 + Part-DB1\src\Form\Part\OrderdetailType.php:75 + Part-DB1\src\Form\Part\OrderdetailType.php:75 orderdetails.edit.supplierpartnr @@ -3678,7 +4702,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\OrderdetailType.php:62 + Part-DB1\src\Form\Part\OrderdetailType.php:84 + Part-DB1\src\Form\Part\OrderdetailType.php:84 orderdetails.edit.supplier @@ -3687,7 +4712,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\OrderdetailType.php:67 + Part-DB1\src\Form\Part\OrderdetailType.php:90 + Part-DB1\src\Form\Part\OrderdetailType.php:90 orderdetails.edit.url @@ -3696,7 +4722,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\OrderdetailType.php:73 + Part-DB1\src\Form\Part\OrderdetailType.php:96 + Part-DB1\src\Form\Part\OrderdetailType.php:96 orderdetails.edit.obsolete @@ -3705,7 +4732,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\OrderdetailType.php:57 + Part-DB1\src\Form\Part\OrderdetailType.php:78 + Part-DB1\src\Form\Part\OrderdetailType.php:78 orderdetails.edit.supplierpartnr.placeholder @@ -3714,7 +4742,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartBaseType.php:79 + Part-DB1\src\Form\Part\PartBaseType.php:99 + Part-DB1\src\Form\Part\PartBaseType.php:99 part.edit.name @@ -3723,7 +4752,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartBaseType.php:85 + Part-DB1\src\Form\Part\PartBaseType.php:107 + Part-DB1\src\Form\Part\PartBaseType.php:107 part.edit.description @@ -3732,7 +4762,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartBaseType.php:93 + Part-DB1\src\Form\Part\PartBaseType.php:118 + Part-DB1\src\Form\Part\PartBaseType.php:118 part.edit.mininstock @@ -3741,7 +4772,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartBaseType.php:99 + Part-DB1\src\Form\Part\PartBaseType.php:127 + Part-DB1\src\Form\Part\PartBaseType.php:127 part.edit.category @@ -3750,7 +4782,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartBaseType.php:105 + Part-DB1\src\Form\Part\PartBaseType.php:133 + Part-DB1\src\Form\Part\PartBaseType.php:133 part.edit.footprint @@ -3759,7 +4792,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartBaseType.php:112 + Part-DB1\src\Form\Part\PartBaseType.php:140 + Part-DB1\src\Form\Part\PartBaseType.php:140 part.edit.tags @@ -3768,7 +4802,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartBaseType.php:123 + Part-DB1\src\Form\Part\PartBaseType.php:152 + Part-DB1\src\Form\Part\PartBaseType.php:152 part.edit.manufacturer.label @@ -3777,7 +4812,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartBaseType.php:130 + Part-DB1\src\Form\Part\PartBaseType.php:159 + Part-DB1\src\Form\Part\PartBaseType.php:159 part.edit.manufacturer_url.label @@ -3786,7 +4822,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartBaseType.php:136 + Part-DB1\src\Form\Part\PartBaseType.php:165 + Part-DB1\src\Form\Part\PartBaseType.php:165 part.edit.mpn @@ -3795,7 +4832,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartBaseType.php:141 + Part-DB1\src\Form\Part\PartBaseType.php:171 + Part-DB1\src\Form\Part\PartBaseType.php:171 part.edit.manufacturing_status @@ -3804,7 +4842,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartBaseType.php:149 + Part-DB1\src\Form\Part\PartBaseType.php:179 + Part-DB1\src\Form\Part\PartBaseType.php:179 part.edit.needs_review @@ -3813,7 +4852,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartBaseType.php:155 + Part-DB1\src\Form\Part\PartBaseType.php:187 + Part-DB1\src\Form\Part\PartBaseType.php:187 part.edit.is_favorite @@ -3822,7 +4862,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartBaseType.php:161 + Part-DB1\src\Form\Part\PartBaseType.php:195 + Part-DB1\src\Form\Part\PartBaseType.php:195 part.edit.mass @@ -3831,7 +4872,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartBaseType.php:167 + Part-DB1\src\Form\Part\PartBaseType.php:201 + Part-DB1\src\Form\Part\PartBaseType.php:201 part.edit.partUnit @@ -3840,7 +4882,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartBaseType.php:176 + Part-DB1\src\Form\Part\PartBaseType.php:210 + Part-DB1\src\Form\Part\PartBaseType.php:210 part.edit.comment @@ -3849,7 +4892,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartBaseType.php:209 + Part-DB1\src\Form\Part\PartBaseType.php:246 + Part-DB1\src\Form\Part\PartBaseType.php:246 part.edit.master_attachment @@ -3858,7 +4902,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartBaseType.php:232 + Part-DB1\src\Form\Part\PartBaseType.php:276 + Part-DB1\src\Form\Part\PartBaseType.php:276 src\Form\PartType.php:91 @@ -3868,7 +4913,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartBaseType.php:233 + Part-DB1\src\Form\Part\PartBaseType.php:277 + Part-DB1\src\Form\Part\PartBaseType.php:277 src\Form\PartType.php:92 @@ -3878,7 +4924,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartBaseType.php:82 + Part-DB1\src\Form\Part\PartBaseType.php:103 + Part-DB1\src\Form\Part\PartBaseType.php:103 part.edit.name.placeholder @@ -3887,7 +4934,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartBaseType.php:90 + Part-DB1\src\Form\Part\PartBaseType.php:113 + Part-DB1\src\Form\Part\PartBaseType.php:113 part.edit.description.placeholder @@ -3896,7 +4944,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartBaseType.php:94 + Part-DB1\src\Form\Part\PartBaseType.php:121 + Part-DB1\src\Form\Part\PartBaseType.php:121 part.editmininstock.placeholder @@ -3905,7 +4954,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartLotType.php:49 + Part-DB1\src\Form\Part\PartLotType.php:69 + Part-DB1\src\Form\Part\PartLotType.php:69 part_lot.edit.description @@ -3914,7 +4964,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartLotType.php:56 + Part-DB1\src\Form\Part\PartLotType.php:78 + Part-DB1\src\Form\Part\PartLotType.php:78 part_lot.edit.location @@ -3923,7 +4974,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartLotType.php:63 + Part-DB1\src\Form\Part\PartLotType.php:89 + Part-DB1\src\Form\Part\PartLotType.php:89 part_lot.edit.amount @@ -3932,7 +4984,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartLotType.php:69 + Part-DB1\src\Form\Part\PartLotType.php:97 + Part-DB1\src\Form\Part\PartLotType.php:97 part_lot.edit.instock_unknown @@ -3941,7 +4994,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartLotType.php:75 + Part-DB1\src\Form\Part\PartLotType.php:108 + Part-DB1\src\Form\Part\PartLotType.php:108 part_lot.edit.needs_refill @@ -3950,7 +5004,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartLotType.php:81 + Part-DB1\src\Form\Part\PartLotType.php:119 + Part-DB1\src\Form\Part\PartLotType.php:119 part_lot.edit.expiration_date @@ -3959,7 +5014,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Part\PartLotType.php:86 + Part-DB1\src\Form\Part\PartLotType.php:125 + Part-DB1\src\Form\Part\PartLotType.php:125 part_lot.edit.comment @@ -3968,7 +5024,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Permissions\PermissionsType.php:78 + Part-DB1\src\Form\Permissions\PermissionsType.php:99 + Part-DB1\src\Form\Permissions\PermissionsType.php:99 perm.group.other @@ -3977,7 +5034,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\TFAGoogleSettingsType.php:74 + Part-DB1\src\Form\TFAGoogleSettingsType.php:97 + Part-DB1\src\Form\TFAGoogleSettingsType.php:97 tfa_google.enable @@ -3986,7 +5044,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\TFAGoogleSettingsType.php:78 + Part-DB1\src\Form\TFAGoogleSettingsType.php:101 + Part-DB1\src\Form\TFAGoogleSettingsType.php:101 tfa_google.disable @@ -3995,7 +5054,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\TFAGoogleSettingsType.php:56 + Part-DB1\src\Form\TFAGoogleSettingsType.php:74 + Part-DB1\src\Form\TFAGoogleSettingsType.php:74 google_confirmation @@ -4004,7 +5064,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Type\SIUnitType.php:117 + Part-DB1\src\Form\Type\SIUnitType.php:141 + Part-DB1\src\Form\Type\SIUnitType.php:141 M @@ -4013,7 +5074,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Type\SIUnitType.php:117 + Part-DB1\src\Form\Type\SIUnitType.php:141 + Part-DB1\src\Form\Type\SIUnitType.php:141 k @@ -4022,13 +5084,14 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - + - Part-DB1\src\Form\Type\SIUnitType.php:117 + Part-DB1\src\Form\Type\SIUnitType.php:141 + Part-DB1\src\Form\Type\SIUnitType.php:141 m @@ -4037,7 +5100,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\Type\SIUnitType.php:117 + Part-DB1\src\Form\Type\SIUnitType.php:141 + Part-DB1\src\Form\Type\SIUnitType.php:141 µ @@ -4046,7 +5110,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\UserSettingsType.php:85 + Part-DB1\src\Form\UserSettingsType.php:108 + Part-DB1\src\Form\UserSettingsType.php:108 src\Form\UserSettingsType.php:46 @@ -4056,7 +5121,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\UserSettingsType.php:93 + Part-DB1\src\Form\UserSettingsType.php:119 + Part-DB1\src\Form\UserSettingsType.php:119 src\Form\UserSettingsType.php:49 @@ -4066,7 +5132,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\UserSettingsType.php:104 + Part-DB1\src\Form\UserSettingsType.php:132 + Part-DB1\src\Form\UserSettingsType.php:132 user.currency.label @@ -4075,7 +5142,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\UserSettingsType.php:111 + Part-DB1\src\Form\UserSettingsType.php:139 + Part-DB1\src\Form\UserSettingsType.php:139 src\Form\UserSettingsType.php:53 @@ -4085,7 +5153,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\UserSettingsType.php:112 + Part-DB1\src\Form\UserSettingsType.php:140 + Part-DB1\src\Form\UserSettingsType.php:140 src\Form\UserSettingsType.php:54 @@ -4095,7 +5164,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\UserSettingsType.php:81 + Part-DB1\src\Form\UserSettingsType.php:104 + Part-DB1\src\Form\UserSettingsType.php:104 src\Form\UserSettingsType.php:45 @@ -4105,7 +5175,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\UserSettingsType.php:89 + Part-DB1\src\Form\UserSettingsType.php:115 + Part-DB1\src\Form\UserSettingsType.php:115 src\Form\UserSettingsType.php:48 @@ -4115,7 +5186,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Form\UserSettingsType.php:101 + Part-DB1\src\Form\UserSettingsType.php:129 + Part-DB1\src\Form\UserSettingsType.php:129 src\Form\UserSettingsType.php:50 @@ -4125,7 +5197,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ElementTypeNameGenerator.php:56 + Part-DB1\src\Services\ElementTypeNameGenerator.php:79 + Part-DB1\src\Services\ElementTypeNameGenerator.php:79 attachment.label @@ -4134,7 +5207,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ElementTypeNameGenerator.php:58 + Part-DB1\src\Services\ElementTypeNameGenerator.php:81 + Part-DB1\src\Services\ElementTypeNameGenerator.php:81 attachment_type.label @@ -4143,7 +5217,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ElementTypeNameGenerator.php:59 + Part-DB1\src\Services\ElementTypeNameGenerator.php:82 + Part-DB1\src\Services\ElementTypeNameGenerator.php:82 device.label @@ -4152,7 +5227,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ElementTypeNameGenerator.php:62 + Part-DB1\src\Services\ElementTypeNameGenerator.php:85 + Part-DB1\src\Services\ElementTypeNameGenerator.php:85 measurement_unit.label @@ -4161,7 +5237,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ElementTypeNameGenerator.php:63 + Part-DB1\src\Services\ElementTypeNameGenerator.php:86 + Part-DB1\src\Services\ElementTypeNameGenerator.php:86 part.label @@ -4170,7 +5247,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ElementTypeNameGenerator.php:64 + Part-DB1\src\Services\ElementTypeNameGenerator.php:87 + Part-DB1\src\Services\ElementTypeNameGenerator.php:87 part_lot.label @@ -4179,7 +5257,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ElementTypeNameGenerator.php:67 + Part-DB1\src\Services\ElementTypeNameGenerator.php:90 + Part-DB1\src\Services\ElementTypeNameGenerator.php:90 currency.label @@ -4188,7 +5267,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ElementTypeNameGenerator.php:68 + Part-DB1\src\Services\ElementTypeNameGenerator.php:91 + Part-DB1\src\Services\ElementTypeNameGenerator.php:91 orderdetail.label @@ -4197,7 +5277,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ElementTypeNameGenerator.php:69 + Part-DB1\src\Services\ElementTypeNameGenerator.php:92 + Part-DB1\src\Services\ElementTypeNameGenerator.php:92 pricedetail.label @@ -4206,16 +5287,129 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ElementTypeNameGenerator.php:71 + Part-DB1\src\Services\ElementTypeNameGenerator.php:94 + Part-DB1\src\Services\ElementTypeNameGenerator.php:94 user.label User + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:100 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:100 + new + + + log.user_login.ip + IP + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:128 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:150 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:169 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:207 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:128 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:150 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:169 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:207 + new + + + log.undo_mode.undo + Change undone + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:130 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:152 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:171 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:209 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:130 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:152 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:171 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:209 + new + + + log.undo_mode.revert + Element reverted + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:139 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:139 + new + + + log.element_created.original_instock + Old instock + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:160 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:160 + new + + + log.element_deleted.old_name + Old name + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:161 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:161 + new + + + log.element_deleted.old_name.unknown + Unknown + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:184 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:184 + new + + + log.element_edited.changed_fields + Changed fields + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:198 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:198 + new + + + log.instock_changed.comment + Comment + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:214 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:214 + new + + + log.collection_deleted.deleted + Deleted element: + + - Part-DB1\src\Services\MarkdownParser.php:52 + Part-DB1\src\Services\MarkdownParser.php:73 + Part-DB1\src\Services\MarkdownParser.php:73 markdown.loading @@ -4224,7 +5418,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\PasswordResetManager.php:78 + Part-DB1\src\Services\PasswordResetManager.php:98 + Part-DB1\src\Services\PasswordResetManager.php:98 pw_reset.email.subject @@ -4233,7 +5428,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ToolsTreeBuilder.php:85 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:107 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:107 src\Services\ToolsTreeBuilder.php:74 @@ -4243,7 +5439,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ToolsTreeBuilder.php:86 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 src\Services\ToolsTreeBuilder.php:81 @@ -4253,7 +5450,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ToolsTreeBuilder.php:87 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 tree.tools.system @@ -4262,7 +5460,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ToolsTreeBuilder.php:104 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:126 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:126 src\Services\ToolsTreeBuilder.php:62 @@ -4272,7 +5471,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ToolsTreeBuilder.php:110 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:132 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:132 src\Services\ToolsTreeBuilder.php:64 @@ -4282,7 +5482,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ToolsTreeBuilder.php:116 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:138 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:138 src\Services\ToolsTreeBuilder.php:66 @@ -4292,7 +5493,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ToolsTreeBuilder.php:122 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:144 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:144 src\Services\ToolsTreeBuilder.php:68 @@ -4302,7 +5504,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ToolsTreeBuilder.php:128 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:150 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:150 src\Services\ToolsTreeBuilder.php:70 @@ -4312,7 +5515,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ToolsTreeBuilder.php:134 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:156 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:156 tree.tools.edit.storelocation @@ -4321,7 +5525,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ToolsTreeBuilder.php:140 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:162 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:162 tree.tools.edit.footprint @@ -4330,7 +5535,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ToolsTreeBuilder.php:146 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:168 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:168 tree.tools.edit.currency @@ -4339,7 +5545,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ToolsTreeBuilder.php:152 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:174 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:174 tree.tools.edit.measurement_unit @@ -4348,7 +5555,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ToolsTreeBuilder.php:158 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:180 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:180 tree.tools.edit.part @@ -4357,7 +5565,8 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ToolsTreeBuilder.php:175 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 src\Services\ToolsTreeBuilder.php:77 @@ -4367,16 +5576,29 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ToolsTreeBuilder.php:181 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 tree.tools.show.all_attachments Attachments + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:210 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:210 + new + + + tree.tools.show.statistics + Statistics + + - Part-DB1\src\Services\ToolsTreeBuilder.php:200 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:229 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:229 tree.tools.system.users @@ -4385,16 +5607,29 @@ If you have done this incorrectly or if a computer is no longer trusted, you can - Part-DB1\src\Services\ToolsTreeBuilder.php:206 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:235 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:235 tree.tools.system.groups Groups + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:242 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:242 + new + + + tree.tools.system.event_log + Event log + + - Part-DB1\src\Services\TreeBuilder.php:133 + Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 + Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 src\Services\TreeBuilder.php:124 @@ -4402,8 +5637,102 @@ If you have done this incorrectly or if a computer is no longer trusted, you can New Element + + + templates\base.html.twig:81 + obsolete + obsolete + + + go.exclamation + Go! + + + + + templates\base.html.twig:109 + obsolete + obsolete + + + language.english + English + + + + + templates\base.html.twig:112 + obsolete + obsolete + + + language.german + German + + + + + obsolete + obsolete + + + flash.password_change_needed + Password change needed! + + + + + obsolete + obsolete + + + attachment.table.type + Attachment type + + + + + obsolete + obsolete + + + attachment.table.element + Associated element + + + + + obsolete + obsolete + + + attachment.edit.isPicture + Picture? + + + + + obsolete + obsolete + + + attachment.edit.is3DModel + 3D model? + + + + + obsolete + obsolete + + + attachment.edit.isBuiltin + Builtin? + + + obsolete obsolete @@ -4413,6 +5742,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4422,6 +5752,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4431,6 +5762,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4440,6 +5772,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4449,6 +5782,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4458,6 +5792,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4467,6 +5802,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4476,6 +5812,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4485,6 +5822,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4494,6 +5832,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4503,6 +5842,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4512,6 +5852,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4521,6 +5862,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4530,6 +5872,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4539,6 +5882,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4548,6 +5892,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4557,6 +5902,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4566,6 +5912,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4575,6 +5922,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4584,6 +5932,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4593,6 +5942,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4602,6 +5952,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4611,6 +5962,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4621,6 +5973,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can src\Form\PartType.php:63 + obsolete obsolete @@ -4630,6 +5983,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4639,6 +5993,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4648,6 +6003,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4657,6 +6013,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4666,6 +6023,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4675,6 +6033,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4684,6 +6043,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4693,6 +6053,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4702,6 +6063,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4711,6 +6073,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4720,6 +6083,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4729,6 +6093,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4738,6 +6103,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4747,6 +6113,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4756,6 +6123,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4765,6 +6133,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4774,6 +6143,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4783,6 +6153,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4792,6 +6163,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4801,6 +6173,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4810,6 +6183,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can + obsolete obsolete @@ -4820,6 +6194,7 @@ Exampletown + obsolete obsolete @@ -4829,6 +6204,7 @@ Exampletown + obsolete obsolete @@ -4838,6 +6214,7 @@ Exampletown + obsolete obsolete @@ -4847,6 +6224,7 @@ Exampletown + obsolete obsolete @@ -4856,6 +6234,7 @@ Exampletown + obsolete obsolete @@ -4865,6 +6244,7 @@ Exampletown + obsolete obsolete @@ -4874,6 +6254,7 @@ Exampletown + obsolete obsolete @@ -4883,6 +6264,7 @@ Exampletown + obsolete obsolete @@ -4892,6 +6274,7 @@ Exampletown + obsolete obsolete @@ -4901,6 +6284,7 @@ Exampletown + obsolete obsolete @@ -4910,6 +6294,7 @@ Exampletown + obsolete obsolete @@ -4919,6 +6304,7 @@ Exampletown + obsolete obsolete @@ -4928,6 +6314,7 @@ Exampletown + obsolete obsolete @@ -4937,6 +6324,7 @@ Exampletown + obsolete obsolete @@ -4946,6 +6334,7 @@ Exampletown + obsolete obsolete @@ -4957,6 +6346,7 @@ Element 3 + obsolete obsolete @@ -4966,6 +6356,7 @@ Element 3 + obsolete obsolete @@ -4975,6 +6366,7 @@ Element 3 + obsolete obsolete @@ -4984,6 +6376,7 @@ Element 3 + obsolete obsolete @@ -4993,6 +6386,7 @@ Element 3 + obsolete obsolete @@ -5002,6 +6396,7 @@ Element 3 + obsolete obsolete @@ -5011,6 +6406,7 @@ Element 3 + obsolete obsolete @@ -5020,6 +6416,7 @@ Element 3 + obsolete obsolete @@ -5029,6 +6426,7 @@ Element 3 + obsolete obsolete @@ -5038,6 +6436,7 @@ Element 3 + obsolete obsolete @@ -5047,6 +6446,7 @@ Element 3 + obsolete obsolete @@ -5056,6 +6456,7 @@ Element 3 + obsolete obsolete @@ -5065,6 +6466,7 @@ Element 3 + obsolete obsolete @@ -5074,6 +6476,7 @@ Element 3 + obsolete obsolete @@ -5083,6 +6486,7 @@ Element 3 + obsolete obsolete @@ -5092,6 +6496,7 @@ Element 3 + obsolete obsolete @@ -5101,6 +6506,7 @@ Element 3 + obsolete obsolete @@ -5110,6 +6516,7 @@ Element 3 + obsolete obsolete @@ -5119,6 +6526,7 @@ Element 3 + obsolete obsolete @@ -5128,6 +6536,7 @@ Element 3 + obsolete obsolete @@ -5137,6 +6546,7 @@ Element 3 + obsolete obsolete @@ -5146,6 +6556,7 @@ Element 3 + obsolete obsolete @@ -5155,6 +6566,7 @@ Element 3 + obsolete obsolete @@ -5164,6 +6576,7 @@ Element 3 + obsolete obsolete @@ -5173,6 +6586,7 @@ Element 3 + obsolete obsolete @@ -5182,6 +6596,7 @@ Element 3 + obsolete obsolete @@ -5191,6 +6606,7 @@ Element 3 + obsolete obsolete @@ -5200,6 +6616,7 @@ Element 3 + obsolete obsolete @@ -5209,6 +6626,7 @@ Element 3 + obsolete obsolete @@ -5219,6 +6637,7 @@ Element 3 templates\Parts\show_part_info.html.twig:161 + obsolete obsolete @@ -5229,6 +6648,7 @@ Element 3 templates\Parts\show_part_info.html.twig:166 + obsolete obsolete @@ -5239,6 +6659,7 @@ Element 3 templates\Parts\show_part_info.html.twig:171 + obsolete obsolete @@ -5249,6 +6670,7 @@ Element 3 templates\Parts\show_part_info.html.twig:189 + obsolete obsolete @@ -5259,6 +6681,7 @@ Element 3 templates\Parts\show_part_info.html.twig:194 + obsolete obsolete @@ -5269,6 +6692,7 @@ Element 3 templates\Parts\show_part_info.html.twig:199 + obsolete obsolete @@ -5279,6 +6703,7 @@ Element 3 templates\AdminPages\CompanyAdminBase.html.twig:15 + obsolete obsolete @@ -5289,6 +6714,7 @@ Element 3 src\Form\PartType.php:83 + obsolete obsolete @@ -5299,6 +6725,7 @@ Element 3 src\Form\PartType.php:66 + obsolete obsolete @@ -5309,6 +6736,7 @@ Element 3 src\Form\PartType.php:69 + obsolete obsolete @@ -5319,6 +6747,7 @@ Element 3 src\Form\PartType.php:72 + obsolete obsolete @@ -5328,6 +6757,7 @@ Element 3 + obsolete obsolete @@ -5337,6 +6767,7 @@ Element 3 + obsolete obsolete @@ -5346,6 +6777,7 @@ Element 3 + obsolete obsolete @@ -5355,6 +6787,7 @@ Element 3 + obsolete obsolete @@ -5364,6 +6797,7 @@ Element 3 + obsolete obsolete @@ -5373,6 +6807,7 @@ Element 3 + obsolete obsolete @@ -5382,6 +6817,7 @@ Element 3 + obsolete obsolete @@ -5391,6 +6827,7 @@ Element 3 + obsolete obsolete @@ -5400,6 +6837,7 @@ Element 3 + obsolete obsolete @@ -5409,6 +6847,7 @@ Element 3 + obsolete obsolete @@ -5418,6 +6857,7 @@ Element 3 + obsolete obsolete @@ -5427,6 +6867,7 @@ Element 3 + obsolete obsolete @@ -5436,6 +6877,7 @@ Element 3 + obsolete obsolete @@ -5445,6 +6887,7 @@ Element 3 + obsolete obsolete @@ -5454,6 +6897,7 @@ Element 3 + obsolete obsolete @@ -5463,6 +6907,7 @@ Element 3 + obsolete obsolete @@ -5472,6 +6917,7 @@ Element 3 + obsolete obsolete @@ -5481,6 +6927,7 @@ Element 3 + obsolete obsolete @@ -5490,6 +6937,7 @@ Element 3 + obsolete obsolete @@ -5499,6 +6947,7 @@ Element 3 + obsolete obsolete @@ -5508,6 +6957,7 @@ Element 3 + obsolete obsolete @@ -5517,6 +6967,7 @@ Element 3 + obsolete obsolete @@ -5526,6 +6977,7 @@ Element 3 + obsolete obsolete @@ -5535,6 +6987,7 @@ Element 3 + obsolete obsolete @@ -5544,6 +6997,7 @@ Element 3 + obsolete obsolete @@ -5553,6 +7007,7 @@ Element 3 + obsolete obsolete @@ -5562,6 +7017,7 @@ Element 3 + obsolete obsolete @@ -5571,6 +7027,7 @@ Element 3 + obsolete obsolete @@ -5580,6 +7037,7 @@ Element 3 + obsolete obsolete @@ -5589,6 +7047,7 @@ Element 3 + obsolete obsolete @@ -5598,6 +7057,7 @@ Element 3 + obsolete obsolete @@ -5607,6 +7067,7 @@ Element 3 + obsolete obsolete @@ -5616,6 +7077,7 @@ Element 3 + obsolete obsolete @@ -5625,6 +7087,7 @@ Element 3 + obsolete obsolete @@ -5634,6 +7097,7 @@ Element 3 + obsolete obsolete @@ -5643,6 +7107,7 @@ Element 3 + obsolete obsolete @@ -5652,6 +7117,7 @@ Element 3 + obsolete obsolete @@ -5661,6 +7127,7 @@ Element 3 + obsolete obsolete @@ -5670,6 +7137,7 @@ Element 3 + obsolete obsolete @@ -5679,6 +7147,7 @@ Element 3 + obsolete obsolete @@ -5688,6 +7157,7 @@ Element 3 + obsolete obsolete @@ -5697,6 +7167,7 @@ Element 3 + obsolete obsolete @@ -5706,6 +7177,7 @@ Element 3 + obsolete obsolete @@ -5715,6 +7187,7 @@ Element 3 + obsolete obsolete @@ -5724,6 +7197,7 @@ Element 3 + obsolete obsolete @@ -5733,6 +7207,7 @@ Element 3 + obsolete obsolete @@ -5742,6 +7217,7 @@ Element 3 + obsolete obsolete @@ -5751,6 +7227,7 @@ Element 3 + obsolete obsolete @@ -5760,6 +7237,7 @@ Element 3 + obsolete obsolete @@ -5769,6 +7247,7 @@ Element 3 + obsolete obsolete @@ -5778,6 +7257,7 @@ Element 3 + obsolete obsolete @@ -5787,6 +7267,7 @@ Element 3 + obsolete obsolete @@ -5796,6 +7277,7 @@ Element 3 + obsolete obsolete @@ -5805,6 +7287,7 @@ Element 3 + obsolete obsolete @@ -5814,6 +7297,7 @@ Element 3 + obsolete obsolete @@ -5823,6 +7307,7 @@ Element 3 + obsolete obsolete @@ -5832,6 +7317,7 @@ Element 3 + obsolete obsolete @@ -5841,6 +7327,7 @@ Element 3 + obsolete obsolete @@ -5850,6 +7337,7 @@ Element 3 + obsolete obsolete @@ -5859,6 +7347,7 @@ Element 3 + obsolete obsolete @@ -5868,6 +7357,7 @@ Element 3 + obsolete obsolete @@ -5877,6 +7367,7 @@ Element 3 + obsolete obsolete @@ -5886,6 +7377,7 @@ Element 3 + obsolete obsolete @@ -5895,6 +7387,7 @@ Element 3 + obsolete obsolete @@ -5904,6 +7397,7 @@ Element 3 + obsolete obsolete @@ -5913,6 +7407,7 @@ Element 3 + obsolete obsolete @@ -5922,6 +7417,7 @@ Element 3 + obsolete obsolete @@ -5931,6 +7427,7 @@ Element 3 + obsolete obsolete @@ -5940,6 +7437,7 @@ Element 3 + obsolete obsolete @@ -5949,6 +7447,7 @@ Element 3 + obsolete obsolete @@ -5958,6 +7457,7 @@ Element 3 + obsolete obsolete @@ -5967,6 +7467,7 @@ Element 3 + obsolete obsolete @@ -5976,6 +7477,7 @@ Element 3 + obsolete obsolete @@ -5985,6 +7487,7 @@ Element 3 + obsolete obsolete @@ -5994,6 +7497,7 @@ Element 3 + obsolete obsolete @@ -6003,6 +7507,7 @@ Element 3 + obsolete obsolete @@ -6012,6 +7517,7 @@ Element 3 + obsolete obsolete @@ -6021,6 +7527,7 @@ Element 3 + obsolete obsolete @@ -6030,6 +7537,7 @@ Element 3 + obsolete obsolete @@ -6039,6 +7547,7 @@ Element 3 + obsolete obsolete @@ -6048,6 +7557,7 @@ Element 3 + obsolete obsolete @@ -6057,6 +7567,7 @@ Element 3 + obsolete obsolete @@ -6066,6 +7577,7 @@ Element 3 + obsolete obsolete @@ -6075,6 +7587,7 @@ Element 3 + obsolete obsolete @@ -6084,6 +7597,7 @@ Element 3 + obsolete obsolete @@ -6093,6 +7607,7 @@ Element 3 + obsolete obsolete @@ -6102,6 +7617,7 @@ Element 3 + obsolete obsolete @@ -6111,6 +7627,7 @@ Element 3 + obsolete obsolete @@ -6120,6 +7637,7 @@ Element 3 + obsolete obsolete @@ -6129,6 +7647,7 @@ Element 3 + obsolete obsolete @@ -6138,6 +7657,7 @@ Element 3 + obsolete obsolete @@ -6147,6 +7667,7 @@ Element 3 + obsolete obsolete @@ -6156,6 +7677,7 @@ Element 3 + obsolete obsolete @@ -6165,6 +7687,7 @@ Element 3 + obsolete obsolete @@ -6174,6 +7697,7 @@ Element 3 + obsolete obsolete @@ -6183,6 +7707,7 @@ Element 3 + obsolete obsolete @@ -6192,6 +7717,7 @@ Element 3 + obsolete obsolete @@ -6201,6 +7727,7 @@ Element 3 + obsolete obsolete @@ -6210,6 +7737,7 @@ Element 3 + obsolete obsolete @@ -6219,6 +7747,7 @@ Element 3 + obsolete obsolete @@ -6228,6 +7757,7 @@ Element 3 + obsolete obsolete @@ -6237,6 +7767,7 @@ Element 3 + obsolete obsolete @@ -6246,6 +7777,7 @@ Element 3 + obsolete obsolete @@ -6253,124 +7785,129 @@ Element 3 Login successful - - - search.submit - Go! - - - - - attachment.table.filename - File name - - - - - attachment.table.filesize - File size - - - - - log.id - ID - - - - - log.timestamp - Timestamp - - - - - log.type - Event - - - - - log.level - Level - - - - - log.user - User - - - - - log.target_type - Target type - - - - - log.target - Target - - + + obsolete + obsolete + log.type.exception Unhandled exception (obsolete) + + obsolete + obsolete + log.type.user_login User login + + obsolete + obsolete + log.type.user_logout User logout + + obsolete + obsolete + log.type.unknown Unknown + + obsolete + obsolete + log.type.element_created Element created + + obsolete + obsolete + log.type.element_edited Element edited + + obsolete + obsolete + log.type.element_deleted Element deleted - - - log.target_deleted - deleted - - + + obsolete + obsolete + log.type.database_updated Database updated - + + + obsolete + + + perm.revert_elements + Revert element + + + + + obsolete + + + perm.show_history + Show history + + + + + obsolete + + + perm.tools.lastActivity + Show last activity + + + + + obsolete + + + perm.tools.timeTravel + Show old element versions (time travel) + + + + + obsolete + - log.list.title - System log + log.type. + __log.type. diff --git a/translations/security.de.xlf b/translations/security.de.xlf index 54e7ad87..73341200 100644 --- a/translations/security.de.xlf +++ b/translations/security.de.xlf @@ -3,6 +3,7 @@ + obsolete obsolete @@ -12,6 +13,7 @@ + obsolete obsolete @@ -21,6 +23,7 @@ + obsolete obsolete @@ -30,6 +33,7 @@ + obsolete obsolete @@ -39,6 +43,7 @@ + obsolete obsolete @@ -48,6 +53,7 @@ + obsolete obsolete @@ -57,6 +63,7 @@ + obsolete obsolete @@ -66,6 +73,7 @@ + obsolete obsolete @@ -75,6 +83,7 @@ + obsolete obsolete @@ -84,6 +93,7 @@ + obsolete obsolete @@ -93,6 +103,7 @@ + obsolete obsolete @@ -102,6 +113,7 @@ + obsolete obsolete @@ -111,6 +123,7 @@ + obsolete obsolete @@ -120,6 +133,7 @@ + obsolete obsolete @@ -129,6 +143,7 @@ + obsolete obsolete diff --git a/translations/security.en.xlf b/translations/security.en.xlf index 32ebd518..039d881f 100644 --- a/translations/security.en.xlf +++ b/translations/security.en.xlf @@ -3,6 +3,7 @@ + obsolete obsolete @@ -12,6 +13,7 @@ + obsolete obsolete @@ -21,6 +23,7 @@ + obsolete obsolete @@ -30,6 +33,7 @@ + obsolete obsolete @@ -39,6 +43,7 @@ + obsolete obsolete @@ -48,6 +53,7 @@ + obsolete obsolete @@ -57,6 +63,7 @@ + obsolete obsolete @@ -66,6 +73,7 @@ + obsolete obsolete @@ -75,6 +83,7 @@ + obsolete obsolete @@ -84,6 +93,7 @@ + obsolete obsolete @@ -93,6 +103,7 @@ + obsolete obsolete @@ -102,6 +113,7 @@ + obsolete obsolete @@ -111,6 +123,7 @@ + obsolete obsolete @@ -120,6 +133,7 @@ + obsolete obsolete @@ -129,6 +143,7 @@ + obsolete obsolete diff --git a/translations/validators.de.xlf b/translations/validators.de.xlf index 115c88c9..aeb4c3b4 100644 --- a/translations/validators.de.xlf +++ b/translations/validators.de.xlf @@ -5,9 +5,9 @@ Part-DB1\src\Entity\Attachments\AttachmentContainingDBElement.php:0 Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\Company.php:0 - Part-DB1\src\Entity\Base\PartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\StructuralDBElement.php:0 + Part-DB1\src\Entity\Base\AbstractCompany.php:0 + Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 + Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 Part-DB1\src\Entity\Devices\Device.php:0 Part-DB1\src\Entity\Parts\Category.php:0 Part-DB1\src\Entity\Parts\Footprint.php:0 @@ -20,6 +20,22 @@ Part-DB1\src\Entity\PriceInformations\Currency.php:0 Part-DB1\src\Entity\UserSystem\Group.php:0 Part-DB1\src\Entity\UserSystem\User.php:0 + Part-DB1\src\Entity\Attachments\AttachmentContainingDBElement.php:0 + Part-DB1\src\Entity\Attachments\AttachmentType.php:0 + Part-DB1\src\Entity\Base\AbstractCompany.php:0 + Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 + Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 + Part-DB1\src\Entity\Devices\Device.php:0 + Part-DB1\src\Entity\Parts\Category.php:0 + Part-DB1\src\Entity\Parts\Footprint.php:0 + Part-DB1\src\Entity\Parts\Manufacturer.php:0 + Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 + Part-DB1\src\Entity\Parts\Part.php:0 + Part-DB1\src\Entity\Parts\Storelocation.php:0 + Part-DB1\src\Entity\Parts\Supplier.php:0 + Part-DB1\src\Entity\PriceInformations\Currency.php:0 + Part-DB1\src\Entity\UserSystem\Group.php:0 + Part-DB1\src\Entity\UserSystem\User.php:0 part.master_attachment.must_be_picture @@ -29,9 +45,9 @@ Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\Company.php:0 - Part-DB1\src\Entity\Base\PartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\StructuralDBElement.php:0 + Part-DB1\src\Entity\Base\AbstractCompany.php:0 + Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 + Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 Part-DB1\src\Entity\Devices\Device.php:0 Part-DB1\src\Entity\Parts\Category.php:0 Part-DB1\src\Entity\Parts\Footprint.php:0 @@ -41,6 +57,19 @@ Part-DB1\src\Entity\Parts\Supplier.php:0 Part-DB1\src\Entity\PriceInformations\Currency.php:0 Part-DB1\src\Entity\UserSystem\Group.php:0 + Part-DB1\src\Entity\Attachments\AttachmentType.php:0 + Part-DB1\src\Entity\Base\AbstractCompany.php:0 + Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 + Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 + Part-DB1\src\Entity\Devices\Device.php:0 + Part-DB1\src\Entity\Parts\Category.php:0 + Part-DB1\src\Entity\Parts\Footprint.php:0 + Part-DB1\src\Entity\Parts\Manufacturer.php:0 + Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 + Part-DB1\src\Entity\Parts\Storelocation.php:0 + Part-DB1\src\Entity\Parts\Supplier.php:0 + Part-DB1\src\Entity\PriceInformations\Currency.php:0 + Part-DB1\src\Entity\UserSystem\Group.php:0 src\Entity\AttachmentType.php:0 src\Entity\Category.php:0 src\Entity\Company.php:0 @@ -61,14 +90,26 @@ Part-DB1\src\Entity\UserSystem\User.php:0 + Part-DB1\src\Entity\UserSystem\User.php:0 validator.user.username_already_used + + + Part-DB1\src\Entity\UserSystem\User.php:0 + Part-DB1\src\Entity\UserSystem\User.php:0 + + + user.invalid_username + Der Benutzername darf nur Buchstaben, Zahlen, Unterstriche, Punkte, Plus- oder Minuszeichen enthalten. + + + obsolete obsolete @@ -78,6 +119,7 @@ + obsolete obsolete @@ -87,6 +129,7 @@ + obsolete obsolete @@ -96,6 +139,7 @@ + obsolete obsolete @@ -105,6 +149,7 @@ + obsolete obsolete @@ -114,6 +159,7 @@ + obsolete obsolete @@ -123,6 +169,7 @@ + obsolete obsolete @@ -132,6 +179,7 @@ + obsolete obsolete @@ -141,6 +189,7 @@ + obsolete obsolete @@ -150,6 +199,7 @@ + obsolete obsolete @@ -159,6 +209,7 @@ + obsolete obsolete @@ -168,6 +219,7 @@ + obsolete obsolete @@ -177,6 +229,7 @@ + obsolete obsolete @@ -186,6 +239,7 @@ + obsolete obsolete @@ -195,6 +249,7 @@ + obsolete obsolete @@ -204,6 +259,7 @@ + obsolete obsolete @@ -213,6 +269,7 @@ + obsolete obsolete @@ -222,6 +279,7 @@ + obsolete obsolete @@ -231,6 +289,7 @@ + obsolete obsolete @@ -240,6 +299,7 @@ + obsolete obsolete @@ -249,6 +309,7 @@ + obsolete obsolete @@ -258,6 +319,7 @@ + obsolete obsolete @@ -267,6 +329,7 @@ + obsolete obsolete @@ -276,6 +339,7 @@ + obsolete obsolete @@ -285,6 +349,7 @@ + obsolete obsolete @@ -294,6 +359,7 @@ + obsolete obsolete @@ -303,6 +369,7 @@ + obsolete obsolete @@ -312,6 +379,7 @@ + obsolete obsolete @@ -321,6 +389,7 @@ + obsolete obsolete @@ -330,6 +399,7 @@ + obsolete obsolete @@ -339,6 +409,7 @@ + obsolete obsolete @@ -348,6 +419,7 @@ + obsolete obsolete @@ -357,6 +429,7 @@ + obsolete obsolete @@ -366,6 +439,7 @@ + obsolete obsolete @@ -375,6 +449,7 @@ + obsolete obsolete @@ -384,6 +459,7 @@ + obsolete obsolete @@ -393,6 +469,7 @@ + obsolete obsolete @@ -402,6 +479,7 @@ + obsolete obsolete @@ -411,6 +489,7 @@ + obsolete obsolete @@ -420,6 +499,7 @@ + obsolete obsolete @@ -429,6 +509,7 @@ + obsolete obsolete @@ -438,6 +519,7 @@ + obsolete obsolete @@ -447,6 +529,7 @@ + obsolete obsolete @@ -456,6 +539,7 @@ + obsolete obsolete @@ -465,6 +549,7 @@ + obsolete obsolete @@ -474,6 +559,7 @@ + obsolete obsolete @@ -483,6 +569,7 @@ + obsolete obsolete @@ -492,6 +579,7 @@ + obsolete obsolete @@ -501,6 +589,7 @@ + obsolete obsolete @@ -510,6 +599,7 @@ + obsolete obsolete @@ -519,6 +609,7 @@ + obsolete obsolete @@ -528,6 +619,7 @@ + obsolete obsolete @@ -537,6 +629,7 @@ + obsolete obsolete @@ -546,6 +639,7 @@ + obsolete obsolete @@ -555,6 +649,7 @@ + obsolete obsolete @@ -564,6 +659,7 @@ + obsolete obsolete @@ -573,6 +669,7 @@ + obsolete obsolete @@ -582,6 +679,7 @@ + obsolete obsolete @@ -591,6 +689,7 @@ + obsolete obsolete @@ -600,6 +699,7 @@ + obsolete obsolete @@ -609,6 +709,7 @@ + obsolete obsolete @@ -618,6 +719,7 @@ + obsolete obsolete @@ -627,6 +729,7 @@ + obsolete obsolete @@ -636,6 +739,7 @@ + obsolete obsolete @@ -645,6 +749,7 @@ + obsolete obsolete @@ -654,6 +759,7 @@ + obsolete obsolete @@ -663,6 +769,7 @@ + obsolete obsolete @@ -672,6 +779,7 @@ + obsolete obsolete @@ -681,6 +789,7 @@ + obsolete obsolete @@ -690,6 +799,7 @@ + obsolete obsolete @@ -699,6 +809,7 @@ + obsolete obsolete @@ -708,6 +819,7 @@ + obsolete obsolete @@ -717,6 +829,7 @@ + obsolete obsolete @@ -726,6 +839,7 @@ + obsolete obsolete @@ -735,6 +849,7 @@ + obsolete obsolete @@ -744,6 +859,7 @@ + obsolete obsolete @@ -753,6 +869,7 @@ + obsolete obsolete @@ -762,6 +879,7 @@ + obsolete obsolete @@ -771,6 +889,7 @@ + obsolete obsolete @@ -780,6 +899,7 @@ + obsolete obsolete @@ -789,6 +909,7 @@ + obsolete obsolete @@ -798,6 +919,7 @@ + obsolete obsolete @@ -807,6 +929,7 @@ + obsolete obsolete @@ -816,6 +939,7 @@ + obsolete obsolete @@ -825,6 +949,7 @@ + obsolete obsolete @@ -834,6 +959,7 @@ + obsolete obsolete @@ -843,6 +969,7 @@ + obsolete obsolete @@ -852,6 +979,7 @@ + obsolete obsolete @@ -861,6 +989,7 @@ + obsolete obsolete @@ -870,6 +999,7 @@ + obsolete obsolete @@ -879,6 +1009,7 @@ + obsolete obsolete @@ -886,8 +1017,27 @@ Dieser Wert sollte zwischen {{ min }} und {{ max }} sein. + + + obsolete + + + This value is not a valid hostname. + Dieser Wert ist kein gültiger Hostname. + + + + + obsolete + + + The number of elements in this collection should be a multiple of {{ compared_value }}. + Die Anzahl an Elementen in dieser Sammlung sollte ein Vielfaches von {{ compared_value }} sein. + + + obsolete obsolete @@ -897,6 +1047,7 @@ + obsolete obsolete @@ -906,6 +1057,7 @@ + obsolete obsolete @@ -915,6 +1067,7 @@ + obsolete obsolete @@ -924,6 +1077,7 @@ + obsolete obsolete @@ -933,6 +1087,7 @@ + obsolete obsolete @@ -942,6 +1097,7 @@ + obsolete obsolete @@ -951,6 +1107,7 @@ + obsolete obsolete @@ -960,6 +1117,7 @@ + obsolete obsolete @@ -969,6 +1127,7 @@ + obsolete obsolete @@ -976,11 +1135,5 @@ Der Lagerort wurde als "Nur ein Bauteil" markiert, daher kann kein neues Bauteil hinzugefügt werden. - - - user.invalid_username - Der Benutzername darf nur Buchstaben, Zahlen, Unterstriche, Punkte, Plus- oder Minuszeichen enthalten. - - diff --git a/translations/validators.en.xlf b/translations/validators.en.xlf index a4609071..b8f55001 100644 --- a/translations/validators.en.xlf +++ b/translations/validators.en.xlf @@ -5,9 +5,9 @@ Part-DB1\src\Entity\Attachments\AttachmentContainingDBElement.php:0 Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\Company.php:0 - Part-DB1\src\Entity\Base\PartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\StructuralDBElement.php:0 + Part-DB1\src\Entity\Base\AbstractCompany.php:0 + Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 + Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 Part-DB1\src\Entity\Devices\Device.php:0 Part-DB1\src\Entity\Parts\Category.php:0 Part-DB1\src\Entity\Parts\Footprint.php:0 @@ -20,6 +20,22 @@ Part-DB1\src\Entity\PriceInformations\Currency.php:0 Part-DB1\src\Entity\UserSystem\Group.php:0 Part-DB1\src\Entity\UserSystem\User.php:0 + Part-DB1\src\Entity\Attachments\AttachmentContainingDBElement.php:0 + Part-DB1\src\Entity\Attachments\AttachmentType.php:0 + Part-DB1\src\Entity\Base\AbstractCompany.php:0 + Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 + Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 + Part-DB1\src\Entity\Devices\Device.php:0 + Part-DB1\src\Entity\Parts\Category.php:0 + Part-DB1\src\Entity\Parts\Footprint.php:0 + Part-DB1\src\Entity\Parts\Manufacturer.php:0 + Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 + Part-DB1\src\Entity\Parts\Part.php:0 + Part-DB1\src\Entity\Parts\Storelocation.php:0 + Part-DB1\src\Entity\Parts\Supplier.php:0 + Part-DB1\src\Entity\PriceInformations\Currency.php:0 + Part-DB1\src\Entity\UserSystem\Group.php:0 + Part-DB1\src\Entity\UserSystem\User.php:0 part.master_attachment.must_be_picture @@ -29,9 +45,9 @@ Part-DB1\src\Entity\Attachments\AttachmentType.php:0 - Part-DB1\src\Entity\Base\Company.php:0 - Part-DB1\src\Entity\Base\PartsContainingDBElement.php:0 - Part-DB1\src\Entity\Base\StructuralDBElement.php:0 + Part-DB1\src\Entity\Base\AbstractCompany.php:0 + Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 + Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 Part-DB1\src\Entity\Devices\Device.php:0 Part-DB1\src\Entity\Parts\Category.php:0 Part-DB1\src\Entity\Parts\Footprint.php:0 @@ -41,6 +57,19 @@ Part-DB1\src\Entity\Parts\Supplier.php:0 Part-DB1\src\Entity\PriceInformations\Currency.php:0 Part-DB1\src\Entity\UserSystem\Group.php:0 + Part-DB1\src\Entity\Attachments\AttachmentType.php:0 + Part-DB1\src\Entity\Base\AbstractCompany.php:0 + Part-DB1\src\Entity\Base\AbstractPartsContainingDBElement.php:0 + Part-DB1\src\Entity\Base\AbstractStructuralDBElement.php:0 + Part-DB1\src\Entity\Devices\Device.php:0 + Part-DB1\src\Entity\Parts\Category.php:0 + Part-DB1\src\Entity\Parts\Footprint.php:0 + Part-DB1\src\Entity\Parts\Manufacturer.php:0 + Part-DB1\src\Entity\Parts\MeasurementUnit.php:0 + Part-DB1\src\Entity\Parts\Storelocation.php:0 + Part-DB1\src\Entity\Parts\Supplier.php:0 + Part-DB1\src\Entity\PriceInformations\Currency.php:0 + Part-DB1\src\Entity\UserSystem\Group.php:0 src\Entity\AttachmentType.php:0 src\Entity\Category.php:0 src\Entity\Company.php:0 @@ -61,14 +90,26 @@ Part-DB1\src\Entity\UserSystem\User.php:0 + Part-DB1\src\Entity\UserSystem\User.php:0 validator.user.username_already_used + + + Part-DB1\src\Entity\UserSystem\User.php:0 + Part-DB1\src\Entity\UserSystem\User.php:0 + + + user.invalid_username + The username must contain only letters, numbers, underscores, dots, pluses or minuses. + + + obsolete obsolete @@ -78,6 +119,7 @@ + obsolete obsolete @@ -87,6 +129,7 @@ + obsolete obsolete @@ -96,6 +139,7 @@ + obsolete obsolete @@ -105,6 +149,7 @@ + obsolete obsolete @@ -114,6 +159,7 @@ + obsolete obsolete @@ -123,6 +169,7 @@ + obsolete obsolete @@ -132,6 +179,7 @@ + obsolete obsolete @@ -141,6 +189,7 @@ + obsolete obsolete @@ -150,6 +199,7 @@ + obsolete obsolete @@ -159,6 +209,7 @@ + obsolete obsolete @@ -168,6 +219,7 @@ + obsolete obsolete @@ -177,6 +229,7 @@ + obsolete obsolete @@ -186,6 +239,7 @@ + obsolete obsolete @@ -195,6 +249,7 @@ + obsolete obsolete @@ -204,6 +259,7 @@ + obsolete obsolete @@ -213,6 +269,7 @@ + obsolete obsolete @@ -222,6 +279,7 @@ + obsolete obsolete @@ -231,6 +289,7 @@ + obsolete obsolete @@ -240,6 +299,7 @@ + obsolete obsolete @@ -249,6 +309,7 @@ + obsolete obsolete @@ -258,6 +319,7 @@ + obsolete obsolete @@ -267,6 +329,7 @@ + obsolete obsolete @@ -276,6 +339,7 @@ + obsolete obsolete @@ -285,6 +349,7 @@ + obsolete obsolete @@ -294,6 +359,7 @@ + obsolete obsolete @@ -303,6 +369,7 @@ + obsolete obsolete @@ -312,6 +379,7 @@ + obsolete obsolete @@ -321,6 +389,7 @@ + obsolete obsolete @@ -330,6 +399,7 @@ + obsolete obsolete @@ -339,6 +409,7 @@ + obsolete obsolete @@ -348,6 +419,7 @@ + obsolete obsolete @@ -357,6 +429,7 @@ + obsolete obsolete @@ -366,6 +439,7 @@ + obsolete obsolete @@ -375,6 +449,7 @@ + obsolete obsolete @@ -384,6 +459,7 @@ + obsolete obsolete @@ -393,6 +469,7 @@ + obsolete obsolete @@ -402,6 +479,7 @@ + obsolete obsolete @@ -411,6 +489,7 @@ + obsolete obsolete @@ -420,6 +499,7 @@ + obsolete obsolete @@ -429,6 +509,7 @@ + obsolete obsolete @@ -438,6 +519,7 @@ + obsolete obsolete @@ -447,6 +529,7 @@ + obsolete obsolete @@ -456,6 +539,7 @@ + obsolete obsolete @@ -465,6 +549,7 @@ + obsolete obsolete @@ -474,6 +559,7 @@ + obsolete obsolete @@ -483,6 +569,7 @@ + obsolete obsolete @@ -492,6 +579,7 @@ + obsolete obsolete @@ -501,6 +589,7 @@ + obsolete obsolete @@ -510,6 +599,7 @@ + obsolete obsolete @@ -519,6 +609,7 @@ + obsolete obsolete @@ -528,6 +619,7 @@ + obsolete obsolete @@ -537,6 +629,7 @@ + obsolete obsolete @@ -546,6 +639,7 @@ + obsolete obsolete @@ -555,6 +649,7 @@ + obsolete obsolete @@ -564,6 +659,7 @@ + obsolete obsolete @@ -573,6 +669,7 @@ + obsolete obsolete @@ -582,6 +679,7 @@ + obsolete obsolete @@ -591,6 +689,7 @@ + obsolete obsolete @@ -600,6 +699,7 @@ + obsolete obsolete @@ -609,6 +709,7 @@ + obsolete obsolete @@ -618,6 +719,7 @@ + obsolete obsolete @@ -627,6 +729,7 @@ + obsolete obsolete @@ -636,6 +739,7 @@ + obsolete obsolete @@ -645,6 +749,7 @@ + obsolete obsolete @@ -654,6 +759,7 @@ + obsolete obsolete @@ -663,6 +769,7 @@ + obsolete obsolete @@ -672,6 +779,7 @@ + obsolete obsolete @@ -681,6 +789,7 @@ + obsolete obsolete @@ -690,6 +799,7 @@ + obsolete obsolete @@ -699,6 +809,7 @@ + obsolete obsolete @@ -708,6 +819,7 @@ + obsolete obsolete @@ -717,6 +829,7 @@ + obsolete obsolete @@ -726,6 +839,7 @@ + obsolete obsolete @@ -735,6 +849,7 @@ + obsolete obsolete @@ -744,6 +859,7 @@ + obsolete obsolete @@ -753,6 +869,7 @@ + obsolete obsolete @@ -762,6 +879,7 @@ + obsolete obsolete @@ -771,6 +889,7 @@ + obsolete obsolete @@ -780,6 +899,7 @@ + obsolete obsolete @@ -789,6 +909,7 @@ + obsolete obsolete @@ -798,6 +919,7 @@ + obsolete obsolete @@ -807,6 +929,7 @@ + obsolete obsolete @@ -816,6 +939,7 @@ + obsolete obsolete @@ -825,6 +949,7 @@ + obsolete obsolete @@ -834,6 +959,7 @@ + obsolete obsolete @@ -843,6 +969,7 @@ + obsolete obsolete @@ -852,6 +979,7 @@ + obsolete obsolete @@ -861,6 +989,7 @@ + obsolete obsolete @@ -870,6 +999,7 @@ + obsolete obsolete @@ -879,6 +1009,7 @@ + obsolete obsolete @@ -886,8 +1017,27 @@ This value should be between {{ min }} and {{ max }}. + + + obsolete + + + This value is not a valid hostname. + This value is not a valid hostname. + + + + + obsolete + + + The number of elements in this collection should be a multiple of {{ compared_value }}. + The number of elements in this collection should be a multiple of {{ compared_value }}. + + + obsolete obsolete @@ -897,6 +1047,7 @@ + obsolete obsolete @@ -906,6 +1057,7 @@ + obsolete obsolete @@ -915,6 +1067,7 @@ + obsolete obsolete @@ -924,6 +1077,7 @@ + obsolete obsolete @@ -933,6 +1087,7 @@ + obsolete obsolete @@ -942,6 +1097,7 @@ + obsolete obsolete @@ -951,6 +1107,7 @@ + obsolete obsolete @@ -960,6 +1117,7 @@ + obsolete obsolete @@ -969,6 +1127,7 @@ + obsolete obsolete @@ -976,11 +1135,5 @@ The storage location was marked as "single part", so you can not add a new part to it. - - - user.invalid_username - The username must contain only letters, numbers, underscores, dots, pluses or minuses. - -