Merge pull request #115 from joecohens/feature/dashboard-redesign

Feature/dashboard redesign
This commit is contained in:
James Brooks
2014-12-29 19:18:04 +00:00
40 changed files with 3171 additions and 574 deletions

View File

@@ -4,4 +4,6 @@ $(function() {
$('.wrapper').toggleClass('active');
});
$('[data-toggle="tooltip"]').tooltip();
});

View File

@@ -0,0 +1,3 @@
.uppercase {
text-transform: uppercase;
}

View File

@@ -6,13 +6,21 @@ html, body {
height: 100%;
}
@import "modules/tabs";
@import "helpers";
// Module overrides
@import "modules/tabs";
@import "modules/forms";
// Styles for partials
@import "partials/base";
@import "partials/wrapper";
@import "partials/navbar";
@import "partials/sidebar";
@import "partials/content";
// Styles for specific page
@import "pages/login";
// Status Page will need to override certain styles.
@import "status-page";

View File

@@ -1,49 +1,52 @@
// Bootstrap variable overrides and custom variables
@import "variables";
// Core variables and mixins
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/variables";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/variables";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins";
// Reset and dependencies
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/normalize";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/print";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/normalize";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/print";
// Core CSS
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/scaffolding";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/type";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/code";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/grid";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/tables";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/forms";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/buttons";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/scaffolding";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/type";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/code";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/grid";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/tables";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/forms";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/buttons";
// Components
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/component-animations";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/dropdowns";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/button-groups";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/input-groups";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/navs";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/navbar";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/breadcrumbs";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/pagination";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/pager";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/labels";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/badges";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/jumbotron";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/thumbnails";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/alerts";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/progress-bars";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/media";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/list-group";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/panels";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/responsive-embed";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/wells";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/close";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/component-animations";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/dropdowns";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/button-groups";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/input-groups";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/navs";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/navbar";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/breadcrumbs";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/pagination";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/pager";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/labels";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/badges";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/jumbotron";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/thumbnails";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/alerts";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/progress-bars";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/media";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/list-group";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/panels";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/responsive-embed";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/wells";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/close";
// Components w/ JavaScript
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/modals";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/tooltip";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/popovers";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/carousel";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/modals";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/tooltip";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/popovers";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/carousel";
// Utility classes
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/utilities";
@import "../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/responsive-utilities";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/utilities";
@import "../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/responsive-utilities";

View File

@@ -0,0 +1,19 @@
label {
font-size: 14px;
}
.form-control {
@include box-shadow(none);
}
input.form-control {
padding: 2px 8px;
height: 40px;
}
.form-control:focus {
padding: 2px 8px;
border: 1px solid #999;
outline: 0;
@include box-shadow(none);
}

View File

@@ -0,0 +1,5 @@
$brand-success: #7ed321 !default;
//** Tooltip background color
$tooltip-bg: #333 !default;
$tooltip-opacity: .9 !default;

View File

@@ -0,0 +1,18 @@
.login {
padding-top: 90px;
}
.login .logo {
display: block;
margin: 0 auto 30px;
}
.login legend {
border: 0;
padding: 0;
width: 100%;
font-size: 24px;
font-weight: 500;
text-align: center;
margin: 0 0 30px 0;
}

View File

@@ -3,7 +3,6 @@ body.dashboard {
font-weight: $base-font-weight;
font-size: $base-font-size;
letter-spacing: $base-letter-spacing;
background: $base-background-color;
display: table;
width: 100%;
height: 100%;

View File

@@ -1,6 +1,5 @@
body.dashboard {
.content {
padding-top: 69px;
position: relative;
display: table-cell;
vertical-align: top;
@@ -9,11 +8,21 @@ body.dashboard {
margin: 10px 0;
}
.header {
background: #fff;
padding: 14px;
position: absolute;
top: 0;
left: 0;
color: #333;
background-color: #fff;
padding: 22px 14px;
width: 100%;
height: 50px;
height: 70px;
font-size: 1.2em;
border-bottom: 1px solid #eee;
z-index: 99;
&.fixed {
position: fixed;
padding-left: 250px;
}
i {
// padding-right: 10px;
}
@@ -28,10 +37,28 @@ body.dashboard {
+ .row {
margin-top: 23px;
}
}
h3 {
margin-top: 0;
h3 {
color: #444;
margin-top: 0;
text-transform: uppercase;
}
}
.content-wrapper {
margin-top: 80px;
}
.sub-header {
font-weight: 300;
text-transform: uppercase;
}
.striped-list {
.striped-list-item {
border-bottom: 1px solid #f0f0f0;
padding: 8px 0;
}
}
}
}

View File

@@ -4,14 +4,13 @@ body.dashboard {
vertical-align: top;
width: $sidebar-normal-width;
background: $sidebar-background-color;
@include box-shadow($sidebar-border-shadow);
position: relative;
z-index: 100;
z-index: 999;
.sidebar-inner {
position: relative;
margin-top: 69px;
.profile {
padding: 20px;
margin-bottom: 20px;
@@ -26,6 +25,10 @@ body.dashboard {
color: $sidebar-text-color;
}
}
.quick-add-incident {
@extend text-center;
padding: 10px;
}
ul {
clear: both;
margin: 0;
@@ -33,7 +36,7 @@ body.dashboard {
list-style: none;
li {
font-size: 0.8em;
font-size: $sidebar-text-size;
&:last-child {
border-bottom: $sidebar-border-color;
}
@@ -49,7 +52,11 @@ body.dashboard {
border-top: $sidebar-border-color;
color: $sidebar-text-color;
i {
padding-right: 10px;
font-size: 18px;
min-width: 17px;
text-align: center;
position: relative;
top: 1px;
}
&:hover {
text-decoration: none;
@@ -64,5 +71,25 @@ body.dashboard {
}
}
}
.bottom-menu-sidebar {
position: fixed;
bottom: 0;
width: 230px;
z-index: 999;
ul > li {
float: left;
display: block;
width: 33.333%;
border-right: 1px solid #ddd;
border-top: 1px solid #ddd;
a {
display: block;
position: relative;
text-align: center;
padding: 6px 0;
background: #fff;
}
}
}
}
}

View File

@@ -12,11 +12,13 @@ $header-background-color: lighten(#00695C, 10%);
$header-border-color: 1px solid darken($header-background-color, 10%);
$sidebar-transition-speed: .2s;
$sidebar-background-color: #2c3e50;
$sidebar-background-color: #F0F3F4;
$sidebar-border-color: 1px solid rgba(255, 255, 255, .1);
$sidebar-text-color: #d7dadc;
$sidebar-text-active-color: #ffffff;
$sidebar-normal-width: 250px;
$sidebar-border-shadow: inset 0px -2px 3px rgba(0,0,0,0.25);
$sidebar-text-size: 0.9em;
$sidebar-text-color: #333;
$sidebar-text-active-color: #333;
$sidebar-normal-width: 230px;
$sidebar-phone-width: 75%;
$sidebar-active-color: #00695C;

View File

@@ -26,13 +26,14 @@ return [
'bad' => 'Some systems are experiencing issues.',
],
// Other
'powered_by' => ':app Status Page is powered by <a href="https://cachethq.github.io">Cachet</a>.',
'login' => 'Login',
'logout' => 'Logout',
'logged_in' => 'You\'re logged in.',
'setup' => 'Setup Cachet',
'no_incidents' => 'No incidents reported.',
'dashboard' => [
'powered_by' => ':app Status Page is powered by <a href="https://cachethq.github.io">Cachet</a>.',
'login_message' => 'Welcome Back!',
'login' => 'Login',
'logout' => 'Logout',
'logged_in' => 'You\'re logged in.',
'setup' => 'Setup Cachet',
'no_incidents' => 'No incidents reported.',
'dashboard' => [
'dashboard' => 'Dashboard',
'components' => 'Components',
'component-add' => 'Add Component',
@@ -47,6 +48,7 @@ return [
'toggle_navigation' => 'Toggle Navigation',
'search' => 'Search...',
'user' => 'User',
'help' => 'Help',
],
// Forms
'forms' => [

View File

@@ -1,12 +1,14 @@
@extends('layout.dashboard')
@extends('layout.clean')
@section('content')
@include('partials.dashboard.nav')
<div class='row'>
<div class='col-md-6 col-md-offset-3'>
<div class='login row'>
<div class='col-xs-12 col-xs-offset-0 col-sm-6 col-sm-offset-3 col-md-4 col-md-offset-4 text-center'>
<div class="welcome-logo">
<img class="logo" height="50" src="{{ url('img/cachet-logo.svg') }}" alt="Cachet"/>
</div>
{{ Form::open() }}
<fieldset>
<legend>{{ Lang::get('cachet.login') }}</legend>
<legend>{{ Lang::get('cachet.login_message') }}</legend>
@if(Session::has('error'))
<span class='text-danger'>{{ Session::get('error') }}</span>
@@ -26,7 +28,7 @@
</div>
<hr />
<div class='form-group'>
<button type='submit' class='btn btn-default'>{{ Lang::get('cachet.login') }}</button>
<button type='submit' class='btn btn-lg btn-block btn-success'>{{ Lang::get('cachet.login') }}</button>
</div>
</fieldset>
{{ Form::close() }}

View File

@@ -1,45 +1,49 @@
@extends('layout.dashboard')
@section('content')
<div class="header">
<i class="fa fa-list-ul"></i> {{ Lang::get('cachet.dashboard.components') }}
</div>
<div class="row">
<div class="col-sm-12">
<h3>Create a component</h3>
@if($component = Session::get('component'))
<div class='alert alert-{{ $component->isValid() ? "success" : "danger" }}'>
@if($component->isValid())
<strong>Awesome.</strong> Component added.
@else
<strong>Whoops.</strong> Something went wrong with the component. {{ $component->getErrors() }}
@endif
</div>
@endif
<div class="header">
<span class="uppercase">
<i class="icons ion-ios-keypad"></i> {{ Lang::get('cachet.dashboard.components') }}
</span>
> <small>Create a component</small>
</div>
<div class="content-wrapper">
<div class="row">
<div class="col-sm-12">
@if($component = Session::get('component'))
<div class='alert alert-{{ $component->isValid() ? "success" : "danger" }}'>
@if($component->isValid())
<strong>Awesome.</strong> Component added.
@else
<strong>Whoops.</strong> Something went wrong with the component. {{ $component->getErrors() }}
@endif
</div>
@endif
<form name='CreateComponentForm' class='form-vertical' role='form' action='/dashboard/components/add' method='POST'>
<fieldset>
<div class='form-group'>
<label for='incident-name'>Name</label>
<input type='text' class='form-control' name='component[name]' id='component-name' required />
</div>
<div class='form-group'>
<label for='component-status'>Status</label>
<select name='component[status]' class='form-control'>
@foreach(Lang::get('cachet.component.status') as $statusID => $status)
<option value='{{ $statusID }}'>{{ $status }}</option>
@endforeach
</select>
</div>
<div class='form-group'>
<label>Description</label>
<textarea name='component[description]' class='form-control' rows='5'></textarea>
</div>
</fieldset>
<form name='CreateComponentForm' class='form-vertical' role='form' action='/dashboard/components/add' method='POST'>
<fieldset>
<div class='form-group'>
<label for='incident-name'>Name</label>
<input type='text' class='form-control' name='component[name]' id='component-name' required />
</div>
<div class='form-group'>
<label for='component-status'>Status</label>
<select name='component[status]' class='form-control'>
@foreach(Lang::get('cachet.component.status') as $statusID => $status)
<option value='{{ $statusID }}'>{{ $status }}</option>
@endforeach
</select>
</div>
<div class='form-group'>
<label>Description</label>
<textarea name='component[description]' class='form-control' rows='5'></textarea>
</div>
</fieldset>
<button type="submit" class="btn btn-primary">Submit</button>
<input type='hidden' name='component[user_id]' value='{{ Auth::user()->id }}' />
</form>
</div>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
<input type='hidden' name='component[user_id]' value='{{ Auth::user()->id }}' />
</form>
</div>
</div>
</div>
@stop

View File

@@ -1,45 +1,50 @@
@extends('layout.dashboard')
@section('content')
<div class="header">
<i class="fa fa-list-ul"></i> {{ Lang::get('cachet.dashboard.components') }}
</div>
<div class="row">
<div class="col-sm-12">
<h3>Edit component</h3>
@if($savedComponent = Session::get('savedComponent'))
<div class='alert alert-{{ $savedComponent->isValid() ? "success" : "danger" }}'>
@if($savedComponent->isValid())
<strong>Awesome.</strong> Component updated.
@else
<strong>Whoops.</strong> Something went wrong with the component. {{ $savedComponent->getErrors() }}
@endif
</div>
@endif
<div class="header">
<span class="uppercase">
<i class="icons ion-ios-keypad"></i> {{ Lang::get('cachet.dashboard.components') }}
</span>
> <small>Edit component</small>
</div>
<div class="content-wrapper">
<div class="row">
<div class="col-sm-12">
@if($savedComponent = Session::get('savedComponent'))
<div class="alert alert-{{ $savedComponent->isValid() ? "success" : "danger" }}">
@if($savedComponent->isValid())
<strong>Awesome.</strong> Component updated.
@else
<strong>Whoops.</strong> Something went wrong with the component. {{ $savedComponent->getErrors() }}
@endif
</div>
@endif
<form name='EditComponentForm' class='form-vertical' role='form' action='/dashboard/components/{{ $component->id }}/edit' method='POST'>
<fieldset>
<div class='form-group'>
<label for='incident-name'>Name</label>
<input type='text' class='form-control' name='component[name]' id='component-name' required value='{{ $component->name }}' />
</div>
<div class='form-group'>
<label for='component-status'>Status</label>
<select name='component[status]' class='form-control'>
@foreach(Lang::get('cachet.component.status') as $statusID => $status)
<option value='{{ $statusID }}' {{ $statusID === $component->status ? "selected" : "" }}>{{ $status }}</option>
@endforeach
</select>
</div>
<div class='form-group'>
<label>Description</label>
<textarea name='component[description]' class='form-control' rows='5'>{{ $component->description }}</textarea>
</div>
</fieldset>
<form name='EditComponentForm' class='form-vertical' role='form' action='/dashboard/components/{{ $component->id }}/edit' method='POST'>
<fieldset>
<div class='form-group'>
<label for='incident-name'>Name</label>
<input type='text' class='form-control' name='component[name]' id='component-name' required value='{{ $component->name }}' />
</div>
<div class='form-group'>
<label for='component-status'>Status</label>
<select name='component[status]' class='form-control'>
@foreach(Lang::get('cachet.component.status') as $statusID => $status)
<option value='{{ $statusID }}' {{ $statusID === $component->status ? "selected" : "" }}>{{ $status }}</option>
@endforeach
</select>
</div>
<div class='form-group'>
<label>Description</label>
<textarea name='component[description]' class='form-control' rows='5'>{{ $component->description }}</textarea>
</div>
</fieldset>
<button type="submit" class="btn btn-primary">Save Component</button>
<input type='hidden' name='component[user_id]' value='{{ $component->agent_id || Auth::user()->id }}' />
</form>
</div>
</div>
@stop
<button type="submit" class="btn btn-success">Save Component</button>
<a class="btn btn-default" href="{{ URL::route('dashboard.components') }}">Cancel</a>
<input type='hidden' name='component[user_id]' value='{{ $component->agent_id || Auth::user()->id }}' />
</form>
</div>
</div>
</div>
@stop

View File

@@ -1,34 +1,35 @@
@extends('layout.dashboard')
@section('content')
<div class="header">
<i class="fa fa-list-ul"></i> {{ Lang::get('cachet.dashboard.components') }}
</div>
<div class="row">
<div class="col-sm-12">
<h3>Components</h3>
<ul class='list-group'>
@forelse($components as $component)
<li class='list-group-item'>
<div class='row'>
<div class='col-md-6'>
<strong>{{ $component->name }}</strong>
@if($component->description)
<p><small>{{ $component->description }}</small></p>
@endif
</div>
<div class='col-md-6'>
<ul class='nav nav-pills pull-right'>
<li role='presentation'><a href='/dashboard/components/{{ $component->id }}/edit' class='btn btn-info'>Edit</a></li>
<li role='presentation'><a href='/dashboard/components/{{ $component->id }}/delete' class='btn btn-danger'>Delete</a></li>
</ul>
</div>
</div>
</li>
@empty
<li class='list-group-item text-danger'>You should add a component.</li>
@endforelse
</ul>
</div>
<div class="header fixed">
<span class="uppercase">
<i class="icons ion-ios-keypad"></i> {{ Lang::get('cachet.dashboard.components') }}
</span>
<a class="btn btn-sm btn-success pull-right" href="{{ URL::route('dashboard.components.add') }}">
{{ Lang::get('cachet.dashboard.component-add') }}
</a>
<div class="clearfix"></div>
</div>
<div class="content-wrapper">
<div class="row">
<div class="col-sm-12 striped-list">
@forelse($components as $component)
<div class='row striped-list-item'>
<div class='col-md-8'>
<strong>{{ $component->name }}</strong>
@if($component->description)
<p><small>{{ $component->description }}</small></p>
@endif
</div>
<div class='col-md-4 text-right'>
<a href='/dashboard/components/{{ $component->id }}/edit' class='btn btn-default'>Edit</a>
<a href='/dashboard/components/{{ $component->id }}/delete' class='btn btn-danger'>Delete</a>
</div>
</div>
@empty
<div class='list-group-item text-danger'>You should add a component.</div>
@endforelse
</div>
</div>
</div>
@stop

View File

@@ -2,52 +2,64 @@
@section('content')
<div class="header">
<i class="fa fa-dashboard"></i> {{ Lang::get('cachet.dashboard.incident-add') }}
<span class="uppercase">
<i class="icon icon ion-android-alert"></i> {{ Lang::get('cachet.dashboard.incident-add') }}
</span>
> <small>Create an Incident</small>
</div>
<div class="row">
<div class="col-md-12">
<h3>Create an Incident</h3>
<div class="content-wrapper">
<div class="row">
<div class="col-md-12">
@if($incident = Session::get('incident'))
<div class="alert alert-{{ $incident->isValid() ? "success" : "danger" }}">
@if($incident->isValid())
<strong>Awesome.</strong> Incident added.
@else
<strong>Whoops.</strong> Something went wrong with the incident.
@endif
</div>
@endif
@if($incident = Session::get('incident'))
<div class='alert alert-{{ $incident->isValid() ? "success" : "danger" }}'>
@if($incident->isValid())
<strong>Awesome.</strong> Incident added.
@else
<strong>Whoops.</strong> Something went wrong with the incident.
@endif
</div>
@endif
{{ Form::open(['name' => 'IncidentForm', 'class' => 'form-vertical', 'role' => 'form']) }}
<fieldset>
<div class="form-group">
<label for="incident-name">Incident Name</label>
<input type="text" class='form-control' name='incident[name]' id='incident-name' required />
</div>
<div class="form-group">
<label for="incident-name">Incident Status</label><br />
<label class="radio-inline">
<input type="radio" name="incident[status]" value="1" />
<i class="icon ion-flag"></i>
{{ Lang::get('cachet.incident.status')[1] }}
</label>
<label class="radio-inline">
<input type="radio" name="incident[status]" value="2" />
<i class="icon ion-alert-circled"></i>
{{ Lang::get('cachet.incident.status')[2] }}
</label>
<label class="radio-inline">
<input type="radio" name="incident[status]" value="3" />
<i class="icon ion-eye"></i>
{{ Lang::get('cachet.incident.status')[3] }}
</label>
<label class="radio-inline">
<input type="radio" name="incident[status]" value="4" />
<i class="icon ion-checkmark"></i>
{{ Lang::get('cachet.incident.status')[4] }}
</label>
</div>
<div class="form-group">
<label>Message</label>
<textarea name="incident[message]" class="form-control" rows="5"></textarea>
</div>
</fieldset>
{{ Form::open(['name' => 'IncidentForm', 'class' => 'form-vertical', 'role' => 'form']) }}
<fieldset>
<div class='form-group'>
<label for='incident-name'>Incident Name</label>
<input type='text' class='form-control' name='incident[name]' id='incident-name' required />
</div>
<div class='form-group'>
<label for='incident-name'>Incident Status</label><br />
<label class='radio-inline'>
<input type='radio' name='incident[status]' value='1' /> {{ Lang::get('cachet.incident.status')[1] }}
</label>
<label class='radio-inline'>
<input type='radio' name='incident[status]' value='2' /> {{ Lang::get('cachet.incident.status')[2] }}
</label>
<label class='radio-inline'>
<input type='radio' name='incident[status]' value='3' /> {{ Lang::get('cachet.incident.status')[3] }}
</label>
<label class='radio-inline'>
<input type='radio' name='incident[status]' value='4' /> {{ Lang::get('cachet.incident.status')[4] }}
</label>
</div>
<div class='form-group'>
<label>Message</label>
<textarea name='incident[message]' class='form-control' rows='5'></textarea>
</div>
</fieldset>
<input type='hidden' name='incident[user_id]' value='{{ Auth::user()->id }}' />
<button type="submit" class="btn btn-primary">Submit</button>
{{ Form::close() }}
</div>
</div>
<input type="hidden" name="incident[user_id]" value="{{ Auth::user()->id }}" />
<button type="submit" class="btn btn-success">Create</button>
<a class="btn btn-default" href="{{ URL::route('dashboard.incidents') }}">Cancel</a>
{{ Form::close() }}
</div>
</div>
</div>
@stop

View File

@@ -2,36 +2,39 @@
@section('content')
<div class="header">
<i class="fa fa-dashboard"></i> {{ Lang::get('cachet.dashboard.incident-add') }}
<span class="uppercase">
<i class="fa fa-dashboard"></i> {{ Lang::get('cachet.dashboard.incident-add') }}
</span>
> <small>Create an Incident Template</small>
</div>
<div class="row">
<div class="col-md-12">
<h3>Create an Incident Template</h3>
<div class="content-wrapper">
<div class="row">
<div class="col-md-12">
@if($template = Session::get('template'))
<div class='alert alert-{{ $template->isValid() ? "success" : "danger" }}'>
@if($template->isValid())
<strong>Awesome.</strong> Template added.
@else
<strong>Whoops.</strong> Something went wrong with the template.
@endif
</div>
@endif
@if($template = Session::get('template'))
<div class='alert alert-{{ $template->isValid() ? "success" : "danger" }}'>
@if($template->isValid())
<strong>Awesome.</strong> Template added.
@else
<strong>Whoops.</strong> Something went wrong with the template.
@endif
</div>
@endif
{{ Form::open(['name' => 'IncidentTemplateForm', 'class' => 'form-vertical', 'role' => 'form']) }}
<fieldset>
<div class='form-group'>
<label for='template-name'>Template Name</label>
<input type='text' class='form-control' name='template[name]' id='template-name' required />
</div>
<div class='form-group'>
<label>Template</label>
<textarea name='template[template]' class='form-control' rows='5' required></textarea>
</div>
</fieldset>
{{ Form::open(['name' => 'IncidentTemplateForm', 'class' => 'form-vertical', 'role' => 'form']) }}
<fieldset>
<div class='form-group'>
<label for='template-name'>Template Name</label>
<input type='text' class='form-control' name='template[name]' id='template-name' required />
</div>
<div class='form-group'>
<label>Template</label>
<textarea name='template[template]' class='form-control' rows='5' required></textarea>
</div>
</fieldset>
<button type="submit" class="btn btn-primary">Create</button>
{{ Form::close() }}
</div>
</div>
<button type="submit" class="btn btn-success">Create</button>
{{ Form::close() }}
</div>
</div>
</div>
@stop

View File

@@ -1,38 +1,40 @@
@extends('layout.dashboard')
@section('content')
<div class="header">
<i class="fa fa-exclamation-triangle"></i> {{ Lang::get('cachet.dashboard.incidents') }}
<div class="header fixed">
<span class="uppercase">
<i class="icon icon ion-android-alert"></i> {{ Lang::get('cachet.dashboard.incidents') }}
</span>
<a class="btn btn-sm btn-success pull-right" href="{{ URL::route('dashboard.incidents.add') }}">
{{ Lang::get('cachet.dashboard.incident-add') }}
</a>
<div class="clearfix"></div>
</div>
<div class="row">
<div class="col-sm-12">
<h3>Incidents</h3>
<div class="content-wrapper">
<div class="row">
<div class="col-sm-12">
@if ($incidents->count() === 0)
<div class="list-group-item">Woah! No incidents, your doing well!</div>
@else
<p>You have <strong>{{ $incidents->count() }}</strong> incidents.</p>
@endif
@if ($incidents->count() === 0)
<p class='lead'>Woah! No incidents, your doing well!</p>
@else
<p class='lead'>You have <strong>{{ $incidents->count() }}</strong> incidents.</p>
@endif
<ul class='list-group'>
@foreach($incidents as $incident)
<li class='list-group-item'>
<div class='row'>
<div class='col-md-6'>
<strong>{{ $incident->name }}</strong>
@if($incident->message)
<p><small>{{ Str::words($incident->message, 5) }}</small></p>
@endif
</div>
<div class='col-md-6'>
<ul class='nav nav-pills pull-right'>
<li role='presentation'><a href='/dashboard/incidents/{{ $incident->id }}/delete' class='btn btn-danger'>Delete</a></li>
</ul>
</div>
</div>
</li>
@endforeach
</ul>
</div>
</div>
<div class="striped-list">
@foreach($incidents as $incident)
<div class="row striped-list-item">
<div class="col-md-6">
<strong>{{ $incident->name }}</strong>
@if($incident->message)
<p><small>{{ Str::words($incident->message, 5) }}</small></p>
@endif
</div>
<div class="col-md-6 text-right">
<a href="/dashboard/incidents/{{ $incident->id }}/delete" class="btn btn-danger">Delete</a>
</div>
</div>
@endforeach
</div>
</div>
</div>
</div>
@stop

View File

@@ -2,13 +2,15 @@
@section('content')
<div class="header">
<i class="fa fa-dashboard"></i> {{ Lang::get('cachet.dashboard.dashboard') }}
</div>
<div class="row">
<div class="col-md-12">
<h3>Dashboard</h3>
<p class='lead'>Let's put cool things here.</p>
</div>
<span class="uppercase">
<i class="icon ion-speedometer"></i> {{ Lang::get('cachet.dashboard.dashboard') }}
</span>
</div>
<div class="content-wrapper">
<div class="row">
<div class="col-md-12">
<p class='lead'>Let's put cool things here.</p>
</div>
</div>
</div>
@stop

View File

@@ -2,93 +2,97 @@
@section('content')
<div class="header">
<i class="fa fa-cogs"></i> {{ Lang::get('cachet.dashboard.settings') }}
<span class="uppercase">
<i class="icon ion-gear-a"></i> {{ Lang::get('cachet.dashboard.settings') }}
</span>
</div>
<div class="row">
<div class="col-sm-12">
<form name='SettingsForm' class='form-vertical' role='form' action='/dashboard/settings' method='POST'>
<h3>Cachet Settings</h3>
<fieldset>
<div class='form-group'>
<label>Site Name</label>
<input type='text' class='form-control' name='app_name' value='{{ Setting::get("app_name") }}' required />
</div>
<div class='form-group'>
<label>Site URL</label>
<input type='text' class='form-control' name='app_domain' value='{{ Setting::get("app_domain") }}' required />
</div>
</fieldset>
<div class="content-wrapper">
<div class="row">
<div class="col-sm-12">
<form name='SettingsForm' class='form-vertical' role='form' action='/dashboard/settings' method='POST'>
<h4 class="sub-header">Cachet Settings</h4>
<fieldset>
<div class='form-group'>
<label>Site Name</label>
<input type='text' class='form-control' name='app_name' value='{{ Setting::get("app_name") }}' required />
</div>
<div class='form-group'>
<label>Site URL</label>
<input type='text' class='form-control' name='app_domain' value='{{ Setting::get("app_domain") }}' required />
</div>
</fieldset>
<h3>Server</h3>
<fieldset>
<h4 class="sub-header">Server</h4>
<fieldset>
</fieldset>
</fieldset>
<h3>Security</h3>
<fieldset>
<div class='form-group'>
<label>Allowed Domains <em>Comma Seperated</em></label>
<textarea class='form-control' name='allowed_domains' rows='5' placeholder='http://cachet.io, http://cachet.herokuapp.com'>{{ Setting::get('allowed_domains') }}</textarea>
<div class='help-block'>
The domain set above is automatically allowed by default.
</div>
</div>
</fieldset>
<h4 class="sub-header">Security</h4>
<fieldset>
<div class='form-group'>
<label>Allowed Domains <em>Comma Seperated</em></label>
<textarea class='form-control' name='allowed_domains' rows='5' placeholder='http://cachet.io, http://cachet.herokuapp.com'>{{ Setting::get('allowed_domains') }}</textarea>
<div class='help-block'>
The domain set above is automatically allowed by default.
</div>
</div>
</fieldset>
<h3>Mail</h3>
<fieldset>
<h4>Mail</h4>
<fieldset>
</fieldset>
</fieldset>
<h3>Theme</h3>
<fieldset>
<div class='form-group'>
<label>Background Color</label>
<div class='input-group'>
<div class='input-group-addon'>#</div>
<input type='text' pattern="^+([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$" class='form-control' maxlength="6" name='style.background_color' value='{{ Setting::get("style_background_color") }}' />
</div>
</div>
<div class='form-group'>
<label>Text Color</label>
<div class='input-group'>
<div class='input-group-addon'>#</div>
<input type='text' pattern="^+([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$" class='form-control' maxlength="6" name='style.text_color' value='{{ Setting::get("style_text_color") }}' />
</div>
</div>
<div class='form-group'>
<label>Success Warning Color</label>
<div class='input-group'>
<div class='input-group-addon'>#</div>
<input type='text' pattern="^+([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$" class='form-control' maxlength="6" name='style.success_warning_color' value='{{ Setting::get("style_success_warning_color") }}' />
</div>
</div>
<div class='form-group'>
<label>Error Warning Color</label>
<div class='input-group'>
<div class='input-group-addon'>#</div>
<input type='text' pattern="^+([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$" class='form-control' maxlength="6" name='style.error_warning_color' value='{{ Setting::get("style_error_warning_color") }}' />
</div>
</div>
<div class='form-group'>
<label>Info Warning Color</label>
<div class='input-group'>
<div class='input-group-addon'>#</div>
<input type='text' class='form-control' name='style.info_warning_color' value='{{ Setting::get("style_info_warning_color") }}' />
</div>
</div>
</fieldset>
<h4 class="sub-header">Theme</h4>
<fieldset>
<div class='form-group'>
<label>Background Color</label>
<div class='input-group'>
<div class='input-group-addon'>#</div>
<input type='text' pattern="^+([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$" class='form-control' maxlength="6" name='style.background_color' value='{{ Setting::get("style_background_color") }}' />
</div>
</div>
<div class='form-group'>
<label>Text Color</label>
<div class='input-group'>
<div class='input-group-addon'>#</div>
<input type='text' pattern="^+([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$" class='form-control' maxlength="6" name='style.text_color' value='{{ Setting::get("style_text_color") }}' />
</div>
</div>
<div class='form-group'>
<label>Success Warning Color</label>
<div class='input-group'>
<div class='input-group-addon'>#</div>
<input type='text' pattern="^+([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$" class='form-control' maxlength="6" name='style.success_warning_color' value='{{ Setting::get("style_success_warning_color") }}' />
</div>
</div>
<div class='form-group'>
<label>Error Warning Color</label>
<div class='input-group'>
<div class='input-group-addon'>#</div>
<input type='text' pattern="^+([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$" class='form-control' maxlength="6" name='style.error_warning_color' value='{{ Setting::get("style_error_warning_color") }}' />
</div>
</div>
<div class='form-group'>
<label>Info Warning Color</label>
<div class='input-group'>
<div class='input-group-addon'>#</div>
<input type='text' class='form-control' name='style.info_warning_color' value='{{ Setting::get("style_info_warning_color") }}' />
</div>
</div>
</fieldset>
<h3>Stylesheet</h3>
<fieldset>
<div class='form-group'>
<label>Custom Stylesheet</label>
<textarea class='form-control' name='stylesheet' rows='10'>{{ Setting::get('stylesheet') }}</textarea>
</div>
</fieldset>
<h4 class="sub-header">Stylesheet</h4>
<fieldset>
<div class='form-group'>
<label>Custom Stylesheet</label>
<textarea class='form-control' name='stylesheet' rows='10'>{{ Setting::get('stylesheet') }}</textarea>
</div>
</fieldset>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
</div>
<button type="submit" class="btn btn-success">Save settings</button>
</form>
</div>
</div>
</div>
@stop

View File

@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html>
@include('partials.dashboard.head')
<body class="dashboard">
<div class="wrapper">
<div class="content">
@yield('content')
</div>
</div>
</body>
</html>

View File

@@ -1,20 +1,8 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="http://james-brooks.uk">
<meta name="apple-mobile-web-app-capable" content="yes">
<title>{{ isset($pageTitle) ? $pageTitle : Setting::get('app_name') }} | Cachet</title>
<link rel="stylesheet" href="{{ elixir('css/all.css') }}">
<script src="{{ elixir('js/all.js') }}"></script>
</head>
@include('partials.dashboard.head')
<body class="dashboard">
@include('partials.dashboard.nav')
<div class="wrapper">
@include('partials.dashboard.sidebar')
<div class="content">

View File

@@ -0,0 +1,13 @@
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="http://james-brooks.uk">
<meta name="apple-mobile-web-app-capable" content="yes">
<title>{{ isset($pageTitle) ? $pageTitle : Setting::get('app_name') }} | Cachet</title>
<link href='//fonts.googleapis.com/css?family=Lato:300,400,700' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="{{ elixir('css/all.css') }}">
<script src="{{ elixir('js/all.js') }}"></script>
</head>

View File

@@ -11,35 +11,31 @@
<div class="username">{{ Auth::user()->username }}</div>
</div>
</div>
<div class="clearfix"></div>
<div class="quick-add-incident">
<a class="btn btn-block btn-default uppercase" href="{{ URL::route('dashboard.incidents.add') }}">
{{ Lang::get('cachet.dashboard.incident-add') }}
</a>
</div>
<ul>
<li class="{{ Request::is('dashboard') ? 'active' : '' }}">
<a href="{{ URL::route('dashboard') }}">
<i class="fa fa-dashboard"></i> {{ Lang::get('cachet.dashboard.dashboard') }}
<i class="icon ion-speedometer"></i> {{ Lang::get('cachet.dashboard.dashboard') }}
</a>
</li>
<li class="{{ Request::is('dashboard/incidents') ? 'active' : '' }}">
<a href="{{ URL::route('dashboard.incidents') }}">
<i class="fa fa-exclamation-triangle"></i> {{ Lang::get('cachet.dashboard.incidents') }}
<i class="icon ion-android-alert"></i> {{ Lang::get('cachet.dashboard.incidents') }}
</a>
</li>
<li class="{{ Request::is('dashboard/incidents/add') ? 'active' : '' }} sub-nav-item">
<a href="{{ URL::route('dashboard.incidents.add') }}">
<i class="fa fa-plus"></i> {{ Lang::get('cachet.dashboard.incident-add') }}
</a>
</li>
<li class="{{ Request::is('dashboard/incidents/template') ? 'active' : '' }} sub-nav-item">
{{-- <li class="{{ Request::is('dashboard/incidents/template') ? 'active' : '' }} sub-nav-item">
<a href="{{ URL::route('dashboard.incidents.template') }}">
<i class="fa fa-plus"></i> {{ Lang::get('cachet.dashboard.incident-create-template') }}
</a>
</li>
</li> --}}
<li class="{{ Request::is('dashboard/components') ? 'active' : '' }}">
<a href="{{ URL::route('dashboard.components') }}">
<i class="fa fa-list-ul"></i> {{ Lang::get('cachet.dashboard.components') }}
</a>
</li>
<li class="{{ Request::is('dashboard/components/add') ? 'active' : '' }} sub-nav-item">
<a href="{{ URL::route('dashboard.components.add') }}">
<i class="fa fa-plus"></i> {{ Lang::get('cachet.dashboard.component-add') }}
<i class="icons ion-ios-keypad"></i> {{ Lang::get('cachet.dashboard.components') }}
</a>
</li>
{{-- <li class="{{ Request::is('dashboard/metrics') ? 'active' : '' }}">
@@ -59,10 +55,27 @@
</li> --}}
<li class="{{ Request::is('dashboard/settings') ? 'active' : '' }}">
<a href="{{ URL::route('dashboard.settings') }}">
<i class="fa fa-cogs"></i> {{ Lang::get('cachet.dashboard.settings') }}
<i class="icon ion-gear-a"></i> {{ Lang::get('cachet.dashboard.settings') }}
</a>
</li>
</ul>
<div class="bottom-menu-sidebar">
<div class="text-center">
<img width="165" src="{{ url('img/cachet-logo.svg') }}" alt="Cachet"/>
</div>
<br/>
<ul>
<li data-toggle="tooltip" data-placement="top" title="{{ Lang::get('cachet.dashboard.help') }}">
<a href="https://cachethq.github.io" target="_blank"><i class="icon ion-help"></i></a>
</li>
<li data-toggle="tooltip" data-placement="top" title="{{ Lang::get('cachet.dashboard.status_page') }}">
<a href="{{ URL::route('status-page') }}"><i class="icon ion-monitor"></i></a>
</li>
<li data-toggle="tooltip" data-placement="top" title="{{ Lang::get('cachet.logout') }}">
<a href="{{ URL::route('logout') }}"><i class="icon ion-log-out"></i></a>
</li>
</ul>
</div>
</div>
</div>
@endif

View File

@@ -1,72 +1,75 @@
@extends('layout.dashboard')
@section('content')
<div class='header'>
<i class='fa fa-cog'></i> {{ Lang::get('cachet.setup') }}
<div class="header">
<span class="uppercase">
<i class='fa fa-cog'></i> {{ Lang::get('cachet.setup') }}
</span>
</div>
<div class='row'>
<div class='col-sm-12'>
<div class='panel panel-default'>
<div class='panel-heading'>{{ Lang::get('cachet.forms.setup.service_details') }}</div>
<div class='panel-body'>
{{ Form::open(['name' => 'SetupForm', 'class' => 'form-vertical', 'role' => 'form']) }}
<fieldset>
<legend>{{ Lang::get('cachet.forms.setup.status_page_setup') }}</legend>
<div class='form-group'>
<label class='sr-only'>{{ Lang::get('cachet.forms.setup.site_name') }}</label>
<input type='text' name='settings[app_name]' class='form-control' placeholder='{{ Lang::get("cachet.forms.setup.site_name") }}' value='{{ Input::old("settings.app_name", "") }}' required />
@if($errors->has('settings.app_name'))
<span class='text-danger'>{{ $errors->first('settings.app_name') }}</span>
@endif
</div>
<div class='form-group'>
<label class='sr-only'>{{ Lang::get('cachet.forms.setup.site_domain') }}</label>
<input type='text' name='settings[app_domain]' class='form-control' placeholder='{{ Lang::get("cachet.forms.setup.site_domain") }}' value='{{ Input::old("settings.app_domain", "") }}' required />
@if($errors->has('settings.app_domain'))
<span class='text-danger'>{{ $errors->first('settings.app_domain') }}</span>
@endif
</div>
<div class='form-group'>
<label>
<input type='checkbox' name='settings[show_support]' value='1' checked />
{{ Lang::get("cachet.forms.setup.show_support") }}
</label>
</div>
</fieldset>
<div class="content-wrapper">
<div class='row'>
<div class='col-sm-12'>
<div class='panel panel-default'>
<div class='panel-heading'>{{ Lang::get('cachet.forms.setup.service_details') }}</div>
<div class='panel-body'>
{{ Form::open(['name' => 'SetupForm', 'class' => 'form-vertical', 'role' => 'form']) }}
<fieldset>
<legend>{{ Lang::get('cachet.forms.setup.status_page_setup') }}</legend>
<div class='form-group'>
<label class='sr-only'>{{ Lang::get('cachet.forms.setup.site_name') }}</label>
<input type='text' name='settings[app_name]' class='form-control' placeholder='{{ Lang::get("cachet.forms.setup.site_name") }}' value='{{ Input::old("settings.app_name", "") }}' required />
@if($errors->has('settings.app_name'))
<span class='text-danger'>{{ $errors->first('settings.app_name') }}</span>
@endif
</div>
<div class='form-group'>
<label class='sr-only'>{{ Lang::get('cachet.forms.setup.site_domain') }}</label>
<input type='text' name='settings[app_domain]' class='form-control' placeholder='{{ Lang::get("cachet.forms.setup.site_domain") }}' value='{{ Input::old("settings.app_domain", "") }}' required />
@if($errors->has('settings.app_domain'))
<span class='text-danger'>{{ $errors->first('settings.app_domain') }}</span>
@endif
</div>
<div class='form-group'>
<label>
<input type='checkbox' name='settings[show_support]' value='1' checked />
{{ Lang::get("cachet.forms.setup.show_support") }}
</label>
</div>
</fieldset>
<fieldset>
<legend>Administrator Account</legend>
<div class='form-group'>
<label class='sr-only'>{{ Lang::get("cachet.forms.setup.admin_username") }}</label>
<input type='text' name='user[username]' class='form-control' placeholder='{{ Lang::get("cachet.forms.setup.admin_username") }}' value='{{ Input::old("user.username", "") }}' required />
@if($errors->has('user.username'))
<span class='text-danger'>{{ $errors->first('user.username') }}</span>
@endif
</div>
<div class='form-group'>
<label class='sr-only'>{{ Lang::get("cachet.forms.email") }}</label>
<input type='email' name='user[email]' class='form-control' placeholder='{{ Lang::get("cachet.forms.email") }}' value='{{ Input::old("user.email", "") }}' required />
@if($errors->has('user.email'))
<span class='text-danger'>{{ $errors->first('user.email') }}</span>
@endif
</div>
<div class='form-group'>
<label class='sr-only'>{{ Lang::get("cachet.forms.password") }}</label>
<input type='password' name='user[password]' class='form-control' placeholder='{{ Lang::get("cachet.forms.password") }}' value='{{ Input::old("user.password", "") }}' required />
@if($errors->has('user.password'))
<span class='text-danger'>{{ $errors->first('user.password') }}</span>
@endif
</div>
</fieldset>
<fieldset>
<legend>Administrator Account</legend>
<div class='form-group'>
<label class='sr-only'>{{ Lang::get("cachet.forms.setup.admin_username") }}</label>
<input type='text' name='user[username]' class='form-control' placeholder='{{ Lang::get("cachet.forms.setup.admin_username") }}' value='{{ Input::old("user.username", "") }}' required />
@if($errors->has('user.username'))
<span class='text-danger'>{{ $errors->first('user.username') }}</span>
@endif
</div>
<div class='form-group'>
<label class='sr-only'>{{ Lang::get("cachet.forms.email") }}</label>
<input type='email' name='user[email]' class='form-control' placeholder='{{ Lang::get("cachet.forms.email") }}' value='{{ Input::old("user.email", "") }}' required />
@if($errors->has('user.email'))
<span class='text-danger'>{{ $errors->first('user.email') }}</span>
@endif
</div>
<div class='form-group'>
<label class='sr-only'>{{ Lang::get("cachet.forms.password") }}</label>
<input type='password' name='user[password]' class='form-control' placeholder='{{ Lang::get("cachet.forms.password") }}' value='{{ Input::old("user.password", "") }}' required />
@if($errors->has('user.password'))
<span class='text-danger'>{{ $errors->first('user.password') }}</span>
@endif
</div>
</fieldset>
<hr />
<div class='form-group'>
<button type='submit' class='btn btn-success'>{{ Lang::get("cachet.forms.setup.finish_setup") }}</button>
</div>
{{ Form::close() }}
<hr />
<div class='form-group'>
<button type='submit' class='btn btn-success'>{{ Lang::get("cachet.forms.setup.finish_setup") }}</button>
</div>
{{ Form::close() }}
</div>
</div>
</div>
</div>
</div>
@stop

View File

@@ -5,6 +5,7 @@
"fontawesome": "4.2.*",
"jquery": "~2.1.1",
"chartjs": "0.2.*",
"rivets": "0.7.*"
"rivets": "0.7.*",
"ionicons": "~2.0.0"
}
}

View File

@@ -1,19 +1,20 @@
var elixir = require('laravel-elixir');
elixir(function(mix) {
mix.sass('app/assets/sass/main.scss')
.styles([
'app/assets/Bower_components/fontawesome/css/font-awesome.min.css',
'public/css/main.css',
], './')
.scripts([
'bower_components/jquery/dist/jquery.min.js',
'bower_components/bootstrap-sass-official/assets/javascripts/bootstrap.js',
'bower_components/chartjs/Chart.min.js',
'bower_components/rivets/dist/rivets.min.js',
'js/app.js',
'js/**/*.js',
], './app/assets/')
.version(['public/css/all.css', 'public/js/all.js'])
.copy('app/assets/bower_components/fontawesome/fonts/', 'public/build/fonts');
elixir(function (mix) {
mix.sass('app/assets/sass/main.scss')
.styles([
'app/assets/bower_components/fontawesome/css/font-awesome.min.css',
'app/assets/bower_components/ionicons/css/ionicons.min.css',
'public/css/main.css',
], './')
.scripts([
'bower_components/jquery/dist/jquery.min.js',
'bower_components/bootstrap-sass-official/assets/javascripts/bootstrap.js',
'bower_components/chartjs/Chart.min.js',
'js/app.js',
'js/**/*.js',
], './app/assets/')
.version(['public/css/all.css', 'public/js/all.js'])
.copy('app/assets/bower_components/fontawesome/fonts/', 'public/build/fonts')
.copy('app/assets/bower_components/ionicons/fonts/', 'public/build/fonts');
});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 326 KiB

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,4 @@
{
"css/all.css": "css/all-50d597de.css",
"js/all.js": "js/all-d8f5640f.js"
"css/all.css": "css/all-d4306fe3.css",
"js/all.js": "js/all-c9a5e8b0.js"
}

BIN
public/img/cachet-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
public/img/cachet-logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB