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/CustomFields/BaseField.php b/app/CMS/CustomFields/BaseField.php deleted file mode 100644 index 88a174fe..00000000 --- a/app/CMS/CustomFields/BaseField.php +++ /dev/null @@ -1,6 +0,0 @@ -id, $type->name); - } - } -} \ No newline at end of file diff --git a/app/CMS/Enumerations/CustomFieldTypes.php b/app/CMS/Enumerations/CustomFieldTypes.php deleted file mode 100644 index a2761761..00000000 --- a/app/CMS/Enumerations/CustomFieldTypes.php +++ /dev/null @@ -1,21 +0,0 @@ -id, $type->name); - } - } -} \ No newline at end of file diff --git a/app/CMS/Exceptions/FileManager/SubdirectoryExistsInDirectory.php b/app/CMS/Exceptions/FileManager/SubdirectoryExistsInDirectory.php new file mode 100644 index 00000000..c66527da --- /dev/null +++ b/app/CMS/Exceptions/FileManager/SubdirectoryExistsInDirectory.php @@ -0,0 +1,6 @@ +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/Interaction.php b/app/CMS/Handlers/Interaction.php index 25b0fb35..d31338ed 100644 --- a/app/CMS/Handlers/Interaction.php +++ b/app/CMS/Handlers/Interaction.php @@ -24,7 +24,7 @@ class Interaction * @var $interaction InteractionContract */ - $interaction = App::make($interactionClass); + $interaction = app($interactionClass); // validate interaction $validator = Validator::make($data, $interaction->getValidationRules($extraParameters)); 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/FileManager.php b/app/CMS/Helpers/FileManager.php index 845ec787..63c01e48 100644 --- a/app/CMS/Helpers/FileManager.php +++ b/app/CMS/Helpers/FileManager.php @@ -98,7 +98,7 @@ class FileManager return $string; break; case 'application': - return ''; + return ''; break; default: return self::getPreview($file); diff --git a/app/CMS/Helpers/RootDirectory.php b/app/CMS/Helpers/RootDirectory.php new file mode 100644 index 00000000..c0a4c88f --- /dev/null +++ b/app/CMS/Helpers/RootDirectory.php @@ -0,0 +1,49 @@ +name = 'Root'; + $directory->is_root = true; + $directory->save(); + + Directory::whereNull('parent_id') + ->where('is_root', false) + ->update(['parent_id' => $directory->id]); + + File::where('directory_id', null) + ->update(['directory_id' => $directory->id]); + + return $directory; + } + + /** + * Get root directory + * + * @return Directory + */ + public static function get() + { + self::$directory = Directory::where('is_root', true) + ->first(); + + if (is_null(self::$directory)) { + self::$directory = self::create(); + } + + return self::$directory; + } +} 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/Interactions/Admin/FileManager/CreateDirectory.php b/app/CMS/Interactions/Admin/FileManager/CreateDirectory.php index e69de29b..db6069cc 100644 --- a/app/CMS/Interactions/Admin/FileManager/CreateDirectory.php +++ b/app/CMS/Interactions/Admin/FileManager/CreateDirectory.php @@ -0,0 +1,65 @@ +repository = $repository; + } + + /** + * Perform given action + * + * @param $data array input data + * @param $parameters array parameters + * + * @return Directory + * @throws SubdirectoryExistsInDirectory + */ + public function handle($data, $parameters) + { + $data['parentDirectory'] = isset($data['parentDirectory']) ? $data['parentDirectory'] : null; + + // todo this should probably go into validation, but we are not able to get $data in getValidationRules + // check if created folder does not exist in current directory + if ($this->repository->checkIfNameExists($data['name'], $data['parentDirectory'])) { + throw new SubdirectoryExistsInDirectory(); + } + + // todo use Directory::create() and rename columns/fields in request + // create new database entry + $directory = new Directory(); + $directory->name = $data['name']; + $directory->parent_id = $data['parentDirectory']; + $directory->user_id = \Auth::user()->id; + $directory->description = $data['description']; + $directory->save(); + + return $directory; + } + + /** + * @param $data array input data + * + * @return array + * @throws SubdirectoryExistsInDirectory + */ + public function getValidationRules($data = []) + { + return [ + 'name' => 'required|max:255', + 'parentDirectory' => 'exists:directories,id' + ]; + } +} \ No newline at end of file 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 4f81bf98..b8c9118d 100644 --- a/app/CMS/Observers/Content.php +++ b/app/CMS/Observers/Content.php @@ -42,6 +42,9 @@ class Content $normalFieldsEdited = 0; foreach ($fields as $field => $change) { + if ($field == 'viewed') + continue; + $history = [ 'user_id' => \Auth::user()->id, 'content_id' => $content->id, @@ -104,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/Models/ActionLog/ModelTraits/ActionLog.php b/app/CMS/Repositories/ActionLog/Actions.php similarity index 79% rename from app/Models/ActionLog/ModelTraits/ActionLog.php rename to app/CMS/Repositories/ActionLog/Actions.php index 376fcb97..acbd3ac4 100644 --- a/app/Models/ActionLog/ModelTraits/ActionLog.php +++ b/app/CMS/Repositories/ActionLog/Actions.php @@ -1,10 +1,33 @@ getLogActionsQuery(true); + + $user = null; + if ($userId) { + $user = User::findOrFail($userId); + $actions->where('users.id', $userId); + } + + $actions = $actions->paginate(25); + + $this->translateLogMessages($actions); + + return [$user, $actions]; + } + /** * Query factory for loading action logs with their type (therefore with name and value) * @@ -58,8 +81,6 @@ trait ActionLog * Method used for translating and filling parameters into value of log. * * @param $messages - * - * @return array */ public function translateLogMessages(&$messages) { diff --git a/app/CMS/Repositories/FileManager/Directory.php b/app/CMS/Repositories/FileManager/Directory.php new file mode 100644 index 00000000..0e6250ec --- /dev/null +++ b/app/CMS/Repositories/FileManager/Directory.php @@ -0,0 +1,54 @@ +where('parent_id', $parentDirectoryId); + + if ($ignoredId !== false) { + $exists = $exists->where('id', '!=', $ignoredId); + } + + return $exists->exists(); + } + + public function update(DirectoryModel $directory, $data) { + $directory->name = $data['name']; + $directory->description = $data['description']; + $directory->save(); + } + + /** + * @param DirectoryModel $directory + * + * @return \Illuminate\Database\Eloquent\Relations\HasMany + */ + public function getAllSubdirectories(DirectoryModel &$directory) + { + if (!$directory->exists) { + $directory = DirectoryModel::where('is_root', true) + ->first(); + + if (is_null($directory)) { + $directory = RootDirectory::get(); + } + } + + $subdirectories = $directory->allSubdirectories(); + + return $subdirectories; + } +} \ No newline at end of file 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/HtmlCode/Presenters/HtmlCode.php b/app/CMS/Widgets/HtmlCode/Presenters/HtmlCode.php index 651d5f2f..ef3df165 100644 --- a/app/CMS/Widgets/HtmlCode/Presenters/HtmlCode.php +++ b/app/CMS/Widgets/HtmlCode/Presenters/HtmlCode.php @@ -52,7 +52,7 @@ class HtmlCode implements WidgetRenderer */ public static function renderEditForm(Widget $widget) { - $settings = json_decode($widget->settings); + $settings = $widget->settings; return view('admin.widgets.htmlCode.edit', ['widget' => $widget, 'settings' => $settings]); } -} \ 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/CMS/Widgets/SocialButtons/Presenters/SocialButtons.php b/app/CMS/Widgets/SocialButtons/Presenters/SocialButtons.php new file mode 100644 index 00000000..9b8ee224 --- /dev/null +++ b/app/CMS/Widgets/SocialButtons/Presenters/SocialButtons.php @@ -0,0 +1,57 @@ + $type, + 'widget' => new Widget(), + 'settings' => new \stdClass() + ]); + } + + /** + * Display form for editing already existing widget + * + * @param Widget $widget + * + * @return mixed + */ + public static function renderEditForm(Widget $widget) + { + $settings = $widget->settings; + return view('admin.widgets.socialButtons.edit', ['widget' => $widget, 'settings' => $settings]); + } +} diff --git a/app/CMS/Widgets/SocialButtons/SocialButtons.php b/app/CMS/Widgets/SocialButtons/SocialButtons.php new file mode 100644 index 00000000..a99398f3 --- /dev/null +++ b/app/CMS/Widgets/SocialButtons/SocialButtons.php @@ -0,0 +1,55 @@ +code) || empty($data->code)) { + // throw new MissingParameterException('code'); + //} + + return []; + } +} \ No newline at end of file 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/CreateNewCustomField.php b/app/Events/CreateNewCustomField.php deleted file mode 100644 index b1bbf9bd..00000000 --- a/app/Events/CreateNewCustomField.php +++ /dev/null @@ -1,27 +0,0 @@ -customField = $customField; - } -} 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/DeleteCustomField.php b/app/Events/DeleteCustomField.php deleted file mode 100644 index 38d22fa3..00000000 --- a/app/Events/DeleteCustomField.php +++ /dev/null @@ -1,27 +0,0 @@ -customField = $customField; - } -} diff --git a/app/Events/EditCustomField.php b/app/Events/EditCustomField.php deleted file mode 100644 index 9bb15320..00000000 --- a/app/Events/EditCustomField.php +++ /dev/null @@ -1,27 +0,0 @@ -customField = $customField; - } -} 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/ActionLog/Overview.php b/app/Http/Controllers/Admin/ActionLog/Overview.php index 1d13ad24..57eb6485 100644 --- a/app/Http/Controllers/Admin/ActionLog/Overview.php +++ b/app/Http/Controllers/Admin/ActionLog/Overview.php @@ -2,49 +2,22 @@ namespace App\Http\Controllers\Admin\ActionLog; +use App\Cms\Repositories\ActionLog\Actions; use App\Http\Controllers\Admin\Controller; -use App\Models\ActionLog\ActionLog; -use App\Models\User; use Illuminate\Support\Facades\Input; class Overview extends Controller { - /** - * @var ActionLog - */ - private $log; - - /** - * ActionLog constructor. - * - * @param ActionLog $log - */ - public function __construct(ActionLog $log) - { - parent::__construct(); - $this->log = $log; - } - /** * Get overview of logged actions * + * @param Actions $repository + * * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ - public function getOverview() + public function index(Actions $repository) { - $user = null; - $userId = Input::get('userId'); - - $actions = $this->log->getLogActionsQuery(true); - - if ($userId) { - $user = User::findOrFail($userId); - $actions->where('users.id', $userId); - } - - $actions = $actions->paginate(25); - - $this->log->translateLogMessages($actions); + list($user, $actions) = $repository->getLoggedActions(Input::get('userId')); return view('admin.actionLog.overview', ['actions' => $actions, 'user' => $user]); } diff --git a/app/Http/Controllers/Admin/CustomFields/CreateNewCustomField.php b/app/Http/Controllers/Admin/CustomFields/CreateNewCustomField.php deleted file mode 100644 index c7d142be..00000000 --- a/app/Http/Controllers/Admin/CustomFields/CreateNewCustomField.php +++ /dev/null @@ -1,72 +0,0 @@ - $types, - 'resources' => $resources - ]); - } - - public function postNew(NewCustomFieldRequest $request) - { - $customField = new CustomField(); - - // set mandatory fields - - $customField->name = $request->name; - $customField->type_id = $request->type; - $customField->resource_id = $request->resource; - $customField->required = $request->has('required'); - - // set non-mandatory fields - - if ($request->description) { - $customField->description = $request->description; - } - - if ($request->possibleValues) { - $customField->possible_values = trim(preg_replace('~[\r\n]+~', '|', $request->possibleValues)); - } - - if ($request->defaultValue) { - $customField->default_value = $request->defaultValue; - } - - if ($request->regExp) { - $customField->regexp = $request->regExp; - } - - if ($request->minLength) { - $customField->min_length = $request->minLength; - } - - if ($request->maxLength) { - $customField->max_length = $request->maxLength; - } - - $customField->save(); - - // fire event about creating new custom field - Event::fire(new CreateNewCustomFieldEvent($customField)); - - return redirect() - ->route('customfields.new') - ->with('success', trans('admin/customFields.successfullyCreated')); - } -} diff --git a/app/Http/Controllers/Admin/CustomFields/CustomFieldsOverview.php b/app/Http/Controllers/Admin/CustomFields/CustomFieldsOverview.php deleted file mode 100644 index 9ff19ed3..00000000 --- a/app/Http/Controllers/Admin/CustomFields/CustomFieldsOverview.php +++ /dev/null @@ -1,24 +0,0 @@ -getIndexedByResource(); - - return view('admin.customFields.overview', [ - 'customFields' => $fields, - 'usedResources' => array_keys($fields), - 'resources' => CustomFieldResources::getWithTranslations(), - 'types' => CustomFieldTypes::getWithTranslations() - ]); - } -} \ No newline at end of file diff --git a/app/Http/Controllers/Admin/CustomFields/EditCustomField.php b/app/Http/Controllers/Admin/CustomFields/EditCustomField.php deleted file mode 100644 index d0aabbf7..00000000 --- a/app/Http/Controllers/Admin/CustomFields/EditCustomField.php +++ /dev/null @@ -1,105 +0,0 @@ - $field, - 'types' => CustomFieldTypes::getWithTranslations(), - 'resources' => CustomFieldResources::getWithTranslations() - ]); - } - - public function postEditCustomField(EditCustomFieldRequest $request, $id) - { - $customField = CustomField::findOrFail($id); - - // setup fields - - $customField->name = $request->name; - $customField->required = $request->has('required'); - - // set non-mandatory fields - - if ($request->description) { - $customField->description = $request->description; - } - - if ($request->possibleValues) { - $customField->possible_values = trim(preg_replace('~[\r\n]+~', '|', $request->possibleValues)); - } - - if ($request->defaultValue) { - $customField->default_value = $request->defaultValue; - } - - if ($request->regExp) { - $customField->regexp = $request->regExp; - } - - if ($request->minLength) { - $customField->min_length = $request->minLength; - } - - if ($request->maxLength) { - $customField->max_length = $request->maxLength; - } - - // save changes into database - $customField->save(); - - // fire event about editing custom field - Event::fire(new EditCustomFieldEvent($customField)); - - return redirect() - ->route('customfields.edit', ['id' => $id]) - ->with('success', trans('admin/customFields.successfullyEdited')); - } - - /** - * Deletes custom field given by id. - * - * This method deletes given custom field. It is in this method because deleting is somehow editing the item. - * - * @param $id - * - * @return \Illuminate\Http\RedirectResponse - */ - public function deleteCustomField($id) - { - // find and delete field - try { - $field = CustomField::findOrFail($id); - } catch (\Exception $e) { - // field does not exist, redirect to overview and inform user - return redirect() - ->route('customfields.overview') - ->with('error', trans('admin/customFields.fieldNotExist')); - } - - // delete item - $field->delete(); - - // fire event about editing custom field - Event::fire(new DeleteCustomField($field)); - - // redirect back to overview - return redirect() - ->route('customfields.overview') - ->with('success', trans('admin/customFields.successfullyDeleted')); - } -} \ No newline at end of file diff --git a/app/Http/Controllers/Admin/Dashboard/Dashboard.php b/app/Http/Controllers/Admin/Dashboard/Dashboard.php index 3e666127..bad941c3 100644 --- a/app/Http/Controllers/Admin/Dashboard/Dashboard.php +++ b/app/Http/Controllers/Admin/Dashboard/Dashboard.php @@ -7,7 +7,7 @@ use Illuminate\Http\Request; class Dashboard extends Controller { - public function getIndex(Request $request) + public function index(Request $request) { return redirect()->route('content.overview'); } diff --git a/app/Http/Controllers/Admin/FileManager/CreateNewDirectory.php b/app/Http/Controllers/Admin/FileManager/CreateNewDirectory.php index 6341e58d..f6b4732c 100644 --- a/app/Http/Controllers/Admin/FileManager/CreateNewDirectory.php +++ b/app/Http/Controllers/Admin/FileManager/CreateNewDirectory.php @@ -2,12 +2,31 @@ namespace App\Http\Controllers\Admin\FileManager; +use App\CMS\Exceptions\FileManager\SubdirectoryExistsInDirectory; +use App\Cms\Handlers\Interactions\Interaction; +use App\CMS\Interactions\Admin\FileManager\CreateDirectory; +use App\CMS\Repositories\FileManager\Directory as DirectoryRepository; use App\Http\Controllers\Admin\Controller; use App\Http\Requests; -use App\Models\FileManager\Directory; +use Illuminate\Http\Request; class CreateNewDirectory extends Controller { + /** + * @var DirectoryRepository + */ + private $repository; + + /** + * CreateNewDirectory constructor. + * + * @param DirectoryRepository $repository + */ + public function __construct(DirectoryRepository $repository) + { + $this->repository = $repository; + } + /** * Create new directory * @@ -15,48 +34,21 @@ class CreateNewDirectory extends Controller * * @return $this|\Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse */ - public function postNew(Requests\CreateNewDirectoryRequest $request) + public function store(Request $request) { - // check if created folder does not exist in current directory - $exists = Directory::where('name', $request->name) - ->where('parent_id', $request->parentDirectory) - ->exists(); - if ($exists) { - if ($request->ajax()) { - return response()->json([ - 'status' => 'failed', - 'message' => trans('admin/fileManager.subdirectoryExists') - ]); - } else { - return redirect() - ->route('upload.overview', ['id' => $request->parentDirectory]) - ->withInput() - ->with('error', trans('admin/fileManager.subdirectoryExists')); - } + // create new directory + try { + Interaction::handle(CreateDirectory::class, $request->all()); + } catch (SubdirectoryExistsInDirectory $e) { + return redirect() + ->back() + ->withInput() + ->with('error', trans('admin/fileManager.subdirectoryExists')); } - // create new database entry - $directory = new Directory(); - $directory->name = $request->name; - $directory->parent_id = $request->parentDirectory; - $directory->user_id = \Auth::user()->id; - $directory->description = $request->description; - - $directory->save(); - $message = trans('admin/fileManager.newDirectorySuccess'); - if (!$request->ajax()) { - return redirect() - ->route('upload.overview', ['id' => $request->parentDirectory]) - ->with('success', $message); - } else { - $payload = [ - 'status' => 'success', - 'message' => $message, - 'parentDirectory' => $request->parentDirectory - ]; - - return response()->json($payload); - } + return redirect() + ->route('upload.overview', ['id' => $request->parentDirectory]) + ->with('success', $message); } } diff --git a/app/Http/Controllers/Admin/FileManager/EditDirectory.php b/app/Http/Controllers/Admin/FileManager/EditDirectory.php index 565749dc..f9e5b12e 100644 --- a/app/Http/Controllers/Admin/FileManager/EditDirectory.php +++ b/app/Http/Controllers/Admin/FileManager/EditDirectory.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Admin\FileManager; +use App\CMS\Repositories\FileManager\Directory as DirectoryRepository; use App\Http\Controllers\Admin\Controller; use App\Http\Requests; use App\Models\FileManager\Directory; @@ -10,52 +11,27 @@ class EditDirectory extends Controller { /** * @param Requests\EditDirectoryRequest $request - * @param $directoryId + * @param Directory $directory * * @return $this|\Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse + * @internal param $directoryId + * */ - public function postEdit(Requests\EditDirectoryRequest $request, $directoryId) + public function update(Requests\EditDirectoryRequest $request, Directory $directory) { - $directory = Directory::findOrFail($directoryId); - - // check if given name is not used in parent directory - - $exists = Directory::where('parent_id', $directory->parent_id) - ->where('name', $request->name) - ->where('id', '!=', $directoryId) - ->exists(); - - if ($exists) { - if ($request->ajax()) { - return response()->json([ - 'status' => 'failed', - 'message' => trans('admin/fileManager.subdirectoryExists') - ]); - } else { - return redirect() - ->route('upload.overview', ['id' => $directoryId]) - ->withInput() - ->with('error', trans('admin/fileManager.subdirectoryExists')); - } + $repository = app(DirectoryRepository::class); + if ($repository->checkIfNameExists($request->name, $directory->parent_id, $directory->id)) { + return redirect() + ->back() + ->withInput() + ->with('error', trans('admin/fileManager.subdirectoryExists')); } - $directory->name = $request->name; - $directory->description = $request->description; - - $directory->save(); + $repository->update($directory, $request->except('_token')); $message = trans('admin/fileManager.editDirectorySuccess'); - if (!$request->ajax()) { - return redirect() - ->route('upload.overview', ['id' => $directory->id]) - ->with('success', $message); - } else { - $payload = [ - 'status' => 'success', - 'message' => $message - ]; - - return response()->json($payload); - } + return redirect() + ->back() + ->with('success', $message); } } diff --git a/app/Http/Controllers/Admin/FileManager/EditUploadedFile.php b/app/Http/Controllers/Admin/FileManager/EditUploadedFile.php index 6d80163a..374f4dcf 100644 --- a/app/Http/Controllers/Admin/FileManager/EditUploadedFile.php +++ b/app/Http/Controllers/Admin/FileManager/EditUploadedFile.php @@ -2,13 +2,13 @@ namespace App\Http\Controllers\Admin\FileManager; -use App\Events\EditFile; use App\CMS\Helpers\FileManager; +use App\CMS\Helpers\RootDirectory; +use App\Events\EditFile; use App\Http\Controllers\Admin\Controller; use App\Http\Requests\EditUploadedFileRequest; use App\Models\FileManager\File; use Illuminate\Support\Facades\Event; -use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; class EditUploadedFile extends Controller { @@ -17,20 +17,18 @@ class EditUploadedFile extends Controller * * Render edit form for displaying details and updating given file * - * @param int $id file id + * @param File $file * * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\View\View + * @internal param int $id file id + * */ - public function getDetail($id) + public function show(File $file) { - try { - $file = File::findOrFail($id); - } catch (NotFoundHttpException $e) { - return $this->fileNotFound(); - } - + $root = RootDirectory::get(); return view('admin.fileManager.edit', [ 'file' => $file, + 'root' => $root, 'extraInfo' => FileManager::getAdditionalInfo($file) ]); } @@ -42,22 +40,19 @@ class EditUploadedFile extends Controller * unchanged * * @param EditUploadedFileRequest $request - * @param $id + * @param File $file * * @return \Illuminate\Http\RedirectResponse + * @internal param $id + * */ - public function postEdit(EditUploadedFileRequest $request, $id) + public function update(EditUploadedFileRequest $request, File $file) { - try { - $file = File::findOrFail($id); - } catch (NotFoundHttpException $e) { - return $this->fileNotFound(); - } - // set values from form $file->name = $request->name; $file->keywords = $request->keywords; $file->description = $request->description; + $file->directory_id = $request->directory_id; $file->save(); // fire action @@ -65,23 +60,19 @@ class EditUploadedFile extends Controller // update successfull return redirect() - ->route('upload.detail', ['id' => $id]) + ->route('upload.detail', ['file' => $file]) ->with('success', trans('admin/fileManager.successfullyChanged')); } /** * Deletes file * - * @param $id + * @param File $file + * + * @return \Illuminate\Http\RedirectResponse */ - public function deleteFile($id) + public function delete(File $file) { - try { - $file = File::findOrFail($id); - } catch (NotFoundHttpException $e) { - return $this->fileNotFound(); - } - $directoryId = $file->directory_id; $file->delete(); @@ -89,16 +80,4 @@ class EditUploadedFile extends Controller ->route('upload.overview', ['id' => $directoryId]) ->with('success', trans('admin/fileManager.fileDeleted')); } - - /** - * Redirects user to files overview - * - * @return \Illuminate\Http\RedirectResponse - */ - private function fileNotFound() - { - return redirect() - ->route('upload.overview') - ->with('error', trans('admin/fileManager.fileNotFound')); - } } diff --git a/app/Http/Controllers/Admin/FileManager/UploadFile.php b/app/Http/Controllers/Admin/FileManager/UploadFile.php index 70d9f5fb..3c4a7933 100644 --- a/app/Http/Controllers/Admin/FileManager/UploadFile.php +++ b/app/Http/Controllers/Admin/FileManager/UploadFile.php @@ -1,6 +1,7 @@ ckEditorUpload($request); @@ -82,7 +83,7 @@ class UploadFile extends Controller return view('admin.snippets.ckEditorUploaded', [ 'ckEditor' => 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 fda05484..29612d5f 100644 --- a/app/Http/Controllers/Admin/FileManager/UploadedFilesOverview.php +++ b/app/Http/Controllers/Admin/FileManager/UploadedFilesOverview.php @@ -1,48 +1,53 @@ directoryRepository = $directoryRepository; + } + /** * List of all files and directories * - * @param null $directoryId - * @param null $fileType - * @param null $fileSubtype + * @param Directory $directory * * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ - public function getOverview($directoryId = null, $fileType = null, $fileSubtype = null) + public function index(Directory $directory = null) { - // get directory information - $directory = is_null($directoryId) ? new Directory() : Directory::findOrFail($directoryId); - - // get all files in this directory - $files = File::orderBy('updated_at', 'DESC') - ->where('directory_id', $directory->id); - - // try to filter by given type - if (!is_null($fileType)) { - if (is_null($fileSubtype)) { - $files = $files->where('mime_type', 'LIKE', $fileType . '%'); - } else { - $files = $files->where('mime_type', $fileType . '/' . $fileSubtype); - } - } - // include hidden directories? $includeHidden = Input::get('hidden'); + $subdirectories = $this->directoryRepository->getAllSubdirectories($directory); + + if (!$includeHidden) { + $subdirectories = $subdirectories->where('hidden', false); + } + + $subdirectories = $subdirectories->get(); + return view('admin.fileManager.overview', [ - 'directory' => $directory, - 'subdirectories' => $directory->subdirectories($includeHidden), - 'files' => $files->get(), - '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/Http/Kernel.php b/app/Http/Kernel.php index a3f84d26..0b7677f4 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -4,6 +4,7 @@ namespace App\Http; use App\Http\Middleware\TemplatePathInstaller; use App\Http\Middleware\WidgetInstaller; +use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse; use Illuminate\Foundation\Http\Kernel as HttpKernel; use Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode; use Illuminate\Routing\Middleware\ThrottleRequests; @@ -38,6 +39,7 @@ class Kernel extends HttpKernel protected $middlewareGroups = [ 'web' => [ CheckForMaintenanceMode::class, + AddQueuedCookiesToResponse::class, ], 'admin' => [ Middleware\Authenticate::class, diff --git a/app/Http/Requests/CreateNewDirectoryRequest.php b/app/Http/Requests/CreateNewDirectoryRequest.php index a35650d9..7fda8d5b 100644 --- a/app/Http/Requests/CreateNewDirectoryRequest.php +++ b/app/Http/Requests/CreateNewDirectoryRequest.php @@ -2,6 +2,8 @@ namespace App\Http\Requests; +use App\CMS\Interactions\Admin\FileManager\CreateDirectory; + class CreateNewDirectoryRequest extends Request { /** @@ -11,9 +13,8 @@ class CreateNewDirectoryRequest extends Request */ public function rules() { - return [ - 'name' => 'required|max:255', - 'parentDirectory' => 'exists:directories,id' - ]; + $interaction = app(CreateDirectory::class); + + return $interaction->getValidationRules(); } } diff --git a/app/Http/Requests/EditCustomFieldRequest.php b/app/Http/Requests/EditCustomFieldRequest.php deleted file mode 100644 index a02917d6..00000000 --- a/app/Http/Requests/EditCustomFieldRequest.php +++ /dev/null @@ -1,20 +0,0 @@ - 'required', - 'minLength' => 'numeric|min:0', - 'maxLength' => 'numeric|min:0', - ]; - } -} diff --git a/app/Http/Requests/NewCustomFieldRequest.php b/app/Http/Requests/NewCustomFieldRequest.php deleted file mode 100644 index 562d68f9..00000000 --- a/app/Http/Requests/NewCustomFieldRequest.php +++ /dev/null @@ -1,22 +0,0 @@ - 'required', - 'type' => 'required|exists:custom_field_types,id', - 'resource' => 'required|exists:custom_field_resources,id', - 'minLength' => 'numeric|min:0', - 'maxLength' => 'numeric|min:0', - ]; - } -} diff --git a/app/Http/routes.php b/app/Http/routes.php index 9edfdf89..c648aaf7 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -28,11 +28,11 @@ Route::group(['prefix' => LaravelLocalization::setLocale()], function () { } // display dashboard with some usefull information - Route::get('/', 'Dashboard\Dashboard@getIndex') + Route::get('/', 'Dashboard\Dashboard@index') ->name('admin.dashboard'); // list of all actions - Route::get('actions', 'ActionLog\Overview@getOverview') + Route::get('actions', 'ActionLog\Overview@index') ->name('log.overview'); // search form with results diff --git a/app/Http/routes/admin/fileManager.php b/app/Http/routes/admin/fileManager.php index 58eecfaf..ec85fc37 100644 --- a/app/Http/routes/admin/fileManager.php +++ b/app/Http/routes/admin/fileManager.php @@ -1,32 +1,32 @@ 'FileManager'], function () { - Route::get('files/overview/{id?}/{type?}/{subtype?}', 'UploadedFilesOverview@getOverview') + Route::get('files/overview/{directory?}', 'UploadedFilesOverview@index') ->name('upload.overview'); // uploader methods - Route::get('directories/new/{id?}', 'CreateNewDirectory@getNew') + Route::get('directories/new/{parentDirectory?}', 'CreateNewDirectory@create') ->name('upload.newDirectory'); - Route::get('directories/edit/{id}', 'EditDirectory@getEdit') + Route::get('directories/edit/{directory}', 'EditDirectory@edit') ->name('upload.editDirectory'); - Route::post('directories/edit/{id}', 'EditDirectory@postEdit') + Route::post('directories/edit/{directory}', 'EditDirectory@update') ->name('upload.postEditDirectory'); - route::post('directories/new', 'CreateNewDirectory@postNew') + route::post('directories/new', 'CreateNewDirectory@store') ->name('upload.postNewDirectory'); - Route::get('upload/detail/{id}', 'EditUploadedFile@getDetail') + Route::get('upload/detail/{file}', 'EditUploadedFile@show') ->name('upload.detail'); - Route::post('upload/detail/{id}', 'EditUploadedFile@postEdit') + Route::post('upload/detail/{file}', 'EditUploadedFile@update') ->name('upload.postEdit'); - Route::get('upload/delete/{id}', 'EditUploadedFile@deleteFile') + Route::get('upload/delete/{file}', 'EditUploadedFile@delete') ->name('upload.delete'); // uploader methods - Route::post('upload', 'UploadFile@postFile') + Route::post('upload', 'UploadFile@store') ->name('upload.postFile'); }); diff --git a/app/Listeners/Loggers/LogCreateCustomField.php b/app/Listeners/Loggers/LogCreateCustomField.php deleted file mode 100644 index 6edcdcff..00000000 --- a/app/Listeners/Loggers/LogCreateCustomField.php +++ /dev/null @@ -1,37 +0,0 @@ - $event->customField->id, - 'name' => $event->customField->name - ]; - - $this->saveLog($parameters); - } - - /** - * Getter for action name. Used only internally - * - * @return mixed - */ - protected function getName() - { - return 'newCustomField'; - } -} diff --git a/app/Listeners/Loggers/LogDeleteField.php b/app/Listeners/Loggers/LogDeleteField.php deleted file mode 100644 index c03f6853..00000000 --- a/app/Listeners/Loggers/LogDeleteField.php +++ /dev/null @@ -1,36 +0,0 @@ - $event->customField->id, - 'name' => $event->customField->name - ]; - - $this->saveLog($parameters); - } - - /** - * Getter for action name. Used only internally - * - * @return mixed - */ - protected function getName() - { - return 'deleteCustomField'; - } -} diff --git a/app/Listeners/Loggers/LogEditCustomField.php b/app/Listeners/Loggers/LogEditCustomField.php deleted file mode 100644 index db62c517..00000000 --- a/app/Listeners/Loggers/LogEditCustomField.php +++ /dev/null @@ -1,36 +0,0 @@ - $event->customField->id, - 'name' => $event->customField->name - ]; - - $this->saveLog($parameters); - } - - /** - * Getter for action name. Used only internally - * - * @return mixed - */ - protected function getName() - { - return 'editCustomField'; - } -} diff --git a/app/Listeners/Loggers/Logger.php b/app/Listeners/Loggers/Logger.php index 5d81d0f2..84f4c799 100644 --- a/app/Listeners/Loggers/Logger.php +++ b/app/Listeners/Loggers/Logger.php @@ -44,7 +44,7 @@ abstract class Logger 'type_id' => $typeId, 'ip' => request()->ip(), 'user_agent' => request()->header('User-agent'), - 'parameters' => json_encode((array)$parameters) + 'parameters' => $parameters ]; // create new logged event diff --git a/app/Models/ActionLog/ActionLog.php b/app/Models/ActionLog/ActionLog.php index cbdb19ae..dceb76f2 100644 --- a/app/Models/ActionLog/ActionLog.php +++ b/app/Models/ActionLog/ActionLog.php @@ -9,8 +9,6 @@ use Illuminate\Database\Eloquent\Model; */ class ActionLog extends Model { - use ModelTraits\ActionLog; - protected $table = 'action_log'; public $timestamps = false; protected $fillable = [ @@ -20,4 +18,8 @@ class ActionLog extends Model 'user_agent', 'parameters' ]; + + protected $casts = [ + 'parameters' => 'array' + ]; } \ No newline at end of file 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/CustomFields/ContentHasCustomField.php b/app/Models/CustomFields/ContentHasCustomField.php deleted file mode 100644 index faab0bce..00000000 --- a/app/Models/CustomFields/ContentHasCustomField.php +++ /dev/null @@ -1,24 +0,0 @@ -resource_id][] = $field; - } - - return $customFields; - } -} \ No newline at end of file diff --git a/app/Models/CustomFields/CustomFieldResource.php b/app/Models/CustomFields/CustomFieldResource.php deleted file mode 100644 index 7701a257..00000000 --- a/app/Models/CustomFields/CustomFieldResource.php +++ /dev/null @@ -1,22 +0,0 @@ - 'bool', + 'is_root' => 'bool' + ]; + + /** + * Files in directory + * + * @return \Illuminate\Database\Eloquent\Relations\HasMany + */ + public function files() + { + return $this->hasMany(File::class); + } /** * Relationship with parent/sub directories * - * @param bool $includeHidden - * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ - public function subdirectories($includeHidden = false) + public function allSubdirectories() { + return $this->hasMany(Directory::class, 'parent_id', 'id'); + } - $subdirectories = Directory::where('parent_id', $this->id); + public function subdirectories() + { + $subdirectories = $this->allSubdirectories() + ->where('hidden', false); - if (!$includeHidden) { - $subdirectories = $subdirectories->where('hidden', 0); + return $subdirectories; + } + public function delete() + { + // try to prevent from deleting root folder + if ($this->is_root == true) { + throw new ErrorException('Cannot delete root folder!'); } - return $subdirectories->get(); - + return parent::delete(); } } diff --git a/app/Models/FileManager/File.php b/app/Models/FileManager/File.php index 3f4f8156..dcedea6d 100644 --- a/app/Models/FileManager/File.php +++ b/app/Models/FileManager/File.php @@ -28,9 +28,9 @@ class File extends Model 'user_id', 'file_size', 'mime_type', - 'hash_algorith', + 'hash_algorithm', 'name', - 'file_size' + 'file_hash' ]; public function directory() diff --git a/app/Models/FileManager/ModelTraits/File.php b/app/Models/FileManager/ModelTraits/File.php index a35fa861..759c6bf6 100644 --- a/app/Models/FileManager/ModelTraits/File.php +++ b/app/Models/FileManager/ModelTraits/File.php @@ -4,12 +4,8 @@ namespace App\Models\FileManager\ModelTraits; use App\Events\UploadFile; use App\Models\FileManager\File as FileModel; -use Franzose\ClosureTable\Extensions\Str; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Event; -use Illuminate\Support\Facades\File as FileFacade; -use Intervention\Image\Constraint; -use Intervention\Image\Facades\Image; use Symfony\Component\HttpFoundation\File\File as SymphonyFile; use Symfony\Component\HttpFoundation\File\UploadedFile; @@ -26,7 +22,7 @@ trait File */ public function getFilename(UploadedFile $file) { - return uniqid() . '.' . $file->getClientOriginalExtension(); + return date('Y-m-').uniqid() . '.' . $file->getClientOriginalExtension(); } /** @@ -48,12 +44,6 @@ trait File // save file into physical location (local FS) $uploadedFile = $file->move($destination, $filename); - // is uploaded file an image? - if (Str::startsWith($uploadedFile->getMimeType(), 'image')) { - // yes, create thumbnail - $this->createThumbnail($uploadedFile); - } - // insert record into database $id = $this->saveIntoDatabase($uploadedFile, $data, $file->getClientOriginalName()); @@ -101,29 +91,4 @@ trait File return $newFile->id; } - - /** - * Create thumbnail of given image - * - * @param SymphonyFile $file - */ - private function createThumbnail(SymphonyFile $file) - { - // does thumbnail directory exist? - if (!is_dir(config('app.thumbnail_path'))) { - FileFacade::makeDirectory(config('app.thumbnail_path')); - } - - // get image instance - $image = Image::make(config('app.upload_path') . DIRECTORY_SEPARATOR . $file->getFilename()); - - // resize image and keep aspect ration - $image->resize(env('THUMBNAIL_WIDTH', 300), null, function (Constraint $constraint) { - $constraint->aspectRatio(); - $constraint->upsize(); - }); - - // save thumbnail with lower quality - $image->save(config('app.thumbnail_path') . DIRECTORY_SEPARATOR . $file->getFilename(), 75); - } -} \ No newline at end of file +} \ No newline at end of file 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/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index f239c909..dfcfed78 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -40,15 +40,7 @@ class EventServiceProvider extends ServiceProvider 'App\Events\DeleteContent' => [ 'App\Listeners\Loggers\LogDeleteContent' ], - 'App\Events\CreateNewCustomField' => [ - 'App\Listeners\Loggers\LogCreateCustomField', - ], - 'App\Events\EditCustomField' => [ - 'App\Listeners\Loggers\LogEditCustomField', - ], - 'App\Events\DeleteCustomField' => [ - 'App\Listeners\Loggers\LogDeleteField', - ], + 'App\Events\ChangeSettings' => [ 'App\Listeners\Loggers\LogChangeSettings', ], 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/database/migrations/2017_02_02_113138_MarkDirectoryAsRoot.php b/database/migrations/2017_02_02_113138_MarkDirectoryAsRoot.php new file mode 100644 index 00000000..7af611fd --- /dev/null +++ b/database/migrations/2017_02_02_113138_MarkDirectoryAsRoot.php @@ -0,0 +1,31 @@ +boolean('is_root')->default(false); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('directories', function (Blueprint $table) { + $table->dropColumn('is_root'); + }); + } +} diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php index 15606e81..743fd45a 100644 --- a/database/seeds/DatabaseSeeder.php +++ b/database/seeds/DatabaseSeeder.php @@ -12,8 +12,6 @@ class DatabaseSeeder extends Seeder public function run() { // fill up custom field types - $this->call(SeedCustomFieldTypes::class); - $this->call(SeedCustomFieldResources::class); $this->call(SeedActionLogTypes::class); $this->call(SeedSettings::class); } diff --git a/database/seeds/SeedCustomFieldResources.php b/database/seeds/SeedCustomFieldResources.php deleted file mode 100644 index 001fc4ad..00000000 --- a/database/seeds/SeedCustomFieldResources.php +++ /dev/null @@ -1,24 +0,0 @@ - 'admin/customFields.resource_user'], - ['name' => 'admin/customFields.resource_content'] - ]; - - foreach ($types as $type) { - \DB::table('custom_field_resource') - ->insert($type); - } - } -} diff --git a/database/seeds/SeedCustomFieldTypes.php b/database/seeds/SeedCustomFieldTypes.php deleted file mode 100644 index f2d11873..00000000 --- a/database/seeds/SeedCustomFieldTypes.php +++ /dev/null @@ -1,27 +0,0 @@ - 'admin/customFields.date', 'handler' => '\\App\\CustomFields\\Date'], - ['name' => 'admin/customFields.number', 'handler' => '\\App\\CustomFields\\Number'], - ['name' => 'admin/customFields.selectboxList', 'handler' => '\\App\\CustomFields\\SelectboxList'], - ['name' => 'admin/customFields.string', 'handler' => '\\App\\CustomFields\\String'] - ]; - - foreach ($types as $type) { - \DB::table('custom_field_types') - ->insert($type); - } - } -} 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/Http/routes.php b/modules/Blog/Article/Http/routes.php index ef3ef17c..2a03f970 100644 --- a/modules/Blog/Article/Http/routes.php +++ b/modules/Blog/Article/Http/routes.php @@ -1,11 +1,10 @@ LaravelLocalization::setLocale(), - 'middleware' => ['localeSessionRedirect', 'localizationRedirect'], 'namespace' => 'Modules\Blog\Article\Http\Controllers' ], function () { Route::group([ - 'middleware' => ['web', 'auth', 'adminMenu'], + 'middleware' => ['admin'], 'prefix' => 'admin/comments', 'namespace' => 'Admin' ], function () { diff --git a/modules/Blog/Article/Modificators/PerexCreator.php b/modules/Blog/Article/Modificators/PerexCreator.php new file mode 100644 index 00000000..ad76b0be --- /dev/null +++ b/modules/Blog/Article/Modificators/PerexCreator.php @@ -0,0 +1,60 @@ +DOMDocument = new \DOMDocument('1.0', 'UTF-8'); + $this->maxLength = 300; + $this->maxImages = 2; + $this->perex = ''; + } + + private function addHtml($node) + { + $this->perex .= strip_tags($this->DOMDocument->saveHTML($node), '

'); + } + + public function create($html) + { + if (empty($html)) { + return null; + } + + $html = mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'); + $this->DOMDocument->loadHTML($html); + + $texts = $this->DOMDocument->getElementsByTagName('p'); + $images = $this->DOMDocument->getElementsByTagName('img'); + $iframes = $this->DOMDocument->getElementsByTagName('iframe'); + + $textId = 0; + $imgId = 0; + if ($texts->length > 1) { + $this->addHtml($texts[$textId++]); + } + + if (mb_strlen($this->perex) < $this->maxLength) { + if ($iframes->length > 0) { + $this->perex .= $this->DOMDocument->saveHTML($iframes[0]); + } elseif ($images->length > 0) { + while ($imgId < $images->length && $imgId < $this->maxImages) { + $this->perex .= $this->DOMDocument->saveHTML($images[$imgId++]); + } + } else { + while (mb_strlen($this->perex) < $this->maxLength && $textId < $texts->length) { + $this->addHtml($texts[$textId++]); + } + } + } + + return $this->perex; + } +} \ No newline at end of file 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/lang/cs/admin/fileManager.php b/resources/lang/cs/admin/fileManager.php index 146f78f4..71776c14 100644 --- a/resources/lang/cs/admin/fileManager.php +++ b/resources/lang/cs/admin/fileManager.php @@ -1,42 +1,44 @@ "Vytvořit podadresář v :directory.", - "createdAt" => "Nahráno", - "delete" => "Smazat", - "description" => "Popis souboru", - "directories" => "Podadresáře v adresáři :directory", - "directoryDescription" => "Popis", - "directoryHidden" => "Skrytý adresář", - "directoryName" => "Jméno adresáře", - "edit" => "Upravit soubor :name", - "editButton" => "Upravit", - "editDirectory" => "Upravit adresář", - "editDirectorySuccess" => "Úspěšně uloženo", - "encoding" => "Kódování", - "fileDeleted" => "Soubor smazán", - "fileInfo" => "Informace", - "fileSize" => "Velikost", - "hash" => "Hash", - "invalidFile" => "Nahrávaný soubor nelze nahrát, z nějakého důvodu není validní.", - "keywords" => "Klíčová slova (oddělena čárkou)", - "mime" => "MIME typ", - "name" => "Jméno", - "newDirectory" => "Vytvořit nový adresář", - "newDirectorySuccess" => "Nový adresář úspěšně vytvořen", - "newFile" => "Nový soubor", - "noFileSpecified" => "Nebyl zvolen žádný soubor k nahrávání", - "noFiles" => "Žádný soubor nebyl nalezen", - "noSubdirectories" => "Žádné podadresáře", - "originalFilename" => "Původní jméno", - "overview" => "Seznam všech souborů", - "parentDirectory" => "Rodičovský adresář", - "resolution" => "Rozlišení", - "rootDirectories" => "Kořenové adresáře", - "selectFile" => "Vybrat soubor", - "subdirectoryExists" => "Adresář s tímto jménem tu již eixstuje", - "successfullyChanged" => "Úspěšně uloženo", - "updatedAt" => "Poslední změna", - "upload" => "Nahrát nový soubor", - "uploadSuccessfull" => "Soubor úspěšně nahrán|:count soubory úspěšně nahrány|:count souborů úspěšně nahráno", - "url" => "Veřejná URL", + "createdAt" => "Nahráno", + "delete" => "Smazat", + "description" => "Popis souboru", + "directories" => "Podadresáře v adresáři :directory", + "directoryDescription" => "Popis", + "directoryHidden" => "Skrytý adresář", + 'directory' => 'Adresář', + "directoryName" => "Jméno adresáře", + "edit" => "Upravit soubor :name", + "editButton" => "Upravit", + "editDirectory" => "Upravit adresář", + "editDirectorySuccess" => "Úspěšně uloženo", + "encoding" => "Kódování", + "fileDeleted" => "Soubor smazán", + "fileInfo" => "Informace", + "fileSize" => "Velikost", + "hash" => "Hash", + "invalidFile" => "Nahrávaný soubor nelze nahrát, z nějakého důvodu není validní.", + "keywords" => "Klíčová slova (oddělena čárkou)", + "mime" => "MIME typ", + "name" => "Jméno", + "newDirectory" => "Vytvořit nový adresář", + "newDirectorySuccess" => "Nový adresář úspěšně vytvořen", + "newFile" => "Nový soubor", + "noFileSpecified" => "Nebyl zvolen žádný soubor k nahrávání", + "noFiles" => "Žádný soubor nebyl nalezen", + "noSubdirectories" => "Žádné podadresáře", + "originalFilename" => "Původní jméno", + "overview" => "Seznam všech souborů", + "parentDirectory" => "Rodičovský adresář", + "resolution" => "Rozlišení", + "rootDirectories" => "Kořenové adresáře", + "selectFile" => "Vybrat soubor", + "subdirectoryExists" => "Adresář s tímto jménem tu již eixstuje", + "successfullyChanged" => "Úspěšně uloženo", + "updatedAt" => "Poslední změna", + "upload" => "Nahrát nový soubor", + "uploadSuccessfull" => "Soubor úspěšně nahrán|:count soubory úspěšně nahrány|:count souborů úspěšně nahráno", + "url" => "Veřejná URL", + 'rootDirectory' => 'Kořenový adresář' ]; diff --git a/resources/views/admin/fileManager/directories/form.blade.php b/resources/views/admin/fileManager/directories/form.blade.php index 2f24dcff..30928dfc 100644 --- a/resources/views/admin/fileManager/directories/form.blade.php +++ b/resources/views/admin/fileManager/directories/form.blade.php @@ -1,18 +1,20 @@

{!! csrf_field() !!} - + @if ($parentDirectory->id) + + @endif + - \ No newline at end of file diff --git a/resources/views/admin/fileManager/directories/subdirectoriesOptionList.blade.php b/resources/views/admin/fileManager/directories/subdirectoriesOptionList.blade.php new file mode 100644 index 00000000..5cdfbdb4 --- /dev/null +++ b/resources/views/admin/fileManager/directories/subdirectoriesOptionList.blade.php @@ -0,0 +1,10 @@ + + +@if (!is_null($directory->subdirectories)) + @foreach($directory->subdirectories as $dir) + @include('admin.fileManager.directories.subdirectoriesOptionList', ['directory' => $dir, 'depth' => $depth +1, 'file' => $file]) + @endforeach +@endif \ No newline at end of file diff --git a/resources/views/admin/fileManager/directories/subdirectoriesTiles.blade.php b/resources/views/admin/fileManager/directories/subdirectoriesTiles.blade.php index 541818aa..a4b4b95f 100644 --- a/resources/views/admin/fileManager/directories/subdirectoriesTiles.blade.php +++ b/resources/views/admin/fileManager/directories/subdirectoriesTiles.blade.php @@ -1,7 +1,7 @@ -@if($directory->id) +@if (!$directory->is_root)
@include('admin.snippets.card', [ - 'body' => '


'.trans('admin/fileManager.parentDirectory').'

', + 'body' => '


'.trans('admin/fileManager.parentDirectory').'

', 'cardClass' => 'file-preview', ])
@@ -10,7 +10,7 @@ @foreach($subdirectories as $dir)
@include('admin.snippets.card', [ - 'body' => '


'.e(str_limit($dir->name, 15)).'

', + 'body' => '


'.e(str_limit($dir->name, 15)).'

', 'cardClass' => 'file-preview', ])
diff --git a/resources/views/admin/fileManager/editForm.blade.php b/resources/views/admin/fileManager/editForm.blade.php index 65bae56e..d7d0e21d 100644 --- a/resources/views/admin/fileManager/editForm.blade.php +++ b/resources/views/admin/fileManager/editForm.blade.php @@ -12,6 +12,15 @@ + + + @lang('admin/fileManager.directory') + + + + diff --git a/resources/views/admin/fileManager/newFileForm.blade.php b/resources/views/admin/fileManager/newFileForm.blade.php index 5f685dd3..00b61c44 100644 --- a/resources/views/admin/fileManager/newFileForm.blade.php +++ b/resources/views/admin/fileManager/newFileForm.blade.php @@ -5,7 +5,7 @@ @endif - + diff --git a/resources/views/admin/fileManager/overview.blade.php b/resources/views/admin/fileManager/overview.blade.php index 6fe41c95..54d4c027 100644 --- a/resources/views/admin/fileManager/overview.blade.php +++ b/resources/views/admin/fileManager/overview.blade.php @@ -1,6 +1,6 @@ @extends('admin.layoutWithNavigation') -@if ($directory->id) +@if (!$directory->is_root) @section('pageHeading', @trans('admin/fileManager.directories', ['directory' => $directory->name])) @else @section('pageHeading', @trans('admin/fileManager.rootDirectories')) @@ -11,7 +11,7 @@
@include('admin.fileManager.directories.subdirectoriesTiles') - @include('admin.fileManager.filesTiles') + @include('admin.fileManager.filesTiles', ['files' => $directory->files])
@@ -31,7 +31,7 @@
- @if ($directory->id) + @if (!$directory->is_root)