'readCampaigns', 'POST item/$ID' => 'createCampaign', 'GET item/$ID' => 'readCampaign', 'PUT item/$ID' => 'updateCampaign', 'DELETE item/$ID' => 'deleteCampaign', ]; private static $url_segment = 'campaigns'; public function init() { parent::init(); Requirements::javascript(FRAMEWORK_ADMIN_DIR . '/javascript/dist/bundle-react.js'); Requirements::javascript(FRAMEWORK_ADMIN_DIR . '/javascript/dist/campaign-admin.js'); } public function getClientConfig() { // TODO Hardcoding schema until we can get GridField to generate a schema dynamically $json = << [ 'editForm' => [ // TODO Use schemaUrl instead 'schema' => json_decode($json) ] ] ]); } public function getEditForm($id = null, $fields = null) { return ''; } /** * REST endpoint to create a campaign. * * @param SS_HTTPRequest $request * * @return SS_HTTPResponse */ public function createCampaign(SS_HTTPRequest $request) { $response = new SS_HTTPResponse(); $response->addHeader('Content-Type', 'application/json'); $response->setBody(Convert::raw2json(['campaign' => 'create'])); return $response; } /** * REST endpoint to get a list of campaigns. * * @param SS_HTTPRequest $request * * @return SS_HTTPResponse */ public function readCampaigns(SS_HTTPRequest $request) { $response = new SS_HTTPResponse(); $response->addHeader('Content-Type', 'application/json'); $response->setBody(Convert::raw2json(['campaigns' => 'read'])); return $response; } /** * REST endpoint to get a campaign. * * @param SS_HTTPRequest $request * * @return SS_HTTPResponse */ public function readCampaign(SS_HTTPRequest $request) { $response = new SS_HTTPResponse(); $response->addHeader('Content-Type', 'application/json'); $response->setBody(Convert::raw2json(['campaign' => 'read'])); return $response; } /** * REST endpoint to update a campaign. * * @param SS_HTTPRequest $request * * @return SS_HTTPResponse */ public function updateCampaign(SS_HTTPRequest $request) { $response = new SS_HTTPResponse(); $response->addHeader('Content-Type', 'application/json'); $response->setBody(Convert::raw2json(['campaign' => 'update'])); return $response; } /** * REST endpoint to delete a campaign. * * @param SS_HTTPRequest $request * * @return SS_HTTPResponse */ public function deleteCampaign(SS_HTTPRequest $request) { $response = new SS_HTTPResponse(); $response->addHeader('Content-Type', 'application/json'); $response->setBody(Convert::raw2json(['campaign' => 'delete'])); return $response; } /** * @todo Use GridFieldDetailForm once it can handle structured data and form schemas * * @return Form */ public function getDetailEditForm() { return Form::create( $this, 'DetailEditForm', FieldList::create( TextField::create('Name'), TextAreaField::create('Description') ), FieldList::create( FormAction::create('save', 'Save') ) ); } }