var fso = new ActiveXObject( "Scripting.FileSystemObject" );
var result = new String( );
var FileName = new String( );
var Extention = new String( );
var theProjPath = (pathToMyDocuments + "\\CM5Projects\\");
var allThepathsFIX = null
// Wandle (bytes, KB, MB, GB oder TB).
function toMetric( bytes ) {
// Check Terabytes (TB).
if( bytes >= 1099511627776 ) { return ( Math.floor( bytes / 1099511627776 ) + ' TB' ); }
// Check Gigabytes (GB).
if( bytes >= 1073741824 ) { return ( Math.floor( bytes / 1073741824 ) + ' GB' ); }
// Check Megabytes (MB).
if( bytes >= 1048576 ) { return ( Math.floor( bytes / 1048576 ) + ' MB' ); }
// Check Kilobytes (KB).
if( bytes >= 1024 ) { return ( Math.floor( bytes / 1024 ) + ' KB' ); }
// Wenn weniger als 1 KB, zeige nur 1 KB.
return '1 KB';
}
// Zeige Inhalt wenn auf sub-folder geklickt
function subFolder( path ) {
// Update den txtPath.
frmSearch.txtPath.value = unescape( path );
var pathcomplstring = path.replace(/%5C/g, ","); // Pfad trenner durch Komma ersetzen für besseres Splitting
// vor > vor > vor > vorletzter Pfad
var pathsrt02 = pathcomplstring.split(',', 1000); //1000 = max. mögl. verschachtelte Unterordner
for (var i=0; i<pathsrt02.length -4; i++) {
thePath02 = "";
thePath02 += pathsrt02[i];
}
// vor > vor > vorletzter Pfad
var pathsrt03 = pathcomplstring.split(',', 1000);
for (var i=0; i<pathsrt03.length -3; i++) {
thePath03 = "";
thePath03 += pathsrt03[i];
}
// vor > vorletzter Pfad
var pathsrt04 = pathcomplstring.split(',', 1000);
for (var i=0; i<pathsrt04.length -2; i++) {
thePath04 = "";
thePath04 += pathsrt04[i];
}
// vorletzter Pfad
var pathsrt05 = pathcomplstring.split(',', 1000);
for (var i=0; i<pathsrt05.length -1; i++) {
thePath05 = "";
thePath05 += pathsrt05[i];
}
// Letzter Pfad
var pathsrt06 = pathcomplstring.split(',', 1000);
for (var i=0; i<pathsrt06.length; i++) {
thePath06 = "";
thePath06 += pathsrt06[i];
}
//Füge Pfade zusammen "rsaquo;" ist kleineres ">"-Zeichen
var allThepaths = " › " + "..." + thePath02 +
" › " + thePath03 +
" › " + thePath04 +
" › " + thePath05 +
" › " + thePath06 ;
//Alle Pfade ab CM5Projects >> zeigen
allThepathsFIX = allThepaths.substring(allThepaths.lastIndexOf("CM5Projects") + 11);
// UmlautFix
allThepathsFIX = allThepathsFIX.replace(/%C4/g, "Ä");
allThepathsFIX = allThepathsFIX.replace(/%E4/g, "ä");
allThepathsFIX = allThepathsFIX.replace(/%DC/g, "Ü");
allThepathsFIX = allThepathsFIX.replace(/%FC/g, "ü");
allThepathsFIX = allThepathsFIX.replace(/%D6/g, "Ö");
allThepathsFIX = allThepathsFIX.replace(/%F6/g, "ö");
allThepathsFIX = allThepathsFIX.replace(/%21/g, "!");
allThepathsFIX = allThepathsFIX.replace(/%23/g, "#");
allThepathsFIX = allThepathsFIX.replace(/%A7/g, "§");
allThepathsFIX = allThepathsFIX.replace(/%24/g, "$");
allThepathsFIX = allThepathsFIX.replace(/%25/g, "%");
allThepathsFIX = allThepathsFIX.replace(/%26/g, "&");
allThepathsFIX = allThepathsFIX.replace(/%28/g, "(");
allThepathsFIX = allThepathsFIX.replace(/%29/g, ")");
allThepathsFIX = allThepathsFIX.replace(/%3D/g, "=");
allThepathsFIX = allThepathsFIX.replace(/%26/g, "&");
allThepathsFIX = allThepathsFIX.replace(/%2C/g, ",");
//Anzeigen
document.getElementById("pathstring").innerHTML = allThepathsFIX.replace(/%20/g, " ");
// Neue Suche im neuen Ordner.
scan( );
}
// Scan der Pfade.
function FindFile( searchPath ) {
// Tabellenfarbe aktivieren.
var toggle = true;
// chkShowFolders ist checked, Unterordner anzeigen
if( frmSearch.chkShowFolders.checked ) {
// Check ob Projektfolder (ROOT) ist.
if( fso.GetParentFolderName( frmSearch.txtPath.value ).length > 39 ) { //39 war hier die höhe des Rootsfolders (Projekte)
MM_changeProp('folderUP','','visibility','visible',''); //UP Folder zeigen wenn außerhalb von root
// Hinzufügen des Zurück-Folders zur Tabelle.
result += '<A HREF="#" onClick=" subFolder( \'' + escape( fso.GetParentFolderName( frmSearch.txtPath.value ) ) + '\' ); return false;"></A>'
// Setzen der Colortoggle variable
toggle = !toggle;
} else { MM_changeProp('folderUP','','visibility','hidden',''); } //UP Folder verstecken wenn in root
// Ordner zu Ordner aktionen
var folderEnum = new Enumerator( searchPath.SubFolders );
for( var i = 0; !folderEnum.atEnd( ); folderEnum.moveNext( ) ) {
var folder = folderEnum.item( );
//Ordnerdatum Deklarieren
var folderDate = folder.DateLastAccessed;
var folderYear = new Date(folderDate).getFullYear()
// MonatsFix>> problem mit dem Datum, es wird immer eins abgezogen:
// >> hier setze ich es wieder drauf. Test ob bei Sommerzeit/Winterzeit wieder normal
var folderMonthErr = ('0' + new Date(folderDate).getMonth()).substr(-2)
var folderMonthN = parseInt(folderMonthErr) +1
// ENDE MonatsFix <<
var folderMonth = ('0' + folderMonthN).substr(-2)
var folderDay = ('0' + new Date(folderDate).getDate()).substr(-2)
folderDate = " " + folderYear + "." + folderMonth + "." + folderDay
// Hinzufügen der Ordner Zur Tabelle.
result +=
'<TR' + ( ( toggle ) ? '' : '' ) + '>' +
'<TD NOWRAP> <div id="folder" ' +
'onClick="subFolder( \'' + escape( folder.Path ) + '\' ); return false;">' +
'<span CLASS="contentname">' + folder.name + '</span>'+
'</div> </TD>' +
'<TD NOWRAP><span CLASS="exptitles" > ' + folderDate + ' </span></TD>' +
'<TD NOWRAP align="right"><span CLASS="exptitles" align="right"> ' +
toMetric( folder.size ) + ' </span></TD></TR>';
// Setzen der Colortoggle variable
toggle = !toggle;
}
}
// Dateien zu Dateien der Ordnerinhalte Aktionen.
var fileEnum = new Enumerator( searchPath.Files );
for( var i = 0; !fileEnum.atEnd( ); fileEnum.moveNext( ) ) {
var file = fileEnum.item( );
// Vergleiche Datei mit Filenameparameter.
if( FileName == "*" || file.name.slice( 0, file.name.lastIndexOf( "." ) ).toLowerCase( ).indexOf( FileName ) > -1 ) {
// Vergleiche DateiSuffix
if( Extention == "*" || file.name.slice( file.name.lastIndexOf( "." ) + 1 ).toLowerCase( ).indexOf( Extention ) > -1 ) {
//File Datum Deklarieren
var proectDate = file.DateLastAccessed;
var proectYear = new Date(proectDate).getFullYear()
// MonatsFix>> problem mit dem Datum, es wird immer eins abgezogen:
// >> hier setze ich es wieder drauf. Test ob bei Sommerzeit/Winterzeit wieder normal
var proectMonthErr = ('0' + new Date(proectDate).getMonth()).substr(-2)
var proectMonthN = parseInt(proectMonthErr) +1
// ENDE MonatsFix <<
var proectMonth = ('0' + proectMonthN).substr(-2)
var proectDay = ('0' + new Date(proectDate).getDate()).substr(-2)
proectDate = " " + proectYear + "." + proectMonth + "." + proectDay
// Füge Datei der Tabelle hinzu
result +=
'<TR' + ( ( toggle ) ? '' : ' ' ) + '>' +
'<TD NOWRAP><div id="file" <A TARGET="_blank" HREF="' +
file.Path + '">' +
'<span CLASS="contentname"> ' + file.name + '</span>' +
'</A> </div></TD>' +
'<TD NOWRAP><span CLASS="exptitles" > ' + proectDate + ' </span></TD>' +
'<TD NOWRAP align="right"><span CLASS="exptitles" align="right"> ' +
toMetric( file.size ) + ' </span></TD></TR>';
// Setzen der Colortoggle variable
toggle = !toggle;
}
}
}
}
// Überprüfen und Vergleichen der der Pfade und Dateinamen und initiiert den Dateiscan.
function scan( ) {
// Parse den Dateinamen und Suffix
FileName = ( frmSearch.txtMask.value.lastIndexOf( "." ) > -1 ) ? frmSearch.txtMask.value.slice( 0, frmSearch.txtMask.value.lastIndexOf( "." ) ) : ( frmSearch.txtMask.value.length > 0 ) ? frmSearch.txtMask.value.toLowerCase( ) : "*";
Extention = ( frmSearch.txtMask.value.lastIndexOf( "." ) > -1 ) ? frmSearch.txtMask.value.slice( frmSearch.txtMask.value.lastIndexOf( "." ) + 1 ).toLowerCase( ) : "*";
// Vergleichen erhaltenen Pfad
if( frmSearch.txtPath.value.length > 0 && fso.FolderExists( frmSearch.txtPath.value ) ) {
// Wenn Pfad Exisiiert Erstelle Tabellenkopf
result =
'<TABLE id="expTable" class="expTable" WIDTH="100%" CELLPADDING="0"><TR>' +
'<TD WIDTH="50%" CLASS="find"><b> </b></TD>' +
'<TD WIDTH="5%" CLASS="exptitles"><b> </b></TD>' +
'<TD WIDTH="3%" CLASS="exptitles" align="right"><b> </b></TD></TR>';
// Sammle gültige Dateinamen
FindFile( fso.GetFolder( frmSearch.txtPath.value ) );
// Tabelle schließen
explorerContents.innerHTML = result + "</TABLE>";
} else {
// Probleme mit dem Pfad
alert( "The path structure is incorrect. Please check the path structure. n\If it's correct try again or contact KC-Produkte Gmbh." );
}
}