FEATURE: added userblog support. Thanks simon_w - #3463

This commit is contained in:
Will Rossiter 2009-02-07 02:19:27 +00:00
parent 058a3c393c
commit 94601547af
5 changed files with 41 additions and 13 deletions

View File

@ -167,6 +167,9 @@ class BlogEntry extends Page {
}
}
function IsOwner() {
return $this->Parent()->IsOwner();
}
/**
* Call this to enable WYSIWYG editing on your blog entries.
* By default the blog uses BBCode
@ -194,7 +197,7 @@ class BlogEntry_Controller extends Page_Controller {
* Gets a link to unpublish the blog entry
*/
function unpublishPost() {
if(!Permission::check('ADMIN')) {
if(!$this->IsOwner()) {
Security::permissionFailure(
$this,
'Unpublishing blogs is an administrator task. Please log in.'

View File

@ -15,11 +15,13 @@ class BlogHolder extends Page {
static $db = array(
'LandingPageFreshness' => 'Varchar',
'Name' => 'Varchar',
'TrackBacksEnabled' => 'Boolean'
'TrackBacksEnabled' => 'Boolean',
'AllowCustomAuthors' => 'Boolean',
);
static $has_one = array(
"SideBar" => "WidgetArea"
"SideBar" => "WidgetArea",
'Owner' => 'Member',
);
static $has_many = array();
@ -57,6 +59,8 @@ class BlogHolder extends Page {
)));
$fields->addFieldToTab('Root.Content.Main', new CheckboxField('TrackBacksEnabled', 'Enable TrackBacks'));
$fields->addFieldToTab('Root.Content.Main', new DropdownField('OwnerID', 'Blog owner', DataObject::get('Member')->toDropDownMap('ID', 'Name', 'None')));
$fields->addFieldToTab('Root.Content.Main', new CheckboxField('AllowCustomAuthors', 'Allow non-admins to have a custom author field'));
return $fields;
}
@ -119,6 +123,15 @@ class BlogHolder extends Page {
return $this->Link('post');
}
/**
* Returns true if the current user is an admin, or is the owner of this blog
*
* @return Boolean
*/
function IsOwner() {
return Permission::check('ADMIN') || (Member::CurrentMember() && Member::CurrentMember()->ID == $this->OwnerID);
}
/**
* Create default blog setup
*/
@ -260,7 +273,7 @@ class BlogHolder_Controller extends Page_Controller {
* Post a new blog entry
*/
function post(){
if(!Permission::check('ADMIN')){
if(!$this->IsOwner()){
Security::permissionFailure($this, _t('BlogHolder.HAVENTPERM', 'Posting blogs is an administrator task. Please log in.'));
}
@ -315,11 +328,14 @@ class BlogHolder_Controller extends Page_Controller {
} else {
$tagfield = new TextField('Tags');
}
$field = 'TextField';
if(!$this->AllowCustomAuthors && !Permission::check('ADMIN')) {
$field = 'ReadonlyField';
}
$fields = new FieldSet(
new HiddenField("ID", "ID"),
new TextField("Title",_t('BlogHolder.SJ', "Subject")),
new TextField("Author",_t('BlogEntry.AU'),$membername),
new $field("Author",_t('BlogEntry.AU'),$membername),
$contentfield,
$tagfield,
new LiteralField("Tagsnote"," <label id='tagsnote'>"._t('BlogHolder.TE', "For example: sport, personal, science fiction")."<br/>" .
@ -334,8 +350,10 @@ class BlogHolder_Controller extends Page_Controller {
if($id != 0) {
$entry = DataObject::get_by_id('BlogEntry', $id);
$form->loadNonBlankDataFrom($entry);
$form->datafieldByName('BlogPost')->setValue($entry->Content);
if($entry->IsOwner()) {
$form->loadNonBlankDataFrom($entry);
$form->datafieldByName('BlogPost')->setValue($entry->Content);
}
} else {
$form->loadNonBlankDataFrom(array("Author" => Cookie::get("BlogHolder_Name")));
}
@ -349,6 +367,9 @@ class BlogHolder_Controller extends Page_Controller {
if($data['ID']) {
$blogentry = DataObject::get_by_id("BlogEntry", $data['ID']);
if(!$blogentry->IsOwner()) {
unset($blogentry);
}
}
if(!$blogentry) {

View File

@ -33,6 +33,9 @@ class BlogManagementWidget extends Widget {
}
function CommentLink() {
if(!Permission::check('ADMIN')) {
return false;
}
$unmoderatedcount = DB::query("SELECT COUNT(*) FROM PageComment WHERE NeedsModeration=1")->value();
if($unmoderatedcount > 0) {
@ -43,9 +46,10 @@ class BlogManagementWidget extends Widget {
}
function WidgetHolder() {
if(Permission::check("ADMIN")) {
return $this->renderWith("WidgetHolder");
if($this->getBlogHolder()->IsOwner()) {
return $this->renderWith('WidgetHolder');
}
return '';
}
function PostLink() {

View File

@ -1,5 +1,5 @@
<ul>
<li><a href="$PostLink"><% _t('POSTNEW', 'Post a new blog entry') %></a></li>
<li><a href="$CommentLink">$CommentText</a></li>
<% if CommentLink %><li><a href="$CommentLink">$CommentText</a></li><% end_if %>
<li><a href="Security/logout"><% _t('LOGOUT', 'Logout') %></a></li>
</ul>
</ul>

View File

@ -21,7 +21,7 @@
<br />
</div>
<% if CurrentMember %><p><a href="$EditURL" id="editpost" title="<% _t('EDITTHIS', 'Edit this post') %>"><% _t('EDITTHIS', 'Edit this post') %></a> | <a href="$Link(unpublishPost)" id="unpublishpost"><% _t('UNPUBLISHTHIS', 'Unpublish this post') %></a></p><% end_if %>
<% if IsOwner %><p><a href="$EditURL" id="editpost" title="<% _t('EDITTHIS', 'Edit this post') %>"><% _t('EDITTHIS', 'Edit this post') %></a> | <a href="$Link(unpublishPost)" id="unpublishpost"><% _t('UNPUBLISHTHIS', 'Unpublish this post') %></a></p><% end_if %>
<% if TrackBacksEnabled %>
<% include TrackBacks %>