my_admin 0.0.2

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 (822) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +4 -0
  3. data/Gemfile +12 -0
  4. data/MIT-LICENSE +20 -0
  5. data/README.md +407 -0
  6. data/Rakefile +35 -0
  7. data/app/assets/fonts/my_admin/FontAwesome.otf +0 -0
  8. data/app/assets/fonts/my_admin/fontawesome-webfont.eot +0 -0
  9. data/app/assets/fonts/my_admin/fontawesome-webfont.svg +284 -0
  10. data/app/assets/fonts/my_admin/fontawesome-webfont.ttf +0 -0
  11. data/app/assets/fonts/my_admin/fontawesome-webfont.woff +0 -0
  12. data/app/assets/fonts/my_admin/glyphicons-regular.eot +0 -0
  13. data/app/assets/fonts/my_admin/glyphicons-regular.otf +0 -0
  14. data/app/assets/fonts/my_admin/glyphicons-regular.svg +435 -0
  15. data/app/assets/fonts/my_admin/glyphicons-regular.ttf +0 -0
  16. data/app/assets/fonts/my_admin/glyphicons-regular.woff +0 -0
  17. data/app/assets/images/my_admin/apple-touch-icon-precomposed.png +0 -0
  18. data/app/assets/images/my_admin/email-login.jpg +0 -0
  19. data/app/assets/images/my_admin/email-logo.jpg +0 -0
  20. data/app/assets/images/my_admin/favicon.ico +0 -0
  21. data/app/assets/images/my_admin/glyphicons-halflings-white.png +0 -0
  22. data/app/assets/images/my_admin/glyphicons-halflings.png +0 -0
  23. data/app/assets/images/my_admin/loading.gif +0 -0
  24. data/app/assets/images/my_admin/logo-big.png +0 -0
  25. data/app/assets/images/my_admin/logo-big@2x.png +0 -0
  26. data/app/assets/images/my_admin/logo.png +0 -0
  27. data/app/assets/images/my_admin/logo@2x.png +0 -0
  28. data/app/assets/images/my_admin/navigation-bg-small.png +0 -0
  29. data/app/assets/images/my_admin/navigation-bg.png +0 -0
  30. data/app/assets/images/my_admin/no_image.gif +0 -0
  31. data/app/assets/images/my_admin/plugins/chosen/chosen-sprite.png +0 -0
  32. data/app/assets/images/my_admin/plugins/colorbox/controls.png +0 -0
  33. data/app/assets/images/my_admin/plugins/colorbox/loading.gif +0 -0
  34. data/app/assets/images/my_admin/plugins/colorpicker/alpha.png +0 -0
  35. data/app/assets/images/my_admin/plugins/colorpicker/hue.png +0 -0
  36. data/app/assets/images/my_admin/plugins/colorpicker/saturation.png +0 -0
  37. data/app/assets/images/my_admin/plugins/elfinder/arrows-active.png +0 -0
  38. data/app/assets/images/my_admin/plugins/elfinder/arrows-normal.png +0 -0
  39. data/app/assets/images/my_admin/plugins/elfinder/crop.gif +0 -0
  40. data/app/assets/images/my_admin/plugins/elfinder/dialogs.png +0 -0
  41. data/app/assets/images/my_admin/plugins/elfinder/icons-big.png +0 -0
  42. data/app/assets/images/my_admin/plugins/elfinder/icons-small.png +0 -0
  43. data/app/assets/images/my_admin/plugins/elfinder/logo.png +0 -0
  44. data/app/assets/images/my_admin/plugins/elfinder/progress.gif +0 -0
  45. data/app/assets/images/my_admin/plugins/elfinder/quicklook-bg.png +0 -0
  46. data/app/assets/images/my_admin/plugins/elfinder/quicklook-icons.png +0 -0
  47. data/app/assets/images/my_admin/plugins/elfinder/resize.png +0 -0
  48. data/app/assets/images/my_admin/plugins/elfinder/spinner-mini.gif +0 -0
  49. data/app/assets/images/my_admin/plugins/elfinder/toolbar.png +0 -0
  50. data/app/assets/images/my_admin/plugins/gmap/here.png +0 -0
  51. data/app/assets/images/my_admin/plugins/gmap/icon_greenA.png +0 -0
  52. data/app/assets/images/my_admin/plugins/gmap/icon_greenB.png +0 -0
  53. data/app/assets/images/my_admin/plugins/gmap/zoomin.png +0 -0
  54. data/app/assets/images/my_admin/plugins/gmap/zoomout.png +0 -0
  55. data/app/assets/images/my_admin/plugins/gritter/gritter-light.png +0 -0
  56. data/app/assets/images/my_admin/plugins/gritter/gritter-long.png +0 -0
  57. data/app/assets/images/my_admin/plugins/gritter/gritter.png +0 -0
  58. data/app/assets/images/my_admin/plugins/gritter/ie-spacer.gif +0 -0
  59. data/app/assets/images/my_admin/plugins/icheck/flat/aero.png +0 -0
  60. data/app/assets/images/my_admin/plugins/icheck/flat/aero@2x.png +0 -0
  61. data/app/assets/images/my_admin/plugins/icheck/flat/blue.png +0 -0
  62. data/app/assets/images/my_admin/plugins/icheck/flat/blue@2x.png +0 -0
  63. data/app/assets/images/my_admin/plugins/icheck/flat/flat.png +0 -0
  64. data/app/assets/images/my_admin/plugins/icheck/flat/flat@2x.png +0 -0
  65. data/app/assets/images/my_admin/plugins/icheck/flat/green.png +0 -0
  66. data/app/assets/images/my_admin/plugins/icheck/flat/green@2x.png +0 -0
  67. data/app/assets/images/my_admin/plugins/icheck/flat/grey.png +0 -0
  68. data/app/assets/images/my_admin/plugins/icheck/flat/grey@2x.png +0 -0
  69. data/app/assets/images/my_admin/plugins/icheck/flat/orange.png +0 -0
  70. data/app/assets/images/my_admin/plugins/icheck/flat/orange@2x.png +0 -0
  71. data/app/assets/images/my_admin/plugins/icheck/flat/pink.png +0 -0
  72. data/app/assets/images/my_admin/plugins/icheck/flat/pink@2x.png +0 -0
  73. data/app/assets/images/my_admin/plugins/icheck/flat/purple.png +0 -0
  74. data/app/assets/images/my_admin/plugins/icheck/flat/purple@2x.png +0 -0
  75. data/app/assets/images/my_admin/plugins/icheck/flat/red.png +0 -0
  76. data/app/assets/images/my_admin/plugins/icheck/flat/red@2x.png +0 -0
  77. data/app/assets/images/my_admin/plugins/icheck/flat/yellow.png +0 -0
  78. data/app/assets/images/my_admin/plugins/icheck/flat/yellow@2x.png +0 -0
  79. data/app/assets/images/my_admin/plugins/icheck/futurico/futurico.png +0 -0
  80. data/app/assets/images/my_admin/plugins/icheck/futurico/futurico@2x.png +0 -0
  81. data/app/assets/images/my_admin/plugins/icheck/line/line.png +0 -0
  82. data/app/assets/images/my_admin/plugins/icheck/line/line@2x.png +0 -0
  83. data/app/assets/images/my_admin/plugins/icheck/minimal/aero.png +0 -0
  84. data/app/assets/images/my_admin/plugins/icheck/minimal/aero@2x.png +0 -0
  85. data/app/assets/images/my_admin/plugins/icheck/minimal/blue.png +0 -0
  86. data/app/assets/images/my_admin/plugins/icheck/minimal/blue@2x.png +0 -0
  87. data/app/assets/images/my_admin/plugins/icheck/minimal/green.png +0 -0
  88. data/app/assets/images/my_admin/plugins/icheck/minimal/green@2x.png +0 -0
  89. data/app/assets/images/my_admin/plugins/icheck/minimal/grey.png +0 -0
  90. data/app/assets/images/my_admin/plugins/icheck/minimal/grey@2x.png +0 -0
  91. data/app/assets/images/my_admin/plugins/icheck/minimal/minimal.png +0 -0
  92. data/app/assets/images/my_admin/plugins/icheck/minimal/minimal@2x.png +0 -0
  93. data/app/assets/images/my_admin/plugins/icheck/minimal/orange.png +0 -0
  94. data/app/assets/images/my_admin/plugins/icheck/minimal/orange@2x.png +0 -0
  95. data/app/assets/images/my_admin/plugins/icheck/minimal/pink.png +0 -0
  96. data/app/assets/images/my_admin/plugins/icheck/minimal/pink@2x.png +0 -0
  97. data/app/assets/images/my_admin/plugins/icheck/minimal/purple.png +0 -0
  98. data/app/assets/images/my_admin/plugins/icheck/minimal/purple@2x.png +0 -0
  99. data/app/assets/images/my_admin/plugins/icheck/minimal/red.png +0 -0
  100. data/app/assets/images/my_admin/plugins/icheck/minimal/red@2x.png +0 -0
  101. data/app/assets/images/my_admin/plugins/icheck/minimal/yellow.png +0 -0
  102. data/app/assets/images/my_admin/plugins/icheck/minimal/yellow@2x.png +0 -0
  103. data/app/assets/images/my_admin/plugins/icheck/polaris/polaris.png +0 -0
  104. data/app/assets/images/my_admin/plugins/icheck/polaris/polaris@2x.png +0 -0
  105. data/app/assets/images/my_admin/plugins/icheck/square/aero.png +0 -0
  106. data/app/assets/images/my_admin/plugins/icheck/square/aero@2x.png +0 -0
  107. data/app/assets/images/my_admin/plugins/icheck/square/blue.png +0 -0
  108. data/app/assets/images/my_admin/plugins/icheck/square/blue@2x.png +0 -0
  109. data/app/assets/images/my_admin/plugins/icheck/square/green.png +0 -0
  110. data/app/assets/images/my_admin/plugins/icheck/square/green@2x.png +0 -0
  111. data/app/assets/images/my_admin/plugins/icheck/square/grey.png +0 -0
  112. data/app/assets/images/my_admin/plugins/icheck/square/grey@2x.png +0 -0
  113. data/app/assets/images/my_admin/plugins/icheck/square/orange.png +0 -0
  114. data/app/assets/images/my_admin/plugins/icheck/square/orange@2x.png +0 -0
  115. data/app/assets/images/my_admin/plugins/icheck/square/pink.png +0 -0
  116. data/app/assets/images/my_admin/plugins/icheck/square/pink@2x.png +0 -0
  117. data/app/assets/images/my_admin/plugins/icheck/square/purple.png +0 -0
  118. data/app/assets/images/my_admin/plugins/icheck/square/purple@2x.png +0 -0
  119. data/app/assets/images/my_admin/plugins/icheck/square/red.png +0 -0
  120. data/app/assets/images/my_admin/plugins/icheck/square/red@2x.png +0 -0
  121. data/app/assets/images/my_admin/plugins/icheck/square/square.png +0 -0
  122. data/app/assets/images/my_admin/plugins/icheck/square/square@2x.png +0 -0
  123. data/app/assets/images/my_admin/plugins/icheck/square/yellow.png +0 -0
  124. data/app/assets/images/my_admin/plugins/icheck/square/yellow@2x.png +0 -0
  125. data/app/assets/images/my_admin/plugins/multiselect/switch.png +0 -0
  126. data/app/assets/images/my_admin/plugins/pageguide/pageguide_arrow.png +0 -0
  127. data/app/assets/images/my_admin/plugins/plupload/backgrounds.gif +0 -0
  128. data/app/assets/images/my_admin/plugins/plupload/buttons-disabled.png +0 -0
  129. data/app/assets/images/my_admin/plugins/plupload/buttons.png +0 -0
  130. data/app/assets/images/my_admin/plugins/plupload/delete.gif +0 -0
  131. data/app/assets/images/my_admin/plugins/plupload/done.gif +0 -0
  132. data/app/assets/images/my_admin/plugins/plupload/error.gif +0 -0
  133. data/app/assets/images/my_admin/plugins/plupload/throbber.gif +0 -0
  134. data/app/assets/images/my_admin/plugins/plupload/transp50.png +0 -0
  135. data/app/assets/images/my_admin/plugins/select2/select2-spinner.gif +0 -0
  136. data/app/assets/images/my_admin/plugins/select2/select2.png +0 -0
  137. data/app/assets/images/my_admin/plugins/select2/select2x2.png +0 -0
  138. data/app/assets/images/my_admin/plugins/xeditable/clear.png +0 -0
  139. data/app/assets/images/my_admin/plugins/xeditable/loading.gif +0 -0
  140. data/app/assets/images/my_admin/sorting-asc.png +0 -0
  141. data/app/assets/images/my_admin/sorting-desc.png +0 -0
  142. data/app/assets/images/my_admin/sorting.png +0 -0
  143. data/app/assets/images/my_admin/users/missing_mini.png +0 -0
  144. data/app/assets/images/my_admin/users/missing_my_admin.png +0 -0
  145. data/app/assets/javascripts/my_admin/application.js +62 -0
  146. data/app/assets/javascripts/my_admin/application_locked.js +20 -0
  147. data/app/assets/javascripts/my_admin/application_off.js +22 -0
  148. data/app/assets/javascripts/my_admin/bootstrap.js +2268 -0
  149. data/app/assets/javascripts/my_admin/demonstration.js +1101 -0
  150. data/app/assets/javascripts/my_admin/eakroko.js +538 -0
  151. data/app/assets/javascripts/my_admin/extensions.js +20 -0
  152. data/app/assets/javascripts/my_admin/jquery.dateFormat.js +355 -0
  153. data/app/assets/javascripts/my_admin/jquery.maskMoney.js +355 -0
  154. data/app/assets/javascripts/my_admin/locale/pt-br/validate.js +24 -0
  155. data/app/assets/javascripts/my_admin/main.js +891 -0
  156. data/app/assets/javascripts/my_admin/my_admin.js +186 -0
  157. data/app/assets/javascripts/my_admin/plugins/bootbox/jquery.bootbox.js +17 -0
  158. data/app/assets/javascripts/my_admin/plugins/chosen/chosen.jquery.min.js +10 -0
  159. data/app/assets/javascripts/my_admin/plugins/chosen/chosen.jquery.min.min.js +9 -0
  160. data/app/assets/javascripts/my_admin/plugins/ckeditor/CHANGES.md +60 -0
  161. data/app/assets/javascripts/my_admin/plugins/ckeditor/LICENSE.md +1264 -0
  162. data/app/assets/javascripts/my_admin/plugins/ckeditor/README.md +39 -0
  163. data/app/assets/javascripts/my_admin/plugins/ckeditor/build-config.js +161 -0
  164. data/app/assets/javascripts/my_admin/plugins/ckeditor/ckeditor.js +874 -0
  165. data/app/assets/javascripts/my_admin/plugins/ckeditor/config.js +11 -0
  166. data/app/assets/javascripts/my_admin/plugins/ckeditor/contents.css +99 -0
  167. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/af.js +5 -0
  168. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/ar.js +5 -0
  169. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/bg.js +5 -0
  170. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/bn.js +5 -0
  171. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/bs.js +5 -0
  172. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/ca.js +5 -0
  173. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/cs.js +5 -0
  174. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/cy.js +5 -0
  175. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/da.js +5 -0
  176. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/de.js +5 -0
  177. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/el.js +5 -0
  178. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/en-au.js +5 -0
  179. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/en-ca.js +5 -0
  180. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/en-gb.js +5 -0
  181. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/en.js +5 -0
  182. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/eo.js +5 -0
  183. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/es.js +5 -0
  184. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/et.js +5 -0
  185. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/eu.js +5 -0
  186. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/fa.js +5 -0
  187. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/fi.js +5 -0
  188. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/fo.js +5 -0
  189. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/fr-ca.js +5 -0
  190. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/fr.js +5 -0
  191. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/gl.js +5 -0
  192. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/gu.js +5 -0
  193. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/he.js +5 -0
  194. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/hi.js +5 -0
  195. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/hr.js +5 -0
  196. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/hu.js +5 -0
  197. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/is.js +5 -0
  198. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/it.js +5 -0
  199. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/ja.js +5 -0
  200. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/ka.js +5 -0
  201. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/km.js +5 -0
  202. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/ko.js +5 -0
  203. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/ku.js +5 -0
  204. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/lt.js +5 -0
  205. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/lv.js +5 -0
  206. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/mk.js +5 -0
  207. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/mn.js +5 -0
  208. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/ms.js +5 -0
  209. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/nb.js +5 -0
  210. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/nl.js +5 -0
  211. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/no.js +5 -0
  212. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/pl.js +5 -0
  213. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/pt-br.js +5 -0
  214. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/pt.js +5 -0
  215. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/ro.js +5 -0
  216. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/ru.js +5 -0
  217. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/sk.js +5 -0
  218. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/sl.js +5 -0
  219. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/sr-latn.js +5 -0
  220. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/sr.js +5 -0
  221. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/sv.js +5 -0
  222. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/th.js +5 -0
  223. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/tr.js +5 -0
  224. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/ug.js +5 -0
  225. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/uk.js +5 -0
  226. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/vi.js +5 -0
  227. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/zh-cn.js +5 -0
  228. data/app/assets/javascripts/my_admin/plugins/ckeditor/lang/zh.js +5 -0
  229. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +10 -0
  230. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt +25 -0
  231. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js +9 -0
  232. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js +9 -0
  233. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ca.js +9 -0
  234. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/cs.js +10 -0
  235. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/cy.js +9 -0
  236. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/da.js +9 -0
  237. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/de.js +10 -0
  238. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/el.js +10 -0
  239. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/en.js +9 -0
  240. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/eo.js +10 -0
  241. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/es.js +10 -0
  242. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/et.js +9 -0
  243. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fa.js +9 -0
  244. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fi.js +10 -0
  245. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fr.js +10 -0
  246. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js +9 -0
  247. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/he.js +9 -0
  248. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js +9 -0
  249. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/hr.js +9 -0
  250. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/hu.js +9 -0
  251. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/it.js +10 -0
  252. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ja.js +9 -0
  253. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ku.js +10 -0
  254. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js +9 -0
  255. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/lv.js +10 -0
  256. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js +9 -0
  257. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js +9 -0
  258. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/nb.js +9 -0
  259. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js +10 -0
  260. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/no.js +9 -0
  261. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/pl.js +9 -0
  262. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js +9 -0
  263. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/pt.js +9 -0
  264. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ro.js +9 -0
  265. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ru.js +9 -0
  266. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sk.js +10 -0
  267. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sl.js +9 -0
  268. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sv.js +10 -0
  269. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/tr.js +10 -0
  270. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ug.js +9 -0
  271. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/uk.js +9 -0
  272. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/vi.js +9 -0
  273. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js +7 -0
  274. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/about/dialogs/about.js +6 -0
  275. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/about/dialogs/logo_ckeditor.png +0 -0
  276. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/clipboard/dialogs/paste.js +11 -0
  277. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/colordialog/dialogs/colordialog.js +13 -0
  278. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/dialog/dialogDefinition.js +4 -0
  279. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/div/dialogs/div.js +9 -0
  280. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/fakeobjects/images/spacer.gif +0 -0
  281. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/find/dialogs/find.js +24 -0
  282. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/flash/dialogs/flash.js +23 -0
  283. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/flash/images/placeholder.png +0 -0
  284. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/forms/dialogs/button.js +8 -0
  285. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/forms/dialogs/checkbox.js +8 -0
  286. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/forms/dialogs/form.js +8 -0
  287. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/forms/dialogs/hiddenfield.js +8 -0
  288. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/forms/dialogs/radio.js +8 -0
  289. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/forms/dialogs/select.js +20 -0
  290. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/forms/dialogs/textarea.js +8 -0
  291. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/forms/dialogs/textfield.js +10 -0
  292. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/forms/images/hiddenfield.gif +0 -0
  293. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/icons.png +0 -0
  294. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/iframe/dialogs/iframe.js +10 -0
  295. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/iframe/images/placeholder.png +0 -0
  296. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/image/dialogs/image.js +41 -0
  297. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/image/images/noimage.png +0 -0
  298. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/link/dialogs/anchor.js +8 -0
  299. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/link/dialogs/link.js +36 -0
  300. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/link/images/anchor.png +0 -0
  301. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/liststyle/dialogs/liststyle.js +10 -0
  302. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/magicline/images/icon.png +0 -0
  303. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/pagebreak/images/pagebreak.gif +0 -0
  304. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/pastefromword/filter/default.js +31 -0
  305. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/preview/preview.html +10 -0
  306. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/scayt/LICENSE.md +28 -0
  307. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/scayt/README.md +25 -0
  308. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/scayt/dialogs/options.js +19 -0
  309. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/scayt/dialogs/toolbar.css +71 -0
  310. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/showblocks/images/block_address.png +0 -0
  311. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/showblocks/images/block_blockquote.png +0 -0
  312. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/showblocks/images/block_div.png +0 -0
  313. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/showblocks/images/block_h1.png +0 -0
  314. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/showblocks/images/block_h2.png +0 -0
  315. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/showblocks/images/block_h3.png +0 -0
  316. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/showblocks/images/block_h4.png +0 -0
  317. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/showblocks/images/block_h5.png +0 -0
  318. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/showblocks/images/block_h6.png +0 -0
  319. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/showblocks/images/block_p.png +0 -0
  320. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/showblocks/images/block_pre.png +0 -0
  321. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/smiley/dialogs/smiley.js +10 -0
  322. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/smiley/images/angel_smile.gif +0 -0
  323. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/smiley/images/angry_smile.gif +0 -0
  324. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/smiley/images/broken_heart.gif +0 -0
  325. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/smiley/images/confused_smile.gif +0 -0
  326. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/smiley/images/cry_smile.gif +0 -0
  327. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/smiley/images/devil_smile.gif +0 -0
  328. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/smiley/images/embaressed_smile.gif +0 -0
  329. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/smiley/images/embarrassed_smile.gif +0 -0
  330. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/smiley/images/envelope.gif +0 -0
  331. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/smiley/images/heart.gif +0 -0
  332. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/smiley/images/kiss.gif +0 -0
  333. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/smiley/images/lightbulb.gif +0 -0
  334. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/smiley/images/omg_smile.gif +0 -0
  335. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/smiley/images/regular_smile.gif +0 -0
  336. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/smiley/images/sad_smile.gif +0 -0
  337. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/smiley/images/shades_smile.gif +0 -0
  338. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/smiley/images/teeth_smile.gif +0 -0
  339. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/smiley/images/thumbs_down.gif +0 -0
  340. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/smiley/images/thumbs_up.gif +0 -0
  341. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/smiley/images/tongue_smile.gif +0 -0
  342. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/smiley/images/tounge_smile.gif +0 -0
  343. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif +0 -0
  344. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/smiley/images/wink_smile.gif +0 -0
  345. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/_translationstatus.txt +20 -0
  346. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/ca.js +13 -0
  347. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/cs.js +13 -0
  348. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/cy.js +14 -0
  349. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/de.js +13 -0
  350. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/el.js +13 -0
  351. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/en.js +13 -0
  352. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/eo.js +12 -0
  353. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/et.js +13 -0
  354. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/fa.js +13 -0
  355. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/fi.js +13 -0
  356. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/fr.js +11 -0
  357. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/he.js +13 -0
  358. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/hr.js +13 -0
  359. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/it.js +14 -0
  360. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/ku.js +14 -0
  361. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/lv.js +13 -0
  362. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/nb.js +11 -0
  363. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/nl.js +13 -0
  364. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/no.js +11 -0
  365. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/pt-br.js +11 -0
  366. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/sk.js +13 -0
  367. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/sv.js +11 -0
  368. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/tr.js +12 -0
  369. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/ug.js +13 -0
  370. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js +9 -0
  371. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/specialchar/dialogs/specialchar.js +14 -0
  372. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/table/dialogs/table.js +20 -0
  373. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/tabletools/dialogs/tableCell.js +16 -0
  374. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/templates/dialogs/templates.css +84 -0
  375. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/templates/dialogs/templates.js +10 -0
  376. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/templates/templates/default.js +6 -0
  377. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/templates/templates/images/template1.gif +0 -0
  378. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/templates/templates/images/template2.gif +0 -0
  379. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/templates/templates/images/template3.gif +0 -0
  380. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/wsc/LICENSE.md +28 -0
  381. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/wsc/README.md +25 -0
  382. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/wsc/dialogs/ciframe.html +49 -0
  383. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +52 -0
  384. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/wsc/dialogs/wsc.css +82 -0
  385. data/app/assets/javascripts/my_admin/plugins/ckeditor/plugins/wsc/dialogs/wsc.js +11 -0
  386. data/app/assets/javascripts/my_admin/plugins/ckeditor/skins/moono/dialog.css +5 -0
  387. data/app/assets/javascripts/my_admin/plugins/ckeditor/skins/moono/dialog_ie.css +5 -0
  388. data/app/assets/javascripts/my_admin/plugins/ckeditor/skins/moono/dialog_ie7.css +5 -0
  389. data/app/assets/javascripts/my_admin/plugins/ckeditor/skins/moono/dialog_ie8.css +5 -0
  390. data/app/assets/javascripts/my_admin/plugins/ckeditor/skins/moono/dialog_iequirks.css +5 -0
  391. data/app/assets/javascripts/my_admin/plugins/ckeditor/skins/moono/dialog_opera.css +5 -0
  392. data/app/assets/javascripts/my_admin/plugins/ckeditor/skins/moono/editor.css +5 -0
  393. data/app/assets/javascripts/my_admin/plugins/ckeditor/skins/moono/editor_gecko.css +5 -0
  394. data/app/assets/javascripts/my_admin/plugins/ckeditor/skins/moono/editor_ie.css +5 -0
  395. data/app/assets/javascripts/my_admin/plugins/ckeditor/skins/moono/editor_ie7.css +5 -0
  396. data/app/assets/javascripts/my_admin/plugins/ckeditor/skins/moono/editor_ie8.css +5 -0
  397. data/app/assets/javascripts/my_admin/plugins/ckeditor/skins/moono/editor_iequirks.css +5 -0
  398. data/app/assets/javascripts/my_admin/plugins/ckeditor/skins/moono/icons.png +0 -0
  399. data/app/assets/javascripts/my_admin/plugins/ckeditor/skins/moono/images/arrow.png +0 -0
  400. data/app/assets/javascripts/my_admin/plugins/ckeditor/skins/moono/images/close.png +0 -0
  401. data/app/assets/javascripts/my_admin/plugins/ckeditor/skins/moono/images/mini.png +0 -0
  402. data/app/assets/javascripts/my_admin/plugins/ckeditor/skins/moono/readme.md +51 -0
  403. data/app/assets/javascripts/my_admin/plugins/ckeditor/styles.js +112 -0
  404. data/app/assets/javascripts/my_admin/plugins/colorbox/jquery.colorbox-min.js +6 -0
  405. data/app/assets/javascripts/my_admin/plugins/colorpicker/bootstrap-colorpicker.js +540 -0
  406. data/app/assets/javascripts/my_admin/plugins/complexify/jquery.complexify-banlist.js +3 -0
  407. data/app/assets/javascripts/my_admin/plugins/complexify/jquery.complexify-banlist.min.js +3 -0
  408. data/app/assets/javascripts/my_admin/plugins/complexify/jquery.complexify.js +185 -0
  409. data/app/assets/javascripts/my_admin/plugins/complexify/jquery.complexify.min.js +5 -0
  410. data/app/assets/javascripts/my_admin/plugins/datatable/ColReorder.min.js +33 -0
  411. data/app/assets/javascripts/my_admin/plugins/datatable/ColVis.js +1133 -0
  412. data/app/assets/javascripts/my_admin/plugins/datatable/ColVis.min.js +20 -0
  413. data/app/assets/javascripts/my_admin/plugins/datatable/FixedColumns.min.js +18 -0
  414. data/app/assets/javascripts/my_admin/plugins/datatable/FixedColumns.min.min.js +18 -0
  415. data/app/assets/javascripts/my_admin/plugins/datatable/TableTools.min.js +76 -0
  416. data/app/assets/javascripts/my_admin/plugins/datatable/as3/ZeroClipboard.as +221 -0
  417. data/app/assets/javascripts/my_admin/plugins/datatable/as3/ZeroClipboardPdf.as +310 -0
  418. data/app/assets/javascripts/my_admin/plugins/datatable/as3/lib/AlivePDF.swc +0 -0
  419. data/app/assets/javascripts/my_admin/plugins/datatable/dataTables.scroller.min.js +40 -0
  420. data/app/assets/javascripts/my_admin/plugins/datatable/demo.txt +2503 -0
  421. data/app/assets/javascripts/my_admin/plugins/datatable/jquery.dataTables.columnFilter.js +764 -0
  422. data/app/assets/javascripts/my_admin/plugins/datatable/jquery.dataTables.columnFilter.min.js +22 -0
  423. data/app/assets/javascripts/my_admin/plugins/datatable/jquery.dataTables.min.js +155 -0
  424. data/app/assets/javascripts/my_admin/plugins/datatable/swf/copy_csv_xls.swf +0 -0
  425. data/app/assets/javascripts/my_admin/plugins/datatable/swf/copy_csv_xls_pdf.swf +0 -0
  426. data/app/assets/javascripts/my_admin/plugins/datepicker/bootstrap-datepicker.js +988 -0
  427. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.bg.js +14 -0
  428. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.ca.js +14 -0
  429. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.cs.js +15 -0
  430. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.da.js +14 -0
  431. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.de.js +16 -0
  432. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.el.js +13 -0
  433. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.es.js +14 -0
  434. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.fi.js +14 -0
  435. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.fr.js +16 -0
  436. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.he.js +15 -0
  437. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.hr.js +13 -0
  438. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.id.js +13 -0
  439. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.is.js +14 -0
  440. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.it.js +16 -0
  441. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.ja.js +13 -0
  442. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.kr.js +13 -0
  443. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.lt.js +16 -0
  444. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.lv.js +16 -0
  445. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.ms.js +14 -0
  446. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.nb.js +14 -0
  447. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.nl.js +14 -0
  448. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.pl.js +15 -0
  449. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.pt-BR.js +15 -0
  450. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.pt.js +14 -0
  451. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.ro.js +15 -0
  452. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.rs-latin.js +14 -0
  453. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.rs.js +14 -0
  454. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.ru.js +14 -0
  455. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.sk.js +15 -0
  456. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.sl.js +14 -0
  457. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.sv.js +14 -0
  458. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.sw.js +15 -0
  459. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.th.js +14 -0
  460. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.tr.js +15 -0
  461. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.uk.js +14 -0
  462. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.zh-CN.js +14 -0
  463. data/app/assets/javascripts/my_admin/plugins/datepicker/locales/bootstrap-datepicker.zh-TW.js +13 -0
  464. data/app/assets/javascripts/my_admin/plugins/dynatree/jquery.dynatree.js +3432 -0
  465. data/app/assets/javascripts/my_admin/plugins/easy-pie-chart/jquery.easy-pie-chart.min.js +16 -0
  466. data/app/assets/javascripts/my_admin/plugins/elfinder/elfinder.min.js +26 -0
  467. data/app/assets/javascripts/my_admin/plugins/elfinder/files/.tmb/l1_Rm9sZGVyICMxL3Njb3R0d2lsbHNfdW5kZXJ3YXRlcjIuanBn1221239104.png +0 -0
  468. data/app/assets/javascripts/my_admin/plugins/elfinder/files/.tmb/l1_Rm9sZGVyICMxL3Njb3R0d2lsbHNfdW5kZXJ3YXRlcjUuanBn1221239108.png +0 -0
  469. data/app/assets/javascripts/my_admin/plugins/elfinder/files/.tmb/l1_Rm9sZGVyICMyL3Njb3R0d2lsbHNfY2F0LmpwZw1221239094.png +0 -0
  470. data/app/assets/javascripts/my_admin/plugins/elfinder/files/.tmb/l1_Rm9sZGVyICMyL3Njb3R0d2lsbHNfZ2FyZGVucy5qcGc1221239206.png +0 -0
  471. data/app/assets/javascripts/my_admin/plugins/elfinder/files/.tmb/l1_Rm9sZGVyICMyL3Njb3R0d2lsbHNfZmlzaC5qcGc1221239096.png +0 -0
  472. data/app/assets/javascripts/my_admin/plugins/elfinder/files/.tmb/l1_Rm9sZGVyICMyL3Njb3R0d2lsbHNfaG9yc2UuanBn1221239096.png +0 -0
  473. data/app/assets/javascripts/my_admin/plugins/elfinder/files/.tmb/l1_bWFkbmVzc19iZWFjaC5qcGc1208954324.png +0 -0
  474. data/app/assets/javascripts/my_admin/plugins/elfinder/files/.tmb/l1_bWFkbmVzc19ib2F0LmpwZw1208954324.png +0 -0
  475. data/app/assets/javascripts/my_admin/plugins/elfinder/files/.tmb/l1_c2NvdHR3aWxsc19hdXR1bW4zLmpwZw1221239274.png +0 -0
  476. data/app/assets/javascripts/my_admin/plugins/elfinder/files/.tmb/l1_c2NvdHR3aWxsc19idWZmYWxvLmpwZw1221239094.png +0 -0
  477. data/app/assets/javascripts/my_admin/plugins/elfinder/files/.tmb/l1_c2NvdHR3aWxsc19idXR0ZXJmbHkuanBn1221239286.png +0 -0
  478. data/app/assets/javascripts/my_admin/plugins/elfinder/files/Folder #1/Another_file.txt +0 -0
  479. data/app/assets/javascripts/my_admin/plugins/elfinder/files/Folder #1/file.txt +0 -0
  480. data/app/assets/javascripts/my_admin/plugins/elfinder/files/Folder #1/scottwills_underwater2.jpg +0 -0
  481. data/app/assets/javascripts/my_admin/plugins/elfinder/files/Folder #1/scottwills_underwater5.jpg +0 -0
  482. data/app/assets/javascripts/my_admin/plugins/elfinder/files/Folder #2/scottwills_cat.jpg +0 -0
  483. data/app/assets/javascripts/my_admin/plugins/elfinder/files/Folder #2/scottwills_fish.jpg +0 -0
  484. data/app/assets/javascripts/my_admin/plugins/elfinder/files/Folder #2/scottwills_gardens.jpg +0 -0
  485. data/app/assets/javascripts/my_admin/plugins/elfinder/files/Folder #2/scottwills_horse.jpg +0 -0
  486. data/app/assets/javascripts/my_admin/plugins/elfinder/files/Main-file.txt +1 -0
  487. data/app/assets/javascripts/my_admin/plugins/elfinder/files/madness_beach.jpg +0 -0
  488. data/app/assets/javascripts/my_admin/plugins/elfinder/files/madness_boat.jpg +0 -0
  489. data/app/assets/javascripts/my_admin/plugins/elfinder/files/scottwills_autumn3.jpg +0 -0
  490. data/app/assets/javascripts/my_admin/plugins/elfinder/files/scottwills_buffalo.jpg +0 -0
  491. data/app/assets/javascripts/my_admin/plugins/elfinder/files/scottwills_butterfly.jpg +0 -0
  492. data/app/assets/javascripts/my_admin/plugins/elfinder/i18n/elfinder.LANG.js +355 -0
  493. data/app/assets/javascripts/my_admin/plugins/elfinder/i18n/elfinder.ar.js +290 -0
  494. data/app/assets/javascripts/my_admin/plugins/elfinder/i18n/elfinder.bg.js +310 -0
  495. data/app/assets/javascripts/my_admin/plugins/elfinder/i18n/elfinder.ca.js +310 -0
  496. data/app/assets/javascripts/my_admin/plugins/elfinder/i18n/elfinder.cs.js +340 -0
  497. data/app/assets/javascripts/my_admin/plugins/elfinder/i18n/elfinder.de.js +287 -0
  498. data/app/assets/javascripts/my_admin/plugins/elfinder/i18n/elfinder.el.js +355 -0
  499. data/app/assets/javascripts/my_admin/plugins/elfinder/i18n/elfinder.es.js +291 -0
  500. data/app/assets/javascripts/my_admin/plugins/elfinder/i18n/elfinder.fa.js +339 -0
  501. data/app/assets/javascripts/my_admin/plugins/elfinder/i18n/elfinder.fr.js +325 -0
  502. data/app/assets/javascripts/my_admin/plugins/elfinder/i18n/elfinder.hu.js +280 -0
  503. data/app/assets/javascripts/my_admin/plugins/elfinder/i18n/elfinder.it.js +340 -0
  504. data/app/assets/javascripts/my_admin/plugins/elfinder/i18n/elfinder.jp.js +335 -0
  505. data/app/assets/javascripts/my_admin/plugins/elfinder/i18n/elfinder.ko.js +340 -0
  506. data/app/assets/javascripts/my_admin/plugins/elfinder/i18n/elfinder.nl.js +352 -0
  507. data/app/assets/javascripts/my_admin/plugins/elfinder/i18n/elfinder.no.js +280 -0
  508. data/app/assets/javascripts/my_admin/plugins/elfinder/i18n/elfinder.pl.js +309 -0
  509. data/app/assets/javascripts/my_admin/plugins/elfinder/i18n/elfinder.pt_BR.js +320 -0
  510. data/app/assets/javascripts/my_admin/plugins/elfinder/i18n/elfinder.ru.js +355 -0
  511. data/app/assets/javascripts/my_admin/plugins/elfinder/i18n/elfinder.tr.js +340 -0
  512. data/app/assets/javascripts/my_admin/plugins/elfinder/i18n/elfinder.vi.js +340 -0
  513. data/app/assets/javascripts/my_admin/plugins/elfinder/i18n/elfinder.zh_CN.js +354 -0
  514. data/app/assets/javascripts/my_admin/plugins/elfinder/php/MySQLStorage.sql +23 -0
  515. data/app/assets/javascripts/my_admin/plugins/elfinder/php/connector.minimal.php +57 -0
  516. data/app/assets/javascripts/my_admin/plugins/elfinder/php/connector.php +65 -0
  517. data/app/assets/javascripts/my_admin/plugins/elfinder/php/elFinder.class.php +1500 -0
  518. data/app/assets/javascripts/my_admin/plugins/elfinder/php/elFinderConnector.class.php +133 -0
  519. data/app/assets/javascripts/my_admin/plugins/elfinder/php/elFinderVolumeDriver.class.php +3520 -0
  520. data/app/assets/javascripts/my_admin/plugins/elfinder/php/elFinderVolumeDropbox.class.php +1450 -0
  521. data/app/assets/javascripts/my_admin/plugins/elfinder/php/elFinderVolumeFTP.class.php +994 -0
  522. data/app/assets/javascripts/my_admin/plugins/elfinder/php/elFinderVolumeLocalFileSystem.class.php +837 -0
  523. data/app/assets/javascripts/my_admin/plugins/elfinder/php/elFinderVolumeMySQL.class.php +960 -0
  524. data/app/assets/javascripts/my_admin/plugins/elfinder/php/mime.types +512 -0
  525. data/app/assets/javascripts/my_admin/plugins/elfinder/proxy/elFinderSupportVer1.js +338 -0
  526. data/app/assets/javascripts/my_admin/plugins/fileupload/bootstrap-fileupload.min.js +18 -0
  527. data/app/assets/javascripts/my_admin/plugins/flot/jquery.flot.bar.order.min.js +21 -0
  528. data/app/assets/javascripts/my_admin/plugins/flot/jquery.flot.min.js +28 -0
  529. data/app/assets/javascripts/my_admin/plugins/flot/jquery.flot.pie.js +812 -0
  530. data/app/assets/javascripts/my_admin/plugins/flot/jquery.flot.pie.min.js +56 -0
  531. data/app/assets/javascripts/my_admin/plugins/flot/jquery.flot.resize.min.js +18 -0
  532. data/app/assets/javascripts/my_admin/plugins/flot/jquery.flot.stack.js +184 -0
  533. data/app/assets/javascripts/my_admin/plugins/form/jquery.form.min.js +11 -0
  534. data/app/assets/javascripts/my_admin/plugins/fullcalendar/fullcalendar.min.js +17 -0
  535. data/app/assets/javascripts/my_admin/plugins/gmap/gmap3-menu.js +99 -0
  536. data/app/assets/javascripts/my_admin/plugins/gmap/gmap3.min.js +10 -0
  537. data/app/assets/javascripts/my_admin/plugins/gritter/jquery.gritter.min.js +1 -0
  538. data/app/assets/javascripts/my_admin/plugins/icheck/jquery.icheck.min.js +9 -0
  539. data/app/assets/javascripts/my_admin/plugins/imagesLoaded/jquery.imagesloaded.min.js +3 -0
  540. data/app/assets/javascripts/my_admin/plugins/jquery-ui/jquery.ui.core.min.js +5 -0
  541. data/app/assets/javascripts/my_admin/plugins/jquery-ui/jquery.ui.datepicker.min.js +5 -0
  542. data/app/assets/javascripts/my_admin/plugins/jquery-ui/jquery.ui.draggable.min.js +15 -0
  543. data/app/assets/javascripts/my_admin/plugins/jquery-ui/jquery.ui.droppable.min.js +16 -0
  544. data/app/assets/javascripts/my_admin/plugins/jquery-ui/jquery.ui.mouse.min.js +13 -0
  545. data/app/assets/javascripts/my_admin/plugins/jquery-ui/jquery.ui.position.js +497 -0
  546. data/app/assets/javascripts/my_admin/plugins/jquery-ui/jquery.ui.resizable.min.js +5 -0
  547. data/app/assets/javascripts/my_admin/plugins/jquery-ui/jquery.ui.selectable.min.js +15 -0
  548. data/app/assets/javascripts/my_admin/plugins/jquery-ui/jquery.ui.slider.js +649 -0
  549. data/app/assets/javascripts/my_admin/plugins/jquery-ui/jquery.ui.sortable.min.js +5 -0
  550. data/app/assets/javascripts/my_admin/plugins/jquery-ui/jquery.ui.spinner.js +492 -0
  551. data/app/assets/javascripts/my_admin/plugins/jquery-ui/jquery.ui.widget.min.js +5 -0
  552. data/app/assets/javascripts/my_admin/plugins/maskedinput/jquery.maskedinput.min.js +7 -0
  553. data/app/assets/javascripts/my_admin/plugins/masonry/jquery.masonry.min.js +10 -0
  554. data/app/assets/javascripts/my_admin/plugins/mockjax/jquery.mockjax.js +25 -0
  555. data/app/assets/javascripts/my_admin/plugins/momentjs/jquery.moment.js +6 -0
  556. data/app/assets/javascripts/my_admin/plugins/multiselect/jquery.multi-select.js +464 -0
  557. data/app/assets/javascripts/my_admin/plugins/nicescroll/jquery.nicescroll.min.js +101 -0
  558. data/app/assets/javascripts/my_admin/plugins/pageguide/jquery.pageguide.js +980 -0
  559. data/app/assets/javascripts/my_admin/plugins/placeholder/jquery.placeholder.min.js +2 -0
  560. data/app/assets/javascripts/my_admin/plugins/plupload/jquery.plupload.queue.js +1 -0
  561. data/app/assets/javascripts/my_admin/plugins/plupload/plupload.flash.swf +0 -0
  562. data/app/assets/javascripts/my_admin/plugins/plupload/plupload.full.js +2 -0
  563. data/app/assets/javascripts/my_admin/plugins/plupload/plupload.silverlight.xap +0 -0
  564. data/app/assets/javascripts/my_admin/plugins/select2/select2.min.js +22 -0
  565. data/app/assets/javascripts/my_admin/plugins/slimscroll/jquery.slimscroll.js +440 -0
  566. data/app/assets/javascripts/my_admin/plugins/slimscroll/jquery.slimscroll.min.js +7 -0
  567. data/app/assets/javascripts/my_admin/plugins/sparklines/jquery.sparklines.min.js +5 -0
  568. data/app/assets/javascripts/my_admin/plugins/tagsinput/jquery.tagsinput.min.js +1 -0
  569. data/app/assets/javascripts/my_admin/plugins/timepicker/bootstrap-timepicker.min.js +6 -0
  570. data/app/assets/javascripts/my_admin/plugins/touch-punch/jquery.touch-punch.min.js +11 -0
  571. data/app/assets/javascripts/my_admin/plugins/touchwipe/touchwipe.js +82 -0
  572. data/app/assets/javascripts/my_admin/plugins/touchwipe/touchwipe.min.js +9 -0
  573. data/app/assets/javascripts/my_admin/plugins/validation/additional-methods.min.js +4 -0
  574. data/app/assets/javascripts/my_admin/plugins/validation/jquery.validate.min.js +4 -0
  575. data/app/assets/javascripts/my_admin/plugins/vmap/jquery.vmap.min.js +12 -0
  576. data/app/assets/javascripts/my_admin/plugins/vmap/jquery.vmap.sampledata.js +1 -0
  577. data/app/assets/javascripts/my_admin/plugins/vmap/jquery.vmap.world.js +2 -0
  578. data/app/assets/javascripts/my_admin/plugins/wizard/jquery.form.wizard.min.js +12 -0
  579. data/app/assets/javascripts/my_admin/plugins/xeditable/address.js +168 -0
  580. data/app/assets/javascripts/my_admin/plugins/xeditable/bootstrap-editable.min.js +5 -0
  581. data/app/assets/javascripts/my_admin/plugins/xeditable/demo.js +139 -0
  582. data/app/assets/javascripts/my_admin/plugins/xeditable/demo.min.js +1 -0
  583. data/app/assets/javascripts/my_admin/rails.js +352 -0
  584. data/app/assets/javascripts/my_admin.js +0 -0
  585. data/app/assets/stylesheets/my_admin/application.css +30 -0
  586. data/app/assets/stylesheets/my_admin/application_locked.css +17 -0
  587. data/app/assets/stylesheets/my_admin/application_off.css +18 -0
  588. data/app/assets/stylesheets/my_admin/bootstrap-responsive.css +1109 -0
  589. data/app/assets/stylesheets/my_admin/bootstrap.css.erb +6159 -0
  590. data/app/assets/stylesheets/my_admin/my_admin.css +11 -0
  591. data/app/assets/stylesheets/my_admin/plugins/chosen/chosen.css.erb +397 -0
  592. data/app/assets/stylesheets/my_admin/plugins/colorbox/colorbox.css.erb +49 -0
  593. data/app/assets/stylesheets/my_admin/plugins/colorpicker/colorpicker.css.erb +7 -0
  594. data/app/assets/stylesheets/my_admin/plugins/datatable/TableTools.css +321 -0
  595. data/app/assets/stylesheets/my_admin/plugins/datatable/jquery.dataTables.css +221 -0
  596. data/app/assets/stylesheets/my_admin/plugins/datepicker/datepicker.css +301 -0
  597. data/app/assets/stylesheets/my_admin/plugins/dynatree/icons.gif +0 -0
  598. data/app/assets/stylesheets/my_admin/plugins/dynatree/loading.gif +0 -0
  599. data/app/assets/stylesheets/my_admin/plugins/dynatree/ui.dynatree.css +452 -0
  600. data/app/assets/stylesheets/my_admin/plugins/easy-pie-chart/jquery.easy-pie-chart.css +1 -0
  601. data/app/assets/stylesheets/my_admin/plugins/elfinder/elfinder.min.css +9 -0
  602. data/app/assets/stylesheets/my_admin/plugins/elfinder/theme.css.erb +50 -0
  603. data/app/assets/stylesheets/my_admin/plugins/fullcalendar/fullcalendar.css +1 -0
  604. data/app/assets/stylesheets/my_admin/plugins/fullcalendar/fullcalendar.print.css +1 -0
  605. data/app/assets/stylesheets/my_admin/plugins/gmap/gmap3-menu.css.erb +44 -0
  606. data/app/assets/stylesheets/my_admin/plugins/gritter/jquery.gritter.css +1 -0
  607. data/app/assets/stylesheets/my_admin/plugins/icheck/all.css +61 -0
  608. data/app/assets/stylesheets/my_admin/plugins/icheck/flat/_all.css +540 -0
  609. data/app/assets/stylesheets/my_admin/plugins/icheck/flat/aero.css +54 -0
  610. data/app/assets/stylesheets/my_admin/plugins/icheck/flat/blue.css +54 -0
  611. data/app/assets/stylesheets/my_admin/plugins/icheck/flat/flat.css +54 -0
  612. data/app/assets/stylesheets/my_admin/plugins/icheck/flat/green.css +54 -0
  613. data/app/assets/stylesheets/my_admin/plugins/icheck/flat/grey.css +54 -0
  614. data/app/assets/stylesheets/my_admin/plugins/icheck/flat/orange.css +54 -0
  615. data/app/assets/stylesheets/my_admin/plugins/icheck/flat/pink.css +54 -0
  616. data/app/assets/stylesheets/my_admin/plugins/icheck/flat/purple.css +54 -0
  617. data/app/assets/stylesheets/my_admin/plugins/icheck/flat/red.css +54 -0
  618. data/app/assets/stylesheets/my_admin/plugins/icheck/flat/yellow.css +54 -0
  619. data/app/assets/stylesheets/my_admin/plugins/icheck/futurico/futurico.css +54 -0
  620. data/app/assets/stylesheets/my_admin/plugins/icheck/line/_all.css +650 -0
  621. data/app/assets/stylesheets/my_admin/plugins/icheck/line/aero.css +65 -0
  622. data/app/assets/stylesheets/my_admin/plugins/icheck/line/blue.css +65 -0
  623. data/app/assets/stylesheets/my_admin/plugins/icheck/line/green.css +65 -0
  624. data/app/assets/stylesheets/my_admin/plugins/icheck/line/grey.css +65 -0
  625. data/app/assets/stylesheets/my_admin/plugins/icheck/line/line.css +65 -0
  626. data/app/assets/stylesheets/my_admin/plugins/icheck/line/orange.css +65 -0
  627. data/app/assets/stylesheets/my_admin/plugins/icheck/line/pink.css +65 -0
  628. data/app/assets/stylesheets/my_admin/plugins/icheck/line/purple.css +65 -0
  629. data/app/assets/stylesheets/my_admin/plugins/icheck/line/red.css +65 -0
  630. data/app/assets/stylesheets/my_admin/plugins/icheck/line/yellow.css +65 -0
  631. data/app/assets/stylesheets/my_admin/plugins/icheck/minimal/_all.css +640 -0
  632. data/app/assets/stylesheets/my_admin/plugins/icheck/minimal/aero.css +64 -0
  633. data/app/assets/stylesheets/my_admin/plugins/icheck/minimal/blue.css +64 -0
  634. data/app/assets/stylesheets/my_admin/plugins/icheck/minimal/green.css +64 -0
  635. data/app/assets/stylesheets/my_admin/plugins/icheck/minimal/grey.css +64 -0
  636. data/app/assets/stylesheets/my_admin/plugins/icheck/minimal/minimal.css +64 -0
  637. data/app/assets/stylesheets/my_admin/plugins/icheck/minimal/orange.css +64 -0
  638. data/app/assets/stylesheets/my_admin/plugins/icheck/minimal/pink.css +64 -0
  639. data/app/assets/stylesheets/my_admin/plugins/icheck/minimal/purple.css +64 -0
  640. data/app/assets/stylesheets/my_admin/plugins/icheck/minimal/red.css +64 -0
  641. data/app/assets/stylesheets/my_admin/plugins/icheck/minimal/yellow.css +64 -0
  642. data/app/assets/stylesheets/my_admin/plugins/icheck/polaris/polaris.css +64 -0
  643. data/app/assets/stylesheets/my_admin/plugins/icheck/square/_all.css +640 -0
  644. data/app/assets/stylesheets/my_admin/plugins/icheck/square/aero.css +64 -0
  645. data/app/assets/stylesheets/my_admin/plugins/icheck/square/blue.css +64 -0
  646. data/app/assets/stylesheets/my_admin/plugins/icheck/square/green.css +64 -0
  647. data/app/assets/stylesheets/my_admin/plugins/icheck/square/grey.css +64 -0
  648. data/app/assets/stylesheets/my_admin/plugins/icheck/square/orange.css +64 -0
  649. data/app/assets/stylesheets/my_admin/plugins/icheck/square/pink.css +64 -0
  650. data/app/assets/stylesheets/my_admin/plugins/icheck/square/purple.css +64 -0
  651. data/app/assets/stylesheets/my_admin/plugins/icheck/square/red.css +64 -0
  652. data/app/assets/stylesheets/my_admin/plugins/icheck/square/square.css +64 -0
  653. data/app/assets/stylesheets/my_admin/plugins/icheck/square/yellow.css +64 -0
  654. data/app/assets/stylesheets/my_admin/plugins/jquery-ui/smoothness/images/animated-overlay.gif +0 -0
  655. data/app/assets/stylesheets/my_admin/plugins/jquery-ui/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  656. data/app/assets/stylesheets/my_admin/plugins/jquery-ui/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  657. data/app/assets/stylesheets/my_admin/plugins/jquery-ui/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  658. data/app/assets/stylesheets/my_admin/plugins/jquery-ui/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  659. data/app/assets/stylesheets/my_admin/plugins/jquery-ui/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  660. data/app/assets/stylesheets/my_admin/plugins/jquery-ui/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  661. data/app/assets/stylesheets/my_admin/plugins/jquery-ui/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  662. data/app/assets/stylesheets/my_admin/plugins/jquery-ui/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  663. data/app/assets/stylesheets/my_admin/plugins/jquery-ui/smoothness/images/ui-icons_222222_256x240.png +0 -0
  664. data/app/assets/stylesheets/my_admin/plugins/jquery-ui/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  665. data/app/assets/stylesheets/my_admin/plugins/jquery-ui/smoothness/images/ui-icons_454545_256x240.png +0 -0
  666. data/app/assets/stylesheets/my_admin/plugins/jquery-ui/smoothness/images/ui-icons_888888_256x240.png +0 -0
  667. data/app/assets/stylesheets/my_admin/plugins/jquery-ui/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  668. data/app/assets/stylesheets/my_admin/plugins/jquery-ui/smoothness/jquery-ui.css +1087 -0
  669. data/app/assets/stylesheets/my_admin/plugins/jquery-ui/smoothness/jquery.ui.theme.css +406 -0
  670. data/app/assets/stylesheets/my_admin/plugins/multiselect/multi-select.css.erb +93 -0
  671. data/app/assets/stylesheets/my_admin/plugins/pageguide/pageguide.css +647 -0
  672. data/app/assets/stylesheets/my_admin/plugins/plupload/jquery.plupload.queue.css.erb +176 -0
  673. data/app/assets/stylesheets/my_admin/plugins/select2/select2.css.erb +615 -0
  674. data/app/assets/stylesheets/my_admin/plugins/tagsinput/jquery.tagsinput.css +7 -0
  675. data/app/assets/stylesheets/my_admin/plugins/timepicker/bootstrap-timepicker.min.css +10 -0
  676. data/app/assets/stylesheets/my_admin/plugins/xeditable/bootstrap-editable.css +480 -0
  677. data/app/assets/stylesheets/my_admin/style.css.erb +7827 -0
  678. data/app/assets/stylesheets/my_admin/themes.css +3821 -0
  679. data/app/assets/stylesheets/my_admin.css +0 -0
  680. data/app/controllers/my_admin/configurations_controller.rb +22 -0
  681. data/app/controllers/my_admin/dashboards_controller.rb +15 -0
  682. data/app/controllers/my_admin/first_users_controller.rb +42 -0
  683. data/app/controllers/my_admin/models_controller.rb +205 -0
  684. data/app/controllers/my_admin/my_admin_controller.rb +53 -0
  685. data/app/controllers/my_admin/my_admin_groups_controller.rb +5 -0
  686. data/app/controllers/my_admin/my_admin_logs_controller.rb +3 -0
  687. data/app/controllers/my_admin/my_admin_users_controller.rb +3 -0
  688. data/app/controllers/my_admin/password_controller.rb +29 -0
  689. data/app/controllers/my_admin/recovers_controller.rb +61 -0
  690. data/app/controllers/my_admin/sessions_controller.rb +62 -0
  691. data/app/helpers/asset_package_helper.rb +37 -0
  692. data/app/helpers/my_admin_application_helper.rb +7 -0
  693. data/app/helpers/my_admin_field_helper.rb +179 -0
  694. data/app/helpers/my_admin_helper.rb +35 -0
  695. data/app/helpers/my_admin_log_helper.rb +7 -0
  696. data/app/helpers/my_admin_model_helper.rb +34 -0
  697. data/app/helpers/my_admin_session_helper.rb +50 -0
  698. data/app/mailers/my_admin/recover_mailer.rb +13 -0
  699. data/app/model/ckeditor/asset.rb +4 -0
  700. data/app/model/ckeditor/attachment_file.rb +13 -0
  701. data/app/model/ckeditor/picture.rb +14 -0
  702. data/app/model/my_admin/configuration.rb +10 -0
  703. data/app/model/my_admin/group.rb +26 -0
  704. data/app/model/my_admin/group_permission.rb +7 -0
  705. data/app/model/my_admin/locale.rb +8 -0
  706. data/app/model/my_admin/log.rb +33 -0
  707. data/app/model/my_admin/permission.rb +19 -0
  708. data/app/model/my_admin/user.rb +153 -0
  709. data/app/model/my_admin/user_group.rb +7 -0
  710. data/app/views/layouts/my_admin.html.erb +81 -0
  711. data/app/views/layouts/my_admin_locked.html.erb +44 -0
  712. data/app/views/layouts/my_admin_off.html.erb +72 -0
  713. data/app/views/my_admin/_dashboard.html.erb +0 -0
  714. data/app/views/my_admin/_header.html.erb +101 -0
  715. data/app/views/my_admin/_header.html.erb.old +42 -0
  716. data/app/views/my_admin/_left.html.erb +23 -0
  717. data/app/views/my_admin/configurations/_form.html.erb +31 -0
  718. data/app/views/my_admin/configurations/show.html.erb +17 -0
  719. data/app/views/my_admin/dashboards/index.html.erb +1 -0
  720. data/app/views/my_admin/fields/config/type/default.html.erb +18 -0
  721. data/app/views/my_admin/fields/config/type/text.html.erb +18 -0
  722. data/app/views/my_admin/fields/edit/type/belongs_to.html.erb +28 -0
  723. data/app/views/my_admin/fields/edit/type/boolean.html.erb +5 -0
  724. data/app/views/my_admin/fields/edit/type/clear_text.html.erb +8 -0
  725. data/app/views/my_admin/fields/edit/type/color.html.erb +1 -0
  726. data/app/views/my_admin/fields/edit/type/date.html.erb +3 -0
  727. data/app/views/my_admin/fields/edit/type/datetime.html.erb +11 -0
  728. data/app/views/my_admin/fields/edit/type/decimal.html.erb +3 -0
  729. data/app/views/my_admin/fields/edit/type/default.html.erb +4 -0
  730. data/app/views/my_admin/fields/edit/type/default_struct.html.erb +9 -0
  731. data/app/views/my_admin/fields/edit/type/email.html.erb +4 -0
  732. data/app/views/my_admin/fields/edit/type/file.html.erb +9 -0
  733. data/app/views/my_admin/fields/edit/type/float.html.erb +1 -0
  734. data/app/views/my_admin/fields/edit/type/has_and_belongs_to_many.html.erb +34 -0
  735. data/app/views/my_admin/fields/edit/type/has_many.html.erb +12 -0
  736. data/app/views/my_admin/fields/edit/type/has_many_edit.html.erb +79 -0
  737. data/app/views/my_admin/fields/edit/type/has_many_locale.html.erb +40 -0
  738. data/app/views/my_admin/fields/edit/type/has_many_locale_struct.html.erb +1 -0
  739. data/app/views/my_admin/fields/edit/type/integer.html.erb +3 -0
  740. data/app/views/my_admin/fields/edit/type/list.html.erb +23 -0
  741. data/app/views/my_admin/fields/edit/type/list_string.html.erb +19 -0
  742. data/app/views/my_admin/fields/edit/type/money.html.erb +7 -0
  743. data/app/views/my_admin/fields/edit/type/paperclip/attachment.html.erb +28 -0
  744. data/app/views/my_admin/fields/edit/type/password.html.erb +4 -0
  745. data/app/views/my_admin/fields/edit/type/read_only.html.erb +10 -0
  746. data/app/views/my_admin/fields/edit/type/text.html.erb +3 -0
  747. data/app/views/my_admin/fields/edit/type/time.html.erb +6 -0
  748. data/app/views/my_admin/fields/filter/type/belongs_to.html.erb +11 -0
  749. data/app/views/my_admin/fields/filter/type/boolean.html.erb +5 -0
  750. data/app/views/my_admin/fields/filter/type/date.html.erb +3 -0
  751. data/app/views/my_admin/fields/filter/type/datetime.html.erb +13 -0
  752. data/app/views/my_admin/fields/filter/type/default.html.erb +2 -0
  753. data/app/views/my_admin/fields/filter/type/default_struct.html.erb +7 -0
  754. data/app/views/my_admin/fields/filter/type/email.html.erb +5 -0
  755. data/app/views/my_admin/fields/filter/type/list.html.erb +11 -0
  756. data/app/views/my_admin/fields/filter/type/list_string.html.erb +11 -0
  757. data/app/views/my_admin/fields/type/big_decimal.html.erb +1 -0
  758. data/app/views/my_admin/fields/type/boolean.html.erb +5 -0
  759. data/app/views/my_admin/fields/type/color.html.erb +2 -0
  760. data/app/views/my_admin/fields/type/datetime.html.erb +1 -0
  761. data/app/views/my_admin/fields/type/decimal.html.erb +1 -0
  762. data/app/views/my_admin/fields/type/default.html.erb +1 -0
  763. data/app/views/my_admin/fields/type/file.html.erb +1 -0
  764. data/app/views/my_admin/fields/type/float.html.erb +1 -0
  765. data/app/views/my_admin/fields/type/has_many.html.erb +1 -0
  766. data/app/views/my_admin/fields/type/has_many_edit.html.erb +1 -0
  767. data/app/views/my_admin/fields/type/paperclip/attachment.html.erb +5 -0
  768. data/app/views/my_admin/first_users/new.html.erb +51 -0
  769. data/app/views/my_admin/models/_field.html.erb +9 -0
  770. data/app/views/my_admin/models/_filters.html.erb +43 -0
  771. data/app/views/my_admin/models/_form.html.erb +43 -0
  772. data/app/views/my_admin/models/_paginate.html.erb +9 -0
  773. data/app/views/my_admin/models/_popup_hint.html.erb +8 -0
  774. data/app/views/my_admin/models/edit.html.erb +9 -0
  775. data/app/views/my_admin/models/index.html.erb +116 -0
  776. data/app/views/my_admin/models/new.html.erb +9 -0
  777. data/app/views/my_admin/models/remote.js.erb +13 -0
  778. data/app/views/my_admin/password/edit.html.erb +58 -0
  779. data/app/views/my_admin/recover_mailer/send_recover_mail.html.erb +25 -0
  780. data/app/views/my_admin/recovers/new.html.erb +20 -0
  781. data/app/views/my_admin/recovers/show.html.erb +27 -0
  782. data/app/views/my_admin/sessions/new.html.erb +30 -0
  783. data/app/views/my_admin/sessions/unlock.html.erb +34 -0
  784. data/config/locales/en.yml +35 -0
  785. data/config/locales/es.yml +22 -0
  786. data/config/locales/pt.yml +210 -0
  787. data/config/routes.rb +52 -0
  788. data/lib/generators/my_admin/install/USAGE +8 -0
  789. data/lib/generators/my_admin/install/install_generator.rb +68 -0
  790. data/lib/generators/my_admin/install/templates/config/initializers/my_admin.rb +8 -0
  791. data/lib/generators/my_admin/install/templates/migrations/ckeditor_assets.rb +26 -0
  792. data/lib/generators/my_admin/install/templates/migrations/configurations.rb +22 -0
  793. data/lib/generators/my_admin/install/templates/migrations/group_permissions.rb +16 -0
  794. data/lib/generators/my_admin/install/templates/migrations/groups.rb +16 -0
  795. data/lib/generators/my_admin/install/templates/migrations/locales.rb +15 -0
  796. data/lib/generators/my_admin/install/templates/migrations/logs.rb +19 -0
  797. data/lib/generators/my_admin/install/templates/migrations/permissions.rb +15 -0
  798. data/lib/generators/my_admin/install/templates/migrations/user_groups.rb +16 -0
  799. data/lib/generators/my_admin/install/templates/migrations/users.rb +28 -0
  800. data/lib/generators/my_admin/install/templates/public/plugins/ckeditor/ckupload.php +35 -0
  801. data/lib/generators/my_admin/model/model_generator.rb +26 -0
  802. data/lib/generators/my_admin/model/templates/controllers/controller.rb +3 -0
  803. data/lib/generators/my_admin/permissions/permissions_generator.rb +26 -0
  804. data/lib/my_admin/active_record.rb +118 -0
  805. data/lib/my_admin/application.rb +62 -0
  806. data/lib/my_admin/breadcrumbs/my_admin.rb +44 -0
  807. data/lib/my_admin/ckeditor.rb +39 -0
  808. data/lib/my_admin/engine.rb +23 -0
  809. data/lib/my_admin/jsmin.rb +205 -0
  810. data/lib/my_admin/locales.rb +29 -0
  811. data/lib/my_admin/model_configuration.rb +53 -0
  812. data/lib/my_admin/paperclip.rb +4 -0
  813. data/lib/my_admin/paperclip_processors/cropper.rb +20 -0
  814. data/lib/my_admin/paperclip_processors/rotator.rb +25 -0
  815. data/lib/my_admin/string.rb +5 -0
  816. data/lib/my_admin/to_xls.rb +53 -0
  817. data/lib/my_admin/version.rb +3 -0
  818. data/lib/my_admin/will_paginate/bootstrap_link_renderer.rb +20 -0
  819. data/lib/my_admin/yml_manage.rb +41 -0
  820. data/lib/my_admin.rb +31 -0
  821. data/my_admin.gemspec +30 -0
  822. metadata +975 -0
@@ -0,0 +1,1450 @@
1
+ <?php
2
+
3
+ elFinder::$netDrivers['dropbox'] = 'Dropbox';
4
+
5
+ /**
6
+ * Simple elFinder driver for FTP
7
+ *
8
+ * @author Dmitry (dio) Levashov
9
+ * @author Cem (discofever)
10
+ **/
11
+ class elFinderVolumeDropbox extends elFinderVolumeDriver {
12
+
13
+ /**
14
+ * Driver id
15
+ * Must be started from letter and contains [a-z0-9]
16
+ * Used as part of volume id
17
+ *
18
+ * @var string
19
+ **/
20
+ protected $driverId = 'd';
21
+
22
+ /**
23
+ * OAuth object
24
+ *
25
+ * @var oauth
26
+ **/
27
+ protected $oauth = null;
28
+
29
+ /**
30
+ * Dropbox object
31
+ *
32
+ * @var dropbox
33
+ **/
34
+ protected $dropbox = null;
35
+
36
+ /**
37
+ * Directory for meta data caches
38
+ * If not set driver not cache meta data
39
+ *
40
+ * @var string
41
+ **/
42
+ protected $metaCache = '';
43
+
44
+ /**
45
+ * Meta Data Cache file
46
+ *
47
+ * @var array
48
+ **/
49
+ protected $metaCacheFile = '';
50
+
51
+ /**
52
+ * Meta Data Cache file
53
+ *
54
+ * @var array
55
+ **/
56
+ protected $metaCacheArr = '';
57
+
58
+ /**
59
+ * Last API error message
60
+ *
61
+ * @var string
62
+ **/
63
+ protected $apiError = '';
64
+
65
+ /**
66
+ * Directory for tmp files
67
+ * If not set driver will try to use tmbDir as tmpDir
68
+ *
69
+ * @var string
70
+ **/
71
+ protected $tmp = '';
72
+
73
+ /**
74
+ * Net mount key
75
+ *
76
+ * @var string
77
+ **/
78
+ public $netMountKey = '';
79
+
80
+ /**
81
+ * Dropbox.com uid
82
+ *
83
+ * @var string
84
+ **/
85
+ protected $dropboxUid = '';
86
+
87
+ /**
88
+ * Meta Data Cache
89
+ *
90
+ * @var array
91
+ **/
92
+ protected $metaDataCache = array();
93
+
94
+ private $dropbox_phpFound = false;
95
+
96
+ /**
97
+ * Constructor
98
+ * Extend options with required fields
99
+ *
100
+ * @return void
101
+ * @author Dmitry (dio) Levashov
102
+ * @author Cem (DiscoFever)
103
+ **/
104
+ public function __construct() {
105
+
106
+ @ include 'Dropbox/autoload.php';
107
+ $this->dropbox_phpFound = in_array('Dropbox_autoload', spl_autoload_functions());
108
+
109
+ $opts = array(
110
+ 'consumerKey' => '',
111
+ 'consumerSecret' => '',
112
+ 'accessToken' => '',
113
+ 'accessTokenSecret' => '',
114
+ 'dropboxUid' => '',
115
+ 'root' => 'dropbox',
116
+ 'path' => '/',
117
+ 'treeDeep' => 0,
118
+ 'tmbPath' => '../files/.tmb',
119
+ 'tmbURL' => 'files/.tmb',
120
+ 'tmpPath' => '',
121
+ 'getTmbSize' => 'medium', // small: 32x32, medium or s: 64x64, large or m: 128x128, l: 640x480, xl: 1024x768
122
+ 'metaCachePath' => '',
123
+ 'metaCacheTime' => '600', // 10m
124
+ 'acceptedName' => '#^[^/\\?*:|"<>]*[^./\\?*:|"<>]$#'
125
+ );
126
+ $this->options = array_merge($this->options, $opts);
127
+ $this->options['mimeDetect'] = 'internal';
128
+ }
129
+
130
+ /**
131
+ * Prepare
132
+ * Call from elFinder::netmout() before volume->mount()
133
+ *
134
+ * @return Array
135
+ * @author Naoki Sawada
136
+ **/
137
+ public function netmountPrepare($options) {
138
+ if (empty($options['consumerKey']) && defined('ELFINDER_DROPBOX_CONSUMERKEY')) $options['consumerKey'] = ELFINDER_DROPBOX_CONSUMERKEY;
139
+ if (empty($options['consumerSecret']) && defined('ELFINDER_DROPBOX_CONSUMERSECRET')) $options['consumerSecret'] = ELFINDER_DROPBOX_CONSUMERSECRET;
140
+
141
+ if ($options['user'] === 'init') {
142
+
143
+ if (! $this->dropbox_phpFound || empty($options['consumerKey']) || empty($options['consumerSecret'])) {
144
+ return array('exit' => true, 'body' => '{msg:errNetMountNoDriver}');
145
+ }
146
+
147
+ if (class_exists('OAuth')) {
148
+ $this->oauth = new Dropbox_OAuth_PHP($options['consumerKey'], $options['consumerSecret']);
149
+ } else {
150
+ if (! class_exists('HTTP_OAuth_Consumer')) {
151
+ // We're going to try to load in manually
152
+ include 'HTTP/OAuth/Consumer.php';
153
+ }
154
+ if (class_exists('HTTP_OAuth_Consumer')) {
155
+ $this->oauth = new Dropbox_OAuth_PEAR($options['consumerKey'], $options['consumerSecret']);
156
+ }
157
+ }
158
+
159
+ if (! $this->oauth) {
160
+ return array('exit' => true, 'body' => '{msg:errNetMountNoDriver}');
161
+ }
162
+
163
+ if ($options['pass'] === 'init') {
164
+ $html = '';
165
+ if (isset($_SESSION['elFinderDropboxTokens'])) {
166
+ // token check
167
+ try {
168
+ list(, $accessToken, $accessTokenSecret) = $_SESSION['elFinderDropboxTokens'];
169
+ $this->oauth->setToken($accessToken, $accessTokenSecret);
170
+ $this->dropbox = new Dropbox_API($this->oauth, $this->options['root']);
171
+ $this->dropbox->getAccountInfo();
172
+ $script = '<script>
173
+ $("#elfinder-cmd-netmout-dropbox-host").html("Dropbox.com");
174
+ $("#elfinder-cmd-netmout-dropbox-user").val("done");
175
+ $("#elfinder-cmd-netmout-dropbox-pass").val("done");
176
+ </script>';
177
+ $html = 'Dropbox.com'.$script;
178
+ } catch (Dropbox_Exception $e) {
179
+ unset($_SESSION['elFinderDropboxTokens']);
180
+ }
181
+ }
182
+ if (! $html) {
183
+ if (strpos($options['url'], 'http') !== 0 ) {
184
+ $options['url'] = $this->getConnectorUrl();
185
+ }
186
+ $callback = $options['url']
187
+ . '?cmd=netmount&protocol=dropbox&host=dropbox.com&user=init&pass=return';
188
+
189
+ try {
190
+ $tokens = $this->oauth->getRequestToken();
191
+ $url= $this->oauth->getAuthorizeUrl(rawurlencode($callback));
192
+ } catch (Dropbox_Exception $e) {
193
+ return array('exit' => true, 'body' => '{msg:errAccess}');
194
+ }
195
+
196
+ $_SESSION['elFinderDropboxAuthTokens'] = $tokens;
197
+ $html = '<input class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="{msg:btnApprove}" type="button" onclick="window.open(\''.$url.'\')">';
198
+ }
199
+ return array('exit' => true, 'body' => $html);
200
+ } else {
201
+ $this->oauth->setToken($_SESSION['elFinderDropboxAuthTokens']);
202
+ unset($_SESSION['elFinderDropboxAuthTokens']);
203
+ $tokens = $this->oauth->getAccessToken();
204
+ $_SESSION['elFinderDropboxTokens'] = array($_GET['uid'], $tokens['token'], $tokens['token_secret']);
205
+ $script = '
206
+ var p = window.opener;
207
+ p.$("#elfinder-cmd-netmout-dropbox-host").html("Dropbox.com");
208
+ p.$("#elfinder-cmd-netmout-dropbox-user").val("done");
209
+ p.$("#elfinder-cmd-netmout-dropbox-pass").val("done");
210
+ window.close();';
211
+
212
+ $out = '<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><script>'.$script.'</script></head><body><a href="#" onlick="window.close();return false;">Close this window</a></body></html>';
213
+
214
+ while( ob_get_level() ) {
215
+ if (! ob_end_clean()) {
216
+ break;
217
+ }
218
+ }
219
+
220
+ header('Content-Type: text/html; charset=utf-8');
221
+ header('Content-Length: '.strlen($out));
222
+ header('Cache-Control: private');
223
+ header('Pragma: no-cache');
224
+ echo $out;
225
+
226
+ exit();
227
+ }
228
+ }
229
+ if (isset($_SESSION['elFinderDropboxTokens'])) {
230
+ list($options['dropboxUid'], $options['accessToken'], $options['accessTokenSecret']) = $_SESSION['elFinderDropboxTokens'];
231
+ }
232
+ unset($options['user'], $options['pass']);
233
+ return $options;
234
+ }
235
+
236
+ /**
237
+ * Get script url
238
+ *
239
+ * @return string full URL
240
+ * @author Naoki Sawada
241
+ */
242
+ private function getConnectorUrl() {
243
+ $url = ((isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off')? 'https://' : 'http://')
244
+ . $_SERVER['SERVER_NAME'] // host
245
+ . ($_SERVER['SERVER_PORT'] == 80 ? '' : ':' . $_SERVER['SERVER_PORT']) // port
246
+ . $_SERVER['REQUEST_URI']; // path & query
247
+ list($url) = explode('?', $url);
248
+ return $url;
249
+ }
250
+
251
+ /**
252
+ * Clear meta data cache
253
+ *
254
+ * @param string $path
255
+ * @author Naoki Sawada
256
+ */
257
+ private function metaCacheClear($path) {
258
+ $parent = $this->_dirname($path);
259
+ unset($this->metaDataCache[$parent], $this->metaDataCache[$path]);
260
+ }
261
+
262
+ /**
263
+ * Get meta cache and set to $this->metaCacheArr
264
+ *
265
+ * @param bool $refresh need refresh
266
+ * @author Naoki Sawada
267
+ */
268
+ private function metaCacheGet($refresh = false) {
269
+ $data = false;
270
+ if ($data = @file_get_contents($this->metaCacheFile)) {
271
+ if (function_exists('gzcompress') && function_exists('gzuncompress')) {
272
+ $data = @unserialize(gzuncompress($data));
273
+ } else {
274
+ $data = @unserialize(base64_decode($data));
275
+ }
276
+ if (!$data) {
277
+ @unlink($this->metaCacheFile);
278
+ }
279
+ }
280
+ if (! $data || !isset($data['data'])) {
281
+ $this->metaCacheArr = array();
282
+ $this->deltaCheck();
283
+ } else {
284
+ $this->metaCacheArr = $data;
285
+ if ($refresh || ($data['mtime'] + $this->options['metaCacheTime']) < $_SERVER['REQUEST_TIME']) {
286
+ $this->deltaCheck();
287
+ }
288
+ }
289
+
290
+ }
291
+
292
+ /**
293
+ * Save meta data to file cache
294
+ *
295
+ * @author Naoki Sawada
296
+ */
297
+ private function mataCacheSave() {
298
+ if (function_exists('gzcompress') && function_exists('gzuncompress')) {
299
+ $data = gzcompress(serialize($this->metaCacheArr));
300
+ } else {
301
+ $data = base64_encode(serialize($this->metaCacheArr));
302
+ }
303
+ file_put_contents($this->metaCacheFile, $data, LOCK_EX);
304
+ }
305
+
306
+ /*********************************************************************/
307
+ /* INIT AND CONFIGURE */
308
+ /*********************************************************************/
309
+
310
+ /**
311
+ * Prepare FTP connection
312
+ * Connect to remote server and check if credentials are correct, if so, store the connection id in $ftp_conn
313
+ *
314
+ * @return bool
315
+ * @author Dmitry (dio) Levashov
316
+ * @author Cem (DiscoFever)
317
+ **/
318
+ protected function init() {
319
+ if (!$this->options['consumerKey']
320
+ || !$this->options['consumerSecret']
321
+ || !$this->options['accessToken']
322
+ || !$this->options['accessTokenSecret']) {
323
+ return $this->setError('Required options undefined.');
324
+ }
325
+
326
+ // make net mount key
327
+ $this->netMountKey = md5(join('-', array('dropbox', $this->options['path'])));
328
+
329
+ if (! $this->oauth) {
330
+ if (class_exists('OAuth')) {
331
+ $this->oauth = new Dropbox_OAuth_PHP($this->options['consumerKey'], $this->options['consumerSecret']);
332
+ } else {
333
+ if (! class_exists('HTTP_OAuth_Consumer')) {
334
+ // We're going to try to load in manually
335
+ include 'HTTP/OAuth/Consumer.php';
336
+ }
337
+ if (class_exists('HTTP_OAuth_Consumer')) {
338
+ $this->oauth = new Dropbox_OAuth_PEAR($this->options['consumerKey'], $this->options['consumerSecret']);
339
+ }
340
+ }
341
+ }
342
+
343
+ if (! $this->oauth) {
344
+ return $this->setError('OAuth extension not loaded.');
345
+ }
346
+
347
+ // normalize root path
348
+ $this->root = $this->options['path'] = $this->_normpath($this->options['path']);
349
+
350
+ if (empty($this->options['alias'])) {
351
+ $this->options['alias'] = ($this->options['path'] === '/')? 'Dropbox.com' : 'Dropbox'.$this->options['path'];
352
+ }
353
+
354
+ $this->rootName = $this->options['alias'];
355
+ $this->options['separator'] = '/';
356
+
357
+ try {
358
+ $this->oauth->setToken($this->options['accessToken'], $this->options['accessTokenSecret']);
359
+ $this->dropbox = new Dropbox_API($this->oauth, $this->options['root']);
360
+ } catch (Dropbox_Exception $e) {
361
+ unset($_SESSION['elFinderDropboxTokens']);
362
+ return $this->setError('Dropbox error: '.$e->getMessage());
363
+ }
364
+
365
+ // user
366
+ if (empty($this->options['dropboxUid'])) {
367
+ try {
368
+ $res = $this->dropbox->getAccountInfo();
369
+ $this->options['dropboxUid'] = $res['uid'];
370
+ } catch (Dropbox_Exception $e) {
371
+ unset($_SESSION['elFinderDropboxTokens']);
372
+ return $this->setError('Dropbox error: '.$e->getMessage());
373
+ }
374
+ }
375
+ $this->dropboxUid = $this->options['dropboxUid'];
376
+
377
+ if (!empty($this->options['tmpPath'])) {
378
+ if ((is_dir($this->options['tmpPath']) || @mkdir($this->options['tmpPath'])) && is_writable($this->options['tmpPath'])) {
379
+ $this->tmp = $this->options['tmpPath'];
380
+ }
381
+ }
382
+ if (!$this->tmp && is_writable($this->options['tmbPath'])) {
383
+ $this->tmp = $this->options['tmbPath'];
384
+ }
385
+
386
+ if (!empty($this->options['metaCachePath'])) {
387
+ if ((is_dir($this->options['metaCachePath']) || @mkdir($this->options['metaCachePath'])) && is_writable($this->options['metaCachePath'])) {
388
+ $this->metaCache = $this->options['metaCachePath'];
389
+ }
390
+ }
391
+ if (!$this->metaCache && $this->tmp) {
392
+ $this->metaCache = $this->tmp;
393
+ }
394
+
395
+ if (!$this->tmp) {
396
+ $this->disabled[] = 'archive';
397
+ $this->disabled[] = 'extract';
398
+ }
399
+
400
+ if (!$this->metaCache) {
401
+ return $this->setError('Cache dirctory (metaCachePath or tmp) is require.');
402
+ }
403
+
404
+ $this->metaCacheFile = $this->metaCache.DIRECTORY_SEPARATOR.'.elFinder_dropbox_metaCache_'.md5($this->dropboxUid.$this->options['consumerSecret']);
405
+
406
+ $this->metaCacheGet(!empty($_REQUEST['init']));
407
+
408
+ return true;
409
+ }
410
+
411
+
412
+ /**
413
+ * Configure after successfull mount.
414
+ *
415
+ * @return void
416
+ * @author Dmitry (dio) Levashov
417
+ **/
418
+ protected function configure() {
419
+ parent::configure();
420
+
421
+ if (!$this->tmp) {
422
+ $this->disabled[] = 'archive';
423
+ $this->disabled[] = 'extract';
424
+ }
425
+ }
426
+
427
+ /*********************************************************************/
428
+ /* FS API */
429
+ /*********************************************************************/
430
+
431
+ /**
432
+ * Close opened connection
433
+ *
434
+ * @return void
435
+ * @author Dmitry (dio) Levashov
436
+ **/
437
+ public function umount() {
438
+
439
+ }
440
+
441
+ /**
442
+ * Get local temp filename
443
+ *
444
+ * @return string | false
445
+ * @author Naoki Sawada
446
+ **/
447
+ protected function getLocalName($path) {
448
+ if ($this->tmp) {
449
+ return $this->tmp.DIRECTORY_SEPARATOR.md5($this->dropboxUid.$path);
450
+ }
451
+ return false;
452
+ }
453
+
454
+ protected function deltaCheck() {
455
+
456
+ $cache = $this->metaCacheArr;
457
+
458
+ $cursor = '';
459
+ if (!$cache) {
460
+ $cache = array('cursor' => '', 'data' => array());
461
+ $cache['data']['/'] = array(
462
+ 'path' => '/',
463
+ 'is_dir' => 1,
464
+ 'mime_type' => '',
465
+ 'bytes' => 0
466
+ );
467
+ } else if (isset($cache['cursor'])) {
468
+ $cursor = $cache['cursor'];
469
+ }
470
+
471
+ try {
472
+ $more = true;
473
+ $info = array('cursor' => $cursor, 'entries' => array());
474
+ do {
475
+ $_info = $this->dropbox->delta($cursor);
476
+ $info['entries'] += $_info['entries'];
477
+ $cursor = $_info['cursor'];
478
+ } while(! empty($_info['has_more']));
479
+ } catch(Dropbox_Exception $e) {
480
+ $info = $e->getMessage();
481
+ }
482
+ $info['cursor'] = $cursor;
483
+
484
+ $entries = $info['entries'];
485
+
486
+ $cache['cursor'] = $info['cursor'];
487
+ foreach($entries as $entry) {
488
+ $key = strtolower($entry[0]);
489
+ $pkey = strtolower(dirname($key));
490
+ if (empty($entry[1])) {
491
+ if (isset($cache['data'][$key]) && !empty($cache['data'][$key]['is_dir'])) {
492
+ $cache['data'][$pkey]['dirs']--;
493
+ }
494
+ unset($cache['data'][$pkey]['contents'][$key], $cache['data'][$key]);
495
+ continue;
496
+ }
497
+ if (!isset($cache['data'][$pkey])) {
498
+ $cache['data'][$pkey] = array();
499
+ } else {
500
+ unset($cache['data'][$key]['width'], $cache['data'][$key]['height']);
501
+ }
502
+ if (!empty($entry[1]['is_dir'])) {
503
+ if (!isset($cache['data'][$pkey]['dirs'])) {
504
+ $cache['data'][$pkey]['dirs'] = 1;
505
+ } else {
506
+ $cache['data'][$pkey]['dirs']++;
507
+ }
508
+ }
509
+ $cache['data'][$pkey]['contents'][$key] = true;
510
+ $cache['data'][$key] = $entry[1];
511
+ }
512
+ $cache['mtime'] = $_SERVER['REQUEST_TIME'];
513
+
514
+ $this->metaCacheArr = $cache;
515
+ $this->mataCacheSave();
516
+ }
517
+
518
+ /**
519
+ * Parse line from dropbox metadata output and return file stat (array)
520
+ *
521
+ * @param string $raw line from ftp_rawlist() output
522
+ * @return array
523
+ * @author Dmitry Levashov
524
+ **/
525
+ protected function parseRaw($raw) {
526
+ $stat = array();
527
+
528
+ $stat['rev'] = isset($raw['rev'])? $raw['rev'] : 'root';
529
+ $stat['name'] = basename($raw['path']);
530
+ $stat['mime'] = $raw['is_dir']? 'directory' : $raw['mime_type'];
531
+ $stat['size'] = $stat['mime'] == 'directory' ? 0 : $raw['bytes'];
532
+ $stat['ts'] = isset($raw['client_mtime'])? strtotime($raw['client_mtime']) :
533
+ (isset($raw['modified'])? strtotime($raw['modified']) : $_SERVER['REQUEST_TIME']);
534
+ $stat['dirs'] = ($raw['is_dir'] && !empty($raw['dirs']))? 1 : 0;
535
+ if (isset($raw['url'])) {
536
+ $stat['url'] = $raw['url'];
537
+ } else {
538
+ $stat['url'] = '1';
539
+ }
540
+ if (isset($raw['width'])) $stat['width'] = $raw['width'];
541
+ if (isset($raw['height'])) $stat['height'] = $raw['height'];
542
+
543
+ return $stat;
544
+ }
545
+
546
+ /**
547
+ * Cache dir contents
548
+ *
549
+ * @param string $path dir path
550
+ * @return void
551
+ * @author Dmitry Levashov
552
+ **/
553
+ protected function cacheDir($path) {
554
+ $this->dirsCache[$path] = array();
555
+ $res = $this->metaCacheArr['data'][strtolower($path)];
556
+
557
+ if (! empty($res['contents'])) {
558
+ foreach(array_keys($res['contents']) as $_path) {
559
+ $raw = $this->metaCacheArr['data'][strtolower($_path)];
560
+ if ($stat = $this->parseRaw($raw)) {
561
+ $stat = $this->updateCache($_path, $stat);
562
+ if (empty($stat['hidden'])) {
563
+ $this->dirsCache[$path][] = $raw['path'];
564
+ }
565
+ }
566
+ }
567
+ }
568
+ return $this->dirsCache[$path];
569
+ }
570
+
571
+ /**
572
+ * Clean cache
573
+ *
574
+ * @return void
575
+ * @author Dmitry (dio) Levashov
576
+ **/
577
+ protected function clearcache() {
578
+ parent::clearcache();
579
+ $this->metaDataCache = array();
580
+ }
581
+
582
+ /**
583
+ * Recursive files search
584
+ *
585
+ * @param string $path dir path
586
+ * @param string $q search string
587
+ * @param array $mimes
588
+ * @return array
589
+ * @author Naoki Sawada
590
+ **/
591
+ protected function doSearch($path, $q, $mimes) {
592
+
593
+ $result = array();
594
+
595
+ try {
596
+ if ($path === '/') $path = '';
597
+ $res = $this->dropbox->search($q, null, $path);
598
+ } catch (Dropbox_Exception $e) {
599
+ return $this->setError('Dropbox error: '.$e->getMessage());
600
+ }
601
+
602
+ if ($res) {
603
+ foreach($res as $raw) {
604
+ if ($stat = $this->parseRaw($raw)) {
605
+ if ($stat['mime'] === 'directory' || !$this->mimeAccepted($stat['mime'], $mimes)) {
606
+ continue;
607
+ }
608
+ $result[] = $this->stat($raw['path']);
609
+ }
610
+ }
611
+ }
612
+
613
+ return $result;
614
+ }
615
+
616
+ /**
617
+ * Copy file/recursive copy dir only in current volume.
618
+ * Return new file path or false.
619
+ *
620
+ * @param string $src source path
621
+ * @param string $dst destination dir path
622
+ * @param string $name new file name (optionaly)
623
+ * @return string|false
624
+ * @author Dmitry (dio) Levashov
625
+ * @author Naoki Sawada
626
+ **/
627
+ protected function copy($src, $dst, $name) {
628
+
629
+ $this->clearcache();
630
+
631
+ return $this->_copy($src, $dst, $name)
632
+ ? $this->_joinPath($dst, $name)
633
+ : $this->setError(elFinder::ERROR_COPY, $this->_path($src));
634
+ }
635
+
636
+ /**
637
+ * Remove file/ recursive remove dir
638
+ *
639
+ * @param string $path file path
640
+ * @param bool $force try to remove even if file locked
641
+ * @return bool
642
+ * @author Dmitry (dio) Levashov
643
+ * @author Naoki Sawada
644
+ **/
645
+ protected function remove($path, $force = false, $recursive = false) {
646
+ $stat = $this->stat($path);
647
+ $stat['realpath'] = $path;
648
+ $this->rmTmb($stat);
649
+ $this->clearcache();
650
+
651
+ if (empty($stat)) {
652
+ return $this->setError(elFinder::ERROR_RM, $this->_path($path), elFinder::ERROR_FILE_NOT_FOUND);
653
+ }
654
+
655
+ if (!$force && !empty($stat['locked'])) {
656
+ return $this->setError(elFinder::ERROR_LOCKED, $this->_path($path));
657
+ }
658
+
659
+ if ($stat['mime'] == 'directory') {
660
+ foreach ($this->_scandir($path) as $p) {
661
+ $name = $this->_basename($p);
662
+ if ($name != '.' && $name != '..' && !$this->remove($p, false, true)) {
663
+ return false;
664
+ }
665
+ }
666
+ if (!$recursive && !$this->_rmdir($path)) {
667
+ return $this->setError(elFinder::ERROR_RM, $this->_path($path));
668
+ }
669
+
670
+ } else {
671
+ if (!$recursive && !$this->_unlink($path)) {
672
+ return $this->setError(elFinder::ERROR_RM, $this->_path($path));
673
+ }
674
+ }
675
+
676
+ $this->removed[] = $stat;
677
+ return true;
678
+ }
679
+
680
+ /**
681
+ * Resize image
682
+ *
683
+ * @param string $hash image file
684
+ * @param int $width new width
685
+ * @param int $height new height
686
+ * @param int $x X start poistion for crop
687
+ * @param int $y Y start poistion for crop
688
+ * @param string $mode action how to mainpulate image
689
+ * @return array|false
690
+ * @author Dmitry (dio) Levashov
691
+ * @author Alexey Sukhotin
692
+ * @author nao-pon
693
+ * @author Troex Nevelin
694
+ **/
695
+ public function resize($hash, $width, $height, $x, $y, $mode = 'resize', $bg = '', $degree = 0) {
696
+ if ($this->commandDisabled('resize')) {
697
+ return $this->setError(elFinder::ERROR_PERM_DENIED);
698
+ }
699
+
700
+ if (($file = $this->file($hash)) == false) {
701
+ return $this->setError(elFinder::ERROR_FILE_NOT_FOUND);
702
+ }
703
+
704
+ if (!$file['write'] || !$file['read']) {
705
+ return $this->setError(elFinder::ERROR_PERM_DENIED);
706
+ }
707
+
708
+ $path = $this->decode($hash);
709
+
710
+ if (!$this->canResize($path, $file)) {
711
+ return $this->setError(elFinder::ERROR_UNSUPPORT_TYPE);
712
+ }
713
+
714
+ $path4stat = $path;
715
+ if (! $path = $this->getLocalName($path)) {
716
+ return false;
717
+ }
718
+
719
+ //if (! $contents = $this->getThumbnail($path4stat, $this->options['getTmbSize'])) {
720
+ if (! $contents = $this->_getContents($path4stat)) {
721
+ return false;
722
+ }
723
+
724
+ if (! @ file_put_contents($path, $contents, LOCK_EX)) {
725
+ return false;
726
+ }
727
+
728
+ switch($mode) {
729
+
730
+ case 'propresize':
731
+ $result = $this->imgResize($path, $width, $height, true, true);
732
+ break;
733
+
734
+ case 'crop':
735
+ $result = $this->imgCrop($path, $width, $height, $x, $y);
736
+ break;
737
+
738
+ case 'fitsquare':
739
+ $result = $this->imgSquareFit($path, $width, $height, 'center', 'middle', ($bg ? $bg : $this->options['tmbBgColor']));
740
+ break;
741
+
742
+ case 'rotate':
743
+ $result = $this->imgRotate($path, $degree, ($bg ? $bg : $this->options['tmbBgColor']));
744
+ break;
745
+
746
+ default:
747
+ $result = $this->imgResize($path, $width, $height, false, true);
748
+ break;
749
+ }
750
+
751
+ if ($result && $fp = @fopen($path, 'rb')) {
752
+
753
+ clearstatcache();
754
+ $res = $this->_save($fp, $path4stat, array());
755
+ @fclose($fp);
756
+
757
+ file_exists($path) && @unlink($path);
758
+
759
+ $this->rmTmb($file);
760
+ $this->clearcache();
761
+ return $this->stat($path4stat);
762
+ }
763
+
764
+ is_file($path) && @unlink($path);
765
+
766
+ return false;
767
+ }
768
+
769
+ /**
770
+ * Create thumnbnail and return it's URL on success
771
+ *
772
+ * @param string $path file path
773
+ * @param string $mime file mime type
774
+ * @return string|false
775
+ * @author Dmitry (dio) Levashov
776
+ * @author Naoki Sawada
777
+ **/
778
+ protected function createTmb($path, $stat) {
779
+ if (!$stat || !$this->canCreateTmb($path, $stat)) {
780
+ return false;
781
+ }
782
+
783
+ $name = $this->tmbname($stat);
784
+ $tmb = $this->tmbPath.DIRECTORY_SEPARATOR.$name;
785
+
786
+ // copy image into tmbPath so some drivers does not store files on local fs
787
+ if (! $data = $this->getThumbnail($path, $this->options['getTmbSize'])) {
788
+ return false;
789
+ }
790
+ if (! file_put_contents($tmb, $data)) {
791
+ return false;
792
+ }
793
+
794
+ $result = false;
795
+
796
+ $tmbSize = $this->tmbSize;
797
+
798
+ if (($s = getimagesize($tmb)) == false) {
799
+ return false;
800
+ }
801
+
802
+ /* If image smaller or equal thumbnail size - just fitting to thumbnail square */
803
+ if ($s[0] <= $tmbSize && $s[1] <= $tmbSize) {
804
+ $result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png' );
805
+
806
+ } else {
807
+
808
+ if ($this->options['tmbCrop']) {
809
+
810
+ /* Resize and crop if image bigger than thumbnail */
811
+ if (!(($s[0] > $tmbSize && $s[1] <= $tmbSize) || ($s[0] <= $tmbSize && $s[1] > $tmbSize) ) || ($s[0] > $tmbSize && $s[1] > $tmbSize)) {
812
+ $result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, false, 'png');
813
+ }
814
+
815
+ if (($s = getimagesize($tmb)) != false) {
816
+ $x = $s[0] > $tmbSize ? intval(($s[0] - $tmbSize)/2) : 0;
817
+ $y = $s[1] > $tmbSize ? intval(($s[1] - $tmbSize)/2) : 0;
818
+ $result = $this->imgCrop($tmb, $tmbSize, $tmbSize, $x, $y, 'png');
819
+ }
820
+
821
+ } else {
822
+ $result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, true, $this->imgLib, 'png');
823
+ $result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png' );
824
+ }
825
+
826
+ }
827
+ if (!$result) {
828
+ unlink($tmb);
829
+ return false;
830
+ }
831
+
832
+ return $name;
833
+ }
834
+
835
+ /**
836
+ * Return thumbnail file name for required file
837
+ *
838
+ * @param array $stat file stat
839
+ * @return string
840
+ * @author Dmitry (dio) Levashov
841
+ **/
842
+ protected function tmbname($stat) {
843
+ return 'dropbox_'.$stat['rev'].'.png';
844
+ }
845
+
846
+ /**
847
+ * Get thumbnail from dropbox.com
848
+ * @param string $path
849
+ * @param string $size
850
+ * @return string | boolean
851
+ */
852
+ protected function getThumbnail($path, $size = 'small') {
853
+ try {
854
+ return $this->dropbox->getThumbnail($path, $size);
855
+ } catch (Dropbox_Exception $e) {
856
+ return false;
857
+ }
858
+ }
859
+
860
+ /**
861
+ * Return content URL
862
+ *
863
+ * @param string $hash file hash
864
+ * @param array $options options
865
+ * @return array
866
+ * @author Naoki Sawada
867
+ **/
868
+ public function getContentUrl($hash, $options = array()) {
869
+ if (($file = $this->file($hash)) == false || !$file['url'] || $file['url'] == 1) {
870
+ $path = $this->decode($hash);
871
+ $cache =& $this->metaCacheArr['data'][strtolower($path)];
872
+ $url = '';
873
+ if (isset($cache['share'])) {
874
+ $res = $this->getHttpResponseHeader($cache['share']);
875
+ if (preg_match("/^HTTP\/[01\.]+ ([0-9]{3})/", $res, $match)) {
876
+ if (preg_match('/^location:\s*(http[^\s]+)/im', $res, $match)) {
877
+ $url = $match[1];
878
+ } else if ($match[1] >= 400) {
879
+ $url = '';
880
+ }
881
+ } else {
882
+ $url = '';
883
+ }
884
+ }
885
+ if (! $url) {
886
+ try {
887
+ $res = $this->dropbox->share($path);
888
+ $res = $this->getHttpResponseHeader($res['url']);
889
+ if (preg_match('/^location:\s*(http[^\s]+)/im', $res, $match)) {
890
+ $url = $match[1] . '?dl=1';
891
+ }
892
+ if ($url) {
893
+ $cache['share'] = $url;
894
+ $this->mataCacheSave();
895
+ $res = $this->getHttpResponseHeader($url);
896
+ if (preg_match('/^location:\s*(http[^\s]+)/im', $res, $match)) {
897
+ $url = $match[1];
898
+ }
899
+ }
900
+ } catch (Dropbox_Exception $e) {
901
+ return false;
902
+ }
903
+ }
904
+ return $url;
905
+ }
906
+ return $file['url'];
907
+ }
908
+
909
+ /**
910
+ * Get HTTP request response header string
911
+ *
912
+ * @param string $url target URL
913
+ * @return string
914
+ * @author Naoki Sawada
915
+ */
916
+ private function getHttpResponseHeader($url) {
917
+ if (function_exists('curl_exec')) {
918
+
919
+ $c = curl_init();
920
+ curl_setopt( $c, CURLOPT_RETURNTRANSFER, true );
921
+ curl_setopt( $c, CURLOPT_CUSTOMREQUEST, 'HEAD' );
922
+ curl_setopt( $c, CURLOPT_HEADER, 1 );
923
+ curl_setopt( $c, CURLOPT_NOBODY, true );
924
+ curl_setopt( $c, CURLOPT_URL, $url );
925
+ $res = curl_exec( $c );
926
+
927
+ } else {
928
+
929
+ require_once 'HTTP/Request2.php';
930
+ try {
931
+ $request2 = new HTTP_Request2();
932
+ $request2->setConfig(array(
933
+ 'ssl_verify_peer' => false,
934
+ 'ssl_verify_host' => false
935
+ ));
936
+ $request2->setUrl($url);
937
+ $request2->setMethod(HTTP_Request2::METHOD_HEAD);
938
+ $result = $request2->send();
939
+ $res = array();
940
+ $res[] = 'HTTP/'.$result->getVersion().' '.$result->getStatus().' '.$result->getReasonPhrase();
941
+ foreach($result->getHeader() as $key => $val) {
942
+ $res[] = $key . ': ' . $val;
943
+ }
944
+ $res = join("\r\n", $res);
945
+ } catch( HTTP_Request2_Exception $e ){
946
+ $res = '';
947
+ } catch (Exception $e){
948
+ $res = '';
949
+ }
950
+
951
+ }
952
+ return $res;
953
+ }
954
+
955
+ /*********************** paths/urls *************************/
956
+
957
+ /**
958
+ * Return parent directory path
959
+ *
960
+ * @param string $path file path
961
+ * @return string
962
+ * @author Dmitry (dio) Levashov
963
+ **/
964
+ protected function _dirname($path) {
965
+ return dirname($path);
966
+ }
967
+
968
+ /**
969
+ * Return file name
970
+ *
971
+ * @param string $path file path
972
+ * @return string
973
+ * @author Dmitry (dio) Levashov
974
+ **/
975
+ protected function _basename($path) {
976
+ return basename($path);
977
+ }
978
+
979
+ /**
980
+ * Join dir name and file name and retur full path
981
+ *
982
+ * @param string $dir
983
+ * @param string $name
984
+ * @return string
985
+ * @author Dmitry (dio) Levashov
986
+ **/
987
+ protected function _joinPath($dir, $name) {
988
+ return $this->_normpath($dir.'/'.$name);
989
+ }
990
+
991
+ /**
992
+ * Return normalized path, this works the same as os.path.normpath() in Python
993
+ *
994
+ * @param string $path path
995
+ * @return string
996
+ * @author Troex Nevelin
997
+ **/
998
+ protected function _normpath($path) {
999
+ $path = str_replace(DIRECTORY_SEPARATOR, '/', $path);
1000
+ $path = '/' . ltrim($path, '/');
1001
+ return $path;
1002
+ }
1003
+
1004
+ /**
1005
+ * Return file path related to root dir
1006
+ *
1007
+ * @param string $path file path
1008
+ * @return string
1009
+ * @author Dmitry (dio) Levashov
1010
+ **/
1011
+ protected function _relpath($path) {
1012
+ return $path;
1013
+ }
1014
+
1015
+ /**
1016
+ * Convert path related to root dir into real path
1017
+ *
1018
+ * @param string $path file path
1019
+ * @return string
1020
+ * @author Dmitry (dio) Levashov
1021
+ **/
1022
+ protected function _abspath($path) {
1023
+ return $path;
1024
+ }
1025
+
1026
+ /**
1027
+ * Return fake path started from root dir
1028
+ *
1029
+ * @param string $path file path
1030
+ * @return string
1031
+ * @author Dmitry (dio) Levashov
1032
+ **/
1033
+ protected function _path($path) {
1034
+ return $path;
1035
+ }
1036
+
1037
+ /**
1038
+ * Return true if $path is children of $parent
1039
+ *
1040
+ * @param string $path path to check
1041
+ * @param string $parent parent path
1042
+ * @return bool
1043
+ * @author Dmitry (dio) Levashov
1044
+ **/
1045
+ protected function _inpath($path, $parent) {
1046
+ return $path == $parent || strpos($path, $parent.'/') === 0;
1047
+ }
1048
+
1049
+ /***************** file stat ********************/
1050
+ /**
1051
+ * Return stat for given path.
1052
+ * Stat contains following fields:
1053
+ * - (int) size file size in b. required
1054
+ * - (int) ts file modification time in unix time. required
1055
+ * - (string) mime mimetype. required for folders, others - optionally
1056
+ * - (bool) read read permissions. required
1057
+ * - (bool) write write permissions. required
1058
+ * - (bool) locked is object locked. optionally
1059
+ * - (bool) hidden is object hidden. optionally
1060
+ * - (string) alias for symlinks - link target path relative to root path. optionally
1061
+ * - (string) target for symlinks - link target path. optionally
1062
+ *
1063
+ * If file does not exists - returns empty array or false.
1064
+ *
1065
+ * @param string $path file path
1066
+ * @return array|false
1067
+ * @author Dmitry (dio) Levashov
1068
+ **/
1069
+ protected function _stat($path) {
1070
+ if (isset($this->metaCacheArr['data'][strtolower($path)])) {
1071
+ return $this->parseRaw($this->metaCacheArr['data'][strtolower($path)]);
1072
+ }
1073
+ return false;
1074
+ }
1075
+
1076
+ /**
1077
+ * Return true if path is dir and has at least one childs directory
1078
+ *
1079
+ * @param string $path dir path
1080
+ * @return bool
1081
+ * @author Dmitry (dio) Levashov
1082
+ **/
1083
+ protected function _subdirs($path) {
1084
+ return ($stat = $this->stat($path)) && isset($stat['dirs']) ? $stat['dirs'] : false;
1085
+ }
1086
+
1087
+ /**
1088
+ * Return object width and height
1089
+ * Ususaly used for images, but can be realize for video etc...
1090
+ *
1091
+ * @param string $path file path
1092
+ * @param string $mime file mime type
1093
+ * @return string
1094
+ * @author Dmitry (dio) Levashov
1095
+ **/
1096
+ protected function _dimensions($path, $mime) {
1097
+ if (strpos($mime, 'image') !== 0) return '';
1098
+ $cache =& $this->metaCacheArr['data'][strtolower($path)];
1099
+ if (isset($cache['width']) && isset($cache['height'])) {
1100
+ return $cache['width'].'x'.$cache['height'];
1101
+ }
1102
+ if ($local = $this->getLocalName($path)) {
1103
+ if (file_put_contents($local, $this->dropbox->getFile($path), LOCK_EX)) {
1104
+ if ($size = @getimagesize($local)) {
1105
+ $cache =& $this->metaCacheArr['data'][strtolower($path)];
1106
+ $cache['width'] = $size[0];
1107
+ $cache['height'] = $size[1];
1108
+ $this->mataCacheSave();
1109
+ unlink($local);
1110
+ return $size[0].'x'.$size[1];
1111
+ }
1112
+ unlink($local);
1113
+ }
1114
+ }
1115
+ return '';
1116
+ }
1117
+
1118
+ /******************** file/dir content *********************/
1119
+
1120
+ /**
1121
+ * Return files list in directory.
1122
+ *
1123
+ * @param string $path dir path
1124
+ * @return array
1125
+ * @author Dmitry (dio) Levashov
1126
+ * @author Cem (DiscoFever)
1127
+ **/
1128
+ protected function _scandir($path) {
1129
+ return isset($this->dirsCache[$path])
1130
+ ? $this->dirsCache[$path]
1131
+ : $this->cacheDir($path);
1132
+ }
1133
+
1134
+ /**
1135
+ * Open file and return file pointer
1136
+ *
1137
+ * @param string $path file path
1138
+ * @param bool $write open file for writing
1139
+ * @return resource|false
1140
+ * @author Dmitry (dio) Levashov
1141
+ **/
1142
+ protected function _fopen($path, $mode='rb') {
1143
+
1144
+ if ($this->tmp) {
1145
+ $contents = $this->_getContents($path);
1146
+
1147
+ if ($contents === false) {
1148
+ return false;
1149
+ }
1150
+
1151
+ if ($local = $this->getLocalName($path)) {
1152
+ if (file_put_contents($local, $contents, LOCK_EX) !== false) {
1153
+ return @fopen($local, $mode);
1154
+ }
1155
+ }
1156
+ }
1157
+
1158
+ return false;
1159
+ }
1160
+
1161
+ /**
1162
+ * Close opened file
1163
+ *
1164
+ * @param resource $fp file pointer
1165
+ * @return bool
1166
+ * @author Dmitry (dio) Levashov
1167
+ **/
1168
+ protected function _fclose($fp, $path='') {
1169
+ @fclose($fp);
1170
+ if ($path) {
1171
+ @unlink($this->getLocalName($path));
1172
+ }
1173
+ }
1174
+
1175
+ /******************** file/dir manipulations *************************/
1176
+
1177
+ /**
1178
+ * Create dir and return created dir path or false on failed
1179
+ *
1180
+ * @param string $path parent dir path
1181
+ * @param string $name new directory name
1182
+ * @return string|bool
1183
+ * @author Dmitry (dio) Levashov
1184
+ **/
1185
+ protected function _mkdir($path, $name) {
1186
+ $path = $this->_normpath($path.'/'.$name);
1187
+ try {
1188
+ $this->dropbox->createFolder($path);
1189
+ } catch (Dropbox_Exception $e) {
1190
+ return $this->setError('Dropbox error: '.$e->getMessage());
1191
+ }
1192
+ $this->metaCacheClear($path);
1193
+ $this->deltaCheck();
1194
+ return $path;
1195
+ }
1196
+
1197
+ /**
1198
+ * Create file and return it's path or false on failed
1199
+ *
1200
+ * @param string $path parent dir path
1201
+ * @param string $name new file name
1202
+ * @return string|bool
1203
+ * @author Dmitry (dio) Levashov
1204
+ **/
1205
+ protected function _mkfile($path, $name) {
1206
+ return $this->_filePutContents($path.'/'.$name, '');
1207
+ }
1208
+
1209
+ /**
1210
+ * Create symlink. FTP driver does not support symlinks.
1211
+ *
1212
+ * @param string $target link target
1213
+ * @param string $path symlink path
1214
+ * @return bool
1215
+ * @author Dmitry (dio) Levashov
1216
+ **/
1217
+ protected function _symlink($target, $path, $name) {
1218
+ return false;
1219
+ }
1220
+
1221
+ /**
1222
+ * Copy file into another file
1223
+ *
1224
+ * @param string $source source file path
1225
+ * @param string $targetDir target directory path
1226
+ * @param string $name new file name
1227
+ * @return bool
1228
+ * @author Dmitry (dio) Levashov
1229
+ **/
1230
+ protected function _copy($source, $targetDir, $name) {
1231
+ $path = $this->_normpath($targetDir.'/'.$name);
1232
+ try {
1233
+ $this->dropbox->copy($source, $path);
1234
+ } catch (Dropbox_Exception $e) {
1235
+ return $this->setError('Dropbox error: '.$e->getMessage());
1236
+ }
1237
+ $this->metaCacheClear($path);
1238
+ $this->deltaCheck();
1239
+ return true;
1240
+ }
1241
+
1242
+ /**
1243
+ * Move file into another parent dir.
1244
+ * Return new file path or false.
1245
+ *
1246
+ * @param string $source source file path
1247
+ * @param string $target target dir path
1248
+ * @param string $name file name
1249
+ * @return string|bool
1250
+ * @author Dmitry (dio) Levashov
1251
+ **/
1252
+ protected function _move($source, $targetDir, $name) {
1253
+ $target = $this->_normpath($targetDir.'/'.$name);
1254
+ try {
1255
+ $this->dropbox->move($source, $target);
1256
+ } catch (Dropbox_Exception $e) {
1257
+ return $this->setError('Dropbox error: '.$e->getMessage());
1258
+ }
1259
+ unset($this->metaDataCache[$source], $this->metaDataCache[$target]);
1260
+ $this->metaCacheClear($source);
1261
+ $this->metaCacheClear($target);
1262
+ $this->deltaCheck();
1263
+ return $target;
1264
+ }
1265
+
1266
+ /**
1267
+ * Remove file
1268
+ *
1269
+ * @param string $path file path
1270
+ * @return bool
1271
+ * @author Dmitry (dio) Levashov
1272
+ **/
1273
+ protected function _unlink($path) {
1274
+ try {
1275
+ $this->dropbox->delete($path);
1276
+ } catch (Dropbox_Exception $e) {
1277
+ return $this->setError('Dropbox error: '.$e->getMessage());
1278
+ }
1279
+ $this->metaCacheClear($path);
1280
+ $this->deltaCheck();
1281
+ return true;
1282
+ }
1283
+
1284
+ /**
1285
+ * Remove dir
1286
+ *
1287
+ * @param string $path dir path
1288
+ * @return bool
1289
+ * @author Dmitry (dio) Levashov
1290
+ **/
1291
+ protected function _rmdir($path) {
1292
+ return $this->_unlink($path);
1293
+ }
1294
+
1295
+ /**
1296
+ * Create new file and write into it from file pointer.
1297
+ * Return new file path or false on error.
1298
+ *
1299
+ * @param resource $fp file pointer
1300
+ * @param string $dir target dir path
1301
+ * @param string $name file name
1302
+ * @param array $stat file stat (required by some virtual fs)
1303
+ * @return bool|string
1304
+ * @author Dmitry (dio) Levashov
1305
+ **/
1306
+ protected function _save($fp, $path, $name, $stat) {
1307
+ if ($name) $path .= '/'.$name;
1308
+ $path = $this->_normpath($path);
1309
+ try {
1310
+ $this->dropbox->putFile($path, $fp);
1311
+ } catch (Dropbox_Exception $e) {
1312
+ return $this->setError('Dropbox error: '.$e->getMessage());
1313
+ }
1314
+ $this->metaCacheClear($path);
1315
+ $this->deltaCheck();
1316
+ return $path;
1317
+ }
1318
+
1319
+ /**
1320
+ * Get file contents
1321
+ *
1322
+ * @param string $path file path
1323
+ * @return string|false
1324
+ * @author Dmitry (dio) Levashov
1325
+ **/
1326
+ protected function _getContents($path) {
1327
+ $contents = '';
1328
+ try {
1329
+ $contents = $this->dropbox->getFile($path);
1330
+ } catch (Dropbox_Exception $e) {
1331
+ return $this->setError('Dropbox error: '.$e->getMessage());
1332
+ }
1333
+ return $contents;
1334
+ }
1335
+
1336
+ /**
1337
+ * Write a string to a file
1338
+ *
1339
+ * @param string $path file path
1340
+ * @param string $content new file content
1341
+ * @return bool
1342
+ * @author Dmitry (dio) Levashov
1343
+ **/
1344
+ protected function _filePutContents($path, $content) {
1345
+ $res = false;
1346
+
1347
+ if ($local = $this->getLocalName($path)) {
1348
+ $local .= '.txt';
1349
+
1350
+ if (@file_put_contents($local, $content, LOCK_EX) !== false
1351
+ && ($fp = @fopen($local, 'rb'))) {
1352
+ clearstatcache();
1353
+ $res = $this->_save($fp, $path, array());
1354
+ @fclose($fp);
1355
+ }
1356
+ file_exists($local) && @unlink($local);
1357
+ }
1358
+
1359
+ return $res;
1360
+ }
1361
+
1362
+ /**
1363
+ * Detect available archivers
1364
+ *
1365
+ * @return void
1366
+ **/
1367
+ protected function _checkArchivers() {
1368
+ // die('Not yet implemented. (_checkArchivers)');
1369
+ return array();
1370
+ }
1371
+
1372
+ /**
1373
+ * Unpack archive
1374
+ *
1375
+ * @param string $path archive path
1376
+ * @param array $arc archiver command and arguments (same as in $this->archivers)
1377
+ * @return true
1378
+ * @return void
1379
+ * @author Dmitry (dio) Levashov
1380
+ * @author Alexey Sukhotin
1381
+ **/
1382
+ protected function _unpack($path, $arc) {
1383
+ die('Not yet implemented. (_unpack)');
1384
+ return false;
1385
+ }
1386
+
1387
+ /**
1388
+ * Recursive symlinks search
1389
+ *
1390
+ * @param string $path file/dir path
1391
+ * @return bool
1392
+ * @author Dmitry (dio) Levashov
1393
+ **/
1394
+ protected function _findSymlinks($path) {
1395
+ die('Not yet implemented. (_findSymlinks)');
1396
+ if (is_link($path)) {
1397
+ return true;
1398
+ }
1399
+ if (is_dir($path)) {
1400
+ foreach (scandir($path) as $name) {
1401
+ if ($name != '.' && $name != '..') {
1402
+ $p = $path.DIRECTORY_SEPARATOR.$name;
1403
+ if (is_link($p)) {
1404
+ return true;
1405
+ }
1406
+ if (is_dir($p) && $this->_findSymlinks($p)) {
1407
+ return true;
1408
+ } elseif (is_file($p)) {
1409
+ $this->archiveSize += filesize($p);
1410
+ }
1411
+ }
1412
+ }
1413
+ } else {
1414
+ $this->archiveSize += filesize($path);
1415
+ }
1416
+
1417
+ return false;
1418
+ }
1419
+
1420
+ /**
1421
+ * Extract files from archive
1422
+ *
1423
+ * @param string $path archive path
1424
+ * @param array $arc archiver command and arguments (same as in $this->archivers)
1425
+ * @return true
1426
+ * @author Dmitry (dio) Levashov,
1427
+ * @author Alexey Sukhotin
1428
+ **/
1429
+ protected function _extract($path, $arc) {
1430
+ die('Not yet implemented. (_extract)');
1431
+
1432
+ }
1433
+
1434
+ /**
1435
+ * Create archive and return its path
1436
+ *
1437
+ * @param string $dir target dir
1438
+ * @param array $files files names list
1439
+ * @param string $name archive name
1440
+ * @param array $arc archiver options
1441
+ * @return string|bool
1442
+ * @author Dmitry (dio) Levashov,
1443
+ * @author Alexey Sukhotin
1444
+ **/
1445
+ protected function _archive($dir, $files, $name, $arc) {
1446
+ die('Not yet implemented. (_archive)');
1447
+ return false;
1448
+ }
1449
+
1450
+ } // END class