Skip to content

Commit

Permalink
Merge pull request #68 from zippoxer/master
Browse files Browse the repository at this point in the history
Fixed deletion of files and images.
  • Loading branch information
toonvandenbos authored Jun 12, 2020
2 parents a5206e5 + e55d01f commit 54de170
Show file tree
Hide file tree
Showing 4 changed files with 80 additions and 0 deletions.
4 changes: 4 additions & 0 deletions routes/api.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,11 @@
use Whitecube\NovaPage\Http\Controllers\Page\IndexController as PageResourceIndexController;
use Whitecube\NovaPage\Http\Controllers\Page\CountController as PageResourceCountController;
use Whitecube\NovaPage\Http\Controllers\Page\UpdateController as PageResourceUpdateController;
use Whitecube\NovaPage\Http\Controllers\Page\FieldDestroyController as PageFieldDestroyController;
use Whitecube\NovaPage\Http\Controllers\Option\IndexController as OptionResourceIndexController;
use Whitecube\NovaPage\Http\Controllers\Option\CountController as OptionResourceCountController;
use Whitecube\NovaPage\Http\Controllers\Option\UpdateController as OptionResourceUpdateController;
use Whitecube\NovaPage\Http\Controllers\Option\FieldDestroyController as OptionFieldDestroyController;

/*
|--------------------------------------------------------------------------
Expand Down Expand Up @@ -43,7 +45,9 @@
Route::get('/nova-api/nova-page', PageResourceIndexController::class . '@handle');
Route::get('/nova-api/nova-page/count', PageResourceCountController::class . '@show');
Route::put('/nova-api/nova-page/{resourceId}', PageResourceUpdateController::class . '@handle');
Route::delete('/nova-api/nova-page/{resourceId}/field/{field}', PageFieldDestroyController::class . '@handle');

Route::get('/nova-api/nova-option', OptionResourceIndexController::class . '@handle');
Route::get('/nova-api/nova-option/count', OptionResourceCountController::class . '@show');
Route::put('/nova-api/nova-option/{resourceId}', OptionResourceUpdateController::class . '@handle');
Route::delete('/nova-api/nova-option/{resourceId}/field/{field}', OptionFieldDestroyController::class . '@handle');
15 changes: 15 additions & 0 deletions src/Http/Controllers/Option/FieldDestroyController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php

namespace Whitecube\NovaPage\Http\Controllers\Option;

use Whitecube\NovaPage\Http\Controllers\ResourceFieldDestroyController;

class FieldDestroyController extends ResourceFieldDestroyController
{
/**
* The queried resource's name
*
* @var string
*/
protected $resourceName = 'nova-option';
}
15 changes: 15 additions & 0 deletions src/Http/Controllers/Page/FieldDestroyController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php

namespace Whitecube\NovaPage\Http\Controllers\Page;

use Whitecube\NovaPage\Http\Controllers\ResourceFieldDestroyController;

class FieldDestroyController extends ResourceFieldDestroyController
{
/**
* The queried resource's name
*
* @var string
*/
protected $resourceName = 'nova-page';
}
46 changes: 46 additions & 0 deletions src/Http/Controllers/ResourceFieldDestroyController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<?php

namespace Whitecube\NovaPage\Http\Controllers;

use Illuminate\Routing\Controller;
use Laravel\Nova\DeleteField;
use Laravel\Nova\Fields\File;
use Laravel\Nova\Http\Requests\UpdateResourceRequest;

abstract class ResourceFieldDestroyController extends Controller
{
/**
* The queried resource's name
*
* @var string
*/
protected $resourceName;

/**
* Update a resource.
*
* @param \Laravel\Nova\Http\Requests\UpdateResourceRequest $request
* @return \Illuminate\Http\Response
*/
public function handle(UpdateResourceRequest $request)
{
$route = call_user_func($request->getRouteResolver());
$route->setParameter('resource', $this->resourceName);
$request->findResourceOrFail()->authorizeToUpdate($request);

$resource = $request->newResource();
$field = $resource->updateFields($request)->findFieldByAttribute($request->field);

if (!($field instanceof File)) {
abort(404);
}

$template = $request->findModelQuery()->firstOrFail();

DeleteField::forRequest(
$request,
$field,
$template
)->save();
}
}

0 comments on commit 54de170

Please sign in to comment.