Laravel 10 + Cachet Core
This commit is contained in:
@@ -1,56 +0,0 @@
|
||||
@extends('layout.clean')
|
||||
|
||||
@section('bodyClass', 'login')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="form-bg">
|
||||
<div class="logo">
|
||||
<img src="{{ asset('/img/cachet-logo@2x.png') }}" class="img-responsive">
|
||||
</div>
|
||||
|
||||
<form method="POST" action="{{ cachet_route('auth.login', [], 'post') }}" accept-charset="UTF-8" autocomplete="off" name="{{ str_random(10) }}">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
|
||||
@if(Session::has('error'))
|
||||
<div class="alert alert-danger">
|
||||
<p>{{ Session::get('error') }}</p>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="form-group">
|
||||
<label class="sr-only">{{ trans('forms.login.login') }}</label>
|
||||
<input autocomplete="off" class="form-control login-input" placeholder="{{ trans('forms.login.login') }}" required="required" name="username" type="text" value="{{ Binput::old('username') }}" autofocus>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="sr-only">{{ trans('forms.login.password') }}</label>
|
||||
<input autocomplete="off" class="form-control login-input" placeholder="{{ trans('forms.login.password') }}" required="required" name="password" type="password" value="">
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<input type="hidden" name="remember_me" value="0">
|
||||
<label>
|
||||
<input name="remember_me" type="checkbox" value="1"> {{ trans('forms.login.remember_me') }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="col-xs-2">
|
||||
@if(!config('setting.always_authenticate', false))
|
||||
<a class="btn btn-default btn-lg btn-trans" href="{{ cachet_route('status-page') }}">
|
||||
<span class="text-center">
|
||||
<i class="ion ion-home"></i>
|
||||
</span>
|
||||
</a>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-xs-9 col-xs-push-1">
|
||||
<button type="submit" class="btn btn-success btn-lg btn-block btn-trans">{{ trans('dashboard.login.login') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,43 +0,0 @@
|
||||
@extends('layout.clean')
|
||||
|
||||
@section('bodyClass', 'login')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="form-bg">
|
||||
<div class="logo">
|
||||
<img src="{{ asset('/img/cachet-logo@2x.png') }}" class="img-responsive">
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="panel">
|
||||
<div class="panel-body">
|
||||
<div class="text-center">
|
||||
<h3>{{ trans('dashboard.login.two-factor') }}</h3>
|
||||
</div>
|
||||
<br>
|
||||
<form method="POST" action="{{ cachet_route('auth.two-factor', [], 'post') }}" accept-charset="UTF-8">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
|
||||
<fieldset>
|
||||
@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>
|
||||
<input type="text" name="code" class="form-control" placeholder="{{ trans('forms.login.2fauth') }}" required autofocus>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-info btn-lg btn-block btn-trans">{{ trans('dashboard.login.login') }}</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,78 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="ion ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-ios-browsers-outline"></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.errors')
|
||||
<form name="CreateComponentForm" class="form-vertical" role="form" action="{{ cachet_route('dashboard.components.create', [], 'post') }}" 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 placeholder="{{ trans('forms.components.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 }}">{{ $status }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.description') }}</label>
|
||||
<textarea name="component[description]" class="form-control" rows="5" placeholder="{{ trans('forms.components.description') }}"></textarea>
|
||||
</div>
|
||||
@if($groups->count() > 0)
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.group') }}</label>
|
||||
<select name="component[group_id]" class="form-control">
|
||||
<option value="0" selected></option>
|
||||
@foreach($groups as $group)
|
||||
<option value="{{ $group->id }}">{{ $group->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
@else
|
||||
<input type="hidden" name="component[group_id]" value="0">
|
||||
@endif
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.link') }}</label>
|
||||
<input type="text" name="component[link]" class="form-control" placeholder="{{ trans('forms.components.link') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.tags') }}</label>
|
||||
<input name="component[tags]" class="form-control" placeholder="{{ trans('forms.components.tags') }}">
|
||||
<span class="help-block">{{ trans('forms.components.tags-help') }}</span>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="hidden" value="0" name="component[enabled]">
|
||||
<input type="checkbox" value="1" name="component[enabled]" checked>
|
||||
{{ trans('forms.components.enabled') }}
|
||||
</label>
|
||||
</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="{{ cachet_route('dashboard.components') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,79 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="ion ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-ios-browsers-outline"></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.errors')
|
||||
<form name="EditComponentForm" class="form-vertical" role="form" action="{{ cachet_route('dashboard.components.edit', [$component->id], 'post') }}" 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 }}" placeholder="{{ trans('forms.components.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" placeholder="{{ trans('forms.components.description') }}">{{ $component->description }}</textarea>
|
||||
</div>
|
||||
@if($groups->count() > 0)
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.group') }}</label>
|
||||
<select name="component[group_id]" class="form-control">
|
||||
<option value="0" {{ $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>
|
||||
@else
|
||||
<input type="hidden" name="component[group_id]" value="0">
|
||||
@endif
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.link') }}</label>
|
||||
<input type="text" name="component[link]" class="form-control" value="{{ $component->link }}" placeholder="{{ trans('forms.components.link') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.tags') }}</label>
|
||||
<input name="component[tags]" class="form-control" value="{{ $component->tags->implode(', ') }}" placeholder="{{ trans('forms.components.tags') }}">
|
||||
<span class="help-block">{{ trans('forms.components.tags-help') }}</span>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="hidden" value="0" name="component[enabled]">
|
||||
<input type="checkbox" value="1" name="component[enabled]" {{ $component->enabled ? 'checked' : null }}>
|
||||
{{ trans('forms.components.enabled') }}
|
||||
</label>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<input type="hidden" name="component[user_id]" value="{{ $component->agent_id || $currentUser->id }}">
|
||||
<input type="hidden" name="component[order]" value="{{ $component->order ?: 0 }}">
|
||||
|
||||
<div class="btn-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.save') }}</button>
|
||||
<a class="btn btn-default" href="{{ cachet_route('dashboard.components') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,49 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="ion ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="ion 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.errors')
|
||||
<form name="CreateComponentGroupForm" class="form-vertical" role="form" action="{{ cachet_route('dashboard.components.groups.create', [], 'post') }}" method="POST">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.groups.name') }}</label>
|
||||
<input type="text" class="form-control" name="name" id="group-name" required placeholder="{{ trans('forms.components.groups.name') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.groups.collapsing') }}</label>
|
||||
<select name="collapsed" class="form-control" required>
|
||||
<option value="0" selected>{{ trans('forms.components.groups.visible') }}</option>
|
||||
<option value="1">{{ trans('forms.components.groups.collapsed') }}</option>
|
||||
<option value="2">{{ trans('forms.components.groups.collapsed_incident') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.groups.visibility') }}</label>
|
||||
<select name="visible" class="form-control" required>
|
||||
<option value="0">{{ trans('forms.components.groups.visibility_authenticated') }}</option>
|
||||
<option value="1" selected>{{ trans('forms.components.groups.visibility_public') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="btn-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.add') }}</button>
|
||||
<a class="btn btn-default" href="{{ cachet_route('dashboard.components.groups') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,49 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="ion ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="ion 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.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>{{ trans('forms.components.groups.name') }}</label>
|
||||
<input type="text" class="form-control" name="name" id="group-name" value="{{ $group->name }}" required placeholder="{{ trans('forms.components.groups.name') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.groups.collapsing') }}</label>
|
||||
<select name="collapsed" class="form-control" required>
|
||||
<option value="0" {{ $group->collapsed === 0 ? "selected" : null }}>{{ trans('forms.components.groups.visible') }}</option>
|
||||
<option value="1" {{ $group->collapsed === 1 ? "selected" : null }}>{{ trans('forms.components.groups.collapsed') }}</option>
|
||||
<option value="2" {{ $group->collapsed === 2 ? "selected" : null }}>{{ trans('forms.components.groups.collapsed_incident') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.groups.visibility') }}</label>
|
||||
<select name="visible" class="form-control" required>
|
||||
<option value="0" {{ $group->visible === 0 ? "selected" : null }}>{{ trans('forms.components.groups.visibility_authenticated') }}</option>
|
||||
<option value="1" {{ $group->visible === 1 ? "selected" : null }}>{{ trans('forms.components.groups.visibility_public') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="btn-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.save') }}</button>
|
||||
<a class="btn btn-default" href="{{ cachet_route('dashboard.components.groups') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,42 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar')
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header">
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-ios-keypad"></i> {{ trans_choice('dashboard.components.groups.groups', 2) }}
|
||||
</span>
|
||||
<a class="btn btn-md btn-success pull-right" href="{{ cachet_route('dashboard.components.groups.create') }}">
|
||||
{{ trans('dashboard.components.groups.add.title') }}
|
||||
</a>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
@include('partials.errors')
|
||||
<div class="row">
|
||||
<div class="col-sm-12 striped-list" data-orderable-list="/dashboard/api/components/groups/order">
|
||||
@forelse($groups as $group)
|
||||
<div class="row striped-list-item" data-orderable-id="{{ $group->id }}">
|
||||
<div class="col-xs-6">
|
||||
<h4>
|
||||
@if($groups->count() > 1)
|
||||
<span class="drag-handle"><i class="ion ion-drag"></i></span>
|
||||
@endif
|
||||
{{ $group->name }}
|
||||
<span class="label label-info">{{ $group->components->count() }}</span>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="col-xs-6 text-right">
|
||||
<a href="{{ cachet_route('dashboard.components.groups.edit', [$group->id]) }}" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
<a href="{{ cachet_route('dashboard.components.groups.delete', [$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.groups.no_components') }}</div>
|
||||
@endforelse
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,47 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar')
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header">
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-ios-browsers-outline"></i> {{ trans('dashboard.components.components') }}
|
||||
</span>
|
||||
<a class="btn btn-md btn-success pull-right" href="{{ cachet_route('dashboard.components.create') }}">
|
||||
{{ trans('dashboard.components.add.title') }}
|
||||
</a>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
@include('partials.errors')
|
||||
<div class="row">
|
||||
<div class="col-sm-12 striped-list" data-orderable-list="/dashboard/api/components/order">
|
||||
@forelse($components as $component)
|
||||
<div class="row striped-list-item {{ !$component->enabled ? 'bg-warning' : null }}" data-orderable-id="{{ $component->id }}">
|
||||
<div class="col-xs-6">
|
||||
<h4>
|
||||
@if($components->count() > 1)
|
||||
<span class="drag-handle"><i class="ion ion-drag"></i></span>
|
||||
@endif
|
||||
{!! $component->name !!} <small>{{ $component->human_status }}</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="{{ cachet_route('dashboard.components.edit', [$component->id]) }}" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
<a href="{{ cachet_route('dashboard.components.delete', [$component->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
|
||||
@@ -1,153 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="ion ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-ios-information-outline"></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">
|
||||
@if(!$notificationsEnabled)
|
||||
<div class="alert alert-info" role="alert">
|
||||
{{ trans('forms.incidents.notify_disabled') }}
|
||||
</div>
|
||||
@endif
|
||||
@include('partials.errors')
|
||||
<report-incident inline-template>
|
||||
<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="template">{{ trans('forms.incidents.templates.template') }}</label>
|
||||
<select class="form-control" name="template" v-model="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="name" id="incident-name" required value="{{ Binput::old('name') }}" placeholder="{{ trans('forms.incidents.name') }}" v-model="name">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="incident-name">{{ trans('forms.incidents.status') }}</label><br>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="status" value="1" v-model="status">
|
||||
<i class="ion ion-flag"></i>
|
||||
{{ trans('cachet.incidents.status')[1] }}
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="status" value="2" v-model="status">
|
||||
<i class="ion ion-alert-circled"></i>
|
||||
{{ trans('cachet.incidents.status')[2] }}
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="status" value="3" v-model="status">
|
||||
<i class="ion ion-eye"></i>
|
||||
{{ trans('cachet.incidents.status')[3] }}
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="status" value="4" v-model="status">
|
||||
<i class="ion ion-checkmark"></i>
|
||||
{{ trans('cachet.incidents.status')[4] }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="incident-name">{{ trans('forms.incidents.visibility') }}</label>
|
||||
<select name="visible" class="form-control" v-model="visible">
|
||||
<option value="1" selected>{{ trans('forms.incidents.public') }}</option>
|
||||
<option value="0">{{ trans('forms.incidents.logged_in_only') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="incident-name">{{ trans('forms.incidents.stick_status') }}</label>
|
||||
<select name="stickied" class="form-control" v-model="sticky">
|
||||
<option value="1">{{ trans('forms.incidents.stickied') }}</option>
|
||||
<option value="0" selected>{{ trans('forms.incidents.not_stickied') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
@if(!$componentsInGroups->isEmpty() || !$componentsOutGroups->isEmpty())
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.component') }}</label> <small class="text-muted">{{ trans('forms.optional') }}</small>
|
||||
<select name="component_id" class="form-control" v-model="component.id">
|
||||
<option value="" selected></option>
|
||||
@foreach($componentsInGroups as $group)
|
||||
<optgroup label="{{ $group->name }}">
|
||||
@foreach($group->components as $component)
|
||||
<option value="{{ $component->id }}">{!! $component->name !!}</option>
|
||||
@endforeach
|
||||
</optgroup>
|
||||
@endforeach
|
||||
@foreach($componentsOutGroups as $component)
|
||||
<option value="{{ $component->id }}">{!! $component->name !!}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
@endif
|
||||
<div class="form-group" id="component-status" v-if="component.id">
|
||||
<label>{{ trans('forms.incidents.component_status') }}</label>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<div class="radio-items">
|
||||
@foreach(trans('cachet.components.status') as $statusID => $status)
|
||||
<div class="radio-inline">
|
||||
<label>
|
||||
<input type="radio" name="component_status" value="{{ $statusID }}" v-model="component.status">
|
||||
{{ $status }}
|
||||
</label>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.message') }}</label>
|
||||
<div class="markdown-control">
|
||||
<textarea name="message" class="form-control autosize" rows="5" required v-model="message">{{ Binput::old('message') }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.occurred_at') }}</label> <small class="text-muted">{{ trans('forms.optional') }}</small>
|
||||
<input type="text" name="occurred_at" class="form-control flatpickr-time" data-date-format="Y-m-d H:i" placeholder="{{ trans('forms.optional') }}">
|
||||
</div>
|
||||
@if($notificationsEnabled)
|
||||
<input type="hidden" name="notify" value="0">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" name="notify" value="1" checked="{{ Binput::old('notify', 'checked') }}">
|
||||
{{ trans('forms.incidents.notify_subscribers') }}
|
||||
</label>
|
||||
</div>
|
||||
@endif
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.seo.title') }}</label> <small class="text-muted">{{ trans('forms.optional') }}</small>
|
||||
<input type="text" name="seo[title]" class="form-control" placeholder="{{ trans('forms.optional') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.seo.description') }}</label> <small class="text-muted">{{ trans('forms.optional') }}</small>
|
||||
<input type="text" name="seo[description]" class="form-control" placeholder="{{ trans('forms.optional') }}">
|
||||
</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="{{ cachet_route('dashboard.incidents') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</report-incident>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,134 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="ion ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-ios-information-outline"></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">
|
||||
@if(!$notificationsEnabled)
|
||||
<div class="alert alert-info" role="alert">
|
||||
{{ trans('forms.incidents.notify_disabled') }}
|
||||
</div>
|
||||
@endif
|
||||
@include('partials.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="name" id="incident-name" required value="{{$incident->name}}" placeholder="{{ trans('forms.incidents.name') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="incident-name">{{ trans('forms.incidents.status') }}</label><br>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="status" value="1" {{ ($incident->status == 1) ? "checked='checked'" : "" }}>
|
||||
<i class="ion ion-flag"></i>
|
||||
{{ trans('cachet.incidents.status')[1] }}
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="status" value="2" {{ ($incident->status == 2) ? "checked='checked'" : "" }}>
|
||||
<i class="ion ion-alert-circled"></i>
|
||||
{{ trans('cachet.incidents.status')[2] }}
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="status" value="3" {{ ($incident->status == 3) ? "checked='checked'" : "" }}>
|
||||
<i class="ion ion-eye"></i>
|
||||
{{ trans('cachet.incidents.status')[3] }}
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="status" value="4" {{ ($incident->status == 4) ? "checked='checked'" : "" }}>
|
||||
<i class="ion ion-checkmark"></i>
|
||||
{{ trans('cachet.incidents.status')[4] }}
|
||||
</label>
|
||||
</div>
|
||||
@if($incident->component)
|
||||
<div class="form-group hidden" id="component-status">
|
||||
<input type="hidden" name="component_id" value="{{ $incident->component->id }}">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<div class="radio-items">
|
||||
@foreach(trans('cachet.components.status') as $statusID => $status)
|
||||
<div class="radio-inline">
|
||||
<label>
|
||||
<input type="radio" name="component_status" value="{{ $statusID }}">
|
||||
{{ $status }}
|
||||
</label>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div class="form-group">
|
||||
<label for="incident-visibility">{{ trans('forms.incidents.visibility') }}</label>
|
||||
<select name="visible" id="incident-visibility" class="form-control">
|
||||
<option value="1" {{ $incident->visible === 1 ? 'selected' : null }}>{{ trans('forms.incidents.public') }}</option>
|
||||
<option value="0" {{ $incident->visible === 0 ? 'selected' : null }}>{{ trans('forms.incidents.logged_in_only') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="incident-stick">{{ trans('forms.incidents.stick_status') }}</label>
|
||||
<select name="stickied" id="incident-stick" class="form-control">
|
||||
<option value="1" {{ $incident->stickied ? 'selected' : null }}>{{ trans('forms.incidents.stickied') }}</option>
|
||||
<option value="0" {{ !$incident->stickied ? 'selected' : null }}>{{ trans('forms.incidents.not_stickied') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
@if($incident->component)
|
||||
<div class="form-group" id="component-status">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><strong>{{ $incident->component->name }}</strong></div>
|
||||
<div class="panel-body">
|
||||
<div class="radio-items">
|
||||
@foreach(trans('cachet.components.status') as $statusID => $status)
|
||||
<div class="radio-inline">
|
||||
<label>
|
||||
<input type="radio" name="component_status" value="{{ $statusID }}" {{ $incident->component->status == $statusID ? "checked='checked'" : "" }}>
|
||||
{{ $status }}
|
||||
</label>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.message') }}</label>
|
||||
<div class="markdown-control">
|
||||
<textarea name="message" class="form-control autosize" rows="5" required>{{ $incident->message }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.occurred_at') }}</label> <small class="text-muted">{{ trans('forms.optional') }}</small>
|
||||
<input type="text" name="occurred_at" class="form-control flatpickr-time" data-date-format="Y-m-d H:i" value="{{ $incident->occurred_at_datetimepicker }}" placeholder="{{ trans('forms.optional') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.seo.title') }}</label> <small class="text-muted">{{ trans('forms.optional') }}</small>
|
||||
<input type="text" name="seo[title]" class="form-control" value="{{ array_get($incident->meta, 'seo.title', '') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.seo.description') }}</label> <small class="text-muted">{{ trans('forms.optional') }}</small>
|
||||
<input type="text" name="seo[description]" class="form-control" value="{{ array_get($incident->meta, 'seo.description', '') }}">
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<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="{{ cachet_route('dashboard.incidents') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,45 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar')
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header">
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-ios-information-outline"></i> {{ trans('dashboard.incidents.incidents') }}
|
||||
</span>
|
||||
<a class="btn btn-md btn-success pull-right" href="{{ cachet_route('dashboard.incidents.create') }}">
|
||||
{{ trans('dashboard.incidents.add.title') }}
|
||||
</a>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.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> <span class="badge badge-info">{{ trans_choice('dashboard.incidents.updates.count', $incident->updates()->count()) }}</span>
|
||||
@if($incident->message)
|
||||
<p>{{ Str::words($incident->message, 5) }}</p>
|
||||
@endif
|
||||
@if ($incident->user)
|
||||
<p><small>— {{ trans('dashboard.incidents.reported_by', ['timestamp' => $incident->created_at_diff, 'user' => $incident->user->username]) }}</small></p>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-xs-6 text-right">
|
||||
<a href="{{ cachet_route('dashboard.incidents.updates', [$incident->id]) }}" class="btn btn-info">{{ trans('forms.manage_updates') }}</a>
|
||||
<a href="{{ cachet_route('dashboard.incidents.edit', [$incident->id]) }}" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
<a href="{{ cachet_route('dashboard.incidents.delete', [$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
|
||||
@@ -1,119 +0,0 @@
|
||||
@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-ios-information-outline"></i> {{ trans('dashboard.incidents.incidents') }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.incidents.updates.title', ['incident' => $incident->name]) }}</small> > <small>{{ trans('dashboard.incidents.updates.add.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@if(!$notificationsEnabled)
|
||||
<div class="alert alert-info" role="alert">
|
||||
{{ trans('forms.incidents.notify_disabled') }}
|
||||
</div>
|
||||
@endif
|
||||
@include('partials.errors')
|
||||
<update-incident inline-template>
|
||||
<form class="form-vertical" name="IncidentUpdateForm" 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="template">{{ trans('forms.incidents.templates.template') }}</label>
|
||||
<select class="form-control" name="template" v-model="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.status') }}</label><br>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="status" value="1" required {{ (int) Binput::old('status') === 1 ? 'checked' : null }}>
|
||||
<i class="icon ion-flag"></i>
|
||||
{{ trans('cachet.incidents.status')[1] }}
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="status" value="2" required {{ (int) Binput::old('status') === 2 ? 'checked' : null }}>
|
||||
<i class="icon ion-alert-circled"></i>
|
||||
{{ trans('cachet.incidents.status')[2] }}
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="status" value="3" required {{ (int) Binput::old('status') === 3 ? 'checked' : null }}>
|
||||
<i class="icon ion-eye"></i>
|
||||
{{ trans('cachet.incidents.status')[3] }}
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="status" value="4" required {{ (int) Binput::old('status') === 4 ? 'checked' : null }}>
|
||||
<i class="icon ion-checkmark"></i>
|
||||
{{ trans('cachet.incidents.status')[4] }}
|
||||
</label>
|
||||
</div>
|
||||
@if($incident->component)
|
||||
<div class="form-group hidden" id="component-status">
|
||||
<input type="hidden" name="component_id" value="{{ $incident->component->id }}">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<div class="radio-items">
|
||||
@foreach(trans('cachet.components.status') as $statusID => $status)
|
||||
<div class="radio-inline">
|
||||
<label>
|
||||
<input type="radio" name="component_status" value="{{ $statusID }}">
|
||||
{{ $status }}
|
||||
</label>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@if($incident->component)
|
||||
<div class="form-group" id="component-status">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><strong>{{ $incident->component->name }}</strong></div>
|
||||
<div class="panel-body">
|
||||
<div class="radio-items">
|
||||
@foreach(trans('cachet.components.status') as $statusID => $status)
|
||||
<div class="radio-inline">
|
||||
<label>
|
||||
<input type="radio" name="component_status" value="{{ $statusID }}" {{ $incident->component->status == $statusID ? "checked='checked'" : "" }}>
|
||||
{{ $status }}
|
||||
</label>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div class="form-group">
|
||||
<label for="message">{{ trans('forms.incidents.message') }}</label>
|
||||
<div class="markdown-control">
|
||||
<textarea name="message" class="form-control autosize" rows="5" required>{{ Binput::old('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="{{ cachet_route('dashboard.incidents') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</update-incident>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,85 +0,0 @@
|
||||
@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-ios-information-outline"></i> {{ trans('dashboard.incidents.incidents') }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.incidents.updates.title', ['incident' => $incident->name]) }}</small> > <small>{{ trans('dashboard.incidents.updates.edit.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@if(!$notificationsEnabled)
|
||||
<div class="alert alert-info" role="alert">
|
||||
{{ trans('forms.incidents.notify_disabled') }}
|
||||
</div>
|
||||
@endif
|
||||
@include('partials.errors')
|
||||
<form class="form-vertical" name="IncidentUpdateForm" 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.status') }}</label><br>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="status" value="1" required {{ ($update->status == 1) ? "checked='checked'" : "" }}>
|
||||
<i class="icon ion-flag"></i>
|
||||
{{ trans('cachet.incidents.status')[1] }}
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="status" value="2" required {{ ($update->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="status" value="3" required {{ ($update->status == 3) ? "checked='checked'" : "" }}>
|
||||
<i class="icon ion-eye"></i>
|
||||
{{ trans('cachet.incidents.status')[3] }}
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="status" value="4" required {{ ($update->status == 4) ? "checked='checked'" : "" }}>
|
||||
<i class="icon ion-checkmark"></i>
|
||||
{{ trans('cachet.incidents.status')[4] }}
|
||||
</label>
|
||||
</div>
|
||||
@if($incident->component)
|
||||
<div class="form-group" id="component-status">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><strong>{{ $incident->component->name }}</strong></div>
|
||||
<div class="panel-body">
|
||||
<div class="radio-items">
|
||||
@foreach(trans('cachet.components.status') as $statusID => $status)
|
||||
<div class="radio-inline">
|
||||
<label>
|
||||
<input type="radio" name="component_status" value="{{ $statusID }}" {{ $incident->component->status == $statusID ? "checked='checked'" : "" }}>
|
||||
{{ $status }}
|
||||
</label>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.message') }}</label>
|
||||
<div class="markdown-control">
|
||||
<textarea name="message" class="form-control autosize" rows="5" required>{{ $update->message }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<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="{{ cachet_route('dashboard.incidents') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,42 +0,0 @@
|
||||
@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-ios-information-outline"></i> {{ trans('dashboard.incidents.incidents') }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.incidents.updates.title', ['incident' => $incident->name]) }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header">
|
||||
<a class="btn btn-md btn-success pull-right" href="{{ cachet_route('dashboard.incidents.updates.create', [$incident->id]) }}">
|
||||
{{ trans('dashboard.incidents.updates.add.title') }}
|
||||
</a>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.errors')
|
||||
|
||||
<div class="striped-list">
|
||||
@foreach($incident->updates as $update)
|
||||
<div class="row striped-list-item">
|
||||
<div class="col-xs-6">
|
||||
<strong>{{ Str::words($update->message, 8) }}</strong>
|
||||
<p><small>{{ trans('cachet.incidents.posted', ['timestamp' => $update->created_at_diff, 'username' => $update->user->username]) }}</small></p>
|
||||
</div>
|
||||
<div class="col-xs-6 text-right">
|
||||
<a href="{{ cachet_route('dashboard.incidents.updates.edit', ['incident' => $incident->id, 'incident_update' => $update]) }}" class="btn btn-default">
|
||||
{{ trans('forms.edit') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,95 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<dashboard inline-template :welcome-user="{{ $welcomeUser ? 'true' : 'false' }}" :user="{{ $currentUser }}">
|
||||
<div>
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="ion ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-speedometer"></i> {{ trans('dashboard.dashboard') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="alert alert-info hidden" id="update-alert">{!! trans('cachet.system.update') !!}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="section-components no-select">
|
||||
@if(!$componentGroups->isEmpty() || !$ungroupedComponents->isEmpty())
|
||||
@include('dashboard.partials.components')
|
||||
@else
|
||||
<ul class="list-group components">
|
||||
<li class="list-group-item">
|
||||
<a href="{{ cachet_route('dashboard.components.create') }}">{{ trans('dashboard.components.add.message') }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-lg-6">
|
||||
<div class="stats-widget">
|
||||
<div class="stats-top">
|
||||
<span class="stats-value"><a href="{{ cachet_route('dashboard.incidents') }}">{{ $incidents->reduce(function($carry, $incident) { return $carry + count($incident); }) }}</a></span>
|
||||
<span class="stats-label">{{ trans('dashboard.incidents.incidents') }}</span>
|
||||
</div>
|
||||
<div class="stats-chart">
|
||||
<div class="sparkline" data-type="line" data-resize="true" data-height="80" data-width="100%" data-line-width="2" data-min-spot-color="#e65100" data-max-spot-color="#ffb300" data-line-color="#3498db" data-spot-color="#00838f" data-fill-color="#3498db" data-highlight-line-color="#00acc1" data-highlight-spot-color="#ff8a65" data-spot-radius="false" data-data="[{{ $incidents->map(function ($incident) { return count($incident); } )->implode(',') }}]"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 col-lg-6">
|
||||
<div class="stats-widget">
|
||||
<div class="stats-top">
|
||||
<span class="stats-value"><a href="{{ cachet_route('dashboard.subscribers') }}">{{ $subscribers->reduce(function($carry, $subscribers) { return $carry + count($subscribers); }) }}</a></span>
|
||||
<span class="stats-label">{{ trans('dashboard.subscribers.subscribers') }}</span>
|
||||
</div>
|
||||
<div class="stats-chart">
|
||||
<div class="sparkline" data-type="line" data-resize="true" data-height="80" data-width="100%" data-line-width="2" data-min-spot-color="#e65100" data-max-spot-color="#ffb300" data-line-color="#3498db" data-spot-color="#00838f" data-fill-color="#3498db" data-highlight-line-color="#00acc1" data-highlight-spot-color="#ff8a65" data-spot-radius="false" data-data="[{{ $subscribers->map(function ($subscriber) { return count($subscriber); } )->implode(',') }}]"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-lg-6">
|
||||
<div class="stats-widget">
|
||||
<div class="stats-top">
|
||||
<span class="stats-value">{{ trans('dashboard.widgets.support') }}</span>
|
||||
<span class="stats-label">{!! trans('dashboard.widgets.support_subtitle') !!}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if($entries)
|
||||
<div class="col-sm-12 col-lg-6">
|
||||
<div class="stats-widget">
|
||||
<div class='stats-top'>
|
||||
<span class='stats-value'>{{ trans('dashboard.widgets.news') }}</span>
|
||||
<span class='stats-label'>{{ trans('dashboard.widgets.news_subtitle') }}</span>
|
||||
</div>
|
||||
<div class='stats-body'>
|
||||
<div class="list-group">
|
||||
@foreach($entries as $entry)
|
||||
<a class="list-group-item" href="{{ $entry->link }}" target="_blank">{{ $entry->title }}, <small>{{ $entry->pubDate }}</small> <span class="badge"><i class="ion-android-open"></i></span></a>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
@includeWhen($welcomeUser, 'dashboard.partials.welcome-modal')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,80 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="ion ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="ion 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.errors')
|
||||
<report-schedule inline-template>
|
||||
<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.schedules.templates.template') }}</label>
|
||||
<select class="form-control" name="template" v-model="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.schedules.name') }}</label>
|
||||
<input type="text" class="form-control" name="name" id="incident-name" required value="{{ Binput::old('name') }}" placeholder="{{ trans('forms.schedules.name') }}" v-model="name">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.schedules.status') }}</label><br>
|
||||
@foreach(trans('cachet.schedules.status') as $id => $status)
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="status" value="{{ $id }}" {{ $id === 0 ? 'checked="checked"' : null }}>
|
||||
{{ $status }}
|
||||
</label>
|
||||
@endforeach
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.schedules.message') }}</label>
|
||||
<div class="markdown-control">
|
||||
<textarea name="message" class="form-control autosize" rows="5" required placeholder="{{ trans('forms.schedules.message') }}" v-model="message">{{ Binput::old('message') }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.schedules.scheduled_at') }}</label>
|
||||
<input type="text" name="scheduled_at" class="form-control flatpickr-time" data-date-format="Y-m-d H:i" required placeholder="{{ trans('forms.schedules.scheduled_at') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.schedules.completed_at') }}</label>
|
||||
<input type="text" name="completed_at" class="form-control flatpickr-time" data-date-format="Y-m-d H:i" placeholder="{{ trans('forms.schedules.completed_at') }}">
|
||||
</div>
|
||||
</fieldset>
|
||||
@if($notificationsEnabled)
|
||||
<input type="hidden" name="notify" value="0">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" name="notify" value="1" checked="{{ Binput::old('notify', 'checked') }}">
|
||||
{{ trans('forms.incidents.notify_subscribers') }}
|
||||
</label>
|
||||
</div>
|
||||
@endif
|
||||
<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="{{ cachet_route('dashboard.schedule') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</report-schedule>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,71 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="ion ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="ion 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.errors')
|
||||
<form class="form-vertical" name="ScheduleForm" role="form" method='POST' autocomplete="off">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<input type="hidden" name="visible" value="1">
|
||||
<fieldset>
|
||||
@if($incidentTemplates->count() > 0)
|
||||
<div class="form-group">
|
||||
<label for="incident-template">{{ trans('forms.schedules.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.schedules.name') }}</label>
|
||||
<input type="text" class="form-control" name="name" id="incident-name" required value="{{ $schedule->name }}" placeholder="{{ trans('forms.schedules.name') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.schedules.status') }}</label><br>
|
||||
@foreach(trans('cachet.schedules.status') as $id => $status)
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="status" value="{{ $id }}" {{ $id === $schedule->status ? 'checked="checked"' : null }}>
|
||||
{{ $status }}
|
||||
</label>
|
||||
@endforeach
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.schedules.message') }}</label>
|
||||
<div class='markdown-control'>
|
||||
<textarea name="message" class="form-control autosize" rows="5" required>{{ $schedule->message }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.schedules.scheduled_at') }}</label>
|
||||
<input type="text" name="scheduled_at" class="form-control flatpickr-time" data-date-format="Y-m-d H:i" value="{{ $schedule->scheduled_at_datetimepicker }}" required placeholder="{{ trans('forms.schedules.scheduled_at') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.schedules.completed_at') }}</label>
|
||||
<input type="text" name="completed_at" class="form-control flatpickr-time" data-date-format="Y-m-d H:i" value="{{ $schedule->completed_at_datetimepicker }}" placeholder="{{ trans('forms.schedules.completed_at') }}">
|
||||
</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="{{ cachet_route('dashboard.schedule') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,43 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar')
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header">
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-android-calendar"></i> {{ trans('dashboard.schedule.schedule') }}
|
||||
</span>
|
||||
<a class="btn btn-md btn-success pull-right" href="{{ cachet_route('dashboard.schedule.create') }}">
|
||||
{{ trans('dashboard.schedule.add.title') }}
|
||||
</a>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.errors')
|
||||
<p class="lead">{!! trans_choice('dashboard.schedule.logged', $schedule->count(), ['count' => $schedule->count()]) !!}</p>
|
||||
|
||||
<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_formatted]) }}
|
||||
@if($incident->message)
|
||||
<p><small>{{ Str::words($incident->message, 5) }}</small></p>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-xs-6 text-right">
|
||||
<a href="{{ cachet_route('dashboard.schedule.edit', [$incident->id]) }}" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
<a href="{{ cachet_route('dashboard.schedule.delete', [$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
|
||||
@@ -1,88 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="ion ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-ios-pie-outline"></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.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="{{ Binput::old('metric.name') }}" placeholder="{{ trans('forms.metrics.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="{{ Binput::old('metric.suffix') }}" placeholder="{{ trans('forms.metrics.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" placeholder="{{ trans('forms.metrics.description') }}">{{ Binput::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>{{ trans('forms.metrics.default_view') }}</label>
|
||||
<select name="metric[default_view]" class="form-control" required>
|
||||
<option value="0">{{ trans('cachet.metrics.filter.last_hour') }}</option>
|
||||
<option value="1" selected>{{ trans('cachet.metrics.filter.hourly') }}</option>
|
||||
<option value="2">{{ trans('cachet.metrics.filter.weekly') }}</option>
|
||||
<option value="3">{{ trans('cachet.metrics.filter.monthly') }}</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="{{ Binput::old('metric.default_value') }}" placeholder="{{ trans('forms.metrics.default-value') }}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="metric-places">{{ trans('forms.metrics.places') }}</label>
|
||||
<input type="number" min="0" max="4" class="form-control" name="metric[places]" id="metric-places" required value="{{ Binput::old('metric.places') }}" placeholder="{{ trans('forms.metrics.places') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="metric-places">{{ trans('forms.metrics.threshold') }}</label>
|
||||
<input type="number" min="0" max="10" name="metric[threshold]" value="{{ Binput::old('metric.threshold') }}" class="form-control" required>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="hidden" value="0" name="metric[display_chart]">
|
||||
<input type="checkbox" value="1" name="metric[display_chart]" checked>
|
||||
{{ trans('forms.metrics.display-chart') }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.metrics.visibility') }}</label>
|
||||
<select name="metric[visible]" class="form-control" required>
|
||||
<option value="0">{{ trans('forms.metrics.visibility_authenticated') }}</option>
|
||||
<option value="1">{{ trans('forms.metrics.visibility_public') }}</option>
|
||||
<option value="2">{{ trans('forms.metrics.visibility_hidden') }}</option>
|
||||
</select>
|
||||
</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="{{ cachet_route('dashboard.metrics') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,91 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="ion ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-ios-pie-outline"></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.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="name" id="metric-name" required value="{{ $metric->name }}" placeholder="{{ trans('forms.metrics.name') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="metric-suffix">{{ trans('forms.metrics.suffix') }}</label>
|
||||
<input type="text" class="form-control" name="suffix" id="metric-suffix" required value="{{ $metric->suffix }}" placeholder="{{ trans('forms.metrics.suffix') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.metrics.description') }}</label>
|
||||
<div class='markdown-control'>
|
||||
<textarea name="description" class="form-control" rows="5" placeholder="{{ trans('forms.metrics.description') }}">{{ $metric->description }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.metrics.calc_type') }}</label>
|
||||
<select name="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>{{ trans('forms.metrics.default_view') }}</label>
|
||||
<select name="default_view" class="form-control" required>
|
||||
<option value="0" {{ $metric->default_view === 0 ? "selected" : null }}>{{ trans('cachet.metrics.filter.last_hour') }}</option>
|
||||
<option value="1" {{ $metric->default_view === 1 ? "selected" : null }}>{{ trans('cachet.metrics.filter.hourly') }}</option>
|
||||
<option value="2" {{ $metric->default_view === 2 ? "selected" : null }}>{{ trans('cachet.metrics.filter.weekly') }}</option>
|
||||
<option value="3" {{ $metric->default_view === 3 ? "selected" : null }}>{{ trans('cachet.metrics.filter.monthly') }}</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="default_value" id="metric-default_value" value="{{ $metric->default_value }}" placeholder="{{ trans('forms.metrics.default-value') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="metric-places">{{ trans('forms.metrics.places') }}</label>
|
||||
<input type="number" min="0" max="4" class="form-control" name="places" id="metric-places" required value="{{ $metric->places }}" placeholder="{{ trans('forms.metrics.places') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="metric-threshold">{{ trans('forms.metrics.threshold') }}</label>
|
||||
<input type="number" min="0" max="10" name="threshold" id="metric-threshold" value="{{ Binput::old('metric.threshold', $metric->threshold) }}" class="form-control" required>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="hidden" value="0" name="display_chart">
|
||||
<input type="checkbox" value="1" name="display_chart" {{ $metric->display_chart ? 'checked' : null }}>
|
||||
{{ trans('forms.metrics.display-chart') }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.metrics.visibility') }}</label>
|
||||
<select name="visible" class="form-control" required>
|
||||
<option value="0" {{ $metric->visible === 0 ? 'selected' : null }}>{{ trans('forms.metrics.visibility_authenticated') }}</option>
|
||||
<option value="1" {{ $metric->visible === 1 ? 'selected' : null }}>{{ trans('forms.metrics.visibility_public') }}</option>
|
||||
<option value="2" {{ $metric->visible === 2 ? 'selected' : null }}>{{ trans('forms.metrics.visibility_hidden') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<input type="hidden" name="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="{{ cachet_route('dashboard.metrics') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,41 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@includeWhen(isset($sub_menu), 'dashboard.partials.sub-sidebar')
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header">
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-ios-pie-outline"></i> {{ trans('dashboard.metrics.metrics') }}
|
||||
</span>
|
||||
<a class="btn btn-md btn-success pull-right" href="{{ cachet_route('dashboard.metrics.create') }}">
|
||||
{{ trans('dashboard.metrics.add.title') }}
|
||||
</a>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.errors')
|
||||
<div class="striped-list">
|
||||
@forelse($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="{{ cachet_route('dashboard.metrics.edit', [$metric->id]) }}" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
<a href="{{ cachet_route('dashboard.metrics.delete', [$metric->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.metrics.add.message') }}</div>
|
||||
@endforelse
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,20 +0,0 @@
|
||||
<li class="list-group-item {{ $component->group_id ? "sub-component" : "component" }}">
|
||||
<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-md-3 col-sm-12">
|
||||
<h5 class="{{ $component->status_color }}">{!! $component->name !!}</h5>
|
||||
</div>
|
||||
<div class="col-lg-8 col-md-9 col-sm-12 radio-items component-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>
|
||||
</li>
|
||||
@@ -1,30 +0,0 @@
|
||||
@if($componentGroups->count() > 0)
|
||||
@foreach($componentGroups as $componentGroup)
|
||||
@if($componentGroup->enabled_components->count() > 0)
|
||||
<ul class="list-group components">
|
||||
<li class="list-group-item group-name">
|
||||
<i class="{{ $componentGroup->collapse_class }} group-toggle"></i>
|
||||
<span class="component-group-name">{{ $componentGroup->name }}</span>
|
||||
</li>
|
||||
<div class="group-items {{ $componentGroup->is_collapsed ? "hide" : null }}">
|
||||
@foreach($componentGroup->enabled_components()->get() as $component)
|
||||
@include('dashboard.partials.component', compact($component))
|
||||
@endforeach
|
||||
</div>
|
||||
</ul>
|
||||
@endif
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
@if($ungroupedComponents->count() > 0)
|
||||
<ul class="list-group components">
|
||||
@if($componentGroups->count() > 0)
|
||||
<li class="list-group-item group-name">
|
||||
<span class="component-group-other">{{ trans('cachet.components.group.other') }}</span>
|
||||
</li>
|
||||
@endif
|
||||
@foreach($ungroupedComponents as $component)
|
||||
@include('dashboard.partials.component', compact($component))
|
||||
@endforeach
|
||||
</ul>
|
||||
@endif
|
||||
@@ -1,97 +0,0 @@
|
||||
<div class="sidebar">
|
||||
<div class="sidebar-inner">
|
||||
<div class="profile">
|
||||
<a href="{{ cachet_route('dashboard.user') }}">
|
||||
<h4 class="username"><i class='ion ion-person'></i> {{ $currentUser->username }}</h4>
|
||||
</a>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
<div class="quick-add-incident">
|
||||
<a class="btn btn-block btn-info" href="{{ cachet_route('dashboard.incidents.create') }}">
|
||||
<i class="ion 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="{{ cachet_route('dashboard') }}">
|
||||
<i class="ion ion-speedometer"></i>
|
||||
<span>{{ trans('dashboard.dashboard') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li {!! set_active('dashboard/incidents*') !!}>
|
||||
<a href="{{ cachet_route('dashboard.incidents') }}">
|
||||
<i class="ion ion-ios-information-outline"></i>
|
||||
<span>{{ trans('dashboard.incidents.incidents') }}</span>
|
||||
<span class="label label-info">{{ $incidentCount }}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li {!! set_active('dashboard/templates*') !!}>
|
||||
<a href="{{ cachet_route('dashboard.templates') }}">
|
||||
<i class="ion ion-ios-paper-outline"></i>
|
||||
<span>{{ trans('dashboard.incidents.incident-templates') }}</span>
|
||||
<span class="label label-info">{{ $incidentTemplateCount }}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li {!! set_active('dashboard/schedule*') !!}>
|
||||
<a href="{{ cachet_route('dashboard.schedule') }}">
|
||||
<i class="ion ion-android-calendar"></i>
|
||||
<span>{{ trans('dashboard.schedule.schedule') }}</span>
|
||||
<span class="label label-info">{{ $scheduleCount }}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li {!! set_active('dashboard/components*') !!}>
|
||||
<a href="{{ cachet_route('dashboard.components') }}">
|
||||
<i class="ion ion-ios-browsers-outline"></i>
|
||||
<span>{{ trans('dashboard.components.components') }}</span>
|
||||
<span class="label label-info">{{ $componentCount }}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li {!! set_active('dashboard/metrics*') !!}>
|
||||
<a href="{{ cachet_route('dashboard.metrics') }}">
|
||||
<i class="ion ion-ios-pie-outline"></i>
|
||||
<span>{{ trans('dashboard.metrics.metrics') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li {!! set_active('dashboard/subscribers*') !!}>
|
||||
<a href="{{ cachet_route('dashboard.subscribers') }}">
|
||||
<i class="ion ion-ios-email-outline"></i>
|
||||
<span>{{ trans('dashboard.subscribers.subscribers') }}</span>
|
||||
<span class="label label-info">{{ $subscriberCount }}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li {!! set_active('dashboard/team*') !!}>
|
||||
<a href="{{ cachet_route('dashboard.team') }}">
|
||||
<i class="ion ion-ios-people-outline"></i>
|
||||
<span>{{ trans('dashboard.team.team') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li {!! set_active('dashboard/settings*') !!}>
|
||||
<a href="{{ cachet_route('dashboard.settings.setup') }}">
|
||||
<i class="ion ion-ios-gear-outline"></i>
|
||||
<span>
|
||||
{{ trans('dashboard.settings.settings') }}
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="hidden-lg hidden-md">
|
||||
<a href="{{ cachet_route('auth.logout') }}">
|
||||
<i class="ion ion-log-out"></i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="bottom-menu-sidebar">
|
||||
<ul>
|
||||
<li data-toggle="tooltip" data-placement="top" title="{{ trans('dashboard.help') }}">
|
||||
<a href="https://docs.cachethq.io" target="_blank"><i class="ion ion-help"></i></a>
|
||||
</li>
|
||||
<li data-toggle="tooltip" data-placement="top" title="{{ trans('dashboard.status_page') }}">
|
||||
<a href="{{ cachet_route('status-page') }}"><i class="ion ion-monitor"></i></a>
|
||||
</li>
|
||||
<li data-toggle="tooltip" data-placement="top" title="{{ trans('dashboard.logout') }}">
|
||||
<a href="{{ cachet_route('auth.logout') }}"><i class="ion ion-log-out"></i></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,12 +0,0 @@
|
||||
<div class="sub-sidebar">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="ion ion-navicon"></i>
|
||||
</div>
|
||||
<h3>{{ $subTitle }}</h3>
|
||||
<hr>
|
||||
<ul class="menu">
|
||||
@foreach($subMenu as $key => $item)
|
||||
<li><a href="{{ $item['url'] }}" class="{{ $item['active'] ? 'active' : null }}"><i class="ion {{ $item['icon'] }}"></i> {{ $item['title'] }}</a></li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@@ -1,66 +0,0 @@
|
||||
<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', ['username' => $currentUser->username]) }}
|
||||
</header>
|
||||
|
||||
<p>
|
||||
{{ trans('dashboard.welcome.message') }}
|
||||
</p>
|
||||
|
||||
<div class="get-started">
|
||||
<div class="row">
|
||||
<div class="col-md-4 animated fadeInDown">
|
||||
<a href="{{ cachet_route('dashboard.components.create') }}">
|
||||
<i class="ion ion-ios-browsers"></i>
|
||||
{{ trans('dashboard.welcome.steps.component') }}
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-md-4 animated fadeInDown two">
|
||||
<a href="{{ cachet_route('dashboard.incidents.create') }}">
|
||||
<i class="ion ion-android-alert"></i>
|
||||
{{ trans('dashboard.welcome.steps.incident') }}
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-md-4 animated fadeInDown three">
|
||||
<a href="{{ cachet_route('dashboard.settings.theme') }}">
|
||||
<i class="ion 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="{{ cachet_route('dashboard.team.create') }}">
|
||||
<i class="ion ion-ios-people"></i>
|
||||
{{ trans('dashboard.welcome.steps.team') }}
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-md-4 animated fadeInDown two">
|
||||
<a href="{{ cachet_route('dashboard.user') }}">
|
||||
<i class="ion ion-code-working"></i>
|
||||
{{ trans('dashboard.welcome.steps.api') }}
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-md-4 animated fadeInDown three">
|
||||
<a href="{{ cachet_route('dashboard.user') }}">
|
||||
<i class="ion 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>
|
||||
@@ -1,64 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar')
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header" id="application-setup">
|
||||
<span class="uppercase">
|
||||
{{ trans('dashboard.settings.analytics.analytics') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<form id="settings-form" name="SettingsForm" class="form-vertical" role="form" action="{{ cachet_route('dashboard.settings', [], 'post') }}" method="POST" enctype="multipart/form-data">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
@include('partials.errors')
|
||||
<fieldset>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.analytics.analytics_google') }}</label>
|
||||
<input type="text" name="app_analytics" class="form-control" value="{{ $appAnalytics }}" placeholder="UA-12345-12">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.analytics.analytics_gosquared') }}</label>
|
||||
<input type="text" name="app_analytics_go_squared" class="form-control" value="{{ $appAnalyticsGoSquared }}" placeholder="GSN-12345-A">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.analytics.analytics_piwik_url') }}</label>
|
||||
<input type="text" name="app_analytics_piwik_url" class="form-control" value="{{ $appAnalyticsPiwikUrl }}" placeholder="{{ trans('forms.settings.analytics.analytics_piwik_url') }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.analytics.analytics_piwik_siteid') }}</label>
|
||||
<input type="number" min="1" max="100" name="app_analytics_piwik_site_id" class="form-control" value="{{ $appAnalyticsPiwikSiteId }}" placeholder="{{ trans('forms.settings.analytics.analytics_piwik_siteid') }}">
|
||||
</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
|
||||
@@ -1,172 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar')
|
||||
<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="{{ cachet_route('dashboard.settings', [], 'post') }}" method="POST">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
@include('partials.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="{{ $appName }}" required placeholder="{{ trans('forms.settings.app-setup.site-name') }}">
|
||||
</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="{{ $appDomain }}" required placeholder="{{ trans('forms.settings.app-setup.site-url') }}">
|
||||
</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 autosize" rows="4" placeholder="{{ trans('forms.settings.app-setup.about-this-page') }}">{{ $rawAppAbout }}</textarea>
|
||||
</div>
|
||||
</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" max="10000" name="app_incident_days" class="form-control" value="{{ Config::get('setting.app_incident_days', 7) }}" placeholder="{{ trans('forms.settings.app-setup.days-of-incidents') }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.app-setup.time_before_refresh') }}</label>
|
||||
<input type="number" name="app_refresh_rate" class="form-control" value="{{ Config::get('setting.app_refresh_rate', 0) }}" placeholder="{{ trans('forms.settings.app-setup.time_before_refresh') }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.app-setup.major_outage_rate') }}</label>
|
||||
<input type="number" name="major_outage_rate" class="form-control" value="{{ Config::get('setting.major_outage_rate', 50) }}" placeholder="{{ trans('forms.settings.app-setup.major_outage_rate') }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="hidden" value="0" name="enable_subscribers">
|
||||
<input type="checkbox" value="1" name="enable_subscribers" {{ Config::get('setting.enable_subscribers') ? 'checked' : null }}>
|
||||
{{ trans('forms.settings.app-setup.subscribers') }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="hidden" value="0" name="suppress_notifications_in_maintenance">
|
||||
<input type="checkbox" value="1" name="suppress_notifications_in_maintenance" {{ Config::get('setting.suppress_notifications_in_maintenance') ? 'checked' : null }}>
|
||||
{{ trans('forms.settings.app-setup.suppress_notifications_in_maintenance') }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="hidden" value="0" name="skip_subscriber_verification">
|
||||
<input type="checkbox" value="1" name="skip_subscriber_verification" {{ Config::get('setting.skip_subscriber_verification') ? 'checked' : null }}>
|
||||
{{ trans('forms.settings.app-setup.skip_subscriber_verification') }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="hidden" value="0" name="display_graphs">
|
||||
<input type="checkbox" value="1" name="display_graphs" {{ $appGraphs ? 'checked' : null }}>
|
||||
{{ trans('forms.settings.app-setup.display-graphs') }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="hidden" value="0" name="show_support">
|
||||
<input type="checkbox" value="1" name="show_support" {{ $showSupport ? 'checked' : null }}>
|
||||
{{ trans('setup.show_support') }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="hidden" value="0" name="enable_external_dependencies">
|
||||
<input type="checkbox" value="1" name="enable_external_dependencies" {{ $enableExternalDependencies ? 'checked' : null }}>
|
||||
{{ trans('forms.settings.app-setup.enable_external_dependencies') }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="hidden" value="0" name="show_timezone">
|
||||
<input type="checkbox" value="1" name="show_timezone" {{ $showTimezone ? 'checked' : null }}>
|
||||
{{ trans('forms.settings.app-setup.show_timezone') }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="hidden" value="0" name="only_disrupted_days">
|
||||
<input type="checkbox" value="1" name="only_disrupted_days" {{ $onlyDisruptedDays ? 'checked' : null }}>
|
||||
{{ trans('forms.settings.app-setup.only_disrupted_days') }}
|
||||
</label>
|
||||
</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
|
||||
@@ -1,39 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar')
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header" id="application-setup">
|
||||
<span class="uppercase">
|
||||
{{ trans('dashboard.settings.credits.credits') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<h4>Cachet</h4>
|
||||
|
||||
<p>{!! trans('dashboard.settings.credits.license') !!}</p>
|
||||
|
||||
<hr>
|
||||
|
||||
<h4>{{ trans('dashboard.settings.credits.contributors') }}</h4>
|
||||
|
||||
<p>{{ trans('dashboard.settings.credits.thank-you', ['count' => count($contributors)]) }}</p>
|
||||
|
||||
<ul class="list-inline">
|
||||
@foreach($contributors as $contributor)
|
||||
<li>
|
||||
<a href="{{ $contributor['site'] }}" target="_blank">
|
||||
<img src="{{ $contributor['avatar'] }}" class="img-rounded img-responsive" title="{{ $contributor['name'] }}" data-toggle="tooltip" height="100" width="100">
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
|
||||
<hr>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,49 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar')
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header" id="application-setup">
|
||||
<span class="uppercase">
|
||||
{{ trans('dashboard.settings.customization.customization') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<form id="settings-form" name="SettingsForm" class="form-vertical" role="form" action="{{ cachet_route('dashboard.settings', [], 'post') }}" method="POST" enctype="multipart/form-data">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
@include('partials.errors')
|
||||
<fieldset>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('dashboard.settings.customization.header') }}</label>
|
||||
<textarea name="header" class="form-control" rows="10" placeholder="{{ trans('dashboard.settings.customization.header') }}">{{ Config::get('setting.header') }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('dashboard.settings.customization.footer') }}</label>
|
||||
<textarea name="footer" class="form-control" rows="10" placeholder="{{ trans('dashboard.settings.customization.footer') }}">{{ Config::get('setting.footer') }}</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
|
||||
@@ -1,100 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar')
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header" id="application-setup">
|
||||
<span class="uppercase">
|
||||
{{ trans('dashboard.settings.localization.localization') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<form id="settings-form" name="SettingsForm" class="form-vertical" role="form" action="{{ cachet_route('dashboard.settings', [], 'post') }}" method="POST" enctype="multipart/form-data">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
@include('partials.errors')
|
||||
<fieldset>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.localization.site-timezone') }}</label>
|
||||
<select name="app_timezone" class="form-control" required>
|
||||
<option disabled>{{ trans('forms.general.timezone') }}</option>
|
||||
@foreach($timezones as $region => $list)
|
||||
<optgroup label="{{ $region }}">
|
||||
@foreach($list as $timezone => $name)
|
||||
<option value="{{ $timezone }}" @if(Config::get('cachet.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.localization.date-format') }}
|
||||
<a href="http://php.net/manual/en/function.date.php" target="_blank"><i class="ion ion-help-circled"></i></a>
|
||||
</label>
|
||||
<input type="text" class="form-control" name="date_format" value="{{ Config::get('setting.date_format') ?: 'l jS F Y' }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>
|
||||
{{ trans('forms.settings.localization.incident-date-format') }}
|
||||
<a href="http://php.net/manual/en/function.date.php" target="_blank"><i class="ion ion-help-circled"></i></a>
|
||||
</label>
|
||||
<input type="text" class="form-control" name="incident_date_format" value="{{ Config::get('setting.incident_date_format') ?: 'l jS F Y H:i:s' }}" placeholder="{{ trans('forms.settings.localization.incident-date-format') }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.localization.site-locale') }}</label>
|
||||
<select name="app_locale" class="form-control" required>
|
||||
<option value="">Select Language</option>
|
||||
@foreach($langs as $key => $lang)
|
||||
<option value="{{ $key }}" @if($appLocale === $key) selected @endif>
|
||||
{{ $lang['name'] }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="hidden" value="0" name="automatic_localization">
|
||||
<input type="checkbox" value="1" name="automatic_localization" {{ $automaticLocalization ? 'checked' : null }}>
|
||||
{{ trans('forms.settings.app-setup.automatic_localization') }}
|
||||
</label>
|
||||
</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
|
||||
@@ -1,25 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar')
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header" id="application-setup">
|
||||
<span class="uppercase">
|
||||
{{ trans('dashboard.settings.log.log') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<textarea class="form-control" rows="40">{{ $log }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,58 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar')
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header" id="application-setup">
|
||||
<span class="uppercase">
|
||||
{{ trans('dashboard.settings.mail.mail') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<form id="settings-form" name="SettingsForm" class="form-vertical" role="form" action="{{ cachet_route('dashboard.settings.mail', [], 'post') }}" method="POST" enctype="multipart/form-data">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
@include('partials.errors')
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.setup.mail_driver') }}</label>
|
||||
<select name="config[mail_driver]" class="form-control" required>
|
||||
<option disabled>{{ trans('forms.setup.mail_driver') }}</option>
|
||||
@foreach($mailDrivers as $driver => $driverName)
|
||||
<option value="{{ $driver }}" {{ Binput::old('config.mail_driver', $config['driver']) == $driver ? "selected" : null }}>{{ $driverName }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.setup.mail_host') }} (optional)</label>
|
||||
<input type="text" class="form-control" name="config[mail_host]" value="{{ Binput::old('config.mail_host', $config['host']) }}" placeholder="{{ trans('forms.setup.mail_host') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.setup.mail_address') }}</label>
|
||||
<input type="text" class="form-control" name="config[mail_address]" value="{{ Binput::old('config.mail_address', $config['from']['address']) }}" placeholder="notifications@alt-three.com">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.setup.mail_username') }}</label>
|
||||
<input type="text" class="form-control" name="config[mail_username]" value="{{ Binput::old('config.mail_username', $config['username']) }}" placeholder="{{ trans('forms.setup.mail_username') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.setup.mail_password') }}</label>
|
||||
<input type="password" class="form-control" name="config[mail_password]" value="{{ Binput::old('config.mail_password') }}" autocomplete="off" placeholder="{{ trans('forms.setup.mail_password') }}">
|
||||
</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>
|
||||
<a href="{{ cachet_route('dashboard.settings.mail.test', null, 'post') }}" class="btn btn-info confirm-action" data-method='POST'>{{ trans('dashboard.settings.mail.test') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,71 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar')
|
||||
<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="{{ cachet_route('dashboard.settings', [], 'post') }}" method="POST">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
@include('partials.errors')
|
||||
<fieldset>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<label>{{ trans('forms.settings.security.always-authenticate') }}</label>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="hidden" value="0" name="always_authenticate">
|
||||
<input type="checkbox" value="1" name="always_authenticate" {{ Config::get('setting.always_authenticate') ? 'checked' : null }}>
|
||||
{{ trans('forms.settings.security.always-authenticate-help') }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<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">{{ Config::get('setting.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 ion-ios-unlocked"></i></span>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,40 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar')
|
||||
<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="{{ cachet_route('dashboard.settings', [], 'post') }}" method="POST">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
@include('partials.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 autosize" name="stylesheet" rows="10" placeholder="{{ trans('forms.settings.stylesheet.custom-css') }}">{{ Config::get('setting.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
|
||||
@@ -1,157 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar')
|
||||
<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="{{ cachet_route('dashboard.settings', [], 'post') }}" method="POST" enctype="multipart/form-data">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
@include('partials.errors')
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.app-setup.banner') }}</label>
|
||||
@if($appBanner)
|
||||
<div id="banner-view" class="well">
|
||||
<img src="data:{{ $appBannerType }};base64,{{ $appBanner }}" style="max-width: 100%">
|
||||
<br><br>
|
||||
<button id="remove-banner" class="btn btn-danger">{{ trans('forms.remove') }}</button>
|
||||
</div>
|
||||
<input type="hidden" name="remove_banner" value="0">
|
||||
@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>
|
||||
<hr>
|
||||
<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="{{ $themeBackgroundColor }}" placeholder="{{ trans('forms.settings.theme.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="{{ $themeTextColor }}" placeholder="{{ trans('forms.settings.theme.text-color') }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-xs-6">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.theme.banner-background-color') }}</label>
|
||||
<input type="text" class="form-control color-code" name="style.banner_background_color" value="{{ $themeBannerBackgroundColor }}" placeholder="{{ trans('forms.settings.theme.banner-background-color') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-6">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.theme.banner-padding') }}</label>
|
||||
<input type="text" class="form-control" name="style.banner_padding" value="{{ $themeBannerPadding }}" placeholder="{{ trans('forms.settings.theme.banner-padding') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="hidden" value="0" name="style.fullwidth_header">
|
||||
<input type="checkbox" value="1" name="style.fullwidth_header" {{ $appBannerStyleFullWidth ? 'checked' : null }}>
|
||||
{{ trans('forms.settings.theme.fullwidth-banner') }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-xs-6">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.theme.reds') }}</label>
|
||||
<input type="text" class="form-control color-code" name="style.reds" value="{{ $themeReds }}" placeholder="{{ trans('forms.settings.theme.reds') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-6">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.theme.blues') }}</label>
|
||||
<input type="text" class="form-control color-code" name="style.blues" value="{{ $themeBlues }}" placeholder="{{ trans('forms.settings.theme.blues') }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-6">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.theme.greens') }}</label>
|
||||
<input type="text" class="form-control color-code" name="style.greens" value="{{ $themeGreens }}" placeholder="{{ trans('forms.settings.theme.greens') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-6">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.theme.yellows') }}</label>
|
||||
<input type="text" class="form-control color-code" name="style.yellows" value="{{ $themeYellows }}" placeholder="{{ trans('forms.settings.theme.yellows') }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-6">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.theme.oranges') }}</label>
|
||||
<input type="text" class="form-control color-code" name="style.oranges" value="{{ $themeOranges }}" placeholder="{{ trans('forms.settings.theme.oranges') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-6">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.theme.metrics') }}</label>
|
||||
<input type="text" class="form-control color-code" name="style.metrics" value="{{ $themeMetrics }}" placeholder="{{ trans('forms.settings.theme.metrics') }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-6">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.theme.links') }}</label>
|
||||
<input type="text" class="form-control color-code" name="style.links" value="{{ $themeLinks }}" placeholder="{{ trans('forms.settings.theme.links') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-6">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.theme.background-fills') }}</label>
|
||||
<input type="text" class="form-control color-code" name="style.background_fills" value="{{ $themeBackgroundFills }}" placeholder="{{ trans('forms.settings.theme.background-fills') }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="hidden" name="dashboard_login_link" value="0">
|
||||
<input type="checkbox" value="1" name="dashboard_login_link" {{ Config::get('setting.dashboard_login_link') ? 'checked' : null }}>
|
||||
{{ trans('forms.settings.theme.dashboard-login') }}
|
||||
</label>
|
||||
</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
|
||||
@@ -1,36 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="ion ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-ios-email-outline"></i> {{ trans('dashboard.subscribers.subscribers') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.errors')
|
||||
<form name="SubscriberForm" class="form-vertical" role="form" action="{{ cachet_route('dashboard.subscribers.create', [], 'post') }}" method="POST">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.email') }}</label>
|
||||
<textarea rows="5" class="form-control" name="email" required placeholder="{{ trans('forms.user.email') }}">{{ Binput::old('email') }}</textarea>
|
||||
<span class="help-block">{{ trans('dashboard.subscribers.add.help') }}</span>
|
||||
</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="{{ cachet_route('dashboard.subscribers') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,59 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header fixed">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="ion ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-ios-email-outline"></i> {{ trans('dashboard.subscribers.subscribers') }}
|
||||
</span>
|
||||
@if($currentUser->isAdmin)
|
||||
<a class="btn btn-md btn-success pull-right" href="{{ cachet_route('dashboard.subscribers.create') }}">
|
||||
{{ trans('dashboard.subscribers.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.subscribers.description') }}
|
||||
</p>
|
||||
|
||||
<div class="striped-list">
|
||||
@foreach($subscribers as $subscriber)
|
||||
<div class="row striped-list-item">
|
||||
<div class="col-xs-3">
|
||||
<p>{{ trans('dashboard.subscribers.subscriber', ['email' => $subscriber->email, 'date' => $subscriber->created_at]) }}</p>
|
||||
</div>
|
||||
<div class="col-xs-3">
|
||||
@if(is_null($subscriber->getOriginal('verified_at')))
|
||||
<b class="text-danger">{{ trans('dashboard.subscribers.not_verified') }}</b>
|
||||
@else
|
||||
<b class="text-success">{{ trans('dashboard.subscribers.verified') }}</b>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-xs-3">
|
||||
@if($subscriber->global)
|
||||
<p>{{ trans('dashboard.subscribers.global') }}</p>
|
||||
@elseif($subscriber->subscriptions->isNotEmpty())
|
||||
{!! $subscriber->subscriptions->map(function ($subscription) {
|
||||
return sprintf('<span class="label label-primary">%s</span>', $subscription->component->name);
|
||||
})->implode(' ') !!}
|
||||
@else
|
||||
<p>{{ trans('dashboard.subscribers.no_subscriptions') }}</p>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-xs-3 text-right">
|
||||
<a href="{{ URL::signedRoute(cachet_route_generator('subscribe.manage'), ['code' => $subscriber->verify_code]) }}" target="_blank" class="btn btn-success">{{ trans('forms.edit') }}</a>
|
||||
<a href="{{ cachet_route('dashboard.subscribers.delete', [$subscriber->id], 'delete') }}" class="btn btn-danger confirm-action" data-method='DELETE'>{{ trans('forms.delete') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,52 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="ion ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-ios-people-outline"></i> {{ trans('dashboard.team.team') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.errors')
|
||||
<form name="UserForm" class="form-vertical" role="form" action="{{ cachet_route('dashboard.team.create', [], 'post') }}" 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="{{ Binput::old('username') }}" required placeholder="{{ trans('forms.user.username') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.email') }}</label>
|
||||
<input type="email" class="form-control" name="email" value="{{ Binput::old('email') }}" required placeholder="{{ trans('forms.user.email') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.password') }}</label>
|
||||
<input type="password" class="form-control" name="password" value="" placeholder="{{ trans('forms.user.password') }}">
|
||||
</div>
|
||||
@if($currentUser->isAdmin)
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.user_level') }}</label>
|
||||
<select name="level" class="form-control">
|
||||
<option value="2" selected>{{ trans('forms.user.levels.user') }}</option>
|
||||
<option value="1">{{ trans('forms.user.levels.admin') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
@endif
|
||||
</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="{{ cachet_route('dashboard.team') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,55 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="ion ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-ios-people-outline"></i> {{ trans('dashboard.team.member') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.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 placeholder="{{ trans('forms.user.username') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.email') }}</label>
|
||||
<input type="email" class="form-control" name="email" value="{{ $user->email }}" required placeholder="{{ trans('forms.user.email') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.password') }}</label>
|
||||
<input type="password" class="form-control" name="password" value="" {{ !$currentUser->isAdmin ? "disabled": "" }} placeholder="{{ trans('forms.user.password') }}">
|
||||
</div>
|
||||
@if($currentUser->isAdmin)
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.user_level') }}</label>
|
||||
<select name="level" class="form-control">
|
||||
<option value="2" {{ $user->level === 2 ? "selected" : null }}>{{ trans('forms.user.levels.user') }}</option>
|
||||
<option value="1" {{ $user->level === 1 ? "selected" : null }}>{{ trans('forms.user.levels.admin') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
@endif
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.update') }}</button>
|
||||
@if($currentUser->isAdmin)
|
||||
<a class="btn btn-info" href="{{ cachet_route('dashboard.user.api.regen', [$user->id]) }}">{{ trans('cachet.api.revoke') }}</a>
|
||||
@if($currentUser->id != $user->id)
|
||||
<a class="btn btn-danger confirm-action" href="{{ cachet_route('dashboard.team.delete', [$user->id], 'delete') }}" data-method="DELETE">{{ trans('forms.delete') }}</a>
|
||||
@endif
|
||||
@endif
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,41 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header fixed">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="ion ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-ios-people-outline"></i> {{ trans('dashboard.team.team') }}
|
||||
</span>
|
||||
@if($currentUser->isAdmin)
|
||||
<div class="button-group pull-right">
|
||||
<a class="btn btn-sm btn-success" href="{{ cachet_route('dashboard.team.invite') }}">
|
||||
{{ trans('dashboard.team.invite.title') }}
|
||||
</a>
|
||||
<a class="btn btn-sm btn-success" href="{{ cachet_route('dashboard.team.create') }}">
|
||||
{{ trans('dashboard.team.add.title') }}
|
||||
</a>
|
||||
</div>
|
||||
@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)
|
||||
<a href="@if($currentUser->id == $member->id) {{ cachet_route('dashboard.team.edit', $member) }} @else /dashboard/team/{{ $member->id }} @endif">
|
||||
<div class="user col-sm-3 col-xs-6">
|
||||
<div class="name">{{ $member->username }}</div>
|
||||
<div class="email">{{ $member->email }}</div>
|
||||
</div>
|
||||
</a>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,45 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="ion ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-ios-people-outline"></i> {{ trans('dashboard.team.team') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<invite-team inline-template>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.errors')
|
||||
<form name="UserForm" class="form-vertical" role="form" action="{{ cachet_route('dashboard.team.invite', [], 'post') }}" method="POST">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.team.description') }}</label>
|
||||
</div>
|
||||
<div class="form-group" v-for="(email, index) in emails">
|
||||
<div :class="{ 'input-group': canRemove }">
|
||||
<input type="email" class="form-control" name="emails[]" placeholder="{{ trans('forms.user.team.email') }}" v-model="email.email">
|
||||
<span class="input-group-btn" v-if="canRemove">
|
||||
<button type="button" @click="remove(index)" class="btn btn-danger">Remove</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="btn-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.invite') }}</button>
|
||||
<a class="btn btn-default" href="{{ cachet_route('dashboard.team') }}">{{ trans('forms.cancel') }}</a>
|
||||
<button type="button" @click="add" class="btn btn-primary">Add</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</invite-team>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,59 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('css')
|
||||
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.8.0/codemirror.css">
|
||||
@stop
|
||||
|
||||
@section('js')
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.8.0/codemirror.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.8.0/mode/twig/twig.min.js"></script>
|
||||
|
||||
<script>
|
||||
//Initializes the editor only once the DOM is loaded.
|
||||
window.addEventListener("DOMContentLoaded", function(e) {
|
||||
var editor = CodeMirror.fromTextArea(document.getElementById('cm-editor'), {
|
||||
lineNumbers: true,
|
||||
mode: 'twig',
|
||||
lineWrapping: true
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@stop
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="ion ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-ios-paper-outline"></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.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="name" id="template-name" required placeholder="{{ trans('forms.incidents.templates.name') }}" value="{{ Binput::old('name') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.templates.template') }}</label>
|
||||
<textarea name="template" id="cm-editor" class="form-control" rows="8" placeholder="{{ trans('forms.incidents.templates.template') }}">{{ Binput::old('template') }}</textarea>
|
||||
<span class="help-block">{!! trans('forms.incidents.templates.twig') !!}</span>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="btn-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.create') }}</button>
|
||||
<a class="btn btn-default" href="{{ cachet_route('dashboard.templates') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,68 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('css')
|
||||
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.8.0/codemirror.css">
|
||||
@stop
|
||||
|
||||
@section('js')
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.8.0/codemirror.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.8.0/mode/twig/twig.min.js"></script>
|
||||
|
||||
<script>
|
||||
//Initializes the editor only once the DOM is loaded.
|
||||
window.addEventListener("DOMContentLoaded", function(e) {
|
||||
var editor = CodeMirror.fromTextArea(document.getElementById('cm-editor'), {
|
||||
lineNumbers: true,
|
||||
mode: 'twig',
|
||||
lineWrapping: true
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@stop
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="ion ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-ios-paper-outline"></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('updated_template'))
|
||||
<div class="alert alert-{{ ($templateErrors = Session::get('template_errors')) ? 'danger' : 'success' }}">
|
||||
@if($templateErrors)
|
||||
{{ sprintf("%s - %s", trans('dashboard.notifications.whoops'), trans('dashboard.incidents.templates.edit.failure').' '.$templateErrors) }}
|
||||
@else
|
||||
{{ sprintf("%s - %s", trans('dashboard.notifications.awesome'), trans('dashboard.incidents.templates.edit.success')) }}
|
||||
@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 }}" placeholder="{{ trans('forms.incidents.templates.name') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.templates.template') }}</label>
|
||||
<textarea v-pre name="template[template]" id="cm-editor" class="form-control" rows="8" placeholder="{{ trans('forms.incidents.templates.template') }}">{{ $template->template }}</textarea>
|
||||
<span class="help-block">{!! trans('forms.incidents.templates.twig') !!}</span>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="btn-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.update') }}</button>
|
||||
<a class="btn btn-default" href="{{ cachet_route('dashboard.templates') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,37 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="ion ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-ios-paper-outline"></i> {{ trans('dashboard.incidents.templates.title') }}
|
||||
</span>
|
||||
<a class="btn btn-md btn-success pull-right" href="{{ cachet_route('dashboard.templates.create') }}">
|
||||
{{ trans('dashboard.incidents.templates.add.title') }}
|
||||
</a>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.errors')
|
||||
<div class="striped-list">
|
||||
@forelse($incidentTemplates as $template)
|
||||
<div class="row striped-list-item">
|
||||
<div class="col-xs-6">
|
||||
<strong>{{ $template->name }}</strong>
|
||||
</div>
|
||||
<div class="col-xs-6 text-right">
|
||||
<a href="{{ cachet_route('dashboard.templates.edit', [$template->id]) }}" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
<a href="{{ cachet_route('dashboard.templates.delete', [$template->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.incidents.templates.add.message') }}</div>
|
||||
@endforelse
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,76 +0,0 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="ion ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-ios-person-outline"></i> {{ trans('dashboard.team.profile') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.errors')
|
||||
<form name="UserForm" class="form-vertical" role="form" action="{{ cachet_route('dashboard.user', [], 'post') }}" method="POST">
|
||||
{!! csrf_field() !!}
|
||||
<fieldset>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="form-group">
|
||||
<a href="https://gravatar.com"><img src="{{ $currentUser->avatar }}" class="img-responsive img-thumbnail" title="{{ trans('forms.user.gravatar') }}" data-toggle="tooltip"></a>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.username') }}</label>
|
||||
<input type="text" class="form-control" name="username" value="{{ $currentUser->username }}" required placeholder="{{ trans('forms.user.username') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.email') }}</label>
|
||||
<input type="email" class="form-control" name="email" value="{{ $currentUser->email }}" required placeholder="{{ trans('forms.user.email') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.password') }}</label>
|
||||
<input type="password" class="form-control" name="password" value="" placeholder="{{ trans('forms.user.password') }}">
|
||||
</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" readonly value="{{ $currentUser->api_key }}" placeholder="{{ trans('forms.user.api-token') }}">
|
||||
<a href="{{ cachet_route('dashboard.user.api.regen', [$currentUser->id]) }}" 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" {{ $currentUser->hasTwoFactor ? "checked" : "" }}>
|
||||
{{ trans('forms.setup.enable_google2fa') }}
|
||||
</label>
|
||||
</div>
|
||||
@if($currentUser->hasTwoFactor)
|
||||
<div class="form-group">
|
||||
<?php
|
||||
$google2fa = (new \PragmaRX\Google2FA\Google2FA());
|
||||
$google2fa_url = $google2fa->getQRCodeUrl(
|
||||
'Cachet',
|
||||
$currentUser->email,
|
||||
$currentUser->google_2fa_secret
|
||||
);
|
||||
?>
|
||||
<img width="200" height="200" src="{{(new \chillerlan\QRCode\QRCode())->render($google2fa_url)}}" alt="qr code"/>
|
||||
<span class='help-block'>{!! trans('forms.user.2fa.help') !!}</span>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.update') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,11 +0,0 @@
|
||||
@extends('errors::illustrated-layout')
|
||||
|
||||
@section('code', '401')
|
||||
@section('title', __('Unauthorized'))
|
||||
|
||||
@section('image')
|
||||
<div style="background-image: url({{ asset('/svg/403.svg') }});" class="absolute pin bg-cover bg-no-repeat md:bg-left lg:bg-center">
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('message', __('Sorry, you are not authorized to access this page.'))
|
||||
@@ -1,11 +0,0 @@
|
||||
@extends('errors::illustrated-layout')
|
||||
|
||||
@section('code', '403')
|
||||
@section('title', __('Forbidden'))
|
||||
|
||||
@section('image')
|
||||
<div style="background-image: url({{ asset('/svg/403.svg') }});" class="absolute pin bg-cover bg-no-repeat md:bg-left lg:bg-center">
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('message', __($exception->getMessage() ?: __('Sorry, you are forbidden from accessing this page.')))
|
||||
@@ -1,11 +0,0 @@
|
||||
@extends('errors::illustrated-layout')
|
||||
|
||||
@section('code', '404')
|
||||
@section('title', __('Page Not Found'))
|
||||
|
||||
@section('image')
|
||||
<div style="background-image: url({{ asset('/svg/404.svg') }});" class="absolute pin bg-cover bg-no-repeat md:bg-left lg:bg-center">
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('message', __('Sorry, the page you are looking for could not be found.'))
|
||||
@@ -1,11 +0,0 @@
|
||||
@extends('errors::illustrated-layout')
|
||||
|
||||
@section('code', '419')
|
||||
@section('title', __('Page Expired'))
|
||||
|
||||
@section('image')
|
||||
<div style="background-image: url({{ asset('/svg/403.svg') }});" class="absolute pin bg-cover bg-no-repeat md:bg-left lg:bg-center">
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('message', __('Sorry, your session has expired. Please refresh and try again.'))
|
||||
@@ -1,11 +0,0 @@
|
||||
@extends('errors::illustrated-layout')
|
||||
|
||||
@section('code', '429')
|
||||
@section('title', __('Too Many Requests'))
|
||||
|
||||
@section('image')
|
||||
<div style="background-image: url({{ asset('/svg/403.svg') }});" class="absolute pin bg-cover bg-no-repeat md:bg-left lg:bg-center">
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('message', __('Sorry, you are making too many requests to our servers.'))
|
||||
@@ -1,11 +0,0 @@
|
||||
@extends('errors::illustrated-layout')
|
||||
|
||||
@section('code', '500')
|
||||
@section('title', __('Error'))
|
||||
|
||||
@section('image')
|
||||
<div style="background-image: url({{ asset('/svg/500.svg') }});" class="absolute pin bg-cover bg-no-repeat md:bg-left lg:bg-center">
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('message', __('Whoops, something went wrong on our servers.'))
|
||||
@@ -1,11 +0,0 @@
|
||||
@extends('errors::illustrated-layout')
|
||||
|
||||
@section('code', '503')
|
||||
@section('title', __('Service Unavailable'))
|
||||
|
||||
@section('image')
|
||||
<div style="background-image: url({{ asset('/svg/503.svg') }});" class="absolute pin bg-cover bg-no-repeat md:bg-left lg:bg-center">
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('message', __($exception->getMessage() ?: __('Sorry, we are doing some maintenance. Please check back soon.')))
|
||||
@@ -1,486 +0,0 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>@yield('title')</title>
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="dns-prefetch" href="//fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet" type="text/css">
|
||||
|
||||
<!-- Styles -->
|
||||
<style>
|
||||
html {
|
||||
line-height: 1.15;
|
||||
-ms-text-size-adjust: 100%;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
header,
|
||||
nav,
|
||||
section {
|
||||
display: block;
|
||||
}
|
||||
|
||||
figcaption,
|
||||
main {
|
||||
display: block;
|
||||
}
|
||||
|
||||
a {
|
||||
background-color: transparent;
|
||||
-webkit-text-decoration-skip: objects;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-weight: inherit;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: monospace, monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
dfn {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
svg:not(:root) {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
button,
|
||||
input {
|
||||
font-family: sans-serif;
|
||||
font-size: 100%;
|
||||
line-height: 1.15;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
button,
|
||||
input {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
button {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
button,
|
||||
html [type="button"],
|
||||
[type="reset"],
|
||||
[type="submit"] {
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
button::-moz-focus-inner,
|
||||
[type="button"]::-moz-focus-inner,
|
||||
[type="reset"]::-moz-focus-inner,
|
||||
[type="submit"]::-moz-focus-inner {
|
||||
border-style: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
button:-moz-focusring,
|
||||
[type="button"]:-moz-focusring,
|
||||
[type="reset"]:-moz-focusring,
|
||||
[type="submit"]:-moz-focusring {
|
||||
outline: 1px dotted ButtonText;
|
||||
}
|
||||
|
||||
legend {
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
color: inherit;
|
||||
display: table;
|
||||
max-width: 100%;
|
||||
padding: 0;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
[type="checkbox"],
|
||||
[type="radio"] {
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
[type="number"]::-webkit-inner-spin-button,
|
||||
[type="number"]::-webkit-outer-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
[type="search"] {
|
||||
-webkit-appearance: textfield;
|
||||
outline-offset: -2px;
|
||||
}
|
||||
|
||||
[type="search"]::-webkit-search-cancel-button,
|
||||
[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
-webkit-appearance: button;
|
||||
font: inherit;
|
||||
}
|
||||
|
||||
menu {
|
||||
display: block;
|
||||
}
|
||||
|
||||
canvas {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
template {
|
||||
display: none;
|
||||
}
|
||||
|
||||
[hidden] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
html {
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
-webkit-box-sizing: inherit;
|
||||
box-sizing: inherit;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
button {
|
||||
background: transparent;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
button:focus {
|
||||
outline: 1px dotted;
|
||||
outline: 5px auto -webkit-focus-ring-color;
|
||||
}
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
border-width: 0;
|
||||
border-style: solid;
|
||||
border-color: #dae1e7;
|
||||
}
|
||||
|
||||
button,
|
||||
[type="button"],
|
||||
[type="reset"],
|
||||
[type="submit"] {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
button,
|
||||
input {
|
||||
font-family: inherit;
|
||||
}
|
||||
|
||||
input::-webkit-input-placeholder {
|
||||
color: inherit;
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
input:-ms-input-placeholder {
|
||||
color: inherit;
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
input::-ms-input-placeholder {
|
||||
color: inherit;
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
input::placeholder {
|
||||
color: inherit;
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
button,
|
||||
[role=button] {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.bg-transparent {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.bg-white {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.bg-teal-light {
|
||||
background-color: #64d5ca;
|
||||
}
|
||||
|
||||
.bg-blue-dark {
|
||||
background-color: #2779bd;
|
||||
}
|
||||
|
||||
.bg-indigo-light {
|
||||
background-color: #7886d7;
|
||||
}
|
||||
|
||||
.bg-purple-light {
|
||||
background-color: #a779e9;
|
||||
}
|
||||
|
||||
.bg-no-repeat {
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.bg-cover {
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
.border-grey-light {
|
||||
border-color: #dae1e7;
|
||||
}
|
||||
|
||||
.hover\:border-grey:hover {
|
||||
border-color: #b8c2cc;
|
||||
}
|
||||
|
||||
.rounded-lg {
|
||||
border-radius: .5rem;
|
||||
}
|
||||
|
||||
.border-2 {
|
||||
border-width: 2px;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.flex {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.items-center {
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.justify-center {
|
||||
-webkit-box-pack: center;
|
||||
-ms-flex-pack: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.font-sans {
|
||||
font-family: Nunito, sans-serif;
|
||||
}
|
||||
|
||||
.font-light {
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.font-bold {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.font-black {
|
||||
font-weight: 900;
|
||||
}
|
||||
|
||||
.h-1 {
|
||||
height: .25rem;
|
||||
}
|
||||
|
||||
.leading-normal {
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.m-8 {
|
||||
margin: 2rem;
|
||||
}
|
||||
|
||||
.my-3 {
|
||||
margin-top: .75rem;
|
||||
margin-bottom: .75rem;
|
||||
}
|
||||
|
||||
.mb-8 {
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.max-w-sm {
|
||||
max-width: 30rem;
|
||||
}
|
||||
|
||||
.min-h-screen {
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.py-3 {
|
||||
padding-top: .75rem;
|
||||
padding-bottom: .75rem;
|
||||
}
|
||||
|
||||
.px-6 {
|
||||
padding-left: 1.5rem;
|
||||
padding-right: 1.5rem;
|
||||
}
|
||||
|
||||
.pb-full {
|
||||
padding-bottom: 100%;
|
||||
}
|
||||
|
||||
.absolute {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.relative {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.pin {
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.text-black {
|
||||
color: #22292f;
|
||||
}
|
||||
|
||||
.text-grey-darkest {
|
||||
color: #3d4852;
|
||||
}
|
||||
|
||||
.text-grey-darker {
|
||||
color: #606f7b;
|
||||
}
|
||||
|
||||
.text-2xl {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
.text-5xl {
|
||||
font-size: 3rem;
|
||||
}
|
||||
|
||||
.uppercase {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.antialiased {
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.tracking-wide {
|
||||
letter-spacing: .05em;
|
||||
}
|
||||
|
||||
.w-16 {
|
||||
width: 4rem;
|
||||
}
|
||||
|
||||
.w-full {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.md\:bg-left {
|
||||
background-position: left;
|
||||
}
|
||||
|
||||
.md\:bg-right {
|
||||
background-position: right;
|
||||
}
|
||||
|
||||
.md\:flex {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.md\:my-6 {
|
||||
margin-top: 1.5rem;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
.md\:min-h-screen {
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.md\:pb-0 {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
.md\:text-3xl {
|
||||
font-size: 1.875rem;
|
||||
}
|
||||
|
||||
.md\:text-15xl {
|
||||
font-size: 9rem;
|
||||
}
|
||||
|
||||
.md\:w-1\/2 {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 992px) {
|
||||
.lg\:bg-center {
|
||||
background-position: center;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="antialiased font-sans">
|
||||
<div class="md:flex min-h-screen">
|
||||
<div class="w-full md:w-1/2 bg-white flex items-center justify-center">
|
||||
<div class="max-w-sm m-8">
|
||||
<div class="text-black text-5xl md:text-15xl font-black">
|
||||
@yield('code', __('Oh no'))
|
||||
</div>
|
||||
|
||||
<div class="w-16 h-1 bg-purple-light my-3 md:my-6"></div>
|
||||
|
||||
<p class="text-grey-darker text-2xl md:text-3xl font-light mb-8 leading-normal">
|
||||
@yield('message')
|
||||
</p>
|
||||
|
||||
<a href="{{ url('/') }}">
|
||||
<button class="bg-transparent text-grey-darkest font-bold uppercase tracking-wide py-3 px-6 border-2 border-grey-light hover:border-grey rounded-lg">
|
||||
{{ __('Go Home') }}
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="relative pb-full md:flex md:pb-0 md:min-h-screen w-full md:w-1/2">
|
||||
@yield('image')
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,57 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>@yield('title')</title>
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="dns-prefetch" href="//fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet" type="text/css">
|
||||
|
||||
<!-- Styles -->
|
||||
<style>
|
||||
html, body {
|
||||
background-color: #fff;
|
||||
color: #636b6f;
|
||||
font-family: 'Nunito', sans-serif;
|
||||
font-weight: 100;
|
||||
height: 100vh;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.full-height {
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
.flex-center {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.position-ref {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.content {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-size: 36px;
|
||||
padding: 20px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="flex-center position-ref full-height">
|
||||
<div class="content">
|
||||
<div class="title">
|
||||
@yield('message')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,12 +0,0 @@
|
||||
@extends('layout.master')
|
||||
|
||||
@section('content')
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading">
|
||||
<strong>Under Maintenance</strong>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<p>We're currently under maintenance, come back shortly.</p>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,16 +0,0 @@
|
||||
@extends('layout.master')
|
||||
|
||||
@section('content')
|
||||
@include('partials.modules.messages')
|
||||
@include('partials.modules.status')
|
||||
@include('partials.about-app')
|
||||
@include('partials.modules.components')
|
||||
@include('partials.modules.metrics')
|
||||
@include('partials.modules.stickied')
|
||||
@include('partials.modules.scheduled')
|
||||
@include('partials.modules.timeline')
|
||||
@stop
|
||||
|
||||
@section('bottom-content')
|
||||
@include('partials.footer')
|
||||
@stop
|
||||
@@ -1,49 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="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="{{ asset('/img/favicon.ico') }}">
|
||||
<link rel="shortcut icon" href="{{ asset('/img/favicon.png') }}" type="image/x-icon">
|
||||
|
||||
<link rel="apple-touch-icon" href="{{ asset('/img/apple-touch-icon.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="{{ asset('/img/apple-touch-icon-57x57.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="{{ asset('/img/apple-touch-icon-72x72.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="{{ asset('/img/apple-touch-icon-114x114.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="{{ asset('/img/apple-touch-icon-120x120.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="{{ asset('/img/apple-touch-icon-144x144.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="{{ asset('/img/apple-touch-icon-152x152.png') }}">
|
||||
|
||||
<title>{{ $pageTitle ?? $siteTitle }}</title>
|
||||
|
||||
@if($enableExternalDependencies)
|
||||
{{-- <link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,700&subset={{ $fontSubset }}" rel="stylesheet" type="text/css"> --}}
|
||||
@endif
|
||||
<link rel="stylesheet" href="{{ asset(mix('dist/css/dashboard/dashboard.css')) }}">
|
||||
@yield('css')
|
||||
|
||||
@include('partials.crowdin')
|
||||
|
||||
<script type="text/javascript">
|
||||
var Global = {};
|
||||
Global.locale = '{{ $appLocale }}';
|
||||
</script>
|
||||
|
||||
<script src="{{ asset(mix('dist/js/manifest.js')) }}"></script>
|
||||
<script src="{{ asset(mix('dist/js/vendor.js')) }}"></script>
|
||||
</head>
|
||||
|
||||
<body class="@yield('bodyClass')">
|
||||
<div class="content" id="app">
|
||||
@yield('content')
|
||||
</div>
|
||||
</body>
|
||||
@yield('js')
|
||||
<script src="{{ asset(mix('dist/js/all.js')) }}"></script>
|
||||
</html>
|
||||
@@ -1,65 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="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="{{ asset('/img/favicon.ico') }}">
|
||||
<link rel="shortcut icon" href="{{ asset('/img/favicon.png') }}" type="image/x-icon">
|
||||
|
||||
<link rel="apple-touch-icon" href="{{ asset('/img/apple-touch-icon.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="{{ asset('/img/apple-touch-icon-57x57.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="{{ asset('/img/apple-touch-icon-72x72.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="{{ asset('/img/apple-touch-icon-114x114.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="{{ asset('/img/apple-touch-icon-120x120.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="{{ asset('/img/apple-touch-icon-144x144.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="{{ asset('/img/apple-touch-icon-152x152.png') }}">
|
||||
|
||||
<title>{{ $pageTitle ?? $siteTitle }}</title>
|
||||
|
||||
<script>
|
||||
window.Global = {}
|
||||
Global.locale = '{{ $appLocale }}';
|
||||
Global.csrfToken = '{{ csrf_token() }}';
|
||||
</script>
|
||||
|
||||
@if($enableExternalDependencies)
|
||||
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,700&subset={{ $fontSubset }}" rel="stylesheet" type="text/css">
|
||||
@endif
|
||||
<link rel="stylesheet" href="{{ asset(mix('dist/css/dashboard/dashboard.css')) }}">
|
||||
@yield('css')
|
||||
|
||||
@include('partials.crowdin')
|
||||
|
||||
<script src="{{ asset(mix('dist/js/manifest.js')) }}"></script>
|
||||
<script src="{{ asset(mix('dist/js/vendor.js')) }}"></script>
|
||||
</head>
|
||||
|
||||
<body class="dashboard">
|
||||
<div class="wrapper" id="app">
|
||||
@include('dashboard.partials.sidebar')
|
||||
<div class="page-content">
|
||||
@if(!$isWriteable)
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="alert alert-info">
|
||||
{!! trans('dashboard.writeable_settings') !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@yield('content')
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
@yield('js')
|
||||
<script src="{{ asset(mix('dist/js/all.js')) }}"></script>
|
||||
</html>
|
||||
@@ -1,92 +0,0 @@
|
||||
<!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() }}">
|
||||
|
||||
<!-- 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">
|
||||
<meta name="description" content="@yield('description', trans('cachet.meta.description.overview', ['app' => $appName]))">
|
||||
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:title" content="@yield('title', $siteTitle)">
|
||||
<meta property="og:image" content=" {{ asset('/img/favicon.png') }}">
|
||||
<meta property="og:description" content="@yield('description', trans('cachet.meta.description.overview', ['app' => $appName]))">
|
||||
|
||||
<!-- Mobile IE allows us to activate ClearType technology for smoothing fonts for easy reading -->
|
||||
<meta http-equiv="cleartype" content="on">
|
||||
|
||||
<meta name="msapplication-TileColor" content="{{ $themeGreens }}" />
|
||||
<meta name="msapplication-TileImage" content="{{ asset('/img/favicon.png') }}" />
|
||||
|
||||
<link href="{{ Request::fullUrl() }}" rel="canonical">
|
||||
|
||||
@if (isset($favicon))
|
||||
<link rel="icon" href="{{ asset("/img/{$favicon}.ico") }}" type="image/x-icon">
|
||||
<link rel="shortcut icon" href="{{ asset("/img/{$favicon}.png") }}" type="image/png">
|
||||
@else
|
||||
<link rel="icon" href="{{ asset('/img/favicon.ico') }}" type="image/x-icon">
|
||||
<link rel="shortcut icon" href="{{ asset('/img/favicon.png') }}" type="image/png">
|
||||
@endif
|
||||
|
||||
<link rel="apple-touch-icon" href="{{ asset('/img/apple-touch-icon.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="{{ asset('/img/apple-touch-icon-57x57.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="{{ asset('/img/apple-touch-icon-72x72.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="{{ asset('/img/apple-touch-icon-114x114.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="{{ asset('/img/apple-touch-icon-120x120.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="{{ asset('/img/apple-touch-icon-144x144.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="{{ asset('/img/apple-touch-icon-152x152.png') }}">
|
||||
|
||||
<title>@yield('title', $siteTitle)</title>
|
||||
|
||||
@if($enableExternalDependencies)
|
||||
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,700&subset={{ $fontSubset }}" rel="stylesheet" type="text/css">
|
||||
@endif
|
||||
<link rel="stylesheet" href="{{ asset(mix('dist/css/app.css')) }} ">
|
||||
|
||||
@include('partials.stylesheet')
|
||||
|
||||
@include('partials.crowdin')
|
||||
|
||||
@if($appStylesheet)
|
||||
<style type="text/css">
|
||||
{!! $appStylesheet !!}
|
||||
</style>
|
||||
@endif
|
||||
|
||||
<script type="text/javascript">
|
||||
var Global = {};
|
||||
var refreshRate = parseInt("{{ $appRefreshRate }}");
|
||||
|
||||
function refresh() {
|
||||
window.location.reload(true);
|
||||
}
|
||||
|
||||
if (refreshRate > 0) {
|
||||
setTimeout(refresh, refreshRate * 1000);
|
||||
}
|
||||
|
||||
Global.locale = '{{ $appLocale }}';
|
||||
</script>
|
||||
<script src="{{ asset(mix('dist/js/manifest.js')) }}"></script>
|
||||
<script src="{{ asset(mix('dist/js/vendor.js')) }}"></script>
|
||||
</head>
|
||||
<body class="status-page @yield('bodyClass')">
|
||||
@yield('outer-content')
|
||||
|
||||
@include('partials.banner')
|
||||
|
||||
<div class="container" id="app">
|
||||
@yield('content')
|
||||
</div>
|
||||
|
||||
@yield('bottom-content')
|
||||
<script src="{{ asset(mix('dist/js/all.js')) }}"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,11 +0,0 @@
|
||||
@component('mail::message')
|
||||
# {{ trans('notifications.component.status_update.mail.greeting') }}
|
||||
|
||||
{{ $content }}
|
||||
|
||||
@lang('Thanks,')<br>
|
||||
{{ Config::get('setting.app_name') }}
|
||||
|
||||
@include('notifications.partials.subscription')
|
||||
|
||||
@endcomponent
|
||||
@@ -1,15 +0,0 @@
|
||||
@component('mail::message')
|
||||
# {{ trans('notifications.incident.new.mail.greeting', ['app_name' => Config::get('setting.app_name')]) }}
|
||||
|
||||
{{ $incident->message }}
|
||||
|
||||
@component('mail::button', ['url' => $actionUrl])
|
||||
{{ $actionText }}
|
||||
@endcomponent
|
||||
|
||||
@lang('Thanks,')<br>
|
||||
{{ Config::get('setting.app_name') }}
|
||||
|
||||
@include('notifications.partials.subscription')
|
||||
|
||||
@endcomponent
|
||||
@@ -1,15 +0,0 @@
|
||||
@component('mail::message')
|
||||
# {{ trans('notifications.incident.update.mail.title', ['name' => $incidentName, 'new_status' => $newStatus]) }}
|
||||
|
||||
{{ $update->message }}
|
||||
|
||||
@component('mail::button', ['url' => $actionUrl])
|
||||
{{ $actionText }}
|
||||
@endcomponent
|
||||
|
||||
@lang('Thanks,')<br>
|
||||
{{ Config::get('setting.app_name') }}
|
||||
|
||||
@include('notifications.partials.subscription')
|
||||
|
||||
@endcomponent
|
||||
@@ -1,3 +0,0 @@
|
||||
@component('mail::subcopy')
|
||||
[{{ $unsubscribeText }}]({{ $unsubscribeUrl }}) — [{{ $manageSubscriptionText }}]({{ $manageSubscriptionUrl }})
|
||||
@endcomponent
|
||||
@@ -1,11 +0,0 @@
|
||||
@component('mail::message')
|
||||
# {{ trans('notifications.schedule.new.mail.title') }}
|
||||
|
||||
{{ $content }}
|
||||
|
||||
@lang('Thanks,')<br>
|
||||
{{ Config::get('setting.app_name') }}
|
||||
|
||||
@include('notifications.partials.subscription')
|
||||
|
||||
@endcomponent
|
||||
@@ -1,7 +0,0 @@
|
||||
@if($aboutApp)
|
||||
<div class="about-app">
|
||||
<h2>{{ trans('cachet.about_this_site') }}</h2>
|
||||
{!! $aboutApp !!}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
@if($enableExternalDependencies)
|
||||
@if($appAnalytics)
|
||||
<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','https://www.google-analytics.com/analytics.js','ga');
|
||||
ga('create', '{{ $appAnalytics }}', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
@endif
|
||||
@if($appAnalyticsGoSquared)
|
||||
<script>
|
||||
!function(g,s,q,r,d){r=g[r]=g[r]||function(){(r.q=r.q||[]).push(
|
||||
arguments)};d=s.createElement(q);q=s.getElementsByTagName(q)[0];
|
||||
d.src='https://d1l6p2sc9645hc.cloudfront.net/tracker.js';q.parentNode.
|
||||
insertBefore(d,q)}(window,document,'script','_gs');
|
||||
_gs('{{ $appAnalyticsGoSquared }}');
|
||||
</script>
|
||||
@endif
|
||||
@if($appAnalyticsPiwikUrl)
|
||||
<script type="text/javascript">
|
||||
var _paq = _paq || [];
|
||||
_paq.push(['trackPageView']);
|
||||
_paq.push(['enableLinkTracking']);
|
||||
(function() {
|
||||
var u="{{ $appAnalyticsPiwikUrl }}";
|
||||
_paq.push(['setTrackerUrl', u+'/matomo.php']);
|
||||
_paq.push(['setSiteId', {{ $appAnalyticsPiwikSiteId }}]);
|
||||
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
|
||||
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'/matomo.js'; s.parentNode.insertBefore(g,s);
|
||||
})();
|
||||
</script>
|
||||
<noscript><p><img src="{{ $appAnalyticsPiwikUrl }}/matomo.php?idsite={{ $appAnalyticsPiwikSiteId }}" style="border:0;" alt="" /></p></noscript>
|
||||
@endif
|
||||
@endif
|
||||
@@ -1,19 +0,0 @@
|
||||
@if($appHeader)
|
||||
{!! $appHeader !!}
|
||||
@else
|
||||
@if($appBanner)
|
||||
<div @if($appBannerStyleFullWidth)class="app-banner"@endif>
|
||||
<div class="container">
|
||||
<div class="row app-banner-padding @if(!$appBannerStyleFullWidth) app-banner @endif">
|
||||
<div class="col-md-12 text-center">
|
||||
@if($appDomain)
|
||||
<a href="{{ $appDomain }}" class="links"><img src="data:{{ $appBannerType }};base64, {{ $appBanner }}" class="banner-image img-responsive"></a>
|
||||
@else
|
||||
<img src="data:{{ $appBannerType }};base64, {{ $appBanner }}" class="banner-image img-responsive">
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@endif
|
||||
@@ -1,15 +0,0 @@
|
||||
<li class="list-group-item {{ $component->group_id ? "sub-component" : "component" }} status-{{ $component->status }}">
|
||||
@if($component->link)
|
||||
<a href="{{ $component->link }}" target="_blank" class="links">{!! $component->name !!}</a>
|
||||
@else
|
||||
{!! $component->name !!}
|
||||
@endif
|
||||
|
||||
@if($component->description)
|
||||
<i class="ion ion-ios-help-outline help-icon" data-toggle="tooltip" data-title="{{ $component->description }}" data-container="body"></i>
|
||||
@endif
|
||||
|
||||
<div class="pull-right">
|
||||
<small class="text-component-{{ $component->status }} {{ $component->status_color }}" data-toggle="tooltip" title="{{ trans('cachet.components.last_updated', ['timestamp' => $component->updated_at_formatted]) }}">{{ $component->human_status }}</small>
|
||||
</div>
|
||||
</li>
|
||||
@@ -1,17 +0,0 @@
|
||||
<li class="list-group-item {{ $component->group_id ? "sub-component" : "component" }}">
|
||||
<div class="checkbox">
|
||||
<label for="component-{{ $component->id }}">
|
||||
<input type="checkbox"
|
||||
id="component-{{ $component->id }}"
|
||||
name="subscriptions[]"
|
||||
value="{{ $component->id }}"
|
||||
@if (in_array($component->id, $subscriptions) || $subscriber->global)
|
||||
checked="checked"
|
||||
@endif />
|
||||
{!! $component->name !!}
|
||||
</label>
|
||||
@if($component->description)
|
||||
<i class="ion ion-ios-help-outline help-icon" data-toggle="tooltip" data-title="{{ $component->description }}" data-container="body"></i>
|
||||
@endif
|
||||
</div>
|
||||
</li>
|
||||
@@ -1,34 +0,0 @@
|
||||
@if($componentGroups->isNotEmpty())
|
||||
@foreach($componentGroups as $componentGroup)
|
||||
<ul class="list-group components">
|
||||
@if($componentGroup->enabled_components->isNotEmpty())
|
||||
<li class="list-group-item group-name">
|
||||
<i class="{{ $componentGroup->collapse_class }} group-toggle"></i>
|
||||
<strong>{{ $componentGroup->name }}</strong>
|
||||
|
||||
<div class="pull-right">
|
||||
<i class="ion ion-ios-circle-filled text-component-{{ $componentGroup->lowest_status }} {{ $componentGroup->lowest_status_color }}" data-toggle="tooltip" title="{{ $componentGroup->lowest_human_status }}"></i>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<div class="group-items {{ $componentGroup->is_collapsed ? "hide" : null }}">
|
||||
@each('partials.component', $componentGroup->enabled_components, 'component')
|
||||
</div>
|
||||
@endif
|
||||
</ul>
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
@if($ungroupedComponents->isNotEmpty())
|
||||
<ul class="list-group components">
|
||||
<li class="list-group-item group-name">
|
||||
<strong>{{ trans('cachet.components.group.other') }}</strong>
|
||||
|
||||
<div class="pull-right">
|
||||
<i class="ion ion-ios-circle-filled text-component-{{ $ungroupedComponents->max('status') }} {{ $ungroupedComponents->first()->status_color }}" data-toggle="tooltip" title="{{ $ungroupedComponents->first()->human_status }}"></i>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
@each('partials.component', $ungroupedComponents, 'component')
|
||||
</ul>
|
||||
@endif
|
||||
@@ -1,33 +0,0 @@
|
||||
@if($componentGroups->isNotEmpty())
|
||||
@foreach($componentGroups as $componentGroup)
|
||||
<ul class="list-group components">
|
||||
@if($componentGroup->enabled_components->isNotEmpty())
|
||||
<li class="list-group-item group-name">
|
||||
<i class="{{ $componentGroup->collapse_class_with_subscriptions($subscriptions) }} group-toggle"></i>
|
||||
<strong>{{ $componentGroup->name }}</strong>
|
||||
<div class="pull-right text-muted small">
|
||||
<a href="#" class="select-group" id="select-all-{{$componentGroup->id}}">Select All</a>
|
||||
|
|
||||
<a href="#" class="deselect-group" id="deselect-all-{{$componentGroup->id}}">Deselect All</a>
|
||||
</div>
|
||||
</li>
|
||||
<div class="form-group group-items {{ $componentGroup->has_subscriber($subscriptions) ? null : "hide" }}">
|
||||
@foreach($componentGroup->enabled_components()->orderBy('order')->get() as $component)
|
||||
@include('partials.component_input', compact($component))
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
</ul>
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
@if($ungroupedComponents->isNotEmpty())
|
||||
<ul class="list-group components">
|
||||
<li class="list-group-item group-name">
|
||||
<strong>{{ trans('cachet.components.group.other') }}</strong>
|
||||
</li>
|
||||
@foreach($ungroupedComponents as $component)
|
||||
@include('partials.component_input', compact($component))
|
||||
@endforeach
|
||||
</ul>
|
||||
@endif
|
||||
@@ -1,7 +0,0 @@
|
||||
@if($appLocale === 'en-UD' && $enableExternalDependencies)
|
||||
<script type="text/javascript">
|
||||
var _jipt = [];
|
||||
_jipt.push(['project', 'cachet']);
|
||||
</script>
|
||||
<script type="text/javascript" src="//cdn.crowdin.com/jipt/jipt.js"></script>
|
||||
@endif
|
||||
@@ -1,15 +0,0 @@
|
||||
<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>
|
||||
@@ -1,15 +0,0 @@
|
||||
@if ($errors->any())
|
||||
@include('partials.error', ['level' => 'danger', 'title' => Session::get('title'), 'message' => $errors->all(':message')])
|
||||
@endif
|
||||
|
||||
@if ($message = Session::get('success'))
|
||||
@include('partials.error', ['level' => 'success', 'title' => Session::get('title'), 'message' => $message])
|
||||
@endif
|
||||
|
||||
@if ($message = Session::get('warning'))
|
||||
@include('partials.error', ['level' => 'warning', 'title' => Session::get('title'), 'message' => $message])
|
||||
@endif
|
||||
|
||||
@if ($message = Session::get('info'))
|
||||
@include('partials.error', ['level' => 'info', 'title' => Session::get('title'), 'message' => $message])
|
||||
@endif
|
||||
@@ -1,41 +0,0 @@
|
||||
@if($appFooter)
|
||||
{!! $appFooter !!}
|
||||
@else
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
@if($showSupport)
|
||||
<p>
|
||||
{!! trans('cachet.powered_by') !!}
|
||||
@if($showTimezone)
|
||||
{{ trans('cachet.timezone', ['timezone' => $timezone]) }}
|
||||
@endif
|
||||
</p>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-sm-8">
|
||||
<ul class="list-inline">
|
||||
@if($currentUser || $dashboardLink)
|
||||
<li>
|
||||
<a class="btn btn-link" href="{{ cachet_route('dashboard') }}">{{ trans('dashboard.dashboard') }}</a>
|
||||
</li>
|
||||
@endif
|
||||
@if($currentUser)
|
||||
<li>
|
||||
<a class="btn btn-link" href="{{ cachet_route('auth.logout') }}">{{ trans('dashboard.logout') }}</a>
|
||||
</li>
|
||||
@endif
|
||||
@if($enableSubscribers)
|
||||
<li>
|
||||
<a class="btn btn-success btn-outline" href="{{ cachet_route('subscribe') }}">{{ trans('cachet.subscriber.button') }}</a>
|
||||
</li>
|
||||
@endif
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
@endif
|
||||
|
||||
@include("partials.analytics")
|
||||
@@ -1,65 +0,0 @@
|
||||
<h4>{{ formatted_date($date) }}</h4>
|
||||
<div class="timeline">
|
||||
<div class="content-wrapper">
|
||||
@forelse($incidents as $incident)
|
||||
<div class="moment {{ $loop->first ? 'first' : null }}">
|
||||
<div class="row event clearfix">
|
||||
<div class="col-sm-1">
|
||||
<div class="status-icon status-{{ $incident->latest_human_status }}" data-toggle="tooltip" title="{{ $incident->latest_human_status }}" data-placement="left">
|
||||
<i class="{{ $incident->latest_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 incident">
|
||||
<div class="panel-heading">
|
||||
@if($currentUser)
|
||||
<div class="pull-right btn-group">
|
||||
<a href="{{ cachet_route('dashboard.incidents.edit', ['id' => $incident->id]) }}" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
<a href="{{ cachet_route('dashboard.incidents.delete', ['id' => $incident->id], 'delete') }}" class="btn btn-danger confirm-action" data-method='DELETE'>{{ trans('forms.delete') }}</a>
|
||||
</div>
|
||||
@endif
|
||||
@if($incident->component)
|
||||
<span class="label label-default">{{ $incident->component->name }}</span>
|
||||
@endif
|
||||
<strong>{{ $incident->name }}</strong>{{ $incident->isScheduled ? trans("cachet.incidents.scheduled_at", ["timestamp" => $incident->scheduled_at_diff]) : null }}
|
||||
<br>
|
||||
<small class="date">
|
||||
<a href="{{ cachet_route('incident', ['id' => $incident->id]) }}" class="links"><abbr class="timeago" data-toggle="tooltip" data-placement="right" title="{{ $incident->timestamp_formatted }}" data-timeago="{{ $incident->timestamp_iso }}"></abbr></a>
|
||||
</small>
|
||||
</div>
|
||||
<div class="panel-body markdown-body">
|
||||
{!! $incident->formatted_message !!}
|
||||
</div>
|
||||
@if($incident->updates->isNotEmpty())
|
||||
<div class="list-group">
|
||||
@foreach($incident->updates as $update)
|
||||
<li class="list-group-item incident-update-item">
|
||||
|
||||
<i class="{{ $update->icon }}" title="{{ $update->human_status }}" data-toggle="tooltip"></i>
|
||||
{!! $update->formatted_message !!}
|
||||
<small>
|
||||
<abbr class="timeago links" data-toggle="tooltip"
|
||||
data-placement="right" title="{{ $update->timestamp_formatted }}"
|
||||
data-timeago="{{ $update->timestamp_iso }}">
|
||||
</abbr>
|
||||
</small>
|
||||
<a href="{{ $update->permalink }}" class="pull-right"><span class="ion-ios-arrow-right"></span></a>
|
||||
|
||||
</li>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@empty
|
||||
<div class="panel panel-message incident">
|
||||
<div class="panel-body">
|
||||
<p>{{ trans('cachet.incidents.none') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
@endforelse
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,5 +0,0 @@
|
||||
@if($componentGroups->isNotEmpty() || $ungroupedComponents->isNotEmpty())
|
||||
<div class="section-components">
|
||||
@include('partials.components')
|
||||
</div>
|
||||
@endif
|
||||
@@ -1,3 +0,0 @@
|
||||
<div class="section-messages">
|
||||
@include('partials.errors')
|
||||
</div>
|
||||
@@ -1,13 +0,0 @@
|
||||
@if($displayMetrics && $appGraphs)
|
||||
<div class="section-metrics">
|
||||
@if($metrics->count() > 0)
|
||||
<ul class="list-group">
|
||||
@foreach($metrics as $metric)
|
||||
<li class="list-group-item metric" data-metric-id="{{ $metric->id }}">
|
||||
<metric-chart :metric="{{ $metric->toJson() }}" theme-light="{{ $themeMetrics }}" theme="{{ color_darken($themeMetrics, -0.1) }}" theme-dark="{{ color_darken($themeMetrics, -0.2) }}"></metric-chart>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
@@ -1,5 +0,0 @@
|
||||
@if($scheduledMaintenance->isNotEmpty())
|
||||
<div class="section-scheduled">
|
||||
@include('partials.schedule')
|
||||
</div>
|
||||
@endif
|
||||
@@ -1,3 +0,0 @@
|
||||
<div class="section-status">
|
||||
<div class="alert alert-{{ $systemStatus }}">{{ $systemMessage }}</div>
|
||||
</div>
|
||||
@@ -1,8 +0,0 @@
|
||||
@if($stickiedIncidents->isNotEmpty())
|
||||
<div class="section-stickied">
|
||||
<h1>{{ trans('cachet.incidents.stickied') }}</h1>
|
||||
@foreach($stickiedIncidents as $date => $incidents)
|
||||
@include('partials.incidents')
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
@@ -1,27 +0,0 @@
|
||||
@if($daysToShow > 0 && $allIncidents)
|
||||
<div class="section-timeline">
|
||||
<h1>{{ trans('cachet.incidents.past') }}</h1>
|
||||
@foreach($allIncidents as $date => $incidents)
|
||||
@include('partials.incidents', [@compact($date), @compact($incidents)])
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
<nav>
|
||||
<ul class="pager">
|
||||
@if($canPageBackward)
|
||||
<li class="previous">
|
||||
<a href="{{ cachet_route('status-page') }}?start_date={{ $previousDate }}" class="links">
|
||||
<span aria-hidden="true">←</span> {{ trans('pagination.previous') }}
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
@if($canPageForward)
|
||||
<li class="next">
|
||||
<a href="{{ cachet_route('status-page') }}?start_date={{ $nextDate }}" class="links">
|
||||
{{ trans('pagination.next') }} <span aria-hidden="true">→</span>
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
</ul>
|
||||
</nav>
|
||||
@endif
|
||||
@@ -1,28 +0,0 @@
|
||||
<div class="navbar navbar-custom" role="navigation">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<a class="navbar-brand" href="{{ cachet_route('status-page') }}"><span>{{ $appName }}</span></a>
|
||||
</div>
|
||||
|
||||
<div class="navbar-collapse collapse" id="navbar-menu">
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li><a href="{{ cachet_route('status-page') }}">{{ trans('cachet.home') }}</a></li>
|
||||
@if($currentUser)
|
||||
<li class="dropdown">
|
||||
<a href="#" data-toggle="dropdown">
|
||||
<i class="icon ion-person"></i> {{ $currentUser->username }}
|
||||
<span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu arrow">
|
||||
<li><a href="{{ cachet_route('dashboard.incidents.create') }}">{{ trans('dashboard.incidents.add.title') }}</a></li>
|
||||
<li><a href="{{ cachet_route('dashboard') }}">{{ trans('dashboard.dashboard') }}</a></li>
|
||||
<li><a href="{{ cachet_route('auth.logout') }}">{{ trans('dashboard.logout') }}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
@elseif($dashboardLink)
|
||||
<li><a href="{{ cachet_route('dashboard') }}">{{ trans('dashboard.dashboard') }}</a></li>
|
||||
@endif
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,24 +0,0 @@
|
||||
<div class="timeline schedule">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<strong>{{ trans('cachet.incidents.scheduled') }}</strong>
|
||||
</div>
|
||||
<div class="list-group">
|
||||
@foreach($scheduledMaintenance as $schedule)
|
||||
<div class="list-group-item" id="scheduled-{{ $schedule->id }}">
|
||||
<strong>{{ $schedule->name }}</strong> <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 class="pull-right"><a href="#scheduled-{{ $schedule->id }}"><i class="ion ion-link"></i></a></div>
|
||||
<div class="markdown-body">
|
||||
{!! $schedule->formatted_message !!}
|
||||
</div>
|
||||
@if($schedule->components->count() > 0)
|
||||
<hr>
|
||||
@foreach($schedule->components as $affectedComponent)
|
||||
<span class="label label-primary">{{ $affectedComponent->component->name }}</span>
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,125 +0,0 @@
|
||||
<style type="text/css">
|
||||
body.status-page {
|
||||
background-color: {{ $themeBackgroundColor }};
|
||||
color: {{ $themeTextColor }};
|
||||
@if($appBanner)
|
||||
padding-top: 0;
|
||||
@endif
|
||||
}
|
||||
p, strong { color: {{ $themeTextColor }} !important; }
|
||||
.reds { color: {{ $themeReds }} !important; }
|
||||
.blues { color: {{ $themeBlues }} !important; }
|
||||
.greens { color: {{ $themeGreens }} !important; }
|
||||
.yellows { color: {{ $themeYellows }} !important; }
|
||||
.oranges { color: {{ $themeOranges }} !important; }
|
||||
.greys { color: {{ $themeGreys }} !important; }
|
||||
.metrics { color: {{ $themeMetrics }} !important; }
|
||||
.links { color: {{ $themeLinks }} !important; }
|
||||
|
||||
/**
|
||||
* Banner background
|
||||
*/
|
||||
.app-banner {
|
||||
background-color: {{ $themeBannerBackgroundColor }} !important;
|
||||
}
|
||||
|
||||
.app-banner-padding {
|
||||
padding: {{ $themeBannerPadding }} !important;
|
||||
}
|
||||
|
||||
/**
|
||||
* Alert overrides.
|
||||
*/
|
||||
.alert {
|
||||
background-color: {{ $themeYellows }};
|
||||
border-color: {{ color_darken($themeYellows, -0.1) }};
|
||||
color: {{ color_contrast($themeYellows) }};
|
||||
}
|
||||
.alert.alert-success {
|
||||
background-color: {{ $themeGreens }};
|
||||
border-color: {{ color_darken($themeGreens, -0.1) }};
|
||||
color: {{ color_contrast($themeGreens) }};
|
||||
}
|
||||
.alert.alert-info {
|
||||
background-color: {{ $themeBlues }};
|
||||
border-color: {{ color_darken($themeBlues, -0.1) }};
|
||||
color: {{ color_contrast($themeBlues) }};
|
||||
}
|
||||
.alert.alert-danger {
|
||||
background-color: {{ $themeReds }};
|
||||
border-color: {{ color_darken($themeReds, -0.1) }};
|
||||
color: {{ color_contrast($themeReds) }};
|
||||
}
|
||||
|
||||
/**
|
||||
* Button Overrides
|
||||
*/
|
||||
.btn.links {
|
||||
color: {{ color_darken($themeYellows, -0.3) }};
|
||||
}
|
||||
.btn.btn-success {
|
||||
background-color: {{ $themeGreens }};
|
||||
border-color: {{ color_darken($themeGreens, -0.1) }};
|
||||
color: {{ color_contrast($themeGreens) }};
|
||||
}
|
||||
.btn.btn-success.links {
|
||||
color: {{ color_darken($themeGreens, -0.3) }};
|
||||
}
|
||||
.btn.btn-success.btn-outline {
|
||||
background-color: transparent;
|
||||
border-color: {{ $themeGreens }};
|
||||
color: {{ $themeGreens }};
|
||||
}
|
||||
.btn.btn-success.btn-outline:hover {
|
||||
background-color: {{ $themeGreens }};
|
||||
border-color: {{ color_darken($themeGreens, -0.1) }};
|
||||
color: {{ color_contrast($themeGreens) }};
|
||||
}
|
||||
.btn.btn-info {
|
||||
background-color: {{ $themeBlues }};
|
||||
border-color: {{ color_darken($themeBlues, -0.1) }};
|
||||
color: {{ color_contrast($themeBlues) }};
|
||||
}
|
||||
.btn.btn-info.links {
|
||||
color: {{ color_darken($themeBlues, -0.3) }};
|
||||
}
|
||||
.btn.btn-danger {
|
||||
background-color: {{ $themeReds }};
|
||||
border-color: {{ color_darken($themeReds, -0.1) }};
|
||||
color: {{ color_contrast($themeReds) }};
|
||||
}
|
||||
.btn.btn-danger.links {
|
||||
color: {{ color_darken($themeReds, -0.3) }};
|
||||
}
|
||||
|
||||
/**
|
||||
* Background fills Overrides
|
||||
*/
|
||||
.component {
|
||||
background-color: {{ $themeBackgroundFills }};
|
||||
border-color: {{ color_darken($themeBackgroundFills, -0.1) }};
|
||||
}
|
||||
.sub-component {
|
||||
background-color: {{ $themeBackgroundFills }};
|
||||
border-color: {{ color_darken($themeBackgroundFills, -0.1) }};
|
||||
}
|
||||
.incident {
|
||||
background-color: {{ $themeBackgroundFills }};
|
||||
border-color: {{ color_darken($themeBackgroundFills, -0.1) }};
|
||||
}
|
||||
.status-icon {
|
||||
background-color: {{ $themeBackgroundFills }};
|
||||
border-color: {{ color_darken($themeBackgroundFills, -0.1) }};
|
||||
}
|
||||
.panel.panel-message:before {
|
||||
border-left-color: {{ $themeBackgroundFills }} !important;
|
||||
border-right-color: {{ $themeBackgroundFills }} !important;
|
||||
}
|
||||
.panel.panel-message:after {
|
||||
border-left-color: {{ $themeBackgroundFills }} !important;
|
||||
border-right-color: {{ $themeBackgroundFills }} !important;
|
||||
}
|
||||
.footer a {
|
||||
color: {{ $themeTextColor }};
|
||||
}
|
||||
</style>
|
||||
@@ -1,241 +0,0 @@
|
||||
@extends('layout.clean')
|
||||
|
||||
@section('pageTitle', trans('setup.setup'))
|
||||
|
||||
@section('content')
|
||||
<div class="setup-page">
|
||||
<div class="text-center">
|
||||
<img class="logo" height="90" src="{{ asset('img/cachet-logo.svg') }}" alt="{{ trans('setup.title') }}">
|
||||
</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.env_setup') }}
|
||||
<span></span>
|
||||
</div>
|
||||
<div class="step">
|
||||
{{ 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>
|
||||
|
||||
<setup inline-template>
|
||||
<form class="form-horizontal" name="SetupForm" method="POST" id="setup-form" role="form">
|
||||
<div class="step block-1">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="col-xs-4">
|
||||
<label>{{ trans('forms.setup.cache_driver') }}</label>
|
||||
<select name="env[cache_driver]" class="form-control" required v-model="env.cache_driver">
|
||||
<option disabled>{{ trans('forms.setup.cache_driver') }}</option>
|
||||
@foreach($cacheDrivers as $driver => $driverName)
|
||||
<option value="{{ $driver }}" {{ Binput::old('env.cache_driver', $cacheConfig['driver']) == $driver ? "selected" : null }}>{{ $driverName }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@if($errors->has('env.cache_driver'))
|
||||
<span class="text-danger">{{ $errors->first('env.cache_driver') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<label>{{ trans('forms.setup.queue_driver') }}</label>
|
||||
<select name="env[queue_driver]" class="form-control" required v-model="env.queue_driver">
|
||||
<option disabled>{{ trans('forms.setup.queue_driver') }}</option>
|
||||
@foreach($queueDrivers as $driver => $driverName)
|
||||
<option value="{{ $driver }}" {{ Binput::old('env.queue_driver', $queueConfig['driver']) == $driver ? "selected" : null }}>{{ $driverName }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@if($errors->has('env.queue_driver'))
|
||||
<span class="text-danger">{{ $errors->first('env.queue_driver') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<label>{{ trans('forms.setup.session_driver') }}</label>
|
||||
<select name="env[session_driver]" class="form-control" required v-model="env.session_driver">
|
||||
<option disabled>{{ trans('forms.setup.session_driver') }}</option>
|
||||
@foreach($cacheDrivers as $driver => $driverName)
|
||||
<option value="{{ $driver }}" {{ Binput::old('env.session_driver', $sessionConfig['driver']) == $driver ? "selected" : null }}>{{ $driverName }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@if($errors->has('env.session_driver'))
|
||||
<span class="text-danger">{{ $errors->first('env.session_driver') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.setup.mail_driver') }}</label>
|
||||
<select name="env[mail_driver]" class="form-control" required v-model="env.mail_driver">
|
||||
<option disabled>{{ trans('forms.setup.mail_driver') }}</option>
|
||||
@foreach($mailDrivers as $driver => $driverName)
|
||||
<option value="{{ $driver }}" {{ Binput::old('env.mail_driver', $mailConfig['driver']) == $driver ? "selected" : null }}>{{ $driverName }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@if($errors->has('env.mail_driver'))
|
||||
<span class="text-danger">{{ $errors->first('env.mail_driver') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.setup.mail_host') }}</label>
|
||||
<input type="text" class="form-control" name="env[mail_host]" value="{{ Binput::old('env.mail_host', $mailConfig['host']) }}" placeholder="{{ trans('forms.setup.mail_host') }}" :required="mail.requiresHost">
|
||||
@if($errors->has('env.mail_host'))
|
||||
<span class="text-danger">{{ $errors->first('env.mail_host') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.setup.mail_address') }}</label>
|
||||
<input type="text" class="form-control" name="env[mail_address]" value="{{ Binput::old('env.mail_address', $mailConfig['from']['address']) }}" placeholder="notifications@alt-three.com">
|
||||
@if($errors->has('env.mail_address'))
|
||||
<span class="text-danger">{{ $errors->first('env.mail_address') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.setup.mail_username') }}</label>
|
||||
<input type="text" class="form-control" name="env[mail_username]" value="{{ Binput::old('env.mail_username', $mailConfig['username']) }}" placeholder="{{ trans('forms.setup.mail_username') }}" :required="mail.requiresUsername">
|
||||
@if($errors->has('env.mail_username'))
|
||||
<span class="text-danger">{{ $errors->first('env.mail_username') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.setup.mail_password') }}</label>
|
||||
<input type="password" class="form-control" name="env[mail_password]" value="{{ Binput::old('env.mail_password', $mailConfig['password']) }}" autocomplete="off" placeholder="{{ trans('forms.setup.mail_password') }}" :required="mail.requiresUsername">
|
||||
@if($errors->has('env.mail_password'))
|
||||
<span class="text-danger">{{ $errors->first('env.mail_password') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
</fieldset>
|
||||
<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>
|
||||
</div>
|
||||
<div class="step block-2 hidden">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.setup.site_name') }}</label>
|
||||
<input type="text" name="settings[app_name]" class="form-control" placeholder="{{ trans('forms.setup.site_name') }}" value="{{ Binput::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>{{ trans('forms.setup.site_domain') }}</label>
|
||||
<input type="text" name="settings[app_domain]" class="form-control" placeholder="{{ trans('forms.setup.site_domain') }}" value="{{ Binput::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>{{ trans('forms.setup.site_timezone') }}</label>
|
||||
<select name="settings[app_timezone]" class="form-control" required>
|
||||
<option value="">{{ trans('forms.general.timezone') }}</option>
|
||||
@foreach($timezones as $region => $list)
|
||||
<optgroup label="{{ $region }}">
|
||||
@foreach($list as $timezone => $name)
|
||||
<option value="{{ $timezone }}" @if(Binput::old('settings.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>{{ trans('forms.setup.site_locale') }}</label>
|
||||
<select name="settings[app_locale]" class="form-control" required>
|
||||
<option value="">Select Language</option>
|
||||
@foreach($langs as $key => $lang)
|
||||
<option value="{{ $key }}" @if(Binput::old('settings.app_locale') == $key || $userLanguage == $key) selected @endif>
|
||||
{{ $lang['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>
|
||||
<hr>
|
||||
<div class="form-group text-center">
|
||||
<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('pagination.next') }}
|
||||
</span>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="step block-3 hidden">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label>{{ trans("forms.setup.username") }}</label>
|
||||
<input type="text" name="user[username]" class="form-control" placeholder="{{ trans('forms.setup.username') }}" value="{{ Binput::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>{{ trans("forms.setup.email") }}</label>
|
||||
<input type="text" name="user[email]" class="form-control" placeholder="{{ trans('forms.setup.email') }}" value="{{ Binput::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>{{ trans("forms.setup.password") }}</label>
|
||||
<input type="password" name="user[password]" class="form-control" placeholder="{{ trans('forms.setup.password') }}" value="{{ Binput::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" >
|
||||
<input type="hidden" name="settings[app_refresh_rate]" value="0" >
|
||||
<span class="wizard-next btn btn-info" data-current-block="3" data-next-block="2">
|
||||
{{ trans('pagination.previous') }}
|
||||
</span>
|
||||
<span class="wizard-next btn btn-success" data-current-block="3" data-next-block="4" data-loading-text="<i class='icon ion-load-c'></i>">
|
||||
{{ trans("setup.complete_setup") }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="step block-4 hidden">
|
||||
<div class="setup-success">
|
||||
<i class="ion ion-checkmark-circled"></i>
|
||||
<h3>
|
||||
{{ trans("setup.completed") }}
|
||||
</h3>
|
||||
<a href="{{ cachet_route('dashboard') }}" class="btn btn-default">
|
||||
<span>{{ trans("setup.finish_setup") }}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</setup>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,53 +0,0 @@
|
||||
@extends('layout.master')
|
||||
|
||||
@section('title', trans('cachet.signup.title').' | '.$siteTitle)
|
||||
|
||||
@section('content')
|
||||
<div class="pull-right">
|
||||
<p><a class="btn btn-success btn-outline" href="{{ cachet_route('status-page') }}"><i class="ion ion-home"></i></a></p>
|
||||
</div>
|
||||
|
||||
<div class="clearfix"></div>
|
||||
|
||||
@if($appBanner)
|
||||
<div class="row app-banner">
|
||||
<div class="col-md-12 text-center">
|
||||
@if($appDomain)
|
||||
<a href="{{ $appDomain }}"><img src="data:{{ $appBannerType }};base64, {{ $appBanner }}" class="banner-image img-responsive"></a>
|
||||
@else
|
||||
<img src="data:{{ $appBannerType }};base64, {{ $appBanner }}" class="banner-image img-responsive">
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@include('partials.errors')
|
||||
|
||||
<div class="panel panel-message">
|
||||
<div class="panel-heading">
|
||||
<strong>{{ trans('cachet.signup.title') }}</strong>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="{{ cachet_route('signup.invite', ['code' => $code]) }}" method="post" class="form">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<div class="form-group">
|
||||
<label for="username">{{ trans('cachet.signup.username') }}</label>
|
||||
<input class="form-control" type="text" name="username" value="{{ $username }}" placeholder="{{ trans('cachet.signup.username') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="email">{{ trans('cachet.signup.email') }}</label>
|
||||
<input class="form-control" type="email" name="email" value="{{ $email }}" placeholder="{ trans('cachet.signup.email') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="password">{{ trans('cachet.signup.password') }}</label>
|
||||
<input class="form-control" type="password" name="password" placeholder="{{ trans('cachet.signup.password') }}">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.signup') }}</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
|
||||
@section('bottom-content')
|
||||
@include('partials.footer')
|
||||
@stop
|
||||
@@ -1,65 +0,0 @@
|
||||
@extends('layout.master')
|
||||
|
||||
@section('title', array_get($incident->meta, 'seo.title', $incident->name).' | '.$siteTitle)
|
||||
|
||||
@section('description', array_get($incident->meta, 'seo.description', trans('cachet.meta.description.incident', ['name' => $incident->name, 'date' => $incident->occurred_at_formatted])))
|
||||
|
||||
@section('bodyClass', 'no-padding')
|
||||
|
||||
@section('outer-content')
|
||||
@include('partials.nav')
|
||||
@stop
|
||||
|
||||
@section('content')
|
||||
<h1>{{ $incident->name }} <small>{{ $incident->occurred_at_formatted }}</small></h1>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="markdown-body">
|
||||
{!! $incident->formatted_message !!}
|
||||
</div>
|
||||
|
||||
@if($incident->updates)
|
||||
<div class="timeline">
|
||||
<div class="content-wrapper">
|
||||
@foreach ($incident->updates as $update)
|
||||
<div class="moment {{ $loop->first ? 'first' : null }}" id="update-{{ $update->id }}">
|
||||
<div class="row event clearfix">
|
||||
<div class="col-sm-1">
|
||||
<div class="status-icon status-{{ $update->status }}" data-toggle="tooltip" title="{{ $update->human_status }}" data-placement="left">
|
||||
<i class="{{ $update->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 incident">
|
||||
<div class="panel-body">
|
||||
@if($currentUser)
|
||||
<div class="pull-right btn-group">
|
||||
<a href="{{ cachet_route('dashboard.incidents.updates.edit', ['incident' => $incident, 'incident_update' => $update]) }}" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
</div>
|
||||
@endif
|
||||
<div class="markdown-body">
|
||||
{!! $update->formatted_message !!}
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-footer">
|
||||
<small>
|
||||
<span data-toggle="tooltip" title="
|
||||
{{ trans('cachet.incidents.posted_at', ['timestamp' => $update->created_at_formatted]) }}">
|
||||
{{ trans('cachet.incidents.posted', ['timestamp' => $update->created_at_diff,'username' => $update->user->username]) }}
|
||||
</span>
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@stop
|
||||
|
||||
@section('bottom-content')
|
||||
@include('partials.footer')
|
||||
@stop
|
||||
@@ -1,43 +0,0 @@
|
||||
@extends('layout.master')
|
||||
|
||||
@section('title', $schedule->name.' | '.$siteTitle)
|
||||
|
||||
@section('description', trans('cachet.meta.description.schedule', ['name' => $schedule->name, 'startDate' => $schedule->scheduled_at_formatted]))
|
||||
|
||||
@section('bodyClass', 'no-padding')
|
||||
|
||||
@section('outer-content')
|
||||
@include('partials.nav')
|
||||
@stop
|
||||
|
||||
@section('content')
|
||||
<h1>{{ $schedule->name }}</h1>
|
||||
|
||||
<div class="timeline">
|
||||
<div class="content-wrapper">
|
||||
<div class="moment first">
|
||||
<div class="row event clearfix">
|
||||
<div class="col-sm-1">
|
||||
<div class="status-icon status-{{ $schedule->status }}" data-toggle="tooltip" title="{{ $schedule->human_status }}" data-placement="left">
|
||||
<i class="icon ion-android-calendar"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-10 col-xs-offset-2 col-sm-11 col-sm-offset-0">
|
||||
<div class="panel panel-message incident">
|
||||
<div class="panel-heading">
|
||||
<strong>{{ $schedule->name }}</strong>{{ trans("cachet.incidents.scheduled_at", ["timestamp" => $schedule->scheduled_at_diff]) }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{!! $schedule->formatted_message !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
|
||||
@section('bottom-content')
|
||||
@include('partials.footer')
|
||||
@stop
|
||||
@@ -1,68 +0,0 @@
|
||||
@extends('layout.master')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="pull-right">
|
||||
<p><a class="btn btn-success btn-outline" href="{{ cachet_route('status-page') }}"><i class="ion ion-home"></i></a></p>
|
||||
</div>
|
||||
|
||||
<div class="clearfix"></div>
|
||||
|
||||
@include('partials.errors')
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-lg-offset-2 col-lg-8">
|
||||
<div class="text-center margin-bottom">
|
||||
<h1>{{ $appName }} {{ trans('cachet.subscriber.manage.notifications') }}</h1>
|
||||
<p>{{ trans('cachet.subscriber.manage.notifications_for') }} <strong>{{ $subscriber->email }}</strong></p>
|
||||
</div>
|
||||
<form action="{{ URL::signedRoute(cachet_route_generator('subscribe.manage'), ['code' => $subscriber->verify_code]) }}" method="post">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
@if($componentGroups->isNotEmpty() || $ungroupedComponents->isNotEmpty())
|
||||
@foreach($componentGroups as $componentGroup)
|
||||
<ul class="list-group">
|
||||
@if($componentGroup->enabled_components()->count() > 0)
|
||||
<li class="list-group-item group-name">
|
||||
<i class="{{ $componentGroup->collapse_class_with_subscriptions($subscriptions) }} group-toggle"></i>
|
||||
<strong>{{ $componentGroup->name }}</strong>
|
||||
<div class="pull-right text-muted small">
|
||||
<a href="javascript: void(0);" class="select-group" id="select-all-{{$componentGroup->id}}">{{ trans('cachet.components.select_all') }}</a>
|
||||
|
|
||||
<a href="javascript: void(0);" class="deselect-group" id="deselect-all-{{$componentGroup->id}}">{{ trans('cachet.components.deselect_all') }}</a>
|
||||
</div>
|
||||
</li>
|
||||
<div class="form-group group-items {{ $componentGroup->has_subscriber($subscriptions) ? null : "hide" }}">
|
||||
@foreach($componentGroup->enabled_components()->orderBy('order')->get() as $component)
|
||||
@include('partials.component_input', compact($component))
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
</ul>
|
||||
@endforeach
|
||||
|
||||
@if($ungroupedComponents->isNotEmpty())
|
||||
<ul class="list-group">
|
||||
<div class="list-group-item group-name">
|
||||
<strong>{{ trans('cachet.components.group.other') }}</strong>
|
||||
<div class="pull-right text-muted small">
|
||||
<a href="javascript: void(0);" class="select-group" id="select-all-{{$componentGroup->id}}">{{ trans('cachet.components.select_all') }}</a>
|
||||
|
|
||||
<a href="javascript: void(0);" class="deselect-group" id="deselect-all-{{$componentGroup->id}}">{{ trans('cachet.components.deselect_all') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
@foreach($ungroupedComponents as $component)
|
||||
@include('partials.component_input', compact($component))
|
||||
@endforeach
|
||||
</ul>
|
||||
@endif
|
||||
@else
|
||||
<p>{{ trans('cachet.subscriber.manage.no_subscriptions') }}</p>
|
||||
@endif
|
||||
|
||||
<div class="text-right">
|
||||
<button type="submit" class="btn btn-success">{{ trans('cachet.subscriber.manage.update_subscription') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -1,32 +0,0 @@
|
||||
@extends('layout.master')
|
||||
|
||||
@section('title', trans('cachet.subscriber.subscribe'). " | ". $siteTitle)
|
||||
|
||||
@section('description', trans('cachet.meta.description.subscribe', ['app' => $siteTitle]))
|
||||
|
||||
@section('content')
|
||||
<div class="pull-right">
|
||||
<p><a class="btn btn-success btn-outline" href="{{ cachet_route('status-page') }}"><i class="ion ion-home"></i></a></p>
|
||||
</div>
|
||||
|
||||
<div class="clearfix"></div>
|
||||
|
||||
@include('partials.errors')
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-lg-offset-2 col-lg-8">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">{{ trans('cachet.subscriber.subscribe') }}</div>
|
||||
<div class="panel-body">
|
||||
<form action="{{ cachet_route('subscribe', [], 'post') }}" method="POST" class="form">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<div class="form-group">
|
||||
<input class="form-control" type="email" name="email" placeholder="email@example.com">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-success">{{ trans('cachet.subscriber.button') }}</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
31
resources/views/vendor/cachet/status-page/index.blade.php
vendored
Normal file
31
resources/views/vendor/cachet/status-page/index.blade.php
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
<x-cachet::cachet>
|
||||
<x-cachet::header/>
|
||||
|
||||
<div class="mx-auto max-w-5xl px-4 py-10 sm:px-6 lg:px-8">
|
||||
<div>
|
||||
<h2 class="text-3xl font-semibold">About This Site</h2>
|
||||
<div class="prose prose-zinc mt-1 dark:prose-invert prose-a:text-primary-500 prose-a:underline">
|
||||
{{-- format-ignore-start --}}
|
||||
<p>
|
||||
This is the demo instance of <a href="https://cachethq.io/" target="_blank">Cachet</a>. The
|
||||
open-source status page system.
|
||||
</p>
|
||||
{{-- format-ignore-end --}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-6 space-y-10">
|
||||
<x-cachet::status-bar/>
|
||||
|
||||
@foreach($componentGroups as $componentGroup)
|
||||
<x-cachet::component-group :component-group="$componentGroup"/>
|
||||
@endforeach
|
||||
|
||||
<x-cachet::maintenance/>
|
||||
|
||||
<x-cachet::incidents/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<x-cachet::footer/>
|
||||
</x-cachet::cachet>
|
||||
@@ -1,19 +0,0 @@
|
||||
<table class="action" align="center" width="100%" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<table width="100%" border="0" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<table border="0" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td>
|
||||
<a href="{{ $url }}" class="button button-{{ $color ?? 'primary' }}" target="_blank">{{ $slot }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -1,11 +0,0 @@
|
||||
<tr>
|
||||
<td>
|
||||
<table class="footer" align="center" width="570" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td class="content-cell" align="center">
|
||||
{{ Illuminate\Mail\Markdown::parse($slot) }}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -1,7 +0,0 @@
|
||||
<tr>
|
||||
<td class="header">
|
||||
<a href="{{ $url }}">
|
||||
{{ $slot }}
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -1,54 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
</head>
|
||||
<body>
|
||||
<style>
|
||||
@media only screen and (max-width: 600px) {
|
||||
.inner-body {
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.footer {
|
||||
width: 100% !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 500px) {
|
||||
.button {
|
||||
width: 100% !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<table class="wrapper" width="100%" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<table class="content" width="100%" cellpadding="0" cellspacing="0">
|
||||
{{ $header ?? '' }}
|
||||
|
||||
<!-- Email Body -->
|
||||
<tr>
|
||||
<td class="body" width="100%" cellpadding="0" cellspacing="0">
|
||||
<table class="inner-body" align="center" width="570" cellpadding="0" cellspacing="0">
|
||||
<!-- Body content -->
|
||||
<tr>
|
||||
<td class="content-cell">
|
||||
{{ Illuminate\Mail\Markdown::parse($slot) }}
|
||||
|
||||
{{ $subcopy ?? '' }}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
{{ $footer ?? '' }}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,27 +0,0 @@
|
||||
@component('mail::layout')
|
||||
{{-- Header --}}
|
||||
@slot('header')
|
||||
@component('mail::header', ['url' => config('app.url')])
|
||||
{{ setting('app_name', config('app.name')) }}
|
||||
@endcomponent
|
||||
@endslot
|
||||
|
||||
{{-- Body --}}
|
||||
{{ $slot }}
|
||||
|
||||
{{-- Subcopy --}}
|
||||
@isset($subcopy)
|
||||
@slot('subcopy')
|
||||
@component('mail::subcopy')
|
||||
{{ $subcopy }}
|
||||
@endcomponent
|
||||
@endslot
|
||||
@endisset
|
||||
|
||||
{{-- Footer --}}
|
||||
@slot('footer')
|
||||
@component('mail::footer')
|
||||
© {{ date('Y') }} {{ setting('app_name', config('app.name')) }}. @lang('All rights reserved.')
|
||||
@endcomponent
|
||||
@endslot
|
||||
@endcomponent
|
||||
13
resources/views/vendor/mail/html/panel.blade.php
vendored
13
resources/views/vendor/mail/html/panel.blade.php
vendored
@@ -1,13 +0,0 @@
|
||||
<table class="panel" width="100%" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td class="panel-content">
|
||||
<table width="100%" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td class="panel-item">
|
||||
{{ Illuminate\Mail\Markdown::parse($slot) }}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user