Compare commits

..

No commits in common. 'master' and 'dev' have entirely different histories.
master ... dev

@ -34,6 +34,7 @@ class Company extends Model
public function projects()
{
return $this->hasMany('App\Model\Project');
// ->addSelect('id','name');
}
public function comments()

@ -21,14 +21,18 @@
"copy-webpack-plugin": "^4.5.1",
"css-loader": "^0.28.11",
"extract-text-webpack-plugin": "^4.0.0-beta.0",
"file-loader": "^1.1.11",
"font-awesome": "^4.7.0",
"html-webpack-plugin": "^3.2.0",
"jquery": "^3.3.1",
"lodash": "^4.17.5",
"metismenu": "^2.7.7",
"node-sass": "^4.8.3",
"path": "^0.12.7",
"popper.js": "^1.14.0",
"sass-loader": "^6.0.7",
"style-loader": "^0.20.3",
"url-loader": "^1.0.1",
"vue": "^2.5.16",
"vue-loader": "^14.2.2",
"vue-style-loader": "^4.1.0",

8564
public/css/admin.css vendored

File diff suppressed because it is too large Load Diff

260
public/css/app.css vendored

@ -1077,10 +1077,10 @@ textarea {
line-height: inherit; }
a {
color: #3097D1;
color: #428bca;
text-decoration: none; }
a:hover, a:focus {
color: #216a94;
color: #2a6496;
text-decoration: underline; }
a:focus {
outline: 5px auto -webkit-focus-ring-color;
@ -1165,7 +1165,7 @@ h1, h2, h3, h4, h5, h6,
.h6 .small {
font-weight: normal;
line-height: 1;
color: #777777; }
color: #999999; }
h1, .h1,
h2, .h2,
@ -1263,14 +1263,14 @@ mark,
text-transform: capitalize; }
.text-muted {
color: #777777; }
color: #999999; }
.text-primary {
color: #3097D1; }
color: #428bca; }
a.text-primary:hover,
a.text-primary:focus {
color: #2579a9; }
color: #3071a9; }
.text-success {
color: #3c763d; }
@ -1304,11 +1304,11 @@ a.text-danger:focus {
color: #fff; }
.bg-primary {
background-color: #3097D1; }
background-color: #428bca; }
a.bg-primary:hover,
a.bg-primary:focus {
background-color: #2579a9; }
background-color: #3071a9; }
.bg-success {
background-color: #dff0d8; }
@ -1402,7 +1402,7 @@ dd {
abbr[title],
abbr[data-original-title] {
cursor: help;
border-bottom: 1px dotted #777777; }
border-bottom: 1px dotted #999999; }
.initialism {
font-size: 90%; }
@ -1422,7 +1422,7 @@ blockquote {
display: block;
font-size: 80%;
line-height: 1.6;
color: #777777; }
color: #999999; }
blockquote footer:before,
blockquote small:before,
blockquote .small:before {
@ -2031,7 +2031,7 @@ table {
caption {
padding-top: 8px;
padding-bottom: 8px;
color: #777777;
color: #999999;
text-align: left; }
th {
@ -2868,28 +2868,28 @@ fieldset[disabled] a.btn {
.btn-primary {
color: #fff;
background-color: #3097D1;
border-color: #2a88bd; }
background-color: #428bca;
border-color: #357ebd; }
.btn-primary:focus, .btn-primary.focus {
color: #fff;
background-color: #2579a9;
border-color: #133d55; }
background-color: #3071a9;
border-color: #193c5a; }
.btn-primary:hover {
color: #fff;
background-color: #2579a9;
border-color: #1f648b; }
background-color: #3071a9;
border-color: #285e8e; }
.btn-primary:active, .btn-primary.active,
.open > .btn-primary.dropdown-toggle {
color: #fff;
background-color: #2579a9;
border-color: #1f648b; }
background-color: #3071a9;
border-color: #285e8e; }
.btn-primary:active:hover, .btn-primary:active:focus, .btn-primary:active.focus, .btn-primary.active:hover, .btn-primary.active:focus, .btn-primary.active.focus,
.open > .btn-primary.dropdown-toggle:hover,
.open > .btn-primary.dropdown-toggle:focus,
.open > .btn-primary.dropdown-toggle.focus {
color: #fff;
background-color: #1f648b;
border-color: #133d55; }
background-color: #285e8e;
border-color: #193c5a; }
.btn-primary:active, .btn-primary.active,
.open > .btn-primary.dropdown-toggle {
background-image: none; }
@ -2897,36 +2897,36 @@ fieldset[disabled] a.btn {
fieldset[disabled] .btn-primary:hover,
fieldset[disabled] .btn-primary:focus,
fieldset[disabled] .btn-primary.focus {
background-color: #3097D1;
border-color: #2a88bd; }
background-color: #428bca;
border-color: #357ebd; }
.btn-primary .badge {
color: #3097D1;
color: #428bca;
background-color: #fff; }
.btn-success {
color: #fff;
background-color: #2ab27b;
border-color: #259d6d; }
background-color: #5cb85c;
border-color: #4cae4c; }
.btn-success:focus, .btn-success.focus {
color: #fff;
background-color: #20895e;
border-color: #0d3625; }
background-color: #449d44;
border-color: #255625; }
.btn-success:hover {
color: #fff;
background-color: #20895e;
border-color: #196c4b; }
background-color: #449d44;
border-color: #398439; }
.btn-success:active, .btn-success.active,
.open > .btn-success.dropdown-toggle {
color: #fff;
background-color: #20895e;
border-color: #196c4b; }
background-color: #449d44;
border-color: #398439; }
.btn-success:active:hover, .btn-success:active:focus, .btn-success:active.focus, .btn-success.active:hover, .btn-success.active:focus, .btn-success.active.focus,
.open > .btn-success.dropdown-toggle:hover,
.open > .btn-success.dropdown-toggle:focus,
.open > .btn-success.dropdown-toggle.focus {
color: #fff;
background-color: #196c4b;
border-color: #0d3625; }
background-color: #398439;
border-color: #255625; }
.btn-success:active, .btn-success.active,
.open > .btn-success.dropdown-toggle {
background-image: none; }
@ -2934,36 +2934,36 @@ fieldset[disabled] a.btn {
fieldset[disabled] .btn-success:hover,
fieldset[disabled] .btn-success:focus,
fieldset[disabled] .btn-success.focus {
background-color: #2ab27b;
border-color: #259d6d; }
background-color: #5cb85c;
border-color: #4cae4c; }
.btn-success .badge {
color: #2ab27b;
color: #5cb85c;
background-color: #fff; }
.btn-info {
color: #fff;
background-color: #8eb4cb;
border-color: #7da8c3; }
background-color: #5bc0de;
border-color: #46b8da; }
.btn-info:focus, .btn-info.focus {
color: #fff;
background-color: #6b9dbb;
border-color: #3d6983; }
background-color: #31b0d5;
border-color: #1b6d85; }
.btn-info:hover {
color: #fff;
background-color: #6b9dbb;
border-color: #538db0; }
background-color: #31b0d5;
border-color: #269abc; }
.btn-info:active, .btn-info.active,
.open > .btn-info.dropdown-toggle {
color: #fff;
background-color: #6b9dbb;
border-color: #538db0; }
background-color: #31b0d5;
border-color: #269abc; }
.btn-info:active:hover, .btn-info:active:focus, .btn-info:active.focus, .btn-info.active:hover, .btn-info.active:focus, .btn-info.active.focus,
.open > .btn-info.dropdown-toggle:hover,
.open > .btn-info.dropdown-toggle:focus,
.open > .btn-info.dropdown-toggle.focus {
color: #fff;
background-color: #538db0;
border-color: #3d6983; }
background-color: #269abc;
border-color: #1b6d85; }
.btn-info:active, .btn-info.active,
.open > .btn-info.dropdown-toggle {
background-image: none; }
@ -2971,36 +2971,36 @@ fieldset[disabled] a.btn {
fieldset[disabled] .btn-info:hover,
fieldset[disabled] .btn-info:focus,
fieldset[disabled] .btn-info.focus {
background-color: #8eb4cb;
border-color: #7da8c3; }
background-color: #5bc0de;
border-color: #46b8da; }
.btn-info .badge {
color: #8eb4cb;
color: #5bc0de;
background-color: #fff; }
.btn-warning {
color: #fff;
background-color: #cbb956;
border-color: #c5b143; }
background-color: #f0ad4e;
border-color: #eea236; }
.btn-warning:focus, .btn-warning.focus {
color: #fff;
background-color: #b6a338;
border-color: #685d20; }
background-color: #ec971f;
border-color: #985f0d; }
.btn-warning:hover {
color: #fff;
background-color: #b6a338;
border-color: #9b8a30; }
background-color: #ec971f;
border-color: #d58512; }
.btn-warning:active, .btn-warning.active,
.open > .btn-warning.dropdown-toggle {
color: #fff;
background-color: #b6a338;
border-color: #9b8a30; }
background-color: #ec971f;
border-color: #d58512; }
.btn-warning:active:hover, .btn-warning:active:focus, .btn-warning:active.focus, .btn-warning.active:hover, .btn-warning.active:focus, .btn-warning.active.focus,
.open > .btn-warning.dropdown-toggle:hover,
.open > .btn-warning.dropdown-toggle:focus,
.open > .btn-warning.dropdown-toggle.focus {
color: #fff;
background-color: #9b8a30;
border-color: #685d20; }
background-color: #d58512;
border-color: #985f0d; }
.btn-warning:active, .btn-warning.active,
.open > .btn-warning.dropdown-toggle {
background-image: none; }
@ -3008,36 +3008,36 @@ fieldset[disabled] a.btn {
fieldset[disabled] .btn-warning:hover,
fieldset[disabled] .btn-warning:focus,
fieldset[disabled] .btn-warning.focus {
background-color: #cbb956;
border-color: #c5b143; }
background-color: #f0ad4e;
border-color: #eea236; }
.btn-warning .badge {
color: #cbb956;
color: #f0ad4e;
background-color: #fff; }
.btn-danger {
color: #fff;
background-color: #bf5329;
border-color: #aa4a24; }
background-color: #d9534f;
border-color: #d43f3a; }
.btn-danger:focus, .btn-danger.focus {
color: #fff;
background-color: #954120;
border-color: #411c0e; }
background-color: #c9302c;
border-color: #761c19; }
.btn-danger:hover {
color: #fff;
background-color: #954120;
border-color: #78341a; }
background-color: #c9302c;
border-color: #ac2925; }
.btn-danger:active, .btn-danger.active,
.open > .btn-danger.dropdown-toggle {
color: #fff;
background-color: #954120;
border-color: #78341a; }
background-color: #c9302c;
border-color: #ac2925; }
.btn-danger:active:hover, .btn-danger:active:focus, .btn-danger:active.focus, .btn-danger.active:hover, .btn-danger.active:focus, .btn-danger.active.focus,
.open > .btn-danger.dropdown-toggle:hover,
.open > .btn-danger.dropdown-toggle:focus,
.open > .btn-danger.dropdown-toggle.focus {
color: #fff;
background-color: #78341a;
border-color: #411c0e; }
background-color: #ac2925;
border-color: #761c19; }
.btn-danger:active, .btn-danger.active,
.open > .btn-danger.dropdown-toggle {
background-image: none; }
@ -3045,14 +3045,14 @@ fieldset[disabled] a.btn {
fieldset[disabled] .btn-danger:hover,
fieldset[disabled] .btn-danger:focus,
fieldset[disabled] .btn-danger.focus {
background-color: #bf5329;
border-color: #aa4a24; }
background-color: #d9534f;
border-color: #d43f3a; }
.btn-danger .badge {
color: #bf5329;
color: #d9534f;
background-color: #fff; }
.btn-link {
color: #3097D1;
color: #428bca;
font-weight: normal;
border-radius: 0; }
.btn-link, .btn-link:active, .btn-link.active, .btn-link[disabled],
@ -3063,13 +3063,13 @@ fieldset[disabled] a.btn {
.btn-link, .btn-link:hover, .btn-link:focus, .btn-link:active {
border-color: transparent; }
.btn-link:hover, .btn-link:focus {
color: #216a94;
color: #2a6496;
text-decoration: underline;
background-color: transparent; }
.btn-link[disabled]:hover, .btn-link[disabled]:focus,
fieldset[disabled] .btn-link:hover,
fieldset[disabled] .btn-link:focus {
color: #777777;
color: #999999;
text-decoration: none; }
.btn-lg, .btn-group-lg > .btn {
@ -3196,10 +3196,10 @@ tbody.collapse.in {
color: #fff;
text-decoration: none;
outline: 0;
background-color: #3097D1; }
background-color: #428bca; }
.dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus {
color: #777777; }
color: #999999; }
.dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus {
text-decoration: none;
@ -3227,7 +3227,7 @@ tbody.collapse.in {
padding: 3px 20px;
font-size: 12px;
line-height: 1.6;
color: #777777;
color: #999999;
white-space: nowrap; }
.dropdown-backdrop {
@ -3556,15 +3556,15 @@ tbody.collapse.in {
text-decoration: none;
background-color: #eeeeee; }
.nav > li.disabled > a {
color: #777777; }
color: #999999; }
.nav > li.disabled > a:hover, .nav > li.disabled > a:focus {
color: #777777;
color: #999999;
text-decoration: none;
background-color: transparent;
cursor: not-allowed; }
.nav .open > a, .nav .open > a:hover, .nav .open > a:focus {
background-color: #eeeeee;
border-color: #3097D1; }
border-color: #428bca; }
.nav .nav-divider {
height: 1px;
margin: 10px 0;
@ -3600,7 +3600,7 @@ tbody.collapse.in {
margin-left: 2px; }
.nav-pills > li.active > a, .nav-pills > li.active > a:hover, .nav-pills > li.active > a:focus {
color: #fff;
background-color: #3097D1; }
background-color: #428bca; }
.nav-stacked > li {
float: none; }
@ -4001,14 +4001,14 @@ tbody.collapse.in {
background-color: #222;
border-color: #090909; }
.navbar-inverse .navbar-brand {
color: #9d9d9d; }
color: #bfbfbf; }
.navbar-inverse .navbar-brand:hover, .navbar-inverse .navbar-brand:focus {
color: #fff;
background-color: transparent; }
.navbar-inverse .navbar-text {
color: #9d9d9d; }
color: #bfbfbf; }
.navbar-inverse .navbar-nav > li > a {
color: #9d9d9d; }
color: #bfbfbf; }
.navbar-inverse .navbar-nav > li > a:hover, .navbar-inverse .navbar-nav > li > a:focus {
color: #fff;
background-color: transparent; }
@ -4036,7 +4036,7 @@ tbody.collapse.in {
.navbar-inverse .navbar-nav .open .dropdown-menu .divider {
background-color: #090909; }
.navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
color: #9d9d9d; }
color: #bfbfbf; }
.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
color: #fff;
background-color: transparent; }
@ -4047,11 +4047,11 @@ tbody.collapse.in {
color: #444;
background-color: transparent; } }
.navbar-inverse .navbar-link {
color: #9d9d9d; }
color: #bfbfbf; }
.navbar-inverse .navbar-link:hover {
color: #fff; }
.navbar-inverse .btn-link {
color: #9d9d9d; }
color: #bfbfbf; }
.navbar-inverse .btn-link:hover, .navbar-inverse .btn-link:focus {
color: #fff; }
.navbar-inverse .btn-link[disabled]:hover, .navbar-inverse .btn-link[disabled]:focus,
@ -4072,7 +4072,7 @@ tbody.collapse.in {
padding: 0 5px;
color: #ccc; }
.breadcrumb > .active {
color: #777777; }
color: #999999; }
.pagination {
display: inline-block;
@ -4088,7 +4088,7 @@ tbody.collapse.in {
padding: 6px 12px;
line-height: 1.6;
text-decoration: none;
color: #3097D1;
color: #428bca;
background-color: #fff;
border: 1px solid #ddd;
margin-left: -1px; }
@ -4105,7 +4105,7 @@ tbody.collapse.in {
.pagination > li > span:hover,
.pagination > li > span:focus {
z-index: 2;
color: #216a94;
color: #2a6496;
background-color: #eeeeee;
border-color: #ddd; }
.pagination > .active > a, .pagination > .active > a:hover, .pagination > .active > a:focus,
@ -4114,8 +4114,8 @@ tbody.collapse.in {
.pagination > .active > span:focus {
z-index: 3;
color: #fff;
background-color: #3097D1;
border-color: #3097D1;
background-color: #428bca;
border-color: #428bca;
cursor: default; }
.pagination > .disabled > span,
.pagination > .disabled > span:hover,
@ -4123,7 +4123,7 @@ tbody.collapse.in {
.pagination > .disabled > a,
.pagination > .disabled > a:hover,
.pagination > .disabled > a:focus {
color: #777777;
color: #999999;
background-color: #fff;
border-color: #ddd;
cursor: not-allowed; }
@ -4193,7 +4193,7 @@ tbody.collapse.in {
.pager .disabled > a:hover,
.pager .disabled > a:focus,
.pager .disabled > span {
color: #777777;
color: #999999;
background-color: #fff;
cursor: not-allowed; }
@ -4220,34 +4220,34 @@ a.label:hover, a.label:focus {
cursor: pointer; }
.label-default {
background-color: #777777; }
background-color: #999999; }
.label-default[href]:hover, .label-default[href]:focus {
background-color: #5e5e5e; }
background-color: gray; }
.label-primary {
background-color: #3097D1; }
background-color: #428bca; }
.label-primary[href]:hover, .label-primary[href]:focus {
background-color: #2579a9; }
background-color: #3071a9; }
.label-success {
background-color: #2ab27b; }
background-color: #5cb85c; }
.label-success[href]:hover, .label-success[href]:focus {
background-color: #20895e; }
background-color: #449d44; }
.label-info {
background-color: #8eb4cb; }
background-color: #5bc0de; }
.label-info[href]:hover, .label-info[href]:focus {
background-color: #6b9dbb; }
background-color: #31b0d5; }
.label-warning {
background-color: #cbb956; }
background-color: #f0ad4e; }
.label-warning[href]:hover, .label-warning[href]:focus {
background-color: #b6a338; }
background-color: #ec971f; }
.label-danger {
background-color: #bf5329; }
background-color: #d9534f; }
.label-danger[href]:hover, .label-danger[href]:focus {
background-color: #954120; }
background-color: #c9302c; }
.badge {
display: inline-block;
@ -4260,7 +4260,7 @@ a.label:hover, a.label:focus {
vertical-align: middle;
white-space: nowrap;
text-align: center;
background-color: #777777;
background-color: #999999;
border-radius: 10px; }
.badge:empty {
display: none; }
@ -4273,7 +4273,7 @@ a.label:hover, a.label:focus {
padding: 1px 5px; }
.list-group-item.active > .badge,
.nav-pills > .active > a > .badge {
color: #3097D1;
color: #428bca;
background-color: #fff; }
.list-group-item > .badge {
float: right; }
@ -4346,7 +4346,7 @@ a.badge:hover, a.badge:focus {
a.thumbnail:hover,
a.thumbnail:focus,
a.thumbnail.active {
border-color: #3097D1; }
border-color: #428bca; }
.alert {
padding: 15px;
@ -4439,7 +4439,7 @@ a.thumbnail.active {
line-height: 22px;
color: #fff;
text-align: center;
background-color: #3097D1;
background-color: #428bca;
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-webkit-transition: width 0.6s ease;
@ -4460,28 +4460,28 @@ a.thumbnail.active {
animation: progress-bar-stripes 2s linear infinite; }
.progress-bar-success {
background-color: #2ab27b; }
background-color: #5cb85c; }
.progress-striped .progress-bar-success {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); }
.progress-bar-info {
background-color: #8eb4cb; }
background-color: #5bc0de; }
.progress-striped .progress-bar-info {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); }
.progress-bar-warning {
background-color: #cbb956; }
background-color: #f0ad4e; }
.progress-striped .progress-bar-warning {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); }
.progress-bar-danger {
background-color: #bf5329; }
background-color: #d9534f; }
.progress-striped .progress-bar-danger {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
@ -4571,18 +4571,18 @@ button.list-group-item {
.list-group-item.disabled, .list-group-item.disabled:hover, .list-group-item.disabled:focus {
background-color: #eeeeee;
color: #777777;
color: #999999;
cursor: not-allowed; }
.list-group-item.disabled .list-group-item-heading, .list-group-item.disabled:hover .list-group-item-heading, .list-group-item.disabled:focus .list-group-item-heading {
color: inherit; }
.list-group-item.disabled .list-group-item-text, .list-group-item.disabled:hover .list-group-item-text, .list-group-item.disabled:focus .list-group-item-text {
color: #777777; }
color: #999999; }
.list-group-item.active, .list-group-item.active:hover, .list-group-item.active:focus {
z-index: 2;
color: #fff;
background-color: #3097D1;
border-color: #3097D1; }
background-color: #428bca;
border-color: #428bca; }
.list-group-item.active .list-group-item-heading,
.list-group-item.active .list-group-item-heading > small,
.list-group-item.active .list-group-item-heading > .small, .list-group-item.active:hover .list-group-item-heading,
@ -4592,7 +4592,7 @@ button.list-group-item {
.list-group-item.active:focus .list-group-item-heading > .small {
color: inherit; }
.list-group-item.active .list-group-item-text, .list-group-item.active:hover .list-group-item-text, .list-group-item.active:focus .list-group-item-text {
color: #d7ebf6; }
color: #e1edf7; }
.list-group-item-success {
color: #3c763d;
@ -4927,18 +4927,18 @@ button.list-group-item-danger {
border-bottom-color: #d3e0e9; }
.panel-primary {
border-color: #3097D1; }
border-color: #428bca; }
.panel-primary > .panel-heading {
color: #fff;
background-color: #3097D1;
border-color: #3097D1; }
background-color: #428bca;
border-color: #428bca; }
.panel-primary > .panel-heading + .panel-collapse > .panel-body {
border-top-color: #3097D1; }
border-top-color: #428bca; }
.panel-primary > .panel-heading .badge {
color: #3097D1;
color: #428bca;
background-color: #fff; }
.panel-primary > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: #3097D1; }
border-bottom-color: #428bca; }
.panel-success {
border-color: #d6e9c6; }

@ -0,0 +1,126 @@
/*!
* metismenu - v2.7.7
* A jQuery menu plugin
* https://github.com/onokumus/metismenu#readme
*
* Made by Osman Nuri Okumus <onokumus@gmail.com> (https://github.com/onokumus)
* Under MIT License
*/
.metismenu .arrow {
float: right;
line-height: 1.42857;
}
*[dir="rtl"] .metismenu .arrow {
float: left;
}
/*
* Require Bootstrap 3.x
* https://github.com/twbs/bootstrap
*/
.metismenu .glyphicon.arrow:before {
content: "\e079";
}
.metismenu .active > a > .glyphicon.arrow:before {
content: "\e114";
}
/*
* Require Font-Awesome
* http://fortawesome.github.io/Font-Awesome/
*/
.metismenu .fa.arrow:before {
content: "\f104";
}
.metismenu .active > a > .fa.arrow:before {
content: "\f107";
}
/*
* Require Ionicons
* http://ionicons.com/
*/
.metismenu .ion.arrow:before {
content: "\f3d2"
}
.metismenu .active > a > .ion.arrow:before {
content: "\f3d0";
}
.metismenu .plus-times {
float: right;
}
*[dir="rtl"] .metismenu .plus-times {
float: left;
}
.metismenu .fa.plus-times:before {
content: "\f067";
}
.metismenu .active > a > .fa.plus-times {
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
}
.metismenu .plus-minus {
float: right;
}
*[dir="rtl"] .metismenu .plus-minus {
float: left;
}
.metismenu .fa.plus-minus:before {
content: "\f067";
}
.metismenu .active > a > .fa.plus-minus:before {
content: "\f068";
}
.metismenu .collapse {
display: none;
}
.metismenu .collapse.in {
display: block;
}
.metismenu .collapsing {
position: relative;
height: 0;
overflow: hidden;
transition-timing-function: ease;
transition-duration: .35s;
transition-property: height, visibility;
}
.metismenu .has-arrow {
position: relative;
}
.metismenu .has-arrow::after {
position: absolute;
content: '';
width: .5em;
height: .5em;
border-width: 1px 0 0 1px;
border-style: solid;
border-color: initial;
right: 1em;
-webkit-transform: rotate(-45deg) translate(0, -50%);
transform: rotate(-45deg) translate(0, -50%);
-webkit-transform-origin: top;
transform-origin: top;
top: 50%;
transition: all .3s ease-out;
}
*[dir="rtl"] .metismenu .has-arrow::after {
right: auto;
left: 1em;
-webkit-transform: rotate(135deg) translate(0, -50%);
transform: rotate(135deg) translate(0, -50%);
}
.metismenu .active > .has-arrow::after,
.metismenu .has-arrow[aria-expanded="true"]::after {
-webkit-transform: rotate(-135deg) translate(0, -50%);
transform: rotate(-135deg) translate(0, -50%);
}
/*# sourceMappingURL=metisMenu.css.map */

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 434 KiB

189
public/js/admin.js vendored

File diff suppressed because one or more lines are too long

2
public/js/app.js vendored

@ -450,7 +450,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nvar _jquery = __webpack_require__(/*! jquery */ \"jquery\");\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _vue = __webpack_require__(/*! vue */ \"vue\");\n\nvar _vue2 = _interopRequireDefault(_vue);\n\nvar _Tasks = __webpack_require__(/*! ./components/Tasks.vue */ \"./resources/assets/js/components/Tasks.vue\");\n\nvar _Tasks2 = _interopRequireDefault(_Tasks);\n\nvar _app = __webpack_require__(/*! ../sass/app.scss */ \"./resources/assets/sass/app.scss\");\n\nvar _app2 = _interopRequireDefault(_app);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nwindow.$ = window.jQuery = _jquery2.default;\n\nvar app = new _vue2.default({\n el: '#app',\n components: { Tasks: _Tasks2.default }\n});\n\n//# sourceURL=webpack:///./resources/assets/js/app.js?");
eval("\n\nvar _jquery = __webpack_require__(/*! jquery */ \"jquery\");\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _vue = __webpack_require__(/*! vue */ \"vue\");\n\nvar _vue2 = _interopRequireDefault(_vue);\n\nvar _Tasks = __webpack_require__(/*! ./components/Tasks.vue */ \"./resources/assets/js/components/Tasks.vue\");\n\nvar _Tasks2 = _interopRequireDefault(_Tasks);\n\n__webpack_require__(/*! ../sass/app.scss */ \"./resources/assets/sass/app.scss\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* Components */\nwindow.$ = window.jQuery = _jquery2.default;\n\n/* CSS */\n\n\nvar app = new _vue2.default({\n el: '#app',\n components: { Tasks: _Tasks2.default }\n});\n\n//# sourceURL=webpack:///./resources/assets/js/app.js?");
/***/ }),

@ -0,0 +1,342 @@
/*!
* metismenu - v2.7.7
* A jQuery menu plugin
* https://github.com/onokumus/metismenu#readme
*
* Made by Osman Nuri Okumus <onokumus@gmail.com> (https://github.com/onokumus)
* Under MIT License
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) :
typeof define === 'function' && define.amd ? define(['jquery'], factory) :
(global.metisMenu = factory(global.jQuery));
}(this, (function ($) { 'use strict';
$ = $ && $.hasOwnProperty('default') ? $['default'] : $;
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function _objectSpread(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
var ownKeys = Object.keys(source);
if (typeof Object.getOwnPropertySymbols === 'function') {
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
}));
}
ownKeys.forEach(function (key) {
_defineProperty(target, key, source[key]);
});
}
return target;
}
var Util = function ($$$1) {
// eslint-disable-line no-shadow
var TRANSITION_END = 'transitionend';
var Util = {
// eslint-disable-line no-shadow
TRANSITION_END: 'mmTransitionEnd',
triggerTransitionEnd: function triggerTransitionEnd(element) {
$$$1(element).trigger(TRANSITION_END);
},
supportsTransitionEnd: function supportsTransitionEnd() {
return Boolean(TRANSITION_END);
}
};
function getSpecialTransitionEndEvent() {
return {
bindType: TRANSITION_END,
delegateType: TRANSITION_END,
handle: function handle(event) {
if ($$$1(event.target).is(this)) {
return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
}
return undefined;
}
};
}
function transitionEndEmulator(duration) {
var _this = this;
var called = false;
$$$1(this).one(Util.TRANSITION_END, function () {
called = true;
});
setTimeout(function () {
if (!called) {
Util.triggerTransitionEnd(_this);
}
}, duration);
return this;
}
function setTransitionEndSupport() {
$$$1.fn.mmEmulateTransitionEnd = transitionEndEmulator; // eslint-disable-line no-param-reassign
// eslint-disable-next-line no-param-reassign
$$$1.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
}
setTransitionEndSupport();
return Util;
}($);
var MetisMenu = function ($$$1) {
// eslint-disable-line no-shadow
var NAME = 'metisMenu';
var DATA_KEY = 'metisMenu';
var EVENT_KEY = "." + DATA_KEY;
var DATA_API_KEY = '.data-api';
var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
var TRANSITION_DURATION = 350;
var Default = {
toggle: true,
preventDefault: true,
activeClass: 'active',
collapseClass: 'collapse',
collapseInClass: 'in',
collapsingClass: 'collapsing',
triggerElement: 'a',
parentTrigger: 'li',
subMenu: 'ul'
};
var Event = {
SHOW: "show" + EVENT_KEY,
SHOWN: "shown" + EVENT_KEY,
HIDE: "hide" + EVENT_KEY,
HIDDEN: "hidden" + EVENT_KEY,
CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
};
var MetisMenu =
/*#__PURE__*/
function () {
// eslint-disable-line no-shadow
function MetisMenu(element, config) {
this.element = element;
this.config = _objectSpread({}, Default, config);
this.transitioning = null;
this.init();
}
var _proto = MetisMenu.prototype;
_proto.init = function init() {
var self = this;
var conf = this.config;
$$$1(this.element).find(conf.parentTrigger + "." + conf.activeClass).has(conf.subMenu).children(conf.subMenu).attr('aria-expanded', true).addClass(conf.collapseClass + " " + conf.collapseInClass);
$$$1(this.element).find(conf.parentTrigger).not("." + conf.activeClass).has(conf.subMenu).children(conf.subMenu).attr('aria-expanded', false).addClass(conf.collapseClass);
$$$1(this.element).find(conf.parentTrigger).has(conf.subMenu).children(conf.triggerElement).on(Event.CLICK_DATA_API, function (e) {
// eslint-disable-line func-names
var eTar = $$$1(this);
var paRent = eTar.parent(conf.parentTrigger);
var sibLings = paRent.siblings(conf.parentTrigger).children(conf.triggerElement);
var List = paRent.children(conf.subMenu);
if (conf.preventDefault) {
e.preventDefault();
}
if (eTar.attr('aria-disabled') === 'true') {
return;
}
if (paRent.hasClass(conf.activeClass)) {
eTar.attr('aria-expanded', false);
self.hide(List);
} else {
self.show(List);
eTar.attr('aria-expanded', true);
if (conf.toggle) {
sibLings.attr('aria-expanded', false);
}
}
if (conf.onTransitionStart) {
conf.onTransitionStart(e);
}
});
};
_proto.show = function show(element) {
var _this = this;
if (this.transitioning || $$$1(element).hasClass(this.config.collapsingClass)) {
return;
}
var elem = $$$1(element);
var startEvent = $$$1.Event(Event.SHOW);
elem.trigger(startEvent);
if (startEvent.isDefaultPrevented()) {
return;
}
elem.parent(this.config.parentTrigger).addClass(this.config.activeClass);
if (this.config.toggle) {
this.hide(elem.parent(this.config.parentTrigger).siblings().children(this.config.subMenu + "." + this.config.collapseInClass).attr('aria-expanded', false));
}
elem.removeClass(this.config.collapseClass).addClass(this.config.collapsingClass).height(0);
this.setTransitioning(true);
var complete = function complete() {
// check if disposed
if (!_this.config || !_this.element) {
return;
}
elem.removeClass(_this.config.collapsingClass).addClass(_this.config.collapseClass + " " + _this.config.collapseInClass).height('').attr('aria-expanded', true);
_this.setTransitioning(false);
elem.trigger(Event.SHOWN);
};
if (!Util.supportsTransitionEnd()) {
complete();
return;
}
elem.height(element[0].scrollHeight).one(Util.TRANSITION_END, complete).mmEmulateTransitionEnd(TRANSITION_DURATION);
};
_proto.hide = function hide(element) {
var _this2 = this;
if (this.transitioning || !$$$1(element).hasClass(this.config.collapseInClass)) {
return;
}
var elem = $$$1(element);
var startEvent = $$$1.Event(Event.HIDE);
elem.trigger(startEvent);
if (startEvent.isDefaultPrevented()) {
return;
}
elem.parent(this.config.parentTrigger).removeClass(this.config.activeClass); // eslint-disable-next-line no-unused-expressions
elem.height(elem.height())[0].offsetHeight;
elem.addClass(this.config.collapsingClass).removeClass(this.config.collapseClass).removeClass(this.config.collapseInClass);
this.setTransitioning(true);
var complete = function complete() {
// check if disposed
if (!_this2.config || !_this2.element) {
return;
}
if (_this2.transitioning && _this2.config.onTransitionEnd) {
_this2.config.onTransitionEnd();
}
_this2.setTransitioning(false);
elem.trigger(Event.HIDDEN);
elem.removeClass(_this2.config.collapsingClass).addClass(_this2.config.collapseClass).attr('aria-expanded', false);
};
if (!Util.supportsTransitionEnd()) {
complete();
return;
}
if (elem.height() === 0 || elem.css('display') === 'none') {
complete();
} else {
elem.height(0).one(Util.TRANSITION_END, complete).mmEmulateTransitionEnd(TRANSITION_DURATION);
}
};
_proto.setTransitioning = function setTransitioning(isTransitioning) {
this.transitioning = isTransitioning;
};
_proto.dispose = function dispose() {
$$$1.removeData(this.element, DATA_KEY);
$$$1(this.element).find(this.config.parentTrigger).has(this.config.subMenu).children(this.config.triggerElement).off('click');
this.transitioning = null;
this.config = null;
this.element = null;
};
MetisMenu.jQueryInterface = function jQueryInterface(config) {
// eslint-disable-next-line func-names
return this.each(function () {
var $this = $$$1(this);
var data = $this.data(DATA_KEY);
var conf = _objectSpread({}, Default, $this.data(), typeof config === 'object' && config ? config : {});
if (!data && /dispose/.test(config)) {
this.dispose();
}
if (!data) {
data = new MetisMenu(this, conf);
$this.data(DATA_KEY, data);
}
if (typeof config === 'string') {
if (data[config] === undefined) {
throw new Error("No method named \"" + config + "\"");
}
data[config]();
}
});
};
return MetisMenu;
}();
/**
* ------------------------------------------------------------------------
* jQuery
* ------------------------------------------------------------------------
*/
$$$1.fn[NAME] = MetisMenu.jQueryInterface; // eslint-disable-line no-param-reassign
$$$1.fn[NAME].Constructor = MetisMenu; // eslint-disable-line no-param-reassign
$$$1.fn[NAME].noConflict = function () {
// eslint-disable-line no-param-reassign
$$$1.fn[NAME] = JQUERY_NO_CONFLICT; // eslint-disable-line no-param-reassign
return MetisMenu.jQueryInterface;
};
return MetisMenu;
}($);
return MetisMenu;
})));
//# sourceMappingURL=metisMenu.js.map

@ -1,26 +1,50 @@
/*
/!**
* First we will load all of this project's JavaScript dependencies which
* includes Vue and other libraries. It is a great starting point when
* building robust, powerful web applications using Vue and Laravel.
*!/
/* Components */
import jQuery from 'jquery';
import 'metismenu';
import vue from 'vue';
import role from './components/admin/Role.vue';
import 'babel-polyfill';
import './bootstrap';
/* CSS */
import '../sass/admin.scss';
window.Vue = require('vue');
window.$ = window.jQuery = jQuery;
$().ready(function () {
$("#side-menu").metisMenu();
/!**
* Next, we will create a fresh Vue application instance and attach it to
* the page. Then, you may begin adding components to this application
* or customize the JavaScript scaffolding to fit your unique needs.
*!/
$(window).bind("load resize", function () {
let topOffset = 50;
let width = ((this.window.innerWidth > 0) ? this.window.innerWidth : this.screen.height) - 1;
if (width < 768) {
$("div.navbar-collapse").addClass('collapse');
topOffset = 100;
} else {
$('div.navbar-collapse').removeClass('collapse');
}
import role from './components/admin/Role.vue';
let height = ((this.window.innerHeight > 0) ? this.window.innerHeight : this.screen.height) - 1;
height = height - topOffset;
if (height < 1) height = 1;
if (height > topOffset) {
$("#page-wrapper").css("min-height", (height) + "px");
}
});
let url = window.location;
let element = $('ul.nav a').filter(function () {
return this.href == url;
}).addClass('active').parent();
while (true) {
if (element.is('li')) {
element = element.parent().addClass('in').parent();
} else {
break;
}
}
});
const app = new Vue({
const app = new vue({
el: '#app',
components: {role}
});*/
});

@ -1,8 +1,10 @@
/* Components */
import jQuery from 'jquery';
import vue from 'vue';
import Tasks from './components/Tasks.vue';
import main from '../sass/app.scss';
/* CSS */
import '../sass/app.scss';
window.$ = window.jQuery = jQuery;

@ -36,3 +36,16 @@ $input-color-placeholder: lighten($text-color, 30%);
// Panels
$panel-default-heading-bg: #fff;
// Admin
$gray-darker: lighten(#000, 13.5%);
$gray-dark: lighten(#000, 20%);
$gray: lighten(#000, 33.5%);
$gray-light: lighten(#000, 60%);
$gray-lighter: lighten(#000, 93.5%);
$gray-lightest: lighten(#000, 97.25%);
$brand-primary: #428bca;
$brand-success: #5cb85c;
$brand-info: #5bc0de;
$brand-warning: #f0ad4e;
$brand-danger: #d9534f;

@ -1,9 +1,558 @@
// Fonts
// @import url("https://fonts.googleapis.com/css?family=Raleway:300,400,600");
// Variables
@import "variables";
// Bootstrap
@import "~bootstrap-sass/assets/stylesheets/bootstrap";
// Font-Awesome
$fa-font-path: "~font-awesome/fonts";
@import "~font-awesome/scss/font-awesome";
// Admin
@import "mixins";
// Global Styles
body {
background-color: $gray-lightest;
}
// Wrappers
#wrapper {
width: 100%;
}
#page-wrapper {
padding: 0 15px;
min-height: 568px;
background-color: white;
}
@media(min-width:768px) {
#page-wrapper {
position: inherit;
margin: 0 0 0 250px;
padding: 0 30px;
border-left: 1px solid darken($gray-lightest, 6.5%);
}
}
// Navigation
// --Topbar
.navbar-top-links {
margin-right: 0;
}
.navbar-top-links li {
display: inline-block;
}
.navbar-top-links li:last-child {
margin-right: 15px;
}
.navbar-top-links li a {
padding: 15px;
min-height: 50px;
}
.navbar-top-links .dropdown-menu li {
display: block;
}
.navbar-top-links .dropdown-menu li:last-child {
margin-right: 0;
}
.navbar-top-links .dropdown-menu li a {
padding: 3px 20px;
min-height: 0;
}
.navbar-top-links .dropdown-menu li a div {
white-space: normal;
}
.navbar-top-links .dropdown-messages,
.navbar-top-links .dropdown-tasks,
.navbar-top-links .dropdown-alerts {
width: 310px;
min-width: 0;
}
.navbar-top-links .dropdown-messages {
margin-left: 5px;
}
.navbar-top-links .dropdown-tasks {
margin-left: -59px;
}
.navbar-top-links .dropdown-alerts {
margin-left: -123px;
}
.navbar-top-links .dropdown-user {
right: 0;
left: auto;
}
// --Sidebar
.sidebar {
.sidebar-nav.navbar-collapse {
padding-left: 0;
padding-right: 0;
}
}
.sidebar .sidebar-search {
padding: 15px;
}
.sidebar ul li {
border-bottom: 1px solid darken($gray-lightest, 6.5%);
a {
&.active {
background-color: $gray-lighter;
}
}
}
.sidebar .arrow {
float: right;
}
.sidebar .fa.arrow:before {
content: "\f104";
}
.sidebar .active > a > .fa.arrow:before {
content: "\f107";
}
.sidebar .nav-second-level li,
.sidebar .nav-third-level li {
border-bottom: none !important;
}
.sidebar .nav-second-level li a {
padding-left: 37px;
}
.sidebar .nav-third-level li a {
padding-left: 52px;
}
@media(min-width:768px) {
.sidebar {
z-index: 1;
position: absolute;
width: 250px;
margin-top: 51px;
}
.navbar-top-links .dropdown-messages,
.navbar-top-links .dropdown-tasks,
.navbar-top-links .dropdown-alerts {
margin-left: auto;
}
}
// Buttons
.btn-outline {
color: inherit;
background-color: transparent;
transition: all .5s;
}
.btn-primary.btn-outline {
color: $brand-primary;
}
.btn-success.btn-outline {
color: $brand-success;
}
.btn-info.btn-outline {
color: $brand-info;
}
.btn-warning.btn-outline {
color: $brand-warning;
}
.btn-danger.btn-outline {
color: $brand-danger;
}
.btn-primary.btn-outline:hover,
.btn-success.btn-outline:hover,
.btn-info.btn-outline:hover,
.btn-warning.btn-outline:hover,
.btn-danger.btn-outline:hover {
color: white;
}
// Chat Widget
.chat {
margin: 0;
padding: 0;
list-style: none;
}
.chat li {
margin-bottom: 10px;
padding-bottom: 5px;
border-bottom: 1px dotted $gray-light;
}
.chat li.left .chat-body {
margin-left: 60px;
}
.chat li.right .chat-body {
margin-right: 60px;
}
.chat li .chat-body p {
margin: 0;
}
.panel .slidedown .glyphicon,
.chat .glyphicon {
margin-right: 5px;
}
.chat-panel .panel-body {
height: 350px;
overflow-y: scroll;
}
// Login Page
.login-panel {
margin-top: 25%;
}
// Flot Charts Containers
.flot-chart {
display: block;
height: 400px;
}
.flot-chart-content {
width: 100%;
height: 100%;
}
// DataTables Overrides
table.dataTable thead .sorting,
table.dataTable thead .sorting_asc,
table.dataTable thead .sorting_desc,
table.dataTable thead .sorting_asc_disabled,
table.dataTable thead .sorting_desc_disabled {
background: transparent;
}
table.dataTable thead .sorting_asc:after {
content: "\f0de";
float: right;
font-family: fontawesome;
}
table.dataTable thead .sorting_desc:after {
content: "\f0dd";
float: right;
font-family: fontawesome;
}
table.dataTable thead .sorting:after {
content: "\f0dc";
float: right;
font-family: fontawesome;
color: rgba(50,50,50,.5);
}
// Circle Buttons
.btn-circle {
width: 30px;
height: 30px;
padding: 6px 0;
border-radius: 15px;
text-align: center;
font-size: 12px;
line-height: 1.428571429;
}
.btn-circle.btn-lg {
width: 50px;
height: 50px;
padding: 10px 16px;
border-radius: 25px;
font-size: 18px;
line-height: 1.33;
}
.btn-circle.btn-xl {
width: 70px;
height: 70px;
padding: 10px 16px;
border-radius: 35px;
font-size: 24px;
line-height: 1.33;
}
// Grid Demo Elements
.show-grid [class^="col-"] {
padding-top: 10px;
padding-bottom: 10px;
border: 1px solid #ddd;
background-color: #eee !important;
}
.show-grid {
margin: 15px 0;
}
// Custom Colored Panels
.huge {
font-size: 40px;
}
.panel-green {
border-color: $brand-success;
> .panel-heading {
border-color: $brand-success;
color: white;
background-color: $brand-success;
}
> a {
color: $brand-success;
&:hover {
color: darken($brand-success, 15%);
}
}
}
.panel-red {
border-color: $brand-danger;
> .panel-heading {
border-color: $brand-danger;
color: white;
background-color: $brand-danger;
}
> a {
color: $brand-danger;
&:hover {
color: darken($brand-danger, 15%);
}
}
}
.panel-yellow {
border-color: $brand-warning;
> .panel-heading {
border-color: $brand-warning;
color: white;
background-color: $brand-warning;
}
> a {
color: $brand-warning;
&:hover {
color: darken($brand-warning, 15%);
}
}
}
// Timeline
.timeline {
position: relative;
padding: 20px 0 20px;
list-style: none;
}
.timeline:before {
content: " ";
position: absolute;
top: 0;
bottom: 0;
left: 50%;
width: 3px;
margin-left: -1.5px;
background-color: #eeeeee;
}
.timeline > li {
position: relative;
margin-bottom: 20px;
}
.timeline > li:before,
.timeline > li:after {
content: " ";
display: table;
}
.timeline > li:after {
clear: both;
}
.timeline > li:before,
.timeline > li:after {
content: " ";
display: table;
}
.timeline > li:after {
clear: both;
}
.timeline > li > .timeline-panel {
float: left;
position: relative;
width: 46%;
padding: 20px;
border: 1px solid #d4d4d4;
border-radius: 2px;
-webkit-box-shadow: 0 1px 6px rgba(0,0,0,0.175);
box-shadow: 0 1px 6px rgba(0,0,0,0.175);
}
.timeline > li > .timeline-panel:before {
content: " ";
display: inline-block;
position: absolute;
top: 26px;
right: -15px;
border-top: 15px solid transparent;
border-right: 0 solid #ccc;
border-bottom: 15px solid transparent;
border-left: 15px solid #ccc;
}
.timeline > li > .timeline-panel:after {
content: " ";
display: inline-block;
position: absolute;
top: 27px;
right: -14px;
border-top: 14px solid transparent;
border-right: 0 solid #fff;
border-bottom: 14px solid transparent;
border-left: 14px solid #fff;
}
.timeline > li > .timeline-badge {
z-index: 100;
position: absolute;
top: 16px;
left: 50%;
width: 50px;
height: 50px;
margin-left: -25px;
border-radius: 50% 50% 50% 50%;
text-align: center;
font-size: 1.4em;
line-height: 50px;
color: #fff;
background-color: #999999;
}
.timeline > li.timeline-inverted > .timeline-panel {
float: right;
}
.timeline > li.timeline-inverted > .timeline-panel:before {
right: auto;
left: -15px;
border-right-width: 15px;
border-left-width: 0;
}
.timeline > li.timeline-inverted > .timeline-panel:after {
right: auto;
left: -14px;
border-right-width: 14px;
border-left-width: 0;
}
.timeline-badge.primary {
background-color: #2e6da4 !important;
}
.timeline-badge.success {
background-color: #3f903f !important;
}
.timeline-badge.warning {
background-color: #f0ad4e !important;
}
.timeline-badge.danger {
background-color: #d9534f !important;
}
.timeline-badge.info {
background-color: #5bc0de !important;
}
.timeline-title {
margin-top: 0;
color: inherit;
}
.timeline-body > p,
.timeline-body > ul {
margin-bottom: 0;
}
.timeline-body > p + p {
margin-top: 5px;
}
@media(max-width:767px) {
ul.timeline:before {
left: 40px;
}
ul.timeline > li > .timeline-panel {
width: calc(100% - 90px);
width: -moz-calc(100% - 90px);
width: -webkit-calc(100% - 90px);
}
ul.timeline > li > .timeline-badge {
top: 16px;
left: 15px;
margin-left: 0;
}
ul.timeline > li > .timeline-panel {
float: right;
}
ul.timeline > li > .timeline-panel:before {
right: auto;
left: -15px;
border-right-width: 15px;
border-left-width: 0;
}
ul.timeline > li > .timeline-panel:after {
right: auto;
left: -14px;
border-right-width: 14px;
border-left-width: 0;
}
}

@ -0,0 +1 @@
// Mixins

@ -0,0 +1,10 @@
<?php
/**
* Created by PhpStorm.
* User: DnBI
* Date: 2018/4/27
* Time: 15:56
*/
return [
'admin_title' => '测试'
];

@ -1,18 +1,23 @@
<!doctype html>
<html lang="{{ app()->getLocale() }}">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="csrf-token" content="{{ csrf_token() }}">
<link rel="stylesheet" href="{{ asset('css/admin.css') }}">
<title>Laravel Todo Application</title>
</head>
<body>
<div class="container" id="app">
<tasks></tasks>
</div>
@extends('layouts.admin')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-heading">Dashboard</div>
<script src="{{ asset('js/admin.js') }}"></script>
</body>
</html>
<div class="panel-body">
@if (session('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
@endif
You are logged in!
</div>
</div>
</div>
</div>
</div>
@endsection

@ -4,6 +4,8 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="test">
<meta name="author" content="xingzi">
<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">
@ -11,115 +13,372 @@
<title>{{ config('app.name', 'Laravel') }}</title>
<!-- Styles -->
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
<link href="{{ asset('css/admin.css') }}" rel="stylesheet">
</head>
<body>
<div id="app">
<nav class="navbar navbar-default navbar-static-top">
<div class="container">
<div class="navbar-header">
<!-- Collapsed Hamburger -->
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse"
data-target="#app-navbar-collapse" aria-expanded="false">
<span class="sr-only">Toggle Navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div id="wrapper">
<!-- Branding Image -->
<a class="navbar-brand" href="{{ url('/') }}">
{{ config('app.name', 'Laravel') }}
</a>
</div>
{{--Navigation--}}
<nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0;">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="/admin" class="navbar-brand">@lang('string.admin_title')</a>
</div>
{{--navbar-brand--}}
<div class="collapse navbar-collapse" id="app-navbar-collapse">
<!-- Left Side Of Navbar -->
<ul class="nav navbar-nav">
&nbsp;
<ul class="nav navbar-top-links navbar-right">
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-envelope fa-fw"></i> <i class="fa fa-caret-down"></i>
</a>
<ul class="dropdown-menu dropdown-messages">
<li>
<a href="#">
<div>
<strong>John Smith</strong>
<span class="pull-right text-muted">
<em>Yesterday</em>
</span>
</div>
<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eleifend...
</div>
</a>
</li>
<li class="divider"></li>
<li>
<a href="#">
<div>
<strong>John Smith</strong>
<span class="pull-right text-muted">
<em>Yesterday</em>
</span>
</div>
<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eleifend...
</div>
</a>
</li>
<li class="divider"></li>
<li>
<a href="#">
<div>
<strong>John Smith</strong>
<span class="pull-right text-muted">
<em>Yesterday</em>
</span>
</div>
<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eleifend...
</div>
</a>
</li>
<li class="divider"></li>
<li>
<a class="text-center" href="#">
<strong>Read All Messages</strong>
<i class="fa fa-angle-right"></i>
</a>
</li>
</ul>
<!-- /.dropdown-messages -->
</li>
<!-- /.dropdown -->
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-tasks fa-fw"></i> <i class="fa fa-caret-down"></i>
</a>
<ul class="dropdown-menu dropdown-tasks">
<li>
<a href="#">
<div>
<p>
<strong>Task 1</strong>
<span class="pull-right text-muted">40% Complete</span>
</p>
<div class="progress progress-striped active">
<div class="progress-bar progress-bar-success" role="progressbar"
aria-valuenow="40" aria-valuemin="0" aria-valuemax="100"
style="width: 40%">
<span class="sr-only">40% Complete (success)</span>
</div>
</div>
</div>
</a>
</li>
<li class="divider"></li>
<li>
<a href="#">
<div>
<p>
<strong>Task 2</strong>
<span class="pull-right text-muted">20% Complete</span>
</p>
<div class="progress progress-striped active">
<div class="progress-bar progress-bar-info" role="progressbar"
aria-valuenow="20" aria-valuemin="0" aria-valuemax="100"
style="width: 20%">
<span class="sr-only">20% Complete</span>
</div>
</div>
</div>
</a>
</li>
<li class="divider"></li>
<li>
<a href="#">
<div>
<p>
<strong>Task 3</strong>
<span class="pull-right text-muted">60% Complete</span>
</p>
<div class="progress progress-striped active">
<div class="progress-bar progress-bar-warning" role="progressbar"
aria-valuenow="60" aria-valuemin="0" aria-valuemax="100"
style="width: 60%">
<span class="sr-only">60% Complete (warning)</span>
</div>
</div>
</div>
</a>
</li>
<li class="divider"></li>
<li>
<a href="#">
<div>
<p>
<strong>Task 4</strong>
<span class="pull-right text-muted">80% Complete</span>
</p>
<div class="progress progress-striped active">
<div class="progress-bar progress-bar-danger" role="progressbar"
aria-valuenow="80" aria-valuemin="0" aria-valuemax="100"
style="width: 80%">
<span class="sr-only">80% Complete (danger)</span>
</div>
</div>
</div>
</a>
</li>
<li class="divider"></li>
<li>
<a class="text-center" href="#">
<strong>See All Tasks</strong>
<i class="fa fa-angle-right"></i>
</a>
</li>
</ul>
<!-- /.dropdown-tasks -->
</li>
<!-- /.dropdown -->
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-bell fa-fw"></i> <i class="fa fa-caret-down"></i>
</a>
<ul class="dropdown-menu dropdown-alerts">
<li>
<a href="#">
<div>
<i class="fa fa-comment fa-fw"></i> New Comment
<span class="pull-right text-muted small">4 minutes ago</span>
</div>
</a>
</li>
<li class="divider"></li>
<li>
<a href="#">
<div>
<i class="fa fa-twitter fa-fw"></i> 3 New Followers
<span class="pull-right text-muted small">12 minutes ago</span>
</div>
</a>
</li>
<li class="divider"></li>
<li>
<a href="#">
<div>
<i class="fa fa-envelope fa-fw"></i> Message Sent
<span class="pull-right text-muted small">4 minutes ago</span>
</div>
</a>
</li>
<li class="divider"></li>
<li>
<a href="#">
<div>
<i class="fa fa-tasks fa-fw"></i> New Task
<span class="pull-right text-muted small">4 minutes ago</span>
</div>
</a>
</li>
<li class="divider"></li>
<li>
<a href="#">
<div>
<i class="fa fa-upload fa-fw"></i> Server Rebooted
<span class="pull-right text-muted small">4 minutes ago</span>
</div>
</a>
</li>
<li class="divider"></li>
<li>
<a class="text-center" href="#">
<strong>See All Alerts</strong>
<i class="fa fa-angle-right"></i>
</a>
</li>
</ul>
<!-- /.dropdown-alerts -->
</li>
<!-- /.dropdown -->
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-user fa-fw"></i> <i class="fa fa-caret-down"></i>
</a>
<ul class="dropdown-menu dropdown-user">
<li><a href="#"><i class="fa fa-user fa-fw"></i> User Profile</a>
</li>
<li><a href="#"><i class="fa fa-gear fa-fw"></i> Settings</a>
</li>
<li class="divider"></li>
<li><a href="login.html"><i class="fa fa-sign-out fa-fw"></i> Logout</a>
</li>
</ul>
<!-- /.dropdown-user -->
</li>
<!-- /.dropdown -->
</ul>
<!-- /.navbar-top-links -->
<!-- Right Side Of Navbar -->
<ul class="nav navbar-nav navbar-right">
<!-- Authentication Links -->
@guest
<li><a href="{{ route('login') }}">Login</a></li>
<li><a href="{{ route('register') }}">Register</a></li>
@else
<li><a href="{{ route('companies.index') }}"><i class="fa fa-building"
aria-hidden="true"></i>My Companies</a></li>
<li><a href="{{ route('projects.index') }}"><i class="fas fa-briefcase"></i>My Projects</a>
<div class="navbar-default sidebar" role="navigation">
<div class="sidebar-nav navbar-collapse">
<ul class="nav" id="side-menu">
<li class="sidebar-search">
<div class="input-group custom-search-form">
<input type="text" class="form-control" placeholder="Search...">
<span class="input-group-btn">
<button class="btn btn-default" type="button">
<i class="fa fa-search"></i>
</button>
</span>
</div>
<!-- /input-group -->
</li>
<li>
<a href="index.html"><i class="fa fa-dashboard fa-fw"></i> Dashboard</a>
</li>
<li>
<a href="#"><i class="fa fa-bar-chart-o fa-fw"></i> Charts<span class="fa arrow"></span></a>
<ul class="nav nav-second-level">
<li>
<a href="flot.html">Flot Charts</a>
</li>
<li><a href="{{ route('tasks.index') }}"><i class="fas fa-tasks"></i>My Tasks</a></li>
@if(Auth::user()->id == 11)
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
aria-expanded="false" aria-haspopup="true" v-pre>
Admin <span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li><a href="{{ route('companies.index') }}"><i class="fa fa-building"
aria-hidden="true"></i>All Companies</a></li>
<li><a href="{{ route('projects.index') }}"><i class="fas fa-briefcase"></i>All Projects</a>
</li>
<li><a href="{{ route('tasks.index') }}"><i class="fas fa-tasks"></i>All Tasks</a></li>
<li><a href="{{ route('users.index') }}"><i class="fas fa-user"></i>All Users</a></li>
<li><a href="{{ route('roles.index') }}"><i class="fas fa-envelope"></i>All Roles</a></li>
</ul>
</li>
@endif
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
aria-expanded="false" aria-haspopup="true" v-pre>
{{ Auth::user()->name }} <span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li>
<a href="morris.html">Morris.js Charts</a>
</li>
</ul>
<!-- /.nav-second-level -->
</li>
<li>
<a href="tables.html"><i class="fa fa-table fa-fw"></i> Tables</a>
</li>
<li>
<a href="forms.html"><i class="fa fa-edit fa-fw"></i> Forms</a>
</li>
<li>
<a href="#"><i class="fa fa-wrench fa-fw"></i> UI Elements<span class="fa arrow"></span></a>
<ul class="nav nav-second-level">
<li>
<a href="panels-wells.html">Panels and Wells</a>
</li>
<li>
<a href="buttons.html">Buttons</a>
</li>
<li>
<a href="notifications.html">Notifications</a>
</li>
<li>
<a href="typography.html">Typography</a>
</li>
<li>
<a href="icons.html"> Icons</a>
</li>
<li>
<a href="grid.html">Grid</a>
</li>
</ul>
<!-- /.nav-second-level -->
</li>
<li>
<a href="#"><i class="fa fa-sitemap fa-fw"></i> Multi-Level Dropdown<span
class="fa arrow"></span></a>
<ul class="nav nav-second-level">
<li>
<a href="#">Second Level Item</a>
</li>
<li>
<a href="#">Second Level Item</a>
</li>
<li>
<a href="#">Third Level <span class="fa arrow"></span></a>
<ul class="nav nav-third-level">
<li>
<a href="{{ route('logout') }}"
onclick="event.preventDefault();
document.getElementById('logout-form').submit();">
Logout
</a>
<form id="logout-form" action="{{ route('logout') }}" method="POST"
style="display: none;">
{{ csrf_field() }}
</form>
<a href="#">Third Level Item</a>
</li>
<li>
<a href="#">Third Level Item</a>
</li>
<li>
<a href="#">Third Level Item</a>
</li>
<li>
<a href="#">Third Level Item</a>
</li>
</ul>
<!-- /.nav-third-level -->
</li>
@endguest
</ul>
<!-- /.nav-second-level -->
</li>
<li>
<a href="#"><i class="fa fa-files-o fa-fw"></i> Sample Pages<span
class="fa arrow"></span></a>
<ul class="nav nav-second-level">
<li>
<a href="blank.html">Blank Page</a>
</li>
<li>
<a href="login.html">Login Page</a>
</li>
</ul>
<!-- /.nav-second-level -->
</li>
</ul>
</div>
<!-- /.sidebar-collapse -->
</div>
<!-- /.navbar-static-side -->
</nav>
<div class="container">
</div>
@include('partials.errors')
@include('partials.success')
@yield('content')
<div id="app">
<div class="row">
@yield('content')
</div>
</div>
</div>
<!-- Scripts -->
<script src="{{ asset('js/app.js') }}"></script>
<script src="{{ asset('js/polyfill.js') }}"></script>
<script src="{{ asset('js/jquery.js') }}"></script>
<script src="{{ asset('js/metismenu.js') }}"></script>
<script src="{{ asset('js/vue.js') }}"></script>
<script src="{{ asset('js/admin.js') }}"></script>
<script defer src="https://use.fontawesome.com/releases/v5.0.9/js/all.js"
integrity="sha384-8iPTk2s/jMVj81dnzb/iFR2sdA7u06vHJyyLlAd4snFpCl/SnyUjRrbdJsw1pGIl"
crossorigin="anonymous"></script>
</body>
</html>

@ -28,10 +28,11 @@ Route::middleware(['auth'])->group(function () {
Route::resource('/projects', 'ProjectsController');
Route::resource('/tasks', 'TasksController');
Route::resource('/comments', 'CommentsController');
Route::resource('/users','UsersController');
Route::resource('/roles','RolesController');
Route::resource('/roles', 'RolesController');
});
Route::get('/admin', function () {
return view('admin.index');
});
Route::resource('/users', 'UsersController');

27
webpack.config.js vendored

@ -11,8 +11,9 @@ const extractSass = new ExtractTextPlugin({
const config = {
entry: {
polyfill: 'babel-polyfill',
app: './resources/assets/js/app.js',
polyfill: 'babel-polyfill'
admin: './resources/assets/js/admin.js'
},
output:
{
@ -50,6 +51,19 @@ const config = {
// use style-loader in development
fallback: "style-loader"
})
},
{
test: /\.(woff|svg|ttf|eot)\??.*$/,
use: {
loader: "url-loader",
options: {
limit:8192,
name: "[name].[ext]",
publicPath: '../fonts',
outputPath: "fonts",
fallback: "file-loader"
}
}
}
]
},
@ -63,12 +77,21 @@ const config = {
{
from: path.resolve(__dirname,"resources/assets/js/vue.js"),
to: path.resolve(__dirname,"public/js/vue.js")
},
{
from: path.resolve(__dirname,"node_modules/metismenu/dist/metismenu.css"),
to: path.resolve(__dirname,"public/css/metismenu.css")
},
{
from: path.resolve(__dirname,"node_modules/metismenu/dist/metismenu.js"),
to: path.resolve(__dirname,"public/js/metismenu.js")
}
])
],
externals: {
jquery: "jQuery",
vue: "Vue"
vue: "Vue",
metismenu: 'jQuery.MetisMenu'
},
resolve: {
alias: {

Loading…
Cancel
Save