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))
+