|
From: Nathan D. <na...@ch...> - 2002-09-25 01:51:01
|
Well, that is exactly why having access to the parent init would be so
nice -- I could build a new init() in baseFile that calls the parent init
and then calls the setDefaultDirectory() (sort of like the newID() in the
baseContentObject).
I see the problem you have, though -- you can't call setDirectory() until
you init. Damn. Well, you could manually init() inside of your object, but
that may be confusing for the end user. This brings up an issue about what
should be set vs. CFPARAM'd during an init. This, I think, was the reason I
did:
<cfparam name="instance.directory" default="#expandPath("/")#">
inside of the baseFile.cfc instead of:
<cfset instance.directory = expandPath("/")>
Hmm, you may just be stuck using setDirectory() where you have it now. I'm
open to suggestions on this, though.
- n
> -----Original Message-----
> From: mod...@li...
> [mailto:mod...@li...]On Behalf Of Brad Pauly
> Sent: Tuesday, September 24, 2002 6:05 PM
> To: modus devs
> Subject: RE: [Modus-devs] file upload
>
>
> super() would indeed be nice. Perhaps I am missing something, but to
> call setDirectory() in the "constructor" I need to call init() first.
> Which works just fine, I was just wondering if I could do it another way
> and always call init() as part of instantiating an object.
>
>
> On Tue, 2002-09-24 at 17:45, Nathan Dintenfass wrote:
> > Brad:
> >
> > First, I am psyched to see someone actually trying to use Modus!
> >
> > setDirectory() is probably something that should actually be
> refactored in
> > some way. I think a "defaultFileDirectory" might also be
> appropriate for
> > the config file. But, to your question . . .
> >
> > I am not sure why it's counterintuitive that you would need to set the
> > directory before setting the value. Remember, the
> setFieldValues() calls
> > the setValue() on each field, and for the baseFile the
> setValue() method is
> > what actually deals with the upload of the file. Thus, it needs to
> > understand what directory it is going to use before the value gets set.
> >
> > I wish there was a super() in CFC's, because then the baseFile
> would have
> > it's own init() method that called the init() of the baseField and then
> > added a setDefaultDirectory() method that could be overridden in
> > implementations of a base file. But, I digress.
> >
> > I also would probably put the setDirectory() declaration inside of your
> > "code" component -- in the "constructor". That should work
> nicely (assuming
> > all "code" instances should store their files in the same
> place!) and hide
> > the need to know much about the location on the front.
> >
> > Make sense?
> >
> >
> > > -----Original Message-----
> > > From: mod...@li...
> > > [mailto:mod...@li...]On Behalf Of Brad Pauly
> > > Sent: Tuesday, September 24, 2002 4:28 PM
> > > To: modus devs
> > > Subject: [Modus-devs] file upload
> > >
> > >
> > > Hi all... I was playing around some more and I noticed something
> > > interesting. I have dug into it a little, but thought I would
> post here
> > > and see what came of it.
> > >
> > > I made a code object that uses basefile to upload files. (I have been
> > > recreating some of the things on the bacfug site, hence the
> code object,
> > > in hopes that my exploring will produce some documentation on how to
> > > create a simple site with Modus) The code object has a three fields:
> > > title, file, and description. I wanted to change where the file was
> > > uploaded, so I took advantage of the setDirectory method. Here is the
> > > snippet that does this:
> > >
> > >
> > > // create an initizlie a code object
> > > code = createObject("component","bacfug.contentobjects.code").init();
> > >
> > > // if the form was POSTed process it
> > > if (isDefined("form.fieldnames")) {
> > >
> > > // set the id
> > > // i need to explore this more, but it
> > > // seems to work in place of a isNew field
> > > code.setID(form.id);
> > >
> > > // set the directory to upload to
> > > code.getField("file").setDirectory("#expandPath("/bacfug/code/")#");
> > >
> > > // set the field values based on the form
> > > code.setFieldValues(argumentCollection=form);
> > >
> > > // if there are no errors, commit it to the database
> > > if(NOT code.hasErrors()){
> > >
> > > // send it to the database
> > > code.store();
> > >
> > > // reinitialize
> > > code.init();
> > > }
> > > }
> > >
> > >
> > > This works fine. However, if I call setFieldValues before
> setDirectory,
> > > the file is uploaded into the default directory ("/"). This is almost
> > > counterintuitive to me. I thought perhaps the setValue calls in
> > > setFieldValues might overwrite something. Looking into these two
> > > methods, I couldn't find anything that would cause one to
> overwrite the
> > > other. That makes me think that I should be able to call
> these in either
> > > order and get the desired outcome.
> > >
> > > Any thoughs?
> > >
> > > Brad
> > >
> > >
> > >
> > >
> > >
> > > -------------------------------------------------------
> > > This sf.net email is sponsored by:ThinkGeek
> > > Welcome to geek heaven.
> > > http://thinkgeek.com/sf
> > > _______________________________________________
> > > Modus-devs mailing list
> > > Mod...@li...
> > > https://lists.sourceforge.net/lists/listinfo/modus-devs
> > >
> >
> >
> >
> > -------------------------------------------------------
> > This sf.net email is sponsored by:ThinkGeek
> > Welcome to geek heaven.
> > http://thinkgeek.com/sf
> > _______________________________________________
> > Modus-devs mailing list
> > Mod...@li...
> > https://lists.sourceforge.net/lists/listinfo/modus-devs
> >
> >
>
>
>
>
>
> -------------------------------------------------------
> This sf.net email is sponsored by:ThinkGeek
> Welcome to geek heaven.
> http://thinkgeek.com/sf
> _______________________________________________
> Modus-devs mailing list
> Mod...@li...
> https://lists.sourceforge.net/lists/listinfo/modus-devs
>
|