8 April 2009 at 2:01am
How do you get FileIFrame->setAllowedExtensions() to work?
While using trunk (revision 74232) today, I noticed that even though I had a call to $fileField->setAllowedExtensions(array('pdf')); appropriately located in getCMSFields(), uploads weren't constrained to files with the pdf extension. Upon further investigation, I found that getCMSFields() is only called when the given page is loaded into the editor. Subsequent FileIFrame activity (such processing an upload) doesn't reload the entire page, meaning that getCMSFields() is not called. When uploading a file, a new FileIFrame instance is created which does not know about the call to setAllowedExtensions() in getCMSFields(). So we have a problem.
8 April 2009 at 9:42am
It's a known bug - FileIFrameField and ImageField are currently based on a hacky Image_Uploader class that is completely decoupled from the original form (they were created before the nested controller stuff). This means that setAllowedExtensions, setMaxFileSize() and setFolderName() won't work. Permissions are a bit fudgy as well.
There's currently a couple of tickets in trac about getting this sorted - and I'm waiting for a patch of mine to fix this to be reviewed (and hopefully merged :) ).