Skip to content

Commit

Permalink
NEW Show "post" date and author in CMS list view for blog entries
Browse files Browse the repository at this point in the history
  • Loading branch information
chillu committed Apr 7, 2013
1 parent dc4705d commit e265ae3
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 0 deletions.
3 changes: 3 additions & 0 deletions _config/config.yml
@@ -0,0 +1,3 @@
LeftAndMain:
extensions:
- BlogLeftMainExtension
39 changes: 39 additions & 0 deletions code/BlogLeftMainExtension.php
@@ -0,0 +1,39 @@
<?php
/**
* Influences the page list behaviour of blog entries in the CMS.
* Adds author and "post date" fields.
*/
class BlogLeftMainExtension extends Extension {
function updateListView($listView) {
$parentId = $listView->getController()->getRequest()->requestVar('ParentID');
$parent = ($parentId) ? Page::get()->byId($parentId) : new Page();

// Only apply logic for this page type
if($parent && $parent instanceof BlogHolder) {
$gridField = $listView->Fields()->dataFieldByName('Page');
if($gridField) {
// Sort by post date
$list = $gridField->getList();
$list = $list->leftJoin('BlogEntry', '"BlogEntry"."ID" = "SiteTree"."ID"');
$gridField->setList($list->sort('Date', 'DESC'));

// Change columns
$cols = $gridField->getConfig()->getComponentByType('GridFieldDataColumns');
if($cols) {
$fields = $cols->getDisplayFields($gridField);
$castings = $cols->getFieldCasting($gridField);

// Add author to columns
$fields['Author'] = _t("BlogEntry.AU", "Author");
// Add post date and remove duplicate "created" date
$fields['Date'] = _t("BlogEntry.DT", "Date");
$castings['Date'] = 'SS_Datetime->Ago';
if(isset($fields['Created'])) unset($fields['Created']);

$cols->setDisplayFields($fields);
$cols->setFieldCasting($castings);
}
}
}
}
}

0 comments on commit e265ae3

Please sign in to comment.