Commit Graph

17197 Commits

Author SHA1 Message Date
Ingo Schommer
54a4cef863 Consistently use 'value' for FormField schemas
LiteralField (data.content) was inconsistent with HTMLReadonlyField (value),
which made the frontend components harder to handle.

See https://github.com/silverstripe/silverstripe-framework/pull/6172#discussion_r83561757 for contex
2016-10-20 22:03:38 +13:00
Christopher Joe
84c0df3db0 Fix double forward slash link in campaign admin 2016-10-20 21:49:10 +13:00
Ingo Schommer
5b31a40593 Use redux-form instead of custom actions/reducers (fixes #5524)
- Removed custom form reducers in favour of redux-form (updateField(), addForm(), etc)
- Storing 'state' in schema reducer to avoid a separate forms reducer tree (no longer needed for other use cases). This means 'state' is only the "initial state", any form edits will be handled by redux-form internally in the 'reduxForm' reducer namespace
- Removed componentWillUnmount() from <Form> since there's no more reducer state to clean up (removed formReducer.js), and redux-form handles that internally
- Removed isFetching state from <FormBuilder> since there's now a props.submitting coming from redux-form
- Improved passing of "clicked button" (submittingAction), using component state rather than reducer and passing it into action handlers (no need for components to inspect it any other way)
- Hacky duplication of this.submittingAction and this.state.submittingAction to avoid re-render of <FormBuilder> *during* a submission (see https://github.com/erikras/redux-form/issues/1944)
- Inlined handleSubmit() XHR (rather than using a redux action). There's other ways for form consumers to listen to form evens (e.g. onSubmitSuccess passed through <FormBuilder> into reduxForm()).
- Adapting checkbox/radio fields to redux-forms
  Need to send onChange event with values rather than the original event,
  see http://redux-form.com/6.1.1/docs/api/Field.md/#-input-onchange-eventorvalue-function-
- Using reduxForm() within render() causes DOM to get thrown away,
  and has weird side effects like https://github.com/erikras/redux-form/issues/1944.
  See https://github.com/erikras/redux-form/issues/603#issuecomment-176397728
- Refactored <FormBuilderLoader> as a separate container component which connects to redux and redux-form. This keeps the <FormBuilder> component dependency free and easy to test. It'll also be an advantage if we switch to a GraphQL backed component, in which case the async loading routines will look very different from the current <FormBuilderLoader> implementation
- Refactoring out the redux-form dependency from FormBuilder to make it more testable (through baseFormComponent and baseFieldComponent)
- Passing through 'form' to allow custom identifiers (which is important because currently the schema "id" contains the record identifier, making the form identifier non-deterministic - which means you can't use it with the redux-form selector API)
2016-10-20 21:49:06 +13:00
Ingo Schommer
5f81122ad3 Removed misdocumented 'data' prop 2016-10-20 15:33:50 +13:00
Ingo Schommer
1e478a5378 Consistently set 'id' in FormSchema
The URL to request the schema representation is the unique identifier.
We can't default to $request->getURL() since that's different for form submissions.

The schema.schema_url key is redundant, since the identifier is already contained on the top level 'id' key.
Keeping schema_url in a schema itself makes it less portable, particularly once we transition into
generic schemas which are not reliant on a particular record context (that's only contained in the schema_url)

This also fixes the issue of form schemas not refreshing after submit,
e.g. when form fields are added or removed.
2016-10-20 15:33:50 +13:00
Damian Mooyman
840f275235 API Created a generic FormFactory interface (#6178)
Created a generic DataObject FormFactory interface that can be substituted in place of getCMSFields. Different FormFactories can depend on different kinds of context, such as
'Record' or 'Controller' - it's the responsibility of the code calling the factory to interpret and
supply this context.

The expected use-case is that rather than overriding getCMSFields(), developers can
change CMS UIs by manipulating the FormFactory associated with the given DataObject.

This is an experimental UI and may change before 4.0 stable is released.
2016-10-20 12:42:24 +13:00
Damian Mooyman
3f773c826a Merge pull request #6189 from open-sausages/pulls/4.0/split-pages-toolbar
Split top toolbar for Pages section
2016-10-18 18:44:06 +13:00
Christopher Joe
08b1171ae7 Adjust CSS for top toolbar split for Pages section 2016-10-18 14:22:03 +13:00
Damian Mooyman
3b1b6e02b4 Merge pull request #6191 from open-sausages/pulls/4.0/fix-gridfield-actions
Adjusted button submit action to respect _super()
2016-10-18 12:18:14 +13:00
Christopher Joe
820407887e Adjusted button submit action to respect _super() 2016-10-18 09:27:58 +13:00
Daniel Hensby
8afff154b8 Merge pull request #6171 from open-sausages/pulls/4.0/use-changeset-for-publish
API Versioned::publishRecursive() now uses a ChangeSet
2016-10-16 14:45:23 +01:00
Ingo Schommer
a6ff96b9a6 Merge pull request #6182 from open-sausages/pulls/4.0/cleanup-build
Clean up build files to be more consistent
2016-10-14 16:31:18 +13:00
Christopher Joe
25ca87b650 Clean up build files to be more consistent 2016-10-14 15:33:07 +13:00
Damian Mooyman
d954514336 Merge pull request #6180 from kinglozzer/6170-flex-heights
Fix flexbox 'fill-height' overflowing container
2016-10-14 09:28:30 +13:00
Daniel Hensby
b923475dcb Merge pull request #6179 from open-sausages/pulls/4.0/relative-fixtures
API Support fixture paths relative to current directory
2016-10-13 11:49:32 +01:00
Loz Calver
0ebde90dd0 Fix flexbox 'fill-height' overflowing container 2016-10-13 09:42:12 +01:00
Damian Mooyman
4bbfb7e4f2 Merge pull request #6152 from open-sausages/pulls/4.0/webpack-dev-optimize
Added development watch command to package.json
2016-10-13 17:50:53 +13:00
Damian Mooyman
f60fe7d4a9
API Versioned::publishRecursive() now uses a ChangeSet
API Add IsInferred to inferred changesets
API Add SapphireTest::assertNotDOSContains
Fixes #5667
2016-10-13 17:38:08 +13:00
Damian Mooyman
055795d4d1
API Support fixture paths relative to current directory 2016-10-13 16:53:30 +13:00
Ingo Schommer
84cc615e6c Merge pull request #6176 from dhensby/pulls/turnoffcodecovcommnts
Turn off codecov commenting on PRs
2016-10-13 08:45:00 +13:00
Daniel Hensby
93306e9a4d
Turn off codecov commenting on PRs 2016-10-12 16:31:22 +01:00
Daniel Hensby
369fde2a5b Merge pull request #6150 from open-sausages/pulls/4.0/fix-form-validation-persistence
BUG prevent form data / validation persisting in state when using form schema
2016-10-11 15:43:59 +01:00
Damian Mooyman
a50b849288 Merge pull request #6155 from open-sausages/features/4.0/jlayout-to-flexbox
Part 1 of 5, remove JLayout and apply flexbox to pages section (excludes preview)
2016-10-11 17:35:38 +13:00
Damian Mooyman
72fd3b949e Fix linting issues 2016-10-11 16:49:24 +13:00
Christopher Joe
5a5d62fa27 Fix profile layout 2016-10-11 15:50:35 +13:00
Damian Mooyman
20cee73583
Fix pages background 2016-10-11 15:27:32 +13:00
Christopher Joe
7b36df286e Fix split mode disappearing as an option 2016-10-11 14:41:08 +13:00
Christopher Joe
a03abe1356 Set select box width 100% to override chosen's default hardcoding width 2016-10-11 13:50:30 +13:00
Christopher Joe
bb2f487644 Scrolling fixes for Model Admin 2016-10-11 13:47:44 +13:00
Christopher Joe
eee9ffaaa2 disable select option for split when it is graphically disabled in chosen... 2016-10-11 13:47:32 +13:00
Christopher Joe
ba44382cb9 tweak for ie10 styling issues 2016-10-11 13:47:21 +13:00
Christopher Joe
7acb3b5fc2 Fix selected view mode not reflected on button
Fix other ModelAdmin layout (test)
Fix fieldholder placement
2016-10-11 13:47:09 +13:00
Christopher Joe
89150c48e7 Fix preview in pages section 2016-10-11 13:47:00 +13:00
Paul Clarke
8b02d9d68a Remove legacy classes for flexbox classes 2016-10-11 13:46:49 +13:00
Christopher Joe
0a0a990c54 Remove add wrapper element
Added 100% height to fill-width to fix some layout issues
2016-10-11 13:46:38 +13:00
Paul Clarke
eb7a8be3f8 Temp work in progress- to clean up 2016-10-11 13:46:38 +13:00
Paul Clarke
a37bf87857 Replace Layout with flexbox CSS classes 2016-10-11 13:46:24 +13:00
Paul Clarke
e71f39d171 Remove table bg 2016-10-11 13:46:24 +13:00
Paul Clarke
472e135602 Add Layout js back in as it contains preview JS 2016-10-11 13:46:24 +13:00
Paul Clarke
4a45793af9 Hide preview in other areas of the cms outside of pages 2016-10-11 13:46:24 +13:00
Paul Clarke
e7829eb974 Replace jLayout classes with flexbox CSS classes 2016-10-11 13:46:24 +13:00
Paul Clarke
1fd46ed36d Pages area: remove layout classes, replace with flexbox CSS classes 2016-10-11 13:46:24 +13:00
Paul Clarke
ed4270155b Remove layout.js 2016-10-11 13:45:17 +13:00
Paul Clarke
8dd56efe2e Add flex classes, remove layout classes 2016-10-11 13:45:08 +13:00
Paul Clarke
1b0839a8e8 Remove Layout 2016-10-11 13:45:08 +13:00
Damian Mooyman
89c88f0f60 Merge pull request #6119 from open-sausages/pulls/4.0/assets-custom-actions
API Update form schema to be more responsive to dynamic form changes
2016-10-07 17:08:58 +13:00
Damian Mooyman
27d35403e8 API Force formschema to be reloaded on form submission
BUG Fix missing action state
2016-10-07 13:26:57 +13:00
Damian Mooyman
dd7d1d26af BUG Prevent missing records crashing ChangeSetItem 2016-10-07 13:25:56 +13:00
Damian Mooyman
92e34b7434 API controller::join_links supports array values 2016-10-07 13:25:56 +13:00
Damian Mooyman
f130ebf9de Restore tab indentation to LeftAndMain.php 2016-10-07 13:24:48 +13:00