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

SWFUploadFileIFrameField and SS 2.4


Go to End
Reply


9 Posts   1935 Views

Avatar
Tonyair

Community Member, 81 Posts

9 July 2010 at 1:24am

It's not really IFrame, but yesterday i decided that it's too hard to add images to the Staff section one by one and i don't like ImageGallery module 'cos it generates thumbs in different way and it's too heavy for example u don't need so more different lightboxes and something else i don't remember, but anyway StaffPage, ContactPage, GalleryImage and etc implents one interface in my code.

Well, ok:

StaffHolder:

function getCMSFields() {
..
      $fields = parent::getCMSFields();
...
      SWFUploadConfig::addPostParam('ID', $this->ID);
      SWFUploadConfig::addPostParam('Locale', $this->Locale);
      $fields->addFieldToTab("Root.Content.Images",
         new SWFUploadField(
            "EditForm",
            "Upload",
            "",
            array(
               'file_upload_limit' => 10, // how many files can be uploaded
               'file_queue_limit' => 10, // how many files can be in the queue at once
               'browse_button_text' => 'Upload Images ...',
               'upload_url' => Director::absoluteURL('StaffHolder_Controller/handleswfupload'),
               'required' => 'true',
               //'debug' => 'true'
            )
         )
      );

      return $fields;
..
   }

StaffHolder_Controller:

public function handleswfupload() {
      $parent = DataObject::get_by_id('StaffHolder', $_POST['ID']); // Get parent for permission check
      if( $parent->canCreate(Member::currentUser()) ) { // User Permission Check
      if(isset($_FILES['swfupload_file']) && !empty($_FILES['swfupload_file'])) {
         set_time_limit(1200); // 20 mins
         
         // Assuming its a decendant of File
         $image = new Image();
         if(class_exists("Upload")) {
            $u = new Upload();
            $u->loadIntoFile($_FILES['swfupload_file'], $image);
         }
         else {
            $image->loadUploaded($_FILES['swfupload_file']);
         }
         $image->write(); // Save image
         
         // Page Creating
         $title = substr($_POST['Filename'], 0, strlen($_POST['Filename'])-4); // Get title from file name
         $new = new StaffPage(); // Create new staff page      
         $new->populateDefaults(); // if defaults are set
         $new->setParent($_POST['ID']); // set parent page
         $new -> update(
            array(
               'MenuTitle' => $title,
               'Title' => $title,
               'Locale' => $_POST['Locale'],
               'PhotoID' => $image->ID // adding image
            )
         );
         $new->writeToStage('Stage'); // Save Page
         die('Image Loaded');
      } else die('Image isn\' sended');
      } else die ('Permission Error');
   }

Go to Top