diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..b512c09d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/FilesSystemExplorerDoc.docx b/FilesSystemExplorerDoc.docx new file mode 100644 index 00000000..b970e378 Binary files /dev/null and b/FilesSystemExplorerDoc.docx differ diff --git a/Index.php b/Index.php new file mode 100644 index 00000000..8f78c495 --- /dev/null +++ b/Index.php @@ -0,0 +1,348 @@ + + + + + + + + + + + + + Files System Explorer + + +
+ + + + + + +
+
+ + + + +
+ +
+ + +
+ +
+ + + +
+ +
+ +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/css/style.css b/assets/css/style.css new file mode 100644 index 00000000..d91091c2 --- /dev/null +++ b/assets/css/style.css @@ -0,0 +1,60 @@ +.linkStyles:link{ + color:black; + background-color: white; + z-index: 3; + text-decoration: none; +} +.linkStyles:visited{ + color:black; + background-color: white; + z-index: 3; + text-decoration: none; +} +.linkStyles:hover{ + color:black; + background-color: white; + z-index: 3; + text-decoration: none; +} +.linkStyles:active{ + color:black; + background-color: white; + z-index: 3; + text-decoration: none; +} + +body{ + background-color: white; +} +.accordion-heading a.accordion-toggle { + display: inline-block !important; + } + + .fa-folder{ + color: orange; + } + .fa-file-word{ + color: blue; +} +.fa-file-powerpoint{ + color: tomato; +} +.fa-file-excel{ + color: green; +} +.fa-file-image{ + color: rgb(141, 73, 84) !important; +} + + .selected-a{ + background-color: rgba(166, 166, 218, 0.3) !important; +} + + ul { + margin-left: 1em !important; + padding-left: 0 !important; + } + +.accordion{ + padding-left: 2rem; +} \ No newline at end of file diff --git a/assets/js/script.js b/assets/js/script.js new file mode 100644 index 00000000..e69de29b diff --git a/modules/copy.php b/modules/copy.php new file mode 100644 index 00000000..f288e1d2 --- /dev/null +++ b/modules/copy.php @@ -0,0 +1,90 @@ +"; + echo $positionBar; + $stringPath = substr($root,0, $positionBar); + echo "
"; + echo $stringPath; + $foldername = substr($root, $positionBar); + echo "
"; + echo $foldername; + $inputNewName= ".".$stringPath."New". $foldername; + echo "
"; + + $oldName = ".".$root; + echo $inputNewName; + echo "
"; + echo $oldName; + + // copy($oldName,$inputNewName); + recurseCopy(".".$root, $inputNewName, $childFolder = '' + ); + header("Location:../index.php?root=$inputNewName"); + +} + +function recurseCopy( + string $sourceDirectory, + string $destinationDirectory, + string $childFolder = '' +): void { + $directory = opendir($sourceDirectory); + + if (is_dir($destinationDirectory) === false) { + mkdir($destinationDirectory); + } + + if ($childFolder !== '') { + if (is_dir("$destinationDirectory/$childFolder") === false) { + mkdir("$destinationDirectory/$childFolder"); + } + + while (($file = readdir($directory)) !== false) { + if ($file === '.' || $file === '..') { + continue; + } + + if (is_dir("$sourceDirectory/$file") === true) { + recurseCopy("$sourceDirectory/$file", "$destinationDirectory/$childFolder/$file"); + } else { + copy("$sourceDirectory/$file", "$destinationDirectory/$childFolder/$file"); + } + } + + closedir($directory); + + return; + } + + while (($file = readdir($directory)) !== false) { + if ($file === '.' || $file === '..') { + continue; + } + + if (is_dir("$sourceDirectory/$file") === true) { + recurseCopy("$sourceDirectory/$file", "$destinationDirectory/$file"); + } + else { + copy("$sourceDirectory/$file", "$destinationDirectory/$file"); + } + } + + closedir($directory); +} \ No newline at end of file diff --git a/modules/createFile.php b/modules/createFile.php new file mode 100644 index 00000000..29e88818 --- /dev/null +++ b/modules/createFile.php @@ -0,0 +1,19 @@ +getMessage(); + } + header("Location:../index.php?root=$root"); +} diff --git a/modules/createFolder.php b/modules/createFolder.php new file mode 100644 index 00000000..1e67d44f --- /dev/null +++ b/modules/createFolder.php @@ -0,0 +1,17 @@ +getMessage(); +} +header("Location:../index.php?root=$dirPath&rename=new_folder"); +?> diff --git a/modules/deleteFile.php b/modules/deleteFile.php new file mode 100644 index 00000000..89e68574 --- /dev/null +++ b/modules/deleteFile.php @@ -0,0 +1,67 @@ + \ No newline at end of file diff --git a/modules/generateFiles.php b/modules/generateFiles.php new file mode 100644 index 00000000..34eeec2d --- /dev/null +++ b/modules/generateFiles.php @@ -0,0 +1,37 @@ +"; + // Recorre todos los elementos del directorio + while (($archivo = readdir($gestor)) !== false) { + $ruta_completa = $ruta . "/" . $archivo; + // Se muestran todos los archivos y carpetas excepto "." y ".." + if ($archivo != "." && $archivo != "..") { + // Si es un directorio se recorre recursivamente + if (is_dir($ruta_completa)) { + if (isset($_GET["rename"])){ + if($archivo == "new_folder"){ + echo "
  • $archivo"."nuevo
  • ","nuevo"; + }else{ + echo "
  • $archivo
  • ","algo nuevo"; + } + }else{ + echo "
  • $archivo
  • "; + } + // generateFilesFun($ruta_completa); + } else { + require_once("./modules/whatEsxtension.php"); + isaFolder($archivo,$ruta); + } + } + } + // Cierra el gestor de directorios + closedir($gestor); + echo ""; + } else { + echo "No es una ruta de directorio valida
    "; + } +} \ No newline at end of file diff --git a/modules/generateFoldersTree.php b/modules/generateFoldersTree.php new file mode 100644 index 00000000..fce688e6 --- /dev/null +++ b/modules/generateFoldersTree.php @@ -0,0 +1,50 @@ +"; + // Recorre todos los elementos del directorio + + while (($archivo = readdir($gestor)) !== false) { + $ruta_completa = $ruta . "/" . $archivo; + // Se muestran todos los archivos y carpetas excepto "." y ".." + if ($archivo != "." && $archivo != "..") { + // Si es un directorio se recorre recursivamente + if (is_dir($ruta_completa)) { + //folder google icons + if (isset($_GET["root"])){ + if($_GET["root"] == $ruta_completa){ + echo "
  • + + $archivo +
  • "; + }else{ + echo "
  • + + $archivo +
  • "; + + } + }else{ + echo "
  • + + $archivo +
  • "; + + } + + generateFoldersTreeFun($ruta_completa,$count); + } else { + //echo "
  • " . $archivo . "
  • "; + } + } + } + // Cierra el gestor de directorios + closedir($gestor); + echo ""; + } else { + echo "No es una ruta de directorio valida
    "; + } +} \ No newline at end of file diff --git a/modules/locateFolder.php b/modules/locateFolder.php new file mode 100644 index 00000000..7d04fc9b --- /dev/null +++ b/modules/locateFolder.php @@ -0,0 +1,50 @@ +"; + // Recorre todos los elementos del directorio + + while (($archivo = readdir($gestor)) !== false) { + $ruta_completa = $ruta . "/" . $archivo; + // Se muestran todos los archivos y carpetas excepto "." y ".." + if ($archivo != "." && $archivo != "..") { + // Si es un directorio se recorre recursivamente + if (is_dir($ruta_completa)) { + //folder google icons + if (isset($_GET["root"])){ + if($_GET["root"] == $ruta_completa){ + echo "
  • + + $archivo +
  • "; + }else{ + echo "
  • + + $archivo +
  • "; + + } + }else{ + echo "
  • + + $archivo +
  • "; + + } + + locateFoldersTreeFun($ruta_completa,$count); + } else { + //echo "
  • " . $archivo . "
  • "; + } + } + } + // Cierra el gestor de directorios + closedir($gestor); + echo ""; + } else { + echo "No es una ruta de directorio valida
    "; + } +} \ No newline at end of file diff --git a/modules/readFile.php b/modules/readFile.php new file mode 100644 index 00000000..0e9b5a1a --- /dev/null +++ b/modules/readFile.php @@ -0,0 +1,19 @@ +getMessage(); + } +} diff --git a/modules/renameFile.php b/modules/renameFile.php new file mode 100644 index 00000000..50381cb2 --- /dev/null +++ b/modules/renameFile.php @@ -0,0 +1,22 @@ +"; + while (($archivo = readdir($gestor)) !== false) { + $ruta_completa = $ruta . "/" . $archivo; + $pattern = "/$searchWord/i"; + if ($archivo != "." && $archivo != "..") { + if (is_dir($ruta_completa)) { + if(preg_match($pattern, $archivo) == 1){ + echo "
  • + + $archivo +
  • ";} + searchFilesFun($ruta_completa,$searchWord); + } else { + if(preg_match($pattern, $archivo) == 1){ + require_once("./modules/whatEsxtension.php"); + isaFolder($archivo,$ruta); + } + } + } + } + // Cierra el gestor de directorios + closedir($gestor); + echo ""; + //header("Location:../index.php?stop=1"); + } +} + +// $searchDir = scandir("../root"); +// print_r($searchDir); + + + diff --git a/modules/test.php b/modules/test.php new file mode 100644 index 00000000..6345b178 --- /dev/null +++ b/modules/test.php @@ -0,0 +1,54 @@ +"; + + // Recorre todos los elementos del directorio + $count=0; + while (($archivo = readdir($gestor)) !== false) { + + $ruta_completa = $ruta . "/" . $archivo; + + // Se muestran todos los archivos y carpetas excepto "." y ".." + if ($archivo != "." && $archivo != "..") { + // Si es un directorio se recorre recursivamente + if (is_dir($ruta_completa)) { + $count++; + +?> +
    +
    +

    + +

    +
    +
    + + + +
    +
    +
    +
    +" . $archivo . ""; + } + } + } + + // Cierra el gestor de directorios + closedir($gestor); + echo ""; + } else { + echo "No es una ruta de directorio valida
    "; + } +} + +?> diff --git a/modules/uploadFile.php b/modules/uploadFile.php new file mode 100644 index 00000000..022c35b9 --- /dev/null +++ b/modules/uploadFile.php @@ -0,0 +1,25 @@ +File is an image - " . $check["mime"] . ".

    "; + $uploadOk = 1; + if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $target_file)) { + echo "

    El fichero es válido y se subió con éxito.

    "; + } else { + echo "

    ¡Posible ataque de subida de ficheros!

    "; + } + } else { + echo "File is not an image."; + $uploadOk = 0; + } + } +} +?> +

    Back

    \ No newline at end of file diff --git a/modules/whatEsxtension.php b/modules/whatEsxtension.php new file mode 100644 index 00000000..de0ac40c --- /dev/null +++ b/modules/whatEsxtension.php @@ -0,0 +1,67 @@ +$archivo"; + }else{ + echo "
  • $archivo
  • "; + } + }else{ + echo "
  • $archivo
  • "; + } + + break; + + case 'pptx': + if(isset($_GET['fileName'])){ + if($_GET['fileName']==$archivo){ + echo "
  • $archivo
  • "; + }else{ + echo "
  • $archivo
  • "; + } + }else{ + echo "
  • $archivo
  • "; + } + + break; + + + + case 'xlsx': + if(isset($_GET['fileName'])){ + if($_GET['fileName']==$archivo){ + echo "
  • $archivo
  • "; + }else{ + echo "
  • $archivo
  • "; + } + }else{ + echo "
  • $archivo
  • "; + } + + break; + + case 'jpg': + if(isset($_GET['fileName'])){ + if($_GET['fileName']==$archivo){ + echo "
  • $archivo
  • "; + }else{ + echo "
  • $archivo
  • "; + } + }else{ + echo "
  • $archivo
  • "; + } + + break; + + + case 'img': + echo "
  • " . $archivo . "
  • "; + break; + } + } diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..11e51248 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,48 @@ +{ + "name": "filesystem-explorer", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "bootstrap": "^5.1.3" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.0.tgz", + "integrity": "sha512-zrsUxjLOKAzdewIDRWy9nsV1GQsKBCWaGwsZQlCgr6/q+vjyZhFgqedLfFBuI9anTPEUT4APq9Mu0SZBTzIcGQ==", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/bootstrap": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", + "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + }, + "peerDependencies": { + "@popperjs/core": "^2.10.2" + } + } + }, + "dependencies": { + "@popperjs/core": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.0.tgz", + "integrity": "sha512-zrsUxjLOKAzdewIDRWy9nsV1GQsKBCWaGwsZQlCgr6/q+vjyZhFgqedLfFBuI9anTPEUT4APq9Mu0SZBTzIcGQ==", + "peer": true + }, + "bootstrap": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", + "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", + "requires": {} + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..7d1ac8d7 --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "bootstrap": "^5.1.3" + } +} diff --git a/root/folder1/NewCsv.csv b/root/folder1/NewCsv.csv new file mode 100644 index 00000000..e69de29b diff --git a/root/folder1/WIN_20190709_15_44_43_Pro.jpg b/root/folder1/WIN_20190709_15_44_43_Pro.jpg new file mode 100644 index 00000000..c2843434 Binary files /dev/null and b/root/folder1/WIN_20190709_15_44_43_Pro.jpg differ diff --git a/root/folder1/WIN_20190709_15_45_04_Pro.jpg b/root/folder1/WIN_20190709_15_45_04_Pro.jpg new file mode 100644 index 00000000..3fd2fea8 Binary files /dev/null and b/root/folder1/WIN_20190709_15_45_04_Pro.jpg differ diff --git a/root/folder1/pepe.pptx b/root/folder1/pepe.pptx new file mode 100644 index 00000000..64f3bd0f --- /dev/null +++ b/root/folder1/pepe.pptx @@ -0,0 +1 @@ +Hola soy el contenido \ No newline at end of file diff --git a/root/folder1/pepito.txt b/root/folder1/pepito.txt new file mode 100644 index 00000000..64f3bd0f --- /dev/null +++ b/root/folder1/pepito.txt @@ -0,0 +1 @@ +Hola soy el contenido \ No newline at end of file diff --git a/root/folder1/renamed.pptx b/root/folder1/renamed.pptx new file mode 100644 index 00000000..64f3bd0f --- /dev/null +++ b/root/folder1/renamed.pptx @@ -0,0 +1 @@ +Hola soy el contenido \ No newline at end of file diff --git a/root/folder2/pepee.txt b/root/folder2/pepee.txt new file mode 100644 index 00000000..64f3bd0f --- /dev/null +++ b/root/folder2/pepee.txt @@ -0,0 +1 @@ +Hola soy el contenido \ No newline at end of file