tinymce4-rails 4.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. data/.gitignore +17 -0
  2. data/.rvmrc +1 -0
  3. data/Gemfile +9 -0
  4. data/LICENSE +22 -0
  5. data/README.md +110 -0
  6. data/Rakefile +2 -0
  7. data/lib/tinymce4-rails.rb +15 -0
  8. data/lib/tinymce4/rails.rb +2 -0
  9. data/lib/tinymce4/rails/engine.rb +22 -0
  10. data/lib/tinymce4/rails/helper.rb +37 -0
  11. data/lib/tinymce4/version.rb +4 -0
  12. data/spec/spec_helper.rb +1 -0
  13. data/spec/tinymce4/rails_helper_spec.rb +72 -0
  14. data/tinymce4-rails.gemspec +16 -0
  15. data/vendor/assets/javascripts/tinymce/jquery.tinymce.min.js +1 -0
  16. data/vendor/assets/javascripts/tinymce/langs/ar.js +152 -0
  17. data/vendor/assets/javascripts/tinymce/langs/cs.js +156 -0
  18. data/vendor/assets/javascripts/tinymce/langs/da.js +152 -0
  19. data/vendor/assets/javascripts/tinymce/langs/de.js +156 -0
  20. data/vendor/assets/javascripts/tinymce/langs/el.js +156 -0
  21. data/vendor/assets/javascripts/tinymce/langs/es.js +156 -0
  22. data/vendor/assets/javascripts/tinymce/langs/fa.js +92 -0
  23. data/vendor/assets/javascripts/tinymce/langs/fi.js +156 -0
  24. data/vendor/assets/javascripts/tinymce/langs/fr_FR.js +156 -0
  25. data/vendor/assets/javascripts/tinymce/langs/gl.js +156 -0
  26. data/vendor/assets/javascripts/tinymce/langs/he_IL.js +156 -0
  27. data/vendor/assets/javascripts/tinymce/langs/hu_HU.js +156 -0
  28. data/vendor/assets/javascripts/tinymce/langs/it.js +155 -0
  29. data/vendor/assets/javascripts/tinymce/langs/ja.js +156 -0
  30. data/vendor/assets/javascripts/tinymce/langs/ka_GE.js +156 -0
  31. data/vendor/assets/javascripts/tinymce/langs/nb_NO.js +156 -0
  32. data/vendor/assets/javascripts/tinymce/langs/nl.js +156 -0
  33. data/vendor/assets/javascripts/tinymce/langs/pl.js +152 -0
  34. data/vendor/assets/javascripts/tinymce/langs/pt_BR.js +156 -0
  35. data/vendor/assets/javascripts/tinymce/langs/pt_PT.js +152 -0
  36. data/vendor/assets/javascripts/tinymce/langs/readme.md +3 -0
  37. data/vendor/assets/javascripts/tinymce/langs/ru.js +156 -0
  38. data/vendor/assets/javascripts/tinymce/langs/sk.js +156 -0
  39. data/vendor/assets/javascripts/tinymce/langs/sl_SI.js +152 -0
  40. data/vendor/assets/javascripts/tinymce/langs/sr.js +152 -0
  41. data/vendor/assets/javascripts/tinymce/langs/sv_SE.js +156 -0
  42. data/vendor/assets/javascripts/tinymce/langs/tr_TR.js +152 -0
  43. data/vendor/assets/javascripts/tinymce/langs/uk.js +31 -0
  44. data/vendor/assets/javascripts/tinymce/langs/zh_CN.js +156 -0
  45. data/vendor/assets/javascripts/tinymce/license.txt +504 -0
  46. data/vendor/assets/javascripts/tinymce/plugins/advlist/plugin.min.js +1 -0
  47. data/vendor/assets/javascripts/tinymce/plugins/anchor/plugin.min.js +1 -0
  48. data/vendor/assets/javascripts/tinymce/plugins/autolink/plugin.min.js +1 -0
  49. data/vendor/assets/javascripts/tinymce/plugins/autoresize/plugin.min.js +1 -0
  50. data/vendor/assets/javascripts/tinymce/plugins/autosave/plugin.min.js +1 -0
  51. data/vendor/assets/javascripts/tinymce/plugins/bbcode/plugin.min.js +1 -0
  52. data/vendor/assets/javascripts/tinymce/plugins/charmap/plugin.min.js +1 -0
  53. data/vendor/assets/javascripts/tinymce/plugins/code/plugin.min.js +1 -0
  54. data/vendor/assets/javascripts/tinymce/plugins/compat3x/editable_selects.js +70 -0
  55. data/vendor/assets/javascripts/tinymce/plugins/compat3x/form_utils.js +210 -0
  56. data/vendor/assets/javascripts/tinymce/plugins/compat3x/mctabs.js +162 -0
  57. data/vendor/assets/javascripts/tinymce/plugins/compat3x/tiny_mce_popup.js +435 -0
  58. data/vendor/assets/javascripts/tinymce/plugins/compat3x/validate.js +252 -0
  59. data/vendor/assets/javascripts/tinymce/plugins/contextmenu/plugin.min.js +1 -0
  60. data/vendor/assets/javascripts/tinymce/plugins/directionality/plugin.min.js +1 -0
  61. data/vendor/assets/javascripts/tinymce/plugins/emoticons/img/smiley-cool.gif +0 -0
  62. data/vendor/assets/javascripts/tinymce/plugins/emoticons/img/smiley-cry.gif +0 -0
  63. data/vendor/assets/javascripts/tinymce/plugins/emoticons/img/smiley-embarassed.gif +0 -0
  64. data/vendor/assets/javascripts/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif +0 -0
  65. data/vendor/assets/javascripts/tinymce/plugins/emoticons/img/smiley-frown.gif +0 -0
  66. data/vendor/assets/javascripts/tinymce/plugins/emoticons/img/smiley-innocent.gif +0 -0
  67. data/vendor/assets/javascripts/tinymce/plugins/emoticons/img/smiley-kiss.gif +0 -0
  68. data/vendor/assets/javascripts/tinymce/plugins/emoticons/img/smiley-laughing.gif +0 -0
  69. data/vendor/assets/javascripts/tinymce/plugins/emoticons/img/smiley-money-mouth.gif +0 -0
  70. data/vendor/assets/javascripts/tinymce/plugins/emoticons/img/smiley-sealed.gif +0 -0
  71. data/vendor/assets/javascripts/tinymce/plugins/emoticons/img/smiley-smile.gif +0 -0
  72. data/vendor/assets/javascripts/tinymce/plugins/emoticons/img/smiley-surprised.gif +0 -0
  73. data/vendor/assets/javascripts/tinymce/plugins/emoticons/img/smiley-tongue-out.gif +0 -0
  74. data/vendor/assets/javascripts/tinymce/plugins/emoticons/img/smiley-undecided.gif +0 -0
  75. data/vendor/assets/javascripts/tinymce/plugins/emoticons/img/smiley-wink.gif +0 -0
  76. data/vendor/assets/javascripts/tinymce/plugins/emoticons/img/smiley-yell.gif +0 -0
  77. data/vendor/assets/javascripts/tinymce/plugins/emoticons/plugin.min.js +1 -0
  78. data/vendor/assets/javascripts/tinymce/plugins/example/plugin.min.js +1 -0
  79. data/vendor/assets/javascripts/tinymce/plugins/example_dependency/plugin.min.js +1 -0
  80. data/vendor/assets/javascripts/tinymce/plugins/fullpage/plugin.min.js +1 -0
  81. data/vendor/assets/javascripts/tinymce/plugins/fullscreen/plugin.min.js +1 -0
  82. data/vendor/assets/javascripts/tinymce/plugins/hr/plugin.min.js +1 -0
  83. data/vendor/assets/javascripts/tinymce/plugins/image/plugin.min.js +1 -0
  84. data/vendor/assets/javascripts/tinymce/plugins/insertdatetime/plugin.min.js +1 -0
  85. data/vendor/assets/javascripts/tinymce/plugins/layer/plugin.min.js +1 -0
  86. data/vendor/assets/javascripts/tinymce/plugins/legacyoutput/plugin.min.js +1 -0
  87. data/vendor/assets/javascripts/tinymce/plugins/link/plugin.min.js +1 -0
  88. data/vendor/assets/javascripts/tinymce/plugins/lists/plugin.min.js +1 -0
  89. data/vendor/assets/javascripts/tinymce/plugins/media/moxieplayer.swf +0 -0
  90. data/vendor/assets/javascripts/tinymce/plugins/media/plugin.min.js +1 -0
  91. data/vendor/assets/javascripts/tinymce/plugins/nonbreaking/plugin.min.js +1 -0
  92. data/vendor/assets/javascripts/tinymce/plugins/noneditable/plugin.min.js +1 -0
  93. data/vendor/assets/javascripts/tinymce/plugins/pagebreak/plugin.min.js +1 -0
  94. data/vendor/assets/javascripts/tinymce/plugins/paste/plugin.min.js +1 -0
  95. data/vendor/assets/javascripts/tinymce/plugins/preview/plugin.min.js +1 -0
  96. data/vendor/assets/javascripts/tinymce/plugins/print/plugin.min.js +1 -0
  97. data/vendor/assets/javascripts/tinymce/plugins/save/plugin.min.js +1 -0
  98. data/vendor/assets/javascripts/tinymce/plugins/searchreplace/plugin.min.js +1 -0
  99. data/vendor/assets/javascripts/tinymce/plugins/spellchecker/plugin.min.js +1 -0
  100. data/vendor/assets/javascripts/tinymce/plugins/tabfocus/plugin.min.js +1 -0
  101. data/vendor/assets/javascripts/tinymce/plugins/table/plugin.min.js +1 -0
  102. data/vendor/assets/javascripts/tinymce/plugins/template/plugin.min.js +1 -0
  103. data/vendor/assets/javascripts/tinymce/plugins/textcolor/plugin.min.js +1 -0
  104. data/vendor/assets/javascripts/tinymce/plugins/visualblocks/css/visualblocks.css +114 -0
  105. data/vendor/assets/javascripts/tinymce/plugins/visualblocks/plugin.min.js +1 -0
  106. data/vendor/assets/javascripts/tinymce/plugins/visualchars/plugin.min.js +1 -0
  107. data/vendor/assets/javascripts/tinymce/plugins/wordcount/plugin.min.js +1 -0
  108. data/vendor/assets/javascripts/tinymce/skins/lightgray/content.min.css +1 -0
  109. data/vendor/assets/javascripts/tinymce/skins/lightgray/fonts/icomoon-small.eot +0 -0
  110. data/vendor/assets/javascripts/tinymce/skins/lightgray/fonts/icomoon-small.svg +166 -0
  111. data/vendor/assets/javascripts/tinymce/skins/lightgray/fonts/icomoon-small.ttf +0 -0
  112. data/vendor/assets/javascripts/tinymce/skins/lightgray/fonts/icomoon-small.woff +0 -0
  113. data/vendor/assets/javascripts/tinymce/skins/lightgray/fonts/icomoon.eot +0 -0
  114. data/vendor/assets/javascripts/tinymce/skins/lightgray/fonts/icomoon.svg +150 -0
  115. data/vendor/assets/javascripts/tinymce/skins/lightgray/fonts/icomoon.ttf +0 -0
  116. data/vendor/assets/javascripts/tinymce/skins/lightgray/fonts/icomoon.woff +0 -0
  117. data/vendor/assets/javascripts/tinymce/skins/lightgray/fonts/readme.md +1 -0
  118. data/vendor/assets/javascripts/tinymce/skins/lightgray/img/anchor.gif +0 -0
  119. data/vendor/assets/javascripts/tinymce/skins/lightgray/img/loader.gif +0 -0
  120. data/vendor/assets/javascripts/tinymce/skins/lightgray/img/object.gif +0 -0
  121. data/vendor/assets/javascripts/tinymce/skins/lightgray/img/trans.gif +0 -0
  122. data/vendor/assets/javascripts/tinymce/skins/lightgray/img/wline.gif +0 -0
  123. data/vendor/assets/javascripts/tinymce/skins/lightgray/skin.classic.min.css +1 -0
  124. data/vendor/assets/javascripts/tinymce/skins/lightgray/skin.ie7.min.css +1 -0
  125. data/vendor/assets/javascripts/tinymce/skins/lightgray/skin.min.css +1 -0
  126. data/vendor/assets/javascripts/tinymce/themes/modern/theme.min.js +1 -0
  127. data/vendor/assets/javascripts/tinymce/tinymce.min.js +9 -0
  128. metadata +174 -0
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm use 1.9.3@tinymce4-rails --create
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source 'http://ruby.taobao.org'
2
+
3
+ gem 'railties', '~> 3.2.0'
4
+
5
+ group :test do
6
+ gem "rspec"
7
+ end
8
+
9
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 xixilive
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,110 @@
1
+ # Tinymce4::Rails
2
+
3
+ Rails assets pipeline and helpers for tinymce4, lang packages are built-in.
4
+
5
+ This Gem is working with Rails 3.2.*.
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ gem 'tinymce4-rails'
12
+
13
+ And then execute:
14
+
15
+ $ bundle install
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install tinymce4-rails
20
+
21
+ And then append following lines to your application.js
22
+
23
+ //= require tinymce/tinymce.min
24
+ //= require tinymce/jquery.tinymce.min (options for jquery plugin)
25
+
26
+ ## Usage
27
+
28
+ ### default configuration
29
+
30
+ {
31
+ selector: 'textarea',
32
+ language: 'I18n.default_locale of your application',
33
+ theme: 'modern'
34
+ }
35
+
36
+ ### custom configure
37
+
38
+ Tinymce4.configure do |c|
39
+ c.selector = 'textarea',
40
+ c.plugins = [
41
+ 'advlist autolink lists link image charmap print preview hr anchor pagebreak',
42
+ 'insertdatetime media nonbreaking save table contextmenu directionality'
43
+ ]
44
+ ......
45
+ end
46
+
47
+ ### helpers
48
+
49
+ #### tinymce
50
+
51
+ <%= tinymce :selector => '#my-editor', :theme => 'my_custom_theme',...... %>
52
+
53
+ With block
54
+
55
+ <%= tinymce do |config|
56
+ config.selector = '#my-editor'
57
+ config.theme = 'my_custom_theme'
58
+ end %>
59
+
60
+ => <script type="text/javascript">
61
+ tinymce.init({
62
+ selector: '#my-editor',
63
+ theme: 'my_custom_theme',
64
+ ......
65
+ });
66
+ </script>
67
+
68
+ With jquery options and block
69
+
70
+ <%= tinymce(:jquery => true) do |config|
71
+ config.selector = '#my-editor'
72
+ config.theme = 'my_custom_theme'
73
+ end %>
74
+
75
+ Or
76
+
77
+ <%= tinymce(true) do |config|
78
+ config.selector = '#my-editor'
79
+ config.theme = 'my_custom_theme'
80
+ end %>
81
+
82
+ => <script type="text/javascript">
83
+ $(function(){
84
+ $.tinymce({
85
+ selector: '#my-editor',
86
+ theme: 'my_custom_theme',
87
+ ......
88
+ });
89
+ });
90
+ </script>
91
+
92
+ #### assets
93
+ <%= tinymce_assets %>
94
+
95
+ => <script type="text/javascript" src="assets/tinymce/tinymce.min.js"></script>
96
+
97
+ Or with jquery:
98
+
99
+ <%= tinymce_assets(true) %>
100
+
101
+ => <script type="text/javascript" src="assets/tinymce/tinymce.min.js"></script>
102
+ <script type="text/javascript" src="assets/tinymce/jquery.tinymce.min.js"></script>
103
+
104
+ ## Contributing
105
+
106
+ 1. Fork it
107
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
108
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
109
+ 4. Push to the branch (`git push origin my-new-feature`)
110
+ 5. Create new Pull Request
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
@@ -0,0 +1,15 @@
1
+ require "active_support/configurable"
2
+ require "active_support/core_ext"
3
+
4
+ $:.unshift(File.dirname(__FILE__))
5
+
6
+ require 'tinymce4/version'
7
+
8
+ module Tinymce4
9
+ include ActiveSupport::Configurable
10
+ class << self
11
+ #TODO:: pre-define some profiles
12
+ end
13
+ end
14
+
15
+ require 'tinymce4/rails' if defined?(::Rails)
@@ -0,0 +1,2 @@
1
+ require 'tinymce4/rails/helper'
2
+ require 'tinymce4/rails/engine'
@@ -0,0 +1,22 @@
1
+ module Tinymce4
2
+ module Rails
3
+ class Engine < ::Rails::Engine
4
+ initializer "init Tinymce4 config" do
5
+ Tinymce4.configure do |c|
6
+ c.selector = 'textarea'
7
+ c.theme = 'modern'
8
+ end
9
+ end
10
+
11
+ config.after_initialize do
12
+ Tinymce4.config.language ||= I18n.default_locale
13
+ end
14
+
15
+ initializer "load helpers" do |app|
16
+ ActiveSupport.on_load(:action_view) do
17
+ include Tinymce4::Rails::Helper
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,37 @@
1
+ module Tinymce4
2
+ module Rails
3
+ module Helper
4
+ def tinymce *args
5
+ options = args.extract_options!
6
+ jquery = options.delete(:jquery) || !!args.first
7
+ options = Tinymce4.config.merge(options)
8
+ yield(options) if block_given?
9
+ jquery ? tinymce_jquery(options.to_hash) : tinymce_init(options.to_hash)
10
+ end
11
+
12
+ def tinymce_assets jquery = false
13
+ assets = ["tinymce/tinymce.min"]
14
+ assets << "tinymce/jquery.tinymce.min" if jquery
15
+ javascript_include_tag *assets
16
+ end
17
+
18
+ def tinymce_jquery_assets
19
+ tinymce_assets(true)
20
+ end
21
+
22
+ private
23
+ def tinymce_init options
24
+ javascript_tag do
25
+ "tinyMCE.init(#{options.to_json});".html_safe
26
+ end
27
+ end
28
+
29
+ def tinymce_jquery options
30
+ selector = options.delete(:selector) || options.delete("selector") || 'textarea'
31
+ javascript_tag do
32
+ ";jQuery(function(){\n\tjQuery('#{selector}').tinymce(#{options.to_json});\n});".html_safe
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,4 @@
1
+ module Tinymce4
2
+ VERSION = "4.0.1"
3
+ TINYMCE_VERSION = "4.0b3"
4
+ end
@@ -0,0 +1 @@
1
+ require 'rspec'
@@ -0,0 +1,72 @@
1
+ require 'spec_helper'
2
+ require 'tinymce4-rails'
3
+ require 'tinymce4/rails/helper'
4
+ require 'action_view'
5
+ require 'action_view/helpers'
6
+
7
+ describe Tinymce4::Rails::Helper do
8
+
9
+ let(:view){
10
+ Class.new{
11
+ attr_accessor :output_buffer
12
+ include ActionView::Helpers
13
+ include Tinymce4::Rails::Helper
14
+ }.new
15
+ }
16
+
17
+ before(:each){ Tinymce4.config.clear }
18
+
19
+ context '#tinymce' do
20
+ it "without jquery options" do
21
+ view.should_receive(:tinymce_init).with(:option1=>'value1')
22
+ view.tinymce do |c|
23
+ c.option1 = 'value1'
24
+ end
25
+
26
+ view.should_receive(:tinymce_init).with(:option1=>'value1')
27
+ view.tinymce(:option1=>'value1')
28
+ end
29
+
30
+ it "with jquery options" do
31
+ view.should_receive(:tinymce_jquery).with(:option1=>'value1')
32
+ view.tinymce(:jquery=>true) do |c|
33
+ c.option1 = 'value1'
34
+ end
35
+
36
+ view.should_receive(:tinymce_jquery).with(:option1=>'value1')
37
+ view.tinymce(true, :option1=>'value1')
38
+ end
39
+ end
40
+
41
+ context '#tinymce_assets' do
42
+ it 'without jquery' do
43
+ view.should_receive(:javascript_include_tag).with(*["tinymce/tinymce.min"])
44
+ view.tinymce_assets
45
+ end
46
+
47
+ it 'with jquery' do
48
+ view.should_receive(:javascript_include_tag).with(*["tinymce/tinymce.min", "tinymce/jquery.tinymce.min"])
49
+ view.tinymce_assets(true)
50
+ end
51
+ end
52
+
53
+ context '#tinymce_init' do
54
+ it "should use tinymce.init" do
55
+ view.tinymce(:selector=>'textarea').should == "<script type=\"text/javascript\">\n//<![CDATA[\ntinyMCE.init({\"selector\":\"textarea\"});\n//]]>\n</script>"
56
+
57
+ view.tinymce{|c| c.selector = 'textarea' }.should == "<script type=\"text/javascript\">\n//<![CDATA[\ntinyMCE.init({\"selector\":\"textarea\"});\n//]]>\n</script>"
58
+ end
59
+ end
60
+
61
+ context '#tinymce_jquery' do
62
+ it "should use tinymce jquery plugin" do
63
+ view.tinymce(true,:selector=>'textarea',:language=>'en').should == "<script type=\"text/javascript\">\n//<![CDATA[\n;jQuery(function(){\n\tjQuery('textarea').tinymce({\"language\":\"en\"});\n});\n//]]>\n</script>"
64
+
65
+ view.tinymce(true){|c|
66
+ c.selector = 'textarea'
67
+ c.language = 'en'
68
+ }.should == "<script type=\"text/javascript\">\n//<![CDATA[\n;jQuery(function(){\n\tjQuery('textarea').tinymce({\"language\":\"en\"});\n});\n//]]>\n</script>"
69
+ end
70
+ end
71
+
72
+ end
@@ -0,0 +1,16 @@
1
+ require File.expand_path('../lib/tinymce4/version', __FILE__)
2
+
3
+ Gem::Specification.new do |gem|
4
+ gem.authors = ["xixilive"]
5
+ gem.email = ["xixilive@gmail.com"]
6
+ gem.description = %q{Rails3 assets pipeline and helpers for tinymce4, lang packages are built-in}
7
+ gem.summary = %q{Rails3 assets pipeline and helpers for tinymce4, lang packages are built-in}
8
+ gem.homepage = "https://github.com/xixilive/tinymce4-rails"
9
+
10
+ gem.files = `git ls-files`.split($\)
11
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
12
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
13
+ gem.name = "tinymce4-rails"
14
+ gem.require_paths = ["lib"]
15
+ gem.version = Tinymce4::VERSION
16
+ end
@@ -0,0 +1 @@
1
+ !function(t){function e(){function e(t){"remove"===t&&this.each(function(t,e){var n=r(e);n&&n.remove()}),this.find("span.mceEditor,div.mceEditor").each(function(t,e){var n=tinymce.get(e.id.replace(/_parent$/,""));n&&n.remove()})}function i(t){var i,r=this;if(t!==n)e.call(r),r.each(function(e,n){var i;(i=tinymce.get(n.id))&&i.setContent(t)});else if(r.length>0&&(i=tinymce.get(r[0].id)))return i.getContent()}function r(t){var e=null;return t&&t.id&&a.tinymce&&(e=tinymce.get(t.id)),e}function c(t){return!!(t&&t.length&&a.tinymce&&t.is(":tinymce"))}var u={};t.each(["text","html","val"],function(e,a){var o=u[a]=t.fn[a],s="text"===a;t.fn[a]=function(e){var a=this;if(!c(a))return o.apply(a,arguments);if(e!==n)return i.call(a.filter(":tinymce"),e),o.apply(a.not(":tinymce"),arguments),a;var u="",l=arguments;return(s?a:a.eq(0)).each(function(e,n){var i=r(n);u+=i?s?i.getContent().replace(/<(?:"[^"]*"|'[^']*'|[^'">])*>/g,""):i.getContent({save:!0}):o.apply(t(n),l)}),u}}),t.each(["append","prepend"],function(e,i){var a=u[i]=t.fn[i],o="prepend"===i;t.fn[i]=function(t){var e=this;return c(e)?t!==n?(e.filter(":tinymce").each(function(e,n){var i=r(n);i&&i.setContent(o?t+i.getContent():i.getContent()+t)}),a.apply(e.not(":tinymce"),arguments),e):void 0:a.apply(e,arguments)}}),t.each(["remove","replaceWith","replaceAll","empty"],function(n,i){var r=u[i]=t.fn[i];t.fn[i]=function(){return e.call(this,i),r.apply(this,arguments)}}),u.attr=t.fn.attr,t.fn.attr=function(e,a){var o=this,s=arguments;if(!e||"value"!==e||!c(o))return a!==n?u.attr.apply(o,s):u.attr.apply(o,s);if(a!==n)return i.call(o.filter(":tinymce"),a),u.attr.apply(o.not(":tinymce"),s),o;var l=o[0],p=r(l);return p?p.getContent({save:!0}):u.attr.apply(t(l),s)}}var n,i,r=[],a=window;t.fn.tinymce=function(n){function c(){var i=[],r=0;e&&(e(),e=null),l.each(function(t,e){var a,c=e.id,u=n.oninit;c||(e.id=c=tinymce.DOM.uniqueId()),a=new tinymce.Editor(c,n,tinymce.EditorManager),i.push(a),a.on("init",function(){var t,e=u;l.css("visibility",""),u&&++r==i.length&&("string"==typeof e&&(t=-1===e.indexOf(".")?null:tinymce.resolve(e.replace(/\.\w+$/,"")),e=tinymce.resolve(e)),e.apply(t||tinymce,i))})}),t.each(i,function(t,e){e.render()})}var u,o,s,l=this,p="";if(!l.length)return l;if(!n)return tinymce.get(l[0].id);if(l.css("visibility","hidden"),a.tinymce||i||!(u=n.script_url))1===i?r.push(c):c();else{i=1,o=u.substring(0,u.lastIndexOf("/")),-1!=u.indexOf(".min")&&(p=".min"),a.tinymce=a.tinyMCEPreInit||{base:o,suffix:p},-1!=u.indexOf("gzip")&&(s=n.language||"en",u=u+(/\?/.test(u)?"&":"?")+"js=true&core=true&suffix="+escape(p)+"&themes="+escape(n.theme)+"&plugins="+escape(n.plugins)+"&languages="+s,a.tinyMCE_GZ||(a.tinyMCE_GZ={start:function(){function e(t){tinymce.ScriptLoader.markDone(tinymce.baseURI.toAbsolute(t))}e("langs/"+s+".js"),e("themes/"+n.theme+"/theme"+p+".js"),e("themes/"+n.theme+"/langs/"+s+".js"),t.each(n.plugins.split(","),function(t,n){n&&(e("plugins/"+n+"/plugin"+p+".js"),e("plugins/"+n+"/langs/"+s+".js"))})},end:function(){}}));var f=document.createElement("script");f.type="text/javascript",f.onload=f.onreadystatechange=function(e){e=e||event,("load"==e.type||/complete|loaded/.test(f.readyState))&&(tinymce.dom.Event.domLoaded=1,i=2,n.script_loaded&&n.script_loaded(),c(),t.each(r,function(t,e){e()}))},f.src=u,document.body.appendChild(f)}return l},t.extend(t.expr[":"],{tinymce:function(t){return!!(t.id&&"tinymce"in window&&tinymce.get(t.id))}})}(jQuery);
@@ -0,0 +1,152 @@
1
+ tinymce.addI18n('ar',{
2
+ "Cut": "\u0642\u0635",
3
+ "Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0645\u062a\u0635\u0641\u062d\u0643 \u0644\u0627 \u064a\u062f\u0639\u0645 \u0627\u0644\u0648\u0635\u0648\u0644 \u0627\u0644\u0645\u0628\u0627\u0634\u0631 \u0625\u0644\u0649 \u0627\u0644\u062d\u0627\u0641\u0638\u0629. \u0627\u0644\u0631\u062c\u0627\u0621 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u062e\u062a\u0635\u0627\u0631\u0627\u062a \u0644\u0648\u062d\u0629 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d Ctrl+X\/C\/V \u0628\u062f\u0644\u0627 \u0645\u0646 \u0630\u0644\u0643.",
4
+ "Paste": "\u0644\u0635\u0642",
5
+ "Close": "\u0625\u063a\u0644\u0627\u0642",
6
+ "Align right": "\u0645\u062d\u0627\u0630\u0627\u0629 \u0627\u0644\u0646\u0635 \u0644\u0644\u064a\u0645\u064a\u0646",
7
+ "New document": "\u0645\u0633\u062a\u0646\u062f \u062c\u062f\u064a\u062f",
8
+ "Numbered list": "\u062a\u0631\u0642\u064a\u0645",
9
+ "Increase indent": "\u0632\u064a\u0627\u062f\u0629 \u0627\u0644\u0645\u0633\u0627\u0641\u0629 \u0627\u0644\u0628\u0627\u062f\u0626\u0629",
10
+ "Formats": "\u0627\u0644\u062a\u0646\u0633\u064a\u0642\u0627\u062a",
11
+ "Select all": "\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0643\u0644",
12
+ "Undo": "\u062a\u0631\u0627\u062c\u0639",
13
+ "Strikethrough": "\u064a\u062a\u0648\u0633\u0637 \u062e\u0637",
14
+ "Bullet list": "\u062a\u0639\u062f\u0627\u062f \u0646\u0642\u0637\u064a",
15
+ "Superscript": "\u0645\u0631\u062a\u0641\u0639",
16
+ "Clear formatting": "\u0645\u0633\u062d \u0627\u0644\u062a\u0646\u0633\u064a\u0642",
17
+ "Subscript": "\u0645\u0646\u062e\u0641\u0636",
18
+ "Redo": "\u0625\u0639\u0627\u062f\u0629",
19
+ "Ok": "\u0645\u0648\u0627\u0641\u0642",
20
+ "Bold": "\u063a\u0627\u0645\u0642",
21
+ "Italic": "\u0645\u0627\u0626\u0644",
22
+ "Align center": "\u062a\u0648\u0633\u064a\u0637",
23
+ "Decrease indent": "\u0625\u0646\u0642\u0627\u0635 \u0627\u0644\u0645\u0633\u0627\u0641\u0629 \u0627\u0644\u0628\u0627\u062f\u0626\u0629",
24
+ "Underline": "\u062a\u0633\u0637\u064a\u0631",
25
+ "Cancel": "\u0625\u0644\u063a\u0627\u0621",
26
+ "Justify": "\u0636\u0628\u0637",
27
+ "Copy": "\u0646\u0633\u062e",
28
+ "Align left": "\u0645\u062d\u0627\u0630\u0627\u0629 \u0627\u0644\u0646\u0635 \u0644\u0644\u064a\u0633\u0627\u0631",
29
+ "Visual aids": "\u0627\u0644\u0645\u0639\u064a\u0646\u0627\u062a \u0627\u0644\u0628\u0635\u0631\u064a\u0629",
30
+ "Lower Greek": "\u062a\u0631\u0642\u064a\u0645 \u064a\u0648\u0646\u0627\u0646\u064a \u0635\u063a\u064a\u0631",
31
+ "Square": "\u0645\u0631\u0628\u0639",
32
+ "Default": "\u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a",
33
+ "Lower Alpha": "\u062a\u0631\u0642\u064a\u0645 \u0623\u062e\u0631\u0641 \u0635\u063a\u064a\u0631\u0629",
34
+ "Circle": "\u062f\u0627\u0626\u0631\u0629",
35
+ "Disc": "\u0642\u0631\u0635",
36
+ "Upper Alpha": "\u062a\u0631\u0642\u064a\u0645 \u0623\u062d\u0631\u0641 \u0643\u0628\u064a\u0631\u0629",
37
+ "Upper Roman": "\u062a\u0631\u0642\u064a\u0645 \u0631\u0648\u0645\u0627\u0646\u064a \u0643\u0628\u064a\u0631",
38
+ "Lower Roman": "\u062a\u0631\u0642\u064a\u0645 \u0631\u0648\u0645\u0627\u0646\u064a \u0635\u063a\u064a\u0631",
39
+ "Name": "\u0627\u0644\u0627\u0633\u0645",
40
+ "Anchor": "\u0645\u0631\u0633\u0627\u0629",
41
+ "You have unsaved changes are you sure you want to navigate away?": "\u0644\u062f\u064a\u0643 \u062a\u063a\u064a\u064a\u0631\u0627\u062a \u0644\u0645 \u064a\u062a\u0645 \u062d\u0641\u0638\u0647\u0627 \u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u063a\u0628 \u0641\u064a \u0627\u0644\u0627\u0646\u062a\u0642\u0627\u0644 \u0628\u0639\u064a\u062f\u0627\u061f",
42
+ "Restore last draft": "\u0627\u0633\u062a\u0639\u0627\u062f\u0629 \u0623\u062e\u0631 \u0645\u0633\u0648\u062f\u0629",
43
+ "Special character": "\u0631\u0645\u0632",
44
+ "Source code": "\u0634\u0641\u0631\u0629 \u0627\u0644\u0645\u0635\u062f\u0631",
45
+ "Right to left": "\u0645\u0646 \u0627\u0644\u064a\u0645\u064a\u0646 \u0644\u0644\u064a\u0633\u0627\u0631",
46
+ "Left to right": "\u0645\u0646 \u0627\u0644\u064a\u0633\u0627\u0631 \u0644\u0644\u064a\u0645\u064a\u0646",
47
+ "Emoticons": "\u0627\u0644\u0631\u0645\u0648\u0632",
48
+ "Robots": "\u0627\u0644\u0631\u0648\u0628\u0648\u062a\u0627\u062a",
49
+ "Document properties": "\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0645\u0633\u062a\u0646\u062f",
50
+ "Title": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646",
51
+ "Keywords": "\u0643\u0644\u0645\u0627\u062a \u0627\u0644\u0628\u062d\u062b",
52
+ "Encoding": "\u0627\u0644\u062a\u0631\u0645\u064a\u0632",
53
+ "Description": "\u0627\u0644\u0648\u0635\u0641",
54
+ "Author": "\u0627\u0644\u0643\u0627\u062a\u0628",
55
+ "Fullscreen": "\u0645\u0644\u0621 \u0627\u0644\u0634\u0627\u0634\u0629",
56
+ "Horizontal line": "\u062e\u0637 \u0623\u0641\u0642\u064a",
57
+ "Source": "\u0627\u0644\u0645\u0635\u062f\u0631",
58
+ "Constrain proportions": "\u0627\u0644\u062a\u0646\u0627\u0633\u0628",
59
+ "Dimensions": "\u0627\u0644\u0623\u0628\u0639\u0627\u062f",
60
+ "Insert\/edit image": "\u0625\u062f\u0631\u0627\u062c\/\u062a\u062d\u0631\u064a\u0631 \u0635\u0648\u0631\u0629",
61
+ "Image description": "\u0648\u0635\u0641 \u0627\u0644\u0635\u0648\u0631\u0629",
62
+ "Insert date\/time": "\u0625\u062f\u0631\u0627\u062c \u062a\u0627\u0631\u064a\u062e\/\u0648\u0642\u062a",
63
+ "Url": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646",
64
+ "Text to display": "\u0627\u0644\u0646\u0635 \u0627\u0644\u0645\u0637\u0644\u0648\u0628 \u0639\u0631\u0636\u0647",
65
+ "Insert link": "\u0625\u062f\u0631\u0627\u062c \u0631\u0627\u0628\u0637",
66
+ "New window": "\u0646\u0627\u0641\u0630\u0629 \u062c\u062f\u064a\u062f\u0629",
67
+ "None": "\u0628\u0644\u0627",
68
+ "Target": "\u0627\u0644\u0625\u0637\u0627\u0631 \u0627\u0644\u0647\u062f\u0641",
69
+ "Insert\/edit link": "\u0625\u062f\u0631\u0627\u062c\/\u062a\u062d\u0631\u064a\u0631 \u0631\u0627\u0628\u0637",
70
+ "Insert\/edit video": "\u0625\u062f\u0631\u0627\u062c\/\u062a\u062d\u0631\u064a\u0631 \u0641\u064a\u062f\u064a\u0648",
71
+ "General": "\u0639\u0627\u0645",
72
+ "Poster": "\u0645\u0644\u0635\u0642",
73
+ "Alternative source": "\u0645\u0635\u062f\u0631 \u0628\u062f\u064a\u0644",
74
+ "Paste your embed code below:": "\u0644\u0635\u0642 \u0643\u0648\u062f \u0627\u0644\u062a\u0636\u0645\u064a\u0646 \u0647\u0646\u0627:",
75
+ "Insert video": "\u0625\u062f\u0631\u0627\u062c \u0641\u064a\u062f\u064a\u0648",
76
+ "Embed": "\u062a\u0636\u0645\u064a\u0646",
77
+ "Nonbreaking space": "\u0645\u0633\u0627\u0641\u0629 \u063a\u064a\u0631 \u0645\u0646\u0642\u0633\u0645\u0629",
78
+ "Page break": "\u0641\u0627\u0635\u0644 \u0644\u0644\u0635\u0641\u062d\u0629",
79
+ "Preview": "\u0645\u0639\u0627\u064a\u0646\u0629",
80
+ "Print": "\u0637\u0628\u0627\u0639\u0629",
81
+ "Save": "\u062d\u0641\u0638",
82
+ "Could not find the specified string.": "\u062a\u0639\u0630\u0631 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0627\u0644\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u062d\u062f\u062f\u0629",
83
+ "Replace": "\u0627\u0633\u062a\u0628\u062f\u0627\u0644",
84
+ "Next": "\u0627\u0644\u062a\u0627\u0644\u064a",
85
+ "Whole words": "\u0645\u0637\u0627\u0628\u0642\u0629 \u0627\u0644\u0643\u0644\u0645\u0627\u062a \u0628\u0627\u0644\u0643\u0627\u0645\u0644",
86
+ "Find and replace": "\u0628\u062d\u062b \u0648\u0627\u0633\u062a\u0628\u062f\u0627\u0644",
87
+ "Replace with": "\u0627\u0633\u062a\u0628\u062f\u0627\u0644 \u0628\u0640",
88
+ "Find": "\u0628\u062d\u062b",
89
+ "Replace all": "\u0627\u0633\u062a\u0628\u062f\u0627\u0644 \u0627\u0644\u0643\u0644",
90
+ "Match case": "\u0645\u0637\u0627\u0628\u0642\u0629 \u062d\u0627\u0644\u0629 \u0627\u0644\u0623\u062d\u0631\u0641",
91
+ "Prev": "\u0627\u0644\u0633\u0627\u0628\u0642",
92
+ "Spellcheck": "\u062a\u062f\u0642\u064a\u0642 \u0625\u0645\u0644\u0627\u0626\u064a",
93
+ "Finish": "\u0627\u0646\u062a\u0647\u064a",
94
+ "Ignore all": "\u062a\u062c\u0627\u0647\u0644 \u0627\u0644\u0643\u0644",
95
+ "Ignore": "\u062a\u062c\u0627\u0647\u0644",
96
+ "Insert row before": "\u0625\u062f\u0631\u0627\u062c \u0635\u0641 \u0644\u0644\u0623\u0639\u0644\u0649",
97
+ "Rows": "\u0639\u062f\u062f \u0627\u0644\u0635\u0641\u0648\u0641",
98
+ "Height": "\u0627\u0631\u062a\u0641\u0627\u0639",
99
+ "Paste row after": "\u0644\u0635\u0642 \u0627\u0644\u0635\u0641 \u0644\u0644\u0623\u0633\u0641\u0644",
100
+ "Alignment": "\u0645\u062d\u0627\u0630\u0627\u0629",
101
+ "Column group": "\u0645\u062c\u0645\u0648\u0639\u0629 \u0639\u0645\u0648\u062f",
102
+ "Row": "\u0635\u0641",
103
+ "Insert column before": "\u0625\u062f\u0631\u0627\u062c \u0639\u0645\u0648\u062f \u0644\u0644\u064a\u0633\u0627\u0631",
104
+ "Split cell": "\u062a\u0642\u0633\u064a\u0645 \u0627\u0644\u062e\u0644\u0627\u064a\u0627",
105
+ "Cell padding": "\u062a\u0628\u0627\u0639\u062f \u0627\u0644\u062e\u0644\u064a\u0629",
106
+ "Cell spacing": "\u0627\u0644\u0645\u0633\u0627\u0641\u0629 \u0628\u064a\u0646 \u0627\u0644\u062e\u0644\u0627\u064a\u0627",
107
+ "Row type": "\u0646\u0648\u0639 \u0627\u0644\u0635\u0641",
108
+ "Insert table": "\u0625\u062f\u0631\u0627\u062c \u062c\u062f\u0648\u0644",
109
+ "Body": "\u0647\u064a\u0643\u0644",
110
+ "Caption": "\u0634\u0631\u062d",
111
+ "Footer": "\u062a\u0630\u064a\u064a\u0644",
112
+ "Delete row": "\u062d\u0630\u0641 \u0635\u0641",
113
+ "Paste row before": "\u0644\u0635\u0642 \u0627\u0644\u0635\u0641 \u0644\u0644\u0623\u0639\u0644\u0649",
114
+ "Scope": "\u0627\u0644\u0645\u062c\u0627\u0644",
115
+ "Delete table": "\u062d\u0630\u0641 \u062c\u062f\u0648\u0644",
116
+ "Header cell": "\u0631\u0623\u0633 \u0627\u0644\u062e\u0644\u064a\u0629",
117
+ "Column": "\u0639\u0645\u0648\u062f",
118
+ "Cell": "\u062e\u0644\u064a\u0629",
119
+ "Header": "\u0627\u0644\u0631\u0623\u0633",
120
+ "Border": "\u062d\u062f\u0648\u062f",
121
+ "Cell type": "\u0646\u0648\u0639 \u0627\u0644\u062e\u0644\u064a\u0629",
122
+ "Copy row": "\u0646\u0633\u062e \u0627\u0644\u0635\u0641",
123
+ "Row properties": "\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0635\u0641",
124
+ "Table properties": "\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062c\u062f\u0648\u0644",
125
+ "Row group": "\u0645\u062c\u0645\u0648\u0639\u0629 \u0635\u0641",
126
+ "Right": "\u064a\u0645\u064a\u0646",
127
+ "Insert column after": "\u0625\u062f\u0631\u0627\u062c \u0639\u0645\u0648\u062f \u0644\u0644\u064a\u0645\u064a\u0646",
128
+ "Cols": "\u0639\u062f\u062f \u0627\u0644\u0623\u0639\u0645\u062f\u0629",
129
+ "Insert row after": "\u0625\u062f\u0631\u0627\u062c \u0635\u0641 \u0644\u0644\u0623\u0633\u0641\u0644",
130
+ "Width": "\u0639\u0631\u0636",
131
+ "Cell properties": "\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062e\u0644\u064a\u0629",
132
+ "Left": "\u064a\u0633\u0627\u0631",
133
+ "Cut row": "\u0642\u0635 \u0627\u0644\u0635\u0641",
134
+ "Delete column": "\u062d\u0630\u0641 \u0639\u0645\u0648\u062f",
135
+ "Center": "\u062a\u0648\u0633\u064a\u0637",
136
+ "Merge cells": "\u062f\u0645\u062c \u062e\u0644\u0627\u064a\u0627",
137
+ "Insert template": "\u0625\u062f\u0631\u0627\u062c \u0642\u0627\u0644\u0628",
138
+ "Templates": "\u0642\u0648\u0627\u0644\u0628",
139
+ "Background color": "\u0644\u0648\u0646 \u0627\u0644\u062e\u0644\u0641\u064a\u0629",
140
+ "Text color": "\u0644\u0648\u0646 \u0627\u0644\u0646\u0635",
141
+ "Show blocks": "\u0645\u0634\u0627\u0647\u062f\u0629 \u0627\u0644\u0643\u062a\u0644",
142
+ "Show invisible characters": "\u0623\u0638\u0647\u0631 \u0627\u0644\u0623\u062d\u0631\u0641 \u0627\u0644\u063a\u064a\u0631 \u0645\u0631\u0626\u064a\u0629",
143
+ "Words: {0}": "\u0627\u0644\u0643\u0644\u0645\u0627\u062a:{0}",
144
+ "Insert": "\u0625\u062f\u0631\u0627\u062c",
145
+ "File": "\u0645\u0644\u0641",
146
+ "Edit": "\u062a\u062d\u0631\u064a\u0631",
147
+ "Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0645\u0646\u0637\u0642\u0629 \u0646\u0635 \u0645\u0646\u0633\u0642. \u0627\u0636\u063a\u0637 ALT-F9 \u0644\u0644\u0642\u0627\u0626\u0645\u0629. \u0627\u0636\u063a\u0637 ALT-F10 \u0644\u0634\u0631\u064a\u0637 \u0627\u0644\u0623\u062f\u0648\u0627\u062a. \u0627\u0636\u063a\u0637 ALT-0 \u0644\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u0645\u0633\u0627\u0639\u062f\u0629",
148
+ "Tools": "\u0623\u062f\u0627\u0648\u0627\u062a",
149
+ "View": "\u0639\u0631\u0636",
150
+ "Table": "\u062c\u062f\u0648\u0644",
151
+ "Format": "\u062a\u0646\u0633\u064a\u0642"
152
+ });