mirror of
https://github.com/BookStackApp/BookStack.git
synced 2025-12-13 07:42:23 +03:00
Copying: Fixed issue with non-page links to page permalinks
Found during manual testing. Added test case to cover.
This commit is contained in:
@@ -17,17 +17,6 @@ class ReferenceChangeContext
|
|||||||
$this->changes[] = [$oldEntity, $newEntity];
|
$this->changes[] = [$oldEntity, $newEntity];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get all the change pairs.
|
|
||||||
* Returned array is an array of pairs, where the first item is the old entity
|
|
||||||
* and the second is the new entity.
|
|
||||||
* @return array<array{0: Entity, 1: Entity}>
|
|
||||||
*/
|
|
||||||
public function getChanges(): array
|
|
||||||
{
|
|
||||||
return $this->changes;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get all the new entities from the changes.
|
* Get all the new entities from the changes.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ class ReferenceUpdater
|
|||||||
|
|
||||||
$this->updateReferencesWithinEntity($new, $oldToEntity->getUrl(), $newToEntity->getUrl());
|
$this->updateReferencesWithinEntity($new, $oldToEntity->getUrl(), $newToEntity->getUrl());
|
||||||
if ($newToEntity instanceof Page && $oldToEntity instanceof Page) {
|
if ($newToEntity instanceof Page && $oldToEntity instanceof Page) {
|
||||||
$this->updateReferencesWithinPage($newToEntity, $oldToEntity->getPermalink(), $newToEntity->getPermalink());
|
$this->updateReferencesWithinEntity($new, $oldToEntity->getPermalink(), $newToEntity->getPermalink());
|
||||||
}
|
}
|
||||||
$reference->to_id = $newToEntity->id;
|
$reference->to_id = $newToEntity->id;
|
||||||
$reference->to_type = $newToEntity->getMorphClass();
|
$reference->to_type = $newToEntity->getMorphClass();
|
||||||
|
|||||||
@@ -265,6 +265,25 @@ class CopyTest extends TestCase
|
|||||||
$this->assertStringNotContainsString($page->getUrl() . '"', $newChapter->description_html);
|
$this->assertStringNotContainsString($page->getUrl() . '"', $newChapter->description_html);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function test_chapter_copy_updates_internal_permalink_references_in_its_description()
|
||||||
|
{
|
||||||
|
$chapter = $this->entities->chapterHasPages();
|
||||||
|
/** @var Page $page */
|
||||||
|
$page = $chapter->pages()->first();
|
||||||
|
|
||||||
|
$this->asEditor()->put($chapter->getUrl(), [
|
||||||
|
'name' => 'Internal ref test',
|
||||||
|
'description_html' => '<p>This is a test <a href="' . $page->getPermalink() . '">page link</a></p>',
|
||||||
|
]);
|
||||||
|
$chapter->refresh();
|
||||||
|
|
||||||
|
$this->post($chapter->getUrl('/copy'), ['name' => 'My copied chapter']);
|
||||||
|
$newChapter = Chapter::query()->where('name', '=', 'My copied chapter')->first();
|
||||||
|
|
||||||
|
$this->assertStringContainsString('/link/', $newChapter->description_html);
|
||||||
|
$this->assertStringNotContainsString($page->getPermalink() . '"', $newChapter->description_html);
|
||||||
|
}
|
||||||
|
|
||||||
public function test_page_copy_updates_internal_self_references()
|
public function test_page_copy_updates_internal_self_references()
|
||||||
{
|
{
|
||||||
$page = $this->entities->page();
|
$page = $this->entities->page();
|
||||||
|
|||||||
Reference in New Issue
Block a user