- Add edit form to campaigns section
- Handle form submissions with FormBuilder
- Handle form state via Redux
- Garbage collect form state
- Removes $itemID as a required param for schema requests.
Developers should be able to scaffold forms without populating
values from an existing record. For example when building a form for creating new records.
Needs to use namespaced class name (see LeftAndMain->Menu()).
Not replacing the old .icon-assetadmin rule since we want the old and new UI to co-exist for a short while.
Ideally we'd move these styles to the asset-admin module, but the whole way of referencing image sprites
is outdated anyway - so I'd prefer to merge this quick fix and think about SVG icons for menu entries instead.
We only need them in the main.css build file.
The bootstrap.scss already includes reboot and grid.
We're not using flex (yet), and can be built alongside main.css as well.
Reordered includes to ensure they bootstrap reboot gets included early.
Already removed usage in 429682e, but forgot to remove the underlying file.
Did a sanity check in IE10 on the areas addressed in this stylesheet,
and they look fine.
refactored breadcrumbs to use bootstrap
fix border lines on table
Layout variables updated for spacing, added toolbar heights
Added as part of campaigns as this area needs to use these variables.
Added action toolbar for content, swapped values to variables
toolbar action spacing
Adjustments of breadcrumb variable
Move accordion styles to its own component
Campaign items, styles for linked items and state badges
Small update to class name
Class name updates, convert values into variables
Using POST rather than PUT because SecurityToken->checkRequest()
doesn't accept PUT data (it's only in the request body, not
in $_POST and HTTPRequest->requestVars()).
- Updated FormActionComponent prop from 'style' to 'bootstrapButtonStyle because 'style' is a built in React prop.
- Linted and added missing propTypes to campaign admin List component.
- Added missing initial state key to campaign reducer.
- Forced REST verb to lowercase in silverstripe-backend to make comparisions more robust.
It's the recommended approach in Redux docs, and more performant (key-based).
It'll also simplify a move to Immutable.js later on.
The PHP APIs still return unkeyed data, which is standard REST API behaviour,
but for Redux state we transform it to be keyed.
Required for REST URLs which require data to be populated on call.
For example, PUT admin/campaigns/set/:id/publish to publish a campaign.
At the time when createEndpointFetcher() is called, the ":id" parameter can not be resolved,
since the "data" argument is passed in once the returned function is evaluated (since the component using it).
Since the whole idea of createEndpointFetcher() is that components shouldn't know about the backend internals,
its not the right place to interpolate urls.
I'm sending through any payload data in addition to replacing URLs, to keep the API simple for the component.
Again, it shouldn't worry about the presence URL interpolation. The trade off here is that data will be submitted
both in the payload (in case of a POST, PUT or DELETE request), as well as (optionally) in the URL.
Tests were previously excluded from eslint calls. This leads to messier
code inside tests, and potentially errors.
Now they all meet the listing rules, and so we don’t need to ignore
tests in .eslintignore.
SilverStripeBackend now has a createEndpointFetcher method, described
in its docblock in more detail.
It’s based the asset-admin code for apiCallerFromEndpoint(). It’s
refactored and generalised into framework in order to provide a
general-purpose API for tying Javascript components to backend APIs.
@todo: tests
FIX: Ensure post has correct content-type header.
Exporting silverstripe-backend lets other modules (such as asset-admin)
use it.
In addition, the Content-type header of a post request of URL-encoded
data was being set to text/plain by default, which isn’t correct and
stopped PHP from interpreting it.
Renaming state operations from 'campaign' to 'record'.
Implemented API endpoint retrieval of GridField data.
Added more mock data into CampaignAdmin (rather than hardcoding in client),
to be replaced by CampaignAdmin API endpoint querying the real datamodel.
Using more native isomorphic-fetch instead of jQuery.ajax
to minimise dependencies and get into a more forward-thinking API.
Also catching errors in ReactJS API backend:
Emulate jQuery.ajax() behaviour. Might change at a later point
if we have a general purpose backend with a promise-based catch()
implementation.
Keyed by URL instead of anonymous object maps which need to be iterated on
Removed the 'schema.forms' namespace, unnecessary since all 'schema' items should be forms
Remove once we have a schema-driven GridField in place.
Edit form should be a GridFieldDetailForm, but there's more work to do for schema generation
from this component.
jQuery uses encodeURIComponent, but also this line here:
return s.join( "&" ).replace( r20, "+" );
https://github.com/jquery/jquery/blob/1.7.2/src/ajax.js#L797
This breaks when passing the result through $.path.addSearchParams(),
which in turn uses jQuery.param - any '%20' would've been wrongly encoded as '+' by jQuery.serialise(),
which in turn gets rightly encoded as '%2B' by jQuery.param().
This had the effect of breaking CMS searches with spaces in them.
- Removes thirdparty dependency History.js
- Adds thirdparty dependency Page.js to manage client-side routing
- Adds a wrapper around Page.js for SilverStripe specific behaviour
- Increased minimum browser requirement to IE10. Native HTML History API routing requires IE10 or newer (necessitated by removal of History.js)
- PJAX pannel loading via now uses promises rather than callbacks
- Adds getClientConfig method to LeftAndMain which can be used to pass config from to the front-end client
API: Deprecate SS_Datetime.
The DBField subclasses are have all been renamed to start with “DB” and
be in the SilverStripe\Model\FieldType namespace. To keep DataObject
definitions concise, the original short variations of their names are
preserved as service definitions. Most of the field generation code
doesn’t need to change, but where field classes are referenced directly,
changes will be needed.
SS_Datetime, which is commonly referenced outside the model system
itself, has been preserved as a subclass of DBDatetime. This has been
marked as deprecated and can be removed in SilverStripe 5.
A few places that referred to $db and $casting values weren’t using
the Injector to instantiate the relevant classes. This meant that the
remapping we have created as part of moving classes into a namespace
didn’t work.
API Implemented recursive versioned actions (publish, etc)
API Un-deprecate delete batch action
API Changed Versioned getters and setters for stages
BUG Inject query parameters during DataObject construction to prevent incorrect lazy loading
In the html editor, when inserting a 'Download a file' link without selecting a file to link to, no link should be inserted. Currently is inserting a link to an undefined file id: [file_link,id=undefined]