diff --git a/app/Handlers/Contracts/AppHandler.php b/app/CMS/Contracts/AppHandler.php similarity index 97% rename from app/Handlers/Contracts/AppHandler.php rename to app/CMS/Contracts/AppHandler.php index db209666..9e2573f0 100644 --- a/app/Handlers/Contracts/AppHandler.php +++ b/app/CMS/Contracts/AppHandler.php @@ -1,8 +1,8 @@ filename); + $url = Path::thumbnail($file->filename); return '' . $file->description . ''; break; diff --git a/app/Helpers/Gravatar.php b/app/CMS/Helpers/Gravatar.php similarity index 87% rename from app/Helpers/Gravatar.php rename to app/CMS/Helpers/Gravatar.php index 7460cd9d..41edff07 100644 --- a/app/Helpers/Gravatar.php +++ b/app/CMS/Helpers/Gravatar.php @@ -1,5 +1,5 @@ exists($namespace . 'visitor.' . $prefix . $template)) { - $view = $namespace . 'visitor.' . $prefix . $template; - break; - } - } - - if (is_null($view)) { - if ($throwExceptions) { - throw new InvalidArgumentException('Cannot find template for ' . $namespace . $template); - } else { - return false; - } - } - - return $view; - } - /** * Get URL to uploaded file * @@ -95,25 +58,4 @@ class Template return config('app.url') . '/assets/' . config('app.theme') . '/' . $path; } - - /** - * Print date in configured format - * - * @param $datestamp - * @param bool $withTime - * - * @return false|string - */ - public static function date($datestamp, $withTime = true) - { - $timestamp = strtotime($datestamp); - - if ($timestamp <= 0) { - return ''; - } - - $format = $withTime ? config('app.datetime_format') : config('app.date_format'); - - return date($format, $timestamp); - } } \ No newline at end of file diff --git a/app/Helpers/Settings.php b/app/CMS/Helpers/Settings.php similarity index 96% rename from app/Helpers/Settings.php rename to app/CMS/Helpers/Settings.php index 56499040..bb1097eb 100644 --- a/app/Helpers/Settings.php +++ b/app/CMS/Helpers/Settings.php @@ -1,6 +1,6 @@ exists($namespace . 'visitor.' . $prefix . $template)) { + $view = $namespace . 'visitor.' . $prefix . $template; + break; + } + } + + if (is_null($view)) { + if ($throwExceptions) { + throw new InvalidArgumentException('Cannot find template for ' . $namespace . $template); + } else { + return false; + } + } + + return $view; + } + + +} \ No newline at end of file diff --git a/app/CMS/Helpers/Widget.php b/app/CMS/Helpers/Widget.php new file mode 100644 index 00000000..aa075c82 --- /dev/null +++ b/app/CMS/Helpers/Widget.php @@ -0,0 +1,18 @@ +widget_type_handler; + + if (!is_object($widget->settings)) { + $widget->settings = json_decode($widget->settings); + } + + $presenter = call_user_func([$handler, 'getPresenter']); + + return call_user_func([$presenter, 'render'], $widget); + } +} \ No newline at end of file diff --git a/app/Helpers/WidgetAreas.php b/app/CMS/Helpers/WidgetAreas.php similarity index 81% rename from app/Helpers/WidgetAreas.php rename to app/CMS/Helpers/WidgetAreas.php index 25cf8942..6aa177b5 100644 --- a/app/Helpers/WidgetAreas.php +++ b/app/CMS/Helpers/WidgetAreas.php @@ -1,7 +1,7 @@ widget_area_code])) self::$widgetAreas[$widget->widget_area_code] = ''; - $handler = $widget->widget_type_handler; - $widget->settings = json_decode($widget->settings); - $presenter = call_user_func([$handler, 'getPresenter']); - - self::$widgetAreas[$widget->widget_area_code] .= call_user_func([$presenter, 'render'], $widget); + self::$widgetAreas[$widget->widget_area_code] .= Widget::render($widget); } } diff --git a/app/Helpers/functions.php b/app/CMS/Helpers/functions.php similarity index 81% rename from app/Helpers/functions.php rename to app/CMS/Helpers/functions.php index 8a163000..c7b4002e 100644 --- a/app/Helpers/functions.php +++ b/app/CMS/Helpers/functions.php @@ -14,7 +14,7 @@ function e($value) } /** - * Shortcut for \App\Helpers\Settings::get() + * Shortcut for \App\CMS\Helpers\Settings::get() * * @param $key * @param null $default @@ -22,7 +22,7 @@ function e($value) * @return null|string */ function setting($key, $default = null) { - return \App\Helpers\Settings::get($key, $default); + return \App\CMS\Helpers\Settings::get($key, $default); } function asset_path($path) { diff --git a/app/MenuPresenters/FoundationDrilldownMenuPresenter.php b/app/CMS/MenuPresenters/FoundationDrilldownMenuPresenter.php similarity index 98% rename from app/MenuPresenters/FoundationDrilldownMenuPresenter.php rename to app/CMS/MenuPresenters/FoundationDrilldownMenuPresenter.php index 17c2286b..64d027df 100644 --- a/app/MenuPresenters/FoundationDrilldownMenuPresenter.php +++ b/app/CMS/MenuPresenters/FoundationDrilldownMenuPresenter.php @@ -1,5 +1,5 @@ settings) || empty($data->settings) || !json_decode($data->settings)) { throw new MissingParameterException('settings'); diff --git a/app/Widgets/Menu/Presenters/Menu.php b/app/CMS/Widgets/Menu/Presenters/Menu.php similarity index 82% rename from app/Widgets/Menu/Presenters/Menu.php rename to app/CMS/Widgets/Menu/Presenters/Menu.php index d2edc8e8..b10e8858 100644 --- a/app/Widgets/Menu/Presenters/Menu.php +++ b/app/CMS/Widgets/Menu/Presenters/Menu.php @@ -1,13 +1,12 @@ container_class . '"'; - if ($widget->container_id) - $code .= ' id="'.e($widget->container_id).'"'; + if ($widget->container_id) { + $code .= ' id="' . e($widget->container_id) . '"'; + } $code .= '>'; @@ -108,8 +108,6 @@ class Menu implements WidgetRenderer */ public static function renderEditForm(Widget $widget) { - // $extensions = App::make('registerMenuExtension') - // ->get(); $content = new Content(); // get list of all pages @@ -117,11 +115,10 @@ class Menu implements WidgetRenderer ->get(); // make object from JSON - $widget->settingsObj = json_decode($widget->settings); - if (!isset($widget->settingsObj->links)) { + if (!isset($widget->settings->links)) { $links = new \stdClass(); } else { - $links = (array)$widget->settingsObj->links; + $links = (array)$widget->settings->links; } // sort links using "order" @@ -129,7 +126,7 @@ class Menu implements WidgetRenderer return $a->order - $b->order; }); - $widget->settingsObj->links = (object)$links; + $widget->settings->links = (object)$links; return view('admin.widgets.menu.edit', ['widget' => $widget, 'pages' => $pages]); } diff --git a/app/Console/Commands/ChangePassword.php b/app/Console/Commands/ChangePassword.php index e7a5ff21..a97e8f91 100644 --- a/app/Console/Commands/ChangePassword.php +++ b/app/Console/Commands/ChangePassword.php @@ -14,13 +14,13 @@ class ChangePassword extends Command * * @var string */ - protected $signature = 'user:change-password {userID} {newPassword}'; + protected $signature = 'user:change-password {email}'; /** * The console command description. * * @var string */ - protected $description = 'Change password for user with given ID'; + protected $description = 'Change password for user with given e-mail'; /** * Execute the console command. @@ -29,18 +29,26 @@ class ChangePassword extends Command */ public function handle() { - $id = $this->argument('userID'); - $newPassword = $this->argument('newPassword'); - + $email = $this->argument('email'); try { - $user = User::findOrFail($id); + $user = User::where(['email' => $email]) + ->first(); } catch (ModelNotFoundException $e) { - $this->error('Invalid user ID ' . $id . '. Please see table `users` for correct IDs.'); - exit(1); + $this->error('Invalid user ' . $email . '.'); + return; } + do { + $password = $this->secret('Password'); + $passwordAgain = $this->secret('Password again'); + + if ($password !== $passwordAgain) { + $this->error('Passwords does not match'); + } + } while ($passwordAgain !== $password || strlen($password) === 0); + // set new password - $user->password = Hash::make($newPassword); + $user->password = Hash::make($password); $user->save(); $this->info('Password successfully changed.'); diff --git a/app/Console/Commands/NewUser.php b/app/Console/Commands/NewUser.php index eb869777..f700d9fe 100644 --- a/app/Console/Commands/NewUser.php +++ b/app/Console/Commands/NewUser.php @@ -2,11 +2,10 @@ namespace App\Console\Commands; -use App\Enumerations\UserRoles; +use App\CMS\Enumerations\UserRoles; use App\Models\User; use Illuminate\Console\Command; use Illuminate\Support\Facades\Hash; -use Symfony\Component\Console\Exception\InvalidArgumentException; class NewUser extends Command { @@ -15,7 +14,7 @@ class NewUser extends Command * * @var string */ - protected $signature = 'user:new {email} {password} {role}'; + protected $signature = 'user:new {email}'; /** * The console command description. * @@ -25,21 +24,38 @@ class NewUser extends Command /** * Execute the console command. - * - * @return mixed */ public function handle() { $email = $this->argument('email'); - $password = $this->argument('password'); - $role = $this->argument('role'); - // check if given role is valid - $roles = UserRoles::getSimple(); - if (!in_array($role, $roles)) { - throw new InvalidArgumentException('Invalid role specified. valid roles are: ' . implode(', ', $roles)); + // check if username is really email + if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { + $this->error($email . ' is not a valid e-mail!'); + return; } + // ask for password + do { + $password = $this->secret('Password'); + $passwordAgain = $this->secret('Password again'); + + if ($password !== $passwordAgain) { + $this->error('Passwords does not match'); + } + } while ($passwordAgain !== $password || strlen($password) === 0); + + // ask for role + $roles = UserRoles::getSimple(); + do { + $role = $this->ask('Role (default ' . User::ROLE_ADMIN . '): ', User::ROLE_ADMIN); + + // check if given role is valid + if (!in_array($role, $roles)) { + $this->error('Invalid role specified. valid roles are: ' . implode(', ', $roles)); + } + } while (!in_array($role, $roles)); + // create new user $user = new User(); $user->username = $user->email = $email; diff --git a/app/CustomFields/BaseField.php b/app/CustomFields/BaseField.php deleted file mode 100644 index e1900d8e..00000000 --- a/app/CustomFields/BaseField.php +++ /dev/null @@ -1,6 +0,0 @@ - $directory, 'subdirectories' => $directory->subdirectories($includeHidden), - 'files' => $files->get() + 'files' => $files->get(), + 'newDirectory' => new Directory() ]); } } diff --git a/app/Http/Controllers/Admin/Login.php b/app/Http/Controllers/Admin/Login.php index 3eda829b..524cd8f9 100644 --- a/app/Http/Controllers/Admin/Login.php +++ b/app/Http/Controllers/Admin/Login.php @@ -2,7 +2,6 @@ namespace App\Http\Controllers\Admin; -use App\Http\Controllers\Controller; use App\Http\Requests\LoginRequest; use App\Models\User; use Illuminate\Support\Facades\Auth; diff --git a/app/Http/Controllers/Admin/Search.php b/app/Http/Controllers/Admin/Search.php index e23d9ab7..1d93c14f 100644 --- a/app/Http/Controllers/Admin/Search.php +++ b/app/Http/Controllers/Admin/Search.php @@ -2,11 +2,9 @@ namespace App\Http\Controllers\Admin; -use App\Handlers\Contracts\SearchHandler; -use App\Handlers\Contracts\SearchPresenterHandler; -use App\Handlers\Registrators\SearchEngineRegistrator; -use App\Http\Controllers\Controller; -use App\Http\Requests; +use App\CMS\Handlers\Contracts\SearchHandler; +use App\CMS\Handlers\Contracts\SearchPresenterHandler; +use App\CMS\Handlers\Registrators\SearchEngineRegistrator; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\Input; use Symfony\Component\Process\Exception\InvalidArgumentException; diff --git a/app/Http/Controllers/Admin/Settings.php b/app/Http/Controllers/Admin/Settings.php index c677306e..a2c87b2d 100644 --- a/app/Http/Controllers/Admin/Settings.php +++ b/app/Http/Controllers/Admin/Settings.php @@ -2,7 +2,6 @@ namespace App\Http\Controllers\Admin; -use App\Http\Controllers\Controller; use App\Http\Requests; use App\Models\Settings as SettingsModel; use Illuminate\Support\Facades\App; diff --git a/app/Http/Controllers/Admin/Users/CreateNewUser.php b/app/Http/Controllers/Admin/Users/CreateNewUser.php index eb699331..863e5fe0 100644 --- a/app/Http/Controllers/Admin/Users/CreateNewUser.php +++ b/app/Http/Controllers/Admin/Users/CreateNewUser.php @@ -2,7 +2,7 @@ namespace App\Http\Controllers\Admin\Users; -use App\Enumerations\UserRoles; +use App\CMS\Enumerations\UserRoles; use App\Events\CreateNewUser as CreateNewUserEvent; use App\Http\Controllers\Admin\Controller; use App\Http\Requests\CreateNewUserRequest; diff --git a/app/Http/Controllers/Admin/Users/EditUser.php b/app/Http/Controllers/Admin/Users/EditUser.php index c64521f6..1b77f3a8 100644 --- a/app/Http/Controllers/Admin/Users/EditUser.php +++ b/app/Http/Controllers/Admin/Users/EditUser.php @@ -2,8 +2,8 @@ namespace App\Http\Controllers\Admin\Users; -use App\Enumerations\UserRoles; -use App\Enumerations\UserStates; +use App\CMS\Enumerations\UserRoles; +use App\CMS\Enumerations\UserStates; use App\Events\EditUser as EditUserEvent; use App\Http\Controllers\Admin\Controller; use App\Http\Requests\EditUserRequest; diff --git a/app/Http/Controllers/Admin/Users/UserDetail.php b/app/Http/Controllers/Admin/Users/UserDetail.php index 60e78ebc..70825a5b 100644 --- a/app/Http/Controllers/Admin/Users/UserDetail.php +++ b/app/Http/Controllers/Admin/Users/UserDetail.php @@ -2,11 +2,11 @@ namespace App\Http\Controllers\Admin\Users; -use App\Enumerations\UserRoles; -use App\Enumerations\UserStates; +use App\CMS\Enumerations\UserRoles; +use App\CMS\Enumerations\UserStates; use App\Http\Controllers\Admin\Controller; use App\Http\Requests; -use App\Models\ActionLog; +use App\Models\ActionLog\ActionLog; use App\Models\User; use Illuminate\Support\Facades\Auth; diff --git a/app/Http/Controllers/Admin/Users/UsersOverview.php b/app/Http/Controllers/Admin/Users/UsersOverview.php index 86bf137d..4a9870fe 100644 --- a/app/Http/Controllers/Admin/Users/UsersOverview.php +++ b/app/Http/Controllers/Admin/Users/UsersOverview.php @@ -2,8 +2,8 @@ namespace App\Http\Controllers\Admin\Users; -use App\Enumerations\UserRoles; -use App\Enumerations\UserStates; +use App\CMS\Enumerations\UserRoles; +use App\CMS\Enumerations\UserStates; use App\Http\Controllers\Admin\Controller; use App\Models\User; diff --git a/app/Http/Controllers/Admin/Widgets/Areas/EditWidgetArea.php b/app/Http/Controllers/Admin/Widgets/Areas/EditWidgetArea.php index 48bbb523..788957f1 100644 --- a/app/Http/Controllers/Admin/Widgets/Areas/EditWidgetArea.php +++ b/app/Http/Controllers/Admin/Widgets/Areas/EditWidgetArea.php @@ -4,7 +4,7 @@ namespace App\Http\Controllers\Admin\Widgets\Areas; use App\Http\Controllers\Admin\Controller; use App\Http\Requests\EditWidgetAreaRequest; -use App\Models\Widget; +use App\Models\Widgets\Widget; use App\Models\WidgetArea; use App\Models\WidgetInWidgetArea; use Illuminate\Database\Eloquent\ModelNotFoundException; diff --git a/app/Http/Controllers/Admin/Widgets/AssociateWidget.php b/app/Http/Controllers/Admin/Widgets/AssociateWidget.php index 80a8531b..2723002b 100644 --- a/app/Http/Controllers/Admin/Widgets/AssociateWidget.php +++ b/app/Http/Controllers/Admin/Widgets/AssociateWidget.php @@ -5,7 +5,7 @@ namespace App\Http\Controllers\Admin\Widgets; use App\Events\AssignWidget; use App\Events\RemoveWidgetFromArea; use App\Http\Controllers\Admin\Controller; -use App\Models\Widget; +use App\Models\Widgets\Widget; use App\Models\WidgetArea; use App\Models\WidgetInWidgetArea; use Illuminate\Database\QueryException; diff --git a/app/Http/Controllers/Admin/Widgets/CreateNewWidget.php b/app/Http/Controllers/Admin/Widgets/CreateNewWidget.php index 39443084..628ac738 100644 --- a/app/Http/Controllers/Admin/Widgets/CreateNewWidget.php +++ b/app/Http/Controllers/Admin/Widgets/CreateNewWidget.php @@ -4,9 +4,9 @@ namespace App\Http\Controllers\Admin\Widgets; use App\Http\Controllers\Admin\Controller; use App\Http\Requests\NewWidgetRequest; -use App\Models\Widget; -use App\Models\WidgetType; -use App\Widgets\Exceptions\MissingParameterException; +use App\Models\Widgets\Widget; +use App\Models\Widgets\WidgetType; +use App\CMS\Widgets\Exceptions\MissingParameterException; class CreateNewWidget extends Controller { diff --git a/app/Http/Controllers/Admin/Widgets/EditWidget.php b/app/Http/Controllers/Admin/Widgets/EditWidget.php index 2e991d97..51271736 100644 --- a/app/Http/Controllers/Admin/Widgets/EditWidget.php +++ b/app/Http/Controllers/Admin/Widgets/EditWidget.php @@ -3,8 +3,8 @@ namespace App\Http\Controllers\Admin\Widgets; use App\Http\Controllers\Admin\Controller; use App\Http\Requests\EditWidgetRequest; -use App\Models\Widget; -use App\Widgets\Exceptions\MissingParameterException; +use App\Models\Widgets\Widget; +use App\CMS\Widgets\Exceptions\MissingParameterException; use Illuminate\Support\Facades\Event; class EditWidget extends Controller diff --git a/app/Http/Controllers/Admin/Widgets/WidgetsOverview.php b/app/Http/Controllers/Admin/Widgets/WidgetsOverview.php index 4dc6ba1d..4f95be2c 100644 --- a/app/Http/Controllers/Admin/Widgets/WidgetsOverview.php +++ b/app/Http/Controllers/Admin/Widgets/WidgetsOverview.php @@ -2,7 +2,7 @@ namespace App\Http\Controllers\Admin\Widgets; use App\Http\Controllers\Admin\Controller; -use App\Models\Widget; +use App\Models\Widgets\Widget; use Mcamara\LaravelLocalization\Facades\LaravelLocalization; class WidgetsOverview extends Controller diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index b041ba0c..0610b67d 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -2,7 +2,7 @@ namespace App\Http\Controllers; -use App\Helpers\Template; +use App\CMS\Helpers\Template; use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Foundation\Validation\ValidatesRequests; diff --git a/app/Http/Controllers/Sitemap.php b/app/Http/Controllers/Sitemap.php index a72e248e..8d42930d 100644 --- a/app/Http/Controllers/Sitemap.php +++ b/app/Http/Controllers/Sitemap.php @@ -3,7 +3,7 @@ namespace App\Http\Controllers; use App\Http\Requests; -use App\Models\Content; +use App\Models\Content\Content; class Sitemap extends Controller { diff --git a/app/Http/Controllers/Visitor/ContentPage.php b/app/Http/Controllers/Visitor/ContentPage.php index a4e4f3fb..18eea090 100644 --- a/app/Http/Controllers/Visitor/ContentPage.php +++ b/app/Http/Controllers/Visitor/ContentPage.php @@ -2,9 +2,9 @@ namespace App\Http\Controllers\Visitor; -use App\Helpers\PageRenderer; +use App\CMS\Helpers\PageRenderer; use App\Http\Controllers\Controller; -use App\Models\Content; +use App\Models\Content\Content; use Illuminate\Support\Facades\Auth; class ContentPage extends Controller diff --git a/app/Http/Middleware/AdminMenuRegistrator.php b/app/Http/Middleware/AdminMenuRegistrator.php index 88d9549d..ca591767 100644 --- a/app/Http/Middleware/AdminMenuRegistrator.php +++ b/app/Http/Middleware/AdminMenuRegistrator.php @@ -2,7 +2,7 @@ namespace App\Http\Middleware; -use App\Handlers\Handler; +use App\CMS\Handlers\Handler; use App\Models\Module; use Closure; use Illuminate\Support\Facades\Log; diff --git a/app/Http/Middleware/TemplatePathInstaller.php b/app/Http/Middleware/TemplatePathInstaller.php index f06d1446..d1c23267 100644 --- a/app/Http/Middleware/TemplatePathInstaller.php +++ b/app/Http/Middleware/TemplatePathInstaller.php @@ -2,7 +2,7 @@ namespace App\Http\Middleware; -use App\Handlers\Registrators\TemplateRegistrator; +use App\CMS\Handlers\Registrators\TemplateRegistrator; use Closure; use Illuminate\Support\Facades\App; diff --git a/app/Http/Middleware/WidgetInstaller.php b/app/Http/Middleware/WidgetInstaller.php index 883819f3..06eae5c3 100644 --- a/app/Http/Middleware/WidgetInstaller.php +++ b/app/Http/Middleware/WidgetInstaller.php @@ -2,7 +2,7 @@ namespace App\Http\Middleware; -use App\Handlers\Registrators\WidgetRegistrator; +use App\CMS\Handlers\Registrators\WidgetRegistrator; use Closure; use Illuminate\Support\Facades\App; diff --git a/app/Http/Requests/EditContentRequest.php b/app/Http/Requests/EditContentRequest.php index 040fac90..89211305 100644 --- a/app/Http/Requests/EditContentRequest.php +++ b/app/Http/Requests/EditContentRequest.php @@ -2,7 +2,7 @@ namespace App\Http\Requests; -use App\Enumerations\ContentStatuses; +use App\CMS\Enumerations\ContentStatuses; class EditContentRequest extends Request { diff --git a/app/Http/routes.php b/app/Http/routes.php index 4d9c385d..9edfdf89 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -11,9 +11,7 @@ Route::pattern('url', '[0-9\-a-z]+'); /*******************************************************************************/ -Route::group([ - 'prefix' => LaravelLocalization::setLocale(), - ], function () { +Route::group(['prefix' => LaravelLocalization::setLocale()], function () { /** * This route group serves to handle request in admin */ diff --git a/app/Listeners/LogAssignWidget.php b/app/Listeners/Loggers/LogAssignWidget.php similarity index 95% rename from app/Listeners/LogAssignWidget.php rename to app/Listeners/Loggers/LogAssignWidget.php index 4b6bc870..5357570c 100644 --- a/app/Listeners/LogAssignWidget.php +++ b/app/Listeners/Loggers/LogAssignWidget.php @@ -1,6 +1,6 @@ hasMany('App\Models\ContentHistory'); + return $this->hasMany(\App\Models\Content\ContentHistory::class); } /** @@ -416,7 +419,7 @@ class Content extends Model */ public function author() { - return $this->belongsTo('App\Models\User', 'user_id'); + return $this->belongsTo(User::class, 'user_id'); } /** diff --git a/app/Models/ContentHasFile.php b/app/Models/Content/ContentHasFile.php similarity index 88% rename from app/Models/ContentHasFile.php rename to app/Models/Content/ContentHasFile.php index 91921889..351b80c4 100644 --- a/app/Models/ContentHasFile.php +++ b/app/Models/Content/ContentHasFile.php @@ -1,6 +1,6 @@ share('currentUrl', \Request::url()); + + $this->extendBlade(); + + Shortcode::register('widget', Widget::class); + } + + /** + * Register the application services. + * + * @return void + */ + public function register() + { + } + + /** + * Creates pattern for matching Blade directives + * + * @param $function + * + * @return string + */ + private function createPattern($function) + { + return '/(?createPattern('extendVisitor'); + $code = '@extends(\App\CMS\Helpers\Template::name($2))'; + + return preg_replace($pattern, $code, $view); + }); + + $macros = [ + 'upload' => 'echo \App\CMS\Helpers\Path::upload($2);', + 'thumbnail' => 'echo \App\CMS\Helpers\Path::thumbnail($2);', + 'gravatar' => 'echo \App\CMS\Helpers\Gravatar::img($2);', + 'asset' => 'echo \App\CMS\Helpers\Path::asset($2);', + 'date' => 'echo \App\CMS\Helpers\Date::date($2);', + 'customDate' => 'echo \App\CMS\Helpers\Date::dateFormatted($2);', + 'monthName' => 'echo \App\CMS\Helpers\Date::monthName($2);', + 'widgetArea' => '\App\CMS\Helpers\WidgetAreas::render($2);', + 'widgetPreview' => 'echo \App\CMS\Helpers\Widget::render($2)' + ]; + + foreach ($macros as $macro => $code) { + Blade::extend(function ($view) use ($macro, $code) { + $pattern = $this->createPattern($macro); + $code = ''; + + return preg_replace($pattern, $code, $view); + }); + } + } +} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 145fe675..f239c909 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -14,77 +14,77 @@ class EventServiceProvider extends ServiceProvider */ protected $listen = [ 'App\Events\CreateNewUser' => [ - 'App\Listeners\LogCreatedUser', + 'App\Listeners\Loggers\LogCreatedUser', ], 'App\Events\EditUser' => [ - 'App\Listeners\LogEditUser', + 'App\Listeners\Loggers\LogEditUser', ], 'App\Events\CreateNewContent' => [ - 'App\Listeners\LogCreateNewContent' + 'App\Listeners\Loggers\LogCreateNewContent' ], 'App\Events\EditContent' => [ - 'App\Listeners\LogEditContent' + 'App\Listeners\Loggers\LogEditContent' ], 'App\Events\PublishContent' => [ - 'App\Listeners\LogPublishContent' + 'App\Listeners\Loggers\LogPublishContent' ], 'App\Events\MakeDraftFromContent' => [ - 'App\Listeners\LogDraftFromContent' + 'App\Listeners\Loggers\LogDraftFromContent' ], 'App\Events\SetHomepage' => [ - 'App\Listeners\LogSetHomepage' + 'App\Listeners\Loggers\LogSetHomepage' ], 'App\Events\AttemptToEditInvalidContent' => [ - 'App\Listeners\LogAttemptToInvalidContentEdit' + 'App\Listeners\Loggers\LogAttemptToInvalidContentEdit' ], 'App\Events\DeleteContent' => [ - 'App\Listeners\LogDeleteContent' + 'App\Listeners\Loggers\LogDeleteContent' ], 'App\Events\CreateNewCustomField' => [ - 'App\Listeners\LogCreateCustomField', + 'App\Listeners\Loggers\LogCreateCustomField', ], 'App\Events\EditCustomField' => [ - 'App\Listeners\LogEditCustomField', + 'App\Listeners\Loggers\LogEditCustomField', ], 'App\Events\DeleteCustomField' => [ - 'App\Listeners\LogDeleteField', + 'App\Listeners\Loggers\LogDeleteField', ], 'App\Events\ChangeSettings' => [ - 'App\Listeners\LogChangeSettings', + 'App\Listeners\Loggers\LogChangeSettings', ], 'App\Events\UploadFile' => [ - 'App\Listeners\LogUploadFile' + 'App\Listeners\Loggers\LogUploadFile' ], 'App\Events\EditFile' => [ - 'App\Listeners\LogEditFile' + 'App\Listeners\Loggers\LogEditFile' ], 'App\Events\CreateNewWidgetArea' => [ - 'App\Listeners\LogNewWidgetArea' + 'App\Listeners\Loggers\LogNewWidgetArea' ], 'App\Events\EditWidgetArea' => [ - 'App\Listeners\LogEditWidgetArea' + 'App\Listeners\Loggers\LogEditWidgetArea' ], 'App\Events\DeleteWidgetArea' => [ - 'App\Listeners\LogDeleteWidgetArea' + 'App\Listeners\Loggers\LogDeleteWidgetArea' ], 'App\Events\CreateNewWidget' => [ - 'App\Listeners\LogNewWidget' + 'App\Listeners\Loggers\LogNewWidget' ], 'App\Events\EditWidget' => [ - 'App\Listeners\LogEditWidget' + 'App\Listeners\Loggers\LogEditWidget' ], 'App\Events\AssignWidget' => [ - 'App\Listeners\LogAssignWidget' + 'App\Listeners\Loggers\LogAssignWidget' ], 'App\Events\RemoveWidgetFromArea' => [ - 'App\Listeners\LogRemoveWidgetFromArea' + 'App\Listeners\Loggers\LogRemoveWidgetFromArea' ], // internal Laravel events - should work as auth.login and auth.logout, however it doesn't... 'Illuminate\Auth\Events\Login' => [ - 'App\Listeners\LogLogin' + 'App\Listeners\Loggers\LogLogin' ], 'Illuminate\Auth\Events\Logout' => [ - 'App\Listeners\LogLogout' + 'App\Listeners\Loggers\LogLogout' ], ]; diff --git a/app/Providers/GlobalViewDataProvider.php b/app/Providers/GlobalViewDataProvider.php deleted file mode 100644 index dc5a7654..00000000 --- a/app/Providers/GlobalViewDataProvider.php +++ /dev/null @@ -1,149 +0,0 @@ -share('currentUrl', \Request::url()); - - $this->extendBlade(); - - Shortcode::register('widget', Widget::class); - } - - /** - * Creates pattern for matching Blade directives - * - * @param $function - * - * @return string - */ - private function createPattern($function) - { - return '/(?createPattern('extendVisitor'); - $code = '@extends(\App\Helpers\Template::name($2))'; - - return preg_replace($pattern, $code, $view); - }); - - // shortcut for loading uploaded files - Blade::extend(function ($view) { - $pattern = $this->createPattern('upload'); - $code = ''; - - return preg_replace($pattern, $code, $view); - }); - - // shortcut for loading thumbnails of uploaded images - Blade::extend(function ($view) { - $pattern = $this->createPattern('thumbnail'); - $code = ''; - - return preg_replace($pattern, $code, $view); - }); - - // shortcut for displaying Gravatar - Blade::extend(function ($view) { - $pattern = $this->createPattern('gravatar'); - $code = ''; - - return preg_replace($pattern, $code, $view); - }); - - // shortcut for assets (placed in /public/assets/ - Blade::extend(function ($view) { - $pattern = $this->createPattern('asset'); - $code = ''; - - return preg_replace($pattern, $code, $view); - }); - - Blade::extend(function ($view) { - $pattern = $this->createPattern('date'); - $code = ''; - - return preg_replace($pattern, $code, $view); - }); - - Blade::extend(function ($view) { - $pattern = $this->createPattern('customDate'); - $code = ''; - - return preg_replace($pattern, $code, $view); - }); - - Blade::extend(function ($view) { - $pattern = $this->createPattern('monthName'); - $code = ''; - - return preg_replace($pattern, $code, $view); - }); - - - // register extension for rendering widget areas - Blade::extend(function ($view) { - $pattern = $this->createPattern('widgetArea'); - - return preg_replace($pattern, '', $view); - }); - - // register extension for preview of widget - Blade::extend(function ($view) { - $pattern = $this->createPattern('widgetPreview'); - $code = ' - widget_type_handler; - if (!is_object($2->settings)) - $2->settings = json_decode($2->settings); - - $presenter = call_user_func([$handler, "getPresenter"]); - - echo call_user_func([$presenter, "render"], $2); - } - ?> - '; - - return preg_replace($pattern, $code, $view); - }); - } -} diff --git a/app/Providers/SubmodulesManager.php b/app/Providers/SubmodulesManager.php index 48907798..e1f82ca5 100644 --- a/app/Providers/SubmodulesManager.php +++ b/app/Providers/SubmodulesManager.php @@ -60,6 +60,5 @@ class SubmodulesManager extends ServiceProvider */ public function register() { - // TODO: Implement register() method. } } \ No newline at end of file diff --git a/app/Providers/TemplateServiceProvider.php b/app/Providers/TemplateServiceProvider.php index c9511a2f..d090626c 100644 --- a/app/Providers/TemplateServiceProvider.php +++ b/app/Providers/TemplateServiceProvider.php @@ -2,8 +2,8 @@ namespace App\Providers; -use App\Handlers\Registrators\TemplateRegistrator; -use App\Helpers\CurrentTemplate; +use App\CMS\Handlers\Registrators\TemplateRegistrator; +use App\CMS\Helpers\CurrentTemplate; use App\Models\Template; use Illuminate\Support\Facades\App; use Illuminate\Support\ServiceProvider; diff --git a/app/Widgets/HtmlCode/Presenters/CreateNewCode.php b/app/Widgets/HtmlCode/Presenters/CreateNewCode.php deleted file mode 100644 index e69de29b..00000000 diff --git a/app/Widgets/HtmlCode/Presenters/EditCode.php b/app/Widgets/HtmlCode/Presenters/EditCode.php deleted file mode 100644 index e69de29b..00000000 diff --git a/app/Widgets/NonInstallableWidget.php b/app/Widgets/NonInstallableWidget.php deleted file mode 100644 index 0c568849..00000000 --- a/app/Widgets/NonInstallableWidget.php +++ /dev/null @@ -1,15 +0,0 @@ -where('parent_id', $parentDirectoryId); - - // if widget has some directory set, we are performing edit - if ($directoryId) { - $exists = $exists->where('id', '!=', $directoryId); - } - - if ($exists->exists()) { - throw new WidgetExistsException($name); - } - } - - /** - * @param Widget $widget - * @param \stdClass $data - * - * @throws WidgetExistsException - * - * @return Widget - */ - public static function save(Widget $widget, \stdClass $data) - { - $settings = json_decode($widget->settings); - $parentDirectoryId = Storage::get(self::CONFIG_FILENAME); - $directoryId = isset($settings->directoryId) ? $settings->directoryId : null; - - if (!isset($data->useExistingDirectory)) { - // check if name with same name does not exists yet - self::checkIfDirectoryExists($data->name, $directoryId, $parentDirectoryId); - - // setup some information about directory - $directory = $directoryId ? Directory::find($directoryId) : new Directory; - - // setup some info when creating new directory - if (!$directoryId) { - $directory->user_id = Auth::user()->id; - $directory->parent_id = $parentDirectoryId; - } - - // common info both for edit and creation - $directory->name = $data->name; - $directory->description = $data->description; - - // save into database - $directory->save(); - - $directoryId = $directory->id; - } else { - $directoryId = $data->directoryId; - } - - $settings = [ - 'directoryId' => $directoryId, - 'imagePerSlide' => isset($data->imagePerSlide) ? $data->imagePerSlide : 4, - 'displayBullets' => isset($data->displayBullets), - 'sliderClass' => isset($data->containerClass) ? $data->containerClass : '', - 'slideContainerClass' => isset($data->slideContainerClass) ? $data->slideContainerClass : '', - 'code' => isset($data->code) ? $data->code : '' - ]; - - self::checkSettings($settings); - - $widget->settings = json_encode($settings);; - - return $widget; - } - - /** - * Method for populating settings array with default values - * - * @param $settings - */ - public static function checkSettings(&$settings) - { - if (!is_object($settings)) { - $settings = (object)$settings; - } - - if (!isset($settings->slideContainerClass)) { - $settings->slideContainerClass = ''; - } - - if (!isset($settings->displayBullets)) { - $settings->displayBullets = true; - } - - if (!isset($settings->imagePerSlide)) { - $settings->imagePerSlide = 4; - } - - if (!isset($settings->directoryId)) { - $settings->directoryId = false; - } - if (!isset($settings->sliderClass)) { - $settings->sliderClass = ''; - } - if (!isset($settings->code)) { - $settings->code = ''; - } - } - - /** - * Getter for presenter/renderer of this widget - * - * @return WidgetRenderer - */ - public static function getPresenter() - { - return Presenters\OrbitSlider::class; - } - - /** - * Function for installing given widget - * - * @return mixed - */ - public static function install() - { - $directory = Directory::where('name', self::DIRECTORY_NAME) - ->first(); - - if (!count($directory)) { - $directory = Directory::create([ - 'name' => self::DIRECTORY_NAME, - 'hidden' => true - ]); - } - - Storage::put(self::CONFIG_FILENAME, $directory->id); - } - - /** - * Function for uninstalling widget - */ - public static function uninstall() - { - // TODO: Implement uninstall() method. - } -} \ No newline at end of file diff --git a/app/Widgets/OrbitSlider/Presenters/OrbitSlider.php b/app/Widgets/OrbitSlider/Presenters/OrbitSlider.php deleted file mode 100644 index 34d580cb..00000000 --- a/app/Widgets/OrbitSlider/Presenters/OrbitSlider.php +++ /dev/null @@ -1,99 +0,0 @@ - trans('widgets/orbitSlider.fullscreen'), - 1 => '1', - 2 => '2', - 3 => '3', - 4 => '4', - 6 => '6', - 12 => '12', - ]; - } - - /** - * Method used for displaying widget. - * - * This method renders some HTML code for displaying. - * - * @param Widget $widget - * - * @return mixed - */ - public static function render(Widget $widget) - { - $settings = $widget->settings; - $directoryId = $settings->directoryId; - - $images = File::where('directory_id', $directoryId) - ->where('mime_type', 'LIKE', 'image%') - ->get(); - - // add some non-existing values - \App\Widgets\OrbitSlider\OrbitSlider::checkSettings($settings); - - $slidesCount = ($settings->imagePerSlide == 'fullscreen') ? count($images) : ceil(count($images) / $settings->imagePerSlide); - $htmlGridNumber = ($settings->imagePerSlide == 'fullscreen') ? false : 12 / $settings->imagePerSlide; - - return view('widgets.orbitSlider.element', [ - 'images' => $images, - 'settings' => $settings, - 'slidesCount' => $slidesCount, - 'gridNumber' => $htmlGridNumber - ]); - } - - /** - * Display form for creating new instance of widget - * - * @param WidgetType $type - * - * @return mixed - */ - public static function renderAddForm(WidgetType $type) - { - $widget = new Widget(); - - // create default object with settings - $settings = new \stdClass(); - \App\Widgets\OrbitSlider\OrbitSlider::checkSettings($settings); - - return view('admin.widgets.orbitSlider.new', [ - 'type' => $type, - 'widget' => $widget, - 'settings' => $settings, - 'availableColumns' => self::getAvailableColumns() - ]); - } - - /** - * Display form for editing already existing widget - * - * @param Widget $widget - * - * @return mixed - */ - public static function renderEditForm(Widget $widget) - { - $settings = json_decode($widget->settings); - - // create default object with settings - \App\Widgets\OrbitSlider\OrbitSlider::checkSettings($settings); - - return view('admin.widgets.orbitSlider.edit', [ - 'widget' => $widget, - 'settings' => $settings, - 'availableColumns' => self::getAvailableColumns() - ]); - } -} \ No newline at end of file diff --git a/app/Widgets/Widget.php b/app/Widgets/Widget.php deleted file mode 100644 index c5186d69..00000000 --- a/app/Widgets/Widget.php +++ /dev/null @@ -1,8 +0,0 @@ - env('APP_LOG', 'single'), + 'log' => env('APP_LOG', 'daily'), /* |-------------------------------------------------------------------------- | Autoloaded Service Providers @@ -170,7 +170,7 @@ return [ App\Providers\AuthServiceProvider::class, App\Providers\EventServiceProvider::class, App\Providers\RouteServiceProvider::class, - App\Providers\GlobalViewDataProvider::class, + App\Providers\BladeExtender::class, \App\Providers\TemplateServiceProvider::class, ], diff --git a/config/compile.php b/config/compile.php index 04807eac..bdd9025e 100644 --- a/config/compile.php +++ b/config/compile.php @@ -14,7 +14,25 @@ return [ */ 'files' => [ - // + 'app/CMS/Helpers/CurrentTemplate.php', + 'app/CMS/Helpers/PageRenderer.php', + 'app/CMS/Helpers/Path.php', + 'app/CMS/Helpers/Settings.php', + 'app/CMS/Helpers/Template.php', + 'app/CMS/Handlers/Handler.php', + 'app/CMS/Shortcodes/Widget.php', + 'app/Providers/BladeExtender.php', + 'app/Providers/ModuleManager.php', + 'app/Providers/SubmodulesManager.php', + 'app/Providers/TemplateServiceProvider.php', + 'app/Providers/AppServiceProvider.php', + 'app/Providers/AuthServiceProvider.php', + 'app/Providers/LaravelLocalizationServiceProvider.php', + 'app/Providers/ModuleServiceProvider.php', + 'app/Http/Controllers/Controller.php', + 'app/CMS/Helpers/Date.php', + 'app/CMS/Enumerations/BaseEnumeration.php', + 'app/Models/Content/Content.php', ], /* @@ -28,8 +46,7 @@ return [ | */ - 'providers' => [ - // + 'providers' => [// ], ]; diff --git a/config/menus.php b/config/menus.php index 167122b3..0fc4ae4c 100644 --- a/config/menus.php +++ b/config/menus.php @@ -9,11 +9,11 @@ return [ 'nav-tab' => 'Pingpong\Menus\Presenters\Bootstrap\NavTabPresenter', 'sidebar' => 'Pingpong\Menus\Presenters\Bootstrap\SidebarMenuPresenter', 'navmenu' => 'Pingpong\Menus\Presenters\Bootstrap\NavMenuPresenter', - 'foundation-drilldown' => 'App\MenuPresenters\FoundationDrilldownMenuPresenter', - 'foundation-dropdown' => 'App\MenuPresenters\FoundationDropdownMenuPresenter', - 'foundation-dropdown-initialized' => 'App\MenuPresenters\FoundationInitializedDropdownMenuPresenter', - 'metismenu' => 'App\MenuPresenters\MetismenuPresenter', - 'profile-menu' => 'App\MenuPresenters\ProfileMenuPresenter', + 'foundation-drilldown' => App\CMS\MenuPresenters\FoundationDrilldownMenuPresenter::class, + 'foundation-dropdown' => App\CMS\MenuPresenters\FoundationDropdownMenuPresenter::class, + 'foundation-dropdown-initialized' => App\CMS\MenuPresenters\FoundationInitializedDropdownMenuPresenter::class, + 'metismenu' => App\CMS\MenuPresenters\MetismenuPresenter::class, + 'profile-menu' => App\CMS\MenuPresenters\ProfileMenuPresenter::class, ], 'ordering' => true, diff --git a/database/migrations/2016_10_16_204959_MigrateWidgetHandlersToNewStructure.php b/database/migrations/2016_10_16_204959_MigrateWidgetHandlersToNewStructure.php new file mode 100644 index 00000000..e3f7f831 --- /dev/null +++ b/database/migrations/2016_10_16_204959_MigrateWidgetHandlersToNewStructure.php @@ -0,0 +1,68 @@ +dropForeign('widgets_widget_type_handler_foreign'); + }); + + Schema::table('widgets', function (Blueprint $table) { + $table->foreign('widget_type_handler') + ->references('handler') + ->on('widget_types') + ->onDelete('cascade') + ->onUpdate('cascade'); + }); + + $widgets = WidgetType::where('handler', 'LIKE', '%App%') + ->get(); + + foreach ($widgets as $widget) { + $widget->handler = str_replace('App\Widgets', 'App\CMS\Widgets', $widget->handler); + $widget->save(); + } + + + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { +// Schema::table('widgets', function (Blueprint $table) { +// $table->dropForeign('widgets_widget_type_handler_foreign'); +// }); + + $widgets = WidgetType::where('handler', 'LIKE', '%App%') + ->get(); + + foreach ($widgets as $widget) { + $widget->handler = str_replace('App\CMS\Widgets', 'App\Widgets', $widget->handler); + + $widget->save(); + } + +// Schema::table('widgets', function (Blueprint $table) { +// $table->foreign('widget_type_handler') +// ->references('handler') +// ->on('widget_types') +// ->onDelete('cascade') +// ->onUpdate('cascade'); +// }); + } +} diff --git a/index.php b/index.php index 6694af8c..48384dc5 100644 --- a/index.php +++ b/index.php @@ -16,5 +16,5 @@ if ($uri !== '/' && file_exists(__DIR__ . '/public' . $uri)) { return false; } -require_once __DIR__ . '/app/Helpers/functions.php'; +require_once __DIR__ . '/app/CMS/Helpers/functions.php'; require_once __DIR__ . '/public/index.php'; diff --git a/modules/Blog/Article/Entities/Article.php b/modules/Blog/Article/Entities/Article.php index 108ee12c..1222a7bb 100644 --- a/modules/Blog/Article/Entities/Article.php +++ b/modules/Blog/Article/Entities/Article.php @@ -1,7 +1,7 @@