From 949507c3feeea41d5559b82c2456300c2afe5f40 Mon Sep 17 00:00:00 2001 From: Hamish Friedlander Date: Wed, 29 Aug 2012 14:48:23 +1200 Subject: [PATCH 1/2] NEW Add warning if viewed SiteTree object class is obsolete --- code/model/SiteTree.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/code/model/SiteTree.php b/code/model/SiteTree.php index b4a25ef7..da9bcf59 100644 --- a/code/model/SiteTree.php +++ b/code/model/SiteTree.php @@ -1803,7 +1803,7 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid if($this->HasBrokenLink || $this->HasBrokenFile) { $statusMessage[] = _t('SiteTree.HASBROKENLINKS', "This page has broken links."); } - + $dependentNote = ''; $dependentTable = new LiteralField('DependentNote', '

'); @@ -1877,6 +1877,20 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid $tabMain->setTitle(_t('SiteTree.TABCONTENT', "Main Content")); + if($this->ObsoleteClassName) { + $obsoleteWarning = _t( + 'SiteTree.OBSOLETECLASS', + "This page is of obsolete type {type}. Saving will reset it's type and you may lose data", + array('type' => $this->ObsoleteClassName) + ); + + $fields->addFieldToTab( + "Root.Main", + new LiteralField("ObsoleteWarningHeader", "

$obsoleteWarning

"), + "Title" + ); + } + if(file_exists(BASE_PATH . '/install.php')) { $fields->addFieldToTab("Root.Main", new LiteralField("InstallWarningHeader", "

" . _t("SiteTree.REMOVE_INSTALL_WARNING", From d9243cddde050c9d1d65533b92011dc0b5ce7fd1 Mon Sep 17 00:00:00 2001 From: Hamish Friedlander Date: Wed, 29 Aug 2012 16:17:17 +1200 Subject: [PATCH 2/2] FIX Pages with obsolete class shouldnt do first versionless write --- code/controllers/CMSMain.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/controllers/CMSMain.php b/code/controllers/CMSMain.php index dccb354c..bdd5fa2a 100644 --- a/code/controllers/CMSMain.php +++ b/code/controllers/CMSMain.php @@ -783,7 +783,7 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr $record->HasBrokenLink = 0; $record->HasBrokenFile = 0; - $record->writeWithoutVersion(); + if (!$record->ObsoleteClassName) $record->writeWithoutVersion(); // Update the class instance if necessary if(isset($data['ClassName']) && $data['ClassName'] != $record->ClassName) {