From 0d008b64962ed2973003392e1283b6452375d657 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Tue, 20 Dec 2011 15:57:02 +0100 Subject: [PATCH] ENHANCEMENT Allowing to add pages from main interface, in addition to dialog triggered from admin/pages (through CMSPageAddController) --- _config.php | 3 +- code/controllers/CMSMain.php | 5 ++- code/controllers/CMSPageAddController.php | 27 ++++++++++++++ .../Includes/CMSPageAddController_Content.ss | 37 +++++++++++++++++++ 4 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 code/controllers/CMSPageAddController.php create mode 100644 templates/Includes/CMSPageAddController_Content.ss diff --git a/_config.php b/_config.php index 97caa90f..76782128 100644 --- a/_config.php +++ b/_config.php @@ -34,4 +34,5 @@ Object::add_extension('File', 'SiteTreeFileExtension'); CMSMenu::remove_menu_item('CMSPageEditController'); CMSMenu::remove_menu_item('CMSPageSettingsController'); CMSMenu::remove_menu_item('CMSPageHistoryController'); -CMSMenu::remove_menu_item('CMSPageReportsController'); \ No newline at end of file +CMSMenu::remove_menu_item('CMSPageReportsController'); +CMSMenu::remove_menu_item('CMSPageAddController'); \ No newline at end of file diff --git a/code/controllers/CMSMain.php b/code/controllers/CMSMain.php index cb5fb7cf..12f19ccb 100644 --- a/code/controllers/CMSMain.php +++ b/code/controllers/CMSMain.php @@ -653,13 +653,16 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr $form = $this->getEditForm($record->ID); + $link = Controller::join_links(singleton('CMSPageEditController')->Link('show'), $record->ID); + $this->getResponse()->addHeader('X-ControllerURL', $link); + if(isset($data['returnID'])) { return $record->ID; } else if(Director::is_ajax()) { $form = $this->getEditForm($record->ID); return $form->forTemplate(); } else { - return $this->redirect(Controller::join_links($this->Link('show'), $record->ID)); + return $this->redirect($link); } } diff --git a/code/controllers/CMSPageAddController.php b/code/controllers/CMSPageAddController.php new file mode 100644 index 00000000..6b3b835d --- /dev/null +++ b/code/controllers/CMSPageAddController.php @@ -0,0 +1,27 @@ +addExtraClass('cms-content center cms-edit-form ' . $this->BaseCSSClasses()); + $form->setTemplate($this->getTemplatesWithSuffix('_EditForm')); + if($parentID = $this->request->getVar('ParentID')) { + $form->Fields()->dataFieldByName('ParentID')->setValue((int)$parentID); + } + + return $form; + } + + function doAdd($data, $form) { + $return = parent::doAdd($data, $form); + $this->getResponse()->addHeader('X-Controller', 'CMSPageEditController'); + return $return; + } + +} \ No newline at end of file diff --git a/templates/Includes/CMSPageAddController_Content.ss b/templates/Includes/CMSPageAddController_Content.ss new file mode 100644 index 00000000..f64d24f4 --- /dev/null +++ b/templates/Includes/CMSPageAddController_Content.ss @@ -0,0 +1,37 @@ +<% with AddForm %> +
+ +
+
+

<% _t('CMSAddPageController.Title','Add pages') %>

+
+
+ +
+ + <% if Message %> +

$Message

+ <% else %> + + <% end_if %> + +
+ <% if Legend %>$Legend<% end_if %> + <% control Fields %> + $FieldHolder + <% end_control %> +
+
+ +
+ <% if Actions %> +
+ <% control Actions %> + $Field + <% end_control %> +
+ <% end_if %> +
+ +
+<% end_with %>