File manager - Edit - /usr/local/CyberCP/cyberpanel/static/filemanager/js/fileManager.js
Back
function getCookie(name) { var cookieValue = null; if (document.cookie && document.cookie !== '') { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = jQuery.trim(cookies[i]); // Does this cookie string begin with the name we want? if (cookie.substring(0, name.length + 1) === (name + '=')) { cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); break; } } } return cookieValue; } var fileManager = angular.module('fileManager', ['angularFileUpload']); fileManager.config(['$interpolateProvider', function ($interpolateProvider) { $interpolateProvider.startSymbol('{$'); $interpolateProvider.endSymbol('$}'); }]); fileManager.controller('fileManagerCtrl', function ($scope, $http, FileUploader, $window) { $('form').submit(function (e) { e.preventDefault(); }); $(document.body).click(function () { rightClickNode.style.display = "none"; }); var editor = ace.edit("htmlEditorContent"); var aceEditorMode = ''; var domainName = $("#domainNameInitial").text(); var domainRandomSeed = ""; $scope.currentRPath = "/"; var homeRPathBack = "/"; var homePathBack = "/home/" + domainName; $scope.currentPath = "/home/" + domainName; $scope.startingPath = domainName; $scope.completeStartingPath = "/home/" + domainName; var trashPath = homePathBack + '/.trash' $scope.editDisable = true; // disable loading image on tree loading $scope.treeLoading = true; // html editor $scope.errorMessageEditor = true; $scope.htmlEditorLoading = true; $scope.saveSuccess = true; var allFilesAndFolders = []; $scope.showUploadBox = function () { $('#uploadBox').modal('show'); }; $scope.showHTMLEditorModal = function () { $scope.htmlEditorLoading = false; $scope.errorMessageEditor = true; $('#showHTMLEditor').modal('show'); $scope.fileInEditor = allFilesAndFolders[0]; $scope.getFileContents(); }; // tree $scope.fetchChilds = function (element, completePath, functionName) { // start loading tree $scope.treeLoading = false; var funcCompletePath = ""; var nodeForChilds = ""; if (functionName === "primary") { nodeForChilds = element.currentTarget.parentNode; funcCompletePath = completePath; } else { nodeForChilds = element.parentNode; funcCompletePath = completePath; } url = '/filemanager/controller'; var data = { completeStartingPath: completePath, method: "list", domainRandomSeed: domainRandomSeed, domainName: domainName }; var config = { headers: { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); function ListInitialDatas(response) { $scope.treeLoading = true; if (response.data.status === 1) { /// node prepration var ulNode = prepareChildNodeUL(); nodeForChilds.appendChild(ulNode); var filesData = response.data; var keys = Object.keys(filesData); for (var i = 0; i < keys.length; i++) { if (keys[i] === "error_message" | keys[i] === "status") { continue; } else { path = filesData[keys[i]][0]; completePath = filesData[keys[i]][1]; dropDown = filesData[keys[i]][2]; finalPrepration(ulNode, path, completePath, dropDown); } } activateMinus(nodeForChilds, funcCompletePath); } else { } } function cantLoadInitialDatas(response) { } }; function finalPrepration(parentNode, path, completePath, dropDown) { parentNode.appendChild(prepareChildNodeLI(path, completePath, dropDown)); } function prepareChildNodeLI(path, completePath, dropDown) { // text nodes are created var spaceNode = document.createTextNode(" "); var pathNode = document.createTextNode(" " + path); // var attachFunc = function () { $scope.fetchChilds(aNode, completePath, "secondary"); }; var aNode = document.createElement('a'); aNode.setAttribute('href', '#'); aNode.addEventListener("click", attachFunc); aNode.setAttribute('onclick', 'return false;'); var secondANode = document.createElement('a'); secondANode.setAttribute('href', '#'); secondANode.setAttribute('onclick', 'return false;'); // var iNodePlus = document.createElement('i'); iNodePlus.setAttribute('class', 'fa fa-plus'); iNodePlus.setAttribute('aria-hidden', 'true'); iNodePlus.style.color = "#007bff"; var iNodeFolder = document.createElement('i'); iNodeFolder.setAttribute('class', 'fa fa-folder'); iNodeFolder.setAttribute('aria-hidden', 'true'); var iNodeFile = document.createElement('i'); iNodeFile.setAttribute('class', 'fa fa-file'); iNodeFile.setAttribute('aria-hidden', 'true'); iNodeFile.style.color = "#007bff"; // var liNode = document.createElement('li'); liNode.setAttribute('class', 'list-group-item'); liNode.style.border = "None"; // node preparation if (dropDown == true) { secondANode.appendChild(iNodeFolder); secondANode.appendChild(pathNode); secondANode.addEventListener("click", function () { $scope.fetchForTableSecondary(secondANode, "fromTree", completePath); }); // This makes completion of <a href="#"><i class="fa fa-folder" aria-hidden="true"></i> {{ startingPath }} </a> aNode.appendChild(spaceNode); aNode.appendChild(iNodePlus); aNode.appendChild(spaceNode); // liNode.appendChild(aNode); liNode.appendChild(secondANode); return liNode; } else { liNode.appendChild(iNodeFile); liNode.appendChild(pathNode); return liNode; } } function prepareChildNodeUL() { // text nodes are created var ulNode = document.createElement('ul'); ulNode.setAttribute('class', 'list-group list-group-flush'); return ulNode; } function activateMinus(node, completePath) { var collectionOfA = node.getElementsByTagName("a"); // var aNode = document.createElement('a'); aNode.setAttribute('href', '#'); aNode.addEventListener("click", function () { deleteChilds(aNode, completePath); }); aNode.setAttribute('onclick', 'return false;'); // var spaceNode = document.createTextNode(" "); var iNodeMinus = document.createElement('i'); iNodeMinus.setAttribute('class', 'fa fa-minus'); iNodeMinus.setAttribute('aria-hidden', 'true'); iNodeMinus.style.color = "#007bff"; // prepare node aNode.appendChild(iNodeMinus); aNode.appendChild(spaceNode); node.insertBefore(aNode, collectionOfA[1]); node.removeChild(collectionOfA[0]); } function deleteChilds(aNode, completePath) { parent = aNode.parentNode; var collectionOfUL = parent.getElementsByTagName("ul"); parent.removeChild(collectionOfUL[0]); var collectionOfA = parent.getElementsByTagName("a"); // var newANode = document.createElement('a'); newANode.setAttribute('href', '#'); newANode.addEventListener("click", function () { $scope.fetchChilds(newANode, completePath, "secondary"); }); newANode.setAttribute('onclick', 'return false;'); // var spaceNode = document.createTextNode(" "); var iNodePlus = document.createElement('i'); iNodePlus.setAttribute('class', 'fa fa-plus'); iNodePlus.setAttribute('aria-hidden', 'true'); iNodePlus.style.color = "#007bff"; // prepare node newANode.appendChild(iNodePlus); newANode.appendChild(spaceNode); parent.insertBefore(newANode, collectionOfA[1]); parent.removeChild(collectionOfA[0]); } // tree ends $scope.selectAll = function () { var tableBody = document.getElementById("tableBodyFiles"); var getFileName = tableBody.firstChild.firstChild.innerHTML; allFilesAndFolders = []; var collectionOfA = tableBody.getElementsByTagName("tr"); for (var i = 0; i < collectionOfA.length; i++) { collectionOfA[i].style.background = "#ccdbe8"; var getFileName = collectionOfA[i].getElementsByTagName('td')[0].innerHTML; allFilesAndFolders.push(getFileName); } $scope.buttonActivator(); }; $scope.unSelectAll = function () { var tableBody = document.getElementById("tableBodyFiles"); var getFileName = tableBody.firstChild.firstChild.innerHTML; allFilesAndFolders = []; var collectionOfA = tableBody.getElementsByTagName("tr"); for (var i = 0; i < collectionOfA.length; i++) { collectionOfA[i].style.background = "None"; } $scope.buttonActivator(); }; function addFileOrFolderToList(nodeName) { var rightClickNode = document.getElementById("rightClick") var check = 1; var getFileName = nodeName.getElementsByTagName('td')[0].innerHTML; if (nodeName.style.backgroundColor === "rgb(204, 219, 232)") { var tempArray = []; nodeName.style.background = "None"; for (var j = 0; j < allFilesAndFolders.length; j++) { if (allFilesAndFolders[j] != getFileName) { tempArray.push(allFilesAndFolders[j]); } } allFilesAndFolders = tempArray; // activating deactivating functions $scope.buttonActivator(); return; } nodeName.style.background = "#ccdbe8"; for (var j = 0; j < allFilesAndFolders.length; j++) { if (allFilesAndFolders[j] === getFileName) { check = 0; break; } } if (check === 1) { allFilesAndFolders.push(getFileName); } // activating deactivating functions $scope.buttonActivator(); } function createTR(fileName, fileSize, lastModified, permissions, dirCheck) { // text nodes are created var fileNameNode = document.createTextNode(fileName); var fileSizeNode = document.createTextNode(fileSize); var lastModifiedNode = document.createTextNode(lastModified); var permissionsNode = document.createTextNode(permissions); // var iNodeFolder = document.createElement('i'); iNodeFolder.setAttribute('class', 'fa fa-folder'); iNodeFolder.setAttribute('aria-hidden', 'true'); iNodeFolder.style.color = "#007bff"; var iNodeFile = document.createElement('i'); iNodeFile.setAttribute('class', 'fa fa-file'); iNodeFile.setAttribute('aria-hidden', 'true'); iNodeFile.style.color = "#007bff"; // var firstTDNode = document.createElement('td'); var secondTDNode = document.createElement('td'); var thirdTDNode = document.createElement('td'); var forthTDNode = document.createElement('td'); var fifthTDNode = document.createElement('td'); fifthTDNode.style.display = "none"; // var thNode = document.createElement('th'); thNode.setAttribute('scope', 'row'); // var trNode = document.createElement('tr'); // node preparation firstTDNode.appendChild(fileNameNode); secondTDNode.appendChild(fileSizeNode); thirdTDNode.appendChild(lastModifiedNode); forthTDNode.appendChild(permissionsNode); if (dirCheck == true) { thNode.appendChild(iNodeFolder); trNode.appendChild(thNode); trNode.addEventListener("dblclick", function () { $scope.fetchForTableSecondary(firstTDNode, "doubleClick"); }); trNode.addEventListener("click", function () { addFileOrFolderToList(trNode); }); trNode.addEventListener("contextmenu", function (event) { $scope.rightClickCallBack(event, trNode); }); // Hidden td to represent file or folder var fileOrFolderNode = document.createTextNode("Folder"); fifthTDNode.appendChild(fileOrFolderNode) } else { thNode.appendChild(iNodeFile); trNode.appendChild(thNode); trNode.addEventListener("click", function () { addFileOrFolderToList(trNode); }); trNode.addEventListener("contextmenu", function (event) { $scope.rightClickCallBack(event, trNode); }); // Hidden td to represent file or folder var fileOrFolderNode = document.createTextNode("File"); fifthTDNode.appendChild(fileOrFolderNode) } trNode.appendChild(firstTDNode); trNode.appendChild(secondTDNode); trNode.appendChild(thirdTDNode); trNode.appendChild(forthTDNode); trNode.appendChild(fifthTDNode); return trNode; } // Button Activator $scope.buttonActivator = function () { // for restore button if ($scope.currentPath === trashPath) { var restoreBTN = document.getElementById("restoreRight"); restoreBTN.style.display = "block"; } else { var restoreBTN = document.getElementById("restoreRight"); restoreBTN.style.display = "none"; } // for edit button if (allFilesAndFolders.length === 1) { var editNode = document.getElementById("editFile"); editNode.style.pointerEvents = "auto"; var editNotRight = document.getElementById("editOnRight"); var result = findFileExtension(allFilesAndFolders[0]); if (result !== undefined) { if (result[0] === "js") { aceEditorMode = "ace/mode/javascript"; editNotRight.style.display = "Block"; } else if (result[0] === "html") { aceEditorMode = "ace/mode/html"; editNotRight.style.display = "Block"; } else if (result[0] === "css") { aceEditorMode = "ace/mode/css"; editNotRight.style.display = "Block"; } else if (result[0] === "php") { aceEditorMode = "ace/mode/php"; editNotRight.style.display = "Block"; } else if (result[0] === "py") { aceEditorMode = "ace/mode/python"; editNotRight.style.display = "Block"; } else if (result[0] === "txt") { aceEditorMode = ""; editNotRight.style.display = "Block"; } else if (result[0] === "htaccess") { aceEditorMode = ""; editNotRight.style.display = "Block"; } else { var editNode = document.getElementById("editFile"); editNode.style.pointerEvents = "none"; editNotRight.style.display = "None"; } } else { var editNode = document.getElementById("editFile"); editNode.style.pointerEvents = "none"; editNotRight.style.display = "None"; } } else { var editNode = document.getElementById("editFile"); editNode.style.pointerEvents = "none"; } // extraction button if (allFilesAndFolders.length === 1) { var extractFileNode = document.getElementById("extractFile"); extractFileNode.style.pointerEvents = "auto"; var extractNodeRight = document.getElementById("extractOnRight"); var result = findFileExtension(allFilesAndFolders[0]); if (result !== undefined) { if (result[0] === "gz") { extractFileNode.style.pointerEvents = "auto"; extractNodeRight.style.display = "Block"; } else if (result[0] === "zip") { extractFileNode.style.pointerEvents = "auto"; extractNodeRight.style.display = "Block"; } else { extractFileNode.style.pointerEvents = "none"; extractNodeRight.style.display = "None"; } } else { extractFileNode.style.pointerEvents = "none"; extractNodeRight.style.display = "None"; } } else { var extractFileNode = document.getElementById("extractFile"); extractFileNode.style.pointerEvents = "none"; } // move button if (allFilesAndFolders.length >= 1) { var moveFileNode = document.getElementById("moveFile"); moveFileNode.style.pointerEvents = "auto"; } else { var moveFileNode = document.getElementById("moveFile"); moveFileNode.style.pointerEvents = "none"; } //copy button if (allFilesAndFolders.length >= 1) { var copeFileNode = document.getElementById("copyFile"); copeFileNode.style.pointerEvents = "auto"; } else { var copeFileNode = document.getElementById("copyFile"); copeFileNode.style.pointerEvents = "none"; } // rename button if (allFilesAndFolders.length === 1) { var renameFileNode = document.getElementById("renameFile"); renameFileNode.style.pointerEvents = "auto"; } else { var renameFileNode = document.getElementById("renameFile"); renameFileNode.style.pointerEvents = "none"; } // compress button if (allFilesAndFolders.length >= 1) { var compressFile = document.getElementById("compressFile"); compressFile.style.pointerEvents = "auto"; } else { var compressFile = document.getElementById("compressFile"); compressFile.style.pointerEvents = "none"; } // move button if (allFilesAndFolders.length >= 1) { var deleteFile = document.getElementById("deleteFile"); deleteFile.style.pointerEvents = "auto"; } else { var deleteFile = document.getElementById("deleteFile"); deleteFile.style.pointerEvents = "none"; } }; $scope.buttonActivator(); // table functions $scope.fetchForTableSecondary = function (node, functionName) { allFilesAndFolders = []; $scope.buttonActivator(); url = "/filemanager/controller"; var completePathToFile = ""; if (domainName === "") { if (functionName === "startPoint") { completePathToFile = $scope.currentRPath; } else if (functionName === "doubleClick") { completePathToFile = $scope.currentRPath + "/" + node.innerHTML; } else if (functionName === "homeFetch") { completePathToFile = homeRPathBack; } else if (functionName === "goBackOnPath") { var pos = $scope.currentRPath.lastIndexOf("/"); completePathToFile = $scope.currentRPath.slice(0, pos); } else if (functionName === "refresh") { completePathToFile = $scope.currentRPath; var rightClickNode = document.getElementById("rightClick"); } else if (functionName === "fromTree") { completePathToFile = arguments[2]; } $scope.currentRPath = completePathToFile; } else { if (functionName === "startPoint") { completePathToFile = $scope.currentPath; } else if (functionName === "doubleClick") { completePathToFile = $scope.currentPath + "/" + node.innerHTML; } else if (functionName === "homeFetch") { completePathToFile = homePathBack; } else if (functionName === "goBackOnPath") { var pos = $scope.currentPath.lastIndexOf("/"); completePathToFile = $scope.currentPath.slice(0, pos); } else if (functionName === "refresh") { completePathToFile = $scope.currentPath; var rightClickNode = document.getElementById("rightClick"); } else if (functionName === "fromTree") { completePathToFile = arguments[2]; } $scope.currentPath = completePathToFile; } var data = { completeStartingPath: completePathToFile, method: "listForTable", home: "/", domainRandomSeed: domainRandomSeed, domainName: domainName }; var tableBody = document.getElementById("tableBodyFiles"); var loadingPath = "/static/filemanager/images/loading.gif"; tableBody.innerHTML = '<img src="' + loadingPath + '">'; var config = { headers: { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); function ListInitialDatas(response) { tableBody.innerHTML = ''; if (response.data.status === 1) { /// node prepration var filesData = response.data; var keys = Object.keys(filesData); for (var i = 0; i < keys.length; i++) { if (keys[i] === "error_message" | keys[i] === "status") { continue; } else { var fileName = filesData[keys[i]][0]; var lastModified = filesData[keys[i]][2]; var fileSize = filesData[keys[i]][3]; var permissions = filesData[keys[i]][4]; var dirCheck = filesData[keys[i]][5]; console.log(fileName); if (fileName === "..filemanagerkey") { continue; } tableBody.appendChild(createTR(fileName, fileSize, lastModified, permissions, dirCheck)); } } } else { var notification = alertify.notify(response.data.error_message, 'error', 10, function () { }); $scope.fetchForTableSecondary(null, 'homeFetch'); } } function cantLoadInitialDatas(response) { } }; function findFileExtension(fileName) { return (/[.]/.exec(fileName)) ? /[^.]+$/.exec(fileName) : undefined; } $scope.fetchForTableSecondary(null, "startPoint"); // html editor $scope.getFileContents = function () { var completePathForFile = $scope.currentPath + "/" + allFilesAndFolders[0]; var data = { fileName: completePathForFile, method: "readFileContents", domainRandomSeed: domainRandomSeed, domainName: domainName }; var config = { headers: { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); function ListInitialDatas(response) { $scope.htmlEditorLoading = true; if (response.data.status === 1) { var editor = ace.edit("htmlEditorContent"); editor.setTheme("ace/theme/chrome"); editor.getSession().setMode(aceEditorMode); editor.setValue(response.data.fileContents); } else { $scope.errorMessageEditor = false; $scope.error_message = response.data.error_message; } } function cantLoadInitialDatas(response) { } }; $scope.putFileContents = function () { $scope.htmlEditorLoading = false; $scope.saveSuccess = true; $scope.errorMessageEditor = true; var completePathForFile = $scope.currentPath + "/" + allFilesAndFolders[0]; var data = { fileName: completePathForFile, method: "writeFileContents", fileContent: editor.getValue(), domainRandomSeed: domainRandomSeed, domainName: domainName }; var config = { headers: { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); function ListInitialDatas(response) { $scope.htmlEditorLoading = true; if (response.data.status === 1) { $scope.htmlEditorLoading = true; $scope.saveSuccess = false; } else { $scope.errorMessageEditor = false; $scope.error_message = response.data.error_message; } } function cantLoadInitialDatas(response) { } }; /// code mirror open $scope.editWithCodeMirror = function () { var completePathForFile = $scope.currentPath + "/" + allFilesAndFolders[0]; var finalURL = 'https://' + window.location.hostname + ':' + window.location.port + '/filemanager/editFile?domainName=' + domainName + '&fileName=' + completePathForFile; window.open(finalURL); }; // uploads $scope.errorMessage = true; var uploader; if (domainName == "") { uploader = $scope.uploader = new FileUploader({ url: "/filemanager/upload", headers: { 'X-CSRFToken': getCookie('csrftoken') // X-CSRF-TOKEN is used for Ruby on Rails Tokens }, formData: [{ "method": "upload", "home": homeRPathBack }] }); } else { uploader = $scope.uploader = new FileUploader({ url: "/filemanager/upload", headers: { 'X-CSRFToken': getCookie('csrftoken') // X-CSRF-TOKEN is used for Ruby on Rails Tokens }, formData: [{ "method": "upload", "home": homePathBack }] }); } uploader.onCompleteItem = function (fileItem, response, status, headers) { if (response.uploadStatus === 1) { $scope.errorMessage = true; $scope.fetchForTableSecondary(null, 'refresh'); } else { $scope.errorMessage = false; $scope.fileName = response.fileName; $scope.error_message = response.error_message; } }; uploader.onAfterAddingFile = function (fileItem) { var basepath; if (domainName == "") { basepath = $scope.currentRPath; } else { basepath = $scope.currentPath } $scope.errorMessage = true; fileItem.formData.push( { "completePath": basepath, domainRandomSeed: domainRandomSeed, domainName: domainName }); }; // folder functions $scope.createSuccess = true; $scope.errorMessageFolder = true; // $scope.showCreateFolderModal = function () { $scope.createSuccess = true; $scope.errorMessageFolder = true; $scope.newFolderName = ""; $('#showCreateFolder').modal('show'); }; $scope.createFolderEnter = function ($event) { var keyCode = $event.which || $event.keyCode; if (keyCode === 13) { $scope.htmlEditorLoading = false; $scope.createNewFolder(); } }; $scope.createNewFolder = function () { var completePathForFolder; if (domainName === "") { completePathForFolder = $scope.currentRPath + "/" + $scope.newFolderName; $scope.errorMessageFile = true; } else { completePathForFolder = $scope.currentPath + "/" + $scope.newFolderName; $scope.errorMessageFile = true; } if ($scope.newFolderName.length === 0) { $scope.errorMessageFolder = false; $scope.error_message = "Please enter folder name!"; return; } var data = { folderName: completePathForFolder, method: "createNewFolder", domainRandomSeed: domainRandomSeed, domainName: domainName }; var url = '/filemanager/controller'; var config = { headers: { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); function ListInitialDatas(response) { if (response.data.status === 1) { $scope.createSuccess = false; $scope.fetchForTableSecondary(null, 'refresh'); $('#showCreateFolder').modal('hide'); } else { $scope.errorMessageFolder = false; $scope.error_message = response.data.error_message; } } function cantLoadInitialDatas(response) { } }; // $scope.createSuccess = true; $scope.errorMessageFile = true; $scope.showCreateFileModal = function () { $scope.createSuccess = true; $scope.errorMessageFile = true; $scope.newFileName = ""; $('#showCreateFile').modal('show'); }; $scope.createFileEnter = function ($event) { var keyCode = $event.which || $event.keyCode; if (keyCode === 13) { $scope.htmlEditorLoading = false; $scope.createNewFile(); } }; $scope.createNewFile = function () { var completePathForFile; if (domainName === "") { completePathForFile = $scope.currentRPath + "/" + $scope.newFileName; $scope.errorMessageFile = true; } else { completePathForFile = $scope.currentPath + "/" + $scope.newFileName; $scope.errorMessageFile = true; } if ($scope.newFileName.length === 0) { $scope.errorMessageFile = false; $scope.error_message = "Please enter file name!"; return; } var data = { fileName: completePathForFile, method: "createNewFile", domainRandomSeed: domainRandomSeed, domainName: domainName }; var config = { headers: { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); function ListInitialDatas(response) { if (response.data.status === 1) { $scope.createSuccess = false; $scope.fetchForTableSecondary(null, 'refresh'); $('#showCreateFile').modal('hide'); } else { $scope.errorMessageFile = false; $scope.error_message = response.data.error_message; } } function cantLoadInitialDatas(response) { } }; $scope.createSuccess = true; $scope.errorMessageFile = true; // $scope.deleteLoading = true; $scope.showDeleteModal = function () { $('#showDelete').modal('show'); }; $scope.deleteFolderOrFile = function () { var pth; var trash; if (domainName === "") { pth = $scope.currentRPath; trash = true; } else { pth = $scope.currentPath; trash = $scope.skipTrash } $scope.deleteLoading = false; var data = { path: pth, method: "deleteFolderOrFile", fileAndFolders: allFilesAndFolders, domainRandomSeed: domainRandomSeed, domainName: domainName, skipTrash: trash }; var config = { headers: { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); function ListInitialDatas(response) { $scope.deleteLoading = true; if (response.data.status === 1) { $('#showDelete').modal('hide'); var notification = alertify.notify('Successfully Deleted!', 'success', 5, function () { }); $scope.fetchForTableSecondary(null, 'refresh'); } else { var notification = alertify.notify('Files/Folders can not be deleted', 'error', 5, function () { console.log('dismissed'); }); } } function cantLoadInitialDatas(response) { } }; // Compression $scope.compressionLoading = true; $scope.showCompressionModal = function () { $('#showCompression').modal('show'); $scope.listOfFiles = ""; $scope.compressedFileName = ""; for (var i = 0; i < allFilesAndFolders.length; i++) { $scope.listOfFiles = $scope.listOfFiles + allFilesAndFolders[i] + "\n"; } }; $scope.startCompression = function () { var basepathh; if (domainName === "") { basepathh = $scope.currentRPath; } else { basepathh = $scope.currentPath; } $scope.compressionLoading = false; var data = { home: homePathBack, basePath: basepathh, listOfFiles: allFilesAndFolders, compressedFileName: $scope.compressedFileName, compressionType: $scope.compressionType, method: 'compress', domainRandomSeed: domainRandomSeed, domainName: domainName }; var config = { headers: { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); function ListInitialDatas(response) { $scope.compressionLoading = true; $('#showCompression').modal('hide'); if (response.data.status === 1) { var notification = alertify.notify('Successfully Compressed!', 'success', 5, function () { }); $scope.fetchForTableSecondary(null, 'refresh'); } else { var notification = alertify.notify(response.data.error_message, 'error', 5, function () { }); } } function cantLoadInitialDatas(response) { } }; // extraction $scope.extractionLoading = true; $scope.showExtractionModal = function () { $scope.extractionLocation = $scope.currentPath; $('#showExtraction').modal('show'); $scope.fileToBeExtracted = allFilesAndFolders[0]; }; $scope.startExtraction = function () { var pathbase; if (domainName === "") { pathbase = $scope.currentRPath; } else { pathbase = $scope.currentPath; } $scope.extractionLoading = false; var completeFileToExtract = pathbase + "/" + allFilesAndFolders[0]; var extractionType = ""; if (findFileExtension(completeFileToExtract) == "gz") { extractionType = "tar.gz"; } else { extractionType = "zip"; } var data = { home: homePathBack, basePath: pathbase, fileToExtract: completeFileToExtract, extractionType: extractionType, extractionLocation: $scope.extractionLocation, method: 'extract', domainRandomSeed: domainRandomSeed, domainName: domainName }; var config = { headers: { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); function ListInitialDatas(response) { $scope.extractionLoading = true; $('#showExtraction').modal('hide'); if (response.data.status === 1) { var notification = alertify.notify('Successfully Extracted!', 'success', 5, function () { console.log('dismissed'); }); $scope.fetchForTableSecondary(null, 'refresh'); } else { var notification = alertify.notify(response.data.error_message, 'error', 10, function () { console.log('dismissed'); }); } } function cantLoadInitialDatas(response) { } }; /// move $scope.moveLoading = true; $scope.showMoveModal = function () { $('#showMove').modal('show'); $scope.pathToMoveTo = $scope.currentPath; $scope.listOfFiles = ""; for (var i = 0; i < allFilesAndFolders.length; i++) { $scope.listOfFiles = $scope.listOfFiles + allFilesAndFolders[i] + "\n"; } } $scope.startMoving = function () { var basepth; if (domainName == "") { basepth = $scope.currentRPath; } else { basepth = $scope.currentPath; } $scope.moveLoading = false; var data = { home: homePathBack, basePath: basepth, newPath: $scope.pathToMoveTo, fileAndFolders: allFilesAndFolders, method: 'move', domainRandomSeed: domainRandomSeed, domainName: domainName }; var config = { headers: { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); function ListInitialDatas(response) { $scope.moveLoading = true; $('#showMove').modal('hide'); if (response.data.status === 1) { var notification = alertify.notify('Successfully Moved!', 'success', 5, function () { }); $scope.fetchForTableSecondary(null, 'refresh'); } else { var notification = alertify.notify(response.data.error_message, 'error', 5, function () { }); } } function cantLoadInitialDatas(response) { } }; /// copy $scope.copyLoading = true; $scope.showCopyModal = function () { $('#showCopy').modal('show'); $scope.pathToCopyTo = $scope.currentPath; $scope.listOfFiles = ""; for (var i = 0; i < allFilesAndFolders.length; i++) { $scope.listOfFiles = $scope.listOfFiles + allFilesAndFolders[i] + "\n"; } }; $scope.startCopying = function () { var basepath; if (domainName == "") { basepath = $scope.currentRPath; } else { basepath = $scope.currentPath; } $scope.copyLoading = false; var data = { home: homePathBack, basePath: basepath, newPath: $scope.pathToCopyTo, fileAndFolders: allFilesAndFolders, method: 'copy', domainRandomSeed: domainRandomSeed, domainName: domainName }; var config = { headers: { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); function ListInitialDatas(response) { $scope.copyLoading = true; $('#showCopy').modal('hide'); if (response.data.status === 1) { var notification = alertify.notify('Successfully Copied!', 'success', 5, function () { }); $scope.fetchForTableSecondary(null, 'refresh'); } else { var notification = alertify.notify(response.data.error_message, 'error', 5, function () { }); } } function cantLoadInitialDatas(response) { } }; // right click settings var rightClickNode = document.getElementById("rightClick"); rightClickNode.style.display = "none"; $scope.rightClickCallBack = function (event, trNode) { var rightClickNode = document.getElementById("rightClick") rightClickNode.style.display = "block"; event.preventDefault(); $scope.unSelectAll(); $('#rightClick').css({ 'top': event.pageY, 'left': event.pageX }); // If we want to enable download for this node var downloadOnRight = document.getElementById("downloadOnRight"); if (trNode.lastChild.innerHTML === "File") { downloadOnRight.style.display = "Block"; } else { downloadOnRight.style.display = "none"; } $scope.addFileOrFolderToListForRightClick(trNode); }; $scope.addFileOrFolderToListForRightClick = function (nodeName) { var check = 1; var getFileName = nodeName.getElementsByTagName('td')[0].innerHTML; if (nodeName.style.backgroundColor === "#ccdbe8") { var tempArray = []; nodeName.style.background = "None"; for (var j = 0; j < allFilesAndFolders.length; j++) { if (allFilesAndFolders[j] != getFileName) { tempArray.push(allFilesAndFolders[j]); } } allFilesAndFolders = tempArray; // activating deactivating functions $scope.buttonActivator(); return; } nodeName.style.background = "#ccdbe8"; for (var j = 0; j < allFilesAndFolders.length; j++) { if (allFilesAndFolders[j] === getFileName) { check = 0; break; } } if (check === 1) { allFilesAndFolders.push(getFileName); } // activating deactivating functions $scope.buttonActivator(); }; // rename $scope.renameLoading = true; $scope.showRenameModal = function () { $('#showRename').modal('show'); $scope.fileToRename = allFilesAndFolders[0]; $scope.newFileName = ""; }; $scope.renameEnter = function ($event) { var keyCode = $event.which || $event.keyCode; if (keyCode === 13) { $scope.htmlEditorLoading = false; $scope.renameFile(); } }; $scope.renameFile = function () { var bpath; if (domainName === "") { bpath = $scope.currentRPath; } else { bpath = $scope.currentPath; } $scope.renameLoading = false; var data = { basePath: bpath, existingName: $scope.fileToRename, newFileName: $scope.newFileName, method: 'rename', domainRandomSeed: domainRandomSeed, domainName: domainName }; var config = { headers: { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); function ListInitialDatas(response) { $scope.moveLoading = true; $('#showRename').modal('hide'); $scope.renameLoading = true; if (response.data.status === 1) { var notification = alertify.notify('Successfully Renamed!', 'success', 5, function () { }); $scope.fetchForTableSecondary(null, 'refresh'); } else { var notification = alertify.notify(response.data.error_message, 'error', 5, function () { }); } } function cantLoadInitialDatas(response) { } }; // Fix permissions $scope.fixPermissions = function () { url = "/filemanager/changePermissions"; var data = { domainName: domainName, domainRandomSeed: domainRandomSeed, domainName: domainName }; var config = { headers: { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); function ListInitialDatas(response) { if (response.data.permissionsChanged === 1) { var notification = alertify.notify('Permissions successfully fixed!', 'success', 5, function () { console.log('dismissed'); }); $scope.fetchForTableSecondary(null, 'refresh'); } else { var notification = alertify.notify(response.data.error_message, 'error', 5, function () { console.log('dismissed'); }); $scope.fetchForTableSecondary(null, 'refresh'); } } function cantLoadInitialDatas(response) { } }; // Download files $scope.downloadFile = function () { url = "/filemanager/downloadFile"; var downloadURL = $scope.currentPath + "/" + allFilesAndFolders[0]; window.location.href = url + '?domainName=' + domainName + '&fileToDownload=' + downloadURL; }; $scope.RootDownloadFile = function () { url = "/filemanager/RootDownloadFile"; var downloadURL = $scope.currentPath + "/" + allFilesAndFolders[0]; window.location.href = url + '?fileToDownload=' + downloadURL; }; // Change permissions $scope.changePermissionsLoading = true; $scope.userPermissions = 0; $scope.groupPermissions = 0; $scope.wordlPermissions = 0; $scope.showPermissionsModal = function () { $('#showPermissions').modal('show'); $scope.permissionsPath = allFilesAndFolders[0]; }; $scope.updateReadPermissions = function (value) { switch (value) { case 'userRead': if ($scope.userRead === true) { $scope.userPermissions = $scope.userPermissions + 4; } else { if ($scope.userRead !== undefined) { $scope.userPermissions = $scope.userPermissions - 4; } } break; case 'groupRead': if ($scope.groupRead === true) { $scope.groupPermissions = $scope.groupPermissions + 4; } else { if ($scope.groupRead !== undefined) { $scope.groupPermissions = $scope.groupPermissions - 4; } } break; case 'worldRead': if ($scope.worldRead === true) { $scope.wordlPermissions = $scope.wordlPermissions + 4; } else { if ($scope.worldRead !== undefined) { $scope.wordlPermissions = $scope.wordlPermissions - 4; } } break; } }; $scope.updateWritePermissions = function (value) { switch (value) { case 'userWrite': if ($scope.userWrite === true) { $scope.userPermissions = $scope.userPermissions + 2; } else { if ($scope.userWrite !== undefined) { $scope.userPermissions = $scope.userPermissions - 2; } } break; case 'groupWrite': if ($scope.groupWrite === true) { $scope.groupPermissions = $scope.groupPermissions + 2; } else { if ($scope.groupWrite !== undefined) { $scope.groupPermissions = $scope.groupPermissions - 2; } } break; case 'worldWrite': if ($scope.worldWrite === true) { $scope.wordlPermissions = $scope.wordlPermissions + 2; } else { if ($scope.worldWrite !== undefined) { $scope.wordlPermissions = $scope.wordlPermissions - 2; } } break; } }; $scope.updateExecutePermissions = function (value) { switch (value) { case 'userExecute': if ($scope.userExecute === true) { $scope.userPermissions = $scope.userPermissions + 1; } else { if ($scope.userExecute !== undefined) { $scope.userPermissions = $scope.userPermissions - 1; } } break; case 'groupExecute': if ($scope.groupExecute === true) { $scope.groupPermissions = $scope.groupPermissions + 1; } else { if ($scope.groupExecute !== undefined) { $scope.groupPermissions = $scope.groupPermissions - 1; } } break; case 'worldExecute': if ($scope.worldExecute === true) { $scope.wordlPermissions = $scope.wordlPermissions + 1; } else { if ($scope.worldExecute !== undefined) { $scope.wordlPermissions = $scope.wordlPermissions - 1; } } break; } }; $scope.changePermissionsRecursively = function () { $scope.changePermissions(1); }; $scope.changePermissions = function (recursive) { $scope.changePermissionsLoading = false; var newPermissions = String($scope.userPermissions) + String($scope.groupPermissions) + String($scope.wordlPermissions); var data = { basePath: $scope.currentPath, permissionsPath: $scope.permissionsPath, method: 'changePermissions', domainRandomSeed: domainRandomSeed, recursive: recursive, newPermissions: newPermissions, domainName: domainName }; var config = { headers: { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); function ListInitialDatas(response) { $scope.changePermissionsLoading = true; $('#showPermissions').modal('hide'); if (response.data.status === 1) { var notification = alertify.notify('Permissions Successfully Changed!', 'success', 5, function () { }); $scope.fetchForTableSecondary(null, 'refresh'); } else { var notification = alertify.notify(response.data.error_message, 'error', 5, function () { }); } } function cantLoadInitialDatas(response) { } }; /// // $scope.cyberPanelLoading = true; $scope.showRestoreModal = function () { $scope.createSuccess = true; $scope.errorMessageFolder = true; $scope.newFolderName = ""; $('#showRestore').modal('show'); }; $scope.restoreFinal = function () { $scope.cyberPanelLoading = false; var data = { path: $scope.currentPath, method: "restore", fileAndFolders: allFilesAndFolders, domainRandomSeed: domainRandomSeed, domainName: domainName, }; var config = { headers: { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); function ListInitialDatas(response) { $scope.cyberPanelLoading = true; if (response.data.status === 1) { $('#showRestore').modal('hide'); var notification = alertify.notify('Successfully restored to its original location!', 'success', 5, function () { }); $scope.fetchForTableSecondary(null, 'refresh'); } else { var notification = alertify.notify('Files/Folders can not be restored', 'error', 5, function () { console.log('dismissed'); }); } } function cantLoadInitialDatas(response) { } }; });
| ver. 1.4 |
Github
|
.
| PHP 8.2.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings