bhf 1.0.0.beta10 → 1.0.0.beta11

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,6 @@
1
1
  //= require turbolinks
2
2
  //= require activestorage
3
- //= require ./mootools-core-1.5.0-full-compat.js
4
- //= require ./mootools-more-1.5.0.js
3
+ //= require ./MooTools-More-1.6.0.js
5
4
  //= require ./mootools_ujs
6
5
  //= require ./trix
7
6
  //= require_tree ./locales/
@@ -94,17 +94,17 @@ this.MooEditable = new Class({
94
94
  }.bind(this));
95
95
  this.render();
96
96
  },
97
-
97
+
98
98
  toElement: function(){
99
99
  return this.textarea;
100
100
  },
101
-
101
+
102
102
  render: function(){
103
103
  var self = this;
104
-
104
+
105
105
  // Dimensions
106
106
  var dimensions = this.options.dimensions || this.textarea.getSize();
107
-
107
+
108
108
  // Build the container
109
109
  this.container = new Element('div', {
110
110
  id: (this.textarea.id) ? this.textarea.id + '-mooeditable-container' : null,
@@ -116,7 +116,7 @@ this.MooEditable = new Class({
116
116
 
117
117
  // Override all textarea styles
118
118
  this.textarea.addClass('mooeditable-textarea').setStyle('height', dimensions.y);
119
-
119
+
120
120
  // Build the iframe
121
121
  this.iframe = new IFrame({
122
122
  'class': 'mooeditable-iframe',
@@ -126,16 +126,16 @@ this.MooEditable = new Class({
126
126
  height: dimensions.y
127
127
  }
128
128
  });
129
-
129
+
130
130
  this.toolbar = new MooEditable.UI.Toolbar({
131
131
  onItemAction: function(){
132
- var args = Array.from(arguments);
132
+ var args = Array.convert(arguments);
133
133
  var item = args[0];
134
134
  self.action(item.name, args);
135
135
  }
136
136
  });
137
137
  this.attach.delay(1, this);
138
-
138
+
139
139
  // Update the event for textarea's corresponding labels
140
140
  if (this.options.handleLabel && this.textarea.id) $$('label[for="'+this.textarea.id+'"]').addEvent('click', function(e){
141
141
  if (self.mode != 'iframe') return;
@@ -151,7 +151,7 @@ this.MooEditable = new Class({
151
151
  if (self.mode == 'iframe') self.saveContent();
152
152
  });
153
153
  }
154
-
154
+
155
155
  this.fireEvent('render', this);
156
156
  },
157
157
 
@@ -160,7 +160,7 @@ this.MooEditable = new Class({
160
160
 
161
161
  // Assign view mode
162
162
  this.mode = 'iframe';
163
-
163
+
164
164
  // Editor iframe state
165
165
  this.editorDisabled = false;
166
166
 
@@ -168,9 +168,9 @@ this.MooEditable = new Class({
168
168
  this.container.wraps(this.textarea);
169
169
 
170
170
  this.textarea.setStyle('display', 'none');
171
-
171
+
172
172
  this.iframe.setStyle('display', '').inject(this.textarea, 'before');
173
-
173
+
174
174
  Object.each(this.dialogs, function(action, name){
175
175
  Object.each(action, function(dialog){
176
176
  document.id(dialog).inject(self.iframe, 'before');
@@ -196,7 +196,7 @@ this.MooEditable = new Class({
196
196
  // contentWindow and document references
197
197
  this.win = this.iframe.contentWindow;
198
198
  this.doc = this.win.document;
199
-
199
+
200
200
  // Deal with weird quirks on Gecko
201
201
  if (Browser.firefox) this.doc.designMode = 'On';
202
202
 
@@ -228,7 +228,7 @@ this.MooEditable = new Class({
228
228
  } else {
229
229
  document.id(this.doc.body);
230
230
  }
231
-
231
+
232
232
  this.setContent(this.textarea.get('value'));
233
233
 
234
234
  // Bind all events
@@ -256,7 +256,7 @@ this.MooEditable = new Class({
256
256
  self.doc.body.addListener(event, self['editor' + event.capitalize()].bind(self));
257
257
  });
258
258
  this.textarea.addEvent('keypress', this.textarea.retrieve('mooeditable:textareaKeyListener', this.keyListener.bind(this)));
259
-
259
+
260
260
  // Fix window focus event not firing on Firefox 2
261
261
  if (Browser.firefox2) this.doc.addEvent('focus', function(){
262
262
  self.win.fireEvent('focus').focus();
@@ -279,18 +279,18 @@ this.MooEditable = new Class({
279
279
  document.id(this.toolbar).inject(this.container, 'top');
280
280
  this.toolbar.render(this.actions);
281
281
  }
282
-
282
+
283
283
  if (this.options.disabled) this.disable();
284
284
 
285
285
  this.selection = new MooEditable.Selection(this.win);
286
-
286
+
287
287
  this.oldContent = this.getContent();
288
-
288
+
289
289
  this.fireEvent('attach', this);
290
-
290
+
291
291
  return this;
292
292
  },
293
-
293
+
294
294
  detach: function(){
295
295
  this.saveContent();
296
296
  this.textarea.setStyle('display', '').removeClass('mooeditable-textarea').inject(this.container, 'before');
@@ -299,141 +299,141 @@ this.MooEditable = new Class({
299
299
  this.fireEvent('detach', this);
300
300
  return this;
301
301
  },
302
-
302
+
303
303
  enable: function(){
304
304
  this.editorDisabled = false;
305
305
  this.toolbar.enable();
306
306
  return this;
307
307
  },
308
-
308
+
309
309
  disable: function(){
310
310
  this.editorDisabled = true;
311
311
  this.toolbar.disable();
312
312
  return this;
313
313
  },
314
-
314
+
315
315
  editorFocus: function(e){
316
316
  this.oldContent = '';
317
317
  this.fireEvent('editorFocus', [e, this]);
318
318
  },
319
-
319
+
320
320
  editorBlur: function(e){
321
321
  this.oldContent = this.saveContent().getContent();
322
322
  this.fireEvent('editorBlur', [e, this]);
323
323
  },
324
-
324
+
325
325
  editorMouseUp: function(e){
326
326
  if (this.editorDisabled){
327
327
  e.stop();
328
328
  return;
329
329
  }
330
-
330
+
331
331
  if (this.options.toolbar) this.checkStates();
332
-
332
+
333
333
  this.fireEvent('editorMouseUp', [e, this]);
334
334
  },
335
-
335
+
336
336
  editorMouseDown: function(e){
337
337
  if (this.editorDisabled){
338
338
  e.stop();
339
339
  return;
340
340
  }
341
-
341
+
342
342
  this.fireEvent('editorMouseDown', [e, this]);
343
343
  },
344
-
344
+
345
345
  editorMouseOver: function(e){
346
346
  if (this.editorDisabled){
347
347
  e.stop();
348
348
  return;
349
349
  }
350
-
350
+
351
351
  this.fireEvent('editorMouseOver', [e, this]);
352
352
  },
353
-
353
+
354
354
  editorMouseOut: function(e){
355
355
  if (this.editorDisabled){
356
356
  e.stop();
357
357
  return;
358
358
  }
359
-
359
+
360
360
  this.fireEvent('editorMouseOut', [e, this]);
361
361
  },
362
-
362
+
363
363
  editorMouseEnter: function(e){
364
364
  if (this.editorDisabled){
365
365
  e.stop();
366
366
  return;
367
367
  }
368
-
368
+
369
369
  if (this.oldContent && this.getContent() != this.oldContent){
370
370
  this.focus();
371
371
  this.fireEvent('editorPaste', [e, this]);
372
372
  }
373
-
373
+
374
374
  this.fireEvent('editorMouseEnter', [e, this]);
375
375
  },
376
-
376
+
377
377
  editorMouseLeave: function(e){
378
378
  if (this.editorDisabled){
379
379
  e.stop();
380
380
  return;
381
381
  }
382
-
382
+
383
383
  this.fireEvent('editorMouseLeave', [e, this]);
384
384
  },
385
-
385
+
386
386
  editorContextMenu: function(e){
387
387
  if (this.editorDisabled){
388
388
  e.stop();
389
389
  return;
390
390
  }
391
-
391
+
392
392
  this.fireEvent('editorContextMenu', [e, this]);
393
393
  },
394
-
394
+
395
395
  editorClick: function(e){
396
396
  // make images selectable and draggable in Safari
397
397
  if (Browser.safari || Browser.chrome){
398
398
  var el = e.target;
399
399
  if (Element.get(el, 'tag') == 'img'){
400
-
400
+
401
401
  // safari doesnt like dragging locally linked images
402
402
  if (this.options.baseURL){
403
403
  if (el.getProperty('src').indexOf('http://') == -1){
404
404
  el.setProperty('src', this.options.baseURL + el.getProperty('src'));
405
405
  }
406
406
  }
407
-
407
+
408
408
  this.selection.selectNode(el);
409
409
  this.checkStates();
410
410
  }
411
411
  }
412
-
412
+
413
413
  this.fireEvent('editorClick', [e, this]);
414
414
  },
415
-
415
+
416
416
  editorDoubleClick: function(e){
417
417
  this.fireEvent('editorDoubleClick', [e, this]);
418
418
  },
419
-
419
+
420
420
  editorKeyPress: function(e){
421
421
  if (this.editorDisabled){
422
422
  e.stop();
423
423
  return;
424
424
  }
425
-
425
+
426
426
  this.keyListener(e);
427
-
427
+
428
428
  this.fireEvent('editorKeyPress', [e, this]);
429
429
  },
430
-
430
+
431
431
  editorKeyUp: function(e){
432
432
  if (this.editorDisabled){
433
433
  e.stop();
434
434
  return;
435
435
  }
436
-
436
+
437
437
  var c = e.code;
438
438
  // 33-36 = pageup, pagedown, end, home; 45 = insert
439
439
  if (this.options.toolbar && (/^enter|left|up|right|down|delete|backspace$/i.test(e.key) || (c >= 33 && c <= 36) || c == 45 || e.meta || e.control)){
@@ -444,31 +444,31 @@ this.MooEditable = new Class({
444
444
  this.checkStates();
445
445
  }
446
446
  }
447
-
447
+
448
448
  this.fireEvent('editorKeyUp', [e, this]);
449
449
  },
450
-
450
+
451
451
  editorKeyDown: function(e){
452
452
  if (this.editorDisabled){
453
453
  e.stop();
454
454
  return;
455
455
  }
456
-
456
+
457
457
  if (e.key == 'enter'){
458
458
  if (this.options.paragraphise){
459
459
  if (e.shift && (Browser.safari || Browser.chrome)){
460
460
  var s = this.selection;
461
461
  var r = s.getRange();
462
-
462
+
463
463
  // Insert BR element
464
464
  var br = this.doc.createElement('br');
465
465
  r.insertNode(br);
466
-
466
+
467
467
  // Place caret after BR
468
468
  r.setStartAfter(br);
469
469
  r.setEndAfter(br);
470
470
  s.setRange(r);
471
-
471
+
472
472
  // Could not place caret after BR then insert an nbsp entity and move the caret
473
473
  if (s.getSelection().focusNode == br.previousSibling){
474
474
  var nbsp = this.doc.createTextNode('\u00a0');
@@ -478,10 +478,10 @@ this.MooEditable = new Class({
478
478
  s.selectNode(nbsp);
479
479
  s.collapse(1);
480
480
  }
481
-
481
+
482
482
  // Scroll to new position, scrollIntoView can't be used due to bug: http://bugs.webkit.org/show_bug.cgi?id=16117
483
483
  this.win.scrollTo(0, Element.getOffsets(s.getRange().startContainer).y);
484
-
484
+
485
485
  e.preventDefault();
486
486
  } else if (Browser.firefox || Browser.safari || Browser.chrome){
487
487
  var node = this.selection.getNode();
@@ -502,7 +502,7 @@ this.MooEditable = new Class({
502
502
  }
503
503
  }
504
504
  }
505
-
505
+
506
506
  if (Browser.opera){
507
507
  var ctrlmeta = e.control || e.meta;
508
508
  if (ctrlmeta && e.key == 'x'){
@@ -513,37 +513,37 @@ this.MooEditable = new Class({
513
513
  this.fireEvent('editorPaste', [e, this]);
514
514
  }
515
515
  }
516
-
516
+
517
517
  this.fireEvent('editorKeyDown', [e, this]);
518
518
  },
519
-
519
+
520
520
  editorCut: function(e){
521
521
  if (this.editorDisabled){
522
522
  e.stop();
523
523
  return;
524
524
  }
525
-
525
+
526
526
  this.fireEvent('editorCut', [e, this]);
527
527
  },
528
-
528
+
529
529
  editorCopy: function(e){
530
530
  if (this.editorDisabled){
531
531
  e.stop();
532
532
  return;
533
533
  }
534
-
534
+
535
535
  this.fireEvent('editorCopy', [e, this]);
536
536
  },
537
-
537
+
538
538
  editorPaste: function(e){
539
539
  if (this.editorDisabled){
540
540
  e.stop();
541
541
  return;
542
542
  }
543
-
543
+
544
544
  this.fireEvent('editorPaste', [e, this]);
545
545
  },
546
-
546
+
547
547
  keyListener: function(e){
548
548
  var key = (Browser.Platform.mac) ? e.meta : e.control;
549
549
  if (!key || !this.keys[e.key]) return;
@@ -620,7 +620,7 @@ this.MooEditable = new Class({
620
620
  }
621
621
  return this;
622
622
  },
623
-
623
+
624
624
  ensureRootElement: function(val){
625
625
  if (this.options.rootElement){
626
626
  var el = new Element('div', {html: val.trim()});
@@ -648,7 +648,7 @@ this.MooEditable = new Class({
648
648
  if (start >= 0 && create){
649
649
  var newel = new Element(this.options.rootElement, {html: html});
650
650
  el.replaceChild(newel, el.childNodes[start]);
651
- for (var k=start+1; k<i; k++){
651
+ for (var k=start+1; k<i; k++){
652
652
  el.removeChild(el.childNodes[k]);
653
653
  length--;
654
654
  i--;
@@ -668,7 +668,7 @@ this.MooEditable = new Class({
668
668
  var element = this.selection.getNode();
669
669
  if (!element) return;
670
670
  if (typeOf(element) != 'element') return;
671
-
671
+
672
672
  this.actions.each(function(action){
673
673
  var item = this.toolbar.getItem(action);
674
674
  if (!item) return;
@@ -676,20 +676,20 @@ this.MooEditable = new Class({
676
676
 
677
677
  var states = MooEditable.Actions[action]['states'];
678
678
  if (!states) return;
679
-
679
+
680
680
  // custom checkState
681
681
  if (typeOf(states) == 'function'){
682
682
  states.attempt([document.id(element), item], this);
683
683
  return;
684
684
  }
685
-
685
+
686
686
  try{
687
687
  if (this.doc.queryCommandState(action)){
688
688
  item.activate();
689
689
  return;
690
690
  }
691
691
  } catch(e){}
692
-
692
+
693
693
  if (states.tags){
694
694
  var el = element;
695
695
  do {
@@ -722,13 +722,13 @@ this.MooEditable = new Class({
722
722
 
723
723
  cleanup: function(source){
724
724
  if (!this.options.cleanup) return source.trim();
725
-
725
+
726
726
  do {
727
727
  var oSource = source;
728
-
728
+
729
729
  // replace base URL references: ie localize links
730
730
  if (this.options.baseURL){
731
- source = source.replace('="' + this.options.baseURL, '="');
731
+ source = source.replace('="' + this.options.baseURL, '="');
732
732
  }
733
733
 
734
734
  // Webkit cleanup
@@ -820,11 +820,11 @@ this.MooEditable = new Class({
820
820
  if (this.options.xhtml){
821
821
  source = source.replace(/<img([^>]+)(\s*[^\/])>(<\/img>)*/gi, '<img$1$2 />');
822
822
  }
823
-
823
+
824
824
  //remove double <p> tags and empty <p> tags
825
825
  source = source.replace(/<p>(?:\s*)<p>/g, '<p>');
826
826
  source = source.replace(/<\/p>\s*<\/p>/g, '</p>');
827
-
827
+
828
828
  // Replace <br>s inside <pre> automatically added by some browsers
829
829
  source = source.replace(/<pre[^>]*>.*?<\/pre>/gi, function(match){
830
830
  return match.replace(/<br ?\/?>/gi, '\n');
@@ -961,7 +961,7 @@ MooEditable.Selection = new Class({
961
961
 
962
962
  return document.id(el);
963
963
  }
964
-
964
+
965
965
  return document.id(r.item ? r.item(0) : r.parentElement());
966
966
  },
967
967
 
@@ -996,18 +996,18 @@ MooEditable.Selection = new Class({
996
996
  // Wrapper functions to be used internally and for plugins, defaults to en-US
997
997
  var phrases = {};
998
998
  MooEditable.Locale = {
999
-
999
+
1000
1000
  define: function(key, value){
1001
1001
  if (typeOf(window.Locale) != 'null') return Locale.define('en-US', 'MooEditable', key, value);
1002
1002
  if (typeOf(key) == 'object') Object.merge(phrases, key);
1003
1003
  else phrases[key] = value;
1004
1004
  },
1005
-
1005
+
1006
1006
  get: function(key){
1007
1007
  if (typeOf(window.Locale) != 'null') return Locale.get('MooEditable.' + key);
1008
1008
  return key ? phrases[key] : '';
1009
1009
  }
1010
-
1010
+
1011
1011
  };
1012
1012
 
1013
1013
  MooEditable.Locale.define({
@@ -1044,18 +1044,18 @@ MooEditable.UI.Toolbar= new Class({
1044
1044
  */
1045
1045
  'class': ''
1046
1046
  },
1047
-
1047
+
1048
1048
  initialize: function(options){
1049
1049
  this.setOptions(options);
1050
1050
  this.el = new Element('div', {'class': 'mooeditable-ui-toolbar ' + this.options['class']});
1051
1051
  this.items = {};
1052
1052
  this.content = null;
1053
1053
  },
1054
-
1054
+
1055
1055
  toElement: function(){
1056
1056
  return this.el;
1057
1057
  },
1058
-
1058
+
1059
1059
  render: function(actions){
1060
1060
  if (this.content){
1061
1061
  this.el.adopt(this.content);
@@ -1066,7 +1066,7 @@ MooEditable.UI.Toolbar= new Class({
1066
1066
  }
1067
1067
  return this;
1068
1068
  },
1069
-
1069
+
1070
1070
  addItem: function(action){
1071
1071
  var self = this;
1072
1072
  var act = MooEditable.Actions[action];
@@ -1083,15 +1083,15 @@ MooEditable.UI.Toolbar= new Class({
1083
1083
  document.id(item).inject(this.el);
1084
1084
  return item;
1085
1085
  },
1086
-
1086
+
1087
1087
  getItem: function(action){
1088
1088
  return this.items[action];
1089
1089
  },
1090
-
1090
+
1091
1091
  addSeparator: function(){
1092
1092
  return new Element('span', {'class': 'toolbar-separator'}).inject(this.el);
1093
1093
  },
1094
-
1094
+
1095
1095
  itemAction: function(){
1096
1096
  this.fireEvent('itemAction', arguments);
1097
1097
  },
@@ -1109,17 +1109,17 @@ MooEditable.UI.Toolbar= new Class({
1109
1109
  });
1110
1110
  return this;
1111
1111
  },
1112
-
1112
+
1113
1113
  show: function(){
1114
1114
  this.el.setStyle('display', '');
1115
1115
  return this;
1116
1116
  },
1117
-
1117
+
1118
1118
  hide: function(){
1119
1119
  this.el.setStyle('display', 'none');
1120
1120
  return this;
1121
1121
  }
1122
-
1122
+
1123
1123
  });
1124
1124
 
1125
1125
  MooEditable.UI.Button = new Class({
@@ -1143,11 +1143,11 @@ MooEditable.UI.Button = new Class({
1143
1143
  this.name = this.options.name;
1144
1144
  this.render();
1145
1145
  },
1146
-
1146
+
1147
1147
  toElement: function(){
1148
1148
  return this.el;
1149
1149
  },
1150
-
1150
+
1151
1151
  render: function(){
1152
1152
  var self = this;
1153
1153
  var key = (Browser.Platform.mac) ? 'Cmd' : 'Ctrl';
@@ -1164,7 +1164,7 @@ MooEditable.UI.Button = new Class({
1164
1164
  }
1165
1165
  });
1166
1166
  if (this.options.mode != 'icon') this.el.addClass('mooeditable-ui-button-' + this.options.mode);
1167
-
1167
+
1168
1168
  this.active = false;
1169
1169
  this.disabled = false;
1170
1170
 
@@ -1173,20 +1173,20 @@ MooEditable.UI.Button = new Class({
1173
1173
  mouseenter: function(e){ this.addClass('hover'); },
1174
1174
  mouseleave: function(e){ this.removeClass('hover'); }
1175
1175
  });
1176
-
1176
+
1177
1177
  return this;
1178
1178
  },
1179
-
1179
+
1180
1180
  click: function(e){
1181
1181
  e.preventDefault();
1182
1182
  if (this.disabled) return;
1183
1183
  this.action(e);
1184
1184
  },
1185
-
1185
+
1186
1186
  action: function(){
1187
- this.fireEvent('action', [this].concat(Array.from(arguments)));
1187
+ this.fireEvent('action', [this].concat(Array.convert(arguments)));
1188
1188
  },
1189
-
1189
+
1190
1190
  enable: function(){
1191
1191
  if (this.active) this.el.removeClass('onActive');
1192
1192
  if (!this.disabled) return;
@@ -1197,7 +1197,7 @@ MooEditable.UI.Button = new Class({
1197
1197
  });
1198
1198
  return this;
1199
1199
  },
1200
-
1200
+
1201
1201
  disable: function(){
1202
1202
  if (this.disabled) return;
1203
1203
  this.disabled = true;
@@ -1207,20 +1207,20 @@ MooEditable.UI.Button = new Class({
1207
1207
  });
1208
1208
  return this;
1209
1209
  },
1210
-
1210
+
1211
1211
  activate: function(){
1212
1212
  if (this.disabled) return;
1213
1213
  this.active = true;
1214
1214
  this.el.addClass('onActive');
1215
1215
  return this;
1216
1216
  },
1217
-
1217
+
1218
1218
  deactivate: function(){
1219
1219
  this.active = false;
1220
1220
  this.el.removeClass('onActive');
1221
1221
  return this;
1222
1222
  }
1223
-
1223
+
1224
1224
  });
1225
1225
 
1226
1226
  MooEditable.UI.Dialog = new Class({
@@ -1239,7 +1239,7 @@ MooEditable.UI.Dialog = new Class({
1239
1239
  initialize: function(html, options){
1240
1240
  this.setOptions(options);
1241
1241
  this.html = html;
1242
-
1242
+
1243
1243
  var self = this;
1244
1244
  this.el = new Element('div', {
1245
1245
  'class': 'mooeditable-ui-dialog ' + self.options['class'],
@@ -1252,22 +1252,22 @@ MooEditable.UI.Dialog = new Class({
1252
1252
  }
1253
1253
  });
1254
1254
  },
1255
-
1255
+
1256
1256
  toElement: function(){
1257
1257
  return this.el;
1258
1258
  },
1259
-
1259
+
1260
1260
  click: function(){
1261
1261
  this.fireEvent('click', arguments);
1262
1262
  return this;
1263
1263
  },
1264
-
1264
+
1265
1265
  open: function(){
1266
1266
  this.el.setStyle('display', '');
1267
1267
  this.fireEvent('open', this);
1268
1268
  return this;
1269
1269
  },
1270
-
1270
+
1271
1271
  close: function(){
1272
1272
  this.el.setStyle('display', 'none');
1273
1273
  this.fireEvent('close', this);
@@ -1359,7 +1359,7 @@ MooEditable.Actions = {
1359
1359
  }
1360
1360
  }
1361
1361
  },
1362
-
1362
+
1363
1363
  italic: {
1364
1364
  title: MooEditable.Locale.get('italic'),
1365
1365
  options: {
@@ -1395,7 +1395,7 @@ MooEditable.Actions = {
1395
1395
  }
1396
1396
  }
1397
1397
  },
1398
-
1398
+
1399
1399
  underline: {
1400
1400
  title: MooEditable.Locale.get('underline'),
1401
1401
  options: {
@@ -1406,7 +1406,7 @@ MooEditable.Actions = {
1406
1406
  css: {'text-decoration': 'underline'}
1407
1407
  }
1408
1408
  },
1409
-
1409
+
1410
1410
  strikethrough: {
1411
1411
  title: MooEditable.Locale.get('strikethrough'),
1412
1412
  options: {
@@ -1417,46 +1417,46 @@ MooEditable.Actions = {
1417
1417
  css: {'text-decoration': 'line-through'}
1418
1418
  }
1419
1419
  },
1420
-
1420
+
1421
1421
  insertunorderedlist: {
1422
1422
  title: MooEditable.Locale.get('unorderedList'),
1423
1423
  states: {
1424
1424
  tags: ['ul']
1425
1425
  }
1426
1426
  },
1427
-
1427
+
1428
1428
  insertorderedlist: {
1429
1429
  title: MooEditable.Locale.get('orderedList'),
1430
1430
  states: {
1431
1431
  tags: ['ol']
1432
1432
  }
1433
1433
  },
1434
-
1434
+
1435
1435
  indent: {
1436
1436
  title: MooEditable.Locale.get('indent'),
1437
1437
  states: {
1438
1438
  tags: ['blockquote']
1439
1439
  }
1440
1440
  },
1441
-
1441
+
1442
1442
  outdent: {
1443
1443
  title: MooEditable.Locale.get('outdent')
1444
1444
  },
1445
-
1445
+
1446
1446
  undo: {
1447
1447
  title: MooEditable.Locale.get('undo'),
1448
1448
  options: {
1449
1449
  shortcut: 'z'
1450
1450
  }
1451
1451
  },
1452
-
1452
+
1453
1453
  redo: {
1454
1454
  title: MooEditable.Locale.get('redo'),
1455
1455
  options: {
1456
1456
  shortcut: 'y'
1457
1457
  }
1458
1458
  },
1459
-
1459
+
1460
1460
  unlink: {
1461
1461
  title: MooEditable.Locale.get('removeHyperlink')
1462
1462
  },