diff --git a/code/extension/WidgetPageExtension.php b/code/extension/WidgetPageExtension.php index da07f1d..3363852 100644 --- a/code/extension/WidgetPageExtension.php +++ b/code/extension/WidgetPageExtension.php @@ -47,5 +47,23 @@ class WidgetPageExtension extends DataExtension { return $this->owner->SideBar(); } } + + public function onBeforeDuplicate($duplicatePage) { + if($this->owner->hasField('SideBarID')) { + $sideBar = $this->owner->getComponent('SideBar'); + $duplicateWidgetArea = $sideBar->duplicate(); + + foreach($sideBar->Items() as $originalWidget) { + $widget = $originalWidget->duplicate(false); + $widget->ParentID = $duplicateWidgetArea->ID; + $widget->write(); + } + + $duplicatePage->SideBarID = $duplicateWidgetArea->ID; + + } + + return $duplicatePage; + } }