scratch – Blame information for rev 125

Subversion Repositories:
Rev:
Rev Author Line No. Line
58 office 1 /* ===========================================================
2 * trumbowyg.colors.js v1.2
3 * Colors picker plugin for Trumbowyg
4 * http://alex-d.github.com/Trumbowyg
5 * ===========================================================
6 * Author : Alexandre Demode (Alex-D)
7 * Twitter : @AlexandreDemode
8 * Website : alex-d.fr
9 */
10  
11 (function ($) {
12 'use strict';
13  
14 $.extend(true, $.trumbowyg, {
15 langs: {
16 // jshint camelcase:false
17 cs: {
18 foreColor: 'Barva textu',
19 backColor: 'Barva pozadí'
20 },
21 en: {
22 foreColor: 'Text color',
23 backColor: 'Background color'
24 },
25 fr: {
26 foreColor: 'Couleur du texte',
27 backColor: 'Couleur de fond'
28 },
29 sk: {
30 foreColor: 'Farba textu',
31 backColor: 'Farba pozadia'
32 },
33 zh_cn: {
34 foreColor: '文字颜色',
35 backColor: '背景颜色'
125 office 36 },
37 ja: {
38 foreColor: '文字色',
39 backColor: '背景色'
58 office 40 }
41 }
42 });
43 // jshint camelcase:true
44  
45  
46 function hex(x) {
47 return ('0' + parseInt(x).toString(16)).slice(-2);
48 }
49  
50 function colorToHex(rgb) {
51 if (rgb.search('rgb') === -1) {
52 return rgb.replace('#', '');
53 } else if (rgb === 'rgba(0, 0, 0, 0)') {
54 return 'transparent';
55 } else {
56 rgb = rgb.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+))?\)$/);
57 return hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]);
58 }
59 }
60  
61 function colorTagHandler(element, trumbowyg) {
62 var tags = [];
63  
64 if(!element.style){
65 return tags;
66 }
67  
68 // background color
69 if (element.style.backgroundColor !== '') {
70 var backColor = colorToHex(element.style.backgroundColor);
71 if (trumbowyg.o.plugins.colors.colorList.indexOf(backColor) >= 0) {
72 tags.push('backColor' + backColor);
73 } else {
74 tags.push('backColorFree');
75 }
76 }
77  
78 // text color
79 var foreColor;
80 if (element.style.color !== '') {
81 foreColor = colorToHex(element.style.color);
82 } else if (element.hasAttribute('color')) {
83 foreColor = colorToHex(element.getAttribute('color'));
84 }
85 if (foreColor) {
86 if (trumbowyg.o.plugins.colors.colorList.indexOf(foreColor) >= 0) {
87 tags.push('foreColor' + foreColor);
88 } else {
89 tags.push('foreColorFree');
90 }
91 }
92  
93 return tags;
94 }
95  
96 var defaultOptions = {
97 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']
98 };
99  
100 // Add all colors in two dropdowns
101 $.extend(true, $.trumbowyg, {
102 plugins: {
103 color: {
104 init: function (trumbowyg) {
105 trumbowyg.o.plugins.colors = trumbowyg.o.plugins.colors || defaultOptions;
106 var foreColorBtnDef = {
107 dropdown: buildDropdown('foreColor', trumbowyg)
108 },
109 backColorBtnDef = {
110 dropdown: buildDropdown('backColor', trumbowyg)
111 };
112  
113 trumbowyg.addBtnDef('foreColor', foreColorBtnDef);
114 trumbowyg.addBtnDef('backColor', backColorBtnDef);
115 },
116 tagHandler: colorTagHandler
117 }
118 }
119 });
120  
121 function buildDropdown(fn, trumbowyg) {
122 var dropdown = [];
123  
124 $.each(trumbowyg.o.plugins.colors.colorList, function (i, color) {
125 var btn = fn + color,
126 btnDef = {
127 fn: fn,
128 forceCss: true,
129 param: '#' + color,
130 style: 'background-color: #' + color + ';'
131 };
132 trumbowyg.addBtnDef(btn, btnDef);
133 dropdown.push(btn);
134 });
135  
136 var removeColorButtonName = fn + 'Remove',
137 removeColorBtnDef = {
138 fn: 'removeFormat',
139 param: fn,
140 style: 'background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAG0lEQVQIW2NkQAAfEJMRmwBYhoGBYQtMBYoAADziAp0jtJTgAAAAAElFTkSuQmCC);'
141 };
142 trumbowyg.addBtnDef(removeColorButtonName, removeColorBtnDef);
143 dropdown.push(removeColorButtonName);
144  
145 // add free color btn
146 var freeColorButtonName = fn + 'Free',
147 freeColorBtnDef = {
148 fn: function () {
149 trumbowyg.openModalInsert(trumbowyg.lang[fn],
150 {
151 color: {
152 label: fn,
153 value: '#FFFFFF'
154 }
155 },
156 // callback
157 function (values) {
158 trumbowyg.execCmd(fn, values.color);
159 return true;
160 }
161 );
162 },
163 text: '#',
164 // style adjust for displaying the text
165 style: 'text-indent: 0;line-height: 20px;padding: 0 5px;'
166 };
167 trumbowyg.addBtnDef(freeColorButtonName, freeColorBtnDef);
168 dropdown.push(freeColorButtonName);
169  
170 return dropdown;
171 }
172 })(jQuery);