FEATURE: added userblog support. Thanks simon_w - #3463
This commit is contained in:
parent
058a3c393c
commit
94601547af
|
@ -167,6 +167,9 @@ class BlogEntry extends Page {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function IsOwner() {
|
||||||
|
return $this->Parent()->IsOwner();
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Call this to enable WYSIWYG editing on your blog entries.
|
* Call this to enable WYSIWYG editing on your blog entries.
|
||||||
* By default the blog uses BBCode
|
* By default the blog uses BBCode
|
||||||
|
@ -194,7 +197,7 @@ class BlogEntry_Controller extends Page_Controller {
|
||||||
* Gets a link to unpublish the blog entry
|
* Gets a link to unpublish the blog entry
|
||||||
*/
|
*/
|
||||||
function unpublishPost() {
|
function unpublishPost() {
|
||||||
if(!Permission::check('ADMIN')) {
|
if(!$this->IsOwner()) {
|
||||||
Security::permissionFailure(
|
Security::permissionFailure(
|
||||||
$this,
|
$this,
|
||||||
'Unpublishing blogs is an administrator task. Please log in.'
|
'Unpublishing blogs is an administrator task. Please log in.'
|
||||||
|
|
|
@ -15,11 +15,13 @@ class BlogHolder extends Page {
|
||||||
static $db = array(
|
static $db = array(
|
||||||
'LandingPageFreshness' => 'Varchar',
|
'LandingPageFreshness' => 'Varchar',
|
||||||
'Name' => 'Varchar',
|
'Name' => 'Varchar',
|
||||||
'TrackBacksEnabled' => 'Boolean'
|
'TrackBacksEnabled' => 'Boolean',
|
||||||
|
'AllowCustomAuthors' => 'Boolean',
|
||||||
);
|
);
|
||||||
|
|
||||||
static $has_one = array(
|
static $has_one = array(
|
||||||
"SideBar" => "WidgetArea"
|
"SideBar" => "WidgetArea",
|
||||||
|
'Owner' => 'Member',
|
||||||
);
|
);
|
||||||
|
|
||||||
static $has_many = array();
|
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 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;
|
return $fields;
|
||||||
}
|
}
|
||||||
|
@ -119,6 +123,15 @@ class BlogHolder extends Page {
|
||||||
return $this->Link('post');
|
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
|
* Create default blog setup
|
||||||
*/
|
*/
|
||||||
|
@ -260,7 +273,7 @@ class BlogHolder_Controller extends Page_Controller {
|
||||||
* Post a new blog entry
|
* Post a new blog entry
|
||||||
*/
|
*/
|
||||||
function post(){
|
function post(){
|
||||||
if(!Permission::check('ADMIN')){
|
if(!$this->IsOwner()){
|
||||||
Security::permissionFailure($this, _t('BlogHolder.HAVENTPERM', 'Posting blogs is an administrator task. Please log in.'));
|
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 {
|
} else {
|
||||||
$tagfield = new TextField('Tags');
|
$tagfield = new TextField('Tags');
|
||||||
}
|
}
|
||||||
|
$field = 'TextField';
|
||||||
|
if(!$this->AllowCustomAuthors && !Permission::check('ADMIN')) {
|
||||||
|
$field = 'ReadonlyField';
|
||||||
|
}
|
||||||
$fields = new FieldSet(
|
$fields = new FieldSet(
|
||||||
new HiddenField("ID", "ID"),
|
new HiddenField("ID", "ID"),
|
||||||
new TextField("Title",_t('BlogHolder.SJ', "Subject")),
|
new TextField("Title",_t('BlogHolder.SJ', "Subject")),
|
||||||
new TextField("Author",_t('BlogEntry.AU'),$membername),
|
new $field("Author",_t('BlogEntry.AU'),$membername),
|
||||||
$contentfield,
|
$contentfield,
|
||||||
$tagfield,
|
$tagfield,
|
||||||
new LiteralField("Tagsnote"," <label id='tagsnote'>"._t('BlogHolder.TE', "For example: sport, personal, science fiction")."<br/>" .
|
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) {
|
if($id != 0) {
|
||||||
$entry = DataObject::get_by_id('BlogEntry', $id);
|
$entry = DataObject::get_by_id('BlogEntry', $id);
|
||||||
$form->loadNonBlankDataFrom($entry);
|
if($entry->IsOwner()) {
|
||||||
$form->datafieldByName('BlogPost')->setValue($entry->Content);
|
$form->loadNonBlankDataFrom($entry);
|
||||||
|
$form->datafieldByName('BlogPost')->setValue($entry->Content);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$form->loadNonBlankDataFrom(array("Author" => Cookie::get("BlogHolder_Name")));
|
$form->loadNonBlankDataFrom(array("Author" => Cookie::get("BlogHolder_Name")));
|
||||||
}
|
}
|
||||||
|
@ -349,6 +367,9 @@ class BlogHolder_Controller extends Page_Controller {
|
||||||
|
|
||||||
if($data['ID']) {
|
if($data['ID']) {
|
||||||
$blogentry = DataObject::get_by_id("BlogEntry", $data['ID']);
|
$blogentry = DataObject::get_by_id("BlogEntry", $data['ID']);
|
||||||
|
if(!$blogentry->IsOwner()) {
|
||||||
|
unset($blogentry);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!$blogentry) {
|
if(!$blogentry) {
|
||||||
|
|
|
@ -33,6 +33,9 @@ class BlogManagementWidget extends Widget {
|
||||||
}
|
}
|
||||||
|
|
||||||
function CommentLink() {
|
function CommentLink() {
|
||||||
|
if(!Permission::check('ADMIN')) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
$unmoderatedcount = DB::query("SELECT COUNT(*) FROM PageComment WHERE NeedsModeration=1")->value();
|
$unmoderatedcount = DB::query("SELECT COUNT(*) FROM PageComment WHERE NeedsModeration=1")->value();
|
||||||
|
|
||||||
if($unmoderatedcount > 0) {
|
if($unmoderatedcount > 0) {
|
||||||
|
@ -43,9 +46,10 @@ class BlogManagementWidget extends Widget {
|
||||||
}
|
}
|
||||||
|
|
||||||
function WidgetHolder() {
|
function WidgetHolder() {
|
||||||
if(Permission::check("ADMIN")) {
|
if($this->getBlogHolder()->IsOwner()) {
|
||||||
return $this->renderWith("WidgetHolder");
|
return $this->renderWith('WidgetHolder');
|
||||||
}
|
}
|
||||||
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
function PostLink() {
|
function PostLink() {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="$PostLink"><% _t('POSTNEW', 'Post a new blog entry') %></a></li>
|
<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>
|
<li><a href="Security/logout"><% _t('LOGOUT', 'Logout') %></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
<br />
|
<br />
|
||||||
</div>
|
</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 %>
|
<% if TrackBacksEnabled %>
|
||||||
<% include TrackBacks %>
|
<% include TrackBacks %>
|
||||||
|
|
Loading…
Reference in New Issue