On 13-jul-2007, at 9:12, AD7six wrote:
>
> On Jul 12, 1:53 pm, Tijs Teulings <[EMAIL PROTECTED]> wrote:
>
> Hi Tarique,
>
> The behavior in cheesecake is almost stripped to the bone, and has
> some assumptions built in (where the files will go meaning the use of
> WWW_ROOT, each file is a foto, the format for the name of the thumb
> file etc.). For a photo driven site I guess it's what's needed.
>
> Hi Tijs,
>
> The paste was not for a finished version but I did a bit more than
> change the way the default setup works. I added/did the following:
> * style changed to be more inline with other behaviors (use of
> extract so you don't need $this->params to refer to all your variables
> for example)
> * changed to work with almost no parameters
> * made separate methods for some operations such as determining file,
> thumb and path names
> * the folder to save can be configured/changed on the fly 'dir' =>
> '{APP}uploads{DS}{$class}{DS}{$foreign_id}' <- those get replaced when
> used
> * the thumb/versions to save can be configured/changed on the fly
> ''name' => '{$file}.small.{$ext}' <- can be what you like
> * added a name cleanup routine (only applicable if you are not using
> random filenames) so that áccëñtèd characters in file names are
> converted
> * fixed the beforeDelete method and wrote it to ensure that the pics/
> thumbs/versions of abcd.jpg are not deleted when you delete the pic
> bcd.jpg
>
> I changed it to use relative file paths when saving to the database,
> although that's currently hard coded. Not sure if it is still a bit
> too db-centric as a model may not be a table in the db of course.
>
> The thing that mildly bugged me before was that a file (upload) is a
> file, not a jpeg/png. The behavior was and still is (because I decided
> to stop thinking and just write something) a bit foto centric imo. I
> need to be able to upload images and pdfs, but the same upload
> behaviour could be used for any file type, so if it includes image
> resizing, shouldn't it include any of doc to text, text to pdf, mp3 to
> first x seconds, movie to first x seconds, unzip zip etc. ?
>
> I like the way cheesecake keeps things separate by outsourcing image
> manipulation to a vendor. Maybe configuring a callback is a
> possibility, maybe image resizing should be done in the model or maybe
> I'm thinking too much.
>
> Anyway, thoughts?
>
> AD
Hi Andy,
Ok, i missed all that from my quick scan of the code. Sounds
excellent. What i'll do first is use your version as a base and then
fix some of the things i found like the resizing and not being able
to update 'extra' fields you might have used without uploading a new
image.
I guess the second step would indeed be to generalize everything a
bit more for file uploads of different types. I could take a look at
the cheesecake method for 'outsourcing' image handling to a vendor.
Some way to configure actions based on mimetype arrays would be
nice... The filename array could serve as a base for that, i do like
that you can set that up in the single model and don't need much
logic in the controller at all. Something like this might work:
var $actsAs = array('Upload' => array(
'filename' => array(
'Image'=> array( // <-- file subtypes (may or
may not refer to
model)
'dir' => 'files/images',
'overwrite_existing' => false,
'create_directory' => false,
'allowed_mime' => array('image/jpeg',
'image/pjpeg', 'image/
gif', 'image/png'),
'allowed_ext' => array('.jpg', '.jpeg',
'.png', '.gif'),
'thumbsizes' => array(
'small'
=> array('width'=>100, 'height'=>100),
'medium'=> array('width'=>220, 'height'=>220),
'large'
=> array('width'=>800, 'height'=>600)
)
)
'Document'=> array(
'dir' => 'files/docs',
'overwrite_existing' => false,
'create_directory' => false,
'allowed_mime' => array('text/plain',
'application/msword',
'application/pdf'),
'allowed_ext' => array('.txt', '.pdf',
'.doc'),
'parse_text' => array(true,
'db_field'=>'text'), // parse text
and store in db field for searches/extract
)
)
)
)
);
If you keep the handlers reasonably generic you could switch out
vendors for each task with relative ease. This could get out of hand
easily too though ;) You think each fieldtype should be handled by
it's own model or should they just be methods of the File/Upload model?
Tijs
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake
PHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---