Coding style guidelines

This commit is contained in:
Stig Lindqvist 2014-02-13 14:07:39 +13:00
parent 90db01d259
commit d28a0eefa0
5 changed files with 106 additions and 44 deletions

View File

@ -8,6 +8,10 @@
*/ */
class ContentReviewEmails extends BuildTask { class ContentReviewEmails extends BuildTask {
/**
*
* @param SS_HTTPRequest $request
*/
public function run($request) { public function run($request) {
// Disable subsite filter (if installed) // Disable subsite filter (if installed)
if (ClassInfo::exists('Subsite')) { if (ClassInfo::exists('Subsite')) {
@ -38,7 +42,6 @@ class ContentReviewEmails extends BuildTask {
"StageSiteLink" => Controller::join_links($page->Link(), "?stage=Stage"), "StageSiteLink" => Controller::join_links($page->Link(), "?stage=Stage"),
"LiveSiteLink" => Controller::join_links($page->Link(), "?stage=Live"), "LiveSiteLink" => Controller::join_links($page->Link(), "?stage=Live"),
)); ));
$email->send(); $email->send();
} }
} }

View File

@ -3,6 +3,11 @@
* Task which migrates the ContentReview Module's SiteTree->OwnerID column to a new column name * Task which migrates the ContentReview Module's SiteTree->OwnerID column to a new column name
*/ */
class ContentReviewOwnerMigrationTask extends BuildTask { class ContentReviewOwnerMigrationTask extends BuildTask {
/**
*
* @param SS_HTTPRequest $request
*/
public function run($request) { public function run($request) {
$results = DB::query('SHOW columns from "SiteTree" WHERE "field" = \'OwnerID\''); $results = DB::query('SHOW columns from "SiteTree" WHERE "field" = \'OwnerID\'');
if ($results->numRecords() == 0) { if ($results->numRecords() == 0) {

View File

@ -7,11 +7,20 @@ require_once 'Zend/Date.php';
* @package contentreview * @package contentreview
*/ */
class PagesDueForReviewReport extends SS_Report { class PagesDueForReviewReport extends SS_Report {
function title() {
/**
*
* @return string
*/
public function title() {
return _t('PagesDueForReviewReport.TITLE', 'Pages due for review'); return _t('PagesDueForReviewReport.TITLE', 'Pages due for review');
} }
function parameterFields() { /**
*
* @return \FieldList
*/
public function parameterFields() {
$params = new FieldList(); $params = new FieldList();
// We need to be a bit fancier when subsites is enabled // We need to be a bit fancier when subsites is enabled
@ -66,7 +75,11 @@ class PagesDueForReviewReport extends SS_Report {
return $params; return $params;
} }
function columns() { /**
*
* @return array
*/
public function columns() {
$linkBase = singleton('CMSPageEditController')->Link('show') . '/'; $linkBase = singleton('CMSPageEditController')->Link('show') . '/';
$fields = array( $fields = array(
'Title' => array( 'Title' => array(
@ -98,11 +111,16 @@ class PagesDueForReviewReport extends SS_Report {
return $fields; return $fields;
} }
function sourceRecords($params, $sort, $limit) { /**
*
* @param array $params
* @param string $sort
* @param array $limit
* @return DataList
*/
public function sourceRecords($params, $sort, $limit) {
$records = SiteTree::get(); $records = SiteTree::get();
$wheres = array();
if(empty($params['ReviewDateBefore']) && empty($params['ReviewDateAfter'])) { if(empty($params['ReviewDateBefore']) && empty($params['ReviewDateAfter'])) {
// If there's no review dates set, default to all pages due for review now // If there's no review dates set, default to all pages due for review now
$reviewDate = new Zend_Date(SS_Datetime::now()->Format('U')); $reviewDate = new Zend_Date(SS_Datetime::now()->Format('U'));

View File

@ -7,6 +7,10 @@
*/ */
class SiteTreeContentReview extends DataExtension implements PermissionProvider { class SiteTreeContentReview extends DataExtension implements PermissionProvider {
/**
*
* @var array
*/
private static $db = array( private static $db = array(
"ReviewPeriodDays" => "Int", "ReviewPeriodDays" => "Int",
"NextReviewDate" => "Date", "NextReviewDate" => "Date",
@ -15,53 +19,75 @@ class SiteTreeContentReview extends DataExtension implements PermissionProvider
'OwnerNames' => 'Varchar(255)' 'OwnerNames' => 'Varchar(255)'
); );
/**
*
* @var array
*/
private static $has_one = array( private static $has_one = array(
'ContentReviewOwner' => 'Member', 'ContentReviewOwner' => 'Member',
); );
function getOwnerName() { /**
if($this->owner->ContentReviewOwnerID && $this->owner->ContentReviewOwner()) return $this->owner->ContentReviewOwner()->FirstName . ' ' . $this->owner->ContentReviewOwner()->Surname; *
* @return string
*/
public function getOwnerName() {
if($this->owner->ContentReviewOwnerID && $this->owner->ContentReviewOwner()) {
return $this->owner->ContentReviewOwner()->FirstName . ' ' . $this->owner->ContentReviewOwner()->Surname;
}
} }
function getEditorName() { /**
*
* @return string
*/
public function getEditorName() {
if( $member = Member::currentUser() ) { if( $member = Member::currentUser() ) {
return $member->FirstName .' '. $member->Surname; return $member->FirstName .' '. $member->Surname;
} }
return NULL; return NULL;
} }
/**
*
* @param FieldList $fields
* @return void
*/
public function updateCMSFields(FieldList $fields) { public function updateCMSFields(FieldList $fields) {
if(Permission::check("EDIT_CONTENT_REVIEW_FIELDS")) { if(Permission::check("EDIT_CONTENT_REVIEW_FIELDS")) {
return;
$cmsUsers = Permission::get_members_by_permission(array("CMS_ACCESS_CMSMain", "ADMIN"));
$fields->addFieldsToTab("Root.Review", array(
new HeaderField(_t('SiteTreeCMSWorkflow.REVIEWHEADER', "Content review"), 2),
new DropdownField("ContentReviewOwnerID", _t("SiteTreeCMSWorkflow.PAGEOWNER",
"Page owner (will be responsible for reviews)"), $cmsUsers->map('ID', 'Title', '(no owner)')),
DateField::create(
"NextReviewDate",
_t("SiteTreeCMSWorkflow.NEXTREVIEWDATE", "Next review date (leave blank for no review)")
)->setConfig('showcalendar', true)->setConfig('dateformat', 'yyyy-MM-dd')->setConfig('datavalueformat', 'yyyy-MM-dd'),
new DropdownField("ReviewPeriodDays", _t("SiteTreeCMSWorkflow.REVIEWFREQUENCY",
"Review frequency (the review date will be set to this far in the future whenever the page is published.)"), array(
0 => "No automatic review date",
1 => "1 day",
7 => "1 week",
30 => "1 month",
60 => "2 months",
91 => "3 months",
121 => "4 months",
152 => "5 months",
183 => "6 months",
365 => "12 months",
)),
new TextareaField('ReviewNotes', 'Review Notes')
));
} }
$cmsUsers = Permission::get_members_by_permission(array("CMS_ACCESS_CMSMain", "ADMIN"));
$fields->addFieldsToTab("Root.Review", array(
new HeaderField(_t('SiteTreeCMSWorkflow.REVIEWHEADER', "Content review"), 2),
new DropdownField("ContentReviewOwnerID", _t("SiteTreeCMSWorkflow.PAGEOWNER",
"Page owner (will be responsible for reviews)"), $cmsUsers->map('ID', 'Title', '(no owner)')),
DateField::create(
"NextReviewDate",
_t("SiteTreeCMSWorkflow.NEXTREVIEWDATE", "Next review date (leave blank for no review)")
)->setConfig('showcalendar', true)->setConfig('dateformat', 'yyyy-MM-dd')->setConfig('datavalueformat', 'yyyy-MM-dd'),
new DropdownField("ReviewPeriodDays", _t("SiteTreeCMSWorkflow.REVIEWFREQUENCY",
"Review frequency (the review date will be set to this far in the future whenever the page is published.)"), array(
0 => "No automatic review date",
1 => "1 day",
7 => "1 week",
30 => "1 month",
60 => "2 months",
91 => "3 months",
121 => "4 months",
152 => "5 months",
183 => "6 months",
365 => "12 months",
)),
new TextareaField('ReviewNotes', 'Review Notes')
));
} }
function onBeforeWrite() { /**
* Set the review data from the review period, if set.
*/
public function onBeforeWrite() {
if($this->owner->ReviewPeriodDays && !$this->owner->NextReviewDate) { if($this->owner->ReviewPeriodDays && !$this->owner->NextReviewDate) {
$this->owner->NextReviewDate = date('Y-m-d', strtotime('+' . $this->owner->ReviewPeriodDays . ' days')); $this->owner->NextReviewDate = date('Y-m-d', strtotime('+' . $this->owner->ReviewPeriodDays . ' days'));
} }
@ -69,7 +95,12 @@ class SiteTreeContentReview extends DataExtension implements PermissionProvider
$this->owner->OwnerNames = $this->owner->getOwnerName(); $this->owner->OwnerNames = $this->owner->getOwnerName();
} }
function providePermissions() { /**
* Provide permissions to the CMS
*
* @return array
*/
public function providePermissions() {
return array( return array(
"EDIT_CONTENT_REVIEW_FIELDS" => array( "EDIT_CONTENT_REVIEW_FIELDS" => array(
'name' => "Set content owners and review dates", 'name' => "Set content owners and review dates",

View File

@ -1,9 +1,14 @@
<?php <?php
class ContentReviewTest extends FunctionalTest { class ContentReviewTest extends FunctionalTest {
static $fixture_file = 'contentreview/tests/ContentReviewTest.yml';
function testPermissions() { /**
*
* @var string
*/
public static $fixture_file = 'contentreview/tests/ContentReviewTest.yml';
public function testPermissions() {
$editor = $this->objFromFixture('Member', 'editor'); $editor = $this->objFromFixture('Member', 'editor');
$author = $this->objFromFixture('Member', 'author'); $author = $this->objFromFixture('Member', 'author');
@ -24,7 +29,7 @@ class ContentReviewTest extends FunctionalTest {
$this->assertNull($fields->fieldByName('Root.Review')); $this->assertNull($fields->fieldByName('Root.Review'));
} }
function testContentReviewEmails() { public function testContentReviewEmails() {
SS_Datetime::set_mock_now('2010-02-14 12:00:00'); SS_Datetime::set_mock_now('2010-02-14 12:00:00');
$task = new ContentReviewEmails(); $task = new ContentReviewEmails();
@ -35,7 +40,7 @@ class ContentReviewTest extends FunctionalTest {
SS_Datetime::clear_mock_now(); SS_Datetime::clear_mock_now();
} }
function testAutomaticallySettingReviewDate() { public function testAutomaticallySettingReviewDate() {
$editor = $this->objFromFixture('Member', 'editor'); $editor = $this->objFromFixture('Member', 'editor');
$this->logInAs($editor); $this->logInAs($editor);
@ -46,7 +51,7 @@ class ContentReviewTest extends FunctionalTest {
$this->assertEquals(date('Y-m-d', strtotime('now + 10 days')), $page->NextReviewDate); $this->assertEquals(date('Y-m-d', strtotime('now + 10 days')), $page->NextReviewDate);
} }
function testReportContent() { public function testReportContent() {
$editor = $this->objFromFixture('Member', 'editor'); $editor = $this->objFromFixture('Member', 'editor');
$this->logInAs($editor); $this->logInAs($editor);
$report = new PagesDueForReviewReport(); $report = new PagesDueForReviewReport();
@ -78,7 +83,7 @@ class ContentReviewTest extends FunctionalTest {
SS_Datetime::clear_mock_now(); SS_Datetime::clear_mock_now();
} }
function testOwnerName() { public function testOwnerName() {
$editor = $this->objFromFixture('Member', 'editor'); $editor = $this->objFromFixture('Member', 'editor');
$this->logInAs($editor); $this->logInAs($editor);