/* ===========================================================
* trumbowyg.specialchars.js v0.99
* Unicode characters picker plugin for Trumbowyg
* http://alex-d.github.com/Trumbowyg
* ===========================================================
* Author : Renaud Hoyoux (geektortoise)
*/
(function ($) {
'use strict';
var defaultOptions = {
symbolList: [
// currencies
'0024', '20AC', '00A3', '00A2', '00A5', '00A4', '2030', null,
// legal signs
'00A9', '00AE', '2122', null,
// textual sign
'00A7', '00B6', '00C6', '00E6', '0152', '0153', null,
'2022', '25CF', '2023', '25B6', '2B29', '25C6', null,
//maths
'00B1', '00D7', '00F7', '21D2', '21D4', '220F', '2211', '2243', '2264', '2265'
]
};
$.extend(true, $.trumbowyg, {
langs: {
en: {
specialChars: 'Special characters'
},
fr: {
specialChars: 'Caractères spéciaux'
},
ko: {
specialChars: '특수문자'
},
},
plugins: {
specialchars: {
init: function (trumbowyg) {
trumbowyg.o.plugins.specialchars = trumbowyg.o.plugins.specialchars || defaultOptions;
var specialCharsBtnDef = {
dropdown: buildDropdown(trumbowyg)
};
trumbowyg.addBtnDef('specialChars', specialCharsBtnDef);
}
}
}
});
function buildDropdown(trumbowyg) {
var dropdown = [];
$.each(trumbowyg.o.plugins.specialchars.symbolList, function (i, symbol) {
if (symbol === null) {
symbol = ' ';
} else {
symbol = '&#x' + symbol;
}
var btn = symbol.replace(/:/g, ''),
defaultSymbolBtnName = 'symbol-' + btn,
defaultSymbolBtnDef = {
text: symbol,
hasIcon: false,
fn: function () {
var encodedSymbol = String.fromCodePoint(parseInt(symbol.replace('&#', '0')));
trumbowyg.execCmd('insertText', encodedSymbol);
return true;
}
};
trumbowyg.addBtnDef(defaultSymbolBtnName, defaultSymbolBtnDef);
dropdown.push(defaultSymbolBtnName);
});
return dropdown;
}
})(jQuery);