diff --git a/code/NewsletterAdmin.php b/code/NewsletterAdmin.php index 6a7e38f9..8a8f3939 100755 --- a/code/NewsletterAdmin.php +++ b/code/NewsletterAdmin.php @@ -689,9 +689,19 @@ JS; private function newDraft( $parentID ) { if(!$parentID || !is_numeric( $parentID)) { $parent = DataObject::get_one("NewsletterType"); - $parentID = $parent->ID; + if ($parent) { + $parentID = $parent->ID; + } else { + // BUGFIX: It could be that no Newsletter types have been created, if so add one to prevent errors. + $parentID = $this->newNewsletterType(); + } } if( $parentID && is_numeric( $parentID ) ) { + $parent = DataObject::get_by_id("NewsletterType", $parentID); + // BUGFIX: It could be that no Newsletter types have been created, if so add one to prevent errors. + if(!$parent) { + $parentID = $this->newNewsletterType(); + } $newsletter = new Newsletter(); $newsletter->Status = 'Draft'; $newsletter->Title = $newsletter->Subject = 'New draft newsletter'; diff --git a/javascript/NewsletterAdmin_left.js b/javascript/NewsletterAdmin_left.js index 32bdc624..36b0b558 100755 --- a/javascript/NewsletterAdmin_left.js +++ b/javascript/NewsletterAdmin_left.js @@ -46,6 +46,14 @@ SiteTree.prototype = { }, addDraftNode: function( title, parentID, draftID ) { + var st = $('sitetree'); + // BUGFIX: If there is nothing in the left tree we need to add a Newsletter type first to prevent errors + if(typeof st.lastTreeNode() == 'undefined') { + $('sitetree').addTypeNode('New newsletter type', $('Form_EditForm_ID').value ); + } + // BUGFIX: If no selection is made in the left tree, and a draft is added, parentID won't be set, + // so we need to use the value from the Draft edit form. + parentID = $('Form_EditForm_ParentID').value; var draftNode = this.createTreeNode( 'draft_' + parentID + '_' + draftID, title, 'Draft', parentID ); this.getTreeNodeByIdx('drafts_' + parentID).appendTreeNode( draftNode ); this.changeCurrentTo( draftNode ); @@ -300,9 +308,6 @@ AddForm.prototype = { // create a new node and add it to the site tree if( type == 'draft' ) { - // BUGFIX: If no selection is made in the left tree, and a draft is added, parentID won't be set, - // so we need to use the value from the Draft edit form. - parentID = $('Form_EditForm_ParentID').value; $('sitetree').addDraftNode('New draft newsletter', parentID, $('Form_EditForm_ID').value ); } else { $('sitetree').addTypeNode('New newsletter type', $('Form_EditForm_ID').value );