my_admin 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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