nothing a bit of plagarism and a slight rewrite couldn't sort out. go
through my added comments in the code i see some pitfalls, but could not
realise them.
var folderURI = fl.browseForFolderURL("Please select your package.");
var folderContents = FLfile.listFolder( folderURI, "directories" );
var classesLocation = fl.configURI+"/Classes/";
var bInstall = confirm("Install the package: " + folderURI + "?");
if( bInstall == true ){
//create the folder we are copying to if it does not exist
var target = classesLocation + getTopDirectoryFromOrigen(folderURI) +
"/";
createFolder(target)
copyFolder(folderURI +"/",target,true);
} else {
fl.trace( "Installation cancelled." );
}
function getTopDirectoryFromOrigen(uri)
{
var arr = uri.split("/");
return arr[arr.length-1];
}
function createFolder(uri)
{
if(!FLfile.exists(uri))
{
FLfile.createFolder(uri);
}
}
/**
* the rest of these functions were written for dreamweaver
* by Danilo Celic with the odd modification by me
* http://www.communitymx.com/blog/index.cfm?newsid=237
*/
function copyFolder(start, end, overwrite){//1.0_DC
// Copy the folders
var theFolders = getAllFolders(start);
var theFiles = getAllFiles(start);
for(var i=0;i<theFolders.length;i++){
theFolders[i] = theFolders[i].substring(start.length);
//jpn modification for recursivness
var zeFolder = theFolders[i];
theFolders[i] = end + theFolders[i];
if(!FLfile.exists(theFolders[i])){
FLfile.createFolder(theFolders[i]);
}
//jpn modification to the orinial script to make zis sucker
recursive
//NOTE this comparision.
//i do not believe that this is perfect and can see problems with
it, but its fly for now
if((start + zeFolder)!= start)
{
copyFolder(start + "/" + zeFolder,end + "/" +
zeFolder,overwrite);
}
}
for (i=0; i < theFiles.length; i++){
var folderPath = theFiles[i].substring(start.length);
if(overwrite){
if(FLfile.exists(end + folderPath)){
FLfile.remove(end + folderPath);
theResult = FLfile.copy(theFiles[i], end + folderPath);
if (!theResult)
{
fl.trace('error on copy 0' + end + folderPath);
}
}
else//jpn modification: added this else section this should be
refactored as there is repetition!!!
{
theResult = FLfile.copy(theFiles[i], end + folderPath);
if (!theResult)
{
fl.trace('error on copy 1' + end + folderPath);
}
}
}
else
{
if(!FLfile.exists(end + folderPath)){
theResult = FLfile.copy(theFiles[i], end + folderPath);
if (!theResult) fl.trace('error on copy 2'+ end +
folderPath);
}
}
}
}
//Traverse the folder passed in and return an array of all the folders
within it
//Design Notes files are already filtered
function getAllFolders(theFolderURL){//1.1_DC
var dirArray = new Array();
dirArray[0] = theFolderURL;
for(var x=0 ; x < dirArray.length ;x++){
//Put together an array of directories
theDirs = FLfile.listFolder(dirArray[x], 'directories');
for(var i=0;i<theDirs.length ;i++)
{
//Filter out the Design Notes folder
if(theDirs[i] != '_notes'){
dirArray.push(dirArray[x]+theDirs[i]+'/');
}
}
}
return dirArray;
}
//Traverse the folder passed in and return an array of all the files within
it
function getAllFiles(theFolderURL){ //1.1_DC
var returnFileArray = new Array();
var theDirs = getAllFolders(theFolderURL);
var theFiles = new Array();
for(var i= 0;i<theDirs.length ;i++){
theFiles = FLfile.listFolder(theDirs[i] + '/*' ,'files');
for(var k=0;k<theFiles.length ;k++){
returnFileArray.push(theDirs[i]+ theFiles[k]);
}
}
return returnFileArray;
}
On 2/16/06, eric dolecki <[EMAIL PROTECTED]> wrote:
>
> Okay cool, because when I get the folderURI - I alert through and its
> correct, the copyFolder operation, using folderURI actuallly copies the
> contents INSIDE the folderURI, and not the folderURI itself - frustrating!
>
> -edolecki
>
>
> On 2/16/06, Johannes Nel <[EMAIL PROTECTED]> wrote:
> >
> > hang on 5 minutes. i almost have it working using flFile, which will
> make
> > it
> > Mac usable as well/
> >
> > On 2/16/06, eric dolecki <[EMAIL PROTECTED]> wrote:
> > >
> > > Ok - I downloaded Guy's FileSystem extension and there is something
> > called
> > >
> > > FileSystem.copyFolder( param1, param2 );
> > >
> > > which rocks. But I want to get the base folder & copy it... when i do
> > > this:
> > >
> > > var folderURI = fl.browseForFolderURL( "choose folder to copy to
> > > class
> > > location" );
> > >
> > > that gives me the CONTENTS of the folder, not the folder itself. So
> what
> > > ends up happening, I copy all of the contents of the folder, not the
> > main
> > > folder itself.
> > >
> > > How do I get that folder as the file URI ?
> > >
> > > My code:
> > >
> > >
> > >
> > > var folderURI = fl.browseForFolderURL( "JSFL PACKAGE
> > > INSTALATION\n\n\nPlease
> > > select the class package (folder) you wish to install:", "directories"
> > );
> > >
> > > if( folderURI == null ){
> > > alert( "Aborting Installation" );
> > > } else {
> > > continueProcess();
> > > }
> > >
> > > function continueProcess(){
> > > var classLocation = fl.configURI + "Classes";
> > > var bInstall = confirm("Would you like to install the
> package\nthat
> > > you
> > > selcted at this location:\n\n" + folderURI + "?");
> > >
> > > if( bInstall == true ){
> > > FileSystem.copyFolder( folderURI, classLocation );
> > > alert( "The Package has been installed." );
> > > } else {
> > > alert( "Installation cancelled." );
> > > }
> > > }
> > > _______________________________________________
> > > [email protected]
> > > To change your subscription options or search the archive:
> > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> > >
> > > Brought to you by Fig Leaf Software
> > > Premier Authorized Adobe Consulting and Training
> > > http://www.figleaf.com
> > > http://training.figleaf.com
> > >
> >
> >
> >
> > --
> > j:pn
> > _______________________________________________
> > [email protected]
> > To change your subscription options or search the archive:
> > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> >
> > Brought to you by Fig Leaf Software
> > Premier Authorized Adobe Consulting and Training
> > http://www.figleaf.com
> > http://training.figleaf.com
> >
> _______________________________________________
> [email protected]
> To change your subscription options or search the archive:
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>
> Brought to you by Fig Leaf Software
> Premier Authorized Adobe Consulting and Training
> http://www.figleaf.com
> http://training.figleaf.com
>
--
j:pn
_______________________________________________
[email protected]
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com