mirror of
https://github.com/silverstripe/silverstripe-cms
synced 2024-10-22 08:05:56 +02:00
Merge branch '4.10' into 4
This commit is contained in:
commit
ab22108c85
@ -2365,7 +2365,7 @@ class SiteTree extends DataObject implements PermissionProvider, i18nEntityProvi
|
||||
// "unpublish"
|
||||
if ($isPublished && $isOnDraft && $canUnpublish) {
|
||||
$moreOptions->push(
|
||||
FormAction::create('unpublish', _t(__CLASS__.'.BUTTONUNPUBLISH', 'Unpublish'), 'delete')
|
||||
FormAction::create('unpublish', _t(__CLASS__.'.BUTTONUNPUBLISH', 'Unpublish'))
|
||||
->setDescription(_t(__CLASS__.'.BUTTONUNPUBLISHDESC', 'Remove this page from the published site'))
|
||||
->addExtraClass('btn-secondary' . ($this->isHomePage() ? ' homepage-warning' : ''))
|
||||
);
|
||||
|
@ -1744,4 +1744,214 @@ class SiteTreeTest extends SapphireTest
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public function testGetCMSActions()
|
||||
{
|
||||
// Create new page on DRAFT
|
||||
$page = SiteTree::create();
|
||||
$page->Content = md5(rand(0, PHP_INT_MAX));
|
||||
$page->write();
|
||||
|
||||
// BEGIN DRAFT
|
||||
$actions = $page->getCMSActions();
|
||||
$this->assertNotNull(
|
||||
$actions->fieldByName('MajorActions.action_save'),
|
||||
'save action present for a saved draft page'
|
||||
);
|
||||
$this->assertNotNull(
|
||||
$actions->fieldByName('MajorActions.action_publish'),
|
||||
'publish action present for a saved draft page'
|
||||
);
|
||||
$this->assertNotNull(
|
||||
$actions->fieldByName('ActionMenus.MoreOptions.action_archive'),
|
||||
'archive action present for a saved draft page'
|
||||
);
|
||||
$this->assertNotNull(
|
||||
$actions->fieldByName('ActionMenus.MoreOptions.action_addtocampaign'),
|
||||
'addtocampaign action present for a saved draft page'
|
||||
);
|
||||
$this->assertNull(
|
||||
$actions->fieldByName('ActionMenus.MoreOptions.action_unpublish'),
|
||||
'no unpublish action present for a saved draft page'
|
||||
);
|
||||
$this->assertNull(
|
||||
$actions->fieldByName('ActionMenus.MoreOptions.action_rollback'),
|
||||
'no rollback action present for a saved draft page'
|
||||
);
|
||||
$this->assertNull(
|
||||
$actions->fieldByName('MajorActions.action_restore'),
|
||||
'no restore action present for a saved draft page'
|
||||
);
|
||||
// END DRAFT
|
||||
|
||||
// BEGIN PUBLISHED
|
||||
$page->doPublish();
|
||||
$actions = $page->getCMSActions();
|
||||
$this->assertNull(
|
||||
$actions->fieldByName('MajorActions.action_save'),
|
||||
'no save action present for a published page'
|
||||
);
|
||||
$this->assertNull(
|
||||
$actions->fieldByName('ActionMenus.MoreOptions.action_archive'),
|
||||
'no archive action present for a saved draft page'
|
||||
);
|
||||
$this->assertNotNull(
|
||||
$actions->fieldByName('ActionMenus.MoreOptions.action_rollback'),
|
||||
'rollback action present for a published page'
|
||||
);
|
||||
$this->assertNull(
|
||||
$actions->fieldByName('ActionMenus.MoreOptions.action_unpublish'),
|
||||
'no unpublish action present for a published page'
|
||||
);
|
||||
$this->assertNotNull(
|
||||
$actions->fieldByName('ActionMenus.MoreOptions.action_addtocampaign'),
|
||||
'addtocampaign action present for a published page'
|
||||
);
|
||||
$this->assertNull(
|
||||
$actions->fieldByName('MajorActions.action_restore'),
|
||||
'no restore action present for a published page'
|
||||
);
|
||||
// END PUBLISHED
|
||||
|
||||
// BEGIN DRAFT AFTER PUBLISHED
|
||||
$page->Content = md5(rand(0, PHP_INT_MAX));
|
||||
$page->write();
|
||||
$actions = $page->getCMSActions();
|
||||
|
||||
$this->assertNotNull(
|
||||
$actions->fieldByName('MajorActions.action_save'),
|
||||
'save action present for a changed published page'
|
||||
);
|
||||
$this->assertNotNull(
|
||||
$actions->fieldByName('ActionMenus.MoreOptions.action_unpublish'),
|
||||
'unpublish action present for a changed published page'
|
||||
);
|
||||
$this->assertNotNull(
|
||||
$actions->fieldByName('ActionMenus.MoreOptions.action_archive'),
|
||||
'archive action present for a changed published page'
|
||||
);
|
||||
$this->assertNotNull(
|
||||
$actions->fieldByName('ActionMenus.MoreOptions.action_rollback'),
|
||||
'rollback action present for a changed published page'
|
||||
);
|
||||
$this->assertNotNull(
|
||||
$actions->fieldByName('ActionMenus.MoreOptions.action_addtocampaign'),
|
||||
'addtocampaign action present for a changed published page'
|
||||
);
|
||||
$this->assertNull(
|
||||
$actions->fieldByName('MajorActions.action_restore'),
|
||||
'no restore action present for a changed published page'
|
||||
);
|
||||
// END DRAFT AFTER PUBLISHED
|
||||
|
||||
// BEGIN ARCHIVED
|
||||
$page->doArchive();
|
||||
$actions = $page->getCMSActions();
|
||||
|
||||
$this->assertNull(
|
||||
$actions->fieldByName('MajorActions.action_save'),
|
||||
'no save action present for a archived page'
|
||||
);
|
||||
$this->assertNull(
|
||||
$actions->fieldByName('ActionMenus.MoreOptions.action_unpublish'),
|
||||
'no unpublish action present for a archived page'
|
||||
);
|
||||
$this->assertNull(
|
||||
$actions->fieldByName('ActionMenus.MoreOptions.action_archive'),
|
||||
'no archive action present for a archived page'
|
||||
);
|
||||
$this->assertNull(
|
||||
$actions->fieldByName('ActionMenus.MoreOptions.action_rollback'),
|
||||
'no rollback action present for a archived page'
|
||||
);
|
||||
$this->assertNull(
|
||||
$actions->fieldByName('ActionMenus.MoreOptions.action_addtocampaign'),
|
||||
'no addtocampaign action present for a archived page'
|
||||
);
|
||||
$this->assertNotNull(
|
||||
$actions->fieldByName('MajorActions.action_restore'),
|
||||
'restore action present for a archived page'
|
||||
);
|
||||
// END ARCHIVED
|
||||
}
|
||||
|
||||
public function testGetCMSActionsWithoutForms()
|
||||
{
|
||||
// Create new page on DRAFT
|
||||
$page = SiteTree::create();
|
||||
$page->Content = md5(rand(0, PHP_INT_MAX));
|
||||
$page->write();
|
||||
|
||||
// BEGIN DRAFT
|
||||
$actions = $page->getCMSActions();
|
||||
|
||||
$this->assertEmpty(
|
||||
$actions->fieldByName('MajorActions.action_save')->getForm(),
|
||||
'save action has no form when page is draft'
|
||||
);
|
||||
$this->assertEmpty(
|
||||
$actions->fieldByName('MajorActions.action_publish')->getForm(),
|
||||
'publish action has no form when page is draft'
|
||||
);
|
||||
$this->assertEmpty(
|
||||
$actions->fieldByName('ActionMenus.MoreOptions.action_archive')->getForm(),
|
||||
'archive action has no form when page is draft'
|
||||
);
|
||||
$this->assertEmpty(
|
||||
$actions->fieldByName('ActionMenus.MoreOptions.action_addtocampaign')->getForm(),
|
||||
'addtocampaign action has no form when page is draft'
|
||||
);
|
||||
// END DRAFT
|
||||
|
||||
// BEGIN PUBLISHED
|
||||
$page->doPublish();
|
||||
$actions = $page->getCMSActions();
|
||||
|
||||
$this->assertEmpty(
|
||||
$actions->fieldByName('ActionMenus.MoreOptions.action_rollback')->getForm(),
|
||||
'rollback action has no form when page is published'
|
||||
);
|
||||
$this->assertEmpty(
|
||||
$actions->fieldByName('ActionMenus.MoreOptions.action_addtocampaign')->getForm(),
|
||||
'addtocampaign action has no form when page is published'
|
||||
);
|
||||
// END PUBLISHED
|
||||
|
||||
// BEGIN DRAFT AFTER PUBLISHED
|
||||
$page->Content = md5(rand(0, PHP_INT_MAX));
|
||||
$page->write();
|
||||
$actions = $page->getCMSActions();
|
||||
|
||||
$this->assertEmpty(
|
||||
$actions->fieldByName('MajorActions.action_save')->getForm(),
|
||||
'save action has no form when page is draft after published'
|
||||
);
|
||||
$this->assertEmpty(
|
||||
$actions->fieldByName('ActionMenus.MoreOptions.action_unpublish')->getForm(),
|
||||
'unpublish action has no form when page is draft after published'
|
||||
);
|
||||
$this->assertEmpty(
|
||||
$actions->fieldByName('ActionMenus.MoreOptions.action_archive')->getForm(),
|
||||
'archive action has no form when page is draft after published'
|
||||
);
|
||||
$this->assertEmpty(
|
||||
$actions->fieldByName('ActionMenus.MoreOptions.action_rollback')->getForm(),
|
||||
'rollback action has no form when page is draft after published'
|
||||
);
|
||||
$this->assertEmpty(
|
||||
$actions->fieldByName('ActionMenus.MoreOptions.action_addtocampaign')->getForm(),
|
||||
'addtocampaign action has no form when page is draft after published'
|
||||
);
|
||||
// END DRAFT AFTER PUBLISHED
|
||||
|
||||
// BEGIN ARCHIVED
|
||||
$page->doArchive();
|
||||
$actions = $page->getCMSActions();
|
||||
|
||||
$this->assertEmpty(
|
||||
$actions->fieldByName('MajorActions.action_restore')->getForm(),
|
||||
'retore action has no form when page archived'
|
||||
);
|
||||
// END ARCHIVED
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user