rails_editor_liu 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (241) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +6 -0
  3. data/Gemfile +6 -0
  4. data/README.md +526 -0
  5. data/Rakefile +2 -0
  6. data/app/assets/javascripts/kindeditor.js +1 -0
  7. data/app/controllers/kindeditor/assets_controller.rb +136 -0
  8. data/app/uploaders/kindeditor/asset_uploader.rb +112 -0
  9. data/app/uploaders/kindeditor/file_uploader.rb +10 -0
  10. data/app/uploaders/kindeditor/flash_uploader.rb +10 -0
  11. data/app/uploaders/kindeditor/image_uploader.rb +10 -0
  12. data/app/uploaders/kindeditor/media_uploader.rb +10 -0
  13. data/config/routes.rb +6 -0
  14. data/lib/generators/rails_kindeditor/install/USAGE +10 -0
  15. data/lib/generators/rails_kindeditor/install/install_generator.rb +23 -0
  16. data/lib/generators/rails_kindeditor/install/templates/application.js +17 -0
  17. data/lib/generators/rails_kindeditor/install/templates/rails_kindeditor.rb +19 -0
  18. data/lib/generators/rails_kindeditor/migration/USAGE +14 -0
  19. data/lib/generators/rails_kindeditor/migration/migration_generator.rb +36 -0
  20. data/lib/generators/rails_kindeditor/migration/templates/migration/migration.rb +17 -0
  21. data/lib/generators/rails_kindeditor/migration/templates/models/active_record/kindeditor/asset.rb +14 -0
  22. data/lib/generators/rails_kindeditor/migration/templates/models/active_record/kindeditor/file.rb +3 -0
  23. data/lib/generators/rails_kindeditor/migration/templates/models/active_record/kindeditor/flash.rb +3 -0
  24. data/lib/generators/rails_kindeditor/migration/templates/models/active_record/kindeditor/image.rb +3 -0
  25. data/lib/generators/rails_kindeditor/migration/templates/models/active_record/kindeditor/media.rb +3 -0
  26. data/lib/generators/rails_kindeditor/migration/templates/models/mongoid/kindeditor/asset.rb +27 -0
  27. data/lib/generators/rails_kindeditor/migration/templates/models/mongoid/kindeditor/file.rb +3 -0
  28. data/lib/generators/rails_kindeditor/migration/templates/models/mongoid/kindeditor/flash.rb +3 -0
  29. data/lib/generators/rails_kindeditor/migration/templates/models/mongoid/kindeditor/image.rb +3 -0
  30. data/lib/generators/rails_kindeditor/migration/templates/models/mongoid/kindeditor/media.rb +3 -0
  31. data/lib/rails_kindeditor/active_record.rb +14 -0
  32. data/lib/rails_kindeditor/engine.rb +34 -0
  33. data/lib/rails_kindeditor/formtastic.rb +12 -0
  34. data/lib/rails_kindeditor/helper.rb +96 -0
  35. data/lib/rails_kindeditor/simple_form.rb +11 -0
  36. data/lib/rails_kindeditor/version.rb +4 -0
  37. data/lib/rails_kindeditor.rb +58 -0
  38. data/lib/tasks/assets.rake +9 -0
  39. data/rails_kindeditor.gemspec +23 -0
  40. data/screenshots/rails_kindeditor.png +0 -0
  41. data/screenshots/simple_mode.png +0 -0
  42. data/vendor/assets/javascripts/kindeditor/kindeditor.js +5963 -0
  43. data/vendor/assets/javascripts/kindeditor/lang/ar.js +233 -0
  44. data/vendor/assets/javascripts/kindeditor/lang/en.js +232 -0
  45. data/vendor/assets/javascripts/kindeditor/lang/ko.js +237 -0
  46. data/vendor/assets/javascripts/kindeditor/lang/zh_CN.js +237 -0
  47. data/vendor/assets/javascripts/kindeditor/lang/zh_TW.js +235 -0
  48. data/vendor/assets/javascripts/kindeditor/plugins/anchor/anchor.js +46 -0
  49. data/vendor/assets/javascripts/kindeditor/plugins/autoheight/autoheight.js +54 -0
  50. data/vendor/assets/javascripts/kindeditor/plugins/baidumap/baidumap.js +93 -0
  51. data/vendor/assets/javascripts/kindeditor/plugins/baidumap/index.html +83 -0
  52. data/vendor/assets/javascripts/kindeditor/plugins/baidumap/map.html +43 -0
  53. data/vendor/assets/javascripts/kindeditor/plugins/clearhtml/clearhtml.js +29 -0
  54. data/vendor/assets/javascripts/kindeditor/plugins/code/code.js +62 -0
  55. data/vendor/assets/javascripts/kindeditor/plugins/code/prettify.css +13 -0
  56. data/vendor/assets/javascripts/kindeditor/plugins/code/prettify.js +28 -0
  57. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/emoticons.js +129 -0
  58. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/0.gif +0 -0
  59. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/1.gif +0 -0
  60. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/10.gif +0 -0
  61. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/100.gif +0 -0
  62. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/101.gif +0 -0
  63. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/102.gif +0 -0
  64. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/103.gif +0 -0
  65. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/104.gif +0 -0
  66. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/105.gif +0 -0
  67. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/106.gif +0 -0
  68. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/107.gif +0 -0
  69. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/108.gif +0 -0
  70. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/109.gif +0 -0
  71. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/11.gif +0 -0
  72. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/110.gif +0 -0
  73. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/111.gif +0 -0
  74. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/112.gif +0 -0
  75. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/113.gif +0 -0
  76. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/114.gif +0 -0
  77. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/115.gif +0 -0
  78. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/116.gif +0 -0
  79. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/117.gif +0 -0
  80. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/118.gif +0 -0
  81. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/119.gif +0 -0
  82. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/12.gif +0 -0
  83. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/120.gif +0 -0
  84. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/121.gif +0 -0
  85. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/122.gif +0 -0
  86. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/123.gif +0 -0
  87. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/124.gif +0 -0
  88. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/125.gif +0 -0
  89. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/126.gif +0 -0
  90. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/127.gif +0 -0
  91. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/128.gif +0 -0
  92. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/129.gif +0 -0
  93. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/13.gif +0 -0
  94. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/130.gif +0 -0
  95. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/131.gif +0 -0
  96. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/132.gif +0 -0
  97. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/133.gif +0 -0
  98. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/134.gif +0 -0
  99. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/14.gif +0 -0
  100. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/15.gif +0 -0
  101. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/16.gif +0 -0
  102. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/17.gif +0 -0
  103. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/18.gif +0 -0
  104. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/19.gif +0 -0
  105. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/2.gif +0 -0
  106. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/20.gif +0 -0
  107. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/21.gif +0 -0
  108. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/22.gif +0 -0
  109. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/23.gif +0 -0
  110. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/24.gif +0 -0
  111. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/25.gif +0 -0
  112. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/26.gif +0 -0
  113. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/27.gif +0 -0
  114. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/28.gif +0 -0
  115. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/29.gif +0 -0
  116. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/3.gif +0 -0
  117. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/30.gif +0 -0
  118. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/31.gif +0 -0
  119. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/32.gif +0 -0
  120. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/33.gif +0 -0
  121. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/34.gif +0 -0
  122. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/35.gif +0 -0
  123. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/36.gif +0 -0
  124. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/37.gif +0 -0
  125. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/38.gif +0 -0
  126. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/39.gif +0 -0
  127. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/4.gif +0 -0
  128. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/40.gif +0 -0
  129. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/41.gif +0 -0
  130. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/42.gif +0 -0
  131. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/43.gif +0 -0
  132. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/44.gif +0 -0
  133. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/45.gif +0 -0
  134. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/46.gif +0 -0
  135. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/47.gif +0 -0
  136. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/48.gif +0 -0
  137. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/49.gif +0 -0
  138. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/5.gif +0 -0
  139. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/50.gif +0 -0
  140. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/51.gif +0 -0
  141. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/52.gif +0 -0
  142. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/53.gif +0 -0
  143. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/54.gif +0 -0
  144. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/55.gif +0 -0
  145. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/56.gif +0 -0
  146. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/57.gif +0 -0
  147. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/58.gif +0 -0
  148. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/59.gif +0 -0
  149. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/6.gif +0 -0
  150. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/60.gif +0 -0
  151. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/61.gif +0 -0
  152. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/62.gif +0 -0
  153. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/63.gif +0 -0
  154. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/64.gif +0 -0
  155. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/65.gif +0 -0
  156. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/66.gif +0 -0
  157. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/67.gif +0 -0
  158. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/68.gif +0 -0
  159. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/69.gif +0 -0
  160. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/7.gif +0 -0
  161. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/70.gif +0 -0
  162. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/71.gif +0 -0
  163. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/72.gif +0 -0
  164. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/73.gif +0 -0
  165. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/74.gif +0 -0
  166. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/75.gif +0 -0
  167. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/76.gif +0 -0
  168. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/77.gif +0 -0
  169. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/78.gif +0 -0
  170. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/79.gif +0 -0
  171. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/8.gif +0 -0
  172. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/80.gif +0 -0
  173. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/81.gif +0 -0
  174. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/82.gif +0 -0
  175. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/83.gif +0 -0
  176. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/84.gif +0 -0
  177. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/85.gif +0 -0
  178. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/86.gif +0 -0
  179. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/87.gif +0 -0
  180. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/88.gif +0 -0
  181. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/89.gif +0 -0
  182. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/9.gif +0 -0
  183. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/90.gif +0 -0
  184. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/91.gif +0 -0
  185. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/92.gif +0 -0
  186. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/93.gif +0 -0
  187. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/94.gif +0 -0
  188. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/95.gif +0 -0
  189. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/96.gif +0 -0
  190. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/97.gif +0 -0
  191. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/98.gif +0 -0
  192. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/99.gif +0 -0
  193. data/vendor/assets/javascripts/kindeditor/plugins/emoticons/images/static.gif +0 -0
  194. data/vendor/assets/javascripts/kindeditor/plugins/filemanager/filemanager.js +189 -0
  195. data/vendor/assets/javascripts/kindeditor/plugins/filemanager/images/file-16.gif +0 -0
  196. data/vendor/assets/javascripts/kindeditor/plugins/filemanager/images/file-64.gif +0 -0
  197. data/vendor/assets/javascripts/kindeditor/plugins/filemanager/images/folder-16.gif +0 -0
  198. data/vendor/assets/javascripts/kindeditor/plugins/filemanager/images/folder-64.gif +0 -0
  199. data/vendor/assets/javascripts/kindeditor/plugins/filemanager/images/go-up.gif +0 -0
  200. data/vendor/assets/javascripts/kindeditor/plugins/flash/flash.js +161 -0
  201. data/vendor/assets/javascripts/kindeditor/plugins/image/image.js +328 -0
  202. data/vendor/assets/javascripts/kindeditor/plugins/image/images/align_left.gif +0 -0
  203. data/vendor/assets/javascripts/kindeditor/plugins/image/images/align_right.gif +0 -0
  204. data/vendor/assets/javascripts/kindeditor/plugins/image/images/align_top.gif +0 -0
  205. data/vendor/assets/javascripts/kindeditor/plugins/image/images/refresh.png +0 -0
  206. data/vendor/assets/javascripts/kindeditor/plugins/insertfile/insertfile.js +138 -0
  207. data/vendor/assets/javascripts/kindeditor/plugins/lineheight/lineheight.js +38 -0
  208. data/vendor/assets/javascripts/kindeditor/plugins/link/link.js +66 -0
  209. data/vendor/assets/javascripts/kindeditor/plugins/map/map.html +57 -0
  210. data/vendor/assets/javascripts/kindeditor/plugins/map/map.js +137 -0
  211. data/vendor/assets/javascripts/kindeditor/plugins/media/media.js +170 -0
  212. data/vendor/assets/javascripts/kindeditor/plugins/modal/modal.js +43 -0
  213. data/vendor/assets/javascripts/kindeditor/plugins/multiimage/images/image.png +0 -0
  214. data/vendor/assets/javascripts/kindeditor/plugins/multiimage/images/select-files-en.png +0 -0
  215. data/vendor/assets/javascripts/kindeditor/plugins/multiimage/images/select-files-zh_CN.png +0 -0
  216. data/vendor/assets/javascripts/kindeditor/plugins/multiimage/images/swfupload.swf +0 -0
  217. data/vendor/assets/javascripts/kindeditor/plugins/multiimage/multiimage.js +1384 -0
  218. data/vendor/assets/javascripts/kindeditor/plugins/pagebreak/pagebreak.js +27 -0
  219. data/vendor/assets/javascripts/kindeditor/plugins/plainpaste/plainpaste.js +41 -0
  220. data/vendor/assets/javascripts/kindeditor/plugins/preview/preview.js +31 -0
  221. data/vendor/assets/javascripts/kindeditor/plugins/quickformat/quickformat.js +81 -0
  222. data/vendor/assets/javascripts/kindeditor/plugins/smimage/smimage.js +267 -0
  223. data/vendor/assets/javascripts/kindeditor/plugins/table/table.js +712 -0
  224. data/vendor/assets/javascripts/kindeditor/plugins/template/html/1.html +14 -0
  225. data/vendor/assets/javascripts/kindeditor/plugins/template/html/2.html +42 -0
  226. data/vendor/assets/javascripts/kindeditor/plugins/template/html/3.html +36 -0
  227. data/vendor/assets/javascripts/kindeditor/plugins/template/template.js +58 -0
  228. data/vendor/assets/javascripts/kindeditor/plugins/wordpaste/wordpaste.js +51 -0
  229. data/vendor/assets/javascripts/kindeditor/themes/common/anchor.gif +0 -0
  230. data/vendor/assets/javascripts/kindeditor/themes/common/blank.gif +0 -0
  231. data/vendor/assets/javascripts/kindeditor/themes/common/flash.gif +0 -0
  232. data/vendor/assets/javascripts/kindeditor/themes/common/loading.gif +0 -0
  233. data/vendor/assets/javascripts/kindeditor/themes/common/media.gif +0 -0
  234. data/vendor/assets/javascripts/kindeditor/themes/common/rm.gif +0 -0
  235. data/vendor/assets/javascripts/kindeditor/themes/default/background.png +0 -0
  236. data/vendor/assets/javascripts/kindeditor/themes/default/default.css +1158 -0
  237. data/vendor/assets/javascripts/kindeditor/themes/default/default.png +0 -0
  238. data/vendor/assets/javascripts/kindeditor/themes/qq/editor.gif +0 -0
  239. data/vendor/assets/javascripts/kindeditor/themes/qq/qq.css +143 -0
  240. data/vendor/assets/javascripts/kindeditor/themes/simple/simple.css +100 -0
  241. metadata +310 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: a233f784500c40bf8d95c569a4af4c2894f1cbeede3577d7a4895a5f2d0a6988
4
+ data.tar.gz: f01f62cc6e0c173f6f2dea82ec10d2f6249826fc812ea83fb10b22a029471765
5
+ SHA512:
6
+ metadata.gz: 724387570fa430cce561126e61bec08f0d229f89bb1114806786d5ff238eff6eb31d6d4994d7cd818b8d26937341d382e66086e0ac38c8659adf1ca08517eb80
7
+ data.tar.gz: 8adc18bec8f5830ecae7a45397e127c3ecb5982ec0c33ccefa02aa184808c47ddda22bdc2ddd5bb2ed7a60a7d750e67e1349ff077f37ef0ebe1be4de62943b01
data/.gitignore ADDED
@@ -0,0 +1,6 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ *.DS_Store
6
+ *.swp
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
4
+
5
+ gem 'carrierwave'
6
+ gem 'mini_magick'
data/README.md ADDED
@@ -0,0 +1,526 @@
1
+ # Kindeditor for Ruby on Rails [![Gem Version](https://badge.fury.io/rb/rails_kindeditor.png)](http://badge.fury.io/rb/rails_kindeditor)
2
+
3
+ Kindeditor is a WYSIWYG javascript editor, visit http://www.kindsoft.net for details.
4
+ rails_kindeditor will helps your rails app integrate with kindeditor, includes images and files uploading.
5
+
6
+ <img src="https://github.com/Macrow/rails_kindeditor/raw/master/screenshots/rails_kindeditor.png" alt="rails_indeditor">
7
+
8
+ ## Installation and usage
9
+
10
+ ### Add this to your Gemfile
11
+
12
+ ```ruby
13
+ gem 'rails_kindeditor'
14
+ ```
15
+
16
+ ### Run "bundle" command.
17
+
18
+ ```bash
19
+ bundle
20
+ ```
21
+
22
+ ### Run install generator:
23
+
24
+ ```bash
25
+ rails generate rails_kindeditor:install
26
+ ```
27
+ notice: rails_kindeditor needs applications.js in your project.
28
+
29
+ ### Rails4 in production mode
30
+
31
+ In Rails 4.0, precompiling assets no longer automatically copies non-JS/CSS assets from vendor/assets and lib/assets. see https://github.com/rails/rails/pull/7968
32
+ In Rails 4.0's production mode, please run 'rake kindeditor:assets', this method just copy kindeditor into public folder.
33
+
34
+ ```bash
35
+ rake kindeditor:assets
36
+ ```
37
+
38
+ ### Usage:
39
+
40
+ ```ruby
41
+ 1. <%= kindeditor_tag :content, 'default content value' %>
42
+ # or <%= kindeditor_tag :content, 'default content value', :width => 800, :height => 300 %>
43
+ # or <%= kindeditor_tag :content, 'default content value', :allowFileManager => false %>
44
+ ```
45
+
46
+ ```ruby
47
+ 2. <%= form_for @article do |f| %>
48
+ ...
49
+ <%= f.kindeditor :content %>
50
+ # or <%= f.kindeditor :content, :width => 800, :height => 300 %>
51
+ # or <%= f.kindeditor :content, :allowFileManager => false %>
52
+ ...
53
+ <% end %>
54
+ ```
55
+ You can use kindeditor's initial parameters as usual, please visit http://www.kindsoft.net/docs/option.html for details.
56
+
57
+ additionally, rails_kindeditor provides one "simple_mode" parameter for render simple mode quickly.
58
+
59
+ <img src="https://github.com/Macrow/rails_kindeditor/raw/master/screenshots/simple_mode.png" alt="simple mode">
60
+
61
+ ```ruby
62
+ kindeditor_tag :content, 'default content value', :simple_mode => true
63
+ f.kindeditor :content, :simple_mode => true
64
+ f.input :content, :as => :kindeditor, :input_html => { :simple_mode => true } # simple_form & formtastic
65
+ ```
66
+
67
+ That's all.
68
+
69
+ ### Work with turbolinks
70
+
71
+ rails_kindeditor will not load the scripts under the turbolinks, there's two way to solve this problem:
72
+
73
+ 1.use "'data-no-turbolink' => true" when we need to load kindeditor,this will shut down the turbolinks in this page
74
+
75
+ ```ruby
76
+ <%= link_to 'Edit', edit_article_path(article), 'data-no-turbolink' => true %>
77
+ ```
78
+
79
+ 2.load kindeditor manually, but you should specify the parameters again, include the textarea's id.
80
+
81
+ ```coffeescript
82
+ # coffeescript code
83
+ $(document).on 'page:load', ->
84
+ if $('#article_content').length > 0
85
+ KindEditor.create '#article_content', "width":"100%", "height":300, "allowFileManager":true, "uploadJson":"/kindeditor/upload", "fileManagerJson":"/kindeditor/filemanager"
86
+ ```
87
+
88
+ simple mode
89
+ ```coffeescript
90
+ # coffeescript code
91
+ $(document).on 'page:load', ->
92
+ if $('#article_content').length > 0
93
+ KindEditor.create '#article_content',
94
+ "width":"100%",
95
+ "height":300,
96
+ "allowFileManager":true,
97
+ "uploadJson":"/kindeditor/upload",
98
+ "fileManagerJson":"/kindeditor/filemanager",
99
+ "items":["fontname","fontsize","|","forecolor","hilitecolor","bold","italic","underline","removeformat","|","justifyleft","justifycenter","justifyright","insertorderedlist","insertunorderedlist","|","emoticons","image","link"]
100
+ ```
101
+
102
+ When you need to specify the owner_id:
103
+
104
+ ```ruby
105
+ f.kindeditor :content, owner_id: @article.id, data: {upload: kindeditor_upload_json_path(owner_id: @article.id), filemanager: kindeditor_file_manager_json_path}
106
+ ```
107
+
108
+ ```coffeescript
109
+ # coffeescript code
110
+ $(document).on 'page:load', ->
111
+ if $('#article_content').length > 0
112
+ KindEditor.create '#article_content',
113
+ "width" : "100%",
114
+ "height" : 300,
115
+ "allowFileManager" : true,
116
+ "uploadJson" : $('#article_content').data('upload'),
117
+ "fileManagerJson" : $('#article_content').data('filemanager')
118
+ ```
119
+
120
+ ### Include javascript files at bottom ? Not in the head tag ? How can I load kindeditor correctly ?
121
+
122
+ For some reasons, you includes javascript files at bottom in your template, rails_kindeditor provides a options for lazyload:
123
+
124
+ ```ruby
125
+ <%= f.kindeditor :content, :window_onload => true %>
126
+ ```
127
+
128
+ Warning: Kindeditor will load after all the objects loaded.
129
+
130
+ ## SimpleForm and Formtastic integration
131
+
132
+ ### simple_form:
133
+
134
+ ```ruby
135
+ <%= form.input :content, :as => :kindeditor %>
136
+ # or
137
+ <%= form.input :content, :as => :kindeditor, :label => false, :input_html => { :width => 800, :height => 300 } %>
138
+ ```
139
+
140
+ ### formtastic:
141
+
142
+ ```ruby
143
+ <%= form.input :content, :as => :kindeditor %>
144
+ # or
145
+ <%= form.input :content, :as => :kindeditor, :input_html => { :height => 300 } %>
146
+ ```
147
+
148
+ ## How to get kindeditor's content
149
+
150
+ ```ruby
151
+ <%= form_for @article do |f| %>
152
+ <%= f.kindeditor :content, :editor_id => 'my_editor' %>
153
+ <% end %>
154
+ ```
155
+
156
+ You can get content like this:
157
+
158
+ ```javascript
159
+ // Javascript code
160
+ my_editor.html();
161
+ ```
162
+
163
+ ## Upload options configuration
164
+
165
+ When you run "rails generate rails_kindeditor:install", installer will copy configuration files in config/initializers folder.
166
+ You can customize some option for uploading.
167
+
168
+ ```ruby
169
+ # Specify the subfolders in public directory.
170
+ # You can customize it , eg: config.upload_dir = 'this/is/my/folder'
171
+ config.upload_dir = 'uploads'
172
+
173
+ # Allowed file types for upload.
174
+ config.upload_image_ext = %w[gif jpg jpeg png bmp]
175
+ config.upload_flash_ext = %w[swf flv]
176
+ config.upload_media_ext = %w[swf flv mp3 wav wma wmv mid avi mpg asf rm rmvb]
177
+ config.upload_file_ext = %w[doc docx xls xlsx ppt htm html txt zip rar gz bz2]
178
+
179
+ # If you don't want use the original file name (carrierwave carry)
180
+ config.use_original_filename = false
181
+
182
+ # and if you use fixed_folder it will use the original file name
183
+ <%= form.kindeditor :content, fixed_folder: 'game/img' %>
184
+
185
+ # if you use fixed_folder and you don't use the original file name ,you can add digest_filename = true
186
+
187
+ <%= form.kindeditor :content, fixed_folder: 'game/img',digest_filename: true %>
188
+
189
+ # Porcess upload image size, need mini_magick
190
+ # before => after
191
+ # eg: 1600x1600 => 800x800
192
+ # 1600x800 => 800x400
193
+ # 400x400 => 400x400 # No Change
194
+ # config.image_resize_to_limit = [800, 800]
195
+ ```
196
+
197
+ ## Save upload file information into database(optional)
198
+
199
+ rails_kindeditor can save upload file information into database.
200
+
201
+ ### Just run migration generate, there are two ORM options for you: 1.active_record 2.mongoid, default is active_record.
202
+
203
+ ```bash
204
+ rails generate rails_kindeditor:migration
205
+ or
206
+ rails generate rails_kindeditor:migration -o mongoid
207
+ ```
208
+
209
+ ### The generator will copy model and migration to your application. When you are done, remember run rake db:migrate:
210
+
211
+ ```bash
212
+ rake db:migrate
213
+ ```
214
+
215
+ ### Delete uploaded files automatically (only for active_record)
216
+
217
+ You can specify the owner for uploaded files, when the owner was destroying, all the uploaded files(belongs to the owner) will be destroyed automatically.
218
+
219
+ ####1. specify the owner_id for kindeditor
220
+
221
+ ```ruby
222
+ <%= form_for @article do |f| %>
223
+ ...
224
+ <%= f.kindeditor :content, :owner_id => @article.id %>
225
+ ...
226
+ <% end %>
227
+ ```
228
+
229
+ ```ruby
230
+ Warnning: the @article must be created before this scene, the @article.id should not be empty.
231
+ ```
232
+
233
+ ####2. add has_many_kindeditor_assets in your own model
234
+
235
+ ```ruby
236
+ class Article < ActiveRecord::Base
237
+ has_many_kindeditor_assets :attachments, :dependent => :destroy
238
+ # has_many_kindeditor_assets :attachments, :dependent => :nullify
239
+ # has_many_kindeditor_assets :your_name, :dependent => :destroy
240
+ end
241
+ ```
242
+
243
+ ####3. relationship
244
+
245
+ ```ruby
246
+ article = Article.first
247
+ article.attachments # => the article's assets uploaded by kindeditor
248
+ asset = article.attachments.first
249
+ asset.owner # => aritcle
250
+ ```
251
+
252
+ ####4 If you want a private folder for every user (eg: in sns website),add a method: private_editor_resource_path,
253
+
254
+ ```ruby
255
+ class User < ActiveRecord::Base
256
+ def private_editor_resource_path
257
+ @private_path ||= Digest::MD5.hexdigest(SecretPathKey + self.id.to_s)[0..10]
258
+ end
259
+ end
260
+ ```
261
+ ####4 If you want a fixed_folder for special scence,you can set fixed_folder options
262
+
263
+ ```ruby
264
+ <%= f.kindeditor :content,fixed_folder: "custom_folder" %>
265
+ ```
266
+
267
+ ```ruby
268
+ Note: you must need another controller method: current_user (current login user)
269
+ ```
270
+
271
+ ### If you're using mongoid, please add 'gem "carrierwave-mongoid"' in your Gemfile
272
+
273
+ ```ruby
274
+ gem 'carrierwave-mongoid'
275
+ ```
276
+
277
+ ## License
278
+
279
+ MIT License.
280
+
281
+
282
+
283
+ # Kindeditor for Ruby on Rails 中文文档
284
+
285
+ Kindeditor是国产的所见即所得javascript富文本编辑器, 访问 http://www.kindsoft.net 获取更多信息.
286
+ rails_kindeditor可以帮助你的rails程序集成kindeditor,包括了图片和附件上传功能,文件按照类型、日期进行存储。
287
+
288
+ ## 安装及使用
289
+
290
+ ### 将下面代码加入Gemfile:
291
+
292
+ ```ruby
293
+ gem 'rails_kindeditor'
294
+ ```
295
+
296
+ ### 运行"bundle"命令:
297
+
298
+ ```bash
299
+ bundle
300
+ ```
301
+
302
+ ### 安装Kindeditor,运行下面的代码:
303
+
304
+ ```bash
305
+ rails generate rails_kindeditor:install
306
+ ```
307
+ 注意: 在你的工程中需要有application.js文件。
308
+
309
+ ### Rails4 in production mode
310
+
311
+ 从Rails 4.0开始, precompiling assets不再自动从vendor/assets和lib/assets拷贝非JS/CSS文件. 参见 https://github.com/rails/rails/pull/7968
312
+ 如果要使用Rails 4.0的生产模式,请运行'rake kindeditor:assets', 此方法可将kindeditor自动拷贝到你的public/assets目录.
313
+
314
+ ```bash
315
+ rake kindeditor:assets
316
+ ```
317
+
318
+ ### 使用方法:
319
+
320
+ ```ruby
321
+ 1. <%= kindeditor_tag :content, 'default content value' %>
322
+ # or <%= kindeditor_tag :content, 'default content value', :width => 800, :height => 300 %>
323
+ # or <%= kindeditor_tag :content, 'default content value', :allowFileManager => false %>
324
+ ```
325
+
326
+ ```ruby
327
+ 2. <%= form_for @article do |f| -%>
328
+ ...
329
+ <%= f.kindeditor :content %>
330
+ # or <%= f.kindeditor :content, :width => 800, :height => 300 %>
331
+ # or <%= f.kindeditor :content, :allowFileManager => false %>
332
+ ...
333
+ <% end -%>
334
+ ```
335
+ 你可以像往常那样使用kindeditor自身的初始化参数,请访问 http://www.kindsoft.net/docs/option.html 查看更多参数。
336
+
337
+ 另外,rails_kindeditor还额外提供一个"simple_mode"参数,以便快捷使用简单模式的kindeditor。
338
+
339
+ ```ruby
340
+ kindeditor_tag :content, 'default content value', :simple_mode => true
341
+ f.kindeditor :content, :simple_mode => true
342
+ f.input :content, :as => :kindeditor, :input_html => { :simple_mode => true } # simple_form & formtastic
343
+ ```
344
+
345
+ 完毕!
346
+
347
+ ### 如何在turbolinks下使用
348
+
349
+ rails_kindeditor在turbolinks下不会正常加载,只有当页面刷新时才正常。turbolinks的机制就是这样的,页面根本没刷新,这和pjax是一样的,所以kindeditor没加载很正常。
350
+
351
+ 有两个办法可以解决:
352
+
353
+ 1.在需要加载kindeditor的链接加入 'data-no-turbolink' => true ,此时相当在这个页面于关闭turbolinks。
354
+
355
+ ```ruby
356
+ <%= link_to 'Edit', edit_article_path(article), 'data-no-turbolink' => true %>
357
+ ```
358
+
359
+ 2.在turbolinks载入完毕后手动加载kindeditor,不过所有参数都要设置,而且需要知道并设定textarea的id。
360
+
361
+ ```coffeescript
362
+ # coffeescript code
363
+ $(document).on 'page:load', ->
364
+ if $('#article_content').length > 0
365
+ KindEditor.create '#article_content', "width":"100%", "height":300, "allowFileManager":true, "uploadJson":"/kindeditor/upload", "fileManagerJson":"/kindeditor/filemanager"
366
+ ```
367
+
368
+ simple模式也需要手动设定
369
+ ```coffeescript
370
+ # coffeescript code
371
+ $(document).on 'page:load', ->
372
+ if $('#article_content').length > 0
373
+ KindEditor.create '#article_content',
374
+ "width":"100%",
375
+ "height":300,
376
+ "allowFileManager":true,
377
+ "uploadJson":"/kindeditor/upload",
378
+ "fileManagerJson":"/kindeditor/filemanager",
379
+ "items":["fontname","fontsize","|","forecolor","hilitecolor","bold","italic","underline","removeformat","|","justifyleft","justifycenter","justifyright","insertorderedlist","insertunorderedlist","|","emoticons","image","link"]
380
+ ```
381
+
382
+ 需要指定owner_id的方法:
383
+
384
+ ```ruby
385
+ f.kindeditor :content, owner_id: @article.id, data: {upload: kindeditor_upload_json_path(owner_id: @article.id), filemanager: kindeditor_file_manager_json_path}
386
+ ```
387
+
388
+ ```coffeescript
389
+ # coffeescript code
390
+ $(document).on 'page:load', ->
391
+ if $('#article_content').length > 0
392
+ KindEditor.create '#article_content',
393
+ "width" : "100%",
394
+ "height" : 300,
395
+ "allowFileManager" : true,
396
+ "uploadJson" : $('#article_content').data('upload'),
397
+ "fileManagerJson" : $('#article_content').data('filemanager')
398
+ ```
399
+
400
+ ### 把javascript放在模板最下方,不放在head里面,如何正确加载kindeditor?
401
+
402
+ 有时候,为了加快页面载入速度,也许你会把javascript引用放在template的底部,rails_kindeditor提供了一个参数可以确保正常加载:
403
+
404
+ ```ruby
405
+ <%= f.kindeditor :content, :window_onload => true %>
406
+ ```
407
+
408
+ 警告:Kindeditor会在页面所有的内容加载完毕后才进行加载,所以需谨慎使用
409
+
410
+ ## SimpleForm与Formtastic集成:
411
+
412
+ ### simple_form:
413
+
414
+ ```ruby
415
+ <%= form.input :content, :as => :kindeditor, :label => false, :input_html => { :width => 800, :height => 300 } %>
416
+ ```
417
+
418
+ ### formtastic:
419
+
420
+ ```ruby
421
+ <%= form.input :content, :as => :kindeditor %>
422
+ <%= form.input :content, :as => :kindeditor, :input_html => { :height => 300 } %>
423
+ ```
424
+ ## 如何获取kindeditor的内容
425
+
426
+ ```ruby
427
+ <%= form_for @article do |f| %>
428
+ <%= f.kindeditor :content, :editor_id => 'my_editor' %>
429
+ <% end %>
430
+ ```
431
+
432
+ 可通过下面的Javascript代码获取内容:
433
+
434
+ ```javascript
435
+ // Javascript code
436
+ my_editor.html();
437
+ ```
438
+
439
+ ## 上传图片及文件配置
440
+
441
+ 当你运行"rails generate rails_kindeditor:install"的时候,安装器会将配置文件拷贝到config/initializers文件夹。
442
+ 你可以配置以下上传选项:
443
+
444
+ ```ruby
445
+ # 指定上传目录,目录可以指定多级,都存储在public目录下.
446
+ # You can customize it , eg: config.upload_dir = 'this/is/my/folder'
447
+ config.upload_dir = 'uploads'
448
+
449
+ # 指定允许上传的文件类型.
450
+ config.upload_image_ext = %w[gif jpg jpeg png bmp]
451
+ config.upload_flash_ext = %w[swf flv]
452
+ config.upload_media_ext = %w[swf flv mp3 wav wma wmv mid avi mpg asf rm rmvb]
453
+ config.upload_file_ext = %w[doc docx xls xlsx ppt htm html txt zip rar gz bz2]
454
+
455
+ # 处理上传文件,需要mini_magick
456
+ # 处理以前 => 处理以后
457
+ # eg: 1600x1600 => 800x800
458
+ # 1600x800 => 800x400
459
+ # 400x400 => 400x400 # 图片小于该限制尺寸则不作处理
460
+ # config.image_resize_to_limit = [800, 800]
461
+ ```
462
+
463
+ ## 将上传文件信息记录入数据库(可选)
464
+
465
+ rails_kindeditor 可以将上传文件信息记录入数据库,以便扩展应用.
466
+
467
+ ### 运行下面的代码,有两项选项:1.active_record 2.mongoid,默认是active_record。
468
+
469
+ ```bash
470
+ rails generate rails_kindeditor:migration
471
+ or
472
+ rails generate rails_kindeditor:migration -o mongoid
473
+ ```
474
+
475
+ ### 运行下面的代码:
476
+
477
+ ```bash
478
+ rake db:migrate
479
+ ```
480
+
481
+ ### 自动删除上传的文件(仅在active_record下工作)
482
+
483
+ 你可以为上传的文件指定归属,比如一名用户,或者一篇文章,当用户或者文章被删除时,所有属于该用户或者该文章的上传文件将会被自动删除。
484
+
485
+ ####1. 为kindeditor指定owner_id
486
+
487
+ ```ruby
488
+ <%= form_for @article do |f| %>
489
+ ...
490
+ <%= f.kindeditor :content, :owner_id => @article.id %>
491
+ ...
492
+ <% end %>
493
+ ```
494
+
495
+ ```ruby
496
+ 警告: @article应该事先被创建,@article.id不应该是空的。
497
+ ```
498
+
499
+ ####2. 在你自己的模型里加入has_many_kindeditor_assets
500
+
501
+ ```ruby
502
+ class Article < ActiveRecord::Base
503
+ has_many_kindeditor_assets :attachments, :dependent => :destroy
504
+ # has_many_kindeditor_assets :attachments, :dependent => :nullify
505
+ # has_many_kindeditor_assets :your_name, :dependent => :destroy
506
+ end
507
+ ```
508
+
509
+ ####3. 相互关系
510
+
511
+ ```ruby
512
+ article = Article.first
513
+ article.attachments # => the article's assets uploaded by kindeditor
514
+ asset = article.attachments.first
515
+ asset.owner # => aritcle
516
+ ```
517
+
518
+ ### 如果你使用的是mongoid, 请在你的Gemfile里加入'gem "carrierwave-mongoid"'
519
+
520
+ ```ruby
521
+ gem 'carrierwave-mongoid'
522
+ ```
523
+
524
+ ## License
525
+
526
+ MIT License.
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1 @@
1
+ //= require kindeditor/kindeditor.js
@@ -0,0 +1,136 @@
1
+ #coding: utf-8
2
+ require "find"
3
+ class Kindeditor::AssetsController < ApplicationController
4
+ skip_before_action :verify_authenticity_token
5
+ def create
6
+ @imgFile, @dir, @fixed_folder,@digest_filename = params[:imgFile], params[:dir], params[:fixed_folder],params[:digest_filename]
7
+
8
+ unless @imgFile.nil?
9
+ if Kindeditor::AssetUploader.save_upload_info? # save upload info into database
10
+ begin
11
+ @asset = "Kindeditor::#{@dir.camelize}".constantize.new(:asset => @imgFile,:fixed_folder => @fixed_folder)
12
+
13
+ @asset.private_path = current_user.private_editor_resource_path if current_user && current_user.respond_to?(:private_editor_resource_path)
14
+ @asset.owner_id = params[:owner_id] ? params[:owner_id] : 0
15
+ logger.warn '========= Warning: the owner_id is 0, "delete uploaded files automatically" will not work. =========' if defined?(logger) && @asset.owner_id == 0
16
+ @asset.asset_type = @dir
17
+ if @asset.save
18
+ render :text => ({:error => 0, :url => @asset.asset.url}.to_json)
19
+ else
20
+ show_error(@asset.errors.full_messages)
21
+ end
22
+ rescue Exception => e
23
+ show_error(e.to_s)
24
+ end
25
+ else # do not touch database
26
+ begin
27
+ uploader = "Kindeditor::#{@dir.camelize}Uploader".constantize.new
28
+ uploader.private_path = current_user.private_editor_resource_path if current_user && current_user.respond_to?(:private_editor_resource_path)
29
+ uploader.fixed_folder = @fixed_folder
30
+ uploader.digest_filename = @digest_filename
31
+ uploader.store!(@imgFile)
32
+ render :text => ({:error => 0, :url => uploader.url}.to_json)
33
+ rescue CarrierWave::UploadError => e
34
+ show_error(e.message)
35
+ rescue Exception => e
36
+ show_error(e.to_s)
37
+ end
38
+ end
39
+ else
40
+ show_error("No File Selected!")
41
+ end
42
+ end
43
+
44
+ def list
45
+ @root_path = "#{Rails.public_path}/#{RailsKindeditor.upload_store_dir}/"
46
+ @root_url = "/#{RailsKindeditor.upload_store_dir}/"
47
+ if current_user && current_user.respond_to?(:private_editor_resource_path)
48
+ @root_path = "#{Rails.public_path}/#{RailsKindeditor.upload_store_dir}/#{current_user.private_editor_resource_path}/"
49
+ @root_url = "/#{RailsKindeditor.upload_store_dir}/#{current_user.private_editor_resource_path}/"
50
+ end
51
+ @img_ext = Kindeditor::AssetUploader::EXT_NAMES[:image]
52
+ @dir = params[:dir].strip || ""
53
+ unless Kindeditor::AssetUploader::EXT_NAMES.keys.map(&:to_s).push("").include?(@dir)
54
+ render :text => "Invalid Directory name."
55
+ return
56
+ end
57
+
58
+ Dir.chdir(Rails.public_path)
59
+ @root_url.gsub(/\w+/).each do |dir|
60
+ Dir.mkdir(dir) unless Dir.exist?(dir)
61
+ Dir.chdir(dir)
62
+ end
63
+
64
+ Dir.mkdir(@dir) unless Dir.exist?(@dir)
65
+
66
+ @root_path += @dir + "/"
67
+ @root_url += @dir + "/"
68
+
69
+ @path = params[:path].strip || ""
70
+ if @path.empty?
71
+ @current_path = @root_path
72
+ @current_url = @root_url
73
+ @current_dir_path = ""
74
+ @moveup_dir_path = ""
75
+ else
76
+ @current_path = @root_path + @path + "/"
77
+ @current_url = @root_url + @path + "/"
78
+ @current_dir_path = @path
79
+ @moveup_dir_path = @current_dir_path.gsub(/(.*?)[^\/]+\/$/, "")
80
+ end
81
+ @order = %w(name size type).include?(params[:order].downcase) ? params[:order].downcase : "name"
82
+ if !@current_path.match(/\.\./).nil?
83
+ render :text => "Access is not allowed."
84
+ return
85
+ end
86
+ if @current_path.match(/\/$/).nil?
87
+ render :text => "Parameter is not valid."
88
+ return
89
+ end
90
+ if !File.exist?(@current_path) || !File.directory?(@current_path)
91
+ render :text => "Directory does not exist."
92
+ return
93
+ end
94
+ @file_list = []
95
+ Dir.foreach(@current_path) do |filename|
96
+ hash = {}
97
+ if filename != "." and filename != ".." and filename != ".DS_Store"
98
+ file = @current_path + filename
99
+ if File.directory?(file)
100
+ hash[:is_dir] = true
101
+ hash[:has_file] = (Dir.foreach(file).count > 2)
102
+ hash[:filesize] = 0
103
+ hash[:is_photo] = false
104
+ hash[:filetype] = ""
105
+ else
106
+ hash[:is_dir] = false
107
+ hash[:has_file] = false
108
+ hash[:filesize] = File.size(file)
109
+ hash[:dir_path] = ""
110
+ file_ext = file.gsub(/.*\./,"")
111
+ hash[:is_photo] = @img_ext.include?(file_ext)
112
+ hash[:filetype] = file_ext
113
+ end
114
+ hash[:filename] = filename
115
+ hash[:datetime] = File.mtime(file).to_s(:db)
116
+ @file_list << hash
117
+ end
118
+ end
119
+
120
+ @file_list.sort! {|a, b| a["file#{@order}".to_sym] <=> b["file#{@order}".to_sym]}
121
+
122
+ @result = {}
123
+ @result[:moveup_dir_path] = @moveup_dir_path
124
+ @result[:current_dir_path] = @current_dir_path
125
+ @result[:current_url] = @current_url
126
+ @result[:total_count] = @file_list.count
127
+ @result[:file_list] = @file_list
128
+ render :text => @result.to_json
129
+ end
130
+
131
+ private
132
+ def show_error(msg)
133
+ render :text => ({:error => 1, :message => msg}.to_json)
134
+ end
135
+
136
+ end