ckeditor 4.0.11 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (210) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +22 -49
  3. data/app/controllers/ckeditor/application_controller.rb +7 -1
  4. data/config/locales/zh-CN.ckeditor.yml +1 -1
  5. data/config/locales/zh-TW.ckeditor.yml +9 -0
  6. data/lib/ckeditor/engine.rb +4 -0
  7. data/lib/ckeditor/hooks/cancan.rb +1 -1
  8. data/lib/ckeditor/hooks/simple_form.rb +1 -1
  9. data/lib/ckeditor/utils.rb +16 -16
  10. data/lib/ckeditor/version.rb +2 -2
  11. data/lib/generators/ckeditor/templates/ckeditor.rb +5 -0
  12. data/lib/tasks/ckeditor.rake +13 -0
  13. data/test/ckeditor_test.rb +18 -0
  14. data/test/dummy/app/views/layouts/application.html.erb +2 -2
  15. data/vendor/assets/javascripts/ckeditor/CHANGES.md +132 -0
  16. data/vendor/assets/javascripts/ckeditor/ckeditor.js +706 -685
  17. data/vendor/assets/javascripts/ckeditor/config.js +1 -1
  18. data/vendor/assets/javascripts/ckeditor/contents.css +14 -3
  19. data/vendor/assets/javascripts/ckeditor/lang/af.js +1 -1
  20. data/vendor/assets/javascripts/ckeditor/lang/ar.js +1 -1
  21. data/vendor/assets/javascripts/ckeditor/lang/bg.js +1 -1
  22. data/vendor/assets/javascripts/ckeditor/lang/bn.js +1 -1
  23. data/vendor/assets/javascripts/ckeditor/lang/bs.js +1 -1
  24. data/vendor/assets/javascripts/ckeditor/lang/ca.js +1 -1
  25. data/vendor/assets/javascripts/ckeditor/lang/cs.js +1 -1
  26. data/vendor/assets/javascripts/ckeditor/lang/cy.js +1 -1
  27. data/vendor/assets/javascripts/ckeditor/lang/da.js +1 -1
  28. data/vendor/assets/javascripts/ckeditor/lang/de.js +1 -1
  29. data/vendor/assets/javascripts/ckeditor/lang/el.js +1 -1
  30. data/vendor/assets/javascripts/ckeditor/lang/en-au.js +1 -1
  31. data/vendor/assets/javascripts/ckeditor/lang/en-ca.js +1 -1
  32. data/vendor/assets/javascripts/ckeditor/lang/en-gb.js +1 -1
  33. data/vendor/assets/javascripts/ckeditor/lang/en.js +1 -1
  34. data/vendor/assets/javascripts/ckeditor/lang/eo.js +1 -1
  35. data/vendor/assets/javascripts/ckeditor/lang/es.js +1 -1
  36. data/vendor/assets/javascripts/ckeditor/lang/et.js +1 -1
  37. data/vendor/assets/javascripts/ckeditor/lang/eu.js +1 -1
  38. data/vendor/assets/javascripts/ckeditor/lang/fa.js +1 -1
  39. data/vendor/assets/javascripts/ckeditor/lang/fi.js +1 -1
  40. data/vendor/assets/javascripts/ckeditor/lang/fo.js +1 -1
  41. data/vendor/assets/javascripts/ckeditor/lang/fr-ca.js +1 -1
  42. data/vendor/assets/javascripts/ckeditor/lang/fr.js +1 -1
  43. data/vendor/assets/javascripts/ckeditor/lang/gl.js +1 -1
  44. data/vendor/assets/javascripts/ckeditor/lang/gu.js +1 -1
  45. data/vendor/assets/javascripts/ckeditor/lang/he.js +1 -1
  46. data/vendor/assets/javascripts/ckeditor/lang/hi.js +1 -1
  47. data/vendor/assets/javascripts/ckeditor/lang/hr.js +1 -1
  48. data/vendor/assets/javascripts/ckeditor/lang/hu.js +1 -1
  49. data/vendor/assets/javascripts/ckeditor/lang/id.js +1 -1
  50. data/vendor/assets/javascripts/ckeditor/lang/is.js +1 -1
  51. data/vendor/assets/javascripts/ckeditor/lang/it.js +1 -1
  52. data/vendor/assets/javascripts/ckeditor/lang/ja.js +1 -1
  53. data/vendor/assets/javascripts/ckeditor/lang/ka.js +1 -1
  54. data/vendor/assets/javascripts/ckeditor/lang/km.js +1 -1
  55. data/vendor/assets/javascripts/ckeditor/lang/ko.js +1 -1
  56. data/vendor/assets/javascripts/ckeditor/lang/ku.js +1 -1
  57. data/vendor/assets/javascripts/ckeditor/lang/lt.js +1 -1
  58. data/vendor/assets/javascripts/ckeditor/lang/lv.js +1 -1
  59. data/vendor/assets/javascripts/ckeditor/lang/mk.js +1 -1
  60. data/vendor/assets/javascripts/ckeditor/lang/mn.js +1 -1
  61. data/vendor/assets/javascripts/ckeditor/lang/ms.js +1 -1
  62. data/vendor/assets/javascripts/ckeditor/lang/nb.js +1 -1
  63. data/vendor/assets/javascripts/ckeditor/lang/nl.js +1 -1
  64. data/vendor/assets/javascripts/ckeditor/lang/no.js +1 -1
  65. data/vendor/assets/javascripts/ckeditor/lang/pl.js +1 -1
  66. data/vendor/assets/javascripts/ckeditor/lang/pt-br.js +1 -1
  67. data/vendor/assets/javascripts/ckeditor/lang/pt.js +1 -1
  68. data/vendor/assets/javascripts/ckeditor/lang/ro.js +1 -1
  69. data/vendor/assets/javascripts/ckeditor/lang/ru.js +1 -1
  70. data/vendor/assets/javascripts/ckeditor/lang/si.js +1 -1
  71. data/vendor/assets/javascripts/ckeditor/lang/sk.js +1 -1
  72. data/vendor/assets/javascripts/ckeditor/lang/sl.js +1 -1
  73. data/vendor/assets/javascripts/ckeditor/lang/sq.js +1 -1
  74. data/vendor/assets/javascripts/ckeditor/lang/sr-latn.js +1 -1
  75. data/vendor/assets/javascripts/ckeditor/lang/sr.js +1 -1
  76. data/vendor/assets/javascripts/ckeditor/lang/sv.js +1 -1
  77. data/vendor/assets/javascripts/ckeditor/lang/th.js +1 -1
  78. data/vendor/assets/javascripts/ckeditor/lang/tr.js +1 -1
  79. data/vendor/assets/javascripts/ckeditor/lang/tt.js +5 -0
  80. data/vendor/assets/javascripts/ckeditor/lang/ug.js +1 -1
  81. data/vendor/assets/javascripts/ckeditor/lang/uk.js +1 -1
  82. data/vendor/assets/javascripts/ckeditor/lang/vi.js +1 -1
  83. data/vendor/assets/javascripts/ckeditor/lang/zh-cn.js +1 -1
  84. data/vendor/assets/javascripts/ckeditor/lang/zh.js +1 -1
  85. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +1 -1
  86. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/de.js +3 -3
  87. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/eo.js +5 -4
  88. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fi.js +2 -2
  89. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/he.js +2 -2
  90. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/it.js +4 -3
  91. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/km.js +3 -3
  92. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/nb.js +4 -3
  93. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js +4 -3
  94. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ro.js +1 -1
  95. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ru.js +3 -3
  96. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/tt.js +11 -0
  97. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/vi.js +3 -3
  98. data/vendor/assets/javascripts/ckeditor/plugins/colordialog/dialogs/colordialog.js +1 -1
  99. data/vendor/assets/javascripts/ckeditor/plugins/div/dialogs/div.js +8 -8
  100. data/vendor/assets/javascripts/ckeditor/plugins/find/dialogs/find.js +1 -1
  101. data/vendor/assets/javascripts/ckeditor/plugins/flash/dialogs/flash.js +7 -7
  102. data/vendor/assets/javascripts/ckeditor/plugins/forms/dialogs/radio.js +2 -2
  103. data/vendor/assets/javascripts/ckeditor/plugins/icons.png +0 -0
  104. data/vendor/assets/javascripts/ckeditor/plugins/image/dialogs/image.js +2 -2
  105. data/vendor/assets/javascripts/ckeditor/plugins/link/dialogs/anchor.js +3 -4
  106. data/vendor/assets/javascripts/ckeditor/plugins/link/dialogs/link.js +22 -31
  107. data/vendor/assets/javascripts/ckeditor/plugins/scayt/README.md +1 -1
  108. data/vendor/assets/javascripts/ckeditor/plugins/scayt/dialogs/options.js +17 -20
  109. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ar.js +1 -1
  110. data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/tt.js +13 -0
  111. data/vendor/assets/javascripts/ckeditor/plugins/templates/dialogs/templates.css +5 -5
  112. data/vendor/assets/javascripts/ckeditor/plugins/wsc/dialogs/ciframe.html +1 -1
  113. data/vendor/assets/javascripts/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +1 -1
  114. data/vendor/assets/javascripts/ckeditor/plugins/wsc/dialogs/wsc.css +1 -1
  115. data/vendor/assets/javascripts/ckeditor/plugins/wsc/dialogs/wsc.js +65 -58
  116. data/vendor/assets/javascripts/ckeditor/plugins/wsc/dialogs/wsc_ie.js +1 -1
  117. data/vendor/assets/javascripts/ckeditor/skins/moono/dialog.css +1 -1
  118. data/vendor/assets/javascripts/ckeditor/skins/moono/dialog_ie.css +1 -1
  119. data/vendor/assets/javascripts/ckeditor/skins/moono/dialog_ie7.css +1 -1
  120. data/vendor/assets/javascripts/ckeditor/skins/moono/dialog_ie8.css +1 -1
  121. data/vendor/assets/javascripts/ckeditor/skins/moono/dialog_iequirks.css +1 -1
  122. data/vendor/assets/javascripts/ckeditor/skins/moono/editor.css +1 -1
  123. data/vendor/assets/javascripts/ckeditor/skins/moono/editor_gecko.css +1 -1
  124. data/vendor/assets/javascripts/ckeditor/skins/moono/editor_ie.css +1 -1
  125. data/vendor/assets/javascripts/ckeditor/skins/moono/editor_ie7.css +1 -1
  126. data/vendor/assets/javascripts/ckeditor/skins/moono/editor_ie8.css +1 -1
  127. data/vendor/assets/javascripts/ckeditor/skins/moono/editor_iequirks.css +1 -1
  128. data/vendor/assets/javascripts/ckeditor/skins/moono/icons.png +0 -0
  129. metadata +14 -172
  130. data/app/assets/javascripts/ckeditor/override.js.erb +0 -21
  131. data/test/dummy/public/ckeditor_assets/attachments/1/rails_tar.gz +0 -0
  132. data/test/dummy/public/ckeditor_assets/pictures/1/content_rails.png +0 -0
  133. data/test/dummy/public/ckeditor_assets/pictures/1/original_rails.png +0 -0
  134. data/test/dummy/public/ckeditor_assets/pictures/1/thumb_rails.png +0 -0
  135. data/test/dummy/public/uploads/ckeditor/attachments/1/rails.tar.gz +0 -0
  136. data/test/dummy/public/uploads/ckeditor/pictures/1/content_rails.png +0 -0
  137. data/test/dummy/public/uploads/ckeditor/pictures/1/rails.png +0 -0
  138. data/test/dummy/public/uploads/ckeditor/pictures/1/thumb_rails.png +0 -0
  139. data/test/dummy/public/uploads/tmp/20130128-1219-3894-1084/rails.tar.gz +0 -0
  140. data/test/dummy/public/uploads/tmp/20130128-1219-3894-1288/content_rails.png +0 -0
  141. data/test/dummy/public/uploads/tmp/20130128-1219-3894-1288/rails.png +0 -0
  142. data/test/dummy/public/uploads/tmp/20130128-1219-3894-1288/thumb_rails.png +0 -0
  143. data/test/dummy/public/uploads/tmp/20130128-1219-3894-3261/rails.tar.gz +0 -0
  144. data/test/dummy/public/uploads/tmp/20130128-1219-3894-3564/rails.tar.gz +0 -0
  145. data/test/dummy/public/uploads/tmp/20130128-1219-3894-4233/content_rails.png +0 -0
  146. data/test/dummy/public/uploads/tmp/20130128-1219-3894-4233/rails.png +0 -0
  147. data/test/dummy/public/uploads/tmp/20130128-1219-3894-4233/thumb_rails.png +0 -0
  148. data/test/dummy/public/uploads/tmp/20130128-1219-3894-4595/content_rails.png +0 -0
  149. data/test/dummy/public/uploads/tmp/20130128-1219-3894-4595/rails.png +0 -0
  150. data/test/dummy/public/uploads/tmp/20130128-1219-3894-4595/thumb_rails.png +0 -0
  151. data/test/dummy/public/uploads/tmp/20130128-1219-3894-8459/rails.tar.gz +0 -0
  152. data/test/dummy/public/uploads/tmp/20130128-1219-3894-8942/rails.tar.gz +0 -0
  153. data/test/dummy/public/uploads/tmp/20130128-1219-3894-9011/content_rails.png +0 -0
  154. data/test/dummy/public/uploads/tmp/20130128-1219-3894-9011/rails.png +0 -0
  155. data/test/dummy/public/uploads/tmp/20130128-1219-3894-9011/thumb_rails.png +0 -0
  156. data/test/dummy/public/uploads/tmp/20130128-1219-3894-9730/content_rails.png +0 -0
  157. data/test/dummy/public/uploads/tmp/20130128-1219-3894-9730/rails.png +0 -0
  158. data/test/dummy/public/uploads/tmp/20130128-1219-3894-9730/thumb_rails.png +0 -0
  159. data/test/dummy/public/uploads/tmp/20140108-1222-52217-3986/rails.tar.gz +0 -0
  160. data/test/dummy/public/uploads/tmp/20140108-1222-52217-6261/rails.tar.gz +0 -0
  161. data/test/dummy/public/uploads/tmp/20140108-1222-52217-6421/rails.tar.gz +0 -0
  162. data/test/dummy/public/uploads/tmp/20140108-1223-52217-3058/content_rails.png +0 -0
  163. data/test/dummy/public/uploads/tmp/20140108-1223-52217-3058/rails.png +0 -0
  164. data/test/dummy/public/uploads/tmp/20140108-1223-52217-3058/thumb_rails.png +0 -0
  165. data/test/dummy/public/uploads/tmp/20140108-1223-52217-3990/content_rails.png +0 -0
  166. data/test/dummy/public/uploads/tmp/20140108-1223-52217-3990/rails.png +0 -0
  167. data/test/dummy/public/uploads/tmp/20140108-1223-52217-3990/thumb_rails.png +0 -0
  168. data/test/dummy/public/uploads/tmp/20140108-1223-52217-8126/content_rails.png +0 -0
  169. data/test/dummy/public/uploads/tmp/20140108-1223-52217-8126/rails.png +0 -0
  170. data/test/dummy/public/uploads/tmp/20140108-1223-52217-8126/thumb_rails.png +0 -0
  171. data/test/dummy/public/uploads/tmp/20140108-1228-52513-0400/content_rails.png +0 -0
  172. data/test/dummy/public/uploads/tmp/20140108-1228-52513-0400/rails.png +0 -0
  173. data/test/dummy/public/uploads/tmp/20140108-1228-52513-0400/thumb_rails.png +0 -0
  174. data/test/dummy/public/uploads/tmp/20140108-1228-52513-1537/content_rails.png +0 -0
  175. data/test/dummy/public/uploads/tmp/20140108-1228-52513-1537/rails.png +0 -0
  176. data/test/dummy/public/uploads/tmp/20140108-1228-52513-1537/thumb_rails.png +0 -0
  177. data/test/dummy/public/uploads/tmp/20140108-1228-52513-4718/rails.tar.gz +0 -0
  178. data/test/dummy/public/uploads/tmp/20140108-1228-52513-4820/rails.tar.gz +0 -0
  179. data/test/dummy/public/uploads/tmp/20140108-1228-52513-8057/content_rails.png +0 -0
  180. data/test/dummy/public/uploads/tmp/20140108-1228-52513-8057/rails.png +0 -0
  181. data/test/dummy/public/uploads/tmp/20140108-1228-52513-8057/thumb_rails.png +0 -0
  182. data/test/dummy/public/uploads/tmp/20140108-1228-52513-9147/rails.tar.gz +0 -0
  183. data/test/dummy/public/uploads/tmp/20140108-1228-52590-3606/rails.tar.gz +0 -0
  184. data/test/dummy/public/uploads/tmp/20140108-1228-52590-4369/content_rails.png +0 -0
  185. data/test/dummy/public/uploads/tmp/20140108-1228-52590-4369/rails.png +0 -0
  186. data/test/dummy/public/uploads/tmp/20140108-1228-52590-4369/thumb_rails.png +0 -0
  187. data/test/dummy/public/uploads/tmp/20140108-1228-52590-4698/rails.tar.gz +0 -0
  188. data/test/dummy/public/uploads/tmp/20140108-1228-52590-7541/rails.tar.gz +0 -0
  189. data/test/dummy/public/uploads/tmp/20140108-1228-52590-9146/content_rails.png +0 -0
  190. data/test/dummy/public/uploads/tmp/20140108-1228-52590-9146/rails.png +0 -0
  191. data/test/dummy/public/uploads/tmp/20140108-1228-52590-9146/thumb_rails.png +0 -0
  192. data/test/dummy/public/uploads/tmp/20140108-1228-52590-9782/content_rails.png +0 -0
  193. data/test/dummy/public/uploads/tmp/20140108-1228-52590-9782/rails.png +0 -0
  194. data/test/dummy/public/uploads/tmp/20140108-1228-52590-9782/thumb_rails.png +0 -0
  195. data/test/dummy/public/uploads/tmp/20140108-1230-52768-3256/content_rails.png +0 -0
  196. data/test/dummy/public/uploads/tmp/20140108-1230-52768-3256/rails.png +0 -0
  197. data/test/dummy/public/uploads/tmp/20140108-1230-52768-3256/thumb_rails.png +0 -0
  198. data/test/dummy/public/uploads/tmp/20140108-1230-52768-3565/content_rails.png +0 -0
  199. data/test/dummy/public/uploads/tmp/20140108-1230-52768-3565/rails.png +0 -0
  200. data/test/dummy/public/uploads/tmp/20140108-1230-52768-3565/thumb_rails.png +0 -0
  201. data/test/dummy/public/uploads/tmp/20140108-1230-52768-4292/rails.tar.gz +0 -0
  202. data/test/dummy/public/uploads/tmp/20140108-1230-52768-4514/rails.tar.gz +0 -0
  203. data/test/dummy/public/uploads/tmp/20140108-1230-52768-7430/rails.tar.gz +0 -0
  204. data/test/dummy/public/uploads/tmp/20140108-1230-52768-9145/content_rails.png +0 -0
  205. data/test/dummy/public/uploads/tmp/20140108-1230-52768-9145/rails.png +0 -0
  206. data/test/dummy/public/uploads/tmp/20140108-1230-52768-9145/thumb_rails.png +0 -0
  207. data/vendor/assets/javascripts/ckeditor/build-config.js +0 -165
  208. data/vendor/assets/javascripts/ckeditor/plugins/fakeobjects/images/spacer.gif +0 -0
  209. data/vendor/assets/javascripts/ckeditor/plugins/wsc/dialogs/tmp.html +0 -118
  210. data/vendor/assets/javascripts/ckeditor/skins/moono/dialog_opera.css +0 -5
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 718c57a411fa584f92a7b532b9044f0814cb8c4b
4
+ data.tar.gz: 8be0eb212ece8e16ee5cc7bbd72786e792b7e068
5
+ SHA512:
6
+ metadata.gz: f9502d82221ba196b1ac27b2490095c79f83ab4ae3eb417d8b6fee07af2c55f45be2ca0961cac30c50bf63829ef1cfed63008a86b0931724f39a7bc4d63aebdd
7
+ data.tar.gz: d397998fd9e23e06e95e31456ce4c73cf4cf4a9d5dc885c935dea9865f6cd870f97ef5a6bb80aaff601089aa00fd67c3bd9ce7a37a3138ede1bef72539fcf545
data/README.md CHANGED
@@ -5,7 +5,7 @@ CKEditor is a ready-for-use HTML text editor designed to simplify web content cr
5
5
 
6
6
  ## Features
7
7
 
8
- * Ckeditor version 4.3.4 (full)
8
+ * Ckeditor version 4.4.2 (full)
9
9
  * Rails 4 integration
10
10
  * Files browser
11
11
  * HTML5 files uploader
@@ -108,6 +108,8 @@ Form helpers:
108
108
  <% end -%>
109
109
  ```
110
110
 
111
+ ### Customize ckeditor
112
+
111
113
  All ckeditor options [here](http://docs.ckeditor.com/#!/api/CKEDITOR.config)
112
114
 
113
115
  In order to configure the ckeditor default options, create files:
@@ -118,55 +120,10 @@ app/assets/javascripts/ckeditor/config.js
118
120
  app/assets/javascripts/ckeditor/contents.css
119
121
  ```
120
122
 
121
- ### Usage with Rails 4 assets
122
-
123
- In order to use rails 4 assets with digest in production environment you need some preparing.
124
-
125
- First, you need to include in `application.js` **before** `ckeditor/init`
126
-
127
- ```
128
- //= require ckeditor/override
129
- ```
130
-
131
- It forces ckeditor core to respect digested assets.
132
-
133
- Next you need to check, that some non-core plugins and skins don't use core ckeditor functions
134
- to determine path to assets. Therefore we have to create a rake task thats copies the original assets and creates a non-digest version of it. Some example of such rake task is:
135
-
136
- ```ruby
137
- namespace :ckeditor do
138
- desc 'Create nondigest versions of some ckeditor assets (e.g. moono skin png)'
139
- task :create_nondigest_assets do
140
- fingerprint = /\-[0-9a-f]{32}\./
141
- for file in Dir['public/assets/ckeditor/contents-*.css', 'public/assets/ckeditor/skins/moono/*.png']
142
- next unless file =~ fingerprint
143
- nondigest = file.sub fingerprint, '.' # contents-0d8ffa186a00f5063461bc0ba0d96087.css => contents.css
144
- FileUtils.cp file, nondigest, verbose: true
145
- end
146
- end
147
- end
148
-
149
- # auto run ckeditor:create_nondigest_assets after assets:precompile
150
- Rake::Task['assets:precompile'].enhance do
151
- Rake::Task['ckeditor:create_nondigest_assets'].invoke
152
- end
153
- ```
154
- This also works on heroku. Even after restarting dynos running on a cedar stack, the assets will remain.
155
-
156
- You can include this rake task in a capistrano task (if you are deploying via capistrano):
157
-
158
- ```ruby
159
- desc 'copy ckeditor nondigest assets'
160
- task :copy_nondigest_assets, roles: :app do
161
- run "cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} ckeditor:create_nondigest_assets"
162
- end
163
- after 'deploy:assets:precompile', 'copy_nondigest_assets'
164
- ```
123
+ ### Deployment
165
124
 
166
- Periodically check your error monitoring tool, if you see some part of ckeditor try to load
167
- unexisting non-digest asset - if so just add it in the ckeditor rake task.
168
-
169
- Also you can use gem [non-stupid-digest-assets](https://rubygems.org/gems/non-stupid-digest-assets), which do the same work.
125
+ Since version 4.1.0, non-digested assets of ckeditor will simply be copied after digested assets were compiled.
126
+ For older versions, use gem [non-stupid-digest-assets](https://rubygems.org/gems/non-stupid-digest-assets), to copy non digest assets.
170
127
 
171
128
  To reduce the asset precompilation time, you can limit plugins and/or languages to those you need:
172
129
 
@@ -179,6 +136,22 @@ Ckeditor.setup do |config|
179
136
  end
180
137
  ```
181
138
 
139
+ ### Include customized CKEDITOR_BASEPATH setting
140
+
141
+ Add your app/assets/javascripts/ckeditor/basepath.js.erb like
142
+
143
+ ```erb
144
+ <%
145
+ base_path = ''
146
+ if ENV['PROJECT'] =~ /editor/i
147
+ base_path << "/#{Rails.root.basename.to_s}/"
148
+ end
149
+ base_path << Rails.application.config.assets.prefix
150
+ base_path << '/ckeditor/'
151
+ %>
152
+ var CKEDITOR_BASEPATH = '<%= base_path %>';
153
+ ```
154
+
182
155
  ### AJAX
183
156
 
184
157
  jQuery sample:
@@ -21,7 +21,13 @@ class Ckeditor::ApplicationController < ActionController::Base
21
21
 
22
22
  render :text => body
23
23
  else
24
- render :nothing => true
24
+ if params[:CKEditor]
25
+ render :text => %Q"<script type='text/javascript'>
26
+ window.parent.CKEDITOR.tools.callFunction(#{params[:CKEditorFuncNum]}, null, '#{asset.errors.full_messages.first}');
27
+ </script>"
28
+ else
29
+ render :nothing => true
30
+ end
25
31
  end
26
32
  end
27
33
  end
@@ -6,4 +6,4 @@ zh-CN:
6
6
  cancel: "取消"
7
7
  upload: "上传"
8
8
  delete: "删除"
9
- next: "Next"
9
+ next: "下一个"
@@ -0,0 +1,9 @@
1
+ zh-TW:
2
+ ckeditor:
3
+ page_title: "CKEditor - 文件管理"
4
+ confirm_delete: "删除文件?"
5
+ buttons:
6
+ cancel: "取消"
7
+ upload: "上傳"
8
+ delete: "删除"
9
+ next: "下一個"
@@ -38,5 +38,9 @@ module Ckeditor
38
38
  require "ckeditor/hooks/pundit"
39
39
  end
40
40
  end
41
+
42
+ rake_tasks do
43
+ load Ckeditor.root_path.join("lib/tasks/ckeditor.rake")
44
+ end
41
45
  end
42
46
  end
@@ -19,7 +19,7 @@ module Ckeditor
19
19
  # action as a symbol (:create, :destroy, etc.). The second argument is the actual model
20
20
  # instance if it is available.
21
21
  def authorize(action, model_object = nil)
22
- @controller.authorize!(action.to_sym, model_object) if action
22
+ @controller.current_ability.authorize!(action.to_sym, model_object) if action
23
23
  end
24
24
 
25
25
  # This method is called primarily from the view to determine whether the given user
@@ -2,7 +2,7 @@ require 'simple_form'
2
2
 
3
3
  module Ckeditor::Hooks::SimpleForm
4
4
  class CkeditorInput < ::SimpleForm::Inputs::Base
5
- def input
5
+ def input(wrapper_options = nil)
6
6
  @builder.cktext_area(attribute_name, input_html_options)
7
7
  end
8
8
  end
@@ -23,7 +23,7 @@ module Ckeditor
23
23
  end
24
24
 
25
25
  def js_replace(dom_id, options = nil)
26
- js = ["if (typeof CKEDITOR != 'undefined') {"]
26
+ js = ["(function() { if (typeof CKEDITOR != 'undefined') {"]
27
27
 
28
28
  if options && !options.keys.empty?
29
29
  js_options = ActiveSupport::JSON.encode(options)
@@ -32,7 +32,7 @@ module Ckeditor
32
32
  js << "CKEDITOR.replace('#{dom_id}');"
33
33
  end
34
34
 
35
- js << "}"
35
+ js << "} else { setTimeout(arguments.callee, 50); } })();"
36
36
  js.join(" ").html_safe
37
37
  end
38
38
 
@@ -52,6 +52,7 @@ module Ckeditor
52
52
  end
53
53
 
54
54
  js_options = ActiveSupport::JSON.encode(options)
55
+ js_options.gsub!(/"(EDITOR\.config\.filebrowser(Image|Flash|)UploadUrl)"/, '\1')
55
56
 
56
57
  "(function() { new qq.FileUploaderInput(#{js_options}); }).call(this);".html_safe
57
58
  end
@@ -69,14 +70,15 @@ module Ckeditor
69
70
  end
70
71
 
71
72
  def select_assets(path, relative_path)
72
- relative_folder = Ckeditor.root_path.join relative_path
73
- folder = relative_folder.join path
73
+ relative_folder = Ckeditor.root_path.join(relative_path)
74
+ folder = relative_folder.join(path)
74
75
  extensions = '*.{js,css,png,gif,jpg}'
76
+ languages = (Ckeditor.assets_languages || [])
75
77
 
76
78
  # Files at root
77
79
  files = Dir[folder.join(extensions)]
78
80
 
79
- # Plugins
81
+ # Filter plugins
80
82
  if Ckeditor.assets_plugins.nil?
81
83
  files += Dir[folder.join('plugins', '**', extensions)]
82
84
  else
@@ -88,22 +90,20 @@ module Ckeditor
88
90
  # Other folders
89
91
  Dir[folder.join('*/')].each do |subfolder|
90
92
  path = Pathname.new(subfolder)
91
- unless path.basename.to_s == 'plugins'
92
- files += Dir[path.join('**', extensions)]
93
- end
93
+ next if ['plugins'].include?(path.basename.to_s)
94
+ files += Dir[path.join('**', extensions)]
94
95
  end
95
96
 
96
- paths = files.map { |file| Pathname.new(file) }
97
+ files.inject([]) do |items, name|
98
+ file = Pathname.new(name)
99
+ base = file.basename('.*').to_s
97
100
 
98
- # Filter languages
99
- if Ckeditor.assets_languages.present?
100
- paths.select! do |path|
101
- path.dirname.basename.to_s != 'lang' ||
102
- Ckeditor.assets_languages.include?(path.basename.to_s.split('.')[0])
101
+ if !name.include?('/lang/') || languages.include?(base)
102
+ items << file.relative_path_from(relative_folder).to_s
103
103
  end
104
- end
105
104
 
106
- paths.map { |path| path.relative_path_from(relative_folder).to_s }
105
+ items
106
+ end
107
107
  end
108
108
  end
109
109
  end
@@ -1,6 +1,6 @@
1
1
  module Ckeditor
2
2
  module Version
3
- GEM = "4.0.11".freeze
4
- EDITOR = "4.3.4".freeze
3
+ GEM = "4.1.0".freeze
4
+ EDITOR = "4.4.2".freeze
5
5
  end
6
6
  end
@@ -31,4 +31,9 @@ Ckeditor.setup do |config|
31
31
  # Customize ckeditor assets path
32
32
  # By default: nil
33
33
  # config.asset_path = "http://www.example.com/assets/ckeditor/"
34
+
35
+ # To reduce the asset precompilation time, you can limit plugins and/or languages to those you need:
36
+ # By default: nil (no limit)
37
+ # config.assets_languages = ['en', 'uk']
38
+ # config.assets_plugins = ['image', 'smiley']
34
39
  end
@@ -0,0 +1,13 @@
1
+ require 'fileutils'
2
+
3
+ desc "Create nondigest versions of all ckeditor digest assets"
4
+ task "assets:precompile" do
5
+ fingerprint = /\-[0-9a-f]{32}\./
6
+ for file in Dir["public/assets/ckeditor/**/*"]
7
+ next unless file =~ fingerprint
8
+ nondigest = file.sub fingerprint, '.'
9
+ if !File.exist?(nondigest) or File.mtime(file) > File.mtime(nondigest)
10
+ FileUtils.cp file, nondigest, verbose: true
11
+ end
12
+ end
13
+ end
@@ -61,6 +61,24 @@ class CkeditorTest < ActiveSupport::TestCase
61
61
  Ckeditor::AttachmentFile.to_adapter
62
62
  end
63
63
 
64
+ test 'languages ingnore list' do
65
+ Ckeditor.assets = nil
66
+ Ckeditor.assets_languages = ['en', 'uk']
67
+
68
+ assert_equal Ckeditor.assets.include?('ckeditor/lang/ru.js'), false
69
+ assert_equal Ckeditor.assets.include?('ckeditor/lang/uk.js'), true
70
+ assert_equal Ckeditor.assets.include?('ckeditor/plugins/a11yhelp/dialogs/lang/bg.js'), false
71
+ assert_equal Ckeditor.assets.include?('ckeditor/plugins/a11yhelp/dialogs/lang/uk.js'), true
72
+ end
73
+
74
+ test 'plugins ingnore list' do
75
+ Ckeditor.assets = nil
76
+ Ckeditor.assets_plugins = ['image']
77
+
78
+ assert_equal Ckeditor.assets.include?('ckeditor/plugins/table/dialogs/table.js'), false
79
+ assert_equal Ckeditor.assets.include?('ckeditor/plugins/image/dialogs/image.js'), true
80
+ end
81
+
64
82
  class CustomPicture; end
65
83
  class CustomAttachmentFile; end
66
84
  end
@@ -2,13 +2,13 @@
2
2
  <html>
3
3
  <head>
4
4
  <title>Dummy</title>
5
- <%= stylesheet_link_tag "application" %>
6
- <%= javascript_include_tag "application" %>
5
+ <%= stylesheet_link_tag "application" %>
7
6
  <%= csrf_meta_tags %>
8
7
  </head>
9
8
  <body>
10
9
 
11
10
  <%= yield %>
12
11
 
12
+ <%= javascript_include_tag "application" %>
13
13
  </body>
14
14
  </html>
@@ -1,6 +1,138 @@
1
1
  CKEditor 4 Changelog
2
2
  ====================
3
3
 
4
+ ## CKEditor 4.4.2
5
+
6
+ Important Notes:
7
+
8
+ * The CKEditor testing environment is now publicly available. Read more about how to set up the environment and execute tests in the [CKEditor Testing Environment](http://docs.ckeditor.com/#!/guide/dev_tests) guide.
9
+ Please note that the [`tests/`](https://github.com/ckeditor/ckeditor-dev/tree/master/tests) directory which contains editor tests is not available in release packages. It can only be found in the development version of CKEditor on [GitHub](https://github.com/ckeditor/ckeditor-dev/).
10
+
11
+ New Features:
12
+
13
+ * [#11909](http://dev.ckeditor.com/ticket/11909): Introduced a parameter to prevent the [`editor.setData()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setData) method from recording undo snapshots.
14
+
15
+ Fixed Issues:
16
+
17
+ * [#11757](http://dev.ckeditor.com/ticket/11757): Fixed: Imperfections in the [Moono](http://ckeditor.com/addon/moono) skin. Thanks to [danyaPostfactum](https://github.com/danyaPostfactum)!
18
+ * [#10091](http://dev.ckeditor.com/ticket/10091): Blockquote should be treated like an object by the styles system. Thanks to [dan-james-deeson](https://github.com/dan-james-deeson)!
19
+ * [#11478](http://dev.ckeditor.com/ticket/11478): Fixed: Issue with passing jQuery objects to [adapter](http://docs.ckeditor.com/#!/guide/dev_jquery) configuration.
20
+ * [#10867](http://dev.ckeditor.com/ticket/10867): Fixed: Issue with setting encoded URI as image link.
21
+ * [#11983](http://dev.ckeditor.com/ticket/11983): Fixed: Clicking a nested widget does not focus it. Additionally, performance of the [`widget.repository.getByElement()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.repository-method-getByElement) method was improved.
22
+ * [#12000](http://dev.ckeditor.com/ticket/12000): Fixed: Nested widgets should be initialized on [`editor.setData()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setData) and [`nestedEditable.setData()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.nestedEditable-method-setData).
23
+ * [#12022](http://dev.ckeditor.com/ticket/12022): Fixed: Outer widget's drag handler is not created at all if it has any nested widgets inside.
24
+ * [#11960](http://dev.ckeditor.com/ticket/11960): [Blink/WebKit] Fixed: The caret should be scrolled into view on *Backspace* and *Delete* (covers only the merging blocks case).
25
+ * [#11306](http://dev.ckeditor.com/ticket/11306): [OSX][Blink/WebKit] Fixed: No widget entries in the context menu on widget right-click.
26
+ * [#11957](http://dev.ckeditor.com/ticket/11957): Fixed: Alignment labels in the [Enhanced Image](http://ckeditor.com/addon/image2) dialog window are not translated.
27
+ * [#11980](http://dev.ckeditor.com/ticket/11980): [Blink/WebKit] Fixed: `<span>` elements created when joining adjacent elements (non-collapsed selection).
28
+ * [#12009](http://dev.ckeditor.com/ticket/12009): [Nested widgets] Integration with the [Magic Line](http://ckeditor.com/addon/magicline) plugin.
29
+ * [#11387](http://dev.ckeditor.com/ticket/11387): Fixed: `role="radiogroup"` should be applied only to radio inputs' container.
30
+ * [#7975](http://dev.ckeditor.com/ticket/7975): [IE8] Fixed: Errors when trying to select an empty table cell.
31
+ * [#11947](http://dev.ckeditor.com/ticket/11947): [Firefox+IE11] Fixed: *Shift+Enter* in lists produces two line breaks.
32
+ * [#11972](http://dev.ckeditor.com/ticket/11972): Fixed: Feature detection in the [`element.setText()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-setText) method should not trigger the layout engine.
33
+ * [#7634](http://dev.ckeditor.com/ticket/7634): Fixed: The [Flash Dialog](http://ckeditor.com/addon/flash) plugin omits the `allowFullScreen` parameter in the editor data if set to `true`.
34
+ * [#11910](http://dev.ckeditor.com/ticket/11910): Fixed: [Enhanced Image](http://ckeditor.com/addon/image2) does not take [`config.baseHref`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-baseHref) into account when updating image dimensions.
35
+ * [#11753](http://dev.ckeditor.com/ticket/11753): Fixed: Wrong [`checkDirty()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-checkDirty) method value after focusing or blurring a widget.
36
+ * [#11830](http://dev.ckeditor.com/ticket/11830): Fixed: Impossible to pass some arguments to [CKBuilder](https://github.com/ckeditor/ckbuilder) when using the `/dev/builder/build.sh` script.
37
+ * [#11945](http://dev.ckeditor.com/ticket/11945): Fixed: [Form Elements](http://ckeditor.com/addon/forms) plugin should not change a core method.
38
+ * [#11384](http://dev.ckeditor.com/ticket/11384): [IE9+] Fixed: `IndexSizeError` thrown when pasting into a non-empty selection anchored in one text node.
39
+
40
+ ## CKEditor 4.4.1
41
+
42
+ New Features:
43
+
44
+ * [#9661](http://dev.ckeditor.com/ticket/9661): Added the option to [configure](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-linkJavaScriptLinksAllowed) anchor tags with JavaScript code in the `href` attribute.
45
+
46
+ Fixed Issues:
47
+
48
+ * [#11861](http://dev.ckeditor.com/ticket/11861): [Webkit/Blink] Fixed: Span elements created while joining adjacent elements. **Note:** This patch only covers cases when *Backspace* or *Delete* is pressed on a collapsed (empty) selection. The remaining case, with a non-empty selection, will be fixed in the next release.
49
+ * [#10714](http://dev.ckeditor.com/ticket/10714): [iOS] Fixed: Selection and drop-downs are broken if a touch event listener is used due to a [Webkit bug](https://bugs.webkit.org/show_bug.cgi?id=128924). Thanks to [Arty Gus](https://github.com/artygus)!
50
+ * [#11911](http://dev.ckeditor.com/ticket/11911): Fixed setting the `dir` attribute for a preloaded language in [CKEDITOR.lang](http://docs.ckeditor.com/#!/api/CKEDITOR.lang). Thanks to [Akash Mohapatra](https://github.com/akashmohapatra)!
51
+ * [#11926](http://dev.ckeditor.com/ticket/11926): Fixed: [Code Snippet](http://ckeditor.com/addon/codesnippet) does not decode HTML entities when loading code from the `<code>` element.
52
+ * [#11223](http://dev.ckeditor.com/ticket/11223): Fixed: Issue when [Protected Source](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-protectedSource) was not working in the `<title>` element.
53
+ * [#11859](http://dev.ckeditor.com/ticket/11859): Fixed: Removed the [Source Dialog](http://ckeditor.com/addon/sourcedialog) plugin dependency from the [Code Snippet](http://ckeditor.com/addon/codesnippet) sample.
54
+ * [#11754](http://dev.ckeditor.com/ticket/11754): [Chrome] Fixed: Infinite loop when content includes not closed attributes.
55
+ * [#11848](http://dev.ckeditor.com/ticket/11848): [IE] Fixed: [`editor.insertElement()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-insertElement) throwing an exception when there was no selection in the editor.
56
+ * [#11801](http://dev.ckeditor.com/ticket/11801): Fixed: Editor anchors unavailable when linking the [Enhanced Image](http://ckeditor.com/addon/image2) widget.
57
+ * [#11626](http://dev.ckeditor.com/ticket/11626): Fixed: [Table Resize](http://ckeditor.com/addon/tableresize) sets invalid column width.
58
+ * [#11872](http://dev.ckeditor.com/ticket/11872): Made [`element.addClass()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-addClass) chainable symmetrically to [`element.removeClass()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-removeClass).
59
+ * [#11813](http://dev.ckeditor.com/ticket/11813): Fixed: Link lost while pasting a captioned image and restoring an undo snapshot ([Enhanced Image](http://ckeditor.com/addon/image2)).
60
+ * [#11814](http://dev.ckeditor.com/ticket/11814): Fixed: _Link_ and _Unlink_ entries persistently displayed in the [Enhanced Image](http://ckeditor.com/addon/image2) context menu.
61
+ * [#11839](http://dev.ckeditor.com/ticket/11839): [IE9] Fixed: The caret jumps out of the editable area when resizing the editor in the source mode.
62
+ * [#11822](http://dev.ckeditor.com/ticket/11822): [Webkit] Fixed: Editing anchors by double-click is broken in some cases.
63
+ * [#11823](http://dev.ckeditor.com/ticket/11823): [IE8] Fixed: [Table Resize](http://ckeditor.com/addon/tableresize) throws an error over scrollbar.
64
+ * [#11788](http://dev.ckeditor.com/ticket/11788): Fixed: It is not possible to change the language back to _Not set_ in the [Code Snippet](http://ckeditor.com/addon/codesnippet) dialog window.
65
+ * [#11788](http://dev.ckeditor.com/ticket/11788): Fixed: [Filter](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.filter) rules are not applied inside elements with the `contenteditable` attribute set to `true`.
66
+ * [#11798](http://dev.ckeditor.com/ticket/11798): Fixed: Inserting a non-editable element inside a table cell breaks the table.
67
+ * [#11793](http://dev.ckeditor.com/ticket/11793): Fixed: Drop-down is not "on" when clicking it while the editor is blurred.
68
+ * [#11850](http://dev.ckeditor.com/ticket/11850): Fixed: Fake objects with the `contenteditable` attribute set to `false` are not downcasted properly.
69
+ * [#11811](http://dev.ckeditor.com/ticket/11811): Fixed: Widget's data is not encoded correctly when passed to an attribute.
70
+ * [#11777](http://dev.ckeditor.com/ticket/11777): Fixed encoding ampersand in the [Mathematical Formulas](http://ckeditor.com/addon/mathjax) plugin.
71
+ * [#11880](http://dev.ckeditor.com/ticket/11880): [IE8-9] Fixed: Linked image has a default thick border.
72
+
73
+ Other Changes:
74
+
75
+ * [#11807](http://dev.ckeditor.com/ticket/11807): Updated jQuery version used in the sample to 1.11.0 and tested CKEditor jQuery Adapter with version 1.11.0 and 2.1.0.
76
+ * [#9504](http://dev.ckeditor.com/ticket/9504): Stopped using deprecated `attribute.specified` in all browsers except Internet Explorer.
77
+ * [#11809](http://dev.ckeditor.com/ticket/11809): Changed tab size in `<pre>` to 4 spaces.
78
+
79
+ ## CKEditor 4.4
80
+
81
+ **Important Notes:**
82
+
83
+ * Marked the [`editor.beforePaste`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-beforePaste) event as deprecated.
84
+ * The default class of captioned images has changed to `image` (was: `caption`). Please note that once edited in CKEditor 4.4+, all existing images of the `caption` class (`<figure class="caption">`) will be [filtered out](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) unless the [`config.image2_captionedClass`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-image2_captionedClass) option is set to `caption`. For backward compatibility (i.e. when upgrading), it is highly recommended to use this setting, which also helps prevent CSS conflicts, etc. This does not apply to new CKEditor integrations.
85
+ * Widgets without defined buttons are no longer registered automatically to the [Advanced Content Filter](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter). Before CKEditor 4.4 widgets were registered to the ACF which was an incorrect behavior ([#11567](http://dev.ckeditor.com/ticket/11567)). This change should not have any impact on standard scenarios, but if your button does not execute the widget command, you need to set [`allowedContent`](http://docs.ckeditor.com/#!/api/CKEDITOR.feature-property-allowedContent) and [`requiredContent`](http://docs.ckeditor.com/#!/api/CKEDITOR.feature-property-requiredContent) properties for it manually, because the editor will not be able to find them.
86
+ * The [Show Borders](http://ckeditor.com/addon/showborders) plugin was added to the Standard installation package in order to ensure that unstyled tables are still visible for the user ([#11665](http://dev.ckeditor.com/ticket/11665)).
87
+ * Since CKEditor 4.4 the editor instance should be passed to [`CKEDITOR.style`](http://docs.ckeditor.com/#!/api/CKEDITOR.style) methods to ensure full compatibility with other features (e.g. applying styles to widgets requires that). We ensured backward compatibility though, so the [`CKEDITOR.style`](http://docs.ckeditor.com/#!/api/CKEDITOR.style) will work even when the editor instance is not provided.
88
+
89
+ New Features:
90
+
91
+ * [#11297](http://dev.ckeditor.com/ticket/11297): Styles can now be applied to widgets. The definition of a style which can be applied to a specific widget must contain two additional properties &mdash; `type` and `widget`. Read more in the [Widget Styles](http://docs.ckeditor.com/#!/guide/dev_styles-section-widget-styles) section of the "Syles Drop-down" guide. Note that by default, widgets support only classes and no other attributes or styles. Related changes and features:
92
+ * Introduced the [`CKEDITOR.style.addCustomHandler()`](http://docs.ckeditor.com/#!/api/CKEDITOR.style-static-method-addCustomHandler) method for registering custom style handlers.
93
+ * The [`CKEDITOR.style.apply()`](http://docs.ckeditor.com/#!/api/CKEDITOR.style-method-apply) and [`CKEDITOR.style.remove()`](http://docs.ckeditor.com/#!/api/CKEDITOR.style-method-remove) methods are now called with an editor instance instead of the document so they can be reused by the [`CKEDITOR.editor.applyStyle()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-applyStyle) and [`CKEDITOR.editor.removeStyle()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-removeStyle) methods. Backward compatibility was preserved, but from CKEditor 4.4 it is highly recommended to pass an editor instead of a document to these methods.
94
+ * Many new methods and properties were introduced in the [Widget API](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget) to make the handling of styles by widgets fully customizable. See: [`widget.definition.styleableElements`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.definition-property-styleableElements), [`widget.definition.styleToAllowedContentRule`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.definition-property-styleToAllowedContentRules), [`widget.addClass()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-method-addClass), [`widget.removeClass()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-method-removeClass), [`widget.getClasses()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-method-getClasses), [`widget.hasClass()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-method-hasClass), [`widget.applyStyle()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-method-applyStyle), [`widget.removeStyle()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-method-removeStyle), [`widget.checkStyleActive()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-method-checkStyleActive).
95
+ * Integration with the [Allowed Content Filter](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) required an introduction of the [`CKEDITOR.style.toAllowedContent()`](http://docs.ckeditor.com/#!/api/CKEDITOR.style-method-toAllowedContentRules) method which can be implemented by the custom style handler and if exists, it is used by the [`CKEDITOR.filter`](http://docs.ckeditor.com/#!/api/CKEDITOR.filter) to translate a style to [allowed content rules](http://docs.ckeditor.com/#!/api/CKEDITOR.filter.allowedContentRules).
96
+ * [#11300](http://dev.ckeditor.com/ticket/11300): Various changes in the [Enhanced Image](http://ckeditor.com/addon/image2) plugin:
97
+ * Introduced the [`config.image2_captionedClass`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-image2_captionedClass) option to configure the class of captioned images.
98
+ * Introduced the [`config.image2_alignClasses`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-image2_alignClasses) option to configure the way images are aligned with CSS classes.
99
+ If this setting is defined, the editor produces classes instead of inline styles for aligned images.
100
+ * Default image caption can be translated (customized) with the `editor.lang.image2.captionPlaceholder` string.
101
+ * [#11341](http://dev.ckeditor.com/ticket/11341): [Enhanced Image](http://ckeditor.com/addon/image2) plugin: It is now possible to add a link to any image type.
102
+ * [#10202](http://dev.ckeditor.com/ticket/10202): Introduced wildcard support in the [Allowed Content Rules](http://docs.ckeditor.com/#!/guide/dev_allowed_content_rules) format.
103
+ * [#10276](http://dev.ckeditor.com/ticket/10276): Introduced blacklisting in the [Allowed Content Filter](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter).
104
+ * [#10480](http://dev.ckeditor.com/ticket/10480): Introduced code snippets with code highlighting. There are two versions available so far &mdash; the default [Code Snippet](http://ckeditor.com/addon/codesnippet) which uses the [highlight.js](http://highlightjs.org) library and the [Code Snippet GeSHi](http://ckeditor.com/addon/codesnippetgeshi) which uses the [GeSHi](http://qbnz.com/highlighter/) library.
105
+ * [#11737](http://dev.ckeditor.com/ticket/11737): Introduced an option to prevent [filtering](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) of an element that matches custom criteria (see [`filter.addElementCallback()`](http://docs.ckeditor.com/#!/api/CKEDITOR.filter-method-addElementCallback)).
106
+ * [#11532](http://dev.ckeditor.com/ticket/11532): Introduced the [`editor.addContentsCss()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-addContentsCss) method that can be used for [adding custom CSS files](http://docs.ckeditor.com/#!/guide/plugin_sdk_styles).
107
+ * [#11536](http://dev.ckeditor.com/ticket/11536): Added the [`CKEDITOR.tools.htmlDecode()`](http://docs.ckeditor.com/#!/api/CKEDITOR.tools-method-htmlDecode) method for decoding HTML entities.
108
+ * [#11225](http://dev.ckeditor.com/ticket/11225): Introduced the [`CKEDITOR.tools.transparentImageData`](http://docs.ckeditor.com/#!/api/CKEDITOR.tools-property-transparentImageData) property which contains transparent image data to be used in CSS or as image source.
109
+
110
+ Other Changes:
111
+
112
+ * [#11377](http://dev.ckeditor.com/ticket/11377): Unified internal representation of empty anchors using the [fake objects](http://ckeditor.com/addon/fakeobjects).
113
+ * [#11422](http://dev.ckeditor.com/ticket/11422): Removed Firefox 3.x, Internet Explorer 6 and Opera 12.x leftovers in code.
114
+ * [#5217](http://dev.ckeditor.com/ticket/5217): Setting data (including switching between modes) creates a new undo snapshot. Besides that:
115
+ * Introduced the [`editable.status`](http://docs.ckeditor.com/#!/api/CKEDITOR.editable-property-status) property.
116
+ * Introduced a new `forceUpdate` option for the [`editor.lockSnapshot`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-lockSnapshot) event.
117
+ * Fixed: Selection not being unlocked in inline editor after setting data ([#11500](http://dev.ckeditor.com/ticket/11500)).
118
+ * The [WebSpellChecker](http://ckeditor.com/addon/wsc) plugin was updated to the latest version.
119
+
120
+ Fixed Issues:
121
+
122
+ * [#10190](http://dev.ckeditor.com/ticket/10190): Fixed: Removing block style with [`editor.removeStyle()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-removeStyle) should result in a paragraph and not a div.
123
+ * [#11727](http://dev.ckeditor.com/ticket/11727): Fixed: The editor tries to select a non-editable image which was clicked.
124
+
125
+ ## CKEditor 4.3.5
126
+
127
+ New Features:
128
+
129
+ * Added new translation: Tatar.
130
+
131
+ Fixed Issues:
132
+
133
+ * [#11677](http://dev.ckeditor.com/ticket/11677): Fixed: Undo/Redo keystrokes are blocked in the source mode.
134
+ * [#11717](http://dev.ckeditor.com/ticket/11717): [Document Properties](http://ckeditor.com/addon/docprops) plugin requires the [Color Dialog](http://ckeditor.com/addon/colordialog) plugin to work.
135
+
4
136
  ## CKEditor 4.3.4
5
137
 
6
138
  Fixed Issues: