Resource changes

This commit is contained in:
James Brooks
2017-09-15 07:39:40 +01:00
parent 42502a0c84
commit d807770ff6
15 changed files with 615 additions and 440 deletions
+30 -3
View File
@@ -13,12 +13,39 @@ require('./bootstrap');
window.Vue = require('vue');
window.axios = require('axios');
window.axios.defaults.headers.common = {
'X-CSRF-Token': window.Global.csrfToken,
'X-Requested-With': 'XMLHttpRequest'
};
((win, doc) => {
/**
* Next, we will create a fresh Vue application instance and attach it to
* the page. Then, you may begin adding components to this application
* or customize the JavaScript scaffolding to fit your unique needs.
*/
const app = new Vue({
el: '#app'
});
new Vue({
el: '#app',
data () {
return {
// TODO: Fill this with the active user.
user: null,
messages: [
//
],
system: {
updateAvailable: false,
}
}
},
components: {
'setup': require('./components/Setup.js'),
'dashboard': require('./components/dashboard/Dashboard.js'),
'report-incident': require('./components/dashboard/ReportIncident.js'),
'invite-team': require('./components/dashboard/InviteTeam.js'),
}
})
})()
+3 -3
View File
@@ -3,7 +3,7 @@ $(function () {
$.ajaxPrefilter(function(options, originalOptions, jqXHR) {
var token;
if (! options.crossDomain) {
token = $('meta[name="token"]').attr('content');
token = window.Global.csrfToken;
if (token) {
jqXHR.setRequestHeader('X-CSRF-Token', token);
}
@@ -232,7 +232,7 @@ $(function () {
});
// Incident management
$('select[name=template]').on('change', function () {
/*$('select[name=template]').on('change', function () {
var $this = $(this).find('option:selected'),
slug = $this.val();
@@ -254,7 +254,7 @@ $(function () {
}
});
}
});
});*/
// Banner removal JS
$('#remove-banner').on('click', function (){
+49
View File
@@ -0,0 +1,49 @@
module.exports = {
props: [],
data () {
return {
env: {
cache_driver: null,
queue_driver: null,
session_driver: null,
mail_driver: null,
},
mail: {
host: null,
from: {
email: null,
name: 'status@cachethq.io',
},
username: null,
password: null,
requiresHost: true,
requiresUsername: true,
requiresPassword: true,
},
system: {
name: null,
domain: null,
timezone: null,
language: null
}
}
},
watch: {
'env.mail_driver' (driver) {
if (driver === 'log' || driver === 'mail') {
this.mail.requiresHost = false
this.mail.requiresUsername = false
this.mail.requiresPassword = false
} else if (driver === 'ses' || driver === 'mandrill') {
this.mail.requiresHost = false
this.mail.requiresUsername = true
this.mail.requiresPassword = true
} else {
this.mail.requiresHost = true
this.mail.requiresUsername = true
this.mail.requiresPassword = true
}
}
}
}
@@ -0,0 +1,16 @@
module.exports = {
props: ['welcome-user'],
mounted () {
if (this.welcomeUser) {
$('#welcome-modal').modal('show');
}
},
methods: {
fetchIncidentTimeline () {
//
},
fetchSubscriberTimeline () {
//
}
}
}
@@ -0,0 +1,29 @@
module.exports = {
data () {
return {
canRemove: true,
emails: [
{ email: '' },
{ email: '' },
{ email: '' },
{ email: '' },
{ email: '' },
]
}
},
methods: {
add () {
this.emails.push("")
},
remove (key) {
if (this.canRemove) {
this.$delete(this.emails, key)
}
},
},
watch: {
'emails' (val) {
this.canRemove = val.length > 1
}
}
}
@@ -0,0 +1,43 @@
module.exports = {
data () {
return {
template: null,
name: '',
status: null,
visible: 1,
sticky: 0,
message: '',
when: null,
notify: false,
component: {
id: null,
status: null
}
}
},
methods: {
getTemplate (template) {
axios.get('/dashboard/api/incidents/templates', {
params: {
slug: template
}
}).then(response => {
this.name = response.data.name
this.message = response.data.template
}).catch(response => {
(new Cachet.Notifier()).notify('There was an error finding that template.');
})
}
},
watch: {
'template' (template) {
this.getTemplate(template)
},
'component.id' (id) {
// If we unselect a component then reset the status.
if (id === '') {
this.component.status = null
}
}
}
}
+1 -1
View File
@@ -215,7 +215,7 @@ return [
],
'team' => [
'description' => 'Invite your team members by entering their email addresses here.',
'email' => 'Email #:id',
'email' => 'Your Team Members Email Address',
],
],
@@ -14,13 +14,14 @@
<div class="row">
<div class="col-md-12">
@include('dashboard.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($incident_templates->count() > 0)
<div class="form-group">
<label for="incident-template">{{ trans('forms.incidents.templates.template') }}</label>
<select class="form-control" name="template">
<select class="form-control" name="template" v-model="template">
<option selected></option>
@foreach($incident_templates as $tpl)
<option value="{{ $tpl->slug }}">{{ $tpl->name }}</option>
@@ -30,41 +31,41 @@
@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') }}">
<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">
<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">
<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">
<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">
<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">
<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">
<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>
@@ -72,7 +73,7 @@
@if(!$components_in_groups->isEmpty() || !$components_out_groups->isEmpty())
<div class="form-group">
<label>{{ trans('forms.incidents.component') }}</label>
<select name="component_id" class="form-control">
<select name="component_id" class="form-control" v-model="component.id">
<option value="" selected></option>
@foreach($components_in_groups as $group)
<optgroup label="{{ $group->name }}">
@@ -88,14 +89,14 @@
<span class='help-block'>{{ trans('forms.optional') }}</span>
</div>
@endif
<div class="form-group hidden" id="component-status">
<div class="form-group hidden" id="component-status" v-if="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 }}">
<input type="radio" name="component_status" value="{{ $statusID }}" v-model="component.status">
{{ $status }}
</label>
</div>
@@ -107,7 +108,7 @@
<div class="form-group">
<label>{{ trans('forms.incidents.message') }}</label>
<div class="markdown-control">
<textarea name="message" class="form-control autosize" rows="5" required>{{ Binput::old('message') }}</textarea>
<textarea name="message" class="form-control autosize" rows="5" required v-model="message">{{ Binput::old('message') }}</textarea>
</div>
</div>
<div class="form-group">
@@ -130,6 +131,7 @@
</div>
</div>
</form>
</report-incident>
</div>
</div>
</div>
+4 -1
View File
@@ -1,6 +1,8 @@
@extends('layout.dashboard')
@section('content')
<dashboard inline-template :welcome-user="{{ $welcome_user ? 'true' : 'false' }}">
<div>
<div class="header">
<div class="sidebar-toggler visible-xs">
<i class="ion ion-navicon"></i>
@@ -87,6 +89,7 @@
@endif
</div>
</div>
@includeWhen($welcome_user, 'dashboard.partials.welcome-modal')
</div>
</dashboard>
@stop
@@ -64,9 +64,3 @@
</div>
</div>
</div>
<script>
(function() {
$('#welcome-modal').modal('show');
}());
</script>
@@ -10,6 +10,7 @@
</span>
</div>
<div class="content-wrapper">
<invite-team inline-template>
<div class="row">
<div class="col-sm-12">
@include('dashboard.partials.errors')
@@ -18,19 +19,14 @@
<fieldset>
<div class="form-group">
<label>{{ trans('forms.user.team.description') }}</label>
<input type="email" class="form-control" name="emails[]" value="{{ Binput::old('emails')[0] }}" placeholder="{{ trans('forms.user.team.email', ['id' => 1]) }}" required>
</div>
<div class="form-group">
<input type="email" class="form-control" name="emails[]" value="{{ Binput::old('emails')[1] }}" placeholder="{{ trans('forms.user.team.email', ['id' => 2]) }}">
<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 class="form-group">
<input type="email" class="form-control" name="emails[]" value="{{ Binput::old('emails')[2] }}" placeholder="{{ trans('forms.user.team.email', ['id' => 3]) }}">
</div>
<div class="form-group">
<input type="email" class="form-control" name="emails[]" value="{{ Binput::old('emails')[3] }}" placeholder="{{ trans('forms.user.team.email', ['id' => 4]) }}">
</div>
<div class="form-group">
<input type="email" class="form-control" name="emails[]" value="{{ Binput::old('emails')[4] }}" placeholder="{{ trans('forms.user.team.email', ['id' => 5]) }}">
</div>
</fieldset>
@@ -38,10 +34,12 @@
<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
+7 -3
View File
@@ -23,7 +23,7 @@
<title>{{ $page_title or $site_title }}</title>
@if($enable_external_dependencies)
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,700&subset={{ $font_subset }}" rel="stylesheet" type="text/css">
{{-- <link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,700&subset={{ $font_subset }}" rel="stylesheet" type="text/css"> --}}
@endif
<link rel="stylesheet" href="{{ mix('dist/css/dashboard/dashboard.css') }}">
@yield('css')
@@ -34,12 +34,16 @@
var Global = {};
Global.locale = '{{ $app_locale }}';
</script>
<script src="{{ mix('dist/js/all.js') }}"></script>
<script src="{{ mix('dist/js/manifest.js') }}"></script>
<script src="{{ mix('dist/js/vendor.js') }}"></script>
</head>
<body class="@yield('bodyClass')">
<div class="content">
<div class="content" id="app">
@yield('content')
</div>
</body>
@yield('js')
<script src="{{ mix('dist/js/all.js') }}"></script>
</html>
+11 -7
View File
@@ -22,6 +22,12 @@
<title>{{ $page_title or $site_title }}</title>
<script>
window.Global = {}
Global.locale = '{{ $app_locale }}';
Global.csrfToken = '{{ csrf_token() }}';
</script>
@if($enable_external_dependencies)
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,700&subset={{ $font_subset }}" rel="stylesheet" type="text/css">
@endif
@@ -30,15 +36,12 @@
@include('partials.crowdin')
<script type="text/javascript">
var Global = {};
Global.locale = '{{ $app_locale }}';
</script>
<script src="{{ mix('dist/js/all.js') }}"></script>
<script src="{{ mix('dist/js/manifest.js') }}"></script>
<script src="{{ mix('dist/js/vendor.js') }}"></script>
</head>
<body class="dashboard">
<div class="wrapper">
<div class="wrapper" id="app">
@include('dashboard.partials.sidebar')
<div class="page-content">
@if(!$is_writeable)
@@ -56,6 +59,7 @@
@yield('content')
</div>
</div>
@yield('js')
</body>
@yield('js')
<script src="{{ mix('dist/js/all.js') }}"></script>
</html>
+4 -2
View File
@@ -76,17 +76,19 @@
Global.locale = '{{ $app_locale }}';
</script>
<script src="{{ mix('dist/js/all.js') }}"></script>
<script src="{{ mix('dist/js/manifest.js') }}"></script>
<script src="{{ mix('dist/js/vendor.js') }}"></script>
</head>
<body class="status-page @yield('bodyClass')">
@yield('outer-content')
@include('partials.banner')
<div class="container">
<div class="container" id="app">
@yield('content')
</div>
@yield('bottom-content')
</body>
<script src="{{ mix('dist/js/all.js') }}"></script>
</html>
+11 -7
View File
@@ -26,7 +26,10 @@
<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>
@@ -34,7 +37,7 @@
<div class="row">
<div class="col-xs-4">
<label>{{ trans('forms.setup.cache_driver') }}</label>
<select name="env[cache_driver]" class="form-control" required>
<select name="env[cache_driver]" class="form-control" required v-model="env.cache_driver">
<option disabled>{{ trans('forms.setup.cache_driver') }}</option>
@foreach($cache_drivers as $driver => $driverName)
<option value="{{ $driver }}" {{ Binput::old('env.cache_driver', $cache_config['driver']) == $driver ? "selected" : null }}>{{ $driverName }}</option>
@@ -46,7 +49,7 @@
</div>
<div class="col-xs-4">
<label>{{ trans('forms.setup.queue_driver') }}</label>
<select name="env[queue_driver]" class="form-control" required>
<select name="env[queue_driver]" class="form-control" required v-model="env.queue_driver">
<option disabled>{{ trans('forms.setup.queue_driver') }}</option>
@foreach($queue_drivers as $driver => $driverName)
<option value="{{ $driver }}" {{ Binput::old('env.queue_driver', $queue_config['driver']) == $driver ? "selected" : null }}>{{ $driverName }}</option>
@@ -58,7 +61,7 @@
</div>
<div class="col-xs-4">
<label>{{ trans('forms.setup.session_driver') }}</label>
<select name="env[session_driver]" class="form-control" required>
<select name="env[session_driver]" class="form-control" required v-model="env.session_driver">
<option disabled>{{ trans('forms.setup.session_driver') }}</option>
@foreach($cache_drivers as $driver => $driverName)
<option value="{{ $driver }}" {{ Binput::old('env.session_driver', $session_config['driver']) == $driver ? "selected" : null }}>{{ $driverName }}</option>
@@ -73,7 +76,7 @@
<hr>
<div class="form-group">
<label>{{ trans('forms.setup.mail_driver') }}</label>
<select name="env[mail_driver]" class="form-control" required>
<select name="env[mail_driver]" class="form-control" required v-model="env.mail_driver">
<option disabled>{{ trans('forms.setup.mail_driver') }}</option>
@foreach($mail_drivers as $driver => $driverName)
<option value="{{ $driver }}" {{ Binput::old('env.mail_driver', $mail_config['driver']) == $driver ? "selected" : null }}>{{ $driverName }}</option>
@@ -83,7 +86,7 @@
<span class="text-danger">{{ $errors->first('env.mail_driver') }}</span>
@endif
</div>
<div class="form-group">
<div class="form-group" v-if="mail.requiresHost">
<label>{{ trans('forms.setup.mail_host') }} (optional)</label>
<input type="text" class="form-control" name="env[mail_host]" value="{{ Binput::old('env.mail_host', $mail_config['host']) }}" placeholder="{{ trans('forms.setup.mail_host') }}">
@if($errors->has('env.mail_host'))
@@ -97,14 +100,14 @@
<span class="text-danger">{{ $errors->first('env.mail_address') }}</span>
@endif
</div>
<div class="form-group">
<div class="form-group" v-if="mail.requiresUsername">
<label>{{ trans('forms.setup.mail_username') }}</label>
<input type="text" class="form-control" name="env[mail_username]" value="{{ Binput::old('env.mail_username', $mail_config['username']) }}" placeholder="{{ trans('forms.setup.mail_username') }}">
@if($errors->has('env.mail_username'))
<span class="text-danger">{{ $errors->first('env.mail_username') }}</span>
@endif
</div>
<div class="form-group">
<div class="form-group" v-if="mail.requiresPassword">
<label>{{ trans('forms.setup.mail_password') }}</label>
<input type="password" class="form-control" name="env[mail_password]" value="{{ Binput::old('env.mail_password', $mail_config['password']) }}" autocomplete="off" placeholder="{{ trans('forms.setup.mail_password') }}">
@if($errors->has('env.mail_password'))
@@ -233,6 +236,7 @@
</div>
</div>
</form>
</setup>
</div>
</div>
@stop