Enabled setting raw HTML for email signature

This commit is contained in:
Hillel Coren 2017-10-17 17:10:54 +03:00
parent b7ed5e98af
commit 4c1402de4a
5 changed files with 78 additions and 39 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1289,3 +1289,35 @@ function brewerColor(number) {
return colors[number];
}
// https://gist.github.com/sente/1083506
function formatXml(xml) {
var formatted = '';
var reg = /(>)(<)(\/*)/g;
xml = xml.replace(reg, '$1\r\n$2$3');
var pad = 0;
jQuery.each(xml.split('\r\n'), function(index, node) {
var indent = 0;
if (node.match( /.+<\/\w[^>]*>$/ )) {
indent = 0;
} else if (node.match( /^<\/\w/ )) {
if (pad != 0) {
pad -= 1;
}
} else if (node.match( /^<\w[^>]*[^\/]>.*$/ )) {
indent = 1;
} else {
indent = 0;
}
var padding = '';
for (var i = 0; i < pad; i++) {
padding += ' ';
}
formatted += padding + node + '\r\n';
pad += indent;
});
return formatted;
}

View File

@ -96,6 +96,9 @@
<div class="panel-body">
{!! Former::textarea('email_footer')->style('display:none')->raw() !!}
<div id="signatureEditor" class="form-control" style="min-height:160px" onclick="focusEditor()"></div>
<div class="pull-right" style="padding-top:10px;text-align:right">
{!! Button::normal(trans('texts.raw'))->withAttributes(['onclick' => 'showRaw()'])->small() !!}
</div>
@include('partials/quill_toolbar', ['name' => 'signature'])
</div>
</div>
@ -106,6 +109,30 @@
</center>
@endif
<div class="modal fade" id="rawModal" tabindex="-1" role="dialog" aria-labelledby="rawModalLabel" aria-hidden="true">
<div class="modal-dialog" style="width:800px">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title" id="rawModalLabel">{{ trans('texts.raw_html') }}</h4>
</div>
<div class="container" style="width: 100%; padding-bottom: 0px !important">
<div class="panel panel-default">
<div class="modal-body">
<textarea id="raw-textarea" rows="20" style="width:100%"></textarea>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{ trans('texts.close') }}</button>
<button type="button" onclick="updateRaw()" class="btn btn-success" data-dismiss="modal">{{ trans('texts.update') }}</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="designHelpModal" tabindex="-1" role="dialog" aria-labelledby="designHelpModalLabel" aria-hidden="true">
<div class="modal-dialog" style="min-width:150px">
<div class="modal-content">
@ -171,6 +198,18 @@
editor.focus();
}
function showRaw() {
var signature = $('#email_footer').val();
$('#raw-textarea').val(formatXml(signature));
$('#rawModal').modal('show');
}
function updateRaw() {
var value = $('#raw-textarea').val();
editor.setHTML(value);
$('#email_footer').val(value);
}
$('.email_design_id .input-group-addon').click(function() {
$('#designHelpModal').modal('show');
});

View File

@ -237,38 +237,6 @@
refreshPreview();
}
// https://gist.github.com/sente/1083506
function formatXml(xml) {
var formatted = '';
var reg = /(>)(<)(\/*)/g;
xml = xml.replace(reg, '$1\r\n$2$3');
var pad = 0;
jQuery.each(xml.split('\r\n'), function(index, node) {
var indent = 0;
if (node.match( /.+<\/\w[^>]*>$/ )) {
indent = 0;
} else if (node.match( /^<\/\w/ )) {
if (pad != 0) {
pad -= 1;
}
} else if (node.match( /^<\w[^>]*[^\/]>.*$/ )) {
indent = 1;
} else {
indent = 0;
}
var padding = '';
for (var i = 0; i < pad; i++) {
padding += ' ';
}
formatted += padding + node + '\r\n';
pad += indent;
});
return formatted;
}
</script>
@include('partials.email_templates')