From 8a831c79c57076975ad5c563e5daba7c473023fd Mon Sep 17 00:00:00 2001 From: Will Rossiter Date: Wed, 15 Jul 2009 23:49:15 +0000 Subject: [PATCH] BUGFIX: Fixed bugs in content differencer, and improved styling. BUGFIX: fixed notice when getting title of member which didnt exist. Merged from trunk r77661. git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/cms/branches/2.3@81942 467b73ca-7a2a-4603-9d3b-597d59a354a9 --- code/CMSMain.php | 6 +++++- code/Diff.php | 8 +++++--- css/cms_left.css | 7 +++---- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/code/CMSMain.php b/code/CMSMain.php index 1ae160c1..695f4429 100644 --- a/code/CMSMain.php +++ b/code/CMSMain.php @@ -730,7 +730,7 @@ JS; if($record) { if($record && !$record->canView()) return Security::permissionFailure($this); - + if(!$versionAuthor) $versionAuthor = new ArrayData(array('Title' => 'Unknown author')); $fields = $record->getCMSFields($this); $fields->removeByName("Status"); @@ -823,12 +823,16 @@ JS; $record = $page->compareVersions($fromVersion, $toVersion); $fromVersionRecord = Versioned::get_version('SiteTree', $id, $fromVersion); $toVersionRecord = Versioned::get_version('SiteTree', $id, $toVersion); + if(!$fromVersionRecord) user_error("Can't find version $fromVersion of page $id", E_USER_ERROR); + if(!$toVersionRecord) user_error("Can't find version $toVersion of page $id", E_USER_ERROR); if($record) { $fromDateNice = $fromVersionRecord->obj('LastEdited')->Ago(); $toDateNice = $toVersionRecord->obj('LastEdited')->Ago(); $fromAuthor = DataObject::get_by_id('Member', $fromVersionRecord->AuthorID); + if(!$fromAuthor) $fromAuthor = new ArrayData(array('Title' => 'Unknown author')); $toAuthor = DataObject::get_by_id('Member', $toVersionRecord->AuthorID); + if(!$toAuthor) $toAuthor = new ArrayData(array('Title' => 'Unknown author')); $fields = $record->getCMSFields($this); $fields->push(new HiddenField("ID")); diff --git a/code/Diff.php b/code/Diff.php index bc40ac9a..85f65db4 100755 --- a/code/Diff.php +++ b/code/Diff.php @@ -667,6 +667,9 @@ class Diff // Diff that $diff = new Diff($set1, $set2); + + $tagStack[1] = $tagStack[2] = 0; + $rechunked[1] = $rechunked[2] = array(); // Go through everything, converting edited tags (and their content) into single chunks. Otherwise // the generated HTML gets crusty @@ -704,12 +707,12 @@ class Diff if($chunks) { foreach($chunks as $item) { // $tagStack > 0 indicates that we should be tag-building - if(isset($tagStack[$listName])) $rechunked[$listName][sizeof($rechunked[$listName])-1] .= ' ' . $item; + if($tagStack[$listName]) $rechunked[$listName][sizeof($rechunked[$listName])-1] .= ' ' . $item; else $rechunked[$listName][] = $item; if($lookForTag && isset($item[0]) && $item[0] == "<" && substr($item,0,2) != "