mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-05 18:23:48 +00:00
remote upload implementation into file request
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"/js/main.js": "/js/main.js",
|
||||
"/chunks/request.js": "/chunks/request.js?id=a255aafa7261e2ac",
|
||||
"/chunks/request-upload.js": "/chunks/request-upload.js?id=c456f33bfbfd4038",
|
||||
"/chunks/request.js": "/chunks/request.js?id=b493de3b8cf4a8f2",
|
||||
"/chunks/request-upload.js": "/chunks/request-upload.js?id=efb89edeaed37404",
|
||||
"/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=19a0784e59d768ec",
|
||||
"/chunks/status-check.js": "/chunks/status-check.js?id=f40938d1fb43820f",
|
||||
"/chunks/purchase-code.js": "/chunks/purchase-code.js?id=ba76b9a8adbfdc0b",
|
||||
@@ -9,13 +9,13 @@
|
||||
"/chunks/environment.js": "/chunks/environment.js?id=784c2442268b36dc",
|
||||
"/chunks/app-setup.js": "/chunks/app-setup.js?id=cbe7bfed06400736",
|
||||
"/chunks/admin-account.js": "/chunks/admin-account.js?id=78d257775f5fc485",
|
||||
"/chunks/shared.js": "/chunks/shared.js?id=e065eb78d6cc3b7d",
|
||||
"/chunks/shared.js": "/chunks/shared.js?id=54733651dfb0af9f",
|
||||
"/chunks/shared/browser.js": "/chunks/shared/browser.js?id=d2fff07a2bc7af3f",
|
||||
"/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=a6063bed9be75a09",
|
||||
"/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=b5519d193bce2339",
|
||||
"/chunks/not-found.js": "/chunks/not-found.js?id=d31bd699138cf828",
|
||||
"/chunks/temporary-unavailable.js": "/chunks/temporary-unavailable.js?id=26798085f527d955",
|
||||
"/chunks/admin.js": "/chunks/admin.js?id=361574392a095c32",
|
||||
"/chunks/admin.js": "/chunks/admin.js?id=780ebe14261335f6",
|
||||
"/chunks/dashboard.js": "/chunks/dashboard.js?id=5ab55a12214433c8",
|
||||
"/chunks/invoices.js": "/chunks/invoices.js?id=799928609f57ca10",
|
||||
"/chunks/subscriptions.js": "/chunks/subscriptions.js?id=a0c4f59d0ec4aee0",
|
||||
@@ -57,12 +57,12 @@
|
||||
"/chunks/sign-up.js": "/chunks/sign-up.js?id=80da89f329c514fc",
|
||||
"/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=27cda9364b6593d8",
|
||||
"/chunks/create-new-password.js": "/chunks/create-new-password.js?id=2f0401ee2fc148c4",
|
||||
"/chunks/settings.js": "/chunks/settings.js?id=a0eae95a131d4fb1",
|
||||
"/chunks/settings.js": "/chunks/settings.js?id=c8a4915f96c762d4",
|
||||
"/chunks/profile.js": "/chunks/profile.js?id=3e24bb5e1f52d4bb",
|
||||
"/chunks/settings-password.js": "/chunks/settings-password.js?id=d00bf503d8126dc4",
|
||||
"/chunks/settings-storage.js": "/chunks/settings-storage.js?id=092e324aad54656b",
|
||||
"/chunks/billing.js": "/chunks/billing.js?id=115c25478cee576d",
|
||||
"/chunks/platform.js": "/chunks/platform.js?id=735f8aa44b87d0c4",
|
||||
"/chunks/platform.js": "/chunks/platform.js?id=907e530c6cc415bc",
|
||||
"/chunks/files.js": "/chunks/files.js?id=aaea9173f7697d6e",
|
||||
"/chunks/recent-uploads.js": "/chunks/recent-uploads.js?id=4bab41df721a6fc6",
|
||||
"/chunks/my-shared-items.js": "/chunks/my-shared-items.js?id=c62bc3eb07de20df",
|
||||
|
||||
@@ -24,17 +24,22 @@
|
||||
:action="$t('create_something')"
|
||||
/>
|
||||
<PopoverItem name="desktop-create" side="left">
|
||||
<OptionGroup :title="$t('upload')">
|
||||
<OptionGroup :title="$t('frequently_used')">
|
||||
<OptionUpload :title="$t('upload_files')" type="file" />
|
||||
<OptionUpload :title="$t('upload_folder')" type="folder" />
|
||||
</OptionGroup>
|
||||
<OptionGroup :title="$t('create')">
|
||||
<Option
|
||||
@click.native="$createFolder"
|
||||
:title="$t('create_folder')"
|
||||
icon="folder-plus"
|
||||
/>
|
||||
</OptionGroup>
|
||||
<OptionGroup :title="$t('others')">
|
||||
<OptionUpload :title="$t('upload_folder')" type="folder" />
|
||||
<Option
|
||||
@click.stop.native="$openRemoteUploadPopup"
|
||||
:title="$t('remote_upload')"
|
||||
icon="remote-upload"
|
||||
/>
|
||||
</OptionGroup>
|
||||
</PopoverItem>
|
||||
</PopoverWrapper>
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<!--Menu icon-->
|
||||
<div
|
||||
v-if="!isVisibleNavigationBars"
|
||||
@click="toggleNavigationBars"
|
||||
@click.stop="toggleNavigationBars"
|
||||
class="-mt-0.5 mr-2 hidden cursor-pointer p-2 lg:block"
|
||||
>
|
||||
<menu-icon size="17" />
|
||||
|
||||
@@ -75,9 +75,11 @@ export default {
|
||||
|
||||
this.loading = true
|
||||
|
||||
let route = this.$store.getters.sharedDetail
|
||||
? `/api/editor/upload/remote/${this.$router.currentRoute.params.token}`
|
||||
: '/api/upload/remote'
|
||||
// Get route
|
||||
let route = {
|
||||
RequestUpload: `/api/upload-request/${this.$router.currentRoute.params.token}/upload/remote`,
|
||||
Public: `/api/editor/upload/remote/${this.$router.currentRoute.params.token}`,
|
||||
}[this.$router.currentRoute.name] || '/api/upload/remote'
|
||||
|
||||
let parentId = this.$store.getters.currentFolder
|
||||
? this.$store.getters.currentFolder.data.id
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
<CreateUploadRequestPopup />
|
||||
<CreateTeamFolderPopup />
|
||||
<NotificationsPopup />
|
||||
<RemoteUploadPopup />
|
||||
|
||||
<!--Mobile Navigation-->
|
||||
<MobileNavigation />
|
||||
@@ -86,6 +87,7 @@ import { mapGetters } from 'vuex'
|
||||
import CreateUploadRequestPopup from "../components/UploadRequest/CreateUploadRequestPopup";
|
||||
import CreateTeamFolderPopup from "../components/Teams/CreateTeamFolderPopup";
|
||||
import NotificationsPopup from "../components/Notifications/NotificationsPopup";
|
||||
import RemoteUploadPopup from "../components/RemoteUpload/RemoteUploadPopup";
|
||||
|
||||
export default {
|
||||
name: 'Admin',
|
||||
@@ -190,6 +192,7 @@ export default {
|
||||
},
|
||||
},
|
||||
components: {
|
||||
RemoteUploadPopup,
|
||||
NotificationsPopup,
|
||||
CreateTeamFolderPopup,
|
||||
CreateUploadRequestPopup,
|
||||
|
||||
@@ -9,11 +9,8 @@
|
||||
</MobileContextMenu>
|
||||
|
||||
<MobileCreateMenu>
|
||||
<OptionGroup :title="$t('upload')">
|
||||
<OptionGroup :title="$t('frequently_used')">
|
||||
<OptionUpload :title="$t('upload_files')" type="file" :is-hover-disabled="true" />
|
||||
<OptionUpload :title="$t('upload_folder')" type="folder" />
|
||||
</OptionGroup>
|
||||
<OptionGroup :title="$t('create')">
|
||||
<Option
|
||||
@click.stop.native="createFolder"
|
||||
:title="$t('create_folder')"
|
||||
@@ -21,6 +18,14 @@
|
||||
:is-hover-disabled="true"
|
||||
/>
|
||||
</OptionGroup>
|
||||
<OptionGroup :title="$t('others')">
|
||||
<OptionUpload :title="$t('upload_folder')" type="folder" />
|
||||
<Option
|
||||
@click.stop.native="$openRemoteUploadPopup"
|
||||
:title="$t('remote_upload')"
|
||||
icon="remote-upload"
|
||||
/>
|
||||
</OptionGroup>
|
||||
</MobileCreateMenu>
|
||||
|
||||
<MobileMultiSelectToolbar>
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
<CreateUploadRequestPopup />
|
||||
<CreateTeamFolderPopup />
|
||||
<NotificationsPopup />
|
||||
<RemoteUploadPopup />
|
||||
|
||||
<ConfirmPopup />
|
||||
|
||||
@@ -94,10 +95,12 @@ import CreateUploadRequestPopup from "../components/UploadRequest/CreateUploadRe
|
||||
import CreateTeamFolderPopup from "../components/Teams/CreateTeamFolderPopup";
|
||||
import ChangeSubscriptionPopup from "../components/Subscription/Popups/ChangeSubscriptionPopup";
|
||||
import NotificationsPopup from "../components/Notifications/NotificationsPopup";
|
||||
import RemoteUploadPopup from "../components/RemoteUpload/RemoteUploadPopup";
|
||||
|
||||
export default {
|
||||
name: 'Settings',
|
||||
components: {
|
||||
RemoteUploadPopup,
|
||||
NotificationsPopup,
|
||||
ChangeSubscriptionPopup,
|
||||
CreateTeamFolderPopup,
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
<!--Popups-->
|
||||
<CreateFolderPopup />
|
||||
<RemoteUploadPopup />
|
||||
<RenameItemPopup />
|
||||
<MoveItemPopup />
|
||||
|
||||
@@ -54,10 +55,12 @@ import Spotlight from '../components/Spotlight/Spotlight'
|
||||
import DragUI from '../components/UI/Others/DragUI'
|
||||
import { mapGetters } from 'vuex'
|
||||
import { events } from '../bus'
|
||||
import RemoteUploadPopup from "../components/RemoteUpload/RemoteUploadPopup";
|
||||
|
||||
export default {
|
||||
name: 'UploadRequest',
|
||||
components: {
|
||||
RemoteUploadPopup,
|
||||
DesktopUploadRequestToolbar,
|
||||
MobileUploadRequestToolBar,
|
||||
InfoSidebarUploadRequest,
|
||||
|
||||
@@ -10,6 +10,7 @@ use Domain\UploadRequest\Controllers\MoveItemInUploadRequestController;
|
||||
use Domain\UploadRequest\Controllers\SetUploadRequestAsFilledController;
|
||||
use Domain\UploadRequest\Controllers\UploadFilesForUploadRequestController;
|
||||
use Domain\UploadRequest\Controllers\GetFolderTreeForUploadRequestController;
|
||||
use Domain\UploadRequest\Controllers\UploadFilesRemotelyForUploadRequestController;
|
||||
|
||||
Route::get('/{uploadRequest}', GetUploadRequestController::class);
|
||||
|
||||
@@ -19,6 +20,7 @@ Route::group(['middleware' => 'upload-request'], function () {
|
||||
Route::delete('/{uploadRequest}', SetUploadRequestAsFilledController::class);
|
||||
|
||||
// Edit
|
||||
Route::post('/{uploadRequest}/upload/remote', UploadFilesRemotelyForUploadRequestController::class);
|
||||
Route::post('/{uploadRequest}/upload', UploadFilesForUploadRequestController::class);
|
||||
Route::patch('/{uploadRequest}/rename/{id}', RenameFileOrFolderController::class);
|
||||
Route::post('/{uploadRequest}/create-folder', CreateFolderController::class);
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
<?php
|
||||
namespace Domain\Files\Controllers;
|
||||
|
||||
use Illuminate\Http\Response;
|
||||
use Domain\Sharing\Models\Share;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Domain\Files\Requests\UploadRequest;
|
||||
@@ -33,7 +32,7 @@ class VisitorUploadFileController extends Controller
|
||||
public function __invoke(
|
||||
UploadRequest $request,
|
||||
Share $shared,
|
||||
): Response | array {
|
||||
) {
|
||||
if (is_demo_account()) {
|
||||
return ($this->fakeUploadFile)($request);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
namespace Domain\UploadRequest\Controllers;
|
||||
|
||||
use DB;
|
||||
use Domain\Folders\Models\Folder;
|
||||
use Domain\Files\Requests\RemoteUploadRequest;
|
||||
use Domain\UploadRequest\Models\UploadRequest;
|
||||
use Domain\Files\Actions\GetContentFromExternalSource;
|
||||
use Illuminate\Contracts\Filesystem\FileNotFoundException;
|
||||
|
||||
class UploadFilesRemotelyForUploadRequestController
|
||||
{
|
||||
public function __construct(
|
||||
private GetContentFromExternalSource $getContentFromExternalSource,
|
||||
) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws FileNotFoundException
|
||||
*/
|
||||
public function __invoke(RemoteUploadRequest $request, UploadRequest $uploadRequest)
|
||||
{
|
||||
// Get upload request root folder query
|
||||
$folder = Folder::where('id', $uploadRequest->id);
|
||||
|
||||
// Create folder if not exist
|
||||
if ($folder->doesntExist()) {
|
||||
$this->createFolder($uploadRequest);
|
||||
}
|
||||
|
||||
// Set default parent_id for uploaded file
|
||||
if (is_null($request->input('parent_id'))) {
|
||||
$request->merge(['parent_id' => $uploadRequest->id]);
|
||||
}
|
||||
|
||||
// Execute job for get content from url and save
|
||||
($this->getContentFromExternalSource)($request->all(), $uploadRequest->user);
|
||||
|
||||
// Set timestamp for auto filling
|
||||
cache()->set("auto-filling.$uploadRequest->id", now()->toString());
|
||||
|
||||
return response('Files were successfully added to the upload queue', 201);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create root Upload Request folder
|
||||
*/
|
||||
private function createFolder(UploadRequest $uploadRequest): void
|
||||
{
|
||||
// Format timestamp
|
||||
$timestamp = format_date($uploadRequest->created_at, 'd. M. Y');
|
||||
|
||||
// Create folder
|
||||
DB::table('folders')->insert([
|
||||
'id' => $uploadRequest->id,
|
||||
'parent_id' => $uploadRequest->folder_id ?? null,
|
||||
'user_id' => $uploadRequest->user_id,
|
||||
'name' => $uploadRequest->name ?? __t('upload_request_default_folder', ['timestamp' => $timestamp]),
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
|
||||
// Update upload request status
|
||||
$uploadRequest->update([
|
||||
'status' => 'filling',
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user