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

SWFUploadFileIFrameField and SS 2.4


Go to End
Reply


9 Posts   2131 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