mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
FEATURE: Single instance only page (in the site tree). OS ticket #1554
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@79868 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
parent
96fac4432a
commit
121a92a86a
@ -150,7 +150,16 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid
|
|||||||
*/
|
*/
|
||||||
static $can_create = true;
|
static $can_create = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If this is true, users can create only one instance of this class in the CMS.
|
||||||
|
*/
|
||||||
|
static $single_instance_only = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is used as a CSS class to indicate a sitetree node is a single_instance_only page type
|
||||||
|
*/
|
||||||
|
static $single_instance_only_css_class = 'singleinstanceonly';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Icon to use in the CMS
|
* Icon to use in the CMS
|
||||||
*
|
*
|
||||||
@ -724,6 +733,8 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid
|
|||||||
* @return boolean True if the current user can create pages on this class.
|
* @return boolean True if the current user can create pages on this class.
|
||||||
*/
|
*/
|
||||||
public function canCreate($member = null) {
|
public function canCreate($member = null) {
|
||||||
|
if($this->stat('single_instance_only') && DataObject::get_one($this->class)) return false;
|
||||||
|
|
||||||
if(!$member || !(is_a($member, 'Member')) || is_numeric($member)) $member = Member::currentUser();
|
if(!$member || !(is_a($member, 'Member')) || is_numeric($member)) $member = Member::currentUser();
|
||||||
|
|
||||||
if($member && Permission::checkMember($member, "ADMIN")) return true;
|
if($member && Permission::checkMember($member, "ADMIN")) return true;
|
||||||
@ -739,7 +750,6 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid
|
|||||||
return $this->stat('can_create') != false || Director::isDev();
|
return $this->stat('can_create') != false || Director::isDev();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function should return true if the current user can edit this
|
* This function should return true if the current user can edit this
|
||||||
* page. It can be overloaded to customise the security model for an
|
* page. It can be overloaded to customise the security model for an
|
||||||
@ -1814,6 +1824,9 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid
|
|||||||
if(!$this->ShowInMenus)
|
if(!$this->ShowInMenus)
|
||||||
$classes .= " notinmenu";
|
$classes .= " notinmenu";
|
||||||
|
|
||||||
|
if($this->stat('single_instance_only'))
|
||||||
|
$classes .= " " . $this->stat('single_instance_only_css_class');
|
||||||
|
|
||||||
//TODO: Add integration
|
//TODO: Add integration
|
||||||
/*
|
/*
|
||||||
if($this->hasExtension('Translatable') && $controller->Locale != Translatable::default_locale() && !$this->isTranslation())
|
if($this->hasExtension('Translatable') && $controller->Locale != Translatable::default_locale() && !$this->isTranslation())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user