|
@@ -81,7 +88,13 @@
-
+
diff --git a/resources/js/components/assets/Editor/Editor.vue b/resources/js/components/assets/Editor/Editor.vue
index 4eb6c9a0cb9..d662b3d94ef 100644
--- a/resources/js/components/assets/Editor/Editor.vue
+++ b/resources/js/components/assets/Editor/Editor.vue
@@ -257,10 +257,16 @@
+
+
-
@@ -296,7 +302,7 @@ import HasHiddenFields from '../../publish/HasHiddenFields';
import { pick, flatten } from 'lodash-es';
export default {
- emits: ['saved', 'closed', 'action-completed'],
+ emits: ['previous', 'next', 'saved', 'closed', 'action-completed'],
mixins: [HasHiddenFields],
@@ -392,6 +398,12 @@ export default {
mounted() {
this.load();
+
+ window.addEventListener('keydown', this.keydown);
+ },
+
+ beforeUnmount() {
+ window.removeEventListener('keydown', this.keydown);
},
events: {
@@ -450,6 +462,32 @@ export default {
});
},
+ keydown(event) {
+ if ((event.metaKey || event.ctrlKey) && event.key === 'ArrowLeft') {
+ this.navigateToPreviousAsset();
+ }
+
+ if ((event.metaKey || event.ctrlKey) && event.key === 'ArrowRight') {
+ this.navigateToNextAsset();
+ }
+ },
+
+ navigateToPreviousAsset() {
+ if (this.$dirty.has(this.publishContainer)) {
+ this.save();
+ }
+
+ this.$emit('previous');
+ },
+
+ navigateToNextAsset() {
+ if (this.$dirty.has(this.publishContainer)) {
+ this.save();
+ }
+
+ this.$emit('next');
+ },
+
openFocalPointEditor() {
this.showFocalPointEditor = true;
},
@@ -464,6 +502,13 @@ export default {
this.$dirty.add(this.publishContainer);
},
+ // We only want to close when clicking the save button, not when saving when navigating between prev/next assets.
+ // TODO: Can likely be refactored when we implement the new publish form components.
+ saveAndClose() {
+ this.save();
+ this.close();
+ },
+
save() {
this.saving = true;
const url = cp_url(`assets/${utf8btoa(this.id)}`);
diff --git a/resources/js/components/ui/Toggle/Group.vue b/resources/js/components/ui/Toggle/Group.vue
index 4c52b5bd6a4..b117698f3b4 100644
--- a/resources/js/components/ui/Toggle/Group.vue
+++ b/resources/js/components/ui/Toggle/Group.vue
@@ -50,14 +50,21 @@ const groupClasses = cva({
})({
notGhost: props.variant !== 'ghost',
});
+
+function updateModelValue(value) {
+ if (value) {
+ emit('update:modelValue', value);
+ }
+}
diff --git a/resources/views/assets/browse.blade.php b/resources/views/assets/browse.blade.php
index 5ce5c1d4981..8c2d203c693 100644
--- a/resources/views/assets/browse.blade.php
+++ b/resources/views/assets/browse.blade.php
@@ -8,7 +8,7 @@
@section('content')
- {{ __('Asset Containers') }}
-
- @can('create', 'Statamic\Contracts\Assets\AssetContainer')
- {{ __('Create Asset Container') }}
- @endcan
-
-
-
-@endsection
diff --git a/src/Http/Controllers/CP/Assets/AssetContainersController.php b/src/Http/Controllers/CP/Assets/AssetContainersController.php
index 28e1995fe0f..d03fb29629f 100644
--- a/src/Http/Controllers/CP/Assets/AssetContainersController.php
+++ b/src/Http/Controllers/CP/Assets/AssetContainersController.php
@@ -38,15 +38,7 @@ public function index(Request $request)
];
})->values();
- if ($request->wantsJson()) {
- return $containers;
- }
-
- return view('statamic::assets.containers.index', [
- 'containers' => $containers->all(),
- 'columns' => ['title'],
- 'visibleColumns' => ['title'],
- ]);
+ return $containers;
}
public function edit($container)
diff --git a/src/Http/Controllers/CP/Assets/BrowserController.php b/src/Http/Controllers/CP/Assets/BrowserController.php
index f394ff73858..d155771b92a 100644
--- a/src/Http/Controllers/CP/Assets/BrowserController.php
+++ b/src/Http/Controllers/CP/Assets/BrowserController.php
@@ -44,6 +44,8 @@ public function show($container, $path = '/')
'blueprint_url' => cp_route('asset-containers.blueprint.edit', $container->handle()),
'can_edit' => User::current()->can('edit', $container),
'can_delete' => User::current()->can('delete', $container),
+ 'allow_uploads' => $container->allowUploads(),
+ 'create_folders' => $container->createFolders(),
'sort_field' => $container->sortField(),
'sort_direction' => $container->sortDirection(),
],
diff --git a/tests/Feature/AssetContainers/ListAssetContainersTest.php b/tests/Feature/AssetContainers/ListAssetContainersTest.php
index 71a96c8fd85..8b2dd4a51c8 100644
--- a/tests/Feature/AssetContainers/ListAssetContainersTest.php
+++ b/tests/Feature/AssetContainers/ListAssetContainersTest.php
@@ -30,23 +30,6 @@ public function it_lists_containers_you_have_access_to_when_requested_as_json()
->assertJson($this->containerArray());
}
- #[Test]
- public function it_loads_a_view_when_requested_normally()
- {
- $this->setTestRoles(['test' => ['access cp', 'view two assets', 'view three assets']]);
- $user = User::make()->assignRole('test')->save();
- AssetContainer::make('one')->save();
- AssetContainer::make('two')->save();
- AssetContainer::make('three')->save();
-
- $this
- ->actingAs($user)
- ->get(cp_route('asset-containers.index'))
- ->assertSuccessful()
- ->assertViewIs('statamic::assets.containers.index')
- ->assertViewHas('containers', $this->containerArray());
- }
-
public function containerArray()
{
return [
|