/**
  * {@inheritdoc}
  */
 public function updateCMSFields(FieldList $fields)
 {
     $fields->removeByName('URLSegment');
     // Remove the automatically-generated posts tab.
     $fields->removeFieldFromTab('Root', 'BlogPosts');
     // Construct a better posts tab.
     Requirements::css(BLOGGER_DIR . '/css/cms.css');
     Requirements::javascript(BLOGGER_DIR . '/js/cms.js');
     $tab = new Tab('BlogPosts', 'Blog Posts');
     $gridField = new GridField('BlogPosts', 'Blog Posts', $this->owner->BlogPosts(), new GridFieldConfig_BlogPost());
     $tab->Fields()->add($gridField);
     $fields->addFieldToTab('Root', $tab);
     return $fields;
 }
 function testAddingDuplicateReplacesOldField()
 {
     /* Given a nested set of FormField, CompositeField, and FieldSet objects */
     $fieldSet = new FieldSet($root = new TabSet("Root", $main = new Tab("Main", $a = new TextField("A"), $b = new TextField("B"))));
     /* Adding new fields of the same names should replace the original fields */
     $newA = new TextField("A", "New A");
     $newB = new TextField("B", "New B");
     $fieldSet->addFieldToTab("Root.Main", $newA);
     $fieldSet->addFieldToTab("Root.Other", $newB);
     $this->assertSame($newA, $fieldSet->dataFieldByName("A"));
     $this->assertSame($newB, $fieldSet->dataFieldByName("B"));
     $this->assertEquals(1, $main->Fields()->Count());
     /* Pushing fields on the end of the field set should remove them from the tab */
     $thirdA = new TextField("A", "Third A");
     $thirdB = new TextField("B", "Third B");
     $fieldSet->push($thirdA);
     $fieldSet->push($thirdB);
     $this->assertSame($thirdA, $fieldSet->fieldByName("A"));
     $this->assertSame($thirdB, $fieldSet->fieldByName("B"));
     $this->assertEquals(0, $main->Fields()->Count());
 }