API Show GridFieldEditButton even without edit permissions (for readonly forms)

This commit is contained in:
Ingo Schommer 2012-12-17 00:47:23 +01:00
parent 1848d7e90a
commit bbc8e06d49
2 changed files with 8 additions and 7 deletions

View File

@ -72,9 +72,9 @@ class GridFieldEditButton implements GridField_ColumnProvider {
* @return string - the HTML for the column
*/
public function getColumnContent($gridField, $record, $columnName) {
if(!$record->canEdit()){
return;
}
// No permission checks, handled through GridFieldDetailForm,
// which can make the form readonly if no edit permissions are available.
$data = new ArrayData(array(
'Link' => Controller::join_links($gridField->Link('item'), $record->ID, 'edit')
));

View File

@ -25,15 +25,16 @@ class GridFieldEditButtonTest extends SapphireTest {
$this->form = new Form(new Controller(), 'mockform', new FieldList(array($this->gridField)), new FieldList());
}
public function testDontShowEditLinks() {
public function testShowEditLinks() {
if(Member::currentUser()) { Member::currentUser()->logOut(); }
$content = new CSSContentParser($this->gridField->FieldHolder());
// Check that there are content
$this->assertEquals(3, count($content->getBySelector('.ss-gridfield-item')));
// Make sure that there are no edit links
$this->assertEquals(0, count($content->getBySelector('.edit-link')),
'Edit links should not show when not logged in.');
// Make sure that there are edit links, even though the user doesn't have "edit" permissions
// (he can still view the records)
$this->assertEquals(2, count($content->getBySelector('.edit-link')),
'Edit links should show when not logged in.');
}
public function testShowEditLinksWithAdminPermission() {