diff --git a/app/Http/Controllers/Admin/CreateNewContent.php b/app/Http/Controllers/Admin/CreateNewContent.php index 3522b4cb..a41067d0 100644 --- a/app/Http/Controllers/Admin/CreateNewContent.php +++ b/app/Http/Controllers/Admin/CreateNewContent.php @@ -4,16 +4,14 @@ namespace App\Http\Controllers\Admin; use App\Enumerations\ActiveContentStatuses; use App\Events\CreateNewContent as CreateNewContentEvent; use App\Http\Requests\CreateNewContentRequest; -use App\Http\Requests\Request; use App\Models\Content; -use App\Models\ContentHasFile; -use App\Models\Directory; use App\Models\File; use App\Models\Module; use App\Models\Template; use Illuminate\Support\Facades\Event; use Illuminate\Support\Str; use Mcamara\LaravelLocalization\Facades\LaravelLocalization; +use Modules\Categories\Entities\Category; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; class CreateNewContent extends Controller @@ -43,7 +41,6 @@ class CreateNewContent extends Controller */ public function getNew($moduleId) { - $module = Module::findOrFail($moduleId); $statuses = ActiveContentStatuses::getWithTranslations(); @@ -51,6 +48,13 @@ class CreateNewContent extends Controller ->select(['template_name', 'name', 'description']) ->get(); + // add categories, if supported + $categories = []; + if ($module->support_categories) { + $categories = Category::where('module_id', $moduleId) + ->get(); + } + // create default content object $this->content->status = Content::STATUS_DRAFT; @@ -59,6 +63,8 @@ class CreateNewContent extends Controller 'contentStatuses' => $statuses, 'templates' => $templates, 'moduleId' => $moduleId, + 'module' => $module, + 'categories' => $categories, 'page' => $this->content, 'rootPages' => $this->content->getOverview() ->get(), @@ -102,6 +108,7 @@ class CreateNewContent extends Controller $page->status = $request->status; $page->template = $request->template; $page->module_handler = $module->handler; + $page->category_id = $request->category; if ($request->parentPage) { $page->parent_id = $request->parentPage; diff --git a/app/Http/Controllers/Admin/EditContent.php b/app/Http/Controllers/Admin/EditContent.php index 7dfe5996..d9781b4a 100644 --- a/app/Http/Controllers/Admin/EditContent.php +++ b/app/Http/Controllers/Admin/EditContent.php @@ -14,10 +14,12 @@ use App\Http\Requests\Request; use App\Models\Content; use App\Models\ContentHistory; use App\Models\File; +use App\Models\Module; use App\Models\Template; use Illuminate\Support\Facades\Event; use Illuminate\Support\Str; use Mcamara\LaravelLocalization\Facades\LaravelLocalization; +use Modules\Categories\Entities\Category; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; class EditContent extends Controller @@ -55,16 +57,27 @@ class EditContent extends Controller $allModules = ModulesHandlerToId::getWithTranslations(); $moduleId = $allModules[$page->module_handler]; + $module = Module::findOrFail($moduleId); + $templates = Template::where('module_id', $moduleId) ->select(['template_name', 'name', 'description']) ->get(); + // add categories, if supported + $categories = []; + if ($module->support_categories) { + $categories = Category::where('module_id', $moduleId) + ->get(); + } + $history = $this->history->getStructuredHistoryOf($page); // render view return view('admin.content.edit', [ 'contentStatuses' => $statuses, 'page' => $page, + 'module' => $module, + 'categories' => $categories, 'rootPages' => $page->getOverview() ->where('contents.id', '!=', $page->id) ->get(), @@ -121,7 +134,8 @@ class EditContent extends Controller 'content' => 'pageContent', 'parent_id' => 'parentPage', 'status' => 'status', - 'title_photo' => 'titlePhotoFilename' + 'title_photo' => 'titlePhotoFilename', + 'category_id' => 'category' ]; // save new values with history diff --git a/app/Models/Content.php b/app/Models/Content.php index a8e62673..0a5384b4 100644 --- a/app/Models/Content.php +++ b/app/Models/Content.php @@ -18,6 +18,7 @@ class Content extends Model protected $fillable = [ 'user_id', 'parent_id', + 'category_id', 'language', 'module_handler', 'published_from', @@ -260,7 +261,7 @@ class Content extends Model if (trim($fieldValue) != $request[$fieldRequest]) { - $this->saveHistory(); + $this->saveHistory($revisionId, $fieldRequest, $fieldValue, $request); // save change into database if ($commonField) { diff --git a/database/migrations/2016_08_13_150322_AddCategorySupport.php b/database/migrations/2016_08_13_150322_AddCategorySupport.php new file mode 100644 index 00000000..7c432440 --- /dev/null +++ b/database/migrations/2016_08_13_150322_AddCategorySupport.php @@ -0,0 +1,55 @@ +getDoctrineSchemaManager() + ->getDatabasePlatform(); + $platform->registerDoctrineTypeMapping('enum', 'string'); + + Schema::table('contents', function (Blueprint $table) { + $table->integer('category_id', false, true) + ->comment('FK to table categories') + ->after('module_handler') + ->nullable(true) + ->default(null); + }); + + Schema::table('contents', function (Blueprint $table) { + $table->foreign('category_id') + ->references('id') + ->on('categories') + ->onDelete('set null') + ->onUpdate('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + $platform = Schema::getConnection() + ->getDoctrineSchemaManager() + ->getDatabasePlatform(); + $platform->registerDoctrineTypeMapping('enum', 'string'); + + Schema::table('contents', function (Blueprint $table) { + $table->dropForeign('contents_category_id_foreign'); + $table->dropColumn('category_id'); + }); + } +} diff --git a/resources/lang/cs/admin/contents.php b/resources/lang/cs/admin/contents.php index e2660403..65755c72 100644 --- a/resources/lang/cs/admin/contents.php +++ b/resources/lang/cs/admin/contents.php @@ -3,6 +3,7 @@ return [ "alreadyHomepage" => "Domovská stránka", "appearance" => "Vzhled", "basicInfo" => "Základní informace", +"category" => "Kategorie", "content" => "Obsah stránky", "deletePage" => "Smazat", "edit" => "Editace :name", diff --git a/resources/lang/en/admin/contents.php b/resources/lang/en/admin/contents.php index 3434c99e..132887fd 100644 --- a/resources/lang/en/admin/contents.php +++ b/resources/lang/en/admin/contents.php @@ -5,6 +5,7 @@ return [ 'status_protected' => 'Protected', 'status_public' => 'Public', 'new' => 'Create new :name', + 'category' => 'Category', 'edit' => 'Edit :name', 'editPlain' => 'Edit', 'content' => 'Page content', diff --git a/resources/lang/en/admin/history.php b/resources/lang/en/admin/history.php index 1e7d03da..016d17c2 100644 --- a/resources/lang/en/admin/history.php +++ b/resources/lang/en/admin/history.php @@ -12,6 +12,7 @@ return [ 'columnIs_homepage' => 'Homepage', 'columnParentPage' => 'Parent page', 'columnTitlePhotoFilename' => 'Title photo', + 'columnCategory' => 'Kategorie', 'emptyValue' => 'none', 'changedFromTo' => 'Changed from :from to :to', 'numOfChanges' => 'One change|:count changes', diff --git a/resources/views/admin/content/formParts/basicInformation.blade.php b/resources/views/admin/content/formParts/basicInformation.blade.php index be762aa0..47a2caae 100644 --- a/resources/views/admin/content/formParts/basicInformation.blade.php +++ b/resources/views/admin/content/formParts/basicInformation.blade.php @@ -25,7 +25,9 @@ @@ -68,6 +70,25 @@ @endif + + @if($module->support_categories && count($categories)) +
+ +
+ + @endif