diff --git a/forms/gridfield/GridFieldEditButton.php b/forms/gridfield/GridFieldEditButton.php index 1c6836ed6..d2801d535 100644 --- a/forms/gridfield/GridFieldEditButton.php +++ b/forms/gridfield/GridFieldEditButton.php @@ -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') )); diff --git a/tests/forms/gridfield/GridFieldEditButtonTest.php b/tests/forms/gridfield/GridFieldEditButtonTest.php index ee04dc0ce..69235eee0 100644 --- a/tests/forms/gridfield/GridFieldEditButtonTest.php +++ b/tests/forms/gridfield/GridFieldEditButtonTest.php @@ -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() {