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;
|
||||
|
||||
|
||||
/**
|
||||
* 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
|
||||
*
|
||||
@ -724,6 +733,8 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid
|
||||
* @return boolean True if the current user can create pages on this class.
|
||||
*/
|
||||
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 && 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();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This function should return true if the current user can edit this
|
||||
* 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)
|
||||
$classes .= " notinmenu";
|
||||
|
||||
if($this->stat('single_instance_only'))
|
||||
$classes .= " " . $this->stat('single_instance_only_css_class');
|
||||
|
||||
//TODO: Add integration
|
||||
/*
|
||||
if($this->hasExtension('Translatable') && $controller->Locale != Translatable::default_locale() && !$this->isTranslation())
|
||||
|
Loading…
x
Reference in New Issue
Block a user