[ 'AddToCampaignForm' => [ 'schemaUrl' => $this->Link('schema/AddToCampaignForm'), ], 'editorInternalLink' => [ 'schemaUrl' => LeftAndMain::singleton() ->Link('methodSchema/Modals/editorInternalLink'), ], 'editorAnchorLink' => [ 'schemaUrl' => LeftAndMain::singleton() ->Link('methodSchema/Modals/editorAnchorLink/:pageid'), ], ], ]); } /** * Action handler for adding pages to a campaign * * @param array $data * @param Form $form * @return DBHTMLText|HTTPResponse */ public function addtocampaign($data, $form) { $id = $data['ID']; $record = \Page::get()->byID($id); $handler = AddToCampaignHandler::create($this, $record); $results = $handler->addToCampaign($record, $data); if (is_null($results)) { return null; } if ($this->getSchemaRequested()) { // Send extra "message" data with schema response $extraData = ['message' => $results]; $schemaId = Controller::join_links($this->Link('schema/AddToCampaignForm'), $id); return $this->getSchemaResponse($schemaId, $form, null, $extraData); } return $results; } /** * Url handler for add to campaign form * * @param HTTPRequest $request * @return Form */ public function AddToCampaignForm($request) { // Get ID either from posted back value, or url parameter $id = $request->param('ID') ?: $request->postVar('ID'); return $this->getAddToCampaignForm($id); } /** * @param int $id * @return Form */ public function getAddToCampaignForm($id) { // Get record-specific fields $record = SiteTree::get()->byID($id); if (!$record) { $this->httpError(404, _t( __CLASS__ . '.ErrorNotFound', 'That {Type} couldn\'t be found', '', ['Type' => Page::singleton()->i18n_singular_name()] )); return null; } if (!$record->canView()) { $this->httpError(403, _t( __CLASS__.'.ErrorItemPermissionDenied', 'It seems you don\'t have the necessary permissions to add {ObjectTitle} to a campaign', '', ['ObjectTitle' => Page::singleton()->i18n_singular_name()] )); return null; } $handler = AddToCampaignHandler::create($this, $record); $form = $handler->Form($record); $form->setValidationResponseCallback(function (ValidationResult $errors) use ($form, $id) { $schemaId = Controller::join_links($this->Link('schema/AddToCampaignForm'), $id); return $this->getSchemaResponse($schemaId, $form, $errors); }); return $form; } }