redactor-rails 0.4.1 → 0.4.2
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.
- checksums.yaml +4 -4
- data/README.md +33 -2
- data/lib/redactor-rails/version.rb +1 -1
- data/vendor/assets/javascripts/redactor-rails/config.js +5 -3
- data/vendor/assets/javascripts/redactor-rails/langs/zh_cn.js +6 -2
- data/vendor/assets/javascripts/redactor-rails/plugins.js +6 -0
- data/vendor/assets/javascripts/redactor-rails/plugins/clips.js +35 -0
- data/vendor/assets/javascripts/redactor-rails/plugins/fontcolor.js +73 -0
- data/vendor/assets/javascripts/redactor-rails/plugins/fontfamily.js +27 -0
- data/vendor/assets/javascripts/redactor-rails/plugins/fontsize.js +27 -0
- data/vendor/assets/javascripts/redactor-rails/plugins/fullscreen.js +146 -0
- data/vendor/assets/javascripts/redactor-rails/plugins/textdirection.js +24 -0
- data/vendor/assets/stylesheets/redactor-rails/css/redactor.css +1 -1
- data/vendor/assets/stylesheets/redactor-rails/plugins.css +3 -0
- data/vendor/assets/stylesheets/redactor-rails/plugins/clips.css +34 -0
- metadata +11 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 472bf4ed25c75361f5e496b0f9112ea424fa3ad4
|
4
|
+
data.tar.gz: fa090720d7f4c96fabc646e7a45e10dca2258c78
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 294f26b31600e64a626c403c96cfe3b13c9e1f55b9bfb3978b289c9083f5b8cbd803338e4e39272dbf5053b10a296c5fadf94e3dce5892ecf6678f425376e1af
|
7
|
+
data.tar.gz: 0470184ffab5856e78966dcf86a057e9e1229b19b3706b893224bfe633595581b5657b892043ed9d18b745d3bf6c297cf87e1111a089b791abe5bac16aa76f60
|
data/README.md
CHANGED
@@ -70,7 +70,7 @@ If you need change some config in redactor, you can
|
|
70
70
|
|
71
71
|
Then generate `app\assets\redactor-rails\config.js`.
|
72
72
|
|
73
|
-
See the [Redactor Documentation](http://
|
73
|
+
See the [Redactor Documentation](http://imperavi.com/redactor/docs/settings/) for a full list of configuration options.
|
74
74
|
|
75
75
|
|
76
76
|
If You Want To setup a new language in Redactor you should do two things:
|
@@ -94,6 +94,37 @@ Add to your `application.js`:
|
|
94
94
|
|
95
95
|
//= require redactor-rails/langs/zh_tw
|
96
96
|
|
97
|
+
### Using plugins
|
98
|
+
|
99
|
+
This gem comes bundled with several Redactor plugins:
|
100
|
+
|
101
|
+
- Fullscreen
|
102
|
+
- Clips
|
103
|
+
- FontColor
|
104
|
+
- FontSize
|
105
|
+
- FontFamily
|
106
|
+
- Text direction
|
107
|
+
|
108
|
+
Full details of these can be found at [Redactor Plugins](http://imperavi.com/redactor/docs/plugins/)
|
109
|
+
|
110
|
+
To include all the plugins just add to your `application.js`:
|
111
|
+
|
112
|
+
//= require redactor-rails/plugins
|
113
|
+
|
114
|
+
and add to your `application.css`:
|
115
|
+
|
116
|
+
*= redactor-rails/plugins
|
117
|
+
|
118
|
+
If you would prefer to pick and choose which plugins to include you can
|
119
|
+
add for example:
|
120
|
+
|
121
|
+
//= require redactor-rails/plugins/fontsize
|
122
|
+
//= require redactor-rails/plugins/fontfamily
|
123
|
+
|
124
|
+
After including the desired plugins they can be configured in the
|
125
|
+
redactor config file as normal.
|
126
|
+
|
127
|
+
|
97
128
|
### Defining a Devise User Model
|
98
129
|
|
99
130
|
By default redactor-rails uses the `User` model.
|
@@ -121,7 +152,7 @@ You may use a different model by:
|
|
121
152
|
```
|
122
153
|
|
123
154
|
```
|
124
|
-
# config/redactor.rb
|
155
|
+
# config/initializers/redactor.rb
|
125
156
|
# Overrides the user class
|
126
157
|
|
127
158
|
module RedactorRails
|
@@ -1,5 +1,4 @@
|
|
1
|
-
|
2
|
-
function(){
|
1
|
+
window.init_redactor = function(){
|
3
2
|
var csrf_token = $('meta[name=csrf-token]').attr('content');
|
4
3
|
var csrf_param = $('meta[name=csrf-param]').attr('content');
|
5
4
|
var params;
|
@@ -12,4 +11,7 @@ $(document).ready(
|
|
12
11
|
"path":"/assets/redactor-rails",
|
13
12
|
"css":"style.css"}
|
14
13
|
);
|
15
|
-
}
|
14
|
+
}
|
15
|
+
|
16
|
+
$(document).ready( window.init_redactor );
|
17
|
+
$(window).bind('page:change', window.init_redactor);
|
@@ -7,6 +7,7 @@ $.Redactor.opts.langs['zh_cn'] = {
|
|
7
7
|
table: '表格',
|
8
8
|
link: '链接',
|
9
9
|
link_insert: '插入链接',
|
10
|
+
link_edit: '编辑链接',
|
10
11
|
unlink: '取消链接',
|
11
12
|
formatting: '样式',
|
12
13
|
paragraph: '段落',
|
@@ -16,6 +17,7 @@ $.Redactor.opts.langs['zh_cn'] = {
|
|
16
17
|
header2: '二级标题',
|
17
18
|
header3: '三级标题',
|
18
19
|
header4: '四级标题',
|
20
|
+
header5: '五级标题'
|
19
21
|
bold: '粗体',
|
20
22
|
italic: '斜体',
|
21
23
|
fontcolor: '字体颜色',
|
@@ -66,6 +68,8 @@ $.Redactor.opts.langs['zh_cn'] = {
|
|
66
68
|
anchor: '锚点',
|
67
69
|
link_new_tab: '在新窗口打开',
|
68
70
|
underline: '下划线',
|
69
|
-
alignment: '对齐方式'
|
71
|
+
alignment: '对齐方式',
|
72
|
+
filename: '文件名 (可选)',
|
73
|
+
edit: '编辑'
|
70
74
|
};
|
71
|
-
})( jQuery );
|
75
|
+
})( jQuery );
|
@@ -0,0 +1,6 @@
|
|
1
|
+
//= require redactor-rails/plugins/clips
|
2
|
+
//= require redactor-rails/plugins/fontcolor
|
3
|
+
//= require redactor-rails/plugins/fontfamily
|
4
|
+
//= require redactor-rails/plugins/fontsize
|
5
|
+
//= require redactor-rails/plugins/fullscreen
|
6
|
+
//= require redactor-rails/plugins/textdirection
|
@@ -0,0 +1,35 @@
|
|
1
|
+
if (!RedactorPlugins) var RedactorPlugins = {};
|
2
|
+
|
3
|
+
RedactorPlugins.clips = {
|
4
|
+
init: function()
|
5
|
+
{
|
6
|
+
var callback = $.proxy(function()
|
7
|
+
{
|
8
|
+
$('#redactor_modal').find('.redactor_clip_link').each($.proxy(function(i, s)
|
9
|
+
{
|
10
|
+
$(s).click($.proxy(function()
|
11
|
+
{
|
12
|
+
this.insertClip($(s).next().html());
|
13
|
+
return false;
|
14
|
+
|
15
|
+
}, this));
|
16
|
+
}, this));
|
17
|
+
|
18
|
+
this.selectionSave();
|
19
|
+
this.bufferSet();
|
20
|
+
|
21
|
+
}, this );
|
22
|
+
|
23
|
+
this.buttonAdd('clips', 'Clips', function(e)
|
24
|
+
{
|
25
|
+
this.modalInit('Clips', '#clipsmodal', 500, callback);
|
26
|
+
});
|
27
|
+
},
|
28
|
+
insertClip: function(html)
|
29
|
+
{
|
30
|
+
this.selectionRestore();
|
31
|
+
this.insertHtml($.trim(html));
|
32
|
+
this.modalClose();
|
33
|
+
}
|
34
|
+
};
|
35
|
+
|
@@ -0,0 +1,73 @@
|
|
1
|
+
if (!RedactorPlugins) var RedactorPlugins = {};
|
2
|
+
|
3
|
+
RedactorPlugins.fontcolor = {
|
4
|
+
init: function()
|
5
|
+
{
|
6
|
+
var colors = ['#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'];
|
7
|
+
var buttons = ['fontcolor', 'backcolor'];
|
8
|
+
|
9
|
+
this.buttonAddSeparator();
|
10
|
+
|
11
|
+
for (var i = 0; i < 2; i++)
|
12
|
+
{
|
13
|
+
var name = buttons[i];
|
14
|
+
|
15
|
+
var $dropdown = $('<div class="redactor_dropdown redactor_dropdown_box_' + name + '" style="display: none; width: 210px;">');
|
16
|
+
|
17
|
+
this.pickerBuild($dropdown, name, colors);
|
18
|
+
$(this.$toolbar).append($dropdown);
|
19
|
+
|
20
|
+
this.buttonAdd(name, this.opts.curLang[name], $.proxy(function(btnName, $button, btnObject, e)
|
21
|
+
{
|
22
|
+
this.dropdownShow(e, btnName);
|
23
|
+
|
24
|
+
}, this));
|
25
|
+
}
|
26
|
+
},
|
27
|
+
pickerBuild: function($dropdown, name, colors)
|
28
|
+
{
|
29
|
+
var rule = 'color';
|
30
|
+
if (name === 'backcolor') rule = 'background-color';
|
31
|
+
|
32
|
+
var _self = this;
|
33
|
+
var onSwatch = function(e)
|
34
|
+
{
|
35
|
+
e.preventDefault();
|
36
|
+
|
37
|
+
var $this = $(this);
|
38
|
+
_self.pickerSet($this.data('rule'), $this.attr('rel'));
|
39
|
+
|
40
|
+
}
|
41
|
+
|
42
|
+
var len = colors.length;
|
43
|
+
for (var z = 0; z < len; z++)
|
44
|
+
{
|
45
|
+
var color = colors[z];
|
46
|
+
|
47
|
+
var $swatch = $('<a rel="' + color + '" data-rule="' + rule +'" href="#" style="float: left; font-size: 0; border: 2px solid #fff; padding: 0; margin: 0; width: 15px; height: 15px;"></a>');
|
48
|
+
$swatch.css('background-color', color);
|
49
|
+
$dropdown.append($swatch);
|
50
|
+
$swatch.on('click', onSwatch);
|
51
|
+
}
|
52
|
+
|
53
|
+
var $elNone = $('<a href="#" style="display: block; clear: both; padding: 4px 0; font-size: 11px; line-height: 1;"></a>')
|
54
|
+
.html(this.opts.curLang.none)
|
55
|
+
.on('click', function(e)
|
56
|
+
{
|
57
|
+
e.preventDefault();
|
58
|
+
_self.pickerSet(rule, false);
|
59
|
+
});
|
60
|
+
|
61
|
+
$dropdown.append($elNone);
|
62
|
+
},
|
63
|
+
pickerSet: function(rule, type)
|
64
|
+
{
|
65
|
+
this.bufferSet();
|
66
|
+
|
67
|
+
this.$editor.focus();
|
68
|
+
this.inlineRemoveStyle(rule);
|
69
|
+
if (type !== false) this.inlineSetStyle(rule, type);
|
70
|
+
if (this.opts.air) this.$air.fadeOut(100);
|
71
|
+
this.sync();
|
72
|
+
}
|
73
|
+
};
|
@@ -0,0 +1,27 @@
|
|
1
|
+
if (!RedactorPlugins) var RedactorPlugins = {};
|
2
|
+
|
3
|
+
RedactorPlugins.fontfamily = {
|
4
|
+
init: function ()
|
5
|
+
{
|
6
|
+
var fonts = [ 'Arial', 'Helvetica', 'Georgia', 'Times New Roman', 'Monospace' ];
|
7
|
+
var that = this;
|
8
|
+
var dropdown = {};
|
9
|
+
|
10
|
+
$.each(fonts, function(i, s)
|
11
|
+
{
|
12
|
+
dropdown['s' + i] = { title: s, callback: function() { that.setFontfamily(s); }};
|
13
|
+
});
|
14
|
+
|
15
|
+
dropdown['remove'] = { title: 'Remove font', callback: function() { that.resetFontfamily(); }};
|
16
|
+
|
17
|
+
this.buttonAdd('fontfamily', 'Change font family', false, dropdown);
|
18
|
+
},
|
19
|
+
setFontfamily: function (value)
|
20
|
+
{
|
21
|
+
this.inlineSetStyle('font-family', value);
|
22
|
+
},
|
23
|
+
resetFontfamily: function()
|
24
|
+
{
|
25
|
+
this.inlineRemoveStyle('font-family');
|
26
|
+
}
|
27
|
+
};
|
@@ -0,0 +1,27 @@
|
|
1
|
+
if (!RedactorPlugins) var RedactorPlugins = {};
|
2
|
+
|
3
|
+
RedactorPlugins.fontsize = {
|
4
|
+
init: function()
|
5
|
+
{
|
6
|
+
var fonts = [10, 11, 12, 14, 16, 18, 20, 24, 28, 30];
|
7
|
+
var that = this;
|
8
|
+
var dropdown = {};
|
9
|
+
|
10
|
+
$.each(fonts, function(i, s)
|
11
|
+
{
|
12
|
+
dropdown['s' + i] = { title: s + 'px', callback: function() { that.setFontsize(s); } };
|
13
|
+
});
|
14
|
+
|
15
|
+
dropdown['remove'] = { title: 'Remove font size', callback: function() { that.resetFontsize(); } };
|
16
|
+
|
17
|
+
this.buttonAdd( 'fontsize', 'Change font size', false, dropdown);
|
18
|
+
},
|
19
|
+
setFontsize: function(size)
|
20
|
+
{
|
21
|
+
this.inlineSetStyle('font-size', size + 'px');
|
22
|
+
},
|
23
|
+
resetFontsize: function()
|
24
|
+
{
|
25
|
+
this.inlineRemoveStyle('font-size');
|
26
|
+
}
|
27
|
+
};
|
@@ -0,0 +1,146 @@
|
|
1
|
+
if (!RedactorPlugins) var RedactorPlugins = {};
|
2
|
+
|
3
|
+
RedactorPlugins.fullscreen = {
|
4
|
+
init: function()
|
5
|
+
{
|
6
|
+
this.fullscreen = false;
|
7
|
+
|
8
|
+
this.buttonAdd('fullscreen', 'Fullscreen', $.proxy(this.toggleFullscreen, this));
|
9
|
+
this.buttonSetRight('fullscreen');
|
10
|
+
|
11
|
+
if (this.opts.fullscreen) this.toggleFullscreen();
|
12
|
+
},
|
13
|
+
toggleFullscreen: function()
|
14
|
+
{
|
15
|
+
var html;
|
16
|
+
|
17
|
+
if (!this.fullscreen)
|
18
|
+
{
|
19
|
+
this.buttonChangeIcon('fullscreen', 'normalscreen');
|
20
|
+
this.buttonActive('fullscreen');
|
21
|
+
this.fullscreen = true;
|
22
|
+
|
23
|
+
if (this.opts.toolbarExternal)
|
24
|
+
{
|
25
|
+
this.toolcss = {};
|
26
|
+
this.boxcss = {};
|
27
|
+
this.toolcss.width = this.$toolbar.css('width');
|
28
|
+
this.toolcss.top = this.$toolbar.css('top');
|
29
|
+
this.toolcss.position = this.$toolbar.css('position');
|
30
|
+
this.boxcss.top = this.$box.css('top');
|
31
|
+
}
|
32
|
+
|
33
|
+
this.fsheight = this.$editor.height();
|
34
|
+
|
35
|
+
if (this.opts.iframe) html = this.get();
|
36
|
+
|
37
|
+
this.tmpspan = $('<span></span>');
|
38
|
+
this.$box.addClass('redactor_box_fullscreen').after(this.tmpspan);
|
39
|
+
|
40
|
+
$('body, html').css('overflow', 'hidden');
|
41
|
+
$('body').prepend(this.$box);
|
42
|
+
|
43
|
+
if (this.opts.iframe) this.fullscreenIframe(html);
|
44
|
+
|
45
|
+
this.fullScreenResize();
|
46
|
+
$(window).resize($.proxy(this.fullScreenResize, this));
|
47
|
+
$(document).scrollTop(0, 0);
|
48
|
+
|
49
|
+
this.focus();
|
50
|
+
this.observeStart();
|
51
|
+
|
52
|
+
}
|
53
|
+
else
|
54
|
+
{
|
55
|
+
this.buttonRemoveIcon('fullscreen', 'normalscreen');
|
56
|
+
this.buttonInactive('fullscreen');
|
57
|
+
this.fullscreen = false;
|
58
|
+
|
59
|
+
$(window).off('resize', $.proxy(this.fullScreenResize, this));
|
60
|
+
$('body, html').css('overflow', '');
|
61
|
+
|
62
|
+
this.$box.removeClass('redactor_box_fullscreen').css({ width: 'auto', height: 'auto' });
|
63
|
+
|
64
|
+
if (this.opts.iframe) html = this.$editor.html();
|
65
|
+
this.tmpspan.after(this.$box).remove();
|
66
|
+
|
67
|
+
if (this.opts.iframe) this.fullscreenIframe(html);
|
68
|
+
else this.sync();
|
69
|
+
|
70
|
+
var height = this.fsheight;
|
71
|
+
if (this.opts.autoresize) height = 'auto';
|
72
|
+
|
73
|
+
if (this.opts.toolbarExternal)
|
74
|
+
{
|
75
|
+
this.$box.css('top', this.boxcss.top);
|
76
|
+
this.$toolbar.css({
|
77
|
+
'width': this.toolcss.width,
|
78
|
+
'top': this.toolcss.top,
|
79
|
+
'position': this.toolcss.position
|
80
|
+
});
|
81
|
+
}
|
82
|
+
|
83
|
+
if (!this.opts.iframe) this.$editor.css('height', height);
|
84
|
+
else this.$frame.css('height', height);
|
85
|
+
|
86
|
+
this.$editor.css('height', height);
|
87
|
+
this.focus();
|
88
|
+
this.observeStart();
|
89
|
+
}
|
90
|
+
},
|
91
|
+
fullscreenIframe: function(html)
|
92
|
+
{
|
93
|
+
this.$editor = this.$frame.contents().find('body').attr({
|
94
|
+
'contenteditable': true,
|
95
|
+
'dir': this.opts.direction
|
96
|
+
});
|
97
|
+
|
98
|
+
// set document & window
|
99
|
+
if (this.$editor[0])
|
100
|
+
{
|
101
|
+
this.document = this.$editor[0].ownerDocument;
|
102
|
+
this.window = this.document.defaultView || window;
|
103
|
+
}
|
104
|
+
|
105
|
+
// iframe css
|
106
|
+
this.iframeAddCss();
|
107
|
+
|
108
|
+
if (this.opts.fullpage) this.setFullpageOnInit(html);
|
109
|
+
else this.set(html);
|
110
|
+
|
111
|
+
if (this.opts.wym) this.$editor.addClass('redactor_editor_wym');
|
112
|
+
},
|
113
|
+
fullScreenResize: function()
|
114
|
+
{
|
115
|
+
if (!this.fullscreen) return false;
|
116
|
+
|
117
|
+
var toolbarHeight = this.$toolbar.height();
|
118
|
+
|
119
|
+
var pad = this.$editor.css('padding-top').replace('px', '');
|
120
|
+
var height = $(window).height() - toolbarHeight;
|
121
|
+
this.$box.width($(window).width() - 2).height(height + toolbarHeight);
|
122
|
+
|
123
|
+
if (this.opts.toolbarExternal)
|
124
|
+
{
|
125
|
+
this.$toolbar.css({
|
126
|
+
'top': '0px',
|
127
|
+
'position': 'absolute',
|
128
|
+
'width': '100%'
|
129
|
+
});
|
130
|
+
|
131
|
+
this.$box.css('top', toolbarHeight + 'px');
|
132
|
+
}
|
133
|
+
|
134
|
+
if (!this.opts.iframe) this.$editor.height(height - (pad * 2));
|
135
|
+
else
|
136
|
+
{
|
137
|
+
setTimeout($.proxy(function()
|
138
|
+
{
|
139
|
+
this.$frame.height(height);
|
140
|
+
|
141
|
+
}, this), 1);
|
142
|
+
}
|
143
|
+
|
144
|
+
this.$editor.height(height);
|
145
|
+
}
|
146
|
+
};
|
@@ -0,0 +1,24 @@
|
|
1
|
+
if (!RedactorPlugins) var RedactorPlugins = {};
|
2
|
+
|
3
|
+
RedactorPlugins.textdirection = {
|
4
|
+
init: function()
|
5
|
+
{
|
6
|
+
var that = this;
|
7
|
+
var dropdown = {};
|
8
|
+
|
9
|
+
dropdown['ltr'] = { title: 'Left to right', callback: function () { that.ltrTextDirection(); } };
|
10
|
+
dropdown['rtl'] = { title: 'Right to left', callback: function () { that.rtlTextDirection(); } };
|
11
|
+
|
12
|
+
this.buttonAdd('direction', 'Change direction', false, dropdown);
|
13
|
+
},
|
14
|
+
rtlTextDirection: function()
|
15
|
+
{
|
16
|
+
this.bufferSet();
|
17
|
+
this.blockSetAttr('dir', 'rtl');
|
18
|
+
},
|
19
|
+
ltrTextDirection: function()
|
20
|
+
{
|
21
|
+
this.bufferSet();
|
22
|
+
this.blockRemoveAttr('dir');
|
23
|
+
}
|
24
|
+
};
|
@@ -0,0 +1,34 @@
|
|
1
|
+
.label-red {
|
2
|
+
color: #fff;
|
3
|
+
background: #c92020;
|
4
|
+
padding: 0 7px;
|
5
|
+
border-radius: 4px;
|
6
|
+
}
|
7
|
+
|
8
|
+
.redactor_clips_box {
|
9
|
+
margin-left: 0;
|
10
|
+
padding-left: 0;
|
11
|
+
list-style: none;
|
12
|
+
max-height: 250px;
|
13
|
+
overflow-x: scroll;
|
14
|
+
}
|
15
|
+
.redactor_clips_box li {
|
16
|
+
border-top: 1px solid #fff;
|
17
|
+
border-bottom: 1px solid #ddd;
|
18
|
+
}
|
19
|
+
.redactor_clips_box li:first-child {
|
20
|
+
border-top: none;
|
21
|
+
}
|
22
|
+
.redactor_clips_box li:last-child {
|
23
|
+
border-bottom: none;
|
24
|
+
}
|
25
|
+
.redactor_clips_box li a {
|
26
|
+
padding: 10px 5px;
|
27
|
+
color: #000;
|
28
|
+
text-decoration: none;
|
29
|
+
font-size: 13px;
|
30
|
+
display: block;
|
31
|
+
}
|
32
|
+
.redactor_clips_box li a:hover {
|
33
|
+
background-color: #fff;
|
34
|
+
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redactor-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sammy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-11-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mime-types
|
@@ -131,12 +131,21 @@ files:
|
|
131
131
|
- vendor/assets/javascripts/redactor-rails/langs/vi.js
|
132
132
|
- vendor/assets/javascripts/redactor-rails/langs/zh_cn.js
|
133
133
|
- vendor/assets/javascripts/redactor-rails/langs/zh_tw.js
|
134
|
+
- vendor/assets/javascripts/redactor-rails/plugins.js
|
135
|
+
- vendor/assets/javascripts/redactor-rails/plugins/clips.js
|
136
|
+
- vendor/assets/javascripts/redactor-rails/plugins/fontcolor.js
|
137
|
+
- vendor/assets/javascripts/redactor-rails/plugins/fontfamily.js
|
138
|
+
- vendor/assets/javascripts/redactor-rails/plugins/fontsize.js
|
139
|
+
- vendor/assets/javascripts/redactor-rails/plugins/fullscreen.js
|
140
|
+
- vendor/assets/javascripts/redactor-rails/plugins/textdirection.js
|
134
141
|
- vendor/assets/javascripts/redactor-rails/redactor.js
|
135
142
|
- vendor/assets/javascripts/redactor-rails/redactor.min.js
|
136
143
|
- vendor/assets/stylesheets/redactor-rails/css/redactor-iframe.css
|
137
144
|
- vendor/assets/stylesheets/redactor-rails/css/redactor.css
|
138
145
|
- vendor/assets/stylesheets/redactor-rails/css/style.css
|
139
146
|
- vendor/assets/stylesheets/redactor-rails/index.css
|
147
|
+
- vendor/assets/stylesheets/redactor-rails/plugins.css
|
148
|
+
- vendor/assets/stylesheets/redactor-rails/plugins/clips.css
|
140
149
|
homepage: https://github.com/SammyLin/redactor-rails
|
141
150
|
licenses: []
|
142
151
|
metadata: {}
|