function testPublishingNormalField() { $id = $this->form->ID; // test a normal field $field = new EditableFormField(); $field->write(); $this->form->Fields()->add($field); // upon adding it, it shouldn't be on the live site $live = Versioned::get_one_by_stage("UserDefinedForm", "Live", "\"UserDefinedForm_Live\".\"ID\" = {$id}"); $this->assertFalse($live); // upon publishing the field should exist $this->form->doPublish(); $live = Versioned::get_one_by_stage("UserDefinedForm", "Live", "\"UserDefinedForm_Live\".\"ID\" = {$id}"); $this->assertEquals($live->Fields()->Count(), 1); }
/** * Migrate custom settings for the given field * * @param EditableFormField $field * @param string $stage */ protected function migrateCustomSettings(EditableFormField $field, $stage) { // Custom settings include: // - ExtraClass // - RightTitle // - ShowOnLoad (show or '' are treated as true) // // - CheckedDefault (new field on EditableCheckbox - should be read from old "default" value) // - Default (EditableCheckbox) // - DefaultToToday (EditableDateField) // - Folder (EditableFileField) // - Level (EditableFormHeading) // - HideFromReports (EditableFormHeading / EditableLiteralField) // - Content (EditableLiteralField) // - GroupID (EditableMemberListField) // - MinValue (EditableNumericField) // - MaxValue (EditableNumericField) // - MinLength (EditableTextField) // - MaxLength (EditableTextField) // - Rows (EditableTextField) $customSettings = $field->CustomSettings ? unserialize($field->CustomSettings) : array(); // Skip blank rules or fields with custom rules already if (empty($customSettings)) { return; } $field->migrateSettings($customSettings); $field->write(); }