REFACTORING #1880 @15m: remove custom fields

This commit is contained in:
Michal Kváček
2016-11-23 03:21:23 +01:00
parent 675aec669b
commit d0fbce13fb
28 changed files with 1 additions and 727 deletions
-6
View File
@@ -1,6 +0,0 @@
<?php
namespace App\CMS\CustomFields;
class BaseField {
}
-6
View File
@@ -1,6 +0,0 @@
<?php
namespace App\CMS\CustomFields;
class Date extends BaseField {
}
-6
View File
@@ -1,6 +0,0 @@
<?php
namespace App\CMS\CustomFields;
class Number extends BaseField {
}
-6
View File
@@ -1,6 +0,0 @@
<?php
namespace App\CMS\CustomFields;
class SelectboxList extends BaseField {
}
-6
View File
@@ -1,6 +0,0 @@
<?php
namespace App\CMS\CustomFields;
class String extends BaseField {
}
@@ -1,20 +0,0 @@
<?php
namespace App\CMS\Enumerations;
use App\Models\CustomFieldResource;
class CustomFieldResources extends BaseEnumeration
{
public static $items = [];
public static function init()
{
// load items from database
$types = CustomFieldResource::all(['id', 'name']);
// push items into collection
foreach ($types as $type) {
self::push($type->id, $type->name);
}
}
}
-21
View File
@@ -1,21 +0,0 @@
<?php
namespace App\CMS\Enumerations;
use App\Models\CustomFieldType;
class CustomFieldTypes extends BaseEnumeration
{
public static $items = [];
public static function init()
{
// load items from database
$types = CustomFieldType::all(['id', 'name']);
// push items into collection
foreach ($types as $type) {
self::push($type->id, $type->name);
}
}
}
-27
View File
@@ -1,27 +0,0 @@
<?php
namespace App\Events;
use App\Events\Event;
use App\Models\CustomField;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class CreateNewCustomField extends Event
{
use SerializesModels;
/**
* @var CustomField
*/
public $customField;
/**
* Create a new event instance.
*
* @param CustomField $customField
*/
public function __construct(CustomField $customField)
{
$this->customField = $customField;
}
}
-27
View File
@@ -1,27 +0,0 @@
<?php
namespace App\Events;
use App\Events\Event;
use App\Models\CustomField;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class DeleteCustomField extends Event
{
use SerializesModels;
/**
* @var CustomField
*/
public $customField;
/**
* Create a new event instance.
*
* @param CustomField $customField
*/
public function __construct(CustomField $customField)
{
$this->customField = $customField;
}
}
-27
View File
@@ -1,27 +0,0 @@
<?php
namespace App\Events;
use App\Events\Event;
use App\Models\CustomField;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class EditCustomField extends Event
{
use SerializesModels;
/**
* @var CustomField
*/
public $customField;
/**
* Create a new event instance.
*
* @param CustomField $customField
*/
public function __construct(CustomField $customField)
{
$this->customField = $customField;
}
}
@@ -1,72 +0,0 @@
<?php
namespace App\Http\Controllers\Admin\CustomFields;
use App\CMS\Enumerations\CustomFieldResources;
use App\CMS\Enumerations\CustomFieldTypes;
use App\Events\CreateNewCustomField as CreateNewCustomFieldEvent;
use App\Http\Controllers\Admin\Controller;
use App\Http\Requests\NewCustomFieldRequest;
use App\Models\CustomField;
use Illuminate\Support\Facades\Event;
class CreateNewCustomField extends Controller
{
public function getNew()
{
$types = CustomFieldTypes::getWithTranslations();
$resources = CustomFieldResources::getWithTranslations();
return view('admin.customFields.new', [
'types' => $types,
'resources' => $resources
]);
}
public function postNew(NewCustomFieldRequest $request)
{
$customField = new CustomField();
// set mandatory fields
$customField->name = $request->name;
$customField->type_id = $request->type;
$customField->resource_id = $request->resource;
$customField->required = $request->has('required');
// set non-mandatory fields
if ($request->description) {
$customField->description = $request->description;
}
if ($request->possibleValues) {
$customField->possible_values = trim(preg_replace('~[\r\n]+~', '|', $request->possibleValues));
}
if ($request->defaultValue) {
$customField->default_value = $request->defaultValue;
}
if ($request->regExp) {
$customField->regexp = $request->regExp;
}
if ($request->minLength) {
$customField->min_length = $request->minLength;
}
if ($request->maxLength) {
$customField->max_length = $request->maxLength;
}
$customField->save();
// fire event about creating new custom field
Event::fire(new CreateNewCustomFieldEvent($customField));
return redirect()
->route('customfields.new')
->with('success', trans('admin/customFields.successfullyCreated'));
}
}
@@ -1,24 +0,0 @@
<?php
namespace App\Http\Controllers\Admin\CustomFields;
use App\CMS\Enumerations\CustomFieldResources;
use App\CMS\Enumerations\CustomFieldTypes;
use App\Http\Controllers\Admin\Controller;
use App\Models\CustomField;
class CustomFieldsOverview extends Controller
{
public function getOverview()
{
$model = new CustomField();
$fields = $model->getIndexedByResource();
return view('admin.customFields.overview', [
'customFields' => $fields,
'usedResources' => array_keys($fields),
'resources' => CustomFieldResources::getWithTranslations(),
'types' => CustomFieldTypes::getWithTranslations()
]);
}
}
@@ -1,105 +0,0 @@
<?php
namespace App\Http\Controllers\Admin\CustomFields;
use App\CMS\Enumerations\CustomFieldResources;
use App\CMS\Enumerations\CustomFieldTypes;
use App\Events\DeleteCustomField;
use App\Events\EditCustomField as EditCustomFieldEvent;
use App\Http\Controllers\Admin\Controller;
use App\Http\Requests\EditCustomFieldRequest;
use App\Models\CustomField;
use Illuminate\Support\Facades\Event;
class EditCustomField extends Controller
{
public function getEditCustomField($id)
{
$field = CustomField::findOrFail($id);
return view('admin.customFields.edit', [
'field' => $field,
'types' => CustomFieldTypes::getWithTranslations(),
'resources' => CustomFieldResources::getWithTranslations()
]);
}
public function postEditCustomField(EditCustomFieldRequest $request, $id)
{
$customField = CustomField::findOrFail($id);
// setup fields
$customField->name = $request->name;
$customField->required = $request->has('required');
// set non-mandatory fields
if ($request->description) {
$customField->description = $request->description;
}
if ($request->possibleValues) {
$customField->possible_values = trim(preg_replace('~[\r\n]+~', '|', $request->possibleValues));
}
if ($request->defaultValue) {
$customField->default_value = $request->defaultValue;
}
if ($request->regExp) {
$customField->regexp = $request->regExp;
}
if ($request->minLength) {
$customField->min_length = $request->minLength;
}
if ($request->maxLength) {
$customField->max_length = $request->maxLength;
}
// save changes into database
$customField->save();
// fire event about editing custom field
Event::fire(new EditCustomFieldEvent($customField));
return redirect()
->route('customfields.edit', ['id' => $id])
->with('success', trans('admin/customFields.successfullyEdited'));
}
/**
* Deletes custom field given by id.
*
* This method deletes given custom field. It is in this method because deleting is somehow editing the item.
*
* @param $id
*
* @return \Illuminate\Http\RedirectResponse
*/
public function deleteCustomField($id)
{
// find and delete field
try {
$field = CustomField::findOrFail($id);
} catch (\Exception $e) {
// field does not exist, redirect to overview and inform user
return redirect()
->route('customfields.overview')
->with('error', trans('admin/customFields.fieldNotExist'));
}
// delete item
$field->delete();
// fire event about editing custom field
Event::fire(new DeleteCustomField($field));
// redirect back to overview
return redirect()
->route('customfields.overview')
->with('success', trans('admin/customFields.successfullyDeleted'));
}
}
@@ -1,20 +0,0 @@
<?php
namespace App\Http\Requests;
class EditCustomFieldRequest extends Request
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required',
'minLength' => 'numeric|min:0',
'maxLength' => 'numeric|min:0',
];
}
}
@@ -1,22 +0,0 @@
<?php
namespace App\Http\Requests;
class NewCustomFieldRequest extends Request
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required',
'type' => 'required|exists:custom_field_types,id',
'resource' => 'required|exists:custom_field_resources,id',
'minLength' => 'numeric|min:0',
'maxLength' => 'numeric|min:0',
];
}
}
@@ -1,37 +0,0 @@
<?php
namespace App\Listeners\Loggers;
use App\Events\CreateNewCustomField;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class LogCreateCustomField extends Logger
{
/**
* Handle the event.
*
* @param CreateNewCustomField $event
* @return void
*/
public function handle(CreateNewCustomField $event)
{
$parameters = [
'id' => $event->customField->id,
'name' => $event->customField->name
];
$this->saveLog($parameters);
}
/**
* Getter for action name. Used only internally
*
* @return mixed
*/
protected function getName()
{
return 'newCustomField';
}
}
-36
View File
@@ -1,36 +0,0 @@
<?php
namespace App\Listeners\Loggers;
use App\Events\DeleteCustomField;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class LogDeleteField extends Logger
{
/**
* Handle the event.
*
* @param DeleteCustomField $event
* @return void
*/
public function handle(DeleteCustomField $event)
{
$parameters = [
'id' => $event->customField->id,
'name' => $event->customField->name
];
$this->saveLog($parameters);
}
/**
* Getter for action name. Used only internally
*
* @return mixed
*/
protected function getName()
{
return 'deleteCustomField';
}
}
@@ -1,36 +0,0 @@
<?php
namespace App\Listeners\Loggers;
use App\Events\EditCustomField;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class LogEditCustomField extends Logger
{
/**
* Handle the event.
*
* @param EditCustomField $event
* @return void
*/
public function handle(EditCustomField $event)
{
$parameters = [
'id' => $event->customField->id,
'name' => $event->customField->name
];
$this->saveLog($parameters);
}
/**
* Getter for action name. Used only internally
*
* @return mixed
*/
protected function getName()
{
return 'editCustomField';
}
}
@@ -1,24 +0,0 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
/**
* Class ContentHasCustomField
*/
class ContentHasCustomField extends Model
{
public $timestamps = false;
protected $fillable = [
'contents_id',
'custom_field_id',
'value'
];
protected $guarded = [];
}
-45
View File
@@ -1,45 +0,0 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
/**
* Class CustomField
*/
class CustomField extends Model
{
public $timestamps = false;
protected $fillable = [
'name',
'type_id',
'resource_id',
'description',
'possible_values',
'default_value',
'regexp',
'min_length',
'max_length',
'required'
];
protected $guarded = [];
/**
* Getter for all custom fields indexed by resource ID.
*
* @return array
*/
public function getIndexedByResource()
{
// find all records in table
$fields = CustomField::all();
// add them to array indexed by resource ID
$customFields = [];
foreach ($fields as $field) {
$customFields[$field->resource_id][] = $field;
}
return $customFields;
}
}
@@ -1,22 +0,0 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
/**
* Class CustomFieldResource
*/
class CustomFieldResource extends Model
{
public $timestamps = false;
protected $fillable = [
'name'
];
protected $guarded = [];
}
@@ -1,23 +0,0 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
/**
* Class CustomFieldType
*/
class CustomFieldType extends Model
{
public $timestamps = false;
protected $fillable = [
'name',
'handler'
];
protected $guarded = [];
}
@@ -1,23 +0,0 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
/**
* Class ModuleHasCustomField
*/
class ModuleHasCustomField extends Model
{
public $timestamps = false;
protected $fillable = [
'moduleHandler',
'custom_field_id'
];
protected $guarded = [];
}
@@ -1,24 +0,0 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
/**
* Class UserHasCustomField
*/
class UserHasCustomField extends Model
{
public $timestamps = false;
protected $fillable = [
'user_id',
'custom_field_id',
'value'
];
protected $guarded = [];
}
+1 -9
View File
@@ -40,15 +40,7 @@ class EventServiceProvider extends ServiceProvider
'App\Events\DeleteContent' => [
'App\Listeners\Loggers\LogDeleteContent'
],
'App\Events\CreateNewCustomField' => [
'App\Listeners\Loggers\LogCreateCustomField',
],
'App\Events\EditCustomField' => [
'App\Listeners\Loggers\LogEditCustomField',
],
'App\Events\DeleteCustomField' => [
'App\Listeners\Loggers\LogDeleteField',
],
'App\Events\ChangeSettings' => [
'App\Listeners\Loggers\LogChangeSettings',
],
-2
View File
@@ -12,8 +12,6 @@ class DatabaseSeeder extends Seeder
public function run()
{
// fill up custom field types
$this->call(SeedCustomFieldTypes::class);
$this->call(SeedCustomFieldResources::class);
$this->call(SeedActionLogTypes::class);
$this->call(SeedSettings::class);
}
@@ -1,24 +0,0 @@
<?php
use Illuminate\Database\Seeder;
class SeedCustomFieldResources extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$types = [
['name' => 'admin/customFields.resource_user'],
['name' => 'admin/customFields.resource_content']
];
foreach ($types as $type) {
\DB::table('custom_field_resource')
->insert($type);
}
}
}
-27
View File
@@ -1,27 +0,0 @@
<?php
use Illuminate\Database\Seeder;
class SeedCustomFieldTypes extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$types = [
['name' => 'admin/customFields.date', 'handler' => '\\App\\CustomFields\\Date'],
['name' => 'admin/customFields.number', 'handler' => '\\App\\CustomFields\\Number'],
['name' => 'admin/customFields.selectboxList', 'handler' => '\\App\\CustomFields\\SelectboxList'],
['name' => 'admin/customFields.string', 'handler' => '\\App\\CustomFields\\String']
];
foreach ($types as $type) {
\DB::table('custom_field_types')
->insert($type);
}
}
}