refinerycms-wymeditor 0.0.1 → 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/Gemfile +1 -0
- data/Gemfile.lock +8 -0
- data/app/assets/javascripts/refinery/boot_wym.js.erb +19 -41
- data/app/assets/javascripts/refinery/wymeditor.js +9 -7
- data/app/assets/javascripts/wymeditor/GPL-license.txt +278 -0
- data/app/assets/javascripts/wymeditor/MIT-license.txt +20 -0
- data/app/assets/javascripts/wymeditor/README.txt +35 -0
- data/app/assets/javascripts/wymeditor/browsers/mozilla.js.erb +10 -11
- data/app/assets/javascripts/wymeditor/browsers/webkit.js.erb +17 -18
- data/app/assets/javascripts/wymeditor/classes.js.erb +3 -5
- data/app/assets/javascripts/wymeditor/functions.js.erb +8 -4
- data/app/assets/javascripts/wymeditor/init_interface.js +45 -0
- data/app/assets/javascripts/wymeditor/lang/de.js +13 -1
- data/app/assets/javascripts/wymeditor/lang/fr.js +1 -0
- data/app/assets/javascripts/wymeditor/lang/nl.js +55 -45
- data/app/assets/javascripts/wymeditor/lang/pl.js +12 -1
- data/app/assets/javascripts/wymeditor/lang/ru.js +1 -0
- data/app/assets/javascripts/wymeditor/lang/{zh_cn.js → zh-CN.js} +1 -1
- data/app/assets/javascripts/wymeditor/lang/zh-TW.js +47 -0
- data/app/assets/javascripts/wymeditor/prototypes.js.erb +6 -9
- data/app/assets/javascripts/wymeditor/setup.js.erb +36 -36
- data/app/assets/javascripts/wymeditor/skins/refinery/skin.js +1 -4
- data/app/assets/javascripts/wymeditor/validators.js.erb +3 -2
- data/app/assets/stylesheets/wymeditor/skins/refinery/skin.css.scss +9 -9
- data/app/assets/stylesheets/wymeditor/skins/refinery/wymiframe.css.scss +29 -29
- data/app/decorators/controllers/refinery/fast_controller_decorator.rb +5 -0
- data/app/decorators/models/refinery/page/friendly_id_options_decorator.rb +8 -0
- data/app/views/refinery/admin/dialogs/show.html.erb +19 -0
- data/app/views/refinery/wymiframe.html.erb +1 -1
- data/config/routes.rb +3 -0
- data/lib/generators/refinery/wymeditor/templates/config/initializers/refinery/wymeditor.rb.erb +5 -0
- data/lib/generators/refinery/wymeditor/wymeditor_generator.rb +10 -0
- data/lib/refinery/wymeditor/engine.rb +17 -12
- data/lib/refinerycms-wymeditor.rb +2 -0
- data/readme.md +44 -32
- data/refinerycms-wymeditor.gemspec +3 -1
- data/spec/controllers/refinery/fast_controller_spec.rb +12 -0
- data/spec/spec_helper.rb +30 -0
- metadata +49 -13
- data/.gitignore +0 -88
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2008 Jean-Francois Hovinne, http://www.wymeditor.org/
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -0,0 +1,35 @@
|
|
1
|
+
WYMeditor : what you see is What You Mean web-based editor
|
2
|
+
Copyright (c) 2008 Jean-Francois Hovinne, http://www.wymeditor.org/
|
3
|
+
Dual licensed under the MIT (MIT-license.txt)
|
4
|
+
and GPL (GPL-license.txt) licenses.
|
5
|
+
|
6
|
+
For further information visit:
|
7
|
+
http://www.wymeditor.org/
|
8
|
+
|
9
|
+
File Name:
|
10
|
+
README
|
11
|
+
Readme file.
|
12
|
+
|
13
|
+
File Authors:
|
14
|
+
Jean-François Hovinne - http://www.hovinne.com/
|
15
|
+
|
16
|
+
|
17
|
+
README
|
18
|
+
======
|
19
|
+
|
20
|
+
For WYMeditor to work, you'll need at least jQuery 1.1.3.x
|
21
|
+
jQuery is available at http://jquery.com/
|
22
|
+
|
23
|
+
WYMeditor is compatible with MSIE 6.0+,
|
24
|
+
Gecko-based browsers (e.g. Firefox 1.5+),
|
25
|
+
Opera 9.5+, Safari 3.0+, Google Chrome.
|
26
|
+
|
27
|
+
WYMeditor integration examples are available in the 'examples' directory.
|
28
|
+
|
29
|
+
For more information, please read the documentation, available at:
|
30
|
+
http://trac.wymeditor.org/trac/wiki
|
31
|
+
|
32
|
+
If you need help, feel free to create an account on the forum or subscribe
|
33
|
+
to the WYMeditor-user mailing-list, and ask your question.
|
34
|
+
http://forum.wymeditor.org/
|
35
|
+
http://lists.wymeditor.org/
|
@@ -267,22 +267,21 @@ WYMeditor.WymClassMozilla.prototype.openBlockTag = function(tag, attributes)
|
|
267
267
|
{
|
268
268
|
var attributes = this.validator.getValidTagAttributes(tag, attributes);
|
269
269
|
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
return;
|
270
|
+
// Handle Mozilla styled spans
|
271
|
+
if (tag === 'span' && attributes.style) {
|
272
|
+
var new_tag = this.getTagForStyle(attributes.style);
|
273
|
+
if (new_tag) {
|
274
|
+
tag = new_tag;
|
275
|
+
this._tag_stack.pop();
|
276
|
+
this._tag_stack.push(tag);
|
277
|
+
attributes.style = '';
|
278
|
+
}
|
280
279
|
}
|
281
|
-
}
|
282
280
|
|
283
281
|
this.output += this.helper.tag(tag, attributes, true);
|
284
282
|
};
|
285
283
|
|
284
|
+
|
286
285
|
WYMeditor.WymClassMozilla.prototype.getTagForStyle = function(style) {
|
287
286
|
|
288
287
|
if(/bold/.test(style)) return 'strong';
|
@@ -251,27 +251,26 @@ WYMeditor.WymClassSafari.prototype.keyup = function(e) {
|
|
251
251
|
|
252
252
|
WYMeditor.WymClassSafari.prototype.openBlockTag = function(tag, attributes)
|
253
253
|
{
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
254
|
+
var attributes = this.validator.getValidTagAttributes(tag, attributes);
|
255
|
+
|
256
|
+
// Handle Safari styled spans
|
257
|
+
if(tag == 'span' && attributes.style) {
|
258
|
+
new_tag = this.getTagForStyle(attributes.style);
|
259
|
+
if(new_tag) {
|
260
|
+
this._tag_stack.pop();
|
261
|
+
var tag = new_tag;
|
262
|
+
this._tag_stack.push(new_tag);
|
263
|
+
attributes.style = '';
|
264
|
+
|
265
|
+
//should fix #125 - also removed the xhtml() override
|
266
|
+
if(typeof attributes['class'] == 'string') {
|
267
|
+
attributes['class'] = attributes['class'].replace(/apple-style-span/gi, '');
|
268
|
+
}
|
268
269
|
|
269
|
-
|
270
|
-
return;
|
270
|
+
}
|
271
271
|
}
|
272
|
-
}
|
273
272
|
|
274
|
-
|
273
|
+
this.output += this.helper.tag(tag, attributes, true);
|
275
274
|
};
|
276
275
|
|
277
276
|
WYMeditor.WymClassSafari.prototype.getTagForStyle = function(style) {
|
@@ -636,9 +636,7 @@ WYMeditor.Lexer.prototype._invokeParser = function(content, is_match)
|
|
636
636
|
}
|
637
637
|
var current = this._mode.getCurrent();
|
638
638
|
var handler = this._mode_handlers[current];
|
639
|
-
|
640
|
-
eval('result = this._parser.' + handler + '(content, is_match);');
|
641
|
-
return result;
|
639
|
+
return this._parser[handler](content, is_match);
|
642
640
|
};
|
643
641
|
|
644
642
|
/**
|
@@ -1122,8 +1120,8 @@ WYMeditor.XhtmlSaxListener = function()
|
|
1122
1120
|
"thead", "title", "tr", "tt", "ul", "var", "extends", "meter",
|
1123
1121
|
"section", "article", "aside", "details", "header", "footer",
|
1124
1122
|
"nav", "dialog", "figure", "figcaption", "address", "hgroup",
|
1125
|
-
"mark", "time", "canvas", "audio", "video", "
|
1126
|
-
"progress", "ruby", "rt", "rp", "summary", "command"
|
1123
|
+
"mark", "time", "canvas", "audio", "video", "output",
|
1124
|
+
"progress", "ruby", "rt", "rp", "summary", "command"];
|
1127
1125
|
|
1128
1126
|
|
1129
1127
|
// Defines self-closing tags.
|
@@ -16,7 +16,7 @@ WYMeditor.INIT_DIALOG = function(wym, selected, isIframe) {
|
|
16
16
|
var selected = selected || wym.selected();
|
17
17
|
var dialog = $("#"+wym._options.dialogId);
|
18
18
|
var doc = $(dialog.find('iframe').contents());
|
19
|
-
var dialogType = dialog.find('#
|
19
|
+
var dialogType = dialog.find('#visual_editor_dialog_type').val();
|
20
20
|
if (wym._selected_image) {
|
21
21
|
var replaceable = $(wym._selected_image);
|
22
22
|
} else {
|
@@ -27,7 +27,7 @@ WYMeditor.INIT_DIALOG = function(wym, selected, isIframe) {
|
|
27
27
|
dialog.find('input[type=text], textarea').first().focus();
|
28
28
|
|
29
29
|
// init close_dialog when user clicks on cancel button
|
30
|
-
doc.find('body').addClass('
|
30
|
+
doc.find('body').addClass('visual_editor_iframe_body').find('#cancel_button').add(dialog.find('.close_dialog')).click(function(e){
|
31
31
|
wym.close_dialog(e, true);
|
32
32
|
});
|
33
33
|
|
@@ -88,7 +88,11 @@ WYMeditor.INIT_DIALOG = function(wym, selected, isIframe) {
|
|
88
88
|
if(wym._selected_image) {
|
89
89
|
imgDialog = $(wym._options.dialogImageSelector);
|
90
90
|
img = $(wym._selected_image);
|
91
|
-
size = (
|
91
|
+
size = (
|
92
|
+
(img.attr(WYMeditor.REL)
|
93
|
+
|| doc.find('#existing_image_size_area li.selected a').attr(WYMeditor.REL)
|
94
|
+
|| doc.find('#existing_image_size_area li.selected a').attr('rel')) || ""
|
95
|
+
);
|
92
96
|
src = img.attr(WYMeditor.SRC);
|
93
97
|
if (size.length > 0) {
|
94
98
|
src = src.replace('_' + size + '.', '.');
|
@@ -183,7 +187,7 @@ WYMeditor.editor.prototype.close_dialog = function(e, cancelled) {
|
|
183
187
|
if ((span = $(this._doc.body).find('span#' + this._current_unique_stamp)).length > 0) {
|
184
188
|
span.parent().html(span.parent().html().replace(new RegExp(["<span(.+?)", span.attr('id'), "(.+?)<\/span>"].join("")), span.html()));
|
185
189
|
}
|
186
|
-
// https://github.com/
|
190
|
+
// https://github.com/refinery/refinerycms/issues/888
|
187
191
|
if (node = $(this._doc.body).find('#' + this._current_unique_stamp)) {
|
188
192
|
node.attr("id", (node.attr('_id_before_replaceable') || ""));
|
189
193
|
node.removeAttr("_id_before_replaceable");
|
@@ -0,0 +1,45 @@
|
|
1
|
+
this.visual_editor_init_interface_hook = (function(_this) {
|
2
|
+
return function() {
|
3
|
+
return $("textarea.wymeditor, textarea.visual_editor").each(function() {
|
4
|
+
var instance, next, prev, textarea;
|
5
|
+
textarea = $(this);
|
6
|
+
if ((instance = WYMeditor.INSTANCES[$((textarea.next(".visual_editor_box").find("iframe").attr("id") || "").split("_")).last().get(0)]) != null) {
|
7
|
+
if (((next = textarea.parent().next()) != null) && next.length > 0) {
|
8
|
+
next.find("input, textarea").keydown($.proxy(function(e) {
|
9
|
+
var shiftHeld;
|
10
|
+
shiftHeld = e.shiftKey;
|
11
|
+
if (shiftHeld && e.keyCode === $.ui.keyCode.TAB) {
|
12
|
+
this._iframe.contentWindow.focus();
|
13
|
+
return e.preventDefault();
|
14
|
+
}
|
15
|
+
}, instance)).keyup(function(e) {
|
16
|
+
var shiftHeld;
|
17
|
+
return shiftHeld = false;
|
18
|
+
});
|
19
|
+
}
|
20
|
+
if (((prev = textarea.parent().prev()) != null) && prev.length > 0) {
|
21
|
+
return prev.find("input, textarea").keydown($.proxy(function(e) {
|
22
|
+
if (e.keyCode === $.ui.keyCode.TAB) {
|
23
|
+
this._iframe.contentWindow.focus();
|
24
|
+
return e.preventDefault();
|
25
|
+
}
|
26
|
+
}, instance));
|
27
|
+
}
|
28
|
+
}
|
29
|
+
});
|
30
|
+
};
|
31
|
+
})(this);
|
32
|
+
|
33
|
+
this.visual_editor_update = (function(_this) {
|
34
|
+
return function() {
|
35
|
+
$.each(WYMeditor.INSTANCES, function(index, wym) {
|
36
|
+
wym.update();
|
37
|
+
});
|
38
|
+
}
|
39
|
+
})(this);
|
40
|
+
|
41
|
+
this.visual_editor_init = (function(_this) {
|
42
|
+
return function() {
|
43
|
+
return WYMEditor.init();
|
44
|
+
};
|
45
|
+
})(this);
|
@@ -1,6 +1,7 @@
|
|
1
1
|
WYMeditor.STRINGS['de'] = {
|
2
2
|
Apply_Style: 'Style',
|
3
3
|
Strong: 'Fett',
|
4
|
+
Bold: 'Fett',
|
4
5
|
Emphasis: 'Kursiv',
|
5
6
|
Superscript: 'Hochstellen',
|
6
7
|
Subscript: 'Tiefstellen',
|
@@ -41,5 +42,16 @@ WYMeditor.STRINGS['de'] = {
|
|
41
42
|
Containers: 'Inhaltstyp',
|
42
43
|
Classes: 'Klassen',
|
43
44
|
Status: 'Status',
|
44
|
-
Source_Code: 'Quellcode'
|
45
|
+
Source_Code: 'Quellcode',
|
46
|
+
Text_Align: 'Textausrichtung',
|
47
|
+
Image_Align: 'Bildausrichtung',
|
48
|
+
Font_Size: 'Schriftgröße',
|
49
|
+
Left: 'Links',
|
50
|
+
Right: 'Rechts',
|
51
|
+
Center: 'Zentriert',
|
52
|
+
Justify: 'Justify',
|
53
|
+
Small: 'Klein',
|
54
|
+
Normal: 'Normal',
|
55
|
+
Large: 'Groß',
|
56
|
+
Insert: 'Einfügen',
|
45
57
|
};
|
@@ -1,47 +1,57 @@
|
|
1
1
|
WYMeditor.STRINGS['nl'] = {
|
2
|
-
|
3
|
-
|
4
|
-
|
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
|
-
|
2
|
+
Strong: 'Sterk benadrukken',
|
3
|
+
Bold: 'Vet',
|
4
|
+
Emphasis: 'Benadrukken',
|
5
|
+
Superscript: 'Bovenschrift',
|
6
|
+
Subscript: 'Onderschrift',
|
7
|
+
Ordered_List: 'Geordende lijst',
|
8
|
+
Unordered_List: 'Ongeordende lijst',
|
9
|
+
Indent: 'Inspringen',
|
10
|
+
Outdent: 'Terugspringen',
|
11
|
+
Undo: 'Ongedaan maken',
|
12
|
+
Redo: 'Opnieuw uitvoeren',
|
13
|
+
Link: 'Linken',
|
14
|
+
Unlink: 'Ontlinken',
|
15
|
+
Image: 'Afbeelding',
|
16
|
+
Table: 'Tabel',
|
17
|
+
HTML: 'HTML',
|
18
|
+
Paragraph: 'Paragraaf',
|
19
|
+
Heading_1: 'Kop 1',
|
20
|
+
Heading_2: 'Kop 2',
|
21
|
+
Heading_3: 'Kop 3',
|
22
|
+
Heading_4: 'Kop 4',
|
23
|
+
Heading_5: 'Kop 5',
|
24
|
+
Heading_6: 'Kop 6',
|
25
|
+
Preformatted: 'Voorgeformatteerd',
|
26
|
+
Blockquote: 'Citaat',
|
27
|
+
Table_Header: 'Tabel-kop',
|
28
|
+
URL: 'URL',
|
29
|
+
Title: 'Titel',
|
30
|
+
Alternative_Text: 'Alternatieve tekst',
|
31
|
+
Caption: 'Bijschrift',
|
32
|
+
Summary: 'Overzicht',
|
33
|
+
Number_Of_Rows: 'Aantal rijen',
|
34
|
+
Number_Of_Cols: 'Aantal kolommen',
|
35
|
+
Insert: 'Invoegen',
|
36
|
+
Submit: 'Versturen',
|
37
|
+
Cancel: 'Annuleren',
|
38
|
+
Choose: 'Kiezen',
|
39
|
+
Preview: 'Voorbeeld bekijken',
|
40
|
+
Paste_From_Word: 'Plakken uit Word',
|
41
|
+
Tools: 'Hulpmiddelen',
|
42
|
+
Containers: 'Teksttypes',
|
43
|
+
Classes: 'Klassen',
|
44
|
+
Status: 'Status',
|
45
|
+
Source_Code: 'Broncode',
|
46
|
+
Text_Align: 'Tekst uitlijnen',
|
47
|
+
Image_Align: 'Afbeelding uitlijnen',
|
48
|
+
Font_Size: 'Lettertype grootte',
|
49
|
+
Left: 'Links',
|
50
|
+
Right: 'Rechts',
|
51
|
+
Center: 'Midden',
|
52
|
+
Justify: 'Uitgevuld',
|
53
|
+
Small: 'Klein',
|
54
|
+
Normal: 'Normaal',
|
55
|
+
Large: 'Groot',
|
56
|
+
Apply_Style: 'Stijl'
|
47
57
|
};
|
@@ -40,6 +40,17 @@ WYMeditor.STRINGS['pl'] = {
|
|
40
40
|
Containers: 'Format',
|
41
41
|
Classes: 'Styl',
|
42
42
|
Status: 'Status',
|
43
|
-
Source_Code: 'Kod źródłowy'
|
43
|
+
Source_Code: 'Kod źródłowy',
|
44
|
+
Apply_Style: 'Określ styl',
|
45
|
+
Text_Align: "Wyrównanie tekstu",
|
46
|
+
Left: "Do lewej",
|
47
|
+
Right: "Do prawej",
|
48
|
+
Center: "Do środka",
|
49
|
+
Justify: "Wyjustuj",
|
50
|
+
Image_Align: "Wyrównanie obrazka",
|
51
|
+
Font_Size: "Rozmiar teksru",
|
52
|
+
Small: "Mały",
|
53
|
+
Normal: "Normalny",
|
54
|
+
Large: "Duży"
|
44
55
|
};
|
45
56
|
|
@@ -0,0 +1,47 @@
|
|
1
|
+
WYMeditor.STRINGS['zh-TW'] = {
|
2
|
+
Strong: '加粗',
|
3
|
+
Emphasis: '斜體',
|
4
|
+
Superscript: '上標',
|
5
|
+
Subscript: '下標',
|
6
|
+
Ordered_List: '排序列表',
|
7
|
+
Unordered_List: '無序列表',
|
8
|
+
Indent: '增加縮排',
|
9
|
+
Outdent: '減少縮排',
|
10
|
+
Undo: '撤消',
|
11
|
+
Redo: '重做',
|
12
|
+
Link: '鏈接',
|
13
|
+
Unlink: '取消鏈接',
|
14
|
+
Image: '圖片',
|
15
|
+
Table: '表格',
|
16
|
+
HTML: 'HTML 源代碼',
|
17
|
+
Paragraph: '段落',
|
18
|
+
Heading_1: '標題 1',
|
19
|
+
Heading_2: '標題 2',
|
20
|
+
Heading_3: '標題 3',
|
21
|
+
Heading_4: '標題 4',
|
22
|
+
Heading_5: '標題 5',
|
23
|
+
Heading_6: '標題 6',
|
24
|
+
Preformatted: '原始文本',
|
25
|
+
Blockquote: '引語',
|
26
|
+
Table_Header: '表頭',
|
27
|
+
URL: '地址',
|
28
|
+
Title: '提示文字',
|
29
|
+
Alternative_Text: '圖示文字',
|
30
|
+
Caption: '標題',
|
31
|
+
Summary: '總結',
|
32
|
+
Number_Of_Rows: '行數',
|
33
|
+
Number_Of_Cols: '列數',
|
34
|
+
Submit: '提交',
|
35
|
+
Cancel: '放棄',
|
36
|
+
Choose: '選擇',
|
37
|
+
Preview: '預覽',
|
38
|
+
Paste_From_Word: '從 Word 貼上純文字',
|
39
|
+
Tools: '工具',
|
40
|
+
Containers: '容器',
|
41
|
+
Classes: '預定義樣式',
|
42
|
+
Status: '狀態',
|
43
|
+
Source_Code: '源代碼',
|
44
|
+
Attachment: '附件',
|
45
|
+
NewParagraph: '新段落'
|
46
|
+
};
|
47
|
+
|