Cachet is now a Laravel 5 app
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user