core icon indicating copy to clipboard operation
core copied to clipboard

Kopieren von Varianten, fehlende Vererbung von nicht Varianten-Attributen

Open tim-bec opened this issue 10 years ago • 11 comments

mm_products (hierarchisch, mehrsprachig) mm_product_group (flat, mehrsprachig)

Attribute

  • Name (variante)
  • Produkt Gruppe (keine Variante)
  • Beschreibung (Variante)

Beim kopieren von (Kind) Elementen werden alle Werte die Variant-override sind übernommen, jedoch z.b. wie in unserem Fall nicht die Produkt-Gruppe (die nur beim Elternelement gesetzt wird) übernommen.

tim-bec avatar Aug 21 '15 12:08 tim-bec

Ähnlich: https://github.com/MetaModels/core/issues/657

tim-bec avatar Sep 29 '15 11:09 tim-bec

@stefanheimes da warst du doch letztens dran?

discordier avatar Sep 29 '15 15:09 discordier

Jop, bin gerade dran da eine Lösung zu finden. Wollte damit diese Woche Anfangen.

stefanheimes avatar Sep 30 '15 09:09 stefanheimes

@stefanheimes für das kopieren hat @dmolineus gestern einen fix (siehe pr) bereitgestellt. Dazu aber noch von David:

ich habe die Ursache für das fehlerhafte Kopieren der Varianten gestern 
noch entdeckt und dafür einen Pull Request gestellt. 

https://github.com/MetaModels/core/pull/891 

Dies behebt allerdings nicht das Problem mit der Mehrsprachigkeit. Die wird vom DCG noch gänzlich missachtet. 

Da müssen an zwei Stellen im DCG einige Umbauarbeiten gemacht werden für eine Lösung. Ich finde die momentane Implementierung der Mehrsprachigkeit des DCG nicht optimal. 

Das Problem mit der Mehrsprachigkeit betrifft uns nicht so ganz akut, ein fix in den nächsten Wochen wäre aber durchaus nicht verkehrt.

tim-bec avatar Sep 30 '15 09:09 tim-bec

Zusatz: Das Kopieren von eine Variante in eine andere Vargroup sorgt auch dafür das die Werte, welche von der Base Varianten kommen, nicht gleich überschrieben werden. Hier für muss erst einmal die Base Variante aufgerufen werden und gespeichert werden.

stefanheimes avatar Sep 30 '15 22:09 stefanheimes

Nein, ich kopiere Elemente in der selben Vargroup, wobei diese dann die Werte verlieren die keine varianten Attribute sind.

tim-bec avatar Sep 30 '15 22:09 tim-bec

Was passiert ist folgendes:

  • Variante einer Gruppe wird innerhalb der Gruppe kopiert
  • DCG cloned das Model -> Item erzeugt Kopie ohne ID
  • DCG speichert das Model -> MetaModel->saveItem wird aufgerufen
  • Da die Daten noch NICHT in der DB liegen müssen die bisher vorhanden Werte der NonVariant Attribute initial geschrieben werden.

Genau dafür sorgt der Fix. Eine Variante holt sich soweit ich das sehe ja nicht dynamisch die Daten jedes Mal von der Base.

dmolineus avatar Sep 30 '15 22:09 dmolineus

Wird die Base gespeichert, schreibt diese alle Daten in die Variaten. deswegen übernimmt eine Variante auch die Base Werte nicht, wenn die Varianten in eine andere VarGroup gezogen wird. Entweder nehmen wir beim Kopieren dann die Möglichkeit dafür weg, das also eine Variante in eine andere VarGroup kopiert werden kann oder passen das saveVariant an.

stefanheimes avatar Oct 01 '15 09:10 stefanheimes

Ok, dann müsste man aber nach dem Kopieren einer Variante das Speichern der Base triggern, sodass auch in der neuen Variante die Werte da sind.

dmolineus avatar Oct 01 '15 09:10 dmolineus

@discordier was sagst du dazu? Dadurch, dass das Kopieren erst später hinzugefügt wurde, ist das save nicht mehr dafür wirklich ausgelegt. Was sollen wir am besten machen? Eigentlich müssen wir das Verhalten für die varianten beim Kopieren noch anpassen das gleiche gilt auch für das Verschieben.

stefanheimes avatar Oct 01 '15 14:10 stefanheimes

Check in MM 2.2

  • Attribut A [text] (ohne V)
  • Attribut B [text] (mit V)
  • Attribut C [komb. V aus A + B] (mit V)

beim Kopieren kommt

ContaoCommunityAlliance\DcGeneral\Exception\DcGeneralRuntimeException:
Unparsable encoded id value: ''

  at vendor/contao-community-alliance/dc-general/src/Data/ModelId.php:117
  at ContaoCommunityAlliance\DcGeneral\Data\ModelId::fromSerialized()
     (vendor/contao-community-alliance/dc-general/src/Controller/ModelCollector.php:147)
  at ContaoCommunityAlliance\DcGeneral\Controller\ModelCollector->getModel()
     (vendor/contao-community-alliance/dc-general/src/EventListener/ModelRelationship/TreeEnforcingListener.php:78)
  at ContaoCommunityAlliance\DcGeneral\EventListener\ModelRelationship\TreeEnforcingListener->process()
     (vendor/symfony/event-dispatcher/Debug/WrappedListener.php:126)
  at Symfony\Component\EventDispatcher\Debug\WrappedListener->__invoke()
     (vendor/symfony/event-dispatcher/EventDispatcher.php:264)
  at Symfony\Component\EventDispatcher\EventDispatcher->doDispatch()
     (vendor/symfony/event-dispatcher/EventDispatcher.php:239)
  at Symfony\Component\EventDispatcher\EventDispatcher->callListeners()
     (vendor/symfony/event-dispatcher/EventDispatcher.php:73)
  at Symfony\Component\EventDispatcher\EventDispatcher->dispatch()
     (vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php:168)
  at Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher->dispatch()
     (vendor/contao-community-alliance/dc-general/src/Contao/View/Contao2BackendView/EditMask.php:785)
  at ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\EditMask->execute()
     (vendor/contao-community-alliance/dc-general/src/Contao/View/Contao2BackendView/ActionHandler/EditHandler.php:120)
  at ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\ActionHandler\EditHandler->process()
     (vendor/contao-community-alliance/dc-general/src/Contao/View/Contao2BackendView/ActionHandler/EditHandler.php:82)
  at ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\ActionHandler\EditHandler->handleEvent()
     (vendor/symfony/event-dispatcher/Debug/WrappedListener.php:126)
  at Symfony\Component\EventDispatcher\Debug\WrappedListener->__invoke()
     (vendor/symfony/event-dispatcher/EventDispatcher.php:264)
  at Symfony\Component\EventDispatcher\EventDispatcher->doDispatch()
     (vendor/symfony/event-dispatcher/EventDispatcher.php:239)
  at Symfony\Component\EventDispatcher\EventDispatcher->callListeners()
     (vendor/symfony/event-dispatcher/EventDispatcher.php:73)
  at Symfony\Component\EventDispatcher\EventDispatcher->dispatch()
     (vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php:168)
  at Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher->dispatch()
     (vendor/contao-community-alliance/dc-general/src/Controller/DefaultController.php:158)
  at ContaoCommunityAlliance\DcGeneral\Controller\DefaultController->handle()
     (vendor/metamodels/core/src/BackendIntegration/Module.php:74)
  at MetaModels\BackendIntegration\Module->generate()
     (vendor/contao/core-bundle/src/Resources/contao/classes/Backend.php:434)
  at Contao\Backend->getBackendModule()
     (vendor/contao/core-bundle/src/Resources/contao/controllers/BackendMain.php:167)
  at Contao\BackendMain->run()
     (vendor/contao/core-bundle/src/Controller/BackendController.php:48)
  at Contao\CoreBundle\Controller\BackendController->mainAction()
     (vendor/symfony/http-kernel/HttpKernel.php:158)
  at Symfony\Component\HttpKernel\HttpKernel->handleRaw()
     (vendor/symfony/http-kernel/HttpKernel.php:80)
  at Symfony\Component\HttpKernel\HttpKernel->handle()
     (vendor/symfony/http-kernel/Kernel.php:201)
  at Symfony\Component\HttpKernel\Kernel->handle()
     (web/index.php:31)

zonky2 avatar May 24 '21 14:05 zonky2