Cachet is now a Laravel 5 app
This commit is contained in:
38
resources/views/auth/login.blade.php
Normal file
38
resources/views/auth/login.blade.php
Normal file
@@ -0,0 +1,38 @@
|
||||
@extends('layout.clean')
|
||||
|
||||
@section('content')
|
||||
<div class="login">
|
||||
<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="/img/cachet-logo.svg" alt="Cachet">
|
||||
</div>
|
||||
<form method="POST" action="/auth/login" accept-charset="UTF-8">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<legend>{{ trans('dashboard.login.welcome') }}</legend>
|
||||
|
||||
@if(Session::has('error'))
|
||||
<p class="text-danger">{{ Session::get('error') }}</p>
|
||||
@endif
|
||||
|
||||
<div class="form-group">
|
||||
<label class="sr-only">{{ trans('forms.login.email') }}</label>
|
||||
{!! Form::email('email', Input::old('email'), [
|
||||
'class' => 'form-control', 'placeholder' => trans('forms.login.email'), 'required' => 'required'
|
||||
]) !!}
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="sr-only">{{ trans('forms.login.password') }}</label>
|
||||
{!! Form::password('password', [
|
||||
'class' => 'form-control', 'placeholder' => trans('forms.login.password'), 'required' => 'required'
|
||||
]) !!}
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-lg btn-block btn-success">{{ trans('dashboard.login.login') }}</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
31
resources/views/auth/two-factor-auth.blade.php
Normal file
31
resources/views/auth/two-factor-auth.blade.php
Normal file
@@ -0,0 +1,31 @@
|
||||
@extends('layout.clean')
|
||||
|
||||
@section('content')
|
||||
<div class="login">
|
||||
<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>{{ trans('dashboard.login.two-factor') }}</legend>
|
||||
|
||||
@if(Session::has('error'))
|
||||
<p class="text-danger">{{ Session::get('error') }}</p>
|
||||
@endif
|
||||
|
||||
<div class="form-group">
|
||||
<label class="sr-only">{{ trans('forms.login.2fauth') }}</label>
|
||||
{{ Form::text('code', null, [
|
||||
'class' => 'form-control', 'placeholder' => trans('forms.login.2fauth'), 'required' => 'required'
|
||||
]) }}
|
||||
</div>
|
||||
<hr />
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-lg btn-block btn-success">{{ trans('dashboard.login.login') }}</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
{{ Form::close() }}
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
70
resources/views/dashboard/components/add.blade.php
Normal file
70
resources/views/dashboard/components/add.blade.php
Normal file
@@ -0,0 +1,70 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icons ion-outlet"></i> {{ trans('dashboard.components.components') }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.components.add.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form name="CreateComponentForm" class="form-vertical" role="form" action="/dashboard/components/add" method="POST">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label for="component-name">{{ trans('forms.components.name') }}</label>
|
||||
<input type="text" class="form-control" name="component[name]" id="component-name" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="component-status">{{ trans('forms.components.status') }}</label>
|
||||
<select name="component[status]" class="form-control">
|
||||
@foreach(trans('cachet.components.status') as $statusID => $status)
|
||||
<option value="{{ $statusID }}">{{ $status }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.description') }}</label>
|
||||
<textarea name="component[description]" class="form-control" rows="5"></textarea>
|
||||
</div>
|
||||
<input type="hidden" name="component[group_id]" value="0">
|
||||
@if($groups->count() > 0)
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.group') }}</label>
|
||||
<select name="component[group_id]" class="form-control">
|
||||
<option selected></option>
|
||||
@foreach($groups as $group)
|
||||
<option value="{{ $group->id }}">{{ $group->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
@endif
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.link') }}</label>
|
||||
<input type="text" name="component[link]" class="form-control">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.tags') }}</label>
|
||||
<input name="component[tags]" class="form-control">
|
||||
<span class="help-block">{{ trans('forms.components.tags-help') }}</span>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<input type="hidden" name="component[order]" value="0">
|
||||
|
||||
<div class="btn-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.create') }}</button>
|
||||
<a class="btn btn-default" href="{{ route('dashboard.components') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
71
resources/views/dashboard/components/edit.blade.php
Normal file
71
resources/views/dashboard/components/edit.blade.php
Normal file
@@ -0,0 +1,71 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icons ion-outlet"></i> {{ trans('dashboard.components.components') }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.components.edit.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form name="EditComponentForm" class="form-vertical" role="form" action="/dashboard/components/{{ $component->id }}/edit" method="POST">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label for="incident-name">{{ trans('forms.components.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">{{ trans('forms.components.status') }}</label>
|
||||
<select name="component[status]" class="form-control">
|
||||
@foreach(trans('cachet.components.status') as $statusID => $status)
|
||||
<option value="{{ $statusID }}" {{ $statusID === $component->status ? "selected" : "" }}>{{ $status }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.description') }}</label>
|
||||
<textarea name="component[description]" class="form-control" rows="5">{{ $component->description }}</textarea>
|
||||
</div>
|
||||
<input type="hidden" name="component[group_id]" value="0">
|
||||
@if($groups->count() > 0)
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.group') }}</label>
|
||||
<select name="component[group_id]" class="form-control">
|
||||
<option {{ $component->group_id === null ? 'selected' : null }}></option>
|
||||
@foreach($groups as $group)
|
||||
<option value="{{ $group->id }}" {{ $component->group_id === $group->id ? 'selected' : null }}>{{ $group->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
@endif
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.link') }}</label>
|
||||
<input type="text" name="component[link]" class="form-control" value="{{ $component->link }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.tags') }}</label>
|
||||
<input name="component[tags]" class="form-control" value="{{ $component->tagsList }}">
|
||||
<span class="help-block">{{ trans('forms.components.tags-help') }}</span>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<input type="hidden" name="component[user_id]" value="{{ $component->agent_id || $loggedUser->id }}">
|
||||
<input type="hidden" name="component[order]" value="{{ $component->order or 0 }}">
|
||||
|
||||
<div class="btn-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.save') }}</button>
|
||||
<a class="btn btn-default" href="{{ route('dashboard.components') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
34
resources/views/dashboard/components/groups/add.blade.php
Normal file
34
resources/views/dashboard/components/groups/add.blade.php
Normal file
@@ -0,0 +1,34 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icons ion-ios-keypad"></i> {{ trans_choice('dashboard.components.groups.groups', 2) }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.components.groups.add.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form name="CreateComponentGroupForm" class="form-vertical" role="form" action="/dashboard/components/groups/add" method="POST">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label for="incident-name">{{ trans('forms.components.groups.name') }}</label>
|
||||
<input type="text" class="form-control" name="group[name]" id="group-name" required>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="btn-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.add') }}</button>
|
||||
<a class="btn btn-default" href="{{ route('dashboard.components.groups') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
34
resources/views/dashboard/components/groups/edit.blade.php
Normal file
34
resources/views/dashboard/components/groups/edit.blade.php
Normal file
@@ -0,0 +1,34 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icons ion-ios-keypad"></i> {{ trans_choice('dashboard.components.groups.groups', 2) }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.components.groups.edit.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form name="EditComponentGroupForm" class="form-vertical" role="form" method="POST">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label for="incident-name">{{ trans('forms.components.groups.name') }}</label>
|
||||
<input type="text" class="form-control" name="group[name]" id="group-name" value="{{ $group->name }}" required>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="btn-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.save') }}</button>
|
||||
<a class="btn btn-default" href="{{ route('dashboard.components.groups') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
37
resources/views/dashboard/components/groups/index.blade.php
Normal file
37
resources/views/dashboard/components/groups/index.blade.php
Normal file
@@ -0,0 +1,37 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@if(isset($subMenu))
|
||||
@include('partials.dashboard.sub-sidebar')
|
||||
@endif
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header">
|
||||
<span class="uppercase">
|
||||
<i class="icons ion-ios-keypad"></i> {{ trans_choice('dashboard.components.groups.groups', 2) }}
|
||||
</span>
|
||||
<a class="btn btn-sm btn-success pull-right" href="{{ route('dashboard.components.groups.add') }}">
|
||||
{{ trans('dashboard.components.groups.add.title') }}
|
||||
</a>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 striped-list">
|
||||
@forelse($groups as $group)
|
||||
<div class="row striped-list-item">
|
||||
<div class="col-xs-6">
|
||||
<strong>{{ $group->name }}</strong> <span class="label label-info">{{ $group->components->count() }}</span>
|
||||
</div>
|
||||
<div class="col-xs-6 text-right">
|
||||
<a href="{{ route('dashboard.components.groups.edit', [$group->id]) }}" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
<a href="/dashboard/components/groups/{{ $group->id }}/delete" class="btn btn-danger confirm-action" data-method="DELETE">{{ trans('forms.delete') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
@empty
|
||||
<div class="list-group-item text-danger">{{ trans('dashboard.components.add.message') }}</div>
|
||||
@endforelse
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
51
resources/views/dashboard/components/index.blade.php
Normal file
51
resources/views/dashboard/components/index.blade.php
Normal file
@@ -0,0 +1,51 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@if(isset($subMenu))
|
||||
@include('partials.dashboard.sub-sidebar')
|
||||
@endif
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header">
|
||||
<span class="uppercase">
|
||||
<i class="icons ion-outlet"></i> {{ trans('dashboard.components.components') }}
|
||||
</span>
|
||||
<a class="btn btn-sm btn-success pull-right" href="{{ route('dashboard.components.add') }}">
|
||||
{{ trans('dashboard.components.add.title') }}
|
||||
</a>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<form name="componentList">
|
||||
<div class="col-sm-12 striped-list" id="component-list">
|
||||
@forelse($components as $component)
|
||||
<div class="row striped-list-item">
|
||||
<div class="col-xs-6">
|
||||
<h4>
|
||||
@if($components->count() > 1)
|
||||
<span class="drag-handle"><i class="ion-drag"></i></span>
|
||||
@endif
|
||||
{{ $component->name }} <small>{{ $component->humanStatus }}</small>
|
||||
</h4>
|
||||
@if($component->group)
|
||||
<p><small>{{ trans('dashboard.components.listed_group', ['name' => $component->group->name]) }}</small></p>
|
||||
@endif
|
||||
@if($component->description)
|
||||
<p>{{ $component->description }}</p>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-xs-6 text-right">
|
||||
<a href="/dashboard/components/{{ $component->id }}/edit" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
<a href="/dashboard/components/{{ $component->id }}/delete" class="btn btn-danger confirm-action" data-method="DELETE">{{ trans('forms.delete') }}</a>
|
||||
</div>
|
||||
<input type="hidden" rel="order" name="component[{{ $component->id }}]" value="{{ $component->order }}">
|
||||
</div>
|
||||
@empty
|
||||
<div class="list-group-item text-danger">{{ trans('dashboard.components.add.message') }}</div>
|
||||
@endforelse
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
102
resources/views/dashboard/incidents/add.blade.php
Normal file
102
resources/views/dashboard/incidents/add.blade.php
Normal file
@@ -0,0 +1,102 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-android-alert"></i> {{ trans('dashboard.incidents.incidents') }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.incidents.add.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form class="form-vertical" name="IncidentForm" role="form" method="POST" autocomplete="off">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
@if($incidentTemplates->count() > 0)
|
||||
<div class="form-group">
|
||||
<label for="incident-template">{{ trans('forms.incidents.templates.template') }}</label>
|
||||
<select class="form-control" name="template">
|
||||
<option selected></option>
|
||||
@foreach($incidentTemplates as $tpl)
|
||||
<option value="{{ $tpl->slug }}">{{ $tpl->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
@endif
|
||||
<div class="form-group">
|
||||
<label for="incident-name">{{ trans('forms.incidents.name') }}</label>
|
||||
<input type="text" class="form-control" name="incident[name]" id="incident-name" required value="{{ Input::old('incident.name') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="incident-name">{{ trans('forms.incidents.status') }}</label><br>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="incident[status]" value="1">
|
||||
<i class="icon ion-flag"></i>
|
||||
{{ trans('cachet.incidents.status')[1] }}
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="incident[status]" value="2">
|
||||
<i class="icon ion-alert-circled"></i>
|
||||
{{ trans('cachet.incidents.status')[2] }}
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="incident[status]" value="3">
|
||||
<i class="icon ion-eye"></i>
|
||||
{{ trans('cachet.incidents.status')[3] }}
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="incident[status]" value="4">
|
||||
<i class="icon ion-checkmark"></i>
|
||||
{{ trans('cachet.incidents.status')[4] }}
|
||||
</label>
|
||||
</div>
|
||||
@if($components->count() > 0)
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.component') }}</label>
|
||||
<select name='incident[component_id]' class='form-control'>
|
||||
<option value='0' selected></option>
|
||||
@foreach($components as $component)
|
||||
<option value='{{ $component->id }}'>{{ $component->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<span class='help-block'>{{ trans('forms.optional') }}</span>
|
||||
</div>
|
||||
@endif
|
||||
<div class="form-group hidden" id='component-status'>
|
||||
<div class="well">
|
||||
<div class="radio-items">
|
||||
@foreach(trans('cachet.components.status') as $statusID => $status)
|
||||
<div class="radio-inline">
|
||||
<label>
|
||||
<input type="radio" name="incident[component_status]" value="{{ $statusID }}" >
|
||||
{{ $status }}
|
||||
</label>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.message') }}</label>
|
||||
<div class='markdown-control'>
|
||||
<textarea name="incident[message]" class="form-control" rows="5" required>{{ Input::old('incident.message') }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="btn-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.add') }}</button>
|
||||
<a class="btn btn-default" href="{{ route('dashboard.incidents') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
93
resources/views/dashboard/incidents/edit.blade.php
Normal file
93
resources/views/dashboard/incidents/edit.blade.php
Normal file
@@ -0,0 +1,93 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-android-alert"></i> {{ trans('dashboard.incidents.incidents') }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.incidents.edit.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form class="form-vertical" name="IncidentForm" role="form" method="POST" autocomplete="off">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label for="incident-name">{{ trans('forms.incidents.name') }}</label>
|
||||
<input type="text" class="form-control" name="incident[name]" id="incident-name" required value="{{$incident->name}}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="incident-name">{{ trans('forms.incidents.status') }}</label><br>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="incident[status]" value="1" {{ ($incident->status == 1) ? "checked=checked" : "" }}>
|
||||
<i class="icon ion-flag"></i>
|
||||
{{ trans('cachet.incidents.status')[1] }}
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="incident[status]" value="2" {{ ($incident->status == 2) ? "checked=checked" : "" }}>
|
||||
<i class="icon ion-alert-circled"></i>
|
||||
{{ trans('cachet.incidents.status')[2] }}
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="incident[status]" value="3" {{ ($incident->status == 3) ? "checked=checked" : "" }}>
|
||||
<i class="icon ion-eye"></i>
|
||||
{{ trans('cachet.incidents.status')[3] }}
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="incident[status]" value="4" {{ ($incident->status == 4) ? "checked=checked" : "" }}>
|
||||
<i class="icon ion-checkmark"></i>
|
||||
{{ trans('cachet.incidents.status')[4] }}
|
||||
</label>
|
||||
</div>
|
||||
@if($components->count() > 0)
|
||||
<div class='form-group'>
|
||||
<label>{{ trans('forms.incidents.component') }}</label>
|
||||
<select name='incident[component_id]' class='form-control'>
|
||||
<option value='0' {{ $incident->id === 0 ? "selected" : null }}></option>
|
||||
@foreach($components as $component)
|
||||
<option value='{{ $component->id }}' {{ $incident->component_id === $component->id ? "selected" : null }}>{{ $component->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<span class='help-block'>{{ trans('forms.optional') }}</span>
|
||||
</div>
|
||||
<div class="form-group {{ $incident->component_id === 0 ? 'hidden' : null }}" id='component-status'>
|
||||
<div class="well">
|
||||
<div class="radio-items">
|
||||
@foreach(trans('cachet.components.status') as $statusID => $status)
|
||||
<div class="radio-inline">
|
||||
<label>
|
||||
<input type="radio" name="incident[component_status]" value="{{ $statusID }}" {{ $incident->component_id > 0 && $incident->component->status === $statusID ? 'checked' : null }}>
|
||||
{{ $status }}
|
||||
</label>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.message') }}</label>
|
||||
<div class='markdown-control'>
|
||||
<textarea name="incident[message]" class="form-control" rows="5" required>{{ $incident->message }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<input type="hidden" name="incident[id]" value={{$incident->id}}>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="btn-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.update') }}</button>
|
||||
<a class="btn btn-default" href="{{ route('dashboard.incidents') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
43
resources/views/dashboard/incidents/index.blade.php
Normal file
43
resources/views/dashboard/incidents/index.blade.php
Normal file
@@ -0,0 +1,43 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@if(isset($subMenu))
|
||||
@include('partials.dashboard.sub-sidebar')
|
||||
@endif
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header">
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-android-alert"></i> {{ trans('dashboard.incidents.incidents') }}
|
||||
</span>
|
||||
<a class="btn btn-sm btn-success pull-right" href="{{ route('dashboard.incidents.add') }}">
|
||||
{{ trans('dashboard.incidents.add.title') }}
|
||||
</a>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<p class="lead">{{ trans_choice('dashboard.incidents.logged', $incidents->count(), ['count' => $incidents->count()]) }}</p>
|
||||
|
||||
<div class="striped-list">
|
||||
@foreach($incidents as $incident)
|
||||
<div class="row striped-list-item">
|
||||
<div class="col-xs-6">
|
||||
<i class="{{ $incident->icon }}"></i> <strong>{{ $incident->name }}</strong>
|
||||
@if($incident->message)
|
||||
<p><small>{{ Str::words($incident->message, 5) }}</small></p>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-xs-6 text-right">
|
||||
<a href="/dashboard/incidents/{{ $incident->id }}/edit" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
<a href="/dashboard/incidents/{{ $incident->id }}/delete" class="btn btn-danger confirm-action" data-method='DELETE'>{{ trans('forms.delete') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
39
resources/views/dashboard/incidents/templates/add.blade.php
Normal file
39
resources/views/dashboard/incidents/templates/add.blade.php
Normal file
@@ -0,0 +1,39 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-plus"></i> {{ trans('dashboard.incidents.templates.title') }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.incidents.templates.add.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form class="form-vertical" name="IncidentForm" role="form" method="POST" autocomplete="off">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label for="template-name">{{ trans('forms.incidents.templates.name') }}</label>
|
||||
<input type="text" class="form-control" name="template[name]" id="template-name" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.templates.template') }}</label>
|
||||
<div class='markdown-control'>
|
||||
<textarea name="template[template]" class="form-control" rows="5" required></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.create') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
48
resources/views/dashboard/incidents/templates/edit.blade.php
Normal file
48
resources/views/dashboard/incidents/templates/edit.blade.php
Normal file
@@ -0,0 +1,48 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-document"></i> {{ trans('dashboard.incidents.templates.title') }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.incidents.templates.edit.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@if($updatedTemplate = Session::get('updatedTemplate'))
|
||||
<div class="alert alert-{{ $updatedTemplate->isValid() ? 'success' : 'danger' }}">
|
||||
@if($updatedTemplate->isValid())
|
||||
{{ sprintf("<strong>%s</strong> %s", trans('dashboard.notifications.awesome'), trans('dashboard.incidents.templates.edit.success')) }}
|
||||
@else
|
||||
{{ sprintf("<strong>%s</strong> %s", trans('dashboard.notifications.whoops'), trans('dashboard.incidents.templates.edit.failure').' '.$updatedTemplate->getErrors()) }}
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<form class='form-vertical' name='IncidentTemplateForm' role='form' method='POST'>
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label for="template-name">{{ trans('forms.incidents.templates.name') }}</label>
|
||||
<input type="text" class="form-control" name="template[name]" id="template-name" required value="{{ $template->name }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.templates.template') }}</label>
|
||||
<div class='markdown-control'>
|
||||
<textarea name="template[template]" class="form-control" rows="5" required>{{ $template->template }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.update') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -0,0 +1,35 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-document-text"></i> {{ trans('dashboard.incidents.templates.title') }}
|
||||
</span>
|
||||
<a class="btn btn-sm btn-success pull-right" href="{{ route('dashboard.templates.add') }}">
|
||||
{{ trans('dashboard.incidents.templates.add.title') }}
|
||||
</a>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="striped-list">
|
||||
@foreach($incidentTemplates as $template)
|
||||
<div class="row striped-list-item">
|
||||
<div class="col-xs-6">
|
||||
<strong>{{ $template->name }}</strong>
|
||||
<p><small>{{ $template->template }}</small></p>
|
||||
</div>
|
||||
<div class="col-xs-6 text-right">
|
||||
<a href="/dashboard/templates/{{ $template->id }}/edit" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
<a href="/dashboard/templates/{{ $template->id }}/delete" class="btn btn-danger confirm-action" data-method='DELETE'>{{ trans('forms.delete') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
55
resources/views/dashboard/index.blade.php
Normal file
55
resources/views/dashboard/index.blade.php
Normal file
@@ -0,0 +1,55 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-speedometer"></i> {{ trans('dashboard.dashboard') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h4 class="sub-header">{{ trans('dashboard.components.component_statuses') }}</h4>
|
||||
<div class="panel panel-default">
|
||||
<div class="list-group">
|
||||
@forelse($components as $component)
|
||||
<div class="list-group-item">
|
||||
<form class='component-inline form-vertical' data-messenger="{{trans('dashboard.components.edit.success')}}">
|
||||
<div class="row striped-list-item">
|
||||
<div class="col-lg-4 col-sm-12">
|
||||
<h4>{{ $component->name }}</h4>
|
||||
</div>
|
||||
<div class="col-lg-8 col-sm-12 radio-items componet-inline-update">
|
||||
@foreach(trans('cachet.components.status') as $statusID => $status)
|
||||
<div class="radio-inline">
|
||||
<label>
|
||||
<input type="radio" name="status" value="{{ $statusID }}" {{ (int) $component->status === $statusID ? 'checked' : null }}>
|
||||
{{ $status }}
|
||||
</label>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="component_id" value="{{ $component->id }}">
|
||||
</form>
|
||||
</div>
|
||||
@empty
|
||||
<div class="list-group-item text-danger">{{ trans('dashboard.components.add.message') }}</div>
|
||||
@endforelse
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@if(Session::get('setup.done'))
|
||||
@include('partials.dashboard.welcome-modal')
|
||||
<script>
|
||||
$(function() {
|
||||
$('#welcome-modal').modal('show');
|
||||
});
|
||||
</script>
|
||||
@endif
|
||||
@stop
|
||||
61
resources/views/dashboard/metrics/add.blade.php
Normal file
61
resources/views/dashboard/metrics/add.blade.php
Normal file
@@ -0,0 +1,61 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-stats-bars"></i> {{ trans('dashboard.metrics.metrics') }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.metrics.add.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form class='form-vertical' name='MetricsForm' role='form' method='POST'>
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label for="metric-name">{{ trans('forms.metrics.name') }}</label>
|
||||
<input type="text" class="form-control" name="metric[name]" id="metric-name" required value="{{ Input::old('metric.name') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="metric-suffix">{{ trans('forms.metrics.suffix') }}</label>
|
||||
<input type="text" class="form-control" name="metric[suffix]" id="metric-suffix" required value="{{ Input::old('metric.suffix') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.metrics.description') }}</label>
|
||||
<div class='markdown-control'>
|
||||
<textarea name="metric[description]" class="form-control" rows="5">{{ Input::old('metric.description') }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.metrics.calc_type') }}</label>
|
||||
<select name="metric[calc_type]" class="form-control" required>
|
||||
<option value="0" selected>{{ trans('forms.metrics.type_sum') }}</option>
|
||||
<option value="1">{{ trans('forms.metrics.type_avg') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="metric-default_value">{{ trans('forms.metrics.default-value') }}</label>
|
||||
<input type="number" class="form-control" name="metric[default_value]" id="metric-default_value" value="{{ Input::old('metric.default_value') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.metrics.display-chart') }}</label>
|
||||
<input type="hidden" value="0" name="metric[display_chart]">
|
||||
<input type="checkbox" value="1" name="metric[display_chart]" class="form-control" checked>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class='form-group'>
|
||||
<div class='btn-group'>
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.add') }}</button>
|
||||
<a class="btn btn-default" href="{{ route('dashboard.metrics') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
64
resources/views/dashboard/metrics/edit.blade.php
Normal file
64
resources/views/dashboard/metrics/edit.blade.php
Normal file
@@ -0,0 +1,64 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon icon ion-android-alert"></i> {{ trans('dashboard.metrics.metrics') }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.metrics.edit.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form class='form-vertical' name='MetricsForm' role='form' method='POST'>
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label for="metric-name">{{ trans('forms.metrics.name') }}</label>
|
||||
<input type="text" class="form-control" name="metric[name]" id="metric-name" required value={{ $metric->name }}>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="metric-suffix">{{ trans('forms.metrics.suffix') }}</label>
|
||||
<input type="text" class="form-control" name="metric[suffix]" id="metric-suffix" required value="{{ $metric->suffix }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.metrics.description') }}</label>
|
||||
<div class='markdown-control'>
|
||||
<textarea name="metric[description]" class="form-control" rows="5">{{ $metric->description }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.metrics.calc_type') }}</label>
|
||||
<select name="metric[calc_type]" class="form-control" required>
|
||||
<option value="0" {{ $metric->calc_type === 0 ? "selected" : null }}>{{ trans('forms.metrics.type_sum') }}</option>
|
||||
<option value="1" {{ $metric->calc_type === 1 ? "selected" : null }}>{{ trans('forms.metrics.type_avg') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="metric-default_value">{{ trans('forms.metrics.default-value') }}</label>
|
||||
<input type="number" class="form-control" name="metric[default_value]" id="metric-default_value" value="{{ $metric->default_value }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.metrics.display-chart') }}</label>
|
||||
<input type="hidden" value="0" name="metric[display_chart]">
|
||||
<input type="checkbox" value="1" name="metric[display_chart]" class="form-control" {{ $metric->display_chart ? 'checked' : null }}>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<input type="hidden" name="metric[id]" value={{$metric->id}}>
|
||||
|
||||
<div class='form-group'>
|
||||
<div class='btn-group'>
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.update') }}</button>
|
||||
<a class="btn btn-default" href="{{ route('dashboard.metrics') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
39
resources/views/dashboard/metrics/index.blade.php
Normal file
39
resources/views/dashboard/metrics/index.blade.php
Normal file
@@ -0,0 +1,39 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header fixed">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-stats-bars"></i> {{ trans('dashboard.metrics.metrics') }}
|
||||
</span>
|
||||
<a class="btn btn-sm btn-success pull-right" href="{{ route('dashboard.metrics.add') }}">
|
||||
{{ trans('dashboard.metrics.add.title') }}
|
||||
</a>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<div class="content-wrapper header-fixed">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<div class="striped-list">
|
||||
@foreach($metrics as $metric)
|
||||
<div class="row striped-list-item">
|
||||
<div class="col-md-6">
|
||||
<i class="{{ $metric->icon }}"></i> <strong>{{ $metric->name }}</strong>
|
||||
@if($metric->description)
|
||||
<p><small>{{ Str::words($metric->description, 5) }}</small></p>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-md-6 text-right">
|
||||
<a href="/dashboard/metrics/{{ $metric->id }}/edit" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
<a href="/dashboard/metrics/{{ $metric->id }}/delete" class="btn btn-danger confirm-action" data-method='DELETE'>{{ trans('forms.delete') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
15
resources/views/dashboard/notifications/index.blade.php
Normal file
15
resources/views/dashboard/notifications/index.blade.php
Normal file
@@ -0,0 +1,15 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<i class="ion ion-email"></i> {{ trans('dashboard.notifications.notifications') }}
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<h3>{{ trans('dashboard.notifications.notifications') }}</h3>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
57
resources/views/dashboard/schedule/add.blade.php
Normal file
57
resources/views/dashboard/schedule/add.blade.php
Normal file
@@ -0,0 +1,57 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-android-calendar"></i> {{ trans('dashboard.schedule.schedule') }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.schedule.add.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form class='form-vertical' name='ScheduleForm' role='form' method='POST' autocomplete="off">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
@if($incidentTemplates->count() > 0)
|
||||
<div class="form-group">
|
||||
<label for="incident-template">{{ trans('forms.incidents.templates.template') }}</label>
|
||||
<select class="form-control" name="template">
|
||||
<option selected></option>
|
||||
@foreach($incidentTemplates as $tpl)
|
||||
<option value="{{ $tpl->slug }}">{{ $tpl->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
@endif
|
||||
<div class="form-group">
|
||||
<label for="incident-name">{{ trans('forms.incidents.name') }}</label>
|
||||
<input type="text" class="form-control" name="incident[name]" id="incident-name" required value="{{ Input::old('incident.name') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.message') }}</label>
|
||||
<div class='markdown-control'>
|
||||
<textarea name="incident[message]" class="form-control" rows="5" required>{{ Input::old('incident.message') }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.scheduled_at') }}</label>
|
||||
<input type="text" name="incident[scheduled_at]" class="form-control" rel="datepicker" required>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="btn-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.add') }}</button>
|
||||
<a class="btn btn-default" href="{{ route('dashboard.schedule') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
57
resources/views/dashboard/schedule/edit.blade.php
Normal file
57
resources/views/dashboard/schedule/edit.blade.php
Normal file
@@ -0,0 +1,57 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-android-calendar"></i> {{ trans('dashboard.schedule.schedule') }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.schedule.edit.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form class='form-vertical' name='ScheduleForm' role='form' method='POST' autocomplete="off">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
@if($incidentTemplates->count() > 0)
|
||||
<div class="form-group">
|
||||
<label for="incident-template">{{ trans('forms.incidents.templates.template') }}</label>
|
||||
<select class="form-control" name="template">
|
||||
<option selected></option>
|
||||
@foreach($incidentTemplates as $tpl)
|
||||
<option value="{{ $tpl->slug }}">{{ $tpl->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
@endif
|
||||
<div class="form-group">
|
||||
<label for="incident-name">{{ trans('forms.incidents.name') }}</label>
|
||||
<input type="text" class="form-control" name="incident[name]" id="incident-name" required value="{{ $schedule->name }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.message') }}</label>
|
||||
<div class='markdown-control'>
|
||||
<textarea name="incident[message]" class="form-control" rows="5" required>{{ $schedule->message }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.scheduled_at') }}</label>
|
||||
<input type="text" name="incident[scheduled_at]" class="form-control" rel="datepicker" value="{{ $schedule->scheduled_at_datetimepicker }}" required>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="btn-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.save') }}</button>
|
||||
<a class="btn btn-default" href="{{ route('dashboard.schedule') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
44
resources/views/dashboard/schedule/index.blade.php
Normal file
44
resources/views/dashboard/schedule/index.blade.php
Normal file
@@ -0,0 +1,44 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@if(isset($subMenu))
|
||||
@include('partials.dashboard.sub-sidebar')
|
||||
@endif
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header">
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-android-calendar"></i> {{ trans('dashboard.schedule.schedule') }}
|
||||
</span>
|
||||
<a class="btn btn-sm btn-success pull-right" href="{{ route('dashboard.schedule.add') }}">
|
||||
{{ trans('dashboard.schedule.add.title') }}
|
||||
</a>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.dashboard.errors')
|
||||
|
||||
<div class="striped-list">
|
||||
@foreach($schedule as $incident)
|
||||
<div class="row striped-list-item">
|
||||
<div class="col-xs-6">
|
||||
<strong>{{ $incident->name }}</strong>
|
||||
<br>
|
||||
{{ trans('dashboard.schedule.scheduled_at', ['timestamp' => $incident->scheduled_at_iso]) }}
|
||||
@if($incident->message)
|
||||
<p><small>{{ Str::words($incident->message, 5) }}</small></p>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-xs-6 text-right">
|
||||
<a href="/dashboard/schedule/{{ $incident->id }}/edit" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
<a href="/dashboard/schedule/{{ $incident->id }}/delete" class="btn btn-danger confirm-action" data-method='DELETE'>{{ trans('forms.delete') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
166
resources/views/dashboard/settings/app-setup.blade.php
Normal file
166
resources/views/dashboard/settings/app-setup.blade.php
Normal file
@@ -0,0 +1,166 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@if(isset($subMenu))
|
||||
@include('partials.dashboard.sub-sidebar')
|
||||
@endif
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header" id="application-setup">
|
||||
<span class="uppercase">
|
||||
{{ trans('dashboard.settings.app-setup.app-setup') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<form id="settings-form" name="SettingsForm" class="form-vertical" role="form" action="/dashboard/settings" method="POST" enctype="multipart/form-data">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
@include('partials.dashboard.errors')
|
||||
<fieldset>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.app-setup.site-name') }}</label>
|
||||
<input type="text" class="form-control" name="app_name" value="{{ Setting::get('app_name') }}" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.app-setup.site-url') }}</label>
|
||||
<input type="text" class="form-control" name="app_domain" value="{{ Setting::get('app_domain') }}" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.app-setup.about-this-page') }}</label>
|
||||
<div class='markdown-control'>
|
||||
<textarea name="app_about" class="form-control" rows="4">{{ Setting::get('app_about') }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.app-setup.google-analytics') }}</label>
|
||||
<input type="text" name="app_analytics" class="form-control" value="{{ Setting::get('app_analytics') }}" placeholder="UA-12345-12">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.app-setup.site-timezone') }}</label>
|
||||
<select name="app_timezone" class="form-control" required>
|
||||
<option value="">Select Timezone</option>
|
||||
@foreach($timezones as $region => $list)
|
||||
<optgroup label="{{ $region }}">
|
||||
@foreach($list as $timezone => $name)
|
||||
<option value="{{ $timezone }}" @if(Setting::get('app_timezone') == $timezone) selected @endif>
|
||||
{{ $name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</optgroup>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>
|
||||
{{ trans('forms.settings.app-setup.date-format') }}
|
||||
<a href="http://php.net/manual/en/function.date.php" target="_blank"><i class="icon ion-help-circled"></i></a>
|
||||
</label>
|
||||
<input type="text" class="form-control" name="date_format" value="{{ Setting::get('date_format') ?: 'jS F Y' }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.app-setup.site-locale') }}</label>
|
||||
<select name="app_locale" class="form-control" required>
|
||||
<option value="">Select Language</option>
|
||||
@foreach($langs as $lang => $name)
|
||||
<option value="{{ $lang }}" @if(Setting::get('app_locale') == $lang) selected @endif>
|
||||
{{ $name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.app-setup.days-of-incidents') }}</label>
|
||||
<input type="number" min="1" max="100" name="app_incident_days" class="form-control" value="{{ Setting::get('app_incident_days') ?: 7 }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.app-setup.display-graphs') }}</label>
|
||||
<input type="hidden" value="0" name="display_graphs">
|
||||
<input type="checkbox" value="1" name="display_graphs" class="form-control" {{ Setting::get('display_graphs') ? 'checked' : null }}>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('setup.show_support') }}</label>
|
||||
<input type="hidden" value="0" name="show_support">
|
||||
<input type="checkbox" value="1" name="show_support" class="form-control" {{ Setting::get('show_support') ? 'checked' : null }}>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('setup.allow_tracking') }}</label>
|
||||
<input type="hidden" value="0" name="app_track">
|
||||
<input type="checkbox" value="1" name="app_track" class="form-control" {{ Setting::get('app_track') ? 'checked' : null }}>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.app-setup.banner') }}</label>
|
||||
@if($banner = Setting::get('app_banner'))
|
||||
<div id="banner-view" class="well">
|
||||
<img src="data:{{ Setting::get('app_banner_type') }};base64,{{ $banner }}" style="max-width: 100%">
|
||||
<br><br>
|
||||
<button id="remove-banner" class="btn btn-danger">{{ trans('forms.remove') }}</button>
|
||||
</div>
|
||||
@endif
|
||||
<input type="file" name="app_banner" class="form-control">
|
||||
<span class="help-block">{{ trans('forms.settings.app-setup.banner-help') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.save') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="remove_banner" value="">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
61
resources/views/dashboard/settings/security.blade.php
Normal file
61
resources/views/dashboard/settings/security.blade.php
Normal file
@@ -0,0 +1,61 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@if(isset($subMenu))
|
||||
@include('partials.dashboard.sub-sidebar')
|
||||
@endif
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header" id="security">
|
||||
<span class="uppercase">
|
||||
{{ trans('dashboard.settings.security.security') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<form name="SettingsForm" class="form-vertical" role="form" action="/dashboard/settings" method="POST">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
@include('partials.dashboard.errors')
|
||||
<fieldset>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.security.allowed-domains') }}</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">
|
||||
{{ trans('forms.settings.security.allowed-domains-help') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.save') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if(! $unsecureUsers->isEmpty())
|
||||
<hr>
|
||||
|
||||
<div class="panel panel-danger">
|
||||
<div class="panel-heading">{{ trans('dashboard.settings.security.two-factor') }}</div>
|
||||
<div class="list-group">
|
||||
@foreach($unsecureUsers as $user)
|
||||
<div class="list-group-item">
|
||||
<strong>{{ $user->username }}</strong>
|
||||
<span class="label label-danger pull-right"><i class="ion-ios-unlocked"></i></span>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
42
resources/views/dashboard/settings/stylesheet.blade.php
Normal file
42
resources/views/dashboard/settings/stylesheet.blade.php
Normal file
@@ -0,0 +1,42 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@if(isset($subMenu))
|
||||
@include('partials.dashboard.sub-sidebar')
|
||||
@endif
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header" id="stylesheet">
|
||||
<span class="uppercase">
|
||||
{{ trans('dashboard.settings.stylesheet.stylesheet') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<form name="SettingsForm" class="form-vertical" role="form" action="/dashboard/settings" method="POST">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
@include('partials.dashboard.errors')
|
||||
<fieldset>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.stylesheet.custom-css') }}</label>
|
||||
<textarea class="form-control" name="stylesheet" rows="10">{{ Setting::get('stylesheet') }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.save') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
70
resources/views/dashboard/settings/theme.blade.php
Normal file
70
resources/views/dashboard/settings/theme.blade.php
Normal file
@@ -0,0 +1,70 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@if(isset($subMenu))
|
||||
@include('partials.dashboard.sub-sidebar')
|
||||
@endif
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header" id="theme">
|
||||
<span class="uppercase">
|
||||
{{ trans('dashboard.settings.theme.theme') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<form name="SettingsForm" class="form-vertical" role="form" action="/dashboard/settings" method="POST">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
@include('partials.dashboard.errors')
|
||||
<fieldset>
|
||||
<div class="row">
|
||||
<div class="col-xs-6">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.theme.background-color') }}</label>
|
||||
<input type="text" class="form-control color-code" name="style.background_color" value="{{ Setting::get('style_background_color') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-6">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.theme.text-color') }}</label>
|
||||
<input type="text" class="form-control color-code" name="style.text_color" value="{{ Setting::get('style_text_color') }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{--
|
||||
<div class="row">
|
||||
<div class="col-xs-4">
|
||||
<div class="form-group">
|
||||
<label>Success Warning Color</label>
|
||||
<input type="text" class="form-control color-code" name="style.success_warning_color" value="{{ Setting::get('style_success_warning_color') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<div class="form-group">
|
||||
<label>Error Warning Color</label>
|
||||
<input type="text" class="form-control color-code" name="style.error_warning_color" value="{{ Setting::get('style_error_warning_color') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<div class="form-group">
|
||||
<label>Info Warning Color</label>
|
||||
<input type="text" class="form-control color-code" name="style.style_info_warning_color" value="{{ Setting::get('style_info_warning_color') }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
--}}
|
||||
</fieldset>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.save') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
40
resources/views/dashboard/team/add.blade.php
Normal file
40
resources/views/dashboard/team/add.blade.php
Normal file
@@ -0,0 +1,40 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-person"></i> {{ trans('dashboard.team.team') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form name="UserForm" class="form-vertical" role="form" action="/dashboard/team/add" method="POST">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.username') }}</label>
|
||||
<input type="text" class="form-control" name="username" value="{{ Input::old('username') }}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.email') }}</label>
|
||||
<input type="email" class="form-control" name="email" value="{{ Input::old('email') }}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.password') }}</label>
|
||||
<input type="password" class="form-control" name="password" value="">
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.add') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
43
resources/views/dashboard/team/edit.blade.php
Normal file
43
resources/views/dashboard/team/edit.blade.php
Normal file
@@ -0,0 +1,43 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-person"></i> {{ trans('dashboard.team.member') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form name="UserForm" class="form-vertical" role="form" action="/dashboard/team/{{ $user->id }}" method="POST">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.username') }}</label>
|
||||
<input type="text" class="form-control" name="username" value="{{ $user->username }}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.email') }}</label>
|
||||
<input type="email" class="form-control" name="email" value="{{ $user->email }}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.password') }}</label>
|
||||
<input type="password" class="form-control" name="password" value="" {{ !$loggedUser->isAdmin ? "disabled": "" }}>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.update') }}</button>
|
||||
@if($loggedUser->isAdmin)
|
||||
<a class="btn btn-danger" href="/dashboard/user/{{ $user->id }}/api/regen">{{ trans('cachet.api.revoke') }}</a>
|
||||
@endif
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
37
resources/views/dashboard/team/index.blade.php
Normal file
37
resources/views/dashboard/team/index.blade.php
Normal file
@@ -0,0 +1,37 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header fixed">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon icon ion-android-alert"></i> {{ trans('dashboard.team.team') }}
|
||||
</span>
|
||||
@if($loggedUser->isAdmin)
|
||||
<a class="btn btn-sm btn-success pull-right" href="{{ route('dashboard.team.add') }}">
|
||||
{{ trans('dashboard.team.add.title') }}
|
||||
</a>
|
||||
@endif
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<div class="content-wrapper header-fixed">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<p class="lead">{{ trans('dashboard.team.description') }}</p>
|
||||
|
||||
<div class="user-grid">
|
||||
@foreach($teamMembers as $member)
|
||||
<div class="user col-sm-3 col-xs-6">
|
||||
<a href="@if($loggedUser->id == $member->id) {{ url('dashboard/user') }} @else /dashboard/team/{{ $member->id }} @endif">
|
||||
<img src="{{ $member->gravatar }}">
|
||||
</a>
|
||||
<div class="name">{{ $member->username }}</div>
|
||||
<div class="email">{{ $member->email }}</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
67
resources/views/dashboard/user/index.blade.php
Normal file
67
resources/views/dashboard/user/index.blade.php
Normal file
@@ -0,0 +1,67 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-person"></i> {{ trans('dashboard.team.profile') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form name="UserForm" class="form-vertical" role="form" action="/dashboard/user" method="POST">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.username') }}</label>
|
||||
<input type="text" class="form-control" name="username" value="{{ $loggedUser->username }}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.email') }}</label>
|
||||
<input type="email" class="form-control" name="email" value="{{ $loggedUser->email }}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.password') }}</label>
|
||||
<input type="password" class="form-control" name="password" value="">
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.api-token') }}</label>
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" name="api_key" disabled value="{{ $loggedUser->api_key }}">
|
||||
<a href="/dashboard/user/{{ $loggedUser->id }}/api/regen" class="input-group-addon btn btn-danger">{{ trans('cachet.api.regenerate') }}</a>
|
||||
</div>
|
||||
<span class="help-block">{{ trans('forms.user.api-token-help') }}</span>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label class="checkbox-inline">
|
||||
<input type="hidden" name="google2fa" value="0">
|
||||
<input type='checkbox' name="google2fa" value="1" {{ $loggedUser->hasTwoFactor ? "checked" : "" }}>
|
||||
{{ trans('forms.setup.enable_google2fa') }}
|
||||
</label>
|
||||
</div>
|
||||
@if($loggedUser->hasTwoFactor)
|
||||
<div class="form-group">
|
||||
<?php
|
||||
$google2fa_url = PragmaRX\Google2FA\Vendor\Laravel\Facade::getQRCodeGoogleUrl(
|
||||
'CachetHQ',
|
||||
$loggedUser->email,
|
||||
$loggedUser->google_2fa_secret
|
||||
);
|
||||
?>
|
||||
<img src="{{ $google2fa_url }}" class="img-responsive">
|
||||
<span class='help-block'>{{ trans('forms.user.2fa.help') }}</span>
|
||||
</div>
|
||||
@endif
|
||||
</fieldset>
|
||||
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.update') }}</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
5
resources/views/emails/welcome.blade.php
Normal file
5
resources/views/emails/welcome.blade.php
Normal file
@@ -0,0 +1,5 @@
|
||||
@extends('layout.emails')
|
||||
|
||||
@section('content')
|
||||
Welcome to CachetHQ.
|
||||
@stop
|
||||
19
resources/views/errors/401.blade.php
Normal file
19
resources/views/errors/401.blade.php
Normal file
@@ -0,0 +1,19 @@
|
||||
@extends('layout.error')
|
||||
|
||||
@section('content')
|
||||
<div class="middle-box text-center">
|
||||
<div>
|
||||
<img class="logo" height="65" src="{{ url('img/cachet-logo.svg') }}" alt="Cachet">
|
||||
</div>
|
||||
<h1>{{ trans('errors.unauthorized.code') }}</h1>
|
||||
<h3>{{ trans('errors.unauthorized.title') }}</h3>
|
||||
|
||||
<div class="error-desc">
|
||||
<p>{{ trans('errors.unauthorized.message') }}</p>
|
||||
<br>
|
||||
<p>
|
||||
<a href="/" class="btn btn-default btn-lg">{{ trans('errors.unauthorized.link') }}</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
19
resources/views/errors/404.blade.php
Normal file
19
resources/views/errors/404.blade.php
Normal file
@@ -0,0 +1,19 @@
|
||||
@extends('layout.error')
|
||||
|
||||
@section('content')
|
||||
<div class="middle-box text-center">
|
||||
<div>
|
||||
<img class="logo" height="65" src="{{ url('img/cachet-logo.svg') }}" alt="Cachet">
|
||||
</div>
|
||||
<h1>{{ trans('errors.not-found.code') }}</h1>
|
||||
<h3>{{ trans('errors.not-found.title') }}</h3>
|
||||
|
||||
<div class="error-desc">
|
||||
<p>{{ trans('errors.not-found.message') }}</p>
|
||||
<br>
|
||||
<p>
|
||||
<a href="/" class="btn btn-default btn-lg">{{ trans('errors.not-found.link') }}</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
58
resources/views/index.blade.php
Normal file
58
resources/views/index.blade.php
Normal file
@@ -0,0 +1,58 @@
|
||||
@extends('layout.master')
|
||||
|
||||
@section('content')
|
||||
@if($bannerImage = Setting::get('app_banner'))
|
||||
<div class="row app-banner">
|
||||
<div class="col-md-12 text-center">
|
||||
<?php $bannerType = Setting::get('app_banner_type') ?>
|
||||
@if($appUrl = Setting::get('app_domain'))
|
||||
<a href="{{ $appUrl }}"><img src="data:{{ $bannerType }};base64, {{ $bannerImage}}" class="banner-image img-responsive"></a>
|
||||
@else
|
||||
<img src="data:{{ $bannerType }};base64, {{ $bannerImage}}" class="banner-image img-responsive">
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="alert alert-{{ $systemStatus }}">{{ $systemMessage }}</div>
|
||||
|
||||
@if($aboutApp)
|
||||
<div class="about-app">
|
||||
<h1>{{ trans('cachet.about_this_site') }}</h1>
|
||||
<p>{{ $aboutApp }}</p>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@include('partials.components')
|
||||
|
||||
@if($displayMetrics && Setting::get('display_graphs'))
|
||||
@include('partials.metrics')
|
||||
@endif
|
||||
|
||||
@if(!$scheduledMaintenance->isEmpty())
|
||||
@include('partials.schedule')
|
||||
@endif
|
||||
|
||||
<h1>{{ trans('cachet.incidents.past') }}</h1>
|
||||
@foreach($allIncidents as $incidents)
|
||||
@include('partials.incidents', $incidents)
|
||||
@endforeach
|
||||
<hr>
|
||||
|
||||
<nav>
|
||||
<ul class="pager">
|
||||
<li class="previous">
|
||||
<a href="{{ route('status-page') }}?start_date={{ $previousDate }}">
|
||||
<span aria-hidden="true">←</span> {{ trans('cachet.incidents.previous_week') }}
|
||||
</a>
|
||||
</li>
|
||||
@if($canPageForward)
|
||||
<li class="next">
|
||||
<a href="{{ route('status-page') }}?start_date={{ $nextDate }}">
|
||||
{{ trans('cachet.incidents.next_week') }} <span aria-hidden="true">→</span>
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
</ul>
|
||||
</nav>
|
||||
@stop
|
||||
10
resources/views/layout/clean.blade.php
Normal file
10
resources/views/layout/clean.blade.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
@include('partials.dashboard.head')
|
||||
|
||||
<body class="dashboard">
|
||||
<div class="content">
|
||||
@yield('content')
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
13
resources/views/layout/dashboard.blade.php
Normal file
13
resources/views/layout/dashboard.blade.php
Normal file
@@ -0,0 +1,13 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
@include('partials.dashboard.head')
|
||||
|
||||
<body class="dashboard">
|
||||
<div class="wrapper">
|
||||
@include('partials.dashboard.sidebar')
|
||||
<div class="page-content">
|
||||
@yield('content')
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
175
resources/views/layout/emails.blade.php
Normal file
175
resources/views/layout/emails.blade.php
Normal file
@@ -0,0 +1,175 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8"> <!-- utf-8 works for most cases -->
|
||||
<meta name="viewport" content="width=device-width"> <!-- Forcing initial-scale shouldn't be necessary -->
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <!-- Use the latest (edge) version of IE rendering engine -->
|
||||
<title>CachetHQ</title> <!-- the <title> tag shows on email notifications on Android 4.4. -->
|
||||
<style type="text/css">
|
||||
|
||||
/* ensure that clients don't add any padding or spaces around the email design and allow us to style emails for the entire width of the preview pane */
|
||||
body,
|
||||
#bodyTable {
|
||||
height:100% !important;
|
||||
width:100% !important;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
/* Ensures Webkit- and Windows-based clients don't automatically resize the email text. */
|
||||
body,
|
||||
table,
|
||||
td,
|
||||
p,
|
||||
a,
|
||||
li,
|
||||
blockquote {
|
||||
-ms-text-size-adjust:100%;
|
||||
-webkit-text-size-adjust:100%;
|
||||
}
|
||||
|
||||
/* Forces Yahoo! to display emails at full width */
|
||||
.thread-item.expanded .thread-body .body,
|
||||
.msg-body {
|
||||
width: 100% !important;
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
/* Forces Hotmail to display emails at full width */
|
||||
.ReadMsgBody,
|
||||
.ExternalClass {
|
||||
width: 100%;
|
||||
background-color: #F0F3F4;
|
||||
}
|
||||
|
||||
/* Forces Hotmail to display normal line spacing. */
|
||||
.ExternalClass,
|
||||
.ExternalClass p,
|
||||
.ExternalClass span,
|
||||
.ExternalClass font,
|
||||
.ExternalClass td,
|
||||
.ExternalClass div {
|
||||
line-height:100%;
|
||||
}
|
||||
|
||||
/* Resolves webkit padding issue. */
|
||||
table {
|
||||
border-spacing:0;
|
||||
}
|
||||
|
||||
/* Resolves the Outlook 2007, 2010, and Gmail td padding issue, and removes spacing around tables that Outlook adds. */
|
||||
table,
|
||||
td {
|
||||
border-collapse:collapse;
|
||||
mso-table-lspace:0pt;
|
||||
mso-table-rspace:0pt;
|
||||
}
|
||||
|
||||
/* Corrects the way Internet Explorer renders resized images in emails. */
|
||||
img {
|
||||
-ms-interpolation-mode: bicubic;
|
||||
}
|
||||
|
||||
/* Ensures images don't have borders or text-decorations applied to them by default. */
|
||||
img,
|
||||
a img {
|
||||
border:0;
|
||||
outline:none;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
/* Styles Yahoo's auto-sensing link color and border */
|
||||
.yshortcuts a {
|
||||
border-bottom: none !important;
|
||||
}
|
||||
|
||||
/* Styles the tel URL scheme */
|
||||
a[href^=tel],
|
||||
.mobile_link,
|
||||
.mobile_link a {
|
||||
color:#222222 !important;
|
||||
text-decoration: underline !Important;
|
||||
}
|
||||
|
||||
|
||||
/* Apple Mail doesn't support max-width, so we use media queries to constrain the email container width. */
|
||||
@media only screen and (min-width: 601px) {
|
||||
.email-container {
|
||||
width: 600px !important;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" bgcolor="#F0F3F4" style="margin:0; padding:0; -webkit-text-size-adjust:none; -ms-text-size-adjust:none;">
|
||||
<table cellpadding="0" cellspacing="0" border="0" height="100%" width="100%" bgcolor="#F0F3F4" id="bodyTable" style="border-collapse: collapse;table-layout: fixed;margin:0 auto;">
|
||||
<tr>
|
||||
<td>
|
||||
<!-- Hidden Preheader Text : BEGIN -->
|
||||
<div style="display:none; visibility:hidden; opacity:0; color:transparent; height:0; width:0;line-height:0; overflow:hidden;mso-hide: all;">
|
||||
Visually hidden preheader text.
|
||||
</div>
|
||||
<!-- Hidden Preheader Text : END -->
|
||||
|
||||
<!-- Outlook and Lotus Notes don't support max-width but are always on desktop, so we can enforce a wide, fixed width view. -->
|
||||
<!-- Beginning of Outlook-specific wrapper : BEGIN -->
|
||||
<!--[if (gte mso 9)|(IE)]>
|
||||
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
<![endif]-->
|
||||
<!-- Beginning of Outlook-specific wrapper : END -->
|
||||
|
||||
<!-- Email wrapper : BEGIN -->
|
||||
<table border="0" width="100%" cellpadding="0" cellspacing="0" align="center" style="max-width: 600px;margin: auto;" class="email-container">
|
||||
<tr>
|
||||
<td>
|
||||
<table border="0" width="100%" cellpadding="0" cellspacing="0" bgcolor="#ffffff">
|
||||
<tr>
|
||||
<td bgcolor="#F0F3F4" style="padding: 40px; font-family: sans-serif; font-size: 20px; line-height: 27px; color: #666666; text-align: center;">
|
||||
<img src="{{ $message->embed('img/cachet-logo.svg') }}" width="300" alt="CachetHQ">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<!-- 2 x 2 grid : BEGIN -->
|
||||
<table border="0" width="100%" cellpadding="0" cellspacing="0" align="center">
|
||||
<tr>
|
||||
<td valign="top" width="50%" style="padding: 40px 20px; font-family: sans-serif; font-size: 18px; line-height: 24px; color: #666666;">
|
||||
@yield('content')
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<!-- 2 x 2 grid : END -->
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Full Width, Fluid Column : END -->
|
||||
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<!-- Footer : BEGIN -->
|
||||
<tr>
|
||||
<td style="text-align: center;padding: 40px 0;font-family: sans-serif; font-size: 12px; line-height: 18px;color: #888888;">
|
||||
If you no longer wish to receive these emails, you can <unsubscribe style="color: #444444; padding: 0;text-decoration: underline">unsubscribe</unsubscribe>.<br>
|
||||
Company Name • 123 Fake Street, SpringField, Oregon 97477 US • <span class="mobile_link">(123) 456-7890</span><br><br>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Footer : END -->
|
||||
|
||||
</table>
|
||||
<!-- Email wrapper : END -->
|
||||
|
||||
<!-- End of Outlook-specific wrapper : BEGIN -->
|
||||
<!--[if (gte mso 9)|(IE)]>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<![endif]-->
|
||||
<!-- End of Outlook-specific wrapper : END -->
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
44
resources/views/layout/error.blade.php
Normal file
44
resources/views/layout/error.blade.php
Normal file
@@ -0,0 +1,44 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
|
||||
<link rel="alternate" type="application/atom+xml" href="/atom" title="{{ isset($pageTitle) ?: Setting::get('app_name') }} Status - Atom Feed">
|
||||
<link rel="alternate" type="application/rss+xml" href="/rss" title="{{ isset($pageTitle) ?: Setting::get('app_name') }} Status - RSS Feed">
|
||||
|
||||
<link rel="icon" type="image/png" href="/favicon.ico">
|
||||
<link rel="shortcut icon" href="/favicon.png" type="image/x-icon">
|
||||
|
||||
<!-- Mobile friendliness -->
|
||||
<meta name="HandheldFriendly" content="True">
|
||||
<meta name="MobileOptimized" content="320">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
|
||||
<!-- Mobile IE allows us to activate ClearType technology for smoothing fonts for easy reading -->
|
||||
<meta http-equiv="cleartype" content="on">
|
||||
|
||||
<title>{{ isset($pageTitle) ?: Setting::get('app_name') }} Status</title>
|
||||
|
||||
<link href="//fonts.googleapis.com/css?family=Open+Sans:300,400,700" rel="stylesheet" type="text/css">
|
||||
<link rel="stylesheet" href="{{ elixir('dist/css/all.css') }}">
|
||||
|
||||
@include('partials.stylesheet')
|
||||
|
||||
@if($stylesheet = Setting::get('stylesheet'))
|
||||
<style type="text/css">
|
||||
{{ $stylesheet }}
|
||||
</style>
|
||||
@endif
|
||||
|
||||
@include('partials.crowdin')
|
||||
|
||||
<script src="{{ elixir('dist/js/all.js') }}"></script>
|
||||
</head>
|
||||
<body class="error-page">
|
||||
<div class="container">
|
||||
@yield('content')
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
61
resources/views/layout/master.blade.php
Normal file
61
resources/views/layout/master.blade.php
Normal file
@@ -0,0 +1,61 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
|
||||
<meta name="env" content="{{ app('env') }}">
|
||||
<meta name="token" content="{{ csrf_token() }}">
|
||||
|
||||
<link rel="alternate" type="application/atom+xml" href="/atom" title="{{ $pageTitle ?: Setting::get('app_name') }} Status - Atom Feed">
|
||||
<link rel="alternate" type="application/rss+xml" href="/rss" title="{{ $pageTitle ?: Setting::get('app_name') }} Status - RSS Feed">
|
||||
|
||||
<!-- Mobile friendliness -->
|
||||
<meta name="HandheldFriendly" content="True">
|
||||
<meta name="MobileOptimized" content="320">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
|
||||
<!-- Mobile IE allows us to activate ClearType technology for smoothing fonts for easy reading -->
|
||||
<meta http-equiv="cleartype" content="on">
|
||||
|
||||
<link rel="icon" type="image/png" href="{{ url('img/favicon.ico') }}">
|
||||
<link rel="shortcut icon" href="{{ url('img/favicon.png') }}" type="image/x-icon">
|
||||
|
||||
<link rel="apple-touch-icon" href="{{ url('img/apple-touch-icon.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="{{ url('img/apple-touch-icon-57x57.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="{{ url('img/apple-touch-icon-72x72.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="{{ url('img/apple-touch-icon-114x114.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="{{ url('img/apple-touch-icon-120x120.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="{{ url('img/apple-touch-icon-144x144.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="{{ url('img/apple-touch-icon-152x152.png') }}">
|
||||
|
||||
<title>{{ $pageTitle ?: Setting::get('app_name') }} Status</title>
|
||||
|
||||
<link href="//fonts.googleapis.com/css?family=Open+Sans:300,400,700" rel="stylesheet" type="text/css">
|
||||
<link rel="stylesheet" href="{{ elixir('dist/css/all.css') }}">
|
||||
|
||||
@include('partials.stylesheet')
|
||||
|
||||
@include('partials.crowdin')
|
||||
|
||||
@if($stylesheet = Setting::get('stylesheet'))
|
||||
<style type="text/css">
|
||||
{{ $stylesheet }}
|
||||
</style>
|
||||
@endif
|
||||
|
||||
<script type="text/javascript">
|
||||
var Global = {};
|
||||
Global.locale = '{{ Setting::get('app_locale') }}';
|
||||
</script>
|
||||
<script src="{{ elixir('dist/js/all.js') }}"></script>
|
||||
</head>
|
||||
<body class="status-page">
|
||||
<div class="container">
|
||||
@yield('content')
|
||||
</div>
|
||||
|
||||
@include('partials.footer')
|
||||
</body>
|
||||
</html>
|
||||
10
resources/views/partials/analytics.blade.php
Normal file
10
resources/views/partials/analytics.blade.php
Normal file
@@ -0,0 +1,10 @@
|
||||
@if($googleId = Setting::get('app_analytics'))
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
||||
ga('create', '{{ $googleId }}', '{{ $_SERVER['SERVER_NAME'] }}');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
@endif
|
||||
15
resources/views/partials/component.blade.php
Normal file
15
resources/views/partials/component.blade.php
Normal file
@@ -0,0 +1,15 @@
|
||||
<li class="list-group-item {{ $component->group_id ? "sub-component" : "component" }}">
|
||||
@if($component->link)
|
||||
<a href="{{ $component->link }}" target="_blank">{{ $component->name }}</a>
|
||||
@else
|
||||
{{ $component->name }}
|
||||
@endif
|
||||
|
||||
@if($component->description)
|
||||
<i class="ion-ios-help-outline help-icon" data-toggle="tooltip" data-title="{{ $component->description }}"></i>
|
||||
@endif
|
||||
|
||||
<div class="pull-right">
|
||||
<small class="text-component-{{ $component->status }}">{{ $component->humanStatus }}</small>
|
||||
</div>
|
||||
</li>
|
||||
22
resources/views/partials/components.blade.php
Normal file
22
resources/views/partials/components.blade.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<ul class="list-group components">
|
||||
@if($componentGroups->count() > 0)
|
||||
@foreach($componentGroups as $componentGroup)
|
||||
@if($componentGroup->components->count() > 0)
|
||||
<li class="list-group-item group-name"><strong>{{ $componentGroup->name }}</strong></li>
|
||||
|
||||
@foreach($componentGroup->components as $component)
|
||||
@include('partials.component', compact($component))
|
||||
@endforeach
|
||||
@endif
|
||||
@endforeach
|
||||
@if($ungroupedComponents->count() > 0)
|
||||
<li class="list-group-item break"></li>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
@if($ungroupedComponents->count() > 0)
|
||||
@foreach($ungroupedComponents as $component)
|
||||
@include('partials.component', compact($component))
|
||||
@endforeach
|
||||
@endif
|
||||
</ul>
|
||||
7
resources/views/partials/crowdin.blade.php
Normal file
7
resources/views/partials/crowdin.blade.php
Normal file
@@ -0,0 +1,7 @@
|
||||
@if(Setting::get('app_locale') === 'en-UD')
|
||||
<script type="text/javascript">
|
||||
var _jipt = [];
|
||||
_jipt.push(['project', 'cachet']);
|
||||
</script>
|
||||
<script type="text/javascript" src="//cdn.crowdin.com/jipt/jipt.js"></script>
|
||||
@endif
|
||||
15
resources/views/partials/dashboard/_error.blade.php
Normal file
15
resources/views/partials/dashboard/_error.blade.php
Normal file
@@ -0,0 +1,15 @@
|
||||
<div class="alerts">
|
||||
<div class="alert alert-{{ $level }} alert-dismissible" role="alert">
|
||||
<button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">×</span></button>
|
||||
@if(isset($title)) <h5>{!! $title !!}</h5> @endif
|
||||
@if(is_array($message))
|
||||
<ul class="list-unstyled">
|
||||
@foreach ($message as $msg)
|
||||
<li>{!! $msg !!}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
@else
|
||||
{!! $message !!}
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
15
resources/views/partials/dashboard/errors.blade.php
Normal file
15
resources/views/partials/dashboard/errors.blade.php
Normal file
@@ -0,0 +1,15 @@
|
||||
@if ($errors->any())
|
||||
@include('partials.dashboard._error', ['level' => 'danger', 'title' => Session::get('title'), 'message' => $errors->all(':message')])
|
||||
@endif
|
||||
|
||||
@if ($message = Session::get('success'))
|
||||
@include('partials.dashboard._error', ['level' => 'success', 'title' => Session::get('title'), 'message' => $message])
|
||||
@endif
|
||||
|
||||
@if ($message = Session::get('warning'))
|
||||
@include('partials.dashboard._error', ['level' => 'warning', 'title' => Session::get('title'), 'message' => $message])
|
||||
@endif
|
||||
|
||||
@if ($message = Session::get('info'))
|
||||
@include('partials.dashboard._error', ['level' => 'info', 'title' => Session::get('title'), 'message' => $message])
|
||||
@endif
|
||||
34
resources/views/partials/dashboard/head.blade.php
Normal file
34
resources/views/partials/dashboard/head.blade.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<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="apple-mobile-web-app-capable" content="yes">
|
||||
|
||||
<meta name="env" content="{{ app('env') }}">
|
||||
<meta name="token" content="{{ csrf_token() }}">
|
||||
|
||||
<link rel="icon" type="image/png" href="/img/favicon.ico">
|
||||
<link rel="shortcut icon" href="/img/favicon.png" type="image/x-icon">
|
||||
|
||||
<link rel="apple-touch-icon" href="/img/apple-touch-icon.png">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/img/apple-touch-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/img/apple-touch-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="/img/apple-touch-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/img/apple-touch-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/img/apple-touch-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/img/apple-touch-icon-152x152.png">
|
||||
|
||||
<title>{{ isset($pageTitle) ? $pageTitle : Setting::get('app_name') }} | Cachet</title>
|
||||
|
||||
<link href="//fonts.googleapis.com/css?family=Open+Sans:300,400,700" rel="stylesheet" type="text/css">
|
||||
<link rel="stylesheet" href="{{ elixir('dist/css/all.css') }}">
|
||||
|
||||
@include('partials.crowdin')
|
||||
|
||||
<script type="text/javascript">
|
||||
var Global = {};
|
||||
Global.locale = '{{ Setting::get('app_locale') }}';
|
||||
</script>
|
||||
<script src="{{ elixir('dist/js/all.js') }}"></script>
|
||||
|
||||
</head>
|
||||
99
resources/views/partials/dashboard/sidebar.blade.php
Normal file
99
resources/views/partials/dashboard/sidebar.blade.php
Normal file
@@ -0,0 +1,99 @@
|
||||
@if($loggedUser)
|
||||
<div class="sidebar">
|
||||
<div class="sidebar-inner">
|
||||
<div class="profile">
|
||||
<div class="dropdown">
|
||||
<a class="dropdown-toggle" href="#" id="profile-dropdown" data-toggle="dropdown" aria-expanded="true">
|
||||
<span class="avatar"><img src="{{ $loggedUser->gravatar }}"></span> <span class="username">{{ $loggedUser->username }}</span>
|
||||
<span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu" role="menu" aria-labelledby="profile-dropdown">
|
||||
<li role="presentation">
|
||||
<a role="menuitem" tabindex="-1" href="{{ url('dashboard/user') }}">{{ trans('dashboard.team.profile') }}</a>
|
||||
</li>
|
||||
<li role="presentation">
|
||||
<a role="menuitem" tabindex="-1" href="{{ route('logout') }}">{{ trans('dashboard.logout') }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
<div class="quick-add-incident">
|
||||
<a class="btn btn-block btn-default uppercase" href="{{ route('dashboard.incidents.add') }}">
|
||||
<i class="icon ion-android-checkmark-circle visible-sm"></i>
|
||||
<span class="hidden-sm">{{ trans('dashboard.incidents.add.title') }}</span>
|
||||
</a>
|
||||
</div>
|
||||
<ul>
|
||||
<li {{ set_active('dashboard') }}>
|
||||
<a href="{{ route('dashboard') }}">
|
||||
<i class="icon ion-speedometer"></i>
|
||||
<span>{{ trans('dashboard.dashboard') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li {{ set_active('dashboard/incidents*') }} {{ set_active('dashboard/schedule*') }}>
|
||||
<a href="{{ route('dashboard.incidents') }}">
|
||||
<i class="icon ion-android-alert"></i>
|
||||
<span>{{ trans('dashboard.incidents.incidents') }}</span>
|
||||
<span class="label label-info">{{ $incidentCount }}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li {{ set_active('dashboard/templates*') }}>
|
||||
<a href="{{ route('dashboard.templates') }}">
|
||||
<i class="icons ion-document-text"></i>
|
||||
<span>{{ trans('dashboard.incidents.incident-templates') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li {{ set_active('dashboard/components*') }}>
|
||||
<a href="{{ route('dashboard.components') }}">
|
||||
<i class="icons ion-outlet"></i>
|
||||
<span>{{ trans('dashboard.components.components') }}</span>
|
||||
<span class="label label-info">{{ $componentCount }}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li {{ set_active('dashboard/team*') }}>
|
||||
<a href="{{ route('dashboard.team') }}">
|
||||
<i class="icons ion-ios-people"></i>
|
||||
<span>{{ trans('dashboard.team.team') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li {{ set_active('dashboard/metrics*') }}>
|
||||
<a href="{{ route('dashboard.metrics') }}">
|
||||
<i class="icon ion-stats-bars"></i>
|
||||
<span>{{ trans('dashboard.metrics.metrics') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{{-- <li {{ set_active('dashboard/notifications') }}>
|
||||
<a href="{{ route('dashboard.notifications') }}">
|
||||
<i class="ion ion-email"></i> {{ trans('cachet.dashboard.notifications') }}
|
||||
</a>
|
||||
</li> --}}
|
||||
<li {{ set_active('dashboard/settings*') }}>
|
||||
<a href="{{ route('dashboard.settings.setup') }}">
|
||||
<i class="icon ion-gear-a"></i>
|
||||
<span>
|
||||
{{ trans('dashboard.settings.settings') }}
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="bottom-menu-sidebar">
|
||||
<div class="text-center">
|
||||
<img width="166" src="/img/cachet-sidebar-logo.png" alt="Cachet">
|
||||
</div>
|
||||
<br>
|
||||
<ul>
|
||||
<li data-toggle="tooltip" data-placement="top" title="{{ trans('dashboard.help') }}">
|
||||
<a href="https://docs.cachethq.io" target="_blank"><i class="icon ion-help"></i></a>
|
||||
</li>
|
||||
<li data-toggle="tooltip" data-placement="top" title="{{ trans('dashboard.status_page') }}">
|
||||
<a href="{{ route('status-page') }}"><i class="icon ion-monitor"></i></a>
|
||||
</li>
|
||||
<li data-toggle="tooltip" data-placement="top" title="{{ trans('dashboard.logout') }}">
|
||||
<a href="{{ route('logout') }}"><i class="icon ion-log-out"></i></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
11
resources/views/partials/dashboard/sub-sidebar.blade.php
Normal file
11
resources/views/partials/dashboard/sub-sidebar.blade.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<div class="sub-sidebar">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<h3>{{ $subTitle }}</h3>
|
||||
<ul class="menu">
|
||||
@foreach($subMenu as $key => $item)
|
||||
<li><a href="{{ $item['url'] }}" class="{{ $item['active'] ? 'active' : null }}"><i class="{{ $item['icon'] }}"></i> {{ $item['title'] }}</a></li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
67
resources/views/partials/dashboard/welcome-modal.blade.php
Normal file
67
resources/views/partials/dashboard/welcome-modal.blade.php
Normal file
@@ -0,0 +1,67 @@
|
||||
<!-- First time welcome Modal -->
|
||||
<div class="modal fade" id="welcome-modal" tabindex="-1" role="dialog">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<header>
|
||||
{{ trans('dashboard.welcome.welcome') }}
|
||||
</header>
|
||||
|
||||
<p>
|
||||
{{ trans('dashboard.welcome.message') }}
|
||||
</p>
|
||||
|
||||
<div class="get-started">
|
||||
<div class="row">
|
||||
<div class="col-md-4 animated fadeInDown">
|
||||
<a href="{{ route('dashboard.components.add') }}">
|
||||
<i class="icon ion-outlet"></i>
|
||||
{{ trans('dashboard.welcome.steps.component') }}
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-md-4 animated fadeInDown two">
|
||||
<a href="{{ route('dashboard.incidents.add') }}">
|
||||
<i class="icon ion-android-alert"></i>
|
||||
{{ trans('dashboard.welcome.steps.incident') }}
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-md-4 animated fadeInDown three">
|
||||
<a href="{{ route('dashboard.settings.theme') }}">
|
||||
<i class="icon ion-ios-paper-outline"></i>
|
||||
{{ trans('dashboard.welcome.steps.customize') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-4 animated fadeInDown">
|
||||
<a href="{{ route('dashboard.team.add') }}">
|
||||
<i class="icons ion-ios-people"></i>
|
||||
{{ trans('dashboard.welcome.steps.team') }}
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-md-4 animated fadeInDown two">
|
||||
<a href="{{ route('dashboard.user') }}">
|
||||
<i class="icon ion-code-working"></i>
|
||||
{{ trans('dashboard.welcome.steps.api') }}
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-md-4 animated fadeInDown three">
|
||||
<a href="{{ route('dashboard.user') }}">
|
||||
<i class="icon ion-unlocked"></i>
|
||||
{{ trans('dashboard.welcome.steps.two-factor') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a href="#" data-dismiss="modal" class="btn btn-success go-dashboard">
|
||||
{{ trans('dashboard.welcome.close') }}
|
||||
<i class="fa fa-angle-double-right"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
15
resources/views/partials/footer.blade.php
Normal file
15
resources/views/partials/footer.blade.php
Normal file
@@ -0,0 +1,15 @@
|
||||
<footer class="footer">
|
||||
@if(Setting::get('show_support'))
|
||||
<p>{{ trans('cachet.powered_by', ['app' => Setting::get('app_name')]) }}</p>
|
||||
@endif
|
||||
<p><a href="/rss"><i class="ion-social-rss"></i> {{ trans('cachet.rss-feed') }}</a> - <a href="/atom"><i class="ion-social-rss"></i> {{ trans('cachet.atom-feed') }}</a></p>
|
||||
<p>
|
||||
<a href="{{ route('dashboard') }}">{{ trans('dashboard.dashboard') }}</a>
|
||||
@if($loggedUser)
|
||||
–
|
||||
<a href="{{ route('logout') }}">{{ trans('dashboard.logout') }}</a>
|
||||
@endif
|
||||
</p>
|
||||
</footer>
|
||||
|
||||
@include("partials.analytics")
|
||||
37
resources/views/partials/incidents.blade.php
Normal file
37
resources/views/partials/incidents.blade.php
Normal file
@@ -0,0 +1,37 @@
|
||||
<h4>{{ $date }}</h4>
|
||||
<div class="timeline">
|
||||
<div class="content-wrapper">
|
||||
@forelse($incidents as $incidentID => $incident)
|
||||
<div class="moment {{ $incidentID === 0 ? 'first' : null }}">
|
||||
<div class="row event clearfix">
|
||||
<div class="col-sm-1">
|
||||
<div class="status-icon status-{{ $incident->status }}" data-toggle="tooltip" title="{{ $incident->humanStatus }}" data-placement="left">
|
||||
<i class="{{ $incident->icon }}"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-10 col-xs-offset-2 col-sm-11 col-sm-offset-0">
|
||||
<div class="panel panel-message">
|
||||
<div class="panel-heading">
|
||||
<strong>{{ $incident->name }}</strong>{{ $incident->isScheduled ? trans("cachet.incidents.scheduled_at", ["timestamp" => $incident->scheduled_at->diffForHumans()]) : null }}
|
||||
<br>
|
||||
<small class="date">
|
||||
<abbr class="timeago" data-toggle="tooltip" data-placement="right" title="{{ $incident->created_at_formatted }}" data-timeago="{{ $incident->created_at_iso }}">
|
||||
</abbr>
|
||||
</small>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<p>{!! $incident->formattedMessage !!}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@empty
|
||||
<div class="panel panel-message">
|
||||
<div class="panel-body">
|
||||
<p>{{ trans('cachet.incidents.none') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
@endforelse
|
||||
</div>
|
||||
</div>
|
||||
68
resources/views/partials/metrics.blade.php
Normal file
68
resources/views/partials/metrics.blade.php
Normal file
@@ -0,0 +1,68 @@
|
||||
@if($metrics->count() > 0)
|
||||
<ul class="list-group metrics">
|
||||
@foreach($metrics as $metric)
|
||||
<?php
|
||||
$points = range(0, 10);
|
||||
foreach($points as $hour) {
|
||||
$points[$hour] = $metric->getValues($hour);
|
||||
}
|
||||
$points = array_reverse($points);
|
||||
?>
|
||||
<li class="list-group-item metric">
|
||||
<div class="row">
|
||||
<div class="col-xs-10">
|
||||
<h4>
|
||||
{{ $metric->name }}
|
||||
@if($metric->description)
|
||||
<i class="ion ion-ios-help-outline" data-toggle="tooltip" data-title="{{ $metric->description }}"></i>
|
||||
@endif
|
||||
</h4>
|
||||
</div>
|
||||
<div class="col-xs-2 text-right">
|
||||
<small>{{ trans('cachet.metrics.filter.hourly') }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div>
|
||||
<canvas id="metric-{{ $metric->id }}" height="150" width="600"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
(function () {
|
||||
var hourList = [], date = new Date();
|
||||
|
||||
for (var i = 10; i >= 1; i--) {
|
||||
hourList.push(moment(date).subtract(i, 'hours').seconds(0).format('HH:ss'));
|
||||
}
|
||||
|
||||
hourList.push(moment(date).seconds(0).format('HH:ss'));
|
||||
|
||||
var data = {
|
||||
showTooltips: false,
|
||||
labels: hourList,
|
||||
datasets: [{
|
||||
fillColor: "rgba(220,220,220,0.2)",
|
||||
strokeColor: "rgba(220,220,220,1)",
|
||||
pointColor: "rgba(220,220,220,1)",
|
||||
pointStrokeColor: "#fff",
|
||||
pointHighlightFill: "#fff",
|
||||
pointHighlightStroke: "rgba(220,220,220,1)",
|
||||
data: [{{ implode(',', $points) }}]
|
||||
}]
|
||||
};
|
||||
|
||||
var ctx = document.getElementById("metric-{{ $metric->id }}").getContext("2d");
|
||||
new Chart(ctx).Line(data, {
|
||||
scaleShowVerticalLines: true,
|
||||
pointDot: false,
|
||||
responsive: true
|
||||
});
|
||||
}());
|
||||
</script>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
@endif
|
||||
19
resources/views/partials/schedule.blade.php
Normal file
19
resources/views/partials/schedule.blade.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<h1>{{ trans('cachet.incidents.scheduled') }}</h1>
|
||||
|
||||
<div class="timeline">
|
||||
@foreach($scheduledMaintenance as $schedule)
|
||||
<div class="panel panel-message">
|
||||
<div class="panel-heading">
|
||||
<strong>{{ $schedule->name }}</strong>
|
||||
<br>
|
||||
<small class="date">
|
||||
<abbr class="timeago" data-toggle="tooltip" data-placement="right" title="{{ $schedule->scheduled_at_formatted }}" data-timeago="{{ $schedule->scheduled_at_iso }}">
|
||||
</abbr>
|
||||
</small>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<p>{{ $schedule->formattedMessage }}</p>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
10
resources/views/partials/stylesheet.blade.php
Normal file
10
resources/views/partials/stylesheet.blade.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<style type="text/css">
|
||||
body.status-page {
|
||||
@if($styleBackgroundColor = Setting::get('style_background_color'))
|
||||
background-color: {{ $styleBackgroundColor }};
|
||||
@endif
|
||||
@if($styleTextColor = Setting::get('style_text_color'))
|
||||
color: {{ $styleTextColor }};
|
||||
@endif
|
||||
}
|
||||
</style>
|
||||
144
resources/views/setup.blade.php
Normal file
144
resources/views/setup.blade.php
Normal file
@@ -0,0 +1,144 @@
|
||||
@extends('layout.clean')
|
||||
|
||||
@section('content')
|
||||
<div class="setup-page">
|
||||
<div class="text-center">
|
||||
<img class="logo" height="50" src="{{ url('img/cachet-logo.svg') }}" alt="Cachet">
|
||||
<h4>{{ trans('setup.title') }}</h4>
|
||||
<br>
|
||||
</div>
|
||||
<div class="col-xs-12 col-xs-offset-0 col-sm-8 col-sm-offset-2">
|
||||
<div class="steps">
|
||||
<div class="step active">
|
||||
{{ trans('setup.status_page_setup') }}
|
||||
<span></span>
|
||||
</div>
|
||||
<div class="step">
|
||||
{{ trans("setup.admin_account") }}
|
||||
<span></span>
|
||||
</div>
|
||||
<div class="step">
|
||||
{{ trans("setup.complete_setup") }}
|
||||
<span></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
<form class="form-horizontal" name="SetupForm" method="POST" id="setup-form" role="form">
|
||||
<div class="step block-1 show">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label class="sr-only">{{ trans('forms.site_name') }}</label>
|
||||
<input type="text" name="settings[app_name]" class="form-control" placeholder="{{ trans('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">{{ trans('forms.site_domain') }}</label>
|
||||
<input type="text" name="settings[app_domain]" class="form-control" placeholder="{{ trans('forms.setup.site_domain') }}" value="{{ Input::old('settings.app_domain', url()) }}" required >
|
||||
@if($errors->has('settings.app_domain'))
|
||||
<span class="text-danger">{{ $errors->first('settings.app_domain') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="sr-only">{{ trans('forms.site_timezone') }}</label>
|
||||
<select name="settings[app_timezone]" class="form-control" required>
|
||||
<option value="">Select Timezone</option>
|
||||
@foreach($timezones as $region => $list)
|
||||
<optgroup label="{{ $region }}">
|
||||
@foreach($list as $timezone => $name)
|
||||
<option value="{{ $timezone }}" @if(Input::old('settins.app_timezone') == $timezone) selected @endif>
|
||||
{{ $name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</optgroup>
|
||||
@endforeach
|
||||
</select>
|
||||
@if($errors->has('settings.app_timezone'))
|
||||
<span class="text-danger">{{ $errors->first('settings.app_timezone') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="sr-only">{{ trans('forms.site_locale') }}</label>
|
||||
<select name="settings[app_locale]" class="form-control" required>
|
||||
<option value="">Select Language</option>
|
||||
@foreach($langs as $lang => $name)
|
||||
<option value="{{ $lang }}" @if(Input::old('settins.app_locale') == $timezone) selected @endif>
|
||||
{{ $name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@if($errors->has('settings.app_locale'))
|
||||
<span class="text-danger">{{ $errors->first('settings.app_locale') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>
|
||||
<input type="checkbox" name="settings[show_support]" value="1" checked >
|
||||
{!! trans("setup.show_support") !!}
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>
|
||||
<input type="checkbox" name="settings[app_track]" value="1" checked >
|
||||
{{ trans("setup.allow_tracking") }}
|
||||
</label>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group text-center">
|
||||
<span class="wizard-next btn btn-success" data-current-block="1" data-next-block="2" data-loading-text="<i class='icon ion-load-c'></i>">
|
||||
{{ trans('pagination.next') }}
|
||||
</span>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="step block-2 hidden">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label class="sr-only">{{ trans("forms.username") }}</label>
|
||||
<input type="text" name="user[username]" class="form-control" placeholder="{{ trans('forms.setup.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">{{ trans("forms.email") }}</label>
|
||||
<input type="text" name="user[email]" class="form-control" placeholder="{{ trans('forms.setup.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">{{ trans("forms.password") }}</label>
|
||||
<input type="password" name="user[password]" class="form-control" placeholder="{{ trans('forms.setup.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 text-center">
|
||||
<input type="hidden" name="settings[app_incident_days]" value="7" >
|
||||
<span class="wizard-next btn btn-info" data-current-block="2" data-next-block="1">
|
||||
{{ trans('pagination.previous') }}
|
||||
</span>
|
||||
<span class="wizard-next btn btn-success" data-current-block="2" data-next-block="3" data-loading-text="<i class='icon ion-load-c'></i>">
|
||||
{{ trans("setup.complete_setup") }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="step block-3 hidden">
|
||||
<div class="setup-success">
|
||||
<i class="ion-checkmark-circled"></i>
|
||||
<h3>
|
||||
{{ trans("setup.completed") }}
|
||||
</h3>
|
||||
<a href="{{ route('dashboard') }}" class="btn btn-default">
|
||||
<span>{{ trans("setup.finish_setup") }}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
Reference in New Issue
Block a user