shell bypass 403
(function($) {
"use strict"; // Start of use strict
// Init editor
var editor = grapesjs.init({
container: '#gjs',
height: '100%',
protectedCss: `body{ font-family: sans-serif; max-width: 210mm;height:auto;margin: 20px auto;background: #fff;box-shadow: 0 3px 1px -2px rgba(0,0,0,.2), 0 2px 2px 0 rgba(0,0,0,.14), 0 1px 5px 0 rgba(0,0,0,.12);}`,
noticeOnUnload: true,
storageManager: {
type: 'remote',
autosave: false,
urlStore: urlStore,
urlLoad: urlLoad,
params: {
"_token": _token
},
},
assetManager: {
multiUpload: false,
upload: upload_Image,
params: {
"_token": _token
},
uploadName: 'files',
assets: images_url,
},
styleManager: {
clearProperties: true,
},
cssIcons: null,
fromElement: true,
plugins: ['gjs-preset-webpage'],
pluginsOpts: {
'gjs-preset-webpage': {},
}
});
// End Init editor
// Editor load
editor.on('load', function() {
// Customize builder interface
// remove classs state-hover,click...
var classs_state = document.getElementById("gjs-clm-up");
if (classs_state) classs_state.remove();
// add default css on template font-awesome
const head = editor.Canvas.getDocument().head;
head.insertAdjacentHTML('beforeend', `<link rel="stylesheet" href="${url_default_css_template}">`);
// End Customize
// Edit with ID builder
// Make private already inserted selectors
editor.SelectorManager.getAll().each(selector => selector.set('private', 1));
// All new selectors will be private
editor.on('selector:add', selector => selector.set('private', 1));
// End edit with ID builder
// All Font family setup
const bodyCSSRule = editor.CssComposer.getRule('#resumecv-layout', {
atRuleType: 'font-family',
});
var bodyFont = '';
if (bodyCSSRule)
bodyFont = bodyCSSRule.attributes.style['font-family'];
var option_fonts = "";
all_fonts.forEach(function(item) {
if (bodyFont) {
if (bodyFont.includes(item))
option_fonts += `<option value="${item}" selected>${item}</option>`;
} else {
option_fonts += `<option value="${item}">${item}</option>`;
}
});
editor.Panels.addPanel({
id: 'myNewPanel',
visible: true,
content: `
<div class="left-panel-builder">
<label for="font-family">${langs.fontFamily}:</label>
<select name="font-family" id="font-family">
${option_fonts}
</select>
<button id="change_templates" class='btn btn-light'>${langs.changeTemplates}</button>
</div>`
});
$('#font-family').on('change', function() {
var font = $(this).val();
var string_font = "'" + font + "'";
editor.CssComposer.setRule('#resumecv-layout', {
'font-family': string_font
});
});
// End Font family setup
// All Button panel
$("#save-builder").on("click", function(e) {
editor.store(function(res) {
var html = "";
if ($.isEmptyObject(res.error)) {
html = '<i class="fa fa-check-circle text-success"></i><small> ' + res.success + '</smal>';
} else {
html = '<i class="fa fa-times-circle text-error"></i><small> ' + res.error + '</smal>';
}
Swal.fire({
position: 'top-end',
timer: 3000,
toast: true,
html: html,
showConfirmButton: false,
});
});
});
$("#back-button").on("click", function(e) {
window.location.href = back_button_url;
});
// End all button panel event
//Change templates event
$('#change_templates').on('click', function() {
modal.style.display = "block";
});
$('.card-template').on('click', function() {
var templateid = $(this).attr("data-templateid");
if (templateid) {
$.ajax({
type: "POST",
url: url_load_template + "/" + templateid,
data: {
templateid: templateid,
"_token": _token
},
beforeSend: function() {
$('#loadingMessage').css('display', 'block');
},
success: function(response) {
editor.setComponents(response.content);
editor.setStyle(response.style);
$('#loadingMessage').css('display', 'none');
modal.style.display = "none";
}
});
}
});
// End Change templates event
// Upload image
editor.on('asset:remove', (response) => {
var src = response.get('src');
var data = {
_token: _token,
image_src: src
};
$.ajax({
url: url_delete_image,
type: 'POST',
data: data,
});
});
editor.on('asset:upload:response', (response) => {
if (response.error !== undefined) {
Swal.fire({
icon: 'error',
title: 'Error',
html: response.error,
});
} else {
editor.AssetManager.add(response);
}
});
// End upload image
});
// End Editor load
editor.on('storage:end:load', (e) => {
$('#loadingMessage').css('display', 'none');
});
// Change template event
var modal = document.getElementById("myModal");
$('span.close').on('click', function() {
modal.style.display = "none";
});
window.onclick = function(event) {
if (event.target == modal)
modal.style.display = "none";
}
if ($(window).width() <= 768) {
$('#loadingMessage').css('display', 'none');
$('#mobileAlert').css('display', 'block');
}
// End Change template
})(jQuery); // End of use strict