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

trying to get the latest images out of an ImageObject


Reply


5 Posts   637 Views

Avatar
benni91

Community Member, 72 Posts

1 February 2012 at 10:44pm

Edited: 01/02/2012 10:52pm

Hi @ all,

I'm trying to create my own image gallery. The galleries preview at the holder, should contain the last 4 images of this gallery.
The way i tried it doesn't work. I hope someone could help me.

The relations between the single pages and objects
GalleryHolder.php -> GalleryPage.php -> GalleryImagesObject.php -> Image Image Image ...

The GalleryHolder.php has this two function to sort the galleries and to get the latest 4 images of each gallery

   public function getGalleries() {
      return DataObject::get('GalleryPage', "ParentID = '$this->ID'", 'Date DESC');
   }
   
   function LatestGalleryImages($num=4) {
   $galleryimage = DataObject::get_one("GalleryHolder");
   return ($galleryimage) ? DataObject::get("GalleryPage", "ParentID = $galleryimage->ID", "Date DESC", "", $num) : false;
   }

that's the GalleryImagesObject.php

<?php
class GalleryImagesObject extends DataObject {

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

   public static $has_one = array(
      'GalleryImage' => 'Image',
      'GalleryPage' => 'GalleryPage'
   );

   public function getCMSFields_forPopup() {

return new FieldSet(
   new TextField('Title', 'Titel des Bildes'),
   new TextAreaField('Description', 'Beschreibung des Bildes'),
   new ImageField('GalleryImage', 'Bild(er) hochladen')
);

   }
}

?>

and my GallerHolder.ss looks like this.

<% control getGalleries %>
   <% control GalleryImagesObject %>
      $GalleryImage
   <% end_control %>
   <a href="$Link" title="Die Gallerie $Title anzeigen">$Title</a>
<% end_control %>


-----

Where's the mistake(s) i made? I can see the link but not the images :(
Thx for your Help

Benni

P.s. [url=http://labs.hobedesign.de/_ssdemo/bildergallerie/]Website[/url]

Avatar
UncleCheese

4085 Posts

2 February 2012 at 4:44am

How does GalleryPage relate to GalleryImageObject?

--------------------
SilverStripe tips, tutorials, screencasts and more: http://www.leftandmain.com

Avatar
benni91

Community Member, 72 Posts

2 February 2012 at 5:08am

Edited: 02/02/2012 7:54am

Sry, i think that was wrong in my first post. I'm not able to describe the relations good in english.

Thats the GalleryPage.php I hope it will help

<?php
class GalleryPage extends Page {
      
   static $allowed_children = 'none';
   static $default_parrent = 'GalleryHolder';
   static $can_be_root = false;

   public static $db = array(
      'Date' => 'Date',
      'Description' => 'HTMLText',
      //'ThumbnailSize' => 'Text',
   );
   
   public static $has_many = array(
      'GalleryImages' => 'GalleryImagesObject'
   );

   function getCMSFields() {
      $fields = parent::getCMSFields();
      $fields->removeFieldFromTab('Root.Content.Main', 'Content');
      $fields->addFieldToTab('Root.Content.Main', $date = new DateField('Date', 'Datum der Aufnahmen'));
      $date->setConfig('showcalendar', true);   
      $fields->addFieldToTab('Root.Content.Main', new SimpleTinyMCEField('Description','Beschreibung der Gallerie'));
      //$fields->addFieldToTab('Root.Content.Main', new TextField('ThumbnailSize','Größe der Thumbnails (in px / muss ausgefüllt sein)'));
      $fields->addFieldToTab('Root.Content.Main', $GalleryImages = new ImageDataObjectManager($this, 'GalleryImages', 'GalleryImagesObject', 'GalleryImage', array('Title' => 'Titel des Bildes', 'Description' => 'Beschreibung des Bildes'), 'getCMSFields_forPopup'));
      $GalleryImages->copyOnImport = false;
      //$GalleryImages->setPageSize( '999' );
      $GalleryImages->setPerPageMap('50');
      $GalleryImages->setPageSize('50');
      return $fields;
   }
}

class GalleryPage_Controller extends Page_Controller {

   public function PrevNextPage($Mode = 'next') {
      if($Mode == 'next'){
         $Where = "ParentID = ($this->ParentID) AND Sort > ($this->Sort)";
         $Sort = "Sort ASC";
      }
      elseif($Mode == 'prev'){
         $Where = "ParentID = ($this->ParentID) AND Sort < ($this->Sort)";
      $Sort = "Sort DESC";
      }
      else{
      return false;
      }
      return DataObject::get("SiteTree", $Where, $Sort, null, 1);
   }
}
?>

Avatar
benni91

Community Member, 72 Posts

3 February 2012 at 6:21am

BUMB ;)

Avatar
benni91

Community Member, 72 Posts

6 February 2012 at 2:44am

Hmm is it possible to get the latest Entry out of an DataObject with the Mysql Field "Created" ? If got absolutly no knowlege about sql but i think it should be possible?!

Perhapse this is one way?