var wysihtml5ParserRules = { /** * CSS Class white-list * Following css classes won't be removed when parsed by the wysihtml5 html parser */ "classes": { "wysiwyg-clear-both": 1, "wysiwyg-clear-left": 1, "wysiwyg-clear-right": 1, "wysiwyg-color-aqua": 1, "wysiwyg-color-black": 1, "wysiwyg-color-blue": 1, "wysiwyg-color-fuchsia": 1, "wysiwyg-color-gray": 1, "wysiwyg-color-green": 1, "wysiwyg-color-lime": 1, "wysiwyg-color-maroon": 1, "wysiwyg-color-navy": 1, "wysiwyg-color-olive": 1, "wysiwyg-color-purple": 1, "wysiwyg-color-red": 1, "wysiwyg-color-silver": 1, "wysiwyg-color-teal": 1, "wysiwyg-color-white": 1, "wysiwyg-color-yellow": 1, "wysiwyg-float-left": 1, "wysiwyg-float-right": 1, "wysiwyg-font-size-large": 1, "wysiwyg-font-size-larger": 1, "wysiwyg-font-size-medium": 1, "wysiwyg-font-size-small": 1, "wysiwyg-font-size-smaller": 1, "wysiwyg-font-size-x-large": 1, "wysiwyg-font-size-x-small": 1, "wysiwyg-font-size-xx-large": 1, "wysiwyg-font-size-xx-small": 1, "wysiwyg-text-align-center": 1, "wysiwyg-text-align-justify": 1, "wysiwyg-text-align-left": 1, "wysiwyg-text-align-right": 1, "MsoNormal": 0 }, /** * Tag list * * Following options are available: * * - add_class: converts and deletes the given HTML4 attribute (align, clear, ...) via the given method to a css class * The following methods are implemented in wysihtml5.dom.parse: * - align_text: converts align attribute values (right/left/center/justify) to their corresponding css class "wysiwyg-text-align-*")
foo
... becomes ...class="wysiwyg-text-align-center">foo
* - clear_br: converts clear attribute values left/right/all/both to their corresponding css class "wysiwyg-clear-*" *" + $div.html() + "
"); // } // // var v = $div.html(); // ngModel.$setViewValue(v); ngModel.$setViewValue($(element).val()); var $html = $('{@$1@}
$2');
html = html.replace(/{@([a-z0-9_]+)@}( *)<\/b><\/span>/g, '{@$1@}
$2');
html = html.replace(/{@([a-z0-9_]+)@}( *)<\/i><\/span>/g, '{@$1@}
$2');
html = html.replace(/{@([a-z0-9_]+)@}( *){@$1@}
$2<\/code>/g, '');
html = html.replace(/{@([a-z0-9_]+)@}( *)<\/span>/g, '{@$1@}
$2');
html = html.replace(/{@([a-z0-9_]+)@}( *)<\/b><\/span>/g, '{@$1@}
$2');
html = html.replace(/{@([a-z0-9_]+)@}( *)<\/i><\/span>/g, '{@$1@}
$2');
html = html.replace(/{@([a-z0-9_]+)@}( *)
<\/span>/g, '{@$1@}
$2
');
html = html.replace(/<\/code>/g, '');
return html;
},
parserRules: {
classes: {
"wysiwyg-text-align-left": 1,
"wysiwyg-text-align-center": 1,
"wysiwyg-text-align-right": 1
},
tags: {
"div": 1,
"code": {
check_attributes: {
src: true,
title: true,
width: function () {
return 100;
}
}
}
}
}
};
if (angular.isDefined(attrs.ngVariables)) {
angular.merge(opt, {
'toolbar': {
'variables': true
},
'customTemplates': {
'variables': function (data) {
var html = '' +
' ' +
' ' +
' Zmienne' +
' ' +
' ' +
' ' +
' ';
return $compile(html)($scope);
}
}
});
}
angular.merge(opt, {
'toolbar': {
'youtube': true
},
'customTemplates': {
'youtube': function (data) {
var html = '"';
return $compile(html)($scope);
}
}
});
var textarea = element.wysihtml5(opt);
var editor = textarea.data('wysihtml5').editor;
ngModel.$render = function () {
if (angular.isUndefined(ngModel.$viewValue)) {
var $html = $('');
} else {
var $html = $('' + ngModel.$viewValue + '');
}
$html
.contents()
.filter(function () {
return (this.nodeType === 8);
}).remove();
$html.find('.MsoNormal').removeClass('MsoNormal');
$html.find('*[style]').removeAttr('style');
$html.find('*[times]').removeAttr('times');
$html.find('*[new]').removeAttr('new');
$html.find('*[class=""]').removeAttr('class');
ngModel.$viewValue = $html.html();
textarea.html(ngModel.$viewValue);
editor.setValue(ngModel.$viewValue);
};
}
};
});
angular.element(document).ready(function () {
(function (wysihtml5) {
var CLASS_NAME_LEFT = "wysiwyg-text-float-left",
CLASS_NAME_RIGHT = "wysiwyg-text-float-right",
REG_EXP = /wysiwyg-text-float-[0-9a-z]+/g;
wysihtml5.commands.floatLeft = {
exec: function (composer, command) {
return wysihtml5.commands.formatBlock.exec(composer, "formatBlock", null, CLASS_NAME_LEFT, REG_EXP);
},
state: function (composer, command) {
return wysihtml5.commands.formatBlock.state(composer, "formatBlock", null, CLASS_NAME_LEFT, REG_EXP);
}
};
wysihtml5.commands.floatRight = {
exec: function (composer, command) {
return wysihtml5.commands.formatBlock.exec(composer, "formatBlock", null, CLASS_NAME_RIGHT, REG_EXP);
},
state: function (composer, command) {
return wysihtml5.commands.formatBlock.state(composer, "formatBlock", null, CLASS_NAME_RIGHT, REG_EXP);
}
};
wysihtml5.commands.customInsertYoutube = {
exec: function (composer, command, value) {
$('body').append('\n\
\n\
\n\
\n\
\n\
');
$('#myModal').modal('show');
$('#myModal').on('hidden.bs.modal', function () {
$('#modalButton, #myModal, .modal-backdrop.fade.in').remove();
});
$('#applyVideo').click(function () {
if ($('#videolink').val().length) {
var videoid = $('#videolink').val().split('v=')[1];
if (videoid) {
var ampersandPosition = videoid.indexOf('&');
if (ampersandPosition !== -1) {
videoid = videoid.substring(0, ampersandPosition);
}
composer.commands.editor.toolbar.execCommand('insertHTML', '');
composer.commands.editor.toolbar.execCommand('insertHTML', '
');
$('#myModal').modal('hide');
} else {
$('#videolink').parent().addClass('has-error');
}
} else {
$('#videolink').parent().addClass('has-error');
}
});
}
};
})(wysihtml5);
delete $.fn.wysihtml5.defaultOptions.shortcuts[83];
angular.element.extend(true, $.fn.wysihtml5.defaultOptions, {
stylesheets: [
// "/plugins/bower/jquery-ui/themes/base/all.css",
// "/plugins/bower/jquery-ui/themes/base/jquery.ui.all.css",
"/_module/admin/assets/css/editor.css"
],
locale: 'pl-PL',
toolbar: {
'float': true,
'justify': true,
'html': true,
'remove-format': true,
'emphasis': {
small: false
}
},
parserRules: wysihtml5ParserRules,
parser: function (html) {
var $html = $('' + html + '');
$html
.contents()
.filter(function () {
return (this.nodeType === 8);
}).remove();
// .each(function () {
// console.log('usówam', this.nodeType, this);
// $(this).remove();
// });
$html.find('.MsoNormal').removeClass('MsoNormal');
$html.find('*[style]').removeAttr('style');
$html.find('*[times]').removeAttr('times');
$html.find('*[new]').removeAttr('new');
$html.find('*[class=""]').removeAttr('class');
html = $html.html();
return html;
},
customTemplates: {
'link': function (data) {
return '' +
' ' +
' ' +
' ' +
' ' +
' ' +
' ' +
' ' +
' ' +
' ';
},
'html': function (data) {
return '' +
' ' +
' ' +
' ' +
' ';
},
'blockquote': function (data) {
return '' +
' ' +
' ' +
' ' +
' ';
},
'font-styles': function (data) {
return '' +
' ' +
' ' +
' ' + data.locale.font_styles.normal + '' +
' ' +
' ' +
' ' +
' ';
},
'lists': function (data) {
return '' +
' ' +
' ';
},
'emphasis': function (data) {
return '' +
' ' +
' ';
},
'float': function (data) {
return '' +
' ' +
' ' +
' ' +
' ' +
' ' +
' ' +
' ' +
' ' +
' ';
},
'justify': function (data) {
return '' +
' ' +
' ';
},
'remove-format': function (data) {
return '' +
' ' +
' ' +
' ' +
' ';
},
'image': function (data) {
return '' +
' ' +
' ' +
' ' +
' ';
}
}
});
});