I found this post while trying to write a custom migration from Wordpress that includes alt text from images in posts.
For us, the pattern from #2 worked while the pattern from #5 gives an Ajax error
Error: Call to a member function getSource() on null in Drupal\media\Entity\Media->getSource() (line 143 of /app/web/core/modules/media/src/Entity/Media.php).
#0 /app/web/core/modules/media/src/Entity/Media.php(428): Drupal\media\Entity\Media->getSource()
#1 /app/web/core/modules/media/src/MediaStorage.php(27): Drupal\media\Entity\Media->prepareSave()
#2 /app/web/core/lib/Drupal/Core/Entity/EntityBase.php(354): Drupal\media\MediaStorage->save(Object(Drupal\media\Entity\Media))
#3 /app/web/core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php(237): Drupal\Core\Entity\EntityBase->save()
#4 /app/web/core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php(175): Drupal\migrate\Plugin\migrate\destination\EntityContentBase->save(Object(Drupal\media\Entity\Media), Array)
#5 /app/web/core/modules/migrate/src/MigrateExecutable.php(248): Drupal\migrate\Plugin\migrate\destination\EntityContentBase->import(Object(Drupal\migrate\Row), Array)
#6 /app/web/modules/composer/migrate_tools/src/MigrateBatchExecutable.php(236): Drupal\migrate\MigrateExecutable->import()
#7 /app/web/core/includes/batch.inc(296): Drupal\migrate_tools\MigrateBatchExecutable::batchProcessImport('kb_images_media', Array, Array)
#8 /app/web/core/includes/batch.inc(138): _batch_process()
#9 /app/web/core/includes/batch.inc(94): _batch_do()
#10 /app/web/core/modules/system/src/Controller/BatchController.php(52): _batch_page(Object(Symfony\Component\HttpFoundation\Request))
#11 [internal function]: Drupal\system\Controller\BatchController->batchPage(Object(Symfony\Component\HttpFoundation\Request))
#12 /app/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array(Array, Array)
#13 /app/web/core/lib/Drupal/Core/Render/Renderer.php(627): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
#14 /app/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(124): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure))
#15 /app/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array)
#16 /app/vendor/symfony/http-kernel/HttpKernel.php(181): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
#17 /app/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1)
#18 /app/web/core/lib/Drupal/Core/StackMiddleware/Session.php(58): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#19 /app/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#20 /app/web/core/lib/Drupal/Core/StackMiddleware/ContentLength.php(28): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#21 /app/web/core/modules/big_pipe/src/StackMiddleware/ContentLength.php(32): Drupal\Core\StackMiddleware\ContentLength->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#22 /app/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\big_pipe\StackMiddleware\ContentLength->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#23 /app/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#24 /app/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#25 /app/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#26 /app/web/core/lib/Drupal/Core/StackMiddleware/AjaxPageState.php(36): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#27 /app/web/core/lib/Drupal/Core/StackMiddleware/StackedHttpKernel.php(51): Drupal\Core\StackMiddleware\AjaxPageState->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#28 /app/web/core/lib/Drupal/Core/DrupalKernel.php(704): Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#29 /app/web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request))
#30 {main}
Help! I accidentally made a fork??
The existing categories are Content Editing Experience and Media.
I think this module belongs under Developer Tools and Content Editing Experience. I hesitate to add the Media category because Embed can work for so many things beyond media objects.
With this, Crop API, and other "helper" modules I've gone back and forth on adding them to Content Editing Experience category. They do improve the content editing experience but not by themselves, only via another module that uses this API or framework.
Added content editing experience as a category, per my previous comment.
I'm working on this at DrupalCon Portland 2024.
I think this module should be listed under Media and Developer Tools.
I'm working on this at DrupalCon Portland 2024.
I agree that this module belongs in the Security category. I think it may also go in Administrator Tools and Developer Tools as well.
I'm working on this at DrupalCon Portland 2024.
I think this module fits under the Administration Tools category.
I'm working on this at DrupalCon Portland 2024.
I agree with the existing categories of Administration Tools and Developer Tools and I think it could also go under Site Structure because a feature can consist of content types and fields/field settings as well as modules and module settings.
I'm looking at this at DrupalCon Portland 2024
I agree with the existing category of Content Editing Experience.
I'm working on this at DrupalCon Portland 2024.
I think the best fit category for this module is probably Content Display.
I'm working on this at DrupalCon Portland 2024.
This is a duplicate of Better Exposed Filters project - update categories π Better Exposed Filters Project - Update Categories Needs work
I think the existing categories of Developer Tools and Import and Export are sufficient.
I'm working on this at DrupalCon Portland 2024
I think this may belong in the Content Editing Experience category as well as Media.