2011-04-16 07:54:52 +02:00
|
|
|
<?php
|
2012-02-11 01:58:30 +01:00
|
|
|
|
2016-07-22 01:32:32 +02:00
|
|
|
namespace SilverStripe\CMS\Controllers;
|
|
|
|
|
2017-01-23 03:11:49 +01:00
|
|
|
use Page;
|
2017-03-23 21:40:48 +01:00
|
|
|
use SilverStripe\CampaignAdmin\AddToCampaignHandler;
|
2017-01-23 03:11:49 +01:00
|
|
|
use SilverStripe\CMS\Model\SiteTree;
|
2016-12-09 04:00:46 +01:00
|
|
|
use SilverStripe\Control\Controller;
|
2016-09-09 01:26:24 +02:00
|
|
|
use SilverStripe\Control\HTTPRequest;
|
|
|
|
use SilverStripe\Control\HTTPResponse;
|
2016-08-23 04:36:06 +02:00
|
|
|
use SilverStripe\Forms\Form;
|
|
|
|
use SilverStripe\ORM\FieldType\DBHTMLText;
|
2016-08-25 11:30:53 +02:00
|
|
|
|
2012-02-11 01:58:30 +01:00
|
|
|
/**
|
|
|
|
* @package cms
|
|
|
|
*/
|
2017-01-25 21:59:25 +01:00
|
|
|
class CMSPageEditController extends CMSMain
|
|
|
|
{
|
|
|
|
|
|
|
|
private static $url_segment = 'pages/edit';
|
|
|
|
|
|
|
|
private static $url_rule = '/$Action/$ID/$OtherID';
|
|
|
|
|
|
|
|
private static $url_priority = 41;
|
|
|
|
|
|
|
|
private static $required_permission_codes = 'CMS_ACCESS_CMSMain';
|
|
|
|
|
|
|
|
private static $allowed_actions = array(
|
|
|
|
'AddToCampaignForm',
|
|
|
|
);
|
|
|
|
|
|
|
|
public function getClientConfig()
|
|
|
|
{
|
|
|
|
return array_merge(parent::getClientConfig(), [
|
|
|
|
'form' => [
|
|
|
|
'AddToCampaignForm' => [
|
|
|
|
'schemaUrl' => $this->Link('schema/AddToCampaignForm')
|
|
|
|
],
|
|
|
|
],
|
|
|
|
]);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 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['Campaign']);
|
|
|
|
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(
|
|
|
|
'AssetAdmin.ErrorNotFound',
|
|
|
|
'That {Type} couldn\'t be found',
|
|
|
|
'',
|
|
|
|
['Type' => Page::singleton()->i18n_singular_name()]
|
|
|
|
));
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
if (!$record->canView()) {
|
|
|
|
$this->httpError(403, _t(
|
|
|
|
'AssetAdmin.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);
|
|
|
|
return $handler->Form($record);
|
|
|
|
}
|
2012-04-12 09:23:20 +02:00
|
|
|
}
|