FEATURE: make nicer URL uniqueness check
This commit is contained in:
@@ -12,6 +12,7 @@ use App\Models\FileManager\File;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\Str;
|
||||
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
|
||||
|
||||
class EditContent implements Interaction
|
||||
{
|
||||
@@ -81,7 +82,7 @@ class EditContent implements Interaction
|
||||
|
||||
return [
|
||||
'title' => 'required',
|
||||
'url' => 'required|unique:contents,url,' . $id,
|
||||
'url' => 'required|unique:contents,url,' . $id.',id,deleted_at,NULL,language,' . LaravelLocalization::getCurrentLocale(),
|
||||
'publishedFrom' => 'date',
|
||||
'publishedTo' => 'date',
|
||||
'titlePhoto' => 'exists:files,id',
|
||||
|
||||
@@ -4,14 +4,11 @@ namespace App\Cms\Interactions\Admin\Content;
|
||||
use App\CMS\Contracts\Interaction;
|
||||
use App\CMS\Contracts\Repositories\Content as ContentRepository;
|
||||
use App\CMS\Contracts\Repositories\Module;
|
||||
use App\CMS\Enumerations\ContentStatuses;
|
||||
use App\CMS\Helpers\CurrentTemplate;
|
||||
use App\Events\CreateNewContent;
|
||||
use App\Models\Content\Content;
|
||||
use App\Models\FileManager\File;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\Str;
|
||||
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
|
||||
|
||||
class NewContent implements Interaction
|
||||
@@ -75,11 +72,15 @@ class NewContent implements Interaction
|
||||
|
||||
public function getValidationRules($parameters = [])
|
||||
{
|
||||
// get all available statuses
|
||||
$statuses = ContentStatuses::getSimple();
|
||||
$statuses = implode(',', $statuses);
|
||||
|
||||
return [
|
||||
'titlePhoto' => 'image',
|
||||
'title' => 'required',
|
||||
'url' => 'required|unique:contents,url',
|
||||
'status' => 'required|in:draft,protected,public',
|
||||
'url' => 'required|unique:contents,url,NULL,id,deleted_at,NULL,language,' . LaravelLocalization::getCurrentLocale(),
|
||||
'status' => 'required|in:'.$statuses,
|
||||
'parentPage' => 'exists:contents,id',
|
||||
'publishedFrom' => 'date',
|
||||
'publishedTo' => 'date',
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
|
||||
class AddUniqueKeyToDeletedAtInContents extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('contents', function (Blueprint $table) {
|
||||
$table->dropUnique(['language', 'url']);
|
||||
$table->unique(['language', 'url', 'deleted_at']);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('contents', function (Blueprint $table) {
|
||||
$table->dropUnique(['language', 'url', 'deleted_at']);
|
||||
$table->unique(['language', 'url']);
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user