Laravel 10 + Cachet Core

This commit is contained in:
James Brooks
2024-01-19 20:03:17 +00:00
parent 8b565ab7f0
commit cf674850dd
1271 changed files with 8105 additions and 123368 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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>
&gt; <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

View File

@@ -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>
&gt; <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

View File

@@ -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>
&gt; <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

View File

@@ -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>
&gt; <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

View File

@@ -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

View File

@@ -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

View File

@@ -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>
&gt; <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

View File

@@ -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>
&gt; <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

View File

@@ -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>&mdash; {{ 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

View File

@@ -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>
&gt; <small>{{ trans('dashboard.incidents.updates.title', ['incident' => $incident->name]) }}</small> &gt; <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

View File

@@ -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>
&gt; <small>{{ trans('dashboard.incidents.updates.title', ['incident' => $incident->name]) }}</small> &gt; <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

View File

@@ -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>
&gt; <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

View File

@@ -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

View File

@@ -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>
&gt; <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

View File

@@ -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>
&gt; <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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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>

View File

@@ -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

View File

@@ -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>

View File

@@ -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>

View File

@@ -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">&times;</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>

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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>
&gt; <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

View File

@@ -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>
&gt; <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

View File

@@ -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

View File

@@ -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

View File

@@ -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.'))

View File

@@ -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.')))

View File

@@ -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.'))

View File

@@ -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.'))

View File

@@ -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.'))

View File

@@ -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.'))

View File

@@ -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.')))

View File

@@ -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>

View File

@@ -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>

View File

@@ -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

View File

@@ -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

View File

@@ -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>

View File

@@ -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>

View File

@@ -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&amp;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>

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -1,3 +0,0 @@
@component('mail::subcopy')
[{{ $unsubscribeText }}]({{ $unsubscribeUrl }}) &mdash; [{{ $manageSubscriptionText }}]({{ $manageSubscriptionUrl }})
@endcomponent

View File

@@ -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

View File

@@ -1,7 +0,0 @@
@if($aboutApp)
<div class="about-app">
<h2>{{ trans('cachet.about_this_site') }}</h2>
{!! $aboutApp !!}
</div>
@endif

View File

@@ -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

View File

@@ -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

View File

@@ -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>

View File

@@ -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>

View File

@@ -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

View File

@@ -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>
&nbsp;|&nbsp;
<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

View File

@@ -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

View File

@@ -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">&times;</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>

View File

@@ -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

View File

@@ -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")

View File

@@ -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>

View File

@@ -1,5 +0,0 @@
@if($componentGroups->isNotEmpty() || $ungroupedComponents->isNotEmpty())
<div class="section-components">
@include('partials.components')
</div>
@endif

View File

@@ -1,3 +0,0 @@
<div class="section-messages">
@include('partials.errors')
</div>

View File

@@ -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

View File

@@ -1,5 +0,0 @@
@if($scheduledMaintenance->isNotEmpty())
<div class="section-scheduled">
@include('partials.schedule')
</div>
@endif

View File

@@ -1,3 +0,0 @@
<div class="section-status">
<div class="alert alert-{{ $systemStatus }}">{{ $systemMessage }}</div>
</div>

View File

@@ -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

View File

@@ -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">&larr;</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">&rarr;</span>
</a>
</li>
@endif
</ul>
</nav>
@endif

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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>
&nbsp;|&nbsp;
<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>
&nbsp;|&nbsp;
<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

View File

@@ -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

View 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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -1,7 +0,0 @@
<tr>
<td class="header">
<a href="{{ $url }}">
{{ $slot }}
</a>
</td>
</tr>

View File

@@ -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>

View File

@@ -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

View File

@@ -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