Project

General

Profile

Patch #31385 » RM_31385_formating_toolbar_color_tools_SVN.diff

Jérôme BATAILLE, 2019-05-21 23:53

View differences:

public/javascripts/jstoolbar/jstoolbar.js
471 471
  });
472 472
  return false;
473 473
};
474

  
475
/* Colors menu */
476
jsToolBar.prototype.colorsMenu = function(fn){
477
  var aColors = [
478
    ['#330000','#331900','#333300','#193300','#003300','#003319','#003333','#001933','#000033','#190033','#330033','#330019','#000000'],
479
    ['#660000','#663300','#666600','#336600','#006600','#006633','#006666','#003366','#000066','#330066','#660066','#660033','#202020'],
480
    ['#990000','#994C00','#999900','#4C9900','#009900','#00994C','#009999','#004C99','#000099','#4C0099','#990099','#99004C','#404040'],
481
    ['#CC0000','#CC6600','#CCCC00','#66CC00','#00CC00','#00CC66','#00CCCC','#0066CC','#0000CC','#6600CC','#CC00CC','#CC0066','#606060'],
482
    ['#FF0000','#FF8000','#FFFF00','#80FF00','#00FF00','#00FF80','#00FFFF','#0080FF','#0000FF','#7F00FF','#FF00FF','#FF007F','#808080'],
483
    ['#FF3333','#FF9933','#FFFF33','#99FF33','#33FF33','#33FF99','#33FFFF','#3399FF','#3333FF','#9933FF','#FF33FF','#FF3399','#A0A0A0'],
484
    ['#FF6666','#FFB266','#FFFF66','#B2FF66','#66FF66','#66FFB2','#66FFFF','#66B2FF','#6666FF','#B266FF','#FF66FF','#FF66B2','#C0C0C0'],
485
    ['#FF9999','#FFCC99','#FFFF99','#CCFF99','#99FF99','#99FFCC','#99FFFF','#99CCFF','#9999FF','#CC99FF','#FF99FF','#FF99CC','#E0E0E0'],
486
    ['#FFCCCC','#FFE5CC','#FFFFCC','#E5FFCC','#CCFFCC','#CCFFE5','#CCFFFF','#CCE5FF','#CCCCFF','#E5CCFF','#FFCCFF','#FFCCE5','#FFFFFF']
487
  ];
488
  var menu = $('<table style="position:absolute"></table>');
489
  var alColors = '';
490
  var line;
491
  var cell;
492
  for (var i = 0; i < aColors.length; i++) {
493
    alColors = aColors[i];
494
    line = $('<tr></tr>').appendTo(menu);
495
    for (var j = 0; j < alColors.length; j++) {
496
      cell = $('<td style="background: ' + alColors[j] + '" data-color="' + alColors[j] + '" class="palette"></td>');
497
      cell.appendTo(line);
498
      cell.mouseover(function(){
499
          $(this).addClass('palette-hover');
500
        }).mouseout(function(){
501
          $(this).removeClass('palette-hover');
502
        }).mousedown(function(){
503
          fn($(this).data('color'));
504
        });
505
    }
506
  }
507
  $("body").append(menu);
508
  menu.menu().width(150).position({
509
    my: "left top",
510
    at: "left bottom",
511
    of: this.toolNodes['precode']
512
  });
513
  $(document).on("mousedown", function() {
514
    menu.remove();
515
  });
516
  return false;
517
};
public/stylesheets/jstoolbar.css
124 124
.jstb_precode {
125 125
    background-image: url(../images/jstoolbar/bt_precode.png);
126 126
}
127
.jstb_color {
128
    background-image: url(../images/jstoolbar/bt_color.png);
129
}
130
.jstb_bgcolor {
131
    background-image: url(../images/jstoolbar/bt_bgcolor.png);
132
}
127 133
.jstb_link {
128 134
    background-image: url(../images/jstoolbar/bt_link.png);
129 135
}
......
133 139
.jstb_help {
134 140
    background-image: url(../images/help.png);
135 141
}
142

  
143
table.ui-widget-content td.palette {
144
    width: 12px;
145
    height: 8px;
146
}
147

  
148
table.ui-widget-content td.palette-hover {
149
    border: 2px solid;
150
}
public/javascripts/jstoolbar/textile.js
196 196
// spacer
197 197
jsToolBar.prototype.elements.space4 = {type: 'space'}
198 198

  
199
// Selection Background Color
200
jsToolBar.prototype.elements.bgcolor = {
201
  type: 'button',
202
  title: 'Background Color',
203
  fn: {
204
    wiki: function() {
205
      var This = this;
206
      this.colorsMenu(function(color){
207
        This.encloseSelection('%{background-color:' + color + '}', '%', function(str, prefix, suffix) {
208
          css_tag_start = str.indexOf('%{');
209
          css_tag_end = str.indexOf('}');
210

  
211
          if ( (css_tag_start != -1) && (css_tag_end != -1) ) {
212
            // space added by encloseSelection
213
            if (prefix.charAt(0) == ' ') {
214
              prefix = prefix.substring(1);
215
            }
216

  
217
            // Already present, replace color
218
            bgcolor_tag = str.indexOf('%{background-color:');
219
            bgcolor_tag2 = str.indexOf(';background-color:');
220
            if (bgcolor_tag != -1) {
221
              str = str.replace(/(\%\{background-color\:[A-Za-z0-9#]*)/g, prefix.slice(0, -1));
222
            } else if (bgcolor_tag2 != -1) {
223
              new_bgcolor_tag = ';' + prefix.substring(2).slice(0, -1);
224
              str = str.replace(/(;background-color\:[A-Za-z0-9#]*)/g, new_bgcolor_tag);
225
            } else {
226
              // Insert bgcolor tag before the others
227
              new_bgcolor_tag = prefix.substring(2).slice(0, -1);
228
              end_str = str.substring(css_tag_start + 2)
229
              begin_str = str.substring(0, css_tag_start + 2);
230
              str = begin_str + new_bgcolor_tag + ';' + end_str;
231
            }
232
          } else {
233
            str = prefix + str + suffix;
234
          }
235

  
236
          return str;
237
        });
238
      });
239
    }
240
  }
241
}
242

  
243
// Selection Color
244
jsToolBar.prototype.elements.color = {
245
  type: 'button',
246
  title: 'Text Color',
247
  fn: {
248
    wiki: function() {
249
      var This = this;
250
      this.colorsMenu(function(color){
251
        This.encloseSelection('%{color:' + color + '}', '%', function(str, prefix, suffix) {
252
          css_tag_start = str.indexOf('%{');
253
          css_tag_end = str.indexOf('}');
254

  
255
          if ( (css_tag_start != -1) && (css_tag_end != -1) ) {
256
            // space added by encloseSelection
257
            if (prefix.charAt(0) == ' ') {
258
              prefix = prefix.substring(1);
259
            }
260

  
261
            // Already present, replace color
262
            color_tag = str.indexOf('%{color:');
263
            color_tag2 = str.indexOf(';color:');
264
            if (color_tag != -1) {
265
              str = str.replace(/(\%\{color\:[A-Za-z0-9#]*)/g, prefix.slice(0, -1));
266
            } else if (color_tag2 != -1) {
267
              new_color_tag = ';' + prefix.substring(2).slice(0, -1);
268
              str = str.replace(/(;color\:[A-Za-z0-9#]*)/g, new_color_tag);
269
            } else {
270
              // Insert color tag before the others
271
              new_color_tag = prefix.substring(2).slice(0, -1);
272
              end_str = str.substring(css_tag_start + 2)
273
              begin_str = str.substring(0, css_tag_start + 2);
274
              str = begin_str + new_color_tag + ';' + end_str;
275
            }
276
          } else {
277
            str = prefix + str + suffix;
278
          }
279

  
280
          return str;
281
        });
282
      });
283
    }
284
  }
285
}
286

  
287
// spacer
288
jsToolBar.prototype.elements.space4 = {type: 'space'}
289

  
199 290
// wiki page
200 291
jsToolBar.prototype.elements.link = {
201 292
  type: 'button',
(7-7/9)