webinar/candy-plugins/colors-xhtml/candy.js

97 lines
2.9 KiB
JavaScript

/* global Candy, jQuery */
var CandyShop = (function(self) { return self; }(CandyShop || {}));
CandyShop.ColorsXhtml = (function(self, Candy, $) {
var _numColors,
_currentColor = '',
_colors = [
'#333',
'#c4322b',
'#37991e',
'#1654c9',
'#66379b',
'#ba7318',
'#32938a',
'#9e2274'
];
self.init = function(colors) {
if(colors && colors.length) {
_colors = colors;
}
_numColors = _colors.length;
self.applyTranslations();
$(Candy).on('candy:view.message.before-send', function(e, args) {
if(_currentColor !== '' && $.trim(args.message) !== '') {
args.xhtmlMessage = '<span style="color:' + _currentColor + '">' + Candy.Util.Parser.escape(args.message) + '</span>';
}
});
if(Candy.Util.cookieExists('candyshop-colors-xhtml-current')) {
var color = Candy.Util.getCookie('candyshop-colors-xhtml-current');
if(_colors.indexOf(color) !== -1) {
_currentColor = color;
}
}
var html = '<li id="colors-control" data-tooltip="' + $.i18n._('candyshopColorsXhtmlMessagecolor') + '"><span style="color:' + _currentColor + ';background-color:' + _currentColor +'" id="colors-control-indicator"></span></li>';
$('#emoticons-icon').after(html);
$('#colors-control').click(function() {
CandyShop.ColorsXhtml.showPicker(this);
});
};
self.showPicker = function(elem) {
elem = $(elem);
var pos = elem.offset(),
menu = $('#context-menu'),
content = $('ul', menu),
colors = '',
i;
$('#tooltip').hide();
for(i = _numColors-1; i >= 0; i--) {
colors = '<span style="color:' + _colors[i] + ';background-color:' + _colors[i] + ';" data-color="' + _colors[i] + '"></span>' + colors;
}
content.html('<li class="colors">' + colors + '</li>');
content.find('span').click(function() {
_currentColor = $(this).attr('data-color');
$('#colors-control-indicator').attr('style', 'color:' + _currentColor + ';background-color:' + _currentColor);
Candy.Util.setCookie('candyshop-colors-xhtml-current', _currentColor, 365);
Candy.View.Pane.Room.setFocusToForm(Candy.View.getCurrent().roomJid);
menu.hide();
});
var posLeft = Candy.Util.getPosLeftAccordingToWindowBounds(menu, pos.left),
posTop = Candy.Util.getPosTopAccordingToWindowBounds(menu, pos.top);
menu.css({'left': posLeft.px, 'top': posTop.px, backgroundPosition: posLeft.backgroundPositionAlignment + ' ' + posTop.backgroundPositionAlignment});
menu.fadeIn('fast');
return true;
};
self.applyTranslations = function() {
var translations = {
'en' : 'Message Color',
'ru' : 'Цвет сообщения',
'de' : 'Farbe für Nachrichten',
'fr' : 'Couleur des messages',
'nl' : 'Berichtkleur',
'es' : 'Color de los mensajes'
};
$.each(translations, function(k, v) {
if(Candy.View.Translation[k]) {
Candy.View.Translation[k].candyshopColorsXhtmlMessagecolor = v;
}
});
};
return self;
}(CandyShop.ColorsXhtml || {}, Candy, jQuery));