Skip to content

Commit

Permalink
Merge pull request #564 from nasirkhan/dev
Browse files Browse the repository at this point in the history
Library updated
  • Loading branch information
nasirkhan committed Apr 13, 2024
2 parents bb923b1 + 41631df commit dc4588d
Show file tree
Hide file tree
Showing 26 changed files with 404 additions and 169 deletions.
30 changes: 30 additions & 0 deletions Modules/Category/Enums/CategoryStatus.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?php

namespace Modules\Category\Enums;

enum CategoryStatus: string
{
case Active = 'Active';
case Inactive = 'Inactive';
case Draft = 'Draft';

public static function getAllValues(): array
{
return array_column(self::cases(), 'value');
}

public static function getAllNames(): array
{
return array_column(self::cases(), 'name');
}

public static function toArray(): array
{
$array = [];
foreach (self::cases() as $case) {
$array[$case->name] = $case->value;
}

return $array;
}
}
26 changes: 11 additions & 15 deletions Modules/Category/Resources/views/backend/categories/form.blade.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<div class="row mb-3">
<div class="col-12 col-sm-4">
<div class="col-12 col-sm-4 mb-3">
<div class="form-group">
<?php
$field_name = 'name';
Expand All @@ -11,7 +11,7 @@
{{ html()->text($field_name)->placeholder($field_placeholder)->class('form-control')->attributes(["$required"]) }}
</div>
</div>
<div class="col-12 col-sm-4">
<div class="col-12 col-sm-4 mb-3">
<div class="form-group">
<?php
$field_name = 'slug';
Expand All @@ -23,7 +23,7 @@
{{ html()->text($field_name)->placeholder($field_placeholder)->class('form-control')->attributes(["$required"]) }}
</div>
</div>
<div class="col-12 col-sm-4">
<div class="col-12 col-sm-4 mb-3">
<div class="form-group">
<?php
$field_name = 'group_name';
Expand Down Expand Up @@ -70,8 +70,8 @@
<x-library.lightbox />
@endif
</div>
<div class="row mb-3">
<div class="col-12">
<div class="row">
<div class="col-12 mb-3">
<div class="form-group">
<?php
$field_name = 'description';
Expand All @@ -85,8 +85,8 @@
</div>
</div>
<hr>
<div class="row mb-3">
<div class="col-12 col-sm-4">
<div class="row">
<div class="col-12 col-sm-4 mb-3">
<div class="form-group">
<?php
$field_name = 'meta_title';
Expand All @@ -98,7 +98,7 @@
{{ html()->text($field_name)->placeholder($field_placeholder)->class('form-control')->attributes(["$required"]) }}
</div>
</div>
<div class="col-12 col-sm-4">
<div class="col-12 col-sm-4 mb-3">
<div class="form-group">
<?php
$field_name = 'meta_keyword';
Expand All @@ -110,7 +110,7 @@
{{ html()->text($field_name)->placeholder($field_placeholder)->class('form-control')->attributes(["$required"]) }}
</div>
</div>
<div class="col-12 col-sm-4">
<div class="col-12 col-sm-4 mb-3">
<div class="form-group">
<?php
$field_name = 'meta_description';
Expand All @@ -132,14 +132,10 @@
$field_lable = label_case($field_name);
$field_placeholder = "-- Select an option --";
$required = "required";
$select_options = [
'Active' => 'Active',
'Inactive' => 'Inactive',
'Draft' => 'Draft'
];
$select_options = \Modules\Category\Enums\CategoryStatus::toArray();
?>
{{ html()->label($field_lable, $field_name)->class('form-label') }} {!! field_required($required) !!}
{{ html()->select($field_name, $select_options)->placeholder($field_placeholder)->class('form-select')->attributes(["$required"]) }}
{{ html()->select($field_name, $select_options)->class('form-select')->attributes(["$required"]) }}
</div>
</div>
</div>
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,6 @@ class="text-muted">{{ __($module_action) }}</small>
$('#datatable').DataTable({
processing: true,
serverSide: true,
autoWidth: true,
responsive: true,
ajax: '{{ route("backend.$module_name.index_data") }}',
columns: [{
Expand Down
3 changes: 2 additions & 1 deletion Modules/Category/database/factories/CategoryFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use Carbon\Carbon;
use Illuminate\Database\Eloquent\Factories\Factory;
use Modules\Category\Enums\CategoryStatus;

/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Model>
Expand All @@ -28,7 +29,7 @@ public function definition()
'name' => substr($this->faker->text(15), 0, -1),
'slug' => '',
'description' => $this->faker->paragraph,
'status' => 1,
'status' => $this->faker->randomElement(CategoryStatus::getAllNames()),
'created_at' => Carbon::now(),
'updated_at' => Carbon::now(),
];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Modules\Category\Enums\CategoryStatus;

return new class extends Migration
{
Expand All @@ -28,7 +29,7 @@ public function up()
$table->text('meta_keyword')->nullable();

$table->integer('order')->nullable();
$table->string('status')->default('Active');
$table->string('status')->default(CategoryStatus::Active->name);

$table->integer('created_by')->unsigned()->nullable();
$table->integer('updated_by')->unsigned()->nullable();
Expand Down
30 changes: 30 additions & 0 deletions Modules/Post/Enums/PostStatus.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?php

namespace Modules\Post\Enums;

enum PostStatus: string
{
case Published = 'Published';
case Unpublished = 'Unpublished';
case Draft = 'Draft';

public static function getAllValues(): array
{
return array_column(self::cases(), 'value');
}

public static function getAllNames(): array
{
return array_column(self::cases(), 'name');
}

public static function toArray(): array
{
$array = [];
foreach (self::cases() as $case) {
$array[$case->name] = $case->value;
}

return $array;
}
}
30 changes: 30 additions & 0 deletions Modules/Post/Enums/PostType.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?php

namespace Modules\Post\Enums;

enum PostType: string
{
case Article = 'Article';
case News = 'News';
case Feature = 'Feature';

public static function getAllValues(): array
{
return array_column(self::cases(), 'value');
}

public static function getAllNames(): array
{
return array_column(self::cases(), 'name');
}

public static function toArray(): array
{
$array = [];
foreach (self::cases() as $case) {
$array[$case->value] = $case->name;
}

return $array;
}
}
115 changes: 104 additions & 11 deletions Modules/Post/Http/Controllers/Backend/PostsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,13 @@

use App\Authorizable;
use App\Http\Controllers\Backend\BackendBaseController;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Arr;
use Illuminate\Support\Str;
use Modules\Category\Models\Category;
use Illuminate\Validation\Rule;
use Modules\Post\Enums\PostStatus;
use Modules\Post\Enums\PostType;

class PostsController extends BackendBaseController
{
Expand All @@ -30,11 +35,69 @@ public function __construct()
}

/**
* Show the form for creating a new resource.
* Store a new resource in the database.
*
* @return \Illuminate\Contracts\View\View
* @param Request $request The request object containing the data to be stored.
* @return RedirectResponse The response object that redirects to the index page of the module.
*
* @throws Exception If there is an error during the creation of the resource.
*/
public function store(Request $request)
{
$module_title = $this->module_title;
$module_name = $this->module_name;
$module_path = $this->module_path;
$module_icon = $this->module_icon;
$module_model = $this->module_model;
$module_name_singular = Str::singular($module_name);

$module_action = 'Store';

$validated_data = $request->validate([
'name' => 'required|max:191',
'slug' => 'nullable|max:191',
'created_by_alias' => 'nullable|max:191',
'intro' => 'required',
'content' => 'required',
'image' => 'required|max:191',
'category_id' => 'required|integer',
'type' => Rule::enum(PostType::class),
'is_featured' => 'required|integer',
'tags_list' => 'nullable|array',
'status' => Rule::enum(PostStatus::class),
'published_at' => 'required|date',
'meta_title' => 'nullable|max:191',
'meta_keywords' => 'nullable|max:191',
'order' => 'nullable|integer',
'meta_description' => 'nullable',
'meta_og_image' => 'nullable|max:191',
]);

$data = Arr::except($validated_data, 'tags_list');
$data['created_by_name'] = auth()->user()->name;

$$module_name_singular = $module_model::create($data);
$$module_name_singular->tags()->attach($request->input('tags_list'));

flash("New '".Str::singular($module_title)."' Added")->success()->important();

logUserAccess($module_title.' '.$module_action.' | Id: '.$$module_name_singular->id);

return redirect("admin/{$module_name}");
}

/**
* Updates a resource.
*
* @param int $id
* @param Request $request The request object.
* @param mixed $id The ID of the resource to update.
* @return Response
* @return RedirectResponse The redirect response.
*
* @throws ModelNotFoundException If the resource is not found.
*/
public function create()
public function update(Request $request, $id)
{
$module_title = $this->module_title;
$module_name = $this->module_name;
Expand All @@ -43,15 +106,45 @@ public function create()
$module_model = $this->module_model;
$module_name_singular = Str::singular($module_name);

$module_action = 'Create';
$module_action = 'Update';

$validated_data = $request->validate([
'name' => 'required|max:191',
'slug' => 'nullable|max:191',
'created_by_alias' => 'nullable|max:191',
'intro' => 'required',
'content' => 'required',
'image' => 'required|max:191',
'category_id' => 'required|integer',
'type' => Rule::enum(PostType::class),
'is_featured' => 'required|integer',
'tags_list' => 'nullable|array',
'status' => Rule::enum(PostStatus::class),
'published_at' => 'required|date',
'meta_title' => 'nullable|max:191',
'meta_keywords' => 'nullable|max:191',
'order' => 'nullable|integer',
'meta_description' => 'nullable',
'meta_og_image' => 'nullable|max:191',
]);

$data = Arr::except($validated_data, 'tags_list');

$$module_name_singular = $module_model::findOrFail($id);

$$module_name_singular->update($data);

if ($request->input('tags_list') === null) {
$tags_list = [];
} else {
$tags_list = $request->input('tags_list');
}
$$module_name_singular->tags()->sync($tags_list);

$categories = Category::pluck('name', 'id');
flash(Str::singular($module_title)."' Updated Successfully")->success()->important();

logUserAccess($module_title.' '.$module_action);
logUserAccess($module_title.' '.$module_action.' | Id: '.$$module_name_singular->id);

return view(
"{$module_path}.{$module_name}.create",
compact('module_title', 'module_name', 'module_path', 'module_icon', 'module_name_singular', 'module_action', 'categories')
);
return redirect()->route("backend.{$module_name}.show", $$module_name_singular->id);
}
}
Loading

0 comments on commit dc4588d

Please sign in to comment.