ckeditor-bootstrap-rails 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 05563998cb2f0261c6d15d3d31bd2147a4ef9cf7
4
+ data.tar.gz: 39fe9bdb3535fc705e14d75b6a4164a99c68c3a3
5
+ SHA512:
6
+ metadata.gz: 135f31a8ec642819a5b201fa1933aa20196d518483d0bc52b9f47e49856df5ae5baa88584b41c3a56fa28fdec642ebe05f99a810584d81844315b6aa07faf90f
7
+ data.tar.gz: 1df0c150507b00805c58960070b6a680a112f64030f4cecb0ab0fedb359ab53cd60c8c5868c7f88c1983161ceaf2b61861eac668166ddb93704221118085f4d7
@@ -0,0 +1,4 @@
1
+ .bundle/
2
+ log/*.log
3
+ pkg/
4
+ .idea
@@ -0,0 +1,18 @@
1
+ # encoding: utf-8
2
+ require File.expand_path('../lib/ckeditor-bootstrap-rails/version', __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = 'ckeditor-bootstrap-rails'
6
+ s.version = CKEditorBootstrap::VERSION
7
+ s.authors = ['Yaroslav Konoplov']
8
+ s.email = ['the.yivo@gmail.com']
9
+ s.homepage = 'https://github.com/yivo/ckeditor-bootstrap_rails'
10
+ s.summary = 'an asset gemification of the github.com/Kunstmaan/BootstrapCK4-Skin'
11
+ s.description = 'This is ckeditor theme (github.com/Kunstmaan/BootstrapCK4-Skin) integrated with rails'
12
+ s.license = 'MIT'
13
+
14
+ s.executables = `git ls-files -z -- bin/*`.split("\x0").map{ |f| File.basename(f) }
15
+ s.files = `git ls-files -z`.split("\x0")
16
+ s.test_files = `git ls-files -z -- {test,spec,features}/*`.split("\x0")
17
+ s.require_paths = ['lib']
18
+ end
@@ -0,0 +1,2 @@
1
+ require 'ckeditor-bootstrap-rails/version'
2
+ require 'ckeditor-bootstrap-rails/engine' if defined?(Rails)
@@ -0,0 +1,41 @@
1
+ module CKEditorBootstrap
2
+ module Rails
3
+ class Engine < ::Rails::Engine
4
+
5
+ initializer :images do |app|
6
+ images = %w(
7
+ arrow.png
8
+
9
+ close.png
10
+ lock.png
11
+ lock-open.png
12
+ refresh.png
13
+
14
+ hidpi/close.png
15
+ hidpi/lock.png
16
+ hidpi/lock-open.png
17
+ hidpi/refresh.png
18
+
19
+ icons.png
20
+ icons_hidpi.png
21
+ )
22
+
23
+ images.map! { |path| "ckeditor-bootstrap/#{path}" }
24
+ app.config.assets.precompile += images
25
+ end
26
+
27
+ initializer :stylesheets do |app|
28
+
29
+ # Add scripts to precompile
30
+ # editor.css can be requested by fonts plugin
31
+ # contents.css is requested from ckeditor iframe
32
+ app.config.assets.precompile += %w(
33
+ ckeditor-bootstrap/contents.css
34
+ ckeditor-bootstrap/editor.css
35
+ )
36
+ end
37
+
38
+ end
39
+ end
40
+ end
41
+
@@ -0,0 +1,3 @@
1
+ module CKEditorBootstrap
2
+ VERSION = '1.0.0'
3
+ end
@@ -0,0 +1,274 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.
3
+ * For licensing, see LICENSE.md or http://ckeditor.com/license
4
+ */
5
+
6
+ /*
7
+ skin.js
8
+ =========
9
+
10
+ In this file we interact with the CKEditor JavaScript API to register the skin
11
+ and enable additional skin related features.
12
+
13
+ The level of complexity of this file depends on the features available in the
14
+ skin. There is only one mandatory line of code to be included here, which is
15
+ setting CKEDITOR.skin.name. All the rest is optional, but recommended to be
16
+ implemented as they make higher quality skins.
17
+
18
+ For this skin, the following tasks are achieved in this file:
19
+
20
+ 1. Register the skin.
21
+ 2. Register browser specific skin files.
22
+ 3. Define the "Chameleon" feature.
23
+ 4. Register the skin icons, to have them used on the development version of
24
+ the skin.
25
+ */
26
+
27
+ // 1. Register the skin
28
+ // ----------------------
29
+ // The CKEDITOR.skin.name property must be set to the skin name. This is a
30
+ // lower-cased name, which must match the skin folder name as well as the value
31
+ // used on config.skin to tell the editor to use the skin.
32
+ //
33
+ // This is the only mandatory property to be defined in this file.
34
+ CKEDITOR.skin.name = 'bootstrapck';
35
+
36
+ // 2. Register browser specific skin files
37
+ // -----------------------------------------
38
+ // (http://docs.cksource.com/CKEditor_4.x/Skin_SDK/Browser_Hacks)
39
+ //
40
+ // To help implementing browser specific "hacks" to the skin files and have it
41
+ // easy to maintain, it is possible to have dedicated files for such browsers,
42
+ // for both the main skin CSS files: editor.css and dialog.css.
43
+ //
44
+ // The browser files must be named after the main file names, appended by an
45
+ // underscore and the browser name (e.g. editor_ie.css, dialog_ie8.css).
46
+ //
47
+ // The accepted browser names must match the CKEDITOR.env properties. The most
48
+ // common names are: ie, opera, webkit and gecko. Check the documentation for
49
+ // the complete list:
50
+ // http://docs.ckeditor.com/#!/api/CKEDITOR.env
51
+ //
52
+ // Internet explorer is an expection and the browser version is also accepted
53
+ // (ie7, ie8, ie9, ie10), as well as a special name for IE in Quirks mode (iequirks).
54
+ //
55
+ // The available browser specific files must be set separately for editor.css
56
+ // and dialog.css.
57
+ CKEDITOR.skin.ua_editor = '';
58
+ CKEDITOR.skin.ua_dialog = '';
59
+
60
+ // 3. Define the "Chameleon" feature
61
+ // -----------------------------------
62
+ // (http://docs.cksource.com/CKEditor_4.x/Skin_SDK/Chameleon)
63
+ //
64
+ // "Chameleon" is a unique feature available in CKEditor. It makes it possible
65
+ // to end users to specify which color to use as the basis for the editor UI.
66
+ // It is enough to set config.uiColor to any color value and voila, the UI is
67
+ // colored.
68
+ //
69
+ // The only detail here is that the skin itself must be compatible with the
70
+ // Chameleon feature. That's because the skin CSS files are the responsible to
71
+ // apply colors in the UI and each skin do that in different way and on
72
+ // different places.
73
+ //
74
+ // Implementing the Chameleon feature requires a bit of JavaScript programming.
75
+ // The CKEDITOR.skin.chameleon function must be defined. It must return the CSS
76
+ // "template" to be used to change the color of a specific CKEditor instance
77
+ // available in the page. When a color change is required, this template is
78
+ // appended to the page holding the editor, overriding styles defined in the
79
+ // skin files.
80
+ //
81
+ // The "$color" placeholder can be used in the returned string. It'll be
82
+ // replaced with the desired color.
83
+ CKEDITOR.skin.chameleon = ( function() {
84
+ // This method can be used to adjust colour brightness of various element.
85
+ // Colours are accepted in 7-byte hex format, for example: #00ff00.
86
+ // Brightness ratio must be a float number within [-1, 1],
87
+ // where -1 is black, 1 is white and 0 is the original colour.
88
+ var colorBrightness = ( function() {
89
+ function channelBrightness( channel, ratio ) {
90
+ return ( '0' + ( ratio < 0 ?
91
+ 0 | channel * ( 1 + ratio )
92
+ :
93
+ 0 | channel + ( 255 - channel ) * ratio ).toString( 16 )
94
+ ).slice( -2 );
95
+ }
96
+
97
+ return function( hexColor, ratio ) {
98
+ var channels = hexColor.match( /[^#]./g );
99
+
100
+ for ( var i = 0 ; i < 3 ; i++ )
101
+ channels[ i ] = channelBrightness( parseInt( channels[ i ], 16 ), ratio );
102
+
103
+ return '#' + channels.join( '' );
104
+ };
105
+ } )(),
106
+
107
+ // Use this function just to avoid having to repeat all these rules on
108
+ // several places of our template.
109
+ verticalGradient = ( function() {
110
+ var template = new CKEDITOR.template( 'background:#{to};'+
111
+ 'background-image:-webkit-gradient(linear,lefttop,leftbottom,from({from}),to({to}));'+
112
+ 'background-image:-moz-linear-gradient(top,{from},{to});'+
113
+ 'background-image:-webkit-linear-gradient(top,{from},{to});'+
114
+ 'background-image:-o-linear-gradient(top,{from},{to});'+
115
+ 'background-image:-ms-linear-gradient(top,{from},{to});'+
116
+ 'background-image:linear-gradient(top,{from},{to});'+
117
+ 'filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr=\'{from}\',endColorstr=\'{to}\');' );
118
+
119
+ return function( from, to ) {
120
+ return template.output( { from: from, to: to } );
121
+ };
122
+ } )(),
123
+
124
+ // Style templates for various user interface parts:
125
+ // * Default editor template.
126
+ // * Default panel template.
127
+ templates = {
128
+ editor: new CKEDITOR.template(
129
+ '{id}.cke_chrome [border-color:{defaultBorder};] ' +
130
+ '{id} .cke_top [ ' +
131
+ '{defaultGradient}' +
132
+ 'border-bottom-color:{defaultBorder};' +
133
+ '] ' +
134
+ '{id} .cke_bottom [' +
135
+ '{defaultGradient}' +
136
+ 'border-top-color:{defaultBorder};' +
137
+ '] ' +
138
+ '{id} .cke_resizer [border-right-color:{ckeResizer}] ' +
139
+
140
+ // Dialogs.
141
+ '{id} .cke_dialog_title [' +
142
+ '{defaultGradient}' +
143
+ 'border-bottom-color:{defaultBorder};' +
144
+ '] ' +
145
+ '{id} .cke_dialog_footer [' +
146
+ '{defaultGradient}' +
147
+ 'outline-color:{defaultBorder};' +
148
+ 'border-top-color:{defaultBorder};' + // IE7 doesn't use outline.
149
+ '] ' +
150
+ '{id} .cke_dialog_tab [' +
151
+ '{lightGradient}' +
152
+ 'border-color:{defaultBorder};' +
153
+ '] ' +
154
+ '{id} .cke_dialog_tab:hover [' +
155
+ '{mediumGradient}' +
156
+ '] ' +
157
+ '{id} .cke_dialog_contents [' +
158
+ 'border-top-color:{defaultBorder};' +
159
+ '] ' +
160
+ '{id} .cke_dialog_tab_selected, {id} .cke_dialog_tab_selected:hover [' +
161
+ 'background:{dialogTabSelected};' +
162
+ 'border-bottom-color:{dialogTabSelectedBorder};' +
163
+ '] ' +
164
+ '{id} .cke_dialog_body [' +
165
+ 'background:{dialogBody};' +
166
+ 'border-color:{defaultBorder};' +
167
+ '] ' +
168
+
169
+ // Toolbars, buttons.
170
+ '{id} .cke_toolgroup [' +
171
+ '{lightGradient}' +
172
+ 'border-color:{defaultBorder};' +
173
+ '] ' +
174
+ '{id} a.cke_button_off:hover, {id} a.cke_button_off:focus, {id} a.cke_button_off:active [' +
175
+ '{mediumGradient}' +
176
+ '] ' +
177
+ '{id} .cke_button_on [' +
178
+ '{ckeButtonOn}' +
179
+ '] ' +
180
+ '{id} .cke_toolbar_separator [' +
181
+ 'background-color: {ckeToolbarSeparator};' +
182
+ '] ' +
183
+
184
+ // Combo buttons.
185
+ '{id} .cke_combo_button [' +
186
+ 'border-color:{defaultBorder};' +
187
+ '{lightGradient}' +
188
+ '] ' +
189
+ '{id} a.cke_combo_button:hover, {id} a.cke_combo_button:focus, {id} .cke_combo_on a.cke_combo_button [' +
190
+ 'border-color:{defaultBorder};' +
191
+ '{mediumGradient}' +
192
+ '] ' +
193
+
194
+ // Elementspath.
195
+ '{id} .cke_path_item [' +
196
+ 'color:{elementsPathColor};' +
197
+ '] ' +
198
+ '{id} a.cke_path_item:hover, {id} a.cke_path_item:focus, {id} a.cke_path_item:active [' +
199
+ 'background-color:{elementsPathBg};' +
200
+ '] ' +
201
+
202
+ '{id}.cke_panel [' +
203
+ 'border-color:{defaultBorder};' +
204
+ '] '
205
+ ),
206
+ panel: new CKEDITOR.template(
207
+ // Panel drop-downs.
208
+ '.cke_panel_grouptitle [' +
209
+ '{lightGradient}' +
210
+ 'border-color:{defaultBorder};' +
211
+ '] ' +
212
+
213
+ // Context menus.
214
+ '.cke_menubutton_icon [' +
215
+ 'background-color:{menubuttonIcon};' +
216
+ '] ' +
217
+ '.cke_menubutton:hover .cke_menubutton_icon, .cke_menubutton:focus .cke_menubutton_icon, .cke_menubutton:active .cke_menubutton_icon [' +
218
+ 'background-color:{menubuttonIconHover};' +
219
+ '] ' +
220
+ '.cke_menuseparator [' +
221
+ 'background-color:{menubuttonIcon};' +
222
+ '] ' +
223
+
224
+ // Color boxes.
225
+ 'a:hover.cke_colorbox, a:focus.cke_colorbox, a:active.cke_colorbox [' +
226
+ 'border-color:{defaultBorder};' +
227
+ '] ' +
228
+ 'a:hover.cke_colorauto, a:hover.cke_colormore, a:focus.cke_colorauto, a:focus.cke_colormore, a:active.cke_colorauto, a:active.cke_colormore [' +
229
+ 'background-color:{ckeColorauto};' +
230
+ 'border-color:{defaultBorder};' +
231
+ '] '
232
+ )
233
+ };
234
+
235
+ return function( editor, part ) {
236
+ var uiColor = editor.uiColor,
237
+ // The following are CSS styles used in templates.
238
+ // Styles are generated according to current editor.uiColor.
239
+ templateStyles = {
240
+ // CKEditor instances have a unique ID, which is used as class name into
241
+ // the outer container of the editor UI (e.g. ".cke_1").
242
+ //
243
+ // The Chameleon feature is available for each CKEditor instance,
244
+ // independently. Because of this, we need to prefix all CSS selectors with
245
+ // the unique class name of the instance.
246
+ id: '.' + editor.id,
247
+
248
+ // These styles are used by various UI elements.
249
+ defaultBorder: colorBrightness( uiColor, -0.1 ),
250
+ defaultGradient: verticalGradient( colorBrightness( uiColor, 0.9 ), uiColor ),
251
+ lightGradient: verticalGradient( colorBrightness( uiColor, 1 ), colorBrightness( uiColor, 0.7 ) ),
252
+ mediumGradient: verticalGradient( colorBrightness( uiColor, 0.8 ), colorBrightness( uiColor, 0.5 ) ),
253
+
254
+ // These are for specific UI elements.
255
+ ckeButtonOn: verticalGradient( colorBrightness( uiColor, 0.6 ), colorBrightness( uiColor, 0.7 ) ),
256
+ ckeResizer: colorBrightness( uiColor, -0.4 ),
257
+ ckeToolbarSeparator: colorBrightness( uiColor, 0.5 ),
258
+ ckeColorauto: colorBrightness( uiColor, 0.8 ),
259
+ dialogBody: colorBrightness( uiColor, 0.7 ),
260
+ // Use gradient instead of simple hex to avoid further filter resetting in IE.
261
+ dialogTabSelected: verticalGradient( '#FFFFFF', '#FFFFFF' ),
262
+ dialogTabSelectedBorder: '#FFF',
263
+ elementsPathColor: colorBrightness( uiColor, -0.6 ),
264
+ elementsPathBg: uiColor,
265
+ menubuttonIcon: colorBrightness( uiColor, 0.5 ),
266
+ menubuttonIconHover: colorBrightness( uiColor, 0.3 )
267
+ };
268
+
269
+ return templates[ part ]
270
+ .output( templateStyles )
271
+ .replace( /\[/g, '{' ) // Replace brackets with braces.
272
+ .replace( /\]/g, '}' );
273
+ };
274
+ } )();
@@ -0,0 +1,118 @@
1
+ /*
2
+ Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
3
+ For licensing, see LICENSE.md or http://ckeditor.com/license
4
+ */
5
+
6
+ body {
7
+ /* Font */
8
+ font-family: sans-serif, Arial, Verdana, "Trebuchet MS";
9
+ font-size: 12px;
10
+
11
+ /* Text color */
12
+ color: #333;
13
+
14
+ /* Remove the background color to make it transparent */
15
+ background-color: #fff;
16
+
17
+ margin: 20px;
18
+ }
19
+
20
+ .cke_editable {
21
+ font-size: 13px;
22
+ line-height: 1.6;
23
+ }
24
+
25
+ blockquote {
26
+ font-style: italic;
27
+ font-family: Georgia, Times, "Times New Roman", serif;
28
+ padding: 2px 0;
29
+ border-style: solid;
30
+ border-color: #ccc;
31
+ border-width: 0;
32
+ }
33
+
34
+ .cke_contents_ltr blockquote {
35
+ padding-left: 20px;
36
+ padding-right: 8px;
37
+ border-left-width: 5px;
38
+ }
39
+
40
+ .cke_contents_rtl blockquote {
41
+ padding-left: 8px;
42
+ padding-right: 20px;
43
+ border-right-width: 5px;
44
+ }
45
+
46
+ a {
47
+ color: #0782C1;
48
+ }
49
+
50
+ ol, ul, dl {
51
+ /* IE7: reset rtl list margin. (#7334) */
52
+ *margin-right: 0px;
53
+ /* preserved spaces for list items with text direction other than the list. (#6249,#8049)*/
54
+ padding: 0 40px;
55
+ }
56
+
57
+ h1, h2, h3, h4, h5, h6 {
58
+ font-weight: normal;
59
+ line-height: 1.2;
60
+ }
61
+
62
+ hr {
63
+ border: 0px;
64
+ border-top: 1px solid #ccc;
65
+ }
66
+
67
+ img.right {
68
+ border: 1px solid #ccc;
69
+ float: right;
70
+ margin-left: 15px;
71
+ padding: 5px;
72
+ }
73
+
74
+ img.left {
75
+ border: 1px solid #ccc;
76
+ float: left;
77
+ margin-right: 15px;
78
+ padding: 5px;
79
+ }
80
+
81
+ pre {
82
+ white-space: pre-wrap; /* CSS 2.1 */
83
+ word-wrap: break-word; /* IE7 */
84
+ -moz-tab-size: 4;
85
+ -o-tab-size: 4;
86
+ -webkit-tab-size: 4;
87
+ tab-size: 4;
88
+ }
89
+
90
+ .marker {
91
+ background-color: Yellow;
92
+ }
93
+
94
+ span[lang] {
95
+ font-style: italic;
96
+ }
97
+
98
+ figure {
99
+ text-align: center;
100
+ border: solid 1px #ccc;
101
+ border-radius: 2px;
102
+ background: rgba(0, 0, 0, 0.05);
103
+ padding: 10px;
104
+ margin: 10px 20px;
105
+ display: inline-block;
106
+ }
107
+
108
+ figure > figcaption {
109
+ text-align: center;
110
+ display: block; /* For IE8 */
111
+ }
112
+
113
+ a > img {
114
+ padding: 1px;
115
+ margin: 1px;
116
+ border: none;
117
+ outline: 1px solid #0782C1;
118
+ }