ENHANCEMENT: allow administators to make it possible for non-admin users to view blog management widget

This commit is contained in:
Julian Seidenberg 2009-05-21 04:07:53 +00:00
parent 43118ecb03
commit 1b7de7e092

View File

@ -3,24 +3,24 @@
* Blog Management Widget * Blog Management Widget
* @package blog * @package blog
*/ */
class BlogManagementWidget extends Widget { class BlogManagementWidget extends Widget implements PermissionProvider {
static $db = array(); static $db = array();
static $has_one = array(); static $has_one = array();
static $has_many = array(); static $has_many = array();
static $many_many = array(); static $many_many = array();
static $belongs_many_many = array(); static $belongs_many_many = array();
static $defaults = array(); static $defaults = array();
static $title = "Blog Management"; static $title = "Blog Management";
static $cmsTitle = "Blog Management"; static $cmsTitle = "Blog Management";
static $description = "Provide a number of links useful for administering a blog. Only shown if the user is an admin."; static $description = "Provide a number of links useful for administering a blog. Only shown if the user is an admin.";
function CommentText() { function CommentText() {
$unmoderatedcount = DB::query("SELECT COUNT(*) FROM PageComment WHERE NeedsModeration=1")->value(); $unmoderatedcount = DB::query("SELECT COUNT(*) FROM PageComment WHERE NeedsModeration=1")->value();
if($unmoderatedcount == 1) { if($unmoderatedcount == 1) {
@ -31,31 +31,46 @@ class BlogManagementWidget extends Widget {
return _t("BlogManagementWidget.COMADM", "Comment administration"); return _t("BlogManagementWidget.COMADM", "Comment administration");
} }
} }
function CommentLink() { function CommentLink() {
if(!Permission::check('ADMIN')) { if(!Permission::check('ADMIN')) {
return false; 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) {
return "admin/comments/unmoderated"; return "admin/comments/unmoderated";
} else { } else {
return "admin/comments"; return "admin/comments";
} }
} }
function WidgetHolder() { function providePermissions() {
$container = BlogTree::current(); return array("BLOGMANAGEMENTWIDGET_VIEW" => "View blog management widget");
if ($container && $container instanceof BlogHolder && $container->canAddChildren()) return $this->renderWith('WidgetHolder');
return '';
} }
function WidgetHolder() {
if(Permission::check("BLOGMANAGEMENTWIDGET_VIEW")) {
return $this->renderWith("WidgetHolder");
}
}
function PostLink() { function PostLink() {
$container = BlogTree::current(); $container = BlogTree::current();
if ($container) return $container->Link('post'); if ($container) return $container->Link('post');
} }
function getBlogHolder() {
$page = Director::currentPage();
if($page->is_a("BlogHolder")) {
return $page;
} else if($page->is_a("BlogEntry") && $page->getParent()->is_a("BlogHolder")) {
return $page->getParent();
} else {
return DataObject::get_one("BlogHolder");
}
}
} }
?> ?>