boss-cms 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1029) hide show
  1. data/COPYING +16 -0
  2. data/README.rdoc +63 -0
  3. data/Rakefile +38 -0
  4. data/app/assets/images/boss/ajax-loader.gif +0 -0
  5. data/app/assets/images/boss/icons/Small Icons/accdb.ico +0 -0
  6. data/app/assets/images/boss/icons/Small Icons/avi.ico +0 -0
  7. data/app/assets/images/boss/icons/Small Icons/bmp.ico +0 -0
  8. data/app/assets/images/boss/icons/Small Icons/css.ico +0 -0
  9. data/app/assets/images/boss/icons/Small Icons/docx_mac.ico +0 -0
  10. data/app/assets/images/boss/icons/Small Icons/docx_win.ico +0 -0
  11. data/app/assets/images/boss/icons/Small Icons/eml.ico +0 -0
  12. data/app/assets/images/boss/icons/Small Icons/eps.ico +0 -0
  13. data/app/assets/images/boss/icons/Small Icons/fla.ico +0 -0
  14. data/app/assets/images/boss/icons/Small Icons/gif.ico +0 -0
  15. data/app/assets/images/boss/icons/Small Icons/html.ico +0 -0
  16. data/app/assets/images/boss/icons/Small Icons/ind.ico +0 -0
  17. data/app/assets/images/boss/icons/Small Icons/ini.ico +0 -0
  18. data/app/assets/images/boss/icons/Small Icons/jpeg.ico +0 -0
  19. data/app/assets/images/boss/icons/Small Icons/jsf.ico +0 -0
  20. data/app/assets/images/boss/icons/Small Icons/midi.ico +0 -0
  21. data/app/assets/images/boss/icons/Small Icons/mov.ico +0 -0
  22. data/app/assets/images/boss/icons/Small Icons/mp3.ico +0 -0
  23. data/app/assets/images/boss/icons/Small Icons/mpeg.ico +0 -0
  24. data/app/assets/images/boss/icons/Small Icons/pdf.ico +0 -0
  25. data/app/assets/images/boss/icons/Small Icons/png.ico +0 -0
  26. data/app/assets/images/boss/icons/Small Icons/pptx_mac.ico +0 -0
  27. data/app/assets/images/boss/icons/Small Icons/pptx_win.ico +0 -0
  28. data/app/assets/images/boss/icons/Small Icons/proj.ico +0 -0
  29. data/app/assets/images/boss/icons/Small Icons/psd.ico +0 -0
  30. data/app/assets/images/boss/icons/Small Icons/pst.ico +0 -0
  31. data/app/assets/images/boss/icons/Small Icons/pub.ico +0 -0
  32. data/app/assets/images/boss/icons/Small Icons/rar.ico +0 -0
  33. data/app/assets/images/boss/icons/Small Icons/readme.ico +0 -0
  34. data/app/assets/images/boss/icons/Small Icons/settings.ico +0 -0
  35. data/app/assets/images/boss/icons/Small Icons/text.ico +0 -0
  36. data/app/assets/images/boss/icons/Small Icons/tiff.ico +0 -0
  37. data/app/assets/images/boss/icons/Small Icons/url.ico +0 -0
  38. data/app/assets/images/boss/icons/Small Icons/vsd.ico +0 -0
  39. data/app/assets/images/boss/icons/Small Icons/wav.ico +0 -0
  40. data/app/assets/images/boss/icons/Small Icons/wma.ico +0 -0
  41. data/app/assets/images/boss/icons/Small Icons/wmv.ico +0 -0
  42. data/app/assets/images/boss/icons/Small Icons/xlsx_mac.ico +0 -0
  43. data/app/assets/images/boss/icons/Small Icons/xlsx_win.ico +0 -0
  44. data/app/assets/images/boss/icons/Small Icons/zip.ico +0 -0
  45. data/app/assets/images/boss/icons/accdb/accdb-128_32.png +0 -0
  46. data/app/assets/images/boss/icons/accdb/accdb-16_32.png +0 -0
  47. data/app/assets/images/boss/icons/accdb/accdb-24_32.png +0 -0
  48. data/app/assets/images/boss/icons/accdb/accdb-256_32.png +0 -0
  49. data/app/assets/images/boss/icons/accdb/accdb-32_32.png +0 -0
  50. data/app/assets/images/boss/icons/accdb/accdb-48_32.png +0 -0
  51. data/app/assets/images/boss/icons/accdb/accdb-64_32.png +0 -0
  52. data/app/assets/images/boss/icons/accdb/accdb-72_32.png +0 -0
  53. data/app/assets/images/boss/icons/accdb/accdb-80_32.png +0 -0
  54. data/app/assets/images/boss/icons/accdb/accdb-96_32.png +0 -0
  55. data/app/assets/images/boss/icons/accdb/accdb-sm-16_32.png +0 -0
  56. data/app/assets/images/boss/icons/accdb/accdb-sm-24_32.png +0 -0
  57. data/app/assets/images/boss/icons/accdb/accdb-sm-32_32.png +0 -0
  58. data/app/assets/images/boss/icons/accdb/accdb-sm.ico +0 -0
  59. data/app/assets/images/boss/icons/accdb/accdb.ico +0 -0
  60. data/app/assets/images/boss/icons/avi/avi-128_32.png +0 -0
  61. data/app/assets/images/boss/icons/avi/avi-16_32.png +0 -0
  62. data/app/assets/images/boss/icons/avi/avi-24_32.png +0 -0
  63. data/app/assets/images/boss/icons/avi/avi-256_32.png +0 -0
  64. data/app/assets/images/boss/icons/avi/avi-32_32.png +0 -0
  65. data/app/assets/images/boss/icons/avi/avi-48_32.png +0 -0
  66. data/app/assets/images/boss/icons/avi/avi-64_32.png +0 -0
  67. data/app/assets/images/boss/icons/avi/avi-72_32.png +0 -0
  68. data/app/assets/images/boss/icons/avi/avi-80_32.png +0 -0
  69. data/app/assets/images/boss/icons/avi/avi-96_32.png +0 -0
  70. data/app/assets/images/boss/icons/avi/avi-sm-16_32.png +0 -0
  71. data/app/assets/images/boss/icons/avi/avi-sm-24_32.png +0 -0
  72. data/app/assets/images/boss/icons/avi/avi-sm-32_32.png +0 -0
  73. data/app/assets/images/boss/icons/avi/avi-sm.ico +0 -0
  74. data/app/assets/images/boss/icons/avi/avi.icns +0 -0
  75. data/app/assets/images/boss/icons/avi/avi.ico +0 -0
  76. data/app/assets/images/boss/icons/bmp/bmp-128_32.png +0 -0
  77. data/app/assets/images/boss/icons/bmp/bmp-16_32.png +0 -0
  78. data/app/assets/images/boss/icons/bmp/bmp-24_32.png +0 -0
  79. data/app/assets/images/boss/icons/bmp/bmp-256_32.png +0 -0
  80. data/app/assets/images/boss/icons/bmp/bmp-32_32.png +0 -0
  81. data/app/assets/images/boss/icons/bmp/bmp-48_32.png +0 -0
  82. data/app/assets/images/boss/icons/bmp/bmp-64_32.png +0 -0
  83. data/app/assets/images/boss/icons/bmp/bmp-72_32.png +0 -0
  84. data/app/assets/images/boss/icons/bmp/bmp-80_32.png +0 -0
  85. data/app/assets/images/boss/icons/bmp/bmp-96_32.png +0 -0
  86. data/app/assets/images/boss/icons/bmp/bmp-sm-16_32.png +0 -0
  87. data/app/assets/images/boss/icons/bmp/bmp-sm-24_32.png +0 -0
  88. data/app/assets/images/boss/icons/bmp/bmp-sm-32_32.png +0 -0
  89. data/app/assets/images/boss/icons/bmp/bmp-sm.ico +0 -0
  90. data/app/assets/images/boss/icons/bmp/bmp.icns +0 -0
  91. data/app/assets/images/boss/icons/bmp/bmp.ico +0 -0
  92. data/app/assets/images/boss/icons/css/css-128_32.png +0 -0
  93. data/app/assets/images/boss/icons/css/css-16_32.png +0 -0
  94. data/app/assets/images/boss/icons/css/css-24_32.png +0 -0
  95. data/app/assets/images/boss/icons/css/css-256_32.png +0 -0
  96. data/app/assets/images/boss/icons/css/css-32_32.png +0 -0
  97. data/app/assets/images/boss/icons/css/css-48_32.png +0 -0
  98. data/app/assets/images/boss/icons/css/css-64_32.png +0 -0
  99. data/app/assets/images/boss/icons/css/css-72_32.png +0 -0
  100. data/app/assets/images/boss/icons/css/css-80_32.png +0 -0
  101. data/app/assets/images/boss/icons/css/css-96_32.png +0 -0
  102. data/app/assets/images/boss/icons/css/css-sm-16_32.png +0 -0
  103. data/app/assets/images/boss/icons/css/css-sm-24_32.png +0 -0
  104. data/app/assets/images/boss/icons/css/css-sm-32_32.png +0 -0
  105. data/app/assets/images/boss/icons/css/css-sm.ico +0 -0
  106. data/app/assets/images/boss/icons/css/css.icns +0 -0
  107. data/app/assets/images/boss/icons/css/css.ico +0 -0
  108. data/app/assets/images/boss/icons/docx_mac/docx_mac-128_32.png +0 -0
  109. data/app/assets/images/boss/icons/docx_mac/docx_mac-16_32.png +0 -0
  110. data/app/assets/images/boss/icons/docx_mac/docx_mac-24_32.png +0 -0
  111. data/app/assets/images/boss/icons/docx_mac/docx_mac-256_32.png +0 -0
  112. data/app/assets/images/boss/icons/docx_mac/docx_mac-32_32.png +0 -0
  113. data/app/assets/images/boss/icons/docx_mac/docx_mac-48_32.png +0 -0
  114. data/app/assets/images/boss/icons/docx_mac/docx_mac-64_32.png +0 -0
  115. data/app/assets/images/boss/icons/docx_mac/docx_mac-72_32.png +0 -0
  116. data/app/assets/images/boss/icons/docx_mac/docx_mac-80_32.png +0 -0
  117. data/app/assets/images/boss/icons/docx_mac/docx_mac-96_32.png +0 -0
  118. data/app/assets/images/boss/icons/docx_mac/docx_mac-sm-16_32.png +0 -0
  119. data/app/assets/images/boss/icons/docx_mac/docx_mac-sm-24_32.png +0 -0
  120. data/app/assets/images/boss/icons/docx_mac/docx_mac-sm-32_32.png +0 -0
  121. data/app/assets/images/boss/icons/docx_mac/docx_mac-sm.ico +0 -0
  122. data/app/assets/images/boss/icons/docx_mac/docx_mac.icns +0 -0
  123. data/app/assets/images/boss/icons/docx_mac/docx_mac.ico +0 -0
  124. data/app/assets/images/boss/icons/docx_win/docx_win-128_32.png +0 -0
  125. data/app/assets/images/boss/icons/docx_win/docx_win-16_32.png +0 -0
  126. data/app/assets/images/boss/icons/docx_win/docx_win-24_32.png +0 -0
  127. data/app/assets/images/boss/icons/docx_win/docx_win-256_32.png +0 -0
  128. data/app/assets/images/boss/icons/docx_win/docx_win-32_32.png +0 -0
  129. data/app/assets/images/boss/icons/docx_win/docx_win-48_32.png +0 -0
  130. data/app/assets/images/boss/icons/docx_win/docx_win-64_32.png +0 -0
  131. data/app/assets/images/boss/icons/docx_win/docx_win-72_32.png +0 -0
  132. data/app/assets/images/boss/icons/docx_win/docx_win-80_32.png +0 -0
  133. data/app/assets/images/boss/icons/docx_win/docx_win-96_32.png +0 -0
  134. data/app/assets/images/boss/icons/docx_win/docx_win-sm-16_32.png +0 -0
  135. data/app/assets/images/boss/icons/docx_win/docx_win-sm-24_32.png +0 -0
  136. data/app/assets/images/boss/icons/docx_win/docx_win-sm-32_32.png +0 -0
  137. data/app/assets/images/boss/icons/docx_win/docx_win-sm.ico +0 -0
  138. data/app/assets/images/boss/icons/docx_win/docx_win.ico +0 -0
  139. data/app/assets/images/boss/icons/eml/eml-128_32.png +0 -0
  140. data/app/assets/images/boss/icons/eml/eml-16_32.png +0 -0
  141. data/app/assets/images/boss/icons/eml/eml-24_32.png +0 -0
  142. data/app/assets/images/boss/icons/eml/eml-256_32.png +0 -0
  143. data/app/assets/images/boss/icons/eml/eml-32_32.png +0 -0
  144. data/app/assets/images/boss/icons/eml/eml-48_32.png +0 -0
  145. data/app/assets/images/boss/icons/eml/eml-64_32.png +0 -0
  146. data/app/assets/images/boss/icons/eml/eml-72_32.png +0 -0
  147. data/app/assets/images/boss/icons/eml/eml-80_32.png +0 -0
  148. data/app/assets/images/boss/icons/eml/eml-96_32.png +0 -0
  149. data/app/assets/images/boss/icons/eml/eml-sm-16_32.png +0 -0
  150. data/app/assets/images/boss/icons/eml/eml-sm-24_32.png +0 -0
  151. data/app/assets/images/boss/icons/eml/eml-sm-32_32.png +0 -0
  152. data/app/assets/images/boss/icons/eml/eml-sm.ico +0 -0
  153. data/app/assets/images/boss/icons/eml/eml.icns +0 -0
  154. data/app/assets/images/boss/icons/eml/eml.ico +0 -0
  155. data/app/assets/images/boss/icons/eps/eps-128_32.png +0 -0
  156. data/app/assets/images/boss/icons/eps/eps-16_32.png +0 -0
  157. data/app/assets/images/boss/icons/eps/eps-24_32.png +0 -0
  158. data/app/assets/images/boss/icons/eps/eps-256_32.png +0 -0
  159. data/app/assets/images/boss/icons/eps/eps-32_32.png +0 -0
  160. data/app/assets/images/boss/icons/eps/eps-48_32.png +0 -0
  161. data/app/assets/images/boss/icons/eps/eps-64_32.png +0 -0
  162. data/app/assets/images/boss/icons/eps/eps-72_32.png +0 -0
  163. data/app/assets/images/boss/icons/eps/eps-80_32.png +0 -0
  164. data/app/assets/images/boss/icons/eps/eps-96_32.png +0 -0
  165. data/app/assets/images/boss/icons/eps/eps-sm-16_32.png +0 -0
  166. data/app/assets/images/boss/icons/eps/eps-sm-24_32.png +0 -0
  167. data/app/assets/images/boss/icons/eps/eps-sm-32_32.png +0 -0
  168. data/app/assets/images/boss/icons/eps/eps-sm.ico +0 -0
  169. data/app/assets/images/boss/icons/eps/eps.icns +0 -0
  170. data/app/assets/images/boss/icons/eps/eps.ico +0 -0
  171. data/app/assets/images/boss/icons/fla/fla-128_32.png +0 -0
  172. data/app/assets/images/boss/icons/fla/fla-16_32.png +0 -0
  173. data/app/assets/images/boss/icons/fla/fla-24_32.png +0 -0
  174. data/app/assets/images/boss/icons/fla/fla-256_32.png +0 -0
  175. data/app/assets/images/boss/icons/fla/fla-32_32.png +0 -0
  176. data/app/assets/images/boss/icons/fla/fla-48_32.png +0 -0
  177. data/app/assets/images/boss/icons/fla/fla-64_32.png +0 -0
  178. data/app/assets/images/boss/icons/fla/fla-72_32.png +0 -0
  179. data/app/assets/images/boss/icons/fla/fla-80_32.png +0 -0
  180. data/app/assets/images/boss/icons/fla/fla-96_32.png +0 -0
  181. data/app/assets/images/boss/icons/fla/fla-sm-16_32.png +0 -0
  182. data/app/assets/images/boss/icons/fla/fla-sm-24_32.png +0 -0
  183. data/app/assets/images/boss/icons/fla/fla-sm-32_32.png +0 -0
  184. data/app/assets/images/boss/icons/fla/fla-sm.ico +0 -0
  185. data/app/assets/images/boss/icons/fla/fla.icns +0 -0
  186. data/app/assets/images/boss/icons/fla/fla.ico +0 -0
  187. data/app/assets/images/boss/icons/gif/gif-128_32.png +0 -0
  188. data/app/assets/images/boss/icons/gif/gif-16_32.png +0 -0
  189. data/app/assets/images/boss/icons/gif/gif-24_32.png +0 -0
  190. data/app/assets/images/boss/icons/gif/gif-256_32.png +0 -0
  191. data/app/assets/images/boss/icons/gif/gif-32_32.png +0 -0
  192. data/app/assets/images/boss/icons/gif/gif-48_32.png +0 -0
  193. data/app/assets/images/boss/icons/gif/gif-64_32.png +0 -0
  194. data/app/assets/images/boss/icons/gif/gif-72_32.png +0 -0
  195. data/app/assets/images/boss/icons/gif/gif-80_32.png +0 -0
  196. data/app/assets/images/boss/icons/gif/gif-96_32.png +0 -0
  197. data/app/assets/images/boss/icons/gif/gif-sm-16_32.png +0 -0
  198. data/app/assets/images/boss/icons/gif/gif-sm-24_32.png +0 -0
  199. data/app/assets/images/boss/icons/gif/gif-sm-32_32.png +0 -0
  200. data/app/assets/images/boss/icons/gif/gif-sm.ico +0 -0
  201. data/app/assets/images/boss/icons/gif/gif.icns +0 -0
  202. data/app/assets/images/boss/icons/gif/gif.ico +0 -0
  203. data/app/assets/images/boss/icons/html/html-128_32.png +0 -0
  204. data/app/assets/images/boss/icons/html/html-16_32.png +0 -0
  205. data/app/assets/images/boss/icons/html/html-24_32.png +0 -0
  206. data/app/assets/images/boss/icons/html/html-256_32.png +0 -0
  207. data/app/assets/images/boss/icons/html/html-32_32.png +0 -0
  208. data/app/assets/images/boss/icons/html/html-48_32.png +0 -0
  209. data/app/assets/images/boss/icons/html/html-64_32.png +0 -0
  210. data/app/assets/images/boss/icons/html/html-72_32.png +0 -0
  211. data/app/assets/images/boss/icons/html/html-80_32.png +0 -0
  212. data/app/assets/images/boss/icons/html/html-96_32.png +0 -0
  213. data/app/assets/images/boss/icons/html/html-sm-16_32.png +0 -0
  214. data/app/assets/images/boss/icons/html/html-sm-24_32.png +0 -0
  215. data/app/assets/images/boss/icons/html/html-sm-32_32.png +0 -0
  216. data/app/assets/images/boss/icons/html/html-sm.ico +0 -0
  217. data/app/assets/images/boss/icons/html/html.icns +0 -0
  218. data/app/assets/images/boss/icons/html/html.ico +0 -0
  219. data/app/assets/images/boss/icons/ind/ind-128_32.png +0 -0
  220. data/app/assets/images/boss/icons/ind/ind-16_32.png +0 -0
  221. data/app/assets/images/boss/icons/ind/ind-24_32.png +0 -0
  222. data/app/assets/images/boss/icons/ind/ind-256_32.png +0 -0
  223. data/app/assets/images/boss/icons/ind/ind-32_32.png +0 -0
  224. data/app/assets/images/boss/icons/ind/ind-48_32.png +0 -0
  225. data/app/assets/images/boss/icons/ind/ind-64_32.png +0 -0
  226. data/app/assets/images/boss/icons/ind/ind-72_32.png +0 -0
  227. data/app/assets/images/boss/icons/ind/ind-80_32.png +0 -0
  228. data/app/assets/images/boss/icons/ind/ind-96_32.png +0 -0
  229. data/app/assets/images/boss/icons/ind/ind-sm-16_32.png +0 -0
  230. data/app/assets/images/boss/icons/ind/ind-sm-24_32.png +0 -0
  231. data/app/assets/images/boss/icons/ind/ind-sm-32_32.png +0 -0
  232. data/app/assets/images/boss/icons/ind/ind-sm.ico +0 -0
  233. data/app/assets/images/boss/icons/ind/ind.icns +0 -0
  234. data/app/assets/images/boss/icons/ind/ind.ico +0 -0
  235. data/app/assets/images/boss/icons/ini/ini-128_32.png +0 -0
  236. data/app/assets/images/boss/icons/ini/ini-16_32.png +0 -0
  237. data/app/assets/images/boss/icons/ini/ini-24_32.png +0 -0
  238. data/app/assets/images/boss/icons/ini/ini-256_32.png +0 -0
  239. data/app/assets/images/boss/icons/ini/ini-32_32.png +0 -0
  240. data/app/assets/images/boss/icons/ini/ini-48_32.png +0 -0
  241. data/app/assets/images/boss/icons/ini/ini-64_32.png +0 -0
  242. data/app/assets/images/boss/icons/ini/ini-72_32.png +0 -0
  243. data/app/assets/images/boss/icons/ini/ini-80_32.png +0 -0
  244. data/app/assets/images/boss/icons/ini/ini-96_32.png +0 -0
  245. data/app/assets/images/boss/icons/ini/ini-sm-16_32.png +0 -0
  246. data/app/assets/images/boss/icons/ini/ini-sm-24_32.png +0 -0
  247. data/app/assets/images/boss/icons/ini/ini-sm-32_32.png +0 -0
  248. data/app/assets/images/boss/icons/ini/ini-sm.ico +0 -0
  249. data/app/assets/images/boss/icons/ini/ini.icns +0 -0
  250. data/app/assets/images/boss/icons/ini/ini.ico +0 -0
  251. data/app/assets/images/boss/icons/jpeg/jpeg-128_32.png +0 -0
  252. data/app/assets/images/boss/icons/jpeg/jpeg-16_32.png +0 -0
  253. data/app/assets/images/boss/icons/jpeg/jpeg-24_32.png +0 -0
  254. data/app/assets/images/boss/icons/jpeg/jpeg-256_32.png +0 -0
  255. data/app/assets/images/boss/icons/jpeg/jpeg-32_32.png +0 -0
  256. data/app/assets/images/boss/icons/jpeg/jpeg-48_32.png +0 -0
  257. data/app/assets/images/boss/icons/jpeg/jpeg-64_32.png +0 -0
  258. data/app/assets/images/boss/icons/jpeg/jpeg-72_32.png +0 -0
  259. data/app/assets/images/boss/icons/jpeg/jpeg-80_32.png +0 -0
  260. data/app/assets/images/boss/icons/jpeg/jpeg-96_32.png +0 -0
  261. data/app/assets/images/boss/icons/jpeg/jpeg-sm-16_32.png +0 -0
  262. data/app/assets/images/boss/icons/jpeg/jpeg-sm-24_32.png +0 -0
  263. data/app/assets/images/boss/icons/jpeg/jpeg-sm-32_32.png +0 -0
  264. data/app/assets/images/boss/icons/jpeg/jpeg-sm.ico +0 -0
  265. data/app/assets/images/boss/icons/jpeg/jpeg.icns +0 -0
  266. data/app/assets/images/boss/icons/jpeg/jpeg.ico +0 -0
  267. data/app/assets/images/boss/icons/jsf/jsf-128_32.png +0 -0
  268. data/app/assets/images/boss/icons/jsf/jsf-16_32.png +0 -0
  269. data/app/assets/images/boss/icons/jsf/jsf-24_32.png +0 -0
  270. data/app/assets/images/boss/icons/jsf/jsf-256_32.png +0 -0
  271. data/app/assets/images/boss/icons/jsf/jsf-32_32.png +0 -0
  272. data/app/assets/images/boss/icons/jsf/jsf-48_32.png +0 -0
  273. data/app/assets/images/boss/icons/jsf/jsf-64_32.png +0 -0
  274. data/app/assets/images/boss/icons/jsf/jsf-72_32.png +0 -0
  275. data/app/assets/images/boss/icons/jsf/jsf-80_32.png +0 -0
  276. data/app/assets/images/boss/icons/jsf/jsf-96_32.png +0 -0
  277. data/app/assets/images/boss/icons/jsf/jsf-sm-16_32.png +0 -0
  278. data/app/assets/images/boss/icons/jsf/jsf-sm-24_32.png +0 -0
  279. data/app/assets/images/boss/icons/jsf/jsf-sm-32_32.png +0 -0
  280. data/app/assets/images/boss/icons/jsf/jsf-sm.ico +0 -0
  281. data/app/assets/images/boss/icons/jsf/jsf.icns +0 -0
  282. data/app/assets/images/boss/icons/jsf/jsf.ico +0 -0
  283. data/app/assets/images/boss/icons/midi/midi-128_32.png +0 -0
  284. data/app/assets/images/boss/icons/midi/midi-16_32.png +0 -0
  285. data/app/assets/images/boss/icons/midi/midi-24_32.png +0 -0
  286. data/app/assets/images/boss/icons/midi/midi-256_32.png +0 -0
  287. data/app/assets/images/boss/icons/midi/midi-32_32.png +0 -0
  288. data/app/assets/images/boss/icons/midi/midi-48_32.png +0 -0
  289. data/app/assets/images/boss/icons/midi/midi-64_32.png +0 -0
  290. data/app/assets/images/boss/icons/midi/midi-72_32.png +0 -0
  291. data/app/assets/images/boss/icons/midi/midi-80_32.png +0 -0
  292. data/app/assets/images/boss/icons/midi/midi-96_32.png +0 -0
  293. data/app/assets/images/boss/icons/midi/midi-sm-16_32.png +0 -0
  294. data/app/assets/images/boss/icons/midi/midi-sm-24_32.png +0 -0
  295. data/app/assets/images/boss/icons/midi/midi-sm-32_32.png +0 -0
  296. data/app/assets/images/boss/icons/midi/midi-sm.ico +0 -0
  297. data/app/assets/images/boss/icons/midi/midi.icns +0 -0
  298. data/app/assets/images/boss/icons/midi/midi.ico +0 -0
  299. data/app/assets/images/boss/icons/mov/mov-128_32.png +0 -0
  300. data/app/assets/images/boss/icons/mov/mov-16_32.png +0 -0
  301. data/app/assets/images/boss/icons/mov/mov-24_32.png +0 -0
  302. data/app/assets/images/boss/icons/mov/mov-256_32.png +0 -0
  303. data/app/assets/images/boss/icons/mov/mov-32_32.png +0 -0
  304. data/app/assets/images/boss/icons/mov/mov-48_32.png +0 -0
  305. data/app/assets/images/boss/icons/mov/mov-64_32.png +0 -0
  306. data/app/assets/images/boss/icons/mov/mov-72_32.png +0 -0
  307. data/app/assets/images/boss/icons/mov/mov-80_32.png +0 -0
  308. data/app/assets/images/boss/icons/mov/mov-96_32.png +0 -0
  309. data/app/assets/images/boss/icons/mov/mov-sm-16_32.png +0 -0
  310. data/app/assets/images/boss/icons/mov/mov-sm-24_32.png +0 -0
  311. data/app/assets/images/boss/icons/mov/mov-sm-32_32.png +0 -0
  312. data/app/assets/images/boss/icons/mov/mov-sm.ico +0 -0
  313. data/app/assets/images/boss/icons/mov/mov.icns +0 -0
  314. data/app/assets/images/boss/icons/mov/mov.ico +0 -0
  315. data/app/assets/images/boss/icons/mp3/mp3-128_32.png +0 -0
  316. data/app/assets/images/boss/icons/mp3/mp3-16_32.png +0 -0
  317. data/app/assets/images/boss/icons/mp3/mp3-24_32.png +0 -0
  318. data/app/assets/images/boss/icons/mp3/mp3-256_32.png +0 -0
  319. data/app/assets/images/boss/icons/mp3/mp3-32_32.png +0 -0
  320. data/app/assets/images/boss/icons/mp3/mp3-48_32.png +0 -0
  321. data/app/assets/images/boss/icons/mp3/mp3-64_32.png +0 -0
  322. data/app/assets/images/boss/icons/mp3/mp3-72_32.png +0 -0
  323. data/app/assets/images/boss/icons/mp3/mp3-80_32.png +0 -0
  324. data/app/assets/images/boss/icons/mp3/mp3-96_32.png +0 -0
  325. data/app/assets/images/boss/icons/mp3/mp3-sm-16_32.png +0 -0
  326. data/app/assets/images/boss/icons/mp3/mp3-sm-24_32.png +0 -0
  327. data/app/assets/images/boss/icons/mp3/mp3-sm-32_32.png +0 -0
  328. data/app/assets/images/boss/icons/mp3/mp3-sm.ico +0 -0
  329. data/app/assets/images/boss/icons/mp3/mp3.icns +0 -0
  330. data/app/assets/images/boss/icons/mp3/mp3.ico +0 -0
  331. data/app/assets/images/boss/icons/mpeg/mpeg-128_32.png +0 -0
  332. data/app/assets/images/boss/icons/mpeg/mpeg-16_32.png +0 -0
  333. data/app/assets/images/boss/icons/mpeg/mpeg-24_32.png +0 -0
  334. data/app/assets/images/boss/icons/mpeg/mpeg-256_32.png +0 -0
  335. data/app/assets/images/boss/icons/mpeg/mpeg-32_32.png +0 -0
  336. data/app/assets/images/boss/icons/mpeg/mpeg-48_32.png +0 -0
  337. data/app/assets/images/boss/icons/mpeg/mpeg-64_32.png +0 -0
  338. data/app/assets/images/boss/icons/mpeg/mpeg-72_32.png +0 -0
  339. data/app/assets/images/boss/icons/mpeg/mpeg-80_32.png +0 -0
  340. data/app/assets/images/boss/icons/mpeg/mpeg-96_32.png +0 -0
  341. data/app/assets/images/boss/icons/mpeg/mpeg-sm-16_32.png +0 -0
  342. data/app/assets/images/boss/icons/mpeg/mpeg-sm-24_32.png +0 -0
  343. data/app/assets/images/boss/icons/mpeg/mpeg-sm-32_32.png +0 -0
  344. data/app/assets/images/boss/icons/mpeg/mpeg-sm.ico +0 -0
  345. data/app/assets/images/boss/icons/mpeg/mpeg.icns +0 -0
  346. data/app/assets/images/boss/icons/mpeg/mpeg.ico +0 -0
  347. data/app/assets/images/boss/icons/pdf/pdf-128_32.png +0 -0
  348. data/app/assets/images/boss/icons/pdf/pdf-16_32.png +0 -0
  349. data/app/assets/images/boss/icons/pdf/pdf-24_32.png +0 -0
  350. data/app/assets/images/boss/icons/pdf/pdf-256_32.png +0 -0
  351. data/app/assets/images/boss/icons/pdf/pdf-32_32.png +0 -0
  352. data/app/assets/images/boss/icons/pdf/pdf-48_32.png +0 -0
  353. data/app/assets/images/boss/icons/pdf/pdf-64_32.png +0 -0
  354. data/app/assets/images/boss/icons/pdf/pdf-72_32.png +0 -0
  355. data/app/assets/images/boss/icons/pdf/pdf-80_32.png +0 -0
  356. data/app/assets/images/boss/icons/pdf/pdf-96_32.png +0 -0
  357. data/app/assets/images/boss/icons/pdf/pdf-sm-16_32.png +0 -0
  358. data/app/assets/images/boss/icons/pdf/pdf-sm-24_32.png +0 -0
  359. data/app/assets/images/boss/icons/pdf/pdf-sm-32_32.png +0 -0
  360. data/app/assets/images/boss/icons/pdf/pdf-sm.ico +0 -0
  361. data/app/assets/images/boss/icons/pdf/pdf.icns +0 -0
  362. data/app/assets/images/boss/icons/pdf/pdf.ico +0 -0
  363. data/app/assets/images/boss/icons/png/png-128_32.png +0 -0
  364. data/app/assets/images/boss/icons/png/png-16_32.png +0 -0
  365. data/app/assets/images/boss/icons/png/png-24_32.png +0 -0
  366. data/app/assets/images/boss/icons/png/png-256_32.png +0 -0
  367. data/app/assets/images/boss/icons/png/png-32_32.png +0 -0
  368. data/app/assets/images/boss/icons/png/png-48_32.png +0 -0
  369. data/app/assets/images/boss/icons/png/png-64_32.png +0 -0
  370. data/app/assets/images/boss/icons/png/png-72_32.png +0 -0
  371. data/app/assets/images/boss/icons/png/png-80_32.png +0 -0
  372. data/app/assets/images/boss/icons/png/png-96_32.png +0 -0
  373. data/app/assets/images/boss/icons/png/png-sm-16_32.png +0 -0
  374. data/app/assets/images/boss/icons/png/png-sm-24_32.png +0 -0
  375. data/app/assets/images/boss/icons/png/png-sm-32_32.png +0 -0
  376. data/app/assets/images/boss/icons/png/png-sm.ico +0 -0
  377. data/app/assets/images/boss/icons/png/png.icns +0 -0
  378. data/app/assets/images/boss/icons/png/png.ico +0 -0
  379. data/app/assets/images/boss/icons/pptx_mac/pptx_mac-128_32.png +0 -0
  380. data/app/assets/images/boss/icons/pptx_mac/pptx_mac-16_32.png +0 -0
  381. data/app/assets/images/boss/icons/pptx_mac/pptx_mac-24_32.png +0 -0
  382. data/app/assets/images/boss/icons/pptx_mac/pptx_mac-256_32.png +0 -0
  383. data/app/assets/images/boss/icons/pptx_mac/pptx_mac-32_32.png +0 -0
  384. data/app/assets/images/boss/icons/pptx_mac/pptx_mac-48_32.png +0 -0
  385. data/app/assets/images/boss/icons/pptx_mac/pptx_mac-64_32.png +0 -0
  386. data/app/assets/images/boss/icons/pptx_mac/pptx_mac-72_32.png +0 -0
  387. data/app/assets/images/boss/icons/pptx_mac/pptx_mac-80_32.png +0 -0
  388. data/app/assets/images/boss/icons/pptx_mac/pptx_mac-96_32.png +0 -0
  389. data/app/assets/images/boss/icons/pptx_mac/pptx_mac-sm-16_32.png +0 -0
  390. data/app/assets/images/boss/icons/pptx_mac/pptx_mac-sm-24_32.png +0 -0
  391. data/app/assets/images/boss/icons/pptx_mac/pptx_mac-sm-32_32.png +0 -0
  392. data/app/assets/images/boss/icons/pptx_mac/pptx_mac-sm.ico +0 -0
  393. data/app/assets/images/boss/icons/pptx_mac/pptx_mac.icns +0 -0
  394. data/app/assets/images/boss/icons/pptx_mac/pptx_mac.ico +0 -0
  395. data/app/assets/images/boss/icons/pptx_win/pptx_win-128_32.png +0 -0
  396. data/app/assets/images/boss/icons/pptx_win/pptx_win-16_32.png +0 -0
  397. data/app/assets/images/boss/icons/pptx_win/pptx_win-24_32.png +0 -0
  398. data/app/assets/images/boss/icons/pptx_win/pptx_win-256_32.png +0 -0
  399. data/app/assets/images/boss/icons/pptx_win/pptx_win-32_32.png +0 -0
  400. data/app/assets/images/boss/icons/pptx_win/pptx_win-48_32.png +0 -0
  401. data/app/assets/images/boss/icons/pptx_win/pptx_win-64_32.png +0 -0
  402. data/app/assets/images/boss/icons/pptx_win/pptx_win-72_32.png +0 -0
  403. data/app/assets/images/boss/icons/pptx_win/pptx_win-80_32.png +0 -0
  404. data/app/assets/images/boss/icons/pptx_win/pptx_win-96_32.png +0 -0
  405. data/app/assets/images/boss/icons/pptx_win/pptx_win-sm-16_32.png +0 -0
  406. data/app/assets/images/boss/icons/pptx_win/pptx_win-sm-24_32.png +0 -0
  407. data/app/assets/images/boss/icons/pptx_win/pptx_win-sm-32_32.png +0 -0
  408. data/app/assets/images/boss/icons/pptx_win/pptx_win-sm.ico +0 -0
  409. data/app/assets/images/boss/icons/pptx_win/pptx_win.ico +0 -0
  410. data/app/assets/images/boss/icons/proj/proj-128_32.png +0 -0
  411. data/app/assets/images/boss/icons/proj/proj-16_32.png +0 -0
  412. data/app/assets/images/boss/icons/proj/proj-24_32.png +0 -0
  413. data/app/assets/images/boss/icons/proj/proj-256_32.png +0 -0
  414. data/app/assets/images/boss/icons/proj/proj-32_32.png +0 -0
  415. data/app/assets/images/boss/icons/proj/proj-48_32.png +0 -0
  416. data/app/assets/images/boss/icons/proj/proj-64_32.png +0 -0
  417. data/app/assets/images/boss/icons/proj/proj-72_32.png +0 -0
  418. data/app/assets/images/boss/icons/proj/proj-80_32.png +0 -0
  419. data/app/assets/images/boss/icons/proj/proj-96_32.png +0 -0
  420. data/app/assets/images/boss/icons/proj/proj-sm-16_32.png +0 -0
  421. data/app/assets/images/boss/icons/proj/proj-sm-24_32.png +0 -0
  422. data/app/assets/images/boss/icons/proj/proj-sm-32_32.png +0 -0
  423. data/app/assets/images/boss/icons/proj/proj-sm.ico +0 -0
  424. data/app/assets/images/boss/icons/proj/proj.icns +0 -0
  425. data/app/assets/images/boss/icons/proj/proj.ico +0 -0
  426. data/app/assets/images/boss/icons/psd/psd-128_32.png +0 -0
  427. data/app/assets/images/boss/icons/psd/psd-16_32.png +0 -0
  428. data/app/assets/images/boss/icons/psd/psd-24_32.png +0 -0
  429. data/app/assets/images/boss/icons/psd/psd-256_32.png +0 -0
  430. data/app/assets/images/boss/icons/psd/psd-32_32.png +0 -0
  431. data/app/assets/images/boss/icons/psd/psd-48_32.png +0 -0
  432. data/app/assets/images/boss/icons/psd/psd-64_32.png +0 -0
  433. data/app/assets/images/boss/icons/psd/psd-72_32.png +0 -0
  434. data/app/assets/images/boss/icons/psd/psd-80_32.png +0 -0
  435. data/app/assets/images/boss/icons/psd/psd-96_32.png +0 -0
  436. data/app/assets/images/boss/icons/psd/psd-sm-16_32.png +0 -0
  437. data/app/assets/images/boss/icons/psd/psd-sm-24_32.png +0 -0
  438. data/app/assets/images/boss/icons/psd/psd-sm-32_32.png +0 -0
  439. data/app/assets/images/boss/icons/psd/psd-sm.ico +0 -0
  440. data/app/assets/images/boss/icons/psd/psd.icns +0 -0
  441. data/app/assets/images/boss/icons/psd/psd.ico +0 -0
  442. data/app/assets/images/boss/icons/pst/pst-128_32.png +0 -0
  443. data/app/assets/images/boss/icons/pst/pst-16_32.png +0 -0
  444. data/app/assets/images/boss/icons/pst/pst-24_32.png +0 -0
  445. data/app/assets/images/boss/icons/pst/pst-256_32.png +0 -0
  446. data/app/assets/images/boss/icons/pst/pst-32_32.png +0 -0
  447. data/app/assets/images/boss/icons/pst/pst-48_32.png +0 -0
  448. data/app/assets/images/boss/icons/pst/pst-64_32.png +0 -0
  449. data/app/assets/images/boss/icons/pst/pst-72_32.png +0 -0
  450. data/app/assets/images/boss/icons/pst/pst-80_32.png +0 -0
  451. data/app/assets/images/boss/icons/pst/pst-96_32.png +0 -0
  452. data/app/assets/images/boss/icons/pst/pst-sm-16_32.png +0 -0
  453. data/app/assets/images/boss/icons/pst/pst-sm-24_32.png +0 -0
  454. data/app/assets/images/boss/icons/pst/pst-sm-32_32.png +0 -0
  455. data/app/assets/images/boss/icons/pst/pst-sm.ico +0 -0
  456. data/app/assets/images/boss/icons/pst/pst.ico +0 -0
  457. data/app/assets/images/boss/icons/pub/pub-128_32.png +0 -0
  458. data/app/assets/images/boss/icons/pub/pub-16_32.png +0 -0
  459. data/app/assets/images/boss/icons/pub/pub-24_32.png +0 -0
  460. data/app/assets/images/boss/icons/pub/pub-256_32.png +0 -0
  461. data/app/assets/images/boss/icons/pub/pub-32_32.png +0 -0
  462. data/app/assets/images/boss/icons/pub/pub-48_32.png +0 -0
  463. data/app/assets/images/boss/icons/pub/pub-64_32.png +0 -0
  464. data/app/assets/images/boss/icons/pub/pub-72_32.png +0 -0
  465. data/app/assets/images/boss/icons/pub/pub-80_32.png +0 -0
  466. data/app/assets/images/boss/icons/pub/pub-96_32.png +0 -0
  467. data/app/assets/images/boss/icons/pub/pub-sm-16_32.png +0 -0
  468. data/app/assets/images/boss/icons/pub/pub-sm-24_32.png +0 -0
  469. data/app/assets/images/boss/icons/pub/pub-sm-32_32.png +0 -0
  470. data/app/assets/images/boss/icons/pub/pub-sm.ico +0 -0
  471. data/app/assets/images/boss/icons/pub/pub.ico +0 -0
  472. data/app/assets/images/boss/icons/rar/rar-128_32.png +0 -0
  473. data/app/assets/images/boss/icons/rar/rar-16_32.png +0 -0
  474. data/app/assets/images/boss/icons/rar/rar-24_32.png +0 -0
  475. data/app/assets/images/boss/icons/rar/rar-256_32.png +0 -0
  476. data/app/assets/images/boss/icons/rar/rar-32_32.png +0 -0
  477. data/app/assets/images/boss/icons/rar/rar-48_32.png +0 -0
  478. data/app/assets/images/boss/icons/rar/rar-64_32.png +0 -0
  479. data/app/assets/images/boss/icons/rar/rar-72_32.png +0 -0
  480. data/app/assets/images/boss/icons/rar/rar-80_32.png +0 -0
  481. data/app/assets/images/boss/icons/rar/rar-96_32.png +0 -0
  482. data/app/assets/images/boss/icons/rar/rar-sm-16_32.png +0 -0
  483. data/app/assets/images/boss/icons/rar/rar-sm-24_32.png +0 -0
  484. data/app/assets/images/boss/icons/rar/rar-sm-32_32.png +0 -0
  485. data/app/assets/images/boss/icons/rar/rar-sm.ico +0 -0
  486. data/app/assets/images/boss/icons/rar/rar.ico +0 -0
  487. data/app/assets/images/boss/icons/readme/readme-128_32.png +0 -0
  488. data/app/assets/images/boss/icons/readme/readme-16_32.png +0 -0
  489. data/app/assets/images/boss/icons/readme/readme-24_32.png +0 -0
  490. data/app/assets/images/boss/icons/readme/readme-256_32.png +0 -0
  491. data/app/assets/images/boss/icons/readme/readme-32_32.png +0 -0
  492. data/app/assets/images/boss/icons/readme/readme-48_32.png +0 -0
  493. data/app/assets/images/boss/icons/readme/readme-64_32.png +0 -0
  494. data/app/assets/images/boss/icons/readme/readme-72_32.png +0 -0
  495. data/app/assets/images/boss/icons/readme/readme-80_32.png +0 -0
  496. data/app/assets/images/boss/icons/readme/readme-96_32.png +0 -0
  497. data/app/assets/images/boss/icons/readme/readme-sm-16_32.png +0 -0
  498. data/app/assets/images/boss/icons/readme/readme-sm-24_32.png +0 -0
  499. data/app/assets/images/boss/icons/readme/readme-sm-32_32.png +0 -0
  500. data/app/assets/images/boss/icons/readme/readme-sm.ico +0 -0
  501. data/app/assets/images/boss/icons/readme/readme.icns +0 -0
  502. data/app/assets/images/boss/icons/readme/readme.ico +0 -0
  503. data/app/assets/images/boss/icons/settings/settings-128_32.png +0 -0
  504. data/app/assets/images/boss/icons/settings/settings-16_32.png +0 -0
  505. data/app/assets/images/boss/icons/settings/settings-24_32.png +0 -0
  506. data/app/assets/images/boss/icons/settings/settings-256_32.png +0 -0
  507. data/app/assets/images/boss/icons/settings/settings-32_32.png +0 -0
  508. data/app/assets/images/boss/icons/settings/settings-48_32.png +0 -0
  509. data/app/assets/images/boss/icons/settings/settings-64_32.png +0 -0
  510. data/app/assets/images/boss/icons/settings/settings-72_32.png +0 -0
  511. data/app/assets/images/boss/icons/settings/settings-80_32.png +0 -0
  512. data/app/assets/images/boss/icons/settings/settings-96_32.png +0 -0
  513. data/app/assets/images/boss/icons/settings/settings-sm-16_32.png +0 -0
  514. data/app/assets/images/boss/icons/settings/settings-sm-24_32.png +0 -0
  515. data/app/assets/images/boss/icons/settings/settings-sm-32_32.png +0 -0
  516. data/app/assets/images/boss/icons/settings/settings-sm.ico +0 -0
  517. data/app/assets/images/boss/icons/settings/settings.icns +0 -0
  518. data/app/assets/images/boss/icons/settings/settings.ico +0 -0
  519. data/app/assets/images/boss/icons/text/text-128_32.png +0 -0
  520. data/app/assets/images/boss/icons/text/text-16_32.png +0 -0
  521. data/app/assets/images/boss/icons/text/text-24_32.png +0 -0
  522. data/app/assets/images/boss/icons/text/text-256_32.png +0 -0
  523. data/app/assets/images/boss/icons/text/text-32_32.png +0 -0
  524. data/app/assets/images/boss/icons/text/text-48_32.png +0 -0
  525. data/app/assets/images/boss/icons/text/text-64_32.png +0 -0
  526. data/app/assets/images/boss/icons/text/text-72_32.png +0 -0
  527. data/app/assets/images/boss/icons/text/text-80_32.png +0 -0
  528. data/app/assets/images/boss/icons/text/text-96_32.png +0 -0
  529. data/app/assets/images/boss/icons/text/text-sm-16_32.png +0 -0
  530. data/app/assets/images/boss/icons/text/text-sm-24_32.png +0 -0
  531. data/app/assets/images/boss/icons/text/text-sm-32_32.png +0 -0
  532. data/app/assets/images/boss/icons/text/text-sm.ico +0 -0
  533. data/app/assets/images/boss/icons/text/text.icns +0 -0
  534. data/app/assets/images/boss/icons/text/text.ico +0 -0
  535. data/app/assets/images/boss/icons/tiff/tiff-128_32.png +0 -0
  536. data/app/assets/images/boss/icons/tiff/tiff-16_32.png +0 -0
  537. data/app/assets/images/boss/icons/tiff/tiff-24_32.png +0 -0
  538. data/app/assets/images/boss/icons/tiff/tiff-256_32.png +0 -0
  539. data/app/assets/images/boss/icons/tiff/tiff-32_32.png +0 -0
  540. data/app/assets/images/boss/icons/tiff/tiff-48_32.png +0 -0
  541. data/app/assets/images/boss/icons/tiff/tiff-64_32.png +0 -0
  542. data/app/assets/images/boss/icons/tiff/tiff-72_32.png +0 -0
  543. data/app/assets/images/boss/icons/tiff/tiff-80_32.png +0 -0
  544. data/app/assets/images/boss/icons/tiff/tiff-96_32.png +0 -0
  545. data/app/assets/images/boss/icons/tiff/tiff-sm-16_32.png +0 -0
  546. data/app/assets/images/boss/icons/tiff/tiff-sm-24_32.png +0 -0
  547. data/app/assets/images/boss/icons/tiff/tiff-sm-32_32.png +0 -0
  548. data/app/assets/images/boss/icons/tiff/tiff-sm.ico +0 -0
  549. data/app/assets/images/boss/icons/tiff/tiff.icns +0 -0
  550. data/app/assets/images/boss/icons/tiff/tiff.ico +0 -0
  551. data/app/assets/images/boss/icons/url/url-128_32.png +0 -0
  552. data/app/assets/images/boss/icons/url/url-16_32.png +0 -0
  553. data/app/assets/images/boss/icons/url/url-24_32.png +0 -0
  554. data/app/assets/images/boss/icons/url/url-256_32.png +0 -0
  555. data/app/assets/images/boss/icons/url/url-32_32.png +0 -0
  556. data/app/assets/images/boss/icons/url/url-48_32.png +0 -0
  557. data/app/assets/images/boss/icons/url/url-64_32.png +0 -0
  558. data/app/assets/images/boss/icons/url/url-72_32.png +0 -0
  559. data/app/assets/images/boss/icons/url/url-80_32.png +0 -0
  560. data/app/assets/images/boss/icons/url/url-96_32.png +0 -0
  561. data/app/assets/images/boss/icons/url/url-sm-16_32.png +0 -0
  562. data/app/assets/images/boss/icons/url/url-sm-24_32.png +0 -0
  563. data/app/assets/images/boss/icons/url/url-sm-32_32.png +0 -0
  564. data/app/assets/images/boss/icons/url/url-sm.ico +0 -0
  565. data/app/assets/images/boss/icons/url/url.icns +0 -0
  566. data/app/assets/images/boss/icons/url/url.ico +0 -0
  567. data/app/assets/images/boss/icons/vsd/vsd-128_32.png +0 -0
  568. data/app/assets/images/boss/icons/vsd/vsd-16_32.png +0 -0
  569. data/app/assets/images/boss/icons/vsd/vsd-24_32.png +0 -0
  570. data/app/assets/images/boss/icons/vsd/vsd-256_32.png +0 -0
  571. data/app/assets/images/boss/icons/vsd/vsd-32_32.png +0 -0
  572. data/app/assets/images/boss/icons/vsd/vsd-48_32.png +0 -0
  573. data/app/assets/images/boss/icons/vsd/vsd-64_32.png +0 -0
  574. data/app/assets/images/boss/icons/vsd/vsd-72_32.png +0 -0
  575. data/app/assets/images/boss/icons/vsd/vsd-80_32.png +0 -0
  576. data/app/assets/images/boss/icons/vsd/vsd-96_32.png +0 -0
  577. data/app/assets/images/boss/icons/vsd/vsd-sm-16_32.png +0 -0
  578. data/app/assets/images/boss/icons/vsd/vsd-sm-24_32.png +0 -0
  579. data/app/assets/images/boss/icons/vsd/vsd-sm-32_32.png +0 -0
  580. data/app/assets/images/boss/icons/vsd/vsd-sm.ico +0 -0
  581. data/app/assets/images/boss/icons/vsd/vsd.ico +0 -0
  582. data/app/assets/images/boss/icons/wav/wav-128_32.png +0 -0
  583. data/app/assets/images/boss/icons/wav/wav-16_32.png +0 -0
  584. data/app/assets/images/boss/icons/wav/wav-24_32.png +0 -0
  585. data/app/assets/images/boss/icons/wav/wav-256_32.png +0 -0
  586. data/app/assets/images/boss/icons/wav/wav-32_32.png +0 -0
  587. data/app/assets/images/boss/icons/wav/wav-48_32.png +0 -0
  588. data/app/assets/images/boss/icons/wav/wav-64_32.png +0 -0
  589. data/app/assets/images/boss/icons/wav/wav-72_32.png +0 -0
  590. data/app/assets/images/boss/icons/wav/wav-80_32.png +0 -0
  591. data/app/assets/images/boss/icons/wav/wav-96_32.png +0 -0
  592. data/app/assets/images/boss/icons/wav/wav-sm-16_32.png +0 -0
  593. data/app/assets/images/boss/icons/wav/wav-sm-24_32.png +0 -0
  594. data/app/assets/images/boss/icons/wav/wav-sm-32_32.png +0 -0
  595. data/app/assets/images/boss/icons/wav/wav-sm.ico +0 -0
  596. data/app/assets/images/boss/icons/wav/wav.icns +0 -0
  597. data/app/assets/images/boss/icons/wav/wav.ico +0 -0
  598. data/app/assets/images/boss/icons/wma/wma-128_32.png +0 -0
  599. data/app/assets/images/boss/icons/wma/wma-16_32.png +0 -0
  600. data/app/assets/images/boss/icons/wma/wma-24_32.png +0 -0
  601. data/app/assets/images/boss/icons/wma/wma-256_32.png +0 -0
  602. data/app/assets/images/boss/icons/wma/wma-32_32.png +0 -0
  603. data/app/assets/images/boss/icons/wma/wma-48_32.png +0 -0
  604. data/app/assets/images/boss/icons/wma/wma-64_32.png +0 -0
  605. data/app/assets/images/boss/icons/wma/wma-72_32.png +0 -0
  606. data/app/assets/images/boss/icons/wma/wma-80_32.png +0 -0
  607. data/app/assets/images/boss/icons/wma/wma-96_32.png +0 -0
  608. data/app/assets/images/boss/icons/wma/wma-sm-16_32.png +0 -0
  609. data/app/assets/images/boss/icons/wma/wma-sm-24_32.png +0 -0
  610. data/app/assets/images/boss/icons/wma/wma-sm-32_32.png +0 -0
  611. data/app/assets/images/boss/icons/wma/wma-sm.ico +0 -0
  612. data/app/assets/images/boss/icons/wma/wma.icns +0 -0
  613. data/app/assets/images/boss/icons/wma/wma.ico +0 -0
  614. data/app/assets/images/boss/icons/wmv/wmv-128_32.png +0 -0
  615. data/app/assets/images/boss/icons/wmv/wmv-16_32.png +0 -0
  616. data/app/assets/images/boss/icons/wmv/wmv-24_32.png +0 -0
  617. data/app/assets/images/boss/icons/wmv/wmv-256_32.png +0 -0
  618. data/app/assets/images/boss/icons/wmv/wmv-32_32.png +0 -0
  619. data/app/assets/images/boss/icons/wmv/wmv-48_32.png +0 -0
  620. data/app/assets/images/boss/icons/wmv/wmv-64_32.png +0 -0
  621. data/app/assets/images/boss/icons/wmv/wmv-72_32.png +0 -0
  622. data/app/assets/images/boss/icons/wmv/wmv-80_32.png +0 -0
  623. data/app/assets/images/boss/icons/wmv/wmv-96_32.png +0 -0
  624. data/app/assets/images/boss/icons/wmv/wmv-sm-16_32.png +0 -0
  625. data/app/assets/images/boss/icons/wmv/wmv-sm-24_32.png +0 -0
  626. data/app/assets/images/boss/icons/wmv/wmv-sm-32_32.png +0 -0
  627. data/app/assets/images/boss/icons/wmv/wmv-sm.ico +0 -0
  628. data/app/assets/images/boss/icons/wmv/wmv.icns +0 -0
  629. data/app/assets/images/boss/icons/wmv/wmv.ico +0 -0
  630. data/app/assets/images/boss/icons/xlsx_mac/xlsx_mac-128_32.png +0 -0
  631. data/app/assets/images/boss/icons/xlsx_mac/xlsx_mac-16_32.png +0 -0
  632. data/app/assets/images/boss/icons/xlsx_mac/xlsx_mac-24_32.png +0 -0
  633. data/app/assets/images/boss/icons/xlsx_mac/xlsx_mac-256_32.png +0 -0
  634. data/app/assets/images/boss/icons/xlsx_mac/xlsx_mac-32_32.png +0 -0
  635. data/app/assets/images/boss/icons/xlsx_mac/xlsx_mac-48_32.png +0 -0
  636. data/app/assets/images/boss/icons/xlsx_mac/xlsx_mac-64_32.png +0 -0
  637. data/app/assets/images/boss/icons/xlsx_mac/xlsx_mac-72_32.png +0 -0
  638. data/app/assets/images/boss/icons/xlsx_mac/xlsx_mac-80_32.png +0 -0
  639. data/app/assets/images/boss/icons/xlsx_mac/xlsx_mac-96_32.png +0 -0
  640. data/app/assets/images/boss/icons/xlsx_mac/xlsx_mac-sm-16_32.png +0 -0
  641. data/app/assets/images/boss/icons/xlsx_mac/xlsx_mac-sm-24_32.png +0 -0
  642. data/app/assets/images/boss/icons/xlsx_mac/xlsx_mac-sm-32_32.png +0 -0
  643. data/app/assets/images/boss/icons/xlsx_mac/xlsx_mac-sm.ico +0 -0
  644. data/app/assets/images/boss/icons/xlsx_mac/xlsx_mac.icns +0 -0
  645. data/app/assets/images/boss/icons/xlsx_mac/xlsx_mac.ico +0 -0
  646. data/app/assets/images/boss/icons/xlsx_win/xlsx-win.ico +0 -0
  647. data/app/assets/images/boss/icons/xlsx_win/xlsx_win-128_32.png +0 -0
  648. data/app/assets/images/boss/icons/xlsx_win/xlsx_win-16_32.png +0 -0
  649. data/app/assets/images/boss/icons/xlsx_win/xlsx_win-24_32.png +0 -0
  650. data/app/assets/images/boss/icons/xlsx_win/xlsx_win-256_32.png +0 -0
  651. data/app/assets/images/boss/icons/xlsx_win/xlsx_win-32_32.png +0 -0
  652. data/app/assets/images/boss/icons/xlsx_win/xlsx_win-48_32.png +0 -0
  653. data/app/assets/images/boss/icons/xlsx_win/xlsx_win-64_32.png +0 -0
  654. data/app/assets/images/boss/icons/xlsx_win/xlsx_win-72_32.png +0 -0
  655. data/app/assets/images/boss/icons/xlsx_win/xlsx_win-80_32.png +0 -0
  656. data/app/assets/images/boss/icons/xlsx_win/xlsx_win-96_32.png +0 -0
  657. data/app/assets/images/boss/icons/xlsx_win/xlsx_win-sm-16_32.png +0 -0
  658. data/app/assets/images/boss/icons/xlsx_win/xlsx_win-sm-24_32.png +0 -0
  659. data/app/assets/images/boss/icons/xlsx_win/xlsx_win-sm-32_32.png +0 -0
  660. data/app/assets/images/boss/icons/xlsx_win/xlsx_win-sm.ico +0 -0
  661. data/app/assets/images/boss/icons/zip/zip-128_32.png +0 -0
  662. data/app/assets/images/boss/icons/zip/zip-16_32.png +0 -0
  663. data/app/assets/images/boss/icons/zip/zip-24_32.png +0 -0
  664. data/app/assets/images/boss/icons/zip/zip-256_32.png +0 -0
  665. data/app/assets/images/boss/icons/zip/zip-32_32.png +0 -0
  666. data/app/assets/images/boss/icons/zip/zip-48_32.png +0 -0
  667. data/app/assets/images/boss/icons/zip/zip-64_32.png +0 -0
  668. data/app/assets/images/boss/icons/zip/zip-72_32.png +0 -0
  669. data/app/assets/images/boss/icons/zip/zip-80_32.png +0 -0
  670. data/app/assets/images/boss/icons/zip/zip-96_32.png +0 -0
  671. data/app/assets/images/boss/icons/zip/zip-sm-16_32.png +0 -0
  672. data/app/assets/images/boss/icons/zip/zip-sm-24_32.png +0 -0
  673. data/app/assets/images/boss/icons/zip/zip-sm-32_32.png +0 -0
  674. data/app/assets/images/boss/icons/zip/zip-sm.ico +0 -0
  675. data/app/assets/images/boss/icons/zip/zip.icns +0 -0
  676. data/app/assets/images/boss/icons/zip/zip.ico +0 -0
  677. data/app/assets/javascripts/boss.js +25 -0
  678. data/app/assets/javascripts/boss/banners.js.coffee +14 -0
  679. data/app/assets/javascripts/boss/better-pagination.js.coffee +84 -0
  680. data/app/assets/javascripts/boss/posts.js.coffee.erb +42 -0
  681. data/app/assets/javascripts/boss/resources.js.coffee.erb +13 -0
  682. data/app/assets/javascripts/boss/utils.js.coffee +17 -0
  683. data/app/assets/javascripts/datepicker-locales/jquery.ui.datepicker-en-GB.js +23 -0
  684. data/app/assets/javascripts/datepicker-locales/jquery.ui.datepicker-pt-BR.js +23 -0
  685. data/app/assets/javascripts/jQueryFileUpload/jquery.fileupload-fp.js +219 -0
  686. data/app/assets/javascripts/jQueryFileUpload/jquery.fileupload-ui.js +736 -0
  687. data/app/assets/javascripts/jQueryFileUpload/jquery.fileupload.js +975 -0
  688. data/app/assets/javascripts/jQueryFileUpload/jquery.iframe-transport.js +172 -0
  689. data/app/assets/javascripts/jQueryFileUpload/load-image.min.js +1 -0
  690. data/app/assets/javascripts/jQueryFileUpload/locale.js +29 -0
  691. data/app/assets/javascripts/jQueryFileUpload/tmpl.min.js +1 -0
  692. data/app/assets/javascripts/jquery-ui-1.8.23.custom.min.js +9 -0
  693. data/app/assets/javascripts/redactor/langs/bg.js +67 -0
  694. data/app/assets/javascripts/redactor/langs/by.js +65 -0
  695. data/app/assets/javascripts/redactor/langs/cs.js +77 -0
  696. data/app/assets/javascripts/redactor/langs/de.js +70 -0
  697. data/app/assets/javascripts/redactor/langs/en.js +66 -0
  698. data/app/assets/javascripts/redactor/langs/es.js +66 -0
  699. data/app/assets/javascripts/redactor/langs/fi.js +69 -0
  700. data/app/assets/javascripts/redactor/langs/fr.js +76 -0
  701. data/app/assets/javascripts/redactor/langs/hr.js +69 -0
  702. data/app/assets/javascripts/redactor/langs/hu.js +67 -0
  703. data/app/assets/javascripts/redactor/langs/it.js +68 -0
  704. data/app/assets/javascripts/redactor/langs/ja.js +66 -0
  705. data/app/assets/javascripts/redactor/langs/ko.js +66 -0
  706. data/app/assets/javascripts/redactor/langs/lv.js +65 -0
  707. data/app/assets/javascripts/redactor/langs/nl.js +69 -0
  708. data/app/assets/javascripts/redactor/langs/pl.js +66 -0
  709. data/app/assets/javascripts/redactor/langs/pt_br.js +72 -0
  710. data/app/assets/javascripts/redactor/langs/ru.js +66 -0
  711. data/app/assets/javascripts/redactor/langs/sk.js +66 -0
  712. data/app/assets/javascripts/redactor/langs/sq.js +69 -0
  713. data/app/assets/javascripts/redactor/langs/tr.js +66 -0
  714. data/app/assets/javascripts/redactor/langs/ua.js +67 -0
  715. data/app/assets/javascripts/redactor/langs/zh_cn.js +67 -0
  716. data/app/assets/javascripts/redactor/redactor.js +3254 -0
  717. data/app/assets/javascripts/redactor/redactor.min.js +1 -0
  718. data/app/assets/javascripts/slides/slides.jquery.js +555 -0
  719. data/app/assets/javascripts/slides/slides.min.jquery.js +20 -0
  720. data/app/assets/javascripts/yepnope.1.5.4-min.js +2 -0
  721. data/app/assets/stylesheets/boss.css +15 -0
  722. data/app/assets/stylesheets/boss/structure.sass +14 -0
  723. data/app/assets/stylesheets/boss/style.sass +15 -0
  724. data/app/assets/stylesheets/jQueryFileUpload/jquery.fileupload-ui.css +84 -0
  725. data/app/assets/stylesheets/redactor.css +13 -0
  726. data/app/assets/stylesheets/redactor/css/docstyle.css +139 -0
  727. data/app/assets/stylesheets/redactor/css/redactor.css +409 -0
  728. data/app/assets/stylesheets/redactor/css/style.css +135 -0
  729. data/app/assets/stylesheets/redactor/css/wym.css +151 -0
  730. data/app/assets/stylesheets/redactor/img/icons.png +0 -0
  731. data/app/assets/stylesheets/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  732. data/app/assets/stylesheets/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  733. data/app/assets/stylesheets/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  734. data/app/assets/stylesheets/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  735. data/app/assets/stylesheets/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  736. data/app/assets/stylesheets/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  737. data/app/assets/stylesheets/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  738. data/app/assets/stylesheets/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  739. data/app/assets/stylesheets/smoothness/images/ui-icons_222222_256x240.png +0 -0
  740. data/app/assets/stylesheets/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  741. data/app/assets/stylesheets/smoothness/images/ui-icons_454545_256x240.png +0 -0
  742. data/app/assets/stylesheets/smoothness/images/ui-icons_888888_256x240.png +0 -0
  743. data/app/assets/stylesheets/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  744. data/app/assets/stylesheets/smoothness/jquery-ui-1.8.23.custom.css +563 -0
  745. data/app/controllers/boss/admin/application_controller.rb +14 -0
  746. data/app/controllers/boss/admin/banners_controller.rb +19 -0
  747. data/app/controllers/boss/admin/posts_controller.rb +14 -0
  748. data/app/controllers/boss/admin/resources_controller.rb +44 -0
  749. data/app/controllers/boss/application_controller.rb +2 -0
  750. data/app/controllers/boss/posts_controller.rb +86 -0
  751. data/app/controllers/boss/resources_controller.rb +33 -0
  752. data/app/helpers/boss/application_helper.rb +23 -0
  753. data/app/models/boss/banner.rb +28 -0
  754. data/app/models/boss/category.rb +5 -0
  755. data/app/models/boss/post.rb +20 -0
  756. data/app/models/boss/resource.rb +52 -0
  757. data/app/views/boss/admin/banners/new.html.erb +38 -0
  758. data/app/views/boss/admin/posts/_post.html.erb +8 -0
  759. data/app/views/boss/admin/posts/index.html.erb +3 -0
  760. data/app/views/boss/admin/resources/_resource.html.erb +5 -0
  761. data/app/views/boss/admin/resources/_upload.html.erb +22 -0
  762. data/app/views/boss/admin/resources/index.html.erb +75 -0
  763. data/app/views/boss/banners/_banner_viewer.html.erb +14 -0
  764. data/app/views/boss/posts/_footer.html.erb +7 -0
  765. data/app/views/boss/posts/_header.html.erb +3 -0
  766. data/app/views/boss/posts/_meta.html.erb +1 -0
  767. data/app/views/boss/posts/_post.html.erb +4 -0
  768. data/app/views/boss/posts/archive.html.erb +0 -0
  769. data/app/views/boss/posts/edit.html.erb +18 -0
  770. data/app/views/boss/posts/index.html.erb +11 -0
  771. data/app/views/boss/posts/new.html.erb +24 -0
  772. data/app/views/boss/posts/show.html.erb +11 -0
  773. data/app/views/layouts/admin.html.erb +21 -0
  774. data/app/views/layouts/application.html.erb +21 -0
  775. data/config/initializers/add_stuff_to_main_app.rb +32 -0
  776. data/config/initializers/generate_post_tmpl.rb +7 -0
  777. data/config/initializers/load_config.rb +3 -0
  778. data/config/locales/controllers/banners/en.yml +5 -0
  779. data/config/locales/controllers/posts/en.yml +5 -0
  780. data/config/locales/models/banners/en.yml +3 -0
  781. data/config/locales/models/posts/en.yml +3 -0
  782. data/config/locales/views/banners/form/en.yml +9 -0
  783. data/config/locales/views/banners/form/pt.yml +9 -0
  784. data/config/locales/views/pagination/en.yml +8 -0
  785. data/config/locales/views/posts/new/en.yml +8 -0
  786. data/config/locales/views/posts/post/en.yml +9 -0
  787. data/config/locales/views/posts/publish/en.yml +5 -0
  788. data/config/locales/views/resources/form/en.yml +5 -0
  789. data/config/posts_config.yml +1 -0
  790. data/config/resource_styles.yml +2 -0
  791. data/config/resources_config.yml +1 -0
  792. data/config/routes.rb +39 -0
  793. data/db/migrate/20120624233540_create_boss_posts.rb +12 -0
  794. data/db/migrate/20120706130424_create_resources_table.rb +10 -0
  795. data/db/migrate/20120706155028_add_content_type_index_to_resources.rb +5 -0
  796. data/db/migrate/20120810095209_add_extension_column_to_resources.rb +8 -0
  797. data/db/migrate/20120810170007_change_start_date_to_published_date.rb +5 -0
  798. data/db/migrate/20120814163213_create_banners.rb +11 -0
  799. data/db/migrate/20120903112923_create_categories.rb +18 -0
  800. data/db/migrate/20120907014143_acts_as_taggable_on_migration.rb +30 -0
  801. data/db/seeds.rb +8 -0
  802. data/lib/boss.rb +5 -0
  803. data/lib/boss/engine.rb +11 -0
  804. data/lib/boss/pagination.rb +26 -0
  805. data/lib/boss/post_generator.rb +32 -0
  806. data/lib/boss/version.rb +3 -0
  807. data/lib/tasks/boss_tasks.rake +4 -0
  808. data/spec/dummy/README.rdoc +261 -0
  809. data/spec/dummy/Rakefile +17 -0
  810. data/spec/dummy/app/assets/javascripts/application.js +17 -0
  811. data/spec/dummy/app/assets/stylesheets/application.css +14 -0
  812. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  813. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  814. data/spec/dummy/app/views/layouts/application.html.erb +19 -0
  815. data/spec/dummy/config.ru +4 -0
  816. data/spec/dummy/config/accounts.yml +3 -0
  817. data/spec/dummy/config/application.rb +59 -0
  818. data/spec/dummy/config/boot.rb +10 -0
  819. data/spec/dummy/config/cucumber.yml +8 -0
  820. data/spec/dummy/config/database.yml +28 -0
  821. data/spec/dummy/config/environment.rb +5 -0
  822. data/spec/dummy/config/environments/development.rb +39 -0
  823. data/spec/dummy/config/environments/production.rb +67 -0
  824. data/spec/dummy/config/environments/test.rb +37 -0
  825. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  826. data/spec/dummy/config/initializers/inflections.rb +15 -0
  827. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  828. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  829. data/spec/dummy/config/initializers/session_store.rb +8 -0
  830. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  831. data/spec/dummy/config/locales/en.yml +5 -0
  832. data/spec/dummy/config/routes.rb +3 -0
  833. data/spec/dummy/db/development.sqlite3 +0 -0
  834. data/spec/dummy/db/migrate/20120712230935_devise_create_users.citygate.rb +50 -0
  835. data/spec/dummy/db/migrate/20120712230936_add_name_to_users.citygate.rb +7 -0
  836. data/spec/dummy/db/migrate/20120712230937_add_confirmable_to_users.citygate.rb +12 -0
  837. data/spec/dummy/db/migrate/20120712230938_devise_invitable_add_to_users.citygate.rb +24 -0
  838. data/spec/dummy/db/migrate/20120712230939_add_omniauth_to_devise.citygate.rb +20 -0
  839. data/spec/dummy/db/migrate/20120712230940_create_roles.citygate.rb +11 -0
  840. data/spec/dummy/db/migrate/20120712230950_create_boss_posts.boss.rb +13 -0
  841. data/spec/dummy/db/migrate/20120712230951_create_resources_table.boss.rb +11 -0
  842. data/spec/dummy/db/migrate/20120712230952_add_content_type_index_to_resources.boss.rb +6 -0
  843. data/spec/dummy/db/migrate/20120727151629_create_permissions_table.citygate.rb +13 -0
  844. data/spec/dummy/db/migrate/20120810095503_add_extension_column_to_resources.boss.rb +9 -0
  845. data/spec/dummy/db/migrate/20120810170148_change_start_date_to_published_date.boss.rb +6 -0
  846. data/spec/dummy/db/migrate/20120814170416_create_banners.boss.rb +12 -0
  847. data/spec/dummy/db/migrate/20120903135116_create_categories.boss.rb +19 -0
  848. data/spec/dummy/db/migrate/20120907014721_acts_as_taggable_on_migration.boss.rb +31 -0
  849. data/spec/dummy/db/migrate/20121008164320_add_conditions_to_permissions.citygate.rb +6 -0
  850. data/spec/dummy/db/production.sqlite3 +0 -0
  851. data/spec/dummy/db/schema.rb +134 -0
  852. data/spec/dummy/db/seeds.rb +2 -0
  853. data/spec/dummy/db/test.sqlite3 +0 -0
  854. data/spec/dummy/features/support/env.rb +59 -0
  855. data/spec/dummy/lib/ability.rb +26 -0
  856. data/spec/dummy/lib/tasks/cucumber.rake +65 -0
  857. data/spec/dummy/log/development.log +148449 -0
  858. data/spec/dummy/log/production.log +2 -0
  859. data/spec/dummy/log/test.log +82744 -0
  860. data/spec/dummy/public/404.html +26 -0
  861. data/spec/dummy/public/422.html +26 -0
  862. data/spec/dummy/public/500.html +25 -0
  863. data/spec/dummy/public/favicon.ico +0 -0
  864. data/spec/dummy/public/system/boss/resources/resources/000/000/001/original/basketball.pdf +0 -0
  865. data/spec/dummy/public/system/boss/resources/resources/000/000/001/original/computer_0050.jpg +0 -0
  866. data/spec/dummy/public/system/boss/resources/resources/000/000/001/original/gb_logo100.png +0 -0
  867. data/spec/dummy/public/system/boss/resources/resources/000/000/002/original/basketball.pdf +0 -0
  868. data/spec/dummy/public/system/boss/resources/resources/000/000/002/original/computer_0050.jpg +0 -0
  869. data/spec/dummy/public/system/boss/resources/resources/000/000/002/original/example_file.txt +3 -0
  870. data/spec/dummy/public/system/boss/resources/resources/000/000/003/original/computer_0050.jpg +0 -0
  871. data/spec/dummy/public/system/boss/resources/resources/000/000/003/original/example_file.txt +3 -0
  872. data/spec/dummy/public/system/boss/resources/resources/000/000/004/original/example_file.txt +3 -0
  873. data/spec/dummy/public/system/boss/resources/resources/000/000/004/original/gb_logo100.png +0 -0
  874. data/spec/dummy/public/system/resources/1/original/56883622_18f242e114_b.jpg +0 -0
  875. data/spec/dummy/public/system/resources/1/original/basketball.pdf +0 -0
  876. data/spec/dummy/public/system/resources/1/original/computer_0050.jpg +0 -0
  877. data/spec/dummy/public/system/resources/10/original/1310855824664.jpg +0 -0
  878. data/spec/dummy/public/system/resources/2/original/1310855824664.jpg +0 -0
  879. data/spec/dummy/public/system/resources/2/original/basketball.pdf +0 -0
  880. data/spec/dummy/public/system/resources/2/original/computer_0050.jpg +0 -0
  881. data/spec/dummy/public/system/resources/3/original/1310856290635.jpg +0 -0
  882. data/spec/dummy/public/system/resources/4/original/1310856399167.jpg +0 -0
  883. data/spec/dummy/public/system/resources/5/original/158_7915_0.jpg +0 -0
  884. data/spec/dummy/public/system/resources/6/original/1310855824664.jpg +0 -0
  885. data/spec/dummy/public/system/resources/7/original/1310856290635.jpg +0 -0
  886. data/spec/dummy/public/system/resources/8/original/1310855824664.jpg +0 -0
  887. data/spec/dummy/public/system/resources/9/original/2257284249_4620b85e05.jpg +0 -0
  888. data/spec/dummy/script/cucumber +10 -0
  889. data/spec/dummy/script/rails +6 -0
  890. data/spec/dummy/spec/controllers/admin/banners_controller_spec.rb +41 -0
  891. data/spec/dummy/spec/controllers/admin/posts_controller_spec.rb +11 -0
  892. data/spec/dummy/spec/controllers/admin/resources_controller_spec.rb +33 -0
  893. data/spec/dummy/spec/controllers/posts_controller_spec.rb +171 -0
  894. data/spec/dummy/spec/controllers/resources_controller_spec.rb +49 -0
  895. data/spec/dummy/spec/fixtures/boss_banners.yml +17 -0
  896. data/spec/dummy/spec/fixtures/boss_posts.yml +14 -0
  897. data/spec/dummy/spec/fixtures/citygate_users.yml +16 -0
  898. data/spec/dummy/spec/fixtures/files/basketball.pdf +0 -0
  899. data/spec/dummy/spec/fixtures/files/computer_0050.jpg +0 -0
  900. data/spec/dummy/spec/helpers/boss_application_helper_spec.rb +23 -0
  901. data/spec/dummy/spec/models/banners_spec.rb +24 -0
  902. data/spec/dummy/spec/models/posts_spec.rb +41 -0
  903. data/spec/dummy/spec/models/resource_spec.rb +60 -0
  904. data/spec/dummy/spec/routing/routing_spec.rb +61 -0
  905. data/spec/dummy/spec/spec_helper.rb +42 -0
  906. data/spec/dummy/tmp/cache/assets/BC2/850/sprockets%2F878400110743687d61711159c65f8c22 +0 -0
  907. data/spec/dummy/tmp/cache/assets/C24/520/sprockets%2F2f3a8489d25374d44119141585f115e5 +0 -0
  908. data/spec/dummy/tmp/cache/assets/C40/030/sprockets%2F54436c0d13893197751ee6999856ad68 +0 -0
  909. data/spec/dummy/tmp/cache/assets/C53/0E0/sprockets%2F121790135397621ab7af6984cb91566b +0 -0
  910. data/spec/dummy/tmp/cache/assets/C5A/5F0/sprockets%2F52259544bea2a61627b95987a6d86044 +0 -0
  911. data/spec/dummy/tmp/cache/assets/C5D/7D0/sprockets%2Faa929f78240346438e0086eca2977087 +0 -0
  912. data/spec/dummy/tmp/cache/assets/C63/E40/sprockets%2F36a675f52eb281488964b58be8971051 +0 -0
  913. data/spec/dummy/tmp/cache/assets/C6F/580/sprockets%2F22851f7af64e526bab14507232230e55 +0 -0
  914. data/spec/dummy/tmp/cache/assets/C72/B10/sprockets%2F21a4b8118f1f4254bf815e306027b951 +0 -0
  915. data/spec/dummy/tmp/cache/assets/C79/470/sprockets%2F7247bad709a775b6100a0864e463e704 +0 -0
  916. data/spec/dummy/tmp/cache/assets/C79/600/sprockets%2F3b480b741c938623c715006562f7a5bd +0 -0
  917. data/spec/dummy/tmp/cache/assets/C7A/C80/sprockets%2Fd520714793fb36dc6631414827206ade +0 -0
  918. data/spec/dummy/tmp/cache/assets/C88/300/sprockets%2F423f0a9f7a3b8f3395957d890e105900 +0 -0
  919. data/spec/dummy/tmp/cache/assets/C89/540/sprockets%2F606a455261f8f047c994c4b9a582f126 +0 -0
  920. data/spec/dummy/tmp/cache/assets/C90/E00/sprockets%2F0e5cc463f8d36795635981b11d9819c1 +0 -0
  921. data/spec/dummy/tmp/cache/assets/C92/F90/sprockets%2F920438082fee7d6098e3cd0278b49287 +0 -0
  922. data/spec/dummy/tmp/cache/assets/CA2/A80/sprockets%2F7b2db319590bc1c8134a3e338e604506 +0 -0
  923. data/spec/dummy/tmp/cache/assets/CA6/B10/sprockets%2F3111836e637405cf7106ecf0d37c70a7 +0 -0
  924. data/spec/dummy/tmp/cache/assets/CA8/F30/sprockets%2Fd74b20422f5218a62a02c7f48628d83d +0 -0
  925. data/spec/dummy/tmp/cache/assets/CAD/200/sprockets%2F50793597dc52344a9e10c12a79b264ea +0 -0
  926. data/spec/dummy/tmp/cache/assets/CAD/860/sprockets%2Fd73482fc43b147c1c401c2569dd92393 +0 -0
  927. data/spec/dummy/tmp/cache/assets/CAF/7B0/sprockets%2F9143406f63303f9fd28ab3658e161a4e +0 -0
  928. data/spec/dummy/tmp/cache/assets/CAF/FD0/sprockets%2F6026648844c17c73d917e3cda02d08a7 +0 -0
  929. data/spec/dummy/tmp/cache/assets/CB5/850/sprockets%2F011afbabcc10d620043300f28f499101 +0 -0
  930. data/spec/dummy/tmp/cache/assets/CB8/120/sprockets%2F46e2c48936a7976a3cb1f04aa8571278 +0 -0
  931. data/spec/dummy/tmp/cache/assets/CB9/940/sprockets%2Fd292ab0519813823cf786f6f620c4e94 +0 -0
  932. data/spec/dummy/tmp/cache/assets/CBF/370/sprockets%2F4e92e9ef55274628e8a46a27f23196b0 +0 -0
  933. data/spec/dummy/tmp/cache/assets/CC5/020/sprockets%2Ffa39f3f719158fea829829617391b42c +0 -0
  934. data/spec/dummy/tmp/cache/assets/CCF/230/sprockets%2F75a20a5e4f06832a4224a5f4a6314d8d +0 -0
  935. data/spec/dummy/tmp/cache/assets/CD5/180/sprockets%2F1e035230c4b6e464f1146973f0c7bc5e +0 -0
  936. data/spec/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
  937. data/spec/dummy/tmp/cache/assets/CD9/C70/sprockets%2Fb120f38a079fa9924c79c7a8101d53c0 +0 -0
  938. data/spec/dummy/tmp/cache/assets/CD9/CC0/sprockets%2F0c3ccc56507dd6594d72265d72c0318a +0 -0
  939. data/spec/dummy/tmp/cache/assets/CDA/3C0/sprockets%2F7413c4409dccf4fb698a42d020c02688 +0 -0
  940. data/spec/dummy/tmp/cache/assets/CDE/400/sprockets%2F58e8203723604e6bde11c0eb480c85f9 +0 -0
  941. data/spec/dummy/tmp/cache/assets/CDF/140/sprockets%2Fb5f8e1000e499f4b6787017ce16322af +0 -0
  942. data/spec/dummy/tmp/cache/assets/CE1/400/sprockets%2F25fe90052e1eaac8751c1960196d865d +0 -0
  943. data/spec/dummy/tmp/cache/assets/CE1/760/sprockets%2F6485f6d500193d364be392c118e4ebd5 +0 -0
  944. data/spec/dummy/tmp/cache/assets/CE3/150/sprockets%2F7d7a09e1df5c7510266a8d752683c4b3 +0 -0
  945. data/spec/dummy/tmp/cache/assets/CE6/D70/sprockets%2Fdf419b464fb39e134b7354fb933e0565 +0 -0
  946. data/spec/dummy/tmp/cache/assets/CE8/510/sprockets%2F0d85ab6e3972f70636a990e91fec8301 +0 -0
  947. data/spec/dummy/tmp/cache/assets/CE8/830/sprockets%2Fbc45b7ec3697c73450861834ee1336de +0 -0
  948. data/spec/dummy/tmp/cache/assets/CE9/5C0/sprockets%2Fdbe1c3a9e49d07916422e46149e8f318 +0 -0
  949. data/spec/dummy/tmp/cache/assets/CEF/C10/sprockets%2Fee370705f1ec41a8f49d30066798ef67 +0 -0
  950. data/spec/dummy/tmp/cache/assets/CF6/600/sprockets%2Fbcad79f4640490fa8743c56693e4e794 +0 -0
  951. data/spec/dummy/tmp/cache/assets/CF9/DB0/sprockets%2F2c0c81d15b23ec2123be4e299b047d42 +0 -0
  952. data/spec/dummy/tmp/cache/assets/CFA/080/sprockets%2F332a10f033129bd16ecfc2d9fc629023 +0 -0
  953. data/spec/dummy/tmp/cache/assets/D00/6D0/sprockets%2Fbb3256f3c4232c8a34543ae1f82e165b +0 -0
  954. data/spec/dummy/tmp/cache/assets/D00/980/sprockets%2Fe4eaa22e351f850345723ac2429c2f5b +0 -0
  955. data/spec/dummy/tmp/cache/assets/D07/3E0/sprockets%2Fbc15323161b84e2c1764d726aec772fd +0 -0
  956. data/spec/dummy/tmp/cache/assets/D0C/870/sprockets%2F47b59bc508d38b0709f3be16ccd12572 +0 -0
  957. data/spec/dummy/tmp/cache/assets/D0D/DE0/sprockets%2Fa35442f02b0b2479f22d83d639d8c4fd +0 -0
  958. data/spec/dummy/tmp/cache/assets/D10/870/sprockets%2F113a9b82b3ca5f41b5c9dac767646881 +0 -0
  959. data/spec/dummy/tmp/cache/assets/D15/5F0/sprockets%2F60f459141be5f877fb1f8cf38ca12452 +0 -0
  960. data/spec/dummy/tmp/cache/assets/D19/8B0/sprockets%2Fe8e7c72b55150f9a3f6917b0a7dd0299 +0 -0
  961. data/spec/dummy/tmp/cache/assets/D1A/400/sprockets%2F68bf61e296672914dcad81f9d1c806a3 +0 -0
  962. data/spec/dummy/tmp/cache/assets/D1C/B60/sprockets%2F4562fff067923d7e68b607c2f360d6dc +0 -0
  963. data/spec/dummy/tmp/cache/assets/D24/F60/sprockets%2Fe36a043fa2b3b9a221b015dffc471462 +0 -0
  964. data/spec/dummy/tmp/cache/assets/D2C/720/sprockets%2Fe4490972a26bb2f531212009dfcafa1f +0 -0
  965. data/spec/dummy/tmp/cache/assets/D2F/100/sprockets%2F95ffc0bd9499bacd4991f99f29381722 +0 -0
  966. data/spec/dummy/tmp/cache/assets/D31/1A0/sprockets%2Fe4e3cb247a17e0b1b89b510f70d380b8 +0 -0
  967. data/spec/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  968. data/spec/dummy/tmp/cache/assets/D32/B30/sprockets%2F6ea2d01e1b76df9a9a003f35074d7f21 +0 -0
  969. data/spec/dummy/tmp/cache/assets/D38/0E0/sprockets%2F14794728d5ac05d5bace06f724f6c11b +0 -0
  970. data/spec/dummy/tmp/cache/assets/D39/8A0/sprockets%2F9a7afbe1b38452ba73fd008fd2562274 +0 -0
  971. data/spec/dummy/tmp/cache/assets/D40/580/sprockets%2Fe0e2cce283e3539345a7c317ea58c83d +0 -0
  972. data/spec/dummy/tmp/cache/assets/D41/3B0/sprockets%2F905d433e4ccd08f1c83aac66f4d95480 +0 -0
  973. data/spec/dummy/tmp/cache/assets/D41/B60/sprockets%2Ffc2aa47706f31fc127476ef51e37e5d4 +0 -0
  974. data/spec/dummy/tmp/cache/assets/D41/BC0/sprockets%2Ff0542487ca3fd0d2d9a8f66fc2557d02 +0 -0
  975. data/spec/dummy/tmp/cache/assets/D44/100/sprockets%2F5740af7d5182613d7ca172e87ecef37b +0 -0
  976. data/spec/dummy/tmp/cache/assets/D4A/B80/sprockets%2F9c633774f5ed1a90dcf2082bb874d6e6 +0 -0
  977. data/spec/dummy/tmp/cache/assets/D4C/B00/sprockets%2F3977e1b47c9709026f354f47fbc0dbef +0 -0
  978. data/spec/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  979. data/spec/dummy/tmp/cache/assets/D54/DC0/sprockets%2Fc135f87fe97a983cb7f6129251c6edd5 +0 -0
  980. data/spec/dummy/tmp/cache/assets/D55/4A0/sprockets%2F9f3585d6944fecfd21b9f37e97043b2d +0 -0
  981. data/spec/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
  982. data/spec/dummy/tmp/cache/assets/D5B/E80/sprockets%2F799adf29fe5a95e34f60f607ae37a759 +0 -0
  983. data/spec/dummy/tmp/cache/assets/D62/280/sprockets%2Fbe1d43fe20a23e4593bd52af6455e1b6 +0 -0
  984. data/spec/dummy/tmp/cache/assets/D68/920/sprockets%2Fb7eb6668f9387c950b87e57f48d9bbb9 +0 -0
  985. data/spec/dummy/tmp/cache/assets/D69/320/sprockets%2F79251cf5abbd4fa5ef49c48383021cb1 +0 -0
  986. data/spec/dummy/tmp/cache/assets/D6D/040/sprockets%2F8ce54cfeeabda42540f18e3751631d57 +0 -0
  987. data/spec/dummy/tmp/cache/assets/D6D/2D0/sprockets%2Fb7137c8c11def4ce710a890d95c3f09a +0 -0
  988. data/spec/dummy/tmp/cache/assets/D70/DD0/sprockets%2F76aa685bacba69f3578ee40ab6211e85 +0 -0
  989. data/spec/dummy/tmp/cache/assets/D73/010/sprockets%2F834fa37dfa7f28148e125baf3f9d91b0 +0 -0
  990. data/spec/dummy/tmp/cache/assets/D74/CC0/sprockets%2F0883849eeadbcaf588706f6c1a5f103c +0 -0
  991. data/spec/dummy/tmp/cache/assets/D75/DB0/sprockets%2F9ab37622fdef7070f42a0d37a757f8de +0 -0
  992. data/spec/dummy/tmp/cache/assets/D76/360/sprockets%2F3ff9a318f34d309c6d4c7be4737ec60c +0 -0
  993. data/spec/dummy/tmp/cache/assets/D77/0A0/sprockets%2Fd388097cc8fda1663fa0d805faa592b9 +0 -0
  994. data/spec/dummy/tmp/cache/assets/D77/400/sprockets%2F3f9e137933597c5abf943eb401e8aead +0 -0
  995. data/spec/dummy/tmp/cache/assets/D78/BD0/sprockets%2Fd0c9ac69560ea197444b7f759ecd06da +0 -0
  996. data/spec/dummy/tmp/cache/assets/D7B/530/sprockets%2F994683a9d7bd17be1814cd8ce84cb13d +0 -0
  997. data/spec/dummy/tmp/cache/assets/D7D/FE0/sprockets%2Fdc33f319e81df25ef8f283e179b0c5c9 +0 -0
  998. data/spec/dummy/tmp/cache/assets/D99/BF0/sprockets%2F2fd8d582e234f8d0a741c1b4cafb716e +0 -0
  999. data/spec/dummy/tmp/cache/assets/D9A/070/sprockets%2Fcf06bf41615e3c42efaab85673ecb591 +0 -0
  1000. data/spec/dummy/tmp/cache/assets/D9B/0B0/sprockets%2F609a6d0b06eb3752679f6e1f0adcb4fc +0 -0
  1001. data/spec/dummy/tmp/cache/assets/D9E/F10/sprockets%2F9ab223df888d724dcad09eb1163cc5f4 +0 -0
  1002. data/spec/dummy/tmp/cache/assets/D9E/F70/sprockets%2Fc5d4a6e7d907804c52cbf910339dafdb +0 -0
  1003. data/spec/dummy/tmp/cache/assets/DA1/A00/sprockets%2Fc20a87edd6bfdcca68f83b81471770e1 +0 -0
  1004. data/spec/dummy/tmp/cache/assets/DB0/A60/sprockets%2F543dcca95ec9c45dd5f88d64fc9f1620 +0 -0
  1005. data/spec/dummy/tmp/cache/assets/DBB/F90/sprockets%2Fba83ff631b0cae1097016bf1acecb863 +0 -0
  1006. data/spec/dummy/tmp/cache/assets/DC9/A10/sprockets%2F8af6bbb4c92572eafb144047bbfb76c4 +0 -0
  1007. data/spec/dummy/tmp/cache/assets/DCC/AB0/sprockets%2F666d2c1f4eb7d60e9b27d5b52ad3f0ed +0 -0
  1008. data/spec/dummy/tmp/cache/assets/DCD/2C0/sprockets%2F70bed510995762fcd03cc5adf38eba6d +0 -0
  1009. data/spec/dummy/tmp/cache/assets/DD0/CC0/sprockets%2F5dc3e3dd4a62a8f03f9382c3dc9b5f3d +0 -0
  1010. data/spec/dummy/tmp/cache/assets/DD5/DF0/sprockets%2F5fcfa0c08af9e7eda4660905e491d7eb +0 -0
  1011. data/spec/dummy/tmp/cache/assets/DD7/B50/sprockets%2F52b6bca7ef09caf889327a0d19edcd76 +0 -0
  1012. data/spec/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  1013. data/spec/dummy/tmp/cache/assets/DE3/490/sprockets%2F08c27bc6c1fc0f4f363e1a1ad4c0bda4 +0 -0
  1014. data/spec/dummy/tmp/cache/assets/DE4/E60/sprockets%2F9ca060c2613d9e0ee003e7babcdd06cb +0 -0
  1015. data/spec/dummy/tmp/cache/assets/DF8/930/sprockets%2F73e117a1d3fd83fbcfe7a21e6b68eb2a +0 -0
  1016. data/spec/dummy/tmp/cache/assets/DFD/2A0/sprockets%2Fb5ea1d5e0e1cefdde6fe0982ab051878 +0 -0
  1017. data/spec/dummy/tmp/cache/assets/DFD/810/sprockets%2F6a607a98f71d7eec0fa22eced69a1ca4 +0 -0
  1018. data/spec/dummy/tmp/cache/assets/E03/BA0/sprockets%2Ffc0b3e556a2adbef7659cdd773a9b1c8 +0 -0
  1019. data/spec/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  1020. data/spec/dummy/tmp/cache/assets/E05/CF0/sprockets%2Fd3e87cf247dcc6c74cacb13c9f14af96 +0 -0
  1021. data/spec/dummy/tmp/cache/assets/E11/560/sprockets%2Fe5be2e9dd3ce26fb822c6d93fbe8369e +0 -0
  1022. data/spec/dummy/tmp/cache/assets/E18/240/sprockets%2Ff2f4de0be24db7a3b7b60c216adc0df4 +0 -0
  1023. data/spec/dummy/tmp/cache/assets/E29/D30/sprockets%2F8df60efdb80e123c26a8bb7be1dc4be8 +0 -0
  1024. data/spec/dummy/tmp/cache/assets/E2B/670/sprockets%2Feac21904ecb266ce92aecadb8681b7fe +0 -0
  1025. data/spec/dummy/tmp/cache/assets/E98/710/sprockets%2Fd95dbf0cd6cefb9477f7efba5d410cee +0 -0
  1026. data/spec/dummy/tmp/cache/assets/EA4/0A0/sprockets%2Ffabaa55761ccaaabaeb0bba2fd55e990 +0 -0
  1027. data/spec/dummy/tmp/restart.txt +0 -0
  1028. data/spec/spec_helper.rb +34 -0
  1029. metadata +1454 -0
@@ -0,0 +1,975 @@
1
+ /*
2
+ * jQuery File Upload Plugin 5.14
3
+ * https://github.com/blueimp/jQuery-File-Upload
4
+ *
5
+ * Copyright 2010, Sebastian Tschan
6
+ * https://blueimp.net
7
+ *
8
+ * Licensed under the MIT license:
9
+ * http://www.opensource.org/licenses/MIT
10
+ */
11
+
12
+ /*jslint nomen: true, unparam: true, regexp: true */
13
+ /*global define, window, document, Blob, FormData, location */
14
+
15
+ (function (factory) {
16
+ 'use strict';
17
+ if (typeof define === 'function' && define.amd) {
18
+ // Register as an anonymous AMD module:
19
+ define([
20
+ 'jquery',
21
+ 'jquery.ui.widget'
22
+ ], factory);
23
+ } else {
24
+ // Browser globals:
25
+ factory(window.jQuery);
26
+ }
27
+ }(function ($) {
28
+ 'use strict';
29
+
30
+ // The FileReader API is not actually used, but works as feature detection,
31
+ // as e.g. Safari supports XHR file uploads via the FormData API,
32
+ // but not non-multipart XHR file uploads:
33
+ $.support.xhrFileUpload = !!(window.XMLHttpRequestUpload && window.FileReader);
34
+ $.support.xhrFormDataFileUpload = !!window.FormData;
35
+
36
+ // The fileupload widget listens for change events on file input fields defined
37
+ // via fileInput setting and paste or drop events of the given dropZone.
38
+ // In addition to the default jQuery Widget methods, the fileupload widget
39
+ // exposes the "add" and "send" methods, to add or directly send files using
40
+ // the fileupload API.
41
+ // By default, files added via file input selection, paste, drag & drop or
42
+ // "add" method are uploaded immediately, but it is possible to override
43
+ // the "add" callback option to queue file uploads.
44
+ $.widget('blueimp.fileupload', {
45
+
46
+ options: {
47
+ // The namespace used for event handler binding on the dropZone and
48
+ // fileInput collections.
49
+ // If not set, the name of the widget ("fileupload") is used.
50
+ namespace: undefined,
51
+ // The drop target collection, by the default the complete document.
52
+ // Set to null or an empty collection to disable drag & drop support:
53
+ dropZone: $(document),
54
+ // The file input field collection, that is listened for change events.
55
+ // If undefined, it is set to the file input fields inside
56
+ // of the widget element on plugin initialization.
57
+ // Set to null or an empty collection to disable the change listener.
58
+ fileInput: undefined,
59
+ // By default, the file input field is replaced with a clone after
60
+ // each input field change event. This is required for iframe transport
61
+ // queues and allows change events to be fired for the same file
62
+ // selection, but can be disabled by setting the following option to false:
63
+ replaceFileInput: true,
64
+ // The parameter name for the file form data (the request argument name).
65
+ // If undefined or empty, the name property of the file input field is
66
+ // used, or "files[]" if the file input name property is also empty,
67
+ // can be a string or an array of strings:
68
+ paramName: undefined,
69
+ // By default, each file of a selection is uploaded using an individual
70
+ // request for XHR type uploads. Set to false to upload file
71
+ // selections in one request each:
72
+ singleFileUploads: true,
73
+ // To limit the number of files uploaded with one XHR request,
74
+ // set the following option to an integer greater than 0:
75
+ limitMultiFileUploads: undefined,
76
+ // Set the following option to true to issue all file upload requests
77
+ // in a sequential order:
78
+ sequentialUploads: false,
79
+ // To limit the number of concurrent uploads,
80
+ // set the following option to an integer greater than 0:
81
+ limitConcurrentUploads: undefined,
82
+ // Set the following option to true to force iframe transport uploads:
83
+ forceIframeTransport: false,
84
+ // Set the following option to the location of a redirect url on the
85
+ // origin server, for cross-domain iframe transport uploads:
86
+ redirect: undefined,
87
+ // The parameter name for the redirect url, sent as part of the form
88
+ // data and set to 'redirect' if this option is empty:
89
+ redirectParamName: undefined,
90
+ // Set the following option to the location of a postMessage window,
91
+ // to enable postMessage transport uploads:
92
+ postMessage: undefined,
93
+ // By default, XHR file uploads are sent as multipart/form-data.
94
+ // The iframe transport is always using multipart/form-data.
95
+ // Set to false to enable non-multipart XHR uploads:
96
+ multipart: true,
97
+ // To upload large files in smaller chunks, set the following option
98
+ // to a preferred maximum chunk size. If set to 0, null or undefined,
99
+ // or the browser does not support the required Blob API, files will
100
+ // be uploaded as a whole.
101
+ maxChunkSize: undefined,
102
+ // When a non-multipart upload or a chunked multipart upload has been
103
+ // aborted, this option can be used to resume the upload by setting
104
+ // it to the size of the already uploaded bytes. This option is most
105
+ // useful when modifying the options object inside of the "add" or
106
+ // "send" callbacks, as the options are cloned for each file upload.
107
+ uploadedBytes: undefined,
108
+ // By default, failed (abort or error) file uploads are removed from the
109
+ // global progress calculation. Set the following option to false to
110
+ // prevent recalculating the global progress data:
111
+ recalculateProgress: true,
112
+ // Interval in milliseconds to calculate and trigger progress events:
113
+ progressInterval: 100,
114
+ // Interval in milliseconds to calculate progress bitrate:
115
+ bitrateInterval: 500,
116
+
117
+ // Additional form data to be sent along with the file uploads can be set
118
+ // using this option, which accepts an array of objects with name and
119
+ // value properties, a function returning such an array, a FormData
120
+ // object (for XHR file uploads), or a simple object.
121
+ // The form of the first fileInput is given as parameter to the function:
122
+ formData: function (form) {
123
+ return form.serializeArray();
124
+ },
125
+
126
+ // The add callback is invoked as soon as files are added to the fileupload
127
+ // widget (via file input selection, drag & drop, paste or add API call).
128
+ // If the singleFileUploads option is enabled, this callback will be
129
+ // called once for each file in the selection for XHR file uplaods, else
130
+ // once for each file selection.
131
+ // The upload starts when the submit method is invoked on the data parameter.
132
+ // The data object contains a files property holding the added files
133
+ // and allows to override plugin options as well as define ajax settings.
134
+ // Listeners for this callback can also be bound the following way:
135
+ // .bind('fileuploadadd', func);
136
+ // data.submit() returns a Promise object and allows to attach additional
137
+ // handlers using jQuery's Deferred callbacks:
138
+ // data.submit().done(func).fail(func).always(func);
139
+ add: function (e, data) {
140
+ data.submit();
141
+ },
142
+
143
+ // Other callbacks:
144
+ // Callback for the submit event of each file upload:
145
+ // submit: function (e, data) {}, // .bind('fileuploadsubmit', func);
146
+ // Callback for the start of each file upload request:
147
+ // send: function (e, data) {}, // .bind('fileuploadsend', func);
148
+ // Callback for successful uploads:
149
+ // done: function (e, data) {}, // .bind('fileuploaddone', func);
150
+ // Callback for failed (abort or error) uploads:
151
+ // fail: function (e, data) {}, // .bind('fileuploadfail', func);
152
+ // Callback for completed (success, abort or error) requests:
153
+ // always: function (e, data) {}, // .bind('fileuploadalways', func);
154
+ // Callback for upload progress events:
155
+ // progress: function (e, data) {}, // .bind('fileuploadprogress', func);
156
+ // Callback for global upload progress events:
157
+ // progressall: function (e, data) {}, // .bind('fileuploadprogressall', func);
158
+ // Callback for uploads start, equivalent to the global ajaxStart event:
159
+ // start: function (e) {}, // .bind('fileuploadstart', func);
160
+ // Callback for uploads stop, equivalent to the global ajaxStop event:
161
+ // stop: function (e) {}, // .bind('fileuploadstop', func);
162
+ // Callback for change events of the fileInput collection:
163
+ // change: function (e, data) {}, // .bind('fileuploadchange', func);
164
+ // Callback for paste events to the dropZone collection:
165
+ // paste: function (e, data) {}, // .bind('fileuploadpaste', func);
166
+ // Callback for drop events of the dropZone collection:
167
+ // drop: function (e, data) {}, // .bind('fileuploaddrop', func);
168
+ // Callback for dragover events of the dropZone collection:
169
+ // dragover: function (e) {}, // .bind('fileuploaddragover', func);
170
+
171
+ // The plugin options are used as settings object for the ajax calls.
172
+ // The following are jQuery ajax settings required for the file uploads:
173
+ processData: false,
174
+ contentType: false,
175
+ cache: false
176
+ },
177
+
178
+ // A list of options that require a refresh after assigning a new value:
179
+ _refreshOptionsList: [
180
+ 'namespace',
181
+ 'dropZone',
182
+ 'fileInput',
183
+ 'multipart',
184
+ 'forceIframeTransport'
185
+ ],
186
+
187
+ _BitrateTimer: function () {
188
+ this.timestamp = +(new Date());
189
+ this.loaded = 0;
190
+ this.bitrate = 0;
191
+ this.getBitrate = function (now, loaded, interval) {
192
+ var timeDiff = now - this.timestamp;
193
+ if (!this.bitrate || !interval || timeDiff > interval) {
194
+ this.bitrate = (loaded - this.loaded) * (1000 / timeDiff) * 8;
195
+ this.loaded = loaded;
196
+ this.timestamp = now;
197
+ }
198
+ return this.bitrate;
199
+ };
200
+ },
201
+
202
+ _isXHRUpload: function (options) {
203
+ return !options.forceIframeTransport &&
204
+ ((!options.multipart && $.support.xhrFileUpload) ||
205
+ $.support.xhrFormDataFileUpload);
206
+ },
207
+
208
+ _getFormData: function (options) {
209
+ var formData;
210
+ if (typeof options.formData === 'function') {
211
+ return options.formData(options.form);
212
+ }
213
+ if ($.isArray(options.formData)) {
214
+ return options.formData;
215
+ }
216
+ if (options.formData) {
217
+ formData = [];
218
+ $.each(options.formData, function (name, value) {
219
+ formData.push({name: name, value: value});
220
+ });
221
+ return formData;
222
+ }
223
+ return [];
224
+ },
225
+
226
+ _getTotal: function (files) {
227
+ var total = 0;
228
+ $.each(files, function (index, file) {
229
+ total += file.size || 1;
230
+ });
231
+ return total;
232
+ },
233
+
234
+ _onProgress: function (e, data) {
235
+ if (e.lengthComputable) {
236
+ var now = +(new Date()),
237
+ total,
238
+ loaded;
239
+ if (data._time && data.progressInterval &&
240
+ (now - data._time < data.progressInterval) &&
241
+ e.loaded !== e.total) {
242
+ return;
243
+ }
244
+ data._time = now;
245
+ total = data.total || this._getTotal(data.files);
246
+ loaded = parseInt(
247
+ e.loaded / e.total * (data.chunkSize || total),
248
+ 10
249
+ ) + (data.uploadedBytes || 0);
250
+ this._loaded += loaded - (data.loaded || data.uploadedBytes || 0);
251
+ data.lengthComputable = true;
252
+ data.loaded = loaded;
253
+ data.total = total;
254
+ data.bitrate = data._bitrateTimer.getBitrate(
255
+ now,
256
+ loaded,
257
+ data.bitrateInterval
258
+ );
259
+ // Trigger a custom progress event with a total data property set
260
+ // to the file size(s) of the current upload and a loaded data
261
+ // property calculated accordingly:
262
+ this._trigger('progress', e, data);
263
+ // Trigger a global progress event for all current file uploads,
264
+ // including ajax calls queued for sequential file uploads:
265
+ this._trigger('progressall', e, {
266
+ lengthComputable: true,
267
+ loaded: this._loaded,
268
+ total: this._total,
269
+ bitrate: this._bitrateTimer.getBitrate(
270
+ now,
271
+ this._loaded,
272
+ data.bitrateInterval
273
+ )
274
+ });
275
+ }
276
+ },
277
+
278
+ _initProgressListener: function (options) {
279
+ var that = this,
280
+ xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr();
281
+ // Accesss to the native XHR object is required to add event listeners
282
+ // for the upload progress event:
283
+ if (xhr.upload) {
284
+ $(xhr.upload).bind('progress', function (e) {
285
+ var oe = e.originalEvent;
286
+ // Make sure the progress event properties get copied over:
287
+ e.lengthComputable = oe.lengthComputable;
288
+ e.loaded = oe.loaded;
289
+ e.total = oe.total;
290
+ that._onProgress(e, options);
291
+ });
292
+ options.xhr = function () {
293
+ return xhr;
294
+ };
295
+ }
296
+ },
297
+
298
+ _initXHRData: function (options) {
299
+ var formData,
300
+ file = options.files[0],
301
+ // Ignore non-multipart setting if not supported:
302
+ multipart = options.multipart || !$.support.xhrFileUpload,
303
+ paramName = options.paramName[0];
304
+ if (!multipart || options.blob) {
305
+ // For non-multipart uploads and chunked uploads,
306
+ // file meta data is not part of the request body,
307
+ // so we transmit this data as part of the HTTP headers.
308
+ // For cross domain requests, these headers must be allowed
309
+ // via Access-Control-Allow-Headers or removed using
310
+ // the beforeSend callback:
311
+ options.headers = $.extend(options.headers, {
312
+ 'X-File-Name': file.name,
313
+ 'X-File-Type': file.type,
314
+ 'X-File-Size': file.size
315
+ });
316
+ if (!options.blob) {
317
+ // Non-chunked non-multipart upload:
318
+ options.contentType = file.type;
319
+ options.data = file;
320
+ } else if (!multipart) {
321
+ // Chunked non-multipart upload:
322
+ options.contentType = 'application/octet-stream';
323
+ options.data = options.blob;
324
+ }
325
+ }
326
+ if (multipart && $.support.xhrFormDataFileUpload) {
327
+ if (options.postMessage) {
328
+ // window.postMessage does not allow sending FormData
329
+ // objects, so we just add the File/Blob objects to
330
+ // the formData array and let the postMessage window
331
+ // create the FormData object out of this array:
332
+ formData = this._getFormData(options);
333
+ if (options.blob) {
334
+ formData.push({
335
+ name: paramName,
336
+ value: options.blob
337
+ });
338
+ } else {
339
+ $.each(options.files, function (index, file) {
340
+ formData.push({
341
+ name: options.paramName[index] || paramName,
342
+ value: file
343
+ });
344
+ });
345
+ }
346
+ } else {
347
+ if (options.formData instanceof FormData) {
348
+ formData = options.formData;
349
+ } else {
350
+ formData = new FormData();
351
+ $.each(this._getFormData(options), function (index, field) {
352
+ formData.append(field.name, field.value);
353
+ });
354
+ }
355
+ if (options.blob) {
356
+ formData.append(paramName, options.blob, file.name);
357
+ } else {
358
+ $.each(options.files, function (index, file) {
359
+ // File objects are also Blob instances.
360
+ // This check allows the tests to run with
361
+ // dummy objects:
362
+ if (file instanceof Blob) {
363
+ formData.append(
364
+ options.paramName[index] || paramName,
365
+ file,
366
+ file.name
367
+ );
368
+ }
369
+ });
370
+ }
371
+ }
372
+ options.data = formData;
373
+ }
374
+ // Blob reference is not needed anymore, free memory:
375
+ options.blob = null;
376
+ },
377
+
378
+ _initIframeSettings: function (options) {
379
+ // Setting the dataType to iframe enables the iframe transport:
380
+ options.dataType = 'iframe ' + (options.dataType || '');
381
+ // The iframe transport accepts a serialized array as form data:
382
+ options.formData = this._getFormData(options);
383
+ // Add redirect url to form data on cross-domain uploads:
384
+ if (options.redirect && $('<a></a>').prop('href', options.url)
385
+ .prop('host') !== location.host) {
386
+ options.formData.push({
387
+ name: options.redirectParamName || 'redirect',
388
+ value: options.redirect
389
+ });
390
+ }
391
+ },
392
+
393
+ _initDataSettings: function (options) {
394
+ if (this._isXHRUpload(options)) {
395
+ if (!this._chunkedUpload(options, true)) {
396
+ if (!options.data) {
397
+ this._initXHRData(options);
398
+ }
399
+ this._initProgressListener(options);
400
+ }
401
+ if (options.postMessage) {
402
+ // Setting the dataType to postmessage enables the
403
+ // postMessage transport:
404
+ options.dataType = 'postmessage ' + (options.dataType || '');
405
+ }
406
+ } else {
407
+ this._initIframeSettings(options, 'iframe');
408
+ }
409
+ },
410
+
411
+ _getParamName: function (options) {
412
+ var fileInput = $(options.fileInput),
413
+ paramName = options.paramName;
414
+ if (!paramName) {
415
+ paramName = [];
416
+ fileInput.each(function () {
417
+ var input = $(this),
418
+ name = input.prop('name') || 'files[]',
419
+ i = (input.prop('files') || [1]).length;
420
+ while (i) {
421
+ paramName.push(name);
422
+ i -= 1;
423
+ }
424
+ });
425
+ if (!paramName.length) {
426
+ paramName = [fileInput.prop('name') || 'files[]'];
427
+ }
428
+ } else if (!$.isArray(paramName)) {
429
+ paramName = [paramName];
430
+ }
431
+ return paramName;
432
+ },
433
+
434
+ _initFormSettings: function (options) {
435
+ // Retrieve missing options from the input field and the
436
+ // associated form, if available:
437
+ if (!options.form || !options.form.length) {
438
+ options.form = $(options.fileInput.prop('form'));
439
+ }
440
+ options.paramName = this._getParamName(options);
441
+ if (!options.url) {
442
+ options.url = options.form.prop('action') || location.href;
443
+ }
444
+ // The HTTP request method must be "POST" or "PUT":
445
+ options.type = (options.type || options.form.prop('method') || '')
446
+ .toUpperCase();
447
+ if (options.type !== 'POST' && options.type !== 'PUT') {
448
+ options.type = 'POST';
449
+ }
450
+ if (!options.formAcceptCharset) {
451
+ options.formAcceptCharset = options.form.attr('accept-charset');
452
+ }
453
+ },
454
+
455
+ _getAJAXSettings: function (data) {
456
+ var options = $.extend({}, this.options, data);
457
+ this._initFormSettings(options);
458
+ this._initDataSettings(options);
459
+ return options;
460
+ },
461
+
462
+ // Maps jqXHR callbacks to the equivalent
463
+ // methods of the given Promise object:
464
+ _enhancePromise: function (promise) {
465
+ promise.success = promise.done;
466
+ promise.error = promise.fail;
467
+ promise.complete = promise.always;
468
+ return promise;
469
+ },
470
+
471
+ // Creates and returns a Promise object enhanced with
472
+ // the jqXHR methods abort, success, error and complete:
473
+ _getXHRPromise: function (resolveOrReject, context, args) {
474
+ var dfd = $.Deferred(),
475
+ promise = dfd.promise();
476
+ context = context || this.options.context || promise;
477
+ if (resolveOrReject === true) {
478
+ dfd.resolveWith(context, args);
479
+ } else if (resolveOrReject === false) {
480
+ dfd.rejectWith(context, args);
481
+ }
482
+ promise.abort = dfd.promise;
483
+ return this._enhancePromise(promise);
484
+ },
485
+
486
+ // Uploads a file in multiple, sequential requests
487
+ // by splitting the file up in multiple blob chunks.
488
+ // If the second parameter is true, only tests if the file
489
+ // should be uploaded in chunks, but does not invoke any
490
+ // upload requests:
491
+ _chunkedUpload: function (options, testOnly) {
492
+ var that = this,
493
+ file = options.files[0],
494
+ fs = file.size,
495
+ ub = options.uploadedBytes = options.uploadedBytes || 0,
496
+ mcs = options.maxChunkSize || fs,
497
+ // Use the Blob methods with the slice implementation
498
+ // according to the W3C Blob API specification:
499
+ slice = file.webkitSlice || file.mozSlice || file.slice,
500
+ upload,
501
+ n,
502
+ jqXHR,
503
+ pipe;
504
+ if (!(this._isXHRUpload(options) && slice && (ub || mcs < fs)) ||
505
+ options.data) {
506
+ return false;
507
+ }
508
+ if (testOnly) {
509
+ return true;
510
+ }
511
+ if (ub >= fs) {
512
+ file.error = 'uploadedBytes';
513
+ return this._getXHRPromise(
514
+ false,
515
+ options.context,
516
+ [null, 'error', file.error]
517
+ );
518
+ }
519
+ // n is the number of blobs to upload,
520
+ // calculated via filesize, uploaded bytes and max chunk size:
521
+ n = Math.ceil((fs - ub) / mcs);
522
+ // The chunk upload method accepting the chunk number as parameter:
523
+ upload = function (i) {
524
+ if (!i) {
525
+ return that._getXHRPromise(true, options.context);
526
+ }
527
+ // Upload the blobs in sequential order:
528
+ return upload(i -= 1).pipe(function () {
529
+ // Clone the options object for each chunk upload:
530
+ var o = $.extend({}, options);
531
+ o.blob = slice.call(
532
+ file,
533
+ ub + i * mcs,
534
+ ub + (i + 1) * mcs
535
+ );
536
+ // Expose the chunk index:
537
+ o.chunkIndex = i;
538
+ // Expose the number of chunks:
539
+ o.chunksNumber = n;
540
+ // Store the current chunk size, as the blob itself
541
+ // will be dereferenced after data processing:
542
+ o.chunkSize = o.blob.size;
543
+ // Process the upload data (the blob and potential form data):
544
+ that._initXHRData(o);
545
+ // Add progress listeners for this chunk upload:
546
+ that._initProgressListener(o);
547
+ jqXHR = ($.ajax(o) || that._getXHRPromise(false, o.context))
548
+ .done(function () {
549
+ // Create a progress event if upload is done and
550
+ // no progress event has been invoked for this chunk:
551
+ if (!o.loaded) {
552
+ that._onProgress($.Event('progress', {
553
+ lengthComputable: true,
554
+ loaded: o.chunkSize,
555
+ total: o.chunkSize
556
+ }), o);
557
+ }
558
+ options.uploadedBytes = o.uploadedBytes +=
559
+ o.chunkSize;
560
+ });
561
+ return jqXHR;
562
+ });
563
+ };
564
+ // Return the piped Promise object, enhanced with an abort method,
565
+ // which is delegated to the jqXHR object of the current upload,
566
+ // and jqXHR callbacks mapped to the equivalent Promise methods:
567
+ pipe = upload(n);
568
+ pipe.abort = function () {
569
+ return jqXHR.abort();
570
+ };
571
+ return this._enhancePromise(pipe);
572
+ },
573
+
574
+ _beforeSend: function (e, data) {
575
+ if (this._active === 0) {
576
+ // the start callback is triggered when an upload starts
577
+ // and no other uploads are currently running,
578
+ // equivalent to the global ajaxStart event:
579
+ this._trigger('start');
580
+ // Set timer for global bitrate progress calculation:
581
+ this._bitrateTimer = new this._BitrateTimer();
582
+ }
583
+ this._active += 1;
584
+ // Initialize the global progress values:
585
+ this._loaded += data.uploadedBytes || 0;
586
+ this._total += this._getTotal(data.files);
587
+ },
588
+
589
+ _onDone: function (result, textStatus, jqXHR, options) {
590
+ if (!this._isXHRUpload(options)) {
591
+ // Create a progress event for each iframe load:
592
+ this._onProgress($.Event('progress', {
593
+ lengthComputable: true,
594
+ loaded: 1,
595
+ total: 1
596
+ }), options);
597
+ }
598
+ options.result = result;
599
+ options.textStatus = textStatus;
600
+ options.jqXHR = jqXHR;
601
+ this._trigger('done', null, options);
602
+ },
603
+
604
+ _onFail: function (jqXHR, textStatus, errorThrown, options) {
605
+ options.jqXHR = jqXHR;
606
+ options.textStatus = textStatus;
607
+ options.errorThrown = errorThrown;
608
+ this._trigger('fail', null, options);
609
+ if (options.recalculateProgress) {
610
+ // Remove the failed (error or abort) file upload from
611
+ // the global progress calculation:
612
+ this._loaded -= options.loaded || options.uploadedBytes || 0;
613
+ this._total -= options.total || this._getTotal(options.files);
614
+ }
615
+ },
616
+
617
+ _onAlways: function (jqXHRorResult, textStatus, jqXHRorError, options) {
618
+ this._active -= 1;
619
+ options.textStatus = textStatus;
620
+ if (jqXHRorError && jqXHRorError.always) {
621
+ options.jqXHR = jqXHRorError;
622
+ options.result = jqXHRorResult;
623
+ } else {
624
+ options.jqXHR = jqXHRorResult;
625
+ options.errorThrown = jqXHRorError;
626
+ }
627
+ this._trigger('always', null, options);
628
+ if (this._active === 0) {
629
+ // The stop callback is triggered when all uploads have
630
+ // been completed, equivalent to the global ajaxStop event:
631
+ this._trigger('stop');
632
+ // Reset the global progress values:
633
+ this._loaded = this._total = 0;
634
+ this._bitrateTimer = null;
635
+ }
636
+ },
637
+
638
+ _onSend: function (e, data) {
639
+ var that = this,
640
+ jqXHR,
641
+ slot,
642
+ pipe,
643
+ options = that._getAJAXSettings(data),
644
+ send = function (resolve, args) {
645
+ that._sending += 1;
646
+ // Set timer for bitrate progress calculation:
647
+ options._bitrateTimer = new that._BitrateTimer();
648
+ jqXHR = jqXHR || (
649
+ (resolve !== false &&
650
+ that._trigger('send', e, options) !== false &&
651
+ (that._chunkedUpload(options) || $.ajax(options))) ||
652
+ that._getXHRPromise(false, options.context, args)
653
+ ).done(function (result, textStatus, jqXHR) {
654
+ that._onDone(result, textStatus, jqXHR, options);
655
+ }).fail(function (jqXHR, textStatus, errorThrown) {
656
+ that._onFail(jqXHR, textStatus, errorThrown, options);
657
+ }).always(function (jqXHRorResult, textStatus, jqXHRorError) {
658
+ that._sending -= 1;
659
+ that._onAlways(
660
+ jqXHRorResult,
661
+ textStatus,
662
+ jqXHRorError,
663
+ options
664
+ );
665
+ if (options.limitConcurrentUploads &&
666
+ options.limitConcurrentUploads > that._sending) {
667
+ // Start the next queued upload,
668
+ // that has not been aborted:
669
+ var nextSlot = that._slots.shift();
670
+ while (nextSlot) {
671
+ if (!nextSlot.isRejected()) {
672
+ nextSlot.resolve();
673
+ break;
674
+ }
675
+ nextSlot = that._slots.shift();
676
+ }
677
+ }
678
+ });
679
+ return jqXHR;
680
+ };
681
+ this._beforeSend(e, options);
682
+ if (this.options.sequentialUploads ||
683
+ (this.options.limitConcurrentUploads &&
684
+ this.options.limitConcurrentUploads <= this._sending)) {
685
+ if (this.options.limitConcurrentUploads > 1) {
686
+ slot = $.Deferred();
687
+ this._slots.push(slot);
688
+ pipe = slot.pipe(send);
689
+ } else {
690
+ pipe = (this._sequence = this._sequence.pipe(send, send));
691
+ }
692
+ // Return the piped Promise object, enhanced with an abort method,
693
+ // which is delegated to the jqXHR object of the current upload,
694
+ // and jqXHR callbacks mapped to the equivalent Promise methods:
695
+ pipe.abort = function () {
696
+ var args = [undefined, 'abort', 'abort'];
697
+ if (!jqXHR) {
698
+ if (slot) {
699
+ slot.rejectWith(args);
700
+ }
701
+ return send(false, args);
702
+ }
703
+ return jqXHR.abort();
704
+ };
705
+ return this._enhancePromise(pipe);
706
+ }
707
+ return send();
708
+ },
709
+
710
+ _onAdd: function (e, data) {
711
+ var that = this,
712
+ result = true,
713
+ options = $.extend({}, this.options, data),
714
+ limit = options.limitMultiFileUploads,
715
+ paramName = this._getParamName(options),
716
+ paramNameSet,
717
+ paramNameSlice,
718
+ fileSet,
719
+ i;
720
+ if (!(options.singleFileUploads || limit) ||
721
+ !this._isXHRUpload(options)) {
722
+ fileSet = [data.files];
723
+ paramNameSet = [paramName];
724
+ } else if (!options.singleFileUploads && limit) {
725
+ fileSet = [];
726
+ paramNameSet = [];
727
+ for (i = 0; i < data.files.length; i += limit) {
728
+ fileSet.push(data.files.slice(i, i + limit));
729
+ paramNameSlice = paramName.slice(i, i + limit);
730
+ if (!paramNameSlice.length) {
731
+ paramNameSlice = paramName;
732
+ }
733
+ paramNameSet.push(paramNameSlice);
734
+ }
735
+ } else {
736
+ paramNameSet = paramName;
737
+ }
738
+ data.originalFiles = data.files;
739
+ $.each(fileSet || data.files, function (index, element) {
740
+ var newData = $.extend({}, data);
741
+ newData.files = fileSet ? element : [element];
742
+ newData.paramName = paramNameSet[index];
743
+ newData.submit = function () {
744
+ newData.jqXHR = this.jqXHR =
745
+ (that._trigger('submit', e, this) !== false) &&
746
+ that._onSend(e, this);
747
+ return this.jqXHR;
748
+ };
749
+ return (result = that._trigger('add', e, newData));
750
+ });
751
+ return result;
752
+ },
753
+
754
+ // File Normalization for Gecko 1.9.1 (Firefox 3.5) support:
755
+ _normalizeFile: function (index, file) {
756
+ if (file.name === undefined && file.size === undefined) {
757
+ file.name = file.fileName;
758
+ file.size = file.fileSize;
759
+ }
760
+ },
761
+
762
+ _replaceFileInput: function (input) {
763
+ var inputClone = input.clone(true);
764
+ $('<form></form>').append(inputClone)[0].reset();
765
+ // Detaching allows to insert the fileInput on another form
766
+ // without loosing the file input value:
767
+ input.after(inputClone).detach();
768
+ // Avoid memory leaks with the detached file input:
769
+ $.cleanData(input.unbind('remove'));
770
+ // Replace the original file input element in the fileInput
771
+ // collection with the clone, which has been copied including
772
+ // event handlers:
773
+ this.options.fileInput = this.options.fileInput.map(function (i, el) {
774
+ if (el === input[0]) {
775
+ return inputClone[0];
776
+ }
777
+ return el;
778
+ });
779
+ // If the widget has been initialized on the file input itself,
780
+ // override this.element with the file input clone:
781
+ if (input[0] === this.element[0]) {
782
+ this.element = inputClone;
783
+ }
784
+ },
785
+
786
+ _getFileInputFiles: function (fileInput) {
787
+ fileInput = $(fileInput);
788
+ var files = $.each($.makeArray(fileInput.prop('files')), this._normalizeFile),
789
+ value;
790
+ if (!files.length) {
791
+ value = fileInput.prop('value');
792
+ if (!value) {
793
+ return [];
794
+ }
795
+ // If the files property is not available, the browser does not
796
+ // support the File API and we add a pseudo File object with
797
+ // the input value as name with path information removed:
798
+ files = [{name: value.replace(/^.*\\/, '')}];
799
+ }
800
+ return files;
801
+ },
802
+
803
+ _onChange: function (e) {
804
+ var that = e.data.fileupload,
805
+ data = {
806
+ fileInput: $(e.target),
807
+ form: $(e.target.form)
808
+ };
809
+ data.files = that._getFileInputFiles(data.fileInput);
810
+ if (that.options.replaceFileInput) {
811
+ that._replaceFileInput(data.fileInput);
812
+ }
813
+ if (that._trigger('change', e, data) === false ||
814
+ that._onAdd(e, data) === false) {
815
+ return false;
816
+ }
817
+ },
818
+
819
+ _onPaste: function (e) {
820
+ var that = e.data.fileupload,
821
+ cbd = e.originalEvent.clipboardData,
822
+ items = (cbd && cbd.items) || [],
823
+ data = {files: []};
824
+ $.each(items, function (index, item) {
825
+ var file = item.getAsFile && item.getAsFile();
826
+ if (file) {
827
+ data.files.push(file);
828
+ }
829
+ });
830
+ if (that._trigger('paste', e, data) === false ||
831
+ that._onAdd(e, data) === false) {
832
+ return false;
833
+ }
834
+ },
835
+
836
+ _onDrop: function (e) {
837
+ var that = e.data.fileupload,
838
+ dataTransfer = e.dataTransfer = e.originalEvent.dataTransfer,
839
+ data = {
840
+ files: $.each(
841
+ $.makeArray(dataTransfer && dataTransfer.files),
842
+ that._normalizeFile
843
+ )
844
+ };
845
+ if (that._trigger('drop', e, data) === false ||
846
+ that._onAdd(e, data) === false) {
847
+ return false;
848
+ }
849
+ e.preventDefault();
850
+ },
851
+
852
+ _onDragOver: function (e) {
853
+ var that = e.data.fileupload,
854
+ dataTransfer = e.dataTransfer = e.originalEvent.dataTransfer;
855
+ if (that._trigger('dragover', e) === false) {
856
+ return false;
857
+ }
858
+ if (dataTransfer) {
859
+ dataTransfer.dropEffect = 'copy';
860
+ }
861
+ e.preventDefault();
862
+ },
863
+
864
+ _initEventHandlers: function () {
865
+ var ns = this.options.namespace;
866
+ if (this._isXHRUpload(this.options)) {
867
+ this.options.dropZone
868
+ .bind('dragover.' + ns, {fileupload: this}, this._onDragOver)
869
+ .bind('drop.' + ns, {fileupload: this}, this._onDrop)
870
+ .bind('paste.' + ns, {fileupload: this}, this._onPaste);
871
+ }
872
+ this.options.fileInput
873
+ .bind('change.' + ns, {fileupload: this}, this._onChange);
874
+ },
875
+
876
+ _destroyEventHandlers: function () {
877
+ var ns = this.options.namespace;
878
+ this.options.dropZone
879
+ .unbind('dragover.' + ns, this._onDragOver)
880
+ .unbind('drop.' + ns, this._onDrop)
881
+ .unbind('paste.' + ns, this._onPaste);
882
+ this.options.fileInput
883
+ .unbind('change.' + ns, this._onChange);
884
+ },
885
+
886
+ _setOption: function (key, value) {
887
+ var refresh = $.inArray(key, this._refreshOptionsList) !== -1;
888
+ if (refresh) {
889
+ this._destroyEventHandlers();
890
+ }
891
+ $.Widget.prototype._setOption.call(this, key, value);
892
+ if (refresh) {
893
+ this._initSpecialOptions();
894
+ this._initEventHandlers();
895
+ }
896
+ },
897
+
898
+ _initSpecialOptions: function () {
899
+ var options = this.options;
900
+ if (options.fileInput === undefined) {
901
+ options.fileInput = this.element.is('input:file') ?
902
+ this.element : this.element.find('input:file');
903
+ } else if (!(options.fileInput instanceof $)) {
904
+ options.fileInput = $(options.fileInput);
905
+ }
906
+ if (!(options.dropZone instanceof $)) {
907
+ options.dropZone = $(options.dropZone);
908
+ }
909
+ },
910
+
911
+ _create: function () {
912
+ var options = this.options;
913
+ // Initialize options set via HTML5 data-attributes:
914
+ $.extend(options, $(this.element[0].cloneNode(false)).data());
915
+ options.namespace = options.namespace || this.widgetName;
916
+ this._initSpecialOptions();
917
+ this._slots = [];
918
+ this._sequence = this._getXHRPromise(true);
919
+ this._sending = this._active = this._loaded = this._total = 0;
920
+ this._initEventHandlers();
921
+ },
922
+
923
+ destroy: function () {
924
+ this._destroyEventHandlers();
925
+ $.Widget.prototype.destroy.call(this);
926
+ },
927
+
928
+ enable: function () {
929
+ $.Widget.prototype.enable.call(this);
930
+ this._initEventHandlers();
931
+ },
932
+
933
+ disable: function () {
934
+ this._destroyEventHandlers();
935
+ $.Widget.prototype.disable.call(this);
936
+ },
937
+
938
+ // This method is exposed to the widget API and allows adding files
939
+ // using the fileupload API. The data parameter accepts an object which
940
+ // must have a files property and can contain additional options:
941
+ // .fileupload('add', {files: filesList});
942
+ add: function (data) {
943
+ if (!data || this.options.disabled) {
944
+ return;
945
+ }
946
+ if (data.fileInput && !data.files) {
947
+ data.files = this._getFileInputFiles(data.fileInput);
948
+ } else {
949
+ data.files = $.each($.makeArray(data.files), this._normalizeFile);
950
+ }
951
+ this._onAdd(null, data);
952
+ },
953
+
954
+ // This method is exposed to the widget API and allows sending files
955
+ // using the fileupload API. The data parameter accepts an object which
956
+ // must have a files property and can contain additional options:
957
+ // .fileupload('send', {files: filesList});
958
+ // The method returns a Promise object for the file upload call.
959
+ send: function (data) {
960
+ if (data && !this.options.disabled) {
961
+ if (data.fileInput && !data.files) {
962
+ data.files = this._getFileInputFiles(data.fileInput);
963
+ } else {
964
+ data.files = $.each($.makeArray(data.files), this._normalizeFile);
965
+ }
966
+ if (data.files.length) {
967
+ return this._onSend(null, data);
968
+ }
969
+ }
970
+ return this._getXHRPromise(false, data && data.context);
971
+ }
972
+
973
+ });
974
+
975
+ }));