Added tag field

This commit is contained in:
Christopher Pitt 2015-04-08 11:48:00 +12:00
parent c03ec88467
commit 3e29c378ed
2 changed files with 98 additions and 29 deletions

View File

@ -168,16 +168,20 @@ class BlogPost extends Page {
$options = BlogAdminSidebar::create(
$publishDate = DatetimeField::create("PublishDate", _t("BlogPost.PublishDate", "Publish Date")),
$urlSegment,
ListboxField::create(
"Categories",
_t("BlogPost.Categories", "Categories"),
$self->Parent()->Categories()->map()->toArray()
)->setMultiple(true),
ListboxField::create(
"Tags",
_t("BlogPost.Tags", "Tags"),
$self->Parent()->Tags()->map()->toArray()
)->setMultiple(true),
TagField::create(
'Categories',
_t('BlogPost.Categories', 'Categories'),
$self->Parent()->Categories()->map(),
$self->Categories()->map(),
!$this->canCreateCategories()
),
TagField::create(
'Tags',
_t('BlogPost.Tags', 'Tags'),
$self->Parent()->Tags()->map(),
$self->Tags()->map(),
!$this->canCreateTags()
),
$authorField,
$authorNames
)->setTitle('Post Options');
@ -195,6 +199,48 @@ class BlogPost extends Page {
return $fields;
}
/**
* Determine whether user can create new categories.
*
* @param int|Member|null $member
*
* @return bool
*/
public function canCreateCategories($member = null) {
$member = $member ?: Member::currentUser();
if(is_numeric($member)) $member = Member::get()->byID($member);
$parent = $this->Parent();
if(!$parent || !$parent->exists() || !($parent instanceof Blog)) return false;
if($parent->isEditor($member)) return true;
return Permission::checkMember($member, 'ADMIN');
}
/**
* Determine whether user can create new tags.
*
* @param int|Member|null $member
*
* @return bool
*/
public function canCreateTags($member = null) {
$member = $member ?: Member::currentUser();
if(is_numeric($member)) $member = Member::get()->byID($member);
$parent = $this->Parent();
if(!$parent || !$parent->exists() || !($parent instanceof Blog)) return false;
if($parent->isEditor($member)) return true;
if($parent->isWriter($member)) return true;
return Permission::checkMember($member, 'ADMIN');
}
protected function onBeforeWrite() {
parent::onBeforeWrite();
@ -220,7 +266,25 @@ class BlogPost extends Page {
}
}
/**
* Sets blog relationship on all categories and tags assigned to this post.
*
* @throws ValidationException
*/
public function onAfterWrite()
{
parent::onAfterWrite();
foreach ($this->Categories() as $category) {
$category->BlogID = $this->ParentID;
$category->write();
}
foreach ($this->Tags() as $tag) {
$tag->BlogID = $this->ParentID;
$tag->write();
}
}
/**
* Checks the publish date to see if the blog post has actually been published.

View File

@ -1,12 +1,17 @@
{
"name": "silverstripe/blog",
"description": "A fresh take on blogging in Silverstripe set out to tackle the issue of a cluttered Site Tree.",
"keywords": ["silverstripe", "blog", "news"],
"type": "silverstripe-module",
"require": {
"silverstripe/cms": ">=3.1.0",
"silverstripe/lumberjack": "~1.1"
},
"name": "silverstripe/blog",
"description": "A fresh take on blogging in Silverstripe set out to tackle the issue of a cluttered Site Tree.",
"keywords": [
"silverstripe",
"blog",
"news"
],
"type": "silverstripe-module",
"require": {
"silverstripe/cms": ">=3.1.0",
"silverstripe/lumberjack": "~1.1",
"silverstripe/tagfield": "dev-develop"
},
"require-dev": {
"phpunit/PHPUnit": "~3.7@stable"
},
@ -15,15 +20,15 @@
"dev-master": "2.0.x-dev"
}
},
"license": "BSD-2-Clause",
"authors": [
{
"name": "Michael Strong",
"email": "github@michaelstrong.co.uk"
}
],
"suggest": {
"silverstripe/widgets": "Some widgets come with the blog which are compatible with the widgets module.",
"silverstripe/comments": "This module adds comments to your blog."
}
"license": "BSD-2-Clause",
"authors": [
{
"name": "Michael Strong",
"email": "github@michaelstrong.co.uk"
}
],
"suggest": {
"silverstripe/widgets": "Some widgets come with the blog which are compatible with the widgets module.",
"silverstripe/comments": "This module adds comments to your blog."
}
}