effective_ckeditor 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +28 -0
- data/Rakefile +23 -0
- data/app/assets/javascripts/ckeditor/CHANGES.md +589 -0
- data/app/assets/javascripts/ckeditor/LICENSE.md +1264 -0
- data/app/assets/javascripts/ckeditor/README.md +39 -0
- data/app/assets/javascripts/ckeditor/adapters/jquery.js +10 -0
- data/app/assets/javascripts/ckeditor/build-config.js +95 -0
- data/app/assets/javascripts/ckeditor/ckeditor.js +986 -0
- data/app/assets/javascripts/ckeditor/config.js +34 -0
- data/app/assets/javascripts/ckeditor/contents.css +134 -0
- data/app/assets/javascripts/ckeditor/lang/en.js +5 -0
- data/app/assets/javascripts/ckeditor/plugins/clipboard/dialogs/paste.js +11 -0
- data/app/assets/javascripts/ckeditor/plugins/colordialog/dialogs/colordialog.js +13 -0
- data/app/assets/javascripts/ckeditor/plugins/dialog/dialogDefinition.js +4 -0
- data/app/assets/javascripts/ckeditor/plugins/effective_assets/icons/effectiveassets.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/effective_assets/icons/hidpi/effectiveassets.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/effective_assets/plugin.js.coffee +17 -0
- data/app/assets/javascripts/ckeditor/plugins/effective_regions/icons/exit.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/effective_regions/icons/hidpi/exit.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/effective_regions/icons/hidpi/save.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/effective_regions/icons/save.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/effective_regions/icons/saving.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/effective_regions/plugin.js.coffee +241 -0
- data/app/assets/javascripts/ckeditor/plugins/find/dialogs/find.js +24 -0
- data/app/assets/javascripts/ckeditor/plugins/icons.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/icons_hidpi.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/image/dialogs/image.js +43 -0
- data/app/assets/javascripts/ckeditor/plugins/image/images/noimage.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/image2/dialogs/image2.js +14 -0
- data/app/assets/javascripts/ckeditor/plugins/imagepaste/docs/install.html +66 -0
- data/app/assets/javascripts/ckeditor/plugins/imagepaste/docs/styles.css +59 -0
- data/app/assets/javascripts/ckeditor/plugins/link/dialogs/anchor.js +7 -0
- data/app/assets/javascripts/ckeditor/plugins/link/dialogs/link.js +26 -0
- data/app/assets/javascripts/ckeditor/plugins/link/images/anchor.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/link/images/hidpi/anchor.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/liststyle/dialogs/liststyle.js +10 -0
- data/app/assets/javascripts/ckeditor/plugins/magicline/images/hidpi/icon.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/magicline/images/icon.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/pagebreak/images/pagebreak.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/pastefromword/filter/default.js +31 -0
- data/app/assets/javascripts/ckeditor/plugins/showblocks/images/block_address.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/showblocks/images/block_blockquote.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/showblocks/images/block_div.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/showblocks/images/block_h1.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/showblocks/images/block_h2.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/showblocks/images/block_h3.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/showblocks/images/block_h4.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/showblocks/images/block_h5.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/showblocks/images/block_h6.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/showblocks/images/block_p.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/showblocks/images/block_pre.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/dialogs/smiley.js +10 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/angel_smile.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/angel_smile.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/angry_smile.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/angry_smile.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/broken_heart.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/broken_heart.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/confused_smile.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/confused_smile.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/cry_smile.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/cry_smile.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/devil_smile.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/devil_smile.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/embaressed_smile.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/embarrassed_smile.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/embarrassed_smile.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/envelope.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/envelope.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/heart.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/heart.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/kiss.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/kiss.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/lightbulb.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/lightbulb.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/omg_smile.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/omg_smile.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/regular_smile.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/regular_smile.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/sad_smile.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/sad_smile.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/shades_smile.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/shades_smile.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/teeth_smile.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/teeth_smile.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/thumbs_down.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/thumbs_down.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/thumbs_up.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/thumbs_up.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/tongue_smile.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/tongue_smile.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/tounge_smile.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/wink_smile.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/smiley/images/wink_smile.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/sourcedialog/dialogs/sourcedialog.js +6 -0
- data/app/assets/javascripts/ckeditor/plugins/syntaxhighlight/dialogs/syntaxhighlight.js +16 -0
- data/app/assets/javascripts/ckeditor/plugins/table/dialogs/table.js +21 -0
- data/app/assets/javascripts/ckeditor/plugins/tabletools/dialogs/tableCell.js +17 -0
- data/app/assets/javascripts/ckeditor/plugins/templates/dialogs/templates.css +84 -0
- data/app/assets/javascripts/ckeditor/plugins/templates/dialogs/templates.js +10 -0
- data/app/assets/javascripts/ckeditor/plugins/templates/templates/default.js +6 -0
- data/app/assets/javascripts/ckeditor/plugins/templates/templates/images/template1.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/templates/templates/images/template2.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/templates/templates/images/template3.gif +0 -0
- data/app/assets/javascripts/ckeditor/plugins/tliyoutube/dialogs/tliyoutube.js +7 -0
- data/app/assets/javascripts/ckeditor/plugins/widget/images/handle.png +0 -0
- data/app/assets/javascripts/ckeditor/skins/moonocolor/dialog.css +5 -0
- data/app/assets/javascripts/ckeditor/skins/moonocolor/dialog_ie.css +5 -0
- data/app/assets/javascripts/ckeditor/skins/moonocolor/dialog_ie7.css +5 -0
- data/app/assets/javascripts/ckeditor/skins/moonocolor/dialog_ie8.css +5 -0
- data/app/assets/javascripts/ckeditor/skins/moonocolor/dialog_iequirks.css +5 -0
- data/app/assets/javascripts/ckeditor/skins/moonocolor/dialog_opera.css +5 -0
- data/app/assets/javascripts/ckeditor/skins/moonocolor/editor.css +5 -0
- data/app/assets/javascripts/ckeditor/skins/moonocolor/editor_gecko.css +5 -0
- data/app/assets/javascripts/ckeditor/skins/moonocolor/editor_ie.css +5 -0
- data/app/assets/javascripts/ckeditor/skins/moonocolor/editor_ie7.css +5 -0
- data/app/assets/javascripts/ckeditor/skins/moonocolor/editor_ie8.css +5 -0
- data/app/assets/javascripts/ckeditor/skins/moonocolor/editor_iequirks.css +5 -0
- data/app/assets/javascripts/ckeditor/skins/moonocolor/icons.png +0 -0
- data/app/assets/javascripts/ckeditor/skins/moonocolor/icons_hidpi.png +0 -0
- data/app/assets/javascripts/ckeditor/skins/moonocolor/images/arrow.png +0 -0
- data/app/assets/javascripts/ckeditor/skins/moonocolor/images/close.png +0 -0
- data/app/assets/javascripts/ckeditor/skins/moonocolor/images/hidpi/close.png +0 -0
- data/app/assets/javascripts/ckeditor/skins/moonocolor/images/hidpi/lock-open.png +0 -0
- data/app/assets/javascripts/ckeditor/skins/moonocolor/images/hidpi/lock.png +0 -0
- data/app/assets/javascripts/ckeditor/skins/moonocolor/images/hidpi/refresh.png +0 -0
- data/app/assets/javascripts/ckeditor/skins/moonocolor/images/lock-open.png +0 -0
- data/app/assets/javascripts/ckeditor/skins/moonocolor/images/lock.png +0 -0
- data/app/assets/javascripts/ckeditor/skins/moonocolor/images/refresh.png +0 -0
- data/app/assets/javascripts/ckeditor/skins/moonocolor/readme.md +51 -0
- data/app/assets/javascripts/ckeditor/styles.js +111 -0
- data/app/assets/javascripts/effective_ckeditor.js +7 -0
- data/app/assets/javascripts/effective_ckeditor/before_init.js.erb +21 -0
- data/app/assets/javascripts/effective_ckeditor/config.js.coffee +46 -0
- data/app/assets/javascripts/effective_ckeditor/init.js.coffee +90 -0
- data/app/assets/javascripts/vendor/jquery.cookie.js +117 -0
- data/app/assets/stylesheets/effective_ckeditor.css.scss +2 -0
- data/app/assets/stylesheets/effective_ckeditor/layout.css.scss +10 -0
- data/app/assets/stylesheets/effective_ckeditor/overrides.css.scss +40 -0
- data/lib/effective_ckeditor.rb +10 -0
- data/lib/effective_ckeditor/engine.rb +21 -0
- data/lib/effective_ckeditor/version.rb +3 -0
- data/lib/generators/effective_ckeditor/install_generator.rb +15 -0
- data/lib/generators/templates/README +1 -0
- data/lib/tasks/effective_ckeditor_tasks.rake +19 -0
- data/spec/dummy/README.rdoc +261 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/javascripts/application.js +15 -0
- data/spec/dummy/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +65 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +37 -0
- data/spec/dummy/config/environments/production.rb +67 -0
- data/spec/dummy/config/environments/test.rb +37 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/inflections.rb +15 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/routes.rb +58 -0
- data/spec/dummy/db/schema.rb +34 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +25 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/dummy/spec_link +3 -0
- data/spec/effective_ckeditor_spec.rb +7 -0
- data/spec/spec_helper.rb +34 -0
- data/spec/support/factories.rb +4 -0
- metadata +274 -0
@@ -0,0 +1,34 @@
|
|
1
|
+
/**
|
2
|
+
* @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
|
3
|
+
* For licensing, see LICENSE.html or http://ckeditor.com/license
|
4
|
+
*/
|
5
|
+
|
6
|
+
CKEDITOR.editorConfig = function( config ) {
|
7
|
+
// Define changes to default configuration here.
|
8
|
+
// For complete reference see:
|
9
|
+
// http://docs.ckeditor.com/#!/api/CKEDITOR.config
|
10
|
+
|
11
|
+
// The toolbar groups arrangement, optimized for a single toolbar row.
|
12
|
+
config.toolbarGroups = [
|
13
|
+
{ name: 'document', groups: [ 'mode', 'document', 'doctools' ] },
|
14
|
+
{ name: 'clipboard', groups: [ 'clipboard', 'undo' ] },
|
15
|
+
{ name: 'editing', groups: [ 'find', 'selection', 'spellchecker' ] },
|
16
|
+
{ name: 'forms' },
|
17
|
+
{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
|
18
|
+
{ name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'bidi' ] },
|
19
|
+
{ name: 'links' },
|
20
|
+
{ name: 'insert' },
|
21
|
+
{ name: 'styles' },
|
22
|
+
{ name: 'colors' },
|
23
|
+
{ name: 'tools' },
|
24
|
+
{ name: 'others' },
|
25
|
+
{ name: 'about' }
|
26
|
+
];
|
27
|
+
|
28
|
+
// The default plugins included in the basic setup define some buttons that
|
29
|
+
// are not needed in a basic editor. They are removed here.
|
30
|
+
config.removeButtons = 'Cut,Copy,Paste,Undo,Redo,Anchor,Underline,Strike,Subscript,Superscript';
|
31
|
+
|
32
|
+
// Dialog windows are also simplified.
|
33
|
+
config.removeDialogTabs = 'link:advanced';
|
34
|
+
};
|
@@ -0,0 +1,134 @@
|
|
1
|
+
/*
|
2
|
+
Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.
|
3
|
+
For licensing, see LICENSE.md or http://ckeditor.com/license
|
4
|
+
*/
|
5
|
+
|
6
|
+
body
|
7
|
+
{
|
8
|
+
/* Font */
|
9
|
+
font-family: sans-serif, Arial, Verdana, "Trebuchet MS";
|
10
|
+
font-size: 12px;
|
11
|
+
|
12
|
+
/* Text color */
|
13
|
+
color: #333;
|
14
|
+
|
15
|
+
/* Remove the background color to make it transparent */
|
16
|
+
background-color: #fff;
|
17
|
+
|
18
|
+
margin: 20px;
|
19
|
+
}
|
20
|
+
|
21
|
+
.cke_editable
|
22
|
+
{
|
23
|
+
font-size: 13px;
|
24
|
+
line-height: 1.6;
|
25
|
+
}
|
26
|
+
|
27
|
+
blockquote
|
28
|
+
{
|
29
|
+
font-style: italic;
|
30
|
+
font-family: Georgia, Times, "Times New Roman", serif;
|
31
|
+
padding: 2px 0;
|
32
|
+
border-style: solid;
|
33
|
+
border-color: #ccc;
|
34
|
+
border-width: 0;
|
35
|
+
}
|
36
|
+
|
37
|
+
.cke_contents_ltr blockquote
|
38
|
+
{
|
39
|
+
padding-left: 20px;
|
40
|
+
padding-right: 8px;
|
41
|
+
border-left-width: 5px;
|
42
|
+
}
|
43
|
+
|
44
|
+
.cke_contents_rtl blockquote
|
45
|
+
{
|
46
|
+
padding-left: 8px;
|
47
|
+
padding-right: 20px;
|
48
|
+
border-right-width: 5px;
|
49
|
+
}
|
50
|
+
|
51
|
+
a
|
52
|
+
{
|
53
|
+
color: #0782C1;
|
54
|
+
}
|
55
|
+
|
56
|
+
ol,ul,dl
|
57
|
+
{
|
58
|
+
/* IE7: reset rtl list margin. (#7334) */
|
59
|
+
*margin-right: 0px;
|
60
|
+
/* preserved spaces for list items with text direction other than the list. (#6249,#8049)*/
|
61
|
+
padding: 0 40px;
|
62
|
+
}
|
63
|
+
|
64
|
+
h1,h2,h3,h4,h5,h6
|
65
|
+
{
|
66
|
+
font-weight: normal;
|
67
|
+
line-height: 1.2;
|
68
|
+
}
|
69
|
+
|
70
|
+
hr
|
71
|
+
{
|
72
|
+
border: 0px;
|
73
|
+
border-top: 1px solid #ccc;
|
74
|
+
}
|
75
|
+
|
76
|
+
img.right
|
77
|
+
{
|
78
|
+
border: 1px solid #ccc;
|
79
|
+
float: right;
|
80
|
+
margin-left: 15px;
|
81
|
+
padding: 5px;
|
82
|
+
}
|
83
|
+
|
84
|
+
img.left
|
85
|
+
{
|
86
|
+
border: 1px solid #ccc;
|
87
|
+
float: left;
|
88
|
+
margin-right: 15px;
|
89
|
+
padding: 5px;
|
90
|
+
}
|
91
|
+
|
92
|
+
pre
|
93
|
+
{
|
94
|
+
white-space: pre-wrap; /* CSS 2.1 */
|
95
|
+
word-wrap: break-word; /* IE7 */
|
96
|
+
-moz-tab-size: 4;
|
97
|
+
-o-tab-size: 4;
|
98
|
+
-webkit-tab-size: 4;
|
99
|
+
tab-size: 4;
|
100
|
+
}
|
101
|
+
|
102
|
+
.marker
|
103
|
+
{
|
104
|
+
background-color: Yellow;
|
105
|
+
}
|
106
|
+
|
107
|
+
span[lang]
|
108
|
+
{
|
109
|
+
font-style: italic;
|
110
|
+
}
|
111
|
+
|
112
|
+
figure
|
113
|
+
{
|
114
|
+
text-align: center;
|
115
|
+
border: solid 1px #ccc;
|
116
|
+
border-radius: 2px;
|
117
|
+
background: rgba(0,0,0,0.05);
|
118
|
+
padding: 10px;
|
119
|
+
margin: 10px 20px;
|
120
|
+
display: inline-block;
|
121
|
+
}
|
122
|
+
|
123
|
+
figure > figcaption
|
124
|
+
{
|
125
|
+
text-align: center;
|
126
|
+
display: block; /* For IE8 */
|
127
|
+
}
|
128
|
+
|
129
|
+
a > img {
|
130
|
+
padding: 1px;
|
131
|
+
margin: 1px;
|
132
|
+
border: none;
|
133
|
+
outline: 1px solid #0782C1;
|
134
|
+
}
|
@@ -0,0 +1,5 @@
|
|
1
|
+
/*
|
2
|
+
Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.
|
3
|
+
For licensing, see LICENSE.html or http://ckeditor.com/license
|
4
|
+
*/
|
5
|
+
CKEDITOR.lang['en']={"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Send it to the Server","image":"Image","flash":"Flash","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<not set>","id":"Id","name":"Name","langDir":"Language Direction","langDirLtr":"Left to Right (LTR)","langDirRtl":"Right to Left (RTL)","langCode":"Language Code","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Style","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Resize","generalTab":"General","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Target","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Width","height":"Height","align":"Alignment","alignLeft":"Left","alignRight":"Right","alignCenter":"Center","alignTop":"Top","alignMiddle":"Middle","alignBottom":"Bottom","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strike Through","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"blockquote":{"toolbar":"Block Quote"},"clipboard":{"copy":"Copy","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"Cut","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Paste","pasteArea":"Paste Area","pasteMsg":"Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK","securityMsg":"Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.","title":"Paste"},"button":{"selectedLabel":"%1 (Selected)"},"colorbutton":{"auto":"Automatic","bgColorTitle":"Background Color","colors":{"000":"Black","800000":"Maroon","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"Navy","4B0082":"Indigo","696969":"Dark Gray","B22222":"Fire Brick","A52A2A":"Brown","DAA520":"Golden Rod","006400":"Dark Green","40E0D0":"Turquoise","0000CD":"Medium Blue","800080":"Purple","808080":"Gray","F00":"Red","FF8C00":"Dark Orange","FFD700":"Gold","008000":"Green","0FF":"Cyan","00F":"Blue","EE82EE":"Violet","A9A9A9":"Dim Gray","FFA07A":"Light Salmon","FFA500":"Orange","FFFF00":"Yellow","00FF00":"Lime","AFEEEE":"Pale Turquoise","ADD8E6":"Light Blue","DDA0DD":"Plum","D3D3D3":"Light Grey","FFF0F5":"Lavender Blush","FAEBD7":"Antique White","FFFFE0":"Light Yellow","F0FFF0":"Honeydew","F0FFFF":"Azure","F0F8FF":"Alice Blue","E6E6FA":"Lavender","FFF":"White"},"more":"More Colors...","panelTitle":"Colors","textColorTitle":"Text Color"},"colordialog":{"clear":"Clear","highlight":"Highlight","options":"Color Options","selected":"Selected Color","title":"Select color"},"contextmenu":{"options":"Context Menu Options"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"find":{"find":"Find","findOptions":"Find Options","findWhat":"Find what:","matchCase":"Match case","matchCyclic":"Match cyclic","matchWord":"Match whole word","notFoundMsg":"The specified text was not found.","replace":"Replace","replaceAll":"Replace All","replaceSuccessMsg":"%1 occurrence(s) replaced.","replaceWith":"Replace with:","title":"Find and Replace"},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"image":{"alertUrl":"Please type the image URL","alt":"Alternative Text","border":"Border","btnUpload":"Send it to the Server","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"HSpace","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Image Info","linkTab":"Link","lockRatio":"Lock Ratio","menu":"Image Properties","resetSize":"Reset Size","title":"Image Properties","titleButton":"Image Button Properties","upload":"Upload","urlMissing":"Image source URL is missing.","vSpace":"VSpace","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"widget":{"move":"Click and drag to move"},"image2":{"alt":"Alternative Text","btnUpload":"Send it to the Server","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Image Info","lockRatio":"Lock Ratio","menu":"Image Properties","pathName":"image","pathNameCaption":"caption","resetSize":"Reset Size","resizer":"Click and drag to resize","title":"Image Properties","uploadTab":"Upload","urlMissing":"Image source URL is missing."},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"justify":{"block":"Justify","center":"Center","left":"Align Left","right":"Align Right"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Hidden Field","iframe":"IFrame","unknown":"Unknown Object"},"link":{"acccessKey":"Access Key","advanced":"Advanced","advisoryContentType":"Advisory Content Type","advisoryTitle":"Advisory Title","anchor":{"toolbar":"Anchor","menu":"Edit Anchor","title":"Anchor Properties","name":"Anchor Name","errorName":"Please type the anchor name","remove":"Remove Anchor"},"anchorId":"By Element Id","anchorName":"By Anchor Name","charset":"Linked Resource Charset","cssClasses":"Stylesheet Classes","emailAddress":"E-Mail Address","emailBody":"Message Body","emailSubject":"Message Subject","id":"Id","info":"Link Info","langCode":"Language Code","langDir":"Language Direction","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","menu":"Edit Link","name":"Name","noAnchors":"(No anchors available in the document)","noEmail":"Please type the e-mail address","noUrl":"Please type the link URL","other":"<other>","popupDependent":"Dependent (Netscape)","popupFeatures":"Popup Window Features","popupFullScreen":"Full Screen (IE)","popupLeft":"Left Position","popupLocationBar":"Location Bar","popupMenuBar":"Menu Bar","popupResizable":"Resizable","popupScrollBars":"Scroll Bars","popupStatusBar":"Status Bar","popupToolbar":"Toolbar","popupTop":"Top Position","rel":"Relationship","selectAnchor":"Select an Anchor","styles":"Style","tabIndex":"Tab Index","target":"Target","targetFrame":"<frame>","targetFrameName":"Target Frame Name","targetPopup":"<popup window>","targetPopupName":"Popup Window Name","title":"Link","toAnchor":"Link to anchor in the text","toEmail":"E-mail","toUrl":"URL","toolbar":"Link","type":"Link Type","unlink":"Unlink","upload":"Upload"},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"liststyle":{"armenian":"Armenian numbering","bulletedTitle":"Bulleted List Properties","circle":"Circle","decimal":"Decimal (1, 2, 3, etc.)","decimalLeadingZero":"Decimal leading zero (01, 02, 03, etc.)","disc":"Disc","georgian":"Georgian numbering (an, ban, gan, etc.)","lowerAlpha":"Lower Alpha (a, b, c, d, e, etc.)","lowerGreek":"Lower Greek (alpha, beta, gamma, etc.)","lowerRoman":"Lower Roman (i, ii, iii, iv, v, etc.)","none":"None","notset":"<not set>","numberedTitle":"Numbered List Properties","square":"Square","start":"Start","type":"Type","upperAlpha":"Upper Alpha (A, B, C, D, E, etc.)","upperRoman":"Upper Roman (I, II, III, IV, V, etc.)","validateStartNumber":"List start number must be a whole number."},"magicline":{"title":"Insert paragraph here"},"newpage":{"toolbar":"New Page"},"pagebreak":{"alt":"Page Break","toolbar":"Insert Page Break for Printing"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Paste from Word","toolbar":"Paste from Word"},"pastetext":{"button":"Paste as plain text","title":"Paste as Plain Text"},"removeformat":{"toolbar":"Remove Format"},"selectall":{"toolbar":"Select All"},"showblocks":{"toolbar":"Show Blocks"},"smiley":{"options":"Smiley Options","title":"Insert a Smiley","toolbar":"Smiley"},"sourcearea":{"toolbar":"Source"},"sourcedialog":{"toolbar":"Source","title":"Source"},"stylescombo":{"label":"Styles","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"syntaxhighlight":{"title":"Add or update a code snippet","contextTitle":"Edit source code","sourceTab":"Source code","langLbl":"Select language","sourceTextareaEmptyError":"Source code mustn't be empty.","advancedTab":"Advanced","hideGutter":"Hide gutter","hideGutterLbl":"Hide gutter & line numbers.","hideControls":"Hide controls","hideControlsLbl":"Hide code controls at the top of the code block.","collapse":"Collapse","collapseLbl":"Collapse the code block by default. (controls need to be turned on)","codeTitleLbl":"Use a Code Title","showColumns":"Show columns","showColumnsLbl":"Show row columns in the first line.","lineWrap":"Disable line wrapping","lineWrapLbl":"Switch off line wrapping.","lineCount":"Default line count","highlight":"Highlight lines","highlightLbl":"Enter a comma seperated lines of lines you want to highlight, eg <em style=\"font-style:italic\">3,10,15</em>."},"table":{"border":"Border size","caption":"Caption","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Delete Cells","merge":"Merge Cells","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"Columns","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"templates":{"button":"Templates","emptyListMsg":"(No templates defined)","insertOption":"Replace actual contents","options":"Template Options","selectPromptMsg":"Please select the template to open in the editor","title":"Content Templates"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"undo":{"redo":"Redo","undo":"Undo"}};
|
@@ -0,0 +1,11 @@
|
|
1
|
+
/*
|
2
|
+
Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.
|
3
|
+
For licensing, see LICENSE.md or http://ckeditor.com/license
|
4
|
+
*/
|
5
|
+
CKEDITOR.dialog.add("paste",function(c){function h(a){var b=new CKEDITOR.dom.document(a.document),f=b.getBody(),d=b.getById("cke_actscrpt");d&&d.remove();f.setAttribute("contenteditable",!0);if(CKEDITOR.env.ie&&8>CKEDITOR.env.version)b.getWindow().on("blur",function(){b.$.selection.empty()});b.on("keydown",function(a){var a=a.data,b;switch(a.getKeystroke()){case 27:this.hide();b=1;break;case 9:case CKEDITOR.SHIFT+9:this.changeFocus(1),b=1}b&&a.preventDefault()},this);c.fire("ariaWidget",new CKEDITOR.dom.element(a.frameElement));
|
6
|
+
b.getWindow().getFrame().removeCustomData("pendingFocus")&&f.focus()}var e=c.lang.clipboard;c.on("pasteDialogCommit",function(a){a.data&&c.fire("paste",{type:"auto",dataValue:a.data})},null,null,1E3);return{title:e.title,minWidth:CKEDITOR.env.ie&&CKEDITOR.env.quirks?370:350,minHeight:CKEDITOR.env.quirks?250:245,onShow:function(){this.parts.dialog.$.offsetHeight;this.setupContent();this.parts.title.setHtml(this.customTitle||e.title);this.customTitle=null},onLoad:function(){(CKEDITOR.env.ie7Compat||
|
7
|
+
CKEDITOR.env.ie6Compat)&&"rtl"==c.lang.dir&&this.parts.contents.setStyle("overflow","hidden")},onOk:function(){this.commitContent()},contents:[{id:"general",label:c.lang.common.generalTab,elements:[{type:"html",id:"securityMsg",html:'<div style="white-space:normal;width:340px">'+e.securityMsg+"</div>"},{type:"html",id:"pasteMsg",html:'<div style="white-space:normal;width:340px">'+e.pasteMsg+"</div>"},{type:"html",id:"editing_area",style:"width:100%;height:100%",html:"",focus:function(){var a=this.getInputElement(),
|
8
|
+
b=a.getFrameDocument().getBody();!b||b.isReadOnly()?a.setCustomData("pendingFocus",1):b.focus()},setup:function(){var a=this.getDialog(),b='<html dir="'+c.config.contentsLangDirection+'" lang="'+(c.config.contentsLanguage||c.langCode)+'"><head><style>body{margin:3px;height:95%}</style></head><body><script id="cke_actscrpt" type="text/javascript">window.parent.CKEDITOR.tools.callFunction('+CKEDITOR.tools.addFunction(h,a)+",this);<\/script></body></html>",f=CKEDITOR.env.air?"javascript:void(0)":CKEDITOR.env.ie?
|
9
|
+
"javascript:void((function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+'})())"':"",d=CKEDITOR.dom.element.createFromHtml('<iframe class="cke_pasteframe" frameborder="0" allowTransparency="true" src="'+f+'" role="region" aria-label="'+e.pasteArea+'" aria-describedby="'+a.getContentElement("general","pasteMsg").domId+'" aria-multiple="true"></iframe>');d.on("load",function(a){a.removeListener();a=d.getFrameDocument();a.write(b);c.focusManager.add(a.getBody());
|
10
|
+
CKEDITOR.env.air&&h.call(this,a.getWindow().$)},a);d.setCustomData("dialog",a);a=this.getElement();a.setHtml("");a.append(d);if(CKEDITOR.env.ie){var g=CKEDITOR.dom.element.createFromHtml('<span tabindex="-1" style="position:absolute" role="presentation"></span>');g.on("focus",function(){setTimeout(function(){d.$.contentWindow.focus()})});a.append(g);this.focus=function(){g.focus();this.fire("focus")}}this.getInputElement=function(){return d};CKEDITOR.env.ie&&(a.setStyle("display","block"),a.setStyle("height",
|
11
|
+
d.$.offsetHeight+2+"px"))},commit:function(){var a=this.getDialog().getParentEditor(),b=this.getInputElement().getFrameDocument().getBody(),c=b.getBogus(),d;c&&c.remove();d=b.getHtml();setTimeout(function(){a.fire("pasteDialogCommit",d)},0)}}]}]}});
|
@@ -0,0 +1,13 @@
|
|
1
|
+
/*
|
2
|
+
Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.
|
3
|
+
For licensing, see LICENSE.md or http://ckeditor.com/license
|
4
|
+
*/
|
5
|
+
CKEDITOR.dialog.add("colordialog",function(t){function n(){f.getById(o).removeStyle("background-color");p.getContentElement("picker","selectedColor").setValue("");j&&j.removeAttribute("aria-selected");j=null}function u(a){var a=a.data.getTarget(),b;if("td"==a.getName()&&(b=a.getChild(0).getHtml()))j=a,j.setAttribute("aria-selected",!0),p.getContentElement("picker","selectedColor").setValue(b)}function y(a){for(var a=a.replace(/^#/,""),b=0,c=[];2>=b;b++)c[b]=parseInt(a.substr(2*b,2),16);return"#"+
|
6
|
+
(165<=0.2126*c[0]+0.7152*c[1]+0.0722*c[2]?"000":"fff")}function v(a){!a.name&&(a=new CKEDITOR.event(a));var b=!/mouse/.test(a.name),c=a.data.getTarget(),e;if("td"==c.getName()&&(e=c.getChild(0).getHtml()))q(a),b?g=c:w=c,b&&(c.setStyle("border-color",y(e)),c.setStyle("border-style","dotted")),f.getById(k).setStyle("background-color",e),f.getById(l).setHtml(e)}function q(a){if(a=!/mouse/.test(a.name)&&g){var b=a.getChild(0).getHtml();a.setStyle("border-color",b);a.setStyle("border-style","solid")}!g&&
|
7
|
+
!w&&(f.getById(k).removeStyle("background-color"),f.getById(l).setHtml(" "))}function z(a){var b=a.data,c=b.getTarget(),e=b.getKeystroke(),d="rtl"==t.lang.dir;switch(e){case 38:if(a=c.getParent().getPrevious())a=a.getChild([c.getIndex()]),a.focus();b.preventDefault();break;case 40:if(a=c.getParent().getNext())(a=a.getChild([c.getIndex()]))&&1==a.type&&a.focus();b.preventDefault();break;case 32:case 13:u(a);b.preventDefault();break;case d?37:39:if(a=c.getNext())1==a.type&&(a.focus(),b.preventDefault(!0));
|
8
|
+
else if(a=c.getParent().getNext())if((a=a.getChild([0]))&&1==a.type)a.focus(),b.preventDefault(!0);break;case d?39:37:if(a=c.getPrevious())a.focus(),b.preventDefault(!0);else if(a=c.getParent().getPrevious())a=a.getLast(),a.focus(),b.preventDefault(!0)}}var r=CKEDITOR.dom.element,f=CKEDITOR.document,h=t.lang.colordialog,p,x={type:"html",html:" "},j,g,w,m=function(a){return CKEDITOR.tools.getNextId()+"_"+a},k=m("hicolor"),l=m("hicolortext"),o=m("selhicolor"),i;(function(){function a(a,d){for(var s=
|
9
|
+
a;s<a+3;s++){var e=new r(i.$.insertRow(-1));e.setAttribute("role","row");for(var f=d;f<d+3;f++)for(var g=0;6>g;g++)b(e.$,"#"+c[f]+c[g]+c[s])}}function b(a,c){var b=new r(a.insertCell(-1));b.setAttribute("class","ColorCell");b.setAttribute("tabIndex",-1);b.setAttribute("role","gridcell");b.on("keydown",z);b.on("click",u);b.on("focus",v);b.on("blur",q);b.setStyle("background-color",c);b.setStyle("border","1px solid "+c);b.setStyle("width","14px");b.setStyle("height","14px");var d=m("color_table_cell");
|
10
|
+
b.setAttribute("aria-labelledby",d);b.append(CKEDITOR.dom.element.createFromHtml('<span id="'+d+'" class="cke_voice_label">'+c+"</span>",CKEDITOR.document))}i=CKEDITOR.dom.element.createFromHtml('<table tabIndex="-1" aria-label="'+h.options+'" role="grid" style="border-collapse:separate;" cellspacing="0"><caption class="cke_voice_label">'+h.options+'</caption><tbody role="presentation"></tbody></table>');i.on("mouseover",v);i.on("mouseout",q);var c="00 33 66 99 cc ff".split(" ");a(0,0);a(3,0);a(0,
|
11
|
+
3);a(3,3);var e=new r(i.$.insertRow(-1));e.setAttribute("role","row");for(var d=0;6>d;d++)b(e.$,"#"+c[d]+c[d]+c[d]);for(d=0;12>d;d++)b(e.$,"#000000")})();return{title:h.title,minWidth:360,minHeight:220,onLoad:function(){p=this},onHide:function(){n();var a=g.getChild(0).getHtml();g.setStyle("border-color",a);g.setStyle("border-style","solid");f.getById(k).removeStyle("background-color");f.getById(l).setHtml(" ");g=null},contents:[{id:"picker",label:h.title,accessKey:"I",elements:[{type:"hbox",
|
12
|
+
padding:0,widths:["70%","10%","30%"],children:[{type:"html",html:"<div></div>",onLoad:function(){CKEDITOR.document.getById(this.domId).append(i)},focus:function(){(g||this.getElement().getElementsByTag("td").getItem(0)).focus()}},x,{type:"vbox",padding:0,widths:["70%","5%","25%"],children:[{type:"html",html:"<span>"+h.highlight+'</span>\t\t\t\t\t\t\t\t\t\t\t\t<div id="'+k+'" style="border: 1px solid; height: 74px; width: 74px;"></div>\t\t\t\t\t\t\t\t\t\t\t\t<div id="'+l+'"> </div><span>'+h.selected+
|
13
|
+
'</span>\t\t\t\t\t\t\t\t\t\t\t\t<div id="'+o+'" style="border: 1px solid; height: 20px; width: 74px;"></div>'},{type:"text",label:h.selected,labelStyle:"display:none",id:"selectedColor",style:"width: 76px;margin-top:4px",onChange:function(){try{f.getById(o).setStyle("background-color",this.getValue())}catch(a){n()}}},x,{type:"button",id:"clear",label:h.clear,onClick:n}]}]}]}]}});
|
Binary file
|
Binary file
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# This plugin just opens the Snippet dialog
|
2
|
+
|
3
|
+
CKEDITOR.plugins.add 'effective_assets',
|
4
|
+
icons: 'effectiveassets',
|
5
|
+
hidpi: true,
|
6
|
+
init: (editor) ->
|
7
|
+
editor.ui.addButton 'EffectiveAssets', {label: 'Insert File', command: 'openEffectiveAssetsSnippetDialog'}
|
8
|
+
editor.addCommand('openEffectiveAssetsSnippetDialog', OpenEffectiveAssetsSnippetDialog)
|
9
|
+
|
10
|
+
OpenEffectiveAssetsSnippetDialog = {
|
11
|
+
exec: (editor) ->
|
12
|
+
if (command = editor.getCommand('effective_asset'))
|
13
|
+
command.exec(editor)
|
14
|
+
else
|
15
|
+
alert('This function is currently disabled. Please install EffectiveAssets gem.')
|
16
|
+
}
|
17
|
+
|
Binary file
|
Binary file
|
@@ -0,0 +1,241 @@
|
|
1
|
+
SaveAll = {
|
2
|
+
instanceData: (instance) ->
|
3
|
+
instance.resetDirty()
|
4
|
+
|
5
|
+
snippets = {} # This is the Data we're going to post to the server
|
6
|
+
snippet_ids = [] # This keeps track html classes we need to later replace
|
7
|
+
|
8
|
+
for id, widget of instance.widgets.instances
|
9
|
+
if widget.effectiveSnippetConfigured != undefined # This is an effectiveSnippet type widget
|
10
|
+
snippet_id = "snippet_#{id}"
|
11
|
+
snippets[snippet_id] = widget.data
|
12
|
+
snippets[snippet_id]['class_name'] = widget.name
|
13
|
+
widget.element.addClass(snippet_id)
|
14
|
+
snippet_ids.push(snippet_id)
|
15
|
+
|
16
|
+
# Replace the entire widget <div>...</div> with [snippet_0]
|
17
|
+
content = $('<div>' + instance.getData() + '</div>')
|
18
|
+
content.find(".#{snippet_id}").replaceWith("[#{snippet_id}]") for snippet_id in snippet_ids
|
19
|
+
|
20
|
+
# Slightly different values for the different region types
|
21
|
+
if instance.config.effectiveRegionType == 'snippets'
|
22
|
+
content = content.text()
|
23
|
+
content = content.replace(/\s+/gi, '') if content.indexOf('[snippet_') > -1
|
24
|
+
else if instance.config.toolbar == 'simple'
|
25
|
+
content = content.text()
|
26
|
+
else
|
27
|
+
content = content.html()
|
28
|
+
|
29
|
+
{content: content, snippets: snippets}
|
30
|
+
|
31
|
+
exec: (editor) ->
|
32
|
+
# Show a checkmark on the Save button
|
33
|
+
try
|
34
|
+
button = $("##{this.uiItems[0]._.id}").find('.cke_button__save_icon')
|
35
|
+
|
36
|
+
button.css('background-image', 'url(/assets/ckeditor/plugins/effective_regions/icons/saving.png)')
|
37
|
+
setTimeout(
|
38
|
+
-> button.css('background-image', 'url(/assets/ckeditor/plugins/effective_regions/icons/save.png)')
|
39
|
+
2000)
|
40
|
+
|
41
|
+
data = {}
|
42
|
+
data[name] = @instanceData(instance) for name, instance of CKEDITOR.instances
|
43
|
+
|
44
|
+
url = window.location.protocol + '//' + window.location.host + '/edit' + window.location.pathname
|
45
|
+
|
46
|
+
$.ajax
|
47
|
+
url: url
|
48
|
+
type: 'PUT'
|
49
|
+
dataType: 'json'
|
50
|
+
data: { effective_regions: data }
|
51
|
+
async: false
|
52
|
+
complete: (data) ->
|
53
|
+
if data.responseText == 'refresh'
|
54
|
+
location.reload(true)
|
55
|
+
}
|
56
|
+
|
57
|
+
Exit = {
|
58
|
+
exec: (editor) ->
|
59
|
+
url = $.cookie('effective_regions_editting')
|
60
|
+
|
61
|
+
if url != undefined && url.length > 0
|
62
|
+
window.location = url
|
63
|
+
else
|
64
|
+
window.history.back()
|
65
|
+
}
|
66
|
+
|
67
|
+
Regions = {
|
68
|
+
initFullRegion: (editor) ->
|
69
|
+
# Remove any style attributes
|
70
|
+
editor.on 'paste', (evt) ->
|
71
|
+
data = $('<div>' + evt.data.dataValue + '</div>')
|
72
|
+
data.find('[style]').removeAttr('style')
|
73
|
+
evt.data.dataValue = data.html()
|
74
|
+
|
75
|
+
initSimpleRegion: (editor) ->
|
76
|
+
# Disable all tags
|
77
|
+
filter = new CKEDITOR.filter('no_tags_allowed')
|
78
|
+
editor.setActiveFilter(filter)
|
79
|
+
|
80
|
+
# Disable wrapping content with <p></p>. This could break plugins.
|
81
|
+
editor.config.autoParagraph = false
|
82
|
+
|
83
|
+
# Disable enter button
|
84
|
+
editor.on 'key', (event) -> event.cancel() if (event.data.keyCode == 13 || event.data.keyCode == 2228237)
|
85
|
+
|
86
|
+
# Paste as plain text, but this doesn't work all the way
|
87
|
+
editor.config.forcePasteAsPlainText = true
|
88
|
+
editor.on 'paste', (evt) -> evt.data.dataValue = evt.data.dataValue.replace(/<[^<|>]+?>/gi,'')
|
89
|
+
|
90
|
+
initSnippetRegion: (editor) ->
|
91
|
+
# Disable wrapping content with <p></p>. This could break plugins.
|
92
|
+
editor.config.autoParagraph = false
|
93
|
+
|
94
|
+
# Disable enter button
|
95
|
+
editor.on 'key', (event) -> event.cancel() unless (event.data.keyCode == 8) # 8 is backspace
|
96
|
+
|
97
|
+
# Paste as plain text, but this doesn't work all the way
|
98
|
+
editor.config.forcePasteAsPlainText = true
|
99
|
+
editor.on 'paste', (evt) -> evt.data.dataValue = evt.data.dataValue.replace(/<[^<|>]+?>/gi,'')
|
100
|
+
}
|
101
|
+
|
102
|
+
Snippets = {
|
103
|
+
snippets: undefined
|
104
|
+
|
105
|
+
all: ->
|
106
|
+
if @snippets == undefined
|
107
|
+
$.ajax
|
108
|
+
url: '/effective/snippets'
|
109
|
+
type: 'GET'
|
110
|
+
dataType: 'json'
|
111
|
+
async: false
|
112
|
+
complete: (data) -> Snippets.snippets = data.responseJSON
|
113
|
+
@snippets
|
114
|
+
|
115
|
+
build: (editor, name, values) ->
|
116
|
+
snippet = {}
|
117
|
+
|
118
|
+
snippet['effectiveSnippetConfigured'] = false
|
119
|
+
snippet['dialog_url'] = values.dialog_url
|
120
|
+
snippet['dialog'] = name if values.dialog_url
|
121
|
+
snippet['inline'] = values.inline
|
122
|
+
snippet['editables'] = values.editables if values.editables
|
123
|
+
snippet['draggable'] = editor.config.effectiveRegionType != 'wrapped_snippets'
|
124
|
+
snippet['template'] = "<#{values.tag} data-effective-snippet='#{name}'></#{values.tag}>"
|
125
|
+
snippet['upcast'] = (element) -> element.attributes['data-effective-snippet'] == name
|
126
|
+
snippet['loadTemplate'] = (widget) ->
|
127
|
+
$.ajax
|
128
|
+
url: "/effective/snippet/#{widget.name}"
|
129
|
+
type: 'GET'
|
130
|
+
data: {effective_regions: {name: widget.name, data: widget.data}}
|
131
|
+
async: false
|
132
|
+
complete: (data) -> widget.element.setHtml(data.responseText)
|
133
|
+
|
134
|
+
snippet['init'] = ->
|
135
|
+
this.data[k] = v for k, v of $(this.element.$).data('snippet-data')
|
136
|
+
|
137
|
+
this.on 'dialog', (evt) -> @effectiveSnippetConfigured = true
|
138
|
+
this.on 'data', (evt) -> @loadTemplate(evt.sender) if @effectiveSnippetConfigured
|
139
|
+
this.on 'ready', (evt) ->
|
140
|
+
|
141
|
+
return true if @effectiveSnippetConfigured != true || evt.sender.editor.config.effectiveRegionType != 'wrapped_snippets'
|
142
|
+
editor = evt.sender.editor
|
143
|
+
|
144
|
+
# This makes sure an inserted snippet within a 'wrapped_snippets' region is inserted under <ol><li>
|
145
|
+
try
|
146
|
+
root = editor.getSelection().getCommonAncestor()
|
147
|
+
root = root.getParent() while (root.hasClass('effective-region') == false && root.getName() != 'body')
|
148
|
+
|
149
|
+
children = root.getChildren()
|
150
|
+
|
151
|
+
node0 = children.getItem(0)
|
152
|
+
node1 = children.getItem(1)
|
153
|
+
node2 = children.getItem(2)
|
154
|
+
|
155
|
+
# Find the first OL/UL, find its LI, clone it, then insert the widget into that LI
|
156
|
+
if (node0.getName() == 'ol' || node0.getName() == 'ul') && (node1 == null || node1.hasClass('cke_widget_wrapper'))
|
157
|
+
if (liNode = node0.getChild(0)).getName() == 'li'
|
158
|
+
newNode = liNode.clone()
|
159
|
+
newNode.append(this.wrapper)
|
160
|
+
node0.append(newNode)
|
161
|
+
node2.remove() if (node2 != null && node2.getName() == 'br')
|
162
|
+
else if node0.hasClass('cke_widget_wrapper') && node2 != null && (node2.getName() == 'ol' || node2.getName() == 'ul')
|
163
|
+
if (liNode = node2.getChild(0)).getName() == 'li'
|
164
|
+
newNode = liNode.clone()
|
165
|
+
newNode.append(this.wrapper)
|
166
|
+
node2.append(newNode, true) # prepend it
|
167
|
+
node1.remove() if (node1 != null && node1.getName() == 'br')
|
168
|
+
|
169
|
+
snippet
|
170
|
+
}
|
171
|
+
|
172
|
+
Templates = {
|
173
|
+
templates: undefined
|
174
|
+
|
175
|
+
all: ->
|
176
|
+
if @templates == undefined
|
177
|
+
$.ajax
|
178
|
+
url: '/effective/templates'
|
179
|
+
type: 'GET'
|
180
|
+
dataType: 'json'
|
181
|
+
async: false
|
182
|
+
complete: (data) -> Templates.templates = data.responseJSON
|
183
|
+
@templates
|
184
|
+
|
185
|
+
build: (definition) -> definition
|
186
|
+
}
|
187
|
+
|
188
|
+
BuildInsertSnippetDropdown = (editor, all_snippets) ->
|
189
|
+
editor.ui.addRichCombo 'InsertSnippet',
|
190
|
+
label: 'Insert Snippet',
|
191
|
+
title: 'Insert Snippet',
|
192
|
+
panel:
|
193
|
+
css: [ CKEDITOR.skin.getPath( 'editor' ) ],
|
194
|
+
multiSelect: false,
|
195
|
+
init: ->
|
196
|
+
for name, values of all_snippets
|
197
|
+
if name != 'effective_asset'
|
198
|
+
this.add(name, "#{values.label}", "#{values.description}")
|
199
|
+
onClick: (value) -> editor.getCommand(value).exec(editor)
|
200
|
+
onOpen: (evt) ->
|
201
|
+
this.showAll()
|
202
|
+
allowedSnippets = this._.panel._.editor.config.allowedSnippets
|
203
|
+
|
204
|
+
if allowedSnippets.length > 0
|
205
|
+
for name, _ of this._.items
|
206
|
+
this.hideItem(name) if allowedSnippets.indexOf(name) == -1 # Hide it, if it's not in allowedSnippets array
|
207
|
+
|
208
|
+
CKEDITOR.plugins.add 'effective_regions',
|
209
|
+
requires: 'widget',
|
210
|
+
icons: 'save,exit',
|
211
|
+
hidpi: true,
|
212
|
+
init: (editor) ->
|
213
|
+
# Saving
|
214
|
+
editor.ui.addButton 'Save', {label: 'Save', command: 'effectiveRegionsSaveAll'}
|
215
|
+
editor.addCommand('effectiveRegionsSaveAll', SaveAll)
|
216
|
+
|
217
|
+
# Exit Button
|
218
|
+
editor.ui.addButton 'Exit', {label: 'Exit', command: 'effectiveRegionsExit'}
|
219
|
+
editor.addCommand('effectiveRegionsExit', Exit)
|
220
|
+
|
221
|
+
# Regions
|
222
|
+
Regions.initFullRegion(editor) if editor.config.effectiveRegionType == 'full'
|
223
|
+
Regions.initSimpleRegion(editor) if editor.config.effectiveRegionType == 'simple'
|
224
|
+
Regions.initSnippetRegion(editor) if editor.config.effectiveRegionType == 'snippets'
|
225
|
+
Regions.initSnippetRegion(editor) if editor.config.effectiveRegionType == 'wrapped_snippets'
|
226
|
+
|
227
|
+
# Snippets
|
228
|
+
BuildInsertSnippetDropdown(editor, Snippets.all()) # Insert Snippets Dropdown
|
229
|
+
|
230
|
+
# Initialize all the Snippets as CKeditor widgets
|
231
|
+
for name, values of Snippets.all()
|
232
|
+
snippet = Snippets.build(editor, name, values)
|
233
|
+
|
234
|
+
editor.widgets.add(name, snippet)
|
235
|
+
CKEDITOR.dialog.add(name, snippet.dialog_url) if snippet.dialog_url
|
236
|
+
|
237
|
+
# Templates
|
238
|
+
# these are loaded once per page, not for each editor (as the snippets are above)
|
239
|
+
CKEDITOR.addTemplates 'effective_regions',
|
240
|
+
imagesPath: CKEDITOR.getUrl( '/assets/effective/templates/' ),
|
241
|
+
templates: Templates.build(template) for template in Templates.all()
|