Skip to content

Commit

Permalink
Merge branch '4'
Browse files Browse the repository at this point in the history
  • Loading branch information
dhensby committed Aug 15, 2017
2 parents 0fbdadb + d469a2d commit a03f6ba
Show file tree
Hide file tree
Showing 168 changed files with 871 additions and 1,653 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Expand Up @@ -61,7 +61,7 @@ before_script:
- if [[ $BEHAT_TEST ]]; then (vendor/bin/serve --bootstrap-file tests/behat/serve-bootstrap.php &> artifacts/serve.log &); fi

script:
- if [[ $PHPUNIT_TEST ]]; then vendor/bin/phpunit tests flush=1; fi
- if [[ $PHPUNIT_TEST ]]; then vendor/bin/phpunit tests/php/ flush=1; fi
- if [[ $BEHAT_TEST ]]; then vendor/bin/behat @cms; fi
- if [[ $NPM_TEST ]]; then git diff-files --quiet -w --relative=client; fi
- if [[ $NPM_TEST ]]; then git diff -w --no-color --relative=client; fi
Expand Down
70 changes: 70 additions & 0 deletions .upgrade.yml
Expand Up @@ -76,5 +76,75 @@ mappings:
URLSegmentField: SilverStripe\CMS\Forms\SiteTreeURLSegmentField
CMSPagesController_Tools_ss: SilverStripe\CMS\Controllers\CMSPagesController
LeftAndMain: SilverStripe\Admin\LeftAndMain
CMSBatchActionsTest: SilverStripe\CMS\Tests\CMSBatchActionsTest
CMSMainTest: SilverStripe\CMS\Tests\CMSMainTest
CMSMainTest_ClassA: SilverStripe\CMS\Tests\CMSMainTest_ClassA
CMSMainTest_ClassB: SilverStripe\CMS\Tests\CMSMainTest_ClassB
CMSMainTest_HiddenClass: SilverStripe\CMS\Tests\CMSMainTest_HiddenClass
CMSMainTest_NotRoot: SilverStripe\CMS\Tests\CMSMainTest_NotRoot
CMSPageHistoryControllerTest: SilverStripe\CMS\Tests\CMSPageHistoryControllerTest
CMSSiteTreeFilterTest: SilverStripe\CMS\Tests\CMSSiteTreeFilterTest
CMSTreeTest: SilverStripe\CMS\Tests\CMSTreeTest
ContentControllerPermissionsTest: SilverStripe\CMS\Tests\ContentControllerPermissionsTest
ContentControllerSearchExtensionTest: SilverStripe\CMS\Tests\ContentControllerSearchExtensionTest
ContentControllerTest: SilverStripe\CMS\Tests\ContentControllerTest
ContentControllerTest_Page: SilverStripe\CMS\Tests\ContentControllerTest_Page
ContentControllerTest_PageController: SilverStripe\CMS\Tests\ContentControllerTest_PageController
ContentControllerTestPage: SilverStripe\CMS\Tests\ContentControllerTestPage
ContentControllerTestPageController: SilverStripe\CMS\Tests\ContentControllerTestPageController
ContentControllerTestPageWithoutController: SilverStripe\CMS\Tests\ContentControllerTestPageWithoutController
ModelAsControllerTest: SilverStripe\CMS\Tests\ModelAsControllerTest
RootURLControllerTest: SilverStripe\CMS\Tests\RootURLControllerTest
SilverStripeNavigatorTest: SilverStripe\CMS\Tests\SilverStripeNavigatorTest
SilverStripeNavigatorTest_ProtectedTestItem: SilverStripe\CMS\Tests\SilverStripeNavigatorTest_ProtectedTestItem
SilverStripeNavigatorTest_TestItem: SilverStripe\CMS\Tests\SilverStripeNavigatorTest_TestItem
FileLinkTrackingTest: SilverStripe\CMS\Tests\FileLinkTrackingTest
RedirectorPageTest: SilverStripe\CMS\Tests\RedirectorPageTest
RedirectorPageTest_RedirectExtension: SilverStripe\CMS\Tests\RedirectorPageTest_RedirectExtension
SiteTreeActionsTest: SilverStripe\CMS\Tests\SiteTreeActionsTest
SiteTreeActionsTest_Page: SilverStripe\CMS\Tests\SiteTreeActionsTest_Page
SiteTreeBacklinksTest: SilverStripe\CMS\Tests\SiteTreeBacklinksTest
SiteTreeBacklinksTest_DOD: SilverStripe\CMS\Tests\SiteTreeBacklinksTest_DOD
SiteTreeBrokenLinksTest: SilverStripe\CMS\Tests\SiteTreeBrokenLinksTest
SiteTreeHTMLEditorFieldTest: SilverStripe\CMS\Tests\SiteTreeHTMLEditorFieldTest
SiteTreeLinkTrackingTest: SilverStripe\CMS\Tests\SiteTreeLinkTrackingTest
SiteTreePermissionsTest: SilverStripe\CMS\Tests\SiteTreePermissionsTest
SiteTreeTest: SilverStripe\CMS\Tests\SiteTreeTest
SiteTreeTest_AdminDenied: SilverStripe\CMS\Tests\SiteTreeTest_AdminDenied
SiteTreeTest_AdminDeniedExtension: SilverStripe\CMS\Tests\SiteTreeTest_AdminDeniedExtension
SiteTreeTest_ClassA: SilverStripe\CMS\Tests\SiteTreeTest_ClassA
SiteTreeTest_ClassB: SilverStripe\CMS\Tests\SiteTreeTest_ClassB
SiteTreeTest_ClassC: SilverStripe\CMS\Tests\SiteTreeTest_ClassC
SiteTreeTest_ClassCext: SilverStripe\CMS\Tests\SiteTreeTest_ClassCext
SiteTreeTest_ClassD: SilverStripe\CMS\Tests\SiteTreeTest_ClassD
SiteTreeTest_ClassE: SilverStripe\CMS\Tests\SiteTreeTest_ClassE
SiteTreeTest_Conflicted: SilverStripe\CMS\Tests\SiteTreeTest_Conflicted
SiteTreeTest_ConflictedController: SilverStripe\CMS\Tests\SiteTreeTest_ConflictedController
SiteTreeTest_DataObject: SilverStripe\CMS\Tests\SiteTreeTest_DataObject
SiteTreeTest_Extension: SilverStripe\CMS\Tests\SiteTreeTest_Extension
SiteTreeTest_ExtensionA: SilverStripe\CMS\Tests\SiteTreeTest_ExtensionA
SiteTreeTest_ExtensionB: SilverStripe\CMS\Tests\SiteTreeTest_ExtensionB
SiteTreeTest_LegacyControllerName: SilverStripe\CMS\Tests\SiteTreeTest_LegacyControllerName
SiteTreeTest_LegacyControllerName_Controller: SilverStripe\CMS\Tests\SiteTreeTest_LegacyControllerName_Controller
SiteTreeTest_NotRoot: SilverStripe\CMS\Tests\SiteTreeTest_NotRoot
SiteTreeTest_NullHtmlCleaner: SilverStripe\CMS\Tests\SiteTreeTest_NullHtmlCleaner
SiteTreeTest_PageNode: SilverStripe\CMS\Tests\SiteTreeTest_PageNode
SiteTreeTest_PageNodeController: SilverStripe\CMS\Tests\SiteTreeTest_PageNodeController
SiteTreeTest_StageStatusInherit: SilverStripe\CMS\Tests\SiteTreeTest_StageStatusInherit
VirtualPageTest: SilverStripe\CMS\Tests\VirtualPageTest
VirtualPageTest_ClassA: SilverStripe\CMS\Tests\VirtualPageTest_ClassA
VirtualPageTest_ClassAController: SilverStripe\CMS\Tests\VirtualPageTest_ClassAController
VirtualPageTest_ClassB: SilverStripe\CMS\Tests\VirtualPageTest_ClassB
VirtualPageTest_ClassC: SilverStripe\CMS\Tests\VirtualPageTest_ClassC
VirtualPageTest_NotRoot: SilverStripe\CMS\Tests\VirtualPageTest_NotRoot
VirtualPageTest_PageExtension: SilverStripe\CMS\Tests\VirtualPageTest_PageExtension
VirtualPageTest_PageWithAllowedChildren: SilverStripe\CMS\Tests\VirtualPageTest_PageWithAllowedChildren
VirtualPageTest_TestDBField: SilverStripe\CMS\Tests\VirtualPageTest_TestDBField
VirtualPageTest_VirtualPageSub: SilverStripe\CMS\Tests\VirtualPageTest_VirtualPageSub
CmsReportsTest: SilverStripe\CMS\Tests\CmsReportsTest
CMSMainSearchFormTest: SilverStripe\CMS\Tests\CMSMainSearchFormTest
ZZZSearchFormTest: SilverStripe\CMS\Tests\ZZZSearchFormTest
MigrateSiteTreeLinkingTaskTest: SilverStripe\CMS\Tests\MigrateSiteTreeLinkingTaskTest
RemoveOrphanedPagesTaskTest: SilverStripe\CMS\Tests\RemoveOrphanedPagesTaskTest
excludedPaths:
- '*/_config/legacy.yml'
2 changes: 1 addition & 1 deletion client/dist/js/TinyMCE_sslink-internal.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions client/src/legacy/TinyMCE_sslink-internal.js
Expand Up @@ -61,6 +61,10 @@ jQuery.entwine('ss', ($) => {
const handleHide = () => this.close();
const handleInsert = (...args) => this.handleInsert(...args);
const attrs = this.getOriginalAttributes();
const selection = tinymce.activeEditor.selection;
const selectionContent = selection.getContent() || '';
const tagName = selection.getNode().tagName;
const requireLinkText = tagName !== 'A' && selectionContent.trim() === '';

// create/update the react component
ReactDOM.render(
Expand All @@ -74,6 +78,7 @@ jQuery.entwine('ss', ($) => {
className="insert-link__dialog-wrapper--internal"
fileAttributes={attrs}
identifier="Admin.InsertLinkInternalModal"
requireLinkText={requireLinkText}
/>
</ApolloProvider>,
this[0]
Expand Down
16 changes: 15 additions & 1 deletion code/Forms/InternalLinkFormFactory.php
Expand Up @@ -8,6 +8,7 @@
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\TextField;
use SilverStripe\Forms\TreeDropdownField;
use SilverStripe\Forms\RequiredFields;

/**
* Provides a form factory for inserting internal page links in a HTML editor
Expand All @@ -23,7 +24,7 @@ protected function getFormFields($controller, $name, $context)
SiteTree::class,
'ID',
'TreeTitle'
),
)->setTitleField('MenuTitle'),
TextField::create(
'Description',
_t(__CLASS__.'.LINKDESCR', 'Link description')
Expand All @@ -35,6 +36,19 @@ protected function getFormFields($controller, $name, $context)
),
]);

if ($context['RequireLinkText']) {
$fields->insertAfter('PageID', TextField::create('Text', _t(__CLASS__.'.LINKTEXT', 'Link text')));
}

return $fields;
}

protected function getValidator($controller, $name, $context)
{
if ($context['RequireLinkText']) {
return RequiredFields::create('Text');
}

return null;
}
}
8 changes: 6 additions & 2 deletions code/Forms/InternalLinkModalExtension.php
Expand Up @@ -34,8 +34,12 @@ public function getOwner()
*/
public function editorInternalLink()
{
/** @var InternalLinkFormFactory $factory */
$showLinkText = $this->getOwner()->getRequest()->getVar('requireLinkText');
$factory = InternalLinkFormFactory::singleton();
return $factory->getForm($this->getOwner(), "editorInternalLink");
return $factory->getForm(
$this->getOwner(),
"editorInternalLink",
[ 'RequireLinkText' => isset($showLinkText) ]
);
}
}
11 changes: 8 additions & 3 deletions code/Model/SiteTree.php
Expand Up @@ -193,13 +193,17 @@ class SiteTree extends DataObject implements PermissionProvider, i18nEntityProvi
);

private static $has_many = array(
"VirtualPages" => "SilverStripe\\CMS\\Model\\VirtualPage.CopyContentFrom"
"VirtualPages" => VirtualPage::class . '.CopyContentFrom'
);

private static $owned_by = array(
"VirtualPages"
);

private static $cascade_deletes = [
'VirtualPages',
];

private static $casting = array(
"Breadcrumbs" => "HTMLFragment",
"LastEdited" => "Datetime",
Expand Down Expand Up @@ -1155,7 +1159,8 @@ public function canCreate($member = null, $context = array())
// Check parent (custom canCreate option for SiteTree)
// Block children not allowed for this parent type
$parent = isset($context['Parent']) ? $context['Parent'] : null;
if ($parent && !in_array(static::class, $parent->allowedChildren())) {
$strictParentInstance = ($parent && $parent instanceof SiteTree);
if ($strictParentInstance && !in_array(static::class, $parent->allowedChildren())) {
return false;
}

Expand All @@ -1171,7 +1176,7 @@ public function canCreate($member = null, $context = array())
}

// Fall over to inherited permissions
if ($parent && $parent->exists()) {
if ($strictParentInstance && $parent->exists()) {
return $parent->canAddChildren($member);
} else {
// This doesn't necessarily mean we are creating a root page, but that
Expand Down
2 changes: 1 addition & 1 deletion code/Model/VirtualPage.php
Expand Up @@ -66,7 +66,7 @@ class VirtualPage extends Page
);

private static $has_one = array(
"CopyContentFrom" => "SilverStripe\\CMS\\Model\\SiteTree",
"CopyContentFrom" => SiteTree::class,
);

private static $owns = array(
Expand Down
102 changes: 52 additions & 50 deletions composer.json
@@ -1,53 +1,55 @@
{
"name": "silverstripe/cms",
"type": "silverstripe-module",
"description": "The SilverStripe Content Management System",
"homepage": "http://silverstripe.org",
"license": "BSD-3-Clause",
"keywords": [
"silverstripe",
"cms"
],
"authors": [
{
"name": "SilverStripe",
"homepage": "http://silverstripe.com"
"name": "silverstripe/cms",
"type": "silverstripe-module",
"description": "The SilverStripe Content Management System",
"homepage": "http://silverstripe.org",
"license": "BSD-3-Clause",
"keywords": [
"silverstripe",
"cms"
],
"authors": [
{
"name": "SilverStripe",
"homepage": "http://silverstripe.com"
},
{
"name": "The SilverStripe Community",
"homepage": "http://silverstripe.org"
}
],
"require": {
"composer/installers": "*",
"silverstripe/admin": "^1@dev",
"silverstripe/campaign-admin": "^1@dev",
"silverstripe/framework": "^4@dev",
"silverstripe/reports": "^4@dev",
"silverstripe/siteconfig": "^4@dev",
"silverstripe/versioned": "^1@dev"
},
{
"name": "The SilverStripe Community",
"homepage": "http://silverstripe.org"
}
],
"require": {
"composer/installers": "^1@dev",
"silverstripe/admin": "^1@dev",
"silverstripe/campaign-admin": "^1@dev",
"silverstripe/framework": "^4@dev",
"silverstripe/reports": "^4@dev",
"silverstripe/siteconfig": "^4@dev",
"silverstripe/versioned": "^1@dev"
},
"require-dev": {
"phpunit/phpunit": "^5.7",
"silverstripe/behat-extension": "^3@dev",
"silverstripe/serve": "dev-master",
"se/selenium-server-standalone": "2.41.0"
},
"extra": {
"branch-alias": {
"4.x-dev": "4.0.x-dev",
"dev-master": "5.x-dev"
}
},
"scripts": {
"lint": "phpcs -s code/ tests/"
},
"autoload": {
"psr-4": {
"SilverStripe\\CMS\\": "code/",
"SilverStripe\\CMS\\Tests\\Behaviour\\": "tests/behat/src/"
}
},
"prefer-stable": true,
"minimum-stability": "dev"
"require-dev": {
"phpunit/phpunit": "^5.7",
"silverstripe/behat-extension": "^3@dev",
"silverstripe/serve": "dev-master",
"se/selenium-server-standalone": "2.41.0"
},
"extra": {
"branch-alias": {
"4.x-dev": "4.0.x-dev",
"dev-master": "5.x-dev"
}
},
"scripts": {
"lint": "phpcs -s code/ tests/php/ tests/behat/src/",
"lint-clean": "phpcbf code/ tests/php/ tests/behat/src/"
},
"autoload": {
"psr-4": {
"SilverStripe\\CMS\\": "code/",
"SilverStripe\\CMS\\Tests\\": "code/php/",
"SilverStripe\\CMS\\Tests\\Behaviour\\": "tests/behat/src/"
}
},
"prefer-stable": true,
"minimum-stability": "dev"
}

0 comments on commit a03f6ba

Please sign in to comment.