redactor-rails-fixes 0.5.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +19 -0
  3. data/Gemfile +25 -0
  4. data/MIT-LICENSE +22 -0
  5. data/README.md +237 -0
  6. data/Rakefile +3 -0
  7. data/app/controller/redactor_rails/documents_controller.rb +34 -0
  8. data/app/controller/redactor_rails/pictures_controller.rb +34 -0
  9. data/config/routes.rb +4 -0
  10. data/lib/generators/redactor/config_generator.rb +18 -0
  11. data/lib/generators/redactor/install_generator.rb +75 -0
  12. data/lib/generators/redactor/templates/active_record/carrierwave/devise_migration.rb +30 -0
  13. data/lib/generators/redactor/templates/active_record/carrierwave/migration.rb +28 -0
  14. data/lib/generators/redactor/templates/active_record/carrierwave/redactor/asset.rb +5 -0
  15. data/lib/generators/redactor/templates/active_record/carrierwave/redactor/document.rb +11 -0
  16. data/lib/generators/redactor/templates/active_record/carrierwave/redactor/picture.rb +7 -0
  17. data/lib/generators/redactor/templates/base/carrierwave/uploaders/redactor_rails_document_uploader.rb +15 -0
  18. data/lib/generators/redactor/templates/base/carrierwave/uploaders/redactor_rails_picture_uploader.rb +53 -0
  19. data/lib/generators/redactor/templates/config.js +24 -0
  20. data/lib/generators/redactor/templates/mongoid/carrierwave/redactor/asset.rb +9 -0
  21. data/lib/generators/redactor/templates/mongoid/carrierwave/redactor/document.rb +14 -0
  22. data/lib/generators/redactor/templates/mongoid/carrierwave/redactor/picture.rb +7 -0
  23. data/lib/redactor-rails.rb +41 -0
  24. data/lib/redactor-rails/backend/carrierwave.rb +64 -0
  25. data/lib/redactor-rails/devise.rb +11 -0
  26. data/lib/redactor-rails/engine.rb +14 -0
  27. data/lib/redactor-rails/helper.rb +5 -0
  28. data/lib/redactor-rails/http.rb +89 -0
  29. data/lib/redactor-rails/orm/active_record.rb +31 -0
  30. data/lib/redactor-rails/orm/base.rb +38 -0
  31. data/lib/redactor-rails/orm/mongoid.rb +37 -0
  32. data/lib/redactor-rails/version.rb +3 -0
  33. data/redactor-rails-fixes.gemspec +21 -0
  34. data/vendor/assets/javascripts/redactor-rails/config.js +17 -0
  35. data/vendor/assets/javascripts/redactor-rails/css/docstyle.css +139 -0
  36. data/vendor/assets/javascripts/redactor-rails/css/style.css +26 -0
  37. data/vendor/assets/javascripts/redactor-rails/css/wym.css +151 -0
  38. data/vendor/assets/javascripts/redactor-rails/index.js +2 -0
  39. data/vendor/assets/javascripts/redactor-rails/langs/ar.js +73 -0
  40. data/vendor/assets/javascripts/redactor-rails/langs/az.js +72 -0
  41. data/vendor/assets/javascripts/redactor-rails/langs/ba.js +76 -0
  42. data/vendor/assets/javascripts/redactor-rails/langs/bg.js +74 -0
  43. data/vendor/assets/javascripts/redactor-rails/langs/by.js +72 -0
  44. data/vendor/assets/javascripts/redactor-rails/langs/ca.js +72 -0
  45. data/vendor/assets/javascripts/redactor-rails/langs/cs.js +84 -0
  46. data/vendor/assets/javascripts/redactor-rails/langs/da.js +73 -0
  47. data/vendor/assets/javascripts/redactor-rails/langs/de.js +77 -0
  48. data/vendor/assets/javascripts/redactor-rails/langs/el.js +72 -0
  49. data/vendor/assets/javascripts/redactor-rails/langs/en.js +72 -0
  50. data/vendor/assets/javascripts/redactor-rails/langs/eo.js +73 -0
  51. data/vendor/assets/javascripts/redactor-rails/langs/es.js +73 -0
  52. data/vendor/assets/javascripts/redactor-rails/langs/es_ar.js +73 -0
  53. data/vendor/assets/javascripts/redactor-rails/langs/fa.js +73 -0
  54. data/vendor/assets/javascripts/redactor-rails/langs/fi.js +72 -0
  55. data/vendor/assets/javascripts/redactor-rails/langs/fr.js +72 -0
  56. data/vendor/assets/javascripts/redactor-rails/langs/he.js +72 -0
  57. data/vendor/assets/javascripts/redactor-rails/langs/hr.js +71 -0
  58. data/vendor/assets/javascripts/redactor-rails/langs/hu.js +74 -0
  59. data/vendor/assets/javascripts/redactor-rails/langs/id.js +73 -0
  60. data/vendor/assets/javascripts/redactor-rails/langs/it.js +75 -0
  61. data/vendor/assets/javascripts/redactor-rails/langs/ja.js +73 -0
  62. data/vendor/assets/javascripts/redactor-rails/langs/ko.js +73 -0
  63. data/vendor/assets/javascripts/redactor-rails/langs/lt.js +72 -0
  64. data/vendor/assets/javascripts/redactor-rails/langs/lv.js +72 -0
  65. data/vendor/assets/javascripts/redactor-rails/langs/mk.js +72 -0
  66. data/vendor/assets/javascripts/redactor-rails/langs/nl.js +76 -0
  67. data/vendor/assets/javascripts/redactor-rails/langs/no_NB.js +72 -0
  68. data/vendor/assets/javascripts/redactor-rails/langs/pl.js +73 -0
  69. data/vendor/assets/javascripts/redactor-rails/langs/pt_br.js +79 -0
  70. data/vendor/assets/javascripts/redactor-rails/langs/pt_pt.js +72 -0
  71. data/vendor/assets/javascripts/redactor-rails/langs/ro.js +73 -0
  72. data/vendor/assets/javascripts/redactor-rails/langs/ru.js +73 -0
  73. data/vendor/assets/javascripts/redactor-rails/langs/sk.js +73 -0
  74. data/vendor/assets/javascripts/redactor-rails/langs/sl.js +76 -0
  75. data/vendor/assets/javascripts/redactor-rails/langs/sq.js +76 -0
  76. data/vendor/assets/javascripts/redactor-rails/langs/sr-cir.js +76 -0
  77. data/vendor/assets/javascripts/redactor-rails/langs/sr-lat.js +76 -0
  78. data/vendor/assets/javascripts/redactor-rails/langs/sv.js +73 -0
  79. data/vendor/assets/javascripts/redactor-rails/langs/th.js +72 -0
  80. data/vendor/assets/javascripts/redactor-rails/langs/tr.js +73 -0
  81. data/vendor/assets/javascripts/redactor-rails/langs/ua.js +74 -0
  82. data/vendor/assets/javascripts/redactor-rails/langs/vi.js +72 -0
  83. data/vendor/assets/javascripts/redactor-rails/langs/zh_cn.js +74 -0
  84. data/vendor/assets/javascripts/redactor-rails/langs/zh_tw.js +73 -0
  85. data/vendor/assets/javascripts/redactor-rails/plugins.js +6 -0
  86. data/vendor/assets/javascripts/redactor-rails/plugins/clips.js +61 -0
  87. data/vendor/assets/javascripts/redactor-rails/plugins/fontcolor.js +76 -0
  88. data/vendor/assets/javascripts/redactor-rails/plugins/fontfamily.js +35 -0
  89. data/vendor/assets/javascripts/redactor-rails/plugins/fontsize.js +34 -0
  90. data/vendor/assets/javascripts/redactor-rails/plugins/fullscreen.js +123 -0
  91. data/vendor/assets/javascripts/redactor-rails/plugins/textdirection.js +31 -0
  92. data/vendor/assets/javascripts/redactor-rails/redactor.js +8053 -0
  93. data/vendor/assets/javascripts/redactor-rails/redactor.min.js +12 -0
  94. data/vendor/assets/stylesheets/redactor-rails/css/redactor-iframe.css +202 -0
  95. data/vendor/assets/stylesheets/redactor-rails/css/redactor.css +930 -0
  96. data/vendor/assets/stylesheets/redactor-rails/css/style.css +26 -0
  97. data/vendor/assets/stylesheets/redactor-rails/index.css +1 -0
  98. data/vendor/assets/stylesheets/redactor-rails/plugins.css +3 -0
  99. data/vendor/assets/stylesheets/redactor-rails/plugins/clips.css +6 -0
  100. metadata +184 -0
@@ -0,0 +1,72 @@
1
+ (function ($) {
2
+ $.Redactor.opts.langs['vi'] = {
3
+ html: 'Xem HTML',
4
+ video: 'Chèn Video...',
5
+ image: 'Chèn hình ảnh...',
6
+ table: 'Tạo bảng',
7
+ link: 'Đường dẫn',
8
+ link_insert: 'Thêm đường dẫn ...',
9
+ link_edit: 'Edit link',
10
+ unlink: 'Loại bỏ đường dẫn',
11
+ formatting: 'Định dạng văn bản',
12
+ paragraph: 'Đoạn văn',
13
+ quote: 'Trích dẫn',
14
+ code: 'Chèn mã',
15
+ header1: 'Tiêu đề 1',
16
+ header2: 'Tiêu đề 2',
17
+ header3: 'Tiêu đề 3',
18
+ header4: 'Tiêu đề 4',
19
+ bold: 'In đậm',
20
+ italic: 'In nghiêng',
21
+ fontcolor: 'Màu chữ',
22
+ backcolor: 'Đánh dấu đoạn văn',
23
+ unorderedlist: 'Sắp xếp theo danh sách',
24
+ orderedlist: 'Sắp xếp theo thứ tự',
25
+ outdent: 'Bỏ thụt đầu dòng',
26
+ indent: 'Thụt đầu dòng',
27
+ cancel: 'Hủy bỏ',
28
+ insert: 'Chèn',
29
+ save: 'Lưu lại',
30
+ _delete: 'Xóa',
31
+ insert_table: 'Chèn bảng...',
32
+ insert_row_above: 'Thêm hàng bên trên',
33
+ insert_row_below: 'Thêm hàng bên dưới',
34
+ insert_column_left: 'Thêm cột trái',
35
+ insert_column_right: 'Thêm cột phải',
36
+ delete_column: 'Xóa cột',
37
+ delete_row: 'Xóa hàng',
38
+ delete_table: 'Xóa bảng',
39
+ rows: 'Hàng',
40
+ columns: 'Cột',
41
+ add_head: 'Thêm tiêu đề bảng',
42
+ delete_head: 'Xóa tiêu đề bảng',
43
+ title: 'Tiêu đề',
44
+ image_position: 'Vị trí',
45
+ none: 'Không thay đổi',
46
+ left: 'Trái',
47
+ right: 'Phải',
48
+ image_web_link: 'Đường dẫn link ảnh',
49
+ text: 'Văn bản',
50
+ mailto: 'Email',
51
+ web: 'Đường dẫn',
52
+ video_html_code: 'Mã nhúng video',
53
+ file: 'Tập tin đính kèm...',
54
+ upload: 'Tải lên',
55
+ download: 'Tải xuống',
56
+ choose: 'Lựa Chọn',
57
+ or_choose: 'Chọn từ máy tính',
58
+ drop_file_here: 'Kéo thả hình ảnh vào đây',
59
+ align_left: 'Căn trái',
60
+ align_center: 'Căn giữa',
61
+ align_right: 'Căn phải',
62
+ align_justify: 'Dàn đều trang',
63
+ horizontalrule: 'Chèn thanh ngang',
64
+ deleted: 'Xóa',
65
+ anchor: 'Liên kết',
66
+ link_new_tab: 'Open link in new tab',
67
+ underline: 'Underline',
68
+ alignment: 'Alignment',
69
+ filename: 'Name (optional)',
70
+ edit: 'Edit'
71
+ };
72
+ })( jQuery );
@@ -0,0 +1,74 @@
1
+ (function ($) {
2
+ $.Redactor.opts.langs['zh_cn'] = {
3
+ html: 'HTML代码',
4
+ video: '视频',
5
+ image: '图片',
6
+ table: '表格',
7
+ link: '链接',
8
+ link_insert: '插入链接',
9
+ link_edit: '编辑链接',
10
+ unlink: '取消链接',
11
+ formatting: '样式',
12
+ paragraph: '段落',
13
+ quote: '引用',
14
+ code: '代码',
15
+ header1: '一级标题',
16
+ header2: '二级标题',
17
+ header3: '三级标题',
18
+ header4: '四级标题',
19
+ header5: '五级标题',
20
+ bold: '粗体',
21
+ italic: '斜体',
22
+ fontcolor: '字体颜色',
23
+ backcolor: '背景颜色',
24
+ unorderedlist: '项目编号',
25
+ orderedlist: '数字编号',
26
+ outdent: '减少缩进',
27
+ indent: '增加缩进',
28
+ cancel: '取消',
29
+ insert: '插入',
30
+ save: '保存',
31
+ _delete: '删除',
32
+ insert_table: '插入表格',
33
+ insert_row_above: '在上方插入',
34
+ insert_row_below: '在下方插入',
35
+ insert_column_left: '在左侧插入',
36
+ insert_column_right: '在右侧插入',
37
+ delete_column: '删除整列',
38
+ delete_row: '删除整行',
39
+ delete_table: '删除表格',
40
+ rows: '行',
41
+ columns: '列',
42
+ add_head: '添加标题',
43
+ delete_head: '删除标题',
44
+ title: '标题',
45
+ image_position: '位置',
46
+ none: '无',
47
+ left: '左',
48
+ right: '右',
49
+ image_web_link: '图片网页链接',
50
+ text: '文本',
51
+ mailto: '邮箱',
52
+ web: '网址',
53
+ video_html_code: '视频嵌入代码',
54
+ file: '文件',
55
+ upload: '上传',
56
+ download: '下载',
57
+ choose: '选择',
58
+ or_choose: '或选择',
59
+ drop_file_here: '将文件拖拽至此区域',
60
+ align_left: '左对齐',
61
+ align_center: '居中',
62
+ align_right: '右对齐',
63
+ align_justify: '两端对齐',
64
+ horizontalrule: '水平线',
65
+ fullscreen: '全屏',
66
+ deleted: '删除',
67
+ anchor: '锚点',
68
+ link_new_tab: '在新窗口打开',
69
+ underline: '下划线',
70
+ alignment: '对齐方式',
71
+ filename: '文件名 (可选)',
72
+ edit: '编辑'
73
+ };
74
+ })( jQuery );
@@ -0,0 +1,73 @@
1
+ (function ($) {
2
+ $.Redactor.opts.langs['zh_tw'] = {
3
+ html: 'HTML',
4
+ video: '插入影片',
5
+ image: '插入圖片',
6
+ table: '表格',
7
+ link: '連結',
8
+ link_insert: '插入連結',
9
+ link_edit: 'Edit link',
10
+ unlink: '移除連結',
11
+ formatting: '樣式',
12
+ paragraph: '段落',
13
+ quote: '引用',
14
+ code: '原始碼',
15
+ header1: '標題 1',
16
+ header2: '標題 2',
17
+ header3: '標題 3',
18
+ header4: '標題 4',
19
+ bold: '將文字變成粗體',
20
+ italic: '將文字變成斜體',
21
+ fontcolor: '選擇文字顏色',
22
+ backcolor: '選擇文字底色',
23
+ unorderedlist: '項目列表',
24
+ orderedlist: '編號列表',
25
+ outdent: '減少縮排',
26
+ indent: '增加縮排',
27
+ cancel: '取消',
28
+ insert: '插入',
29
+ save: '儲存',
30
+ _delete: '刪除',
31
+ insert_table: '插入表格',
32
+ insert_row_above: '加入上方橫列',
33
+ insert_row_below: '加入下方橫列',
34
+ insert_column_left: '加入左方直欄',
35
+ insert_column_right: '加入右方直欄',
36
+ delete_column: '刪除整欄',
37
+ delete_row: '刪除整列',
38
+ delete_table: '刪除表格',
39
+ rows: '橫列',
40
+ columns: '直欄',
41
+ add_head: '加入表格標題',
42
+ delete_head: '刪除表格標題',
43
+ title: '標題',
44
+ image_position: '位置',
45
+ none: '無',
46
+ left: '靠左',
47
+ right: '靠右',
48
+ image_web_link: '連結',
49
+ text: '內文',
50
+ mailto: 'Email',
51
+ web: '網址',
52
+ video_html_code: '嵌入影片的原始碼',
53
+ file: '插入文件',
54
+ upload: '上傳',
55
+ download: '下載',
56
+ choose: '選擇',
57
+ or_choose: '或選擇',
58
+ drop_file_here: '將文件拖曳至此',
59
+ align_left: '將文字對齊至左側',
60
+ align_center: '將文字置中',
61
+ align_right: '將文字對齊至右側',
62
+ align_justify: '對齊至兩側',
63
+ horizontalrule: '插入水平線',
64
+ fullscreen: '全銀幕',
65
+ deleted: '刪除線',
66
+ anchor: '錨點',
67
+ link_new_tab: 'Open link in new tab',
68
+ underline: 'Underline',
69
+ alignment: 'Alignment',
70
+ filename: 'Name (optional)',
71
+ edit: 'Edit'
72
+ };
73
+ })( 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,61 @@
1
+ if (!RedactorPlugins) var RedactorPlugins = {};
2
+
3
+ RedactorPlugins.clips = function()
4
+ {
5
+ return {
6
+ init: function()
7
+ {
8
+ var items = [
9
+ ['Lorem ipsum...', 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'],
10
+ ['Red label', '<span class="label-red">Label</span>']
11
+ ];
12
+
13
+ this.clips.template = $('<ul id="redactor-modal-list">');
14
+
15
+ for (var i = 0; i < items.length; i++)
16
+ {
17
+ var li = $('<li>');
18
+ var a = $('<a href="#" class="redactor-clip-link">').text(items[i][0]);
19
+ var div = $('<div class="redactor-clip">').hide().html(items[i][1]);
20
+
21
+ li.append(a);
22
+ li.append(div);
23
+ this.clips.template.append(li);
24
+ }
25
+
26
+ this.modal.addTemplate('clips', '<section>' + this.utils.getOuterHtml(this.clips.template) + '</section>');
27
+
28
+ var button = this.button.add('clips', 'Clips');
29
+ this.button.addCallback(button, this.clips.show);
30
+
31
+ },
32
+ show: function()
33
+ {
34
+ this.modal.load('clips', 'Insert Clips', 400);
35
+
36
+ this.modal.createCancelButton();
37
+
38
+ $('#redactor-modal-list').find('.redactor-clip-link').each($.proxy(this.clips.load, this));
39
+
40
+ this.selection.save();
41
+ this.modal.show();
42
+ },
43
+ load: function(i,s)
44
+ {
45
+ $(s).on('click', $.proxy(function(e)
46
+ {
47
+ e.preventDefault();
48
+ this.clips.insert($(s).next().html());
49
+
50
+ }, this));
51
+ },
52
+ insert: function(html)
53
+ {
54
+ this.selection.restore();
55
+ this.insert.html(html);
56
+ this.modal.close();
57
+ this.observe.load();
58
+ }
59
+ };
60
+ };
61
+
@@ -0,0 +1,76 @@
1
+ if (!RedactorPlugins) var RedactorPlugins = {};
2
+
3
+ (function($)
4
+ {
5
+ RedactorPlugins.fontcolor = function()
6
+ {
7
+ return {
8
+ init: function()
9
+ {
10
+ var colors = [
11
+ '#ffffff', '#000000', '#eeece1', '#1f497d', '#4f81bd', '#c0504d', '#9bbb59', '#8064a2', '#4bacc6', '#f79646', '#ffff00',
12
+ '#f2f2f2', '#7f7f7f', '#ddd9c3', '#c6d9f0', '#dbe5f1', '#f2dcdb', '#ebf1dd', '#e5e0ec', '#dbeef3', '#fdeada', '#fff2ca',
13
+ '#d8d8d8', '#595959', '#c4bd97', '#8db3e2', '#b8cce4', '#e5b9b7', '#d7e3bc', '#ccc1d9', '#b7dde8', '#fbd5b5', '#ffe694',
14
+ '#bfbfbf', '#3f3f3f', '#938953', '#548dd4', '#95b3d7', '#d99694', '#c3d69b', '#b2a2c7', '#b7dde8', '#fac08f', '#f2c314',
15
+ '#a5a5a5', '#262626', '#494429', '#17365d', '#366092', '#953734', '#76923c', '#5f497a', '#92cddc', '#e36c09', '#c09100',
16
+ '#7f7f7f', '#0c0c0c', '#1d1b10', '#0f243e', '#244061', '#632423', '#4f6128', '#3f3151', '#31859b', '#974806', '#7f6000'
17
+ ];
18
+
19
+ var buttons = ['fontcolor', 'backcolor'];
20
+
21
+ for (var i = 0; i < 2; i++)
22
+ {
23
+ var name = buttons[i];
24
+
25
+ var button = this.button.add(name, this.lang.get(name));
26
+ var $dropdown = this.button.addDropdown(button);
27
+
28
+ $dropdown.width(242);
29
+ this.fontcolor.buildPicker($dropdown, name, colors);
30
+
31
+ }
32
+ },
33
+ buildPicker: function($dropdown, name, colors)
34
+ {
35
+ var rule = (name == 'backcolor') ? 'background-color' : 'color';
36
+
37
+ var len = colors.length;
38
+ var self = this;
39
+ var func = function(e)
40
+ {
41
+ e.preventDefault();
42
+ self.fontcolor.set($(this).data('rule'), $(this).attr('rel'));
43
+ };
44
+
45
+ for (var z = 0; z < len; z++)
46
+ {
47
+ var color = colors[z];
48
+
49
+ var $swatch = $('<a rel="' + color + '" data-rule="' + rule +'" href="#" style="float: left; font-size: 0; border: 2px solid #fff; padding: 0; margin: 0; width: 22px; height: 22px;"></a>');
50
+ $swatch.css('background-color', color);
51
+ $swatch.on('click', func);
52
+
53
+ $dropdown.append($swatch);
54
+ }
55
+
56
+ var $elNone = $('<a href="#" style="display: block; clear: both; padding: 5px; font-size: 12px; line-height: 1;"></a>').html(this.lang.get('none'));
57
+ $elNone.on('click', $.proxy(function(e)
58
+ {
59
+ e.preventDefault();
60
+ this.fontcolor.remove(rule);
61
+
62
+ }, this));
63
+
64
+ $dropdown.append($elNone);
65
+ },
66
+ set: function(rule, type)
67
+ {
68
+ this.inline.format('span', 'style', rule + ': ' + type + ';');
69
+ },
70
+ remove: function(rule)
71
+ {
72
+ this.inline.removeStyleRule(rule);
73
+ }
74
+ };
75
+ };
76
+ })(jQuery);
@@ -0,0 +1,35 @@
1
+ if (!RedactorPlugins) var RedactorPlugins = {};
2
+
3
+ (function($)
4
+ {
5
+ RedactorPlugins.fontfamily = function()
6
+ {
7
+ return {
8
+ init: function ()
9
+ {
10
+ var fonts = [ 'Arial', 'Helvetica', 'Georgia', 'Times New Roman', 'Monospace' ];
11
+ var that = this;
12
+ var dropdown = {};
13
+
14
+ $.each(fonts, function(i, s)
15
+ {
16
+ dropdown['s' + i] = { title: s, func: function() { that.fontfamily.set(s); }};
17
+ });
18
+
19
+ dropdown.remove = { title: 'Remove Font Family', func: that.fontfamily.reset };
20
+
21
+ var button = this.button.add('fontfamily', 'Change Font Family');
22
+ this.button.addDropdown(button, dropdown);
23
+
24
+ },
25
+ set: function (value)
26
+ {
27
+ this.inline.format('span', 'style', 'font-family:' + value + ';');
28
+ },
29
+ reset: function()
30
+ {
31
+ this.inline.removeStyleRule('font-family');
32
+ }
33
+ };
34
+ };
35
+ })(jQuery);
@@ -0,0 +1,34 @@
1
+ if (!RedactorPlugins) var RedactorPlugins = {};
2
+
3
+ (function($)
4
+ {
5
+ RedactorPlugins.fontsize = function()
6
+ {
7
+ return {
8
+ init: function()
9
+ {
10
+ var fonts = [10, 11, 12, 14, 16, 18, 20, 24, 28, 30];
11
+ var that = this;
12
+ var dropdown = {};
13
+
14
+ $.each(fonts, function(i, s)
15
+ {
16
+ dropdown['s' + i] = { title: s + 'px', func: function() { that.fontsize.set(s); } };
17
+ });
18
+
19
+ dropdown.remove = { title: 'Remove Font Size', func: that.fontsize.reset };
20
+
21
+ var button = this.button.add('fontsize', 'Change Font Size');
22
+ this.button.addDropdown(button, dropdown);
23
+ },
24
+ set: function(size)
25
+ {
26
+ this.inline.format('span', 'style', 'font-size: ' + size + 'px;');
27
+ },
28
+ reset: function()
29
+ {
30
+ this.inline.removeStyleRule('font-size');
31
+ }
32
+ };
33
+ };
34
+ })(jQuery);
@@ -0,0 +1,123 @@
1
+ if (!RedactorPlugins) var RedactorPlugins = {};
2
+
3
+ (function($)
4
+ {
5
+ RedactorPlugins.fullscreen = function()
6
+ {
7
+ return {
8
+ init: function()
9
+ {
10
+ this.fullscreen.isOpen = false;
11
+
12
+ var button = this.button.add('fullscreen', 'Fullscreen');
13
+ this.button.addCallback(button, this.fullscreen.toggle);
14
+
15
+ if (this.opts.fullscreen) this.fullscreen.toggle();
16
+ },
17
+ enable: function()
18
+ {
19
+ this.button.changeIcon('fullscreen', 'normalscreen');
20
+ this.button.setActive('fullscreen');
21
+ this.fullscreen.isOpen = true;
22
+
23
+ if (this.opts.toolbarExternal)
24
+ {
25
+ this.fullscreen.toolcss = {};
26
+ this.fullscreen.boxcss = {};
27
+ this.fullscreen.toolcss.width = this.$toolbar.css('width');
28
+ this.fullscreen.toolcss.top = this.$toolbar.css('top');
29
+ this.fullscreen.toolcss.position = this.$toolbar.css('position');
30
+ this.fullscreen.boxcss.top = this.$box.css('top');
31
+ }
32
+
33
+ this.fullscreen.height = this.$editor.height();
34
+
35
+ if (this.opts.maxHeight) this.$editor.css('max-height', '');
36
+ if (this.opts.minHeight) this.$editor.css('min-height', '');
37
+
38
+ if (!this.$fullscreenPlaceholder) this.$fullscreenPlaceholder = $('<div/>');
39
+ this.$fullscreenPlaceholder.insertAfter(this.$box);
40
+
41
+ this.$box.appendTo(document.body);
42
+
43
+ this.$box.addClass('redactor-box-fullscreen');
44
+ $('body, html').css('overflow', 'hidden');
45
+
46
+ this.fullscreen.resize();
47
+ $(window).on('resize.redactor.fullscreen', $.proxy(this.fullscreen.resize, this));
48
+ $(document).scrollTop(0, 0);
49
+
50
+ $('.redactor-toolbar-tooltip').hide();
51
+ this.$editor.focus();
52
+ this.observe.load();
53
+ },
54
+ disable: function()
55
+ {
56
+ this.button.removeIcon('fullscreen', 'normalscreen');
57
+ this.button.setInactive('fullscreen');
58
+ this.fullscreen.isOpen = false;
59
+
60
+ $(window).off('resize.redactor.fullscreen');
61
+ $('body, html').css('overflow', '');
62
+
63
+ this.$box.insertBefore(this.$fullscreenPlaceholder);
64
+ this.$fullscreenPlaceholder.remove();
65
+
66
+ this.$box.removeClass('redactor-box-fullscreen').css({ width: 'auto', height: 'auto' });
67
+
68
+ this.code.sync();
69
+
70
+ if (this.opts.toolbarExternal)
71
+ {
72
+ this.$box.css('top', this.fullscreen.boxcss.top);
73
+ this.$toolbar.css({
74
+ 'width': this.fullscreen.toolcss.width,
75
+ 'top': this.fullscreen.toolcss.top,
76
+ 'position': this.fullscreen.toolcss.position
77
+ });
78
+ }
79
+
80
+ if (this.opts.minHeight) this.$editor.css('minHeight', this.opts.minHeight);
81
+ if (this.opts.maxHeight) this.$editor.css('maxHeight', this.opts.maxHeight);
82
+
83
+ $('.redactor-toolbar-tooltip').hide();
84
+ this.$editor.css('height', 'auto');
85
+ this.$editor.focus();
86
+ this.observe.load();
87
+ },
88
+ toggle: function()
89
+ {
90
+ if (this.fullscreen.isOpen)
91
+ {
92
+ this.fullscreen.disable();
93
+ }
94
+ else
95
+ {
96
+ this.fullscreen.enable();
97
+ }
98
+ },
99
+ resize: function()
100
+ {
101
+ if (!this.fullscreen.isOpen) return;
102
+
103
+ var toolbarHeight = this.$toolbar.height();
104
+
105
+ var height = $(window).height() - toolbarHeight - this.utils.normalize(this.$editor.css('padding-top')) - this.utils.normalize(this.$editor.css('padding-bottom'));
106
+ this.$box.width($(window).width()).height(height);
107
+
108
+ if (this.opts.toolbarExternal)
109
+ {
110
+ this.$toolbar.css({
111
+ 'top': '0px',
112
+ 'position': 'absolute',
113
+ 'width': '100%'
114
+ });
115
+
116
+ this.$box.css('top', toolbarHeight + 'px');
117
+ }
118
+
119
+ this.$editor.height(height);
120
+ }
121
+ };
122
+ };
123
+ })(jQuery);