bootsy 0.1.7 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +2 -2
- data/app/assets/javascripts/bootsy/bootstrap-wysihtml5.js +146 -129
- data/app/assets/javascripts/bootsy/{bootsy.js.erb → bootsy.js} +67 -23
- data/app/assets/javascripts/bootsy/locales/bootsy.pt-BR.js +8 -0
- data/app/assets/stylesheets/bootsy/bootstrap-wysihtml5.css +1 -1
- data/app/helpers/bootsy/application_helper.rb +1 -1
- data/config/locales/en.yml +1 -3
- data/config/locales/pt-BR.yml +1 -3
- data/lib/bootsy/form_helper.rb +10 -26
- data/lib/bootsy/version.rb +1 -1
- metadata +33 -32
data/README.md
CHANGED
@@ -106,12 +106,12 @@ You can set the image sizes available (small, medium, large and/or its original)
|
|
106
106
|
|
107
107
|
## I18n
|
108
108
|
|
109
|
-
Bootsy defines some i18n keys. The english translation is automatically added to your `config/locales` directory as `bootsy.en.yml`. You can follow that template in order to translate Bootsy
|
109
|
+
Bootsy defines some i18n keys. The ruby english translation is automatically added to your `config/locales` directory as `bootsy.en.yml`. You can follow that template in order to translate Bootsy to your language. You can find some examples [here](https://github.com/volmer/bootsy/tree/master/config/locales). It is also necessary to add a translation for Bootstrap-wysihtml5, the javascript editor, in your assets pipeline. Instructions [here](https://github.com/jhollingworth/bootstrap-wysihtml5#i18n). If you are using the alert for unsaved changes, you have to define a translation for it as well. Just follow [this example](https://github.com/volmer/bootsy/tree/master/app/assets/bootsy/locales/bootsy.pt-BR.js).
|
110
110
|
|
111
111
|
|
112
112
|
## Mongoid support
|
113
113
|
|
114
|
-
|
114
|
+
By default, Bootsy only supports ActiveRecord. In order to use Bootsy with Mongoid, please use [Bootsy-Mongoid](https://github.com/volmer/bootsy-mongoid) instead.
|
115
115
|
|
116
116
|
|
117
117
|
## Bootsy with SimpleForm
|
@@ -1,116 +1,129 @@
|
|
1
1
|
!function($, wysi) {
|
2
2
|
"use strict";
|
3
3
|
|
4
|
-
var
|
5
|
-
|
6
|
-
|
7
|
-
"
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
"
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
"<
|
73
|
-
"</
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
"
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
"</li>"
|
106
|
-
|
107
|
-
|
4
|
+
var tpl = {
|
5
|
+
"font-styles": function(locale, options) {
|
6
|
+
var size = (options && options.size) ? ' btn-'+options.size : '';
|
7
|
+
return "<li class='dropdown'>" +
|
8
|
+
"<a class='btn dropdown-toggle" + size + "' data-toggle='dropdown' href='#'>" +
|
9
|
+
"<i class='icon-font'></i> <span class='current-font'>" + locale.font_styles.normal + "</span> <b class='caret'></b>" +
|
10
|
+
"</a>" +
|
11
|
+
"<ul class='dropdown-menu'>" +
|
12
|
+
"<li><a data-wysihtml5-command='formatBlock' data-wysihtml5-command-value='div' tabindex='-1'>" + locale.font_styles.normal + "</a></li>" +
|
13
|
+
"<li><a data-wysihtml5-command='formatBlock' data-wysihtml5-command-value='h1' tabindex='-1'>" + locale.font_styles.h1 + "</a></li>" +
|
14
|
+
"<li><a data-wysihtml5-command='formatBlock' data-wysihtml5-command-value='h2' tabindex='-1'>" + locale.font_styles.h2 + "</a></li>" +
|
15
|
+
"<li><a data-wysihtml5-command='formatBlock' data-wysihtml5-command-value='h3' tabindex='-1'>" + locale.font_styles.h3 + "</a></li>" +
|
16
|
+
"</ul>" +
|
17
|
+
"</li>";
|
18
|
+
},
|
19
|
+
|
20
|
+
"emphasis": function(locale, options) {
|
21
|
+
var size = (options && options.size) ? ' btn-'+options.size : '';
|
22
|
+
return "<li>" +
|
23
|
+
"<div class='btn-group'>" +
|
24
|
+
"<a class='btn" + size + "' data-wysihtml5-command='bold' title='CTRL+B' tabindex='-1'>" + locale.emphasis.bold + "</a>" +
|
25
|
+
"<a class='btn" + size + "' data-wysihtml5-command='italic' title='CTRL+I' tabindex='-1'>" + locale.emphasis.italic + "</a>" +
|
26
|
+
"<a class='btn" + size + "' data-wysihtml5-command='underline' title='CTRL+U' tabindex='-1'>" + locale.emphasis.underline + "</a>" +
|
27
|
+
"</div>" +
|
28
|
+
"</li>";
|
29
|
+
},
|
30
|
+
|
31
|
+
"lists": function(locale, options) {
|
32
|
+
var size = (options && options.size) ? ' btn-'+options.size : '';
|
33
|
+
return "<li>" +
|
34
|
+
"<div class='btn-group'>" +
|
35
|
+
"<a class='btn" + size + "' data-wysihtml5-command='insertUnorderedList' title='" + locale.lists.unordered + "' tabindex='-1'><i class='icon-list'></i></a>" +
|
36
|
+
"<a class='btn" + size + "' data-wysihtml5-command='insertOrderedList' title='" + locale.lists.ordered + "' tabindex='-1'><i class='icon-th-list'></i></a>" +
|
37
|
+
"<a class='btn" + size + "' data-wysihtml5-command='Outdent' title='" + locale.lists.outdent + "' tabindex='-1'><i class='icon-indent-right'></i></a>" +
|
38
|
+
"<a class='btn" + size + "' data-wysihtml5-command='Indent' title='" + locale.lists.indent + "' tabindex='-1'><i class='icon-indent-left'></i></a>" +
|
39
|
+
"</div>" +
|
40
|
+
"</li>";
|
41
|
+
},
|
42
|
+
|
43
|
+
"link": function(locale, options) {
|
44
|
+
var size = (options && options.size) ? ' btn-'+options.size : '';
|
45
|
+
return "<li>" +
|
46
|
+
"<div class='bootstrap-wysihtml5-insert-link-modal modal hide fade'>" +
|
47
|
+
"<div class='modal-header'>" +
|
48
|
+
"<a class='close' data-dismiss='modal'>×</a>" +
|
49
|
+
"<h3>" + locale.link.insert + "</h3>" +
|
50
|
+
"</div>" +
|
51
|
+
"<div class='modal-body'>" +
|
52
|
+
"<input value='http://' class='bootstrap-wysihtml5-insert-link-url input-xlarge'>" +
|
53
|
+
"</div>" +
|
54
|
+
"<div class='modal-footer'>" +
|
55
|
+
"<a href='#' class='btn' data-dismiss='modal'>" + locale.link.cancel + "</a>" +
|
56
|
+
"<a href='#' class='btn btn-primary' data-dismiss='modal'>" + locale.link.insert + "</a>" +
|
57
|
+
"</div>" +
|
58
|
+
"</div>" +
|
59
|
+
"<a class='btn" + size + "' data-wysihtml5-command='createLink' title='" + locale.link.insert + "' tabindex='-1'><i class='icon-share'></i></a>" +
|
60
|
+
"</li>";
|
61
|
+
},
|
62
|
+
|
63
|
+
"image": function(locale, options) {
|
64
|
+
var size = (options && options.size) ? ' btn-'+options.size : '';
|
65
|
+
return "<li>" +
|
66
|
+
"<div class='bootstrap-wysihtml5-insert-image-modal modal hide fade'>" +
|
67
|
+
"<div class='modal-header'>" +
|
68
|
+
"<a class='close' data-dismiss='modal'>×</a>" +
|
69
|
+
"<h3>" + locale.image.insert + "</h3>" +
|
70
|
+
"</div>" +
|
71
|
+
"<div class='modal-body'>" +
|
72
|
+
"<input value='http://' class='bootstrap-wysihtml5-insert-image-url input-xlarge'>" +
|
73
|
+
"</div>" +
|
74
|
+
"<div class='modal-footer'>" +
|
75
|
+
"<a href='#' class='btn' data-dismiss='modal'>" + locale.image.cancel + "</a>" +
|
76
|
+
"<a href='#' class='btn btn-primary' data-dismiss='modal'>" + locale.image.insert + "</a>" +
|
77
|
+
"</div>" +
|
78
|
+
"</div>" +
|
79
|
+
"<a class='btn" + size + "' data-wysihtml5-command='insertImage' title='" + locale.image.insert + "' tabindex='-1'><i class='icon-picture'></i></a>" +
|
80
|
+
"</li>";
|
81
|
+
},
|
82
|
+
|
83
|
+
"html": function(locale, options) {
|
84
|
+
var size = (options && options.size) ? ' btn-'+options.size : '';
|
85
|
+
return "<li>" +
|
86
|
+
"<div class='btn-group'>" +
|
87
|
+
"<a class='btn" + size + "' data-wysihtml5-action='change_view' title='" + locale.html.edit + "' tabindex='-1'><i class='icon-pencil'></i></a>" +
|
88
|
+
"</div>" +
|
89
|
+
"</li>";
|
90
|
+
},
|
91
|
+
|
92
|
+
"color": function(locale, options) {
|
93
|
+
var size = (options && options.size) ? ' btn-'+options.size : '';
|
94
|
+
return "<li class='dropdown'>" +
|
95
|
+
"<a class='btn dropdown-toggle" + size + "' data-toggle='dropdown' href='#' tabindex='-1'>" +
|
96
|
+
"<span class='current-color'>" + locale.colours.black + "</span> <b class='caret'></b>" +
|
97
|
+
"</a>" +
|
98
|
+
"<ul class='dropdown-menu'>" +
|
99
|
+
"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='black'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='black'>" + locale.colours.black + "</a></li>" +
|
100
|
+
"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='silver'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='silver'>" + locale.colours.silver + "</a></li>" +
|
101
|
+
"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='gray'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='gray'>" + locale.colours.gray + "</a></li>" +
|
102
|
+
"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='maroon'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='maroon'>" + locale.colours.maroon + "</a></li>" +
|
103
|
+
"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='red'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='red'>" + locale.colours.red + "</a></li>" +
|
104
|
+
"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='purple'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='purple'>" + locale.colours.purple + "</a></li>" +
|
105
|
+
"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='green'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='green'>" + locale.colours.green + "</a></li>" +
|
106
|
+
"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='olive'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='olive'>" + locale.colours.olive + "</a></li>" +
|
107
|
+
"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='navy'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='navy'>" + locale.colours.navy + "</a></li>" +
|
108
|
+
"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='blue'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='blue'>" + locale.colours.blue + "</a></li>" +
|
109
|
+
"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='orange'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='orange'>" + locale.colours.orange + "</a></li>" +
|
110
|
+
"</ul>" +
|
111
|
+
"</li>";
|
112
|
+
}
|
113
|
+
};
|
114
|
+
|
115
|
+
var templates = function(key, locale, options) {
|
116
|
+
return tpl[key](locale, options);
|
108
117
|
};
|
109
118
|
|
110
119
|
|
111
120
|
var Wysihtml5 = function(el, options) {
|
112
121
|
this.el = el;
|
113
|
-
|
122
|
+
var toolbarOpts = options || defaultOptions;
|
123
|
+
for(var t in toolbarOpts.customTemplates) {
|
124
|
+
tpl[t] = toolbarOpts.customTemplates[t];
|
125
|
+
}
|
126
|
+
this.toolbar = this.createToolbar(el, toolbarOpts);
|
114
127
|
this.editor = this.createEditor(options);
|
115
128
|
|
116
129
|
window.editor = this.editor;
|
@@ -161,7 +174,7 @@
|
|
161
174
|
}
|
162
175
|
|
163
176
|
if(value === true) {
|
164
|
-
toolbar.append(templates(key, locale[culture]));
|
177
|
+
toolbar.append(templates(key, locale[culture], options));
|
165
178
|
|
166
179
|
if(key === "html") {
|
167
180
|
this.initHtml(toolbar);
|
@@ -175,8 +188,8 @@
|
|
175
188
|
this.initInsertImage(toolbar);
|
176
189
|
}
|
177
190
|
|
178
|
-
if(key == "
|
179
|
-
this.
|
191
|
+
if(key == "customCommand") {
|
192
|
+
this.initCustomCommand(toolbar, options.customCommandCallback);
|
180
193
|
}
|
181
194
|
}
|
182
195
|
}
|
@@ -217,10 +230,16 @@
|
|
217
230
|
var urlInput = insertImageModal.find('.bootstrap-wysihtml5-insert-image-url');
|
218
231
|
var insertButton = insertImageModal.find('a.btn-primary');
|
219
232
|
var initialValue = urlInput.val();
|
233
|
+
var caretBookmark;
|
220
234
|
|
221
235
|
var insertImage = function() {
|
222
236
|
var url = urlInput.val();
|
223
237
|
urlInput.val(initialValue);
|
238
|
+
self.editor.currentView.element.focus();
|
239
|
+
if (caretBookmark) {
|
240
|
+
self.editor.composer.selection.setBookmark(caretBookmark);
|
241
|
+
caretBookmark = null;
|
242
|
+
}
|
224
243
|
self.editor.composer.commands.exec("insertImage", url);
|
225
244
|
};
|
226
245
|
|
@@ -245,6 +264,8 @@
|
|
245
264
|
var activeButton = $(this).hasClass("wysihtml5-command-active");
|
246
265
|
|
247
266
|
if (!activeButton) {
|
267
|
+
self.editor.currentView.element.focus(false);
|
268
|
+
caretBookmark = self.editor.composer.selection.getBookmark();
|
248
269
|
insertImageModal.modal('show');
|
249
270
|
insertImageModal.on('click.dismiss.modal', '[data-dismiss="modal"]', function(e) {
|
250
271
|
e.stopPropagation();
|
@@ -257,12 +278,14 @@
|
|
257
278
|
});
|
258
279
|
},
|
259
280
|
|
260
|
-
|
261
|
-
|
281
|
+
initCustomCommand: function(toolbar, callback) {
|
282
|
+
var self = this;
|
283
|
+
|
284
|
+
toolbar.find('a[data-wysihtml5-command=customCommand]').click(function() {
|
262
285
|
var activeButton = $(this).hasClass("wysihtml5-command-active");
|
263
286
|
|
264
287
|
if (!activeButton) {
|
265
|
-
callback(
|
288
|
+
callback(self.editor);
|
266
289
|
return false;
|
267
290
|
}
|
268
291
|
else {
|
@@ -277,10 +300,16 @@
|
|
277
300
|
var urlInput = insertLinkModal.find('.bootstrap-wysihtml5-insert-link-url');
|
278
301
|
var insertButton = insertLinkModal.find('a.btn-primary');
|
279
302
|
var initialValue = urlInput.val();
|
303
|
+
var caretBookmark;
|
280
304
|
|
281
305
|
var insertLink = function() {
|
282
306
|
var url = urlInput.val();
|
283
307
|
urlInput.val(initialValue);
|
308
|
+
self.editor.currentView.element.focus();
|
309
|
+
if (caretBookmark) {
|
310
|
+
self.editor.composer.selection.setBookmark(caretBookmark);
|
311
|
+
caretBookmark = null;
|
312
|
+
}
|
284
313
|
self.editor.composer.commands.exec("createLink", {
|
285
314
|
href: url,
|
286
315
|
target: "_blank",
|
@@ -310,7 +339,9 @@
|
|
310
339
|
var activeButton = $(this).hasClass("wysihtml5-command-active");
|
311
340
|
|
312
341
|
if (!activeButton) {
|
313
|
-
|
342
|
+
self.editor.currentView.element.focus(false);
|
343
|
+
caretBookmark = self.editor.composer.selection.getBookmark();
|
344
|
+
insertLinkModal.appendTo('body').modal('show');
|
314
345
|
insertLinkModal.on('click.dismiss.modal', '[data-dismiss="modal"]', function(e) {
|
315
346
|
e.stopPropagation();
|
316
347
|
});
|
@@ -370,8 +401,7 @@
|
|
370
401
|
"html": false,
|
371
402
|
"link": true,
|
372
403
|
"image": true,
|
373
|
-
|
374
|
-
imageUploadCallback: undefined,
|
404
|
+
customCommand: false,
|
375
405
|
events: {},
|
376
406
|
parserRules: {
|
377
407
|
classes: {
|
@@ -391,9 +421,7 @@
|
|
391
421
|
"wysiwyg-color-blue" : 1,
|
392
422
|
"wysiwyg-color-teal" : 1,
|
393
423
|
"wysiwyg-color-aqua" : 1,
|
394
|
-
"wysiwyg-color-orange" : 1
|
395
|
-
"wysiwyg-float-left": 1,
|
396
|
-
"wysiwyg-float-right": 1
|
424
|
+
"wysiwyg-color-orange" : 1
|
397
425
|
},
|
398
426
|
tags: {
|
399
427
|
"b": {},
|
@@ -406,23 +434,13 @@
|
|
406
434
|
"h2": {},
|
407
435
|
"h3": {},
|
408
436
|
"blockquote": {},
|
409
|
-
"small": {},
|
410
|
-
"p": {},
|
411
|
-
"cite": {
|
412
|
-
"check_attributes": {
|
413
|
-
"title": "alt"
|
414
|
-
}
|
415
|
-
},
|
416
437
|
"u": 1,
|
417
438
|
"img": {
|
418
439
|
"check_attributes": {
|
419
440
|
"width": "numbers",
|
420
441
|
"alt": "alt",
|
421
|
-
"src": "
|
442
|
+
"src": "url",
|
422
443
|
"height": "numbers"
|
423
|
-
},
|
424
|
-
"add_class": {
|
425
|
-
"align": "align_img"
|
426
444
|
}
|
427
445
|
},
|
428
446
|
"a": {
|
@@ -493,4 +511,3 @@
|
|
493
511
|
};
|
494
512
|
|
495
513
|
}(window.jQuery, window.wysihtml5);
|
496
|
-
|
@@ -1,8 +1,12 @@
|
|
1
|
-
<%# encoding: UTF-8 %>
|
2
|
-
|
3
1
|
window.Bootsy = (function(){
|
4
2
|
|
5
|
-
var Bootsy = {unsavedChanges: false, editor: false, editorOptions: {}, eventCallbacks: {'loaded': []}, triggeredEvents: []};
|
3
|
+
var Bootsy = {caretBookmark: false, unsavedChanges: false, editor: false, editorOptions: {}, eventCallbacks: {'loaded': []}, triggeredEvents: []};
|
4
|
+
|
5
|
+
Bootsy.translations = {
|
6
|
+
en: {
|
7
|
+
alert_unsaved: 'You have unsaved changes.'
|
8
|
+
}
|
9
|
+
};
|
6
10
|
|
7
11
|
Bootsy.on = function(eventName, callback){
|
8
12
|
Bootsy.eventCallbacks[eventName].push(callback);
|
@@ -33,41 +37,86 @@ window.Bootsy = (function(){
|
|
33
37
|
};
|
34
38
|
|
35
39
|
Bootsy.openImageGallery = function(editor){
|
40
|
+
editor.currentView.element.focus(false);
|
41
|
+
Bootsy.caretBookmark = editor.composer.selection.getBookmark();
|
36
42
|
$('#bootsy_image_gallery').modal('show');
|
37
43
|
};
|
38
44
|
|
39
45
|
Bootsy.insertImage = function(image, editor){
|
40
46
|
$('#bootsy_image_gallery').modal('hide');
|
47
|
+
editor.currentView.element.focus();
|
48
|
+
if (Bootsy.caretBookmark) {
|
49
|
+
editor.composer.selection.setBookmark(Bootsy.caretBookmark);
|
50
|
+
Bootsy.caretBookmark = null;
|
51
|
+
}
|
41
52
|
editor.composer.commands.exec("insertImage", image);
|
42
53
|
}
|
43
54
|
|
44
55
|
Bootsy.alertUnsavedChanges = function(){
|
45
56
|
if(Bootsy.unsavedChanges){
|
46
|
-
return
|
57
|
+
return Bootsy.translations[Bootsy.locale].alert_unsaved;
|
47
58
|
}
|
48
59
|
};
|
49
60
|
|
50
61
|
Bootsy.ready = function(){
|
51
62
|
if($('textarea.bootsy_text_area').length > 0){
|
52
|
-
|
53
|
-
|
63
|
+
Bootsy.locale = $('textarea.bootsy_text_area').attr('data-locale');
|
64
|
+
|
65
|
+
var templates = {
|
66
|
+
customCommand: function(locale, options) {
|
67
|
+
var size = (options && options.size) ? ' btn-'+options.size : '';
|
68
|
+
return "<li>" +
|
69
|
+
"<a class='btn" + size + "' data-wysihtml5-command='customCommand' title='" + locale.image.insert + "' tabindex='-1'><i class='icon-picture'></i></a>" +
|
70
|
+
"</li>";
|
71
|
+
},
|
72
|
+
};
|
73
|
+
|
74
|
+
Bootsy.editorOptions = {
|
75
|
+
parserRules: {
|
76
|
+
classes: {
|
77
|
+
"wysiwyg-float-left": 1,
|
78
|
+
"wysiwyg-float-right": 1
|
79
|
+
},
|
80
|
+
|
81
|
+
tags: {
|
82
|
+
"small": {},
|
83
|
+
"p": {},
|
84
|
+
"cite": {
|
85
|
+
"check_attributes": {
|
86
|
+
"title": "alt"
|
87
|
+
}
|
88
|
+
},
|
89
|
+
"img": {
|
90
|
+
"check_attributes": {
|
91
|
+
"src": "src"
|
92
|
+
},
|
93
|
+
"add_class": {
|
94
|
+
"align": "align_img"
|
95
|
+
}
|
96
|
+
},
|
97
|
+
}
|
98
|
+
},
|
99
|
+
color: true,
|
100
|
+
locale: Bootsy.locale,
|
101
|
+
customTemplates: templates
|
102
|
+
};
|
54
103
|
|
55
104
|
Bootsy.editorOptions.stylesheets = ["/assets/bootsy/bootsy.css"];
|
56
105
|
|
57
|
-
if($('textarea.bootsy_text_area').attr('data-
|
106
|
+
if($('textarea.bootsy_text_area').attr('data-image') == 'false'){
|
58
107
|
Bootsy.editorOptions.image = false;
|
59
108
|
}else{
|
60
109
|
|
61
|
-
if($('textarea.bootsy_text_area').attr('data-
|
110
|
+
if($('textarea.bootsy_text_area').attr('data-uploader') != 'false'){
|
62
111
|
Bootsy.editorOptions.image = false;
|
63
|
-
Bootsy.editorOptions.
|
64
|
-
Bootsy.editorOptions.
|
112
|
+
Bootsy.editorOptions.customCommand = true;
|
113
|
+
Bootsy.editorOptions.customCommandCallback = Bootsy.openImageGallery;
|
65
114
|
|
66
115
|
element = $('#bootsy_image_gallery');
|
67
116
|
|
68
117
|
element.parents('form').after(element);
|
69
118
|
|
70
|
-
element.
|
119
|
+
element.on('click', 'a.refresh_btn', function(e){
|
71
120
|
$(this).hide();
|
72
121
|
Bootsy.progressBar(element);
|
73
122
|
});
|
@@ -76,11 +125,6 @@ window.Bootsy = (function(){
|
|
76
125
|
Bootsy.progressBar(element);
|
77
126
|
});
|
78
127
|
|
79
|
-
// element.find('#new_image').live('ajax:before', function(e){
|
80
|
-
// console.log('sending...')
|
81
|
-
// Bootsy.progressBar(element);
|
82
|
-
// });
|
83
|
-
|
84
128
|
element.modal({show: false});
|
85
129
|
element.on('shown', function(){
|
86
130
|
Bootsy.refreshGallery(element);
|
@@ -94,7 +138,7 @@ window.Bootsy = (function(){
|
|
94
138
|
e.stopPropagation();
|
95
139
|
});
|
96
140
|
|
97
|
-
element.
|
141
|
+
element.on('click', 'ul.dropdown-menu a.insert', function(e){
|
98
142
|
var imagePrefix = "/"+$(this).attr('data-image-size')+"_";
|
99
143
|
if($(this).attr('data-image-size') == 'original'){
|
100
144
|
imagePrefix = '/';
|
@@ -112,12 +156,12 @@ window.Bootsy = (function(){
|
|
112
156
|
}
|
113
157
|
}
|
114
158
|
|
115
|
-
if($('textarea.bootsy_text_area').attr('data-
|
116
|
-
if($('textarea.bootsy_text_area').attr('data-
|
117
|
-
if($('textarea.bootsy_text_area').attr('data-
|
118
|
-
if($('textarea.bootsy_text_area').attr('data-
|
119
|
-
if($('textarea.bootsy_text_area').attr('data-
|
120
|
-
if($('textarea.bootsy_text_area').attr('data-
|
159
|
+
if($('textarea.bootsy_text_area').attr('data-font-styles') == 'false') Bootsy.editorOptions['font-styles'] = false;
|
160
|
+
if($('textarea.bootsy_text_area').attr('data-emphasis') == 'false') Bootsy.editorOptions.emphasis = false;
|
161
|
+
if($('textarea.bootsy_text_area').attr('data-lists') == 'false') Bootsy.editorOptions.lists = false;
|
162
|
+
if($('textarea.bootsy_text_area').attr('data-html') == 'true') Bootsy.editorOptions.html = true;
|
163
|
+
if($('textarea.bootsy_text_area').attr('data-link') == 'false') Bootsy.editorOptions.link = false;
|
164
|
+
if($('textarea.bootsy_text_area').attr('data-color') == 'false') Bootsy.editorOptions.color = false;
|
121
165
|
|
122
166
|
Bootsy.editor = $('textarea.bootsy_text_area').wysihtml5(Bootsy.editorOptions).data("wysihtml5").editor;
|
123
167
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Bootsy
|
2
2
|
module ApplicationHelper
|
3
3
|
def refresh_btn gallery, collection
|
4
|
-
link_to t('bootsy.refresh'), [bootsy, resource_or_nil(gallery), collection], remote: true, :class => 'btn btn-mini refresh_btn'
|
4
|
+
link_to t('bootsy.action.refresh'), [bootsy, resource_or_nil(gallery), collection], remote: true, :class => 'btn btn-mini refresh_btn'
|
5
5
|
end
|
6
6
|
|
7
7
|
def resource_or_nil resource
|
data/config/locales/en.yml
CHANGED
data/config/locales/pt-BR.yml
CHANGED
data/lib/bootsy/form_helper.rb
CHANGED
@@ -1,43 +1,27 @@
|
|
1
1
|
module Bootsy
|
2
2
|
module FormHelper
|
3
3
|
def bootsy_area object, method, options = {}
|
4
|
-
|
5
4
|
foreign_container = options.delete :container
|
6
|
-
enable_uploader = true
|
7
5
|
|
8
|
-
|
9
|
-
|
10
|
-
end
|
6
|
+
data = options.delete(:editor_options) || {}
|
7
|
+
data[:locale] = I18n.locale
|
11
8
|
|
12
|
-
|
13
|
-
|
14
|
-
unless editor_options.nil?
|
15
|
-
enable_uploader = false if editor_options[:uploader] == false
|
16
|
-
options[:'data-alert-unsaved'] = 'false' if editor_options[:alert_unsaved] == false
|
17
|
-
options[:'data-enable-font-styles'] = 'false' if editor_options[:font_styles] == false
|
18
|
-
options[:'data-enable-emphasis'] = 'false' if editor_options[:emphasis] == false
|
19
|
-
options[:'data-enable-lists'] = 'false' if editor_options[:lists] == false
|
20
|
-
options[:'data-enable-html'] = 'true' if editor_options[:html] == true
|
21
|
-
options[:'data-enable-link'] = 'false' if editor_options[:link] == false
|
22
|
-
options[:'data-enable-image'] = 'false' if editor_options[:image] == false
|
23
|
-
options[:'data-enable-color'] = 'false' if editor_options[:color] == false
|
24
|
-
end
|
9
|
+
data[:uploader] = false unless foreign_container.kind_of?(Container) || (foreign_container.nil? && object.kind_of?(Container))
|
25
10
|
|
26
|
-
|
11
|
+
enable_uploader = !(data[:uploader] == false)
|
12
|
+
|
13
|
+
options[:data] = options[:data] ? options[:data] + data : data
|
27
14
|
|
28
15
|
object_name = object.class.name.underscore
|
29
16
|
|
30
|
-
output =
|
31
|
-
|
32
|
-
output = self.render 'bootsy/images/modal', {container: foreign_container || object} if enable_uploader
|
17
|
+
output = enable_uploader ? self.render('bootsy/images/modal', {container: foreign_container || object}) : raw('')
|
33
18
|
|
34
19
|
options[:class] = (options[:class].nil? ? [] : (options[:class].kind_of?(Array) ? options[:class] : [options[:class]])) + [:bootsy_text_area]
|
20
|
+
|
35
21
|
output += self.text_area object_name, method, options
|
36
22
|
|
37
|
-
if enable_uploader
|
38
|
-
|
39
|
-
output += self.hidden_field object_name, :bootsy_image_gallery_id, :class => 'bootsy_image_gallery_id'
|
40
|
-
end
|
23
|
+
if enable_uploader && (foreign_container.nil? || (foreign_container == object))
|
24
|
+
output += self.hidden_field object_name, :bootsy_image_gallery_id, :class => 'bootsy_image_gallery_id'
|
41
25
|
end
|
42
26
|
|
43
27
|
output
|
data/lib/bootsy/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bootsy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-02-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mini_magick
|
@@ -34,7 +34,7 @@ dependencies:
|
|
34
34
|
requirements:
|
35
35
|
- - ~>
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version: 0.
|
37
|
+
version: 0.8.0
|
38
38
|
type: :runtime
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -42,7 +42,7 @@ dependencies:
|
|
42
42
|
requirements:
|
43
43
|
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: 0.
|
45
|
+
version: 0.8.0
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: remotipart
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -98,7 +98,7 @@ dependencies:
|
|
98
98
|
requirements:
|
99
99
|
- - ~>
|
100
100
|
- !ruby/object:Gem::Version
|
101
|
-
version: '2.
|
101
|
+
version: '2.12'
|
102
102
|
type: :development
|
103
103
|
prerelease: false
|
104
104
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -106,7 +106,7 @@ dependencies:
|
|
106
106
|
requirements:
|
107
107
|
- - ~>
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version: '2.
|
109
|
+
version: '2.12'
|
110
110
|
- !ruby/object:Gem::Dependency
|
111
111
|
name: factory_girl_rails
|
112
112
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,7 +114,7 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - ~>
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '4.
|
117
|
+
version: '4.2'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -122,7 +122,7 @@ dependencies:
|
|
122
122
|
requirements:
|
123
123
|
- - ~>
|
124
124
|
- !ruby/object:Gem::Version
|
125
|
-
version: '4.
|
125
|
+
version: '4.2'
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
127
|
name: database_cleaner
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
@@ -130,7 +130,7 @@ dependencies:
|
|
130
130
|
requirements:
|
131
131
|
- - ~>
|
132
132
|
- !ruby/object:Gem::Version
|
133
|
-
version: '0.
|
133
|
+
version: '0.9'
|
134
134
|
type: :development
|
135
135
|
prerelease: false
|
136
136
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -138,7 +138,7 @@ dependencies:
|
|
138
138
|
requirements:
|
139
139
|
- - ~>
|
140
140
|
- !ruby/object:Gem::Version
|
141
|
-
version: '0.
|
141
|
+
version: '0.9'
|
142
142
|
- !ruby/object:Gem::Dependency
|
143
143
|
name: cucumber-rails
|
144
144
|
requirement: !ruby/object:Gem::Requirement
|
@@ -163,44 +163,45 @@ extensions: []
|
|
163
163
|
extra_rdoc_files: []
|
164
164
|
files:
|
165
165
|
- app/uploaders/bootsy/image_uploader.rb
|
166
|
-
- app/views/bootsy/images/_index.html.erb
|
167
|
-
- app/views/bootsy/images/_new.html.erb
|
168
166
|
- app/views/bootsy/images/index.js.erb
|
169
|
-
- app/views/bootsy/images/
|
170
|
-
- app/views/bootsy/images/create.js.erb
|
167
|
+
- app/views/bootsy/images/_index.html.erb
|
171
168
|
- app/views/bootsy/images/destroy.js.erb
|
169
|
+
- app/views/bootsy/images/create.js.erb
|
170
|
+
- app/views/bootsy/images/_modal.html.erb
|
171
|
+
- app/views/bootsy/images/_new.html.erb
|
172
172
|
- app/controllers/bootsy/application_controller.rb
|
173
173
|
- app/controllers/bootsy/images_controller.rb
|
174
|
+
- app/helpers/bootsy/application_helper.rb
|
174
175
|
- app/assets/javascripts/bootsy.js
|
175
|
-
- app/assets/javascripts/bootsy/bootsy.js.erb
|
176
|
-
- app/assets/javascripts/bootsy/bootstrap-wysihtml5.js
|
177
|
-
- app/assets/javascripts/bootsy/wysihtml5.js
|
178
176
|
- app/assets/javascripts/bootsy/locales/bootstrap-wysihtml5.pt-BR.js
|
177
|
+
- app/assets/javascripts/bootsy/locales/bootsy.pt-BR.js
|
178
|
+
- app/assets/javascripts/bootsy/bootsy.js
|
179
|
+
- app/assets/javascripts/bootsy/wysihtml5.js
|
180
|
+
- app/assets/javascripts/bootsy/bootstrap-wysihtml5.js
|
179
181
|
- app/assets/stylesheets/bootsy.css
|
180
182
|
- app/assets/stylesheets/bootsy/bootstrap-wysihtml5.css
|
181
183
|
- app/assets/stylesheets/bootsy/bootsy.css
|
182
|
-
- app/helpers/bootsy/application_helper.rb
|
183
|
-
- config/cucumber.yml
|
184
|
-
- config/bootsy.yml
|
185
|
-
- config/routes.rb
|
186
|
-
- config/locales/pt-BR.yml
|
187
184
|
- config/locales/en.yml
|
188
|
-
-
|
185
|
+
- config/locales/pt-BR.yml
|
186
|
+
- config/routes.rb
|
187
|
+
- config/bootsy.yml
|
188
|
+
- config/cucumber.yml
|
189
189
|
- db/migrate/20120624171333_create_bootsy_images.rb
|
190
|
-
-
|
191
|
-
- lib/tasks/cucumber.rake
|
192
|
-
- lib/generators/bootsy/USAGE
|
190
|
+
- db/migrate/20120628124845_create_bootsy_image_galleries.rb
|
193
191
|
- lib/generators/bootsy/install_generator.rb
|
194
192
|
- lib/generators/bootsy/templates/bootsy.rb
|
193
|
+
- lib/generators/bootsy/USAGE
|
195
194
|
- lib/bootsy.rb
|
196
|
-
- lib/
|
197
|
-
- lib/
|
198
|
-
- lib/bootsy/activerecord/image.rb
|
195
|
+
- lib/tasks/bootsy_tasks.rake
|
196
|
+
- lib/tasks/cucumber.rake
|
199
197
|
- lib/bootsy/form_helper.rb
|
200
198
|
- lib/bootsy/version.rb
|
199
|
+
- lib/bootsy/activerecord/image_gallery.rb
|
200
|
+
- lib/bootsy/activerecord/image.rb
|
201
|
+
- lib/bootsy/core_ext.rb
|
201
202
|
- lib/bootsy/container.rb
|
202
|
-
- lib/bootsy/engine.rb
|
203
203
|
- lib/bootsy/form_builder.rb
|
204
|
+
- lib/bootsy/engine.rb
|
204
205
|
- MIT-LICENSE
|
205
206
|
- Rakefile
|
206
207
|
- README.md
|
@@ -218,7 +219,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
218
219
|
version: '0'
|
219
220
|
segments:
|
220
221
|
- 0
|
221
|
-
hash:
|
222
|
+
hash: 2775965369323801409
|
222
223
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
223
224
|
none: false
|
224
225
|
requirements:
|
@@ -227,7 +228,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
227
228
|
version: '0'
|
228
229
|
segments:
|
229
230
|
- 0
|
230
|
-
hash:
|
231
|
+
hash: 2775965369323801409
|
231
232
|
requirements: []
|
232
233
|
rubyforge_project:
|
233
234
|
rubygems_version: 1.8.24
|