Cachet is now a Laravel 5 app
This commit is contained in:
256
resources/assets/js/app.js
Normal file
256
resources/assets/js/app.js
Normal file
@@ -0,0 +1,256 @@
|
||||
$(function() {
|
||||
// Ajax Setup
|
||||
$.ajaxPrefilter(function(options, originalOptions, jqXHR) {
|
||||
var token;
|
||||
if (! options.crossDomain) {
|
||||
token = $('meta[name="token"]').attr('content');
|
||||
if (token) {
|
||||
return jqXHR.setRequestHeader('X-CSRF-Token', token);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$.ajaxSetup({
|
||||
statusCode: {
|
||||
401: function () {
|
||||
window.location.href = '/';
|
||||
},
|
||||
403: function () {
|
||||
window.location.href = '/';
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Prevent double form submission
|
||||
$('form').submit(function() {
|
||||
var $form = $(this);
|
||||
$form.find(':submit').prop('disabled', true);
|
||||
});
|
||||
|
||||
// Mock the DELETE form requests.
|
||||
$('[data-method]').not(".disabled").append(function() {
|
||||
var methodForm = "\n";
|
||||
methodForm += "<form action='" + $(this).attr('href') + "' method='POST' style='display:none'>\n";
|
||||
methodForm += " <input type='hidden' name='_method' value='" + $(this).attr('data-method') + "'>\n";
|
||||
if ($(this).attr('data-token')) {
|
||||
methodForm += "<input type='hidden' name='_token' value='" + $(this).attr('data-token') + "'>\n";
|
||||
}
|
||||
methodForm += "</form>\n";
|
||||
return methodForm;
|
||||
})
|
||||
.removeAttr('href')
|
||||
.attr('onclick', ' if ($(this).hasClass(\'confirm-action\')) { if(confirm("Are you sure you want to do this?")) { $(this).find("form").submit(); } } else { $(this).find("form").submit(); }');
|
||||
|
||||
// Messenger config
|
||||
Messenger.options = {
|
||||
extraClasses: 'messenger-fixed messenger-on-top',
|
||||
theme: 'air'
|
||||
};
|
||||
|
||||
// App setup
|
||||
window.CachetHQ = {};
|
||||
|
||||
moment.locale(Global.locale);
|
||||
|
||||
$('abbr.timeago').each(function () {
|
||||
var $el = $(this);
|
||||
$el
|
||||
.livestamp($el.data('timeago'))
|
||||
.tooltip();
|
||||
});
|
||||
|
||||
window.CachetHQ.Notifier = function () {
|
||||
this.notify = function (message, type, options) {
|
||||
type = (typeof type === 'undefined' || type === 'error') ? 'error' : type;
|
||||
|
||||
var defaultOptions = {
|
||||
message: message,
|
||||
type: type,
|
||||
showCloseButton: true
|
||||
};
|
||||
|
||||
options = _.extend(defaultOptions, options);
|
||||
|
||||
Messenger().post(options);
|
||||
};
|
||||
};
|
||||
|
||||
$(".sidebar-toggler").click(function(e) {
|
||||
e.preventDefault();
|
||||
$(".wrapper").toggleClass("toggled");
|
||||
});
|
||||
|
||||
$('.color-code').minicolors({
|
||||
control: 'hue',
|
||||
defaultValue: $(this).val() || '',
|
||||
inline: false,
|
||||
letterCase: 'lowercase',
|
||||
opacity: false,
|
||||
position: 'bottom left',
|
||||
theme: 'bootstrap'
|
||||
});
|
||||
|
||||
$('[data-toggle="tooltip"]').tooltip();
|
||||
|
||||
$('button.close').on('click', function() {
|
||||
$(this).parents('div.alert').addClass('hide');
|
||||
});
|
||||
|
||||
$('form[name=IncidentForm] select[name=incident\\[component_id\\]]').on('change', function() {
|
||||
var $option = $(this).find('option:selected');
|
||||
var $componentStatus = $('#component-status');
|
||||
|
||||
if ($option.val() !== '') {
|
||||
if ($componentStatus.hasClass('hidden')) {
|
||||
$componentStatus.removeClass('hidden');
|
||||
} else {
|
||||
$componentStatus.addClass('hidden');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Date picker.
|
||||
$('input[rel=datepicker]').datetimepicker({
|
||||
format: "DD/MM/YYYY HH:mm",
|
||||
minDate: new Date(), // Don't allow dates before today.
|
||||
sideBySide: true,
|
||||
icons: {
|
||||
time: 'ion-clock',
|
||||
date: 'ion-android-calendar',
|
||||
up: 'ion-ios-arrow-up',
|
||||
down: 'ion-ios-arrow-down',
|
||||
previous: 'ion-ios-arrow-left',
|
||||
next: 'ion-ios-arrow-right',
|
||||
today: 'ion-android-home',
|
||||
clear: 'ion-trash-a',
|
||||
}
|
||||
});
|
||||
|
||||
// Sortable components.
|
||||
var componentList = document.getElementById("component-list");
|
||||
if (componentList) {
|
||||
new Sortable(componentList, {
|
||||
group: "omega",
|
||||
handle: ".drag-handle",
|
||||
onUpdate: function() {
|
||||
// Loop each component, setting the order input to the new order.
|
||||
var $components = $('#component-list .striped-list-item');
|
||||
$.each($components, function(id) {
|
||||
// Order should start from 1 now.
|
||||
$(this).find('input[rel=order]').val(id + 1);
|
||||
});
|
||||
|
||||
// Now POST the form to the internal API.
|
||||
$.ajax({
|
||||
async: true,
|
||||
url: '/dashboard/api/components/order',
|
||||
type: 'POST',
|
||||
data: $('form[name=componentList]').serializeObject(),
|
||||
success: function() {
|
||||
(new CachetHQ.Notifier()).notify('Components updated.', 'success');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Toggle inline component statuses.
|
||||
$('form.component-inline').on('click', 'input[type=radio]', function() {
|
||||
var $form = $(this).parents('form');
|
||||
var formData = $form.serializeObject();
|
||||
|
||||
$.ajax({
|
||||
async: true,
|
||||
url: '/dashboard/api/components/' + formData.component_id,
|
||||
type: 'POST',
|
||||
data: formData,
|
||||
success: function(component) {
|
||||
(new CachetHQ.Notifier()).notify($form.data('messenger'), 'success');
|
||||
},
|
||||
error: function(a, b, c) {
|
||||
(new CachetHQ.Notifier()).notify('Something went wrong updating the component.');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Incident management
|
||||
$('select[name=template]').on('change', function() {
|
||||
var $this = $(this).find('option:selected'),
|
||||
slug = $this.val();
|
||||
|
||||
// Only fetch the template if we've picked one.
|
||||
if (slug) {
|
||||
$.ajax({
|
||||
async: true,
|
||||
dataType: 'json',
|
||||
data: {
|
||||
slug: slug
|
||||
},
|
||||
url: '/dashboard/api/incidents/templates',
|
||||
success: function(tpl) {
|
||||
var $form = $('form[role=form]');
|
||||
$form.find('input[name=incident\\[name\\]]').val(tpl.name);
|
||||
$form.find('textarea[name=incident\\[message\\]]').val(tpl.template);
|
||||
},
|
||||
error: function() {
|
||||
(new CachetHQ.Notifier()).notify('There was an error finding that template.');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Banner removal JS
|
||||
$('#remove-banner').click(function(){
|
||||
$('#banner-view').remove();
|
||||
$('input[name=remove_banner]').val('1');
|
||||
});
|
||||
|
||||
// Setup wizard
|
||||
$('.wizard-next').on('click', function () {
|
||||
var $form = $('#setup-form'),
|
||||
$btn = $(this),
|
||||
current = $btn.data('currentBlock'),
|
||||
next = $btn.data('nextBlock');
|
||||
|
||||
$btn.button('loading');
|
||||
|
||||
// Only validate going forward. If current group is invalid, do not go further
|
||||
if (next > current) {
|
||||
var url = '/setup/step' + current;
|
||||
$.post(url, $form.serializeObject())
|
||||
.done(function(response) {
|
||||
goToStep(current, next);
|
||||
})
|
||||
.fail(function(response) {
|
||||
var errors = _.toArray(response.responseJSON.errors);
|
||||
_.each(errors, function(error) {
|
||||
(new CachetHQ.Notifier()).notify(error);
|
||||
});
|
||||
})
|
||||
.always(function() {
|
||||
$btn.button('reset');
|
||||
});
|
||||
|
||||
return false;
|
||||
} else {
|
||||
goToStep(current, next);
|
||||
$btn.button('reset');
|
||||
}
|
||||
});
|
||||
|
||||
function goToStep(current, next) {
|
||||
// validation was ok. We can go on next step.
|
||||
$('.block-' + current)
|
||||
.removeClass('show')
|
||||
.addClass('hidden');
|
||||
|
||||
$('.block-' + next)
|
||||
.removeClass('hidden')
|
||||
.addClass('show');
|
||||
|
||||
$('.steps .step')
|
||||
.removeClass("active")
|
||||
.filter(":lt(" + (next) + ")")
|
||||
.addClass("active");
|
||||
}
|
||||
});
|
||||
24
resources/assets/sass/_errors.scss
Normal file
24
resources/assets/sass/_errors.scss
Normal file
@@ -0,0 +1,24 @@
|
||||
body.error-page {
|
||||
background-color: #f3f3f4;
|
||||
|
||||
.middle-box {
|
||||
height: 400px;
|
||||
width: 400px;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-top: -250px;
|
||||
margin-left: -200px;
|
||||
z-index: 100;
|
||||
|
||||
h1 {
|
||||
font-size: 9em;
|
||||
}
|
||||
}
|
||||
|
||||
h3 {
|
||||
&.font-bold {
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
}
|
||||
3
resources/assets/sass/_helpers.scss
Normal file
3
resources/assets/sass/_helpers.scss
Normal file
@@ -0,0 +1,3 @@
|
||||
.uppercase {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
41
resources/assets/sass/_palette.scss
Normal file
41
resources/assets/sass/_palette.scss
Normal file
@@ -0,0 +1,41 @@
|
||||
// Theme colours.
|
||||
$cachet-base-light: #fff;
|
||||
$cachet-base-medium: #f0f3f4;
|
||||
$cachet-base-dark: #333;
|
||||
|
||||
$cachet-primary: #7ED321;
|
||||
$cachet-secondary: #6DB81C;
|
||||
|
||||
$cachet-link: #7ed321;
|
||||
$cachet-link-hover: #01579b;
|
||||
|
||||
$cachet-gray-light: #e8e8e8;
|
||||
$cachet-gray: #999;
|
||||
$cachet-gray-darker: #666;
|
||||
|
||||
$cachet-icons: #5e5e5e;
|
||||
|
||||
// Statuses
|
||||
$cachet-green: $cachet-primary;
|
||||
$cachet-dark-green: darken($cachet-green, 10%);
|
||||
|
||||
$cachet-blue: #3498db;
|
||||
$cachet-dark-blue: darken($cachet-blue, 10%);
|
||||
|
||||
$cachet-red: #ff6f6f;
|
||||
$cachet-dark-red: darken($cachet-red, 10%);
|
||||
|
||||
$cachet-teal: #0dccc0;
|
||||
$cachet-dark-teal: darken($cachet-teal, 10%);
|
||||
|
||||
$cachet-yellow: #F7CA18;
|
||||
$cachet-dark-yellow: darken($cachet-yellow, 10%);
|
||||
|
||||
$cachet-pink: #b23f73;
|
||||
$cachet-dark-pink: darken($cachet-pink, 10%);
|
||||
|
||||
$cachet-grey: #ecf0f1;
|
||||
$cachet-dark-grey: darken($cachet-grey, 10%);
|
||||
|
||||
$cachet-orange: #FF8800;
|
||||
$dark-orange: darken($cachet-orange, 10%);
|
||||
323
resources/assets/sass/_status-page.scss
Normal file
323
resources/assets/sass/_status-page.scss
Normal file
@@ -0,0 +1,323 @@
|
||||
body.status-page {
|
||||
font-family: 'Open Sans', 'Helevetic Neue', Arial, sans-serif;
|
||||
background-color: #F0F3F4;
|
||||
color: #333333;
|
||||
font-size: 1.4em;
|
||||
font-weight: $base-font-weight;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
|
||||
hr {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5 {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.tooltip {
|
||||
.tooltip-inner {
|
||||
padding: 8px 12px;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
.help-icon {
|
||||
cursor: help;
|
||||
}
|
||||
|
||||
.text-success, .text-component-1 {
|
||||
color: $cachet_green;
|
||||
}
|
||||
|
||||
.text-info, .text-component-2 {
|
||||
color: $cachet_blue;
|
||||
}
|
||||
|
||||
.text-alert, .text-component-3 {
|
||||
color: $cachet_yellow;
|
||||
}
|
||||
|
||||
.text-danger, .text-component-4 {
|
||||
color: $cachet_red;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 960px;
|
||||
margin-bottom: 40px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.page-header {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.app-banner {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.about-app {
|
||||
margin-top: 40px;
|
||||
margin-bottom: 40px;
|
||||
p {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
}
|
||||
|
||||
.alert {
|
||||
border-radius: 0;
|
||||
font-size: 1.2em;
|
||||
&.alert-success {
|
||||
background-color: $cachet_green;
|
||||
border-color: $cachet_dark-green;
|
||||
color: white;
|
||||
}
|
||||
|
||||
&.alert-info {
|
||||
background: $cachet_blue;
|
||||
border-color: $cachet_dark-blue;
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
&.alert-danger {
|
||||
background: $cachet_red;
|
||||
border-color: $cachet_dark-red;
|
||||
color: #FFF;
|
||||
}
|
||||
}
|
||||
|
||||
.timeline {
|
||||
.content-wrapper {
|
||||
margin-top: 40px;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
h3 {
|
||||
margin-top: 30px;
|
||||
margin-bottom: 40px;
|
||||
font-size: 22px;
|
||||
small {
|
||||
margin-left: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
.panel {
|
||||
.panel-body {
|
||||
h1 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 4px;
|
||||
font-size: 2em;
|
||||
}
|
||||
h2 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 4px;
|
||||
font-size: 1.8em;
|
||||
}
|
||||
h3 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 4px;
|
||||
font-size: 1.6em;
|
||||
}
|
||||
h4 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 4px;
|
||||
font-size: 1.4em;
|
||||
}
|
||||
h5 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 4px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
p {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.moment {
|
||||
width: 100%;
|
||||
padding-bottom: 10px;
|
||||
position: relative;
|
||||
&.first {
|
||||
&:before {
|
||||
height: 130%;
|
||||
top: -20px;
|
||||
}
|
||||
&:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 23px;
|
||||
top: -20px;
|
||||
width: 7px;
|
||||
height: 7px;
|
||||
background: $cachet_gray_light;
|
||||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
&:before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 26px;
|
||||
top: 5px;
|
||||
width: 2px;
|
||||
height: 100%;
|
||||
background: #7266BA;
|
||||
}
|
||||
.status-icon {
|
||||
background: #fff;
|
||||
width: 35px;
|
||||
height: 35px;
|
||||
border-radius: 50%;
|
||||
border: 1px solid #e8e8e8;
|
||||
position: absolute;
|
||||
left: 25px;
|
||||
top: 14px;
|
||||
.icon {
|
||||
position: absolute;
|
||||
top: 7px;
|
||||
left: 11px;
|
||||
|
||||
&.ion-alert {
|
||||
left: 15px;
|
||||
}
|
||||
}
|
||||
&.status-0 {
|
||||
color: $cachet_pink;
|
||||
}
|
||||
&.status-1 {
|
||||
color: $cachet_orange;
|
||||
}
|
||||
&.status-2 {
|
||||
color: $cachet_yellow;
|
||||
}
|
||||
&.status-3 {
|
||||
color: $cachet_blue;
|
||||
}
|
||||
&.status-4 {
|
||||
color: $cachet_green;
|
||||
}
|
||||
}
|
||||
&.last:before {
|
||||
background: #fff;
|
||||
}
|
||||
.panel {
|
||||
margin: 0;
|
||||
border-radius: 2px;
|
||||
|
||||
&.panel-message {
|
||||
border: 1px solid #e8e8e8;
|
||||
.date {
|
||||
color: darken(#c7c7c7, 20%);
|
||||
}
|
||||
|
||||
&:before {
|
||||
position: absolute;
|
||||
top: 16px;
|
||||
left: 1px;
|
||||
display: inline-block;
|
||||
border-top: 15px solid transparent;
|
||||
border-left: 0 solid #e8e8e8;
|
||||
border-right: 15px solid #e8e8e8;
|
||||
border-bottom: 15px solid transparent;
|
||||
content: " ";
|
||||
}
|
||||
|
||||
&:after {
|
||||
position: absolute;
|
||||
top: 17px;
|
||||
left: 2px;
|
||||
display: inline-block;
|
||||
border-top: 14px solid transparent;
|
||||
border-left: 0 solid #fff;
|
||||
border-right: 14px solid #fff;
|
||||
border-bottom: 14px solid transparent;
|
||||
content: " ";
|
||||
}
|
||||
}
|
||||
|
||||
.panel-body {
|
||||
border-top: 1px solid #eee;
|
||||
p {
|
||||
margin: 0;
|
||||
font-size: 1em;
|
||||
// font-weight: normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.timeline .moment .content {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.list-group {
|
||||
margin-bottom: 20px;
|
||||
padding-left: 0;
|
||||
border-radius: 0;
|
||||
|
||||
.list-group-item {
|
||||
border-radius: 0;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid $cachet_gray_light;
|
||||
font-size: 1.1em;
|
||||
padding: 15px 15px;
|
||||
|
||||
a {
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
h4 {
|
||||
margin: 0;
|
||||
font-weight: 400;
|
||||
max-width: 90%;
|
||||
}
|
||||
|
||||
p, time {
|
||||
margin-bottom: 0;
|
||||
line-height: 1.3em;
|
||||
}
|
||||
|
||||
&.group-name {
|
||||
font-size: 1.2em;
|
||||
background-color: $cachet_gray_light;
|
||||
padding: {
|
||||
top: 0.6em;
|
||||
bottom: 0.6em;
|
||||
}
|
||||
}
|
||||
|
||||
&.sub-component {
|
||||
&:before {
|
||||
@extend .ion;
|
||||
content: $ionicon-var-ios-plus-outline;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
&.break {
|
||||
padding: 1px;
|
||||
background-color: $cachet_gray_light;
|
||||
}
|
||||
}
|
||||
|
||||
&.components {
|
||||
margin-bottom: 30px;
|
||||
p {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.badge {
|
||||
color: transparent;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
footer.footer {
|
||||
padding-top: 40px;
|
||||
padding-bottom: 40px;
|
||||
color: #777;
|
||||
text-align: center;
|
||||
border-top: 1px solid $cachet_gray_light;
|
||||
background-color: lighten($cachet_gray_light, 5%);
|
||||
}
|
||||
}
|
||||
41
resources/assets/sass/main.scss
Normal file
41
resources/assets/sass/main.scss
Normal file
@@ -0,0 +1,41 @@
|
||||
@import "palette";
|
||||
|
||||
$ionicons-font-path: "../../../fonts" !default;
|
||||
@import "./bower_components/ionicons/scss/ionicons";
|
||||
|
||||
@import "modules/bootstrap";
|
||||
|
||||
html, body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
@import "helpers";
|
||||
|
||||
// Module overrides
|
||||
@import "modules/tabs";
|
||||
@import "modules/forms";
|
||||
@import "modules/well";
|
||||
|
||||
// Styles for partials
|
||||
@import "partials/base";
|
||||
@import "partials/wrapper";
|
||||
@import "partials/navbar";
|
||||
@import "partials/sidebar";
|
||||
@import "partials/content";
|
||||
@import "partials/modals";
|
||||
|
||||
// Styles for specific page
|
||||
@import "pages/login";
|
||||
@import "pages/setup";
|
||||
@import "pages/dashboard";
|
||||
|
||||
// Styles for plugins
|
||||
@import "plugins/messenger";
|
||||
@import "plugins/animate";
|
||||
@import "plugins/bootstrap-datetimepicker/bootstrap-datetimepicker";
|
||||
|
||||
// Status Page will need to override certain styles.
|
||||
@import "status-page";
|
||||
|
||||
// Error pages can have their own overrides.
|
||||
@import "errors";
|
||||
52
resources/assets/sass/modules/_bootstrap.scss
Normal file
52
resources/assets/sass/modules/_bootstrap.scss
Normal file
@@ -0,0 +1,52 @@
|
||||
// Bootstrap variable overrides and custom variables
|
||||
@import "variables";
|
||||
|
||||
// Core variables and mixins
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/variables";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins";
|
||||
|
||||
// Reset and dependencies
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/normalize";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/print";
|
||||
|
||||
// Core CSS
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/scaffolding";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/type";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/code";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/grid";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/tables";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/forms";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/buttons";
|
||||
|
||||
// Components
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/component-animations";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/dropdowns";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/button-groups";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/input-groups";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/navs";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/navbar";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/breadcrumbs";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/pagination";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/pager";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/labels";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/badges";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/jumbotron";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/thumbnails";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/alerts";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/progress-bars";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/media";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/list-group";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/panels";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/responsive-embed";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/wells";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/close";
|
||||
|
||||
// Components w/ JavaScript
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/modals";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/tooltip";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/popovers";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/carousel";
|
||||
|
||||
// Utility classes
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/utilities";
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/responsive-utilities";
|
||||
55
resources/assets/sass/modules/_forms.scss
Normal file
55
resources/assets/sass/modules/_forms.scss
Normal file
@@ -0,0 +1,55 @@
|
||||
label {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
textarea {
|
||||
resize: none;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.markdown-control {
|
||||
position: relative;
|
||||
|
||||
&:before {
|
||||
position:absolute;
|
||||
display:block;
|
||||
right:0%;
|
||||
bottom:0%;
|
||||
width:40px;
|
||||
height:40px;
|
||||
font-size: 2em;
|
||||
font-family: "Ionicons";
|
||||
content: "\f4e6";
|
||||
}
|
||||
}
|
||||
|
||||
.form-control {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 34px;
|
||||
padding: 6px 12px;
|
||||
font-size: 14px;
|
||||
line-height: 1.42857143;
|
||||
color: #555;
|
||||
background-color: #fff;
|
||||
background-image: none;
|
||||
border: 1px solid #ccc;
|
||||
@include box-shadow(none !important);
|
||||
@include transition(border-color ease-in-out .15s, box-shadow ease-in-out .15s);
|
||||
|
||||
&:focus {
|
||||
border-color: #66afe9;
|
||||
}
|
||||
}
|
||||
|
||||
.component-inline {
|
||||
@media (max-width: $screen-xs-max) {
|
||||
.radio-items {
|
||||
text-align: left;
|
||||
.radio-inline {
|
||||
margin-left: 0;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
27
resources/assets/sass/modules/_tabs.scss
Normal file
27
resources/assets/sass/modules/_tabs.scss
Normal file
@@ -0,0 +1,27 @@
|
||||
div[role=tabpanel] {
|
||||
ul.nav-tabs {
|
||||
border-bottom: 1px solid #d5d8d7;
|
||||
li {
|
||||
a {
|
||||
font-weight: 400;
|
||||
display: inline-block;
|
||||
padding: 10px 25px;
|
||||
border-radius: 0;
|
||||
font-size: 0.9em;
|
||||
letter-spacing: 0.01em;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tab-content {
|
||||
border: {
|
||||
left: 1px solid #d5d8d7;
|
||||
bottom: 1px solid #d5d8d7;
|
||||
right: 1px solid #d5d8d7;
|
||||
}
|
||||
background-color: white;
|
||||
.tab-pane {
|
||||
padding: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
39
resources/assets/sass/modules/_variables.scss
Normal file
39
resources/assets/sass/modules/_variables.scss
Normal file
@@ -0,0 +1,39 @@
|
||||
// Brand colours.
|
||||
$brand-primary: darken(#428bca, 6.5%) !default;
|
||||
$brand-success: $cachet-primary !default;
|
||||
$brand-info: $cachet-blue !default;
|
||||
$brand-warning: $cachet-orange !default;
|
||||
$brand-danger: $cachet-red !default;
|
||||
|
||||
// Default border radius
|
||||
$border-radius-base: 2px !default;
|
||||
$border-radius-large: 4px !default;
|
||||
$border-radius-small: 1px !default;
|
||||
|
||||
//** Tooltip background color
|
||||
$tooltip-bg: #333 !default;
|
||||
$tooltip-opacity: .9 !default;
|
||||
$base-background-color: #f1f1f1;
|
||||
|
||||
$base-font-family: "Lato", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
|
||||
$base-font-weight: 400;
|
||||
$base-letter-spacing: 0.08em;
|
||||
$base-font-size: 15px;
|
||||
$base-line-height: 1.42857143;
|
||||
|
||||
$base-link-color: #ffffff;
|
||||
$base-link-hover-color: #e9e9e9;
|
||||
|
||||
$header-background-color: lighten(#00695C, 10%);
|
||||
$header-border-color: 1px solid darken($header-background-color, 10%);
|
||||
|
||||
$sidebar-transition-speed: .2s;
|
||||
$sidebar-background-color: #F0F3F4;
|
||||
$sidebar-border-color: 1px solid rgba(255, 255, 255, .1);
|
||||
$sidebar-border-shadow: inset 0px -2px 3px rgba(0,0,0,0.25);
|
||||
$sidebar-text-size: 0.9em;
|
||||
$sidebar-text-color: #333;
|
||||
$sidebar-text-active-color: #333;
|
||||
$sidebar-normal-width: 230px;
|
||||
$sidebar-phone-width: 75%;
|
||||
$sidebar-active-color: #00695C;
|
||||
3
resources/assets/sass/modules/_well.scss
Normal file
3
resources/assets/sass/modules/_well.scss
Normal file
@@ -0,0 +1,3 @@
|
||||
.well {
|
||||
border-radius: 0;
|
||||
}
|
||||
8
resources/assets/sass/pages/_dashboard.scss
Normal file
8
resources/assets/sass/pages/_dashboard.scss
Normal file
@@ -0,0 +1,8 @@
|
||||
.componet-inline-update {
|
||||
@extend .text-right;
|
||||
padding-top: 8px;
|
||||
label {
|
||||
display: initial;
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
18
resources/assets/sass/pages/_login.scss
Normal file
18
resources/assets/sass/pages/_login.scss
Normal file
@@ -0,0 +1,18 @@
|
||||
.login {
|
||||
padding-top: 90px;
|
||||
}
|
||||
|
||||
.login .logo {
|
||||
display: block;
|
||||
margin: 0 auto 30px;
|
||||
}
|
||||
|
||||
.login legend {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
font-size: 24px;
|
||||
font-weight: 500;
|
||||
text-align: center;
|
||||
margin: 0 0 30px 0;
|
||||
}
|
||||
66
resources/assets/sass/pages/_setup.scss
Normal file
66
resources/assets/sass/pages/_setup.scss
Normal file
@@ -0,0 +1,66 @@
|
||||
.setup-page {
|
||||
padding-top: 60px;
|
||||
.logo {
|
||||
display: block;
|
||||
margin: 0 auto 30px;
|
||||
}
|
||||
.steps {
|
||||
@extend .row;
|
||||
margin: 0 auto;
|
||||
border-radius: 2px 2px 0 0;
|
||||
margin-bottom: 20px;
|
||||
.step {
|
||||
@extend .col-xs-4;
|
||||
padding: 20px 0;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
font-size: 13px;
|
||||
&:not(:last-child):after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
bottom: 31px;
|
||||
left: 55%;
|
||||
display: block;
|
||||
height: 1px;
|
||||
background: #94A1B8;
|
||||
width: 100%;
|
||||
}
|
||||
span {
|
||||
width: 23px;
|
||||
height: 23px;
|
||||
display: block;
|
||||
position: relative;
|
||||
margin: 0 auto;
|
||||
margin-top: 13px;
|
||||
border-radius: 25px;
|
||||
background: $cachet-base-medium;
|
||||
border: 1px solid #94A1B8;
|
||||
-webkit-transition: all 0.2s linear;
|
||||
-moz-transition: all 0.2s linear;
|
||||
-ms-transition: all 0.2s linear;
|
||||
-o-transition: all 0.2s linear;
|
||||
transition: all 0.2s linear;
|
||||
}
|
||||
|
||||
&.active {
|
||||
span {
|
||||
background: $cachet-primary;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.setup-success {
|
||||
text-align: center;
|
||||
i {
|
||||
font-size: 47px;
|
||||
}
|
||||
h3 {
|
||||
margin-top: 25px;
|
||||
font-size: 21px;
|
||||
color: #556579;
|
||||
}
|
||||
.btn {
|
||||
margin-top: 40px;
|
||||
}
|
||||
}
|
||||
}
|
||||
60
resources/assets/sass/partials/_base.scss
Normal file
60
resources/assets/sass/partials/_base.scss
Normal file
@@ -0,0 +1,60 @@
|
||||
body.dashboard {
|
||||
font-family: $base-font-family;
|
||||
font-weight: $base-font-weight;
|
||||
font-size: $base-font-size;
|
||||
letter-spacing: $base-letter-spacing;
|
||||
display: table;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
table-layout: fixed;
|
||||
line-height: $base-line-height;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
|
||||
.wrapper {
|
||||
padding-left: 0;
|
||||
-webkit-transition: all 0.5s ease;
|
||||
-moz-transition: all 0.5s ease;
|
||||
-o-transition: all 0.5s ease;
|
||||
transition: all 0.5s ease;
|
||||
}
|
||||
|
||||
.wrapper.toggled {
|
||||
padding-left: $sidebar-normal-width;;
|
||||
}
|
||||
|
||||
.wrapper.toggled .sidebar {
|
||||
width: $sidebar-normal-width;;
|
||||
}
|
||||
|
||||
.wrapper.toggled .page-content {
|
||||
position: absolute;
|
||||
margin-right: -$sidebar-normal-width;;
|
||||
}
|
||||
|
||||
@media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
|
||||
.wrapper {
|
||||
padding-left: 80px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: $screen-sm-max) {
|
||||
.wrapper {
|
||||
padding-left: $sidebar-normal-width;
|
||||
}
|
||||
|
||||
.wrapper.toggled {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.wrapper.toggled .page-content {
|
||||
position: relative;
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.alerts {
|
||||
.alert h5 {
|
||||
margin-top: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
112
resources/assets/sass/partials/_content.scss
Normal file
112
resources/assets/sass/partials/_content.scss
Normal file
@@ -0,0 +1,112 @@
|
||||
body.dashboard {
|
||||
.page-content {
|
||||
width: 100%;
|
||||
.content-wrapper {
|
||||
padding-top: 20px;
|
||||
padding-left: 40px;
|
||||
padding-right: 40px;
|
||||
&.header-fixed {
|
||||
margin-top: 60px;
|
||||
}
|
||||
}
|
||||
.header {
|
||||
position: relative;
|
||||
top: 0;
|
||||
left: 0;
|
||||
color: #333;
|
||||
background-color: #fff;
|
||||
padding: 22px 40px;
|
||||
width: 100%;
|
||||
height: 70px;
|
||||
font-size: 1.2em;
|
||||
border-bottom: 1px solid #eee;
|
||||
z-index: 99;
|
||||
&.sub-header {
|
||||
padding: 8px 2px;
|
||||
height: 50px;
|
||||
}
|
||||
&.fixed {
|
||||
position: fixed;
|
||||
padding-left: 270px;
|
||||
}
|
||||
input, button, .btn {
|
||||
position: relative;
|
||||
top: -4px;
|
||||
}
|
||||
input {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
+ .row {
|
||||
margin-top: 23px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
color: #444;
|
||||
margin-top: 0;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
}
|
||||
|
||||
.sub-header {
|
||||
font-weight: 300;
|
||||
text-transform: uppercase;
|
||||
a {
|
||||
text-transform: none;
|
||||
}
|
||||
}
|
||||
|
||||
.striped-list {
|
||||
.striped-list-item {
|
||||
border-bottom: 1px solid #f0f0f0;
|
||||
padding: 8px 0;
|
||||
}
|
||||
}
|
||||
|
||||
.user-grid {
|
||||
.user {
|
||||
img {
|
||||
border-radius: 5px;
|
||||
margin-bottom: 15px;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.name {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.email {
|
||||
color: #444;
|
||||
margin-top: 4px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Header media queries
|
||||
@media (max-width: $screen-xs-max) {
|
||||
.page-content {
|
||||
.content-wrapper {
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
.header {
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
&.fixed {
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
|
||||
.page-content {
|
||||
.header.fixed {
|
||||
padding-left: 120px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
64
resources/assets/sass/partials/_modals.scss
Normal file
64
resources/assets/sass/partials/_modals.scss
Normal file
@@ -0,0 +1,64 @@
|
||||
#welcome-modal {
|
||||
.modal-dialog {
|
||||
margin-top: 65px;
|
||||
}
|
||||
|
||||
.modal-content {
|
||||
.modal-header {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.modal-body {
|
||||
padding-bottom: 50px;
|
||||
|
||||
header {
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
font-size: 22px;
|
||||
color: #444;
|
||||
margin-bottom: 23px;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 13px;
|
||||
color: #555;
|
||||
margin: 0 auto;
|
||||
width: 80%;
|
||||
text-align: center;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.go-dashboard {
|
||||
text-align: center;
|
||||
display: block;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.get-started {
|
||||
margin-top: 40px;
|
||||
|
||||
.col-md-4 {
|
||||
text-align: center;
|
||||
padding-bottom: 50px;
|
||||
a {
|
||||
i {
|
||||
font-size: 38px;
|
||||
color: $cachet-secondary;
|
||||
display: block;
|
||||
}
|
||||
|
||||
color: $cachet-gray-darker;
|
||||
display: block;
|
||||
margin-top: 12px;
|
||||
font-size: 13px;
|
||||
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
color: $cachet-gray;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
48
resources/assets/sass/partials/_navbar.scss
Normal file
48
resources/assets/sass/partials/_navbar.scss
Normal file
@@ -0,0 +1,48 @@
|
||||
body.dashboard {
|
||||
.navbar {
|
||||
z-index: 999;
|
||||
border-radius: 0px;
|
||||
border: none;
|
||||
border-bottom: $header-border-color;
|
||||
background: $header-background-color;
|
||||
margin: 0;
|
||||
a, a:active, a:visited {
|
||||
color: $base-link-color;
|
||||
&:hover {
|
||||
color: $base-link-hover-color;
|
||||
}
|
||||
}
|
||||
.navbar-toggle {
|
||||
margin-top: 15px;
|
||||
background: transparent;
|
||||
border-color: transparent;
|
||||
&.collapsed span {
|
||||
background-color: $base-link-color;
|
||||
}
|
||||
}
|
||||
.navbar-collapse {
|
||||
background: $header-background-color;
|
||||
}
|
||||
a.navbar-brand {
|
||||
padding: 34px 21px;
|
||||
line-height: 0em;
|
||||
font-size: 1.1em;
|
||||
letter-spacing: 0.04em;
|
||||
font-weight: 600;
|
||||
text-transform: uppercase;
|
||||
@media #{$screen-sm-max} {
|
||||
span {
|
||||
padding-right: 10px;
|
||||
&:before {
|
||||
font-family: FontAwesome;
|
||||
content: "\f060";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.nav li a {
|
||||
height: 68px;
|
||||
line-height: 35px;
|
||||
}
|
||||
}
|
||||
}
|
||||
278
resources/assets/sass/partials/_sidebar.scss
Normal file
278
resources/assets/sass/partials/_sidebar.scss
Normal file
@@ -0,0 +1,278 @@
|
||||
body.dashboard {
|
||||
.sidebar {
|
||||
position: fixed;
|
||||
left: $sidebar-normal-width;
|
||||
width: 0;
|
||||
height: 100%;
|
||||
margin-left: -$sidebar-normal-width;
|
||||
overflow-y: auto;
|
||||
background: $sidebar-background-color;
|
||||
@include box-shadow($sidebar-border-shadow);
|
||||
z-index: 1000;
|
||||
-webkit-transition: all 0.5s ease;
|
||||
-moz-transition: all 0.5s ease;
|
||||
-o-transition: all 0.5s ease;
|
||||
transition: all 0.5s ease;
|
||||
|
||||
.sidebar-inner {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: $sidebar-normal-width;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
|
||||
.profile {
|
||||
padding: 20px 10px;
|
||||
margin-bottom: 0;
|
||||
.dropdown-toggle {
|
||||
text-decoration: none;
|
||||
}
|
||||
.dropdown-menu {
|
||||
top: 108%;
|
||||
}
|
||||
.avatar {
|
||||
width: 60px;
|
||||
margin-right: 10px;
|
||||
img {
|
||||
border-radius: 50%;
|
||||
width: 50px;
|
||||
}
|
||||
}
|
||||
.profile {
|
||||
&.username {
|
||||
word-break: break-all;
|
||||
color: $sidebar-text-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
.quick-add-incident {
|
||||
@extend .text-center;
|
||||
padding: 10px;
|
||||
}
|
||||
ul {
|
||||
clear: both;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
|
||||
li {
|
||||
font-size: $sidebar-text-size;
|
||||
&:last-child {
|
||||
border-bottom: $sidebar-border-color;
|
||||
}
|
||||
&.active {
|
||||
background: lighten($sidebar-background-color, 2%);
|
||||
a {
|
||||
padding-top: 14px;
|
||||
padding-bottom: 14px;
|
||||
border-top: 1px solid #BED3EA;
|
||||
border-bottom: 1px solid #BED3EA;
|
||||
color: $sidebar-text-active-color;
|
||||
}
|
||||
}
|
||||
a {
|
||||
display: block;
|
||||
padding: 15px;
|
||||
color: $sidebar-text-color;
|
||||
i {
|
||||
font-size: 18px;
|
||||
min-width: 17px;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
top: 1px;
|
||||
}
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
span {
|
||||
&.label {
|
||||
float: right;
|
||||
margin: 6px 0;
|
||||
&.label-info {
|
||||
background-color: $cachet-primary;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.sub-nav-item {
|
||||
a {
|
||||
padding-left: 40px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.bottom-menu-sidebar {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
width: 230px;
|
||||
z-index: 999;
|
||||
ul > li {
|
||||
float: left;
|
||||
display: block;
|
||||
width: 33.333%;
|
||||
border-right: 1px solid #ddd;
|
||||
border-top: 1px solid #ddd;
|
||||
a {
|
||||
display: block;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
padding: 6px 0;
|
||||
background: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Sidebar media queries
|
||||
@media (min-width: $screen-xs-max) {
|
||||
.sidebar {
|
||||
width: $sidebar-normal-width;
|
||||
}
|
||||
|
||||
.wrapper.toggled .sidebar {
|
||||
width: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
|
||||
.sidebar {
|
||||
width: 80px;
|
||||
left: 150px;
|
||||
margin-left: -150px;
|
||||
.sidebar-inner {
|
||||
width: 80px;
|
||||
.profile .avatar img {
|
||||
width: 40px;
|
||||
}
|
||||
.profile .username-wrapper {
|
||||
@extend .hidden-sm;
|
||||
}
|
||||
.quick-add-incident {
|
||||
.btn {
|
||||
padding: 3px 6px;
|
||||
}
|
||||
i {
|
||||
@extend .visible-sm;
|
||||
font-size: 20px;
|
||||
}
|
||||
span {
|
||||
@extend .hidden-sm;
|
||||
}
|
||||
}
|
||||
& > ul > li > a {
|
||||
text-align: center;
|
||||
& > i {
|
||||
font-size: 25px;
|
||||
}
|
||||
& > span {
|
||||
@extend .hidden-sm;
|
||||
}
|
||||
}
|
||||
}
|
||||
.bottom-menu-sidebar {
|
||||
@extend .hidden-sm;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar-toggler {
|
||||
float: left;
|
||||
padding: 10px;
|
||||
position: relative;
|
||||
top: -15px;
|
||||
left: -5px;
|
||||
margin-right: 10px;
|
||||
cursor: pointer;
|
||||
i {
|
||||
font-size: 25px;
|
||||
}
|
||||
}
|
||||
|
||||
.sub-sidebar {
|
||||
left: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
position: fixed;
|
||||
margin-left: 228px;
|
||||
width: 22%;
|
||||
background: #fcfcfc;
|
||||
border-right: 1px solid #E8ECF1;
|
||||
|
||||
h3 {
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
font-size: 19px;
|
||||
padding: 30px 0;
|
||||
}
|
||||
|
||||
ul.menu {
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
|
||||
li {
|
||||
a {
|
||||
color: #666;
|
||||
display: block;
|
||||
padding: 13px 30px;
|
||||
font-size: 15px;
|
||||
transition: all 0.2s linear;
|
||||
text-decoration: none;
|
||||
|
||||
&.active {
|
||||
color: $cachet-secondary;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: $cachet-secondary;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar-toggler {
|
||||
position: absolute;
|
||||
top: 3px;
|
||||
left: 20px;
|
||||
font-size: 36px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
+ .content-wrapper {
|
||||
top: 0;
|
||||
position: relative;
|
||||
margin-left: 26%;
|
||||
padding-right: 40px !important;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Sub-sidebar media queries
|
||||
@media (max-width: $screen-xs-max) {
|
||||
.sub-sidebar {
|
||||
position: relative;
|
||||
margin-left: 0;
|
||||
width: 100%;
|
||||
+ .content-wrapper {
|
||||
margin-left: 0;
|
||||
padding-left: 40px !important;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
|
||||
.sub-sidebar {
|
||||
margin-left: 80px;
|
||||
width: 25%;
|
||||
+ .content-wrapper {
|
||||
padding-left: 45px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
0
resources/assets/sass/partials/_variables.scss
Normal file
0
resources/assets/sass/partials/_variables.scss
Normal file
8
resources/assets/sass/partials/_wrapper.scss
Normal file
8
resources/assets/sass/partials/_wrapper.scss
Normal file
@@ -0,0 +1,8 @@
|
||||
body.dashboard {
|
||||
.wrapper {
|
||||
width: 100%;
|
||||
display: table;
|
||||
height: 100%;
|
||||
table-layout: fixed;
|
||||
}
|
||||
}
|
||||
13
resources/assets/sass/plugins/_animate.scss
Normal file
13
resources/assets/sass/plugins/_animate.scss
Normal file
@@ -0,0 +1,13 @@
|
||||
@import "./bower_components/animate-sass/animate";
|
||||
|
||||
body {
|
||||
-webkit-backface-visibility: hidden; // Addresses a small issue in webkit: http://bit.ly/NEdoDq
|
||||
}
|
||||
.animated {
|
||||
@include animate-prefixer(animation-duration, $base-duration);
|
||||
@include animate-prefixer(animation-fill-mode, both);
|
||||
|
||||
&.hinge {
|
||||
@include animate-prefixer(animation-duration, $base-duration * 2);
|
||||
}
|
||||
}
|
||||
459
resources/assets/sass/plugins/_messenger.scss
Normal file
459
resources/assets/sass/plugins/_messenger.scss
Normal file
@@ -0,0 +1,459 @@
|
||||
ul.messenger {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
ul.messenger > li {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
ul.messenger.messenger-empty {
|
||||
display: none;
|
||||
}
|
||||
ul.messenger .messenger-message {
|
||||
overflow: hidden;
|
||||
*zoom: 1;
|
||||
}
|
||||
ul.messenger .messenger-message.messenger-hidden {
|
||||
display: none;
|
||||
}
|
||||
ul.messenger .messenger-message .messenger-phrase, ul.messenger .messenger-message .messenger-actions a {
|
||||
padding-right: 5px;
|
||||
}
|
||||
ul.messenger .messenger-message .messenger-actions {
|
||||
float: right;
|
||||
}
|
||||
ul.messenger .messenger-message .messenger-actions a {
|
||||
cursor: pointer;
|
||||
text-decoration: underline;
|
||||
}
|
||||
ul.messenger .messenger-message ul, ul.messenger .messenger-message ol {
|
||||
margin: 10px 18px 0;
|
||||
}
|
||||
ul.messenger.messenger-fixed {
|
||||
position: fixed;
|
||||
z-index: 10000;
|
||||
}
|
||||
ul.messenger.messenger-fixed .messenger-message {
|
||||
min-width: 0;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
ul.messenger.messenger-fixed .message .messenger-actions {
|
||||
float: left;
|
||||
}
|
||||
ul.messenger.messenger-fixed.messenger-on-top {
|
||||
top: 20px;
|
||||
}
|
||||
ul.messenger.messenger-fixed.messenger-on-bottom {
|
||||
bottom: 20px;
|
||||
}
|
||||
ul.messenger.messenger-fixed.messenger-on-top, ul.messenger.messenger-fixed.messenger-on-bottom {
|
||||
left: 50%;
|
||||
width: 600px;
|
||||
margin-left: -300px;
|
||||
}
|
||||
@media (max-width: 960px) {
|
||||
ul.messenger.messenger-fixed.messenger-on-top, ul.messenger.messenger-fixed.messenger-on-bottom {
|
||||
left: 10%;
|
||||
width: 80%;
|
||||
margin-left: 0px;
|
||||
}
|
||||
}
|
||||
ul.messenger.messenger-fixed.messenger-on-top.messenger-on-right, ul.messenger.messenger-fixed.messenger-on-bottom.messenger-on-right {
|
||||
right: 20px;
|
||||
left: auto;
|
||||
}
|
||||
ul.messenger.messenger-fixed.messenger-on-top.messenger-on-left, ul.messenger.messenger-fixed.messenger-on-bottom.messenger-on-left {
|
||||
left: 20px;
|
||||
margin-left: 0px;
|
||||
}
|
||||
ul.messenger.messenger-fixed.messenger-on-right, ul.messenger.messenger-fixed.messenger-on-left {
|
||||
width: 350px;
|
||||
}
|
||||
ul.messenger.messenger-fixed.messenger-on-right .messenger-actions, ul.messenger.messenger-fixed.messenger-on-left .messenger-actions {
|
||||
float: left;
|
||||
}
|
||||
ul.messenger .messenger-spinner {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@-webkit-keyframes ui-spinner-rotate-right {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
}
|
||||
|
||||
25% {
|
||||
-webkit-transform: rotate(180deg);
|
||||
}
|
||||
|
||||
50% {
|
||||
-webkit-transform: rotate(180deg);
|
||||
}
|
||||
|
||||
75% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes ui-spinner-rotate-left {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
}
|
||||
|
||||
25% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
}
|
||||
|
||||
50% {
|
||||
-webkit-transform: rotate(180deg);
|
||||
}
|
||||
|
||||
75% {
|
||||
-webkit-transform: rotate(180deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-keyframes ui-spinner-rotate-right {
|
||||
0% {
|
||||
-moz-transform: rotate(0deg);
|
||||
}
|
||||
|
||||
25% {
|
||||
-moz-transform: rotate(180deg);
|
||||
}
|
||||
|
||||
50% {
|
||||
-moz-transform: rotate(180deg);
|
||||
}
|
||||
|
||||
75% {
|
||||
-moz-transform: rotate(360deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
-moz-transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-keyframes ui-spinner-rotate-left {
|
||||
0% {
|
||||
-moz-transform: rotate(0deg);
|
||||
}
|
||||
|
||||
25% {
|
||||
-moz-transform: rotate(0deg);
|
||||
}
|
||||
|
||||
50% {
|
||||
-moz-transform: rotate(180deg);
|
||||
}
|
||||
|
||||
75% {
|
||||
-moz-transform: rotate(180deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
-moz-transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes ui-spinner-rotate-right {
|
||||
0% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
25% {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
75% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes ui-spinner-rotate-left {
|
||||
0% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
25% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
75% {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
.messenger-spinner {
|
||||
position: relative;
|
||||
border-radius: 100%;
|
||||
}
|
||||
ul.messenger.messenger-spinner-active .messenger-spinner .messenger-spinner {
|
||||
display: block;
|
||||
}
|
||||
.messenger-spinner .messenger-spinner-side {
|
||||
width: 50%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
}
|
||||
.messenger-spinner .messenger-spinner-side .messenger-spinner-fill {
|
||||
border-radius: 999px;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
-webkit-animation-iteration-count: infinite;
|
||||
-moz-animation-iteration-count: infinite;
|
||||
-ms-animation-iteration-count: infinite;
|
||||
-o-animation-iteration-count: infinite;
|
||||
animation-iteration-count: infinite;
|
||||
-webkit-animation-timing-function: linear;
|
||||
-moz-animation-timing-function: linear;
|
||||
-ms-animation-timing-function: linear;
|
||||
-o-animation-timing-function: linear;
|
||||
animation-timing-function: linear;
|
||||
}
|
||||
.messenger-spinner .messenger-spinner-side-left {
|
||||
left: 0;
|
||||
}
|
||||
.messenger-spinner .messenger-spinner-side-left .messenger-spinner-fill {
|
||||
left: 100%;
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
-webkit-animation-name: ui-spinner-rotate-left;
|
||||
-moz-animation-name: ui-spinner-rotate-left;
|
||||
-ms-animation-name: ui-spinner-rotate-left;
|
||||
-o-animation-name: ui-spinner-rotate-left;
|
||||
animation-name: ui-spinner-rotate-left;
|
||||
-webkit-transform-origin: 0 50%;
|
||||
-moz-transform-origin: 0 50%;
|
||||
-ms-transform-origin: 0 50%;
|
||||
-o-transform-origin: 0 50%;
|
||||
transform-origin: 0 50%;
|
||||
}
|
||||
.messenger-spinner .messenger-spinner-side-right {
|
||||
left: 50%;
|
||||
}
|
||||
.messenger-spinner .messenger-spinner-side-right .messenger-spinner-fill {
|
||||
left: -100%;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
-webkit-animation-name: ui-spinner-rotate-right;
|
||||
-moz-animation-name: ui-spinner-rotate-right;
|
||||
-ms-animation-name: ui-spinner-rotate-right;
|
||||
-o-animation-name: ui-spinner-rotate-right;
|
||||
animation-name: ui-spinner-rotate-right;
|
||||
-webkit-transform-origin: 100% 50%;
|
||||
-moz-transform-origin: 100% 50%;
|
||||
-ms-transform-origin: 100% 50%;
|
||||
-o-transform-origin: 100% 50%;
|
||||
transform-origin: 100% 50%;
|
||||
}
|
||||
|
||||
ul.messenger-theme-air {
|
||||
-moz-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-o-user-select: none;
|
||||
user-select: none;
|
||||
font-family: "Raleway", sans-serif;
|
||||
}
|
||||
ul.messenger-theme-air .messenger-message {
|
||||
-webkit-transition: background-color 0.4s;
|
||||
-moz-transition: background-color 0.4s;
|
||||
-o-transition: background-color 0.4s;
|
||||
transition: background-color 0.4s;
|
||||
-webkit-border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-ms-border-radius: 5px;
|
||||
-o-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
-webkit-box-shadow: inset 0 0 0 1px white, inset 0 2px white, 0 0 0 1px rgba(0, 0, 0, 0.1), 0 1px rgba(0, 0, 0, 0.2);
|
||||
-moz-box-shadow: inset 0 0 0 1px white, inset 0 2px white, 0 0 0 1px rgba(0, 0, 0, 0.1), 0 1px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: inset 0 0 0 1px white, inset 0 2px white, 0 0 0 1px rgba(0, 0, 0, 0.1), 0 1px rgba(0, 0, 0, 0.2);
|
||||
border: 0px;
|
||||
background-color: white;
|
||||
position: relative;
|
||||
margin-bottom: 1em;
|
||||
font-size: 13px;
|
||||
color: #666666;
|
||||
font-weight: 500;
|
||||
padding: 10px 30px 11px 46px;
|
||||
}
|
||||
ul.messenger-theme-air .messenger-message:hover {
|
||||
background-color: white;
|
||||
}
|
||||
ul.messenger-theme-air .messenger-message .messenger-close {
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
right: 0px;
|
||||
color: #888888;
|
||||
opacity: 1;
|
||||
font-weight: bold;
|
||||
display: block;
|
||||
font-size: 20px;
|
||||
line-height: 20px;
|
||||
padding: 8px 10px 7px 7px;
|
||||
cursor: pointer;
|
||||
background: transparent;
|
||||
border: 0;
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
ul.messenger-theme-air .messenger-message .messenger-close:hover {
|
||||
color: #444444;
|
||||
}
|
||||
ul.messenger-theme-air .messenger-message .messenger-close:active {
|
||||
color: #222222;
|
||||
}
|
||||
ul.messenger-theme-air .messenger-message .messenger-actions {
|
||||
float: none;
|
||||
margin-top: 10px;
|
||||
}
|
||||
ul.messenger-theme-air .messenger-message .messenger-actions a {
|
||||
-webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1), inset 0px 1px rgba(255, 255, 255, 0.05);
|
||||
-moz-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1), inset 0px 1px rgba(255, 255, 255, 0.05);
|
||||
box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1), inset 0px 1px rgba(255, 255, 255, 0.05);
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-ms-border-radius: 4px;
|
||||
-o-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
padding: 10px;
|
||||
color: #888888;
|
||||
margin-right: 10px;
|
||||
padding: 3px 10px 5px;
|
||||
text-transform: capitalize;
|
||||
}
|
||||
ul.messenger-theme-air .messenger-message .messenger-actions a:hover {
|
||||
-webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1), inset 0px 1px rgba(255, 255, 255, 0.15);
|
||||
-moz-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1), inset 0px 1px rgba(255, 255, 255, 0.15);
|
||||
box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1), inset 0px 1px rgba(255, 255, 255, 0.15);
|
||||
color: #444444;
|
||||
}
|
||||
ul.messenger-theme-air .messenger-message .messenger-actions a:active {
|
||||
-webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.18), inset 0px 1px rgba(0, 0, 0, 0.05);
|
||||
-moz-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.18), inset 0px 1px rgba(0, 0, 0, 0.05);
|
||||
box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.18), inset 0px 1px rgba(0, 0, 0, 0.05);
|
||||
background: rgba(0, 0, 0, 0.04);
|
||||
color: #444444;
|
||||
}
|
||||
ul.messenger-theme-air .messenger-message .messenger-actions .messenger-phrase {
|
||||
display: none;
|
||||
}
|
||||
ul.messenger-theme-air .messenger-message .messenger-message-inner:before {
|
||||
-webkit-box-shadow: inset 0px 1px 3px rgba(0, 0, 0, 0.3);
|
||||
-moz-box-shadow: inset 0px 1px 3px rgba(0, 0, 0, 0.3);
|
||||
box-shadow: inset 0px 1px 3px rgba(0, 0, 0, 0.3);
|
||||
-webkit-border-radius: 50%;
|
||||
-moz-border-radius: 50%;
|
||||
-ms-border-radius: 50%;
|
||||
-o-border-radius: 50%;
|
||||
border-radius: 50%;
|
||||
position: absolute;
|
||||
left: 17px;
|
||||
display: block;
|
||||
content: " ";
|
||||
top: 50%;
|
||||
margin-top: -8px;
|
||||
height: 13px;
|
||||
width: 13px;
|
||||
z-index: 20;
|
||||
}
|
||||
ul.messenger-theme-air .messenger-message.alert-success .messenger-message-inner:before {
|
||||
background-color: #5fca4a;
|
||||
}
|
||||
ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-soon .messenger-spinner {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
background: transparent;
|
||||
}
|
||||
ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-soon .messenger-spinner .messenger-spinner-side .messenger-spinner-fill {
|
||||
background: #dd6a45;
|
||||
-webkit-animation-duration: 20s;
|
||||
-moz-animation-duration: 20s;
|
||||
-ms-animation-duration: 20s;
|
||||
-o-animation-duration: 20s;
|
||||
animation-duration: 20s;
|
||||
opacity: 1;
|
||||
}
|
||||
ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-soon .messenger-spinner:after {
|
||||
content: "";
|
||||
background: white;
|
||||
position: absolute;
|
||||
width: 19px;
|
||||
height: 19px;
|
||||
border-radius: 50%;
|
||||
top: 2px;
|
||||
left: 2px;
|
||||
display: block;
|
||||
}
|
||||
ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-later .messenger-spinner {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
background: transparent;
|
||||
}
|
||||
ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-later .messenger-spinner .messenger-spinner-side .messenger-spinner-fill {
|
||||
background: #dd6a45;
|
||||
-webkit-animation-duration: 600s;
|
||||
-moz-animation-duration: 600s;
|
||||
-ms-animation-duration: 600s;
|
||||
-o-animation-duration: 600s;
|
||||
animation-duration: 600s;
|
||||
opacity: 1;
|
||||
}
|
||||
ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-later .messenger-spinner:after {
|
||||
content: "";
|
||||
background: white;
|
||||
position: absolute;
|
||||
width: 19px;
|
||||
height: 19px;
|
||||
border-radius: 50%;
|
||||
top: 2px;
|
||||
left: 2px;
|
||||
display: block;
|
||||
}
|
||||
ul.messenger-theme-air .messenger-message.alert-error .messenger-message-inner:before {
|
||||
background-color: #dd6a45;
|
||||
}
|
||||
ul.messenger-theme-air .messenger-message.alert-info .messenger-message-inner:before {
|
||||
background-color: #61c4b8;
|
||||
}
|
||||
ul.messenger-theme-air .messenger-spinner {
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: 12px;
|
||||
top: 50%;
|
||||
margin-top: -13px;
|
||||
z-index: 999;
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
z-index: 10;
|
||||
}
|
||||
301
resources/assets/sass/plugins/bootstrap-datetimepicker/bootstrap-datetimepicker.scss
vendored
Normal file
301
resources/assets/sass/plugins/bootstrap-datetimepicker/bootstrap-datetimepicker.scss
vendored
Normal file
@@ -0,0 +1,301 @@
|
||||
// Import boostrap variables including default color palette and fonts
|
||||
@import "./bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_variables";
|
||||
|
||||
.bootstrap-datetimepicker-widget {
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 250px;
|
||||
padding: 4px;
|
||||
margin-top: 1px;
|
||||
z-index: 99999 !important;
|
||||
border-radius: $border-radius-base;
|
||||
|
||||
&.timepicker-sbs {
|
||||
width: 600px;
|
||||
}
|
||||
|
||||
&.bottom {
|
||||
&:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-bottom: 7px solid #ccc;
|
||||
border-bottom-color: rgba(0,0,0,.2);
|
||||
position: absolute;
|
||||
top: -7px;
|
||||
left: 7px;
|
||||
}
|
||||
|
||||
&:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid white;
|
||||
position: absolute;
|
||||
top: -6px;
|
||||
left: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
&.top {
|
||||
&:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-top: 7px solid #ccc;
|
||||
border-top-color: rgba(0,0,0,.2);
|
||||
position: absolute;
|
||||
bottom: -7px;
|
||||
left: 6px;
|
||||
}
|
||||
|
||||
&:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-top: 6px solid white;
|
||||
position: absolute;
|
||||
bottom: -6px;
|
||||
left: 7px;
|
||||
}
|
||||
}
|
||||
|
||||
& .dow {
|
||||
width: 14.2857%;
|
||||
}
|
||||
|
||||
&.pull-right {
|
||||
&:before {
|
||||
left: auto;
|
||||
right: 6px;
|
||||
}
|
||||
|
||||
&:after {
|
||||
left: auto;
|
||||
right: 7px;
|
||||
}
|
||||
}
|
||||
|
||||
>ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
a[data-action] {
|
||||
padding: 6px 0;
|
||||
}
|
||||
|
||||
a[data-action]:active {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.timepicker-hour, .timepicker-minute, .timepicker-second {
|
||||
width: 54px;
|
||||
font-weight: bold;
|
||||
font-size: 1.2em;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
button[data-action] {
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
table[data-hour-format="12"] .separator {
|
||||
width: 4px;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.datepicker > div {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.picker-switch {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
td,
|
||||
th {
|
||||
text-align: center;
|
||||
border-radius: $border-radius-base;
|
||||
}
|
||||
|
||||
td {
|
||||
height: 54px;
|
||||
line-height: 54px;
|
||||
width: 54px;
|
||||
|
||||
&.cw {
|
||||
font-size: 10px;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
color: $gray-light;
|
||||
}
|
||||
|
||||
&.day {
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
&.day:hover,
|
||||
&.hour:hover,
|
||||
&.minute:hover,
|
||||
&.second:hover {
|
||||
background: $gray-lighter;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
&.old,
|
||||
&.new {
|
||||
color: $gray-light;
|
||||
}
|
||||
|
||||
&.today {
|
||||
position: relative;
|
||||
|
||||
&:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-bottom: 7px solid $btn-primary-bg;
|
||||
border-top-color: rgba(0, 0, 0, 0.2);
|
||||
position: absolute;
|
||||
bottom: 4px;
|
||||
right: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
&.active,
|
||||
&.active:hover {
|
||||
background-color: $btn-primary-bg;
|
||||
color: $btn-primary-color;
|
||||
text-shadow: 0 -1px 0 rgba(0,0,0,.25);
|
||||
}
|
||||
|
||||
&.active.today:before {
|
||||
border-bottom-color: #fff;
|
||||
}
|
||||
|
||||
&.disabled,
|
||||
&.disabled:hover {
|
||||
background: none;
|
||||
color: $gray-light;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
span {
|
||||
display: inline-block;
|
||||
width: 54px;
|
||||
height: 54px;
|
||||
line-height: 54px;
|
||||
margin: 2px 1.5px;
|
||||
cursor: pointer;
|
||||
border-radius: $border-radius-base;
|
||||
|
||||
&:hover {
|
||||
background: $gray-lighter;
|
||||
}
|
||||
|
||||
&.active {
|
||||
background-color: $btn-primary-bg;
|
||||
color: $btn-primary-color;
|
||||
text-shadow: 0 -1px 0 rgba(0,0,0,.25);
|
||||
}
|
||||
|
||||
&.old {
|
||||
color: $gray-light;
|
||||
}
|
||||
|
||||
&.disabled,
|
||||
&.disabled:hover {
|
||||
background: none;
|
||||
color: $gray-light;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
th {
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
width: 20px;
|
||||
|
||||
&.picker-switch {
|
||||
width: 145px;
|
||||
}
|
||||
|
||||
&.next,
|
||||
&.prev {
|
||||
font-size: $font-size-base * 1.5;
|
||||
}
|
||||
|
||||
&.disabled,
|
||||
&.disabled:hover {
|
||||
background: none;
|
||||
color: $gray-light;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
}
|
||||
|
||||
thead tr:first-child th {
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
background: $gray-lighter;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.input-group {
|
||||
&.date {
|
||||
.input-group-addon span {
|
||||
display: block;
|
||||
cursor: pointer;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bootstrap-datetimepicker-widget.left-oriented {
|
||||
&:before {
|
||||
left: auto;
|
||||
right: 6px;
|
||||
}
|
||||
|
||||
&:after {
|
||||
left: auto;
|
||||
right: 7px;
|
||||
}
|
||||
}
|
||||
|
||||
.bootstrap-datetimepicker-widget ul.list-unstyled li div.timepicker div.timepicker-picker table.table-condensed tbody > tr > td {
|
||||
padding: 0px !important;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 767px) {
|
||||
.bootstrap-datetimepicker-widget.timepicker-sbs {
|
||||
width: 283px;
|
||||
}
|
||||
}
|
||||
|
||||
.sr-only {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
clip: rect(0,0,0,0);
|
||||
border: 0;
|
||||
}
|
||||
47
resources/lang/de/cachet.php
Normal file
47
resources/lang/de/cachet.php
Normal file
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// Components
|
||||
'components' => [
|
||||
'status' => [
|
||||
1 => 'Funktionsfähig',
|
||||
2 => 'Performance Probleme',
|
||||
3 => 'Teilweise Ausfall',
|
||||
4 => 'größerer Ausfall',
|
||||
],
|
||||
],
|
||||
|
||||
// Incidents
|
||||
'incidents' => [
|
||||
'none' => 'keine Vorfälle.',
|
||||
'past' => 'vergangene Vorfälle',
|
||||
'previous_week' => 'letzte Woche',
|
||||
'next_week' => 'nächste Woche',
|
||||
'none' => 'keine Vorfälle',
|
||||
'status' => [
|
||||
1 => 'Untersuchung läuft',
|
||||
2 => 'Problem identifiziert',
|
||||
3 => 'Problem unter Beobachtung',
|
||||
4 => 'Problem behoben',
|
||||
],
|
||||
],
|
||||
|
||||
// Service Status
|
||||
'service' => [
|
||||
'good' => 'Alle Systeme laufen.',
|
||||
'bad' => 'Bei einigen System sind Fehler aufgetreten.',
|
||||
],
|
||||
|
||||
'api' => [
|
||||
'regenerate' => 'API-Schlüssel generieren',
|
||||
'revoke' => 'API-Schlüssel löschen',
|
||||
],
|
||||
|
||||
// Other
|
||||
'powered_by' => ':app Status-Seite via <a href="https://cachethq.io">Cachet</a>.',
|
||||
'about_this_site' => 'Über diese Seite',
|
||||
'rss-feed' => 'RSS Feed',
|
||||
'atom-feed' => 'Atom Feed',
|
||||
'feed' => 'Status Feed',
|
||||
|
||||
];
|
||||
156
resources/lang/de/dashboard.php
Normal file
156
resources/lang/de/dashboard.php
Normal file
@@ -0,0 +1,156 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
'dashboard' => 'Dashboard',
|
||||
|
||||
// Incidents
|
||||
'incidents' => [
|
||||
'incidents' => 'Vorfälle',
|
||||
'logged' => '{0} Es gibt keine Vorfälle, gute Arbeit.|Sie haben ein Vorfall eingetragen.|Es gibt <strong>:count</strong> Vorfälle.',
|
||||
'incident-create-template' => 'Template anlegen',
|
||||
'add' => [
|
||||
'title' => 'Vorfall hinzufügen',
|
||||
'success' => 'Vorfall hinzugefügt.',
|
||||
'failure' => 'Es ist ein Fehler bei dem Erstellen eines Vorfälles aufgetreten.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Vorfall aktualisieren',
|
||||
'success' => 'Vorfall aktualisiert.',
|
||||
'failure' => 'Es ist ein Fehler bei der Aktualisierung des Vorfälles aufgetreten.',
|
||||
],
|
||||
|
||||
// Incident templates
|
||||
'templates' => [
|
||||
'add' => [
|
||||
'title' => 'Vorfall-Template anlegen',
|
||||
'success' => 'Template angelegt.',
|
||||
'failure' => 'Es ist ein Fehler bei der Erstellung eines Templates aufgetreten.',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// Components
|
||||
'components' => [
|
||||
'components' => 'Komponente|Komponenten',
|
||||
'component_statuses' => 'Komponenten-Statuus', # this is not a typo (statuus=plural)
|
||||
'add' => [
|
||||
'title' => 'Komponente hinzufügen',
|
||||
'message' => 'Sie sollten eine Komponente hinzufügen.',
|
||||
'success' => 'Komponente hinzugefügt.',
|
||||
'failure' => 'Es ist ein Fehler bei der Erstellung der Komponente aufgetreten.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Komponente aktualisieren',
|
||||
'success' => 'Komponente aktualisiert.',
|
||||
'failure' => 'Es ist ein Fehler bei der Aktualisierung der Komponente aufgetreten.',
|
||||
],
|
||||
|
||||
// Component groups
|
||||
'groups' => [
|
||||
'groups' => 'Komponenten-Gruppe|Komponenten-Gruppen',
|
||||
'add' => [
|
||||
'title' => 'Komponenten-Gruppe hinzufügen',
|
||||
'success' => 'Komponenten-Gruppe hinzugefügt.',
|
||||
'failure' => 'Es ist ein Fehler bei der Erstellung einer Komponenten-Gruppe aufgetreten.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Edit a component group',
|
||||
'success' => 'Component group updated.',
|
||||
'failure' => 'Something went wrong with the component group.',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// Metrics
|
||||
'metrics' => [
|
||||
'metrics' => 'Metrics',
|
||||
'add' => [
|
||||
'title' => 'Einen Metrik-Punkt anlegen',
|
||||
'success' => 'Metrik-Punkt angelegt.',
|
||||
'failure' => 'Es ist ein Fehler bei der Erstellung eines Metrik-Punktes aufgetreten.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Edit a metric',
|
||||
'success' => 'Metric updated.',
|
||||
'failure' => 'Something went wrong with the metric.',
|
||||
],
|
||||
],
|
||||
|
||||
// Team
|
||||
'team' => [
|
||||
'team' => 'Team',
|
||||
'member' => 'Mitglied',
|
||||
'profile' => 'Profil',
|
||||
'description' => 'Team-Mitgleider können Komponenten und Vorfälle hinzufügen und modifizieren.',
|
||||
'add' => [
|
||||
'title' => 'Team-Mitglied hinzufügen',
|
||||
'success' => 'Team-Mitglied hinzugefügt.',
|
||||
'failure' => 'Es ist ein Fehler bei der Erstellung eines neuen Team-Mitglieds aufgetreten.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Profil aktualisieren',
|
||||
'success' => 'Profile aktualisiert.',
|
||||
'failure' => 'Es ist ein Fehler bei der Aktualisierung des Profils aufgetreten.',
|
||||
],
|
||||
],
|
||||
|
||||
// Settings
|
||||
'settings' => [
|
||||
'settings' => 'Einstellungen',
|
||||
'app-setup' => [
|
||||
'app-setup' => 'Setup',
|
||||
'images-only' => 'Es dürfen nur Bild-Dateien hochgeladen werden.',
|
||||
'too-big' => 'Die Datei die Sie hochgeladen haben ist zu groß. Die Datei muss kleiner als :size sein.',
|
||||
],
|
||||
'security' => [
|
||||
'security' => 'Sicherheit',
|
||||
],
|
||||
'stylesheet' => [
|
||||
'stylesheet' => 'Stylesheet',
|
||||
],
|
||||
'theme' => [
|
||||
'theme' => 'Theme',
|
||||
],
|
||||
'edit' => [
|
||||
'success' => 'Einstellungen gespeichert.',
|
||||
'failure' => 'Einstellungen konnten nicht gespeichert werden.',
|
||||
],
|
||||
],
|
||||
|
||||
// Login
|
||||
'login' => [
|
||||
'login' => 'Login',
|
||||
'logged_in' => 'Sie sind angemeldet.',
|
||||
'welcome' => 'Willkommen zurück!',
|
||||
'two-factor' => 'Bitte geben Sie den Wert Ihres Authentifikations-Tokens ein.',
|
||||
],
|
||||
|
||||
// Sidebar footer
|
||||
'help' => 'Hilfe',
|
||||
'status_page' => 'Status-Seite',
|
||||
'logout' => 'Logout',
|
||||
|
||||
// Notifications
|
||||
'notifications' => [
|
||||
'notifications' => 'Benachrichtigungen',
|
||||
'awesome' => 'Großartig.',
|
||||
'whoops' => 'Oops.',
|
||||
],
|
||||
|
||||
// Welcome modal
|
||||
'welcome' => [
|
||||
'welcome' => 'Welcome to Cachet',
|
||||
'message' => 'Your status page is almost ready! You might want to configure these extra settings',
|
||||
'close' => 'Just go straight to my dashboard',
|
||||
'steps' => [
|
||||
'component' => 'Create components',
|
||||
'incident' => 'Create incidents',
|
||||
'customize' => 'Customize your Cachet Status Page.',
|
||||
'team' => 'Add users to your team.',
|
||||
'api' => 'Generate API token.',
|
||||
'two-factor' => 'Enable Two Factor Authetication.',
|
||||
],
|
||||
],
|
||||
|
||||
];
|
||||
16
resources/lang/de/errors.php
Normal file
16
resources/lang/de/errors.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'not-found' => [
|
||||
'code' => '404',
|
||||
'title' => 'Die Seite konnte nicht gefunden werden!',
|
||||
'message' => 'Entschuldigung, aber die Seite konnte nicht gefunden werden. Überprüfen Sie die URL und versuchen Sie es erneut.',
|
||||
'link' => 'Zurück zur Startseite',
|
||||
],
|
||||
'unauthorized' => [
|
||||
'code' => '401',
|
||||
'title' => 'Unauthorized',
|
||||
'message' => 'Sorry, you need admin privileges to see this page.',
|
||||
'link' => 'Return to homepage',
|
||||
],
|
||||
];
|
||||
123
resources/lang/de/forms.php
Normal file
123
resources/lang/de/forms.php
Normal file
@@ -0,0 +1,123 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
// Setup form fields
|
||||
'setup' => [
|
||||
'email' => 'E-Mail-Adresse',
|
||||
'username' => 'Username',
|
||||
'password' => 'Passwort',
|
||||
'site_name' => 'Name der Seite',
|
||||
'site_domain' => 'Domain der Seite',
|
||||
'site_timezone' => 'Wählen Sie Ihre Zeitzone',
|
||||
'site_locale' => 'Wählen Sie Ihre Sprache',
|
||||
'enable_google2fa' => 'Aktivieren Sie Google Two Factor Authentication',
|
||||
],
|
||||
|
||||
// Login form fields
|
||||
'login' => [
|
||||
'email' => 'Email',
|
||||
'password' => 'Passwort',
|
||||
'2fauth' => 'Authentifikations-Code',
|
||||
'invalid' => 'Falsche E-Mail-Adresse oder falsches Passwort',
|
||||
'invalid-token' => 'Token nicht korrekt',
|
||||
],
|
||||
|
||||
// Incidents form fields
|
||||
'incidents' => [
|
||||
'name' => 'Name',
|
||||
'status' => 'Status',
|
||||
'message' => 'Nachricht',
|
||||
'message-help' => 'Sie können auch Markdown benutzen.',
|
||||
|
||||
'templates' => [
|
||||
'name' => 'Name',
|
||||
'template' => 'Template',
|
||||
],
|
||||
],
|
||||
|
||||
// Components form fields
|
||||
'components' => [
|
||||
'name' => 'Name',
|
||||
'status' => 'Status',
|
||||
'group' => 'Gruppe',
|
||||
'description' => 'Beschreibung',
|
||||
'link' => 'Link',
|
||||
'tags' => 'Tags',
|
||||
'tags-help' => 'Bitte als Komma-separierte Liste angeben.',
|
||||
|
||||
'groups' => [
|
||||
'name' => 'Name',
|
||||
],
|
||||
],
|
||||
|
||||
// Metric form fields
|
||||
'metrics' => [
|
||||
'name' => 'Name',
|
||||
'suffix' => 'Suffix',
|
||||
'description' => 'Description',
|
||||
'description-help' => 'You may also use Markdown.',
|
||||
'display-chart' => 'Display chart on status page?',
|
||||
'calc_type' => 'Calculation of metrics',
|
||||
'type_sum' => 'Sum',
|
||||
'type_avg' => 'Average',
|
||||
|
||||
'points' => [
|
||||
'value' => 'Value',
|
||||
],
|
||||
],
|
||||
|
||||
// Settings
|
||||
'settings' => [
|
||||
/// Application setup
|
||||
'app-setup' => [
|
||||
'site-name' => 'Name der Seite',
|
||||
'site-url' => 'URL der Seite',
|
||||
'site-timezone' => 'Wählen Sie Ihre Zeitzone',
|
||||
'site-locale' => 'Wählen Sie Ihre Sprache',
|
||||
'date-format' => 'Datumsformat',
|
||||
'display-graphs' => 'Display graphs on status page?',
|
||||
'about-this-page' => 'Über diese Seite',
|
||||
'days-of-incidents' => 'Wie viele (vergangene) Tage sollen angezeigt werden?',
|
||||
'banner' => 'Banner-Bild',
|
||||
'banner-help' => "Wählen Sie möglichst ein Bild mit 930 px Breite.",
|
||||
'google-analytics' => "Google Analytics Code",
|
||||
],
|
||||
'security' => [
|
||||
'allowed-domains' => 'Erlaubte Domains',
|
||||
'allowed-domains-help' => 'Komma-Separiert. Die Domain die oben gesetzt ist, ist per Default erlaubt.',
|
||||
],
|
||||
'stylesheet' => [
|
||||
'custom-css' => 'Eigenes Stylesheet',
|
||||
],
|
||||
'theme' => [
|
||||
'background-color' => 'Hintergrund-Farbe',
|
||||
'text-color' => 'Text-Farbe',
|
||||
],
|
||||
],
|
||||
|
||||
'user' => [
|
||||
'username' => 'Username',
|
||||
'email' => 'E-Mail-Adresse',
|
||||
'password' => 'Passwort',
|
||||
'api-key' => 'API-Schlüssel',
|
||||
'api-key-help' => 'Eine Regenerierung Ihres API-Schlüssels verhindert den Zugriff für alle vorhandenen Anwendungen.',
|
||||
'2fa' => [
|
||||
'help' => 'Zwei-Faktor-Authentifikation erhöht die Sicherheit Ihres Accounts. Sie müssen <a href="https://support.google.com/accounts/answer/1066447?hl=en">Google Authenticator</a>, <a href="https://fedorahosted.org/freeotp/" alt="OpenSource-Alternative">FreeOTP</a> oder andere OTP-Programme installieren. Wenn sie sich anschließend anmelden müssen Sie den in der App angezeigten Code eingeben.',
|
||||
],
|
||||
],
|
||||
|
||||
// Buttons
|
||||
'add' => 'Hinzufügen',
|
||||
'save' => 'Speichern',
|
||||
'update' => 'Aktualsieren',
|
||||
'create' => 'Erstellen',
|
||||
'edit' => 'Editieren',
|
||||
'delete' => 'Löschen',
|
||||
'submit' => 'Speichern',
|
||||
'cancel' => 'Abbrechen',
|
||||
'remove' => 'Entfernen',
|
||||
|
||||
// Other
|
||||
'optional' => '* Optional',
|
||||
];
|
||||
19
resources/lang/de/pagination.php
Normal file
19
resources/lang/de/pagination.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pagination Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used by the paginator library to build
|
||||
| the simple pagination links. You are free to change them to anything
|
||||
| you want to customize your views to better match your application.
|
||||
|
|
||||
*/
|
||||
|
||||
'previous' => '« Vorherige',
|
||||
'next' => 'Nächste »',
|
||||
|
||||
];
|
||||
22
resources/lang/de/reminders.php
Normal file
22
resources/lang/de/reminders.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reminder Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
| that are given by the password broker for a password update attempt
|
||||
| has failed, such as for an invalid token or invalid new password.
|
||||
|
|
||||
*/
|
||||
|
||||
'password' => 'Passwörter müssen mindestens <em>6</em> Zeichen lang sein; beide Eingaben müssen übereinstimmen.',
|
||||
'user' => 'Es wurde kein Benutzer mit dieser E-Mail-Adresse gefunden.',
|
||||
'token' => 'Dieser Passwort-Reset-Token ist nicht valide.',
|
||||
'sent' => 'E-Mail zum Rücksetzen des Passworts verschickt!',
|
||||
'reset' => 'Passwort wurde zurückgesetzt!',
|
||||
|
||||
];
|
||||
14
resources/lang/de/setup.php
Normal file
14
resources/lang/de/setup.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'setup' => 'Setup',
|
||||
'title' => 'Setup Cachet',
|
||||
'service_details' => 'Service Details',
|
||||
'status_page_setup' => 'Setup der Status-Seite',
|
||||
'show_support' => 'Möchten Sie Cachet unterstützen? <small>Dies zeigt einen kleinen Text und Link im Footer an.</small>',
|
||||
'admin_account' => 'Administrator-Account',
|
||||
'complete_setup' => 'Setup abschließen',
|
||||
'completed' => 'Cachet wurde erfolgreich eingerichtet!',
|
||||
'finish_setup' => 'Zum Dashboard',
|
||||
'allow_tracking' => 'Allow anonymous usage tracking?',
|
||||
];
|
||||
106
resources/lang/de/validation.php
Normal file
106
resources/lang/de/validation.php
Normal file
@@ -0,0 +1,106 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
"accepted" => "<em>:attribute</em> muss akzeptiert werden.",
|
||||
"active_url" => "<em>:attribute</em> ist keine valide URL.",
|
||||
"after" => "<em>:attribute</em> muss nach :date liegen.",
|
||||
"alpha" => "<em>:attribute</em> darf nur Buchstaben enthalten.",
|
||||
"alpha_dash" => "<em>:attribute</em> darf nur Nummern, Buchstaben und Slashes enthalten.",
|
||||
"alpha_num" => "<em>:attribute</em> darf nur Nummern und Buchstaben enthalten.",
|
||||
"array" => "<em>:attribute</em> muss ein Array sein.",
|
||||
"before" => "<em>:attribute</em> muss vor :date liegen.",
|
||||
"between" => [
|
||||
"numeric" => "<em>:attribute</em> muss zwichen :min und :max liegen.",
|
||||
"file" => "<em>:attribute</em> muss zwischen :min und :max kilobyte liegen.",
|
||||
"string" => "<em>:attribute</em> muss zwischen :min und :max Zeichen lang sein.",
|
||||
"array" => "<em>:attribute</em> muss zwischen :min und :max Werte enthalten.",
|
||||
],
|
||||
"boolean" => "<em>:attribute</em> Feld muss 'true' oder 'false' sein.",
|
||||
"confirmed" => "Die Bestätigung/Wiederholung von <em>:attribute</em> stimmt nicht überein.",
|
||||
"date" => "<em>:attribute</em> ist kein valides Datum.",
|
||||
"date_format" => "<em>:attribute</em> passt nicht zu folgendem Format :format.",
|
||||
"different" => "<em>:attribute</em> und :other müssen sich unterscheiden.",
|
||||
"digits" => "<em>:attribute</em> muss :digits Zeichen lang sein.",
|
||||
"digits_between" => "<em>:attribute</em> muss zwischen :min und :max Zeichen lang sein.",
|
||||
"email" => "<em>:attribute</em> muss eine valide E-Mail-Adresse sein.",
|
||||
"exists" => "Das gewählte <em>:attribute</em> ist nicht korrekt.",
|
||||
"image" => "<em>:attribute</em> muss ein Bild sein.",
|
||||
"in" => "Das ausgewählte <em>:attribute</em> ist nicht korrekt.",
|
||||
"integer" => "<em>:attribute</em> muss eine Zahl sein.",
|
||||
"ip" => "<em>:attribute</em> muss eine valide IP sein.", # IPv4?
|
||||
"max" => [
|
||||
"numeric" => "<em>:attribute</em> darf nicht größer als :max sein.",
|
||||
"file" => "<em>:attribute</em> darf nicht größer als :max kilobyte sein.",
|
||||
"string" => "<em>:attribute</em> darf nicht mehr als :max Zeichen lang sein.",
|
||||
"array" => "<em>:attribute</em> darf nicht mehr als :max Werte enthalten.",
|
||||
],
|
||||
"mimes" => "<em>:attribute</em> muss eine Datei vom Typ :values sein.",
|
||||
"min" => [
|
||||
"numeric" => "<em>:attribute</em> muss mindestens :min sein.",
|
||||
"file" => "<em>:attribute</em> muss mindestens :min kilobyte groß sein.",
|
||||
"string" => "<em>:attribute</em> muss mindestens :min Zeichen lang sein.",
|
||||
"array" => "<em>:attribute</em> muss mindestens :min Werte enthalten.",
|
||||
],
|
||||
"not_in" => "Das ausgewählte <em>:attribute</em> ist nicht korrekt.",
|
||||
"numeric" => "<em>:attribute</em> muss eine Nummer sein.",
|
||||
"regex" => "Das Format von <em>:attribute</em> ist nicht korrekt.",
|
||||
"required" => "<em>:attribute</em> wird benötigt.",
|
||||
"required_if" => "<em>:attribute</em> wird benötigt wenn :other den Wert :value hat.",
|
||||
"required_with" => "<em>:attribute</em> ist erforderlich wenn :values vorhanden ist.",
|
||||
"required_with_all" => "<em>:attribute</em> ist erforderlich wenn :values vorhanden ist.",
|
||||
"required_without" => "<em>:attribute</em> ist erforderlich wenn :values nicht vorhanden ist.",
|
||||
"required_without_all" => "<em>:attribute</em> ist erforderlich wenn keines der Werte :values vorhanden sind.",
|
||||
"same" => "<em>:attribute</em> und :other müssen übereinstimmen.",
|
||||
"size" => [
|
||||
"numeric" => "<em>:attribute</em> muss :size sein.",
|
||||
"file" => "<em>:attribute</em> muss :size kilobyte groß sein.",
|
||||
"string" => "<em>:attribute</em> muss :size Zeichen lang sein.",
|
||||
"array" => "<em>:attribute</em> muss :size Werte enthalten.",
|
||||
],
|
||||
"unique" => "<em>:attribute</em> wurde beirets gewählt.",
|
||||
"url" => "Das Format von <em>:attribute</em> ist nicht korrekt.",
|
||||
"timezone" => "<em>:attribute</em> muss eine valide Zeitzone sein.",
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
'rule-name' => 'custom-message',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap attribute place-holders
|
||||
| with something more reader friendly such as E-Mail Address instead
|
||||
| of "email". This simply helps us make messages a little cleaner.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [],
|
||||
|
||||
];
|
||||
59
resources/lang/en-UD/cachet.php
Executable file
59
resources/lang/en-UD/cachet.php
Executable file
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// Components
|
||||
'components' => [
|
||||
'status' => [
|
||||
1 => 'crwdns265:0crwdne265:0',
|
||||
2 => 'crwdns293:0crwdne293:0',
|
||||
3 => 'crwdns294:0crwdne294:0',
|
||||
4 => 'crwdns295:0crwdne295:0',
|
||||
],
|
||||
],
|
||||
|
||||
// Incidents
|
||||
'incidents' => [
|
||||
'none' => 'crwdns430:0crwdne430:0',
|
||||
'past' => 'crwdns296:0crwdne296:0',
|
||||
'previous_week' => 'crwdns297:0crwdne297:0',
|
||||
'next_week' => 'crwdns298:0crwdne298:0',
|
||||
'none' => 'crwdns430:0crwdne430:0',
|
||||
'scheduled' => 'crwdns438:0crwdne438:0',
|
||||
'scheduled_at' => 'crwdns439:0crwdne439:0',
|
||||
'status' => [
|
||||
0 => 'crwdns440:0crwdne440:0', // TODO: Hopefully remove this.
|
||||
1 => 'crwdns299:0crwdne299:0',
|
||||
2 => 'crwdns300:0crwdne300:0',
|
||||
3 => 'crwdns301:0crwdne301:0',
|
||||
4 => 'crwdns302:0crwdne302:0',
|
||||
],
|
||||
],
|
||||
|
||||
// Service Status
|
||||
'service' => [
|
||||
'good' => 'crwdns9:0crwdne9:0',
|
||||
'bad' => 'crwdns303:0crwdne303:0',
|
||||
],
|
||||
|
||||
'api' => [
|
||||
'regenerate' => 'crwdns271:0crwdne271:0',
|
||||
'revoke' => 'crwdns304:0crwdne304:0',
|
||||
],
|
||||
|
||||
// Metrics
|
||||
'metrics' => [
|
||||
'filter' => [
|
||||
'hourly' => 'crwdns441:0crwdne441:0',
|
||||
'daily' => 'crwdns442:0crwdne442:0',
|
||||
'monthly' => 'crwdns443:0crwdne443:0',
|
||||
],
|
||||
],
|
||||
|
||||
// Other
|
||||
'powered_by' => 'crwdns11:0crwdne11:0',
|
||||
'about_this_site' => 'crwdns150:0crwdne150:0',
|
||||
'rss-feed' => 'crwdns273:0crwdne273:0',
|
||||
'atom-feed' => 'crwdns274:0crwdne274:0',
|
||||
'feed' => 'crwdns275:0crwdne275:0',
|
||||
|
||||
];
|
||||
184
resources/lang/en-UD/dashboard.php
Executable file
184
resources/lang/en-UD/dashboard.php
Executable file
@@ -0,0 +1,184 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
'dashboard' => 'crwdns152:0crwdne152:0',
|
||||
|
||||
// Incidents
|
||||
'incidents' => [
|
||||
'title' => 'crwdns444:0crwdne444:0',
|
||||
'incidents' => 'crwdns153:0crwdne153:0',
|
||||
'logged' => 'crwdns305:0{0}crwdne305:0',
|
||||
'incident-create-template' => 'crwdns306:0crwdne306:0',
|
||||
'incident-templates' => 'crwdns307:0crwdne307:0',
|
||||
'add' => [
|
||||
'title' => 'crwdns308:0crwdne308:0',
|
||||
'success' => 'crwdns309:0crwdne309:0',
|
||||
'failure' => 'crwdns310:0crwdne310:0',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'crwdns311:0crwdne311:0',
|
||||
'success' => 'crwdns312:0crwdne312:0',
|
||||
'failure' => 'crwdns313:0crwdne313:0',
|
||||
],
|
||||
|
||||
// Incident templates
|
||||
'templates' => [
|
||||
'title' => 'crwdns314:0crwdne314:0',
|
||||
'add' => [
|
||||
'title' => 'crwdns315:0crwdne315:0',
|
||||
'success' => 'crwdns316:0crwdne316:0',
|
||||
'failure' => 'crwdns317:0crwdne317:0',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'crwdns318:0crwdne318:0',
|
||||
'success' => 'crwdns319:0crwdne319:0',
|
||||
'failure' => 'crwdns320:0crwdne320:0',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// Incident Maintenance
|
||||
'schedule' => [
|
||||
'schedule' => 'crwdns445:0crwdne445:0',
|
||||
'scheduled_at' => 'crwdns446:0crwdne446:0',
|
||||
'add' => [
|
||||
'title' => 'crwdns447:0crwdne447:0',
|
||||
'success' => 'crwdns448:0crwdne448:0',
|
||||
'failure' => 'crwdns449:0crwdne449:0',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'crwdns450:0crwdne450:0',
|
||||
'success' => 'crwdns451:0crwdne451:0',
|
||||
'failure' => 'crwdns452:0crwdne452:0',
|
||||
],
|
||||
'delete' => [
|
||||
'success' => 'crwdns453:0crwdne453:0',
|
||||
'failure' => 'crwdns454:0crwdne454:0',
|
||||
],
|
||||
],
|
||||
|
||||
// Components
|
||||
'components' => [
|
||||
'components' => 'crwdns431:0crwdne431:0',
|
||||
'component_statuses' => 'crwdns321:0crwdne321:0',
|
||||
'add' => [
|
||||
'title' => 'crwdns322:0crwdne322:0',
|
||||
'message' => 'crwdns323:0crwdne323:0',
|
||||
'success' => 'crwdns324:0crwdne324:0',
|
||||
'failure' => 'crwdns325:0crwdne325:0',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'crwdns326:0crwdne326:0',
|
||||
'success' => 'crwdns327:0crwdne327:0',
|
||||
'failure' => 'crwdns328:0crwdne328:0',
|
||||
],
|
||||
|
||||
// Component groups
|
||||
'groups' => [
|
||||
'groups' => 'crwdns329:0crwdne329:0',
|
||||
'add' => [
|
||||
'title' => 'crwdns330:0crwdne330:0',
|
||||
'success' => 'crwdns331:0crwdne331:0',
|
||||
'failure' => 'crwdns332:0crwdne332:0',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'crwdns455:0crwdne455:0',
|
||||
'success' => 'crwdns456:0crwdne456:0',
|
||||
'failure' => 'crwdns457:0crwdne457:0',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// Metrics
|
||||
'metrics' => [
|
||||
'metrics' => 'crwdns178:0crwdne178:0',
|
||||
'add' => [
|
||||
'title' => 'crwdns458:0crwdne458:0',
|
||||
'success' => 'crwdns459:0crwdne459:0',
|
||||
'failure' => 'crwdns460:0crwdne460:0',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'crwdns461:0crwdne461:0',
|
||||
'success' => 'crwdns462:0crwdne462:0',
|
||||
'failure' => 'crwdns463:0crwdne463:0',
|
||||
],
|
||||
],
|
||||
|
||||
// Team
|
||||
'team' => [
|
||||
'team' => 'crwdns182:0crwdne182:0',
|
||||
'member' => 'crwdns336:0crwdne336:0',
|
||||
'profile' => 'crwdns337:0crwdne337:0',
|
||||
'description' => 'crwdns338:0crwdne338:0',
|
||||
'add' => [
|
||||
'title' => 'crwdns339:0crwdne339:0',
|
||||
'success' => 'crwdns340:0crwdne340:0',
|
||||
'failure' => 'crwdns341:0crwdne341:0',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'crwdns342:0crwdne342:0',
|
||||
'success' => 'crwdns343:0crwdne343:0',
|
||||
'failure' => 'crwdns344:0crwdne344:0',
|
||||
],
|
||||
],
|
||||
|
||||
// Settings
|
||||
'settings' => [
|
||||
'settings' => 'crwdns192:0crwdne192:0',
|
||||
'app-setup' => [
|
||||
'app-setup' => 'crwdns345:0crwdne345:0',
|
||||
'images-only' => 'crwdns346:0crwdne346:0',
|
||||
'too-big' => 'crwdns347:0crwdne347:0',
|
||||
],
|
||||
'security' => [
|
||||
'security' => 'crwdns348:0crwdne348:0',
|
||||
],
|
||||
'stylesheet' => [
|
||||
'stylesheet' => 'crwdns349:0crwdne349:0',
|
||||
],
|
||||
'theme' => [
|
||||
'theme' => 'crwdns350:0crwdne350:0',
|
||||
],
|
||||
'edit' => [
|
||||
'success' => 'crwdns351:0crwdne351:0',
|
||||
'failure' => 'crwdns352:0crwdne352:0',
|
||||
],
|
||||
],
|
||||
|
||||
// Login
|
||||
'login' => [
|
||||
'login' => 'crwdns199:0crwdne199:0',
|
||||
'logged_in' => 'crwdns353:0crwdne353:0',
|
||||
'welcome' => 'crwdns354:0crwdne354:0',
|
||||
'two-factor' => 'crwdns355:0crwdne355:0',
|
||||
],
|
||||
|
||||
// Sidebar footer
|
||||
'help' => 'crwdns202:0crwdne202:0',
|
||||
'status_page' => 'crwdns203:0crwdne203:0',
|
||||
'logout' => 'crwdns204:0crwdne204:0',
|
||||
|
||||
// Notifications
|
||||
'notifications' => [
|
||||
'notifications' => 'crwdns205:0crwdne205:0',
|
||||
'awesome' => 'crwdns356:0crwdne356:0',
|
||||
'whoops' => 'crwdns357:0crwdne357:0',
|
||||
],
|
||||
|
||||
// Welcome modal
|
||||
'welcome' => [
|
||||
'welcome' => 'crwdns358:0crwdne358:0',
|
||||
'message' => 'crwdns359:0crwdne359:0',
|
||||
'close' => 'crwdns360:0crwdne360:0',
|
||||
'steps' => [
|
||||
'component' => 'crwdns361:0crwdne361:0',
|
||||
'incident' => 'crwdns362:0crwdne362:0',
|
||||
'customize' => 'crwdns432:0crwdne432:0',
|
||||
'team' => 'crwdns433:0crwdne433:0',
|
||||
'api' => 'crwdns434:0crwdne434:0',
|
||||
'two-factor' => 'crwdns435:0crwdne435:0',
|
||||
],
|
||||
],
|
||||
|
||||
];
|
||||
16
resources/lang/en-UD/errors.php
Executable file
16
resources/lang/en-UD/errors.php
Executable file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'not-found' => [
|
||||
'code' => 'crwdns208:0crwdne208:0',
|
||||
'title' => 'crwdns367:0crwdne367:0',
|
||||
'message' => 'crwdns368:0crwdne368:0',
|
||||
'link' => 'crwdns369:0crwdne369:0',
|
||||
],
|
||||
'unauthorized' => [
|
||||
'code' => 'crwdns370:0crwdne370:0',
|
||||
'title' => 'crwdns371:0crwdne371:0',
|
||||
'message' => 'crwdns372:0crwdne372:0',
|
||||
'link' => 'crwdns373:0crwdne373:0',
|
||||
],
|
||||
];
|
||||
123
resources/lang/en-UD/forms.php
Executable file
123
resources/lang/en-UD/forms.php
Executable file
@@ -0,0 +1,123 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
// Setup form fields
|
||||
'setup' => [
|
||||
'email' => 'crwdns212:0crwdne212:0',
|
||||
'username' => 'crwdns374:0crwdne374:0',
|
||||
'password' => 'crwdns375:0crwdne375:0',
|
||||
'site_name' => 'crwdns376:0crwdne376:0',
|
||||
'site_domain' => 'crwdns377:0crwdne377:0',
|
||||
'site_timezone' => 'crwdns378:0crwdne378:0',
|
||||
'site_locale' => 'crwdns379:0crwdne379:0',
|
||||
'enable_google2fa' => 'crwdns380:0crwdne380:0',
|
||||
],
|
||||
|
||||
// Login form fields
|
||||
'login' => [
|
||||
'email' => 'crwdns217:0crwdne217:0',
|
||||
'password' => 'crwdns381:0crwdne381:0',
|
||||
'2fauth' => 'crwdns382:0crwdne382:0',
|
||||
'invalid' => 'crwdns383:0crwdne383:0',
|
||||
'invalid-token' => 'crwdns384:0crwdne384:0',
|
||||
],
|
||||
|
||||
// Incidents form fields
|
||||
'incidents' => [
|
||||
'name' => 'crwdns219:0crwdne219:0',
|
||||
'status' => 'crwdns385:0crwdne385:0',
|
||||
'component' => 'crwdns386:0crwdne386:0',
|
||||
'message' => 'crwdns387:0crwdne387:0',
|
||||
'message-help' => 'crwdns388:0crwdne388:0',
|
||||
'scheduled_at' => 'crwdns464:0crwdne464:0',
|
||||
|
||||
'templates' => [
|
||||
'name' => 'crwdns389:0crwdne389:0',
|
||||
'template' => 'crwdns390:0crwdne390:0',
|
||||
],
|
||||
],
|
||||
|
||||
// Components form fields
|
||||
'components' => [
|
||||
'name' => 'crwdns225:0crwdne225:0',
|
||||
'status' => 'crwdns391:0crwdne391:0',
|
||||
'group' => 'crwdns392:0crwdne392:0',
|
||||
'description' => 'crwdns393:0crwdne393:0',
|
||||
'link' => 'crwdns394:0crwdne394:0',
|
||||
'tags' => 'crwdns395:0crwdne395:0',
|
||||
'tags-help' => 'crwdns396:0crwdne396:0',
|
||||
|
||||
'groups' => [
|
||||
'name' => 'crwdns397:0crwdne397:0',
|
||||
],
|
||||
],
|
||||
|
||||
// Metric form fields
|
||||
'metrics' => [
|
||||
'name' => 'crwdns465:0crwdne465:0',
|
||||
'suffix' => 'crwdns466:0crwdne466:0',
|
||||
'description' => 'crwdns467:0crwdne467:0',
|
||||
'description-help' => 'crwdns468:0crwdne468:0',
|
||||
'display-chart' => 'crwdns469:0crwdne469:0',
|
||||
'default-value' => 'crwdns470:0crwdne470:0',
|
||||
|
||||
'points' => [
|
||||
'value' => 'crwdns471:0crwdne471:0',
|
||||
],
|
||||
],
|
||||
|
||||
// Settings
|
||||
'settings' => [
|
||||
/// Application setup
|
||||
'app-setup' => [
|
||||
'site-name' => 'crwdns233:0crwdne233:0',
|
||||
'site-url' => 'crwdns398:0crwdne398:0',
|
||||
'site-timezone' => 'crwdns399:0crwdne399:0',
|
||||
'site-locale' => 'crwdns400:0crwdne400:0',
|
||||
'date-format' => 'crwdns401:0crwdne401:0',
|
||||
'display-graphs' => 'crwdns472:0crwdne472:0',
|
||||
'about-this-page' => 'crwdns402:0crwdne402:0',
|
||||
'days-of-incidents' => 'crwdns403:0crwdne403:0',
|
||||
'banner' => 'crwdns404:0crwdne404:0',
|
||||
'banner-help' => "crwdns405:0crwdne405:0",
|
||||
'google-analytics' => "crwdns406:0crwdne406:0",
|
||||
],
|
||||
'security' => [
|
||||
'allowed-domains' => 'crwdns407:0crwdne407:0',
|
||||
'allowed-domains-help' => 'crwdns408:0crwdne408:0',
|
||||
],
|
||||
'stylesheet' => [
|
||||
'custom-css' => 'crwdns409:0crwdne409:0',
|
||||
],
|
||||
'theme' => [
|
||||
'background-color' => 'crwdns410:0crwdne410:0',
|
||||
'text-color' => 'crwdns411:0crwdne411:0',
|
||||
],
|
||||
],
|
||||
|
||||
'user' => [
|
||||
'username' => 'crwdns244:0crwdne244:0',
|
||||
'email' => 'crwdns412:0crwdne412:0',
|
||||
'password' => 'crwdns413:0crwdne413:0',
|
||||
'api-token' => 'crwdns414:0crwdne414:0',
|
||||
'api-token-help' => 'crwdns436:0crwdne436:0',
|
||||
'2fa' => [
|
||||
'help' => 'crwdns416:0crwdne416:0',
|
||||
],
|
||||
],
|
||||
|
||||
// Buttons
|
||||
'add' => 'crwdns249:0crwdne249:0',
|
||||
'save' => 'crwdns250:0crwdne250:0',
|
||||
'update' => 'crwdns251:0crwdne251:0',
|
||||
'create' => 'crwdns252:0crwdne252:0',
|
||||
'edit' => 'crwdns253:0crwdne253:0',
|
||||
'delete' => 'crwdns254:0crwdne254:0',
|
||||
'submit' => 'crwdns255:0crwdne255:0',
|
||||
'cancel' => 'crwdns256:0crwdne256:0',
|
||||
'remove' => 'crwdns257:0crwdne257:0',
|
||||
|
||||
// Other
|
||||
'optional' => 'crwdns417:0crwdne417:0',
|
||||
];
|
||||
19
resources/lang/en-UD/pagination.php
Executable file
19
resources/lang/en-UD/pagination.php
Executable file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pagination Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used by the paginator library to build
|
||||
| the simple pagination links. You are free to change them to anything
|
||||
| you want to customize your views to better match your application.
|
||||
|
|
||||
*/
|
||||
|
||||
'previous' => 'crwdns89:0crwdne89:0',
|
||||
'next' => 'crwdns90:0crwdne90:0',
|
||||
|
||||
];
|
||||
22
resources/lang/en-UD/reminders.php
Executable file
22
resources/lang/en-UD/reminders.php
Executable file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reminder Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
| that are given by the password broker for a password update attempt
|
||||
| has failed, such as for an invalid token or invalid new password.
|
||||
|
|
||||
*/
|
||||
|
||||
'password' => 'crwdns91:0crwdne91:0',
|
||||
'user' => 'crwdns92:0crwdne92:0',
|
||||
'token' => 'crwdns93:0crwdne93:0',
|
||||
'sent' => 'crwdns94:0crwdne94:0',
|
||||
'reset' => 'crwdns95:0crwdne95:0',
|
||||
|
||||
];
|
||||
14
resources/lang/en-UD/setup.php
Executable file
14
resources/lang/en-UD/setup.php
Executable file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'setup' => 'crwdns258:0crwdne258:0',
|
||||
'title' => 'crwdns259:0crwdne259:0',
|
||||
'service_details' => 'crwdns260:0crwdne260:0',
|
||||
'status_page_setup' => 'crwdns261:0crwdne261:0',
|
||||
'show_support' => 'crwdns262:0crwdne262:0',
|
||||
'admin_account' => 'crwdns263:0crwdne263:0',
|
||||
'complete_setup' => 'crwdns264:0crwdne264:0',
|
||||
'completed' => 'crwdns291:0crwdne291:0',
|
||||
'finish_setup' => 'crwdns292:0crwdne292:0',
|
||||
'allow_tracking' => 'crwdns437:0crwdne437:0',
|
||||
];
|
||||
106
resources/lang/en-UD/validation.php
Executable file
106
resources/lang/en-UD/validation.php
Executable file
@@ -0,0 +1,106 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
"accepted" => "crwdns96:0crwdne96:0",
|
||||
"active_url" => "crwdns97:0crwdne97:0",
|
||||
"after" => "crwdns98:0crwdne98:0",
|
||||
"alpha" => "crwdns99:0crwdne99:0",
|
||||
"alpha_dash" => "crwdns100:0crwdne100:0",
|
||||
"alpha_num" => "crwdns101:0crwdne101:0",
|
||||
"array" => "crwdns102:0crwdne102:0",
|
||||
"before" => "crwdns103:0crwdne103:0",
|
||||
"between" => [
|
||||
"numeric" => "crwdns104:0crwdne104:0",
|
||||
"file" => "crwdns418:0crwdne418:0",
|
||||
"string" => "crwdns419:0crwdne419:0",
|
||||
"array" => "crwdns420:0crwdne420:0",
|
||||
],
|
||||
"boolean" => "crwdns108:0crwdne108:0",
|
||||
"confirmed" => "crwdns109:0crwdne109:0",
|
||||
"date" => "crwdns110:0crwdne110:0",
|
||||
"date_format" => "crwdns111:0crwdne111:0",
|
||||
"different" => "crwdns112:0crwdne112:0",
|
||||
"digits" => "crwdns113:0crwdne113:0",
|
||||
"digits_between" => "crwdns114:0crwdne114:0",
|
||||
"email" => "crwdns115:0crwdne115:0",
|
||||
"exists" => "crwdns116:0crwdne116:0",
|
||||
"image" => "crwdns117:0crwdne117:0",
|
||||
"in" => "crwdns118:0crwdne118:0",
|
||||
"integer" => "crwdns119:0crwdne119:0",
|
||||
"ip" => "crwdns120:0crwdne120:0",
|
||||
"max" => [
|
||||
"numeric" => "crwdns121:0crwdne121:0",
|
||||
"file" => "crwdns421:0crwdne421:0",
|
||||
"string" => "crwdns422:0crwdne422:0",
|
||||
"array" => "crwdns423:0crwdne423:0",
|
||||
],
|
||||
"mimes" => "crwdns125:0crwdne125:0",
|
||||
"min" => [
|
||||
"numeric" => "crwdns126:0crwdne126:0",
|
||||
"file" => "crwdns424:0crwdne424:0",
|
||||
"string" => "crwdns425:0crwdne425:0",
|
||||
"array" => "crwdns426:0crwdne426:0",
|
||||
],
|
||||
"not_in" => "crwdns130:0crwdne130:0",
|
||||
"numeric" => "crwdns131:0crwdne131:0",
|
||||
"regex" => "crwdns132:0crwdne132:0",
|
||||
"required" => "crwdns133:0crwdne133:0",
|
||||
"required_if" => "crwdns134:0crwdne134:0",
|
||||
"required_with" => "crwdns135:0crwdne135:0",
|
||||
"required_with_all" => "crwdns136:0crwdne136:0",
|
||||
"required_without" => "crwdns137:0crwdne137:0",
|
||||
"required_without_all" => "crwdns138:0crwdne138:0",
|
||||
"same" => "crwdns139:0crwdne139:0",
|
||||
"size" => [
|
||||
"numeric" => "crwdns140:0crwdne140:0",
|
||||
"file" => "crwdns427:0crwdne427:0",
|
||||
"string" => "crwdns428:0crwdne428:0",
|
||||
"array" => "crwdns429:0crwdne429:0",
|
||||
],
|
||||
"unique" => "crwdns144:0crwdne144:0",
|
||||
"url" => "crwdns145:0crwdne145:0",
|
||||
"timezone" => "crwdns146:0crwdne146:0",
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
'rule-name' => 'crwdns147:0crwdne147:0',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap attribute place-holders
|
||||
| with something more reader friendly such as E-Mail Address instead
|
||||
| of "email". This simply helps us make messages a little cleaner.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [],
|
||||
|
||||
];
|
||||
59
resources/lang/en/cachet.php
Normal file
59
resources/lang/en/cachet.php
Normal file
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// Components
|
||||
'components' => [
|
||||
'status' => [
|
||||
1 => 'Operational',
|
||||
2 => 'Performance Issues',
|
||||
3 => 'Partial Outage',
|
||||
4 => 'Major Outage',
|
||||
],
|
||||
],
|
||||
|
||||
// Incidents
|
||||
'incidents' => [
|
||||
'none' => 'No incidents reported.',
|
||||
'past' => 'Past incidents',
|
||||
'previous_week' => 'Previous week',
|
||||
'next_week' => 'Next week',
|
||||
'none' => 'Nothing to report',
|
||||
'scheduled' => 'Scheduled Maintenance',
|
||||
'scheduled_at' => ', scheduled :timestamp',
|
||||
'status' => [
|
||||
0 => 'Scheduled', // TODO: Hopefully remove this.
|
||||
1 => 'Investigating',
|
||||
2 => 'Identified',
|
||||
3 => 'Watching',
|
||||
4 => 'Fixed',
|
||||
],
|
||||
],
|
||||
|
||||
// Service Status
|
||||
'service' => [
|
||||
'good' => 'All systems are functional.',
|
||||
'bad' => 'Some systems are experiencing issues.',
|
||||
],
|
||||
|
||||
'api' => [
|
||||
'regenerate' => 'Regenerate API Key',
|
||||
'revoke' => 'Revoke API Key',
|
||||
],
|
||||
|
||||
// Metrics
|
||||
'metrics' => [
|
||||
'filter' => [
|
||||
'hourly' => 'Hourly',
|
||||
'daily' => 'Daily',
|
||||
'monthly' => 'Monthly',
|
||||
],
|
||||
],
|
||||
|
||||
// Other
|
||||
'powered_by' => ':app Status Page is powered by <a href="https://cachethq.io">Cachet</a>.',
|
||||
'about_this_site' => 'About this site',
|
||||
'rss-feed' => 'RSS Feed',
|
||||
'atom-feed' => 'Atom Feed',
|
||||
'feed' => 'Status Feed',
|
||||
|
||||
];
|
||||
186
resources/lang/en/dashboard.php
Normal file
186
resources/lang/en/dashboard.php
Normal file
@@ -0,0 +1,186 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
'dashboard' => 'Dashboard',
|
||||
|
||||
// Incidents
|
||||
'incidents' => [
|
||||
'title' => 'Incidents & Schedule',
|
||||
'incidents' => 'Incidents',
|
||||
'logged' => '{0} There are no incidents, good work.|You have logged one incident.|You have reported <strong>:count</strong> incidents.',
|
||||
'incident-create-template' => 'Create Template',
|
||||
'incident-templates' => 'Incident Templates',
|
||||
'add' => [
|
||||
'title' => 'Add an incident',
|
||||
'success' => 'Incident added.',
|
||||
'failure' => 'Something went wrong with the incident.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Edit an incident',
|
||||
'success' => 'Incident updated.',
|
||||
'failure' => 'Something went wrong with the incident.',
|
||||
],
|
||||
|
||||
// Incident templates
|
||||
'templates' => [
|
||||
'title' => 'Incident Templates',
|
||||
'add' => [
|
||||
'title' => 'Create an incident template',
|
||||
'success' => 'Template created.',
|
||||
'failure' => 'Something went wrong with the incident template.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Edit template',
|
||||
'success' => 'Template has been updated!',
|
||||
'failure' => 'Something went wrong updating the incident template',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// Incident Maintenance
|
||||
'schedule' => [
|
||||
'schedule' => 'Scheduled Maintenance',
|
||||
'scheduled_at' => 'Scheduled at :timestamp',
|
||||
'add' => [
|
||||
'title' => 'Add Scheduled Maintenance',
|
||||
'success' => 'Schedule added.',
|
||||
'failure' => 'Something went wrong adding the schedule.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Edit Scheduled Maintenance',
|
||||
'success' => 'Schedule has been updated!',
|
||||
'failure' => 'Something went wrong editing the schedule.',
|
||||
],
|
||||
'delete' => [
|
||||
'success' => 'The schedule has been deleted and will not show on your status page.',
|
||||
'failure' => 'The schedule could not be deleted. Please try again.',
|
||||
],
|
||||
],
|
||||
|
||||
// Components
|
||||
'components' => [
|
||||
'components' => 'Components',
|
||||
'component_statuses' => 'Component Statuses',
|
||||
'listed_group' => 'Grouped under :name',
|
||||
'add' => [
|
||||
'title' => 'Add a component',
|
||||
'message' => 'You should add a component.',
|
||||
'success' => 'Component created.',
|
||||
'failure' => 'Something went wrong with the component.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Edit a component',
|
||||
'success' => 'Component updated.',
|
||||
'failure' => 'Something went wrong with the component.',
|
||||
],
|
||||
|
||||
// Component groups
|
||||
'groups' => [
|
||||
'groups' => 'Component group|Component groups',
|
||||
'add' => [
|
||||
'title' => 'Add a component group',
|
||||
'success' => 'Component group added.',
|
||||
'failure' => 'Something went wrong with the component group.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Edit a component group',
|
||||
'success' => 'Component group updated.',
|
||||
'failure' => 'Something went wrong with the component group.',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// Metrics
|
||||
'metrics' => [
|
||||
'metrics' => 'Metrics',
|
||||
'add' => [
|
||||
'title' => 'Create a metric',
|
||||
'success' => 'Metric created.',
|
||||
'failure' => 'Something went wrong with the metric.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Edit a metric',
|
||||
'success' => 'Metric updated.',
|
||||
'failure' => 'Something went wrong with the metric.',
|
||||
],
|
||||
],
|
||||
|
||||
// Team
|
||||
'team' => [
|
||||
'team' => 'Team',
|
||||
'member' => 'Member',
|
||||
'profile' => 'Profile',
|
||||
'description' => 'Team Members will be able to add, modify & edit components and incidents.',
|
||||
'add' => [
|
||||
'title' => 'Add a new team member',
|
||||
'success' => 'Team member added.',
|
||||
'failure' => 'Something went wrong with the component.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Update profile',
|
||||
'success' => 'Profile updated.',
|
||||
'failure' => 'Something went wrong when updating.',
|
||||
],
|
||||
],
|
||||
|
||||
// Settings
|
||||
'settings' => [
|
||||
'settings' => 'Settings',
|
||||
'app-setup' => [
|
||||
'app-setup' => 'Application Setup',
|
||||
'images-only' => 'Only images may be uploaded.',
|
||||
'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size',
|
||||
],
|
||||
'security' => [
|
||||
'security' => 'Security',
|
||||
'two-factor' => 'Users without two-factor authentication',
|
||||
],
|
||||
'stylesheet' => [
|
||||
'stylesheet' => 'Stylesheet',
|
||||
],
|
||||
'theme' => [
|
||||
'theme' => 'Theme',
|
||||
],
|
||||
'edit' => [
|
||||
'success' => 'Settings saved.',
|
||||
'failure' => 'Settings could not be saved.',
|
||||
],
|
||||
],
|
||||
|
||||
// Login
|
||||
'login' => [
|
||||
'login' => 'Login',
|
||||
'logged_in' => 'You\'re logged in.',
|
||||
'welcome' => 'Welcome Back!',
|
||||
'two-factor' => 'Please enter your token.',
|
||||
],
|
||||
|
||||
// Sidebar footer
|
||||
'help' => 'Help',
|
||||
'status_page' => 'Status Page',
|
||||
'logout' => 'Logout',
|
||||
|
||||
// Notifications
|
||||
'notifications' => [
|
||||
'notifications' => 'Notifications',
|
||||
'awesome' => 'Awesome.',
|
||||
'whoops' => 'Whoops.',
|
||||
],
|
||||
|
||||
// Welcome modal
|
||||
'welcome' => [
|
||||
'welcome' => 'Welcome to Cachet',
|
||||
'message' => 'Your status page is almost ready! You might want to configure these extra settings',
|
||||
'close' => 'Just go straight to my dashboard',
|
||||
'steps' => [
|
||||
'component' => 'Create components',
|
||||
'incident' => 'Create incidents',
|
||||
'customize' => 'Customize',
|
||||
'team' => 'Add users',
|
||||
'api' => 'Generate API token',
|
||||
'two-factor' => 'Two Factor Authetication',
|
||||
],
|
||||
],
|
||||
|
||||
];
|
||||
16
resources/lang/en/errors.php
Normal file
16
resources/lang/en/errors.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'not-found' => [
|
||||
'code' => '404',
|
||||
'title' => 'That page went missing!',
|
||||
'message' => 'Sorry, but the page you are looking for has not been found. Check the URL for errors and try again.',
|
||||
'link' => 'Return to homepage',
|
||||
],
|
||||
'unauthorized' => [
|
||||
'code' => '401',
|
||||
'title' => 'Unauthorized',
|
||||
'message' => 'Sorry, you need admin privileges to see this page.',
|
||||
'link' => 'Return to homepage',
|
||||
],
|
||||
];
|
||||
126
resources/lang/en/forms.php
Normal file
126
resources/lang/en/forms.php
Normal file
@@ -0,0 +1,126 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
// Setup form fields
|
||||
'setup' => [
|
||||
'email' => 'Email',
|
||||
'username' => 'Username',
|
||||
'password' => 'Password',
|
||||
'site_name' => 'Site Name',
|
||||
'site_domain' => 'Site Domain',
|
||||
'site_timezone' => 'Select your timezone',
|
||||
'site_locale' => 'Select your language',
|
||||
'enable_google2fa' => 'Enable Google Two Factor Authentication',
|
||||
],
|
||||
|
||||
// Login form fields
|
||||
'login' => [
|
||||
'email' => 'Email',
|
||||
'password' => 'Password',
|
||||
'2fauth' => 'Authentication Code',
|
||||
'invalid' => 'Invalid email or password',
|
||||
'invalid-token' => 'Invalid token',
|
||||
],
|
||||
|
||||
// Incidents form fields
|
||||
'incidents' => [
|
||||
'name' => 'Name',
|
||||
'status' => 'Status',
|
||||
'component' => 'Component',
|
||||
'message' => 'Message',
|
||||
'message-help' => 'You may also use Markdown.',
|
||||
'scheduled_at' => 'When to schedule the maintenance for?',
|
||||
|
||||
'templates' => [
|
||||
'name' => 'Name',
|
||||
'template' => 'Template',
|
||||
],
|
||||
],
|
||||
|
||||
// Components form fields
|
||||
'components' => [
|
||||
'name' => 'Name',
|
||||
'status' => 'Status',
|
||||
'group' => 'Group',
|
||||
'description' => 'Description',
|
||||
'link' => 'Link',
|
||||
'tags' => 'Tags',
|
||||
'tags-help' => 'Comma separated.',
|
||||
|
||||
'groups' => [
|
||||
'name' => 'Name',
|
||||
],
|
||||
],
|
||||
|
||||
// Metric form fields
|
||||
'metrics' => [
|
||||
'name' => 'Name',
|
||||
'suffix' => 'Suffix',
|
||||
'description' => 'Description',
|
||||
'description-help' => 'You may also use Markdown.',
|
||||
'display-chart' => 'Display chart on status page?',
|
||||
'default-value' => 'Default value',
|
||||
'calc_type' => 'Calculation of metrics',
|
||||
'type_sum' => 'Sum',
|
||||
'type_avg' => 'Average',
|
||||
|
||||
'points' => [
|
||||
'value' => 'Value',
|
||||
],
|
||||
],
|
||||
|
||||
// Settings
|
||||
'settings' => [
|
||||
/// Application setup
|
||||
'app-setup' => [
|
||||
'site-name' => 'Site Name',
|
||||
'site-url' => 'Site URL',
|
||||
'site-timezone' => 'Site Timezone',
|
||||
'site-locale' => 'Site Language',
|
||||
'date-format' => 'Date Format',
|
||||
'display-graphs' => 'Display graphs on status page?',
|
||||
'about-this-page' => 'About this page',
|
||||
'days-of-incidents' => 'How many days of incidents to show?',
|
||||
'banner' => 'Banner Image',
|
||||
'banner-help' => "It's recommended that you upload files no bigger than 930px wide .",
|
||||
'google-analytics' => "Google Analytics code",
|
||||
],
|
||||
'security' => [
|
||||
'allowed-domains' => 'Allowed domains',
|
||||
'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.',
|
||||
],
|
||||
'stylesheet' => [
|
||||
'custom-css' => 'Custom Stylesheet',
|
||||
],
|
||||
'theme' => [
|
||||
'background-color' => 'Background Color',
|
||||
'text-color' => 'Text Color',
|
||||
],
|
||||
],
|
||||
|
||||
'user' => [
|
||||
'username' => 'Username',
|
||||
'email' => 'Email',
|
||||
'password' => 'Password',
|
||||
'api-token' => 'API Token',
|
||||
'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.',
|
||||
'2fa' => [
|
||||
'help' => 'Enabling two factor authentication increases security of your account. You will need to download <a href="https://support.google.com/accounts/answer/1066447?hl=en">Google Authenticator</a> or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.',
|
||||
],
|
||||
],
|
||||
|
||||
// Buttons
|
||||
'add' => 'Add',
|
||||
'save' => 'Save',
|
||||
'update' => 'Update',
|
||||
'create' => 'Create',
|
||||
'edit' => 'Edit',
|
||||
'delete' => 'Delete',
|
||||
'submit' => 'Submit',
|
||||
'cancel' => 'Cancel',
|
||||
'remove' => 'Remove',
|
||||
|
||||
// Other
|
||||
'optional' => '* Optional',
|
||||
];
|
||||
19
resources/lang/en/pagination.php
Normal file
19
resources/lang/en/pagination.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pagination Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used by the paginator library to build
|
||||
| the simple pagination links. You are free to change them to anything
|
||||
| you want to customize your views to better match your application.
|
||||
|
|
||||
*/
|
||||
|
||||
'previous' => '« Previous',
|
||||
'next' => 'Next »',
|
||||
|
||||
];
|
||||
22
resources/lang/en/reminders.php
Normal file
22
resources/lang/en/reminders.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reminder Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
| that are given by the password broker for a password update attempt
|
||||
| has failed, such as for an invalid token or invalid new password.
|
||||
|
|
||||
*/
|
||||
|
||||
'password' => 'Passwords must be at least six characters and match the confirmation.',
|
||||
'user' => 'We can\'t find a user with that e-mail address.',
|
||||
'token' => 'This password reset token is invalid.',
|
||||
'sent' => 'Password reminder sent!',
|
||||
'reset' => 'Password has been reset!',
|
||||
|
||||
];
|
||||
14
resources/lang/en/setup.php
Normal file
14
resources/lang/en/setup.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'setup' => 'Setup',
|
||||
'title' => 'Setup Cachet',
|
||||
'service_details' => 'Service Details',
|
||||
'status_page_setup' => 'Status Page Setup',
|
||||
'show_support' => 'Show support for Cachet? <small>Places a link in the footer linking to Cachet.</small>',
|
||||
'admin_account' => 'Administrator Account',
|
||||
'complete_setup' => 'Complete Setup',
|
||||
'completed' => 'Cachet has been configured successfully!',
|
||||
'finish_setup' => 'Go to dashboard',
|
||||
'allow_tracking' => 'Allow anonymous usage tracking?',
|
||||
];
|
||||
106
resources/lang/en/validation.php
Normal file
106
resources/lang/en/validation.php
Normal file
@@ -0,0 +1,106 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
"accepted" => "The :attribute must be accepted.",
|
||||
"active_url" => "The :attribute is not a valid URL.",
|
||||
"after" => "The :attribute must be a date after :date.",
|
||||
"alpha" => "The :attribute may only contain letters.",
|
||||
"alpha_dash" => "The :attribute may only contain letters, numbers, and dashes.",
|
||||
"alpha_num" => "The :attribute may only contain letters and numbers.",
|
||||
"array" => "The :attribute must be an array.",
|
||||
"before" => "The :attribute must be a date before :date.",
|
||||
"between" => [
|
||||
"numeric" => "The :attribute must be between :min and :max.",
|
||||
"file" => "The :attribute must be between :min and :max kilobytes.",
|
||||
"string" => "The :attribute must be between :min and :max characters.",
|
||||
"array" => "The :attribute must have between :min and :max items.",
|
||||
],
|
||||
"boolean" => "The :attribute field must be true or false.",
|
||||
"confirmed" => "The :attribute confirmation does not match.",
|
||||
"date" => "The :attribute is not a valid date.",
|
||||
"date_format" => "The :attribute does not match the format :format.",
|
||||
"different" => "The :attribute and :other must be different.",
|
||||
"digits" => "The :attribute must be :digits digits.",
|
||||
"digits_between" => "The :attribute must be between :min and :max digits.",
|
||||
"email" => "The :attribute must be a valid email address.",
|
||||
"exists" => "The selected :attribute is invalid.",
|
||||
"image" => "The :attribute must be an image.",
|
||||
"in" => "The selected :attribute is invalid.",
|
||||
"integer" => "The :attribute must be an integer.",
|
||||
"ip" => "The :attribute must be a valid IP address.",
|
||||
"max" => [
|
||||
"numeric" => "The :attribute may not be greater than :max.",
|
||||
"file" => "The :attribute may not be greater than :max kilobytes.",
|
||||
"string" => "The :attribute may not be greater than :max characters.",
|
||||
"array" => "The :attribute may not have more than :max items.",
|
||||
],
|
||||
"mimes" => "The :attribute must be a file of type: :values.",
|
||||
"min" => [
|
||||
"numeric" => "The :attribute must be at least :min.",
|
||||
"file" => "The :attribute must be at least :min kilobytes.",
|
||||
"string" => "The :attribute must be at least :min characters.",
|
||||
"array" => "The :attribute must have at least :min items.",
|
||||
],
|
||||
"not_in" => "The selected :attribute is invalid.",
|
||||
"numeric" => "The :attribute must be a number.",
|
||||
"regex" => "The :attribute format is invalid.",
|
||||
"required" => "The :attribute field is required.",
|
||||
"required_if" => "The :attribute field is required when :other is :value.",
|
||||
"required_with" => "The :attribute field is required when :values is present.",
|
||||
"required_with_all" => "The :attribute field is required when :values is present.",
|
||||
"required_without" => "The :attribute field is required when :values is not present.",
|
||||
"required_without_all" => "The :attribute field is required when none of :values are present.",
|
||||
"same" => "The :attribute and :other must match.",
|
||||
"size" => [
|
||||
"numeric" => "The :attribute must be :size.",
|
||||
"file" => "The :attribute must be :size kilobytes.",
|
||||
"string" => "The :attribute must be :size characters.",
|
||||
"array" => "The :attribute must contain :size items.",
|
||||
],
|
||||
"unique" => "The :attribute has already been taken.",
|
||||
"url" => "The :attribute format is invalid.",
|
||||
"timezone" => "The :attribute must be a valid zone.",
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
'rule-name' => 'custom-message',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap attribute place-holders
|
||||
| with something more reader friendly such as E-Mail Address instead
|
||||
| of "email". This simply helps us make messages a little cleaner.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [],
|
||||
|
||||
];
|
||||
47
resources/lang/es/cachet.php
Normal file
47
resources/lang/es/cachet.php
Normal file
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// Components
|
||||
'components' => [
|
||||
'status' => [
|
||||
1 => 'Operacional',
|
||||
2 => 'Problemas de rendimiento',
|
||||
3 => 'Interrupción parcial',
|
||||
4 => 'Interrupción mayor',
|
||||
],
|
||||
],
|
||||
|
||||
// Incidents
|
||||
'incidents' => [
|
||||
'none' => 'No hay ninguna incidencia reportada.',
|
||||
'past' => 'Incidentes anteriores',
|
||||
'previous_week' => 'Semana anterior',
|
||||
'next_week' => 'Siguiente semana',
|
||||
'none' => 'No hay ninguna incidencia reportada.',
|
||||
'status' => [
|
||||
1 => 'Investigando',
|
||||
2 => 'Identificado',
|
||||
3 => 'Observando',
|
||||
4 => 'Corregido',
|
||||
],
|
||||
],
|
||||
|
||||
// Service Status
|
||||
'service' => [
|
||||
'good' => 'Todos los sistemas funcionando.',
|
||||
'bad' => 'Algunos sistemas están experimentando problemas.',
|
||||
],
|
||||
|
||||
'api' => [
|
||||
'regenerate' => 'Regenerar API Key',
|
||||
'revoke' => 'Revocar API Key',
|
||||
],
|
||||
|
||||
// Other
|
||||
'powered_by' => ':app La página de estado es alimentada por <a href="https://cachethq.github.io">Cachet</a>.',
|
||||
'about_this_site' => 'Acerca de este sitio',
|
||||
'rss-feed' => 'Feed RSS',
|
||||
'atom-feed' => 'Atom Feed',
|
||||
'feed' => 'Estado del Feed',
|
||||
|
||||
];
|
||||
158
resources/lang/es/dashboard.php
Normal file
158
resources/lang/es/dashboard.php
Normal file
@@ -0,0 +1,158 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
'dashboard' => 'Panel de Control',
|
||||
|
||||
// Incidents
|
||||
'incidents' => [
|
||||
'incidents' => 'Incidentes',
|
||||
'logged' => '{0} No hay incidencias, ¡buen trabajo!|Has registrado una incidencia.|Has reportado <strong>:count</strong> incidencias.',
|
||||
'incident-create-template' => 'Crear plantilla',
|
||||
'incident-templates' => 'Plantillas de incidente',
|
||||
'add' => [
|
||||
'title' => 'Agregar un incidente',
|
||||
'success' => 'Incidente agregado.',
|
||||
'failure' => 'Algo salió mal con el incidente.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Editar un incidente',
|
||||
'success' => 'Incidente actualizado.',
|
||||
'failure' => 'Algo salió mal con el incidente.',
|
||||
],
|
||||
|
||||
// Incident templates
|
||||
'templates' => [
|
||||
'title' => 'Plantillas de incidente',
|
||||
'add' => [
|
||||
'title' => 'Crear una plantilla de incidente',
|
||||
'success' => 'Plantilla creada.',
|
||||
'failure' => 'Algo salió mal con la plantilla de incidente.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Editar plantilla',
|
||||
'success' => '¡Se ha actualizado la plantilla!',
|
||||
'failure' => 'Algo salió mal actualizar la plantilla de incidente',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// Components
|
||||
'components' => [
|
||||
'components' => 'Componentes',
|
||||
'component_statuses' => 'Estatus de los componentes',
|
||||
'add' => [
|
||||
'title' => 'Agregar un componente',
|
||||
'message' => 'Deberías agregar un componente.',
|
||||
'success' => 'Componente creado.',
|
||||
'failure' => 'Algo salió mal con el componente.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Editar un componente',
|
||||
'success' => 'Componente actualizado.',
|
||||
'failure' => 'Algo salió mal con el componente.',
|
||||
],
|
||||
|
||||
// Component groups
|
||||
'groups' => [
|
||||
'groups' => 'Grupo de componente|Grupos de componente',
|
||||
'add' => [
|
||||
'title' => 'Agregar un grupo',
|
||||
'success' => 'Grupo componente agregado.',
|
||||
'failure' => 'Algo salió mal con el grupo del componente.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Edit a component group',
|
||||
'success' => 'Component group updated.',
|
||||
'failure' => 'Something went wrong with the component group.',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// Metrics
|
||||
'metrics' => [
|
||||
'metrics' => 'Métricas',
|
||||
'add' => [
|
||||
'title' => 'Crear una métrica',
|
||||
'success' => 'Métrica creada.',
|
||||
'failure' => 'Algo salió mal con la métrica.',
|
||||
],
|
||||
],
|
||||
|
||||
// Team
|
||||
'team' => [
|
||||
'team' => 'Equipo',
|
||||
'member' => 'Miembro',
|
||||
'profile' => 'Perfil',
|
||||
'description' => 'Los miembros del equipo será capaces de añadir, modificar y editar componentes e incidentes.',
|
||||
'add' => [
|
||||
'title' => 'Agregar miembro de equipo',
|
||||
'success' => 'Miembro del equipo agregado.',
|
||||
'failure' => 'Algo salió mal con el componente.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Actualizar perfil',
|
||||
'success' => 'Perfil actualizado.',
|
||||
'failure' => 'Algo salió mal al actualizar.',
|
||||
],
|
||||
],
|
||||
|
||||
// Settings
|
||||
'settings' => [
|
||||
'settings' => 'Ajustes',
|
||||
'app-setup' => [
|
||||
'app-setup' => 'Configuración',
|
||||
'images-only' => 'Sólo puedes subir imágenes.',
|
||||
'too-big' => 'El archivo subido es demasiado grande. Sube una imagen con tamaño menor a: tamaño',
|
||||
],
|
||||
'security' => [
|
||||
'security' => 'Seguridad',
|
||||
],
|
||||
'stylesheet' => [
|
||||
'stylesheet' => 'Hoja de estilo',
|
||||
],
|
||||
'theme' => [
|
||||
'theme' => 'Tema',
|
||||
],
|
||||
'edit' => [
|
||||
'success' => 'Configuración guardada.',
|
||||
'failure' => 'La configuración no ha podido ser guardada.',
|
||||
],
|
||||
],
|
||||
|
||||
// Login
|
||||
'login' => [
|
||||
'login' => 'Iniciar Sesión',
|
||||
'logged_in' => 'Estás conectado.',
|
||||
'welcome' => '¡Bienvenido!',
|
||||
'two-factor' => 'Por favor ingresa tu token.',
|
||||
],
|
||||
|
||||
// Sidebar footer
|
||||
'help' => 'Ayuda',
|
||||
'status_page' => 'Página de estado',
|
||||
'logout' => 'Salir',
|
||||
|
||||
// Notifications
|
||||
'notifications' => [
|
||||
'notifications' => 'Notificaciones',
|
||||
'awesome' => 'Excelente.',
|
||||
'whoops' => 'Whoops.',
|
||||
],
|
||||
|
||||
// Welcome modal
|
||||
'welcome' => [
|
||||
'welcome' => 'Bienvenido a Cachet',
|
||||
'message' => 'La página de estado está casi lista! Tal vez quieras configurar estos ajustes adicionales',
|
||||
'close' => 'Ir directo al Panel de Control',
|
||||
'steps' => [
|
||||
'component' => 'Crear componentes',
|
||||
'incident' => 'Crear incidentes',
|
||||
'customize' => 'Personaliza tu página de estado Cachet.',
|
||||
'team' => 'Agregar usuarios a tu equipo.',
|
||||
'api' => 'Generar token API.',
|
||||
'two-factor' => 'Habilitar autenticación de dos pasos.',
|
||||
],
|
||||
],
|
||||
|
||||
];
|
||||
16
resources/lang/es/errors.php
Normal file
16
resources/lang/es/errors.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'not-found' => [
|
||||
'code' => '404',
|
||||
'title' => '¡Esta página se perdió!',
|
||||
'message' => 'Lo sentimos, no se ha encontrado la página que estás buscando. Comprueba que la dirección URL no contenga errores y vuelve a intentarlo.',
|
||||
'link' => 'Regresar a la página de inicio',
|
||||
],
|
||||
'unauthorized' => [
|
||||
'code' => '401',
|
||||
'title' => 'No autorizado',
|
||||
'message' => 'Lo sentimos, necesitas privilegios de administrador para ver esta página.',
|
||||
'link' => 'Regresar a la página de inicio',
|
||||
],
|
||||
];
|
||||
124
resources/lang/es/forms.php
Normal file
124
resources/lang/es/forms.php
Normal file
@@ -0,0 +1,124 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
// Setup form fields
|
||||
'setup' => [
|
||||
'email' => 'Correo electrónico',
|
||||
'username' => 'Nombre de usario',
|
||||
'password' => 'Contraseña',
|
||||
'site_name' => 'Nombre del sitio',
|
||||
'site_domain' => 'Dominio de sitio',
|
||||
'site_timezone' => 'Selecciona tu zona horaria',
|
||||
'site_locale' => 'Selecciona tu idioma',
|
||||
'enable_google2fa' => 'Habilitar la verificación en dos pasos de Google',
|
||||
],
|
||||
|
||||
// Login form fields
|
||||
'login' => [
|
||||
'email' => 'Correo electrónico',
|
||||
'password' => 'Contraseña',
|
||||
'2fauth' => 'Código de Autenticación',
|
||||
'invalid' => 'Dirección de correo o contraseña incorrectos',
|
||||
'invalid-token' => 'Token inválido',
|
||||
],
|
||||
|
||||
// Incidents form fields
|
||||
'incidents' => [
|
||||
'name' => 'Nombre',
|
||||
'status' => 'Estado',
|
||||
'component' => 'Componente',
|
||||
'message' => 'Mensaje',
|
||||
'message-help' => 'También puedes usar Markdown.',
|
||||
|
||||
'templates' => [
|
||||
'name' => 'Nombre',
|
||||
'template' => 'Plantilla',
|
||||
],
|
||||
],
|
||||
|
||||
// Components form fields
|
||||
'components' => [
|
||||
'name' => 'Nombre',
|
||||
'status' => 'Estatus',
|
||||
'group' => 'Grupo',
|
||||
'description' => 'Descripción',
|
||||
'link' => 'Enlace',
|
||||
'tags' => 'Etiquetas',
|
||||
'tags-help' => 'Separado por comas.',
|
||||
|
||||
'groups' => [
|
||||
'name' => 'Nombre',
|
||||
],
|
||||
],
|
||||
|
||||
// Metric form fields
|
||||
'metrics' => [
|
||||
'name' => 'Nombre',
|
||||
'suffix' => 'Sufijo',
|
||||
'description' => 'Descripción',
|
||||
'description-help' => 'Puedes usar también Markdown.',
|
||||
'display-chart' => '¿Vizualizar gráfica en la página de estado?',
|
||||
'calc_type' => 'Calculation of metrics',
|
||||
'type_sum' => 'Sum',
|
||||
'type_avg' => 'Average',
|
||||
|
||||
'points' => [
|
||||
'value' => 'Valor',
|
||||
],
|
||||
],
|
||||
|
||||
// Settings
|
||||
'settings' => [
|
||||
/// Application setup
|
||||
'app-setup' => [
|
||||
'site-name' => 'Nombre del sitio',
|
||||
'site-url' => 'URL del sitio',
|
||||
'site-timezone' => 'Zona horaria del sitio',
|
||||
'site-locale' => 'Idioma del sitio',
|
||||
'date-format' => 'Formato de la fecha',
|
||||
'display-graphs' => '¿Visualizar gráficas en la página de estado?',
|
||||
'about-this-page' => 'Sobre esta página',
|
||||
'days-of-incidents' => '¿Cuántos días de incidentes mostrar?',
|
||||
'banner' => 'Imagen de inicio',
|
||||
'banner-help' => "Se recomienda subir una imagen no más grande de 930px de ancho .",
|
||||
'google-analytics' => "Código de Google Analytics",
|
||||
],
|
||||
'security' => [
|
||||
'allowed-domains' => 'Dominios permitidos',
|
||||
'allowed-domains-help' => 'Separados por coma. El dominio establecido en la configuración del sitio formará automáticamente parte de los dominios permitidos.',
|
||||
],
|
||||
'stylesheet' => [
|
||||
'custom-css' => 'Hoja de estilo personalizada',
|
||||
],
|
||||
'theme' => [
|
||||
'background-color' => 'Color de fondo',
|
||||
'text-color' => 'Color de Texto',
|
||||
],
|
||||
],
|
||||
|
||||
'user' => [
|
||||
'username' => 'Nombre de usario',
|
||||
'email' => 'Correo electrónico',
|
||||
'password' => 'Contraseña',
|
||||
'api-token' => 'API Token',
|
||||
'api-token-help' => 'Al regenerar su API key revocara todas las aplicaciones existentes.',
|
||||
'2fa' => [
|
||||
'help' => 'Habilitar autenticación de dos pasos aumenta la seguridad de tu cuenta. Necesitarás descargar <a href="https://support.google.com/accounts/answer/1066447?hl=en"> Google Authenticator</a> o una aplicación similar a su dispositivo móvil. Al iniciar sesión, te pedirá proporcionar un token generado por la aplicación.',
|
||||
],
|
||||
],
|
||||
|
||||
// Buttons
|
||||
'add' => 'Agregar',
|
||||
'save' => 'Guardar',
|
||||
'update' => 'Actualizar',
|
||||
'create' => 'Crear',
|
||||
'edit' => 'Editar',
|
||||
'delete' => 'Eliminar',
|
||||
'submit' => 'Enviar',
|
||||
'cancel' => 'Cancelar',
|
||||
'remove' => 'Remover',
|
||||
|
||||
// Other
|
||||
'optional' => '* Opcional',
|
||||
];
|
||||
19
resources/lang/es/pagination.php
Normal file
19
resources/lang/es/pagination.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pagination Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used by the paginator library to build
|
||||
| the simple pagination links. You are free to change them to anything
|
||||
| you want to customize your views to better match your application.
|
||||
|
|
||||
*/
|
||||
|
||||
'previous' => '« Anterior',
|
||||
'next' => 'Siguiente »',
|
||||
|
||||
];
|
||||
22
resources/lang/es/reminders.php
Normal file
22
resources/lang/es/reminders.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reminder Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
| that are given by the password broker for a password update attempt
|
||||
| has failed, such as for an invalid token or invalid new password.
|
||||
|
|
||||
*/
|
||||
|
||||
'password' => 'Las contraseñas deben tener al menos seis caracteres y coincidir con la confirmación.',
|
||||
'user' => 'No podemos encontrar un usuario con esa dirección de correo electrónico.',
|
||||
'token' => 'El token para resetear el password no es válido.',
|
||||
'sent' => '!Recordatorio de contraseña enviado!',
|
||||
'reset' => '!La contraseña ha sido restablecida!',
|
||||
|
||||
];
|
||||
13
resources/lang/es/setup.php
Normal file
13
resources/lang/es/setup.php
Normal file
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'setup' => 'Configurar',
|
||||
'title' => 'Configurar Cachet',
|
||||
'service_details' => 'Detalles del servicio',
|
||||
'status_page_setup' => 'Configuración de la página de estado',
|
||||
'show_support' => '¿Mostrar tu apoyo a Cachet? <small>Colocara un enlace en el footer vinculando a Cachet.</small>',
|
||||
'admin_account' => 'Cuenta de administrador',
|
||||
'complete_setup' => 'Completar configuración',
|
||||
'completed' => '¡Cachet se ha configurado correctamente!',
|
||||
'finish_setup' => 'Ir a Panel de control',
|
||||
];
|
||||
106
resources/lang/es/validation.php
Normal file
106
resources/lang/es/validation.php
Normal file
@@ -0,0 +1,106 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
"accepted" => "El :attribute debe ser aceptado.",
|
||||
"active_url" => "El :attribute no es un enlace válido.",
|
||||
"after" => "El :attribute debe ser una fecha después de :date.",
|
||||
"alpha" => "El :attribute sólo puede contener letras.",
|
||||
"alpha_dash" => "El :attribute sólo puede contener letras, números y guiones.",
|
||||
"alpha_num" => "El :attribute sólo puede contener letras y números.",
|
||||
"array" => "El :attribute debe ser una matriz.",
|
||||
"before" => "El :attribute debe ser una fecha antes de :date.",
|
||||
"between" => [
|
||||
"numeric" => "El :attribute debe ser entre :min y :max.",
|
||||
"file" => "El :attribute debe ser entre :min y :max kilobytes.",
|
||||
"string" => "El :attribute debe tener entre :min y :max caracteres.",
|
||||
"array" => "El :attribute debe tener entre :min y :max objetos.",
|
||||
],
|
||||
"boolean" => "El campo del :attribute debe ser verdadero o falso.",
|
||||
"confirmed" => "La confirmación del :attribute no coincide.",
|
||||
"date" => "El :attribute no es una fecha válida.",
|
||||
"date_format" => "El :attribute no cumple el formato :format.",
|
||||
"different" => ":attribute y :other deben ser diferentes.",
|
||||
"digits" => "El :attribute debe tener :digits dígitos.",
|
||||
"digits_between" => "El :attribute debe tener entre: min y :max dígitos.",
|
||||
"email" => "El :attribute debe ser una dirección de email válida.",
|
||||
"exists" => "El :attribute seleccionado es inválido.",
|
||||
"image" => "El :attribute debe ser una imagen.",
|
||||
"in" => "El :attribute seleccionado es inválido.",
|
||||
"integer" => "El :attribute debe ser un número entero.",
|
||||
"ip" => "El :attribute debe ser una dirección IP válida.",
|
||||
"max" => [
|
||||
"numeric" => "El :attribute no puede tener más de :max.",
|
||||
"file" => "El :attribute no puede tener más de :max kilobytes.",
|
||||
"string" => "El :attribute no puede tener más de :max caracteres.",
|
||||
"array" => "El :attribute no puede tener más de :max objetos.",
|
||||
],
|
||||
"mimes" => "El :attribute debe ser un archivo de tipo: :values.",
|
||||
"min" => [
|
||||
"numeric" => "El :attribute debe tener al menos :min.",
|
||||
"file" => "El :attribute debe tener al menos :min kilobytes.",
|
||||
"string" => "El :attribute debe tener al menos :min characters.",
|
||||
"array" => "El :attribute debe tener al menos :min objetos.",
|
||||
],
|
||||
"not_in" => "El :attribute seleccionado es inválido.",
|
||||
"numeric" => "El :attribute sebe ser un número.",
|
||||
"regex" => "El formato del :attribute es inválido.",
|
||||
"required" => "El campo del :attribute es requerido.",
|
||||
"required_if" => "El campo del :attribute se requiere cuando :other es :value.",
|
||||
"required_with" => "El campo del :attribute se requiere cuando :values es presente.",
|
||||
"required_with_all" => "El campo del :attribute se requiere cuando :values es presente.",
|
||||
"required_without" => "El campo del :attribute se requiere cuando :values no es presente.",
|
||||
"required_without_all" => "El campo del :attribute se requiere cuando ninguno de los :values son presentes.",
|
||||
"same" => "Los :attribute y :other deben coincidir.",
|
||||
"size" => [
|
||||
"numeric" => "El :attribute debe ser :size.",
|
||||
"file" => "El :attribute debe ser :size kilobytes.",
|
||||
"string" => "El :attribute debe tener :size caracteres.",
|
||||
"array" => "El :attribute debe contener :size objetos.",
|
||||
],
|
||||
"unique" => "El :attribute ya ha sido usado.",
|
||||
"url" => "El formato :attribute es inválido.",
|
||||
"timezone" => "El :attribute debe ser una zona válida.",
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
'rule-name' => 'mensaje-personalizado',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap attribute place-holders
|
||||
| with something more reader friendly such as E-Mail Address instead
|
||||
| of "email". This simply helps us make messages a little cleaner.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [],
|
||||
|
||||
];
|
||||
47
resources/lang/fr/cachet.php
Normal file
47
resources/lang/fr/cachet.php
Normal file
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// Components
|
||||
'components' => [
|
||||
'status' => [
|
||||
1 => 'Opérationnel',
|
||||
2 => 'Problème de performances',
|
||||
3 => 'Panne partielle',
|
||||
4 => 'Panne majeure',
|
||||
],
|
||||
],
|
||||
|
||||
// Incidents
|
||||
'incidents' => [
|
||||
'none' => 'Aucun incident reporté.',
|
||||
'past' => 'Incidents précédents',
|
||||
'previous_week' => 'Semaine précédente',
|
||||
'next_week' => 'Semaine suivante',
|
||||
'none' => 'Rien à reporter',
|
||||
'status' => [
|
||||
1 => 'Enquête en cours',
|
||||
2 => 'Identifié',
|
||||
3 => 'Analyse en cours',
|
||||
4 => 'Corrigé',
|
||||
],
|
||||
],
|
||||
|
||||
// Service Status
|
||||
'service' => [
|
||||
'good' => 'Tous les services sont fonctionnels.',
|
||||
'bad' => 'Certains services rencontrent des problèmes.',
|
||||
],
|
||||
|
||||
'api' => [
|
||||
'regenerate' => 'Regénérer une clé d\'API',
|
||||
'revoke' => 'Révoquer cette clé d\'API',
|
||||
],
|
||||
|
||||
// Other
|
||||
'powered_by' => ':app Status Page est propulsé par <a href="https://cachethq.github.io">Cachet</a>.',
|
||||
'about_this_site' => 'À propos de ce site',
|
||||
'rss-feed' => 'Flux RSS',
|
||||
'atom-feed' => 'Flux Atom',
|
||||
'feed' => 'Flux des services',
|
||||
|
||||
];
|
||||
162
resources/lang/fr/dashboard.php
Normal file
162
resources/lang/fr/dashboard.php
Normal file
@@ -0,0 +1,162 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
'dashboard' => 'Tableau de bord',
|
||||
|
||||
// Incidents
|
||||
'incidents' => [
|
||||
'incidents' => 'Incidents',
|
||||
'logged' => '{0} Il n\'y a aucun incident, bien joué !|Vous avez reporté un incident.|Vous avez reporté <strong>:count</strong> incidents.',
|
||||
'incident-create-template' => 'Créer un modèle',
|
||||
'incident-templates' => 'Modèles d\'incident',
|
||||
'add' => [
|
||||
'title' => 'Ajouter un incident',
|
||||
'success' => 'Incident ajouté.',
|
||||
'failure' => 'Il s\'est passé quelque chose avec cet incident.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Éditer un incident',
|
||||
'success' => 'Incident mis-à-jour.',
|
||||
'failure' => 'Il s\'est passé quelque chose avec cet incident.',
|
||||
],
|
||||
|
||||
// Incident templates
|
||||
'templates' => [
|
||||
'add' => [
|
||||
'title' => 'Créer un modèle d\'incident',
|
||||
'success' => 'Modèle créé.',
|
||||
'failure' => 'Il s\'est passé quelque chose avec ce modèle d\'incident.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Modifier un modèle',
|
||||
'success' => 'Modèle mis à jour.',
|
||||
'failure' => 'Une erreur s\'est produite lors de la mise à jour du modèle.',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// Components
|
||||
'components' => [
|
||||
'components' => 'Composant|Composants',
|
||||
'component_statuses' => 'Statut des composants',
|
||||
'add' => [
|
||||
'title' => 'Créer un composant',
|
||||
'message' => 'Commencez par ajouter un composant.',
|
||||
'success' => 'Composant créé.',
|
||||
'failure' => 'Il s\'est passé quelque chose avec ce composant.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Éditer un composant',
|
||||
'success' => 'Composant mis-à-jour.',
|
||||
'failure' => 'Il s\'est passé quelque chose avec ce composant.',
|
||||
],
|
||||
|
||||
// Component groups
|
||||
'groups' => [
|
||||
'groups' => 'Groupe de composants|Groupes de composants',
|
||||
'add' => [
|
||||
'title' => 'Ajouter un group de composants',
|
||||
'success' => 'Groupe de composants ajouté.',
|
||||
'failure' => 'Il s\'est passé quelque chose avec ce composantgroupe de composants.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Edit a component group',
|
||||
'success' => 'Component group updated.',
|
||||
'failure' => 'Something went wrong with the component group.',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// Metrics
|
||||
'metrics' => [
|
||||
'metrics' => 'Point de mesure',
|
||||
'add' => [
|
||||
'title' => 'Créer un point de mesure',
|
||||
'success' => 'Point de mesure créé.',
|
||||
'failure' => 'Il s\'est passé quelque chose avec ce point de mesure.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Edit a metric',
|
||||
'success' => 'Metric updated.',
|
||||
'failure' => 'Something went wrong with the metric.',
|
||||
],
|
||||
],
|
||||
|
||||
// Team
|
||||
'team' => [
|
||||
'team' => 'Équipe',
|
||||
'member' => 'Membre',
|
||||
'profile' => 'Profil',
|
||||
'description' => 'Les membres de l\'équipe pourrons ajouter, modifier & éditer les composants et incidents.',
|
||||
'add' => [
|
||||
'title' => 'Ajouter un membre à l\'équipe',
|
||||
'success' => 'Membre ajouté.',
|
||||
'failure' => 'Il s\'est passé quelque chose avec ce membre.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Mettre à jour le profil',
|
||||
'success' => 'Profil mis-à-jour.',
|
||||
'failure' => 'Il s\'est passé quelque chose en mettant à jour le profil.',
|
||||
],
|
||||
],
|
||||
|
||||
// Settings
|
||||
'settings' => [
|
||||
'settings' => 'Réglages',
|
||||
'app-setup' => [
|
||||
'app-setup' => 'Configuration',
|
||||
'images-only' => 'Only images may be uploaded.',
|
||||
'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size',
|
||||
],
|
||||
'security' => [
|
||||
'security' => 'Sécurité',
|
||||
],
|
||||
'stylesheet' => [
|
||||
'stylesheet' => 'Feuille de style',
|
||||
],
|
||||
'theme' => [
|
||||
'theme' => 'Thème',
|
||||
],
|
||||
'edit' => [
|
||||
'success' => 'Réglages sauvegardés.',
|
||||
'failure' => 'Les réglages n\'ont pas pu être sauvegardés.',
|
||||
],
|
||||
],
|
||||
|
||||
// Login
|
||||
'login' => [
|
||||
'login' => 'Connexion',
|
||||
'logged_in' => "Vous êtes connecté.",
|
||||
'welcome' => 'Re-bonjour !',
|
||||
'two-factor' => 'Please enter your token.',
|
||||
],
|
||||
|
||||
// Sidebar footer
|
||||
'help' => 'Aide',
|
||||
'status_page' => 'Statut des services',
|
||||
'logout' => 'Déconnexion',
|
||||
|
||||
// Notifications
|
||||
'notifications' => [
|
||||
'notifications' => 'Notifications',
|
||||
'awesome' => 'Cool.',
|
||||
'whoops' => 'Oups.',
|
||||
],
|
||||
|
||||
// Welcome modal
|
||||
'welcome' => [
|
||||
'welcome' => 'Welcome to Cachet',
|
||||
'message' => 'Your status page is almost ready! You might want to configure these extra settings',
|
||||
'close' => 'Just go straight to my dashboard',
|
||||
'steps' => [
|
||||
'component' => 'Create components',
|
||||
'incident' => 'Create incidents',
|
||||
'customize' => 'Customize your Cachet Status Page.',
|
||||
'team' => 'Add users to your team.',
|
||||
'api' => 'Generate API token.',
|
||||
'two-factor' => 'Enable Two Factor Authetication.',
|
||||
],
|
||||
],
|
||||
|
||||
];
|
||||
16
resources/lang/fr/errors.php
Normal file
16
resources/lang/fr/errors.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'not-found' => [
|
||||
'code' => '404',
|
||||
'title' => 'Cette page est manquante !',
|
||||
'message' => 'Désolé, mais la page que vous recherchez est introuvable. Vérifier l\'URL et essayez à nouveau.',
|
||||
'link' => 'Retour à l\'accueil',
|
||||
],
|
||||
'unauthorized' => [
|
||||
'code' => '401',
|
||||
'title' => 'Unauthorized',
|
||||
'message' => 'Sorry, you need admin privileges to see this page.',
|
||||
'link' => 'Return to homepage',
|
||||
],
|
||||
];
|
||||
123
resources/lang/fr/forms.php
Normal file
123
resources/lang/fr/forms.php
Normal file
@@ -0,0 +1,123 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
// Setup form fields
|
||||
'setup' => [
|
||||
'email' => 'Adresse email',
|
||||
'username' => 'Identifiant',
|
||||
'password' => 'Mot de passe',
|
||||
'site_name' => 'Nom du site',
|
||||
'site_domain' => 'Domaine du site',
|
||||
'site_timezone' => 'Sélectionnez votre fuseau horaire',
|
||||
'site_locale' => 'Sélectionnez votre langue',
|
||||
'enable_google2fa' => 'Enable Google Two Factor Authentication',
|
||||
],
|
||||
|
||||
// Login form fields
|
||||
'login' => [
|
||||
'email' => 'Adresse email',
|
||||
'password' => 'Mot de passe',
|
||||
'2fauth' => 'Authentication Code',
|
||||
'invalid' => 'Invalid email or password',
|
||||
'invalid-token' => 'Invalid token',
|
||||
],
|
||||
|
||||
// Incidents form fields
|
||||
'incidents' => [
|
||||
'name' => 'Nom',
|
||||
'status' => 'Statut',
|
||||
'message' => 'Message',
|
||||
'message-help' => 'Vous pouvez aussi utiliser du Markdown.',
|
||||
|
||||
'templates' => [
|
||||
'name' => 'Nom',
|
||||
'template' => 'Modèle',
|
||||
],
|
||||
],
|
||||
|
||||
// Components form fields
|
||||
'components' => [
|
||||
'name' => 'Nom',
|
||||
'status' => 'Statut',
|
||||
'group' => 'Groupe',
|
||||
'description' => 'Description',
|
||||
'link' => 'Lien',
|
||||
'tags' => 'Tags',
|
||||
'tags-help' => 'Séparé par une virgule.',
|
||||
|
||||
'groups' => [
|
||||
'name' => 'Nom',
|
||||
],
|
||||
],
|
||||
|
||||
// Metric form fields
|
||||
'metrics' => [
|
||||
'name' => 'Name',
|
||||
'suffix' => 'Suffix',
|
||||
'description' => 'Description',
|
||||
'description-help' => 'You may also use Markdown.',
|
||||
'display-chart' => 'Display chart on status page?',
|
||||
'calc_type' => 'Calculation of metrics',
|
||||
'type_sum' => 'Sum',
|
||||
'type_avg' => 'Average',
|
||||
|
||||
'points' => [
|
||||
'value' => 'Value',
|
||||
],
|
||||
],
|
||||
|
||||
// Settings
|
||||
'settings' => [
|
||||
/// Application setup
|
||||
'app-setup' => [
|
||||
'site-name' => 'Nom du site',
|
||||
'site-url' => 'URL du site',
|
||||
'site-timezone' => 'Fuseau horaire du site',
|
||||
'site-locale' => 'Langue du site',
|
||||
'date-format' => 'Format de date',
|
||||
'display-graphs' => 'Display graphs on status page?',
|
||||
'about-this-page' => 'À propos de cette page',
|
||||
'days-of-incidents' => 'Nombre de jours à afficher ?',
|
||||
'banner' => 'Bannière',
|
||||
'banner-help' => "Il est recommandé de télécharger des fichiers de moins de 930 pixels de large.",
|
||||
'google-analytics' => "Google Analytics code",
|
||||
],
|
||||
'security' => [
|
||||
'allowed-domains' => 'Domaines autorisés. <small class="help-block"></small>',
|
||||
'allowed-domains-help' => 'Séparés par une virgule. Les domaines enregistrés ci-dessus seront automatiquement autorisés par défaut.',
|
||||
],
|
||||
'stylesheet' => [
|
||||
'custom-css' => 'Feuille de style personnalisée',
|
||||
],
|
||||
'theme' => [
|
||||
'background-color' => 'Couleur d\'arrière plan',
|
||||
'text-color' => 'Couleur du texte',
|
||||
],
|
||||
],
|
||||
|
||||
'user' => [
|
||||
'username' => 'Identifiant',
|
||||
'email' => 'Adresse email',
|
||||
'password' => 'Mot de passe',
|
||||
'api-token' => 'Jeton API',
|
||||
'api-token-help' => 'Regénérer votre jeton API révoquera toutes les applications existantes.',
|
||||
'2fa' => [
|
||||
'help' => 'Enabling two factor authentication increases security of your account. You will need to download <a href="https://support.google.com/accounts/answer/1066447?hl=en">Google Authenticator</a> or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.',
|
||||
],
|
||||
],
|
||||
|
||||
// Buttons
|
||||
'add' => 'Ajouter',
|
||||
'save' => 'Sauvegarder',
|
||||
'update' => 'Mettre à jour',
|
||||
'create' => 'Créer',
|
||||
'edit' => 'Éditer',
|
||||
'delete' => 'Effacer',
|
||||
'submit' => 'Envoyer',
|
||||
'cancel' => 'Annuler',
|
||||
'remove' => 'Supprimer',
|
||||
|
||||
// Other
|
||||
'optional' => '* Optional',
|
||||
];
|
||||
19
resources/lang/fr/pagination.php
Normal file
19
resources/lang/fr/pagination.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pagination Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used by the paginator library to build
|
||||
| the simple pagination links. You are free to change them to anything
|
||||
| you want to customize your views to better match your application.
|
||||
|
|
||||
*/
|
||||
|
||||
'previous' => '« Précédent',
|
||||
'next' => 'Suivant »',
|
||||
|
||||
];
|
||||
22
resources/lang/fr/reminders.php
Normal file
22
resources/lang/fr/reminders.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reminder Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
| that are given by the password broker for a password update attempt
|
||||
| has failed, such as for an invalid token or invalid new password.
|
||||
|
|
||||
*/
|
||||
|
||||
'password' => 'Les mots de passe doivent contenir 6 caractères minimum et être identique à la confirmation.',
|
||||
'user' => 'Nous ne trouvons aucun utilisateur avec cette adresse email.',
|
||||
'token' => 'Ce jeton de réinitialisation de mot de passe est invalide.',
|
||||
'sent' => 'Rappel de mot de passe envoyé !',
|
||||
'reset' => 'Votre mot de passe à été réinitialisé !',
|
||||
|
||||
];
|
||||
14
resources/lang/fr/setup.php
Normal file
14
resources/lang/fr/setup.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'setup' => 'Installation',
|
||||
'title' => 'Installer Cachet',
|
||||
'service_details' => 'Details du service',
|
||||
'status_page_setup' => 'Installation de la page de statut',
|
||||
'show_support' => 'Montrer votre soutien envers Cachet ? <small>Affiche un lien vers Cachet en bas de page.</small>',
|
||||
'admin_account' => 'Compte administrateur',
|
||||
'complete_setup' => 'Terminer l\'installation',
|
||||
'completed' => 'Cachet a été configuré avec succès !',
|
||||
'finish_setup' => 'Aller au tableau de bord',
|
||||
'allow_tracking' => 'Allow anonymous usage tracking?',
|
||||
];
|
||||
104
resources/lang/fr/validation.php
Normal file
104
resources/lang/fr/validation.php
Normal file
@@ -0,0 +1,104 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
"accepted" => "Le champ :attribute doit être accepté.",
|
||||
"active_url" => "Le champ :attribute n'est pas une URL valide.",
|
||||
"after" => "Le champ :attribute doit être une date postérieure à :date.",
|
||||
"alpha" => "Le champ :attribute ne peut contenir que des lettres.",
|
||||
"alpha_dash" => "Le champ :attribute ne peut contenir que des lettres, chiffres et tirets.",
|
||||
"alpha_num" => "Le champ :attribute ne peut contenir que des lettres ou des chiffres.",
|
||||
"array" => "Le champ :attribute doit être un tableau.",
|
||||
"before" => "Le champ :attribute doit être une date antérieure à :date.",
|
||||
"between" => [
|
||||
"numeric" => "Le champ :attribute doit être entre :min et :max.",
|
||||
"file" => "Le champ :attribute doit être entre :min et :max kilobytes.",
|
||||
"string" => "Le champ :attribute doit contenir entre :min et :max caractères.",
|
||||
"array" => "Le champ :attribute doit avoir entre :min et :max objets.",
|
||||
],
|
||||
"confirmed" => "Le champ :attribute confirmation ne correspond pas.",
|
||||
"date" => "Le champ :attribute n'est pas une date valide.",
|
||||
"date_format" => "Le champ :attribute ne correspond pas au format :format.",
|
||||
"different" => "Le champ :attribute et :other doivent être différents.",
|
||||
"digits" => "Le champ :attribute doit être composé de :digits chiffres.",
|
||||
"digits_between" => "Le champ :attribute doit être composé de :min jusqu'à :max chiffres.",
|
||||
"email" => "Le champ :attribute doit être une adresse email valide.",
|
||||
"exists" => "Le champ selected :attribute est invalide.",
|
||||
"image" => "Le champ :attribute doit être une image.",
|
||||
"in" => "Le champ selected :attribute est invalide.",
|
||||
"integer" => "Le champ :attribute doit être un entier.",
|
||||
"ip" => "Le champ :attribute doit être une adresse IP valide.",
|
||||
"max" => [
|
||||
"numeric" => "Le champ :attribute ne doit pas être supérieure à :max.",
|
||||
"file" => "Le champ :attribute ne doit pas être supérieure à :max kilobytes.",
|
||||
"string" => "Le champ :attribute ne doit pas être supérieure à :max caractères.",
|
||||
"array" => "Le champ :attribute ne doit pas avoir plus de :max objets.",
|
||||
],
|
||||
"mimes" => "Le champ :attribute doit être un fichier de type : :values.",
|
||||
"min" => [
|
||||
"numeric" => "Le champ :attribute doit être supérieur à :min.",
|
||||
"file" => "Le champ :attribute doit être supérieur à :min kilobytes.",
|
||||
"string" => "Le champ :attribute doit être supérieur à :min caractères.",
|
||||
"array" => "Le champ :attribute doit avoir au moins :min objets.",
|
||||
],
|
||||
"not_in" => "Le champ sélectionné :attribute est invalide.",
|
||||
"numeric" => "Le champ :attribute doit être un nombre.",
|
||||
"regex" => "Le format du champ :attribute est invalide.",
|
||||
"required" => "Le champ :attribute est obligatoire.",
|
||||
"required_if" => "Le champ :attribute est obligatoire quand :other est :value.",
|
||||
"required_with" => "Le champ :attribute est obligatoire quand :values est présent.",
|
||||
"required_with_all" => "Le champ :attribute est obligatoire quand :values est présent.",
|
||||
"required_without" => "Le champ :attribute est obligatoire quand :values n'est pas présent.",
|
||||
"required_without_all" => "Le champ :attribute est obligatoire quand aucun des champs :values n'est présent.",
|
||||
"same" => "Le champ :attribute et :other doivent être identiques.",
|
||||
"size" => [
|
||||
"numeric" => "La taille du champ :attribute doit être de :size.",
|
||||
"file" => "Le poids du champ :attribute doit être de :size kilobytes.",
|
||||
"string" => "Le nombre de caractères du champ :attribute doit être de :size caractères.",
|
||||
"array" => "Le champ :attribute doit contenir :size objets.",
|
||||
],
|
||||
"unique" => "Le champ :attribute est déjà utilisé.",
|
||||
"url" => "Le format du champ :attribute est invalide.",
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
'rule-name' => 'custom-message',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap attribute place-holders
|
||||
| with something more reader friendly such as E-Mail Address instead
|
||||
| of "email". This simply helps us make messages a little cleaner.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [ ],
|
||||
|
||||
];
|
||||
59
resources/lang/pt-BR/cachet.php
Executable file
59
resources/lang/pt-BR/cachet.php
Executable file
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// Components
|
||||
'components' => [
|
||||
'status' => [
|
||||
1 => 'Operacional',
|
||||
2 => 'Problemas de performance',
|
||||
3 => 'Indisponibilidade parcial',
|
||||
4 => 'Indisponibilidade total',
|
||||
],
|
||||
],
|
||||
|
||||
// Incidents
|
||||
'incidents' => [
|
||||
'none' => 'Nenhum incidente reportado.',
|
||||
'past' => 'Incidentes anteriores',
|
||||
'previous_week' => 'Semana anterior',
|
||||
'next_week' => 'Próxima semana',
|
||||
'none' => 'Nenhum incidente reportado.',
|
||||
'scheduled' => '',
|
||||
'scheduled_at' => '',
|
||||
'status' => [
|
||||
0 => '', // TODO: Hopefully remove this.
|
||||
1 => 'Investigando',
|
||||
2 => 'Identificado',
|
||||
3 => 'Observando',
|
||||
4 => 'Resolvido',
|
||||
],
|
||||
],
|
||||
|
||||
// Service Status
|
||||
'service' => [
|
||||
'good' => 'Todos os serviços estão operando normalmente.',
|
||||
'bad' => 'Alguns serviços estão passando por problemas.',
|
||||
],
|
||||
|
||||
'api' => [
|
||||
'regenerate' => 'Gerar nova chave de API',
|
||||
'revoke' => 'Revogar a chave de API',
|
||||
],
|
||||
|
||||
// Metrics
|
||||
'metrics' => [
|
||||
'filter' => [
|
||||
'hourly' => '',
|
||||
'daily' => '',
|
||||
'monthly' => '',
|
||||
],
|
||||
],
|
||||
|
||||
// Other
|
||||
'powered_by' => ':app Esta Status Page é fornecida por <a href="https://cachethq.github.io">Cachet</a>.',
|
||||
'about_this_site' => 'Sobre este site',
|
||||
'rss-feed' => 'RSS Feed',
|
||||
'atom-feed' => 'Atom Feed',
|
||||
'feed' => 'Status Feed',
|
||||
|
||||
];
|
||||
184
resources/lang/pt-BR/dashboard.php
Executable file
184
resources/lang/pt-BR/dashboard.php
Executable file
@@ -0,0 +1,184 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
'dashboard' => 'Dashboard',
|
||||
|
||||
// Incidents
|
||||
'incidents' => [
|
||||
'title' => '',
|
||||
'incidents' => 'Incidentes',
|
||||
'logged' => '{0} Não existem incidentes, bom trabalho.|Você registrou um incidente.|Você reportou <strong>:count</strong> incidentes.',
|
||||
'incident-create-template' => 'Criar template',
|
||||
'incident-templates' => 'Template de incidentes',
|
||||
'add' => [
|
||||
'title' => 'Adicionar um incidente',
|
||||
'success' => 'Incidente adicionado.',
|
||||
'failure' => 'Algo deu errado com o incidente.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Editar um incidente',
|
||||
'success' => 'Incidente atualizado.',
|
||||
'failure' => 'Algo deu errado com o incidente.',
|
||||
],
|
||||
|
||||
// Incident templates
|
||||
'templates' => [
|
||||
'title' => 'Template de incidentes',
|
||||
'add' => [
|
||||
'title' => 'Criar um template de incidente',
|
||||
'success' => 'Template criado.',
|
||||
'failure' => 'Algo deu errado com o template de incidente.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Editar template',
|
||||
'success' => 'Template foi atualizado!',
|
||||
'failure' => 'Algo deu errado atualizando o template de incidente',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// Incident Maintenance
|
||||
'schedule' => [
|
||||
'schedule' => '',
|
||||
'scheduled_at' => '',
|
||||
'add' => [
|
||||
'title' => '',
|
||||
'success' => '',
|
||||
'failure' => '',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => '',
|
||||
'success' => '',
|
||||
'failure' => '',
|
||||
],
|
||||
'delete' => [
|
||||
'success' => '',
|
||||
'failure' => '',
|
||||
],
|
||||
],
|
||||
|
||||
// Components
|
||||
'components' => [
|
||||
'components' => 'Componentes',
|
||||
'component_statuses' => 'Status do componente',
|
||||
'add' => [
|
||||
'title' => 'Adicionar componente',
|
||||
'message' => 'Você deve adicionar um componente.',
|
||||
'success' => 'Componente criado.',
|
||||
'failure' => 'Algo deu errado com o componente.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Editar um componente',
|
||||
'success' => 'Componente atualizado.',
|
||||
'failure' => 'Algo deu errado com o componente.',
|
||||
],
|
||||
|
||||
// Component groups
|
||||
'groups' => [
|
||||
'groups' => 'Grupo de componente|Grupos de componente',
|
||||
'add' => [
|
||||
'title' => 'Adicionar um grupo de componentes',
|
||||
'success' => 'Grupo de componente adicionado.',
|
||||
'failure' => 'Algo deu errado com o grupo de componente.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => '',
|
||||
'success' => '',
|
||||
'failure' => '',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// Metrics
|
||||
'metrics' => [
|
||||
'metrics' => 'Metricas',
|
||||
'add' => [
|
||||
'title' => '',
|
||||
'success' => '',
|
||||
'failure' => '',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => '',
|
||||
'success' => '',
|
||||
'failure' => '',
|
||||
],
|
||||
],
|
||||
|
||||
// Team
|
||||
'team' => [
|
||||
'team' => 'Equipe',
|
||||
'member' => 'Membro',
|
||||
'profile' => 'Perfil ',
|
||||
'description' => 'Membros da equipe serão capazes de adicionar, modificar & editar componentes e incidentes.',
|
||||
'add' => [
|
||||
'title' => 'Adicionar um novo membro da equipe',
|
||||
'success' => 'Membro da equipe adicionado.',
|
||||
'failure' => 'Algo deu errado com o componente.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Atualizar perfil',
|
||||
'success' => 'Perfil atualizado.',
|
||||
'failure' => 'Algo deu errado duante a atualização.',
|
||||
],
|
||||
],
|
||||
|
||||
// Settings
|
||||
'settings' => [
|
||||
'settings' => 'Configurações',
|
||||
'app-setup' => [
|
||||
'app-setup' => 'Instalação do aplicativo',
|
||||
'images-only' => 'Somente imagens podem ser carregadas.',
|
||||
'too-big' => 'O arquivo que você carregou é muito grande. Envie uma imagem inferior à :size',
|
||||
],
|
||||
'security' => [
|
||||
'security' => 'Segurança',
|
||||
],
|
||||
'stylesheet' => [
|
||||
'stylesheet' => 'Folha de estilo',
|
||||
],
|
||||
'theme' => [
|
||||
'theme' => 'Tema',
|
||||
],
|
||||
'edit' => [
|
||||
'success' => 'Configurações salvas.',
|
||||
'failure' => 'Não foi possível salvar as configurações.',
|
||||
],
|
||||
],
|
||||
|
||||
// Login
|
||||
'login' => [
|
||||
'login' => 'Login',
|
||||
'logged_in' => 'Você está logado.',
|
||||
'welcome' => 'Bem-vindo de volta!',
|
||||
'two-factor' => 'Por favor insira o seu token.',
|
||||
],
|
||||
|
||||
// Sidebar footer
|
||||
'help' => 'Ajuda',
|
||||
'status_page' => 'Página de status',
|
||||
'logout' => 'Sair',
|
||||
|
||||
// Notifications
|
||||
'notifications' => [
|
||||
'notifications' => 'Notificações',
|
||||
'awesome' => 'Excelente.',
|
||||
'whoops' => 'Opa.',
|
||||
],
|
||||
|
||||
// Welcome modal
|
||||
'welcome' => [
|
||||
'welcome' => 'Bem-vindo ao Cachet',
|
||||
'message' => 'Sua página de status está quase pronta! Tavez vocë queira checar essas configurações extras',
|
||||
'close' => 'Basta ir direto para o meu painel de controle',
|
||||
'steps' => [
|
||||
'component' => 'Criar componentes',
|
||||
'incident' => 'Criar incidentes',
|
||||
'customize' => 'Personalizar',
|
||||
'team' => 'Adicionar usuários',
|
||||
'api' => 'Gerar token de API',
|
||||
'two-factor' => '',
|
||||
],
|
||||
],
|
||||
|
||||
];
|
||||
16
resources/lang/pt-BR/errors.php
Executable file
16
resources/lang/pt-BR/errors.php
Executable file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'not-found' => [
|
||||
'code' => '404',
|
||||
'title' => 'Essa página desapareceu!',
|
||||
'message' => 'Desculpe, mas a página que você está procurando não foi encontrada. Verifique a URL por erros e tente novamente.',
|
||||
'link' => 'Voltar para a página inicial',
|
||||
],
|
||||
'unauthorized' => [
|
||||
'code' => '401',
|
||||
'title' => 'Não autorizado',
|
||||
'message' => 'Desculpe, que você precisa de privilégios de administrador para ver esta página.',
|
||||
'link' => 'Voltar para a página inicial',
|
||||
],
|
||||
];
|
||||
126
resources/lang/pt-BR/forms.php
Executable file
126
resources/lang/pt-BR/forms.php
Executable file
@@ -0,0 +1,126 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
// Setup form fields
|
||||
'setup' => [
|
||||
'email' => 'Email',
|
||||
'username' => 'Usuário',
|
||||
'password' => 'Senha',
|
||||
'site_name' => 'Nome do site',
|
||||
'site_domain' => 'Domínio do site',
|
||||
'site_timezone' => 'Selecione o seu fuso horário',
|
||||
'site_locale' => 'Selecione seu idioma',
|
||||
'enable_google2fa' => 'Habilitar a autenticação de dois fatores do Google',
|
||||
],
|
||||
|
||||
// Login form fields
|
||||
'login' => [
|
||||
'email' => 'Email',
|
||||
'password' => 'Senha',
|
||||
'2fauth' => 'Código de autenticação',
|
||||
'invalid' => 'E-mail ou senha inválidos',
|
||||
'invalid-token' => 'Token inválido',
|
||||
],
|
||||
|
||||
// Incidents form fields
|
||||
'incidents' => [
|
||||
'name' => 'Nome',
|
||||
'status' => 'Status',
|
||||
'component' => 'Componente',
|
||||
'message' => 'Mensagem',
|
||||
'message-help' => 'Você também pode usar o Markdown.',
|
||||
'scheduled_at' => '',
|
||||
|
||||
'templates' => [
|
||||
'name' => 'Nome',
|
||||
'template' => 'Template',
|
||||
],
|
||||
],
|
||||
|
||||
// Components form fields
|
||||
'components' => [
|
||||
'name' => 'Nome',
|
||||
'status' => 'Status',
|
||||
'group' => 'Grupo',
|
||||
'description' => 'Descrição',
|
||||
'link' => 'Link',
|
||||
'tags' => 'Marcações',
|
||||
'tags-help' => 'Separados por vírgulas.',
|
||||
|
||||
'groups' => [
|
||||
'name' => 'Nome',
|
||||
],
|
||||
],
|
||||
|
||||
// Metric form fields
|
||||
'metrics' => [
|
||||
'name' => '',
|
||||
'suffix' => '',
|
||||
'description' => '',
|
||||
'description-help' => '',
|
||||
'display-chart' => '',
|
||||
'default-value' => '',
|
||||
'calc_type' => 'Calculation of metrics',
|
||||
'type_sum' => 'Sum',
|
||||
'type_avg' => 'Average',
|
||||
|
||||
'points' => [
|
||||
'value' => '',
|
||||
],
|
||||
],
|
||||
|
||||
// Settings
|
||||
'settings' => [
|
||||
/// Application setup
|
||||
'app-setup' => [
|
||||
'site-name' => 'Nome do site',
|
||||
'site-url' => 'URL do site',
|
||||
'site-timezone' => 'Fuso horário do site',
|
||||
'site-locale' => 'Idioma do site',
|
||||
'date-format' => 'Formato da Data',
|
||||
'display-graphs' => '',
|
||||
'about-this-page' => 'Sobre esta página',
|
||||
'days-of-incidents' => 'Quantos dias de incidentes para mostrar?',
|
||||
'banner' => 'Imagem do banner',
|
||||
'banner-help' => "É recomendável que você faça upload de arquivos menores que 930px .",
|
||||
'google-analytics' => "Código do Google Analytics",
|
||||
],
|
||||
'security' => [
|
||||
'allowed-domains' => 'Domínios permitidos',
|
||||
'allowed-domains-help' => 'Separados por vírgula. O domínio definido acima é permitido automaticamente por padrão.',
|
||||
],
|
||||
'stylesheet' => [
|
||||
'custom-css' => 'Folha de estilos personalizada',
|
||||
],
|
||||
'theme' => [
|
||||
'background-color' => 'Cor de fundo',
|
||||
'text-color' => 'Cor do Texto',
|
||||
],
|
||||
],
|
||||
|
||||
'user' => [
|
||||
'username' => 'Usuário',
|
||||
'email' => 'Email',
|
||||
'password' => 'Senha',
|
||||
'api-token' => 'Token da API',
|
||||
'api-token-help' => 'Regenerar a chave da API impedirá que aplicativos existentes acessem o Cachet.',
|
||||
'2fa' => [
|
||||
'help' => 'Ativando autenticação de dois fatores aumenta a segurança de sua conta. Você vai precisar baixar <a href="https://support.google.com/accounts/answer/1066447?hl=en"> Google Authenticator</a> ou um app similar em seu dispositivo móvel. Quando você entrar você será solicitado um token gerado pelo app.',
|
||||
],
|
||||
],
|
||||
|
||||
// Buttons
|
||||
'add' => 'Adicionar',
|
||||
'save' => 'Salvar',
|
||||
'update' => 'Atualizar',
|
||||
'create' => 'Criar',
|
||||
'edit' => 'Editar',
|
||||
'delete' => 'Apagar',
|
||||
'submit' => 'Enviar',
|
||||
'cancel' => 'Cancelar',
|
||||
'remove' => 'Remover',
|
||||
|
||||
// Other
|
||||
'optional' => '* Opcional',
|
||||
];
|
||||
19
resources/lang/pt-BR/pagination.php
Executable file
19
resources/lang/pt-BR/pagination.php
Executable file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pagination Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used by the paginator library to build
|
||||
| the simple pagination links. You are free to change them to anything
|
||||
| you want to customize your views to better match your application.
|
||||
|
|
||||
*/
|
||||
|
||||
'previous' => '« Anterior',
|
||||
'next' => 'Próximo »',
|
||||
|
||||
];
|
||||
22
resources/lang/pt-BR/reminders.php
Executable file
22
resources/lang/pt-BR/reminders.php
Executable file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reminder Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
| that are given by the password broker for a password update attempt
|
||||
| has failed, such as for an invalid token or invalid new password.
|
||||
|
|
||||
*/
|
||||
|
||||
'password' => 'A senha precisa ter no minimo seis caracteres e tem que ser igual à confirmação.',
|
||||
'user' => 'Não foi encontrado nenhum usuário com este endereço de email.',
|
||||
'token' => 'Este código de redefinição de senha é inválido.',
|
||||
'sent' => 'Lembrete de senha foi enviado!',
|
||||
'reset' => 'A senha foi redefinida!',
|
||||
|
||||
];
|
||||
14
resources/lang/pt-BR/setup.php
Executable file
14
resources/lang/pt-BR/setup.php
Executable file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'setup' => 'Configuração',
|
||||
'title' => 'Configurar o Cachet',
|
||||
'service_details' => 'Detalhes do serviço',
|
||||
'status_page_setup' => 'Configuração da página de status',
|
||||
'show_support' => 'Mostrar apoio ao Cachet? <small>Coloca um link no rodapé direcionando para Cachet.</small>',
|
||||
'admin_account' => 'Conta de administrador',
|
||||
'complete_setup' => 'Configuração completa',
|
||||
'completed' => 'Cachet foi configurado com sucesso!',
|
||||
'finish_setup' => 'Ir para o painel de controle',
|
||||
'allow_tracking' => 'Permite rastreamento de uso anônimo?',
|
||||
];
|
||||
106
resources/lang/pt-BR/validation.php
Executable file
106
resources/lang/pt-BR/validation.php
Executable file
@@ -0,0 +1,106 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
"accepted" => "O campo :attribute deve ser aceito.",
|
||||
"active_url" => "O campo :attribute não é uma URL válida.",
|
||||
"after" => "O campo :attribute deverá conter uma data posterior a :date.",
|
||||
"alpha" => "O campo :attribute deverá conter apenas letras.",
|
||||
"alpha_dash" => "O campo :attribute só pode conter letras, números, e hifens.",
|
||||
"alpha_num" => "O campo :attribute só pode conter letras e números.",
|
||||
"array" => "O campo :attribute deve ser um vetor.",
|
||||
"before" => "O campo :attribute deverá conter uma data anterior a :date.",
|
||||
"between" => [
|
||||
"numeric" => "O campo :attribute deverá ter um valor entre :min - :max.",
|
||||
"file" => "O campo :attribute deverá ter um tamanho entre :min - :max kilobytes.",
|
||||
"string" => "O campo :attribute deverá conter entre :min - :max caracteres.",
|
||||
"array" => "O campo :attribute deve ter entre :min e :max itens.",
|
||||
],
|
||||
"boolean" => "O campo :attribute deve ser verdadeiro ou falso.",
|
||||
"confirmed" => "A confirmação para o campo :attribute não coincide.",
|
||||
"date" => "O :attribute não é uma data válida.",
|
||||
"date_format" => "O :attribute não corresponde ao formato :format.",
|
||||
"different" => "O :attribute e :other devem ser diferentes.",
|
||||
"digits" => "O campo :attribute deverá conter :digits dígitos.",
|
||||
"digits_between" => "O :attribute deve ter entre :min e :max dígitos.",
|
||||
"email" => "A: attribute deve ser um endereço de email válido.",
|
||||
"exists" => "O :attribute selecionado é inválido.",
|
||||
"image" => "O :attribute deve ser uma imagem.",
|
||||
"in" => "O :attribute selecionado é inválido.",
|
||||
"integer" => "O :attribute deve ser um número inteiro.",
|
||||
"ip" => "O :attribute deve ser um endereço de IP válido.",
|
||||
"max" => [
|
||||
"numeric" => "O :attribute não pode ser maior do que :max.",
|
||||
"file" => "O campo :attribute não deverá ter um tamanho superior a :max kilobytes.",
|
||||
"string" => "O :attribute não pode ser maior do que :max caracteres.",
|
||||
"array" => "A: atributo não pode ter mais de que :max itens.",
|
||||
],
|
||||
"mimes" => "O :attribute deve ser um arquivo do tipo: :values.",
|
||||
"min" => [
|
||||
"numeric" => "O :attribute deve ter pelo menos :min.",
|
||||
"file" => "O :attribute deve ter pelo menos :min kilobytes.",
|
||||
"string" => "O :attribute deve ter pelo menos :min caracteres.",
|
||||
"array" => "O :attribute deve ter pelo menos :min itens.",
|
||||
],
|
||||
"not_in" => "O :attribute selecionado é inválido.",
|
||||
"numeric" => "O :attribute deve ser um número.",
|
||||
"regex" => "O formato de :attribute é inválido.",
|
||||
"required" => "O campo de :attribute é obrigatório.",
|
||||
"required_if" => "O campo de :attribute é obrigatório quando :other é :value.",
|
||||
"required_with" => "O campo :attribute é obrigatório quando :values está presente.",
|
||||
"required_with_all" => "O campo :attribute é obrigatório quando :values está presente.",
|
||||
"required_without" => "O campo de :attribute é obrigatório quando :values não está presente.",
|
||||
"required_without_all" => "O campo de :attribute é obrigatório quando qualquer um dos :values estão presentes.",
|
||||
"same" => "O :attribute e :other devem corresponder.",
|
||||
"size" => [
|
||||
"numeric" => "O :attribute deve ser :size.",
|
||||
"file" => "O :attribute deve ter :size kilobytes.",
|
||||
"string" => "O :attribute deve ter :size caracteres.",
|
||||
"array" => "O :attribute deve ter :size itens.",
|
||||
],
|
||||
"unique" => "O :attribute já existe.",
|
||||
"url" => "O formato de :attribute é inválido.",
|
||||
"timezone" => "O :attribute deve ser uma zona válida.",
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
'rule-name' => 'Mensagem-personalizada',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap attribute place-holders
|
||||
| with something more reader friendly such as E-Mail Address instead
|
||||
| of "email". This simply helps us make messages a little cleaner.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [],
|
||||
|
||||
];
|
||||
38
resources/views/auth/login.blade.php
Normal file
38
resources/views/auth/login.blade.php
Normal file
@@ -0,0 +1,38 @@
|
||||
@extends('layout.clean')
|
||||
|
||||
@section('content')
|
||||
<div class="login">
|
||||
<div class="col-xs-12 col-xs-offset-0 col-sm-6 col-sm-offset-3 col-md-4 col-md-offset-4 text-center">
|
||||
<div class="welcome-logo">
|
||||
<img class="logo" height="50" src="/img/cachet-logo.svg" alt="Cachet">
|
||||
</div>
|
||||
<form method="POST" action="/auth/login" accept-charset="UTF-8">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<legend>{{ trans('dashboard.login.welcome') }}</legend>
|
||||
|
||||
@if(Session::has('error'))
|
||||
<p class="text-danger">{{ Session::get('error') }}</p>
|
||||
@endif
|
||||
|
||||
<div class="form-group">
|
||||
<label class="sr-only">{{ trans('forms.login.email') }}</label>
|
||||
{!! Form::email('email', Input::old('email'), [
|
||||
'class' => 'form-control', 'placeholder' => trans('forms.login.email'), 'required' => 'required'
|
||||
]) !!}
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="sr-only">{{ trans('forms.login.password') }}</label>
|
||||
{!! Form::password('password', [
|
||||
'class' => 'form-control', 'placeholder' => trans('forms.login.password'), 'required' => 'required'
|
||||
]) !!}
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-lg btn-block btn-success">{{ trans('dashboard.login.login') }}</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
31
resources/views/auth/two-factor-auth.blade.php
Normal file
31
resources/views/auth/two-factor-auth.blade.php
Normal file
@@ -0,0 +1,31 @@
|
||||
@extends('layout.clean')
|
||||
|
||||
@section('content')
|
||||
<div class="login">
|
||||
<div class="col-xs-12 col-xs-offset-0 col-sm-6 col-sm-offset-3 col-md-4 col-md-offset-4 text-center">
|
||||
<div class="welcome-logo">
|
||||
<img class="logo" height="50" src="{{ url('img/cachet-logo.svg') }}" alt="Cachet">
|
||||
</div>
|
||||
{{ Form::open() }}
|
||||
<fieldset>
|
||||
<legend>{{ trans('dashboard.login.two-factor') }}</legend>
|
||||
|
||||
@if(Session::has('error'))
|
||||
<p class="text-danger">{{ Session::get('error') }}</p>
|
||||
@endif
|
||||
|
||||
<div class="form-group">
|
||||
<label class="sr-only">{{ trans('forms.login.2fauth') }}</label>
|
||||
{{ Form::text('code', null, [
|
||||
'class' => 'form-control', 'placeholder' => trans('forms.login.2fauth'), 'required' => 'required'
|
||||
]) }}
|
||||
</div>
|
||||
<hr />
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-lg btn-block btn-success">{{ trans('dashboard.login.login') }}</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
{{ Form::close() }}
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
70
resources/views/dashboard/components/add.blade.php
Normal file
70
resources/views/dashboard/components/add.blade.php
Normal file
@@ -0,0 +1,70 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icons ion-outlet"></i> {{ trans('dashboard.components.components') }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.components.add.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form name="CreateComponentForm" class="form-vertical" role="form" action="/dashboard/components/add" method="POST">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label for="component-name">{{ trans('forms.components.name') }}</label>
|
||||
<input type="text" class="form-control" name="component[name]" id="component-name" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="component-status">{{ trans('forms.components.status') }}</label>
|
||||
<select name="component[status]" class="form-control">
|
||||
@foreach(trans('cachet.components.status') as $statusID => $status)
|
||||
<option value="{{ $statusID }}">{{ $status }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.description') }}</label>
|
||||
<textarea name="component[description]" class="form-control" rows="5"></textarea>
|
||||
</div>
|
||||
<input type="hidden" name="component[group_id]" value="0">
|
||||
@if($groups->count() > 0)
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.group') }}</label>
|
||||
<select name="component[group_id]" class="form-control">
|
||||
<option selected></option>
|
||||
@foreach($groups as $group)
|
||||
<option value="{{ $group->id }}">{{ $group->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
@endif
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.link') }}</label>
|
||||
<input type="text" name="component[link]" class="form-control">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.tags') }}</label>
|
||||
<input name="component[tags]" class="form-control">
|
||||
<span class="help-block">{{ trans('forms.components.tags-help') }}</span>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<input type="hidden" name="component[order]" value="0">
|
||||
|
||||
<div class="btn-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.create') }}</button>
|
||||
<a class="btn btn-default" href="{{ route('dashboard.components') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
71
resources/views/dashboard/components/edit.blade.php
Normal file
71
resources/views/dashboard/components/edit.blade.php
Normal file
@@ -0,0 +1,71 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icons ion-outlet"></i> {{ trans('dashboard.components.components') }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.components.edit.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form name="EditComponentForm" class="form-vertical" role="form" action="/dashboard/components/{{ $component->id }}/edit" method="POST">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label for="incident-name">{{ trans('forms.components.name') }}</label>
|
||||
<input type="text" class="form-control" name="component[name]" id="component-name" required value="{{ $component->name }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="component-status">{{ trans('forms.components.status') }}</label>
|
||||
<select name="component[status]" class="form-control">
|
||||
@foreach(trans('cachet.components.status') as $statusID => $status)
|
||||
<option value="{{ $statusID }}" {{ $statusID === $component->status ? "selected" : "" }}>{{ $status }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.description') }}</label>
|
||||
<textarea name="component[description]" class="form-control" rows="5">{{ $component->description }}</textarea>
|
||||
</div>
|
||||
<input type="hidden" name="component[group_id]" value="0">
|
||||
@if($groups->count() > 0)
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.group') }}</label>
|
||||
<select name="component[group_id]" class="form-control">
|
||||
<option {{ $component->group_id === null ? 'selected' : null }}></option>
|
||||
@foreach($groups as $group)
|
||||
<option value="{{ $group->id }}" {{ $component->group_id === $group->id ? 'selected' : null }}>{{ $group->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
@endif
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.link') }}</label>
|
||||
<input type="text" name="component[link]" class="form-control" value="{{ $component->link }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.components.tags') }}</label>
|
||||
<input name="component[tags]" class="form-control" value="{{ $component->tagsList }}">
|
||||
<span class="help-block">{{ trans('forms.components.tags-help') }}</span>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<input type="hidden" name="component[user_id]" value="{{ $component->agent_id || $loggedUser->id }}">
|
||||
<input type="hidden" name="component[order]" value="{{ $component->order or 0 }}">
|
||||
|
||||
<div class="btn-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.save') }}</button>
|
||||
<a class="btn btn-default" href="{{ route('dashboard.components') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
34
resources/views/dashboard/components/groups/add.blade.php
Normal file
34
resources/views/dashboard/components/groups/add.blade.php
Normal file
@@ -0,0 +1,34 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icons ion-ios-keypad"></i> {{ trans_choice('dashboard.components.groups.groups', 2) }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.components.groups.add.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form name="CreateComponentGroupForm" class="form-vertical" role="form" action="/dashboard/components/groups/add" method="POST">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label for="incident-name">{{ trans('forms.components.groups.name') }}</label>
|
||||
<input type="text" class="form-control" name="group[name]" id="group-name" required>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="btn-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.add') }}</button>
|
||||
<a class="btn btn-default" href="{{ route('dashboard.components.groups') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
34
resources/views/dashboard/components/groups/edit.blade.php
Normal file
34
resources/views/dashboard/components/groups/edit.blade.php
Normal file
@@ -0,0 +1,34 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icons ion-ios-keypad"></i> {{ trans_choice('dashboard.components.groups.groups', 2) }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.components.groups.edit.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form name="EditComponentGroupForm" class="form-vertical" role="form" method="POST">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label for="incident-name">{{ trans('forms.components.groups.name') }}</label>
|
||||
<input type="text" class="form-control" name="group[name]" id="group-name" value="{{ $group->name }}" required>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="btn-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.save') }}</button>
|
||||
<a class="btn btn-default" href="{{ route('dashboard.components.groups') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
37
resources/views/dashboard/components/groups/index.blade.php
Normal file
37
resources/views/dashboard/components/groups/index.blade.php
Normal file
@@ -0,0 +1,37 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@if(isset($subMenu))
|
||||
@include('partials.dashboard.sub-sidebar')
|
||||
@endif
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header">
|
||||
<span class="uppercase">
|
||||
<i class="icons ion-ios-keypad"></i> {{ trans_choice('dashboard.components.groups.groups', 2) }}
|
||||
</span>
|
||||
<a class="btn btn-sm btn-success pull-right" href="{{ route('dashboard.components.groups.add') }}">
|
||||
{{ trans('dashboard.components.groups.add.title') }}
|
||||
</a>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 striped-list">
|
||||
@forelse($groups as $group)
|
||||
<div class="row striped-list-item">
|
||||
<div class="col-xs-6">
|
||||
<strong>{{ $group->name }}</strong> <span class="label label-info">{{ $group->components->count() }}</span>
|
||||
</div>
|
||||
<div class="col-xs-6 text-right">
|
||||
<a href="{{ route('dashboard.components.groups.edit', [$group->id]) }}" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
<a href="/dashboard/components/groups/{{ $group->id }}/delete" class="btn btn-danger confirm-action" data-method="DELETE">{{ trans('forms.delete') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
@empty
|
||||
<div class="list-group-item text-danger">{{ trans('dashboard.components.add.message') }}</div>
|
||||
@endforelse
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
51
resources/views/dashboard/components/index.blade.php
Normal file
51
resources/views/dashboard/components/index.blade.php
Normal file
@@ -0,0 +1,51 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@if(isset($subMenu))
|
||||
@include('partials.dashboard.sub-sidebar')
|
||||
@endif
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header">
|
||||
<span class="uppercase">
|
||||
<i class="icons ion-outlet"></i> {{ trans('dashboard.components.components') }}
|
||||
</span>
|
||||
<a class="btn btn-sm btn-success pull-right" href="{{ route('dashboard.components.add') }}">
|
||||
{{ trans('dashboard.components.add.title') }}
|
||||
</a>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<form name="componentList">
|
||||
<div class="col-sm-12 striped-list" id="component-list">
|
||||
@forelse($components as $component)
|
||||
<div class="row striped-list-item">
|
||||
<div class="col-xs-6">
|
||||
<h4>
|
||||
@if($components->count() > 1)
|
||||
<span class="drag-handle"><i class="ion-drag"></i></span>
|
||||
@endif
|
||||
{{ $component->name }} <small>{{ $component->humanStatus }}</small>
|
||||
</h4>
|
||||
@if($component->group)
|
||||
<p><small>{{ trans('dashboard.components.listed_group', ['name' => $component->group->name]) }}</small></p>
|
||||
@endif
|
||||
@if($component->description)
|
||||
<p>{{ $component->description }}</p>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-xs-6 text-right">
|
||||
<a href="/dashboard/components/{{ $component->id }}/edit" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
<a href="/dashboard/components/{{ $component->id }}/delete" class="btn btn-danger confirm-action" data-method="DELETE">{{ trans('forms.delete') }}</a>
|
||||
</div>
|
||||
<input type="hidden" rel="order" name="component[{{ $component->id }}]" value="{{ $component->order }}">
|
||||
</div>
|
||||
@empty
|
||||
<div class="list-group-item text-danger">{{ trans('dashboard.components.add.message') }}</div>
|
||||
@endforelse
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
102
resources/views/dashboard/incidents/add.blade.php
Normal file
102
resources/views/dashboard/incidents/add.blade.php
Normal file
@@ -0,0 +1,102 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-android-alert"></i> {{ trans('dashboard.incidents.incidents') }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.incidents.add.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form class="form-vertical" name="IncidentForm" role="form" method="POST" autocomplete="off">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
@if($incidentTemplates->count() > 0)
|
||||
<div class="form-group">
|
||||
<label for="incident-template">{{ trans('forms.incidents.templates.template') }}</label>
|
||||
<select class="form-control" name="template">
|
||||
<option selected></option>
|
||||
@foreach($incidentTemplates as $tpl)
|
||||
<option value="{{ $tpl->slug }}">{{ $tpl->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
@endif
|
||||
<div class="form-group">
|
||||
<label for="incident-name">{{ trans('forms.incidents.name') }}</label>
|
||||
<input type="text" class="form-control" name="incident[name]" id="incident-name" required value="{{ Input::old('incident.name') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="incident-name">{{ trans('forms.incidents.status') }}</label><br>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="incident[status]" value="1">
|
||||
<i class="icon ion-flag"></i>
|
||||
{{ trans('cachet.incidents.status')[1] }}
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="incident[status]" value="2">
|
||||
<i class="icon ion-alert-circled"></i>
|
||||
{{ trans('cachet.incidents.status')[2] }}
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="incident[status]" value="3">
|
||||
<i class="icon ion-eye"></i>
|
||||
{{ trans('cachet.incidents.status')[3] }}
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="incident[status]" value="4">
|
||||
<i class="icon ion-checkmark"></i>
|
||||
{{ trans('cachet.incidents.status')[4] }}
|
||||
</label>
|
||||
</div>
|
||||
@if($components->count() > 0)
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.component') }}</label>
|
||||
<select name='incident[component_id]' class='form-control'>
|
||||
<option value='0' selected></option>
|
||||
@foreach($components as $component)
|
||||
<option value='{{ $component->id }}'>{{ $component->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<span class='help-block'>{{ trans('forms.optional') }}</span>
|
||||
</div>
|
||||
@endif
|
||||
<div class="form-group hidden" id='component-status'>
|
||||
<div class="well">
|
||||
<div class="radio-items">
|
||||
@foreach(trans('cachet.components.status') as $statusID => $status)
|
||||
<div class="radio-inline">
|
||||
<label>
|
||||
<input type="radio" name="incident[component_status]" value="{{ $statusID }}" >
|
||||
{{ $status }}
|
||||
</label>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.message') }}</label>
|
||||
<div class='markdown-control'>
|
||||
<textarea name="incident[message]" class="form-control" rows="5" required>{{ Input::old('incident.message') }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="btn-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.add') }}</button>
|
||||
<a class="btn btn-default" href="{{ route('dashboard.incidents') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
93
resources/views/dashboard/incidents/edit.blade.php
Normal file
93
resources/views/dashboard/incidents/edit.blade.php
Normal file
@@ -0,0 +1,93 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-android-alert"></i> {{ trans('dashboard.incidents.incidents') }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.incidents.edit.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form class="form-vertical" name="IncidentForm" role="form" method="POST" autocomplete="off">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label for="incident-name">{{ trans('forms.incidents.name') }}</label>
|
||||
<input type="text" class="form-control" name="incident[name]" id="incident-name" required value="{{$incident->name}}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="incident-name">{{ trans('forms.incidents.status') }}</label><br>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="incident[status]" value="1" {{ ($incident->status == 1) ? "checked=checked" : "" }}>
|
||||
<i class="icon ion-flag"></i>
|
||||
{{ trans('cachet.incidents.status')[1] }}
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="incident[status]" value="2" {{ ($incident->status == 2) ? "checked=checked" : "" }}>
|
||||
<i class="icon ion-alert-circled"></i>
|
||||
{{ trans('cachet.incidents.status')[2] }}
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="incident[status]" value="3" {{ ($incident->status == 3) ? "checked=checked" : "" }}>
|
||||
<i class="icon ion-eye"></i>
|
||||
{{ trans('cachet.incidents.status')[3] }}
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="incident[status]" value="4" {{ ($incident->status == 4) ? "checked=checked" : "" }}>
|
||||
<i class="icon ion-checkmark"></i>
|
||||
{{ trans('cachet.incidents.status')[4] }}
|
||||
</label>
|
||||
</div>
|
||||
@if($components->count() > 0)
|
||||
<div class='form-group'>
|
||||
<label>{{ trans('forms.incidents.component') }}</label>
|
||||
<select name='incident[component_id]' class='form-control'>
|
||||
<option value='0' {{ $incident->id === 0 ? "selected" : null }}></option>
|
||||
@foreach($components as $component)
|
||||
<option value='{{ $component->id }}' {{ $incident->component_id === $component->id ? "selected" : null }}>{{ $component->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<span class='help-block'>{{ trans('forms.optional') }}</span>
|
||||
</div>
|
||||
<div class="form-group {{ $incident->component_id === 0 ? 'hidden' : null }}" id='component-status'>
|
||||
<div class="well">
|
||||
<div class="radio-items">
|
||||
@foreach(trans('cachet.components.status') as $statusID => $status)
|
||||
<div class="radio-inline">
|
||||
<label>
|
||||
<input type="radio" name="incident[component_status]" value="{{ $statusID }}" {{ $incident->component_id > 0 && $incident->component->status === $statusID ? 'checked' : null }}>
|
||||
{{ $status }}
|
||||
</label>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.message') }}</label>
|
||||
<div class='markdown-control'>
|
||||
<textarea name="incident[message]" class="form-control" rows="5" required>{{ $incident->message }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<input type="hidden" name="incident[id]" value={{$incident->id}}>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="btn-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.update') }}</button>
|
||||
<a class="btn btn-default" href="{{ route('dashboard.incidents') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
43
resources/views/dashboard/incidents/index.blade.php
Normal file
43
resources/views/dashboard/incidents/index.blade.php
Normal file
@@ -0,0 +1,43 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@if(isset($subMenu))
|
||||
@include('partials.dashboard.sub-sidebar')
|
||||
@endif
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header">
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-android-alert"></i> {{ trans('dashboard.incidents.incidents') }}
|
||||
</span>
|
||||
<a class="btn btn-sm btn-success pull-right" href="{{ route('dashboard.incidents.add') }}">
|
||||
{{ trans('dashboard.incidents.add.title') }}
|
||||
</a>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<p class="lead">{{ trans_choice('dashboard.incidents.logged', $incidents->count(), ['count' => $incidents->count()]) }}</p>
|
||||
|
||||
<div class="striped-list">
|
||||
@foreach($incidents as $incident)
|
||||
<div class="row striped-list-item">
|
||||
<div class="col-xs-6">
|
||||
<i class="{{ $incident->icon }}"></i> <strong>{{ $incident->name }}</strong>
|
||||
@if($incident->message)
|
||||
<p><small>{{ Str::words($incident->message, 5) }}</small></p>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-xs-6 text-right">
|
||||
<a href="/dashboard/incidents/{{ $incident->id }}/edit" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
<a href="/dashboard/incidents/{{ $incident->id }}/delete" class="btn btn-danger confirm-action" data-method='DELETE'>{{ trans('forms.delete') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
39
resources/views/dashboard/incidents/templates/add.blade.php
Normal file
39
resources/views/dashboard/incidents/templates/add.blade.php
Normal file
@@ -0,0 +1,39 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-plus"></i> {{ trans('dashboard.incidents.templates.title') }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.incidents.templates.add.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form class="form-vertical" name="IncidentForm" role="form" method="POST" autocomplete="off">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label for="template-name">{{ trans('forms.incidents.templates.name') }}</label>
|
||||
<input type="text" class="form-control" name="template[name]" id="template-name" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.templates.template') }}</label>
|
||||
<div class='markdown-control'>
|
||||
<textarea name="template[template]" class="form-control" rows="5" required></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.create') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
48
resources/views/dashboard/incidents/templates/edit.blade.php
Normal file
48
resources/views/dashboard/incidents/templates/edit.blade.php
Normal file
@@ -0,0 +1,48 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-document"></i> {{ trans('dashboard.incidents.templates.title') }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.incidents.templates.edit.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@if($updatedTemplate = Session::get('updatedTemplate'))
|
||||
<div class="alert alert-{{ $updatedTemplate->isValid() ? 'success' : 'danger' }}">
|
||||
@if($updatedTemplate->isValid())
|
||||
{{ sprintf("<strong>%s</strong> %s", trans('dashboard.notifications.awesome'), trans('dashboard.incidents.templates.edit.success')) }}
|
||||
@else
|
||||
{{ sprintf("<strong>%s</strong> %s", trans('dashboard.notifications.whoops'), trans('dashboard.incidents.templates.edit.failure').' '.$updatedTemplate->getErrors()) }}
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<form class='form-vertical' name='IncidentTemplateForm' role='form' method='POST'>
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label for="template-name">{{ trans('forms.incidents.templates.name') }}</label>
|
||||
<input type="text" class="form-control" name="template[name]" id="template-name" required value="{{ $template->name }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.templates.template') }}</label>
|
||||
<div class='markdown-control'>
|
||||
<textarea name="template[template]" class="form-control" rows="5" required>{{ $template->template }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.update') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -0,0 +1,35 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-document-text"></i> {{ trans('dashboard.incidents.templates.title') }}
|
||||
</span>
|
||||
<a class="btn btn-sm btn-success pull-right" href="{{ route('dashboard.templates.add') }}">
|
||||
{{ trans('dashboard.incidents.templates.add.title') }}
|
||||
</a>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="striped-list">
|
||||
@foreach($incidentTemplates as $template)
|
||||
<div class="row striped-list-item">
|
||||
<div class="col-xs-6">
|
||||
<strong>{{ $template->name }}</strong>
|
||||
<p><small>{{ $template->template }}</small></p>
|
||||
</div>
|
||||
<div class="col-xs-6 text-right">
|
||||
<a href="/dashboard/templates/{{ $template->id }}/edit" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
<a href="/dashboard/templates/{{ $template->id }}/delete" class="btn btn-danger confirm-action" data-method='DELETE'>{{ trans('forms.delete') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
55
resources/views/dashboard/index.blade.php
Normal file
55
resources/views/dashboard/index.blade.php
Normal file
@@ -0,0 +1,55 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-speedometer"></i> {{ trans('dashboard.dashboard') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h4 class="sub-header">{{ trans('dashboard.components.component_statuses') }}</h4>
|
||||
<div class="panel panel-default">
|
||||
<div class="list-group">
|
||||
@forelse($components as $component)
|
||||
<div class="list-group-item">
|
||||
<form class='component-inline form-vertical' data-messenger="{{trans('dashboard.components.edit.success')}}">
|
||||
<div class="row striped-list-item">
|
||||
<div class="col-lg-4 col-sm-12">
|
||||
<h4>{{ $component->name }}</h4>
|
||||
</div>
|
||||
<div class="col-lg-8 col-sm-12 radio-items componet-inline-update">
|
||||
@foreach(trans('cachet.components.status') as $statusID => $status)
|
||||
<div class="radio-inline">
|
||||
<label>
|
||||
<input type="radio" name="status" value="{{ $statusID }}" {{ (int) $component->status === $statusID ? 'checked' : null }}>
|
||||
{{ $status }}
|
||||
</label>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="component_id" value="{{ $component->id }}">
|
||||
</form>
|
||||
</div>
|
||||
@empty
|
||||
<div class="list-group-item text-danger">{{ trans('dashboard.components.add.message') }}</div>
|
||||
@endforelse
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@if(Session::get('setup.done'))
|
||||
@include('partials.dashboard.welcome-modal')
|
||||
<script>
|
||||
$(function() {
|
||||
$('#welcome-modal').modal('show');
|
||||
});
|
||||
</script>
|
||||
@endif
|
||||
@stop
|
||||
61
resources/views/dashboard/metrics/add.blade.php
Normal file
61
resources/views/dashboard/metrics/add.blade.php
Normal file
@@ -0,0 +1,61 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-stats-bars"></i> {{ trans('dashboard.metrics.metrics') }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.metrics.add.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form class='form-vertical' name='MetricsForm' role='form' method='POST'>
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label for="metric-name">{{ trans('forms.metrics.name') }}</label>
|
||||
<input type="text" class="form-control" name="metric[name]" id="metric-name" required value="{{ Input::old('metric.name') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="metric-suffix">{{ trans('forms.metrics.suffix') }}</label>
|
||||
<input type="text" class="form-control" name="metric[suffix]" id="metric-suffix" required value="{{ Input::old('metric.suffix') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.metrics.description') }}</label>
|
||||
<div class='markdown-control'>
|
||||
<textarea name="metric[description]" class="form-control" rows="5">{{ Input::old('metric.description') }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.metrics.calc_type') }}</label>
|
||||
<select name="metric[calc_type]" class="form-control" required>
|
||||
<option value="0" selected>{{ trans('forms.metrics.type_sum') }}</option>
|
||||
<option value="1">{{ trans('forms.metrics.type_avg') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="metric-default_value">{{ trans('forms.metrics.default-value') }}</label>
|
||||
<input type="number" class="form-control" name="metric[default_value]" id="metric-default_value" value="{{ Input::old('metric.default_value') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.metrics.display-chart') }}</label>
|
||||
<input type="hidden" value="0" name="metric[display_chart]">
|
||||
<input type="checkbox" value="1" name="metric[display_chart]" class="form-control" checked>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class='form-group'>
|
||||
<div class='btn-group'>
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.add') }}</button>
|
||||
<a class="btn btn-default" href="{{ route('dashboard.metrics') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
64
resources/views/dashboard/metrics/edit.blade.php
Normal file
64
resources/views/dashboard/metrics/edit.blade.php
Normal file
@@ -0,0 +1,64 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon icon ion-android-alert"></i> {{ trans('dashboard.metrics.metrics') }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.metrics.edit.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form class='form-vertical' name='MetricsForm' role='form' method='POST'>
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label for="metric-name">{{ trans('forms.metrics.name') }}</label>
|
||||
<input type="text" class="form-control" name="metric[name]" id="metric-name" required value={{ $metric->name }}>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="metric-suffix">{{ trans('forms.metrics.suffix') }}</label>
|
||||
<input type="text" class="form-control" name="metric[suffix]" id="metric-suffix" required value="{{ $metric->suffix }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.metrics.description') }}</label>
|
||||
<div class='markdown-control'>
|
||||
<textarea name="metric[description]" class="form-control" rows="5">{{ $metric->description }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.metrics.calc_type') }}</label>
|
||||
<select name="metric[calc_type]" class="form-control" required>
|
||||
<option value="0" {{ $metric->calc_type === 0 ? "selected" : null }}>{{ trans('forms.metrics.type_sum') }}</option>
|
||||
<option value="1" {{ $metric->calc_type === 1 ? "selected" : null }}>{{ trans('forms.metrics.type_avg') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="metric-default_value">{{ trans('forms.metrics.default-value') }}</label>
|
||||
<input type="number" class="form-control" name="metric[default_value]" id="metric-default_value" value="{{ $metric->default_value }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.metrics.display-chart') }}</label>
|
||||
<input type="hidden" value="0" name="metric[display_chart]">
|
||||
<input type="checkbox" value="1" name="metric[display_chart]" class="form-control" {{ $metric->display_chart ? 'checked' : null }}>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<input type="hidden" name="metric[id]" value={{$metric->id}}>
|
||||
|
||||
<div class='form-group'>
|
||||
<div class='btn-group'>
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.update') }}</button>
|
||||
<a class="btn btn-default" href="{{ route('dashboard.metrics') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
39
resources/views/dashboard/metrics/index.blade.php
Normal file
39
resources/views/dashboard/metrics/index.blade.php
Normal file
@@ -0,0 +1,39 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header fixed">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-stats-bars"></i> {{ trans('dashboard.metrics.metrics') }}
|
||||
</span>
|
||||
<a class="btn btn-sm btn-success pull-right" href="{{ route('dashboard.metrics.add') }}">
|
||||
{{ trans('dashboard.metrics.add.title') }}
|
||||
</a>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<div class="content-wrapper header-fixed">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<div class="striped-list">
|
||||
@foreach($metrics as $metric)
|
||||
<div class="row striped-list-item">
|
||||
<div class="col-md-6">
|
||||
<i class="{{ $metric->icon }}"></i> <strong>{{ $metric->name }}</strong>
|
||||
@if($metric->description)
|
||||
<p><small>{{ Str::words($metric->description, 5) }}</small></p>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-md-6 text-right">
|
||||
<a href="/dashboard/metrics/{{ $metric->id }}/edit" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
<a href="/dashboard/metrics/{{ $metric->id }}/delete" class="btn btn-danger confirm-action" data-method='DELETE'>{{ trans('forms.delete') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
15
resources/views/dashboard/notifications/index.blade.php
Normal file
15
resources/views/dashboard/notifications/index.blade.php
Normal file
@@ -0,0 +1,15 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<i class="ion ion-email"></i> {{ trans('dashboard.notifications.notifications') }}
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<h3>{{ trans('dashboard.notifications.notifications') }}</h3>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
57
resources/views/dashboard/schedule/add.blade.php
Normal file
57
resources/views/dashboard/schedule/add.blade.php
Normal file
@@ -0,0 +1,57 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-android-calendar"></i> {{ trans('dashboard.schedule.schedule') }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.schedule.add.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form class='form-vertical' name='ScheduleForm' role='form' method='POST' autocomplete="off">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
@if($incidentTemplates->count() > 0)
|
||||
<div class="form-group">
|
||||
<label for="incident-template">{{ trans('forms.incidents.templates.template') }}</label>
|
||||
<select class="form-control" name="template">
|
||||
<option selected></option>
|
||||
@foreach($incidentTemplates as $tpl)
|
||||
<option value="{{ $tpl->slug }}">{{ $tpl->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
@endif
|
||||
<div class="form-group">
|
||||
<label for="incident-name">{{ trans('forms.incidents.name') }}</label>
|
||||
<input type="text" class="form-control" name="incident[name]" id="incident-name" required value="{{ Input::old('incident.name') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.message') }}</label>
|
||||
<div class='markdown-control'>
|
||||
<textarea name="incident[message]" class="form-control" rows="5" required>{{ Input::old('incident.message') }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.scheduled_at') }}</label>
|
||||
<input type="text" name="incident[scheduled_at]" class="form-control" rel="datepicker" required>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="btn-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.add') }}</button>
|
||||
<a class="btn btn-default" href="{{ route('dashboard.schedule') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
57
resources/views/dashboard/schedule/edit.blade.php
Normal file
57
resources/views/dashboard/schedule/edit.blade.php
Normal file
@@ -0,0 +1,57 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-android-calendar"></i> {{ trans('dashboard.schedule.schedule') }}
|
||||
</span>
|
||||
> <small>{{ trans('dashboard.schedule.edit.title') }}</small>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form class='form-vertical' name='ScheduleForm' role='form' method='POST' autocomplete="off">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
@if($incidentTemplates->count() > 0)
|
||||
<div class="form-group">
|
||||
<label for="incident-template">{{ trans('forms.incidents.templates.template') }}</label>
|
||||
<select class="form-control" name="template">
|
||||
<option selected></option>
|
||||
@foreach($incidentTemplates as $tpl)
|
||||
<option value="{{ $tpl->slug }}">{{ $tpl->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
@endif
|
||||
<div class="form-group">
|
||||
<label for="incident-name">{{ trans('forms.incidents.name') }}</label>
|
||||
<input type="text" class="form-control" name="incident[name]" id="incident-name" required value="{{ $schedule->name }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.message') }}</label>
|
||||
<div class='markdown-control'>
|
||||
<textarea name="incident[message]" class="form-control" rows="5" required>{{ $schedule->message }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.scheduled_at') }}</label>
|
||||
<input type="text" name="incident[scheduled_at]" class="form-control" rel="datepicker" value="{{ $schedule->scheduled_at_datetimepicker }}" required>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="btn-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.save') }}</button>
|
||||
<a class="btn btn-default" href="{{ route('dashboard.schedule') }}">{{ trans('forms.cancel') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
44
resources/views/dashboard/schedule/index.blade.php
Normal file
44
resources/views/dashboard/schedule/index.blade.php
Normal file
@@ -0,0 +1,44 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@if(isset($subMenu))
|
||||
@include('partials.dashboard.sub-sidebar')
|
||||
@endif
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header">
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-android-calendar"></i> {{ trans('dashboard.schedule.schedule') }}
|
||||
</span>
|
||||
<a class="btn btn-sm btn-success pull-right" href="{{ route('dashboard.schedule.add') }}">
|
||||
{{ trans('dashboard.schedule.add.title') }}
|
||||
</a>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.dashboard.errors')
|
||||
|
||||
<div class="striped-list">
|
||||
@foreach($schedule as $incident)
|
||||
<div class="row striped-list-item">
|
||||
<div class="col-xs-6">
|
||||
<strong>{{ $incident->name }}</strong>
|
||||
<br>
|
||||
{{ trans('dashboard.schedule.scheduled_at', ['timestamp' => $incident->scheduled_at_iso]) }}
|
||||
@if($incident->message)
|
||||
<p><small>{{ Str::words($incident->message, 5) }}</small></p>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-xs-6 text-right">
|
||||
<a href="/dashboard/schedule/{{ $incident->id }}/edit" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
<a href="/dashboard/schedule/{{ $incident->id }}/delete" class="btn btn-danger confirm-action" data-method='DELETE'>{{ trans('forms.delete') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
166
resources/views/dashboard/settings/app-setup.blade.php
Normal file
166
resources/views/dashboard/settings/app-setup.blade.php
Normal file
@@ -0,0 +1,166 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@if(isset($subMenu))
|
||||
@include('partials.dashboard.sub-sidebar')
|
||||
@endif
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header" id="application-setup">
|
||||
<span class="uppercase">
|
||||
{{ trans('dashboard.settings.app-setup.app-setup') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<form id="settings-form" name="SettingsForm" class="form-vertical" role="form" action="/dashboard/settings" method="POST" enctype="multipart/form-data">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
@include('partials.dashboard.errors')
|
||||
<fieldset>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.app-setup.site-name') }}</label>
|
||||
<input type="text" class="form-control" name="app_name" value="{{ Setting::get('app_name') }}" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.app-setup.site-url') }}</label>
|
||||
<input type="text" class="form-control" name="app_domain" value="{{ Setting::get('app_domain') }}" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.app-setup.about-this-page') }}</label>
|
||||
<div class='markdown-control'>
|
||||
<textarea name="app_about" class="form-control" rows="4">{{ Setting::get('app_about') }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.app-setup.google-analytics') }}</label>
|
||||
<input type="text" name="app_analytics" class="form-control" value="{{ Setting::get('app_analytics') }}" placeholder="UA-12345-12">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.app-setup.site-timezone') }}</label>
|
||||
<select name="app_timezone" class="form-control" required>
|
||||
<option value="">Select Timezone</option>
|
||||
@foreach($timezones as $region => $list)
|
||||
<optgroup label="{{ $region }}">
|
||||
@foreach($list as $timezone => $name)
|
||||
<option value="{{ $timezone }}" @if(Setting::get('app_timezone') == $timezone) selected @endif>
|
||||
{{ $name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</optgroup>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>
|
||||
{{ trans('forms.settings.app-setup.date-format') }}
|
||||
<a href="http://php.net/manual/en/function.date.php" target="_blank"><i class="icon ion-help-circled"></i></a>
|
||||
</label>
|
||||
<input type="text" class="form-control" name="date_format" value="{{ Setting::get('date_format') ?: 'jS F Y' }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.app-setup.site-locale') }}</label>
|
||||
<select name="app_locale" class="form-control" required>
|
||||
<option value="">Select Language</option>
|
||||
@foreach($langs as $lang => $name)
|
||||
<option value="{{ $lang }}" @if(Setting::get('app_locale') == $lang) selected @endif>
|
||||
{{ $name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.app-setup.days-of-incidents') }}</label>
|
||||
<input type="number" min="1" max="100" name="app_incident_days" class="form-control" value="{{ Setting::get('app_incident_days') ?: 7 }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.app-setup.display-graphs') }}</label>
|
||||
<input type="hidden" value="0" name="display_graphs">
|
||||
<input type="checkbox" value="1" name="display_graphs" class="form-control" {{ Setting::get('display_graphs') ? 'checked' : null }}>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('setup.show_support') }}</label>
|
||||
<input type="hidden" value="0" name="show_support">
|
||||
<input type="checkbox" value="1" name="show_support" class="form-control" {{ Setting::get('show_support') ? 'checked' : null }}>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('setup.allow_tracking') }}</label>
|
||||
<input type="hidden" value="0" name="app_track">
|
||||
<input type="checkbox" value="1" name="app_track" class="form-control" {{ Setting::get('app_track') ? 'checked' : null }}>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.app-setup.banner') }}</label>
|
||||
@if($banner = Setting::get('app_banner'))
|
||||
<div id="banner-view" class="well">
|
||||
<img src="data:{{ Setting::get('app_banner_type') }};base64,{{ $banner }}" style="max-width: 100%">
|
||||
<br><br>
|
||||
<button id="remove-banner" class="btn btn-danger">{{ trans('forms.remove') }}</button>
|
||||
</div>
|
||||
@endif
|
||||
<input type="file" name="app_banner" class="form-control">
|
||||
<span class="help-block">{{ trans('forms.settings.app-setup.banner-help') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.save') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="remove_banner" value="">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
61
resources/views/dashboard/settings/security.blade.php
Normal file
61
resources/views/dashboard/settings/security.blade.php
Normal file
@@ -0,0 +1,61 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@if(isset($subMenu))
|
||||
@include('partials.dashboard.sub-sidebar')
|
||||
@endif
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header" id="security">
|
||||
<span class="uppercase">
|
||||
{{ trans('dashboard.settings.security.security') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<form name="SettingsForm" class="form-vertical" role="form" action="/dashboard/settings" method="POST">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
@include('partials.dashboard.errors')
|
||||
<fieldset>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.security.allowed-domains') }}</label>
|
||||
<textarea class="form-control" name="allowed_domains" rows="5" placeholder="http://cachet.io, http://cachet.herokuapp.com">{{ Setting::get('allowed_domains') }}</textarea>
|
||||
<div class="help-block">
|
||||
{{ trans('forms.settings.security.allowed-domains-help') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.save') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if(! $unsecureUsers->isEmpty())
|
||||
<hr>
|
||||
|
||||
<div class="panel panel-danger">
|
||||
<div class="panel-heading">{{ trans('dashboard.settings.security.two-factor') }}</div>
|
||||
<div class="list-group">
|
||||
@foreach($unsecureUsers as $user)
|
||||
<div class="list-group-item">
|
||||
<strong>{{ $user->username }}</strong>
|
||||
<span class="label label-danger pull-right"><i class="ion-ios-unlocked"></i></span>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
42
resources/views/dashboard/settings/stylesheet.blade.php
Normal file
42
resources/views/dashboard/settings/stylesheet.blade.php
Normal file
@@ -0,0 +1,42 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@if(isset($subMenu))
|
||||
@include('partials.dashboard.sub-sidebar')
|
||||
@endif
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header" id="stylesheet">
|
||||
<span class="uppercase">
|
||||
{{ trans('dashboard.settings.stylesheet.stylesheet') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<form name="SettingsForm" class="form-vertical" role="form" action="/dashboard/settings" method="POST">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
@include('partials.dashboard.errors')
|
||||
<fieldset>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.stylesheet.custom-css') }}</label>
|
||||
<textarea class="form-control" name="stylesheet" rows="10">{{ Setting::get('stylesheet') }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.save') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
70
resources/views/dashboard/settings/theme.blade.php
Normal file
70
resources/views/dashboard/settings/theme.blade.php
Normal file
@@ -0,0 +1,70 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="content-panel">
|
||||
@if(isset($subMenu))
|
||||
@include('partials.dashboard.sub-sidebar')
|
||||
@endif
|
||||
<div class="content-wrapper">
|
||||
<div class="header sub-header" id="theme">
|
||||
<span class="uppercase">
|
||||
{{ trans('dashboard.settings.theme.theme') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<form name="SettingsForm" class="form-vertical" role="form" action="/dashboard/settings" method="POST">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
@include('partials.dashboard.errors')
|
||||
<fieldset>
|
||||
<div class="row">
|
||||
<div class="col-xs-6">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.theme.background-color') }}</label>
|
||||
<input type="text" class="form-control color-code" name="style.background_color" value="{{ Setting::get('style_background_color') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-6">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.theme.text-color') }}</label>
|
||||
<input type="text" class="form-control color-code" name="style.text_color" value="{{ Setting::get('style_text_color') }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{--
|
||||
<div class="row">
|
||||
<div class="col-xs-4">
|
||||
<div class="form-group">
|
||||
<label>Success Warning Color</label>
|
||||
<input type="text" class="form-control color-code" name="style.success_warning_color" value="{{ Setting::get('style_success_warning_color') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<div class="form-group">
|
||||
<label>Error Warning Color</label>
|
||||
<input type="text" class="form-control color-code" name="style.error_warning_color" value="{{ Setting::get('style_error_warning_color') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<div class="form-group">
|
||||
<label>Info Warning Color</label>
|
||||
<input type="text" class="form-control color-code" name="style.style_info_warning_color" value="{{ Setting::get('style_info_warning_color') }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
--}}
|
||||
</fieldset>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.save') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
40
resources/views/dashboard/team/add.blade.php
Normal file
40
resources/views/dashboard/team/add.blade.php
Normal file
@@ -0,0 +1,40 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="icon ion-person"></i> {{ trans('dashboard.team.team') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form name="UserForm" class="form-vertical" role="form" action="/dashboard/team/add" method="POST">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.username') }}</label>
|
||||
<input type="text" class="form-control" name="username" value="{{ Input::old('username') }}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.email') }}</label>
|
||||
<input type="email" class="form-control" name="email" value="{{ Input::old('email') }}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.password') }}</label>
|
||||
<input type="password" class="form-control" name="password" value="">
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.add') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
43
resources/views/dashboard/team/edit.blade.php
Normal file
43
resources/views/dashboard/team/edit.blade.php
Normal file
@@ -0,0 +1,43 @@
|
||||
@extends('layout.dashboard')
|
||||
|
||||
@section('content')
|
||||
<div class="header">
|
||||
<div class="sidebar-toggler visible-xs">
|
||||
<i class="icon ion-navicon"></i>
|
||||
</div>
|
||||
<span class="uppercase">
|
||||
<i class="ion ion-person"></i> {{ trans('dashboard.team.member') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('partials.dashboard.errors')
|
||||
<form name="UserForm" class="form-vertical" role="form" action="/dashboard/team/{{ $user->id }}" method="POST">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.username') }}</label>
|
||||
<input type="text" class="form-control" name="username" value="{{ $user->username }}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.email') }}</label>
|
||||
<input type="email" class="form-control" name="email" value="{{ $user->email }}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.user.password') }}</label>
|
||||
<input type="password" class="form-control" name="password" value="" {{ !$loggedUser->isAdmin ? "disabled": "" }}>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-success">{{ trans('forms.update') }}</button>
|
||||
@if($loggedUser->isAdmin)
|
||||
<a class="btn btn-danger" href="/dashboard/user/{{ $user->id }}/api/regen">{{ trans('cachet.api.revoke') }}</a>
|
||||
@endif
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user