Commit 8bf265b9 authored by Ayush's avatar Ayush

File delete and management

parent 327846c1
...@@ -4,14 +4,15 @@ include_once("database.php"); ...@@ -4,14 +4,15 @@ include_once("database.php");
$postData = file_get_contents("php://input"); $postData = file_get_contents("php://input");
if (isset($postData) && !empty($postData)) { if (isset($postData) && !empty($postData)) {
// echo $postData;
$request = json_decode($postData); // exit(0);
$isFile = trim($request->isFile); $request = json_decode($postData, true);
if(isFile){ $isFile = trim($request['isFile']);
if($isFile){
$username = trim($request['file']['username']); $username = trim($request['file']['username']);
$filename = trim($request['file']['filename']); $filename = trim($request['file']['filename']);
$lang = trim($request['file']['language']); $lang = trim($request['file']['language']);
$path = '../users/' . $username . '/' . trim($request->path) . '/' . $filename . $lang; $path = '../users/' . $username . '/' . trim($request['file']['path']) . '/' . $filename . $lang;
if (unlink($path)) { if (unlink($path)) {
$msg = "file successfully deleted"; $msg = "file successfully deleted";
...@@ -23,16 +24,18 @@ if (isset($postData) && !empty($postData)) { ...@@ -23,16 +24,18 @@ if (isset($postData) && !empty($postData)) {
} }
exit; exit;
} }
$username = trim($request->username); $username = trim($request['username']);
$dirname = trim($request['file']['name']); $dirname = trim($request['file']['name']);
$path = '../users/' . $username . '/' . trim($request['file']['path']) . '/' . $dirname; $path = '../users/' . $username . '/' . trim($request['file']['path']) . '/' . $dirname;
if (rmdir($path)) { $ret_stat = 0;
system('rm -r ' . $path, $ret_stat);
if ($ret_stat === 0) {
$msg = "directory successfully deleted"; $msg = "directory successfully deleted";
echo json_encode($msg); echo json_encode($msg);
} }
else { else {
http_response_code(404); http_response_code(404);
} }
} }
?> ?>
...@@ -11,6 +11,6 @@ ...@@ -11,6 +11,6 @@
</div> </div>
</div> </div>
<div class="subs" *ngIf="!isFile" [style.display]="isExpanded ? 'block' : 'none'"> <div class="subs" *ngIf="!isFile" [style.display]="isExpanded ? 'block' : 'none'">
<app-file-dir-card *ngFor="let dir of directory.dirs" [isFile]="false" [directory]="dir" [level]="level + 1"></app-file-dir-card> <app-file-dir-card *ngFor="let dir of directory.dirs" [isFile]="false" [directory]="dir" [level]="level + 1" [trace]="addToTraceDir(dir)" (deleteFile)="deleteFileExec($event)" (deleteDir)="deleteDirExec($event)"></app-file-dir-card>
<app-file-dir-card *ngFor="let file of directory.files" [isFile]="true" [file]="file" [level]="level + 1"></app-file-dir-card> <app-file-dir-card *ngFor="let file of directory.files" [isFile]="true" [file]="file" [level]="level + 1" [trace]="addToTraceFile(file)" (deleteFile)="deleteFileExec($event)" (deleteDir)="deleteDirExec($event)"></app-file-dir-card>
</div> </div>
import {Component, Input, OnInit} from '@angular/core'; import {Component, Input, OnInit, Output, EventEmitter} from '@angular/core';
import {File} from '../file'; import {File} from '../file';
import {Directory} from '../directory'; import {Directory} from '../directory';
import {FileService} from '../file.service';
import {ApiService} from '../api.service';
@Component({ @Component({
selector: 'app-file-dir-card', selector: 'app-file-dir-card',
...@@ -17,12 +19,55 @@ export class FileDirCardComponent implements OnInit { ...@@ -17,12 +19,55 @@ export class FileDirCardComponent implements OnInit {
deleting: boolean; deleting: boolean;
isExpanded = false; isExpanded = false;
constructor() { } @Output() deleteFile: EventEmitter<any> = new EventEmitter();
@Output() deleteDir: EventEmitter<any> = new EventEmitter();
constructor(private fileService: FileService, private apiService: ApiService) { }
ngOnInit(): void { ngOnInit(): void {
} }
onDelete(): void { onDelete(): void {
// this.deleting = true;
this.fileService.delete(this.isFile ? this.file : this.directory, this.isFile,
JSON.parse(this.apiService.getToken()).username).subscribe(
data => {
console.log(data);
if (this.isFile) {
this.deleteFile.emit(this.file);
} else {
this.deleteDir.emit(this.directory);
}
this.deleting = false;
}, error => {
console.log(error);
}
);
}
addToTraceDir(dir: Directory): number[] {
const arr = JSON.parse(JSON.stringify(this.trace));
arr.push(this.directory.dirs.indexOf(dir));
return arr;
}
addToTraceFile(file: File): number[] {
const arr = JSON.parse(JSON.stringify(this.trace));
arr.push(this.directory.files.indexOf(file));
return arr;
}
deleteFileExec($event: any): void {
const index = this.directory.files.indexOf($event, 0);
if (index > -1) {
this.directory.files.splice(index, 1);
}
}
deleteDirExec($event: any): void {
const index = this.directory.dirs.indexOf($event, 0);
if (index > -1) {
this.directory.dirs.splice(index, 1);
}
} }
} }
...@@ -36,7 +36,7 @@ export class FileService { ...@@ -36,7 +36,7 @@ export class FileService {
return of(ret); return of(ret);
} }
upload(file): Observable<any> { upload(file: File): Observable<any> {
return this.http.post(this.saveUrl, file); return this.http.post(this.saveUrl, file);
} }
...@@ -46,8 +46,8 @@ export class FileService { ...@@ -46,8 +46,8 @@ export class FileService {
return this.http.post(this.uploadUrl, formData); return this.http.post(this.uploadUrl, formData);
} }
delete(file): Observable<any> { delete(file: any, isFile: boolean, username: string): Observable<any> {
return this.http.post(this.deleteUrl, file); return this.http.post(this.deleteUrl, {file, isFile, username});
} }
getFileList(username: string): Observable<any> { getFileList(username: string): Observable<any> {
......
...@@ -7,8 +7,8 @@ ...@@ -7,8 +7,8 @@
{{mainDir.dirs.length}} directories, {{mainDir.files.length}} files: {{mainDir.dirs.length}} directories, {{mainDir.files.length}} files:
</div> </div>
<app-file-dir-card *ngFor="let dir of mainDir.dirs" [isFile]="false" [directory]="dir" [level]="0" [trace]="[mainDir.dirs.indexOf(dir)]"></app-file-dir-card> <app-file-dir-card *ngFor="let dir of mainDir.dirs" [isFile]="false" [directory]="dir" [level]="0" [trace]="[mainDir.dirs.indexOf(dir)]" (deleteDir)="deleteDirExec($event)" (deleteFile)="deleteFileExec($event)"></app-file-dir-card>
<app-file-dir-card *ngFor="let file of mainDir.files" [isFile]="true" [file]="file" [level]="0" [trace]="[mainDir.files.indexOf(file)]"></app-file-dir-card> <app-file-dir-card *ngFor="let file of mainDir.files" [isFile]="true" [file]="file" [level]="0" [trace]="[mainDir.files.indexOf(file)]" (deleteDir)="deleteDirExec($event)" (deleteFile)="deleteFileExec($event)"></app-file-dir-card>
<div [class.open]="uploadPopupActive" id="file-upload-cover"></div> <div [class.open]="uploadPopupActive" id="file-upload-cover"></div>
......
...@@ -68,21 +68,6 @@ export class FileComponent implements OnInit { ...@@ -68,21 +68,6 @@ export class FileComponent implements OnInit {
); );
} }
// onDelete(file): void {
// this.deleting = true;
// this.fileService.delete(file).subscribe(
// () => {
// this.deleting = false;
// this.files.forEach((element,index)=>{
// if(element==file){
// this.files.splice(index,1);
// }
// });
//
// }
// );
// }
toDirectory(name: string, obj: any, path: string): Directory { toDirectory(name: string, obj: any, path: string): Directory {
const ret: Directory = { const ret: Directory = {
name, name,
...@@ -98,7 +83,7 @@ export class FileComponent implements OnInit { ...@@ -98,7 +83,7 @@ export class FileComponent implements OnInit {
filename: file.replace(/\.[^/.]+$/, ''), filename: file.replace(/\.[^/.]+$/, ''),
language: '.' + sp[sp.length - 1], language: '.' + sp[sp.length - 1],
text: '', text: '',
path: path + name + '/' path: path + '/' + name
}; };
ret.files.push(f); ret.files.push(f);
} }
...@@ -111,4 +96,18 @@ export class FileComponent implements OnInit { ...@@ -111,4 +96,18 @@ export class FileComponent implements OnInit {
return ret; return ret;
} }
deleteFileExec($event: any): void {
const index = this.mainDir.files.indexOf($event, 0);
if (index > -1) {
this.mainDir.files.splice(index, 1);
}
}
deleteDirExec($event: any): void {
const index = this.mainDir.dirs.indexOf($event, 0);
if (index > -1) {
this.mainDir.dirs.splice(index, 1);
}
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment