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.'
-
-
- '.$this->getChildMenuItems($item).'
-
- ' . 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 @@
-
- ...
+
-
- {{$vendorName}}
+
-
- {!! Menu::render('profileMenu') !!}
+
-
-
+
© {{$vendorName}} {{date('Y')}}
@@ -49,5 +57,9 @@
@yield('javascripts')
+
+