Merge pull request #153 from dhensby/pulls/126

Add extension hooks to blog entry form
This commit is contained in:
Damian Mooyman 2015-03-06 11:27:11 +13:00
commit bffce65543
1 changed files with 29 additions and 23 deletions

View File

@ -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 @@ class BlogHolder extends BlogTree implements PermissionProvider {
);
$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 @@ class BlogHolder extends BlogTree implements PermissionProvider {
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 @@ class BlogHolder extends BlogTree implements PermissionProvider {
*/
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 @@ class BlogHolder extends BlogTree implements PermissionProvider {
$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 @@ class BlogHolder_Controller extends BlogTree_Controller {
/**
* 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 @@ class BlogHolder_Controller extends BlogTree_Controller {
} else {
$tagfield = new TextField('Tags');
}
$field = 'TextField';
if(!$this->AllowCustomAuthors && !Permission::check('ADMIN')) {
$field = 'ReadonlyField';
@ -266,7 +266,7 @@ class BlogHolder_Controller extends BlogTree_Controller {
new LiteralField("Tagsnote"," <label id='tagsnote'>"._t('BlogHolder.TE', "For example: sport, personal, science fiction")."<br/>" .
_t('BlogHolder.SPUC', "Please separate tags using commas.")."</label>")
);
$submitAction = new FormAction('postblog', _t('BlogHolder.POST', 'Post blog entry'));
$actions = new FieldList($submitAction);
@ -285,6 +285,8 @@ class BlogHolder_Controller extends BlogTree_Controller {
$form->loadDataFrom(array("Author" => Cookie::get("BlogHolder_Name")));
}
$this->extend("updateBlogEntryForm", $form);
return $form;
}
@ -311,15 +313,19 @@ class BlogHolder_Controller extends BlogTree_Controller {
$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());
}
}