drg_default_html_editor 0.4.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (458) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +40 -0
  5. data/app/assets/images/elfinder/arrows-active.png +0 -0
  6. data/app/assets/images/elfinder/arrows-normal.png +0 -0
  7. data/app/assets/images/elfinder/crop.gif +0 -0
  8. data/app/assets/images/elfinder/dialogs.png +0 -0
  9. data/app/assets/images/elfinder/icons-big.png +0 -0
  10. data/app/assets/images/elfinder/icons-small.png +0 -0
  11. data/app/assets/images/elfinder/progress.gif +0 -0
  12. data/app/assets/images/elfinder/quicklook-bg.png +0 -0
  13. data/app/assets/images/elfinder/quicklook-icons.png +0 -0
  14. data/app/assets/images/elfinder/resize.png +0 -0
  15. data/app/assets/images/elfinder/spinner-mini.gif +0 -0
  16. data/app/assets/images/elfinder/toolbar.png +0 -0
  17. data/app/assets/javascripts/drg_default_html_editor/ckeditor/CHANGES.md +612 -0
  18. data/app/assets/javascripts/drg_default_html_editor/ckeditor/LICENSE.md +1264 -0
  19. data/app/assets/javascripts/drg_default_html_editor/ckeditor/README.md +39 -0
  20. data/app/assets/javascripts/drg_default_html_editor/ckeditor/adapters/jquery.js +10 -0
  21. data/app/assets/javascripts/drg_default_html_editor/ckeditor/build-config.js +173 -0
  22. data/app/assets/javascripts/drg_default_html_editor/ckeditor/ckeditor.js +993 -0
  23. data/app/assets/javascripts/drg_default_html_editor/ckeditor/config.js +10 -0
  24. data/app/assets/javascripts/drg_default_html_editor/ckeditor/contents.css +134 -0
  25. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/af.js +5 -0
  26. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/ar.js +5 -0
  27. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/bg.js +5 -0
  28. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/bn.js +5 -0
  29. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/bs.js +5 -0
  30. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/ca.js +5 -0
  31. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/cs.js +5 -0
  32. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/cy.js +5 -0
  33. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/da.js +5 -0
  34. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/de.js +5 -0
  35. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/el.js +5 -0
  36. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/en-au.js +5 -0
  37. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/en-ca.js +5 -0
  38. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/en-gb.js +5 -0
  39. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/en.js +5 -0
  40. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/eo.js +5 -0
  41. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/es.js +5 -0
  42. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/et.js +5 -0
  43. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/eu.js +5 -0
  44. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/fa.js +5 -0
  45. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/fi.js +5 -0
  46. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/fo.js +5 -0
  47. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/fr-ca.js +5 -0
  48. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/fr.js +5 -0
  49. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/gl.js +5 -0
  50. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/gu.js +5 -0
  51. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/he.js +5 -0
  52. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/hi.js +5 -0
  53. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/hr.js +5 -0
  54. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/hu.js +5 -0
  55. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/id.js +5 -0
  56. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/is.js +5 -0
  57. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/it.js +5 -0
  58. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/ja.js +5 -0
  59. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/ka.js +5 -0
  60. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/km.js +5 -0
  61. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/ko.js +5 -0
  62. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/ku.js +5 -0
  63. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/lt.js +5 -0
  64. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/lv.js +5 -0
  65. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/mk.js +5 -0
  66. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/mn.js +5 -0
  67. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/ms.js +5 -0
  68. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/nb.js +5 -0
  69. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/nl.js +5 -0
  70. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/no.js +5 -0
  71. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/pl.js +5 -0
  72. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/pt-br.js +5 -0
  73. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/pt.js +5 -0
  74. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/ro.js +5 -0
  75. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/ru.js +5 -0
  76. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/si.js +5 -0
  77. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/sk.js +5 -0
  78. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/sl.js +5 -0
  79. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/sq.js +5 -0
  80. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/sr-latn.js +5 -0
  81. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/sr.js +5 -0
  82. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/sv.js +5 -0
  83. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/th.js +5 -0
  84. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/tr.js +5 -0
  85. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/tt.js +5 -0
  86. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/ug.js +5 -0
  87. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/uk.js +5 -0
  88. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/vi.js +5 -0
  89. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/zh-cn.js +5 -0
  90. data/app/assets/javascripts/drg_default_html_editor/ckeditor/lang/zh.js +5 -0
  91. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +10 -0
  92. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt +25 -0
  93. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js +11 -0
  94. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js +11 -0
  95. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/ca.js +13 -0
  96. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/cs.js +13 -0
  97. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/cy.js +11 -0
  98. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/da.js +11 -0
  99. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/de.js +12 -0
  100. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/el.js +13 -0
  101. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/en-gb.js +11 -0
  102. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/en.js +11 -0
  103. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/eo.js +13 -0
  104. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/es.js +12 -0
  105. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/et.js +11 -0
  106. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/fa.js +11 -0
  107. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/fi.js +12 -0
  108. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js +12 -0
  109. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/fr.js +13 -0
  110. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/gl.js +12 -0
  111. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js +11 -0
  112. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/he.js +11 -0
  113. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js +11 -0
  114. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/hr.js +11 -0
  115. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/hu.js +13 -0
  116. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/id.js +11 -0
  117. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/it.js +13 -0
  118. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/ja.js +9 -0
  119. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/km.js +11 -0
  120. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/ko.js +10 -0
  121. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/ku.js +12 -0
  122. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js +11 -0
  123. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/lv.js +13 -0
  124. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js +11 -0
  125. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js +11 -0
  126. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/nb.js +12 -0
  127. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js +12 -0
  128. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/no.js +11 -0
  129. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/pl.js +13 -0
  130. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js +12 -0
  131. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/pt.js +12 -0
  132. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/ro.js +12 -0
  133. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/ru.js +11 -0
  134. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/si.js +10 -0
  135. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/sk.js +12 -0
  136. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/sl.js +12 -0
  137. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/sq.js +11 -0
  138. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/sr-latn.js +11 -0
  139. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/sr.js +11 -0
  140. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/sv.js +12 -0
  141. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/th.js +11 -0
  142. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/tr.js +12 -0
  143. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/tt.js +11 -0
  144. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/ug.js +11 -0
  145. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/uk.js +12 -0
  146. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/vi.js +11 -0
  147. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js +9 -0
  148. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/a11yhelp/dialogs/lang/zh.js +10 -0
  149. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/about/dialogs/about.js +7 -0
  150. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png +0 -0
  151. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/about/dialogs/logo_ckeditor.png +0 -0
  152. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/clipboard/dialogs/paste.js +11 -0
  153. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/colordialog/dialogs/colordialog.js +13 -0
  154. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/dialog/dialogDefinition.js +4 -0
  155. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/div/dialogs/div.js +9 -0
  156. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/find/dialogs/find.js +24 -0
  157. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/flash/dialogs/flash.js +24 -0
  158. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/flash/images/placeholder.png +0 -0
  159. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/forms/dialogs/button.js +8 -0
  160. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/forms/dialogs/checkbox.js +8 -0
  161. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/forms/dialogs/form.js +8 -0
  162. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/forms/dialogs/hiddenfield.js +8 -0
  163. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/forms/dialogs/radio.js +8 -0
  164. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/forms/dialogs/select.js +20 -0
  165. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/forms/dialogs/textarea.js +8 -0
  166. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/forms/dialogs/textfield.js +10 -0
  167. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/forms/images/hiddenfield.gif +0 -0
  168. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/icons.png +0 -0
  169. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/icons_hidpi.png +0 -0
  170. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/iframe/dialogs/iframe.js +10 -0
  171. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/iframe/images/placeholder.png +0 -0
  172. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/image/dialogs/image.js +43 -0
  173. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/image/images/noimage.png +0 -0
  174. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/link/dialogs/anchor.js +7 -0
  175. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/link/dialogs/link.js +26 -0
  176. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/link/images/anchor.png +0 -0
  177. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/link/images/hidpi/anchor.png +0 -0
  178. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/liststyle/dialogs/liststyle.js +10 -0
  179. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/magicline/images/hidpi/icon.png +0 -0
  180. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/magicline/images/icon.png +0 -0
  181. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/pagebreak/images/pagebreak.gif +0 -0
  182. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/pastefromword/filter/default.js +31 -0
  183. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/preview/preview.html +13 -0
  184. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/scayt/LICENSE.md +28 -0
  185. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/scayt/README.md +25 -0
  186. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/scayt/dialogs/options.js +17 -0
  187. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/scayt/dialogs/toolbar.css +71 -0
  188. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/showblocks/images/block_address.png +0 -0
  189. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/showblocks/images/block_blockquote.png +0 -0
  190. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/showblocks/images/block_div.png +0 -0
  191. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/showblocks/images/block_h1.png +0 -0
  192. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/showblocks/images/block_h2.png +0 -0
  193. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/showblocks/images/block_h3.png +0 -0
  194. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/showblocks/images/block_h4.png +0 -0
  195. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/showblocks/images/block_h5.png +0 -0
  196. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/showblocks/images/block_h6.png +0 -0
  197. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/showblocks/images/block_p.png +0 -0
  198. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/showblocks/images/block_pre.png +0 -0
  199. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/dialogs/smiley.js +10 -0
  200. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/angel_smile.gif +0 -0
  201. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/angel_smile.png +0 -0
  202. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/angry_smile.gif +0 -0
  203. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/angry_smile.png +0 -0
  204. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/broken_heart.gif +0 -0
  205. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/broken_heart.png +0 -0
  206. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/confused_smile.gif +0 -0
  207. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/confused_smile.png +0 -0
  208. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/cry_smile.gif +0 -0
  209. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/cry_smile.png +0 -0
  210. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/devil_smile.gif +0 -0
  211. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/devil_smile.png +0 -0
  212. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/embaressed_smile.gif +0 -0
  213. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/embarrassed_smile.gif +0 -0
  214. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/embarrassed_smile.png +0 -0
  215. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/envelope.gif +0 -0
  216. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/envelope.png +0 -0
  217. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/heart.gif +0 -0
  218. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/heart.png +0 -0
  219. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/kiss.gif +0 -0
  220. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/kiss.png +0 -0
  221. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/lightbulb.gif +0 -0
  222. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/lightbulb.png +0 -0
  223. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/omg_smile.gif +0 -0
  224. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/omg_smile.png +0 -0
  225. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/regular_smile.gif +0 -0
  226. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/regular_smile.png +0 -0
  227. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/sad_smile.gif +0 -0
  228. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/sad_smile.png +0 -0
  229. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/shades_smile.gif +0 -0
  230. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/shades_smile.png +0 -0
  231. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/teeth_smile.gif +0 -0
  232. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/teeth_smile.png +0 -0
  233. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/thumbs_down.gif +0 -0
  234. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/thumbs_down.png +0 -0
  235. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/thumbs_up.gif +0 -0
  236. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/thumbs_up.png +0 -0
  237. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/tongue_smile.gif +0 -0
  238. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/tongue_smile.png +0 -0
  239. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/tounge_smile.gif +0 -0
  240. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif +0 -0
  241. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.png +0 -0
  242. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/wink_smile.gif +0 -0
  243. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/smiley/images/wink_smile.png +0 -0
  244. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/_translationstatus.txt +20 -0
  245. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/ar.js +13 -0
  246. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/bg.js +13 -0
  247. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/ca.js +14 -0
  248. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/cs.js +13 -0
  249. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/cy.js +14 -0
  250. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/de.js +13 -0
  251. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/el.js +13 -0
  252. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/en-gb.js +13 -0
  253. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/en.js +13 -0
  254. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/eo.js +12 -0
  255. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/es.js +13 -0
  256. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/et.js +13 -0
  257. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/fa.js +12 -0
  258. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/fi.js +13 -0
  259. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/fr-ca.js +10 -0
  260. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/fr.js +11 -0
  261. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/gl.js +13 -0
  262. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/he.js +12 -0
  263. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/hr.js +13 -0
  264. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/hu.js +12 -0
  265. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/id.js +13 -0
  266. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/it.js +14 -0
  267. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/ja.js +9 -0
  268. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/km.js +13 -0
  269. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/ku.js +13 -0
  270. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/lv.js +13 -0
  271. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/nb.js +11 -0
  272. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/nl.js +13 -0
  273. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/no.js +11 -0
  274. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/pl.js +12 -0
  275. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/pt-br.js +11 -0
  276. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/pt.js +13 -0
  277. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/ru.js +13 -0
  278. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/si.js +13 -0
  279. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/sk.js +13 -0
  280. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/sl.js +12 -0
  281. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/sq.js +13 -0
  282. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/sv.js +11 -0
  283. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/th.js +13 -0
  284. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/tr.js +12 -0
  285. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/tt.js +13 -0
  286. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/ug.js +13 -0
  287. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/uk.js +12 -0
  288. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/vi.js +14 -0
  289. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js +9 -0
  290. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/lang/zh.js +12 -0
  291. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/specialchar/dialogs/specialchar.js +14 -0
  292. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/table/dialogs/table.js +21 -0
  293. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/tabletools/dialogs/tableCell.js +17 -0
  294. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/templates/dialogs/templates.css +84 -0
  295. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/templates/dialogs/templates.js +10 -0
  296. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/templates/templates/default.js +6 -0
  297. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/templates/templates/images/template1.gif +0 -0
  298. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/templates/templates/images/template2.gif +0 -0
  299. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/templates/templates/images/template3.gif +0 -0
  300. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/wsc/LICENSE.md +28 -0
  301. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/wsc/README.md +25 -0
  302. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/wsc/dialogs/ciframe.html +66 -0
  303. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +52 -0
  304. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/wsc/dialogs/wsc.css +82 -0
  305. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/wsc/dialogs/wsc.js +74 -0
  306. data/app/assets/javascripts/drg_default_html_editor/ckeditor/plugins/wsc/dialogs/wsc_ie.js +11 -0
  307. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/ajax.html +82 -0
  308. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/api.html +207 -0
  309. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/appendto.html +56 -0
  310. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/assets/inlineall/logo.png +0 -0
  311. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/assets/outputxhtml/outputxhtml.css +204 -0
  312. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/assets/posteddata.php +59 -0
  313. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/assets/sample.jpg +0 -0
  314. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/assets/uilanguages/languages.js +7 -0
  315. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/datafiltering.html +401 -0
  316. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/divreplace.html +141 -0
  317. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/index.html +128 -0
  318. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/inlineall.html +311 -0
  319. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/inlinebycode.html +121 -0
  320. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/inlinetextarea.html +110 -0
  321. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/jquery.html +100 -0
  322. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/plugins/dialog/assets/my_dialog.js +48 -0
  323. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/plugins/dialog/dialog.html +187 -0
  324. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/plugins/enterkey/enterkey.html +103 -0
  325. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/outputforflash.fla +0 -0
  326. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/outputforflash.swf +0 -0
  327. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/swfobject.js +18 -0
  328. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/plugins/htmlwriter/outputforflash.html +280 -0
  329. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/plugins/htmlwriter/outputhtml.html +221 -0
  330. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/plugins/magicline/magicline.html +206 -0
  331. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/plugins/toolbar/toolbar.html +232 -0
  332. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/plugins/wysiwygarea/fullpage.html +77 -0
  333. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/readonly.html +73 -0
  334. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/replacebyclass.html +57 -0
  335. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/replacebycode.html +56 -0
  336. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/sample.css +365 -0
  337. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/sample.js +50 -0
  338. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/sample_posteddata.php +16 -0
  339. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/tabindex.html +75 -0
  340. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/uicolor.html +69 -0
  341. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/uilanguages.html +119 -0
  342. data/app/assets/javascripts/drg_default_html_editor/ckeditor/samples/xhtmlstyle.html +231 -0
  343. data/app/assets/javascripts/drg_default_html_editor/ckeditor/skins/moono/dialog.css +5 -0
  344. data/app/assets/javascripts/drg_default_html_editor/ckeditor/skins/moono/dialog_ie.css +5 -0
  345. data/app/assets/javascripts/drg_default_html_editor/ckeditor/skins/moono/dialog_ie7.css +5 -0
  346. data/app/assets/javascripts/drg_default_html_editor/ckeditor/skins/moono/dialog_ie8.css +5 -0
  347. data/app/assets/javascripts/drg_default_html_editor/ckeditor/skins/moono/dialog_iequirks.css +5 -0
  348. data/app/assets/javascripts/drg_default_html_editor/ckeditor/skins/moono/editor.css +5 -0
  349. data/app/assets/javascripts/drg_default_html_editor/ckeditor/skins/moono/editor_gecko.css +5 -0
  350. data/app/assets/javascripts/drg_default_html_editor/ckeditor/skins/moono/editor_ie.css +5 -0
  351. data/app/assets/javascripts/drg_default_html_editor/ckeditor/skins/moono/editor_ie7.css +5 -0
  352. data/app/assets/javascripts/drg_default_html_editor/ckeditor/skins/moono/editor_ie8.css +5 -0
  353. data/app/assets/javascripts/drg_default_html_editor/ckeditor/skins/moono/editor_iequirks.css +5 -0
  354. data/app/assets/javascripts/drg_default_html_editor/ckeditor/skins/moono/icons.png +0 -0
  355. data/app/assets/javascripts/drg_default_html_editor/ckeditor/skins/moono/icons_hidpi.png +0 -0
  356. data/app/assets/javascripts/drg_default_html_editor/ckeditor/skins/moono/images/arrow.png +0 -0
  357. data/app/assets/javascripts/drg_default_html_editor/ckeditor/skins/moono/images/close.png +0 -0
  358. data/app/assets/javascripts/drg_default_html_editor/ckeditor/skins/moono/images/hidpi/close.png +0 -0
  359. data/app/assets/javascripts/drg_default_html_editor/ckeditor/skins/moono/images/hidpi/lock-open.png +0 -0
  360. data/app/assets/javascripts/drg_default_html_editor/ckeditor/skins/moono/images/hidpi/lock.png +0 -0
  361. data/app/assets/javascripts/drg_default_html_editor/ckeditor/skins/moono/images/hidpi/refresh.png +0 -0
  362. data/app/assets/javascripts/drg_default_html_editor/ckeditor/skins/moono/images/lock-open.png +0 -0
  363. data/app/assets/javascripts/drg_default_html_editor/ckeditor/skins/moono/images/lock.png +0 -0
  364. data/app/assets/javascripts/drg_default_html_editor/ckeditor/skins/moono/images/refresh.png +0 -0
  365. data/app/assets/javascripts/drg_default_html_editor/ckeditor/skins/moono/readme.md +51 -0
  366. data/app/assets/javascripts/drg_default_html_editor/ckeditor/styles.js +111 -0
  367. data/app/assets/javascripts/drg_default_html_editor/elfinder/Changelog.txt +63 -0
  368. data/app/assets/javascripts/drg_default_html_editor/elfinder/README.md +118 -0
  369. data/app/assets/javascripts/drg_default_html_editor/elfinder/css/elfinder.min.css +9 -0
  370. data/app/assets/javascripts/drg_default_html_editor/elfinder/css/theme.css +49 -0
  371. data/app/assets/javascripts/drg_default_html_editor/elfinder/elfinder.html +56 -0
  372. data/app/assets/javascripts/drg_default_html_editor/elfinder/img/arrows-active.png +0 -0
  373. data/app/assets/javascripts/drg_default_html_editor/elfinder/img/arrows-normal.png +0 -0
  374. data/app/assets/javascripts/drg_default_html_editor/elfinder/img/crop.gif +0 -0
  375. data/app/assets/javascripts/drg_default_html_editor/elfinder/img/dialogs.png +0 -0
  376. data/app/assets/javascripts/drg_default_html_editor/elfinder/img/icons-big.png +0 -0
  377. data/app/assets/javascripts/drg_default_html_editor/elfinder/img/icons-small.png +0 -0
  378. data/app/assets/javascripts/drg_default_html_editor/elfinder/img/progress.gif +0 -0
  379. data/app/assets/javascripts/drg_default_html_editor/elfinder/img/quicklook-bg.png +0 -0
  380. data/app/assets/javascripts/drg_default_html_editor/elfinder/img/quicklook-icons.png +0 -0
  381. data/app/assets/javascripts/drg_default_html_editor/elfinder/img/resize.png +0 -0
  382. data/app/assets/javascripts/drg_default_html_editor/elfinder/img/spinner-mini.gif +0 -0
  383. data/app/assets/javascripts/drg_default_html_editor/elfinder/img/toolbar.png +0 -0
  384. data/app/assets/javascripts/drg_default_html_editor/elfinder/js/elfinder.min.js +25 -0
  385. data/app/assets/javascripts/drg_default_html_editor/elfinder/js/elfinder.min_1.js +25 -0
  386. data/app/assets/javascripts/drg_default_html_editor/elfinder/js/i18n/elfinder.LANG.js +348 -0
  387. data/app/assets/javascripts/drg_default_html_editor/elfinder/js/i18n/elfinder.ar.js +290 -0
  388. data/app/assets/javascripts/drg_default_html_editor/elfinder/js/i18n/elfinder.bg.js +310 -0
  389. data/app/assets/javascripts/drg_default_html_editor/elfinder/js/i18n/elfinder.ca.js +310 -0
  390. data/app/assets/javascripts/drg_default_html_editor/elfinder/js/i18n/elfinder.cs.js +285 -0
  391. data/app/assets/javascripts/drg_default_html_editor/elfinder/js/i18n/elfinder.de.js +280 -0
  392. data/app/assets/javascripts/drg_default_html_editor/elfinder/js/i18n/elfinder.es.js +291 -0
  393. data/app/assets/javascripts/drg_default_html_editor/elfinder/js/i18n/elfinder.fr.js +298 -0
  394. data/app/assets/javascripts/drg_default_html_editor/elfinder/js/i18n/elfinder.hu.js +280 -0
  395. data/app/assets/javascripts/drg_default_html_editor/elfinder/js/i18n/elfinder.jp.js +316 -0
  396. data/app/assets/javascripts/drg_default_html_editor/elfinder/js/i18n/elfinder.nl.js +342 -0
  397. data/app/assets/javascripts/drg_default_html_editor/elfinder/js/i18n/elfinder.no.js +280 -0
  398. data/app/assets/javascripts/drg_default_html_editor/elfinder/js/i18n/elfinder.pl.js +309 -0
  399. data/app/assets/javascripts/drg_default_html_editor/elfinder/js/i18n/elfinder.pt_BR.js +280 -0
  400. data/app/assets/javascripts/drg_default_html_editor/elfinder/js/i18n/elfinder.ru.js +344 -0
  401. data/app/assets/javascripts/drg_default_html_editor/elfinder/js/i18n/elfinder.sl.js +348 -0
  402. data/app/assets/javascripts/drg_default_html_editor/elfinder/js/i18n/elfinder.zh_CN.js +280 -0
  403. data/app/assets/javascripts/drg_default_html_editor/elfinder/js/proxy/elFinderSupportVer1.js +338 -0
  404. data/app/assets/javascripts/drg_default_html_editor/elfinder/php/MySQLStorage.sql +23 -0
  405. data/app/assets/javascripts/drg_default_html_editor/elfinder/php/connector.php +44 -0
  406. data/app/assets/javascripts/drg_default_html_editor/elfinder/php/elFinder.class.php +1103 -0
  407. data/app/assets/javascripts/drg_default_html_editor/elfinder/php/elFinderConnector.class.php +133 -0
  408. data/app/assets/javascripts/drg_default_html_editor/elfinder/php/elFinderVolumeDriver.class.php +3370 -0
  409. data/app/assets/javascripts/drg_default_html_editor/elfinder/php/elFinderVolumeLocalFileSystem.class.php +835 -0
  410. data/app/assets/javascripts/drg_default_html_editor/elfinder/php/elFinderVolumeMySQL.class.php +896 -0
  411. data/app/assets/javascripts/drg_default_html_editor/elfinder/php/mime.types +512 -0
  412. data/app/assets/javascripts/drg_default_html_editor_application.js +7 -0
  413. data/app/assets/javascripts/drg_default_html_editor_cms.js +14 -0
  414. data/app/assets/stylesheets/drg_default_html_editor/elfinder.min.css +9 -0
  415. data/app/assets/stylesheets/drg_default_html_editor_application.css +11 -0
  416. data/app/assets/stylesheets/drg_default_html_editor_cms.css +21 -0
  417. data/app/controllers/dc_elfinder_controller.rb +58 -0
  418. data/config/initializers/patch_drgcms_form_field.rb +96 -0
  419. data/config/initializers/patch_for_elfinder.rb +114 -0
  420. data/config/routes.rb +2 -0
  421. data/lib/drg_default_html_editor/engine.rb +14 -0
  422. data/lib/drg_default_html_editor/version.rb +3 -0
  423. data/lib/drg_default_html_editor.rb +6 -0
  424. data/lib/drg_default_html_editor.rb~ +6 -0
  425. data/lib/tasks/drg_default_html_editor_copy_assets.rake +10 -0
  426. data/lib/tasks/drg_default_html_editor_tasks.rake +4 -0
  427. data/test/drg_default_html_editor_test.rb +7 -0
  428. data/test/dummy/README.rdoc +261 -0
  429. data/test/dummy/Rakefile +7 -0
  430. data/test/dummy/app/assets/javascripts/application.js +15 -0
  431. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  432. data/test/dummy/app/controllers/application_controller.rb +3 -0
  433. data/test/dummy/app/helpers/application_helper.rb +2 -0
  434. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  435. data/test/dummy/config/application.rb +59 -0
  436. data/test/dummy/config/boot.rb +10 -0
  437. data/test/dummy/config/database.yml +25 -0
  438. data/test/dummy/config/environment.rb +5 -0
  439. data/test/dummy/config/environments/development.rb +37 -0
  440. data/test/dummy/config/environments/production.rb +67 -0
  441. data/test/dummy/config/environments/test.rb +37 -0
  442. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  443. data/test/dummy/config/initializers/inflections.rb +15 -0
  444. data/test/dummy/config/initializers/mime_types.rb +5 -0
  445. data/test/dummy/config/initializers/secret_token.rb +7 -0
  446. data/test/dummy/config/initializers/session_store.rb +8 -0
  447. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  448. data/test/dummy/config/locales/en.yml +5 -0
  449. data/test/dummy/config/routes.rb +58 -0
  450. data/test/dummy/config.ru +4 -0
  451. data/test/dummy/public/404.html +26 -0
  452. data/test/dummy/public/422.html +26 -0
  453. data/test/dummy/public/500.html +25 -0
  454. data/test/dummy/public/favicon.ico +0 -0
  455. data/test/dummy/script/rails +6 -0
  456. data/test/integration/navigation_test.rb +10 -0
  457. data/test/test_helper.rb +15 -0
  458. metadata +574 -0
@@ -0,0 +1,835 @@
1
+ <?php
2
+
3
+ /**
4
+ * elFinder driver for local filesystem.
5
+ *
6
+ * @author Dmitry (dio) Levashov
7
+ * @author Troex Nevelin
8
+ **/
9
+ class elFinderVolumeLocalFileSystem extends elFinderVolumeDriver {
10
+
11
+ /**
12
+ * Driver id
13
+ * Must be started from letter and contains [a-z0-9]
14
+ * Used as part of volume id
15
+ *
16
+ * @var string
17
+ **/
18
+ protected $driverId = 'l';
19
+
20
+ /**
21
+ * Required to count total archive files size
22
+ *
23
+ * @var int
24
+ **/
25
+ protected $archiveSize = 0;
26
+
27
+ /**
28
+ * Constructor
29
+ * Extend options with required fields
30
+ *
31
+ * @return void
32
+ * @author Dmitry (dio) Levashov
33
+ **/
34
+ public function __construct() {
35
+ $this->options['alias'] = ''; // alias to replace root dir name
36
+ $this->options['dirMode'] = 0755; // new dirs mode
37
+ $this->options['fileMode'] = 0644; // new files mode
38
+ $this->options['quarantine'] = '.quarantine'; // quarantine folder name - required to check archive (must be hidden)
39
+ $this->options['maxArcFilesSize'] = 0; // max allowed archive files size (0 - no limit)
40
+ }
41
+
42
+ /*********************************************************************/
43
+ /* INIT AND CONFIGURE */
44
+ /*********************************************************************/
45
+
46
+ /**
47
+ * Configure after successfull mount.
48
+ *
49
+ * @return void
50
+ * @author Dmitry (dio) Levashov
51
+ **/
52
+ protected function configure() {
53
+ $this->aroot = realpath($this->root);
54
+ $root = $this->stat($this->root);
55
+
56
+ if ($this->options['quarantine']) {
57
+ $this->attributes[] = array(
58
+ 'pattern' => '~^'.preg_quote(DIRECTORY_SEPARATOR.$this->options['quarantine']).'$~',
59
+ 'read' => false,
60
+ 'write' => false,
61
+ 'locked' => true,
62
+ 'hidden' => true
63
+ );
64
+ }
65
+
66
+ // chek thumbnails path
67
+ if ($this->options['tmbPath']) {
68
+ $this->options['tmbPath'] = strpos($this->options['tmbPath'], DIRECTORY_SEPARATOR) === false
69
+ // tmb path set as dirname under root dir
70
+ ? $this->root.DIRECTORY_SEPARATOR.$this->options['tmbPath']
71
+ // tmb path as full path
72
+ : $this->_normpath($this->options['tmbPath']);
73
+ }
74
+
75
+ parent::configure();
76
+
77
+ // if no thumbnails url - try detect it
78
+ if ($root['read'] && !$this->tmbURL && $this->URL) {
79
+ if (strpos($this->tmbPath, $this->root) === 0) {
80
+ $this->tmbURL = $this->URL.str_replace(DIRECTORY_SEPARATOR, '/', substr($this->tmbPath, strlen($this->root)+1));
81
+ if (preg_match("|[^/?&=]$|", $this->tmbURL)) {
82
+ $this->tmbURL .= '/';
83
+ }
84
+ }
85
+ }
86
+
87
+ // check quarantine dir
88
+ if (!empty($this->options['quarantine'])) {
89
+ $this->quarantine = $this->root.DIRECTORY_SEPARATOR.$this->options['quarantine'];
90
+ if ((!is_dir($this->quarantine) && !$this->_mkdir($this->root, $this->options['quarantine'])) || !is_writable($this->quarantine)) {
91
+ $this->archivers['extract'] = array();
92
+ $this->disabled[] = 'extract';
93
+ }
94
+ } else {
95
+ $this->archivers['extract'] = array();
96
+ $this->disabled[] = 'extract';
97
+ }
98
+
99
+ }
100
+
101
+ /*********************************************************************/
102
+ /* FS API */
103
+ /*********************************************************************/
104
+
105
+ /*********************** paths/urls *************************/
106
+
107
+ /**
108
+ * Return parent directory path
109
+ *
110
+ * @param string $path file path
111
+ * @return string
112
+ * @author Dmitry (dio) Levashov
113
+ **/
114
+ protected function _dirname($path) {
115
+ return dirname($path);
116
+ }
117
+
118
+ /**
119
+ * Return file name
120
+ *
121
+ * @param string $path file path
122
+ * @return string
123
+ * @author Dmitry (dio) Levashov
124
+ **/
125
+ protected function _basename($path) {
126
+ return basename($path);
127
+ }
128
+
129
+ /**
130
+ * Join dir name and file name and retur full path
131
+ *
132
+ * @param string $dir
133
+ * @param string $name
134
+ * @return string
135
+ * @author Dmitry (dio) Levashov
136
+ **/
137
+ protected function _joinPath($dir, $name) {
138
+ return $dir.DIRECTORY_SEPARATOR.$name;
139
+ }
140
+
141
+ /**
142
+ * Return normalized path, this works the same as os.path.normpath() in Python
143
+ *
144
+ * @param string $path path
145
+ * @return string
146
+ * @author Troex Nevelin
147
+ **/
148
+ protected function _normpath($path) {
149
+ if (empty($path)) {
150
+ return '.';
151
+ }
152
+
153
+ if (strpos($path, '/') === 0) {
154
+ $initial_slashes = true;
155
+ } else {
156
+ $initial_slashes = false;
157
+ }
158
+
159
+ if (($initial_slashes)
160
+ && (strpos($path, '//') === 0)
161
+ && (strpos($path, '///') === false)) {
162
+ $initial_slashes = 2;
163
+ }
164
+
165
+ $initial_slashes = (int) $initial_slashes;
166
+
167
+ $comps = explode('/', $path);
168
+ $new_comps = array();
169
+ foreach ($comps as $comp) {
170
+ if (in_array($comp, array('', '.'))) {
171
+ continue;
172
+ }
173
+
174
+ if (($comp != '..')
175
+ || (!$initial_slashes && !$new_comps)
176
+ || ($new_comps && (end($new_comps) == '..'))) {
177
+ array_push($new_comps, $comp);
178
+ } elseif ($new_comps) {
179
+ array_pop($new_comps);
180
+ }
181
+ }
182
+ $comps = $new_comps;
183
+ $path = implode('/', $comps);
184
+ if ($initial_slashes) {
185
+ $path = str_repeat('/', $initial_slashes) . $path;
186
+ }
187
+
188
+ return $path ? $path : '.';
189
+ }
190
+
191
+ /**
192
+ * Return file path related to root dir
193
+ *
194
+ * @param string $path file path
195
+ * @return string
196
+ * @author Dmitry (dio) Levashov
197
+ **/
198
+ protected function _relpath($path) {
199
+ return $path == $this->root ? '' : substr($path, strlen($this->root)+1);
200
+ }
201
+
202
+ /**
203
+ * Convert path related to root dir into real path
204
+ *
205
+ * @param string $path file path
206
+ * @return string
207
+ * @author Dmitry (dio) Levashov
208
+ **/
209
+ protected function _abspath($path) {
210
+ return $path == DIRECTORY_SEPARATOR ? $this->root : $this->root.DIRECTORY_SEPARATOR.$path;
211
+ }
212
+
213
+ /**
214
+ * Return fake path started from root dir
215
+ *
216
+ * @param string $path file path
217
+ * @return string
218
+ * @author Dmitry (dio) Levashov
219
+ **/
220
+ protected function _path($path) {
221
+ return $this->rootName.($path == $this->root ? '' : $this->separator.$this->_relpath($path));
222
+ }
223
+
224
+ /**
225
+ * Return true if $path is children of $parent
226
+ *
227
+ * @param string $path path to check
228
+ * @param string $parent parent path
229
+ * @return bool
230
+ * @author Dmitry (dio) Levashov
231
+ **/
232
+ protected function _inpath($path, $parent) {
233
+ return $path == $parent || strpos($path, $parent.DIRECTORY_SEPARATOR) === 0;
234
+ }
235
+
236
+
237
+
238
+ /***************** file stat ********************/
239
+
240
+ /**
241
+ * Return stat for given path.
242
+ * Stat contains following fields:
243
+ * - (int) size file size in b. required
244
+ * - (int) ts file modification time in unix time. required
245
+ * - (string) mime mimetype. required for folders, others - optionally
246
+ * - (bool) read read permissions. required
247
+ * - (bool) write write permissions. required
248
+ * - (bool) locked is object locked. optionally
249
+ * - (bool) hidden is object hidden. optionally
250
+ * - (string) alias for symlinks - link target path relative to root path. optionally
251
+ * - (string) target for symlinks - link target path. optionally
252
+ *
253
+ * If file does not exists - returns empty array or false.
254
+ *
255
+ * @param string $path file path
256
+ * @return array|false
257
+ * @author Dmitry (dio) Levashov
258
+ **/
259
+ protected function _stat($path) {
260
+ $stat = array();
261
+
262
+ if (!file_exists($path)) {
263
+ return $stat;
264
+ }
265
+
266
+ if ($path != $this->root && is_link($path)) {
267
+ if (($target = $this->readlink($path)) == false
268
+ || $target == $path) {
269
+ $stat['mime'] = 'symlink-broken';
270
+ $stat['read'] = false;
271
+ $stat['write'] = false;
272
+ $stat['size'] = 0;
273
+ return $stat;
274
+ }
275
+ $stat['alias'] = $this->_path($target);
276
+ $stat['target'] = $target;
277
+ $path = $target;
278
+ $lstat = lstat($path);
279
+ $size = $lstat['size'];
280
+ } else {
281
+ $size = @filesize($path);
282
+ }
283
+
284
+ $dir = is_dir($path);
285
+
286
+ $stat['mime'] = $dir ? 'directory' : $this->mimetype($path);
287
+ $stat['ts'] = filemtime($path);
288
+ $stat['read'] = is_readable($path);
289
+ $stat['write'] = is_writable($path);
290
+ if ($stat['read']) {
291
+ $stat['size'] = $dir ? 0 : $size;
292
+ }
293
+
294
+ return $stat;
295
+ }
296
+
297
+
298
+ /**
299
+ * Return true if path is dir and has at least one childs directory
300
+ *
301
+ * @param string $path dir path
302
+ * @return bool
303
+ * @author Dmitry (dio) Levashov
304
+ **/
305
+ protected function _subdirs($path) {
306
+
307
+ if (($dir = dir($path))) {
308
+ $dir = dir($path);
309
+ while (($entry = $dir->read()) !== false) {
310
+ $p = $dir->path.DIRECTORY_SEPARATOR.$entry;
311
+ if ($entry != '.' && $entry != '..' && is_dir($p) && !$this->attr($p, 'hidden')) {
312
+ $dir->close();
313
+ return true;
314
+ }
315
+ }
316
+ $dir->close();
317
+ }
318
+ return false;
319
+ }
320
+
321
+ /**
322
+ * Return object width and height
323
+ * Ususaly used for images, but can be realize for video etc...
324
+ *
325
+ * @param string $path file path
326
+ * @param string $mime file mime type
327
+ * @return string
328
+ * @author Dmitry (dio) Levashov
329
+ **/
330
+ protected function _dimensions($path, $mime) {
331
+ clearstatcache();
332
+ return strpos($mime, 'image') === 0 && ($s = @getimagesize($path)) !== false
333
+ ? $s[0].'x'.$s[1]
334
+ : false;
335
+ }
336
+ /******************** file/dir content *********************/
337
+
338
+ /**
339
+ * Return symlink target file
340
+ *
341
+ * @param string $path link path
342
+ * @return string
343
+ * @author Dmitry (dio) Levashov
344
+ **/
345
+ protected function readlink($path) {
346
+ if (!($target = @readlink($path))) {
347
+ return false;
348
+ }
349
+
350
+ if (substr($target, 0, 1) != DIRECTORY_SEPARATOR) {
351
+ $target = dirname($path).DIRECTORY_SEPARATOR.$target;
352
+ }
353
+
354
+ $atarget = realpath($target);
355
+
356
+ if (!$atarget) {
357
+ return false;
358
+ }
359
+
360
+ $root = $this->root;
361
+ $aroot = $this->aroot;
362
+
363
+ if ($this->_inpath($atarget, $this->aroot)) {
364
+ return $this->_normpath($this->root.DIRECTORY_SEPARATOR.substr($atarget, strlen($this->aroot)+1));
365
+ }
366
+
367
+ return false;
368
+ }
369
+
370
+ /**
371
+ * Return files list in directory.
372
+ *
373
+ * @param string $path dir path
374
+ * @return array
375
+ * @author Dmitry (dio) Levashov
376
+ **/
377
+ protected function _scandir($path) {
378
+ $files = array();
379
+
380
+ foreach (scandir($path) as $name) {
381
+ if ($name != '.' && $name != '..') {
382
+ $files[] = $path.DIRECTORY_SEPARATOR.$name;
383
+ }
384
+ }
385
+ return $files;
386
+ }
387
+
388
+ /**
389
+ * Open file and return file pointer
390
+ *
391
+ * @param string $path file path
392
+ * @param bool $write open file for writing
393
+ * @return resource|false
394
+ * @author Dmitry (dio) Levashov
395
+ **/
396
+ protected function _fopen($path, $mode='rb') {
397
+ return @fopen($path, 'r');
398
+ }
399
+
400
+ /**
401
+ * Close opened file
402
+ *
403
+ * @param resource $fp file pointer
404
+ * @return bool
405
+ * @author Dmitry (dio) Levashov
406
+ **/
407
+ protected function _fclose($fp, $path='') {
408
+ return @fclose($fp);
409
+ }
410
+
411
+ /******************** file/dir manipulations *************************/
412
+
413
+ /**
414
+ * Create dir and return created dir path or false on failed
415
+ *
416
+ * @param string $path parent dir path
417
+ * @param string $name new directory name
418
+ * @return string|bool
419
+ * @author Dmitry (dio) Levashov
420
+ **/
421
+ protected function _mkdir($path, $name) {
422
+ $path = $path.DIRECTORY_SEPARATOR.$name;
423
+
424
+ if (@mkdir($path)) {
425
+ @chmod($path, $this->options['dirMode']);
426
+ return $path;
427
+ }
428
+
429
+ return false;
430
+ }
431
+
432
+ /**
433
+ * Create file and return it's path or false on failed
434
+ *
435
+ * @param string $path parent dir path
436
+ * @param string $name new file name
437
+ * @return string|bool
438
+ * @author Dmitry (dio) Levashov
439
+ **/
440
+ protected function _mkfile($path, $name) {
441
+ $path = $path.DIRECTORY_SEPARATOR.$name;
442
+
443
+ if (($fp = @fopen($path, 'w'))) {
444
+ @fclose($fp);
445
+ @chmod($path, $this->options['fileMode']);
446
+ return $path;
447
+ }
448
+ return false;
449
+ }
450
+
451
+ /**
452
+ * Create symlink
453
+ *
454
+ * @param string $source file to link to
455
+ * @param string $targetDir folder to create link in
456
+ * @param string $name symlink name
457
+ * @return bool
458
+ * @author Dmitry (dio) Levashov
459
+ **/
460
+ protected function _symlink($source, $targetDir, $name) {
461
+ return @symlink($source, $targetDir.DIRECTORY_SEPARATOR.$name);
462
+ }
463
+
464
+ /**
465
+ * Copy file into another file
466
+ *
467
+ * @param string $source source file path
468
+ * @param string $targetDir target directory path
469
+ * @param string $name new file name
470
+ * @return bool
471
+ * @author Dmitry (dio) Levashov
472
+ **/
473
+ protected function _copy($source, $targetDir, $name) {
474
+ return copy($source, $targetDir.DIRECTORY_SEPARATOR.$name);
475
+ }
476
+
477
+ /**
478
+ * Move file into another parent dir.
479
+ * Return new file path or false.
480
+ *
481
+ * @param string $source source file path
482
+ * @param string $target target dir path
483
+ * @param string $name file name
484
+ * @return string|bool
485
+ * @author Dmitry (dio) Levashov
486
+ **/
487
+ protected function _move($source, $targetDir, $name) {
488
+ $target = $targetDir.DIRECTORY_SEPARATOR.$name;
489
+ return @rename($source, $target) ? $target : false;
490
+ }
491
+
492
+ /**
493
+ * Remove file
494
+ *
495
+ * @param string $path file path
496
+ * @return bool
497
+ * @author Dmitry (dio) Levashov
498
+ **/
499
+ protected function _unlink($path) {
500
+ return @unlink($path);
501
+ }
502
+
503
+ /**
504
+ * Remove dir
505
+ *
506
+ * @param string $path dir path
507
+ * @return bool
508
+ * @author Dmitry (dio) Levashov
509
+ **/
510
+ protected function _rmdir($path) {
511
+ return @rmdir($path);
512
+ }
513
+
514
+ /**
515
+ * Create new file and write into it from file pointer.
516
+ * Return new file path or false on error.
517
+ *
518
+ * @param resource $fp file pointer
519
+ * @param string $dir target dir path
520
+ * @param string $name file name
521
+ * @return bool|string
522
+ * @author Dmitry (dio) Levashov
523
+ **/
524
+ protected function _save($fp, $dir, $name, $mime, $w, $h) {
525
+ $path = $dir.DIRECTORY_SEPARATOR.$name;
526
+
527
+ if (!($target = @fopen($path, 'wb'))) {
528
+ return false;
529
+ }
530
+
531
+ while (!feof($fp)) {
532
+ fwrite($target, fread($fp, 8192));
533
+ }
534
+ fclose($target);
535
+ @chmod($path, $this->options['fileMode']);
536
+ clearstatcache();
537
+ return $path;
538
+ }
539
+
540
+ /**
541
+ * Get file contents
542
+ *
543
+ * @param string $path file path
544
+ * @return string|false
545
+ * @author Dmitry (dio) Levashov
546
+ **/
547
+ protected function _getContents($path) {
548
+ return file_get_contents($path);
549
+ }
550
+
551
+ /**
552
+ * Write a string to a file
553
+ *
554
+ * @param string $path file path
555
+ * @param string $content new file content
556
+ * @return bool
557
+ * @author Dmitry (dio) Levashov
558
+ **/
559
+ protected function _filePutContents($path, $content) {
560
+ if (@file_put_contents($path, $content, LOCK_EX) !== false) {
561
+ clearstatcache();
562
+ return true;
563
+ }
564
+ return false;
565
+ }
566
+
567
+ /**
568
+ * Detect available archivers
569
+ *
570
+ * @return void
571
+ **/
572
+ protected function _checkArchivers() {
573
+ if (!function_exists('exec')) {
574
+ $this->options['archivers'] = $this->options['archive'] = array();
575
+ return;
576
+ }
577
+ $arcs = array(
578
+ 'create' => array(),
579
+ 'extract' => array()
580
+ );
581
+
582
+ //exec('tar --version', $o, $ctar);
583
+ $this->procExec('tar --version', $o, $ctar);
584
+
585
+ if ($ctar == 0) {
586
+ $arcs['create']['application/x-tar'] = array('cmd' => 'tar', 'argc' => '-cf', 'ext' => 'tar');
587
+ $arcs['extract']['application/x-tar'] = array('cmd' => 'tar', 'argc' => '-xf', 'ext' => 'tar');
588
+ //$test = exec('gzip --version', $o, $c);
589
+ unset($o);
590
+ $test = $this->procExec('gzip --version', $o, $c);
591
+
592
+ if ($c == 0) {
593
+ $arcs['create']['application/x-gzip'] = array('cmd' => 'tar', 'argc' => '-czf', 'ext' => 'tgz');
594
+ $arcs['extract']['application/x-gzip'] = array('cmd' => 'tar', 'argc' => '-xzf', 'ext' => 'tgz');
595
+ }
596
+ unset($o);
597
+ //$test = exec('bzip2 --version', $o, $c);
598
+ $test = $this->procExec('bzip2 --version', $o, $c);
599
+ if ($c == 0) {
600
+ $arcs['create']['application/x-bzip2'] = array('cmd' => 'tar', 'argc' => '-cjf', 'ext' => 'tbz');
601
+ $arcs['extract']['application/x-bzip2'] = array('cmd' => 'tar', 'argc' => '-xjf', 'ext' => 'tbz');
602
+ }
603
+ }
604
+ unset($o);
605
+ //exec('zip --version', $o, $c);
606
+ $this->procExec('zip -v', $o, $c);
607
+ if ($c == 0) {
608
+ $arcs['create']['application/zip'] = array('cmd' => 'zip', 'argc' => '-r9', 'ext' => 'zip');
609
+ }
610
+ unset($o);
611
+ $this->procExec('unzip --help', $o, $c);
612
+ if ($c == 0) {
613
+ $arcs['extract']['application/zip'] = array('cmd' => 'unzip', 'argc' => '', 'ext' => 'zip');
614
+ }
615
+ unset($o);
616
+ //exec('rar --version', $o, $c);
617
+ $this->procExec('rar --version', $o, $c);
618
+ if ($c == 0 || $c == 7) {
619
+ $arcs['create']['application/x-rar'] = array('cmd' => 'rar', 'argc' => 'a -inul', 'ext' => 'rar');
620
+ $arcs['extract']['application/x-rar'] = array('cmd' => 'rar', 'argc' => 'x -y', 'ext' => 'rar');
621
+ } else {
622
+ unset($o);
623
+ //$test = exec('unrar', $o, $c);
624
+ $test = $this->procExec('unrar', $o, $c);
625
+ if ($c==0 || $c == 7) {
626
+ $arcs['extract']['application/x-rar'] = array('cmd' => 'unrar', 'argc' => 'x -y', 'ext' => 'rar');
627
+ }
628
+ }
629
+ unset($o);
630
+ //exec('7za --help', $o, $c);
631
+ $this->procExec('7za --help', $o, $c);
632
+ if ($c == 0) {
633
+ $arcs['create']['application/x-7z-compressed'] = array('cmd' => '7za', 'argc' => 'a', 'ext' => '7z');
634
+ $arcs['extract']['application/x-7z-compressed'] = array('cmd' => '7za', 'argc' => 'e -y', 'ext' => '7z');
635
+
636
+ if (empty($arcs['create']['application/x-gzip'])) {
637
+ $arcs['create']['application/x-gzip'] = array('cmd' => '7za', 'argc' => 'a -tgzip', 'ext' => 'tar.gz');
638
+ }
639
+ if (empty($arcs['extract']['application/x-gzip'])) {
640
+ $arcs['extract']['application/x-gzip'] = array('cmd' => '7za', 'argc' => 'e -tgzip -y', 'ext' => 'tar.gz');
641
+ }
642
+ if (empty($arcs['create']['application/x-bzip2'])) {
643
+ $arcs['create']['application/x-bzip2'] = array('cmd' => '7za', 'argc' => 'a -tbzip2', 'ext' => 'tar.bz');
644
+ }
645
+ if (empty($arcs['extract']['application/x-bzip2'])) {
646
+ $arcs['extract']['application/x-bzip2'] = array('cmd' => '7za', 'argc' => 'a -tbzip2 -y', 'ext' => 'tar.bz');
647
+ }
648
+ if (empty($arcs['create']['application/zip'])) {
649
+ $arcs['create']['application/zip'] = array('cmd' => '7za', 'argc' => 'a -tzip -l', 'ext' => 'zip');
650
+ }
651
+ if (empty($arcs['extract']['application/zip'])) {
652
+ $arcs['extract']['application/zip'] = array('cmd' => '7za', 'argc' => 'e -tzip -y', 'ext' => 'zip');
653
+ }
654
+ if (empty($arcs['create']['application/x-tar'])) {
655
+ $arcs['create']['application/x-tar'] = array('cmd' => '7za', 'argc' => 'a -ttar -l', 'ext' => 'tar');
656
+ }
657
+ if (empty($arcs['extract']['application/x-tar'])) {
658
+ $arcs['extract']['application/x-tar'] = array('cmd' => '7za', 'argc' => 'e -ttar -y', 'ext' => 'tar');
659
+ }
660
+ }
661
+
662
+ $this->archivers = $arcs;
663
+ }
664
+
665
+ /**
666
+ * Unpack archive
667
+ *
668
+ * @param string $path archive path
669
+ * @param array $arc archiver command and arguments (same as in $this->archivers)
670
+ * @return void
671
+ * @author Dmitry (dio) Levashov
672
+ * @author Alexey Sukhotin
673
+ **/
674
+ protected function _unpack($path, $arc) {
675
+ $cwd = getcwd();
676
+ $dir = $this->_dirname($path);
677
+ chdir($dir);
678
+ $cmd = $arc['cmd'].' '.$arc['argc'].' '.escapeshellarg($this->_basename($path));
679
+ $this->procExec($cmd, $o, $c);
680
+ chdir($cwd);
681
+ }
682
+
683
+ /**
684
+ * Recursive symlinks search
685
+ *
686
+ * @param string $path file/dir path
687
+ * @return bool
688
+ * @author Dmitry (dio) Levashov
689
+ **/
690
+ protected function _findSymlinks($path) {
691
+ if (is_link($path)) {
692
+ return true;
693
+ }
694
+
695
+ if (is_dir($path)) {
696
+ foreach (scandir($path) as $name) {
697
+ if ($name != '.' && $name != '..') {
698
+ $p = $path.DIRECTORY_SEPARATOR.$name;
699
+ if (is_link($p)) {
700
+ return true;
701
+ }
702
+ if (is_dir($p) && $this->_findSymlinks($p)) {
703
+ return true;
704
+ } elseif (is_file($p)) {
705
+ $this->archiveSize += filesize($p);
706
+ }
707
+ }
708
+ }
709
+ } else {
710
+ $this->archiveSize += filesize($path);
711
+ }
712
+
713
+ return false;
714
+ }
715
+
716
+ /**
717
+ * Extract files from archive
718
+ *
719
+ * @param string $path archive path
720
+ * @param array $arc archiver command and arguments (same as in $this->archivers)
721
+ * @return true
722
+ * @author Dmitry (dio) Levashov,
723
+ * @author Alexey Sukhotin
724
+ **/
725
+ protected function _extract($path, $arc) {
726
+
727
+ if ($this->quarantine) {
728
+ $dir = $this->quarantine.DIRECTORY_SEPARATOR.str_replace(' ', '_', microtime()).basename($path);
729
+ $archive = $dir.DIRECTORY_SEPARATOR.basename($path);
730
+
731
+ if (!@mkdir($dir)) {
732
+ return false;
733
+ }
734
+
735
+ chmod($dir, 0777);
736
+
737
+ // copy in quarantine
738
+ if (!copy($path, $archive)) {
739
+ return false;
740
+ }
741
+
742
+ // extract in quarantine
743
+ $this->_unpack($archive, $arc);
744
+ @unlink($archive);
745
+
746
+ // get files list
747
+ $ls = array();
748
+ foreach (scandir($dir) as $i => $name) {
749
+ if ($name != '.' && $name != '..') {
750
+ $ls[] = $name;
751
+ }
752
+ }
753
+
754
+ // no files - extract error ?
755
+ if (empty($ls)) {
756
+ return false;
757
+ }
758
+
759
+ $this->archiveSize = 0;
760
+
761
+ // find symlinks
762
+ $symlinks = $this->_findSymlinks($dir);
763
+ // remove arc copy
764
+ $this->remove($dir);
765
+
766
+ if ($symlinks) {
767
+ return $this->setError(elFinder::ERROR_ARC_SYMLINKS);
768
+ }
769
+
770
+ // check max files size
771
+ if ($this->options['maxArcFilesSize'] > 0 && $this->options['maxArcFilesSize'] < $this->archiveSize) {
772
+ return $this->setError(elFinder::ERROR_ARC_MAXSIZE);
773
+ }
774
+
775
+
776
+
777
+ // archive contains one item - extract in archive dir
778
+ if (count($ls) == 1) {
779
+ $this->_unpack($path, $arc);
780
+ $result = dirname($path).DIRECTORY_SEPARATOR.$ls[0];
781
+
782
+
783
+ } else {
784
+ // for several files - create new directory
785
+ // create unique name for directory
786
+ $name = basename($path);
787
+ if (preg_match('/\.((tar\.(gz|bz|bz2|z|lzo))|cpio\.gz|ps\.gz|xcf\.(gz|bz2)|[a-z0-9]{1,4})$/i', $name, $m)) {
788
+ $name = substr($name, 0, strlen($name)-strlen($m[0]));
789
+ }
790
+ $test = dirname($path).DIRECTORY_SEPARATOR.$name;
791
+ if (file_exists($test) || is_link($test)) {
792
+ $name = $this->uniqueName(dirname($path), $name, '-', false);
793
+ }
794
+
795
+ $result = dirname($path).DIRECTORY_SEPARATOR.$name;
796
+ $archive = $result.DIRECTORY_SEPARATOR.basename($path);
797
+
798
+ if (!$this->_mkdir(dirname($path), $name) || !copy($path, $archive)) {
799
+ return false;
800
+ }
801
+
802
+ $this->_unpack($archive, $arc);
803
+ @unlink($archive);
804
+ }
805
+
806
+ return file_exists($result) ? $result : false;
807
+ }
808
+ }
809
+
810
+ /**
811
+ * Create archive and return its path
812
+ *
813
+ * @param string $dir target dir
814
+ * @param array $files files names list
815
+ * @param string $name archive name
816
+ * @param array $arc archiver options
817
+ * @return string|bool
818
+ * @author Dmitry (dio) Levashov,
819
+ * @author Alexey Sukhotin
820
+ **/
821
+ protected function _archive($dir, $files, $name, $arc) {
822
+ $cwd = getcwd();
823
+ chdir($dir);
824
+
825
+ $files = array_map('escapeshellarg', $files);
826
+
827
+ $cmd = $arc['cmd'].' '.$arc['argc'].' '.escapeshellarg($name).' '.implode(' ', $files);
828
+ $this->procExec($cmd, $o, $c);
829
+ chdir($cwd);
830
+
831
+ $path = $dir.DIRECTORY_SEPARATOR.$name;
832
+ return file_exists($path) ? $path : false;
833
+ }
834
+
835
+ } // END class