From 246874ed316564a70b8687eed6a209f6c1df68ea Mon Sep 17 00:00:00 2001 From: Milos Stojanovic Date: Thu, 20 Feb 2020 15:04:22 +0100 Subject: [PATCH] File edit --- backend/Controllers/FileController.php | 21 ++++++++++++ backend/Controllers/routes.php | 11 +++++++ frontend/api/api.js | 10 ++++++ frontend/translations/bulgarian.js | 1 + frontend/translations/chinese.js | 1 + frontend/translations/dutch.js | 1 + frontend/translations/french.js | 1 + frontend/translations/german.js | 1 + frontend/translations/indonesian.js | 1 + frontend/translations/lithuanian.js | 1 + frontend/translations/portuguese.js | 1 + frontend/translations/serbian.js | 1 + frontend/translations/spanish.js | 1 + frontend/translations/turkish.js | 1 + frontend/views/Browser.vue | 4 +-- frontend/views/partials/Preview.vue | 17 ++++++++++ tests/backend/Feature/FilesTest.php | 45 ++++++++++++++++++++++++++ 17 files changed, 117 insertions(+), 2 deletions(-) diff --git a/backend/Controllers/FileController.php b/backend/Controllers/FileController.php index 0910a59..d48f380 100644 --- a/backend/Controllers/FileController.php +++ b/backend/Controllers/FileController.php @@ -170,4 +170,25 @@ class FileController return $response->json('Done'); } + + public function saveContent(Request $request, Response $response) + { + $path = $request->input('dir', $this->session->get(self::SESSION_CWD, $this->separator)); + + $name = $request->input('name'); + $content = $request->input('content'); + + $stream = tmpfile(); + fwrite($stream, $content); + rewind($stream); + + $res = $this->storage->deleteFile($path.$this->separator.$name); + $res = $this->storage->store($path, $name, $stream); + + if (is_resource($stream)) { + fclose($stream); + } + + return $response->json('Done'); + } } diff --git a/backend/Controllers/routes.php b/backend/Controllers/routes.php index 3129b06..b11298d 100644 --- a/backend/Controllers/routes.php +++ b/backend/Controllers/routes.php @@ -256,4 +256,15 @@ return [ 'permissions' => [ ], ], + [ + 'route' => [ + 'POST', '/savecontent', '\Filegator\Controllers\FileController@saveContent', + ], + 'roles' => [ + 'guest', 'user', 'admin', + ], + 'permissions' => [ + 'read', 'write', + ], + ], ]; diff --git a/frontend/api/api.js b/frontend/api/api.js index 00e7132..a0b85cd 100644 --- a/frontend/api/api.js +++ b/frontend/api/api.js @@ -198,6 +198,16 @@ const api = { .catch(error => reject(error)) }) }, + saveContent (params) { + return new Promise((resolve, reject) => { + axios.post('savecontent', { + name: params.name, + content: params.content, + }) + .then(res => resolve(res.data)) + .catch(error => reject(error)) + }) + }, } export default api diff --git a/frontend/translations/bulgarian.js b/frontend/translations/bulgarian.js index eccf0c4..e9c0d44 100644 --- a/frontend/translations/bulgarian.js +++ b/frontend/translations/bulgarian.js @@ -70,6 +70,7 @@ const data = { 'Updated': 'Обновено', 'Deleted': 'изтрити', 'Your file is ready': 'Вашия файл е готов', + 'View': 'View', } export default data diff --git a/frontend/translations/chinese.js b/frontend/translations/chinese.js index b5b6238..7e2dee5 100644 --- a/frontend/translations/chinese.js +++ b/frontend/translations/chinese.js @@ -70,6 +70,7 @@ const data = { 'Updated': '已上传', 'Deleted': '已删除', 'Your file is ready': '您的文件已备妥', + 'View': 'View', } export default data diff --git a/frontend/translations/dutch.js b/frontend/translations/dutch.js index 0052413..fba76d6 100644 --- a/frontend/translations/dutch.js +++ b/frontend/translations/dutch.js @@ -70,6 +70,7 @@ const data = { 'Updated': 'Aangepast', 'Deleted': 'Verwijderd', 'Your file is ready': 'Uw bestand is verwerkt', + 'View': 'View', } export default data diff --git a/frontend/translations/french.js b/frontend/translations/french.js index a2ce524..423cc57 100644 --- a/frontend/translations/french.js +++ b/frontend/translations/french.js @@ -70,6 +70,7 @@ const data = { 'Updated': 'Mis à jour', 'Deleted': 'Supprimé', 'Your file is ready': 'Votre fichier est prêt', + 'View': 'View', } export default data diff --git a/frontend/translations/german.js b/frontend/translations/german.js index c862360..211228e 100644 --- a/frontend/translations/german.js +++ b/frontend/translations/german.js @@ -70,6 +70,7 @@ const data = { 'Updated': 'Aktualisiert', 'Deleted': 'Gelöscht', 'Your file is ready': 'Deine Datei ist fertig', + 'View': 'View', } export default data diff --git a/frontend/translations/indonesian.js b/frontend/translations/indonesian.js index d6d8c8c..18ce81c 100644 --- a/frontend/translations/indonesian.js +++ b/frontend/translations/indonesian.js @@ -70,6 +70,7 @@ const data = { 'Updated': 'Diperbarui', 'Deleted': 'Dihapus', 'Your file is ready': 'File Anda sudah siap', + 'View': 'View', } export default data diff --git a/frontend/translations/lithuanian.js b/frontend/translations/lithuanian.js index 179ebaa..48d736a 100644 --- a/frontend/translations/lithuanian.js +++ b/frontend/translations/lithuanian.js @@ -70,6 +70,7 @@ const data = { 'Updated': 'Atnaujintas', 'Deleted': 'Ištrintas', 'Your file is ready': 'Jūsų failas paruoštas', + 'View': 'View', } export default data diff --git a/frontend/translations/portuguese.js b/frontend/translations/portuguese.js index 0c15f3a..15f99a0 100644 --- a/frontend/translations/portuguese.js +++ b/frontend/translations/portuguese.js @@ -70,6 +70,7 @@ const data = { 'Updated': 'Atualizado', 'Deleted': 'Excluido', 'Your file is ready': 'Seu arquivo está pronto', + 'View': 'View', } export default data diff --git a/frontend/translations/serbian.js b/frontend/translations/serbian.js index 5659c0d..c15e3e3 100644 --- a/frontend/translations/serbian.js +++ b/frontend/translations/serbian.js @@ -70,6 +70,7 @@ const data = { 'Updated': 'Izmenjeno', 'Deleted': 'Obrisano', 'Your file is ready': 'Vaš fajl je spreman', + 'View': 'View', } export default data diff --git a/frontend/translations/spanish.js b/frontend/translations/spanish.js index 31d8124..6214286 100644 --- a/frontend/translations/spanish.js +++ b/frontend/translations/spanish.js @@ -70,6 +70,7 @@ const data = { 'Updated': 'Actualizado', 'Deleted': 'Eliminado', 'Your file is ready': 'Su fichero está listo', + 'View': 'View', } export default data diff --git a/frontend/translations/turkish.js b/frontend/translations/turkish.js index 8516503..edc3ce6 100644 --- a/frontend/translations/turkish.js +++ b/frontend/translations/turkish.js @@ -70,6 +70,7 @@ const data = { 'Updated': 'Güncellendi', 'Deleted': 'Silindi', 'Your file is ready': 'Dosyanız Hazır', + 'View': 'View', } export default data diff --git a/frontend/views/Browser.vue b/frontend/views/Browser.vue index 4ea7465..0abd3cf 100644 --- a/frontend/views/Browser.vue +++ b/frontend/views/Browser.vue @@ -113,7 +113,7 @@ {{ lang('Download') }} - + {{ lang('View') }} @@ -252,7 +252,7 @@ export default { itemClick(item) { if (item.type == 'dir' || item.type == 'back') { this.goTo(item.path) - } else { + } else if (this.can(['read', 'download'])) { this.preview(item) } }, diff --git a/frontend/views/partials/Preview.vue b/frontend/views/partials/Preview.vue index af21841..7c7bd8f 100644 --- a/frontend/views/partials/Preview.vue +++ b/frontend/views/partials/Preview.vue @@ -13,6 +13,9 @@