diff --git a/application/src/Site/BlockLayout/Oembed.php b/application/src/Site/BlockLayout/Oembed.php
index 474cd7327..420843bf0 100644
--- a/application/src/Site/BlockLayout/Oembed.php
+++ b/application/src/Site/BlockLayout/Oembed.php
@@ -15,6 +15,7 @@ class Oembed extends AbstractBlockLayout implements TemplateableBlockLayoutInter
protected $defaultData = [
'url' => null,
+ 'url_old' => null,
'oembed' => null,
'refresh' => false,
];
@@ -39,7 +40,9 @@ public function onHydrate(SitePageBlock $block, ErrorStore $errorStore)
if (is_string($data['oembed'])) {
$data['oembed'] = json_decode($data['oembed'], true);
}
- if (!$data['oembed'] || $data['refresh']) {
+ // Get the oEmbed response when a) the block is new, b) the user wants
+ // to referesh the existing oEmbed, c) the user changes the oEmbed URL.
+ if (!$data['oembed'] || $data['refresh'] || $data['url'] !== $data['url_old']) {
$data['oembed'] = $this->oembed->getOembed($data['url'], $errorStore);
}
$block->setData($data);
@@ -49,29 +52,30 @@ public function form(PhpRenderer $view, SiteRepresentation $site, SitePageRepres
{
$data = $block ? $block->data() + $this->defaultData : $this->defaultData;
$form = new Form\Form;
+
+ $form->add([
+ 'type' => Form\Element\Url::class,
+ 'name' => 'o:block[__blockIndex__][o:data][url]',
+ 'options' => [
+ 'label' => 'oEmbed URL', // @translate
+ ],
+ 'attributes' => [
+ 'value' => $data['url'],
+ 'required' => true,
+ ],
+ ]);
if (!$data['oembed']) {
- $form->add([
- 'type' => Form\Element\Url::class,
- 'name' => 'o:block[__blockIndex__][o:data][url]',
- 'options' => [
- 'label' => 'oEmbed URL', // @translate
- ],
- 'attributes' => [
- 'value' => $data['url'],
- 'required' => true,
- ],
- ]);
return $view->formCollection($form, false);
}
$form->add([
- 'type' => Form\Element\Text::class,
- 'name' => 'oembed_url',
+ 'type' => Form\Element\Url::class,
+ 'name' => 'o:block[__blockIndex__][o:data][url]',
'options' => [
- 'label' => 'oEmbed URL',
+ 'label' => 'oEmbed URL', // @translate
],
'attributes' => [
'value' => $data['url'],
- 'disabled' => true,
+ 'required' => true,
],
]);
$form->add([
@@ -95,7 +99,7 @@ public function form(PhpRenderer $view, SiteRepresentation $site, SitePageRepres
]);
$form->add([
'type' => Form\Element\Hidden::class,
- 'name' => 'o:block[__blockIndex__][o:data][url]',
+ 'name' => 'o:block[__blockIndex__][o:data][url_old]',
'attributes' => [
'value' => $data['url'],
],
@@ -109,12 +113,12 @@ public function form(PhpRenderer $view, SiteRepresentation $site, SitePageRepres
]);
return sprintf(
'%s%s