FIX: lots of bugfixes, sorry for ugly commit
This commit is contained in:
@@ -9,11 +9,11 @@ interface AdvancedContentModifier {
|
|||||||
* Save module-specific values into database
|
* Save module-specific values into database
|
||||||
*
|
*
|
||||||
* @param Content $content
|
* @param Content $content
|
||||||
* @param Request $request
|
* @param array $inputData
|
||||||
*
|
*
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public static function createNew(Content &$content, Request $request);
|
public static function createNew(Content &$content, array $inputData);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method used for editing existing content page.
|
* Method used for editing existing content page.
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
namespace App\CMS\Contracts\Repositories;
|
namespace App\CMS\Contracts\Repositories;
|
||||||
|
|
||||||
use App\Models\Module as ModuleModel;
|
use App\Models\Module as ModuleModel;
|
||||||
|
use App\Models\Templates\Template as TemplateModel;
|
||||||
|
|
||||||
interface Template
|
interface Template
|
||||||
{
|
{
|
||||||
@@ -12,6 +13,8 @@ interface Template
|
|||||||
const CUSTOM_EDIT_DIRECTORY = 1;
|
const CUSTOM_EDIT_DIRECTORY = 1;
|
||||||
const ORIGINAL_DIRECTORY = 2;
|
const ORIGINAL_DIRECTORY = 2;
|
||||||
|
|
||||||
|
public function setModel(TemplateModel $model);
|
||||||
|
|
||||||
public function getPathToTemplate();
|
public function getPathToTemplate();
|
||||||
|
|
||||||
public function getForModule(ModuleModel $module);
|
public function getForModule(ModuleModel $module);
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ abstract class BaseHandler implements BaseModuleHandler
|
|||||||
* Submenus can be registered later
|
* Submenus can be registered later
|
||||||
*/
|
*/
|
||||||
$menu->dropdown(trans('admin/mainMenu.contentPages'), function ($sub) {
|
$menu->dropdown(trans('admin/mainMenu.contentPages'), function ($sub) {
|
||||||
$sub->addDivider(9999);
|
|
||||||
$sub->route('content.overview', trans('admin/mainMenu.contentPageOverview'), [], 10000, ['icon' => 'fa fa-fw fa-list']);
|
$sub->route('content.overview', trans('admin/mainMenu.contentPageOverview'), [], 10000, ['icon' => 'fa fa-fw fa-list']);
|
||||||
}, 20, ['icon' => 'fa fa-fw fa-database']);
|
}, 20, ['icon' => 'fa fa-fw fa-database']);
|
||||||
|
|
||||||
@@ -96,18 +95,11 @@ abstract class BaseHandler implements BaseModuleHandler
|
|||||||
}, 60, ['icon' => 'fa fa-fw fa-file-code-o']);
|
}, 60, ['icon' => 'fa fa-fw fa-file-code-o']);
|
||||||
}
|
}
|
||||||
|
|
||||||
// $menu->dropdown(trans('admin/mainMenu.customFields'), function ($sub) {
|
|
||||||
// $sub->route('customfields.new', trans('admin/mainMenu.customFieldsNew'), [], 10, ['icon' => 'fa fa-fw fa-code']);
|
|
||||||
// $sub->route('customfields.overview', trans('admin/mainMenu.customFieldsOverview'), [], 50, ['icon' => 'fa fa-fw fa-code-fork']);
|
|
||||||
// }, 30, ['icon' => 'fa fa-fw fa-code']);
|
|
||||||
|
|
||||||
$sub->route('log.overview', trans('admin/mainMenu.actionLog'), [], 70, ['icon' => 'fa fa-fw fa-history']);
|
$sub->route('log.overview', trans('admin/mainMenu.actionLog'), [], 70, ['icon' => 'fa fa-fw fa-history']);
|
||||||
$sub->route('settings.overview', trans('admin/mainMenu.settings'), [], 80, ['icon' => 'fa fa-fw fa-gear']);
|
$sub->route('settings.overview', trans('admin/mainMenu.settings'), [], 80, ['icon' => 'fa fa-fw fa-gear']);
|
||||||
}, 10000, ['icon' => 'fa fa-fw fa-gears']);
|
}, 10000, ['icon' => 'fa fa-fw fa-gears']);
|
||||||
});
|
});
|
||||||
|
|
||||||
// order
|
|
||||||
|
|
||||||
// create menu with user profile
|
// create menu with user profile
|
||||||
\Menu::create('profileMenu', function ($menu) {
|
\Menu::create('profileMenu', function ($menu) {
|
||||||
$menu->route('users.detail', trans('admin/userManagement.profile'), [], 10, ['icon' => 'fa fa-fw fa-user icon']);
|
$menu->route('users.detail', trans('admin/userManagement.profile'), [], 10, ['icon' => 'fa fa-fw fa-user icon']);
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace App\CMS\Handlers\Registrators;
|
namespace App\CMS\Handlers\Registrators;
|
||||||
|
|
||||||
|
use App\CMS\Contracts\Repositories\Template;
|
||||||
use App\CMS\Enumerations\TemplatePaths;
|
use App\CMS\Enumerations\TemplatePaths;
|
||||||
use App\CMS\Enumerations\Templates;
|
use App\CMS\Enumerations\Templates;
|
||||||
use App\CMS\Contracts\Repositories\Template;
|
use App\Models\Templates\Template as TemplateModel;
|
||||||
use App\Models\Templates\TemplatePath;
|
use App\Models\Templates\TemplatePath;
|
||||||
use Illuminate\Support\Facades\File;
|
use Illuminate\Support\Facades\File;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
@@ -134,7 +135,10 @@ class TemplateRegistrator
|
|||||||
*/
|
*/
|
||||||
protected function relativePath($directory)
|
protected function relativePath($directory)
|
||||||
{
|
{
|
||||||
return trim(str_replace(base_path(), '', $directory), '/');
|
$directory = str_replace('/', DIRECTORY_SEPARATOR, $directory);
|
||||||
|
$directory = str_replace('\\', DIRECTORY_SEPARATOR, $directory);
|
||||||
|
|
||||||
|
return trim(str_replace(base_path(), '', $directory), '\\/');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -145,6 +149,10 @@ class TemplateRegistrator
|
|||||||
*/
|
*/
|
||||||
protected function scanForSubdirectories($directory, $name)
|
protected function scanForSubdirectories($directory, $name)
|
||||||
{
|
{
|
||||||
|
if (!is_dir($directory)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$directories = File::directories($directory);
|
$directories = File::directories($directory);
|
||||||
|
|
||||||
foreach ($directories as $dir) {
|
foreach ($directories as $dir) {
|
||||||
@@ -222,7 +230,7 @@ class TemplateRegistrator
|
|||||||
];
|
];
|
||||||
|
|
||||||
// save template into database
|
// save template into database
|
||||||
$newTemplate = Template::create($params);
|
$newTemplate = TemplateModel::create($params);
|
||||||
|
|
||||||
// push template into enumeration - so it will not be registered again
|
// push template into enumeration - so it will not be registered again
|
||||||
Templates::push($newTemplate->id, $templateName);
|
Templates::push($newTemplate->id, $templateName);
|
||||||
@@ -295,12 +303,17 @@ class TemplateRegistrator
|
|||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
private function getTemplateName($template)
|
protected function getTemplateName($template)
|
||||||
{
|
{
|
||||||
$templateName = str_replace($this->registeredPath . DIRECTORY_SEPARATOR, '', $template);
|
$templateName = $template;
|
||||||
|
|
||||||
|
$templateName = str_replace($this->registeredPath, '', $templateName);
|
||||||
|
$templateName = str_replace('\\', DIRECTORY_SEPARATOR, $templateName);
|
||||||
|
$templateName = str_replace('/', DIRECTORY_SEPARATOR, $templateName);
|
||||||
$templateName = str_replace(DIRECTORY_SEPARATOR, '.', $templateName);
|
$templateName = str_replace(DIRECTORY_SEPARATOR, '.', $templateName);
|
||||||
$templateName = str_replace(Template::TEMPLATE_SUFFIX, '', $templateName);
|
$templateName = str_replace(Template::TEMPLATE_SUFFIX, '', $templateName);
|
||||||
|
$templateName = preg_replace('/\.{2,}/', '.', $templateName);
|
||||||
|
|
||||||
return $this->namespace . $templateName;
|
return $this->namespace . trim($templateName, '.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ class WidgetRegistrator
|
|||||||
{
|
{
|
||||||
protected $registeredWidgets = [];
|
protected $registeredWidgets = [];
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method used for registering new widgets
|
* Method used for registering new widgets
|
||||||
*
|
*
|
||||||
@@ -51,8 +50,10 @@ class WidgetRegistrator
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
// install widget (if neccessary)
|
// install widget (if neccessary)
|
||||||
|
if (is_callable([$classname, 'install'])) {
|
||||||
call_user_func($classname . '::install');
|
call_user_func($classname . '::install');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ class CurrentTemplate implements TemplateHandler
|
|||||||
throw new \ErrorException('DB not migrated, please, do so!');
|
throw new \ErrorException('DB not migrated, please, do so!');
|
||||||
}
|
}
|
||||||
if (self::$template) {
|
if (self::$template) {
|
||||||
self::$template->moduleSettings = json_decode(self::$template->moduleSettings);
|
self::$template->module_settings = json_decode(self::$template->module_settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
self::$initialized = true;
|
self::$initialized = true;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ class Widget
|
|||||||
{
|
{
|
||||||
$handler = $widget->widget_type_handler;
|
$handler = $widget->widget_type_handler;
|
||||||
|
|
||||||
if (!is_object($widget->settings)) {
|
if (is_string($widget->settings)) {
|
||||||
$widget->settings = json_decode($widget->settings);
|
$widget->settings = json_decode($widget->settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -85,7 +85,6 @@ class EditContent implements Interaction
|
|||||||
'url' => 'required|unique:contents,url,' . $id.',id,deleted_at,NULL,language,' . LaravelLocalization::getCurrentLocale(),
|
'url' => 'required|unique:contents,url,' . $id.',id,deleted_at,NULL,language,' . LaravelLocalization::getCurrentLocale(),
|
||||||
'publishedFrom' => 'date',
|
'publishedFrom' => 'date',
|
||||||
'publishedTo' => 'date',
|
'publishedTo' => 'date',
|
||||||
'titlePhoto' => 'exists:files,id',
|
|
||||||
'status' => 'required|in:' . $statuses,
|
'status' => 'required|in:' . $statuses,
|
||||||
'parentPage' => 'exists:contents,id'
|
'parentPage' => 'exists:contents,id'
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -77,6 +77,6 @@ class FoundationDrilldownMenuPresenter extends Presenter
|
|||||||
<ul class="vertical menu">
|
<ul class="vertical menu">
|
||||||
' . $this->getChildMenuItems($item) . '
|
' . $this->getChildMenuItems($item) . '
|
||||||
</ul>
|
</ul>
|
||||||
</li>' . PHP_EOL;;
|
</li>' . PHP_EOL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -56,6 +56,6 @@ class FoundationDropdownMenuPresenter extends Presenter
|
|||||||
<ul class="vertical menu">
|
<ul class="vertical menu">
|
||||||
' . $this->getChildMenuItems($item) . '
|
' . $this->getChildMenuItems($item) . '
|
||||||
</ul>
|
</ul>
|
||||||
</li>' . PHP_EOL;;
|
</li>' . PHP_EOL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -107,7 +107,7 @@ class Content
|
|||||||
}
|
}
|
||||||
|
|
||||||
$moduleSettings = (array)json_decode($changed['moduleSettings']);
|
$moduleSettings = (array)json_decode($changed['moduleSettings']);
|
||||||
$originalSettings = (array)json_decode($original['moduleSettings']);
|
$originalSettings = isset($original['moduleSettings']) ? (array)json_decode($original['moduleSettings']) : [];
|
||||||
unset($changed['moduleSettings']);
|
unset($changed['moduleSettings']);
|
||||||
|
|
||||||
$settingChanged = array_keys(array_diff_assoc($moduleSettings, $originalSettings));
|
$settingChanged = array_keys(array_diff_assoc($moduleSettings, $originalSettings));
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ use App\Models\Templates\Template as TemplateModel;
|
|||||||
|
|
||||||
class Template extends Repository implements ITemplate
|
class Template extends Repository implements ITemplate
|
||||||
{
|
{
|
||||||
public function __construct(TemplateModel $model)
|
public function setModel(TemplateModel $model)
|
||||||
{
|
{
|
||||||
$this->model = $model;
|
$this->model = $model;
|
||||||
}
|
}
|
||||||
@@ -23,7 +23,7 @@ class Template extends Repository implements ITemplate
|
|||||||
public function getPathToTemplate($mode = null)
|
public function getPathToTemplate($mode = null)
|
||||||
{
|
{
|
||||||
$templateName = $this->model->template_name;
|
$templateName = $this->model->template_name;
|
||||||
$path = $this->model->path()->get();
|
$path = $this->model->templatePath;
|
||||||
|
|
||||||
// delete namespace if given
|
// delete namespace if given
|
||||||
if (strpos($this->model->template_name, '::')) {
|
if (strpos($this->model->template_name, '::')) {
|
||||||
@@ -66,8 +66,9 @@ class Template extends Repository implements ITemplate
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getForModule(Module $module) {
|
public function getForModule(Module $module)
|
||||||
return Template::where('module_id', $module->id)
|
{
|
||||||
|
return TemplateModel::where('module_id', $module->id)
|
||||||
->select(['template_name', 'name', 'description'])
|
->select(['template_name', 'name', 'description'])
|
||||||
->get();
|
->get();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ use App\CMS\Widgets\Exceptions\MissingParameterException;
|
|||||||
use App\Http\Requests\Request;
|
use App\Http\Requests\Request;
|
||||||
use App\Models\Content\Content;
|
use App\Models\Content\Content;
|
||||||
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
|
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
|
||||||
|
use App\CMS\Contracts\Repositories\Content as IContent;
|
||||||
|
|
||||||
class Menu implements PublicWidget
|
class Menu implements PublicWidget
|
||||||
{
|
{
|
||||||
@@ -66,10 +67,10 @@ class Menu implements PublicWidget
|
|||||||
|
|
||||||
public static function selectContentPages($ids)
|
public static function selectContentPages($ids)
|
||||||
{
|
{
|
||||||
$allowedStatuses = [Content::STATUS_PUBLIC];
|
$allowedStatuses = [IContent::STATUS_PUBLIC];
|
||||||
|
|
||||||
if (\Auth::user()) {
|
if (\Auth::user()) {
|
||||||
$allowedStatuses[] = Content::STATUS_PROTECTED;
|
$allowedStatuses[] = IContent::STATUS_PROTECTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
$pages = Content::where('language', LaravelLocalization::getCurrentLocale())
|
$pages = Content::where('language', LaravelLocalization::getCurrentLocale())
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ namespace App\CMS\Widgets\Menu\Presenters;
|
|||||||
use App\CMS\Contracts\Repositories\Content as ContentContract;
|
use App\CMS\Contracts\Repositories\Content as ContentContract;
|
||||||
use App\CMS\Contracts\Widgets\WidgetRenderer;
|
use App\CMS\Contracts\Widgets\WidgetRenderer;
|
||||||
use App\CMS\Widgets\Menu\Menu as WidgetMenu;
|
use App\CMS\Widgets\Menu\Menu as WidgetMenu;
|
||||||
use App\Models\Content\Content;
|
|
||||||
use App\Models\Widgets\Widget;
|
use App\Models\Widgets\Widget;
|
||||||
use App\Models\Widgets\WidgetType;
|
use App\Models\Widgets\WidgetType;
|
||||||
|
use Illuminate\Support\Collection;
|
||||||
use Illuminate\Support\Facades\App;
|
use Illuminate\Support\Facades\App;
|
||||||
use Illuminate\Support\Facades\Request;
|
use Illuminate\Support\Facades\Request;
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
@@ -79,24 +79,19 @@ class Menu implements WidgetRenderer
|
|||||||
*/
|
*/
|
||||||
public static function renderAddForm(WidgetType $type)
|
public static function renderAddForm(WidgetType $type)
|
||||||
{
|
{
|
||||||
$extensions = App::make('registerMenuExtension')
|
|
||||||
->get();
|
|
||||||
|
|
||||||
$widget = new Widget();
|
$widget = new Widget();
|
||||||
$content = new Content();
|
$content = app(ContentContract::class);
|
||||||
|
|
||||||
// get list of all pages
|
// get list of all pages
|
||||||
$pages = $content->getOverview()
|
$pages = $content->getOverview();
|
||||||
->get();
|
$widget->settings = new \stdClass();
|
||||||
|
$widget->settings->links = [];
|
||||||
|
|
||||||
$widget->settingsObj = new \stdClass();
|
|
||||||
$widget->settingsObj->links = new \stdClass();
|
|
||||||
|
|
||||||
return view('admin.widgets.menu.new', [
|
return view('admin.widgets.menu.new', [
|
||||||
'type' => $type,
|
'type' => $type,
|
||||||
'widget' => $widget,
|
'widget' => $widget,
|
||||||
'pages' => $pages,
|
'pages' => $pages,
|
||||||
'extensions' => $extensions
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,8 +32,6 @@ class AddLanguage extends Command
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute the console command.
|
* Execute the console command.
|
||||||
*
|
|
||||||
* @return mixed
|
|
||||||
*/
|
*/
|
||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -24,8 +24,6 @@ class ChangePassword extends Command
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute the console command.
|
* Execute the console command.
|
||||||
*
|
|
||||||
* @return mixed
|
|
||||||
*/
|
*/
|
||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ class InstallModule extends Command
|
|||||||
}
|
}
|
||||||
|
|
||||||
// we cannot rely on config() helper, because this module does not have to be published
|
// we cannot rely on config() helper, because this module does not have to be published
|
||||||
$config = @include($path);
|
$config = include($path);
|
||||||
|
|
||||||
return $config;
|
return $config;
|
||||||
}
|
}
|
||||||
@@ -146,7 +146,7 @@ class InstallModule extends Command
|
|||||||
throw new \Exception('Module ' . $config['name'] . ' already exists in database.');
|
throw new \Exception('Module ' . $config['name'] . ' already exists in database.');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$module) {
|
if (is_null($module)) {
|
||||||
// insert module into database
|
// insert module into database
|
||||||
$settings = [
|
$settings = [
|
||||||
'staticName' => $this->moduleName,
|
'staticName' => $this->moduleName,
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
namespace App\Events;
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Widgets\Widget;
|
use App\Models\Widgets\Widget;
|
||||||
use App\Models\WidgetArea;
|
use App\Models\Widgets\WidgetArea;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
class AssignWidget extends Event
|
class AssignWidget extends Event
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Events;
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\WidgetArea;
|
use App\Models\Widgets\WidgetArea;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
class CreateNewWidgetArea extends Event
|
class CreateNewWidgetArea extends Event
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
namespace App\Events;
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Widgets\Widget;
|
use App\Models\Widgets\Widget;
|
||||||
use App\Models\WidgetArea;
|
use App\Models\Widgets\WidgetArea;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
class RemoveWidgetFromArea extends Event
|
class RemoveWidgetFromArea extends Event
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ class CreateNewDirectory extends Controller
|
|||||||
*
|
*
|
||||||
* @return $this|\Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
|
* @return $this|\Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
|
||||||
*/
|
*/
|
||||||
public function postNew(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
// create new directory
|
// create new directory
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace App\Http\Controllers\Admin\FileManager;
|
namespace App\Http\Controllers\Admin\FileManager;
|
||||||
|
|
||||||
|
use App\CMS\Helpers\Path;
|
||||||
use App\CMS\Helpers\Template;
|
use App\CMS\Helpers\Template;
|
||||||
use App\Http\Controllers\Admin\Controller;
|
use App\Http\Controllers\Admin\Controller;
|
||||||
use App\Http\Requests\Request;
|
use App\Http\Requests\Request;
|
||||||
@@ -82,7 +83,7 @@ class UploadFile extends Controller
|
|||||||
return view('admin.snippets.ckEditorUploaded', [
|
return view('admin.snippets.ckEditorUploaded', [
|
||||||
'ckEditor' => Input::get('CKEditor'),
|
'ckEditor' => Input::get('CKEditor'),
|
||||||
'funcNumber' => Input::get('CKEditorFuncNum'),
|
'funcNumber' => Input::get('CKEditorFuncNum'),
|
||||||
'fileUrl' => Template::upload($uploadedFile['filename'])
|
'fileUrl' => Path::upload($uploadedFile['filename'])
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,12 +19,23 @@ class UploadedFilesOverview extends Controller
|
|||||||
// include hidden directories?
|
// include hidden directories?
|
||||||
$includeHidden = Input::get('hidden');
|
$includeHidden = Input::get('hidden');
|
||||||
|
|
||||||
$subdirectories = $includeHidden ? $directory->allSubdirectories : $directory->subdirectories;
|
if (!$directory->exists) {
|
||||||
|
$subdirectories = Directory::whereNull('parent_id');
|
||||||
|
} else {
|
||||||
|
$subdirectories = $directory->allSubdirectories();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($includeHidden === false) {
|
||||||
|
$subdirectories = $subdirectories->where('hidden', false);
|
||||||
|
}
|
||||||
|
|
||||||
|
$subdirectories = $subdirectories->get();
|
||||||
|
|
||||||
return view('admin.fileManager.overview', [
|
return view('admin.fileManager.overview', [
|
||||||
'directory' => $directory,
|
'directory' => $directory,
|
||||||
'subdirectories' => $subdirectories,
|
'subdirectories' => $subdirectories,
|
||||||
'newDirectory' => new Directory()
|
'newDirectory' => new Directory(),
|
||||||
|
'parentDirectory' => $directory
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers\Admin\Templates;
|
namespace App\Http\Controllers\Admin\Templates;
|
||||||
|
|
||||||
|
use App\CMS\Contracts\Repositories\Template as TemplateRepositoryContract;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Requests;
|
use App\Http\Requests;
|
||||||
use App\Http\Requests\EditTemplateRequest;
|
use App\Http\Requests\EditTemplateRequest;
|
||||||
@@ -24,17 +25,19 @@ class EditTemplate extends Controller
|
|||||||
* @var $template Template
|
* @var $template Template
|
||||||
*/
|
*/
|
||||||
$template = Template::findOrFail($template);
|
$template = Template::findOrFail($template);
|
||||||
$path = $template->getPath();
|
|
||||||
|
$repo = app(TemplateRepositoryContract::class);
|
||||||
|
$repo->setModel($template);
|
||||||
|
|
||||||
// load template content
|
// load template content
|
||||||
$absolutePath = $template->getPathToTemplate();
|
$absolutePath = $repo->getPathToTemplate();
|
||||||
$content = @file_get_contents($absolutePath);
|
$content = @file_get_contents($absolutePath);
|
||||||
|
|
||||||
return view('admin.templates.edit', [
|
return view('admin.templates.edit', [
|
||||||
'template' => $template,
|
'template' => $template,
|
||||||
'templateContent' => $content,
|
'templateContent' => $content,
|
||||||
'isWritable' => is_writable(dirname($absolutePath)),
|
'isWritable' => is_writable(dirname($absolutePath)),
|
||||||
'path' => $path,
|
'path' => $template->templatePath,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ namespace App\Http\Controllers\Admin\Users;
|
|||||||
|
|
||||||
use App\CMS\Enumerations\UserRoles;
|
use App\CMS\Enumerations\UserRoles;
|
||||||
use App\CMS\Enumerations\UserStates;
|
use App\CMS\Enumerations\UserStates;
|
||||||
|
use App\Cms\Repositories\ActionLog\Actions;
|
||||||
use App\Http\Controllers\Admin\Controller;
|
use App\Http\Controllers\Admin\Controller;
|
||||||
use App\Http\Requests;
|
|
||||||
use App\Models\ActionLog\ActionLog;
|
use App\Models\ActionLog\ActionLog;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
@@ -17,7 +17,7 @@ class UserDetail extends Controller
|
|||||||
*/
|
*/
|
||||||
private $log;
|
private $log;
|
||||||
|
|
||||||
function __construct(ActionLog $log)
|
function __construct(Actions $log)
|
||||||
{
|
{
|
||||||
$this->log = $log;
|
$this->log = $log;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ use App\Events\AssignWidget;
|
|||||||
use App\Events\RemoveWidgetFromArea;
|
use App\Events\RemoveWidgetFromArea;
|
||||||
use App\Http\Controllers\Admin\Controller;
|
use App\Http\Controllers\Admin\Controller;
|
||||||
use App\Models\Widgets\Widget;
|
use App\Models\Widgets\Widget;
|
||||||
use App\Models\WidgetArea;
|
use App\Models\Widgets\WidgetArea;
|
||||||
use App\Models\WidgetInWidgetArea;
|
use App\Models\Widgets\WidgetInWidgetArea;
|
||||||
use Illuminate\Database\QueryException;
|
use Illuminate\Database\QueryException;
|
||||||
use Illuminate\Support\Facades\Event;
|
use Illuminate\Support\Facades\Event;
|
||||||
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
|
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace App\Http\Controllers\Admin\Widgets;
|
namespace App\Http\Controllers\Admin\Widgets;
|
||||||
|
|
||||||
|
use App\CMS\Widgets\Exceptions\MissingParameterException;
|
||||||
use App\Http\Controllers\Admin\Controller;
|
use App\Http\Controllers\Admin\Controller;
|
||||||
use App\Http\Requests\EditWidgetRequest;
|
use App\Http\Requests\EditWidgetRequest;
|
||||||
use App\Models\Widgets\Widget;
|
use App\Models\Widgets\Widget;
|
||||||
use App\CMS\Widgets\Exceptions\MissingParameterException;
|
|
||||||
use Illuminate\Support\Facades\Event;
|
use Illuminate\Support\Facades\Event;
|
||||||
|
|
||||||
class EditWidget extends Controller
|
class EditWidget extends Controller
|
||||||
@@ -47,7 +47,7 @@ class EditWidget extends Controller
|
|||||||
|
|
||||||
// try to save this widget
|
// try to save this widget
|
||||||
try {
|
try {
|
||||||
$widget = call_user_func([$widget->widget_type_handler, 'save'], $widget, (object)$request->all());
|
$widget->settings = json_encode(call_user_func([$widget->widget_type_handler, 'save'], $request));
|
||||||
} catch (MissingParameterException $e) {
|
} catch (MissingParameterException $e) {
|
||||||
// user omitted some value
|
// user omitted some value
|
||||||
return $this->invalidWidget($e->getMessage());
|
return $this->invalidWidget($e->getMessage());
|
||||||
@@ -64,7 +64,7 @@ class EditWidget extends Controller
|
|||||||
|
|
||||||
// redirect with success notification
|
// redirect with success notification
|
||||||
return redirect()
|
return redirect()
|
||||||
->route('widgets.overview')
|
->back()
|
||||||
->with('success', trans('admin/widgets.successfullyEdited'));
|
->with('success', trans('admin/widgets.successfullyEdited'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace App\Models\Content\ModelTraits;
|
namespace App\Models\Content\ModelTraits;
|
||||||
|
|
||||||
use App\CMS\Handlers\Contracts\AppHandler;
|
|
||||||
use App\CMS\Handlers\Contracts\HistoryHandler;
|
use App\CMS\Handlers\Contracts\HistoryHandler;
|
||||||
use App\CMS\Helpers\Differ;
|
use App\CMS\Helpers\Differ;
|
||||||
use App\Models\Content\Content;
|
use App\Models\Content\Content as ContentModel;
|
||||||
|
|
||||||
trait ContentHistory
|
trait ContentHistory
|
||||||
{
|
{
|
||||||
@@ -15,7 +14,7 @@ trait ContentHistory
|
|||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function getStructuredHistoryOf(Content $content)
|
public function getStructuredHistoryOf(ContentModel $content)
|
||||||
{
|
{
|
||||||
$data = $content->history()
|
$data = $content->history()
|
||||||
->select('content_history.*', 'contents.moduleHandler', 'users.email AS user_email', 'users.name AS user_name')
|
->select('content_history.*', 'contents.moduleHandler', 'users.email AS user_email', 'users.name AS user_name')
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace App\Models\ModelTraits;
|
namespace App\Models\ModelTraits;
|
||||||
|
|
||||||
use App\CMS\Handlers\Contracts\TemplateHandler;
|
use App\CMS\Contracts\Modules\AppHandler;
|
||||||
|
use App\CMS\Contracts\Modules\TemplateHandler;
|
||||||
|
use App\Models\Module as ModuleModel;
|
||||||
use App\Models\Templates\TemplatePath;
|
use App\Models\Templates\TemplatePath;
|
||||||
use Illuminate\Support\Facades\App;
|
use Illuminate\Support\Facades\App;
|
||||||
|
|
||||||
trait Module {
|
trait Module
|
||||||
|
{
|
||||||
/**
|
/**
|
||||||
* Create new module in database
|
* Create new module in database
|
||||||
*
|
*
|
||||||
@@ -26,32 +29,32 @@ trait Module {
|
|||||||
throw new \ErrorException('Modules can be installed only via Artisan!');
|
throw new \ErrorException('Modules can be installed only via Artisan!');
|
||||||
}
|
}
|
||||||
|
|
||||||
$managesContent = $handler ? in_array('App\CMS\Handlers\Contracts\AppHandler', class_implements($handler)) : false;
|
$managesContent = $handler ? in_array(AppHandler::class, class_implements($handler)) : false;
|
||||||
$isTemplate = $handler ? in_array(TemplateHandler::class, class_implements($handler)) : false;
|
$isTemplate = $handler ? in_array(TemplateHandler::class, class_implements($handler)) : false;
|
||||||
$supportCategories = $managesContent ? call_user_func([$handler, 'supportCategories']) : false;
|
$supportCategories = $managesContent ? call_user_func([$handler, 'supportCategories']) : false;
|
||||||
|
|
||||||
if ($parentModuleId) {
|
if ($parentModuleId) {
|
||||||
$parentModule = Module::findOrFail($parentModuleId);
|
$parentModule = ModuleModel::findOrFail($parentModuleId);
|
||||||
$parentModule->has_submodules = true;
|
$parentModule->has_submodules = true;
|
||||||
$parentModule->save();
|
$parentModule->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
// insert module into database
|
// insert module into database
|
||||||
$module = Module::create([
|
$module = ModuleModel::create([
|
||||||
'name' => $name,
|
'name' => $name,
|
||||||
'description' => $description,
|
'description' => $description,
|
||||||
'handler' => $handler,
|
'handler' => $handler,
|
||||||
'manages_content' => $managesContent,
|
'manages_content' => $managesContent,
|
||||||
'support_categories' => $supportCategories,
|
'support_categories' => $supportCategories,
|
||||||
'alias' => $alias,
|
'alias' => $alias,
|
||||||
'moduleSettings' => json_encode($settings),
|
'module_settings' => json_encode($settings),
|
||||||
'parent_id' => $parentModuleId ? $parentModuleId : null,
|
'parent_id' => $parentModuleId ? $parentModuleId : null,
|
||||||
'enabled' => 1,
|
'enabled' => 1,
|
||||||
'is_template' => $isTemplate
|
'is_template' => $isTemplate
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// install something module-specific
|
// install something module-specific
|
||||||
if ($handler) {
|
if ($handler && is_callable([$handler, 'install'])) {
|
||||||
call_user_func([$handler, 'install']);
|
call_user_func([$handler, 'install']);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,7 +80,8 @@ trait Module {
|
|||||||
$this->deleteDirectory(public_path('assets'));
|
$this->deleteDirectory(public_path('assets'));
|
||||||
|
|
||||||
// delete all template paths
|
// delete all template paths
|
||||||
TemplatePath::getQuery()->delete();
|
TemplatePath::getQuery()
|
||||||
|
->delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->handler && is_callable([$this->handler, 'uninstall'])) {
|
if ($this->handler && is_callable([$this->handler, 'uninstall'])) {
|
||||||
@@ -96,8 +100,9 @@ trait Module {
|
|||||||
*/
|
*/
|
||||||
private function deleteDirectory($directory)
|
private function deleteDirectory($directory)
|
||||||
{
|
{
|
||||||
if (!is_dir($directory))
|
if (!is_dir($directory)) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$success = \File::deleteDirectory($directory, true);
|
$success = \File::deleteDirectory($directory, true);
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ class Module extends Model
|
|||||||
'name',
|
'name',
|
||||||
'description',
|
'description',
|
||||||
'alias',
|
'alias',
|
||||||
'moduleSettings',
|
'module_settings',
|
||||||
'enabled',
|
'enabled',
|
||||||
'support_categories',
|
'support_categories',
|
||||||
'manages_content',
|
'manages_content',
|
||||||
|
|||||||
@@ -21,7 +21,8 @@ class Template extends Model
|
|||||||
*
|
*
|
||||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||||
*/
|
*/
|
||||||
public function path() {
|
public function templatePath()
|
||||||
|
{
|
||||||
return $this->belongsTo(TemplatePath::class, 'path');
|
return $this->belongsTo(TemplatePath::class, 'path');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -25,13 +25,11 @@ class ModuleManager extends ServiceProvider
|
|||||||
|
|
||||||
// iterate over all modules and enable or disable them
|
// iterate over all modules and enable or disable them
|
||||||
foreach ($modules as $module) {
|
foreach ($modules as $module) {
|
||||||
|
$module->module_settings = json_decode($module->module_settings);
|
||||||
$module->moduleSettings = json_decode($module->moduleSettings);
|
|
||||||
|
|
||||||
if ($module->is_template) {
|
if ($module->is_template) {
|
||||||
|
if (isset($module->module_settings->providers) && !empty($module->module_settings->providers)) {
|
||||||
if (isset($module->moduleSettings->providers) && !empty($module->moduleSettings->providers)) {
|
foreach ($module->module_settings->providers as $provider) {
|
||||||
foreach ($module->moduleSettings->providers as $provider) {
|
|
||||||
$this->app->register($provider);
|
$this->app->register($provider);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -61,7 +59,7 @@ class ModuleManager extends ServiceProvider
|
|||||||
*/
|
*/
|
||||||
private function createModulesJson(Module $module)
|
private function createModulesJson(Module $module)
|
||||||
{
|
{
|
||||||
$config = $module->moduleSettings;
|
$config = $module->module_settings;
|
||||||
|
|
||||||
if (is_null($config)) {
|
if (is_null($config)) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -3,18 +3,19 @@ namespace App\Providers;
|
|||||||
|
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
|
|
||||||
abstract class ModuleServiceProvider extends ServiceProvider {
|
abstract class ModuleServiceProvider extends ServiceProvider
|
||||||
|
{
|
||||||
/**
|
/**
|
||||||
* Indicates if loading of the provider is deferred.
|
* Indicates if loading of the provider is deferred.
|
||||||
*
|
*
|
||||||
* @var bool
|
* @var bool
|
||||||
*/
|
*/
|
||||||
protected $defer = false;
|
protected $defer = false;
|
||||||
|
|
||||||
protected $alias = false;
|
protected $alias = false;
|
||||||
protected $path = false;
|
protected $path = false;
|
||||||
|
|
||||||
abstract protected function setModuleAlias();
|
abstract protected function setModuleAlias();
|
||||||
|
|
||||||
abstract protected function setModulePath();
|
abstract protected function setModulePath();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -57,11 +58,13 @@ abstract class ModuleServiceProvider extends ServiceProvider {
|
|||||||
$viewPath = base_path('resources/views/modules/' . $this->alias);
|
$viewPath = base_path('resources/views/modules/' . $this->alias);
|
||||||
$sourcePath = $this->path . '/../Resources/views';
|
$sourcePath = $this->path . '/../Resources/views';
|
||||||
|
|
||||||
$this->publishes([$sourcePath => $viewPath], 'module-views');
|
|
||||||
|
|
||||||
$this->loadViewsFrom(array_merge(array_map(function ($path) {
|
$this->loadViewsFrom(array_merge(array_map(function ($path) {
|
||||||
return $path . '/modules/' . $this->alias;
|
return $path . '/modules/' . $this->alias;
|
||||||
}, \Config::get('view.paths')), [$sourcePath]), $this->alias);
|
}, \Config::get('view.paths')), [$sourcePath]), $this->alias);
|
||||||
|
|
||||||
|
if (is_dir($sourcePath)) {
|
||||||
|
$this->publishes([$sourcePath => $viewPath], 'module-views');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -73,5 +76,4 @@ abstract class ModuleServiceProvider extends ServiceProvider {
|
|||||||
{
|
{
|
||||||
$this->loadTranslationsFrom($this->path . '/../Resources/lang', $this->alias);
|
$this->loadTranslationsFrom($this->path . '/../Resources/lang', $this->alias);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -44,7 +44,7 @@ class SubmodulesManager extends ServiceProvider
|
|||||||
$initFiles = $config->get('files', []);
|
$initFiles = $config->get('files', []);
|
||||||
|
|
||||||
foreach ($initFiles as $file) {
|
foreach ($initFiles as $file) {
|
||||||
@include $submodulePath . DIRECTORY_SEPARATOR . $file;
|
require $submodulePath . DIRECTORY_SEPARATOR . $file;
|
||||||
}
|
}
|
||||||
} catch (FileNotFoundException $e) {
|
} catch (FileNotFoundException $e) {
|
||||||
// ignore missing module and do not register this submodule
|
// ignore missing module and do not register this submodule
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ namespace App\Providers;
|
|||||||
use App\CMS\Contracts\Repositories\Template as TemplateContract;
|
use App\CMS\Contracts\Repositories\Template as TemplateContract;
|
||||||
use App\CMS\Handlers\Registrators\TemplateRegistrator;
|
use App\CMS\Handlers\Registrators\TemplateRegistrator;
|
||||||
use App\CMS\Helpers\CurrentTemplate;
|
use App\CMS\Helpers\CurrentTemplate;
|
||||||
|
use App\Models\Module;
|
||||||
use Illuminate\Support\Facades\App;
|
use Illuminate\Support\Facades\App;
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
|
|
||||||
@@ -44,6 +45,9 @@ class TemplateServiceProvider extends ServiceProvider
|
|||||||
|
|
||||||
public function registerTemplatePaths($publicTemplates)
|
public function registerTemplatePaths($publicTemplates)
|
||||||
{
|
{
|
||||||
|
$modules = Module::all()
|
||||||
|
->pluck('id', 'alias');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var $registrator TemplateRegistrator
|
* @var $registrator TemplateRegistrator
|
||||||
*/
|
*/
|
||||||
@@ -51,14 +55,17 @@ class TemplateServiceProvider extends ServiceProvider
|
|||||||
foreach ($publicTemplates as $template) {
|
foreach ($publicTemplates as $template) {
|
||||||
// setup some global variables
|
// setup some global variables
|
||||||
$module = strtolower($template['module']);
|
$module = strtolower($template['module']);
|
||||||
|
$alias = isset($template['alias']) ? $template['alias'] : $module;
|
||||||
$namespace = isset($template['namespace']) ? $template['namespace'] : strtolower($template['module']);
|
$namespace = isset($template['namespace']) ? $template['namespace'] : strtolower($template['module']);
|
||||||
|
|
||||||
|
if (!$modules->get($alias)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// register path with current template name
|
// register path with current template name
|
||||||
|
|
||||||
$registrator->setNamespace($namespace);
|
$registrator->setNamespace($namespace);
|
||||||
if (is_callable([config($module . '.handler'), 'getModuleId'])) {
|
$registrator->setModuleId($modules->get($alias));
|
||||||
$registrator->setModuleId(call_user_func([config($module . '.handler'), 'getModuleId']));
|
|
||||||
}
|
|
||||||
$registrator->register('resources/views/modules/' . $module, 'visitor', $template['templateName']);
|
$registrator->register('resources/views/modules/' . $module, 'visitor', $template['templateName']);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,11 +88,11 @@ class TemplateServiceProvider extends ServiceProvider
|
|||||||
private function publishViewResources()
|
private function publishViewResources()
|
||||||
{
|
{
|
||||||
$template = CurrentTemplate::get();
|
$template = CurrentTemplate::get();
|
||||||
if (!$template || is_null($template->moduleSettings)) {
|
if (!$template || is_null($template->module_settings)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$templateDir = base_path('templates/' . $template->moduleSettings->staticName . '/Resources');
|
$templateDir = base_path('templates/' . $template->module_settings->staticName . '/Resources');
|
||||||
$assetsDir = $templateDir . '/' . TemplateContract::ASSETS_DIRECTORY;
|
$assetsDir = $templateDir . '/' . TemplateContract::ASSETS_DIRECTORY;
|
||||||
$viewsDir = $templateDir . '/views';
|
$viewsDir = $templateDir . '/views';
|
||||||
|
|
||||||
|
|||||||
@@ -59,9 +59,9 @@ class Article extends Handler implements ContentTitles, AdvancedContentModifier,
|
|||||||
*
|
*
|
||||||
* @return mixed|void
|
* @return mixed|void
|
||||||
*/
|
*/
|
||||||
public static function createNew(Content &$content, Request $request)
|
public static function createNew(Content &$content, array $inputData)
|
||||||
{
|
{
|
||||||
$content->moduleSettings = ['allowComments' => (int)$request->has('allowComments')];
|
$content->moduleSettings = ['allowComments' => (int)isset($inputData['allowComments'])];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -12,4 +12,4 @@
|
|||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require __DIR__ . '/Http/routes.php';
|
require __DIR__ . DIRECTORY_SEPARATOR.'Http'.DIRECTORY_SEPARATOR.'routes.php';
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace Modules\Blog\ArticleList\Handlers;
|
namespace Modules\Blog\ArticleList\Handlers;
|
||||||
|
|
||||||
use App\CMS\Enumerations\ModulesHandlerToId;
|
|
||||||
use App\CMS\Handlers\Handler;
|
use App\CMS\Handlers\Handler;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Requests\Request;
|
|
||||||
use App\Models\Content\Content;
|
use App\Models\Content\Content;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
@@ -29,7 +27,7 @@ class ArticleList extends Handler
|
|||||||
}, 20, ['icon' => 'fa fa-fw fa-book']);
|
}, 20, ['icon' => 'fa fa-fw fa-book']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$blogSubmenu->route('content.new', trans('articlelist::module.name'), ['id' => self::getModuleId()], 100, ['icon' => 'fa fa-fw fa-list-alt']);
|
$blogSubmenu->route('content.new', trans('articlelist::module.name'), ['id' => 'blog-articlelist'], 100, ['icon' => 'fa fa-fw fa-list-alt']);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -145,55 +143,8 @@ class ArticleList extends Handler
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getModuleId()
|
|
||||||
{
|
|
||||||
$handler = config('articlelist.handler');
|
|
||||||
$allModules = ModulesHandlerToId::getWithTranslations();
|
|
||||||
$moduleId = isset($allModules[$handler]) ? $allModules[$handler] : null;
|
|
||||||
|
|
||||||
return $moduleId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function supportCategories()
|
public static function supportCategories()
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Save module-specific values into database
|
|
||||||
*
|
|
||||||
* @param Content $content
|
|
||||||
* @param Request $request
|
|
||||||
*
|
|
||||||
* @return mixed
|
|
||||||
* @internal param Widget $widget
|
|
||||||
*/
|
|
||||||
public static function createNew(Content &$content, Request $request)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Method used for editing existing content page.
|
|
||||||
*
|
|
||||||
* Reason why it is separated from createNew() method is simple - we need to save history of changes.
|
|
||||||
*
|
|
||||||
* @param Content $content
|
|
||||||
* @param Request $request
|
|
||||||
*
|
|
||||||
* @param $revisionID string ID of revision used
|
|
||||||
*
|
|
||||||
* @return int number of edited fields
|
|
||||||
*/
|
|
||||||
public static function edit(Content &$content, Request $request, $revisionID)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Install module
|
|
||||||
*
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
public static function install()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -12,4 +12,4 @@
|
|||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require __DIR__ . '/Http/routes.php';
|
require __DIR__ . DIRECTORY_SEPARATOR.'Http'.DIRECTORY_SEPARATOR.'routes.php';
|
||||||
|
|||||||
@@ -12,4 +12,4 @@
|
|||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require __DIR__ . '/Http/routes.php';
|
require __DIR__ . DIRECTORY_SEPARATOR.'Http'.DIRECTORY_SEPARATOR.'routes.php';
|
||||||
|
|||||||
@@ -21,26 +21,25 @@ class ContactForm extends Handler implements ContentTitles, AdvancedContentModif
|
|||||||
* Save module-specific values into database
|
* Save module-specific values into database
|
||||||
*
|
*
|
||||||
* @param Content $content
|
* @param Content $content
|
||||||
* @param Request $request
|
* @param array $inputData
|
||||||
*
|
*
|
||||||
* @return mixed
|
* @return mixed
|
||||||
* @internal param Widget $widget
|
|
||||||
*/
|
*/
|
||||||
public static function createNew(Content &$content, Request $request)
|
public static function createNew(Content &$content, array $inputData)
|
||||||
{
|
{
|
||||||
$settings = [
|
$settings = [
|
||||||
'phone' => $request->phone,
|
'phone' => $inputData['phone'],
|
||||||
'email' => $request->email,
|
'email' => $inputData['email'],
|
||||||
'contactEmail' => $request->contactEmail,
|
'contactEmail' => $inputData['contactEmail'],
|
||||||
'subject' => $request->subject,
|
'subject' => $inputData['subject'],
|
||||||
'companyName' => $request->companyName,
|
'companyName' => $inputData['companyName'],
|
||||||
'address' => $request->address,
|
'address' => $inputData['address'],
|
||||||
'gpsLat' => $request->gpsLat,
|
'gpsLat' => $inputData['gpsLat'],
|
||||||
'gpsLng' => $request->gpsLng,
|
'gpsLng' => $inputData['gpsLng'],
|
||||||
];
|
];
|
||||||
|
|
||||||
// save settings
|
// save settings
|
||||||
$content->moduleSettings = json_encode($settings);
|
$content->moduleSettings = $settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
namespace Modules\ContactForm\Widgets\Address;
|
namespace Modules\ContactForm\Widgets\Address;
|
||||||
|
|
||||||
use App\CMS\Contracts\Widgets\PublicWidget;
|
use App\CMS\Contracts\Widgets\PublicWidget;
|
||||||
|
use App\Http\Requests\Request;
|
||||||
use App\Models\Widgets\Widget;
|
use App\Models\Widgets\Widget;
|
||||||
use App\CMS\Contracts\Widgets\WidgetRenderer;
|
use App\CMS\Contracts\Widgets\WidgetRenderer;
|
||||||
|
|
||||||
@@ -43,10 +44,8 @@ class Address implements PublicWidget
|
|||||||
*
|
*
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public static function save(Widget $widget, \stdClass $data)
|
public static function save(Request $data)
|
||||||
{
|
{
|
||||||
$widget->settings = json_encode(['contactFormId' => $data->contactFormId,]);
|
return ['contactFormId' => $data->contactFormId];
|
||||||
|
|
||||||
return $widget;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,7 @@ namespace Modules\ContactForm\Widgets\Form;
|
|||||||
|
|
||||||
use App\CMS\Contracts\Widgets\PublicWidget;
|
use App\CMS\Contracts\Widgets\PublicWidget;
|
||||||
use App\CMS\Contracts\Widgets\WidgetRenderer;
|
use App\CMS\Contracts\Widgets\WidgetRenderer;
|
||||||
|
use App\Http\Requests\Request;
|
||||||
use App\Models\Widgets\Widget;
|
use App\Models\Widgets\Widget;
|
||||||
|
|
||||||
class Form implements PublicWidget
|
class Form implements PublicWidget
|
||||||
@@ -43,10 +44,8 @@ class Form implements PublicWidget
|
|||||||
*
|
*
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public static function save(Widget $widget, \stdClass $data)
|
public static function save(Request $data)
|
||||||
{
|
{
|
||||||
$widget->settings = json_encode(['contactFormId' => $data->contactFormId,]);
|
return ['contactFormId' => $data->contactFormId];
|
||||||
|
|
||||||
return $widget;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6,6 +6,11 @@
|
|||||||
<textarea name="description" class="form-control" placeholder="@lang('admin/fileManager.directoryDescription')"
|
<textarea name="description" class="form-control" placeholder="@lang('admin/fileManager.directoryDescription')"
|
||||||
rows="3">{{old('description', $directory->description)}}</textarea>
|
rows="3">{{old('description', $directory->description)}}</textarea>
|
||||||
|
|
||||||
|
|
||||||
|
@if ($parentDirectory->id)
|
||||||
|
<input type="text" name="parentDirectory" value="{{$parentDirectory->id}}">
|
||||||
|
@endif
|
||||||
|
|
||||||
<button type="submit" class="btn btn-primary">
|
<button type="submit" class="btn btn-primary">
|
||||||
@if ($directory->id)
|
@if ($directory->id)
|
||||||
@lang('admin/fileManager.editDirectory')
|
@lang('admin/fileManager.editDirectory')
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
<div class="col-lg-2">
|
<div class="col-lg-2">
|
||||||
<div class="callout">
|
<div class="callout">
|
||||||
<figure class="user-img text-center figure">
|
<figure class="user-img text-center figure">
|
||||||
<img class="img-rounded" src="{{$user->gravatar(200)}}" alt="" />
|
<img class="img-rounded" src="@gravatar($user->email, 200)" alt="" />
|
||||||
|
|
||||||
@if($user->id == Auth::user()->id)
|
@if($user->id == Auth::user()->id)
|
||||||
<figcaption class="figure-caption">@lang('admin/userManagement.gravatarLink')</figcaption>
|
<figcaption class="figure-caption">@lang('admin/userManagement.gravatarLink')</figcaption>
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<div class="card-block container truncate sameheight-item">
|
<div class="card-block container truncate sameheight-item">
|
||||||
<div class="col-xs-12 text-center">
|
<div class="col-xs-12 text-center">
|
||||||
<a href="{{route('users.edit', ['id' => $user->id])}}">
|
<a href="{{route('users.edit', ['id' => $user->id])}}">
|
||||||
<img src="{{$user->gravatar(100)}}" alt="" />
|
<img src="{{\App\CMS\Helpers\Gravatar::img($user->email, 100)}}" alt="" />
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xs-12">
|
<div class="col-xs-12">
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
<div class="col-lg-4">
|
<div class="col-lg-4">
|
||||||
<h3>@lang('admin/widgetAreas.new')</h3>
|
<h3>@lang('admin/widgetAreas.new')</h3>
|
||||||
|
|
||||||
@include('admin.widgets.area.form', ['action' => route('widgetareas.postNew'), 'area' => new \App\Models\WidgetArea()])
|
@include('admin.widgets.area.form', ['action' => route('widgetareas.postNew'), 'area' => new \App\Models\Widgets\WidgetArea()])
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user