cloudrider 0.1.0

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 (426) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.rspec +1 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +31 -0
  7. data/Rakefile +2 -0
  8. data/cloudrider.gemspec +30 -0
  9. data/generica/.bowerrc +3 -0
  10. data/generica/.rspec +2 -0
  11. data/generica/Gemfile +67 -0
  12. data/generica/Gemfile.lock +363 -0
  13. data/generica/LICENSE.txt +22 -0
  14. data/generica/README.md +156 -0
  15. data/generica/Rakefile +5 -0
  16. data/generica/app/assets/images/.keep +0 -0
  17. data/generica/app/assets/images/cookie-splash/albatross.jpg +0 -0
  18. data/generica/app/assets/images/cookie-splash/california.png +0 -0
  19. data/generica/app/assets/images/hero-splash/albatross.jpg +0 -0
  20. data/generica/app/assets/images/hero-splash/california.jpg +0 -0
  21. data/generica/app/assets/images/hero-splash/rocks.jpg +0 -0
  22. data/generica/app/assets/images/hero-splash/seaweed.png +0 -0
  23. data/generica/app/assets/images/introductory-lobby/fishing.jpg +0 -0
  24. data/generica/app/assets/images/products-showcase/rocks.jpg +0 -0
  25. data/generica/app/assets/images/table-booths/411.png +0 -0
  26. data/generica/app/assets/javascripts/adapters/admin/employee.js.ls +20 -0
  27. data/generica/app/assets/javascripts/adapters/admin/product.js.ls +20 -0
  28. data/generica/app/assets/javascripts/adapters/admin/session.js.em +2 -0
  29. data/generica/app/assets/javascripts/adapters/application.js.em +2 -0
  30. data/generica/app/assets/javascripts/apiv1.js.ls +24 -0
  31. data/generica/app/assets/javascripts/application.js +23 -0
  32. data/generica/app/assets/javascripts/components/.gitkeep +0 -0
  33. data/generica/app/assets/javascripts/components/block-grid-pictures.js.em +3 -0
  34. data/generica/app/assets/javascripts/components/block-picture.js.em +8 -0
  35. data/generica/app/assets/javascripts/components/cookie-splash.js.em +2 -0
  36. data/generica/app/assets/javascripts/components/fancy-paginator.js.em +23 -0
  37. data/generica/app/assets/javascripts/components/files-field.js.em +28 -0
  38. data/generica/app/assets/javascripts/components/flash-message.js.em +6 -0
  39. data/generica/app/assets/javascripts/components/flash-slice.js.em +32 -0
  40. data/generica/app/assets/javascripts/components/form-for.js.em +28 -0
  41. data/generica/app/assets/javascripts/components/hero-splash.js.em +17 -0
  42. data/generica/app/assets/javascripts/components/introductory-lobby.js.em +13 -0
  43. data/generica/app/assets/javascripts/components/product-display.js.em +3 -0
  44. data/generica/app/assets/javascripts/components/product-listing.js.em +3 -0
  45. data/generica/app/assets/javascripts/components/products-catalog.js.em +2 -0
  46. data/generica/app/assets/javascripts/components/products-showcase.js.ls +5 -0
  47. data/generica/app/assets/javascripts/components/promise-button.js.em +20 -0
  48. data/generica/app/assets/javascripts/components/search-and-filter.js.em +13 -0
  49. data/generica/app/assets/javascripts/components/select-locale.js.em +19 -0
  50. data/generica/app/assets/javascripts/components/site-footer.js.em +8 -0
  51. data/generica/app/assets/javascripts/components/site-nav.js.em +3 -0
  52. data/generica/app/assets/javascripts/components/table-booths.js.em +10 -0
  53. data/generica/app/assets/javascripts/components/tr-span.js.em +18 -0
  54. data/generica/app/assets/javascripts/components/tree/taxon-li.js.em +46 -0
  55. data/generica/app/assets/javascripts/components/tree/taxon-ul.js.em +3 -0
  56. data/generica/app/assets/javascripts/components/tree/taxon-wrapper.js.em +22 -0
  57. data/generica/app/assets/javascripts/components/type-ahead.js.em +17 -0
  58. data/generica/app/assets/javascripts/config/i18n-translations.js.ls +3 -0
  59. data/generica/app/assets/javascripts/config/router.js.ls +29 -0
  60. data/generica/app/assets/javascripts/controllers/.gitkeep +0 -0
  61. data/generica/app/assets/javascripts/controllers/admin/employees/new_controller.js.em +16 -0
  62. data/generica/app/assets/javascripts/controllers/admin/employees/slice_controller.js.em +4 -0
  63. data/generica/app/assets/javascripts/controllers/admin/product/edit_controller.js.em +21 -0
  64. data/generica/app/assets/javascripts/controllers/admin/products/new_controller.js.em +16 -0
  65. data/generica/app/assets/javascripts/controllers/admin/products/slice_controller.js.em +4 -0
  66. data/generica/app/assets/javascripts/controllers/admin/translation/edit_controller.js.em +19 -0
  67. data/generica/app/assets/javascripts/controllers/admin/translation/form_controller.js.em +10 -0
  68. data/generica/app/assets/javascripts/controllers/admin/translations/index_controller.js.em +19 -0
  69. data/generica/app/assets/javascripts/controllers/admin/translations/sliver_controller.js.em +8 -0
  70. data/generica/app/assets/javascripts/controllers/application_controller.js.em +9 -0
  71. data/generica/app/assets/javascripts/controllers/index_controller.js.em +20 -0
  72. data/generica/app/assets/javascripts/controllers/modals/login_controller.js.em +24 -0
  73. data/generica/app/assets/javascripts/controllers/products/index_controller.js.em +28 -0
  74. data/generica/app/assets/javascripts/controllers/products/product/show_controller.js.em +17 -0
  75. data/generica/app/assets/javascripts/helpers/.gitkeep +0 -0
  76. data/generica/app/assets/javascripts/helpers/array_ex.js.ls +27 -0
  77. data/generica/app/assets/javascripts/helpers/i18n.js.ls +3 -0
  78. data/generica/app/assets/javascripts/helpers/string_ex.js.ls +21 -0
  79. data/generica/app/assets/javascripts/mixins/.gitkeep +0 -0
  80. data/generica/app/assets/javascripts/mixins/file_drag_and_drop.js.em +57 -0
  81. data/generica/app/assets/javascripts/mixins/type_ahead_builder.js.em +41 -0
  82. data/generica/app/assets/javascripts/models/.gitkeep +0 -0
  83. data/generica/app/assets/javascripts/models/admin/employee.js.em +6 -0
  84. data/generica/app/assets/javascripts/models/admin/offer.js.em +1 -0
  85. data/generica/app/assets/javascripts/models/admin/product.js.em +12 -0
  86. data/generica/app/assets/javascripts/models/admin/session.js.em +3 -0
  87. data/generica/app/assets/javascripts/models/admin/taxon.js.em +1 -0
  88. data/generica/app/assets/javascripts/models/attachment.js.em +9 -0
  89. data/generica/app/assets/javascripts/models/employee.js.em +16 -0
  90. data/generica/app/assets/javascripts/models/listing.js.em +20 -0
  91. data/generica/app/assets/javascripts/models/offer.js.em +12 -0
  92. data/generica/app/assets/javascripts/models/picture.js.em +11 -0
  93. data/generica/app/assets/javascripts/models/product.js.em +29 -0
  94. data/generica/app/assets/javascripts/models/session.js.ls +4 -0
  95. data/generica/app/assets/javascripts/models/taxon.js.em +31 -0
  96. data/generica/app/assets/javascripts/models/translation.js.em +46 -0
  97. data/generica/app/assets/javascripts/packages/flash.js.em +36 -0
  98. data/generica/app/assets/javascripts/packages/tranny.js.ls +51 -0
  99. data/generica/app/assets/javascripts/routes/.gitkeep +0 -0
  100. data/generica/app/assets/javascripts/routes/admin/employees/index_route.js.em +3 -0
  101. data/generica/app/assets/javascripts/routes/admin/employees/new_route.js.em +3 -0
  102. data/generica/app/assets/javascripts/routes/admin/index_route.js.em +1 -0
  103. data/generica/app/assets/javascripts/routes/admin/product_route.js.em +3 -0
  104. data/generica/app/assets/javascripts/routes/admin/products/index_route.js.em +3 -0
  105. data/generica/app/assets/javascripts/routes/admin/products/new_route.js.em +3 -0
  106. data/generica/app/assets/javascripts/routes/admin/taxons/index_route.js.em +2 -0
  107. data/generica/app/assets/javascripts/routes/admin/translation/edit_route.js.em +1 -0
  108. data/generica/app/assets/javascripts/routes/admin/translation_route.js.em +12 -0
  109. data/generica/app/assets/javascripts/routes/admin/translations/index_route.js.em +20 -0
  110. data/generica/app/assets/javascripts/routes/admin_route.js.em +4 -0
  111. data/generica/app/assets/javascripts/routes/application_route.js.em +19 -0
  112. data/generica/app/assets/javascripts/routes/index_route.js.em +4 -0
  113. data/generica/app/assets/javascripts/routes/products/index_route.js.em +3 -0
  114. data/generica/app/assets/javascripts/routes/products_route.js.em +4 -0
  115. data/generica/app/assets/javascripts/templates/.gitkeep +0 -0
  116. data/generica/app/assets/javascripts/templates/admin.emblem +23 -0
  117. data/generica/app/assets/javascripts/templates/admin/employees/index.emblem +22 -0
  118. data/generica/app/assets/javascripts/templates/admin/employees/new.emblem +35 -0
  119. data/generica/app/assets/javascripts/templates/admin/employees/slice.emblem +22 -0
  120. data/generica/app/assets/javascripts/templates/admin/index.emblem +3 -0
  121. data/generica/app/assets/javascripts/templates/admin/product/edit.emblem +69 -0
  122. data/generica/app/assets/javascripts/templates/admin/products/index.emblem +22 -0
  123. data/generica/app/assets/javascripts/templates/admin/products/new.emblem +56 -0
  124. data/generica/app/assets/javascripts/templates/admin/products/slice.emblem +22 -0
  125. data/generica/app/assets/javascripts/templates/admin/taxons/index.emblem +10 -0
  126. data/generica/app/assets/javascripts/templates/admin/taxons/new.emblem +0 -0
  127. data/generica/app/assets/javascripts/templates/admin/translation/edit.emblem +11 -0
  128. data/generica/app/assets/javascripts/templates/admin/translation/form.emblem +20 -0
  129. data/generica/app/assets/javascripts/templates/admin/translations/index.emblem +43 -0
  130. data/generica/app/assets/javascripts/templates/admin/translations/slice.emblem +23 -0
  131. data/generica/app/assets/javascripts/templates/admin/translations/sliver.emblem +18 -0
  132. data/generica/app/assets/javascripts/templates/application.emblem +14 -0
  133. data/generica/app/assets/javascripts/templates/components/.gitkeep +0 -0
  134. data/generica/app/assets/javascripts/templates/components/block-grid-pictures.emblem +5 -0
  135. data/generica/app/assets/javascripts/templates/components/block-picture.emblem +7 -0
  136. data/generica/app/assets/javascripts/templates/components/cookie-splash.emblem +14 -0
  137. data/generica/app/assets/javascripts/templates/components/fancy-paginator.emblem +31 -0
  138. data/generica/app/assets/javascripts/templates/components/flash-message.emblem +2 -0
  139. data/generica/app/assets/javascripts/templates/components/flash-slice.emblem +6 -0
  140. data/generica/app/assets/javascripts/templates/components/form-for.emblem +2 -0
  141. data/generica/app/assets/javascripts/templates/components/hero-splash.emblem +13 -0
  142. data/generica/app/assets/javascripts/templates/components/hero-splash/_splash-cta.emblem +7 -0
  143. data/generica/app/assets/javascripts/templates/components/hero-splash/_splash-tagline.emblem +8 -0
  144. data/generica/app/assets/javascripts/templates/components/introductory-lobby.emblem +12 -0
  145. data/generica/app/assets/javascripts/templates/components/product-display.emblem +47 -0
  146. data/generica/app/assets/javascripts/templates/components/product-listing.emblem +26 -0
  147. data/generica/app/assets/javascripts/templates/components/products-catalog.emblem +16 -0
  148. data/generica/app/assets/javascripts/templates/components/products-showcase.emblem +12 -0
  149. data/generica/app/assets/javascripts/templates/components/products-showcase/_contained-media-one.emblem +20 -0
  150. data/generica/app/assets/javascripts/templates/components/promise-button.emblem +6 -0
  151. data/generica/app/assets/javascripts/templates/components/search-and-filter.emblem +11 -0
  152. data/generica/app/assets/javascripts/templates/components/select-locale.emblem +1 -0
  153. data/generica/app/assets/javascripts/templates/components/site-footer.emblem +9 -0
  154. data/generica/app/assets/javascripts/templates/components/site-nav.emblem +7 -0
  155. data/generica/app/assets/javascripts/templates/components/site-nav/_left-nav.emblem +19 -0
  156. data/generica/app/assets/javascripts/templates/components/site-nav/_top-nav.emblem +22 -0
  157. data/generica/app/assets/javascripts/templates/components/table-booths.emblem +75 -0
  158. data/generica/app/assets/javascripts/templates/components/tr-span.emblem +1 -0
  159. data/generica/app/assets/javascripts/templates/components/tree-taxon-li.emblem +29 -0
  160. data/generica/app/assets/javascripts/templates/components/tree-taxon-ul.emblem +9 -0
  161. data/generica/app/assets/javascripts/templates/components/tree-taxon-wrapper.emblem +3 -0
  162. data/generica/app/assets/javascripts/templates/index.emblem +7 -0
  163. data/generica/app/assets/javascripts/templates/modals/login.emblem +27 -0
  164. data/generica/app/assets/javascripts/templates/products.emblem +3 -0
  165. data/generica/app/assets/javascripts/templates/products/index.emblem +7 -0
  166. data/generica/app/assets/javascripts/templates/products/product/show.emblem +71 -0
  167. data/generica/app/assets/javascripts/transforms/files_transform.js.ls +7 -0
  168. data/generica/app/assets/javascripts/transforms/form_data_transformer.js.ls +25 -0
  169. data/generica/app/assets/javascripts/transforms/strings_transform.js.ls +4 -0
  170. data/generica/app/assets/javascripts/views/.gitkeep +0 -0
  171. data/generica/app/assets/stylesheets/apiv1.css.scss +8 -0
  172. data/generica/app/assets/stylesheets/apiv1/_admin.css.scss +14 -0
  173. data/generica/app/assets/stylesheets/apiv1/_application.css.scss +70 -0
  174. data/generica/app/assets/stylesheets/apiv1/admin/contacts/_index.css.scss +3 -0
  175. data/generica/app/assets/stylesheets/apiv1/admin/products/_index.css.scss +64 -0
  176. data/generica/app/assets/stylesheets/apiv1/admin/products/_new.css.scss +11 -0
  177. data/generica/app/assets/stylesheets/apiv1/admin/translations/_index.css.scss +68 -0
  178. data/generica/app/assets/stylesheets/apiv1/components/_block-grid-pictures.css.scss +21 -0
  179. data/generica/app/assets/stylesheets/apiv1/components/_cookie-splash.css.scss +60 -0
  180. data/generica/app/assets/stylesheets/apiv1/components/_fancy-paginator.css.scss +22 -0
  181. data/generica/app/assets/stylesheets/apiv1/components/_files-field.css.scss +10 -0
  182. data/generica/app/assets/stylesheets/apiv1/components/_flash-message.css.scss +35 -0
  183. data/generica/app/assets/stylesheets/apiv1/components/_hero-splash.css.scss +39 -0
  184. data/generica/app/assets/stylesheets/apiv1/components/_introductory-lobby.css.scss +22 -0
  185. data/generica/app/assets/stylesheets/apiv1/components/_product-display.css.scss +27 -0
  186. data/generica/app/assets/stylesheets/apiv1/components/_product-listing.css.scss +34 -0
  187. data/generica/app/assets/stylesheets/apiv1/components/_products-catalog.css.scss +2 -0
  188. data/generica/app/assets/stylesheets/apiv1/components/_products-showcase.css.scss +2 -0
  189. data/generica/app/assets/stylesheets/apiv1/components/_promise-button.css.scss +8 -0
  190. data/generica/app/assets/stylesheets/apiv1/components/_search-and-filter.css.scss +9 -0
  191. data/generica/app/assets/stylesheets/apiv1/components/_select-locale.css.scss +48 -0
  192. data/generica/app/assets/stylesheets/apiv1/components/_site-footer.css.scss +23 -0
  193. data/generica/app/assets/stylesheets/apiv1/components/_site-nav.css.scss +1 -0
  194. data/generica/app/assets/stylesheets/apiv1/components/_table-booths.css.scss +25 -0
  195. data/generica/app/assets/stylesheets/apiv1/components/_tree-taxon-wrapper.css.scss +92 -0
  196. data/generica/app/assets/stylesheets/apiv1/components/_type-ahead.css.scss +59 -0
  197. data/generica/app/assets/stylesheets/apiv1/components/products-catalog/_expanding-media.css.scss +3 -0
  198. data/generica/app/assets/stylesheets/apiv1/components/products-showcase/_contained-media-one.css.scss +35 -0
  199. data/generica/app/assets/stylesheets/apiv1/components/site-nav/_left-nav.css.scss +105 -0
  200. data/generica/app/assets/stylesheets/apiv1/components/site-nav/_top-nav.css.scss +106 -0
  201. data/generica/app/assets/stylesheets/apiv1/modals/_login.css.scss +26 -0
  202. data/generica/app/assets/stylesheets/apiv1/products/product/_show.css.scss +18 -0
  203. data/generica/app/assets/stylesheets/apiv1/shared/_constants.css.scss +77 -0
  204. data/generica/app/assets/stylesheets/apiv1/shared/_variables.css.scss +23 -0
  205. data/generica/app/assets/stylesheets/application.css +15 -0
  206. data/generica/app/assets/stylesheets/foundation_and_overrides.scss +1322 -0
  207. data/generica/app/controllers/admin/base_controller.rb +9 -0
  208. data/generica/app/controllers/admin/employees/create_controller.rb +26 -0
  209. data/generica/app/controllers/admin/products/create_controller.rb +26 -0
  210. data/generica/app/controllers/admin/products/update_controller.rb +29 -0
  211. data/generica/app/controllers/admin/sessions/create_controller.rb +34 -0
  212. data/generica/app/controllers/apiv1/employees/destroy_controller.rb +9 -0
  213. data/generica/app/controllers/apiv1/employees/index_controller.rb +9 -0
  214. data/generica/app/controllers/apiv1/home_controller.rb +4 -0
  215. data/generica/app/controllers/apiv1/i18n_translations/index_controller.rb +11 -0
  216. data/generica/app/controllers/apiv1/pictures/destroy_controller.rb +13 -0
  217. data/generica/app/controllers/apiv1/pictures/show_controller.rb +9 -0
  218. data/generica/app/controllers/apiv1/product_metadatum/show_controller.rb +16 -0
  219. data/generica/app/controllers/apiv1/products/destroy_controller.rb +9 -0
  220. data/generica/app/controllers/apiv1/products/index_controller.rb +21 -0
  221. data/generica/app/controllers/apiv1/products/show_controller.rb +12 -0
  222. data/generica/app/controllers/apiv1/taxons/index_controller.rb +11 -0
  223. data/generica/app/controllers/apiv1/taxons/show_controller.rb +9 -0
  224. data/generica/app/controllers/apiv1/translations/create_controller.rb +31 -0
  225. data/generica/app/controllers/apiv1/translations/index_controller.rb +22 -0
  226. data/generica/app/controllers/apiv1/translations/show_controller.rb +9 -0
  227. data/generica/app/controllers/apiv1/translations/update_controller.rb +35 -0
  228. data/generica/app/controllers/application_controller.rb +5 -0
  229. data/generica/app/controllers/concerns/.keep +0 -0
  230. data/generica/app/helpers/application_helper.rb +2 -0
  231. data/generica/app/mailers/.keep +0 -0
  232. data/generica/app/models/.keep +0 -0
  233. data/generica/app/models/admin.rb +5 -0
  234. data/generica/app/models/admin/employee_factory.rb +31 -0
  235. data/generica/app/models/admin/pictures_factory.rb +17 -0
  236. data/generica/app/models/admin/product_factory.rb +51 -0
  237. data/generica/app/models/admin/product_modifier.rb +39 -0
  238. data/generica/app/models/admin/user.rb +25 -0
  239. data/generica/app/models/apiv1.rb +5 -0
  240. data/generica/app/models/apiv1/attachment.rb +45 -0
  241. data/generica/app/models/apiv1/employee.rb +29 -0
  242. data/generica/app/models/apiv1/listings.rb +5 -0
  243. data/generica/app/models/apiv1/listings/taxon_relationship.rb +19 -0
  244. data/generica/app/models/apiv1/permalinkifier.rb +22 -0
  245. data/generica/app/models/apiv1/picture.rb +37 -0
  246. data/generica/app/models/apiv1/product.rb +71 -0
  247. data/generica/app/models/apiv1/products_machine.rb +65 -0
  248. data/generica/app/models/apiv1/taxon.rb +88 -0
  249. data/generica/app/models/apiv1/translation.rb +57 -0
  250. data/generica/app/models/apiv1/translation_machine.rb +57 -0
  251. data/generica/app/models/concerns/.keep +0 -0
  252. data/generica/app/varissets/javascripts/templates/application.emblem.erb +28 -0
  253. data/generica/app/varissets/javascripts/templates/components/cookie-splash.emblem.erb +17 -0
  254. data/generica/app/varissets/javascripts/templates/components/hero-splash.emblem.erb +25 -0
  255. data/generica/app/varissets/javascripts/templates/components/introductory-lobby.emblem.erb +12 -0
  256. data/generica/app/varissets/javascripts/templates/components/product-display.emblem.erb +51 -0
  257. data/generica/app/varissets/javascripts/templates/components/product-listing.emblem.erb +29 -0
  258. data/generica/app/varissets/javascripts/templates/components/products-catalog.emblem.erb +18 -0
  259. data/generica/app/varissets/javascripts/templates/components/products-showcase.emblem.erb +23 -0
  260. data/generica/app/varissets/javascripts/templates/components/site-nav.emblem.erb +47 -0
  261. data/generica/app/varissets/javascripts/templates/components/table-booths.emblem.erb +71 -0
  262. data/generica/app/varissets/javascripts/templates/index.emblem.erb +11 -0
  263. data/generica/app/varissets/stylesheets/apiv1/_application.css.scss.erb +66 -0
  264. data/generica/app/varissets/stylesheets/apiv1/components/_cookie-splash.css.scss.erb +61 -0
  265. data/generica/app/varissets/stylesheets/apiv1/components/_hero-splash.css.scss.erb +42 -0
  266. data/generica/app/varissets/stylesheets/apiv1/components/_introductory-lobby.css.scss.erb +26 -0
  267. data/generica/app/varissets/stylesheets/apiv1/components/_product-display.css.scss.erb +30 -0
  268. data/generica/app/varissets/stylesheets/apiv1/components/_product-listing.css.scss.erb +37 -0
  269. data/generica/app/varissets/stylesheets/apiv1/components/_products-catalog.css.scss.erb +5 -0
  270. data/generica/app/varissets/stylesheets/apiv1/components/_products-showcase.css.scss.erb +39 -0
  271. data/generica/app/varissets/stylesheets/apiv1/components/_site-nav.css.scss.erb +213 -0
  272. data/generica/app/varissets/stylesheets/apiv1/components/_table-booths.css.scss.erb +28 -0
  273. data/generica/app/views/apiv1/home/index.html.haml +2 -0
  274. data/generica/app/views/apiv1/layouts/application.html.haml +21 -0
  275. data/generica/app/views/layouts/application.html.erb +14 -0
  276. data/generica/bin/bundle +3 -0
  277. data/generica/bin/rails +8 -0
  278. data/generica/bin/rake +8 -0
  279. data/generica/bin/spring +18 -0
  280. data/generica/bower.json +21 -0
  281. data/generica/config.ru +4 -0
  282. data/generica/config/application.rb +23 -0
  283. data/generica/config/boot.rb +4 -0
  284. data/generica/config/database.yml +54 -0
  285. data/generica/config/database.yml.erb +53 -0
  286. data/generica/config/desired_languages.yml +28 -0
  287. data/generica/config/environment.rb +5 -0
  288. data/generica/config/environments/development.rb +37 -0
  289. data/generica/config/environments/production.rb +82 -0
  290. data/generica/config/environments/test.rb +39 -0
  291. data/generica/config/initializers/assets.rb +8 -0
  292. data/generica/config/initializers/backtrace_silencers.rb +7 -0
  293. data/generica/config/initializers/cookies_serializer.rb +3 -0
  294. data/generica/config/initializers/filter_parameter_logging.rb +4 -0
  295. data/generica/config/initializers/inflections.rb +16 -0
  296. data/generica/config/initializers/mime_types.rb +4 -0
  297. data/generica/config/initializers/session_store.rb +3 -0
  298. data/generica/config/initializers/sorcery.rb +437 -0
  299. data/generica/config/initializers/wrap_parameters.rb +14 -0
  300. data/generica/config/locales/ar.yml +78 -0
  301. data/generica/config/locales/ca.yml +78 -0
  302. data/generica/config/locales/cs.yml +78 -0
  303. data/generica/config/locales/da.yml +78 -0
  304. data/generica/config/locales/de.yml +78 -0
  305. data/generica/config/locales/el.yml +78 -0
  306. data/generica/config/locales/en.yml +78 -0
  307. data/generica/config/locales/es.yml +78 -0
  308. data/generica/config/locales/fi.yml +78 -0
  309. data/generica/config/locales/fr.yml +78 -0
  310. data/generica/config/locales/hu.yml +78 -0
  311. data/generica/config/locales/id.yml +78 -0
  312. data/generica/config/locales/is.yml +78 -0
  313. data/generica/config/locales/it.yml +78 -0
  314. data/generica/config/locales/ja.yml +78 -0
  315. data/generica/config/locales/ko.yml +78 -0
  316. data/generica/config/locales/ms.yml +78 -0
  317. data/generica/config/locales/nl.yml +78 -0
  318. data/generica/config/locales/no.yml +78 -0
  319. data/generica/config/locales/pl.yml +78 -0
  320. data/generica/config/locales/pt.yml +78 -0
  321. data/generica/config/locales/ru.yml +78 -0
  322. data/generica/config/locales/sv.yml +78 -0
  323. data/generica/config/locales/th.yml +78 -0
  324. data/generica/config/locales/tr.yml +78 -0
  325. data/generica/config/locales/zh-CN.yml +78 -0
  326. data/generica/config/locales/zh-TW.yml +78 -0
  327. data/generica/config/nginx.conf +36 -0
  328. data/generica/config/routes.rb +35 -0
  329. data/generica/config/secrets.yml +22 -0
  330. data/generica/config/unicorn.conf.rb +101 -0
  331. data/generica/db/migrate/20140930052333_create_apiv1_taxons.rb +14 -0
  332. data/generica/db/migrate/20140930052559_create_apiv1_listings_plastics.rb +18 -0
  333. data/generica/db/migrate/20140930180107_create_apiv1_pictures.rb +8 -0
  334. data/generica/db/migrate/20140930180108_add_attachment_pic_to_apiv1_pictures.rb +11 -0
  335. data/generica/db/migrate/20141001063631_create_commerce_units_dimensions.rb +11 -0
  336. data/generica/db/migrate/20141001212635_create_apiv1_listings_taxon_relationships.rb +9 -0
  337. data/generica/db/migrate/20141006231820_create_apiv1_employees.rb +11 -0
  338. data/generica/db/migrate/20141010215459_create_apiv1_translations.rb +11 -0
  339. data/generica/db/migrate/20141018235809_add_attachment_document_to_attachments.rb +13 -0
  340. data/generica/db/migrate/20141021003733_sorcery_core.rb +13 -0
  341. data/generica/db/migrate/20141021003734_sorcery_remember_me.rb +8 -0
  342. data/generica/db/schema.rb +141 -0
  343. data/generica/db/seeds.rb +15 -0
  344. data/generica/db/seeds/dimensions.rb +42 -0
  345. data/generica/db/seeds/products.rb +30 -0
  346. data/generica/db/seeds/taxons.rb +81 -0
  347. data/generica/db/seeds/translation_seeds.rb +2132 -0
  348. data/generica/db/seeds/users.rb +2 -0
  349. data/generica/lib/assets/.keep +0 -0
  350. data/generica/lib/generica.rb +4 -0
  351. data/generica/lib/generica/locale.yml.erb +6 -0
  352. data/generica/lib/generica/seed.en.yml +77 -0
  353. data/generica/lib/generica/seed_generator.rb +119 -0
  354. data/generica/lib/generica/translation_seeds.rb.erb +4 -0
  355. data/generica/lib/generica/yaml_writer.rb +54 -0
  356. data/generica/lib/tasks/.keep +0 -0
  357. data/generica/lib/tasks/assets_unretardifier.rake +7 -0
  358. data/generica/lib/tasks/cloudrider.rake +7 -0
  359. data/generica/lib/tasks/elasticsearch.rake +10 -0
  360. data/generica/lib/tasks/production.rake +14 -0
  361. data/generica/lib/tasks/seeds.rake +13 -0
  362. data/generica/lib/tasks/translation.rake +7 -0
  363. data/generica/log/.keep +0 -0
  364. data/generica/public/404.html +67 -0
  365. data/generica/public/422.html +67 -0
  366. data/generica/public/500.html +66 -0
  367. data/generica/public/favicon.ico +0 -0
  368. data/generica/public/javascripts/translations.js +2 -0
  369. data/generica/public/robots.txt +5 -0
  370. data/generica/public/tests/dog.png +0 -0
  371. data/generica/public/tests/husky.png +0 -0
  372. data/generica/spec/controllers/admin/employees/create_controller_spec.rb +48 -0
  373. data/generica/spec/controllers/admin/products/create_controller_spec.rb +55 -0
  374. data/generica/spec/controllers/admin/products/update_controller_spec.rb +44 -0
  375. data/generica/spec/controllers/admin/sessions/create_controller_spec.rb +66 -0
  376. data/generica/spec/controllers/apiv1/pictures/destroy_controller_spec.rb +36 -0
  377. data/generica/spec/factories/admin/user_factory.rb +22 -0
  378. data/generica/spec/factories/apiv1/picture_factory.rb +25 -0
  379. data/generica/spec/factories/apiv1/product_factory.rb +48 -0
  380. data/generica/spec/factories/apiv1/taxon_factory.rb +40 -0
  381. data/generica/spec/factories/base_factory.rb +30 -0
  382. data/generica/spec/models/admin/pictures_factory_spec.rb +14 -0
  383. data/generica/spec/models/admin/product_factory_spec.rb +54 -0
  384. data/generica/spec/models/admin/product_modifier_spec.rb +123 -0
  385. data/generica/spec/models/apiv1/product_spec.rb +61 -0
  386. data/generica/spec/rails_helper.rb +51 -0
  387. data/generica/spec/spec_helper.rb +85 -0
  388. data/generica/vendor/assets/javascripts/.keep +0 -0
  389. data/generica/vendor/assets/stylesheets/.keep +0 -0
  390. data/lib/cloudrider.rb +4 -0
  391. data/lib/cloudrider/apiv1.rb +72 -0
  392. data/lib/cloudrider/apiv1/application_emblem.rb +12 -0
  393. data/lib/cloudrider/apiv1/application_sass.rb +31 -0
  394. data/lib/cloudrider/apiv1/base.rb +63 -0
  395. data/lib/cloudrider/apiv1/cookie_splash_component.rb +14 -0
  396. data/lib/cloudrider/apiv1/cookie_splash_sass.rb +20 -0
  397. data/lib/cloudrider/apiv1/hero_splash_component.rb +37 -0
  398. data/lib/cloudrider/apiv1/hero_splash_sass.rb +43 -0
  399. data/lib/cloudrider/apiv1/index_emblem.rb +11 -0
  400. data/lib/cloudrider/apiv1/introductory_lobby_component.rb +17 -0
  401. data/lib/cloudrider/apiv1/introductory_lobby_sass.rb +17 -0
  402. data/lib/cloudrider/apiv1/product_display_component.rb +11 -0
  403. data/lib/cloudrider/apiv1/product_display_sass.rb +11 -0
  404. data/lib/cloudrider/apiv1/product_listing_component.rb +11 -0
  405. data/lib/cloudrider/apiv1/product_listing_sass.rb +11 -0
  406. data/lib/cloudrider/apiv1/products_catalog_component.rb +11 -0
  407. data/lib/cloudrider/apiv1/products_catalog_sass.rb +11 -0
  408. data/lib/cloudrider/apiv1/products_showcase_component.rb +11 -0
  409. data/lib/cloudrider/apiv1/products_showcase_sass.rb +20 -0
  410. data/lib/cloudrider/apiv1/site_nav_component.rb +15 -0
  411. data/lib/cloudrider/apiv1/site_nav_sass.rb +11 -0
  412. data/lib/cloudrider/apiv1/table_booths_component.rb +11 -0
  413. data/lib/cloudrider/apiv1/table_booths_sass.rb +11 -0
  414. data/lib/cloudrider/application_commander.rb +119 -0
  415. data/lib/cloudrider/file_orders_maker.rb +24 -0
  416. data/lib/cloudrider/protofile.rb +9 -0
  417. data/lib/cloudrider/templates/application.emblem.erb +28 -0
  418. data/lib/cloudrider/version.rb +3 -0
  419. data/lib/generators/cloudrider/USAGE +1 -0
  420. data/lib/generators/cloudrider/backend/backend_generator.rb +49 -0
  421. data/lib/generators/cloudrider/client/client_generator.rb +110 -0
  422. data/lib/generators/cloudrider/varissets/varissets_generator.rb +35 -0
  423. data/spec/cloudrider/apiv1_base_spec.rb +46 -0
  424. data/spec/cloudrider/apiv1_spec.rb +20 -0
  425. data/spec/spec_helper.rb +1 -0
  426. metadata +555 -0
@@ -0,0 +1,36 @@
1
+ class Apiv1.Flash extends Ember.Object
2
+ flashStack: []
3
+ +computed flashStack.@each
4
+ stack: -> @flashStack
5
+ dismiss: (message) ->
6
+ @flashStack.removeObject message
7
+
8
+ register: (severity, message, expiration) ->
9
+ if arguments.length > 2
10
+ m = Apiv1.Flash.ExpiringMessage.create
11
+ severity: severity
12
+ message: message
13
+ expiration: expiration
14
+ else
15
+ m = Apiv1.Flash.Message.create
16
+ severity: severity
17
+ message: message
18
+ @flashStack.pushObject m
19
+
20
+ Apiv1.Flash.instance = Apiv1.Flash.create()
21
+ Apiv1.Flash.register = _.bind Apiv1.Flash.instance.register, Apiv1.Flash.instance
22
+
23
+ class Apiv1.Flash.Message extends Ember.Object
24
+ type: "vanilla"
25
+ severity: "info"
26
+ dismiss: ->
27
+ Apiv1.Flash.instance.dismiss @
28
+
29
+
30
+ class Apiv1.Flash.ExpiringMessage extends Apiv1.Flash.Message
31
+ type: "ephemeral"
32
+ severity: "info"
33
+ expiration: 10000
34
+ init: ->
35
+ dismiss = _.bind @dismiss, @
36
+ _.delay dismiss, @expiration
@@ -0,0 +1,51 @@
1
+ class Tranny
2
+ # Example for arrays
3
+ # step serves as a default constructor, pop, and push
4
+ @array-step = (xs, x) ->
5
+ switch arguments.length
6
+ # step :: []
7
+ case 0
8
+ []
9
+ # step :: xs -> [xs, x]
10
+ case 1
11
+ [head, ...tail] = xs
12
+ [tail, head]
13
+ # step :: (xs, x) -> xs
14
+ default
15
+ xs[*] = x
16
+ xs
17
+
18
+
19
+ # step :: xs -> [xs, x]
20
+ @reducing = (reduceable, reducer, init) ->
21
+ (step) ->
22
+ [maybe-rest, element] = step reduceable
23
+ if maybe-rest
24
+ step |> Tranny.reducing maybe-rest, reducer, reducer(init, element)
25
+ else
26
+ reducer init, element
27
+
28
+ # step :: (xs, x) -> xs
29
+ # step :: []
30
+ @mapping = (mappable, mapper) ->
31
+ (step) ->
32
+ reducer = (mapped, element) -> step mapped, mapper element
33
+ step |> Tranny.reducing mappable, reducer, step!
34
+
35
+ # step :: (xs, x) -> xs
36
+ # step :: []
37
+ @filtering = (filterable, cutoff) ->
38
+ (step) ->
39
+ reducer = (filtered, element) ->
40
+ if cutoff element
41
+ step filtered, element
42
+ else
43
+ filtered
44
+ step |> Tranny.reducing filterable, reducer, step!
45
+
46
+ # Not implemented with reduce because laziness reasons
47
+ @taking = (takeable, n) ->
48
+ (step) ->
49
+ return step! if n <= 0
50
+ [rest, element] = step takeable
51
+ step |> Tranny.taking rest, n-1 |> (taken) -> step taken, element
@@ -0,0 +1,3 @@
1
+ class Apiv1.AdminEmployeesIndexRoute extends Ember.Route
2
+ model: ->
3
+ @store.find "employee"
@@ -0,0 +1,3 @@
1
+ class Apiv1.AdminEmployeesNewRoute extends Ember.Route
2
+ model: ->
3
+ @store.createRecord "admin_employee"
@@ -0,0 +1 @@
1
+ class Apiv1.AdminIndexRoute extends Ember.Route
@@ -0,0 +1,3 @@
1
+ class Apiv1.AdminProductRoute extends Ember.Route
2
+ model: (params) ->
3
+ @store.find("product", params.product_id)
@@ -0,0 +1,3 @@
1
+ class Apiv1.AdminProductsIndexRoute extends Ember.Route
2
+ model: ->
3
+ @store.find "product"
@@ -0,0 +1,3 @@
1
+ class Apiv1.AdminProductsNewRoute extends Ember.Route
2
+ model: ->
3
+ @store.createRecord "admin_product"
@@ -0,0 +1,2 @@
1
+ class Apiv1.AdminTaxonsIndexRoute extends Ember.Route
2
+ model: -> @store.find "taxon"
@@ -0,0 +1 @@
1
+ class Apiv1.AdminTranslationEditRoute extends Ember.Route
@@ -0,0 +1,12 @@
1
+ class Apiv1.AdminTranslationRoute extends Ember.Route
2
+ model: (params) ->
3
+ oldTranslations: @oldTranslations(params.key)
4
+ newTranslations: @newTranslations(params.key)
5
+
6
+ oldTranslations: (key) ->
7
+ @store.find("translation", key: key)
8
+
9
+ newTranslations: (key) ->
10
+ tls = _.map Apiv1.Translation.KnownLanguages, (lng, loc) =>
11
+ @store.createRecord "translation", locale: loc, key: key
12
+ _.sortBy tls, (translation) -> translation.get("locale")
@@ -0,0 +1,20 @@
1
+ class Apiv1.AdminTranslationsIndexRoute extends Ember.Route
2
+ queryParams:
3
+ query:
4
+ refreshModel: true
5
+ page:
6
+ refreshModel: true
7
+ per:
8
+ refreshModel: true
9
+ locale:
10
+ refreshModel: true
11
+ query: ''
12
+ page: 1
13
+ per: 50
14
+ locale: 'en'
15
+
16
+ findTranslations: (p) ->
17
+ @store.find "translation", p
18
+
19
+ model: (params) ->
20
+ translations: @findTranslations params
@@ -0,0 +1,4 @@
1
+ class Apiv1.AdminRoute extends Ember.Route
2
+ renderTemplate: ->
3
+ @render "admin",
4
+ into: "application"
@@ -0,0 +1,19 @@
1
+ class Apiv1.ApplicationRoute extends Ember.Route
2
+ disconnectModal: ->
3
+ $(".modal-background").hide()
4
+ @disconnectOutlet
5
+ outlet: 'modal'
6
+ parentView: 'application'
7
+ modalModelFor: (modalName) ->
8
+ return @store.createRecord("adminSession") if modalName is "login"
9
+ actions:
10
+ displayModal: (modalName) ->
11
+ $(".modal-background").show()
12
+ @render "modals/#{modalName}",
13
+ into: 'application'
14
+ outlet: 'modal'
15
+ model: @modalModelFor modalName
16
+ closeModal: ->
17
+ @disconnectModal()
18
+ willTransition: ->
19
+ @disconnectModal()
@@ -0,0 +1,4 @@
1
+ class Apiv1.IndexRoute extends Ember.Route
2
+ model: ->
3
+ products: @store.find("product", per: 3)
4
+ employees: @store.find("employee", per: 5)
@@ -0,0 +1,3 @@
1
+ class Apiv1.ProductsIndexRoute extends Ember.Route
2
+ model: ->
3
+ taxons: @store.find "taxon"
@@ -0,0 +1,4 @@
1
+ class Apiv1.ProductsRoute extends Ember.Route
2
+ renderTemplate: ->
3
+ @render "products",
4
+ into: "application"
@@ -0,0 +1,23 @@
1
+ .row
2
+ .small-12.columns
3
+ h1.capitalize
4
+ link-to "admin"
5
+ tr-span en="admin panel"
6
+
7
+ .row.admin-nav-tabs
8
+ .small-12.medium-4.large-4.columns
9
+ link-to "admin.products.index" class="admin-nav-tab"
10
+ span.capitalize
11
+ tr-span en="products"
12
+ .small-12.medium-4.large-4.columns
13
+ link-to "admin.employees.index" class="admin-nav-tab"
14
+ span.capitalize
15
+ tr-span en="employee contacts"
16
+ .small-12.medium-4.large-4.columns
17
+ link-to "admin.translations" class="admin-nav-tab"
18
+ span.capitalize
19
+ tr-span en="translations"
20
+
21
+ .row
22
+ .small-12.columns
23
+ == outlet
@@ -0,0 +1,22 @@
1
+ .row
2
+ .small-12.medium-4.large-4.columns.medium-offset-4.large-offset-4
3
+ link-to "admin.employees.new" class="button expand success"
4
+ span.spacebar
5
+ i.fa.fa-plus
6
+ tr-span en="new employee employee"
7
+
8
+ .row
9
+ .small-12.columns
10
+ each employee in model
11
+ == render "admin/employees/slice" employee
12
+ else
13
+ .admin-employee-slice
14
+ i.fa.fa-cog.fa-spin
15
+ span.prespace
16
+ tr-span en="now loading"
17
+
18
+ .row
19
+ .small-4.medium-3.large-2.columns
20
+ span.bold.colon
21
+ tr-span en="employees"
22
+ span.prespace= model.length
@@ -0,0 +1,35 @@
1
+ .row.admin-employee-new
2
+ .small-12.columns
3
+ form-for errors=failureReason submit="formSubmitted"
4
+ fieldset
5
+ legend.capitalize.bold
6
+ tr-span en="new employee contact"
7
+ .input-section attr-name="personName"
8
+ label.form-label
9
+ span.asterisk
10
+ tr-span en="employee name"
11
+ Ember.TextField name="personName" value=model.personName placeholder="John Smith"
12
+ .input-section attr-name="employeeTitle"
13
+ label.form-label
14
+ tr-span en="employee title"
15
+ Ember.TextField name="employeeTitle" value=model.employeeTitle placeholder="Vice President of Sales"
16
+ .input-section attr-name="email"
17
+ label.form-label
18
+ tr-span en="email"
19
+ Ember.TextField name="email" value=model.email placeholder="jsmith@example.com" type="email"
20
+ .input-section attr-name="phoneNumber"
21
+ label.form-label
22
+ tr-span en="phone number"
23
+ Ember.TextField name="phoneNumber" value=model.phoneNumber placeholder="(555) 555 5555"
24
+ .input-section attr-name="pictures"
25
+ label.form-label
26
+ tr-span en="employee picture"
27
+ files-field name="pictures" files=model.pictures class="form-control upload-control"
28
+
29
+ .actions.row
30
+ .small-6.columns.end
31
+ promise-button model=model class="button expand"
32
+ i.fa.fa-check
33
+ span.capitalize.bold
34
+ tr-span en="submit"
35
+
@@ -0,0 +1,22 @@
1
+ .admin-employee-slice
2
+ .actions
3
+ .view
4
+ i.fa.fa-user
5
+ span.prespace= model.personName
6
+ span.predash= model.employeeTitle
7
+ .edit
8
+ link-to "admin.employee.edit" model.id
9
+ i.fa.fa-edit
10
+ span.prespace
11
+ tr-span en="edit"
12
+ .delete
13
+ .pointer click="requestDelete"
14
+ i.fa.fa-times
15
+ span.prespace
16
+ tr-span en="delete"
17
+
18
+ .summary
19
+ .media-object
20
+ img.product-image.th src=model.mugShot
21
+
22
+ .media-text= model.roughSummary
@@ -0,0 +1,3 @@
1
+ h4 welcome
2
+
3
+ p.todo TODO: analytics dashboard goes here
@@ -0,0 +1,69 @@
1
+ .row.admin-products-new
2
+ form-for errors=failureReason submit="formSubmitted"
3
+ .small-12.columns
4
+ fieldset
5
+ legend.capitalize.bold
6
+ tr-span en="edit listing core"
7
+ .input-section attr-name="material"
8
+ label.form-label
9
+ span.asterisk
10
+ tr-span en="listing name"
11
+ Ember.TextField name="material" value=adminProduct.material placeholder="hot dog"
12
+ .input-section attr-name="sku"
13
+ label.form-label
14
+ tr-span en="external reference number"
15
+ Ember.TextField name="sku" value=adminProduct.sku placeholder="XYZ-00123"
16
+ .input-section attr-name="price"
17
+ label.form-label
18
+ tr-span en="how much to sell for?"
19
+ Ember.TextField name="price" value=adminProduct.price placeholder="0.33 USD / pound FAS Long Beach Port"
20
+ .input-section attr-name="amount"
21
+ label.form-label
22
+ tr-span en="how much of it do you have?"
23
+ Ember.TextField name="amount" value=adminProduct.amount placeholder="200 tons every week"
24
+ .input-section attr-name="quality"
25
+ label.form-label
26
+ tr-span en="what sort of goods are these?"
27
+ Ember.TextField name="quality" value=adminProduct.quality placeholder="A grade, baled"
28
+ .input-section attr-name="place"
29
+ label.form-label
30
+ tr-span en="where is this?"
31
+ Ember.TextField name="place" value=adminProduct.place placeholder="Los Angeles"
32
+ .input-section attr-name="others"
33
+ label.form-label
34
+ tr-span en="anything else?"
35
+ Ember.TextArea name="others" value=adminProduct.others
36
+
37
+ .small-12.columns
38
+ fieldset
39
+ legend.capitalize.bold
40
+ tr-span en="existing pictures"
41
+ block-grid-pictures pictures=model.pictures
42
+
43
+ .small-12.columns
44
+ fieldset
45
+ legend.capitalize.bold
46
+ tr-span en="upload more pictures"
47
+ .input-section attr-name="pictures"
48
+ label.form-label
49
+ span.asterisk
50
+ tr-span en="your listing needs at least 1 picture"
51
+ span.parantheses
52
+ tr-span en="the first picture will be displayed in the showcase"
53
+ files-field name="pictures" files=adminProduct.pictures class="form-control upload-control"
54
+
55
+ .small-12.columns
56
+ fieldset
57
+ legend.capitalize.bold
58
+ tr-span en="actions"
59
+ .actions.row
60
+ .small-6.columns
61
+ promise-button model=adminProduct class="button expand"
62
+ i.fa.fa-check
63
+ span.capitalize.bold
64
+ tr-span en="save"
65
+ .small-6.columns.end
66
+ link-to "admin.products.index" class="button expand secondary"
67
+ i.fa.fa-times
68
+ span.capitalize.bold
69
+ tr-span en="back"
@@ -0,0 +1,22 @@
1
+ .row
2
+ .small-12.medium-4.large-4.columns
3
+ link-to "admin.products.new" class="button expand success"
4
+ span.spacebar
5
+ i.fa.fa-plus
6
+ tr-span en="new product"
7
+
8
+ .row
9
+ .small-12.columns
10
+ each listing in model
11
+ == render "admin/products/slice" listing
12
+ else
13
+ .admin-product-slice
14
+ i.fa.fa-cog.fa-spin
15
+ span.prespace
16
+ tr-span en="now loading"
17
+
18
+ .row
19
+ .small-4.medium-3.large-2.columns
20
+ span.bold.colon
21
+ tr-span en="products"
22
+ span.prespace= model.length
@@ -0,0 +1,56 @@
1
+ .row.admin-products-new
2
+ .small-12.columns
3
+ form-for errors=failureReason submit="formSubmitted"
4
+ fieldset
5
+ legend.capitalize.bold
6
+ tr-span en="new listing"
7
+ .input-section attr-name="material"
8
+ label.form-label
9
+ span.asterisk
10
+ tr-span en="listing name"
11
+ Ember.TextField name="material" value=model.material placeholder="hot dog"
12
+ .input-section attr-name="sku"
13
+ label.form-label
14
+ tr-span en="external reference number"
15
+ Ember.TextField name="sku" value=model.sku placeholder="XYZ-00123"
16
+ .input-section attr-name="price"
17
+ label.form-label
18
+ tr-span en="how much to sell for?"
19
+ Ember.TextField name="price" value=model.price placeholder="0.33 USD / pound FAS Long Beach Port"
20
+ .input-section attr-name="amount"
21
+ label.form-label
22
+ tr-span en="how much of it do you have?"
23
+ Ember.TextField name="amount" value=model.amount placeholder="200 tons every week"
24
+ .input-section attr-name="quality"
25
+ label.form-label
26
+ tr-span en="what sort of goods are these?"
27
+ Ember.TextField name="quality" value=model.quality placeholder="A grade, baled"
28
+ .input-section attr-name="place"
29
+ label.form-label
30
+ tr-span en="where is this?"
31
+ Ember.TextField name="place" value=model.place placeholder="Los Angeles"
32
+ .input-section attr-name="others"
33
+ label.form-label
34
+ tr-span en="anything else?"
35
+ Ember.TextArea name="others" value=model.others
36
+ .input-section attr-name="files"
37
+ label.form-label
38
+ tr-span en="related files"
39
+ span.parantheses
40
+ tr-span en="these will be pubicly available"
41
+ files-field name="attachments" files=model.attachments class="form-control upload-control"
42
+ .input-section attr-name="pictures"
43
+ label.form-label
44
+ span.asterisk
45
+ tr-span en="listing pictures"
46
+ span.parantheses
47
+ tr-span en="the first picture will be displayed in the showcase"
48
+ files-field name="pictures" files=model.pictures class="form-control upload-control"
49
+
50
+ .actions.row
51
+ .small-6.columns.end
52
+ promise-button model=model class="button expand"
53
+ i.fa.fa-check
54
+ span.capitalize.bold
55
+ tr-span en="submit"
56
+