diff --git a/app/CMS/Contracts/Content/AdvancedContentModifier.php b/app/CMS/Contracts/Content/AdvancedContentModifier.php index a8b43da1..6956dd9b 100644 --- a/app/CMS/Contracts/Content/AdvancedContentModifier.php +++ b/app/CMS/Contracts/Content/AdvancedContentModifier.php @@ -9,11 +9,11 @@ interface AdvancedContentModifier { * Save module-specific values into database * * @param Content $content - * @param Request $request + * @param array $inputData * * @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. diff --git a/app/CMS/Contracts/Repositories/Template.php b/app/CMS/Contracts/Repositories/Template.php index 417e94a9..c0b1ec50 100644 --- a/app/CMS/Contracts/Repositories/Template.php +++ b/app/CMS/Contracts/Repositories/Template.php @@ -2,6 +2,7 @@ namespace App\CMS\Contracts\Repositories; use App\Models\Module as ModuleModel; +use App\Models\Templates\Template as TemplateModel; interface Template { @@ -12,6 +13,8 @@ interface Template const CUSTOM_EDIT_DIRECTORY = 1; const ORIGINAL_DIRECTORY = 2; + public function setModel(TemplateModel $model); + public function getPathToTemplate(); public function getForModule(ModuleModel $module); diff --git a/app/CMS/Handlers/BaseHandler.php b/app/CMS/Handlers/BaseHandler.php index 7ad05efe..c7ae9574 100644 --- a/app/CMS/Handlers/BaseHandler.php +++ b/app/CMS/Handlers/BaseHandler.php @@ -34,7 +34,6 @@ abstract class BaseHandler implements BaseModuleHandler * Submenus can be registered later */ $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']); }, 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']); } - // $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('settings.overview', trans('admin/mainMenu.settings'), [], 80, ['icon' => 'fa fa-fw fa-gear']); }, 10000, ['icon' => 'fa fa-fw fa-gears']); }); - // order - // create menu with user profile \Menu::create('profileMenu', function ($menu) { $menu->route('users.detail', trans('admin/userManagement.profile'), [], 10, ['icon' => 'fa fa-fw fa-user icon']); diff --git a/app/CMS/Handlers/Registrators/TemplateRegistrator.php b/app/CMS/Handlers/Registrators/TemplateRegistrator.php index 6937fb7d..a9adfd73 100644 --- a/app/CMS/Handlers/Registrators/TemplateRegistrator.php +++ b/app/CMS/Handlers/Registrators/TemplateRegistrator.php @@ -1,9 +1,10 @@ id, $templateName); @@ -295,12 +303,17 @@ class TemplateRegistrator * * @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(Template::TEMPLATE_SUFFIX, '', $templateName); + $templateName = preg_replace('/\.{2,}/', '.', $templateName); - return $this->namespace . $templateName; + return $this->namespace . trim($templateName, '.'); } } diff --git a/app/CMS/Handlers/Registrators/WidgetRegistrator.php b/app/CMS/Handlers/Registrators/WidgetRegistrator.php index c8ebf27c..5fceff82 100644 --- a/app/CMS/Handlers/Registrators/WidgetRegistrator.php +++ b/app/CMS/Handlers/Registrators/WidgetRegistrator.php @@ -8,7 +8,6 @@ class WidgetRegistrator { protected $registeredWidgets = []; - /** * Method used for registering new widgets * @@ -51,7 +50,9 @@ class WidgetRegistrator ]); // install widget (if neccessary) - call_user_func($classname . '::install'); + if (is_callable([$classname, 'install'])) { + call_user_func($classname . '::install'); + } } } } diff --git a/app/CMS/Helpers/CurrentTemplate.php b/app/CMS/Helpers/CurrentTemplate.php index 68b8fec0..b8b2d796 100644 --- a/app/CMS/Helpers/CurrentTemplate.php +++ b/app/CMS/Helpers/CurrentTemplate.php @@ -28,7 +28,7 @@ class CurrentTemplate implements TemplateHandler throw new \ErrorException('DB not migrated, please, do so!'); } if (self::$template) { - self::$template->moduleSettings = json_decode(self::$template->moduleSettings); + self::$template->module_settings = json_decode(self::$template->module_settings); } self::$initialized = true; diff --git a/app/CMS/Helpers/Widget.php b/app/CMS/Helpers/Widget.php index aa075c82..8dd25d37 100644 --- a/app/CMS/Helpers/Widget.php +++ b/app/CMS/Helpers/Widget.php @@ -7,7 +7,7 @@ class Widget { $handler = $widget->widget_type_handler; - if (!is_object($widget->settings)) { + if (is_string($widget->settings)) { $widget->settings = json_decode($widget->settings); } diff --git a/app/CMS/Interactions/Admin/Content/EditContent.php b/app/CMS/Interactions/Admin/Content/EditContent.php index 94eca57b..b864ea7a 100644 --- a/app/CMS/Interactions/Admin/Content/EditContent.php +++ b/app/CMS/Interactions/Admin/Content/EditContent.php @@ -85,7 +85,6 @@ class EditContent implements Interaction 'url' => 'required|unique:contents,url,' . $id.',id,deleted_at,NULL,language,' . LaravelLocalization::getCurrentLocale(), 'publishedFrom' => 'date', 'publishedTo' => 'date', - 'titlePhoto' => 'exists:files,id', 'status' => 'required|in:' . $statuses, 'parentPage' => 'exists:contents,id' ]; diff --git a/app/CMS/MenuPresenters/FoundationDrilldownMenuPresenter.php b/app/CMS/MenuPresenters/FoundationDrilldownMenuPresenter.php index 64d027df..c20a59d6 100644 --- a/app/CMS/MenuPresenters/FoundationDrilldownMenuPresenter.php +++ b/app/CMS/MenuPresenters/FoundationDrilldownMenuPresenter.php @@ -77,6 +77,6 @@ class FoundationDrilldownMenuPresenter extends Presenter
- ' . PHP_EOL;; + ' . PHP_EOL; } } \ No newline at end of file diff --git a/app/CMS/MenuPresenters/FoundationDropdownMenuPresenter.php b/app/CMS/MenuPresenters/FoundationDropdownMenuPresenter.php index 07562b58..2be1a8a6 100644 --- a/app/CMS/MenuPresenters/FoundationDropdownMenuPresenter.php +++ b/app/CMS/MenuPresenters/FoundationDropdownMenuPresenter.php @@ -56,6 +56,6 @@ class FoundationDropdownMenuPresenter extends Presenter - ' . PHP_EOL;; + ' . PHP_EOL; } } \ No newline at end of file diff --git a/app/CMS/Observers/Content.php b/app/CMS/Observers/Content.php index c5cca5d7..b8c9118d 100644 --- a/app/CMS/Observers/Content.php +++ b/app/CMS/Observers/Content.php @@ -107,7 +107,7 @@ class Content } $moduleSettings = (array)json_decode($changed['moduleSettings']); - $originalSettings = (array)json_decode($original['moduleSettings']); + $originalSettings = isset($original['moduleSettings']) ? (array)json_decode($original['moduleSettings']) : []; unset($changed['moduleSettings']); $settingChanged = array_keys(array_diff_assoc($moduleSettings, $originalSettings)); diff --git a/app/CMS/Repositories/Templates/Template.php b/app/CMS/Repositories/Templates/Template.php index 310b0ec5..dff25732 100644 --- a/app/CMS/Repositories/Templates/Template.php +++ b/app/CMS/Repositories/Templates/Template.php @@ -8,7 +8,7 @@ use App\Models\Templates\Template as TemplateModel; class Template extends Repository implements ITemplate { - public function __construct(TemplateModel $model) + public function setModel(TemplateModel $model) { $this->model = $model; } @@ -23,7 +23,7 @@ class Template extends Repository implements ITemplate public function getPathToTemplate($mode = null) { $templateName = $this->model->template_name; - $path = $this->model->path()->get(); + $path = $this->model->templatePath; // delete namespace if given if (strpos($this->model->template_name, '::')) { @@ -66,9 +66,10 @@ class Template extends Repository implements ITemplate } } - public function getForModule(Module $module) { - return Template::where('module_id', $module->id) - ->select(['template_name', 'name', 'description']) - ->get(); + public function getForModule(Module $module) + { + return TemplateModel::where('module_id', $module->id) + ->select(['template_name', 'name', 'description']) + ->get(); } } \ No newline at end of file diff --git a/app/CMS/Widgets/Menu/Menu.php b/app/CMS/Widgets/Menu/Menu.php index 8dde5374..21cf66e9 100644 --- a/app/CMS/Widgets/Menu/Menu.php +++ b/app/CMS/Widgets/Menu/Menu.php @@ -7,6 +7,7 @@ use App\CMS\Widgets\Exceptions\MissingParameterException; use App\Http\Requests\Request; use App\Models\Content\Content; use Mcamara\LaravelLocalization\Facades\LaravelLocalization; +use App\CMS\Contracts\Repositories\Content as IContent; class Menu implements PublicWidget { @@ -66,10 +67,10 @@ class Menu implements PublicWidget public static function selectContentPages($ids) { - $allowedStatuses = [Content::STATUS_PUBLIC]; + $allowedStatuses = [IContent::STATUS_PUBLIC]; if (\Auth::user()) { - $allowedStatuses[] = Content::STATUS_PROTECTED; + $allowedStatuses[] = IContent::STATUS_PROTECTED; } $pages = Content::where('language', LaravelLocalization::getCurrentLocale()) diff --git a/app/CMS/Widgets/Menu/Presenters/Menu.php b/app/CMS/Widgets/Menu/Presenters/Menu.php index 502a5b27..040dda3e 100644 --- a/app/CMS/Widgets/Menu/Presenters/Menu.php +++ b/app/CMS/Widgets/Menu/Presenters/Menu.php @@ -4,9 +4,9 @@ namespace App\CMS\Widgets\Menu\Presenters; use App\CMS\Contracts\Repositories\Content as ContentContract; use App\CMS\Contracts\Widgets\WidgetRenderer; use App\CMS\Widgets\Menu\Menu as WidgetMenu; -use App\Models\Content\Content; use App\Models\Widgets\Widget; use App\Models\Widgets\WidgetType; +use Illuminate\Support\Collection; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Route; @@ -79,24 +79,19 @@ class Menu implements WidgetRenderer */ public static function renderAddForm(WidgetType $type) { - $extensions = App::make('registerMenuExtension') - ->get(); - $widget = new Widget(); - $content = new Content(); + $content = app(ContentContract::class); // get list of all pages - $pages = $content->getOverview() - ->get(); + $pages = $content->getOverview(); + $widget->settings = new \stdClass(); + $widget->settings->links = []; - $widget->settingsObj = new \stdClass(); - $widget->settingsObj->links = new \stdClass(); return view('admin.widgets.menu.new', [ - 'type' => $type, - 'widget' => $widget, - 'pages' => $pages, - 'extensions' => $extensions + 'type' => $type, + 'widget' => $widget, + 'pages' => $pages, ]); } diff --git a/app/Console/Commands/AddLanguage.php b/app/Console/Commands/AddLanguage.php index b24ce5be..e6faf1b4 100644 --- a/app/Console/Commands/AddLanguage.php +++ b/app/Console/Commands/AddLanguage.php @@ -32,8 +32,6 @@ class AddLanguage extends Command /** * Execute the console command. - * - * @return mixed */ public function handle() { diff --git a/app/Console/Commands/ChangePassword.php b/app/Console/Commands/ChangePassword.php index a97e8f91..d8ab70a9 100644 --- a/app/Console/Commands/ChangePassword.php +++ b/app/Console/Commands/ChangePassword.php @@ -24,8 +24,6 @@ class ChangePassword extends Command /** * Execute the console command. - * - * @return mixed */ public function handle() { diff --git a/app/Console/Commands/InstallModule.php b/app/Console/Commands/InstallModule.php index ad5fffc5..3fc9c292 100644 --- a/app/Console/Commands/InstallModule.php +++ b/app/Console/Commands/InstallModule.php @@ -93,7 +93,7 @@ class InstallModule extends Command } // we cannot rely on config() helper, because this module does not have to be published - $config = @include($path); + $config = include($path); return $config; } @@ -146,7 +146,7 @@ class InstallModule extends Command throw new \Exception('Module ' . $config['name'] . ' already exists in database.'); } - if (!$module) { + if (is_null($module)) { // insert module into database $settings = [ 'staticName' => $this->moduleName, diff --git a/app/Events/AssignWidget.php b/app/Events/AssignWidget.php index 15f687e6..8b1d3ce5 100644 --- a/app/Events/AssignWidget.php +++ b/app/Events/AssignWidget.php @@ -3,7 +3,7 @@ namespace App\Events; use App\Models\Widgets\Widget; -use App\Models\WidgetArea; +use App\Models\Widgets\WidgetArea; use Illuminate\Queue\SerializesModels; class AssignWidget extends Event diff --git a/app/Events/CreateNewWidgetArea.php b/app/Events/CreateNewWidgetArea.php index 564e394e..f4fa03ea 100644 --- a/app/Events/CreateNewWidgetArea.php +++ b/app/Events/CreateNewWidgetArea.php @@ -2,7 +2,7 @@ namespace App\Events; -use App\Models\WidgetArea; +use App\Models\Widgets\WidgetArea; use Illuminate\Queue\SerializesModels; class CreateNewWidgetArea extends Event diff --git a/app/Events/RemoveWidgetFromArea.php b/app/Events/RemoveWidgetFromArea.php index ffe6b932..6672ffe6 100644 --- a/app/Events/RemoveWidgetFromArea.php +++ b/app/Events/RemoveWidgetFromArea.php @@ -3,7 +3,7 @@ namespace App\Events; use App\Models\Widgets\Widget; -use App\Models\WidgetArea; +use App\Models\Widgets\WidgetArea; use Illuminate\Queue\SerializesModels; class RemoveWidgetFromArea extends Event diff --git a/app/Http/Controllers/Admin/FileManager/CreateNewDirectory.php b/app/Http/Controllers/Admin/FileManager/CreateNewDirectory.php index 8fb67771..f6b4732c 100644 --- a/app/Http/Controllers/Admin/FileManager/CreateNewDirectory.php +++ b/app/Http/Controllers/Admin/FileManager/CreateNewDirectory.php @@ -34,7 +34,7 @@ class CreateNewDirectory extends Controller * * @return $this|\Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse */ - public function postNew(Request $request) + public function store(Request $request) { // create new directory try { diff --git a/app/Http/Controllers/Admin/FileManager/UploadFile.php b/app/Http/Controllers/Admin/FileManager/UploadFile.php index 645bd027..144f41b1 100644 --- a/app/Http/Controllers/Admin/FileManager/UploadFile.php +++ b/app/Http/Controllers/Admin/FileManager/UploadFile.php @@ -1,6 +1,7 @@ Input::get('CKEditor'), 'funcNumber' => Input::get('CKEditorFuncNum'), - 'fileUrl' => Template::upload($uploadedFile['filename']) + 'fileUrl' => Path::upload($uploadedFile['filename']) ]); } diff --git a/app/Http/Controllers/Admin/FileManager/UploadedFilesOverview.php b/app/Http/Controllers/Admin/FileManager/UploadedFilesOverview.php index 9363e192..55c3a69e 100644 --- a/app/Http/Controllers/Admin/FileManager/UploadedFilesOverview.php +++ b/app/Http/Controllers/Admin/FileManager/UploadedFilesOverview.php @@ -14,17 +14,28 @@ class UploadedFilesOverview extends Controller * * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ - public function index(Directory $directory =null) + public function index(Directory $directory = null) { // include hidden directories? $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', [ - 'directory' => $directory, - 'subdirectories' => $subdirectories, - 'newDirectory' => new Directory() + 'directory' => $directory, + 'subdirectories' => $subdirectories, + 'newDirectory' => new Directory(), + 'parentDirectory' => $directory ]); } } diff --git a/app/Http/Controllers/Admin/Templates/EditTemplate.php b/app/Http/Controllers/Admin/Templates/EditTemplate.php index 7170b4f8..e154b8d2 100644 --- a/app/Http/Controllers/Admin/Templates/EditTemplate.php +++ b/app/Http/Controllers/Admin/Templates/EditTemplate.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Admin\Templates; +use App\CMS\Contracts\Repositories\Template as TemplateRepositoryContract; use App\Http\Controllers\Controller; use App\Http\Requests; use App\Http\Requests\EditTemplateRequest; @@ -24,17 +25,19 @@ class EditTemplate extends Controller * @var $template Template */ $template = Template::findOrFail($template); - $path = $template->getPath(); + + $repo = app(TemplateRepositoryContract::class); + $repo->setModel($template); // load template content - $absolutePath = $template->getPathToTemplate(); + $absolutePath = $repo->getPathToTemplate(); $content = @file_get_contents($absolutePath); return view('admin.templates.edit', [ 'template' => $template, 'templateContent' => $content, 'isWritable' => is_writable(dirname($absolutePath)), - 'path' => $path, + 'path' => $template->templatePath, ]); } diff --git a/app/Http/Controllers/Admin/Users/UserDetail.php b/app/Http/Controllers/Admin/Users/UserDetail.php index 70825a5b..ae6c1d3e 100644 --- a/app/Http/Controllers/Admin/Users/UserDetail.php +++ b/app/Http/Controllers/Admin/Users/UserDetail.php @@ -4,8 +4,8 @@ namespace App\Http\Controllers\Admin\Users; use App\CMS\Enumerations\UserRoles; use App\CMS\Enumerations\UserStates; +use App\Cms\Repositories\ActionLog\Actions; use App\Http\Controllers\Admin\Controller; -use App\Http\Requests; use App\Models\ActionLog\ActionLog; use App\Models\User; use Illuminate\Support\Facades\Auth; @@ -17,7 +17,7 @@ class UserDetail extends Controller */ private $log; - function __construct(ActionLog $log) + function __construct(Actions $log) { $this->log = $log; } @@ -38,10 +38,10 @@ class UserDetail extends Controller $states = UserStates::getWithTranslations(); return view('admin.userManagement.detail', [ - 'user' => $user, + 'user' => $user, 'statuses' => $states, - 'roles' => $roles, - 'actions' => $actions + 'roles' => $roles, + 'actions' => $actions ]); } } \ No newline at end of file diff --git a/app/Http/Controllers/Admin/Widgets/AssociateWidget.php b/app/Http/Controllers/Admin/Widgets/AssociateWidget.php index 2723002b..58c2609f 100644 --- a/app/Http/Controllers/Admin/Widgets/AssociateWidget.php +++ b/app/Http/Controllers/Admin/Widgets/AssociateWidget.php @@ -6,8 +6,8 @@ use App\Events\AssignWidget; use App\Events\RemoveWidgetFromArea; use App\Http\Controllers\Admin\Controller; use App\Models\Widgets\Widget; -use App\Models\WidgetArea; -use App\Models\WidgetInWidgetArea; +use App\Models\Widgets\WidgetArea; +use App\Models\Widgets\WidgetInWidgetArea; use Illuminate\Database\QueryException; use Illuminate\Support\Facades\Event; use Mcamara\LaravelLocalization\Facades\LaravelLocalization; diff --git a/app/Http/Controllers/Admin/Widgets/EditWidget.php b/app/Http/Controllers/Admin/Widgets/EditWidget.php index 51271736..81ca9ad2 100644 --- a/app/Http/Controllers/Admin/Widgets/EditWidget.php +++ b/app/Http/Controllers/Admin/Widgets/EditWidget.php @@ -1,10 +1,10 @@ widget_type_handler, 'save'], $widget, (object)$request->all()); + $widget->settings = json_encode(call_user_func([$widget->widget_type_handler, 'save'], $request)); } catch (MissingParameterException $e) { // user omitted some value return $this->invalidWidget($e->getMessage()); @@ -64,7 +64,7 @@ class EditWidget extends Controller // redirect with success notification return redirect() - ->route('widgets.overview') + ->back() ->with('success', trans('admin/widgets.successfullyEdited')); } diff --git a/app/Models/Content/ModelTraits/ContentHistory.php b/app/Models/Content/ModelTraits/ContentHistory.php index 7e1f2fbd..791d89dc 100644 --- a/app/Models/Content/ModelTraits/ContentHistory.php +++ b/app/Models/Content/ModelTraits/ContentHistory.php @@ -1,10 +1,9 @@ history() ->select('content_history.*', 'contents.moduleHandler', 'users.email AS user_email', 'users.name AS user_name') diff --git a/app/Models/ModelTraits/Module.php b/app/Models/ModelTraits/Module.php index 7f206f2b..a60cfd61 100644 --- a/app/Models/ModelTraits/Module.php +++ b/app/Models/ModelTraits/Module.php @@ -1,11 +1,14 @@ has_submodules = true; $parentModule->save(); } // insert module into database - $module = Module::create([ - 'name' => $name, - 'description' => $description, - 'handler' => $handler, - 'manages_content' => $managesContent, - 'support_categories' => $supportCategories, - 'alias' => $alias, - 'moduleSettings' => json_encode($settings), - 'parent_id' => $parentModuleId ? $parentModuleId : null, - 'enabled' => 1, - 'is_template' => $isTemplate - ]); + $module = ModuleModel::create([ + 'name' => $name, + 'description' => $description, + 'handler' => $handler, + 'manages_content' => $managesContent, + 'support_categories' => $supportCategories, + 'alias' => $alias, + 'module_settings' => json_encode($settings), + 'parent_id' => $parentModuleId ? $parentModuleId : null, + 'enabled' => 1, + 'is_template' => $isTemplate + ]); // install something module-specific - if ($handler) { + if ($handler && is_callable([$handler, 'install'])) { call_user_func([$handler, 'install']); } @@ -77,7 +80,8 @@ trait Module { $this->deleteDirectory(public_path('assets')); // delete all template paths - TemplatePath::getQuery()->delete(); + TemplatePath::getQuery() + ->delete(); } if ($this->handler && is_callable([$this->handler, 'uninstall'])) { @@ -96,8 +100,9 @@ trait Module { */ private function deleteDirectory($directory) { - if (!is_dir($directory)) + if (!is_dir($directory)) { return; + } $success = \File::deleteDirectory($directory, true); diff --git a/app/Models/Module.php b/app/Models/Module.php index ab569966..f6940aad 100644 --- a/app/Models/Module.php +++ b/app/Models/Module.php @@ -17,7 +17,7 @@ class Module extends Model 'name', 'description', 'alias', - 'moduleSettings', + 'module_settings', 'enabled', 'support_categories', 'manages_content', diff --git a/app/Models/Templates/Template.php b/app/Models/Templates/Template.php index 129e778f..d77e8d8d 100644 --- a/app/Models/Templates/Template.php +++ b/app/Models/Templates/Template.php @@ -21,7 +21,8 @@ class Template extends Model * * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ - public function path() { + public function templatePath() + { return $this->belongsTo(TemplatePath::class, 'path'); } } \ No newline at end of file diff --git a/app/Providers/ModuleManager.php b/app/Providers/ModuleManager.php index 369ddd6c..ca771d88 100644 --- a/app/Providers/ModuleManager.php +++ b/app/Providers/ModuleManager.php @@ -25,13 +25,11 @@ class ModuleManager extends ServiceProvider // iterate over all modules and enable or disable them foreach ($modules as $module) { - - $module->moduleSettings = json_decode($module->moduleSettings); + $module->module_settings = json_decode($module->module_settings); if ($module->is_template) { - - if (isset($module->moduleSettings->providers) && !empty($module->moduleSettings->providers)) { - foreach ($module->moduleSettings->providers as $provider) { + if (isset($module->module_settings->providers) && !empty($module->module_settings->providers)) { + foreach ($module->module_settings->providers as $provider) { $this->app->register($provider); } } @@ -61,7 +59,7 @@ class ModuleManager extends ServiceProvider */ private function createModulesJson(Module $module) { - $config = $module->moduleSettings; + $config = $module->module_settings; if (is_null($config)) { return; diff --git a/app/Providers/ModuleServiceProvider.php b/app/Providers/ModuleServiceProvider.php index d9d338ce..a121b014 100644 --- a/app/Providers/ModuleServiceProvider.php +++ b/app/Providers/ModuleServiceProvider.php @@ -3,18 +3,19 @@ namespace App\Providers; use Illuminate\Support\ServiceProvider; -abstract class ModuleServiceProvider extends ServiceProvider { +abstract class ModuleServiceProvider extends ServiceProvider +{ /** * Indicates if loading of the provider is deferred. * * @var bool */ protected $defer = false; - protected $alias = false; protected $path = false; abstract protected function setModuleAlias(); + abstract protected function setModulePath(); /** @@ -26,7 +27,7 @@ abstract class ModuleServiceProvider extends ServiceProvider { { $this->setModuleAlias(); $this->setModulePath(); - + $this->registerTranslations(); $this->registerConfig(); $this->registerViews(); @@ -39,7 +40,7 @@ abstract class ModuleServiceProvider extends ServiceProvider { */ protected function registerConfig() { - $this->publishes([$this->path . '/../Config/config.php' => config_path($this->alias.'.php')]); + $this->publishes([$this->path . '/../Config/config.php' => config_path($this->alias . '.php')]); $this->mergeConfigFrom($this->path . '/../Config/config.php', $this->alias); } @@ -54,14 +55,16 @@ abstract class ModuleServiceProvider extends ServiceProvider { */ protected function registerViews() { - $viewPath = base_path('resources/views/modules/'.$this->alias); + $viewPath = base_path('resources/views/modules/' . $this->alias); $sourcePath = $this->path . '/../Resources/views'; - $this->publishes([$sourcePath => $viewPath], 'module-views'); - $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); + + 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); } - } \ No newline at end of file diff --git a/app/Providers/SubmodulesManager.php b/app/Providers/SubmodulesManager.php index e1f82ca5..ee8bbe77 100644 --- a/app/Providers/SubmodulesManager.php +++ b/app/Providers/SubmodulesManager.php @@ -44,7 +44,7 @@ class SubmodulesManager extends ServiceProvider $initFiles = $config->get('files', []); foreach ($initFiles as $file) { - @include $submodulePath . DIRECTORY_SEPARATOR . $file; + require $submodulePath . DIRECTORY_SEPARATOR . $file; } } catch (FileNotFoundException $e) { // ignore missing module and do not register this submodule diff --git a/app/Providers/TemplateServiceProvider.php b/app/Providers/TemplateServiceProvider.php index d61eecf5..8ca241a5 100644 --- a/app/Providers/TemplateServiceProvider.php +++ b/app/Providers/TemplateServiceProvider.php @@ -5,6 +5,7 @@ namespace App\Providers; use App\CMS\Contracts\Repositories\Template as TemplateContract; use App\CMS\Handlers\Registrators\TemplateRegistrator; use App\CMS\Helpers\CurrentTemplate; +use App\Models\Module; use Illuminate\Support\Facades\App; use Illuminate\Support\ServiceProvider; @@ -44,6 +45,9 @@ class TemplateServiceProvider extends ServiceProvider public function registerTemplatePaths($publicTemplates) { + $modules = Module::all() + ->pluck('id', 'alias'); + /** * @var $registrator TemplateRegistrator */ @@ -51,14 +55,17 @@ class TemplateServiceProvider extends ServiceProvider foreach ($publicTemplates as $template) { // setup some global variables $module = strtolower($template['module']); + $alias = isset($template['alias']) ? $template['alias'] : $module; $namespace = isset($template['namespace']) ? $template['namespace'] : strtolower($template['module']); + if (!$modules->get($alias)) { + continue; + } + // register path with current template name $registrator->setNamespace($namespace); - if (is_callable([config($module . '.handler'), 'getModuleId'])) { - $registrator->setModuleId(call_user_func([config($module . '.handler'), 'getModuleId'])); - } + $registrator->setModuleId($modules->get($alias)); $registrator->register('resources/views/modules/' . $module, 'visitor', $template['templateName']); } @@ -81,11 +88,11 @@ class TemplateServiceProvider extends ServiceProvider private function publishViewResources() { $template = CurrentTemplate::get(); - if (!$template || is_null($template->moduleSettings)) { + if (!$template || is_null($template->module_settings)) { return; } - $templateDir = base_path('templates/' . $template->moduleSettings->staticName . '/Resources'); + $templateDir = base_path('templates/' . $template->module_settings->staticName . '/Resources'); $assetsDir = $templateDir . '/' . TemplateContract::ASSETS_DIRECTORY; $viewsDir = $templateDir . '/views'; diff --git a/modules/Blog/Article/Handlers/Article.php b/modules/Blog/Article/Handlers/Article.php index 901eaa2b..ff9d82d5 100644 --- a/modules/Blog/Article/Handlers/Article.php +++ b/modules/Blog/Article/Handlers/Article.php @@ -59,9 +59,9 @@ class Article extends Handler implements ContentTitles, AdvancedContentModifier, * * @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'])]; } /** diff --git a/modules/Blog/Article/start.php b/modules/Blog/Article/start.php index 7be329cb..7d8ae759 100644 --- a/modules/Blog/Article/start.php +++ b/modules/Blog/Article/start.php @@ -12,4 +12,4 @@ | */ -require __DIR__ . '/Http/routes.php'; +require __DIR__ . DIRECTORY_SEPARATOR.'Http'.DIRECTORY_SEPARATOR.'routes.php'; diff --git a/modules/Blog/ArticleList/Handlers/ArticleList.php b/modules/Blog/ArticleList/Handlers/ArticleList.php index 2b3dfa10..36da6853 100644 --- a/modules/Blog/ArticleList/Handlers/ArticleList.php +++ b/modules/Blog/ArticleList/Handlers/ArticleList.php @@ -1,10 +1,8 @@ '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() { 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() - { - } } \ No newline at end of file diff --git a/modules/Blog/ArticleList/start.php b/modules/Blog/ArticleList/start.php index 7be329cb..7d8ae759 100644 --- a/modules/Blog/ArticleList/start.php +++ b/modules/Blog/ArticleList/start.php @@ -12,4 +12,4 @@ | */ -require __DIR__ . '/Http/routes.php'; +require __DIR__ . DIRECTORY_SEPARATOR.'Http'.DIRECTORY_SEPARATOR.'routes.php'; diff --git a/modules/Categories/start.php b/modules/Categories/start.php index 7be329cb..7d8ae759 100644 --- a/modules/Categories/start.php +++ b/modules/Categories/start.php @@ -12,4 +12,4 @@ | */ -require __DIR__ . '/Http/routes.php'; +require __DIR__ . DIRECTORY_SEPARATOR.'Http'.DIRECTORY_SEPARATOR.'routes.php'; diff --git a/modules/ContactForm/Handlers/ContactForm.php b/modules/ContactForm/Handlers/ContactForm.php index 695ca5b8..32dfe010 100644 --- a/modules/ContactForm/Handlers/ContactForm.php +++ b/modules/ContactForm/Handlers/ContactForm.php @@ -21,26 +21,25 @@ class ContactForm extends Handler implements ContentTitles, AdvancedContentModif * Save module-specific values into database * * @param Content $content - * @param Request $request + * @param array $inputData * * @return mixed - * @internal param Widget $widget */ - public static function createNew(Content &$content, Request $request) + public static function createNew(Content &$content, array $inputData) { $settings = [ - 'phone' => $request->phone, - 'email' => $request->email, - 'contactEmail' => $request->contactEmail, - 'subject' => $request->subject, - 'companyName' => $request->companyName, - 'address' => $request->address, - 'gpsLat' => $request->gpsLat, - 'gpsLng' => $request->gpsLng, + 'phone' => $inputData['phone'], + 'email' => $inputData['email'], + 'contactEmail' => $inputData['contactEmail'], + 'subject' => $inputData['subject'], + 'companyName' => $inputData['companyName'], + 'address' => $inputData['address'], + 'gpsLat' => $inputData['gpsLat'], + 'gpsLng' => $inputData['gpsLng'], ]; // save settings - $content->moduleSettings = json_encode($settings); + $content->moduleSettings = $settings; } /** diff --git a/modules/ContactForm/Widgets/Address/Address.php b/modules/ContactForm/Widgets/Address/Address.php index 69e7a822..75d6f63f 100644 --- a/modules/ContactForm/Widgets/Address/Address.php +++ b/modules/ContactForm/Widgets/Address/Address.php @@ -2,6 +2,7 @@ namespace Modules\ContactForm\Widgets\Address; use App\CMS\Contracts\Widgets\PublicWidget; +use App\Http\Requests\Request; use App\Models\Widgets\Widget; use App\CMS\Contracts\Widgets\WidgetRenderer; @@ -43,10 +44,8 @@ class Address implements PublicWidget * * @return mixed */ - public static function save(Widget $widget, \stdClass $data) + public static function save(Request $data) { - $widget->settings = json_encode(['contactFormId' => $data->contactFormId,]); - - return $widget; + return ['contactFormId' => $data->contactFormId]; } } \ No newline at end of file diff --git a/modules/ContactForm/Widgets/Form/Form.php b/modules/ContactForm/Widgets/Form/Form.php index 54a8e93a..cb30e07f 100644 --- a/modules/ContactForm/Widgets/Form/Form.php +++ b/modules/ContactForm/Widgets/Form/Form.php @@ -3,6 +3,7 @@ namespace Modules\ContactForm\Widgets\Form; use App\CMS\Contracts\Widgets\PublicWidget; use App\CMS\Contracts\Widgets\WidgetRenderer; +use App\Http\Requests\Request; use App\Models\Widgets\Widget; class Form implements PublicWidget @@ -43,10 +44,8 @@ class Form implements PublicWidget * * @return mixed */ - public static function save(Widget $widget, \stdClass $data) + public static function save(Request $data) { - $widget->settings = json_encode(['contactFormId' => $data->contactFormId,]); - - return $widget; + return ['contactFormId' => $data->contactFormId]; } } \ No newline at end of file diff --git a/resources/views/admin/fileManager/directories/form.blade.php b/resources/views/admin/fileManager/directories/form.blade.php index 2f24dcff..9ab1c3eb 100644 --- a/resources/views/admin/fileManager/directories/form.blade.php +++ b/resources/views/admin/fileManager/directories/form.blade.php @@ -6,10 +6,15 @@ + + @if ($parentDirectory->id) + + @endif +