Skip to content

Commit

Permalink
2.4.1
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex-D committed Oct 19, 2016
1 parent f3570b6 commit 0e7b619
Show file tree
Hide file tree
Showing 12 changed files with 248 additions and 7 deletions.
8 changes: 8 additions & 0 deletions dist/langs/bg.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

179 changes: 179 additions & 0 deletions dist/plugins/cleanpaste/trumbowyg.cleanpaste.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@
/* ===========================================================
* trumbowyg.cleanpaste.js v1.0
* Font Clean paste plugin for Trumbowyg
* http://alex-d.github.com/Trumbowyg
* ===========================================================
* Author : Eric Radin
*/

/**
* This plugin will perform a "cleaning" on any paste, in particular
* it will clean pasted content of microsoft word document tags and classes.
*/
(function ($) {
'use strict';

function reverse(sentString) {
var theString = '';
for (var i = sentString.length - 1; i >= 0; i -= 1) {
theString += sentString.charAt(i);
}
return theString;
}

function checkValidTags(snippet) {
var theString = snippet;

// Replace uppercase element names with lowercase
theString = theString.replace(/<[^> ]*/g, function (match) {
return match.toLowerCase();
});

// Replace uppercase attribute names with lowercase
theString = theString.replace(/<[^>]*>/g, function (match) {
match = match.replace(/ [^=]+=/g, function (match2) {
return match2.toLowerCase();
});
return match;
});

// Put quotes around unquoted attributes
theString = theString.replace(/<[^>]*>/g, function (match) {
match = match.replace(/( [^=]+=)([^"][^ >]*)/g, '$1\"$2\"');
return match;
});

return theString;
}

function cleanIt(htmlBefore, htmlAfter) {
var matchedHead = '';
var matchedTail = '';
var afterStart;
var afterFinish;
var newSnippet;

// we need to extract the inserted block
for (afterStart = 0; htmlAfter.charAt(afterStart) === htmlBefore.charAt(afterStart); afterStart += 1) {
matchedHead += htmlAfter.charAt(afterStart);
}

// If afterStart is inside a HTML tag, move to opening brace of tag
for (var i = afterStart; i >= 0; i -= 1) {
if (htmlBefore.charAt(i) === '<') {
afterStart = i;
matchedHead = htmlBefore.substring(0, afterStart);
break;
} else if (htmlBefore.charAt(i) === '>') {
break;
}
}

// now reverse string and work from the end in
htmlAfter = reverse(htmlAfter);
htmlBefore = reverse(htmlBefore);

// Find end of both strings that matches
for (afterFinish = 0; htmlAfter.charAt(afterFinish) === htmlBefore.charAt(afterFinish); afterFinish += 1) {
matchedTail += htmlAfter.charAt(afterFinish);
}

// If afterFinish is inside a HTML tag, move to closing brace of tag
for (var j = afterFinish; j >= 0; j -= 1) {
if (htmlBefore.charAt(j) === '>') {
afterFinish = j;
matchedTail = htmlBefore.substring(0, afterFinish);
break;
} else if (htmlBefore.charAt(j) === '<') {
break;
}
}

matchedTail = reverse(matchedTail);

// If there's no difference in pasted content
if (afterStart === (htmlAfter.length - afterFinish)) {
return false;
}

htmlAfter = reverse(htmlAfter);
newSnippet = htmlAfter.substring(afterStart, htmlAfter.length - afterFinish);

// first make sure all tags and attributes are made valid
newSnippet = checkValidTags(newSnippet);

// Replace opening bold tags with strong
newSnippet = newSnippet.replace(/<b(\s+|>)/g, '<strong$1');
// Replace closing bold tags with closing strong
newSnippet = newSnippet.replace(/<\/b(\s+|>)/g, '</strong$1');

// Replace italic tags with em
newSnippet = newSnippet.replace(/<i(\s+|>)/g, '<em$1');
// Replace closing italic tags with closing em
newSnippet = newSnippet.replace(/<\/i(\s+|>)/g, '</em$1');

// strip out comments -cgCraft
newSnippet = newSnippet.replace(/<!(?:--[\s\S]*?--\s*)?>\s*/g, '');

// strip out &nbsp; -cgCraft
newSnippet = newSnippet.replace(/&nbsp;/gi, ' ');
// strip out extra spaces -cgCraft
newSnippet = newSnippet.replace(/ <\//gi, '</');

while (newSnippet.indexOf(' ') !== -1) {
var anArray = newSnippet.split(' ');
newSnippet = anArray.join(' ');
}

// strip &nbsp; -cgCraft
newSnippet = newSnippet.replace(/^\s*|\s*$/g, '');

// Strip out unaccepted attributes
newSnippet = newSnippet.replace(/<[^>]*>/g, function (match) {
match = match.replace(/ ([^=]+)="[^"]*"/g, function (match2, attributeName) {
if (['alt', 'href', 'src', 'title'].indexOf(attributeName) !== -1) {
return match2;
}
return '';
});
return match;
});

// Final cleanout for MS Word crud
newSnippet = newSnippet.replace(/<\?xml[^>]*>/g, '');
newSnippet = newSnippet.replace(/<[^ >]+:[^>]*>/g, '');
newSnippet = newSnippet.replace(/<\/[^ >]+:[^>]*>/g, '');

// remove unwanted tags
newSnippet = newSnippet.replace(/<(div|span|style|meta|link){1}.*?>/gi, '');

htmlAfter = matchedHead + newSnippet + matchedTail;
return htmlAfter;
}

// clean editor
// this will clean the inserted contents
// it does a compare, before and after paste to determine the
// pasted contents
$.extend(true, $.trumbowyg, {
plugins: {
cleanPaste: {
init: function (trumbowyg) {
trumbowyg.pasteHandlers.push(function () {
try {
var contentBefore = trumbowyg.$ed.html();
setTimeout(function () {
var contentAfter = trumbowyg.$ed.html();
contentAfter = cleanIt(contentBefore, contentAfter);
trumbowyg.$ed.html(contentAfter);
}, 0);
} catch (c) {
}
});
}
}
}
});
})(jQuery);


1 change: 1 addition & 0 deletions dist/plugins/cleanpaste/trumbowyg.cleanpaste.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/plugins/colors/ui/sass/trumbowyg.colors.scss
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* Trumbowyg v2.4.0 - A lightweight WYSIWYG editor
* Trumbowyg v2.4.1 - A lightweight WYSIWYG editor
* Colors plugin stylesheet for Trumbowyg editor
* ------------------------
* @link http://alex-d.github.io/Trumbowyg
Expand Down
2 changes: 1 addition & 1 deletion dist/plugins/colors/ui/trumbowyg.colors.css
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* Trumbowyg v2.4.0 - A lightweight WYSIWYG editor
* Trumbowyg v2.4.1 - A lightweight WYSIWYG editor
* Colors plugin stylesheet for Trumbowyg editor
* ------------------------
* @link http://alex-d.github.io/Trumbowyg
Expand Down
2 changes: 1 addition & 1 deletion dist/plugins/colors/ui/trumbowyg.colors.min.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

52 changes: 52 additions & 0 deletions dist/plugins/template/trumbowyg.template.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
(function($) {
'use strict';

// Adds the language variables
$.extend(true, $.trumbowyg, {
langs: {
en: {
template: 'Template'
},
nl: {
template: 'Sjabloon'
}
}
});

// Adds the extra button definition
$.extend(true, $.trumbowyg, {
plugins: {
template: {
shouldInit: function(trumbowyg) {
return trumbowyg.o.plugins.hasOwnProperty('templates');
},
init: function(trumbowyg) {
trumbowyg.addBtnDef('template', {
dropdown: templateSelector(trumbowyg),
hasIcon: false,
text: trumbowyg.lang.template
});
}
}
}
});

// Creates the template-selector dropdown.
function templateSelector(trumbowyg) {
var available = trumbowyg.o.plugins.templates;
var templates = [];

$.each(available, function(index, template) {
trumbowyg.addBtnDef('template_' + index, {
fn: function(){
trumbowyg.html(template.html);
},
hasIcon: false,
title: template.name
});
templates.push('template_' + index);
});

return templates;
}
})(jQuery);
1 change: 1 addition & 0 deletions dist/plugins/template/trumbowyg.template.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/ui/icons.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion dist/ui/sass/trumbowyg.scss
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* Trumbowyg v2.4.0 - A lightweight WYSIWYG editor
* Trumbowyg v2.4.1 - A lightweight WYSIWYG editor
* Default stylesheet for Trumbowyg editor
* ------------------------
* @link http://alex-d.github.io/Trumbowyg
Expand Down
2 changes: 1 addition & 1 deletion dist/ui/trumbowyg.css
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* Trumbowyg v2.4.0 - A lightweight WYSIWYG editor
* Trumbowyg v2.4.1 - A lightweight WYSIWYG editor
* Default stylesheet for Trumbowyg editor
* ------------------------
* @link http://alex-d.github.io/Trumbowyg
Expand Down
Loading

0 comments on commit 0e7b619

Please sign in to comment.