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,896 @@
1
+ <?php
2
+
3
+ /**
4
+ * Simple elFinder driver for MySQL.
5
+ *
6
+ * @author Dmitry (dio) Levashov
7
+ **/
8
+ class elFinderVolumeMySQL extends elFinderVolumeDriver {
9
+
10
+ /**
11
+ * Driver id
12
+ * Must be started from letter and contains [a-z0-9]
13
+ * Used as part of volume id
14
+ *
15
+ * @var string
16
+ **/
17
+ protected $driverId = 'm';
18
+
19
+ /**
20
+ * Database object
21
+ *
22
+ * @var mysqli
23
+ **/
24
+ protected $db = null;
25
+
26
+ /**
27
+ * Tables to store files
28
+ *
29
+ * @var string
30
+ **/
31
+ protected $tbf = '';
32
+
33
+ /**
34
+ * Directory for tmp files
35
+ * If not set driver will try to use tmbDir as tmpDir
36
+ *
37
+ * @var string
38
+ **/
39
+ protected $tmpPath = '';
40
+
41
+ /**
42
+ * Numbers of sql requests (for debug)
43
+ *
44
+ * @var int
45
+ **/
46
+ protected $sqlCnt = 0;
47
+
48
+ /**
49
+ * Last db error message
50
+ *
51
+ * @var string
52
+ **/
53
+ protected $dbError = '';
54
+
55
+ /**
56
+ * Constructor
57
+ * Extend options with required fields
58
+ *
59
+ * @return void
60
+ * @author Dmitry (dio) Levashov
61
+ **/
62
+ public function __construct() {
63
+ $opts = array(
64
+ 'host' => 'localhost',
65
+ 'user' => '',
66
+ 'pass' => '',
67
+ 'db' => '',
68
+ 'port' => null,
69
+ 'socket' => null,
70
+ 'files_table' => 'elfinder_file',
71
+ 'tmbPath' => '',
72
+ 'tmpPath' => ''
73
+ );
74
+ $this->options = array_merge($this->options, $opts);
75
+ $this->options['mimeDetect'] = 'internal';
76
+ }
77
+
78
+ /*********************************************************************/
79
+ /* INIT AND CONFIGURE */
80
+ /*********************************************************************/
81
+
82
+ /**
83
+ * Prepare driver before mount volume.
84
+ * Connect to db, check required tables and fetch root path
85
+ *
86
+ * @return bool
87
+ * @author Dmitry (dio) Levashov
88
+ **/
89
+ protected function init() {
90
+
91
+ if (!($this->options['host'] || $this->options['socket'])
92
+ || !$this->options['user']
93
+ || !$this->options['pass']
94
+ || !$this->options['db']
95
+ || !$this->options['path']
96
+ || !$this->options['files_table']) {
97
+ return false;
98
+ }
99
+
100
+
101
+ $this->db = new mysqli($this->options['host'], $this->options['user'], $this->options['pass'], $this->options['db'], $this->options['port'], $this->options['socket']);
102
+ if ($this->db->connect_error || @mysqli_connect_error()) {
103
+ return false;
104
+ }
105
+
106
+ $this->db->set_charset('utf8');
107
+
108
+ if ($res = $this->db->query('SHOW TABLES')) {
109
+ while ($row = $res->fetch_array()) {
110
+ if ($row[0] == $this->options['files_table']) {
111
+ $this->tbf = $this->options['files_table'];
112
+ break;
113
+ }
114
+ }
115
+ }
116
+
117
+ if (!$this->tbf) {
118
+ return false;
119
+ }
120
+
121
+ $this->updateCache($this->options['path'], $this->_stat($this->options['path']));
122
+
123
+ return true;
124
+ }
125
+
126
+
127
+
128
+ /**
129
+ * Set tmp path
130
+ *
131
+ * @return void
132
+ * @author Dmitry (dio) Levashov
133
+ **/
134
+ protected function configure() {
135
+ parent::configure();
136
+
137
+ if (($tmp = $this->options['tmpPath'])) {
138
+ if (!file_exists($tmp)) {
139
+ if (@mkdir($tmp)) {
140
+ @chmod($tmp, $this->options['tmbPathMode']);
141
+ }
142
+ }
143
+
144
+ $this->tmpPath = is_dir($tmp) && is_writable($tmp) ? $tmp : false;
145
+ }
146
+
147
+ if (!$this->tmpPath && $this->tmbPath && $this->tmbPathWritable) {
148
+ $this->tmpPath = $this->tmbPath;
149
+ }
150
+
151
+ $this->mimeDetect = 'internal';
152
+ }
153
+
154
+ /**
155
+ * Close connection
156
+ *
157
+ * @return void
158
+ * @author Dmitry (dio) Levashov
159
+ **/
160
+ public function umount() {
161
+ $this->db->close();
162
+ }
163
+
164
+ /**
165
+ * Return debug info for client
166
+ *
167
+ * @return array
168
+ * @author Dmitry (dio) Levashov
169
+ **/
170
+ public function debug() {
171
+ $debug = parent::debug();
172
+ $debug['sqlCount'] = $this->sqlCnt;
173
+ if ($this->dbError) {
174
+ $debug['dbError'] = $this->dbError;
175
+ }
176
+ return $debug;
177
+ }
178
+
179
+ /**
180
+ * Perform sql query and return result.
181
+ * Increase sqlCnt and save error if occured
182
+ *
183
+ * @param string $sql query
184
+ * @return misc
185
+ * @author Dmitry (dio) Levashov
186
+ **/
187
+ protected function query($sql) {
188
+ $this->sqlCnt++;
189
+ $res = $this->db->query($sql);
190
+ if (!$res) {
191
+ $this->dbError = $this->db->error;
192
+ }
193
+ return $res;
194
+ }
195
+
196
+ /**
197
+ * Create empty object with required mimetype
198
+ *
199
+ * @param string $path parent dir path
200
+ * @param string $name object name
201
+ * @param string $mime mime type
202
+ * @return bool
203
+ * @author Dmitry (dio) Levashov
204
+ **/
205
+ protected function make($path, $name, $mime) {
206
+ $sql = 'INSERT INTO %s (`parent_id`, `name`, `size`, `mtime`, `mime`, `content`, `read`, `write`) VALUES ("%s", "%s", 0, %d, "%s", "", "%d", "%d")';
207
+ $sql = sprintf($sql, $this->tbf, $path, $this->db->real_escape_string($name), time(), $mime, $this->defaults['read'], $this->defaults['write']);
208
+ // echo $sql;
209
+ return $this->query($sql) && $this->db->affected_rows > 0;
210
+ }
211
+
212
+ /**
213
+ * Return temporary file path for required file
214
+ *
215
+ * @param string $path file path
216
+ * @return string
217
+ * @author Dmitry (dio) Levashov
218
+ **/
219
+ protected function tmpname($path) {
220
+ return $this->tmpPath.DIRECTORY_SEPARATOR.md5($path);
221
+ }
222
+
223
+ /**
224
+ * Resize image
225
+ *
226
+ * @param string $hash image file
227
+ * @param int $width new width
228
+ * @param int $height new height
229
+ * @param bool $crop crop image
230
+ * @return array|false
231
+ * @author Dmitry (dio) Levashov
232
+ * @author Alexey Sukhotin
233
+ **/
234
+ public function resize($hash, $width, $height, $x, $y, $mode = 'resize', $bg = '', $degree = 0) {
235
+ if ($this->commandDisabled('resize')) {
236
+ return $this->setError(elFinder::ERROR_PERM_DENIED);
237
+ }
238
+
239
+ if (($file = $this->file($hash)) == false) {
240
+ return $this->setError(elFinder::ERROR_FILE_NOT_FOUND);
241
+ }
242
+
243
+ if (!$file['write'] || !$file['read']) {
244
+ return $this->setError(elFinder::ERROR_PERM_DENIED);
245
+ }
246
+
247
+ $path = $this->decode($hash);
248
+
249
+ if (!$this->canResize($path, $file)) {
250
+ return $this->setError(elFinder::ERROR_UNSUPPORT_TYPE);
251
+ }
252
+
253
+ $img = $this->tmpname($path);
254
+
255
+ if (!($fp = @fopen($img, 'w+'))) {
256
+ return false;
257
+ }
258
+
259
+ if (($res = $this->query('SELECT content FROM '.$this->tbf.' WHERE id="'.$path.'"'))
260
+ && ($r = $res->fetch_assoc())) {
261
+ fwrite($fp, $r['content']);
262
+ rewind($fp);
263
+ fclose($fp);
264
+ } else {
265
+ return false;
266
+ }
267
+
268
+
269
+ switch($mode) {
270
+
271
+ case 'propresize':
272
+ $result = $this->imgResize($img, $width, $height, true, true);
273
+ break;
274
+
275
+ case 'crop':
276
+ $result = $this->imgCrop($img, $width, $height, $x, $y);
277
+ break;
278
+
279
+ case 'fitsquare':
280
+ $result = $this->imgSquareFit($img, $width, $height, 'center', 'middle', $bg ? $bg : $this->options['tmbBgColor']);
281
+ break;
282
+
283
+ default:
284
+ $result = $this->imgResize($img, $width, $height, false, true);
285
+ break;
286
+ }
287
+
288
+ if ($result) {
289
+
290
+ $sql = sprintf('UPDATE %s SET content=LOAD_FILE("%s"), mtime=UNIX_TIMESTAMP() WHERE id=%d', $this->tbf, $this->loadFilePath($img), $path);
291
+
292
+ if (!$this->query($sql)) {
293
+ $content = file_get_contents($img);
294
+ $sql = sprintf('UPDATE %s SET content="%s", mtime=UNIX_TIMESTAMP() WHERE id=%d', $this->tbf, $this->db->real_escape_string($content), $path);
295
+ if (!$this->query($sql)) {
296
+ @unlink($img);
297
+ return false;
298
+ }
299
+ }
300
+ @unlink($img);
301
+ if (!empty($file['tmb']) && $file['tmb'] != "1") {
302
+ $this->rmTmb($file['tmb']);
303
+ }
304
+ $this->clearcache();
305
+ return $this->stat($path);
306
+ }
307
+
308
+ return false;
309
+ }
310
+
311
+
312
+ /*********************************************************************/
313
+ /* FS API */
314
+ /*********************************************************************/
315
+
316
+ /**
317
+ * Cache dir contents
318
+ *
319
+ * @param string $path dir path
320
+ * @return void
321
+ * @author Dmitry Levashov
322
+ **/
323
+ protected function cacheDir($path) {
324
+ $this->dirsCache[$path] = array();
325
+
326
+ $sql = 'SELECT f.id, f.parent_id, f.name, f.size, f.mtime AS ts, f.mime, f.read, f.write, f.locked, f.hidden, f.width, f.height, IF(ch.id, 1, 0) AS dirs
327
+ FROM '.$this->tbf.' AS f
328
+ LEFT JOIN '.$this->tbf.' AS ch ON ch.parent_id=f.id AND ch.mime="directory"
329
+ WHERE f.parent_id="'.$path.'"
330
+ GROUP BY f.id';
331
+
332
+ $res = $this->query($sql);
333
+ if ($res) {
334
+ while ($row = $res->fetch_assoc()) {
335
+ // debug($row);
336
+ $id = $row['id'];
337
+ if ($row['parent_id']) {
338
+ $row['phash'] = $this->encode($row['parent_id']);
339
+ }
340
+
341
+ if ($row['mime'] == 'directory') {
342
+ unset($row['width']);
343
+ unset($row['height']);
344
+ } else {
345
+ unset($row['dirs']);
346
+ }
347
+
348
+ unset($row['id']);
349
+ unset($row['parent_id']);
350
+
351
+
352
+
353
+ if (($stat = $this->updateCache($id, $row)) && empty($stat['hidden'])) {
354
+ $this->dirsCache[$path][] = $id;
355
+ }
356
+ }
357
+ }
358
+
359
+ return $this->dirsCache[$path];
360
+ }
361
+
362
+ /**
363
+ * Return array of parents paths (ids)
364
+ *
365
+ * @param int $path file path (id)
366
+ * @return array
367
+ * @author Dmitry (dio) Levashov
368
+ **/
369
+ protected function getParents($path) {
370
+ $parents = array();
371
+
372
+ while ($path) {
373
+ if ($file = $this->stat($path)) {
374
+ array_unshift($parents, $path);
375
+ $path = isset($file['phash']) ? $this->decode($file['phash']) : false;
376
+ }
377
+ }
378
+
379
+ if (count($parents)) {
380
+ array_pop($parents);
381
+ }
382
+ return $parents;
383
+ }
384
+
385
+ /**
386
+ * Return correct file path for LOAD_FILE method
387
+ *
388
+ * @param string $path file path (id)
389
+ * @return string
390
+ * @author Troex Nevelin
391
+ **/
392
+ protected function loadFilePath($path) {
393
+ $realPath = realpath($path);
394
+ if (DIRECTORY_SEPARATOR == '\\') { // windows
395
+ $realPath = str_replace('\\', '\\\\', $realPath);
396
+ }
397
+ return $this->db->real_escape_string($realPath);
398
+ }
399
+
400
+ /*********************** paths/urls *************************/
401
+
402
+ /**
403
+ * Return parent directory path
404
+ *
405
+ * @param string $path file path
406
+ * @return string
407
+ * @author Dmitry (dio) Levashov
408
+ **/
409
+ protected function _dirname($path) {
410
+ return ($stat = $this->stat($path)) ? ($stat['phash'] ? $this->decode($stat['phash']) : $this->root) : false;
411
+ }
412
+
413
+ /**
414
+ * Return file name
415
+ *
416
+ * @param string $path file path
417
+ * @return string
418
+ * @author Dmitry (dio) Levashov
419
+ **/
420
+ protected function _basename($path) {
421
+ return ($stat = $this->stat($path)) ? $stat['name'] : false;
422
+ }
423
+
424
+ /**
425
+ * Join dir name and file name and return full path
426
+ *
427
+ * @param string $dir
428
+ * @param string $name
429
+ * @return string
430
+ * @author Dmitry (dio) Levashov
431
+ **/
432
+ protected function _joinPath($dir, $name) {
433
+ $sql = 'SELECT id FROM '.$this->tbf.' WHERE parent_id="'.$dir.'" AND name="'.$this->db->real_escape_string($name).'"';
434
+
435
+ if (($res = $this->query($sql)) && ($r = $res->fetch_assoc())) {
436
+ $this->updateCache($r['id'], $this->_stat($r['id']));
437
+ return $r['id'];
438
+ }
439
+ return -1;
440
+ }
441
+
442
+ /**
443
+ * Return normalized path, this works the same as os.path.normpath() in Python
444
+ *
445
+ * @param string $path path
446
+ * @return string
447
+ * @author Troex Nevelin
448
+ **/
449
+ protected function _normpath($path) {
450
+ return $path;
451
+ }
452
+
453
+ /**
454
+ * Return file path related to root dir
455
+ *
456
+ * @param string $path file path
457
+ * @return string
458
+ * @author Dmitry (dio) Levashov
459
+ **/
460
+ protected function _relpath($path) {
461
+ return $path;
462
+ }
463
+
464
+ /**
465
+ * Convert path related to root dir into real path
466
+ *
467
+ * @param string $path file path
468
+ * @return string
469
+ * @author Dmitry (dio) Levashov
470
+ **/
471
+ protected function _abspath($path) {
472
+ return $path;
473
+ }
474
+
475
+ /**
476
+ * Return fake path started from root dir
477
+ *
478
+ * @param string $path file path
479
+ * @return string
480
+ * @author Dmitry (dio) Levashov
481
+ **/
482
+ protected function _path($path) {
483
+ if (($file = $this->stat($path)) == false) {
484
+ return '';
485
+ }
486
+
487
+ $parentsIds = $this->getParents($path);
488
+ $path = '';
489
+ foreach ($parentsIds as $id) {
490
+ $dir = $this->stat($id);
491
+ $path .= $dir['name'].$this->separator;
492
+ }
493
+ return $path.$file['name'];
494
+ }
495
+
496
+ /**
497
+ * Return true if $path is children of $parent
498
+ *
499
+ * @param string $path path to check
500
+ * @param string $parent parent path
501
+ * @return bool
502
+ * @author Dmitry (dio) Levashov
503
+ **/
504
+ protected function _inpath($path, $parent) {
505
+ return $path == $parent
506
+ ? true
507
+ : in_array($parent, $this->getParents($path));
508
+ }
509
+
510
+ /***************** file stat ********************/
511
+ /**
512
+ * Return stat for given path.
513
+ * Stat contains following fields:
514
+ * - (int) size file size in b. required
515
+ * - (int) ts file modification time in unix time. required
516
+ * - (string) mime mimetype. required for folders, others - optionally
517
+ * - (bool) read read permissions. required
518
+ * - (bool) write write permissions. required
519
+ * - (bool) locked is object locked. optionally
520
+ * - (bool) hidden is object hidden. optionally
521
+ * - (string) alias for symlinks - link target path relative to root path. optionally
522
+ * - (string) target for symlinks - link target path. optionally
523
+ *
524
+ * If file does not exists - returns empty array or false.
525
+ *
526
+ * @param string $path file path
527
+ * @return array|false
528
+ * @author Dmitry (dio) Levashov
529
+ **/
530
+ protected function _stat($path) {
531
+ $sql = 'SELECT f.id, f.parent_id, f.name, f.size, f.mtime AS ts, f.mime, f.read, f.write, f.locked, f.hidden, f.width, f.height, IF(ch.id, 1, 0) AS dirs
532
+ FROM '.$this->tbf.' AS f
533
+ LEFT JOIN '.$this->tbf.' AS p ON p.id=f.parent_id
534
+ LEFT JOIN '.$this->tbf.' AS ch ON ch.parent_id=f.id AND ch.mime="directory"
535
+ WHERE f.id="'.$path.'"
536
+ GROUP BY f.id';
537
+
538
+ $res = $this->query($sql);
539
+
540
+ if ($res) {
541
+ $stat = $res->fetch_assoc();
542
+ if ($stat['parent_id']) {
543
+ $stat['phash'] = $this->encode($stat['parent_id']);
544
+ }
545
+ if ($stat['mime'] == 'directory') {
546
+ unset($stat['width']);
547
+ unset($stat['height']);
548
+ } else {
549
+ unset($stat['dirs']);
550
+ }
551
+ unset($stat['id']);
552
+ unset($stat['parent_id']);
553
+ return $stat;
554
+
555
+ }
556
+ return array();
557
+ }
558
+
559
+ /**
560
+ * Return true if path is dir and has at least one childs directory
561
+ *
562
+ * @param string $path dir path
563
+ * @return bool
564
+ * @author Dmitry (dio) Levashov
565
+ **/
566
+ protected function _subdirs($path) {
567
+ return ($stat = $this->stat($path)) && isset($stat['dirs']) ? $stat['dirs'] : false;
568
+ }
569
+
570
+ /**
571
+ * Return object width and height
572
+ * Usualy used for images, but can be realize for video etc...
573
+ *
574
+ * @param string $path file path
575
+ * @param string $mime file mime type
576
+ * @return string
577
+ * @author Dmitry (dio) Levashov
578
+ **/
579
+ protected function _dimensions($path, $mime) {
580
+ return ($stat = $this->stat($path)) && isset($stat['width']) && isset($stat['height']) ? $stat['width'].'x'.$stat['height'] : '';
581
+ }
582
+
583
+ /******************** file/dir content *********************/
584
+
585
+ /**
586
+ * Return files list in directory.
587
+ *
588
+ * @param string $path dir path
589
+ * @return array
590
+ * @author Dmitry (dio) Levashov
591
+ **/
592
+ protected function _scandir($path) {
593
+ return isset($this->dirsCache[$path])
594
+ ? $this->dirsCache[$path]
595
+ : $this->cacheDir($path);
596
+ }
597
+
598
+ /**
599
+ * Open file and return file pointer
600
+ *
601
+ * @param string $path file path
602
+ * @param string $mode open file mode (ignored in this driver)
603
+ * @return resource|false
604
+ * @author Dmitry (dio) Levashov
605
+ **/
606
+ protected function _fopen($path, $mode='rb') {
607
+ $fp = $this->tmbPath
608
+ ? @fopen($this->tmpname($path), 'w+')
609
+ : @tmpfile();
610
+
611
+
612
+ if ($fp) {
613
+ if (($res = $this->query('SELECT content FROM '.$this->tbf.' WHERE id="'.$path.'"'))
614
+ && ($r = $res->fetch_assoc())) {
615
+ fwrite($fp, $r['content']);
616
+ rewind($fp);
617
+ return $fp;
618
+ } else {
619
+ $this->_fclose($fp, $path);
620
+ }
621
+ }
622
+
623
+ return false;
624
+ }
625
+
626
+ /**
627
+ * Close opened file
628
+ *
629
+ * @param resource $fp file pointer
630
+ * @return bool
631
+ * @author Dmitry (dio) Levashov
632
+ **/
633
+ protected function _fclose($fp, $path='') {
634
+ @fclose($fp);
635
+ if ($path) {
636
+ @unlink($this->tmpname($path));
637
+ }
638
+ }
639
+
640
+ /******************** file/dir manipulations *************************/
641
+
642
+ /**
643
+ * Create dir and return created dir path or false on failed
644
+ *
645
+ * @param string $path parent dir path
646
+ * @param string $name new directory name
647
+ * @return string|bool
648
+ * @author Dmitry (dio) Levashov
649
+ **/
650
+ protected function _mkdir($path, $name) {
651
+ return $this->make($path, $name, 'directory') ? $this->_joinPath($path, $name) : false;
652
+ }
653
+
654
+ /**
655
+ * Create file and return it's path or false on failed
656
+ *
657
+ * @param string $path parent dir path
658
+ * @param string $name new file name
659
+ * @return string|bool
660
+ * @author Dmitry (dio) Levashov
661
+ **/
662
+ protected function _mkfile($path, $name) {
663
+ return $this->make($path, $name, 'text/plain') ? $this->_joinPath($path, $name) : false;
664
+ }
665
+
666
+ /**
667
+ * Create symlink. FTP driver does not support symlinks.
668
+ *
669
+ * @param string $target link target
670
+ * @param string $path symlink path
671
+ * @return bool
672
+ * @author Dmitry (dio) Levashov
673
+ **/
674
+ protected function _symlink($target, $path, $name) {
675
+ return false;
676
+ }
677
+
678
+ /**
679
+ * Copy file into another file
680
+ *
681
+ * @param string $source source file path
682
+ * @param string $targetDir target directory path
683
+ * @param string $name new file name
684
+ * @return bool
685
+ * @author Dmitry (dio) Levashov
686
+ **/
687
+ protected function _copy($source, $targetDir, $name) {
688
+ $this->clearcache();
689
+ $id = $this->_joinPath($targetDir, $name);
690
+
691
+ $sql = $id > 0
692
+ ? sprintf('REPLACE INTO %s (id, parent_id, name, content, size, mtime, mime, width, height, `read`, `write`, `locked`, `hidden`) (SELECT %d, %d, name, content, size, mtime, mime, width, height, `read`, `write`, `locked`, `hidden` FROM %s WHERE id=%d)', $this->tbf, $id, $this->_dirname($id), $this->tbf, $source)
693
+ : sprintf('INSERT INTO %s (parent_id, name, content, size, mtime, mime, width, height, `read`, `write`, `locked`, `hidden`) SELECT %d, "%s", content, size, %d, mime, width, height, `read`, `write`, `locked`, `hidden` FROM %s WHERE id=%d', $this->tbf, $targetDir, $this->db->real_escape_string($name), time(), $this->tbf, $source);
694
+
695
+ return $this->query($sql);
696
+ }
697
+
698
+ /**
699
+ * Move file into another parent dir.
700
+ * Return new file path or false.
701
+ *
702
+ * @param string $source source file path
703
+ * @param string $target target dir path
704
+ * @param string $name file name
705
+ * @return string|bool
706
+ * @author Dmitry (dio) Levashov
707
+ **/
708
+ protected function _move($source, $targetDir, $name) {
709
+ $sql = 'UPDATE %s SET parent_id=%d, name="%s" WHERE id=%d LIMIT 1';
710
+ $sql = sprintf($sql, $this->tbf, $targetDir, $this->db->real_escape_string($name), $source);
711
+ return $this->query($sql) && $this->db->affected_rows > 0;
712
+ }
713
+
714
+ /**
715
+ * Remove file
716
+ *
717
+ * @param string $path file path
718
+ * @return bool
719
+ * @author Dmitry (dio) Levashov
720
+ **/
721
+ protected function _unlink($path) {
722
+ return $this->query(sprintf('DELETE FROM %s WHERE id=%d AND mime!="directory" LIMIT 1', $this->tbf, $path)) && $this->db->affected_rows;
723
+ }
724
+
725
+ /**
726
+ * Remove dir
727
+ *
728
+ * @param string $path dir path
729
+ * @return bool
730
+ * @author Dmitry (dio) Levashov
731
+ **/
732
+ protected function _rmdir($path) {
733
+ return $this->query(sprintf('DELETE FROM %s WHERE id=%d AND mime="directory" LIMIT 1', $this->tbf, $path)) && $this->db->affected_rows;
734
+ }
735
+
736
+ /**
737
+ * undocumented function
738
+ *
739
+ * @return void
740
+ * @author Dmitry Levashov
741
+ **/
742
+ protected function _setContent($path, $fp) {
743
+ rewind($fp);
744
+ $fstat = fstat($fp);
745
+ $size = $fstat['size'];
746
+
747
+
748
+ }
749
+
750
+ /**
751
+ * Create new file and write into it from file pointer.
752
+ * Return new file path or false on error.
753
+ *
754
+ * @param resource $fp file pointer
755
+ * @param string $dir target dir path
756
+ * @param string $name file name
757
+ * @return bool|string
758
+ * @author Dmitry (dio) Levashov
759
+ **/
760
+ protected function _save($fp, $dir, $name, $mime, $w, $h) {
761
+ $this->clearcache();
762
+
763
+ $id = $this->_joinPath($dir, $name);
764
+ rewind($fp);
765
+ $stat = fstat($fp);
766
+ $size = $stat['size'];
767
+
768
+ if (($tmpfile = tempnam($this->tmpPath, $this->id))) {
769
+ if (($trgfp = fopen($tmpfile, 'wb')) == false) {
770
+ unlink($tmpfile);
771
+ } else {
772
+ while (!feof($fp)) {
773
+ fwrite($trgfp, fread($fp, 8192));
774
+ }
775
+ fclose($trgfp);
776
+
777
+ $sql = $id > 0
778
+ ? 'REPLACE INTO %s (id, parent_id, name, content, size, mtime, mime, width, height) VALUES ('.$id.', %d, "%s", LOAD_FILE("%s"), %d, %d, "%s", %d, %d)'
779
+ : 'INSERT INTO %s (parent_id, name, content, size, mtime, mime, width, height) VALUES (%d, "%s", LOAD_FILE("%s"), %d, %d, "%s", %d, %d)';
780
+ $sql = sprintf($sql, $this->tbf, $dir, $this->db->real_escape_string($name), $this->loadFilePath($tmpfile), $size, time(), $mime, $w, $h);
781
+
782
+ $res = $this->query($sql);
783
+ unlink($tmpfile);
784
+
785
+ if ($res) {
786
+ return $id > 0 ? $id : $this->db->insert_id;
787
+ }
788
+ }
789
+ }
790
+
791
+
792
+ $content = '';
793
+ rewind($fp);
794
+ while (!feof($fp)) {
795
+ $content .= fread($fp, 8192);
796
+ }
797
+
798
+ $sql = $id > 0
799
+ ? 'REPLACE INTO %s (id, parent_id, name, content, size, mtime, mime, width, height) VALUES ('.$id.', %d, "%s", "%s", %d, %d, "%s", %d, %d)'
800
+ : 'INSERT INTO %s (parent_id, name, content, size, mtime, mime, width, height) VALUES (%d, "%s", "%s", %d, %d, "%s", %d, %d)';
801
+ $sql = sprintf($sql, $this->tbf, $dir, $this->db->real_escape_string($name), $this->db->real_escape_string($content), $size, time(), $mime, $w, $h);
802
+
803
+ unset($content);
804
+
805
+ if ($this->query($sql)) {
806
+ return $id > 0 ? $id : $this->db->insert_id;
807
+ }
808
+
809
+ return false;
810
+ }
811
+
812
+ /**
813
+ * Get file contents
814
+ *
815
+ * @param string $path file path
816
+ * @return string|false
817
+ * @author Dmitry (dio) Levashov
818
+ **/
819
+ protected function _getContents($path) {
820
+ return ($res = $this->query(sprintf('SELECT content FROM %s WHERE id=%d', $this->tbf, $path))) && ($r = $res->fetch_assoc()) ? $r['content'] : false;
821
+ }
822
+
823
+ /**
824
+ * Write a string to a file
825
+ *
826
+ * @param string $path file path
827
+ * @param string $content new file content
828
+ * @return bool
829
+ * @author Dmitry (dio) Levashov
830
+ **/
831
+ protected function _filePutContents($path, $content) {
832
+ return $this->query(sprintf('UPDATE %s SET content="%s", size=%d, mtime=%d WHERE id=%d LIMIT 1', $this->tbf, $this->db->real_escape_string($content), strlen($content), time(), $path));
833
+ }
834
+
835
+ /**
836
+ * Detect available archivers
837
+ *
838
+ * @return void
839
+ **/
840
+ protected function _checkArchivers() {
841
+ return;
842
+ }
843
+
844
+ /**
845
+ * Unpack archive
846
+ *
847
+ * @param string $path archive path
848
+ * @param array $arc archiver command and arguments (same as in $this->archivers)
849
+ * @return void
850
+ * @author Dmitry (dio) Levashov
851
+ * @author Alexey Sukhotin
852
+ **/
853
+ protected function _unpack($path, $arc) {
854
+ return;
855
+ }
856
+
857
+ /**
858
+ * Recursive symlinks search
859
+ *
860
+ * @param string $path file/dir path
861
+ * @return bool
862
+ * @author Dmitry (dio) Levashov
863
+ **/
864
+ protected function _findSymlinks($path) {
865
+ return false;
866
+ }
867
+
868
+ /**
869
+ * Extract files from archive
870
+ *
871
+ * @param string $path archive path
872
+ * @param array $arc archiver command and arguments (same as in $this->archivers)
873
+ * @return true
874
+ * @author Dmitry (dio) Levashov,
875
+ * @author Alexey Sukhotin
876
+ **/
877
+ protected function _extract($path, $arc) {
878
+ return false;
879
+ }
880
+
881
+ /**
882
+ * Create archive and return its path
883
+ *
884
+ * @param string $dir target dir
885
+ * @param array $files files names list
886
+ * @param string $name archive name
887
+ * @param array $arc archiver options
888
+ * @return string|bool
889
+ * @author Dmitry (dio) Levashov,
890
+ * @author Alexey Sukhotin
891
+ **/
892
+ protected function _archive($dir, $files, $name, $arc) {
893
+ return false;
894
+ }
895
+
896
+ } // END class