scratch
/js/trumbowyg/plugins/base64/trumbowyg.base64.js |
---|
@@ -0,0 +1,109 @@ |
/* =========================================================== |
* trumbowyg.base64.js v1.0 |
* Base64 plugin for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Cyril Biencourt (lizardK) |
*/ |
(function ($) { |
'use strict'; |
var isSupported = function () { |
return typeof FileReader !== 'undefined'; |
}; |
var isValidImage = function (type) { |
return /^data:image\/[a-z]?/i.test(type); |
}; |
$.extend(true, $.trumbowyg, { |
langs: { |
// jshint camelcase:false |
en: { |
base64: 'Image as base64', |
file: 'File', |
errFileReaderNotSupported: 'FileReader is not supported by your browser.', |
errInvalidImage: 'Invalid image file.' |
}, |
fr: { |
base64: 'Image en base64', |
file: 'Fichier' |
}, |
cs: { |
base64: 'Vložit obrázek', |
file: 'Soubor' |
}, |
zh_cn: { |
base64: '图片(Base64编码)', |
file: '文件' |
}, |
nl: { |
errFileReaderNotSupported: 'Uw browser ondersteunt deze functionaliteit niet.', |
errInvalidImage: 'De gekozen afbeelding is ongeldig.' |
} |
}, |
// jshint camelcase:true |
plugins: { |
base64: { |
shouldInit: isSupported, |
init: function (trumbowyg) { |
var btnDef = { |
isSupported: isSupported, |
fn: function () { |
trumbowyg.saveRange(); |
var file; |
var $modal = trumbowyg.openModalInsert( |
// Title |
trumbowyg.lang.base64, |
// Fields |
{ |
file: { |
type: 'file', |
required: true, |
attributes: { |
accept: 'image/*' |
} |
}, |
alt: { |
label: 'description', |
value: trumbowyg.getRangeText() |
} |
}, |
// Callback |
function (values) { |
var fReader = new FileReader(); |
fReader.onloadend = function (e) { |
if (isValidImage(e.target.result)) { |
trumbowyg.execCmd('insertImage', fReader.result); |
$(['img[src="', fReader.result, '"]:not([alt])'].join(''), trumbowyg.$box).attr('alt', values.alt); |
trumbowyg.closeModal(); |
} else { |
trumbowyg.addErrorOnModalField( |
$('input[type=file]', $modal), |
trumbowyg.lang.errInvalidImage |
); |
} |
}; |
fReader.readAsDataURL(file); |
} |
); |
$('input[type=file]').on('change', function (e) { |
file = e.target.files[0]; |
}); |
} |
}; |
trumbowyg.addBtnDef('base64', btnDef); |
} |
} |
} |
}); |
})(jQuery); |
/js/trumbowyg/plugins/base64/trumbowyg.base64.min.js |
---|
@@ -0,0 +1 @@ |
!function(e){"use strict";var a=function(){return"undefined"!=typeof FileReader},t=function(e){return/^data:image\/[a-z]?/i.test(e)};e.extend(!0,e.trumbowyg,{langs:{en:{base64:"Image as base64",file:"File",errFileReaderNotSupported:"FileReader is not supported by your browser.",errInvalidImage:"Invalid image file."},fr:{base64:"Image en base64",file:"Fichier"},cs:{base64:"Vložit obrázek",file:"Soubor"},zh_cn:{base64:"图片(Base64编码)",file:"文件"},nl:{errFileReaderNotSupported:"Uw browser ondersteunt deze functionaliteit niet.",errInvalidImage:"De gekozen afbeelding is ongeldig."}},plugins:{base64:{shouldInit:a,init:function(n){var i={isSupported:a,fn:function(){n.saveRange();var a,i=n.openModalInsert(n.lang.base64,{file:{type:"file",required:!0,attributes:{accept:"image/*"}},alt:{label:"description",value:n.getRangeText()}},function(r){var l=new FileReader;l.onloadend=function(a){t(a.target.result)?(n.execCmd("insertImage",l.result),e(['img[src="',l.result,'"]:not([alt])'].join(""),n.$box).attr("alt",r.alt),n.closeModal()):n.addErrorOnModalField(e("input[type=file]",i),n.lang.errInvalidImage)},l.readAsDataURL(a)});e("input[type=file]").on("change",function(e){a=e.target.files[0]})}};n.addBtnDef("base64",i)}}}})}(jQuery); |
/js/trumbowyg/plugins/cleanpaste/trumbowyg.cleanpaste.js |
---|
@@ -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 -cgCraft |
newSnippet = newSnippet.replace(/ /gi, ' '); |
// strip out extra spaces -cgCraft |
newSnippet = newSnippet.replace(/ <\//gi, '</'); |
while (newSnippet.indexOf(' ') !== -1) { |
var anArray = newSnippet.split(' '); |
newSnippet = anArray.join(' '); |
} |
// strip -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); |
/js/trumbowyg/plugins/cleanpaste/trumbowyg.cleanpaste.min.js |
---|
@@ -0,0 +1 @@ |
!function(r){"use strict";function e(r){for(var e="",t=r.length-1;t>=0;t-=1)e+=r.charAt(t);return e}function t(r){var e=r;return e=e.replace(/<[^> ]*/g,function(r){return r.toLowerCase()}),e=e.replace(/<[^>]*>/g,function(r){return r=r.replace(/ [^=]+=/g,function(r){return r.toLowerCase()})}),e=e.replace(/<[^>]*>/g,function(r){return r=r.replace(/( [^=]+=)([^"][^ >]*)/g,'$1"$2"')})}function n(r,n){var a,c,i,l="",s="";for(a=0;n.charAt(a)===r.charAt(a);a+=1)l+=n.charAt(a);for(var u=a;u>=0;u-=1){if("<"===r.charAt(u)){a=u,l=r.substring(0,a);break}if(">"===r.charAt(u))break}for(n=e(n),r=e(r),c=0;n.charAt(c)===r.charAt(c);c+=1)s+=n.charAt(c);for(var g=c;g>=0;g-=1){if(">"===r.charAt(g)){c=g,s=r.substring(0,c);break}if("<"===r.charAt(g))break}if(s=e(s),a===n.length-c)return!1;for(n=e(n),i=n.substring(a,n.length-c),i=t(i),i=i.replace(/<b(\s+|>)/g,"<strong$1"),i=i.replace(/<\/b(\s+|>)/g,"</strong$1"),i=i.replace(/<i(\s+|>)/g,"<em$1"),i=i.replace(/<\/i(\s+|>)/g,"</em$1"),i=i.replace(/<!(?:--[\s\S]*?--\s*)?>\s*/g,""),i=i.replace(/ /gi," "),i=i.replace(/ <\//gi,"</");-1!==i.indexOf(" ");){var o=i.split(" ");i=o.join(" ")}return i=i.replace(/^\s*|\s*$/g,""),i=i.replace(/<[^>]*>/g,function(r){return r=r.replace(/ ([^=]+)="[^"]*"/g,function(r,e){return-1!==["alt","href","src","title"].indexOf(e)?r:""})}),i=i.replace(/<\?xml[^>]*>/g,""),i=i.replace(/<[^ >]+:[^>]*>/g,""),i=i.replace(/<\/[^ >]+:[^>]*>/g,""),i=i.replace(/<(div|span|style|meta|link){1}.*?>/gi,""),n=l+i+s}r.extend(!0,r.trumbowyg,{plugins:{cleanPaste:{init:function(r){r.pasteHandlers.push(function(){try{var e=r.$ed.html();setTimeout(function(){var t=r.$ed.html();t=n(e,t),r.$ed.html(t)},0)}catch(t){}})}}}})}(jQuery); |
/js/trumbowyg/plugins/colors/trumbowyg.colors.js |
---|
@@ -0,0 +1,168 @@ |
/* =========================================================== |
* trumbowyg.colors.js v1.2 |
* Colors picker plugin for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Alexandre Demode (Alex-D) |
* Twitter : @AlexandreDemode |
* Website : alex-d.fr |
*/ |
(function ($) { |
'use strict'; |
$.extend(true, $.trumbowyg, { |
langs: { |
// jshint camelcase:false |
cs: { |
foreColor: 'Barva textu', |
backColor: 'Barva pozadí' |
}, |
en: { |
foreColor: 'Text color', |
backColor: 'Background color' |
}, |
fr: { |
foreColor: 'Couleur du texte', |
backColor: 'Couleur de fond' |
}, |
sk: { |
foreColor: 'Farba textu', |
backColor: 'Farba pozadia' |
}, |
zh_cn: { |
foreColor: '文字颜色', |
backColor: '背景颜色' |
} |
} |
}); |
// jshint camelcase:true |
function hex(x) { |
return ('0' + parseInt(x).toString(16)).slice(-2); |
} |
function colorToHex(rgb) { |
if (rgb.search('rgb') === -1) { |
return rgb.replace('#', ''); |
} else if (rgb === 'rgba(0, 0, 0, 0)') { |
return 'transparent'; |
} else { |
rgb = rgb.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+))?\)$/); |
return hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]); |
} |
} |
function colorTagHandler(element, trumbowyg) { |
var tags = []; |
if(!element.style){ |
return tags; |
} |
// background color |
if (element.style.backgroundColor !== '') { |
var backColor = colorToHex(element.style.backgroundColor); |
if (trumbowyg.o.plugins.colors.colorList.indexOf(backColor) >= 0) { |
tags.push('backColor' + backColor); |
} else { |
tags.push('backColorFree'); |
} |
} |
// text color |
var foreColor; |
if (element.style.color !== '') { |
foreColor = colorToHex(element.style.color); |
} else if (element.hasAttribute('color')) { |
foreColor = colorToHex(element.getAttribute('color')); |
} |
if (foreColor) { |
if (trumbowyg.o.plugins.colors.colorList.indexOf(foreColor) >= 0) { |
tags.push('foreColor' + foreColor); |
} else { |
tags.push('foreColorFree'); |
} |
} |
return tags; |
} |
var defaultOptions = { |
colorList: ['ffffff', '000000', 'eeece1', '1f497d', '4f81bd', 'c0504d', '9bbb59', '8064a2', '4bacc6', 'f79646', 'ffff00', 'f2f2f2', '7f7f7f', 'ddd9c3', 'c6d9f0', 'dbe5f1', 'f2dcdb', 'ebf1dd', 'e5e0ec', 'dbeef3', 'fdeada', 'fff2ca', 'd8d8d8', '595959', 'c4bd97', '8db3e2', 'b8cce4', 'e5b9b7', 'd7e3bc', 'ccc1d9', 'b7dde8', 'fbd5b5', 'ffe694', 'bfbfbf', '3f3f3f', '938953', '548dd4', '95b3d7', 'd99694', 'c3d69b', 'b2a2c7', 'b7dde8', 'fac08f', 'f2c314', 'a5a5a5', '262626', '494429', '17365d', '366092', '953734', '76923c', '5f497a', '92cddc', 'e36c09', 'c09100', '7f7f7f', '0c0c0c', '1d1b10', '0f243e', '244061', '632423', '4f6128', '3f3151', '31859b', '974806', '7f6000'] |
}; |
// Add all colors in two dropdowns |
$.extend(true, $.trumbowyg, { |
plugins: { |
color: { |
init: function (trumbowyg) { |
trumbowyg.o.plugins.colors = trumbowyg.o.plugins.colors || defaultOptions; |
var foreColorBtnDef = { |
dropdown: buildDropdown('foreColor', trumbowyg) |
}, |
backColorBtnDef = { |
dropdown: buildDropdown('backColor', trumbowyg) |
}; |
trumbowyg.addBtnDef('foreColor', foreColorBtnDef); |
trumbowyg.addBtnDef('backColor', backColorBtnDef); |
}, |
tagHandler: colorTagHandler |
} |
} |
}); |
function buildDropdown(fn, trumbowyg) { |
var dropdown = []; |
$.each(trumbowyg.o.plugins.colors.colorList, function (i, color) { |
var btn = fn + color, |
btnDef = { |
fn: fn, |
forceCss: true, |
param: '#' + color, |
style: 'background-color: #' + color + ';' |
}; |
trumbowyg.addBtnDef(btn, btnDef); |
dropdown.push(btn); |
}); |
var removeColorButtonName = fn + 'Remove', |
removeColorBtnDef = { |
fn: 'removeFormat', |
param: fn, |
style: 'background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAG0lEQVQIW2NkQAAfEJMRmwBYhoGBYQtMBYoAADziAp0jtJTgAAAAAElFTkSuQmCC);' |
}; |
trumbowyg.addBtnDef(removeColorButtonName, removeColorBtnDef); |
dropdown.push(removeColorButtonName); |
// add free color btn |
var freeColorButtonName = fn + 'Free', |
freeColorBtnDef = { |
fn: function () { |
trumbowyg.openModalInsert(trumbowyg.lang[fn], |
{ |
color: { |
label: fn, |
value: '#FFFFFF' |
} |
}, |
// callback |
function (values) { |
trumbowyg.execCmd(fn, values.color); |
return true; |
} |
); |
}, |
text: '#', |
// style adjust for displaying the text |
style: 'text-indent: 0;line-height: 20px;padding: 0 5px;' |
}; |
trumbowyg.addBtnDef(freeColorButtonName, freeColorBtnDef); |
dropdown.push(freeColorButtonName); |
return dropdown; |
} |
})(jQuery); |
/js/trumbowyg/plugins/colors/trumbowyg.colors.min.js |
---|
@@ -0,0 +1 @@ |
!function(o){"use strict";function r(o){return("0"+parseInt(o).toString(16)).slice(-2)}function e(o){return-1===o.search("rgb")?o.replace("#",""):"rgba(0, 0, 0, 0)"===o?"transparent":(o=o.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+))?\)$/),r(o[1])+r(o[2])+r(o[3]))}function f(o,r){var f=[];if(!o.style)return f;if(""!==o.style.backgroundColor){var c=e(o.style.backgroundColor);r.o.plugins.colors.colorList.indexOf(c)>=0?f.push("backColor"+c):f.push("backColorFree")}var a;return""!==o.style.color?a=e(o.style.color):o.hasAttribute("color")&&(a=e(o.getAttribute("color"))),a&&(r.o.plugins.colors.colorList.indexOf(a)>=0?f.push("foreColor"+a):f.push("foreColorFree")),f}function c(r,e){var f=[];o.each(e.o.plugins.colors.colorList,function(o,c){var a=r+c,d={fn:r,forceCss:!0,param:"#"+c,style:"background-color: #"+c+";"};e.addBtnDef(a,d),f.push(a)});var c=r+"Remove",a={fn:"removeFormat",param:r,style:"background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAG0lEQVQIW2NkQAAfEJMRmwBYhoGBYQtMBYoAADziAp0jtJTgAAAAAElFTkSuQmCC);"};e.addBtnDef(c,a),f.push(c);var d=r+"Free",t={fn:function(){e.openModalInsert(e.lang[r],{color:{label:r,value:"#FFFFFF"}},function(o){return e.execCmd(r,o.color),!0})},text:"#",style:"text-indent: 0;line-height: 20px;padding: 0 5px;"};return e.addBtnDef(d,t),f.push(d),f}o.extend(!0,o.trumbowyg,{langs:{cs:{foreColor:"Barva textu",backColor:"Barva pozadí"},en:{foreColor:"Text color",backColor:"Background color"},fr:{foreColor:"Couleur du texte",backColor:"Couleur de fond"},sk:{foreColor:"Farba textu",backColor:"Farba pozadia"},zh_cn:{foreColor:"文字颜色",backColor:"背景颜色"}}});var a={colorList:["ffffff","000000","eeece1","1f497d","4f81bd","c0504d","9bbb59","8064a2","4bacc6","f79646","ffff00","f2f2f2","7f7f7f","ddd9c3","c6d9f0","dbe5f1","f2dcdb","ebf1dd","e5e0ec","dbeef3","fdeada","fff2ca","d8d8d8","595959","c4bd97","8db3e2","b8cce4","e5b9b7","d7e3bc","ccc1d9","b7dde8","fbd5b5","ffe694","bfbfbf","3f3f3f","938953","548dd4","95b3d7","d99694","c3d69b","b2a2c7","b7dde8","fac08f","f2c314","a5a5a5","262626","494429","17365d","366092","953734","76923c","5f497a","92cddc","e36c09","c09100","7f7f7f","0c0c0c","1d1b10","0f243e","244061","632423","4f6128","3f3151","31859b","974806","7f6000"]};o.extend(!0,o.trumbowyg,{plugins:{color:{init:function(o){o.o.plugins.colors=o.o.plugins.colors||a;var r={dropdown:c("foreColor",o)},e={dropdown:c("backColor",o)};o.addBtnDef("foreColor",r),o.addBtnDef("backColor",e)},tagHandler:f}}})}(jQuery); |
/js/trumbowyg/plugins/colors/ui/sass/trumbowyg.colors.scss |
---|
@@ -0,0 +1,49 @@ |
/** |
* Trumbowyg v2.5.1 - A lightweight WYSIWYG editor |
* Colors plugin stylesheet for Trumbowyg editor |
* ------------------------ |
* @link http://alex-d.github.io/Trumbowyg |
* @license MIT |
* @author Alexandre Demode (Alex-D) |
* Twitter : @AlexandreDemode |
* Website : alex-d.fr |
*/ |
.trumbowyg-dropdown-foreColor, |
.trumbowyg-dropdown-backColor { |
width: 276px; |
padding: 7px 5px; |
svg { |
display: none !important; |
} |
button { |
display: block; |
position: relative; |
float: left; |
text-indent: -9999px; |
height: 20px; |
width: 20px; |
border: 1px solid #333; |
padding: 0; |
margin: 2px; |
&:hover, |
&:focus { |
&::after { |
content: " "; |
display: block; |
position: absolute; |
top: -5px; |
left: -5px; |
height: 27px; |
width: 27px; |
background: inherit; |
border: 1px solid #FFF; |
box-shadow: #000 0 0 2px; |
z-index: 10; |
} |
} |
} |
} |
/js/trumbowyg/plugins/colors/ui/trumbowyg.colors.css |
---|
@@ -0,0 +1,43 @@ |
/** |
* Trumbowyg v2.5.1 - A lightweight WYSIWYG editor |
* Colors plugin stylesheet for Trumbowyg editor |
* ------------------------ |
* @link http://alex-d.github.io/Trumbowyg |
* @license MIT |
* @author Alexandre Demode (Alex-D) |
* Twitter : @AlexandreDemode |
* Website : alex-d.fr |
*/ |
.trumbowyg-dropdown-foreColor, |
.trumbowyg-dropdown-backColor { |
width: 276px; |
padding: 7px 5px; } |
.trumbowyg-dropdown-foreColor svg, |
.trumbowyg-dropdown-backColor svg { |
display: none !important; } |
.trumbowyg-dropdown-foreColor button, |
.trumbowyg-dropdown-backColor button { |
display: block; |
position: relative; |
float: left; |
text-indent: -9999px; |
height: 20px; |
width: 20px; |
border: 1px solid #333; |
padding: 0; |
margin: 2px; } |
.trumbowyg-dropdown-foreColor button:hover::after, .trumbowyg-dropdown-foreColor button:focus::after, |
.trumbowyg-dropdown-backColor button:hover::after, |
.trumbowyg-dropdown-backColor button:focus::after { |
content: " "; |
display: block; |
position: absolute; |
top: -5px; |
left: -5px; |
height: 27px; |
width: 27px; |
background: inherit; |
border: 1px solid #FFF; |
box-shadow: #000 0 0 2px; |
z-index: 10; } |
/js/trumbowyg/plugins/colors/ui/trumbowyg.colors.min.css |
---|
@@ -0,0 +1,2 @@ |
/** Trumbowyg v2.5.1 - A lightweight WYSIWYG editor - alex-d.github.io/Trumbowyg - License MIT - Author : Alexandre Demode (Alex-D) / alex-d.fr */ |
.trumbowyg-dropdown-backColor,.trumbowyg-dropdown-foreColor{width:276px;padding:7px 5px}.trumbowyg-dropdown-backColor svg,.trumbowyg-dropdown-foreColor svg{display:none!important}.trumbowyg-dropdown-backColor button,.trumbowyg-dropdown-foreColor button{display:block;position:relative;float:left;text-indent:-9999px;height:20px;width:20px;border:1px solid #333;padding:0;margin:2px}.trumbowyg-dropdown-backColor button:focus::after,.trumbowyg-dropdown-backColor button:hover::after,.trumbowyg-dropdown-foreColor button:focus::after,.trumbowyg-dropdown-foreColor button:hover::after{content:" ";display:block;position:absolute;top:-5px;left:-5px;height:27px;width:27px;background:inherit;border:1px solid #FFF;box-shadow:#000 0 0 2px;z-index:10} |
/js/trumbowyg/plugins/emoji/trumbowyg.emoji.js |
---|
@@ -0,0 +1,940 @@ |
/* =========================================================== |
* trumbowyg.emoji.js v0.1 |
* Emoji picker plugin for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Nicolas Pion |
* Twitter : @nicolas_pion |
*/ |
(function ($) { |
'use strict'; |
var defaultOptions = { |
emojiList: [ |
':bowtie:', |
':smile:', |
':laughing:', |
':blush:', |
':smiley:', |
':relaxed:', |
':smirk:', |
':heart_eyes:', |
':kissing_heart:', |
':kissing_closed_eyes:', |
':flushed:', |
':relieved:', |
':satisfied:', |
':grin:', |
':wink:', |
':stuck_out_tongue_winking_eye:', |
':stuck_out_tongue_closed_eyes:', |
':grinning:', |
':kissing:', |
':kissing_smiling_eyes:', |
':stuck_out_tongue:', |
':sleeping:', |
':worried:', |
':frowning:', |
':anguished:', |
':open_mouth:', |
':grimacing:', |
':confused:', |
':hushed:', |
':expressionless:', |
':unamused:', |
':sweat_smile:', |
':sweat:', |
':disappointed_relieved:', |
':weary:', |
':pensive:', |
':disappointed:', |
':confounded:', |
':fearful:', |
':cold_sweat:', |
':persevere:', |
':cry:', |
':sob:', |
':joy:', |
':astonished:', |
':scream:', |
':neckbeard:', |
':tired_face:', |
':angry:', |
':rage:', |
':triumph:', |
':sleepy:', |
':yum:', |
':mask:', |
':sunglasses:', |
':dizzy_face:', |
':imp:', |
':smiling_imp:', |
':neutral_face:', |
':no_mouth:', |
':innocent:', |
':alien:', |
':yellow_heart:', |
':blue_heart:', |
':purple_heart:', |
':heart:', |
':green_heart:', |
':broken_heart:', |
':heartbeat:', |
':heartpulse:', |
':two_hearts:', |
':revolving_hearts:', |
':cupid:', |
':sparkling_heart:', |
':sparkles:', |
':star:', |
':star2:', |
':dizzy:', |
':boom:', |
':collision:', |
':anger:', |
':exclamation:', |
':question:', |
':grey_exclamation:', |
':grey_question:', |
':zzz:', |
':dash:', |
':sweat_drops:', |
':notes:', |
':musical_note:', |
':fire:', |
':hankey:', |
':poop:', |
':shit:', |
':+1:', |
':thumbsup:', |
':-1:', |
':thumbsdown:', |
':ok_hand:', |
':punch:', |
':facepunch:', |
':fist:', |
':v:', |
':wave:', |
':hand:', |
':raised_hand:', |
':open_hands:', |
':point_up:', |
':point_down:', |
':point_left:', |
':point_right:', |
':raised_hands:', |
':pray:', |
':point_up_2:', |
':clap:', |
':muscle:', |
':metal:', |
':fu:', |
':runner:', |
':running:', |
':couple:', |
':family:', |
':two_men_holding_hands:', |
':two_women_holding_hands:', |
':dancer:', |
':dancers:', |
':ok_woman:', |
':no_good:', |
':information_desk_person:', |
':raising_hand:', |
':bride_with_veil:', |
':person_with_pouting_face:', |
':person_frowning:', |
':bow:', |
':couplekiss:', |
':couple_with_heart:', |
':massage:', |
':haircut:', |
':nail_care:', |
':boy:', |
':girl:', |
':woman:', |
':man:', |
':baby:', |
':older_woman:', |
':older_man:', |
':person_with_blond_hair:', |
':man_with_gua_pi_mao:', |
':man_with_turban:', |
':construction_worker:', |
':cop:', |
':angel:', |
':princess:', |
':smiley_cat:', |
':smile_cat:', |
':heart_eyes_cat:', |
':kissing_cat:', |
':smirk_cat:', |
':scream_cat:', |
':crying_cat_face:', |
':joy_cat:', |
':pouting_cat:', |
':japanese_ogre:', |
':japanese_goblin:', |
':see_no_evil:', |
':hear_no_evil:', |
':speak_no_evil:', |
':guardsman:', |
':skull:', |
':feet:', |
':lips:', |
':kiss:', |
':droplet:', |
':ear:', |
':eyes:', |
':nose:', |
':tongue:', |
':love_letter:', |
':bust_in_silhouette:', |
':busts_in_silhouette:', |
':speech_balloon:', |
':thought_balloon:', |
':feelsgood:', |
':finnadie:', |
':goberserk:', |
':godmode:', |
':hurtrealbad:', |
':rage1:', |
':rage2:', |
':rage3:', |
':rage4:', |
':suspect:', |
':trollface:', |
':sunny:', |
':umbrella:', |
':cloud:', |
':snowflake:', |
':snowman:', |
':zap:', |
':cyclone:', |
':foggy:', |
':ocean:', |
':cat:', |
':dog:', |
':mouse:', |
':hamster:', |
':rabbit:', |
':wolf:', |
':frog:', |
':tiger:', |
':koala:', |
':bear:', |
':pig:', |
':pig_nose:', |
':cow:', |
':boar:', |
':monkey_face:', |
':monkey:', |
':horse:', |
':racehorse:', |
':camel:', |
':sheep:', |
':elephant:', |
':panda_face:', |
':snake:', |
':bird:', |
':baby_chick:', |
':hatched_chick:', |
':hatching_chick:', |
':chicken:', |
':penguin:', |
':turtle:', |
':bug:', |
':honeybee:', |
':ant:', |
':beetle:', |
':snail:', |
':octopus:', |
':tropical_fish:', |
':fish:', |
':whale:', |
':whale2:', |
':dolphin:', |
':cow2:', |
':ram:', |
':rat:', |
':water_buffalo:', |
':tiger2:', |
':rabbit2:', |
':dragon:', |
':goat:', |
':rooster:', |
':dog2:', |
':pig2:', |
':mouse2:', |
':ox:', |
':dragon_face:', |
':blowfish:', |
':crocodile:', |
':dromedary_camel:', |
':leopard:', |
':cat2:', |
':poodle:', |
':paw_prints:', |
':bouquet:', |
':cherry_blossom:', |
':tulip:', |
':four_leaf_clover:', |
':rose:', |
':sunflower:', |
':hibiscus:', |
':maple_leaf:', |
':leaves:', |
':fallen_leaf:', |
':herb:', |
':mushroom:', |
':cactus:', |
':palm_tree:', |
':evergreen_tree:', |
':deciduous_tree:', |
':chestnut:', |
':seedling:', |
':blossom:', |
':ear_of_rice:', |
':shell:', |
':globe_with_meridians:', |
':sun_with_face:', |
':full_moon_with_face:', |
':new_moon_with_face:', |
':new_moon:', |
':waxing_crescent_moon:', |
':first_quarter_moon:', |
':waxing_gibbous_moon:', |
':full_moon:', |
':waning_gibbous_moon:', |
':last_quarter_moon:', |
':waning_crescent_moon:', |
':last_quarter_moon_with_face:', |
':first_quarter_moon_with_face:', |
':crescent_moon:', |
':earth_africa:', |
':earth_americas:', |
':earth_asia:', |
':volcano:', |
':milky_way:', |
':partly_sunny:', |
':octocat:', |
':squirrel:', |
':bamboo:', |
':gift_heart:', |
':dolls:', |
':school_satchel:', |
':mortar_board:', |
':flags:', |
':fireworks:', |
':sparkler:', |
':wind_chime:', |
':rice_scene:', |
':jack_o_lantern:', |
':ghost:', |
':santa:', |
':christmas_tree:', |
':gift:', |
':bell:', |
':no_bell:', |
':tanabata_tree:', |
':tada:', |
':confetti_ball:', |
':balloon:', |
':crystal_ball:', |
':cd:', |
':dvd:', |
':floppy_disk:', |
':camera:', |
':video_camera:', |
':movie_camera:', |
':computer:', |
':tv:', |
':iphone:', |
':phone:', |
':telephone:', |
':telephone_receiver:', |
':pager:', |
':fax:', |
':minidisc:', |
':vhs:', |
':sound:', |
':speaker:', |
':mute:', |
':loudspeaker:', |
':mega:', |
':hourglass:', |
':hourglass_flowing_sand:', |
':alarm_clock:', |
':watch:', |
':radio:', |
':satellite:', |
':loop:', |
':mag:', |
':mag_right:', |
':unlock:', |
':lock:', |
':lock_with_ink_pen:', |
':closed_lock_with_key:', |
':key:', |
':bulb:', |
':flashlight:', |
':high_brightness:', |
':low_brightness:', |
':electric_plug:', |
':battery:', |
':calling:', |
':email:', |
':mailbox:', |
':postbox:', |
':bath:', |
':bathtub:', |
':shower:', |
':toilet:', |
':wrench:', |
':nut_and_bolt:', |
':hammer:', |
':seat:', |
':moneybag:', |
':yen:', |
':dollar:', |
':pound:', |
':euro:', |
':credit_card:', |
':money_with_wings:', |
':e-mail:', |
':inbox_tray:', |
':outbox_tray:', |
':envelope:', |
':incoming_envelope:', |
':postal_horn:', |
':mailbox_closed:', |
':mailbox_with_mail:', |
':mailbox_with_no_mail:', |
':package:', |
':door:', |
':smoking:', |
':bomb:', |
':gun:', |
':hocho:', |
':pill:', |
':syringe:', |
':page_facing_up:', |
':page_with_curl:', |
':bookmark_tabs:', |
':bar_chart:', |
':chart_with_upwards_trend:', |
':chart_with_downwards_trend:', |
':scroll:', |
':clipboard:', |
':calendar:', |
':date:', |
':card_index:', |
':file_folder:', |
':open_file_folder:', |
':scissors:', |
':pushpin:', |
':paperclip:', |
':black_nib:', |
':pencil2:', |
':straight_ruler:', |
':triangular_ruler:', |
':closed_book:', |
':green_book:', |
':blue_book:', |
':orange_book:', |
':notebook:', |
':notebook_with_decorative_cover:', |
':ledger:', |
':books:', |
':bookmark:', |
':name_badge:', |
':microscope:', |
':telescope:', |
':newspaper:', |
':football:', |
':basketball:', |
':soccer:', |
':baseball:', |
':tennis:', |
':8ball:', |
':rugby_football:', |
':bowling:', |
':golf:', |
':mountain_bicyclist:', |
':bicyclist:', |
':horse_racing:', |
':snowboarder:', |
':swimmer:', |
':surfer:', |
':ski:', |
':spades:', |
':hearts:', |
':clubs:', |
':diamonds:', |
':gem:', |
':ring:', |
':trophy:', |
':musical_score:', |
':musical_keyboard:', |
':violin:', |
':space_invader:', |
':video_game:', |
':black_joker:', |
':flower_playing_cards:', |
':game_die:', |
':dart:', |
':mahjong:', |
':clapper:', |
':memo:', |
':pencil:', |
':book:', |
':art:', |
':microphone:', |
':headphones:', |
':trumpet:', |
':saxophone:', |
':guitar:', |
':shoe:', |
':sandal:', |
':high_heel:', |
':lipstick:', |
':boot:', |
':shirt:', |
':tshirt:', |
':necktie:', |
':womans_clothes:', |
':dress:', |
':running_shirt_with_sash:', |
':jeans:', |
':kimono:', |
':bikini:', |
':ribbon:', |
':tophat:', |
':crown:', |
':womans_hat:', |
':mans_shoe:', |
':closed_umbrella:', |
':briefcase:', |
':handbag:', |
':pouch:', |
':purse:', |
':eyeglasses:', |
':fishing_pole_and_fish:', |
':coffee:', |
':tea:', |
':sake:', |
':baby_bottle:', |
':beer:', |
':beers:', |
':cocktail:', |
':tropical_drink:', |
':wine_glass:', |
':fork_and_knife:', |
':pizza:', |
':hamburger:', |
':fries:', |
':poultry_leg:', |
':meat_on_bone:', |
':spaghetti:', |
':curry:', |
':fried_shrimp:', |
':bento:', |
':sushi:', |
':fish_cake:', |
':rice_ball:', |
':rice_cracker:', |
':rice:', |
':ramen:', |
':stew:', |
':oden:', |
':dango:', |
':egg:', |
':bread:', |
':doughnut:', |
':custard:', |
':icecream:', |
':ice_cream:', |
':shaved_ice:', |
':birthday:', |
':cake:', |
':cookie:', |
':chocolate_bar:', |
':candy:', |
':lollipop:', |
':honey_pot:', |
':apple:', |
':green_apple:', |
':tangerine:', |
':lemon:', |
':cherries:', |
':grapes:', |
':watermelon:', |
':strawberry:', |
':peach:', |
':melon:', |
':banana:', |
':pear:', |
':pineapple:', |
':sweet_potato:', |
':eggplant:', |
':tomato:', |
':corn:', |
':house:', |
':house_with_garden:', |
':school:', |
':office:', |
':post_office:', |
':hospital:', |
':bank:', |
':convenience_store:', |
':love_hotel:', |
':hotel:', |
':wedding:', |
':church:', |
':department_store:', |
':european_post_office:', |
':city_sunrise:', |
':city_sunset:', |
':japanese_castle:', |
':european_castle:', |
':tent:', |
':factory:', |
':tokyo_tower:', |
':japan:', |
':mount_fuji:', |
':sunrise_over_mountains:', |
':sunrise:', |
':stars:', |
':statue_of_liberty:', |
':bridge_at_night:', |
':carousel_horse:', |
':rainbow:', |
':ferris_wheel:', |
':fountain:', |
':roller_coaster:', |
':ship:', |
':speedboat:', |
':boat:', |
':sailboat:', |
':rowboat:', |
':anchor:', |
':rocket:', |
':airplane:', |
':helicopter:', |
':steam_locomotive:', |
':tram:', |
':mountain_railway:', |
':bike:', |
':aerial_tramway:', |
':suspension_railway:', |
':mountain_cableway:', |
':tractor:', |
':blue_car:', |
':oncoming_automobile:', |
':car:', |
':red_car:', |
':taxi:', |
':oncoming_taxi:', |
':articulated_lorry:', |
':bus:', |
':oncoming_bus:', |
':rotating_light:', |
':police_car:', |
':oncoming_police_car:', |
':fire_engine:', |
':ambulance:', |
':minibus:', |
':truck:', |
':train:', |
':station:', |
':train2:', |
':bullettrain_front:', |
':bullettrain_side:', |
':light_rail:', |
':monorail:', |
':railway_car:', |
':trolleybus:', |
':ticket:', |
':fuelpump:', |
':vertical_traffic_light:', |
':traffic_light:', |
':warning:', |
':construction:', |
':beginner:', |
':atm:', |
':slot_machine:', |
':busstop:', |
':barber:', |
':hotsprings:', |
':checkered_flag:', |
':crossed_flags:', |
':izakaya_lantern:', |
':moyai:', |
':circus_tent:', |
':performing_arts:', |
':round_pushpin:', |
':triangular_flag_on_post:', |
':jp:', |
':kr:', |
':cn:', |
':us:', |
':fr:', |
':es:', |
':it:', |
':ru:', |
':gb:', |
':uk:', |
':de:', |
':one:', |
':two:', |
':three:', |
':four:', |
':five:', |
':six:', |
':seven:', |
':eight:', |
':nine:', |
':keycap_ten:', |
':1234:', |
':zero:', |
':hash:', |
':symbols:', |
':arrow_backward:', |
':arrow_down:', |
':arrow_forward:', |
':arrow_left:', |
':capital_abcd:', |
':abcd:', |
':abc:', |
':arrow_lower_left:', |
':arrow_lower_right:', |
':arrow_right:', |
':arrow_up:', |
':arrow_upper_left:', |
':arrow_upper_right:', |
':arrow_double_down:', |
':arrow_double_up:', |
':arrow_down_small:', |
':arrow_heading_down:', |
':arrow_heading_up:', |
':leftwards_arrow_with_hook:', |
':arrow_right_hook:', |
':left_right_arrow:', |
':arrow_up_down:', |
':arrow_up_small:', |
':arrows_clockwise:', |
':arrows_counterclockwise:', |
':rewind:', |
':fast_forward:', |
':information_source:', |
':ok:', |
':twisted_rightwards_arrows:', |
':repeat:', |
':repeat_one:', |
':new:', |
':top:', |
':up:', |
':cool:', |
':free:', |
':ng:', |
':cinema:', |
':koko:', |
':signal_strength:', |
':u5272:', |
':u5408:', |
':u55b6:', |
':u6307:', |
':u6708:', |
':u6709:', |
':u6e80:', |
':u7121:', |
':u7533:', |
':u7a7a:', |
':u7981:', |
':sa:', |
':restroom:', |
':mens:', |
':womens:', |
':baby_symbol:', |
':no_smoking:', |
':parking:', |
':wheelchair:', |
':metro:', |
':baggage_claim:', |
':accept:', |
':wc:', |
':potable_water:', |
':put_litter_in_its_place:', |
':secret:', |
':congratulations:', |
':m:', |
':passport_control:', |
':left_luggage:', |
':customs:', |
':ideograph_advantage:', |
':cl:', |
':sos:', |
':id:', |
':no_entry_sign:', |
':underage:', |
':no_mobile_phones:', |
':do_not_litter:', |
':non-potable_water:', |
':no_bicycles:', |
':no_pedestrians:', |
':children_crossing:', |
':no_entry:', |
':eight_spoked_asterisk:', |
':sparkle:', |
':eight_pointed_black_star:', |
':heart_decoration:', |
':vs:', |
':vibration_mode:', |
':mobile_phone_off:', |
':chart:', |
':currency_exchange:', |
':aries:', |
':taurus:', |
':gemini:', |
':cancer:', |
':leo:', |
':virgo:', |
':libra:', |
':scorpius:', |
':sagittarius:', |
':capricorn:', |
':aquarius:', |
':pisces:', |
':ophiuchus:', |
':six_pointed_star:', |
':negative_squared_cross_mark:', |
':a:', |
':b:', |
':ab:', |
':o2:', |
':diamond_shape_with_a_dot_inside:', |
':recycle:', |
':end:', |
':back:', |
':on:', |
':soon:', |
':clock1:', |
':clock130:', |
':clock10:', |
':clock1030:', |
':clock11:', |
':clock1130:', |
':clock12:', |
':clock1230:', |
':clock2:', |
':clock230:', |
':clock3:', |
':clock330:', |
':clock4:', |
':clock430:', |
':clock5:', |
':clock530:', |
':clock6:', |
':clock630:', |
':clock7:', |
':clock730:', |
':clock8:', |
':clock830:', |
':clock9:', |
':clock930:', |
':heavy_dollar_sign:', |
':copyright:', |
':registered:', |
':tm:', |
':x:', |
':heavy_exclamation_mark:', |
':bangbang:', |
':interrobang:', |
':o:', |
':heavy_multiplication_x:', |
':heavy_plus_sign:', |
':heavy_minus_sign:', |
':heavy_division_sign:', |
':white_flower:', |
':100:', |
':heavy_check_mark:', |
':ballot_box_with_check:', |
':radio_button:', |
':link:', |
':curly_loop:', |
':wavy_dash:', |
':part_alternation_mark:', |
':trident:', |
':black_small_square:', |
':white_small_square:', |
':black_medium_small_square:', |
':white_medium_small_square:', |
':black_medium_square:', |
':white_medium_square:', |
':black_large_square:', |
':white_large_square:', |
':white_check_mark:', |
':black_square_button:', |
':white_square_button:', |
':black_circle:', |
':white_circle:', |
':red_circle:', |
':large_blue_circle:', |
':large_blue_diamond:', |
':large_orange_diamond:', |
':small_blue_diamond:', |
':small_orange_diamond:', |
':small_red_triangle:', |
':small_red_triangle_down:', |
':shipit:' |
] |
}; |
// Add all emoji in a dropdown |
$.extend(true, $.trumbowyg, { |
langs: { |
// jshint camelcase:false |
en: { |
emoji: 'Add an emoji' |
}, |
fr: { |
emoji: 'Ajouter un emoji' |
}, |
zh_cn: { |
emoji: '添加表情' |
} |
}, |
// jshint camelcase:true |
plugins: { |
emoji: { |
init: function (trumbowyg) { |
trumbowyg.o.plugins.emoji = $.extend(true, {}, defaultOptions, trumbowyg.o.plugins.emoji || {}); |
var emojiBtnDef = { |
dropdown: buildDropdown(trumbowyg) |
}; |
trumbowyg.addBtnDef('emoji', emojiBtnDef); |
} |
} |
} |
}); |
function buildDropdown(trumbowyg) { |
var dropdown = []; |
$.each(trumbowyg.o.plugins.emoji.emojiList, function (i, emoji) { |
var btn = emoji, |
btnDef = { |
param: emoji, |
fn: function () { |
trumbowyg.execCmd('insertText', emoji); |
return true; |
} |
}; |
trumbowyg.addBtnDef(btn, btnDef); |
dropdown.push(btn); |
}); |
return dropdown; |
} |
})(jQuery); |
/js/trumbowyg/plugins/emoji/trumbowyg.emoji.min.js |
---|
@@ -0,0 +1 @@ |
!function(e){"use strict";function a(a){var o=[];return e.each(a.o.plugins.emoji.emojiList,function(e,r){var i=r,n={param:r,fn:function(){return a.execCmd("insertText",r),!0}};a.addBtnDef(i,n),o.push(i)}),o}var o={emojiList:[":bowtie:",":smile:",":laughing:",":blush:",":smiley:",":relaxed:",":smirk:",":heart_eyes:",":kissing_heart:",":kissing_closed_eyes:",":flushed:",":relieved:",":satisfied:",":grin:",":wink:",":stuck_out_tongue_winking_eye:",":stuck_out_tongue_closed_eyes:",":grinning:",":kissing:",":kissing_smiling_eyes:",":stuck_out_tongue:",":sleeping:",":worried:",":frowning:",":anguished:",":open_mouth:",":grimacing:",":confused:",":hushed:",":expressionless:",":unamused:",":sweat_smile:",":sweat:",":disappointed_relieved:",":weary:",":pensive:",":disappointed:",":confounded:",":fearful:",":cold_sweat:",":persevere:",":cry:",":sob:",":joy:",":astonished:",":scream:",":neckbeard:",":tired_face:",":angry:",":rage:",":triumph:",":sleepy:",":yum:",":mask:",":sunglasses:",":dizzy_face:",":imp:",":smiling_imp:",":neutral_face:",":no_mouth:",":innocent:",":alien:",":yellow_heart:",":blue_heart:",":purple_heart:",":heart:",":green_heart:",":broken_heart:",":heartbeat:",":heartpulse:",":two_hearts:",":revolving_hearts:",":cupid:",":sparkling_heart:",":sparkles:",":star:",":star2:",":dizzy:",":boom:",":collision:",":anger:",":exclamation:",":question:",":grey_exclamation:",":grey_question:",":zzz:",":dash:",":sweat_drops:",":notes:",":musical_note:",":fire:",":hankey:",":poop:",":shit:",":+1:",":thumbsup:",":-1:",":thumbsdown:",":ok_hand:",":punch:",":facepunch:",":fist:",":v:",":wave:",":hand:",":raised_hand:",":open_hands:",":point_up:",":point_down:",":point_left:",":point_right:",":raised_hands:",":pray:",":point_up_2:",":clap:",":muscle:",":metal:",":fu:",":runner:",":running:",":couple:",":family:",":two_men_holding_hands:",":two_women_holding_hands:",":dancer:",":dancers:",":ok_woman:",":no_good:",":information_desk_person:",":raising_hand:",":bride_with_veil:",":person_with_pouting_face:",":person_frowning:",":bow:",":couplekiss:",":couple_with_heart:",":massage:",":haircut:",":nail_care:",":boy:",":girl:",":woman:",":man:",":baby:",":older_woman:",":older_man:",":person_with_blond_hair:",":man_with_gua_pi_mao:",":man_with_turban:",":construction_worker:",":cop:",":angel:",":princess:",":smiley_cat:",":smile_cat:",":heart_eyes_cat:",":kissing_cat:",":smirk_cat:",":scream_cat:",":crying_cat_face:",":joy_cat:",":pouting_cat:",":japanese_ogre:",":japanese_goblin:",":see_no_evil:",":hear_no_evil:",":speak_no_evil:",":guardsman:",":skull:",":feet:",":lips:",":kiss:",":droplet:",":ear:",":eyes:",":nose:",":tongue:",":love_letter:",":bust_in_silhouette:",":busts_in_silhouette:",":speech_balloon:",":thought_balloon:",":feelsgood:",":finnadie:",":goberserk:",":godmode:",":hurtrealbad:",":rage1:",":rage2:",":rage3:",":rage4:",":suspect:",":trollface:",":sunny:",":umbrella:",":cloud:",":snowflake:",":snowman:",":zap:",":cyclone:",":foggy:",":ocean:",":cat:",":dog:",":mouse:",":hamster:",":rabbit:",":wolf:",":frog:",":tiger:",":koala:",":bear:",":pig:",":pig_nose:",":cow:",":boar:",":monkey_face:",":monkey:",":horse:",":racehorse:",":camel:",":sheep:",":elephant:",":panda_face:",":snake:",":bird:",":baby_chick:",":hatched_chick:",":hatching_chick:",":chicken:",":penguin:",":turtle:",":bug:",":honeybee:",":ant:",":beetle:",":snail:",":octopus:",":tropical_fish:",":fish:",":whale:",":whale2:",":dolphin:",":cow2:",":ram:",":rat:",":water_buffalo:",":tiger2:",":rabbit2:",":dragon:",":goat:",":rooster:",":dog2:",":pig2:",":mouse2:",":ox:",":dragon_face:",":blowfish:",":crocodile:",":dromedary_camel:",":leopard:",":cat2:",":poodle:",":paw_prints:",":bouquet:",":cherry_blossom:",":tulip:",":four_leaf_clover:",":rose:",":sunflower:",":hibiscus:",":maple_leaf:",":leaves:",":fallen_leaf:",":herb:",":mushroom:",":cactus:",":palm_tree:",":evergreen_tree:",":deciduous_tree:",":chestnut:",":seedling:",":blossom:",":ear_of_rice:",":shell:",":globe_with_meridians:",":sun_with_face:",":full_moon_with_face:",":new_moon_with_face:",":new_moon:",":waxing_crescent_moon:",":first_quarter_moon:",":waxing_gibbous_moon:",":full_moon:",":waning_gibbous_moon:",":last_quarter_moon:",":waning_crescent_moon:",":last_quarter_moon_with_face:",":first_quarter_moon_with_face:",":crescent_moon:",":earth_africa:",":earth_americas:",":earth_asia:",":volcano:",":milky_way:",":partly_sunny:",":octocat:",":squirrel:",":bamboo:",":gift_heart:",":dolls:",":school_satchel:",":mortar_board:",":flags:",":fireworks:",":sparkler:",":wind_chime:",":rice_scene:",":jack_o_lantern:",":ghost:",":santa:",":christmas_tree:",":gift:",":bell:",":no_bell:",":tanabata_tree:",":tada:",":confetti_ball:",":balloon:",":crystal_ball:",":cd:",":dvd:",":floppy_disk:",":camera:",":video_camera:",":movie_camera:",":computer:",":tv:",":iphone:",":phone:",":telephone:",":telephone_receiver:",":pager:",":fax:",":minidisc:",":vhs:",":sound:",":speaker:",":mute:",":loudspeaker:",":mega:",":hourglass:",":hourglass_flowing_sand:",":alarm_clock:",":watch:",":radio:",":satellite:",":loop:",":mag:",":mag_right:",":unlock:",":lock:",":lock_with_ink_pen:",":closed_lock_with_key:",":key:",":bulb:",":flashlight:",":high_brightness:",":low_brightness:",":electric_plug:",":battery:",":calling:",":email:",":mailbox:",":postbox:",":bath:",":bathtub:",":shower:",":toilet:",":wrench:",":nut_and_bolt:",":hammer:",":seat:",":moneybag:",":yen:",":dollar:",":pound:",":euro:",":credit_card:",":money_with_wings:",":e-mail:",":inbox_tray:",":outbox_tray:",":envelope:",":incoming_envelope:",":postal_horn:",":mailbox_closed:",":mailbox_with_mail:",":mailbox_with_no_mail:",":package:",":door:",":smoking:",":bomb:",":gun:",":hocho:",":pill:",":syringe:",":page_facing_up:",":page_with_curl:",":bookmark_tabs:",":bar_chart:",":chart_with_upwards_trend:",":chart_with_downwards_trend:",":scroll:",":clipboard:",":calendar:",":date:",":card_index:",":file_folder:",":open_file_folder:",":scissors:",":pushpin:",":paperclip:",":black_nib:",":pencil2:",":straight_ruler:",":triangular_ruler:",":closed_book:",":green_book:",":blue_book:",":orange_book:",":notebook:",":notebook_with_decorative_cover:",":ledger:",":books:",":bookmark:",":name_badge:",":microscope:",":telescope:",":newspaper:",":football:",":basketball:",":soccer:",":baseball:",":tennis:",":8ball:",":rugby_football:",":bowling:",":golf:",":mountain_bicyclist:",":bicyclist:",":horse_racing:",":snowboarder:",":swimmer:",":surfer:",":ski:",":spades:",":hearts:",":clubs:",":diamonds:",":gem:",":ring:",":trophy:",":musical_score:",":musical_keyboard:",":violin:",":space_invader:",":video_game:",":black_joker:",":flower_playing_cards:",":game_die:",":dart:",":mahjong:",":clapper:",":memo:",":pencil:",":book:",":art:",":microphone:",":headphones:",":trumpet:",":saxophone:",":guitar:",":shoe:",":sandal:",":high_heel:",":lipstick:",":boot:",":shirt:",":tshirt:",":necktie:",":womans_clothes:",":dress:",":running_shirt_with_sash:",":jeans:",":kimono:",":bikini:",":ribbon:",":tophat:",":crown:",":womans_hat:",":mans_shoe:",":closed_umbrella:",":briefcase:",":handbag:",":pouch:",":purse:",":eyeglasses:",":fishing_pole_and_fish:",":coffee:",":tea:",":sake:",":baby_bottle:",":beer:",":beers:",":cocktail:",":tropical_drink:",":wine_glass:",":fork_and_knife:",":pizza:",":hamburger:",":fries:",":poultry_leg:",":meat_on_bone:",":spaghetti:",":curry:",":fried_shrimp:",":bento:",":sushi:",":fish_cake:",":rice_ball:",":rice_cracker:",":rice:",":ramen:",":stew:",":oden:",":dango:",":egg:",":bread:",":doughnut:",":custard:",":icecream:",":ice_cream:",":shaved_ice:",":birthday:",":cake:",":cookie:",":chocolate_bar:",":candy:",":lollipop:",":honey_pot:",":apple:",":green_apple:",":tangerine:",":lemon:",":cherries:",":grapes:",":watermelon:",":strawberry:",":peach:",":melon:",":banana:",":pear:",":pineapple:",":sweet_potato:",":eggplant:",":tomato:",":corn:",":house:",":house_with_garden:",":school:",":office:",":post_office:",":hospital:",":bank:",":convenience_store:",":love_hotel:",":hotel:",":wedding:",":church:",":department_store:",":european_post_office:",":city_sunrise:",":city_sunset:",":japanese_castle:",":european_castle:",":tent:",":factory:",":tokyo_tower:",":japan:",":mount_fuji:",":sunrise_over_mountains:",":sunrise:",":stars:",":statue_of_liberty:",":bridge_at_night:",":carousel_horse:",":rainbow:",":ferris_wheel:",":fountain:",":roller_coaster:",":ship:",":speedboat:",":boat:",":sailboat:",":rowboat:",":anchor:",":rocket:",":airplane:",":helicopter:",":steam_locomotive:",":tram:",":mountain_railway:",":bike:",":aerial_tramway:",":suspension_railway:",":mountain_cableway:",":tractor:",":blue_car:",":oncoming_automobile:",":car:",":red_car:",":taxi:",":oncoming_taxi:",":articulated_lorry:",":bus:",":oncoming_bus:",":rotating_light:",":police_car:",":oncoming_police_car:",":fire_engine:",":ambulance:",":minibus:",":truck:",":train:",":station:",":train2:",":bullettrain_front:",":bullettrain_side:",":light_rail:",":monorail:",":railway_car:",":trolleybus:",":ticket:",":fuelpump:",":vertical_traffic_light:",":traffic_light:",":warning:",":construction:",":beginner:",":atm:",":slot_machine:",":busstop:",":barber:",":hotsprings:",":checkered_flag:",":crossed_flags:",":izakaya_lantern:",":moyai:",":circus_tent:",":performing_arts:",":round_pushpin:",":triangular_flag_on_post:",":jp:",":kr:",":cn:",":us:",":fr:",":es:",":it:",":ru:",":gb:",":uk:",":de:",":one:",":two:",":three:",":four:",":five:",":six:",":seven:",":eight:",":nine:",":keycap_ten:",":1234:",":zero:",":hash:",":symbols:",":arrow_backward:",":arrow_down:",":arrow_forward:",":arrow_left:",":capital_abcd:",":abcd:",":abc:",":arrow_lower_left:",":arrow_lower_right:",":arrow_right:",":arrow_up:",":arrow_upper_left:",":arrow_upper_right:",":arrow_double_down:",":arrow_double_up:",":arrow_down_small:",":arrow_heading_down:",":arrow_heading_up:",":leftwards_arrow_with_hook:",":arrow_right_hook:",":left_right_arrow:",":arrow_up_down:",":arrow_up_small:",":arrows_clockwise:",":arrows_counterclockwise:",":rewind:",":fast_forward:",":information_source:",":ok:",":twisted_rightwards_arrows:",":repeat:",":repeat_one:",":new:",":top:",":up:",":cool:",":free:",":ng:",":cinema:",":koko:",":signal_strength:",":u5272:",":u5408:",":u55b6:",":u6307:",":u6708:",":u6709:",":u6e80:",":u7121:",":u7533:",":u7a7a:",":u7981:",":sa:",":restroom:",":mens:",":womens:",":baby_symbol:",":no_smoking:",":parking:",":wheelchair:",":metro:",":baggage_claim:",":accept:",":wc:",":potable_water:",":put_litter_in_its_place:",":secret:",":congratulations:",":m:",":passport_control:",":left_luggage:",":customs:",":ideograph_advantage:",":cl:",":sos:",":id:",":no_entry_sign:",":underage:",":no_mobile_phones:",":do_not_litter:",":non-potable_water:",":no_bicycles:",":no_pedestrians:",":children_crossing:",":no_entry:",":eight_spoked_asterisk:",":sparkle:",":eight_pointed_black_star:",":heart_decoration:",":vs:",":vibration_mode:",":mobile_phone_off:",":chart:",":currency_exchange:",":aries:",":taurus:",":gemini:",":cancer:",":leo:",":virgo:",":libra:",":scorpius:",":sagittarius:",":capricorn:",":aquarius:",":pisces:",":ophiuchus:",":six_pointed_star:",":negative_squared_cross_mark:",":a:",":b:",":ab:",":o2:",":diamond_shape_with_a_dot_inside:",":recycle:",":end:",":back:",":on:",":soon:",":clock1:",":clock130:",":clock10:",":clock1030:",":clock11:",":clock1130:",":clock12:",":clock1230:",":clock2:",":clock230:",":clock3:",":clock330:",":clock4:",":clock430:",":clock5:",":clock530:",":clock6:",":clock630:",":clock7:",":clock730:",":clock8:",":clock830:",":clock9:",":clock930:",":heavy_dollar_sign:",":copyright:",":registered:",":tm:",":x:",":heavy_exclamation_mark:",":bangbang:",":interrobang:",":o:",":heavy_multiplication_x:",":heavy_plus_sign:",":heavy_minus_sign:",":heavy_division_sign:",":white_flower:",":100:",":heavy_check_mark:",":ballot_box_with_check:",":radio_button:",":link:",":curly_loop:",":wavy_dash:",":part_alternation_mark:",":trident:",":black_small_square:",":white_small_square:",":black_medium_small_square:",":white_medium_small_square:",":black_medium_square:",":white_medium_square:",":black_large_square:",":white_large_square:",":white_check_mark:",":black_square_button:",":white_square_button:",":black_circle:",":white_circle:",":red_circle:",":large_blue_circle:",":large_blue_diamond:",":large_orange_diamond:",":small_blue_diamond:",":small_orange_diamond:",":small_red_triangle:",":small_red_triangle_down:",":shipit:"]};e.extend(!0,e.trumbowyg,{langs:{en:{emoji:"Add an emoji"},fr:{emoji:"Ajouter un emoji"},zh_cn:{emoji:"添加表情"}},plugins:{emoji:{init:function(r){r.o.plugins.emoji=e.extend(!0,{},o,r.o.plugins.emoji||{});var i={dropdown:a(r)};r.addBtnDef("emoji",i)}}}})}(jQuery); |
/js/trumbowyg/plugins/insertaudio/trumbowyg.insertaudio.js |
---|
@@ -0,0 +1,77 @@ |
/*/* =========================================================== |
* trumbowyg.insertaudio.js v1.0 |
* InsertAudio plugin for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Adam Hess (AdamHess) |
*/ |
(function ($) { |
'use strict'; |
var insertAudioOptions = { |
src: { |
label: 'URL', |
required: true |
}, |
autoplay: { |
label: 'AutoPlay', |
required: false, |
type: 'checkbox' |
}, |
muted: { |
label: 'Muted', |
required: false, |
type: 'checkbox' |
}, |
preload: { |
label: 'preload options', |
required: false |
} |
}; |
$.extend(true, $.trumbowyg, { |
langs: { |
en: { |
insertAudio: 'Insert Audio' |
} |
}, |
plugins: { |
insertAudio: { |
init: function (trumbowyg) { |
var btnDef = { |
fn: function () { |
var insertAudioCallback = function (v) { |
// controls should always be show otherwise the audio will |
// be invisible defeating the point of a wysiwyg |
var html = '<audio controls'; |
if (v.src) { |
html += ' src=\'' + v.src + '\''; |
} |
if (v.autoplay) { |
html += ' autoplay'; |
} |
if (v.muted) { |
html += ' muted'; |
} |
if (v.preload) { |
html += ' preload=\'' + v + '\''; |
} |
html += '></audio>'; |
var node = $(html)[0]; |
trumbowyg.range.deleteContents(); |
trumbowyg.range.insertNode(node); |
return true; |
}; |
trumbowyg.openModalInsert(trumbowyg.lang.insertAudio, insertAudioOptions, insertAudioCallback); |
} |
}; |
trumbowyg.addBtnDef('insertAudio', btnDef); |
} |
} |
} |
}); |
})(jQuery); |
/js/trumbowyg/plugins/insertaudio/trumbowyg.insertaudio.min.js |
---|
@@ -0,0 +1 @@ |
!function(e){"use strict";var r={src:{label:"URL",required:!0},autoplay:{label:"AutoPlay",required:!1,type:"checkbox"},muted:{label:"Muted",required:!1,type:"checkbox"},preload:{label:"preload options",required:!1}};e.extend(!0,e.trumbowyg,{langs:{en:{insertAudio:"Insert Audio"}},plugins:{insertAudio:{init:function(t){var n={fn:function(){var n=function(r){var n="<audio controls";r.src&&(n+=" src='"+r.src+"'"),r.autoplay&&(n+=" autoplay"),r.muted&&(n+=" muted"),r.preload&&(n+=" preload='"+r+"'"),n+="></audio>";var o=e(n)[0];return t.range.deleteContents(),t.range.insertNode(o),!0};t.openModalInsert(t.lang.insertAudio,r,n)}};t.addBtnDef("insertAudio",n)}}}})}(jQuery); |
/js/trumbowyg/plugins/noembed/trumbowyg.noembed.js |
---|
@@ -0,0 +1,96 @@ |
/* =========================================================== |
* trumbowyg.noembed.js v1.0 |
* noEmbed plugin for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Jake Johns (jakejohns) |
*/ |
(function ($) { |
'use strict'; |
var defaultOptions = { |
proxy: 'https://noembed.com/embed?nowrap=on', |
urlFiled: 'url', |
data: [], |
success: undefined, |
error: undefined |
}; |
$.extend(true, $.trumbowyg, { |
langs: { |
en: { |
noembed: 'noEmbed', |
noembedError: 'Error' |
}, |
sk: { |
noembedError: 'Chyba' |
}, |
fr: { |
noembed: 'noEmbed', |
noembedError: 'Erreur' |
}, |
cs: { |
noembedError: 'Chyba' |
} |
}, |
plugins: { |
noembed: { |
init: function (trumbowyg) { |
trumbowyg.o.plugins.noembed = $.extend(true, {}, defaultOptions, trumbowyg.o.plugins.noembed || {}); |
var btnDef = { |
fn: function () { |
var $modal = trumbowyg.openModalInsert( |
// Title |
trumbowyg.lang.noembed, |
// Fields |
{ |
url: { |
label: 'URL', |
required: true |
} |
}, |
// Callback |
function (data) { |
$.ajax({ |
url: trumbowyg.o.plugins.noembed.proxy, |
type: 'GET', |
data: data, |
cache: false, |
dataType: 'json', |
success: trumbowyg.o.plugins.noembed.success || function (data) { |
if (data.html) { |
trumbowyg.execCmd('insertHTML', data.html); |
setTimeout(function () { |
trumbowyg.closeModal(); |
}, 250); |
} else { |
trumbowyg.addErrorOnModalField( |
$('input[type=text]', $modal), |
data.error |
); |
} |
}, |
error: trumbowyg.o.plugins.noembed.error || function () { |
trumbowyg.addErrorOnModalField( |
$('input[type=text]', $modal), |
trumbowyg.lang.noembedError |
); |
} |
}); |
} |
); |
} |
}; |
trumbowyg.addBtnDef('noembed', btnDef); |
} |
} |
} |
}); |
})(jQuery); |
/js/trumbowyg/plugins/noembed/trumbowyg.noembed.min.js |
---|
@@ -0,0 +1 @@ |
!function(e){"use strict";var o={proxy:"https://noembed.com/embed?nowrap=on",urlFiled:"url",data:[],success:void 0,error:void 0};e.extend(!0,e.trumbowyg,{langs:{en:{noembed:"noEmbed",noembedError:"Error"},sk:{noembedError:"Chyba"},fr:{noembed:"noEmbed",noembedError:"Erreur"},cs:{noembedError:"Chyba"}},plugins:{noembed:{init:function(n){n.o.plugins.noembed=e.extend(!0,{},o,n.o.plugins.noembed||{});var r={fn:function(){var o=n.openModalInsert(n.lang.noembed,{url:{label:"URL",required:!0}},function(r){e.ajax({url:n.o.plugins.noembed.proxy,type:"GET",data:r,cache:!1,dataType:"json",success:n.o.plugins.noembed.success||function(r){r.html?(n.execCmd("insertHTML",r.html),setTimeout(function(){n.closeModal()},250)):n.addErrorOnModalField(e("input[type=text]",o),r.error)},error:n.o.plugins.noembed.error||function(){n.addErrorOnModalField(e("input[type=text]",o),n.lang.noembedError)}})})}};n.addBtnDef("noembed",r)}}}})}(jQuery); |
/js/trumbowyg/plugins/pasteimage/trumbowyg.pasteimage.js |
---|
@@ -0,0 +1,41 @@ |
/* =========================================================== |
* trumbowyg.pasteimage.js v1.0 |
* Basic base64 paste plugin for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Alexandre Demode (Alex-D) |
* Twitter : @AlexandreDemode |
* Website : alex-d.fr |
*/ |
(function ($) { |
'use strict'; |
$.extend(true, $.trumbowyg, { |
plugins: { |
pasteImage: { |
init: function (trumbowyg) { |
trumbowyg.pasteHandlers.push(function (pasteEvent) { |
try { |
var items = (pasteEvent.originalEvent || pasteEvent).clipboardData.items, |
reader; |
for (var i = items.length -1; i >= 0; i += 1) { |
if (items[i].type.match(/^image\//)) { |
reader = new FileReader(); |
/* jshint -W083 */ |
reader.onloadend = function (event) { |
trumbowyg.execCmd('insertImage', event.target.result, undefined, true); |
}; |
/* jshint +W083 */ |
reader.readAsDataURL(items[i].getAsFile()); |
} |
} |
} catch (c) { |
} |
}); |
} |
} |
} |
}); |
})(jQuery); |
/js/trumbowyg/plugins/pasteimage/trumbowyg.pasteimage.min.js |
---|
@@ -0,0 +1 @@ |
!function(e){"use strict";e.extend(!0,e.trumbowyg,{plugins:{pasteImage:{init:function(e){e.pasteHandlers.push(function(t){try{for(var a,n=(t.originalEvent||t).clipboardData.items,i=n.length-1;i>=0;i+=1)n[i].type.match(/^image\//)&&(a=new FileReader,a.onloadend=function(t){e.execCmd("insertImage",t.target.result,void 0,!0)},a.readAsDataURL(n[i].getAsFile()))}catch(r){}})}}}})}(jQuery); |
/js/trumbowyg/plugins/preformatted/trumbowyg.preformatted.js |
---|
@@ -0,0 +1,117 @@ |
/* =========================================================== |
* trumbowyg.preformatted.js v1.0 |
* Preformatted plugin for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Casella Edoardo (Civile) |
*/ |
(function ($) { |
'use strict'; |
$.extend(true, $.trumbowyg, { |
langs: { |
// jshint camelcase:false |
en: { |
preformatted: 'Code sample <pre>' |
}, |
fr: { |
preformatted: 'Exemple de code' |
}, |
it: { |
preformatted: 'Codice <pre>' |
}, |
zh_cn: { |
preformatted: '代码示例 <pre>' |
} |
}, |
// jshint camelcase:true |
plugins: { |
preformatted: { |
init: function (trumbowyg) { |
var btnDef = { |
fn: function () { |
trumbowyg.saveRange(); |
var text = trumbowyg.getRangeText(); |
if (text.replace(/\s/g, '') !== '') { |
try { |
var curtag = getSelectionParentElement().tagName.toLowerCase(); |
if (curtag === 'code' || curtag === 'pre') { |
return unwrapCode(); |
} |
else { |
trumbowyg.execCmd('insertHTML', '<pre><code>' + strip(text) + '</code></pre>'); |
} |
} catch (e) { |
} |
} |
}, |
tag: 'pre' |
}; |
trumbowyg.addBtnDef('preformatted', btnDef); |
} |
} |
} |
}); |
/* |
* GetSelectionParentElement |
*/ |
function getSelectionParentElement() { |
var parentEl = null, |
selection; |
if (window.getSelection) { |
selection = window.getSelection(); |
if (selection.rangeCount) { |
parentEl = selection.getRangeAt(0).commonAncestorContainer; |
if (parentEl.nodeType !== 1) { |
parentEl = parentEl.parentNode; |
} |
} |
} else if ((selection = document.selection) && selection.type !== 'Control') { |
parentEl = selection.createRange().parentElement(); |
} |
return parentEl; |
} |
/* |
* Strip |
* returns a text without HTML tags |
*/ |
function strip(html) { |
var tmp = document.createElement('DIV'); |
tmp.innerHTML = html; |
return tmp.textContent || tmp.innerText || ''; |
} |
/* |
* UnwrapCode |
* ADD/FIX: to improve, works but can be better |
* "paranoic" solution |
*/ |
function unwrapCode() { |
var container = null; |
if (document.selection) { //for IE |
container = document.selection.createRange().parentElement(); |
} else { |
var select = window.getSelection(); |
if (select.rangeCount > 0) { |
container = select.getRangeAt(0).startContainer.parentNode; |
} |
} |
//'paranoic' unwrap |
var ispre = $(container).contents().closest('pre').length; |
var iscode = $(container).contents().closest('code').length; |
if (ispre && iscode) { |
$(container).contents().unwrap('code').unwrap('pre'); |
} else if (ispre) { |
$(container).contents().unwrap('pre'); |
} else if (iscode) { |
$(container).contents().unwrap('code'); |
} |
} |
})(jQuery); |
/js/trumbowyg/plugins/preformatted/trumbowyg.preformatted.min.js |
---|
@@ -0,0 +1 @@ |
!function(e){"use strict";function t(){var e,t=null;return window.getSelection?(e=window.getSelection(),e.rangeCount&&(t=e.getRangeAt(0).commonAncestorContainer,1!==t.nodeType&&(t=t.parentNode))):(e=document.selection)&&"Control"!==e.type&&(t=e.createRange().parentElement()),t}function n(e){var t=document.createElement("DIV");return t.innerHTML=e,t.textContent||t.innerText||""}function r(){var t=null;if(document.selection)t=document.selection.createRange().parentElement();else{var n=window.getSelection();n.rangeCount>0&&(t=n.getRangeAt(0).startContainer.parentNode)}var r=e(t).contents().closest("pre").length,o=e(t).contents().closest("code").length;r&&o?e(t).contents().unwrap("code").unwrap("pre"):r?e(t).contents().unwrap("pre"):o&&e(t).contents().unwrap("code")}e.extend(!0,e.trumbowyg,{langs:{en:{preformatted:"Code sample <pre>"},fr:{preformatted:"Exemple de code"},it:{preformatted:"Codice <pre>"},zh_cn:{preformatted:"代码示例 <pre>"}},plugins:{preformatted:{init:function(e){var o={fn:function(){e.saveRange();var o=e.getRangeText();if(""!==o.replace(/\s/g,""))try{var a=t().tagName.toLowerCase();if("code"===a||"pre"===a)return r();e.execCmd("insertHTML","<pre><code>"+n(o)+"</code></pre>")}catch(c){}},tag:"pre"};e.addBtnDef("preformatted",o)}}}})}(jQuery); |
/js/trumbowyg/plugins/table/trumbowyg.table.js |
---|
@@ -0,0 +1,136 @@ |
/* =========================================================== |
* trumbowyg.table.js v1.2 |
* Table plugin for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Lawrence Meckan |
* Twitter : @absalomedia |
* Website : absalom.biz |
*/ |
(function ($) { |
'use strict'; |
var defaultOptions = { |
rows: 0, |
columns: 0, |
styler: '' |
}; |
$.extend(true, $.trumbowyg, { |
langs: { |
en: { |
table: 'Insert table', |
tableAddRow: 'Add rows', |
tableAddColumn: 'Add columns', |
rows: 'Rows', |
columns: 'Columns', |
styler: 'Table class', |
error: 'Error' |
}, |
sk: { |
table: 'Vytvoriť tabuľky', |
tableAddRow: 'Pridať riadok', |
tableAddColumn: 'Pridať stĺpec', |
rows: 'Riadky', |
columns: 'Stĺpce', |
styler: 'Tabuľku triedy', |
error: 'Chyba' |
}, |
fr: { |
table: 'Insérer un tableau', |
tableAddRow: 'Ajouter des lignes', |
tableAddColumn: 'Ajouter des colonnes', |
rows: 'Lignes', |
columns: 'Colonnes', |
styler: 'Classes CSS sur la table', |
error: 'Erreur' |
}, |
cs: { |
table: 'Vytvořit příkaz Table', |
tableAddRow: 'Přidat řádek', |
tableAddColumn: 'Přidat sloupec', |
rows: 'Řádky', |
columns: 'Sloupce', |
styler: 'Tabulku třída', |
error: 'Chyba' |
} |
}, |
plugins: { |
table: { |
init: function (trumbowyg) { |
trumbowyg.o.plugins.table = $.extend(true, {}, defaultOptions, trumbowyg.o.plugins.table || {}); |
var tableBuild = { |
fn: function () { |
trumbowyg.saveRange(); |
trumbowyg.openModalInsert( |
// Title |
trumbowyg.lang.table, |
// Fields |
{ |
rows: { |
type: 'number', |
required: true |
}, |
columns: { |
type: 'number', |
required: true |
}, |
styler: { |
label: trumbowyg.lang.styler, |
type: 'text' |
} |
}, |
function (v) { // v is value |
var tabler = $('<table></table>'); |
if (v.styler.length !== 0) { |
tabler.addClass(v.styler); |
} |
for (var i = 0; i < v.rows; i += 1) { |
var row = $('<tr></tr>').appendTo(tabler); |
for (var j = 0; j < v.columns; j += 1) { |
$('<td></td>').appendTo(row); |
} |
} |
trumbowyg.range.deleteContents(); |
trumbowyg.range.insertNode(tabler[0]); |
return true; |
}); |
} |
}; |
var addRow = { |
fn: function () { |
trumbowyg.saveRange(); |
var rower = $('<tr></tr>'); |
trumbowyg.range.deleteContents(); |
trumbowyg.range.insertNode(rower[0]); |
return true; |
} |
}; |
var addColumn = { |
fn: function () { |
trumbowyg.saveRange(); |
var columner = $('<td></td>'); |
trumbowyg.range.deleteContents(); |
trumbowyg.range.insertNode(columner[0]); |
return true; |
} |
}; |
trumbowyg.addBtnDef('table', tableBuild); |
trumbowyg.addBtnDef('tableAddRow', addRow); |
trumbowyg.addBtnDef('tableAddColumn', addColumn); |
} |
} |
} |
}); |
})(jQuery); |
/js/trumbowyg/plugins/table/trumbowyg.table.min.js |
---|
@@ -0,0 +1 @@ |
!function(e){"use strict";var t={rows:0,columns:0,styler:""};e.extend(!0,e.trumbowyg,{langs:{en:{table:"Insert table",tableAddRow:"Add rows",tableAddColumn:"Add columns",rows:"Rows",columns:"Columns",styler:"Table class",error:"Error"},sk:{table:"Vytvoriť tabuľky",tableAddRow:"Pridať riadok",tableAddColumn:"Pridať stĺpec",rows:"Riadky",columns:"Stĺpce",styler:"Tabuľku triedy",error:"Chyba"},fr:{table:"Insérer un tableau",tableAddRow:"Ajouter des lignes",tableAddColumn:"Ajouter des colonnes",rows:"Lignes",columns:"Colonnes",styler:"Classes CSS sur la table",error:"Erreur"},cs:{table:"Vytvořit příkaz Table",tableAddRow:"Přidat řádek",tableAddColumn:"Přidat sloupec",rows:"Řádky",columns:"Sloupce",styler:"Tabulku třída",error:"Chyba"}},plugins:{table:{init:function(r){r.o.plugins.table=e.extend(!0,{},t,r.o.plugins.table||{});var n={fn:function(){r.saveRange(),r.openModalInsert(r.lang.table,{rows:{type:"number",required:!0},columns:{type:"number",required:!0},styler:{label:r.lang.styler,type:"text"}},function(t){var n=e("<table></table>");0!==t.styler.length&&n.addClass(t.styler);for(var a=0;a<t.rows;a+=1)for(var l=e("<tr></tr>").appendTo(n),o=0;o<t.columns;o+=1)e("<td></td>").appendTo(l);return r.range.deleteContents(),r.range.insertNode(n[0]),!0})}},a={fn:function(){r.saveRange();var t=e("<tr></tr>");return r.range.deleteContents(),r.range.insertNode(t[0]),!0}},l={fn:function(){r.saveRange();var t=e("<td></td>");return r.range.deleteContents(),r.range.insertNode(t[0]),!0}};r.addBtnDef("table",n),r.addBtnDef("tableAddRow",a),r.addBtnDef("tableAddColumn",l)}}}})}(jQuery); |
/js/trumbowyg/plugins/template/trumbowyg.template.js |
---|
@@ -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); |
/js/trumbowyg/plugins/template/trumbowyg.template.min.js |
---|
@@ -0,0 +1 @@ |
!function(t){"use strict";function e(e){var n=e.o.plugins.templates,a=[];return t.each(n,function(t,n){e.addBtnDef("template_"+t,{fn:function(){e.html(n.html)},hasIcon:!1,title:n.name}),a.push("template_"+t)}),a}t.extend(!0,t.trumbowyg,{langs:{en:{template:"Template"},nl:{template:"Sjabloon"}}}),t.extend(!0,t.trumbowyg,{plugins:{template:{shouldInit:function(t){return t.o.plugins.hasOwnProperty("templates")},init:function(t){t.addBtnDef("template",{dropdown:e(t),hasIcon:!1,text:t.lang.template})}}}})}(jQuery); |
/js/trumbowyg/plugins/upload/trumbowyg.upload.js |
---|
@@ -0,0 +1,223 @@ |
/* =========================================================== |
* trumbowyg.upload.js v1.2 |
* Upload plugin for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Alexandre Demode (Alex-D) |
* Twitter : @AlexandreDemode |
* Website : alex-d.fr |
* Mod by : Aleksandr-ru |
* Twitter : @Aleksandr_ru |
* Website : aleksandr.ru |
*/ |
(function ($) { |
'use strict'; |
var defaultOptions = { |
serverPath: './src/plugins/upload/trumbowyg.upload.php', |
fileFieldName: 'fileToUpload', |
data: [], // Additional data for ajax [{name: 'key', value: 'value'}] |
headers: {}, // Additional headers |
xhrFields: {}, // Additional fields |
urlPropertyName: 'file', // How to get url from the json response (for instance 'url' for {url: ....}) |
statusPropertyName: 'success', // How to get status from the json response |
success: undefined, // Success callback: function (data, trumbowyg, $modal, values) {} |
error: undefined // Error callback: function () {} |
}; |
function getDeep(object, propertyParts) { |
var mainProperty = propertyParts.shift(), |
otherProperties = propertyParts; |
if (object !== null) { |
if (otherProperties.length === 0) { |
return object[mainProperty]; |
} |
if (typeof object === 'object') { |
return getDeep(object[mainProperty], otherProperties); |
} |
} |
return object; |
} |
addXhrProgressEvent(); |
$.extend(true, $.trumbowyg, { |
langs: { |
// jshint camelcase:false |
en: { |
upload: 'Upload', |
file: 'File', |
uploadError: 'Error' |
}, |
sk: { |
upload: 'Nahrať', |
file: 'Súbor', |
uploadError: 'Chyba' |
}, |
fr: { |
upload: 'Envoi', |
file: 'Fichier', |
uploadError: 'Erreur' |
}, |
cs: { |
upload: 'Nahrát obrázek', |
file: 'Soubor', |
uploadError: 'Chyba' |
}, |
zh_cn: { |
upload: '上传', |
file: '文件', |
uploadError: '错误' |
}, |
ru: { |
upload: 'Загрузка', |
file: 'Файл', |
uploadError: 'Ошибка' |
} |
}, |
// jshint camelcase:true |
plugins: { |
upload: { |
init: function (trumbowyg) { |
trumbowyg.o.plugins.upload = $.extend(true, {}, defaultOptions, trumbowyg.o.plugins.upload || {}); |
var btnDef = { |
fn: function () { |
trumbowyg.saveRange(); |
var file, |
prefix = trumbowyg.o.prefix; |
var $modal = trumbowyg.openModalInsert( |
// Title |
trumbowyg.lang.upload, |
// Fields |
{ |
file: { |
type: 'file', |
required: true, |
attributes: { |
accept: 'image/*' |
} |
}, |
alt: { |
label: 'description', |
value: trumbowyg.getRangeText() |
} |
}, |
// Callback |
function (values) { |
var data = new FormData(); |
data.append(trumbowyg.o.plugins.upload.fileFieldName, file); |
trumbowyg.o.plugins.upload.data.map(function (cur) { |
data.append(cur.name, cur.value); |
}); |
if ($('.' + prefix + 'progress', $modal).length === 0) { |
$('.' + prefix + 'modal-title', $modal) |
.after( |
$('<div/>', { |
'class': prefix + 'progress' |
}).append( |
$('<div/>', { |
'class': prefix + 'progress-bar' |
}) |
) |
); |
} |
$.ajax({ |
url: trumbowyg.o.plugins.upload.serverPath, |
headers: trumbowyg.o.plugins.upload.headers, |
xhrFields: trumbowyg.o.plugins.upload.xhrFields, |
type: 'POST', |
data: data, |
cache: false, |
dataType: 'json', |
processData: false, |
contentType: false, |
progressUpload: function (e) { |
$('.' + prefix + 'progress-bar').stop().animate({ |
width: Math.round(e.loaded * 100 / e.total) + '%' |
}, 200); |
}, |
success: function (data) { |
if (trumbowyg.o.plugins.upload.success) { |
trumbowyg.o.plugins.upload.success(data, trumbowyg, $modal, values); |
} else { |
if (!!getDeep(data, trumbowyg.o.plugins.upload.statusPropertyName.split('.'))) { |
var url = getDeep(data, trumbowyg.o.plugins.upload.urlPropertyName.split('.')); |
trumbowyg.execCmd('insertImage', url); |
$('img[src="' + url + '"]:not([alt])', trumbowyg.$box).attr('alt', values.alt); |
setTimeout(function () { |
trumbowyg.closeModal(); |
}, 250); |
trumbowyg.$c.trigger('tbwuploadsuccess', [trumbowyg, data, url]); |
} else { |
trumbowyg.addErrorOnModalField( |
$('input[type=file]', $modal), |
trumbowyg.lang[data.message] |
); |
trumbowyg.$c.trigger('tbwuploaderror', [trumbowyg, data]); |
} |
} |
}, |
error: trumbowyg.o.plugins.upload.error || function () { |
trumbowyg.addErrorOnModalField( |
$('input[type=file]', $modal), |
trumbowyg.lang.uploadError |
); |
trumbowyg.$c.trigger('tbwuploaderror', [trumbowyg]); |
} |
}); |
} |
); |
$('input[type=file]').on('change', function (e) { |
try { |
// If multiple files allowed, we just get the first. |
file = e.target.files[0]; |
} catch (err) { |
// In IE8, multiple files not allowed |
file = e.target.value; |
} |
}); |
} |
}; |
trumbowyg.addBtnDef('upload', btnDef); |
} |
} |
} |
}); |
function addXhrProgressEvent() { |
if (!$.trumbowyg && !$.trumbowyg.addedXhrProgressEvent) { // Avoid adding progress event multiple times |
var originalXhr = $.ajaxSettings.xhr; |
$.ajaxSetup({ |
xhr: function () { |
var req = originalXhr(), |
that = this; |
if (req && typeof req.upload === 'object' && that.progressUpload !== undefined) { |
req.upload.addEventListener('progress', function (e) { |
that.progressUpload(e); |
}, false); |
} |
return req; |
} |
}); |
$.trumbowyg.addedXhrProgressEvent = true; |
} |
} |
})(jQuery); |
/js/trumbowyg/plugins/upload/trumbowyg.upload.min.js |
---|
@@ -0,0 +1 @@ |
!function(e){"use strict";function r(e,a){var o=a.shift(),l=a;if(null!==e){if(0===l.length)return e[o];if("object"==typeof e)return r(e[o],l)}return e}function a(){if(!e.trumbowyg&&!e.trumbowyg.addedXhrProgressEvent){var r=e.ajaxSettings.xhr;e.ajaxSetup({xhr:function(){var e=r(),a=this;return e&&"object"==typeof e.upload&&void 0!==a.progressUpload&&e.upload.addEventListener("progress",function(e){a.progressUpload(e)},!1),e}}),e.trumbowyg.addedXhrProgressEvent=!0}}var o={serverPath:"./src/plugins/upload/trumbowyg.upload.php",fileFieldName:"fileToUpload",data:[],headers:{},xhrFields:{},urlPropertyName:"file",statusPropertyName:"success",success:void 0,error:void 0};a(),e.extend(!0,e.trumbowyg,{langs:{en:{upload:"Upload",file:"File",uploadError:"Error"},sk:{upload:"Nahrať",file:"Súbor",uploadError:"Chyba"},fr:{upload:"Envoi",file:"Fichier",uploadError:"Erreur"},cs:{upload:"Nahrát obrázek",file:"Soubor",uploadError:"Chyba"},zh_cn:{upload:"上传",file:"文件",uploadError:"错误"},ru:{upload:"Загрузка",file:"Файл",uploadError:"Ошибка"}},plugins:{upload:{init:function(a){a.o.plugins.upload=e.extend(!0,{},o,a.o.plugins.upload||{});var l={fn:function(){a.saveRange();var o,l=a.o.prefix,t=a.openModalInsert(a.lang.upload,{file:{type:"file",required:!0,attributes:{accept:"image/*"}},alt:{label:"description",value:a.getRangeText()}},function(u){var s=new FormData;s.append(a.o.plugins.upload.fileFieldName,o),a.o.plugins.upload.data.map(function(e){s.append(e.name,e.value)}),0===e("."+l+"progress",t).length&&e("."+l+"modal-title",t).after(e("<div/>",{"class":l+"progress"}).append(e("<div/>",{"class":l+"progress-bar"}))),e.ajax({url:a.o.plugins.upload.serverPath,headers:a.o.plugins.upload.headers,xhrFields:a.o.plugins.upload.xhrFields,type:"POST",data:s,cache:!1,dataType:"json",processData:!1,contentType:!1,progressUpload:function(r){e("."+l+"progress-bar").stop().animate({width:Math.round(100*r.loaded/r.total)+"%"},200)},success:function(o){if(a.o.plugins.upload.success)a.o.plugins.upload.success(o,a,t,u);else if(r(o,a.o.plugins.upload.statusPropertyName.split("."))){var l=r(o,a.o.plugins.upload.urlPropertyName.split("."));a.execCmd("insertImage",l),e('img[src="'+l+'"]:not([alt])',a.$box).attr("alt",u.alt),setTimeout(function(){a.closeModal()},250),a.$c.trigger("tbwuploadsuccess",[a,o,l])}else a.addErrorOnModalField(e("input[type=file]",t),a.lang[o.message]),a.$c.trigger("tbwuploaderror",[a,o])},error:a.o.plugins.upload.error||function(){a.addErrorOnModalField(e("input[type=file]",t),a.lang.uploadError),a.$c.trigger("tbwuploaderror",[a])}})});e("input[type=file]").on("change",function(e){try{o=e.target.files[0]}catch(r){o=e.target.value}})}};a.addBtnDef("upload",l)}}}})}(jQuery); |