'readCampaigns', 'POST item/$ID' => 'createCampaign', 'GET item/$ID' => 'readCampaign', 'PUT item/$ID' => 'updateCampaign', 'DELETE item/$ID' => 'deleteCampaign', ]; private static $url_segment = 'campaigns'; public function getClientConfig() { return array_merge(parent::getClientConfig(), [ 'forms' => [ // TODO Use schemaUrl instead 'editForm' => [ 'schemaUrl' => $this->Link('schema/EditForm') ] ] ]); } public function schema($request) { // TODO Hardcoding schema until we can get GridField to generate a schema dynamically $json = <<param('ID'); if($formName == 'EditForm') { $response = $this->getResponse(); $response->addHeader('Content-Type', 'application/json'); $response->setBody($json); return $response; } else { return parent::schema($request); } } /** * 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') ) ); } }