function testGetForObject() { $object = new ChangeSetItemTest_Versioned(['Foo' => 1]); $object->write(); $item = new ChangeSetItem(['ObjectID' => $object->ID, 'ObjectClass' => $object->baseClass()]); $item->write(); $this->assertEquals(ChangeSetItemTest_Versioned::get()->byID($object->ID)->toMap(), ChangeSetItem::get_for_object($object)->first()->Object()->toMap()); $this->assertEquals(ChangeSetItemTest_Versioned::get()->byID($object->ID)->toMap(), ChangeSetItem::get_for_object_by_id($object->ID, $object->ClassName)->first()->Object()->toMap()); }
public function testSync() { $this->publishAllFixtures(); $cs = new ChangeSet(); $cs->write(); $base = $this->objFromFixture(ChangeSetTest_Base::class, 'base'); $cs->addObject($base); $cs->sync(); $this->assertChangeSetLooksLike($cs, ['ChangeSetTest_Base.base' => ChangeSetItem::EXPLICITLY]); $end = $this->objFromFixture(ChangeSetTest_End::class, 'end1'); $end->Baz = 3; $end->write(); $cs->sync(); $this->assertChangeSetLooksLike($cs, ['ChangeSetTest_Base.base' => ChangeSetItem::EXPLICITLY, 'ChangeSetTest_End.end1' => ChangeSetItem::IMPLICITLY]); $baseItem = ChangeSetItem::get_for_object($base)->first(); $endItem = ChangeSetItem::get_for_object($end)->first(); $this->assertEquals([$baseItem->ID], $endItem->ReferencedBy()->column("ID")); $this->assertDOSEquals([['Added' => ChangeSetItem::EXPLICITLY, 'ObjectClass' => ChangeSetTest_Base::class, 'ObjectID' => $base->ID, 'ChangeSetID' => $cs->ID]], $endItem->ReferencedBy()); }
/** * Builds a Form that mirrors the parent editForm, but with an extra field to collect the ChangeSet ID * * @param DataObject $object The object we're going to be adding to whichever ChangeSet is chosen * @return Form */ public function Form($object) { $inChangeSets = array_unique(ChangeSetItem::get_for_object($object)->column('ChangeSetID')); $changeSets = $this->getAvailableChangeSets()->map(); $campaignDropdown = DropdownField::create('Campaign', '', $changeSets); $campaignDropdown->setEmptyString(_t('Campaigns.AddToCampaign', 'Select a Campaign')); $campaignDropdown->addExtraClass('noborder'); $campaignDropdown->setDisabledItems($inChangeSets); $fields = new FieldList([$campaignDropdown, HiddenField::create('ID', null, $this->data['ID']), HiddenField::create('ClassName', null, $this->data['ClassName'])]); $form = new Form($this->editForm->getController(), $this->editForm->getName(), new FieldList($header = new CompositeField(new LiteralField('Heading', sprintf('<h3>%s</h3>', _t('Campaigns.AddToCampaign', 'Add To Campaign')))), $content = new CompositeField($fields)), new FieldList($action = AddToCampaignHandler_FormAction::create())); $header->addExtraClass('add-to-campaign__header'); $content->addExtraClass('add-to-campaign__content'); $action->addExtraClass('add-to-campaign__action'); $form->setHTMLID('Form_EditForm_AddToCampaign'); $form->unsetValidator(); $form->loadDataFrom($this->data); $form->addExtraClass('add-to-campaign__form'); return $form; }
/** * Builds a Form that mirrors the parent editForm, but with an extra field to collect the ChangeSet ID * * @param DataObject $object The object we're going to be adding to whichever ChangeSet is chosen * @return Form */ public function Form($object) { $inChangeSets = array_unique(ChangeSetItem::get_for_object($object)->column('ChangeSetID')); $changeSets = $this->getAvailableChangeSets()->map(); $campaignDropdown = DropdownField::create('Campaign', '', $changeSets); $campaignDropdown->setEmptyString(_t('Campaigns.AddToCampaignFormFieldLabel', 'Select a Campaign')); $campaignDropdown->addExtraClass('noborder'); $campaignDropdown->addExtraClass('no-chosen'); $campaignDropdown->setDisabledItems($inChangeSets); $fields = new FieldList([$campaignDropdown, HiddenField::create('ID', null, $this->data['ID']), HiddenField::create('ClassName', null, $this->data['ClassName'])]); $form = new Form($this->controller, $this->name, $fields, new FieldList($action = AddToCampaignHandler_FormAction::create())); $action->addExtraClass('add-to-campaign__action'); $form->setHTMLID('Form_EditForm_AddToCampaign'); $form->loadDataFrom($this->data); $form->getValidator()->addRequiredField('Campaign'); $form->addExtraClass('form--no-dividers add-to-campaign__form'); return $form; }