mirror of
https://github.com/silverstripe/silverstripe-subsites
synced 2024-10-22 11:05:55 +02:00
Merge pull request #418 from creative-commoners/pulls/2.3/fluent-domain-docs
Ensure URL segment field type before using its API, and add docs around subsite and fluent domain compatibility
This commit is contained in:
commit
5c4a655106
@ -48,3 +48,14 @@ to speak to your website administrator or hosting provider to facilitate this.
|
|||||||
|
|
||||||
|
|
||||||
You can simulate subsite access without setting up virtual hosts by appending ?SubsiteID=<ID> to the request.
|
You can simulate subsite access without setting up virtual hosts by appending ?SubsiteID=<ID> to the request.
|
||||||
|
|
||||||
|
### How do Subsite domains work with Fluent domains?
|
||||||
|
|
||||||
|
The Subsites module and Fluent translation module both provide the concept of defining "domains" and let you
|
||||||
|
configure the host name for it. This functionality is essentially performing the same duty in both modules.
|
||||||
|
|
||||||
|
In the "URL segment" field for CMS pages, both Subsites and Fluent will add their context to the value. If you
|
||||||
|
have a Subsite domain configured but no Fluent domain, Fluent will respect the existing domain and add its
|
||||||
|
locale context to the value. If you have a Subsite domain configured and a Fluent domain configured, Fluent will
|
||||||
|
use its own domain host name value, and the Subsite domain value will be lost. For this reason, you will need
|
||||||
|
to ensure that you use the same host name in both Subsite and Fluent domain entries.
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
namespace SilverStripe\Subsites\Extensions;
|
namespace SilverStripe\Subsites\Extensions;
|
||||||
|
|
||||||
use Page;
|
use Page;
|
||||||
|
use SilverStripe\CMS\Forms\SiteTreeURLSegmentField;
|
||||||
use SilverStripe\CMS\Model\SiteTree;
|
use SilverStripe\CMS\Model\SiteTree;
|
||||||
use SilverStripe\Control\Controller;
|
use SilverStripe\Control\Controller;
|
||||||
use SilverStripe\Control\Director;
|
use SilverStripe\Control\Director;
|
||||||
@ -150,6 +151,7 @@ class SiteTreeSubsites extends DataExtension
|
|||||||
// replace readonly link prefix
|
// replace readonly link prefix
|
||||||
$subsite = $this->owner->Subsite();
|
$subsite = $this->owner->Subsite();
|
||||||
$nested_urls_enabled = Config::inst()->get(SiteTree::class, 'nested_urls');
|
$nested_urls_enabled = Config::inst()->get(SiteTree::class, 'nested_urls');
|
||||||
|
/** @var Subsite $subsite */
|
||||||
if ($subsite && $subsite->exists()) {
|
if ($subsite && $subsite->exists()) {
|
||||||
// Use baseurl from domain
|
// Use baseurl from domain
|
||||||
$baseLink = $subsite->absoluteBaseURL();
|
$baseLink = $subsite->absoluteBaseURL();
|
||||||
@ -163,7 +165,7 @@ class SiteTreeSubsites extends DataExtension
|
|||||||
}
|
}
|
||||||
|
|
||||||
$urlsegment = $fields->dataFieldByName('URLSegment');
|
$urlsegment = $fields->dataFieldByName('URLSegment');
|
||||||
if ($urlsegment) {
|
if ($urlsegment && $urlsegment instanceof SiteTreeURLSegmentField) {
|
||||||
$urlsegment->setURLPrefix($baseLink);
|
$urlsegment->setURLPrefix($baseLink);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,10 +5,10 @@ namespace SilverStripe\Subsites\Tests;
|
|||||||
use Page;
|
use Page;
|
||||||
use SilverStripe\CMS\Controllers\CMSMain;
|
use SilverStripe\CMS\Controllers\CMSMain;
|
||||||
use SilverStripe\CMS\Controllers\ModelAsController;
|
use SilverStripe\CMS\Controllers\ModelAsController;
|
||||||
|
use SilverStripe\CMS\Forms\SiteTreeURLSegmentField;
|
||||||
use SilverStripe\CMS\Model\SiteTree;
|
use SilverStripe\CMS\Model\SiteTree;
|
||||||
use SilverStripe\Control\Director;
|
use SilverStripe\Control\Director;
|
||||||
use SilverStripe\Core\Config\Config;
|
use SilverStripe\Core\Config\Config;
|
||||||
use SilverStripe\Core\Convert;
|
|
||||||
use SilverStripe\ErrorPage\ErrorPage;
|
use SilverStripe\ErrorPage\ErrorPage;
|
||||||
use SilverStripe\Forms\FieldList;
|
use SilverStripe\Forms\FieldList;
|
||||||
use SilverStripe\Security\Member;
|
use SilverStripe\Security\Member;
|
||||||
@ -21,6 +21,7 @@ use SilverStripe\Subsites\Tests\SiteTreeSubsitesTest\TestClassB;
|
|||||||
use SilverStripe\Subsites\Tests\SiteTreeSubsitesTest\TestErrorPage;
|
use SilverStripe\Subsites\Tests\SiteTreeSubsitesTest\TestErrorPage;
|
||||||
use SilverStripe\Versioned\Versioned;
|
use SilverStripe\Versioned\Versioned;
|
||||||
use SilverStripe\View\SSViewer;
|
use SilverStripe\View\SSViewer;
|
||||||
|
use TractorCow\Fluent\Extension\FluentSiteTreeExtension;
|
||||||
|
|
||||||
class SiteTreeSubsitesTest extends BaseSubsiteTest
|
class SiteTreeSubsitesTest extends BaseSubsiteTest
|
||||||
{
|
{
|
||||||
@ -33,7 +34,9 @@ class SiteTreeSubsitesTest extends BaseSubsiteTest
|
|||||||
];
|
];
|
||||||
|
|
||||||
protected static $illegal_extensions = [
|
protected static $illegal_extensions = [
|
||||||
SiteTree::class => ['Translatable'] // @todo implement Translatable namespace
|
SiteTree::class => [
|
||||||
|
FluentSiteTreeExtension::class,
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
@ -449,7 +452,7 @@ class SiteTreeSubsitesTest extends BaseSubsiteTest
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider provideAlternateAbsoluteLink
|
* @dataProvider provideAlternateAbsoluteLink
|
||||||
* @param name $pageFixtureName
|
* @param string $pageFixtureName
|
||||||
* @param string|null $action
|
* @param string|null $action
|
||||||
* @param string $expectedAbsoluteLink
|
* @param string $expectedAbsoluteLink
|
||||||
*/
|
*/
|
||||||
@ -465,4 +468,23 @@ class SiteTreeSubsitesTest extends BaseSubsiteTest
|
|||||||
|
|
||||||
$this->assertEquals($expectedAbsoluteLink, $result);
|
$this->assertEquals($expectedAbsoluteLink, $result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testURLSegmentBaseIsSetToSubsiteBaseURL()
|
||||||
|
{
|
||||||
|
// This subsite has a domain with 'one.example.org' as the primary domain
|
||||||
|
/** @var Subsite $subsite */
|
||||||
|
$subsite = $this->objFromFixture(Subsite::class, 'domaintest1');
|
||||||
|
Subsite::changeSubsite($subsite);
|
||||||
|
|
||||||
|
$page = new SiteTree();
|
||||||
|
$page->SubsiteID = $subsite->ID;
|
||||||
|
$page->write();
|
||||||
|
$fields = $page->getCMSFields();
|
||||||
|
|
||||||
|
/** @var SiteTreeURLSegmentField $urlSegmentField */
|
||||||
|
$urlSegmentField = $fields->dataFieldByName('URLSegment');
|
||||||
|
$this->assertInstanceOf(SiteTreeURLSegmentField::class, $urlSegmentField);
|
||||||
|
|
||||||
|
$this->assertSame('http://one.example.org/', $urlSegmentField->getURLPrefix());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user