spree_backend 2.0.0.rc1

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 (370) hide show
  1. checksums.yaml +15 -0
  2. data/app/assets/images/admin/bg/spree_50.png +0 -0
  3. data/app/assets/images/admin/payment_banner.png +0 -0
  4. data/app/assets/images/admin/progress.gif +0 -0
  5. data/app/assets/javascripts/admin/address_states.js +27 -0
  6. data/app/assets/javascripts/admin/admin.js.erb +283 -0
  7. data/app/assets/javascripts/admin/calculator.js +16 -0
  8. data/app/assets/javascripts/admin/checkouts/edit.js +94 -0
  9. data/app/assets/javascripts/admin/gateway.js +13 -0
  10. data/app/assets/javascripts/admin/image_settings.js.erb +62 -0
  11. data/app/assets/javascripts/admin/images/index.js.coffee +15 -0
  12. data/app/assets/javascripts/admin/images/new.js.coffee +7 -0
  13. data/app/assets/javascripts/admin/nested-attribute.js +23 -0
  14. data/app/assets/javascripts/admin/option_type_autocomplete.js.erb +35 -0
  15. data/app/assets/javascripts/admin/orders/edit.js +17 -0
  16. data/app/assets/javascripts/admin/orders/edit_form.js +16 -0
  17. data/app/assets/javascripts/admin/payments/new.js +16 -0
  18. data/app/assets/javascripts/admin/product_picker.js +37 -0
  19. data/app/assets/javascripts/admin/progress.coffee +27 -0
  20. data/app/assets/javascripts/admin/promotions.js +98 -0
  21. data/app/assets/javascripts/admin/shipments.js.erb +66 -0
  22. data/app/assets/javascripts/admin/spree-select2.js.erb +22 -0
  23. data/app/assets/javascripts/admin/spree_backend.js +19 -0
  24. data/app/assets/javascripts/admin/states.js +9 -0
  25. data/app/assets/javascripts/admin/stock_management.js.coffee +9 -0
  26. data/app/assets/javascripts/admin/stock_transfer.js.coffee +181 -0
  27. data/app/assets/javascripts/admin/taxon_autocomplete.js.erb +32 -0
  28. data/app/assets/javascripts/admin/taxon_tree_menu.js.coffee +22 -0
  29. data/app/assets/javascripts/admin/taxonomy.js.coffee +127 -0
  30. data/app/assets/javascripts/admin/underscore-min.js +1227 -0
  31. data/app/assets/javascripts/admin/user_picker.js +31 -0
  32. data/app/assets/javascripts/admin/variant_autocomplete.js.erb +180 -0
  33. data/app/assets/javascripts/admin/zone.js.coffee +39 -0
  34. data/app/assets/javascripts/store/backend.js +1 -0
  35. data/app/assets/stylesheets/admin/components/_actions.scss +31 -0
  36. data/app/assets/stylesheets/admin/components/_date-picker.scss +154 -0
  37. data/app/assets/stylesheets/admin/components/_messages.scss +43 -0
  38. data/app/assets/stylesheets/admin/components/_navigation.scss +150 -0
  39. data/app/assets/stylesheets/admin/components/_pagination.scss +17 -0
  40. data/app/assets/stylesheets/admin/components/_product_autocomplete.scss +29 -0
  41. data/app/assets/stylesheets/admin/components/_progress.scss +35 -0
  42. data/app/assets/stylesheets/admin/components/_sidebar.scss +24 -0
  43. data/app/assets/stylesheets/admin/components/_states.scss +34 -0
  44. data/app/assets/stylesheets/admin/components/_table-filter.scss +14 -0
  45. data/app/assets/stylesheets/admin/globals/_functions.scss +25 -0
  46. data/app/assets/stylesheets/admin/globals/_mixins.scss +25 -0
  47. data/app/assets/stylesheets/admin/globals/_variables.scss +142 -0
  48. data/app/assets/stylesheets/admin/globals/_variables_override.scss +7 -0
  49. data/app/assets/stylesheets/admin/hacks/_ie.scss +73 -0
  50. data/app/assets/stylesheets/admin/hacks/_mozilla.scss +32 -0
  51. data/app/assets/stylesheets/admin/hacks/_opera.scss +17 -0
  52. data/app/assets/stylesheets/admin/plugins/_jstree.scss +132 -0
  53. data/app/assets/stylesheets/admin/plugins/_powertip.scss +86 -0
  54. data/app/assets/stylesheets/admin/plugins/_select2.scss +176 -0
  55. data/app/assets/stylesheets/admin/plugins/_token-input.scss +110 -0
  56. data/app/assets/stylesheets/admin/plugins/font-awesome.scss +303 -0
  57. data/app/assets/stylesheets/admin/sections/_bulk_transfer.scss +8 -0
  58. data/app/assets/stylesheets/admin/sections/_edit_checkouts.scss +72 -0
  59. data/app/assets/stylesheets/admin/sections/_image_settings.scss +3 -0
  60. data/app/assets/stylesheets/admin/sections/_orders.scss +54 -0
  61. data/app/assets/stylesheets/admin/sections/_overview.scss +86 -0
  62. data/app/assets/stylesheets/admin/sections/_products.scss +113 -0
  63. data/app/assets/stylesheets/admin/sections/_promotions.scss +100 -0
  64. data/app/assets/stylesheets/admin/shared/_forms.scss +262 -0
  65. data/app/assets/stylesheets/admin/shared/_icons.scss +22 -0
  66. data/app/assets/stylesheets/admin/shared/_layout.scss +91 -0
  67. data/app/assets/stylesheets/admin/shared/_tables.scss +198 -0
  68. data/app/assets/stylesheets/admin/shared/_typography.scss +132 -0
  69. data/app/assets/stylesheets/admin/spree_admin.scss +39 -0
  70. data/app/assets/stylesheets/admin/spree_backend.css +16 -0
  71. data/app/assets/stylesheets/store/backend.css +1 -0
  72. data/app/controllers/spree/admin/adjustments_controller.rb +30 -0
  73. data/app/controllers/spree/admin/banners_controller.rb +14 -0
  74. data/app/controllers/spree/admin/base_controller.rb +92 -0
  75. data/app/controllers/spree/admin/countries_controller.rb +11 -0
  76. data/app/controllers/spree/admin/general_settings_controller.rb +34 -0
  77. data/app/controllers/spree/admin/image_settings_controller.rb +66 -0
  78. data/app/controllers/spree/admin/images_controller.rb +35 -0
  79. data/app/controllers/spree/admin/inventory_units_controller.rb +6 -0
  80. data/app/controllers/spree/admin/line_items_controller.rb +49 -0
  81. data/app/controllers/spree/admin/mail_methods_controller.rb +38 -0
  82. data/app/controllers/spree/admin/option_types_controller.rb +46 -0
  83. data/app/controllers/spree/admin/option_values_controller.rb +11 -0
  84. data/app/controllers/spree/admin/orders/customer_details_controller.rb +40 -0
  85. data/app/controllers/spree/admin/orders_controller.rb +133 -0
  86. data/app/controllers/spree/admin/overview_controller.rb +13 -0
  87. data/app/controllers/spree/admin/payment_methods_controller.rb +65 -0
  88. data/app/controllers/spree/admin/payments_controller.rb +111 -0
  89. data/app/controllers/spree/admin/product_properties_controller.rb +18 -0
  90. data/app/controllers/spree/admin/products_controller.rb +115 -0
  91. data/app/controllers/spree/admin/promotion_actions_controller.rb +45 -0
  92. data/app/controllers/spree/admin/promotion_rules_controller.rb +50 -0
  93. data/app/controllers/spree/admin/promotions_controller.rb +23 -0
  94. data/app/controllers/spree/admin/properties_controller.rb +12 -0
  95. data/app/controllers/spree/admin/prototypes_controller.rb +27 -0
  96. data/app/controllers/spree/admin/reports_controller.rb +55 -0
  97. data/app/controllers/spree/admin/resource_controller.rb +261 -0
  98. data/app/controllers/spree/admin/return_authorizations_controller.rb +21 -0
  99. data/app/controllers/spree/admin/search_controller.rb +27 -0
  100. data/app/controllers/spree/admin/shipping_categories_controller.rb +6 -0
  101. data/app/controllers/spree/admin/shipping_methods_controller.rb +45 -0
  102. data/app/controllers/spree/admin/states_controller.rb +29 -0
  103. data/app/controllers/spree/admin/stock_items_controller.rb +24 -0
  104. data/app/controllers/spree/admin/stock_locations_controller.rb +7 -0
  105. data/app/controllers/spree/admin/stock_movements_controller.rb +60 -0
  106. data/app/controllers/spree/admin/stock_transfers_controller.rb +53 -0
  107. data/app/controllers/spree/admin/tax_categories_controller.rb +19 -0
  108. data/app/controllers/spree/admin/tax_rates_controller.rb +26 -0
  109. data/app/controllers/spree/admin/tax_settings_controller.rb +17 -0
  110. data/app/controllers/spree/admin/taxonomies_controller.rb +21 -0
  111. data/app/controllers/spree/admin/taxons_controller.rb +112 -0
  112. data/app/controllers/spree/admin/trackers_controller.rb +6 -0
  113. data/app/controllers/spree/admin/variants_controller.rb +44 -0
  114. data/app/controllers/spree/admin/zones_controller.rb +26 -0
  115. data/app/helpers/spree/admin/base_helper.rb +168 -0
  116. data/app/helpers/spree/admin/general_settings_helper.rb +13 -0
  117. data/app/helpers/spree/admin/inventory_settings_helper.rb +9 -0
  118. data/app/helpers/spree/admin/navigation_helper.rb +154 -0
  119. data/app/helpers/spree/admin/orders_helper.rb +19 -0
  120. data/app/helpers/spree/admin/payments_helper.rb +11 -0
  121. data/app/helpers/spree/admin/products_helper.rb +27 -0
  122. data/app/helpers/spree/admin/stock_movements_helper.rb +13 -0
  123. data/app/helpers/spree/admin/tables_helper.rb +15 -0
  124. data/app/helpers/spree/admin/taxons_helper.rb +9 -0
  125. data/app/helpers/spree/promotion_rules_helper.rb +13 -0
  126. data/app/models/spree/backend_configuration.rb +5 -0
  127. data/app/views/spree/admin/adjustments/_adjustments_table.html.erb +36 -0
  128. data/app/views/spree/admin/adjustments/_form.html.erb +16 -0
  129. data/app/views/spree/admin/adjustments/edit.html.erb +22 -0
  130. data/app/views/spree/admin/adjustments/index.html.erb +14 -0
  131. data/app/views/spree/admin/adjustments/new.html.erb +23 -0
  132. data/app/views/spree/admin/banners/_gateway.html.erb +16 -0
  133. data/app/views/spree/admin/countries/_form.html.erb +22 -0
  134. data/app/views/spree/admin/countries/edit.html.erb +21 -0
  135. data/app/views/spree/admin/countries/index.html.erb +34 -0
  136. data/app/views/spree/admin/general_settings/edit.html.erb +92 -0
  137. data/app/views/spree/admin/image_settings/edit.html.erb +126 -0
  138. data/app/views/spree/admin/images/_form.html.erb +18 -0
  139. data/app/views/spree/admin/images/edit.html.erb +28 -0
  140. data/app/views/spree/admin/images/index.html.erb +58 -0
  141. data/app/views/spree/admin/images/new.html.erb +15 -0
  142. data/app/views/spree/admin/inventory_units/adjust.html.erb +31 -0
  143. data/app/views/spree/admin/line_items/create.js.erb +1 -0
  144. data/app/views/spree/admin/line_items/destroy.js.erb +1 -0
  145. data/app/views/spree/admin/mail_methods/_form.html.erb +80 -0
  146. data/app/views/spree/admin/mail_methods/edit.html.erb +21 -0
  147. data/app/views/spree/admin/option_types/_form.html.erb +17 -0
  148. data/app/views/spree/admin/option_types/_option_value_fields.html.erb +9 -0
  149. data/app/views/spree/admin/option_types/edit.html.erb +50 -0
  150. data/app/views/spree/admin/option_types/index.html.erb +40 -0
  151. data/app/views/spree/admin/option_types/new.html.erb +11 -0
  152. data/app/views/spree/admin/option_types/new.js.erb +2 -0
  153. data/app/views/spree/admin/orders/_add_product.html.erb +15 -0
  154. data/app/views/spree/admin/orders/_form.html.erb +45 -0
  155. data/app/views/spree/admin/orders/_line_item.html.erb +9 -0
  156. data/app/views/spree/admin/orders/_shipment.html.erb +148 -0
  157. data/app/views/spree/admin/orders/customer_details/_form.html.erb +66 -0
  158. data/app/views/spree/admin/orders/customer_details/edit.html.erb +27 -0
  159. data/app/views/spree/admin/orders/edit.html.erb +30 -0
  160. data/app/views/spree/admin/orders/index.html.erb +134 -0
  161. data/app/views/spree/admin/payment_methods/_form.html.erb +57 -0
  162. data/app/views/spree/admin/payment_methods/edit.html.erb +23 -0
  163. data/app/views/spree/admin/payment_methods/index.html.erb +52 -0
  164. data/app/views/spree/admin/payment_methods/new.html.erb +22 -0
  165. data/app/views/spree/admin/payments/_bill_address_form.html.erb +9 -0
  166. data/app/views/spree/admin/payments/_form.html.erb +28 -0
  167. data/app/views/spree/admin/payments/_list.html.erb +26 -0
  168. data/app/views/spree/admin/payments/credit.html.erb +18 -0
  169. data/app/views/spree/admin/payments/index.html.erb +24 -0
  170. data/app/views/spree/admin/payments/new.html.erb +26 -0
  171. data/app/views/spree/admin/payments/show.html.erb +18 -0
  172. data/app/views/spree/admin/payments/source_forms/_check.html.erb +0 -0
  173. data/app/views/spree/admin/payments/source_forms/_gateway.html.erb +50 -0
  174. data/app/views/spree/admin/payments/source_views/_check.html.erb +0 -0
  175. data/app/views/spree/admin/payments/source_views/_gateway.html.erb +29 -0
  176. data/app/views/spree/admin/product_properties/_product_property_fields.html.erb +17 -0
  177. data/app/views/spree/admin/product_properties/index.html.erb +59 -0
  178. data/app/views/spree/admin/products/_add_stock_form.html.erb +6 -0
  179. data/app/views/spree/admin/products/_form.html.erb +128 -0
  180. data/app/views/spree/admin/products/_properties_form.erb +10 -0
  181. data/app/views/spree/admin/products/edit.html.erb +18 -0
  182. data/app/views/spree/admin/products/index.html.erb +102 -0
  183. data/app/views/spree/admin/products/new.html.erb +81 -0
  184. data/app/views/spree/admin/products/new.js.erb +7 -0
  185. data/app/views/spree/admin/products/stock.html.erb +79 -0
  186. data/app/views/spree/admin/promotion_actions/create.js.erb +13 -0
  187. data/app/views/spree/admin/promotion_actions/destroy.js.erb +1 -0
  188. data/app/views/spree/admin/promotion_rules/create.js.erb +7 -0
  189. data/app/views/spree/admin/promotion_rules/destroy.js.erb +3 -0
  190. data/app/views/spree/admin/promotions/_actions.html.erb +32 -0
  191. data/app/views/spree/admin/promotions/_form.html.erb +56 -0
  192. data/app/views/spree/admin/promotions/_promotion_action.html.erb +11 -0
  193. data/app/views/spree/admin/promotions/_promotion_rule.html.erb +9 -0
  194. data/app/views/spree/admin/promotions/_rules.html.erb +45 -0
  195. data/app/views/spree/admin/promotions/_tab.html.erb +1 -0
  196. data/app/views/spree/admin/promotions/actions/_create_adjustment.html.erb +26 -0
  197. data/app/views/spree/admin/promotions/actions/_create_line_items.html.erb +22 -0
  198. data/app/views/spree/admin/promotions/edit.html.erb +28 -0
  199. data/app/views/spree/admin/promotions/index.html.erb +52 -0
  200. data/app/views/spree/admin/promotions/new.html.erb +16 -0
  201. data/app/views/spree/admin/promotions/rules/_first_order.html.erb +0 -0
  202. data/app/views/spree/admin/promotions/rules/_item_total.html.erb +6 -0
  203. data/app/views/spree/admin/promotions/rules/_landing_page.html.erb +5 -0
  204. data/app/views/spree/admin/promotions/rules/_product.html.erb +9 -0
  205. data/app/views/spree/admin/promotions/rules/_user.html.erb +4 -0
  206. data/app/views/spree/admin/promotions/rules/_user_logged_in.html.erb +0 -0
  207. data/app/views/spree/admin/properties/_form.html.erb +16 -0
  208. data/app/views/spree/admin/properties/edit.html.erb +18 -0
  209. data/app/views/spree/admin/properties/filtered.html.erb +1 -0
  210. data/app/views/spree/admin/properties/index.html.erb +41 -0
  211. data/app/views/spree/admin/properties/new.html.erb +13 -0
  212. data/app/views/spree/admin/properties/new.js.erb +2 -0
  213. data/app/views/spree/admin/prototypes/_form.html.erb +25 -0
  214. data/app/views/spree/admin/prototypes/_prototypes.html.erb +25 -0
  215. data/app/views/spree/admin/prototypes/available.js.erb +2 -0
  216. data/app/views/spree/admin/prototypes/edit.html.erb +20 -0
  217. data/app/views/spree/admin/prototypes/index.html.erb +40 -0
  218. data/app/views/spree/admin/prototypes/new.html.erb +11 -0
  219. data/app/views/spree/admin/prototypes/new.js.erb +5 -0
  220. data/app/views/spree/admin/prototypes/select.js.erb +4 -0
  221. data/app/views/spree/admin/prototypes/show.html.erb +42 -0
  222. data/app/views/spree/admin/reports/index.html.erb +21 -0
  223. data/app/views/spree/admin/reports/sales_total.html.erb +37 -0
  224. data/app/views/spree/admin/return_authorizations/_form.html.erb +78 -0
  225. data/app/views/spree/admin/return_authorizations/edit.html.erb +32 -0
  226. data/app/views/spree/admin/return_authorizations/index.html.erb +52 -0
  227. data/app/views/spree/admin/return_authorizations/new.html.erb +22 -0
  228. data/app/views/spree/admin/search/users.rabl +30 -0
  229. data/app/views/spree/admin/shared/_address.html.erb +6 -0
  230. data/app/views/spree/admin/shared/_address_form.html.erb +72 -0
  231. data/app/views/spree/admin/shared/_alert.html.erb +5 -0
  232. data/app/views/spree/admin/shared/_calculator_fields.html.erb +22 -0
  233. data/app/views/spree/admin/shared/_configuration_menu.html.erb +30 -0
  234. data/app/views/spree/admin/shared/_destroy.js.erb +16 -0
  235. data/app/views/spree/admin/shared/_edit_resource_links.html.erb +5 -0
  236. data/app/views/spree/admin/shared/_head.html.erb +25 -0
  237. data/app/views/spree/admin/shared/_new_resource_links.html.erb +5 -0
  238. data/app/views/spree/admin/shared/_order_details.html.erb +56 -0
  239. data/app/views/spree/admin/shared/_order_tabs.html.erb +75 -0
  240. data/app/views/spree/admin/shared/_product_sub_menu.html.erb +8 -0
  241. data/app/views/spree/admin/shared/_product_tabs.html.erb +30 -0
  242. data/app/views/spree/admin/shared/_report_criteria.html.erb +17 -0
  243. data/app/views/spree/admin/shared/_routes.html.erb +8 -0
  244. data/app/views/spree/admin/shared/_show_resource_links.html.erb +5 -0
  245. data/app/views/spree/admin/shared/_stock_movement_form.html.erb +30 -0
  246. data/app/views/spree/admin/shared/_tabs.html.erb +14 -0
  247. data/app/views/spree/admin/shared/_translations.html.erb +32 -0
  248. data/app/views/spree/admin/shared/_update_order_state.js +7 -0
  249. data/app/views/spree/admin/shipping_categories/_form.html.erb +6 -0
  250. data/app/views/spree/admin/shipping_categories/edit.html.erb +20 -0
  251. data/app/views/spree/admin/shipping_categories/index.html.erb +35 -0
  252. data/app/views/spree/admin/shipping_categories/new.html.erb +20 -0
  253. data/app/views/spree/admin/shipping_methods/_form.html.erb +58 -0
  254. data/app/views/spree/admin/shipping_methods/edit.html.erb +29 -0
  255. data/app/views/spree/admin/shipping_methods/index.html.erb +48 -0
  256. data/app/views/spree/admin/shipping_methods/new.html.erb +29 -0
  257. data/app/views/spree/admin/states/_form.html.erb +14 -0
  258. data/app/views/spree/admin/states/_state_list.html.erb +31 -0
  259. data/app/views/spree/admin/states/edit.html.erb +20 -0
  260. data/app/views/spree/admin/states/index.html.erb +24 -0
  261. data/app/views/spree/admin/states/new.html.erb +15 -0
  262. data/app/views/spree/admin/states/new.js.erb +2 -0
  263. data/app/views/spree/admin/stock_locations/_form.html.erb +87 -0
  264. data/app/views/spree/admin/stock_locations/_transfer_stock_form.html.erb +39 -0
  265. data/app/views/spree/admin/stock_locations/edit.html.erb +17 -0
  266. data/app/views/spree/admin/stock_locations/index.html.erb +49 -0
  267. data/app/views/spree/admin/stock_locations/new.html.erb +16 -0
  268. data/app/views/spree/admin/stock_movements/_form.html.erb +13 -0
  269. data/app/views/spree/admin/stock_movements/edit.html.erb +16 -0
  270. data/app/views/spree/admin/stock_movements/index.html.erb +43 -0
  271. data/app/views/spree/admin/stock_movements/new.html.erb +16 -0
  272. data/app/views/spree/admin/stock_transfers/_stock_movements.html.erb +27 -0
  273. data/app/views/spree/admin/stock_transfers/index.html.erb +94 -0
  274. data/app/views/spree/admin/stock_transfers/new.html.erb +108 -0
  275. data/app/views/spree/admin/stock_transfers/show.html.erb +48 -0
  276. data/app/views/spree/admin/tax_categories/_form.html.erb +24 -0
  277. data/app/views/spree/admin/tax_categories/edit.html.erb +18 -0
  278. data/app/views/spree/admin/tax_categories/index.html.erb +48 -0
  279. data/app/views/spree/admin/tax_categories/new.html.erb +19 -0
  280. data/app/views/spree/admin/tax_categories/show.html.erb +1 -0
  281. data/app/views/spree/admin/tax_rates/_form.html.erb +42 -0
  282. data/app/views/spree/admin/tax_rates/edit.html.erb +21 -0
  283. data/app/views/spree/admin/tax_rates/index.html.erb +59 -0
  284. data/app/views/spree/admin/tax_rates/new.html.erb +25 -0
  285. data/app/views/spree/admin/tax_settings/edit.html.erb +18 -0
  286. data/app/views/spree/admin/taxonomies/_form.html.erb +7 -0
  287. data/app/views/spree/admin/taxonomies/_js_head.html.erb +13 -0
  288. data/app/views/spree/admin/taxonomies/_list.html.erb +26 -0
  289. data/app/views/spree/admin/taxonomies/_taxon.html.erb +12 -0
  290. data/app/views/spree/admin/taxonomies/edit.erb +42 -0
  291. data/app/views/spree/admin/taxonomies/index.html.erb +15 -0
  292. data/app/views/spree/admin/taxonomies/new.html.erb +22 -0
  293. data/app/views/spree/admin/taxons/_form.html.erb +44 -0
  294. data/app/views/spree/admin/taxons/_taxon_table.html.erb +23 -0
  295. data/app/views/spree/admin/taxons/edit.html.erb +23 -0
  296. data/app/views/spree/admin/taxons/search.rabl +5 -0
  297. data/app/views/spree/admin/trackers/_form.html.erb +34 -0
  298. data/app/views/spree/admin/trackers/edit.html.erb +20 -0
  299. data/app/views/spree/admin/trackers/index.html.erb +48 -0
  300. data/app/views/spree/admin/trackers/new.html.erb +20 -0
  301. data/app/views/spree/admin/variants/_autocomplete.js.erb +67 -0
  302. data/app/views/spree/admin/variants/_form.html.erb +37 -0
  303. data/app/views/spree/admin/variants/edit.html.erb +15 -0
  304. data/app/views/spree/admin/variants/index.html.erb +74 -0
  305. data/app/views/spree/admin/variants/new.html.erb +9 -0
  306. data/app/views/spree/admin/variants/new.js.erb +3 -0
  307. data/app/views/spree/admin/zones/_country_member.html.erb +5 -0
  308. data/app/views/spree/admin/zones/_form.html.erb +34 -0
  309. data/app/views/spree/admin/zones/_member_type.html.erb +19 -0
  310. data/app/views/spree/admin/zones/_state_member.html.erb +5 -0
  311. data/app/views/spree/admin/zones/edit.html.erb +23 -0
  312. data/app/views/spree/admin/zones/index.html.erb +53 -0
  313. data/app/views/spree/admin/zones/new.html.erb +21 -0
  314. data/app/views/spree/layouts/admin.html.erb +135 -0
  315. data/app/views/spree/test_mailer/test_email.text.erb +4 -0
  316. data/config/initializers/form_builder.rb +15 -0
  317. data/config/routes.rb +159 -0
  318. data/lib/spree/backend.rb +21 -0
  319. data/lib/spree/backend/action_callbacks.rb +26 -0
  320. data/lib/spree/backend/engine.rb +41 -0
  321. data/lib/spree_backend.rb +1 -0
  322. data/vendor/assets/fonts/fontawesome-webfont.eot +0 -0
  323. data/vendor/assets/fonts/fontawesome-webfont.svg +255 -0
  324. data/vendor/assets/fonts/fontawesome-webfont.ttf +0 -0
  325. data/vendor/assets/fonts/fontawesome-webfont.woff +0 -0
  326. data/vendor/assets/images/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  327. data/vendor/assets/images/jquery-ui/ui-bg_flat_0_eeeeee_40x100.png +0 -0
  328. data/vendor/assets/images/jquery-ui/ui-bg_flat_55_ffffff_40x100.png +0 -0
  329. data/vendor/assets/images/jquery-ui/ui-bg_flat_75_ffffff_40x100.png +0 -0
  330. data/vendor/assets/images/jquery-ui/ui-bg_glass_65_ffffff_1x400.png +0 -0
  331. data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_100_f6f6f6_1x100.png +0 -0
  332. data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_25_0073ea_1x100.png +0 -0
  333. data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_50_dddddd_1x100.png +0 -0
  334. data/vendor/assets/images/jquery-ui/ui-icons_0073ea_256x240.png +0 -0
  335. data/vendor/assets/images/jquery-ui/ui-icons_454545_256x240.png +0 -0
  336. data/vendor/assets/images/jquery-ui/ui-icons_666666_256x240.png +0 -0
  337. data/vendor/assets/images/jquery-ui/ui-icons_ff0084_256x240.png +0 -0
  338. data/vendor/assets/images/jquery-ui/ui-icons_ffffff_256x240.png +0 -0
  339. data/vendor/assets/images/jquery.alerts/images/help.gif +0 -0
  340. data/vendor/assets/images/jquery.alerts/images/important.gif +0 -0
  341. data/vendor/assets/images/jquery.alerts/images/info.gif +0 -0
  342. data/vendor/assets/images/jquery.alerts/images/title.gif +0 -0
  343. data/vendor/assets/javascripts/css_browser_selector_dev.js +156 -0
  344. data/vendor/assets/javascripts/equalize.js +41 -0
  345. data/vendor/assets/javascripts/handlebars.js +1920 -0
  346. data/vendor/assets/javascripts/jquery.adaptivemenu.js +60 -0
  347. data/vendor/assets/javascripts/jquery.alerts/jquery.alerts.js +235 -0
  348. data/vendor/assets/javascripts/jquery.cookie.js +41 -0
  349. data/vendor/assets/javascripts/jquery.delayedobserver.js +35 -0
  350. data/vendor/assets/javascripts/jquery.horizontalNav.js +141 -0
  351. data/vendor/assets/javascripts/jquery.jstree/jquery.jstree.js +4540 -0
  352. data/vendor/assets/javascripts/jquery.jstree/themes/apple/bg.jpg +0 -0
  353. data/vendor/assets/javascripts/jquery.jstree/themes/apple/d.png +0 -0
  354. data/vendor/assets/javascripts/jquery.jstree/themes/apple/dot_for_ie.gif +0 -0
  355. data/vendor/assets/javascripts/jquery.jstree/themes/apple/style.css +61 -0
  356. data/vendor/assets/javascripts/jquery.jstree/themes/apple/throbber.gif +0 -0
  357. data/vendor/assets/javascripts/jquery.powertip.js +796 -0
  358. data/vendor/assets/javascripts/jquery.vAlign.js +11 -0
  359. data/vendor/assets/javascripts/modernizr.js +4 -0
  360. data/vendor/assets/javascripts/responsive-tables.js +42 -0
  361. data/vendor/assets/javascripts/spin.js +319 -0
  362. data/vendor/assets/javascripts/trunk8.js +233 -0
  363. data/vendor/assets/stylesheets/font-awesome-ie7.css +645 -0
  364. data/vendor/assets/stylesheets/font-awesome.css.erb +303 -0
  365. data/vendor/assets/stylesheets/jquery-ui.datepicker.css.erb +357 -0
  366. data/vendor/assets/stylesheets/jquery.alerts/jquery.alerts.css.erb +57 -0
  367. data/vendor/assets/stylesheets/jquery.alerts/jquery.alerts.spree.css +29 -0
  368. data/vendor/assets/stylesheets/jquery.powertip.css +85 -0
  369. data/vendor/assets/stylesheets/responsive-tables.css +21 -0
  370. metadata +509 -0
@@ -0,0 +1,11 @@
1
+ module Spree
2
+ module Admin
3
+ class OptionValuesController < Spree::Admin::BaseController
4
+ def destroy
5
+ option_value = Spree::OptionValue.find(params[:id])
6
+ option_value.destroy
7
+ render :text => nil
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,40 @@
1
+ module Spree
2
+ module Admin
3
+ module Orders
4
+ class CustomerDetailsController < Spree::Admin::BaseController
5
+ before_filter :load_order
6
+
7
+ def show
8
+ edit
9
+ render :action => :edit
10
+ end
11
+
12
+ def edit
13
+ country_id = Address.default.country.id
14
+ @order.build_bill_address(:country_id => country_id) if @order.bill_address.nil?
15
+ @order.build_ship_address(:country_id => country_id) if @order.ship_address.nil?
16
+ end
17
+
18
+ def update
19
+ if @order.update_attributes(params[:order])
20
+ while @order.next; end
21
+
22
+ @order.shipments.map &:refresh_rates
23
+ flash[:success] = Spree.t('customer_details_updated')
24
+ redirect_to admin_order_customer_path(@order)
25
+ else
26
+ render :action => :edit
27
+ end
28
+
29
+ end
30
+
31
+ private
32
+
33
+ def load_order
34
+ @order = Order.find_by_number!(params[:order_id], :include => :adjustments)
35
+ end
36
+
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,133 @@
1
+ module Spree
2
+ module Admin
3
+ class OrdersController < Spree::Admin::BaseController
4
+ require 'spree/core/gateway_error'
5
+ before_filter :initialize_order_events
6
+ before_filter :load_order, :only => [:edit, :update, :fire, :resend, :open_adjustments, :close_adjustments]
7
+
8
+ respond_to :html
9
+
10
+ def index
11
+ params[:q] ||= {}
12
+ params[:q][:completed_at_not_null] ||= '1' if Spree::Config[:show_only_complete_orders_by_default]
13
+ @show_only_completed = params[:q][:completed_at_not_null].present?
14
+ params[:q][:s] ||= @show_only_completed ? 'completed_at desc' : 'created_at desc'
15
+
16
+ # As date params are deleted if @show_only_completed, store
17
+ # the original date so we can restore them into the params
18
+ # after the search
19
+ created_at_gt = params[:q][:created_at_gt]
20
+ created_at_lt = params[:q][:created_at_lt]
21
+
22
+ params[:q].delete(:inventory_units_shipment_id_null) if params[:q][:inventory_units_shipment_id_null] == "0"
23
+
24
+ if !params[:q][:created_at_gt].blank?
25
+ params[:q][:created_at_gt] = Time.zone.parse(params[:q][:created_at_gt]).beginning_of_day rescue ""
26
+ end
27
+
28
+ if !params[:q][:created_at_lt].blank?
29
+ params[:q][:created_at_lt] = Time.zone.parse(params[:q][:created_at_lt]).end_of_day rescue ""
30
+ end
31
+
32
+ if @show_only_completed
33
+ params[:q][:completed_at_gt] = params[:q].delete(:created_at_gt)
34
+ params[:q][:completed_at_lt] = params[:q].delete(:created_at_lt)
35
+ end
36
+
37
+ @search = Order.accessible_by(current_ability, :index).ransack(params[:q])
38
+ @orders = @search.result.includes([:user, :shipments, :payments]).
39
+ page(params[:page]).
40
+ per(params[:per_page] || Spree::Config[:orders_per_page])
41
+
42
+ # Restore dates
43
+ params[:q][:created_at_gt] = created_at_gt
44
+ params[:q][:created_at_lt] = created_at_lt
45
+ end
46
+
47
+ def new
48
+ @order = Order.create
49
+ redirect_to edit_admin_order_url(@order)
50
+ end
51
+
52
+ def edit
53
+ @order.shipments.map &:refresh_rates
54
+ end
55
+
56
+ def update
57
+ return_path = nil
58
+ if @order.update_attributes(params[:order]) && @order.line_items.present?
59
+ @order.update!
60
+ unless @order.complete?
61
+ # Jump to next step if order is not complete.
62
+ return_path = admin_order_customer_path(@order)
63
+ else
64
+ # Otherwise, go back to first page since all necessary information has been filled out.
65
+ return_path = admin_order_path(@order)
66
+ end
67
+ else
68
+ @order.errors.add(:line_items, Spree.t('errors.messages.blank')) if @order.line_items.empty?
69
+ end
70
+
71
+ if return_path
72
+ redirect_to return_path
73
+ else
74
+ render :action => :edit
75
+ end
76
+ end
77
+
78
+ def fire
79
+ # TODO - possible security check here but right now any admin can before any transition (and the state machine
80
+ # itself will make sure transitions are not applied in the wrong state)
81
+ event = params[:e]
82
+ if @order.send("#{event}")
83
+ flash[:success] = Spree.t(:order_updated)
84
+ else
85
+ flash[:error] = Spree.t(:cannot_perform_operation)
86
+ end
87
+ rescue Spree::Core::GatewayError => ge
88
+ flash[:error] = "#{ge.message}"
89
+ ensure
90
+ redirect_to :back
91
+ end
92
+
93
+ def resend
94
+ OrderMailer.confirm_email(@order.id, true).deliver
95
+ flash[:success] = Spree.t(:order_email_resent)
96
+
97
+ redirect_to :back
98
+ end
99
+
100
+ def open_adjustments
101
+ adjustments = @order.adjustments.where(:state => 'closed')
102
+ adjustments.update_all(:state => 'open')
103
+ flash[:success] = Spree.t(:all_adjustments_opened)
104
+
105
+ respond_with(@order) { |format| format.html { redirect_to :back } }
106
+ end
107
+
108
+ def close_adjustments
109
+ adjustments = @order.adjustments.where(:state => 'open')
110
+ adjustments.update_all(:state => 'closed')
111
+ flash[:success] = Spree.t(:all_adjustments_closed)
112
+
113
+ respond_with(@order) { |format| format.html { redirect_to :back } }
114
+ end
115
+
116
+ private
117
+
118
+ def load_order
119
+ @order = Order.find_by_number!(params[:id], :include => :adjustments) if params[:id]
120
+ authorize! action, @order
121
+ end
122
+
123
+ # Used for extensions which need to provide their own custom event links on the order details view.
124
+ def initialize_order_events
125
+ @order_events = %w{cancel resume}
126
+ end
127
+
128
+ def model_class
129
+ Spree::Order
130
+ end
131
+ end
132
+ end
133
+ end
@@ -0,0 +1,13 @@
1
+ # this clas was inspired (heavily) from the mephisto admin architecture
2
+ module Spree
3
+ module Admin
4
+ class OverviewController < Spree::Admin::BaseController
5
+ #todo, add rss feed of information that is happening
6
+
7
+ def index
8
+ @users = User.all
9
+ end
10
+
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,65 @@
1
+ module Spree
2
+ module Admin
3
+ class PaymentMethodsController < ResourceController
4
+ skip_before_filter :load_resource, :only => [:create]
5
+ before_filter :load_data
6
+ before_filter :validate_payment_method_provider, :only => :create
7
+
8
+ respond_to :html
9
+
10
+ def create
11
+ @payment_method = params[:payment_method].delete(:type).constantize.new(params[:payment_method])
12
+ @object = @payment_method
13
+ invoke_callbacks(:create, :before)
14
+ if @payment_method.save
15
+ invoke_callbacks(:create, :after)
16
+ flash[:success] = Spree.t(:successfully_created, :resource => Spree.t(:payment_method))
17
+ redirect_to edit_admin_payment_method_path(@payment_method)
18
+ else
19
+ invoke_callbacks(:create, :fails)
20
+ respond_with(@payment_method)
21
+ end
22
+ end
23
+
24
+ def update
25
+ invoke_callbacks(:update, :before)
26
+ payment_method_type = params[:payment_method].delete(:type)
27
+ if @payment_method['type'].to_s != payment_method_type
28
+ @payment_method.update_column(:type, payment_method_type)
29
+ @payment_method = PaymentMethod.find(params[:id])
30
+ end
31
+
32
+ payment_method_params = params[ActiveModel::Naming.param_key(@payment_method)] || {}
33
+ attributes = params[:payment_method].merge(payment_method_params)
34
+ attributes.each do |k,v|
35
+ if k.include?("password") && attributes[k].blank?
36
+ attributes.delete(k)
37
+ end
38
+ end
39
+
40
+ if @payment_method.update_attributes(attributes)
41
+ invoke_callbacks(:update, :after)
42
+ flash[:success] = Spree.t(:successfully_updated, :resource => Spree.t(:payment_method))
43
+ redirect_to edit_admin_payment_method_path(@payment_method)
44
+ else
45
+ invoke_callbacks(:update, :fails)
46
+ respond_with(@payment_method)
47
+ end
48
+ end
49
+
50
+ private
51
+
52
+ def load_data
53
+ @providers = Gateway.providers.sort{|p1, p2| p1.name <=> p2.name }
54
+ end
55
+
56
+ def validate_payment_method_provider
57
+ valid_payment_methods = Rails.application.config.spree.payment_methods.map(&:to_s)
58
+ if !valid_payment_methods.include?(params[:payment_method][:type])
59
+ flash[:error] = Spree.t(:invalid_payment_provider)
60
+ redirect_to new_admin_payment_method_path
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,111 @@
1
+ module Spree
2
+ module Admin
3
+ class PaymentsController < Spree::Admin::BaseController
4
+ before_filter :load_order, :only => [:create, :new, :index, :fire]
5
+ before_filter :load_payment, :except => [:create, :new, :index]
6
+ before_filter :load_data
7
+ before_filter :can_transition_to_payment
8
+
9
+ respond_to :html
10
+
11
+ def index
12
+ @payments = @order.payments
13
+ redirect_to new_admin_order_payment_url(@order) if @payments.empty?
14
+ end
15
+
16
+ def new
17
+ @payment = @order.payments.build
18
+ end
19
+
20
+ def create
21
+ @payment = @order.payments.build(object_params)
22
+ if @payment.payment_method.is_a?(Spree::Gateway) && @payment.payment_method.payment_profiles_supported? && params[:card].present? and params[:card] != 'new'
23
+ @payment.source = CreditCard.find_by_id(params[:card])
24
+ end
25
+
26
+ begin
27
+ unless @payment.save
28
+ redirect_to admin_order_payments_path(@order)
29
+ return
30
+ end
31
+
32
+ if @order.completed?
33
+ @payment.process!
34
+ flash[:success] = flash_message_for(@payment, :successfully_created)
35
+
36
+ redirect_to admin_order_payments_path(@order)
37
+ else
38
+ #This is the first payment (admin created order)
39
+ until @order.completed?
40
+ @order.next!
41
+ end
42
+ flash[:success] = Spree.t(:new_order_completed)
43
+ redirect_to edit_admin_order_url(@order)
44
+ end
45
+
46
+ rescue Spree::Core::GatewayError => e
47
+ flash[:error] = "#{e.message}"
48
+ redirect_to new_admin_order_payment_path(@order)
49
+ end
50
+ end
51
+
52
+ def fire
53
+ return unless event = params[:e] and @payment.payment_source
54
+
55
+ # Because we have a transition method also called void, we do this to avoid conflicts.
56
+ event = "void_transaction" if event == "void"
57
+ if @payment.send("#{event}!")
58
+ flash[:success] = Spree.t(:payment_updated)
59
+ else
60
+ flash[:error] = Spree.t(:cannot_perform_operation)
61
+ end
62
+ rescue Spree::Core::GatewayError => ge
63
+ flash[:error] = "#{ge.message}"
64
+ ensure
65
+ redirect_to admin_order_payments_path(@order)
66
+ end
67
+
68
+ private
69
+
70
+ def object_params
71
+ if params[:payment] and params[:payment_source] and source_params = params.delete(:payment_source)[params[:payment][:payment_method_id]]
72
+ params[:payment][:source_attributes] = source_params
73
+ end
74
+ params[:payment]
75
+ end
76
+
77
+ def load_data
78
+ @amount = params[:amount] || load_order.total
79
+ @payment_methods = PaymentMethod.available
80
+ if @payment and @payment.payment_method
81
+ @payment_method = @payment.payment_method
82
+ else
83
+ @payment_method = @payment_methods.first
84
+ end
85
+ @previous_cards = @order.credit_cards.with_payment_profile
86
+ end
87
+
88
+ # At this point admin should have passed through Customer Details step
89
+ # where order.next is called which leaves the order in payment step
90
+ #
91
+ # Orders in complete step also allows to access this controller
92
+ #
93
+ # Otherwise redirect user to that step
94
+ def can_transition_to_payment
95
+ unless @order.payment? || @order.complete?
96
+ flash[:notice] = Spree.t(:fill_in_customer_info)
97
+ redirect_to edit_admin_order_customer_url(@order)
98
+ end
99
+ end
100
+
101
+ def load_order
102
+ @order = Order.find_by_number!(params[:order_id])
103
+ authorize! action, @order
104
+ end
105
+
106
+ def load_payment
107
+ @payment = Payment.find(params[:id])
108
+ end
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,18 @@
1
+ module Spree
2
+ module Admin
3
+ class ProductPropertiesController < ResourceController
4
+ belongs_to 'spree/product', :find_by => :permalink
5
+ before_filter :find_properties
6
+ before_filter :setup_property, :only => [:index]
7
+
8
+ private
9
+ def find_properties
10
+ @properties = Spree::Property.pluck(:name)
11
+ end
12
+
13
+ def setup_property
14
+ @product.product_properties.build
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,115 @@
1
+ module Spree
2
+ module Admin
3
+ class ProductsController < ResourceController
4
+ helper 'spree/products'
5
+
6
+ before_filter :load_data, :except => :index
7
+ create.before :create_before
8
+ update.before :update_before
9
+
10
+ def show
11
+ session[:return_to] ||= request.referer
12
+ redirect_to( :action => :edit )
13
+ end
14
+
15
+ def index
16
+ session[:return_to] = request.url
17
+ respond_with(@collection)
18
+ end
19
+
20
+ def update
21
+ if params[:product][:taxon_ids].present?
22
+ params[:product][:taxon_ids] = params[:product][:taxon_ids].split(',')
23
+ end
24
+ if params[:product][:option_type_ids].present?
25
+ params[:product][:option_type_ids] = params[:product][:option_type_ids].split(',')
26
+ end
27
+ super
28
+ end
29
+
30
+ def destroy
31
+ @product = Product.find_by_permalink!(params[:id])
32
+ @product.delete
33
+
34
+ flash[:success] = Spree.t('notice_messages.product_deleted')
35
+
36
+ respond_with(@product) do |format|
37
+ format.html { redirect_to collection_url }
38
+ format.js { render_js_for_destroy }
39
+ end
40
+ end
41
+
42
+ def clone
43
+ @new = @product.duplicate
44
+
45
+ if @new.save
46
+ flash[:success] = Spree.t('notice_messages.product_cloned')
47
+ else
48
+ flash[:success] = Spree.t('notice_messages.product_not_cloned')
49
+ end
50
+
51
+ redirect_to edit_admin_product_url(@new)
52
+ end
53
+
54
+ def stock
55
+ @variants = @product.variants
56
+ @variants = [@product.master] if @variants.empty?
57
+ @stock_locations = StockLocation.accessible_by(current_ability, :read)
58
+ end
59
+
60
+ protected
61
+
62
+ def find_resource
63
+ Product.find_by_permalink!(params[:id])
64
+ end
65
+
66
+ def location_after_save
67
+ spree.edit_admin_product_url(@product)
68
+ end
69
+
70
+ def load_data
71
+ @taxons = Taxon.order(:name)
72
+ @option_types = OptionType.order(:name)
73
+ @tax_categories = TaxCategory.order(:name)
74
+ @shipping_categories = ShippingCategory.order(:name)
75
+ end
76
+
77
+ def collection
78
+ return @collection if @collection.present?
79
+ params[:q] ||= {}
80
+ params[:q][:deleted_at_null] ||= "1"
81
+
82
+ params[:q][:s] ||= "name asc"
83
+
84
+ @search = super.ransack(params[:q])
85
+ @collection = @search.result.
86
+ group_by_products_id.
87
+ includes(product_includes).
88
+ page(params[:page]).
89
+ per(Spree::Config[:admin_products_per_page])
90
+
91
+ if params[:q][:s].include?("master_default_price_amount")
92
+ # PostgreSQL compatibility
93
+ @collection = @collection.group("spree_prices.amount")
94
+ end
95
+ @collection
96
+ end
97
+
98
+ def create_before
99
+ return if params[:product][:prototype_id].blank?
100
+ @prototype = Spree::Prototype.find(params[:product][:prototype_id])
101
+ end
102
+
103
+ def update_before
104
+ # note: we only reset the product properties if we're receiving a post from the form on that tab
105
+ return unless params[:clear_product_properties]
106
+ params[:product] ||= {}
107
+ end
108
+
109
+ def product_includes
110
+ [{:variants => [:images, {:option_values => :option_type}]}, {:master => [:images, :default_price]}]
111
+ end
112
+
113
+ end
114
+ end
115
+ end