Ser Yoga
Ser Yoga

Reputation: 466

SilverStripe gridField Entries not visible for normal backend user

I have two user groups Administrator and Inhaltsautoren

My LandingPage has a Tab Teaser with a gridField. The normal user can not see the entries and i dont know why?

I cant find something for setting the permissions for Inhaltsautoren. Has someone an idea why there are no entries in the gridField?

Teaser.php

<?php 

class Teaser extends DataObject {

private static $db = array (
    'Title' => 'Varchar',
    'Description' => 'HTMLText'
);

private static $has_one = array (
    'Photo' => 'Image',
    'Link' => 'Link'
);

private static $many_many = array(
    'Tags' => 'Tag'
);

private static $summary_fields = array (
    'GridThumbnail' => '',
    'Title' => 'Titel',
    'Description' => 'Beschreibung'
);

public function getGridThumbnail() {
    if($this->Photo()->exists()) {
        return $this->Photo()->SetWidth(100);
    }

    return "(no image)";
}

public function getCMSFields() {
    $fields = FieldList::create(
        TextField::create('Title'),
        $tags = TagField::create('Tags','Tags',Tag::get(),$this->Tags()),
        HTMLEditorField::create('Description', 'Beschreibung'),
        LinkField::create('LinkID', 'Weiterleitung'),
        $uploader = UploadField::create('Photo')
    );

    $tags->setShouldLazyLoad(true); // tags should be lazy loaded
    $tags->setCanCreate(true);      // new tag DataObjects can be created

    $uploader->setFolderName('teaser');
    $uploader->getValidator()->setAllowedExtensions(array('png','jpeg','jpg'));

    return $fields;
}
}

and my LadingPage.php

$fields->addFieldToTab('Root.Teaser', $gridField = GridField::create(
    'Teasers',
    'Landing Page Teaser',
    $this->Teasers(),
    GridFieldConfig_RecordEditor::create()
));


$gridField->getConfig()->getComponentByType("GridFieldDataColumns")->setFieldCasting(array("Description"=>"HTMLText->BigSummary"));

Upvotes: 1

Views: 89

Answers (1)

csy_dot_io
csy_dot_io

Reputation: 1199

Use canView() on your dataobject and check inside this function if your user is allowed to see this object or not.

  public function canView($member = null) {
    return Permission::check('ADMIN', 'any');
  }

Upvotes: 3

Related Questions