spree_suppliers 0.1.0 → 0.60.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (147) hide show
  1. data/README +46 -0
  2. data/Rakefile +137 -0
  3. data/app/controllers/admin/pickup_locations_controller.rb +52 -0
  4. data/app/controllers/admin/pickups_controller.rb +84 -0
  5. data/app/controllers/admin/shipping_options_controller.rb +32 -0
  6. data/app/controllers/admin/supplier_taxons_controller.rb +65 -0
  7. data/app/controllers/admin/suppliers_controller.rb +203 -0
  8. data/app/controllers/admin/vendor_overview_controller.rb +18 -0
  9. data/app/controllers/dash/base_controller.rb +10 -0
  10. data/app/controllers/dash/overview_controller.rb +6 -0
  11. data/app/controllers/dash/pickup_locations_controller.rb +27 -0
  12. data/app/controllers/dash/pickups_controller.rb +40 -0
  13. data/app/controllers/dash/products_controller.rb +15 -0
  14. data/app/controllers/messages_controller.rb +17 -0
  15. data/app/controllers/suppliers_controller.rb +19 -0
  16. data/app/controllers/user_sessions_decorator.rb +39 -0
  17. data/app/helpers/admin/suppliers_helper.rb +21 -0
  18. data/app/helpers/cities_helper.rb +2 -0
  19. data/app/helpers/dragonfly_helper.rb +16 -0
  20. data/app/helpers/messages_helper.rb +2 -0
  21. data/app/helpers/suppliers_helper.rb +16 -0
  22. data/app/mailers/supplier_mailer.rb +11 -0
  23. data/app/models/ability_decorator.rb +19 -0
  24. data/app/models/delivery.rb +6 -0
  25. data/app/models/hour.rb +4 -0
  26. data/app/models/item.rb +5 -0
  27. data/app/models/message.rb +3 -0
  28. data/app/models/pickup.rb +10 -0
  29. data/app/models/pickup_date.rb +3 -0
  30. data/app/models/pickup_location.rb +7 -0
  31. data/app/models/supplier.rb +33 -0
  32. data/app/models/supplier_invoice.rb +5 -0
  33. data/app/views/admin/orders/index.html.erb +107 -0
  34. data/app/views/admin/orders/show.html.erb +35 -0
  35. data/app/views/admin/orders/user.html.erb +19 -0
  36. data/app/views/admin/pickup_locations/_pickup_location.html.erb +10 -0
  37. data/app/views/admin/pickup_locations/edit.html.erb +44 -0
  38. data/app/views/admin/pickup_locations/new.html.erb +48 -0
  39. data/app/views/admin/pickup_locations/show.html.erb +1 -0
  40. data/app/views/admin/pickups/_pickup.erb +0 -0
  41. data/app/views/admin/pickups/index.html.erb +44 -0
  42. data/app/views/admin/pickups/new.html.erb +33 -0
  43. data/app/views/admin/pickups/show.html.erb +42 -0
  44. data/app/views/admin/products/_suppliers_form.html.erb +5 -0
  45. data/app/views/admin/shared/_order_tabs_decide.html.erb +5 -0
  46. data/app/views/admin/shared/_vendor_order_tabs.html.erb +39 -0
  47. data/app/views/admin/shipping_options/edit.html.erb +38 -0
  48. data/app/views/admin/supplier_taxons/_form.html.erb +23 -0
  49. data/app/views/admin/supplier_taxons/_taxon_table.html.erb +23 -0
  50. data/app/views/admin/supplier_taxons/available.js.erb +33 -0
  51. data/app/views/admin/supplier_taxons/edit.html.erb +11 -0
  52. data/app/views/admin/supplier_taxons/remove.html.erb +1 -0
  53. data/app/views/admin/supplier_taxons/select.js.erb +2 -0
  54. data/app/views/admin/supplier_taxons/selected.html.erb +51 -0
  55. data/app/views/admin/suppliers/_edit_form.html.erb +75 -0
  56. data/app/views/admin/suppliers/_edit_hours_form.html.erb +18 -0
  57. data/app/views/admin/suppliers/_form.html.erb +72 -0
  58. data/app/views/admin/suppliers/_hours_form.html.erb +11 -0
  59. data/app/views/admin/suppliers/_image_form.html.erb +40 -0
  60. data/app/views/admin/suppliers/_supplier.html.erb +37 -0
  61. data/app/views/admin/suppliers/_supplier_tabs.html.erb +18 -0
  62. data/app/views/admin/suppliers/_suppliers_table.html.erb +25 -0
  63. data/app/views/admin/suppliers/_upload_image.html.erb +14 -0
  64. data/app/views/admin/suppliers/available.js.erb +34 -0
  65. data/app/views/admin/suppliers/edit.html.erb +20 -0
  66. data/app/views/admin/suppliers/index.html.erb +102 -0
  67. data/app/views/admin/suppliers/line_items.html.erb +20 -0
  68. data/app/views/admin/suppliers/new.html.erb +22 -0
  69. data/app/views/admin/suppliers/remove.html.erb +1 -0
  70. data/app/views/admin/suppliers/select.html.erb +1 -0
  71. data/app/views/admin/suppliers/selected.html.erb +40 -0
  72. data/app/views/admin/suppliers/show.html.erb +2 -0
  73. data/app/views/admin/users/_form.html.erb +40 -0
  74. data/app/views/admin/vendor_overview/index.html.erb +1 -0
  75. data/app/views/checkout/_delivery.html.erb +5 -0
  76. data/app/views/dash/overview/index.html.erb +58 -0
  77. data/app/views/dash/pickup_locations/_pickup_location.html.erb +3 -0
  78. data/app/views/dash/pickup_locations/new.html.erb +47 -0
  79. data/app/views/dash/pickups/_pickup.erb +3 -0
  80. data/app/views/dash/pickups/new.html.erb +24 -0
  81. data/app/views/dash/products/new.html.erb +38 -0
  82. data/app/views/layouts/admin.html.erb +81 -0
  83. data/app/views/messages/_message_form.html.erb +17 -0
  84. data/app/views/messages/create.html.erb +2 -0
  85. data/app/views/messages/destroy.html.erb +2 -0
  86. data/app/views/messages/new.html.erb +2 -0
  87. data/app/views/shared/_deliveries.html.erb +113 -0
  88. data/app/views/shared/_hours.html.erb +21 -0
  89. data/app/views/shared/_products_vendor.html.erb +49 -0
  90. data/app/views/shared/_supplier_invoices.html.erb +67 -0
  91. data/app/views/supplier_mailer/invoice_email.html.erb +72 -0
  92. data/app/views/suppliers/_supplier.html.erb +7 -0
  93. data/app/views/suppliers/_supplier_list.erb +20 -0
  94. data/app/views/suppliers/index.html.erb +17 -0
  95. data/app/views/suppliers/show.html.erb +106 -0
  96. data/app/views/suppliers/supplier_list.erb +14 -0
  97. data/config/initializers/dragonfly.rb +8 -0
  98. data/config/initializers/supplier_invoice_mailer.rb +10 -0
  99. data/config/locales/en-US.yml +13 -0
  100. data/config/routes.rb +48 -0
  101. data/db/migrate/20091209201716_supplier_setup.rb +36 -0
  102. data/db/migrate/20110922213437_create_messages.rb +18 -0
  103. data/db/migrate/20110928203155_create_hours.rb +21 -0
  104. data/db/migrate/20111006185052_create_pickups.rb +17 -0
  105. data/db/migrate/20111010191125_add_location_to_addresses.rb +9 -0
  106. data/db/migrate/20111010214313_create_pickup_dates.rb +14 -0
  107. data/db/migrate/20111011180211_add_supplier_id_to_user.rb +9 -0
  108. data/db/migrate/20111012211422_create_pickup_locations.rb +21 -0
  109. data/db/migrate/20111013155257_create_supplier_invoices.rb +16 -0
  110. data/db/migrate/20111013161225_create_items.rb +18 -0
  111. data/db/migrate/20111018133543_add_attributes_to_products.rb +17 -0
  112. data/db/migrate/20111028190454_add_attributes_to_assets.rb +11 -0
  113. data/db/migrate/20111029230805_create_suppliers_taxons.rb +16 -0
  114. data/db/migrate/20111101165933_create_deliveries.rb +17 -0
  115. data/db/migrate/20111108213108_create_shipping_methods_suppliers.rb +16 -0
  116. data/db/seeds.rb +14 -0
  117. data/lib/spree_suppliers.rb +411 -0
  118. data/lib/spree_suppliers_hooks.rb +40 -0
  119. data/lib/tasks/spree_suppliers.rake +27 -0
  120. data/public/javascripts/jquery-ui.js +312 -0
  121. data/public/javascripts/jquery-ui.multidatespicker.js +398 -0
  122. data/public/javascripts/jquery.ui.datepicker.js +1791 -0
  123. data/public/stylesheets/suppliers.css +676 -0
  124. data/spec/controllers/cities_controller_spec.rb +157 -0
  125. data/spec/controllers/shipping_options_controller_spec.rb +12 -0
  126. data/spec/helpers/cities_helper_spec.rb +15 -0
  127. data/spec/models/city_spec.rb +5 -0
  128. data/spec/models/comment_spec.rb +64 -0
  129. data/spec/models/item_spec.rb +5 -0
  130. data/spec/models/message_spec.rb +5 -0
  131. data/spec/models/pickup_date_spec.rb +5 -0
  132. data/spec/models/pickup_location_spec.rb +5 -0
  133. data/spec/models/pickup_spec.rb +5 -0
  134. data/spec/models/rating_spec.rb +24 -0
  135. data/spec/models/supplier_invoice_spec.rb +5 -0
  136. data/spec/models/supplier_spec.rb +11 -0
  137. data/spec/requests/cities_spec.rb +11 -0
  138. data/spec/routing/cities_routing_spec.rb +35 -0
  139. data/spec/spec.opts +6 -0
  140. data/spec/spec_helper.rb +37 -0
  141. data/spec/views/cities/edit.html.erb_spec.rb +22 -0
  142. data/spec/views/cities/index.html.erb_spec.rb +28 -0
  143. data/spec/views/cities/new.html.erb_spec.rb +22 -0
  144. data/spec/views/cities/show.html.erb_spec.rb +21 -0
  145. data/spec/views/shipping_options/edit.html.erb_spec.rb +5 -0
  146. data/spree_suppliers.gemspec +24 -0
  147. metadata +181 -14
@@ -0,0 +1,33 @@
1
+ <h1>Products Pickup Settings</h1>
2
+ <h1>Pickups</h1>
3
+
4
+ <div class="locations">
5
+ <% if @pickups.empty? %>
6
+ <p>No Pickup Locations Specified</p>
7
+ <% else %>
8
+ <ul>
9
+ <%= render @pickups %>
10
+ </ul>
11
+ <% end %>
12
+ </div>
13
+
14
+ <div>
15
+ <% form_tag({:controller => "pickups", :action => "create"}, :method => :post) do %>
16
+ <% if current_user.has_role?("vendor") %>
17
+ <%= hidden_field_tag :supplier_id, current_user.supplier.id %>
18
+ <% else %>
19
+ <%= select_tag :supplier_id, options_from_collection_for_select(@suppliers, "id", "title") %>
20
+ <% end %>
21
+ <%= select_tag :pickup_location_id, options_from_collection_for_select(@locations, "id", "location_name") %>
22
+ Dates: <%= text_field :dates, nil, :id => :dates %> (click in the field to add)
23
+ <br />
24
+ <%= submit_tag "Save" %>
25
+ <br />
26
+ <% end %>
27
+ </div>
28
+
29
+ <%= link_to "Create new location", new_admin_pickup_location_path %>
30
+
31
+ <script type="text/javascript">
32
+ $("#dates").multiDatesPicker();
33
+ </script>
@@ -0,0 +1,42 @@
1
+ <h1>
2
+ <%= @supplier.title %>'s <%= t("pickups") %>
3
+ </h1>
4
+
5
+ <table class="admin-report" width="545">
6
+ <thead>
7
+ <tr>
8
+ <th width="300px">
9
+ <%= @supplier.title %>
10
+ </th>
11
+ <th width="600px">
12
+ <%= t("pickup_address") %>
13
+ </th>
14
+ <th width="300px">
15
+ <%= t("edit") %>
16
+ </th>
17
+ <th>
18
+ <%= t("delete") %>
19
+ </th>
20
+ </tr>
21
+ </thead>
22
+ <tbody>
23
+ <% @supplier.pickups.each do |pickup| %>
24
+ <tr class="<%= cycle('even', 'odd') %>">
25
+ <td>
26
+ <%= link_to pickup.pickup_location.location_name, admin_pickup_location_path(pickup) %>
27
+ </td>
28
+ <td>
29
+ <%= pickup.pickup_location.address1 %>, <%= pickup.pickup_location.city %>, <%= State.find_by_id(pickup.pickup_location.state_id) %>
30
+ </td>
31
+ <td>
32
+ <%= link_to "edit", edit_admin_pickup_location_path(pickup.pickup_location) %>
33
+ </td>
34
+ <td>
35
+ <%= button_to "delete", admin_pickup_path(pickup), :method => :delete %>
36
+ </td>
37
+ </tr>
38
+ <% end %>
39
+ </tbody>
40
+ </table>
41
+
42
+ <%= link_to t("new_pickup"), new_admin_pickup_path %>
@@ -0,0 +1,5 @@
1
+ <p>
2
+ <%= f.label :supplier_id, t("suppliers")%><br />
3
+ <%= f.collection_select(:supplier_id, @suppliers, :id, :title, {:include_blank => true}, {"style" => "width:200px"}) %>
4
+ <%= f.error_message_on :supplier%>
5
+ </p>
@@ -0,0 +1,5 @@
1
+ <% if current_user.has_role?("vendor") %>
2
+ <%= render :partial => 'admin/shared/vendor_order_tabs', :locals => {:current => current}%>
3
+ <% else %>
4
+ <%= render :partial => 'admin/shared/order_tabs', :locals => {:current => current} %>
5
+ <% end %>
@@ -0,0 +1,39 @@
1
+ <h1><%= t(:order) + " #{@order.number}" %></h1>
2
+
3
+ <% content_for :sidebar do %>
4
+ <div id="order_tab_summary">
5
+ <h3 id="order_number"><%= "#{t(:order)} ##{@order.number} " %></h3>
6
+ <h5 id="order_status"><%= "#{t(:status)}: #{t("order_state.#{@order.state}")}" %></h5>
7
+ <h5 id="order_total"><%= "#{t(:total)}: #{number_to_currency(@order.total)}" %></h5>
8
+ <% if @order.completed? %>
9
+ <h5 id="shipment_status"><%= "#{t(:shipment)}: #{t("shipment_states.#{@order.shipment_state}")}" %></h5>
10
+ <h5 id="payment_status"><%= "#{t(:payment)}: #{t("payment_states.#{@order.payment_state}")}" %></h5>
11
+ <% end %>
12
+ <br class="clear" />
13
+ </div>
14
+ <br class="clear" />
15
+
16
+ <ul class="sidebar">
17
+ <%= hook :admin_order_tabs, {:current => current} do %>
18
+ <% unless @order.completed? %>
19
+ <li<%== ' class="active"' if current == "Order Details" %>>
20
+ <%= link_to t("order_details"), edit_admin_order_url(@order) %>
21
+ </li>
22
+ <li<%== ' class="active"' if current == "Customer Details" %>>
23
+ <%= link_to t("customer_details"), user_admin_order_url(@order) %>
24
+ </li>
25
+ <% else %>
26
+ <li<%== ' class="active"' if current == "Order Details" %>>
27
+ <%= link_to t("order_details"), admin_order_url(@order) %>
28
+ </li>
29
+ <li<%== ' class="active"' if current == "Customer Details" %>>
30
+ <%= link_to t("customer_details"), user_admin_order_url(@order) %>
31
+ </li>
32
+ <% end %>
33
+
34
+
35
+
36
+ <% end %>
37
+ </ul>
38
+
39
+ <% end %>
@@ -0,0 +1,38 @@
1
+ <h1>Shipping Options</h1>
2
+
3
+ <%= render :partial => 'admin/suppliers/supplier_tabs', :locals => {:current => "Shipping"} %>
4
+
5
+
6
+ <table class="index">
7
+ <thead>
8
+ <tr>
9
+ <th><%= t("name") %></th>
10
+ <th><%= t("zone") %></th>
11
+ <th><%= t("action") %></th>
12
+ </tr>
13
+ </thead>
14
+ <tbody>
15
+ <% @supplier.shipping_methods.each do |s| %>
16
+ <tr>
17
+ <td><%= s.name %></td>
18
+ <td><%= s.zone.name %></td>
19
+ <% form_tag(:controller => 'shipping_options', :method=>'post', :multipart => true) do %>
20
+ <%= hidden_field_tag("supplier_id", @supplier.id) %>
21
+ <%= hidden_field_tag("remove[#{"id"}]", s.id) %>
22
+ <td><%= submit_tag "Remove" %></td>
23
+ <% end %>
24
+ </tr>
25
+ <% end %>
26
+ </tbody>
27
+ </table>
28
+
29
+
30
+ <% form_tag(:controller => 'shipping_options', :method=>'post', :multipart => true) do %>
31
+
32
+ <%= select_tag "shipping_options", options_from_collection_for_select(@shipping_methods, "id", "name") %>
33
+ <%= hidden_field_tag("supplier_id", @supplier.id) %>
34
+ <%= submit_tag "add" %>
35
+ <p />
36
+ <%= link_to 'Create new shipping method', new_admin_shipping_method_path %>
37
+
38
+ <% end %>
@@ -0,0 +1,23 @@
1
+ <%= hook :admin_inside_taxon_form, {:f => f} do %>
2
+ <%= f.field_container :name do %>
3
+ <%= f.label :name, t("name") %> <span class="required">*</span><br />
4
+ <%= error_message_on :taxon, :name, :class => 'fullwidth title' %>
5
+ <%= text_field :taxon, :name %>
6
+ <% end %>
7
+
8
+ <%= f.field_container :permalink_part do %>
9
+ <%= f.label :permalink_part, t("permalink") %><span class="required">*</span><br />
10
+ <%= @taxon.permalink.split("/")[0...-1].join("/") + "/" %><%= text_field_tag :permalink_part, @permalink_part %>
11
+ <% end %>
12
+
13
+ <%= f.field_container :icon do %>
14
+ <%= f.label :icon, t('icon') %><br />
15
+ <%= f.file_field :icon %>
16
+ <% end %>
17
+
18
+ <%= f.field_container :description do %>
19
+ <%= f.label :description, t(:description) %><br />
20
+ <%= f.text_area :description %>
21
+ <% end %>
22
+
23
+ <% end %>
@@ -0,0 +1,23 @@
1
+ <table class="index">
2
+ <thead>
3
+ <tr>
4
+ <th><%= t("name") %></th>
5
+ <th><%= t("path") %></th>
6
+ <th></th>
7
+ </tr>
8
+ </thead>
9
+ <tbody>
10
+ <% taxons.each do |taxon| %>
11
+ <tr id="<%= dom_id(taxon)%>">
12
+ <td><%= taxon.name %></td>
13
+ <td><%= taxon_path taxon %></td>
14
+ <td lass="actions">
15
+ <%= link_to_delete taxon, :url => remove_admin_supplier_taxon_url(@supplier, taxon), :name => icon("delete") + ' ' + t("remove") %>
16
+ </td>
17
+ </tr>
18
+ <% end %>
19
+ <% if taxons.empty? %>
20
+ <tr><td colspan="3"><%= t('none') %>.</td></tr>
21
+ <% end %>
22
+ </tbody>
23
+ </table>
@@ -0,0 +1,33 @@
1
+ <script type="text/javascript">
2
+ function displayRow(){
3
+ var row = document.getElementById("captionRow");
4
+ if (row.style.display == '') row.style.display = 'none';
5
+ else row.style.display = '';
6
+ }
7
+ </script>
8
+ <h4><%= t('available_taxons') %></h4>
9
+ <table class="index">
10
+ <thead>
11
+ <tr>
12
+ <th><%= t("name") %></th>
13
+ <th><%= t("path") %></th>
14
+ <th><%= t("action") %></th>
15
+ </tr>
16
+ </thead>
17
+ <tbody>
18
+ <% @taxons.each do |taxon| %>
19
+ <tr id="<%= dom_id(taxon, :sel) %>">
20
+ <td><%= taxon.name %></td>
21
+ <td><%= taxon_path taxon %></td>
22
+ <td class="actions">
23
+ <%= link_to icon('add') + ' ' + t("select"),
24
+ select_admin_supplier_taxon_path(@supplier, taxon),
25
+ :remote => true, :class => 'iconlink' %>
26
+ </td>
27
+ </tr>
28
+ <% end %>
29
+ <% if @taxons.empty? %>
30
+ <tr><td colspan="3"><%= t('no_match_found') %>.</td></tr>
31
+ <% end %>
32
+ </tbody>
33
+ </table>
@@ -0,0 +1,11 @@
1
+ <%= render :partial => 'admin/shared/configuration_menu' %>
2
+
3
+ <h1><%= t("taxon_edit")%></h1>
4
+
5
+ <%= form_for(:taxon, :url => admin_taxonomy_taxon_url(@taxonomy, @taxon), :html => { :method => :put, :multipart => true}) do |f| %>
6
+ <%= render :partial => 'form', :locals => {:f => f} %>
7
+
8
+ <p class="form-buttons">
9
+ <%= button t("update") %> <%= t("or") %> <%= link_to t("cancel"), edit_admin_taxonomy_url(@taxonomy) %>
10
+ </p>
11
+ <% end %>
@@ -0,0 +1 @@
1
+ <%= render :partial => "taxon_table", :locals => {:taxons => @taxons} %>
@@ -0,0 +1,2 @@
1
+ $("#selected-taxons").html("<%= escape_javascript(render(:partial => "taxon_table", :locals => {:taxons => @taxons})) %>");
2
+ $("#<%= dom_id @taxon, :sel %>").hide();
@@ -0,0 +1,51 @@
1
+ <h1>Editing Vendor</h1>
2
+
3
+ <%= render :partial => 'admin/suppliers/supplier_tabs', :locals => {:current => "Taxons"} %>
4
+
5
+ <div id="selected-taxons">
6
+ <%= render :partial => "taxon_table", :locals => {:taxons => @taxons} %>
7
+ </div>
8
+ <%= form_tag(update_taxons_admin_supplier_taxons_path(@supplier), :method => :post) do %>
9
+ <h3>Category</h3>
10
+ <ul>
11
+ <% @options.each do |o| %>
12
+ <li><%= check_box_tag o.name, o.id %><%= label_tag o.name %></li>
13
+ <% end %>
14
+ </ul>
15
+ <%= submit_tag "Update" %>
16
+ <% end %>
17
+
18
+ <%= form_tag('#') do %>
19
+ <label><%= t('search') %>:</label>
20
+ <input id="searchtext" size="25">
21
+ <% end %>
22
+
23
+ <%= javascript_tag do %>
24
+ function search_for_taxons(){
25
+ jQuery.ajax({
26
+ data: {q: jQuery("#searchtext").val() },
27
+ dataType: 'script',
28
+ success: function(request){
29
+ jQuery('#search_hits').html(request);
30
+ },
31
+ type: 'post',
32
+ url: '<%= available_admin_supplier_taxons_url(@supplier) %>'
33
+ });
34
+ }
35
+
36
+ jQuery("#searchtext").keypress(function (e) {
37
+ if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
38
+ search_for_taxons();
39
+
40
+ return false;
41
+ } else {
42
+ return true;
43
+ }
44
+ });
45
+
46
+ jQuery("#searchtext").delayedObserver(function() {
47
+ search_for_taxons();
48
+ }, 0.75);
49
+ <% end %>
50
+ <br/>
51
+ <div id="search_hits"></div>
@@ -0,0 +1,75 @@
1
+ <table class="admin-report" width="545">
2
+ <tr>
3
+ <td valign="top">Company name:</td>
4
+ <td><%= f.text_field :title, :value => @supplier.title %></td>
5
+ </tr>
6
+ <tr>
7
+ <td valign="top">Company Description:</td>
8
+ <td><%= f.text_field :notes, :value => @supplier.notes %></td>
9
+ </tr>
10
+ </table>
11
+
12
+ <h3>Company Information</h3>
13
+ <table class="admin-report" width="545">
14
+ <tr>
15
+ <td valign="top">Phone:</td>
16
+ <td><%= f.text_field :phone, :value => @supplier.phone %></td>
17
+ </tr>
18
+ <tr>
19
+ <td valign="top">Address:</td>
20
+ <td><%= f.text_field :address1, :value => @supplier.address1 %></td>
21
+ </tr>
22
+ <tr>
23
+ <td valign="top">Town:</td>
24
+ <td><%= f.text_field :town, :value => @supplier.town %></td>
25
+ </tr>
26
+ <tr>
27
+ <td valign="top">State:</td>
28
+ <td><%= f.collection_select :state_id, State.find(:all, :order => 'name ASC'), :id, :name, :include_blank => true %></td>
29
+ </tr>
30
+ <tr>
31
+ <td valign="top">Market:</td>
32
+ <td><%= f.collection_select :city_id, City.find(:all, :order => 'name ASC'), :id, :name, :include_blank => true %></td>
33
+ </tr>
34
+ <tr>
35
+ <td valign="top">Zip-code:</td>
36
+ <td><%= f.text_field :zip_code, :value => @supplier.zip_code %></td>
37
+ </tr>
38
+ <tr>
39
+ <td valign="top">Fax:</td>
40
+ <td><%= f.text_field :fax, :value => @supplier.fax %></td>
41
+ </tr>
42
+ <tr>
43
+ <td valign="top">Email:</td>
44
+ <td><%= f.text_field :email, :value => @supplier.email %></td>
45
+ </tr>
46
+ <tr>
47
+ <td valign="top">Facebook:</td>
48
+ <td><%= f.text_field :facebook, :value => @supplier.facebook %></td>
49
+ </tr>
50
+ <tr>
51
+ <td valign="top">Twitter:</td>
52
+ <td><%= f.text_field :twitter, :value => @supplier.twitter %></td>
53
+ </tr>
54
+ <tr>
55
+ <td valign="top">Website:</td>
56
+ <td><%= f.text_field :website, :value => @supplier.website %></td>
57
+ </tr>
58
+ <tr>
59
+ <td valign="top">Products Sold:</td>
60
+ <td><%= f.text_area :products_sold %></td>
61
+ </tr>
62
+ </table>
63
+
64
+ <h3>Owner Information</h3>
65
+ <table class="admin-report" width="545">
66
+ <tr>
67
+ <td valign="top">Owner Name:</td>
68
+ <td><%= f.text_field :name, :value => @supplier.name %></td>
69
+ </tr>
70
+ <tr>
71
+ <td valign="top">Owner Description:</td>
72
+ <td><%= f.text_field :description2, :value => @supplier.description2 %></td>
73
+ </tr>
74
+ </table>
75
+
@@ -0,0 +1,18 @@
1
+ <tr>
2
+ <td><h4><%= day %></h4></td>
3
+ <% outcome = @supplier.hours.first.send(day.downcase) %>
4
+ <% if outcome == "Closed" || outcome == "Information Unavailable" %>
5
+ <% if outcome == "Information Unavailable" %>
6
+ <% outcome = "Unavailable" %>
7
+ <% end %>
8
+ <td><%= select_tag "#{day}_closed", options_for_select(@closed, outcome) %></td>
9
+ <% else %>
10
+ <td><%= select_tag "#{day}_closed", options_for_select(@closed, "Open") %></td>
11
+ <% end %>
12
+ <td>From: <%= select_tag "#{day}_begin", options_for_select(@hours, find_hours(outcome)[0]) %></td>
13
+ <td><%= select_tag "#{day}_begin_mins", options_for_select(@minutes,find_minutes(outcome)[0]) %></td>
14
+ <td><%= select_tag "#{day}_begin_type", options_for_select(@periods,find_periods(outcome)[0]) %>, to</td>
15
+ <td><%= select_tag "#{day}_end", options_for_select(@hours,find_hours(outcome)[1]) %><td>
16
+ <td><%= select_tag "#{day}_end_mins", options_for_select(@minutes, find_minutes(outcome)[1]) %></td>
17
+ <td><%= select_tag "#{day}_end_type", options_for_select(@periods,find_periods(outcome)[1]) %></td>
18
+ </tr>
@@ -0,0 +1,72 @@
1
+ <table class="admin-report" width="545">
2
+ <tr>
3
+ <td valign="top">Company name:</td>
4
+ <td><%= f.text_field :title %></td>
5
+ </tr>
6
+ <tr>
7
+ <td valign="top">Company Description:</td>
8
+ <td><%= f.text_field :notes %></td>
9
+ </tr>
10
+ </table>
11
+
12
+ <h3>Information</h3>
13
+ <table class="admin-report" width="545">
14
+ <tr>
15
+ <td valign="top">Phone:</td>
16
+ <td><%= f.text_field :phone %></td>
17
+ </tr>
18
+ <tr>
19
+ <td valign="top">Address:</td>
20
+ <td><%= f.text_field :address1 %></td>
21
+ </tr>
22
+ <tr>
23
+ <td valign="top">Town:</td>
24
+ <td><%= f.text_field :town %></td>
25
+ </tr>
26
+ <tr>
27
+ <td valign="top">State:</td>
28
+ <td><%= f.select :state_id, options_from_collection_for_select(State.all, "id", "name") %></td>
29
+ </tr>
30
+ <tr>
31
+ <td valign="top">Zip-code:</td>
32
+ <td><%= f.text_field :zip_code %></td>
33
+ </tr>
34
+ <tr>
35
+ <td valign="top">Fax:</td>
36
+ <td><%= f.text_field :fax %></td>
37
+ </tr>
38
+ <tr>
39
+ <td valign="top">Email:</td>
40
+ <td><%= f.text_field :email %></td>
41
+ </tr>
42
+ <tr>
43
+ <td valign="top">Facebook:</td>
44
+ <td><%= f.text_field :facebook %></td>
45
+ </tr>
46
+ <tr>
47
+ <td valign="top">Twitter:</td>
48
+ <td><%= f.text_field :twitter %></td>
49
+ </tr>
50
+ <tr>
51
+ <td valign="top">Website:</td>
52
+ <td><%= f.text_field :website %></td>
53
+ </tr>
54
+ <tr>
55
+ <td valign="top">Products Sold:</td>
56
+ <td><%= f.text_area :products_sold %></td>
57
+ </tr>
58
+ </table>
59
+
60
+ <h3>Proprietor Information</h3>
61
+ <table class="admin-report" width="545">
62
+ <tr>
63
+ <td valign="top">Owner Name:</td>
64
+ <td><%= f.text_field :name %></td>
65
+ </tr>
66
+ <tr>
67
+ <td valign="top">Owner Description:</td>
68
+ <td><%= f.text_field :description2 %></td>
69
+ </tr>
70
+ </table>
71
+
72
+
@@ -0,0 +1,11 @@
1
+ <tr>
2
+ <td><h4><%= day %></h4></td>
3
+ <td><%= select_tag "#{day}_closed", "<option>Unavailable</option><option>Open</option><option>Closed</option>".html_safe %></td>
4
+ <td>From: <%= select_tag "#{day}_begin", "<option>1</option><option>2</option><option>3</option><option>4</option><option>5</option><option>6</option><option>7</option><option>8</option><option>9</option><option>10</option><option>11</option><option>12</option>".html_safe %></td>
5
+ <td><%= select_tag "#{day}_begin_mins", "<option>00</option><option>15</option><option>30</option><option>45</option>".html_safe %></td>
6
+ <td><%= select_tag "#{day}_begin_type", "<option>am</option><option>pm</option>".html_safe %>, to</td>
7
+ <td><%= select_tag "#{day}_end", "<option>1</option><option>2</option><option>3</option><option>4</option><option>5</option><option>6</option><option>7</option><option>8</option><option>9</option><option>10</option><option>11</option><option>12</option>".html_safe %></td>
8
+ <td><%= select_tag "#{day}_end_mins", "<option>00</option><option>15</option><option>30</option><option>45</option>".html_safe %></td>
9
+ <td><%= select_tag "#{day}_end_type", "<option>pm</option><option>am</option>".html_safe %></td>
10
+
11
+ </tr>
@@ -0,0 +1,40 @@
1
+ <div id="image_upload">
2
+ <%= form_for(:image, :url => { :controller => 'suppliers', :action => 'upload_image', :method => :post}, :html => { :multipart => true }) do |f| %>
3
+ <%= render :partial => 'upload_image', :locals => { :f => f } %>
4
+ <p class="form-buttons">
5
+ <% if @status == true %>
6
+ <button id="upload" type="submit">
7
+ <span>Upload Image</span>
8
+ </button>
9
+ <% else %>
10
+ <%= button t("upload") %>
11
+ <% end %>
12
+ <%= t('or') %> <%= link_to t("cancel"), "#", :id => "cancel_link" %>
13
+ </p>
14
+ <% end %>
15
+
16
+ <h3>Current images:</h3>
17
+ <% @supplier.images.each do |image| %>
18
+ <ul>
19
+ <li><%= sized_image(image, '100x100#') %></li>
20
+ <li><%= link_to "destroy", { :action => 'destroy_image', :id => image.id}, :method => :delete %></li>
21
+ <% if image.logo == true %>
22
+ <li>This image is the current logo.</li>
23
+ <% else %>
24
+ <li><%= link_to "appoint logo", { :action => "make_logo", :id => image.id} %></li>
25
+ <% end %>
26
+ <% if image.featured == true %>
27
+ <li>This image is currently featured</li>
28
+ <% else %>
29
+ <li><%= link_to "make featured", { :action => "feature_image", :id => image.id} %></li>
30
+ <% end %>
31
+
32
+ </ul>
33
+ <% end %>
34
+ <script>
35
+ $("#upload").click(function(event){
36
+ event.preventDefault();
37
+ alert("You are not allowed to create an image without first creating a supplier");
38
+ });
39
+ </script>
40
+ </div>
@@ -0,0 +1,37 @@
1
+ <h2>Supplier Info: <%= supplier.title %></h2>
2
+ <ul>
3
+ <li><b>Company name:</b> <%= supplier.title %></li>
4
+ <li><b>Vendor page:</b> <%= link_to supplier.title, supplier_path(supplier) %></li>
5
+ <li><b>Description:</b> <%= supplier.notes %></li>
6
+ <li><b>Phone:</b> <%= supplier.phone %></li>
7
+ <li><b>Address1:</b> <%= supplier.address1 %></li>
8
+ <li><b>Town:</b> <%= supplier.town %></li>
9
+ <li><b>State:</b><%= State.find_by_id(supplier.state).name %></li>
10
+ <li><b>Zip-code:</b><%= supplier.zip_code %></li>
11
+ <li><b>Fax:</b><%= supplier.fax %></li>
12
+ <li><b>Email:</b><%= supplier.email %></li>
13
+ <li><b>Facebook:</b><%= supplier.facebook %></li>
14
+ <li><b>Twitter:</b><%= supplier.twitter %></li>
15
+ <li><b>Website:</b><%= supplier.website %></li>
16
+ <li><b>Product Solds:</b><%= supplier.products_sold %></li>
17
+ </ul>
18
+ <h2>Proprietor Info</h2>
19
+ <ul>
20
+ <li><b>Owner Name:</b><%= supplier.name %></li>
21
+ <li><b>Owner Description:</b><%= supplier.description2 %></li>
22
+ </ul>
23
+
24
+ <%= render :partial => "shared/hours", :locals => {:supplier => @supplier} %>
25
+ <h2>Images</h2>
26
+ <% supplier.images.each do |image| %>
27
+ <ul>
28
+ <li><%= sized_image(image, '100x100#')%></li>
29
+ <% if image.logo == true %>
30
+ <li>This image is the current logo</li>
31
+ <% end %>
32
+ <% if image.featured == true %>
33
+ <li>This image is currently featured</li>
34
+ <% end %>
35
+ </ul>
36
+ <% end %>
37
+
@@ -0,0 +1,18 @@
1
+ <% content_for :sidebar do %>
2
+ <ul class="sidebar supplier-menu">
3
+ <%= hook :admin_supplier_tabs, {:current => current} do %>
4
+ <li<%== ' class="active"' if current == "Supplier Details" %>>
5
+ <%= link_to "Supplier Details", edit_admin_supplier_url(@supplier) %>
6
+ </li>
7
+ <li<%== ' class="active"' if current == "Taxons" %>>
8
+ <%= link_to t("taxons"), selected_admin_supplier_taxons_url(@supplier) %>
9
+ </li>
10
+ <li<%== ' class="active"' if current == "Shipping" %>>
11
+ <%= link_to "Shipping Options", edit_admin_shipping_option_url(@supplier) %>
12
+ </li>
13
+ <li<%== ' class="active"' if current == "Pickups" %>>
14
+ <%= link_to "Pickups", admin_pickup_url(@supplier) %>
15
+ </li>
16
+ <% end %>
17
+ </ul>
18
+ <% end %>
@@ -0,0 +1,25 @@
1
+ <table class="index">
2
+ <thead>
3
+ <tr>
4
+ <th><%= t("supplier_name") %></th>
5
+ <th></th>
6
+ </tr>
7
+ </thead>
8
+ <tbody>
9
+ <% unless supplier.blank? %>
10
+ <tr id="<%= dom_id(supplier, :sel)%>">
11
+ <td><%= supplier.name %></td>
12
+ <td class="actions">
13
+ <%= image_tag "spinner.gif", :style => "display:none", :id => "#{dom_id(supplier, :rem_spinner)}" %>
14
+ <%= link_to_remote icon('delete') + ' ' + t('remove'),
15
+ {:url => remove_admin_product_supplier_url(@product, supplier),
16
+ :loading => "jQuery('##{dom_id(supplier, :rem_spinner)}').show()",
17
+ :update => 'selected-supplier',
18
+ :complete => "jQuery('##{dom_id(supplier, :sel)}').remove(); jQuery('##{dom_id(supplier, :rem_spinner)}').hide();"}, :class => 'iconlink' %>
19
+ </td>
20
+ </tr>
21
+ <% else %>
22
+ <tr><td colspan="3"><%= t('none') %>.</td></tr>
23
+ <% end %>
24
+ </tbody>
25
+ </table>
@@ -0,0 +1,14 @@
1
+ <table class="basic-table">
2
+ <h3>Company images</h3>
3
+ <tr>
4
+ <td><%= t("filename") %>:</td>
5
+ <td><%= f.file_field :attachment %></td>
6
+ </tr>
7
+ <tr>
8
+ <td><%= t("alt_text") %>:</td>
9
+ <td><%= f.text_field :alt, :value => "There is no image available" %></td>
10
+ </tr>
11
+ <tr>
12
+ <td><%= f.hidden_field :viewable_id, :value => @supplier.id %></td>
13
+ </tr>
14
+ </table>