diff --git a/code/controllers/CMSMain.php b/code/controllers/CMSMain.php index 720373f0..da9adea0 100644 --- a/code/controllers/CMSMain.php +++ b/code/controllers/CMSMain.php @@ -230,7 +230,6 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr $classes = ClassInfo::subclassesFor( $this->stat('tree_class') ); $def['Root'] = array(); - $def['Root']['disallowedChildren'] = array(); $def['Root']['disallowedParents'] = array(); foreach($classes as $class) { @@ -242,8 +241,8 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr // SiteTree::allowedChildren() returns null rather than an empty array if SiteTree::allowed_chldren == 'none' if($allowedChildren == null) $allowedChildren = array(); - - $def[$class]['disallowedChildren'] = array_keys(array_diff($classes, $allowedChildren)); + $allowedChildren = array_keys(array_diff($classes, $allowedChildren)); + if($allowedChildren) $def[$class]['disallowedChildren'] = $allowedChildren; $defaultChild = $obj->defaultChild(); @@ -255,7 +254,7 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr if ($defaultParent != 1 && $defaultParent != null) $def[$class]['defaultParent'] = $defaultParent; - if(is_array($def[$class]['disallowedChildren'])) { + if(isset($def[$class]['disallowedChildren'])) { foreach($def[$class]['disallowedChildren'] as $disallowedChild) { $def[$disallowedChild]['disallowedParents'][] = $class; } diff --git a/javascript/CMSMain.AddForm.js b/javascript/CMSMain.AddForm.js index c62d2206..6b4a9cf2 100644 --- a/javascript/CMSMain.AddForm.js +++ b/javascript/CMSMain.AddForm.js @@ -32,6 +32,7 @@ this.find('#ParentID .TreeDropdownField').bind('change', function() { self.updateTypeList(); }); + this.updateTypeList(); }, /** @@ -42,7 +43,7 @@ var hints = this.find('.hints').data('hints'), metadata = this.find('#ParentID .TreeDropdownField').data('metadata'), id = this.find('#ParentID .TreeDropdownField').getValue(), - newClassName = metadata.ClassName, + newClassName = metadata ? metadata.ClassName : null, disallowedChildren = hints[newClassName ? newClassName : 'Root'].disallowedChildren || [], defaultChildClass = hints[newClassName ? newClassName : 'Root'].defaultChild || null; @@ -64,12 +65,20 @@ }); $(".cms-add-form #PageType li").entwine({ + onclick: function() { + this.setSelected(true); + }, setSelected: function(bool) { this.toggleClass('selected', bool); + if(bool) { + this.siblings().setSelected(false); + this.find('input').attr('checked', 'checked'); + } }, setEnabled: function(bool) { - $(this).toggleClass('disabled', bool); - $(this).find('input').attr('disabled', bool ? '' : 'disabled'); + $(this).toggleClass('disabled', !bool); + if(!bool) $(this).find('input').attr('disabled', 'disabled').removeAttr('checked'); + else $(this).find('input').removeAttr('disabled'); } });