FEATURE: make nicer URL uniqueness check

This commit is contained in:
Michal Kváček
2016-10-25 20:11:58 +02:00
parent 988f153d9f
commit 000352052d
3 changed files with 42 additions and 7 deletions
@@ -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']);
});
}
}