commit 236711fe4d77688d58897536f045287bfa580963 Author: Simon Welsh Date: Thu Oct 2 22:05:45 2008 +0000 Added more fields. Needs to be tidied. diff --git a/_config.php b/_config.php new file mode 100644 index 0000000..e69de29 diff --git a/code/BasicFieldsTestPage.php b/code/BasicFieldsTestPage.php new file mode 100644 index 0000000..2806598 --- /dev/null +++ b/code/BasicFieldsTestPage.php @@ -0,0 +1,117 @@ + 'Boolean', + 'Readonly' => 'Varchar', + 'Textarea' => 'Text', + 'Text' => 'Varchar', + 'CalendarDate' => 'Date', + 'CompositeDate' => 'Date', + 'Date' => 'Date', + 'DMYCalendarDate' => 'Date', + 'DMYDate' => 'Date', + 'DropdownTime' => 'Time', + 'PopupDateTime' => 'Datetime', + 'Time' => 'Time', + 'Number' => 'Int', + 'Price' => 'Double', + 'Email' => 'Varchar', + 'Password' => 'Varchar', + 'ConfirmedPassword' => 'Varchar', + 'HTMLField' => 'HTMLText', + 'HTMLOneLine' => 'HTMLVarchar', + 'UniqueText' => 'Varchar', + 'AjaxUniqueText' => 'Varchar', + 'UniqueRestrictedText' => 'Varchar', + 'BankNumber' => 'Varchar', + 'PhoneNumber' => 'Varchar', + 'Autocomplete' => 'Varchar', + 'CreditCard' => 'Varchar', + 'GSTNumber' => 'Varchar', + ); + + static $has_one = array( + 'Dropdown' => 'TestCategory', + 'OptionSet' => 'TestCategory', + 'GroupedDropdown' => 'TestCategory', + 'ListboxField' => 'TestCategory', + 'Image' => 'Image', + 'Image2' => 'Image', + 'Image3' => 'Image', + 'File' => 'File', + 'File2' => 'File', + 'File3' => 'File', + ); + + static $defaults = array( + 'Readonly' => 'Default value for \'readonly\'', + ); + + function getCMSFields() { + $fields = parent::getCMSFields(); + // TODO: Tidy these up + $fields->addFieldsToTab('Root.Content.BasicTests', array( + new CheckboxField('Checkbox', 'CheckboxField'), + new DropdownField('DropdownID', 'DropdownField', TestCategory::map()), + new GroupedDropdownField('GroupedDropdownID', 'GroupedDropdown', array('Test Categorys' => TestCategory::map())), + new ListboxField('ListboxFieldID', 'ListboxField', TestCategory::map(), array(), 3), + new OptionsetField('OptionSetID', 'OptionSetField', TestCategory::map()), + new ReadonlyField('Readonly', 'ReadonlyField'), + new TextareaField('Textarea', 'TextareaField - 8 rows', 8), + new TextField('Text', 'TextField'), + new NumericField('Number', 'NumericField'), + new CurrencyField('Price', 'CurrencyField'), + new EmailField('Email', 'EmailField'), + new PasswordField('Password', 'PasswordField'), + new ConfirmedPasswordField('ConfirmedPassword', 'ConfirmedPasswordField'), + new HtmlEditorField('HTMLField', 'HtmlEditorField'), + new HtmlOneLineField('HTMLOneLine', 'HTMLOneLineField'), + new UniqueTextField('UniqueText', 'UniqueText', 'BasicFieldsTestPage', 'This field must be unique.', 'UniqueTextField'), + new UniqueRestrictedTextField('UniqueRestrictedText', 'UniqueRestrictedText', 'BasicFieldsTestPage', 'This field must be unique for each page', + '[^A-Za-z0-9-]+', '-', 'This field can only be made up of letters, digits and hyphens.', + 'UniqueRestrictedTextField'), + new BankAccountField('BankNumber', 'BankAccountField'), + new PhoneNumberField('PhoneNumber', 'PhoneNumberField'), + new AjaxUniqueTextField('AjaxUniqueText', 'AjaxUniqueTextField', 'AjaxjUniqueText', 'BasicFieldsTestPage'), + // new AutocompleteTextField('Autocomplete', 'AutocompleteTextField', Director::absoluteURL('BasicFieldsTestPage_Controller/AutoCompleteItems')), // Um, how does this work? + new CreditCardField('CreditCard', 'CreditCardField'), + new GSTNumberField('GSTNumber', 'GSTNumberField'), + )); + + $fields->addFieldsToTab('Root.Content.DateTimeTests', array( + new CalendarDateField('CalendarDate','CalendarDateField'), + new CompositeDateField('CompositeDate','CompsiteDateField'), + new DateField('Date','DateField'), + new DMYCalendarDateField('DMYCalendarDate','DMYCalendarDateField'), + new DMYDateField('DMYDate','DMYDateField'), + new DropdownTimeField('DropdownTime','DropdownTimeField'), + new PopupDateTimeField('PopupDateTime','PopupDateTimeField'), + new TimeField('Time','TimeField') + )); + + $fields->addFieldsToTab('Root.Content.FileTests', array( + new ImageField('Image','ImageField'), + new SimpleImageField('Image2','SimpleImageField'), + new ImageField('Image3','ImageField'), + new FileIFrameField('File','FileIFrameField'), + new FileField('File2','FileField'), + new FileIFrameField('File3','FileIFrameField'), + )); + return $fields; + } +} + +class BasicFieldsTestPage_Controller extends TestPage_Controller { + function AutoCompleteItems() { + $items = array( + 'TestItem1', + 'TestItem2', + 'TestItem3', + 'TestItem4', + ); + return implode(',', $items); + } +} + +?> \ No newline at end of file diff --git a/code/RelationFieldsTestPage.php b/code/RelationFieldsTestPage.php new file mode 100644 index 0000000..c34c810 --- /dev/null +++ b/code/RelationFieldsTestPage.php @@ -0,0 +1,34 @@ + "TestCategory", + ); + static $has_may = array( + "Items" => "TestCTFItem", + ); + + function getCMSFields() { + $fields = parent::getCMSFields(); + + $fields->addFieldToTab("Root.Content.CheckboxSet", + new CheckboxSetField("CheckboxSet", "CheckboxSetField", TestCategory::map())); + + $fields->addFieldToTab("Root.Content.ComplexTableField", + new ComplexTableField($this, "Items", "TestCTFItem", array( + "Title" => "Item Title", + "Author" => "Item Author"))); + +// $fields->addFieldToTab("Root.Tests.ComplexTableField", +// new CheckboxSetField("CheckboxSet", "CheckboxSetField", TestCategory::map())); +// $fields->addFieldToTab("Root.Tests.CheckboxSet", new CheckboxSetField("CheckboxSet", "CheckboxSetField", TestCategory::map())); + + return $fields; + } +} + +class RelationFieldsTestPage_Controller extends TestPage_Controller { + +} + +?> \ No newline at end of file diff --git a/code/TestCTFItem.php b/code/TestCTFItem.php new file mode 100644 index 0000000..475aa46 --- /dev/null +++ b/code/TestCTFItem.php @@ -0,0 +1,25 @@ + "Varchar", + "Author" => "Varchar", + "Description" => "Text", + ); + static $has_one = array( + "Parent" => "RelationFieldsTestPage", + ); + + /** + * Returns a dropdown map of all objects of this class + */ + static function map() { + return DataObject::get('TestCategory')->toDropdownMap(); + } + +} + +?> \ No newline at end of file diff --git a/code/TestCategory.php b/code/TestCategory.php new file mode 100644 index 0000000..af3301b --- /dev/null +++ b/code/TestCategory.php @@ -0,0 +1,34 @@ + "Varchar", + ); + static $belongs_many_many = array( + "RelationPages" => "RelationFieldsTestPage", + ); + + /** + * Returns a dropdown map of all objects of this class + */ + static function map() { + return DataObject::get('TestCategory')->toDropdownMap(); + } + + function requireDefaultRecords(){ + $class = $this->class; + if(!DataObject::get_one($class)) { + foreach(array("A","B","C","D") as $item) { + $page = new $class(); + $page->Title = "Test Category $item"; + $page->write(); + } + } + } + +} + +?> \ No newline at end of file diff --git a/code/TestPage.php b/code/TestPage.php new file mode 100644 index 0000000..2384d5f --- /dev/null +++ b/code/TestPage.php @@ -0,0 +1,36 @@ +class != 'TestPage' && parent::canCreate(); + } + + function requireDefaultRecords(){ + if($this->class == 'TestPage') return; + + $class = $this->class; + if(!DataObject::get_one($class)) { + $page = new $class(); + $page->Title = str_replace("TestPage","",$class) . " Test"; + $page->write(); + Debug::show($page); + $page->doPublish(); + } + } + +} + +/** + * Parent class of all test page controllers + */ +class TestPage_Controller extends Page_Controller { + +} +?> \ No newline at end of file