MINOR: Misc fixes to clean up the 2.4 mergeback.

This commit is contained in:
Sam Minnee 2011-02-22 10:52:56 +13:00
parent 5a23f69f0b
commit e45f4c923c
6 changed files with 93 additions and 207 deletions

View File

@ -309,7 +309,7 @@ HTML;
/** /**
* Return the form that displays the details of a folder, including a file list and fields for editing the folder name. * Return the form that displays the details of a folder, including a file list and fields for editing the folder name.
*/ */
function getEditForm($id) { function getEditForm($id = null) {
if($id && $id != "root") { if($id && $id != "root") {
$record = DataObject::get_by_id("File", $id); $record = DataObject::get_by_id("File", $id);
} else { } else {
@ -498,6 +498,7 @@ JS;
$parent = ($_REQUEST['ParentID'] && is_numeric($_REQUEST['ParentID'])) ? (int)$_REQUEST['ParentID'] : 0; $parent = ($_REQUEST['ParentID'] && is_numeric($_REQUEST['ParentID'])) ? (int)$_REQUEST['ParentID'] : 0;
$name = (isset($_REQUEST['Name'])) ? basename($_REQUEST['Name']) : _t('AssetAdmin.NEWFOLDER',"NewFolder"); $name = (isset($_REQUEST['Name'])) ? basename($_REQUEST['Name']) : _t('AssetAdmin.NEWFOLDER',"NewFolder");
}
/** /**
* @return Form * @return Form

View File

@ -139,6 +139,9 @@ class CMSBatchAction_Publish extends CMSBatchAction {
function getActionTitle() { function getActionTitle() {
return _t('CMSBatchActions.PUBLISH_PAGES', 'Publish'); return _t('CMSBatchActions.PUBLISH_PAGES', 'Publish');
} }
function getDoingText() {
return _t('CMSBatchActions.PUBLISHING_PAGES', 'Publishing selected pages');
}
function run(DataObjectSet $pages) { function run(DataObjectSet $pages) {
return $this->batchaction($pages, 'doPublish', return $this->batchaction($pages, 'doPublish',
@ -161,6 +164,9 @@ class CMSBatchAction_Unpublish extends CMSBatchAction {
function getActionTitle() { function getActionTitle() {
return _t('CMSBatchActions.UNPUBLISH_PAGES', 'Un-publish'); return _t('CMSBatchActions.UNPUBLISH_PAGES', 'Un-publish');
} }
function getDoingText() {
return _t('CMSBatchActions.UNPUBLISHING_PAGES', 'Un-publishing selected pages');
}
function run(DataObjectSet $pages) { function run(DataObjectSet $pages) {
return $this->batchaction($pages, 'doUnpublish', return $this->batchaction($pages, 'doUnpublish',

View File

@ -46,6 +46,7 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
'versions', 'versions',
'EditForm', 'EditForm',
'AddForm', 'AddForm',
'SearchTreeForm',
'SiteTreeAsUL', 'SiteTreeAsUL',
'getshowdeletedsubtree', 'getshowdeletedsubtree',
'getfilteredsubtree', 'getfilteredsubtree',
@ -1292,7 +1293,91 @@ JS;
return $form; return $form;
} }
/**
* Form used to filter the sitetree. It can only be used via javascript for now.
*
* @return Form
*/
function SearchTreeForm() {
// get all page types in a dropdown-compatible format
$pageTypes = SiteTree::page_type_classes();
array_unshift($pageTypes, 'All');
$pageTypes = array_combine($pageTypes, $pageTypes);
asort($pageTypes);
// get all filter instances
$filters = ClassInfo::subclassesFor('CMSSiteTreeFilter');
$filterMap = array();
// remove base class
array_shift($filters);
// add filters to map
foreach($filters as $filter) {
$filterMap[$filter] = call_user_func(array($filter, 'title'));
}
// ensure that 'all pages' filter is on top position
uasort($filterMap,
create_function('$a,$b', 'return ($a == "CMSSiteTreeFilter_Search") ? 1 : -1;')
);
$showDefaultFields = array();
$form = new Form(
$this,
'SearchTreeForm',
new FieldSet(
$showDefaultFields[] = new DropdownField(
'FilterClass',
_t('CMSMain.SearchTreeFormPagesDropdown', 'Pages'),
$filterMap
),
$showDefaultFields[] = new TextField(
'Title',
_t('CMSMain.TITLEOPT', 'Title')
),
new TextField('Content', 'Text'),
new DateField('EditedSince', _t('CMSMain_left.ss.EDITEDSINCE','Edited Since')),
new DropdownField('ClassName', 'Page Type', $pageTypes, null, null, 'Any'),
new TextField(
'MenuTitle',
_t('CMSMain.MENUTITLEOPT', 'Navigation Label')
),
new TextField(
'Status',
_t('CMSMain.STATUSOPT', 'Status')
),
new TextField(
'MetaDescription',
_t('CMSMain.METADESCOPT', 'Description')
),
new TextField(
'MetaKeywords',
_t('CMSMain.METAKEYWORDSOPT', 'Keywords')
)
),
new FieldSet(
new ResetFormAction(
'clear',
_t('CMSMain_left.ss.CLEAR', 'Clear')
),
new FormAction(
'doSearchTree',
_t('CMSMain_left.ss.SEARCH', 'Search')
)
)
);
$form->setFormMethod('GET');
$form->disableSecurityToken();
$form->unsetValidator();
foreach($showDefaultFields as $f) $f->addExtraClass('show-default');
return $form;
}
function doSearchTree($data, $form) {
return $this->getsubtree($this->request);
}
/** /**
* Helper function to get page count * Helper function to get page count
*/ */

View File

@ -1,39 +0,0 @@
<?php
class CommentAdminTest extends FunctionalTest {
static $fixture_file = 'cms/tests/CMSMainTest.yml';
function testNumModerated() {
$comm = new CommentAdmin();
$resp = $comm->NumModerated();
$this->assertEquals(1, $resp);
}
function testNumUnmoderated(){
$comm = new CommentAdmin();
$resp = $comm->NumUnmoderated();
$this->assertEquals(2, $resp);
}
function testNumSpam(){
$comm = new CommentAdmin();
$resp = $comm->NumSpam();
$this->assertEquals(0, $resp);
}
function testdeletemarked(){
$comm = $this->objFromFixture('PageComment', 'Comment1');
$id = $comm->ID;
$this->logInWithPermission('CMS_ACCESS_CommentAdmin');
$response = $this->get("admin/comments/EditForm/field/Comments/item/$id/delete");
$checkComm = DataObject::get_by_id('PageComment',$id);
$this->assertFalse($checkComm);
}
}
?>

View File

@ -1,105 +0,0 @@
<?php
class PageCommentsTest extends FunctionalTest {
static $fixture_file = 'cms/tests/PageCommentsTest.yml';
static $use_draft_site = true;
function testCanView() {
$visitor = $this->objFromFixture('Member', 'visitor');
$admin = $this->objFromFixture('Member', 'commentadmin');
$comment = $this->objFromFixture('PageComment', 'firstComA');
$this->assertTrue($comment->canView($visitor),
'Unauthenticated members can view comments associated to a page with ProvideComments=1'
);
$this->assertTrue($comment->canView($admin),
'Admins with CMS_ACCESS_CommentAdmin permissions can view comments associated to a page with ProvideComments=1'
);
$disabledComment = $this->objFromFixture('PageComment', 'disabledCom');
$this->assertFalse($disabledComment->canView($visitor),
'Unauthenticated members can not view comments associated to a page with ProvideComments=0'
);
$this->assertTrue($disabledComment->canView($admin),
'Admins with CMS_ACCESS_CommentAdmin permissions can view comments associated to a page with ProvideComments=0'
);
}
function testCanEdit() {
$visitor = $this->objFromFixture('Member', 'visitor');
$admin = $this->objFromFixture('Member', 'commentadmin');
$comment = $this->objFromFixture('PageComment', 'firstComA');
$this->assertFalse($comment->canEdit($visitor));
$this->assertTrue($comment->canEdit($admin));
}
function testCanDelete() {
$visitor = $this->objFromFixture('Member', 'visitor');
$admin = $this->objFromFixture('Member', 'commentadmin');
$comment = $this->objFromFixture('PageComment', 'firstComA');
$this->assertFalse($comment->canEdit($visitor));
$this->assertTrue($comment->canEdit($admin));
}
function testDeleteComment() {
$firstPage = $this->objFromFixture('Page', 'first');
$this->autoFollowRedirection = false;
$this->logInAs('commentadmin');
$firstComment = $this->objFromFixture('PageComment', 'firstComA');
$firstCommentID = $firstComment->ID;
$response = $this->get($firstPage->RelativeLink());
$token = SecurityToken::inst();
$url = sprintf('PageComment/deletecomment/%d/', $firstComment->ID);
$url = $token->addToUrl($url);
$response = $this->get($url);
$this->assertFalse(DataObject::get_by_id('PageComment', $firstCommentID));
}
function testDeleteAllCommentsOnPage() {
$second = $this->objFromFixture('Page', 'second');
$this->autoFollowRedirection = false;
$this->logInAs('commentadmin');
$response = $this->get($second->RelativeLink());
$token = SecurityToken::inst();
$url = sprintf('PageComment/deleteallcomments?pageid=%d', $second->ID);
$url = $token->addToUrl($url);
$response = $this->get($url);
$response = $this->get($second->RelativeLink());
$secondComments = DataObject::get('PageComment', '"ParentID" = '.$second->ID);
$this->assertNull($secondComments);
$first = $this->objFromFixture('Page', 'first');
$firstComments = DataObject::get('PageComment', '"ParentID" = '.$first->ID);
$this->assertNotNull($firstComments);
$third = $this->objFromFixture('Page', 'third');
$thirdComments = DataObject::get('PageComment', '"ParentID" = '.$third->ID);
$this->assertEquals($thirdComments->Count(), 3);
}
function testCommenterURLWrite() {
$comment = new PageComment();
// We only care about the CommenterURL, so only set that
// Check a http and https URL. Add more test urls here as needed.
$protocols = array(
'Http',
'Https',
);
$url = '://example.com';
foreach($protocols as $protocol) {
$comment->CommenterURL = $protocol . $url;
// The protocol should stay as if, assuming it is valid
$comment->write();
$this->assertEquals($comment->CommenterURL, $protocol . $url, $protocol . ':// is a valid protocol');
}
}
}

View File

@ -1,62 +0,0 @@
Member:
commentadmin:
FirstName: admin
visitor:
FirstName: visitor
Group:
commentadmins:
Title: Admin
Members: =>Member.commentadmin
Permission:
admin:
Code: CMS_ACCESS_CommentAdmin
Group: =>Group.commentadmins
Page:
first:
Title: First page
URLSegment: first-page
ProvideComments: 1
second:
Title: Second page
URLSegment: second-page
ProvideComments: 1
third:
Title: Third page
URLSegment:third-page
ProvideComments: 1
pageNoComments:
Title: No comments
URLSegment: no-comments
ProvideComments: 0
PageComment:
firstComA:
ParentID: =>Page.first
Name: FA
Comment: textFA
secondComA:
ParentID: =>Page.second
Name: SA
Comment: textSA
secondComB:
ParentID: =>Page.second
Name: SB
Comment: textSB
thirdComA:
ParentID: =>Page.third
Name: TA
Comment: textTA
thirdComB:
ParentID: =>Page.third
Name: TB
Comment: textTB
thirdComC:
ParentID: =>Page.third
Name: TC
Comment: textTC
disabledCom:
ParentID: =>Page.pageNoComments
Name: Disabled