drg_default_html_editor 0.4.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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