Merge branch '4.4' into 4

This commit is contained in:
Serge Latyntcev 2019-09-23 16:34:24 +12:00
commit ac123ee700
4 changed files with 18 additions and 9 deletions

View File

@ -29,7 +29,7 @@ class OldPageRedirector extends Extension
$getvars = $request->getVars();
unset($getvars['url']);
$page = self::find_old_page($params);
$page = static::find_old_page($params);
$cleanPage = trim(Director::makeRelative($page), '/');
if (!$cleanPage) {
$cleanPage = Director::makeRelative(RootURLController::get_homepage_link());

View File

@ -128,14 +128,7 @@ abstract class SilverStripeNavigatorItem extends ViewableData
}
if (!isset($record->_cached_isArchived)) {
$baseClass = $record->baseClass();
$currentDraft = Versioned::get_by_stage($baseClass, Versioned::DRAFT)->byID($record->ID);
$currentLive = Versioned::get_by_stage($baseClass, Versioned::LIVE)->byID($record->ID);
$record->_cached_isArchived = (
(!$currentDraft || ($currentDraft && $record->Version != $currentDraft->Version))
&& (!$currentLive || ($currentLive && $record->Version != $currentLive->Version))
);
$record->_cached_isArchived = $record->isArchived();
}
return $record->_cached_isArchived;

View File

@ -491,6 +491,19 @@ class VirtualPage extends Page
return $copy && $copy->exists() && $copy->hasField($field);
}
/**
* @param string $method
* @return bool
*/
public function hasMethod($method)
{
if (parent::hasMethod($method)) {
return true;
}
$copy = $this->CopyContentFrom();
return $copy && $copy->exists() && $copy->hasMethod($method);
}
/**
* Return the "casting helper" (a piece of PHP code that when evaluated creates a casted value object) for a field
* on this object.

View File

@ -669,6 +669,9 @@ class VirtualPageTest extends FunctionalTest
{
/** @var VirtualPage $virtualPage */
$virtualPage = $this->objFromFixture(VirtualPage::class, 'vp4');
$this->assertTrue($virtualPage->hasMethod('modelMethod'));
$this->assertEquals('hi there', $virtualPage->modelMethod());
/** @var VirtualPageTest_ClassAController $controller */
$controller = ModelAsController::controller_for($virtualPage);
$this->assertInstanceOf(VirtualPageTest_ClassAController::class, $controller);