Jump to:

7939 Posts in 1543 Topics by 946 members

DataObjectManager Module

SilverStripe Forums » DataObjectManager Module » ImageDataObjectManager popup problem

Discuss the DataObjectManager module, and the related ImageGallery module.

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

Page: 1
Go to End
Author Topic: 1122 Views
  • jondbaker
    Avatar
    Community Member
    19 Posts

    ImageDataObjectManager popup problem Link to this post

    Everything seems to be working fine as far as uploading the images goes, but if I click an already-uploaded image the popup appears with a preview thumbnail, the text box for 'Title' and one for 'Caption', and just below that should be the entry for 'Attachment' but instead displays this error:

    [Warning] Unknown class passed as parameter
    GET /public_html/jonathandbaker.com/images/iframe/Gallery/13/Attachment

    Line 445 in D:\xampp\xampp\htdocs\public_html\jonathandbaker.com\sapphire\core\Object.php
    Source

    436     * Prepare static variables before processing a {@link get_static} or {@link set_static}
    437     * call.
    438     */
    439    private static function prepare_statics($class) {
    440       // _cache_statics_prepared setting must come first to prevent infinite loops when we call
    441       // get_static below
    442       self::$_cache_statics_prepared[$class] = true;
    443
    444       // load statics now for DataObject classes
    445       if(is_subclass_of($class, 'DataObject')) {
    446          $extensions = Object::uninherited_static($class, 'extensions');
    447          if($extensions) foreach($extensions as $extension) {
    448             if(preg_match('/^([^(]*)/', $extension, $matches)) {
    449                $extensionClass = $matches[1];
    450                DataObjectDecorator::load_extra_statics($class, $extensionClass);
    451             }

    Trace

    * is_subclass_of(Crop_Thumbnail,DataObject)
    Line 445 of Object.php
    * Object::prepare_statics(Crop_Thumbnail)
    Line 269 of Object.php
    * Object::uninherited_static(Crop_Thumbnail,db)
    Line 2020 of DataObject.php
    * DataObject::has_own_table(Crop_Thumbnail)
    Line 89 of ClassInfo.php
    * ClassInfo::dataClassesFor(Image)
    Line 2258 of DataObject.php
    * DataObject->buildSQL(ParentID = '13',,,,1,)
    Line 2350 of DataObject.php
    * DataObject->extendedSQL(ParentID = '13',,,)
    Line 1144 of DataObject.php
    * DataObject->getComponentsQuery(Attachment,,,,)
    Line 1099 of DataObject.php
    * DataObject->getComponents(Attachment)
    * call_user_func_array(Array,Array)
    Line 565 of Object.php
    * Object->__call(Attachment,Array)
    * Gallery->Attachment()
    * call_user_func_array(Array,Array)
    Line 318 of ViewableData.php
    * ViewableData->obj(Attachment)
    Line 549 of Image.php
    * Image_Uploader->Image()
    Line 562 of Image.php
    * Image_Uploader->IsImage()
    Line 597 of Image.php
    * Image_Uploader->EditImageForm()
    * call_user_func_array(Array,Array)
    Line 408 of ViewableData.php
    * ViewableData->XML_val(EditImageForm,,1)
    Line 983 of ViewableData.php
    * ViewableData_Customised->XML_val(EditImageForm,,1)
    Line 38 of .cacheD..xampp.xampp.htdocs.public_html.jonathandbaker.com.sapphire.templates.Image_iframe.ss
    * include(C:\Windows\Temp\silverstripe-cacheD--xampp-xampp-htdocs-public_html-jonathandbaker.com\.cacheD..xampp.xampp.htdocs.public_html.jonathandbaker.com.sapphire.templates.Image_iframe.ss)
    Line 357 of SSViewer.php
    * SSViewer->process(ViewableData_Customised)
    Line 163 of Controller.php
    * Controller->handleAction(HTTPRequest)
    Line 129 of RequestHandler.php
    * RequestHandler->handleRequest(HTTPRequest)
    Line 119 of Controller.php
    * Controller->handleRequest(HTTPRequest)
    Line 277 of Director.php
    * Director::handleRequest(HTTPRequest,Session)
    Line 121 of Director.php
    * Director::direct(/images/iframe/Gallery/13/Attachment)
    Line 118 of main.php

    Project.php

    <?php
    class Project extends Page {
    static $singular_name = 'Project';
    static $plural_name = 'Projects';
    static $db = array(
    'Category' => 'Varchar(100)',
    'Description' => 'Text'
    );
    static $has_one = array(
    'ProjectHolder' => 'ProjectHolder',
    'Thumbnail' => 'Crop_Thumbnail',
    'Galleries' => 'Gallery'
    );
    public function getCMSFields() {
    $categories = array(
    'WD' => 'Web Design',
    'WDV' => 'Web Development',
    'GD' => 'Graphic Design',
    'IL' => 'Illustration',
    'PT' => 'Photography'
    );
    $manager = new ImageDataObjectManager($this, 'Galleries', 'Gallery', 'Attachment', array('Title' => 'Title', 'Caption' => 'Caption'), 'getCMSFields_forPopup');
    $fields = parent::getCMSFields();
    $fields->removeFieldFromTab("Root.Content.Main","Content");
    $fields->addFieldToTab('Root.Content.Main', new DropdownField('Category','Category', $categories));
    $fields->addFieldToTab('Root.Content.Main', new TextareaField('Description'));
    $fields->addFieldToTab("Root.Content.Thumbnail Image", new ImageField('Thumbnail'));
    $fields->addFieldToTab("Root.Content.Gallery", $manager);
    return $fields;
    }
    }
    class Crop_Thumbnail extends Image {
    function generateProjectThumbnail($gd) {
    return $gd->resizeByWidth(400);
    }
    }
    class Project_Controller extends Page_Controller {}
    ?>

    Gallery.php

    <?php
    class Gallery extends Image {
    static $db = array(
    'Title' => 'Text',
    'Caption' => 'Text',
    );
    static $has_one = array(
    'Project' => 'Project'
    );
    static $has_many = array(
    'Attachment' => 'Image'
    );
    public function getCMSFields_forPopup(){
    return new FieldSet(
    new TextField('Title'),
    new TextareaField('Caption'),
    new FileIFrameField('Attachment')
    );
    }
    }
    ?>

    What I've discovered is that if I delete the Crop_Thumbnail class, everything works as expected in the popup for gallery, but then 'Thumbnail' fails. Is there any reason why I wouldn't be able to have the Crop_Thumbnail class within Project.php, since it is the only file that uses it?

  • UncleCheese
    Avatar
    4085 Posts

    Re: ImageDataObjectManager popup problem Link to this post

    You've set up your model wrong.

    static $has_many = array(
    'Attachment' => 'Image'
    );

    should be

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

  • jondbaker
    Avatar
    Community Member
    19 Posts

    Re: ImageDataObjectManager popup problem Link to this post

    Thanks for the speedy response. I had debated over the $has_one when I was writing the code, and it made more sense to me because there was going to be more than one image in the gallery. I'm still a little perplexed as to why it will allow me to upload more than one image, but alas, it works.

    1122 Views
Page: 1
Go to Top

Want to know more about the company that brought you SilverStripe? Then check out SilverStripe.com

Comments on this website? Please give feedback.