mirror of
https://github.com/silverstripe/silverstripe-contentreview
synced 2024-10-22 17:05:47 +02:00
Coding style guidelines
This commit is contained in:
parent
90db01d259
commit
d28a0eefa0
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
||||||
|
@ -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'));
|
||||||
|
@ -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",
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user