diff --git a/app/MenuPresenters/FoundationDrilldownMenuPresenter.php b/app/MenuPresenters/FoundationDrilldownMenuPresenter.php new file mode 100644 index 00000000..ebc3b1b9 --- /dev/null +++ b/app/MenuPresenters/FoundationDrilldownMenuPresenter.php @@ -0,0 +1,77 @@ +' . PHP_EOL; + } + + /** + * {@inheritdoc } + */ + public function getCloseTagWrapper() + { + return PHP_EOL . '' . PHP_EOL; + } + + /** + * {@inheritdoc } + */ + public function getMenuWithoutDropdownWrapper($item) + { + return 'getActiveState($item) . '>' . $item->getIcon() . ' ' . $item->title . '' . PHP_EOL; + } + + /** + * {@inheritdoc } + */ + public function getActiveState(MenuItem $item) + { + $active = ' class="active"'; + + if (empty($item->getChilds())) { + // for direct menu input return if page is active + return \Request::is($item->getRequest()) ? $active : null; + } else { + // on nested menu inputs loop over children and in case any of them is active, mark active also root level + foreach ($item->getChilds() as $child) { + if ($this->getActiveState($child)) { + return $active; + } + } + } + + return null; + } + + /** + * {@inheritdoc } + */ + public function getDividerWrapper() + { + return '
  • ' . PHP_EOL; + } + + /** + * {@inheritdoc } + */ + public function getMenuWithDropDownWrapper($item) + { + $active = $this->getActiveState($item); + + return '
  • + ' . $item->getIcon() . ' ' . $item->title . ' + +
  • ' . PHP_EOL;; + } +} \ No newline at end of file diff --git a/app/MenuPresenters/FoundationDropdownMenuPresenter.php b/app/MenuPresenters/FoundationDropdownMenuPresenter.php new file mode 100644 index 00000000..bc2a4ac1 --- /dev/null +++ b/app/MenuPresenters/FoundationDropdownMenuPresenter.php @@ -0,0 +1,61 @@ +' . PHP_EOL; + } + + /** + * {@inheritdoc } + */ + public function getCloseTagWrapper() + { + return PHP_EOL . '' . PHP_EOL; + } + + /** + * {@inheritdoc } + */ + public function getMenuWithoutDropdownWrapper($item) + { + $link = '' . $item->getIcon() . ' ' . $item->title . ''; + return 'getActiveState($item) . '>' . $link . ''.PHP_EOL; + } + + /** + * {@inheritdoc } + */ + public function getActiveState($item) + { + return \Request::is($item->getRequest()) || $item->hasActiveOnChild ? ' class="active"' : null; + } + + /** + * {@inheritdoc } + */ + public function getDividerWrapper() + { + return '
  • '.PHP_EOL; + } + + /** + * {@inheritdoc } + */ + public function getMenuWithDropDownWrapper($item) + { + return '
  • + ' . $item->getIcon() . ' ' . $item->title . ' + +
  • ' . PHP_EOL;; + } +} \ No newline at end of file diff --git a/app/MenuPresenters/FoundationInitializedDropdownMenuPresenter.php b/app/MenuPresenters/FoundationInitializedDropdownMenuPresenter.php new file mode 100644 index 00000000..3d97bbd8 --- /dev/null +++ b/app/MenuPresenters/FoundationInitializedDropdownMenuPresenter.php @@ -0,0 +1,10 @@ +' . PHP_EOL; + } +} \ No newline at end of file diff --git a/app/MenuPresenters/FoundationMenuPresenter.php b/app/MenuPresenters/FoundationMenuPresenter.php deleted file mode 100644 index 35d20e57..00000000 --- a/app/MenuPresenters/FoundationMenuPresenter.php +++ /dev/null @@ -1,63 +0,0 @@ -' . PHP_EOL; - } - - /** - * {@inheritdoc } - */ - public function getCloseTagWrapper() - { - return PHP_EOL . '' . PHP_EOL; - } - - /** - * {@inheritdoc } - */ - public function getMenuWithoutDropdownWrapper($item) - { - return 'getActiveState($item).'>'.$item->getIcon().' '.$item->title.''; - } - - /** - * {@inheritdoc } - */ - public function getActiveState($item) - { - return \Request::is($item->getRequest()) ? ' class="active"' : null; - } - - /** - * {@inheritdoc } - */ - public function getDividerWrapper() - { - return '
  • '; - } - - /** - * {@inheritdoc } - */ - public function getMenuWithDropDownWrapper($item) - { - return '
  • - - '.$item->getIcon().' '.$item->title.' - - -
  • ' . PHP_EOL; - ; - } -} \ No newline at end of file diff --git a/app/Models/User.php b/app/Models/User.php index 0270bc30..84f26d0f 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -3,7 +3,6 @@ namespace App\Models; use Illuminate\Auth\Authenticatable; -use Illuminate\Auth\Passwords\CanResetPassword; use Illuminate\Contracts\Auth\Authenticatable as AuthenticableInterface; use Illuminate\Database\Eloquent\Model; use Illuminate\Foundation\Auth\Access\Authorizable; @@ -14,7 +13,6 @@ use Illuminate\Foundation\Auth\Access\Authorizable; class User extends Model implements AuthenticableInterface { use Authenticatable, Authorizable; - public $timestamps = false; protected $fillable = [ 'email', @@ -32,11 +30,24 @@ class User extends Model implements AuthenticableInterface 'password', 'remember_token', ]; - const STATE_DELETED = 'deleted'; const STATE_BLOCKED = 'blocked'; const STATE_ACTIVE = 'active'; const ROLE_VISITOR = 'visitor'; const ROLE_EDITOR = 'editor'; const ROLE_ADMIN = 'admin'; - } + + /** + * Getter for Gravatar URL + * + * This method returns full path (url) to user's Gravatar. It accepts optional parameter for setting size. + * + * @param int $size size of rendered gravatar + * + * @return string + */ + public function gravatar($size = 50) + { + return "http://www.gravatar.com/avatar/" . md5(strtolower(trim($this->email))) . "?s=" . $size; + } +} diff --git a/app/Providers/AdminProvider.php b/app/Providers/AdminMenusProvider.php similarity index 74% rename from app/Providers/AdminProvider.php rename to app/Providers/AdminMenusProvider.php index 4095bcfb..ba580a1e 100644 --- a/app/Providers/AdminProvider.php +++ b/app/Providers/AdminMenusProvider.php @@ -4,7 +4,7 @@ namespace App\Providers; use Illuminate\Support\ServiceProvider; -class AdminProvider extends ServiceProvider +class AdminMenusProvider extends ServiceProvider { /** * Bootstrap the application services. @@ -28,14 +28,18 @@ class AdminProvider extends ServiceProvider $menu->url(action('Admin\Dashboard@getIndex'), trans('admin/mainMenu.dashboard'), 1, ['icon' => 'fa fa-dashboard']); $menu->dropdown(trans('admin/mainMenu.userManagement'), function($sub) { $sub->url(action('Admin\UserManagement@getNewUser'), trans('admin/mainMenu.newUser'), 1, ['icon' => 'fa fa-user-plus']); - $sub->url(action('Admin\UserManagement@getOverview', ['state' => 'all']), trans('admin/mainMenu.usersOverview'), 2, ['icon' => 'fa fa-users']); + $sub->url(action('Admin\UserManagement@getOverview'), trans('admin/mainMenu.usersOverview'), 2, ['icon' => 'fa fa-users']); }, ['icon' => 'fa fa-users']); + $menu->url('#', trans('admin/mainMenu.customFields'), 30, ['icon' => 'fa fa-code']); + $menu->url('#', trans('admin/mainMenu.settings'), 50, ['icon' => 'fa fa-gear']); + }); // create menu with user profile \Menu::create('profileMenu', function ($menu) { - // @todo add profile menu + $menu->url('#', trans('admin/userManagement.profile')); + $menu->url('#', trans('admin/common.logout')); }); } diff --git a/app/Providers/GlobalViewDataProvider.php b/app/Providers/GlobalViewDataProvider.php index c1fa2ead..bd3828df 100644 --- a/app/Providers/GlobalViewDataProvider.php +++ b/app/Providers/GlobalViewDataProvider.php @@ -13,7 +13,6 @@ class GlobalViewDataProvider extends ServiceProvider */ public function boot() { - view()->share('something', 'some value'); view()->share('vendorName', 'ja s.r.o.'); } diff --git a/config/app.php b/config/app.php index 30e18278..0d4c5cc6 100644 --- a/config/app.php +++ b/config/app.php @@ -148,7 +148,7 @@ return [ App\Providers\EventServiceProvider::class, App\Providers\RouteServiceProvider::class, App\Providers\GlobalViewDataProvider::class, - App\Providers\AdminProvider::class, + App\Providers\AdminMenusProvider::class, ], /* diff --git a/config/menus.php b/config/menus.php index f924aed9..1bb47b8e 100644 --- a/config/menus.php +++ b/config/menus.php @@ -2,16 +2,17 @@ return [ - 'styles' => [ - 'navbar' => 'Pingpong\Menus\Presenters\Bootstrap\NavbarPresenter', - 'navbar-right' => 'Pingpong\Menus\Presenters\Bootstrap\NavbarRightPresenter', - 'nav-pills' => 'Pingpong\Menus\Presenters\Bootstrap\NavPillsPresenter', - 'nav-tab' => 'Pingpong\Menus\Presenters\Bootstrap\NavTabPresenter', - 'sidebar' => 'Pingpong\Menus\Presenters\Bootstrap\SidebarMenuPresenter', - 'navmenu' => 'Pingpong\Menus\Presenters\Bootstrap\NavMenuPresenter', - 'foundation' => 'App\MenuPresenters\FoundationMenuPresenter', + 'styles' => [ + 'navbar' => 'Pingpong\Menus\Presenters\Bootstrap\NavbarPresenter', + 'navbar-right' => 'Pingpong\Menus\Presenters\Bootstrap\NavbarRightPresenter', + 'nav-pills' => 'Pingpong\Menus\Presenters\Bootstrap\NavPillsPresenter', + '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', ], - 'ordering' => false, ]; diff --git a/resources/assets/css/admin.css b/resources/assets/css/admin.css index 08a85572..8bbd8ebe 100644 --- a/resources/assets/css/admin.css +++ b/resources/assets/css/admin.css @@ -5,15 +5,24 @@ } header { - background: #ddd; } .sidebar { - background: #eee; - } .login-form { margin-top: 4em; +} + +.active { + font-weight: bolder; +} + +/** + Footer +*/ + +footer { + margin-top: 10em; } \ No newline at end of file diff --git a/resources/lang/en/admin/common.php b/resources/lang/en/admin/common.php new file mode 100644 index 00000000..bb6b66d3 --- /dev/null +++ b/resources/lang/en/admin/common.php @@ -0,0 +1,5 @@ + 'Administration', + 'logout' => 'Log out' +]; \ No newline at end of file diff --git a/resources/lang/en/admin/mainMenu.php b/resources/lang/en/admin/mainMenu.php index 3f1acc78..bce4f13b 100644 --- a/resources/lang/en/admin/mainMenu.php +++ b/resources/lang/en/admin/mainMenu.php @@ -1,8 +1,10 @@ 'Dashboard', - 'userManagement' => 'User Management', - 'newUser' => 'New User', - 'usersOverview' => 'Overview' + 'dashboard' => 'Dashboard', + 'userManagement' => 'Users', + 'newUser' => 'New User', + 'usersOverview' => 'Overview', + 'customFields' => 'Custom fields', + 'settings' => 'Settings' ]; \ No newline at end of file diff --git a/resources/lang/en/admin/userManagement.php b/resources/lang/en/admin/userManagement.php index 84b460e5..9bd63b9e 100644 --- a/resources/lang/en/admin/userManagement.php +++ b/resources/lang/en/admin/userManagement.php @@ -10,6 +10,7 @@ return [ 'role_editor' => 'Editor', 'role_visitor' => 'Visitor', 'register' => 'Create user', - 'registrationSuccessfull' => 'New user successfully added.' + 'registrationSuccessfull' => 'New user successfully added.', + 'profile' => 'Your profile' ]; \ No newline at end of file diff --git a/resources/views/admin/layout.blade.php b/resources/views/admin/layout.blade.php index 20ae8fa4..4f93fe8c 100644 --- a/resources/views/admin/layout.blade.php +++ b/resources/views/admin/layout.blade.php @@ -5,7 +5,7 @@ @yield('head_meta') - @yield('pageName') {{$vendorName}} + @yield('pageName', @trans('admin/common.admin')) | {{$vendorName}} @@ -16,30 +16,38 @@
    -
    -
    +
    @yield('content')
    -
    +
    © {{$vendorName}} {{date('Y')}}
    @@ -49,5 +57,9 @@ @yield('javascripts') + +