Commit Graph

1730 Commits

Author SHA1 Message Date
Ingo Schommer
5d29d30118 Fixed silverstripe-backend GET use regression
fetch() doesn't allow a HTTP body for GET, which is fair enough.
This means we need to dynamically combine arguments based on HTTP verb.
2016-04-14 12:05:40 +12:00
Damian Mooyman
484680a2d5 Update artifacts 2016-04-14 12:04:50 +12:00
Damian Mooyman
5900893753 API Implement campaign list view 2016-04-14 12:02:59 +12:00
Damian Mooyman
05973cee55 API Add i18n pluralisation 2016-04-14 12:01:42 +12:00
Hamish Friedlander
2983dd58ff Fix admin area after upgrade to Chosen 1.5 2016-04-14 10:47:15 +12:00
Hamish Friedlander
31247a67bd API Replace baked-in and modified Chosen 0.9.8 with npm'ed in Chosen 1.5.1 2016-04-14 10:45:39 +12:00
Ingo Schommer
6e0ef669be payloadSchema support in createEndpointFetcher()
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.
2016-04-12 22:03:43 +12:00
Sam Minnee
8c469899d0 MINOR: Fix linting errors in tests.
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.
2016-04-12 16:50:06 +12:00
Sam Minnee
b088efc6f9 MINOR: Test for backend.createEndpointFetcher() 2016-04-12 12:15:37 +12:00
Sam Minnee
21a1065329 NEW: Add createEndpointFetcher to backend
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
2016-04-11 21:43:21 +12:00
Ingo Schommer
429682e626 Remove <IE10 specific workarounds
We no longer support IE browsers older than IE10
2016-04-11 14:50:00 +12:00
Ingo Schommer
ce8ac58ddb Fix React DOM warnings about <form> attrs
"class" is a reserved word in JS, hence React uses "className".
"encType" has to be camel cased correctly, see https://facebook.github.io/react/docs/tags-and-attributes.html#html-attributes

Also marked less attrs on <form> as required
2016-04-11 09:16:32 +12:00
Sam Minnee
a17c5cb148 NEW: Expose silverstripe-backend for modules to access.
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.
2016-04-08 10:14:24 +12:00
Ingo Schommer
3e575681ae Updated build artifacts 2016-04-07 23:50:12 +12:00
Ingo Schommer
097d7ee6d3 Removed unnecessary thunk wrapper in actions 2016-04-07 23:50:09 +12:00
Ingo Schommer
f9d5b0db97 More concise breadcrumb generation
Courtesy of @hafriedlander
2016-04-07 23:32:32 +12:00
Ingo Schommer
2f801f9319 Pass all field attributes via <FormBuilder>
Also make them immutable via deep-freeze
2016-04-07 23:32:32 +12:00
Ingo Schommer
e7d2e9b0b2 Allow user-defined <Form> attributes 2016-04-07 23:32:32 +12:00
Ingo Schommer
0fe330621c Only list existing <FormBuilder> data types 2016-04-07 23:32:32 +12:00
Ingo Schommer
3835291cdf More accurate variable naming
schema.schema is awkward
2016-04-07 23:32:31 +12:00
Ingo Schommer
ab874a0c8d Correct state handling in <FormBuilder> component 2016-04-07 23:32:31 +12:00
Ingo Schommer
874146afda Syntax fix 2016-04-07 23:32:31 +12:00
Ingo Schommer
a1ea239c8f Enforcing can*() in CampaignAdmin reads 2016-04-07 23:32:31 +12:00
Ingo Schommer
783d45cedd Added TODO elements to unimplemented CampaignAdmin functionality 2016-04-07 23:32:30 +12:00
scott1702
5c8df9f16e Updates to FormActionComponent 2016-04-06 10:57:54 +12:00
Ingo Schommer
34d40bed5f Add ESLint support
See https://github.com/silverstripe/silverstripe-framework/pull/5108
2016-04-06 10:43:33 +12:00
scott1702
6aa22c38ed Convert react grid-field from flexbox to table-based 2016-04-06 08:49:47 +12:00
Ingo Schommer
d27e3c2d34 Delete campaign feature 2016-04-06 08:49:47 +12:00
Ingo Schommer
0675f85d32 Use /index suffix for JS import statements
Otherwise browserify or gulp-sourcemaps doesn't include these
in the *.map file, which makes debugging impossible
2016-04-06 08:49:47 +12:00
Damian Mooyman
2cf5fbcfce Implement readCampaigns()
Renamed "item/items" urls to "set/sets" to distinguish between change sets and change set items.
2016-04-06 08:49:44 +12:00
scott1702
d1e4c563ce Move ActionComponent into FormActionComponent 2016-04-06 08:41:11 +12:00
Ingo Schommer
2a5c92e491 Generic state management for React GridField
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.
2016-04-06 08:41:07 +12:00
Ingo Schommer
47dd7b48af Relative ES6 module paths
http://stackoverflow.com/questions/20158401/how-do-i-manage-relative-path-aliasing-in-multiple-grunt-browserify-bundles/23608416#23608416
https://github.com/substack/node-browserify/issues/767
http://stackoverflow.com/questions/28078780/relative-paths-in-package-json
https://github.com/npm/npm/issues/1558
http://stackoverflow.com/questions/31624567/webstorm-es6-named-import-getting-cannot-resolve-symbol-error/31631415
http://stackoverflow.com/questions/20158401/how-do-i-manage-relative-path-aliasing-in-multiple-grunt-browserify-bundles/23608416#23608416
https://github.com/vigetlabs/gulp-starter/issues/17#issuecomment-44292681
2016-04-06 08:36:38 +12:00
Ingo Schommer
c70590e50c Consolidated grid-field component
Every top-level folder in /components should be a standalone component.
This isn't the case for the grid-field-* ones, so they belong into the same folder.
See https://github.com/Automattic/wp-calypso/blob/master/docs/components.md

merge styles
2016-04-06 08:36:37 +12:00
scott1702
e550363c67 - Add GridfieldActionsComponent
- Add ability to set desired relative width on gridfield cells
2016-04-06 08:36:37 +12:00
David Craig
ef97e0b52f Consolidated bundles, sourcemaps and watching
We don't want a bundle for each section, unnecessary network overhead
and too much boilerplate in defining build tooling.
2016-04-06 08:36:34 +12:00
Ingo Schommer
b4e6d498c9 Simplified form schema structure and mocks
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
2016-04-06 08:35:53 +12:00
Paul Clarke
0ca090a391 Add generic React components
Includes moving some components from AssetAdmin
2016-04-06 08:35:50 +12:00
Ingo Schommer
b0ba742c1f Campaign form schema and edit form
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.
2016-04-05 22:43:30 +12:00
David Craig
d0ffa7771c Client config 2016-04-05 22:43:29 +12:00
scott1702
2abe24f818 GridField and header styles 2016-04-05 22:42:15 +12:00
David Craig
f8c17bed3b CampaignAdmin and GridField React sections
Also removes watchify because it wasn't working.
Add SilverStripeBackend class used to fetch data from endpoints for the front-end
2016-04-05 22:42:13 +12:00
Ingo Schommer
7337f26d3a Fix non-standard url encoding in CMS search form
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.
2016-04-05 22:30:50 +12:00
Damian Mooyman
5a86f4232e BUG Fix error when using search bar 2016-04-05 17:10:21 +12:00
Damian Mooyman
3c2b53157e API Update Versioned methods 2016-04-04 14:50:16 +12:00
Damian Mooyman
77b47bac92 Merge pull request #5063 from benmanu/pulls/add-npm-json-js
Moving thirdparty module to npm dependency - json-js
2016-04-04 10:13:33 +12:00
Sean Harvey
b1b85b539e TinyMCE 4 optimisations. Use TinyMCE_Compressor. 2016-04-04 07:58:45 +12:00
Ben Manu
5c7a6166b6 Moving thirdparty module to npm dependency - json-js. 2016-04-01 15:43:09 +13:00
Ingo Schommer
d93da92c37 Merge pull request #5243 from open-sausages/pulls/4.0/client-routing
Implement client-side routing with Page.js
2016-04-01 14:53:17 +13:00
Steve Boyd
7887be704e Changed CMS close from an 'x' to a silverstripe font icon 2016-04-01 13:52:28 +13:00