Initial commit: CloudOps infrastructure platform
This commit is contained in:
@@ -0,0 +1,128 @@
|
||||
.thumbnail-preview img {
|
||||
height: 100px;
|
||||
}
|
||||
.modal-body-content iframe, .preview-detail iframe {
|
||||
height: 400px;
|
||||
}
|
||||
.form-group.preview img {
|
||||
max-height: 260px;
|
||||
}
|
||||
|
||||
@-webkit-keyframes passing-through { 0% { opacity: 0; -webkit-transform: translateY(40px); -moz-transform: translateY(40px); -ms-transform: translateY(40px); -o-transform: translateY(40px); transform: translateY(40px); }
|
||||
30%, 70% { opacity: 1; -webkit-transform: translateY(0px); -moz-transform: translateY(0px); -ms-transform: translateY(0px); -o-transform: translateY(0px); transform: translateY(0px); }
|
||||
100% { opacity: 0; -webkit-transform: translateY(-40px); -moz-transform: translateY(-40px); -ms-transform: translateY(-40px); -o-transform: translateY(-40px); transform: translateY(-40px); } }
|
||||
@-moz-keyframes passing-through { 0% { opacity: 0; -webkit-transform: translateY(40px); -moz-transform: translateY(40px); -ms-transform: translateY(40px); -o-transform: translateY(40px); transform: translateY(40px); }
|
||||
30%, 70% { opacity: 1; -webkit-transform: translateY(0px); -moz-transform: translateY(0px); -ms-transform: translateY(0px); -o-transform: translateY(0px); transform: translateY(0px); }
|
||||
100% { opacity: 0; -webkit-transform: translateY(-40px); -moz-transform: translateY(-40px); -ms-transform: translateY(-40px); -o-transform: translateY(-40px); transform: translateY(-40px); } }
|
||||
@keyframes passing-through { 0% { opacity: 0; -webkit-transform: translateY(40px); -moz-transform: translateY(40px); -ms-transform: translateY(40px); -o-transform: translateY(40px); transform: translateY(40px); }
|
||||
30%, 70% { opacity: 1; -webkit-transform: translateY(0px); -moz-transform: translateY(0px); -ms-transform: translateY(0px); -o-transform: translateY(0px); transform: translateY(0px); }
|
||||
100% { opacity: 0; -webkit-transform: translateY(-40px); -moz-transform: translateY(-40px); -ms-transform: translateY(-40px); -o-transform: translateY(-40px); transform: translateY(-40px); } }
|
||||
@-webkit-keyframes slide-in { 0% { opacity: 0; -webkit-transform: translateY(40px); -moz-transform: translateY(40px); -ms-transform: translateY(40px); -o-transform: translateY(40px); transform: translateY(40px); }
|
||||
30% { opacity: 1; -webkit-transform: translateY(0px); -moz-transform: translateY(0px); -ms-transform: translateY(0px); -o-transform: translateY(0px); transform: translateY(0px); } }
|
||||
@-moz-keyframes slide-in { 0% { opacity: 0; -webkit-transform: translateY(40px); -moz-transform: translateY(40px); -ms-transform: translateY(40px); -o-transform: translateY(40px); transform: translateY(40px); }
|
||||
30% { opacity: 1; -webkit-transform: translateY(0px); -moz-transform: translateY(0px); -ms-transform: translateY(0px); -o-transform: translateY(0px); transform: translateY(0px); } }
|
||||
@keyframes slide-in { 0% { opacity: 0; -webkit-transform: translateY(40px); -moz-transform: translateY(40px); -ms-transform: translateY(40px); -o-transform: translateY(40px); transform: translateY(40px); }
|
||||
30% { opacity: 1; -webkit-transform: translateY(0px); -moz-transform: translateY(0px); -ms-transform: translateY(0px); -o-transform: translateY(0px); transform: translateY(0px); } }
|
||||
@-webkit-keyframes pulse { 0% { -webkit-transform: scale(1); -moz-transform: scale(1); -ms-transform: scale(1); -o-transform: scale(1); transform: scale(1); }
|
||||
10% { -webkit-transform: scale(1.1); -moz-transform: scale(1.1); -ms-transform: scale(1.1); -o-transform: scale(1.1); transform: scale(1.1); }
|
||||
20% { -webkit-transform: scale(1); -moz-transform: scale(1); -ms-transform: scale(1); -o-transform: scale(1); transform: scale(1); } }
|
||||
@-moz-keyframes pulse { 0% { -webkit-transform: scale(1); -moz-transform: scale(1); -ms-transform: scale(1); -o-transform: scale(1); transform: scale(1); }
|
||||
10% { -webkit-transform: scale(1.1); -moz-transform: scale(1.1); -ms-transform: scale(1.1); -o-transform: scale(1.1); transform: scale(1.1); }
|
||||
20% { -webkit-transform: scale(1); -moz-transform: scale(1); -ms-transform: scale(1); -o-transform: scale(1); transform: scale(1); } }
|
||||
@keyframes pulse { 0% { -webkit-transform: scale(1); -moz-transform: scale(1); -ms-transform: scale(1); -o-transform: scale(1); transform: scale(1); }
|
||||
10% { -webkit-transform: scale(1.1); -moz-transform: scale(1.1); -ms-transform: scale(1.1); -o-transform: scale(1.1); transform: scale(1.1); }
|
||||
20% { -webkit-transform: scale(1); -moz-transform: scale(1); -ms-transform: scale(1); -o-transform: scale(1); transform: scale(1); } }
|
||||
.mdropzone, .mdropzone * { box-sizing: border-box; }
|
||||
|
||||
.mdropzone { min-height: 150px; border: none; background: var(--field); padding: 30px 30px; transition: var(--transition-all-productive); border-radius: var(--border-radius-md);}
|
||||
.mdropzone:hover { background: var(--field-hover); }
|
||||
.has-error .mdropzone {border: 2px solid #a94442;}
|
||||
.is-success .mdropzone {border: 2px solid #00a08a;}
|
||||
.mdropzone.dz-clickable { cursor: pointer; }
|
||||
.mdropzone.dz-clickable * { cursor: default; }
|
||||
.mdropzone.dz-clickable .dz-message, .mdropzone.dz-clickable .dz-message * { cursor: pointer; }
|
||||
.mdropzone.dz-started .dz-message { display: none; }
|
||||
.mdropzone.dz-drag-hover { border-style: solid; }
|
||||
.mdropzone.dz-drag-hover .dz-message { opacity: 0.5; }
|
||||
.mdropzone .dz-message { text-align: center; margin: 2em 0; }
|
||||
.mdropzone .dz-preview { position: relative; display: inline-block; vertical-align: top; margin: 16px; min-height: 100px; }
|
||||
.mdropzone .dz-preview:hover { z-index: 1000; }
|
||||
.mdropzone .dz-preview:hover .dz-details { opacity: 1; }
|
||||
.mdropzone .dz-preview.dz-file-preview .dz-image { border-radius: 20px; background: #999; background: linear-gradient(to bottom, #eee, #ddd); }
|
||||
.mdropzone .dz-preview.dz-file-preview .dz-details { opacity: 1; }
|
||||
.mdropzone .dz-preview.dz-image-preview { background: white; }
|
||||
.mdropzone .dz-preview.dz-image-preview .dz-details { -webkit-transition: opacity 0.2s linear; -moz-transition: opacity 0.2s linear; -ms-transition: opacity 0.2s linear; -o-transition: opacity 0.2s linear; transition: opacity 0.2s linear; }
|
||||
.mdropzone .dz-preview .dz-remove { font-size: 14px; text-align: center; display: block; cursor: pointer; border: none; }
|
||||
.mdropzone .dz-preview .dz-remove:hover { text-decoration: underline; }
|
||||
.mdropzone .dz-preview:hover .dz-details { opacity: 1; }
|
||||
.mdropzone .dz-preview .dz-details { z-index: 20; position: absolute; top: 0; left: 0; opacity: 0; font-size: 13px; min-width: 100%; max-width: 100%; padding: 2em 1em; text-align: center; color: rgba(0, 0, 0, 0.9); line-height: 150%; }
|
||||
.mdropzone .dz-preview .dz-details .dz-size { margin-bottom: 1em; font-size: 16px; }
|
||||
.mdropzone .dz-preview .dz-details .dz-filename { white-space: nowrap; }
|
||||
.mdropzone .dz-preview .dz-details .dz-filename:hover span { border: 1px solid rgba(200, 200, 200, 0.8); background-color: rgba(255, 255, 255, 0.8); }
|
||||
.mdropzone .dz-preview .dz-details .dz-filename:not(:hover) { overflow: hidden; text-overflow: ellipsis; }
|
||||
.mdropzone .dz-preview .dz-details .dz-filename:not(:hover) span { border: 1px solid transparent; }
|
||||
.mdropzone .dz-preview .dz-details .dz-filename span, .mdropzone .dz-preview .dz-details .dz-size span { background-color: rgba(255, 255, 255, 0.4); padding: 0 0.4em; border-radius: 3px; }
|
||||
.mdropzone .dz-preview:hover .dz-image img { -webkit-transform: scale(1.05, 1.05); -moz-transform: scale(1.05, 1.05); -ms-transform: scale(1.05, 1.05); -o-transform: scale(1.05, 1.05); transform: scale(1.05, 1.05); -webkit-filter: blur(8px); filter: blur(8px); }
|
||||
.mdropzone .dz-preview .dz-image { border-radius: 20px; overflow: hidden; width: 120px; height: 120px; position: relative; display: block; z-index: 10; }
|
||||
.mdropzone .dz-preview .dz-image img { display: block; }
|
||||
.mdropzone .dz-preview.dz-success .dz-success-mark { -webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); -moz-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); -ms-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); -o-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); }
|
||||
.mdropzone .dz-preview.dz-error .dz-error-mark { opacity: 1; -webkit-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); -moz-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); -ms-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); -o-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); }
|
||||
.mdropzone .dz-preview .dz-success-mark, .mdropzone .dz-preview .dz-error-mark { pointer-events: none; opacity: 0; z-index: 500; position: absolute; display: block; top: 50%; left: 50%; margin-left: -27px; margin-top: -27px; }
|
||||
.mdropzone .dz-preview .dz-success-mark svg, .mdropzone .dz-preview .dz-error-mark svg { display: block; width: 54px; height: 54px; }
|
||||
.mdropzone .dz-preview.dz-processing .dz-progress { opacity: 1; -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; }
|
||||
.mdropzone .dz-preview.dz-complete .dz-progress { opacity: 0; -webkit-transition: opacity 0.4s ease-in; -moz-transition: opacity 0.4s ease-in; -ms-transition: opacity 0.4s ease-in; -o-transition: opacity 0.4s ease-in; transition: opacity 0.4s ease-in; }
|
||||
.mdropzone .dz-preview:not(.dz-processing) .dz-progress { -webkit-animation: pulse 6s ease infinite; -moz-animation: pulse 6s ease infinite; -ms-animation: pulse 6s ease infinite; -o-animation: pulse 6s ease infinite; animation: pulse 6s ease infinite; }
|
||||
.mdropzone .dz-preview .dz-progress { opacity: 1; z-index: 1000; pointer-events: none; position: absolute; height: 16px; left: 50%; top: 50%; margin-top: -8px; width: 80px; margin-left: -40px; background: rgba(255, 255, 255, 0.9); -webkit-transform: scale(1); border-radius: 8px; overflow: hidden; }
|
||||
.mdropzone .dz-preview .dz-progress .dz-upload { background: #333; background: linear-gradient(to bottom, #666, #444); position: absolute; top: 0; left: 0; bottom: 0; width: 0; -webkit-transition: width 300ms ease-in-out; -moz-transition: width 300ms ease-in-out; -ms-transition: width 300ms ease-in-out; -o-transition: width 300ms ease-in-out; transition: width 300ms ease-in-out; }
|
||||
.mdropzone .dz-preview.dz-error .dz-error-message { display: block; }
|
||||
.mdropzone .dz-preview.dz-error:hover .dz-error-message { opacity: 1; pointer-events: auto; }
|
||||
.mdropzone .dz-preview .dz-error-message { pointer-events: none; z-index: 1000; position: absolute; display: block; display: none; opacity: 0; -webkit-transition: opacity 0.3s ease; -moz-transition: opacity 0.3s ease; -ms-transition: opacity 0.3s ease; -o-transition: opacity 0.3s ease; transition: opacity 0.3s ease; border-radius: 8px; font-size: 13px; top: 130px; left: -10px; width: 140px; background: #be2626; background: linear-gradient(to bottom, #be2626, #a92222); padding: 0.5em 1.2em; color: white; }
|
||||
.mdropzone .dz-preview .dz-error-message:after { content: ''; position: absolute; top: -6px; left: 64px; width: 0; height: 0; border-left: 6px solid transparent; border-right: 6px solid transparent; border-bottom: 6px solid #a94442; }
|
||||
|
||||
/*
|
||||
* The MIT License
|
||||
* Copyright (c) 2012 Matias Meno <m@tias.me>
|
||||
*/
|
||||
.mdropzone, .mdropzone * {
|
||||
box-sizing: border-box; }
|
||||
|
||||
.mdropzone {
|
||||
position: relative;
|
||||
}
|
||||
.mdropzone .dz-preview {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: 120px;
|
||||
margin: 0.5em;
|
||||
}
|
||||
.mdropzone .dz-preview .dz-progress {
|
||||
display: block;
|
||||
height: 15px;
|
||||
border: 1px solid #aaa;
|
||||
}
|
||||
.mdropzone .dz-preview .dz-progress .dz-upload {
|
||||
display: block;
|
||||
height: 100%;
|
||||
width: 0;
|
||||
background: green;
|
||||
}
|
||||
.mdropzone .dz-preview .dz-error-message {
|
||||
color: #fff;
|
||||
display: none;
|
||||
}
|
||||
.mdropzone .dz-preview.dz-error .dz-error-message, .mdropzone .dz-preview.dz-error .dz-error-mark {
|
||||
display: block;
|
||||
}
|
||||
.mdropzone .dz-preview.dz-success .dz-success-mark {
|
||||
display: block;
|
||||
}
|
||||
.mdropzone .dz-preview .dz-error-mark, .mdropzone .dz-preview .dz-success-mark {
|
||||
position: absolute;
|
||||
display: none;
|
||||
left: 30px;
|
||||
top: 30px;
|
||||
width: 54px;
|
||||
height: 58px;
|
||||
left: 50%;
|
||||
margin-left: -27px;
|
||||
}
|
||||
@@ -0,0 +1,184 @@
|
||||
//AssetBundle
|
||||
Mautic.assetOnLoad = function (container) {
|
||||
if (typeof mauticAssetUploadEndpoint !== 'undefined' && typeof Mautic.assetDropzone == 'undefined' && mQuery('div#dropzone').length) {
|
||||
Mautic.initializeDropzone();
|
||||
}
|
||||
};
|
||||
|
||||
Mautic.assetOnUnload = function(id) {
|
||||
if (id === '#app-content') {
|
||||
delete Mautic.assetDropzone;
|
||||
}
|
||||
};
|
||||
|
||||
Mautic.updateRemoteBrowser = function(provider, path) {
|
||||
path = typeof path !== 'undefined' ? path : '';
|
||||
|
||||
var spinner = mQuery('<i class="ri-loader-3-line ri-spin ri-fw"></i>');
|
||||
spinner.appendTo('#tab' + provider + ' a');
|
||||
|
||||
mQuery.ajax({
|
||||
url: mauticAjaxUrl,
|
||||
type: "POST",
|
||||
data: "action=asset:fetchRemoteFiles&provider=" + provider + "&path=" + path,
|
||||
dataType: "json",
|
||||
success: function (response) {
|
||||
if (response.success) {
|
||||
mQuery('div#remoteFileBrowser').html(response.output);
|
||||
|
||||
mQuery('.remote-file-search').quicksearch('#remoteFileBrowser .remote-file-list a');
|
||||
} else {
|
||||
const flashMessage = Mautic.addErrorFlashMessage(response.message);
|
||||
Mautic.setFlashes(flashMessage);
|
||||
}
|
||||
},
|
||||
error: function (request, textStatus, errorThrown) {
|
||||
Mautic.processAjaxError(request, textStatus, errorThrown);
|
||||
},
|
||||
complete: function() {
|
||||
spinner.remove();
|
||||
}
|
||||
})
|
||||
};
|
||||
|
||||
Mautic.selectRemoteFile = function(url) {
|
||||
mQuery('#asset_remotePath').val(url);
|
||||
mQuery('#RemoteFileModal').modal('hide');
|
||||
};
|
||||
|
||||
Mautic.changeAssetStorageLocation = function() {
|
||||
if (mQuery('#asset_storageLocation_0').prop('checked')) {
|
||||
mQuery('#storage-local').removeClass('hide');
|
||||
mQuery('#storage-remote').addClass('hide');
|
||||
mQuery('#remote-button').addClass('hide');
|
||||
} else {
|
||||
mQuery('#storage-local').addClass('hide');
|
||||
mQuery('#storage-remote').removeClass('hide');
|
||||
mQuery('#remote-button').removeClass('hide');
|
||||
}
|
||||
};
|
||||
|
||||
Mautic.initializeDropzone = function() {
|
||||
var options = {
|
||||
url: mauticAssetUploadEndpoint,
|
||||
uploadMultiple: false,
|
||||
filesizeBase: 1024,
|
||||
init: function() {
|
||||
this.on("addedfile", function() {
|
||||
if (this.files[1] != null) {
|
||||
this.removeFile(this.files[0]);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof mauticAssetUploadMaxSize !== 'undefined') {
|
||||
options.maxFilesize = mauticAssetUploadMaxSize;
|
||||
}
|
||||
|
||||
if (typeof mauticAssetUploadMaxSizeError !== 'undefined') {
|
||||
options.dictFileTooBig = mauticAssetUploadMaxSizeError;
|
||||
}
|
||||
|
||||
if (typeof mauticAssetUploadExtensions !== 'undefined') {
|
||||
options.acceptedFiles = mauticAssetUploadExtensions;
|
||||
}
|
||||
|
||||
if (typeof mauticAssetUploadExtensionError !== 'undefined') {
|
||||
options.dictInvalidFileType = mauticAssetUploadExtensionError;
|
||||
}
|
||||
|
||||
Mautic.assetDropzone = new Dropzone("div#dropzone", options);
|
||||
var preview = mQuery('.preview div.text-center');
|
||||
|
||||
Mautic.assetDropzone.on("sending", function (file, request, formData) {
|
||||
request.setRequestHeader('X-CSRF-Token', mauticAjaxCsrf);
|
||||
formData.append('tempId', mQuery('#asset_tempId').val());
|
||||
}).on("addedfile", function (file) {
|
||||
preview.fadeOut('fast');
|
||||
}).on("success", function (file, response, progress) {
|
||||
if (response.tmpFileName) {
|
||||
mQuery('#asset_tempName').val(response.tmpFileName);
|
||||
}
|
||||
|
||||
var messageArea = mQuery('.mdropzone-error');
|
||||
if (response.error || !response.tmpFileName) {
|
||||
if (!response.error) {
|
||||
var errorText = '';
|
||||
} else {
|
||||
var errorText = (typeof response.error == 'object') ? response.error.text : response.error;
|
||||
}
|
||||
|
||||
messageArea.text(errorText);
|
||||
messageArea.closest('.form-group').addClass('has-error').removeClass('is-success');
|
||||
|
||||
// invoke the error
|
||||
var node, _i, _len, _ref, _results;
|
||||
file.previewElement.classList.add('dz-error');
|
||||
_ref = file.previewElement.querySelectorAll('data-dz-errormessage');
|
||||
_results = [];
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
node = _ref[_i];
|
||||
_results.push(node.textContent = errorText);
|
||||
}
|
||||
return _results;
|
||||
} else {
|
||||
messageArea.text('');
|
||||
messageArea.closest('.form-group').removeClass('has-error').addClass('is-success');
|
||||
}
|
||||
|
||||
var titleInput = mQuery('#asset_title');
|
||||
if (file.name && !titleInput.val()) {
|
||||
titleInput.val(file.name);
|
||||
}
|
||||
|
||||
if (file.name) {
|
||||
mQuery('#asset_originalFileName').val(file.name);
|
||||
}
|
||||
}).on("error", function (file, response) {
|
||||
preview.fadeIn('fast');
|
||||
var messageArea = mQuery('.mdropzone-error');
|
||||
|
||||
// Dropzone error is just a text in the response var
|
||||
if (typeof response == "string") {
|
||||
response = {'error': response};
|
||||
}
|
||||
|
||||
if (response.error) {
|
||||
if (!response.error) {
|
||||
var errorText = '';
|
||||
} else {
|
||||
var errorText = (typeof response.error == 'object') ? response.error.text : response.error;
|
||||
}
|
||||
|
||||
messageArea.text(errorText);
|
||||
messageArea.closest('.form-group').addClass('has-error').removeClass('is-success');
|
||||
|
||||
// invoke the error
|
||||
var node, _i, _len, _ref, _results;
|
||||
file.previewElement.classList.add('dz-error');
|
||||
_ref = file.previewElement.querySelectorAll('[data-dz-errormessage]');
|
||||
_results = [];
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
node = _ref[_i];
|
||||
_results.push(node.textContent = errorText);
|
||||
}
|
||||
return _results;
|
||||
}
|
||||
}).on("thumbnail", function (file, url) {
|
||||
if (file.accepted === true) {
|
||||
var extension = file.name.substr((file.name.lastIndexOf('.') +1)).toLowerCase();
|
||||
var previewContent = '';
|
||||
|
||||
if (mQuery.inArray(extension, ['jpg', 'jpeg', 'gif', 'png']) !== -1) {
|
||||
previewContent = mQuery('<img />').addClass('img-thumbnail').attr('src', url);
|
||||
} else if (extension === 'pdf') {
|
||||
previewContent = mQuery('<iframe />').attr('src', url);
|
||||
}
|
||||
|
||||
preview.empty().html(previewContent);
|
||||
preview.fadeIn('fast');
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user