Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

DataObjectManager Module

Discuss the DataObjectManager module, and the related ImageGallery module.

Moderators: martimiz, UncleCheese, Sean, biapar, Willr, Ingo, swaiba, simon_w

shwing thumbnail summary_fields of model admin


Reply

3 Posts   721 Views

Avatar
Possibles

2 December 2011 at 5:47am (Last edited: 3 December 2011 6:14am), Community Member, 16 Posts

Hello

I'm trying to get some thumbnails to show in the summary_fields of model admin.
I can get the ID of the photo but not the proper image.

I have seen example with as one Relationship. but not with has many :

Here is where I'm at :

Work.php

class Work extends DataObject
{
   static $db = array(
      'Title' => 'Varchar(255)',
'Year' => 'Int',
      'MaterialsFr' => 'Text',
      'MaterialsEn' => 'Text',
      'Editions' => 'Text',
      'Description' => 'HTMLText',
      'URLSegment' => 'Varchar(255)',
      'MetaTitle' => 'Varchar(255)'
   );

   //Set our defaults
   static $defaults = array(   
      'Title' => 'New Work',
      'URLSegment' => 'new-Work'
   );
   
   static $has_many = array(
      'Photos' => 'Photo'
   );
   
   //Relate to the Artist pages
   static $belongs_many_many = array(
      'Artists' => 'ArtistPage'
   );
   
   //Fields to show in ModelAdmin table
   static $summary_fields = array(
      'Title' => 'Title',
      'Artists' => 'Artist',
      'Photos'=> 'Photo'
   );   

   //Add an SQL index for the URLSegment
   static $indexes = array(
      "URLSegment" => true
   );   

   //Fields to search in ModelAdmin
   static $searchable_fields = array (
      'Title',
      'URLSegment',
      'Description',
      'Artists.ID' => array(
         'title' => 'Artist'
      )
   );

   public function getCMSFields()
   {
      $f = parent::getCMSFields();
      $manager = new FileDataObjectManager(
         $this, // Controller
         'Photos', // Source name
         'Photo', // Source class
         'Attachment', // File name on DataObject
         array(
      'Title' => 'Title',
'Year' => 'Year',
      'MaterialsFr' => 'Materials Français',
      'MaterialsEn' => 'Materials English',
      'Editions' => 'Editions',
      'Description' => 'Description',
      'URLSegment' => 'URL Segment',
      'MetaTitle' => 'Meta Title'
         ), // Headings
         'getCMSFields_forPopup' // Detail fields (function name or FieldSet object)
         // Filter clause
         // Sort clause
         // Join clause
      );
      $f->addFieldToTab("Root.Photos", $manager);
      //Artists
      $Artists = DataObject::get('ArtistPage');
      $f->addFieldToTab("Root.Artists", new CheckboxsetField('Artists', 'Artists', $Artists));
return $f;
...

Photo.php

<?php

class Photo extends DataObject {

static $db = array(
      'Description' => 'Text'
);

static $has_one = array(
'Attachment' => 'Image',
'Product' => 'Product',
'Work' => 'Work'
);
public function getCMSFields_forPopup()
   {
      return new FieldSet(
         new TextareaField('Description'),
         new FileIFrameField('Attachment')
      );
   }
}

?>

Thanks

Avatar
Possibles

3 December 2011 at 6:21am (Last edited: 3 December 2011 6:24am), Community Member, 16 Posts

Hello

I'm trying to build a :

function getThumbnail()
{
$image= this where I don't know what to put to get my image
return $image->CroppedImage(50,50);
}


and add this

   static $summary_fields = array(
   'Thumbnail' => 'The Image'
   );


Could anyone enlight me please, I cant get the ID of photo but not the photo itself in my getThumbnai() function

Thanks

Avatar
Chris_Bryer

8 December 2011 at 9:35am (Last edited: 8 December 2011 10:24am), Community Member, 35 Posts

you're close..
in photo.php you defined:

static $has_one = array(
'Attachment' => 'Image',
'Product' => 'Product',
'Work' => 'Work'
);

so your function should be

function getThumbnail()
{
if($this->Attachment()->exists()) return $this->Attachment()->CroppedImage(50,50)->forTemplate();
}

-Chris