/** * Setup the fields that are visible ONLY when the item exists already. * @param News $owner * @param SiteConfig $siteConfig */ private function existingItem(News $owner, SiteConfig $siteConfig) { if (!$owner->ID) { $member = Member::currentUser(); $this->field_list['Root.Main'][13] = ReadonlyField::create('Tags', $owner->fieldLabel('Tags'), _t('News.TAGAFTERID', 'Tags can be added after the item has been saved')); $owner->Type = 'news'; $owner->Author = $member->FirstName . ' ' . $member->Surname; } else { if (class_exists('MultiSelectField')) { /** I like multiselectfield and needed a reason to commit something */ $this->field_list['Root.Main'][13] = MultiSelectField::create('Tags', $owner->fieldLabel('Tags'), $this->owner); } else { $this->field_list['Root.Main'][13] = CheckboxSetField::create('Tags', $owner->fieldLabel('Tags'), Tag::get()->map('ID', 'Title')); } $this->field_list['Root.Main'][2] = LiteralField::create('Dummy', '<div id="Dummy" class="field readonly"> <label class="left" for="Form_ItemEditForm_Dummy">Link</label> <div class="middleColumn"> <span id="Form_ItemEditForm_Dummy" class="readonly"> <a href="' . $owner->AbsoluteLink() . '" target="_blank">' . $owner->AbsoluteLink() . '</a> </span> </div> </div>'); if ($siteConfig->EnableSlideshow) { /** @var GridFieldConfig_RecordEditor $gridFieldConfig */ $gridFieldConfig = GridFieldConfig_RecordEditor::create(); $gridFieldConfig->addComponent(new GridFieldBulkUpload()); $gridFieldConfig->addComponent(new GridFieldOrderableRows('SortOrder')); $gridFieldConfig->getComponentByType('GridFieldBulkUpload')->setUfSetup('setFolderName', $this->getRootFolderName($siteConfig)); if (class_exists('GridFieldGalleryTheme')) { $gridFieldConfig->addComponent(new GridFieldGalleryTheme('Image')); /** * as gallery theme breaks sorting with GridFieldOrderableRows * let's use SortableRows as a fallback when installed * * @todo remove later this when gridfield extension works with gallery theme */ if (class_exists('GridFieldSortableRows')) { $gridFieldConfig->addComponent(new GridFieldSortableRows('SortOrder')); $gridFieldConfig->removeComponentsByType('GridFieldOrderableRows'); } } $this->field_list['Root'][] = Tab::create('SlideshowImages', $owner->fieldLabel('SlideshowImages'), GridField::create('SlideshowImage', _t('News.IMAGES', 'Slideshow images'), $owner->SlideshowImages()->sort('SortOrder'), $gridFieldConfig)); } } }
/** * Test functionality with unwritten items * @return void */ public function testWithUnsavedRelationList() { $department = new MultiSelectFieldTest_Department(); $field = MultiSelectField::create('StaffMembers', '', $department); $staff = $this->objFromFixture('MultiSelectFieldTest_StaffMember', 'staffmember2'); $field->setValue(array($staff->ID)); $field->saveInto($department); $department->write(); $staffMembers = $department->StaffMembers()->map('ID', 'Name')->toArray(); $this->assertArrayHasKey($staff->ID, $staffMembers); $this->assertEquals('Phil McCreviss', $staffMembers[$staff->ID]); }