From 3b9c623ca8c3413cd528ce7dc89ed5f4b2a863ec Mon Sep 17 00:00:00 2001 From: Morven Lewis-Everley Date: Tue, 5 Aug 2014 14:28:47 +0100 Subject: [PATCH] Add extension hooks to blog entry form (so we can customise management form) --- code/BlogHolder.php | 52 +++++++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/code/BlogHolder.php b/code/BlogHolder.php index 547d5a3f7..62a235a75 100644 --- a/code/BlogHolder.php +++ b/code/BlogHolder.php @@ -14,16 +14,16 @@ class BlogHolder extends BlogTree implements PermissionProvider { private static $icon = "blog/images/blogholder-file.png"; - + private static $description = "Displays listings of blog entries"; - + private static $singular_name = 'Blog Holder Page'; private static $plural_name = 'Blog Holder Pages'; private static $db = array( 'AllowCustomAuthors' => 'Boolean', - 'ShowFullEntry' => 'Boolean', + 'ShowFullEntry' => 'Boolean', ); private static $has_one = array( @@ -35,14 +35,14 @@ class BlogHolder extends BlogTree implements PermissionProvider { ); function getCMSFields() { - $blogOwners = $this->blogOwners(); + $blogOwners = $this->blogOwners(); SiteTree::disableCMSFieldsExtensions(); $fields = parent::getCMSFields(); SiteTree::enableCMSFieldsExtensions(); - + $fields->addFieldToTab( - 'Root.Main', + 'Root.Main', DropdownField::create('OwnerID', 'Blog owner', $blogOwners->map('ID', 'Name')->toArray()) ->setEmptyString('(None)') ->setHasEmptyDefault(true), @@ -50,9 +50,9 @@ function getCMSFields() { ); $fields->addFieldToTab('Root.Main', new CheckboxField('AllowCustomAuthors', 'Allow non-admins to have a custom author field'), "Content"); $fields->addFieldToTab( - "Root.Main", + "Root.Main", CheckboxField::create("ShowFullEntry", "Show Full Entry") - ->setDescription('Show full content in overviews rather than summary'), + ->setDescription('Show full content in overviews rather than summary'), "Content" ); @@ -60,18 +60,18 @@ function getCMSFields() { return $fields; } - + /** * Get members who have BLOGMANAGEMENT and ADMIN permission - */ + */ function blogOwners($sort = array('FirstName'=>'ASC','Surname'=>'ASC'), $direction = null) { - - $members = Permission::get_members_by_permission(array('ADMIN','BLOGMANAGEMENT')); + + $members = Permission::get_members_by_permission(array('ADMIN','BLOGMANAGEMENT')); $members->sort($sort); - + $this->extend('extendBlogOwners', $members); - + return $members; } @@ -120,10 +120,10 @@ function IsOwner() { */ function requireDefaultRecords() { parent::requireDefaultRecords(); - + // Skip creation of default records if(!self::config()->create_default_pages) return; - + if(!BlogHolder::get()->exists()) { $blogholder = new BlogHolder(); $blogholder->Title = "Blog"; @@ -156,7 +156,7 @@ function requireDefaultRecords() { $archivewidget->ParentID = $widgetarea->ID; $archivewidget->write(); - $widgetarea->write(); + $widgetarea->write(); break; // only apply to one } @@ -196,7 +196,7 @@ class BlogHolder_Controller extends BlogTree_Controller { 'post', 'BlogEntryForm' => 'BLOGMANAGEMENT', ); - + function init() { parent::init(); Requirements::themedCSS("bbcodehelp"); @@ -225,9 +225,9 @@ function post(){ /** * A simple form for creating blog entries */ - function BlogEntryForm() { + function BlogEntryForm() { if(!Permission::check('BLOGMANAGEMENT')) return Security::permissionFailure(); - + $id = 0; if($this->request->latestParam('ID')) { @@ -252,7 +252,7 @@ function BlogEntryForm() { } else { $tagfield = new TextField('Tags'); } - + $field = 'TextField'; if(!$this->AllowCustomAuthors && !Permission::check('ADMIN')) { $field = 'ReadonlyField'; @@ -266,7 +266,7 @@ function BlogEntryForm() { new LiteralField("Tagsnote"," ") ); - + $submitAction = new FormAction('postblog', _t('BlogHolder.POST', 'Post blog entry')); $actions = new FieldList($submitAction); @@ -285,6 +285,8 @@ function BlogEntryForm() { $form->loadDataFrom(array("Author" => Cookie::get("BlogHolder_Name"))); } + $this->extend("updateBlogEntryForm", $form); + return $form; } @@ -311,15 +313,19 @@ function postblog($data, $form) { $blogentry->Content = str_replace("\r\n", "\n", $form->Fields()->fieldByName('BlogPost')->dataValue()); if(Object::has_extension($this->ClassName, 'Translatable')) { - $blogentry->Locale = $this->Locale; + $blogentry->Locale = $this->Locale; } + $this->extend("onBeforePostBlog", $blogentry); + $oldMode = Versioned::get_reading_mode(); Versioned::reading_stage('Stage'); $blogentry->write(); $blogentry->publish("Stage", "Live"); Versioned::set_reading_mode($oldMode); + $this->extend("onAfterPostBlog", $blogentry); + $this->redirect($this->Link()); } }