spree_backend 2.4.0.rc2 → 2.4.0.rc3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree/backend/address_states.js +3 -1
  3. data/app/assets/javascripts/spree/backend/checkouts/edit.js +16 -0
  4. data/app/assets/stylesheets/spree/backend/components/_navigation.scss +5 -0
  5. data/app/assets/stylesheets/spree/backend/sections/_taxons.scss +7 -1
  6. data/app/controllers/spree/admin/adjustments_controller.rb +6 -0
  7. data/app/controllers/spree/admin/orders/customer_details_controller.rb +1 -2
  8. data/app/controllers/spree/admin/orders_controller.rb +6 -6
  9. data/app/controllers/spree/admin/products_controller.rb +0 -3
  10. data/app/controllers/spree/admin/root_controller.rb +17 -0
  11. data/app/models/spree/backend_configuration.rb +17 -1
  12. data/app/views/spree/admin/log_entries/index.html.erb +5 -2
  13. data/app/views/spree/admin/orders/_form.html.erb +1 -2
  14. data/app/views/spree/admin/orders/_line_items_edit_form.html.erb +1 -1
  15. data/app/views/spree/admin/orders/customer_details/_form.html.erb +1 -1
  16. data/app/views/spree/admin/orders/edit.html.erb +1 -1
  17. data/app/views/spree/admin/orders/index.html.erb +13 -1
  18. data/app/views/spree/admin/products/_form.html.erb +4 -3
  19. data/app/views/spree/admin/products/new.html.erb +3 -3
  20. data/app/views/spree/admin/promotion_categories/edit.html.erb +1 -6
  21. data/app/views/spree/admin/promotion_categories/index.html.erb +33 -25
  22. data/app/views/spree/admin/promotion_categories/new.html.erb +1 -5
  23. data/app/views/spree/admin/promotion_categories/new.js.erb +5 -0
  24. data/app/views/spree/admin/promotions/edit.html.erb +1 -5
  25. data/app/views/spree/admin/promotions/index.html.erb +3 -4
  26. data/app/views/spree/admin/promotions/new.html.erb +1 -5
  27. data/app/views/spree/admin/prototypes/_form.html.erb +19 -8
  28. data/app/views/spree/admin/shared/_configuration_menu.html.erb +2 -2
  29. data/app/views/spree/admin/shared/_product_tabs.html.erb +0 -1
  30. data/app/views/spree/admin/shared/_promotion_sub_menu.html.erb +6 -0
  31. data/app/views/spree/admin/shared/_tabs.html.erb +11 -6
  32. data/app/views/spree/admin/stock_locations/_form.html.erb +63 -77
  33. data/app/views/spree/admin/taxonomies/new.html.erb +3 -1
  34. data/config/routes.rb +17 -17
  35. metadata +9 -7
  36. data/app/views/spree/admin/log_entries/_credit_card.html.erb +0 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c746330159942dd82dd11de07001106f4b973ef3
4
- data.tar.gz: cc5031d65ca142846fec254ed5b547ebbbbdb026
3
+ metadata.gz: 20e9b9d30543a971ed7797b83d1345b3902e3c5c
4
+ data.tar.gz: 50fba7739d5c4ef525b63d3a84a6704814f76217
5
5
  SHA512:
6
- metadata.gz: a7a6bb73924c37b6a212b9127e267837b2cb901c2ddc1a39b1ea31ff791d46d18a529c297a715f85e4948be330470a6ae2d0fb2df33e9dd828f8455c90ab976b
7
- data.tar.gz: d46e55cc64e75c0f36a54b84dfa9bf3d77b13865c56ec15c49e06601c04e137d60a6e9fb6db04dd4a620c8bd1103df7fdf0696b9e0bfb5db268090abfe7f5e4a
6
+ metadata.gz: bccd2cc77112fe4f112d1f2983bbd55c53e77daa4d549b56b53892dce6975b1f33a9c379c264a34f67b7b887abf645b114f38c5c76071667ee5b26a414776157
7
+ data.tar.gz: 2c68dc2d57f6d1573bcbbc978ba58b830bd9c6a984606b6d83d25073205fb2bbd01fed73aedf2dd85cbe99efde8f55699170b5810ae0d19b18447ba77026ede4
@@ -1,4 +1,4 @@
1
- var update_state = function (region) {
1
+ var update_state = function (region, done) {
2
2
  'use strict';
3
3
 
4
4
  var country = $('span#' + region + 'country .select2').select2('val');
@@ -27,5 +27,7 @@ var update_state = function (region) {
27
27
  state_input.prop('disabled', false).show();
28
28
  state_select.select2('destroy').hide();
29
29
  }
30
+
31
+ if(done) done();
30
32
  });
31
33
  };
@@ -34,6 +34,22 @@ $(document).ready(function() {
34
34
  $('#guest_checkout_false').prop("checked", true);
35
35
  $('#guest_checkout_false').prop("disabled", false);
36
36
 
37
+ var billAddress = customer.bill_address;
38
+ if(billAddress) {
39
+ $('#order_bill_address_attributes_firstname').val(billAddress.firstname);
40
+ $('#order_bill_address_attributes_lastname').val(billAddress.lastname);
41
+ $('#order_bill_address_attributes_address1').val(billAddress.address1);
42
+ $('#order_bill_address_attributes_address2').val(billAddress.address2);
43
+ $('#order_bill_address_attributes_city').val(billAddress.city);
44
+ $('#order_bill_address_attributes_zipcode').val(billAddress.zipcode);
45
+ $('#order_bill_address_attributes_phone').val(billAddress.phone);
46
+
47
+ $('#order_bill_address_attributes_country_id').select2("val", billAddress.country_id).promise().done(function () {
48
+ update_state('b', function () {
49
+ $('#order_bill_address_attributes_state_id').select2("val", billAddress.state_id);
50
+ });
51
+ });
52
+ }
37
53
  return customer.email;
38
54
  }
39
55
  })
@@ -84,6 +84,11 @@ nav.menu {
84
84
  position: relative;
85
85
  text-align: center;
86
86
 
87
+ @media(max-width: 1009px) {
88
+ top: -3px;
89
+ margin-bottom: -5px;
90
+ }
91
+
87
92
  i {
88
93
  display: inline;
89
94
  }
@@ -12,4 +12,10 @@
12
12
  }
13
13
 
14
14
  margin: 10px;
15
- }
15
+ }
16
+
17
+ #taxon_products {
18
+ > li {
19
+ height: 170px;
20
+ }
21
+ }
@@ -27,6 +27,12 @@ module Spree
27
27
  @order.reload.update!
28
28
  end
29
29
 
30
+ # Override method used to create a new instance to correctly
31
+ # associate adjustment with order
32
+ def build_resource
33
+ parent.adjustments.build(order: parent)
34
+ end
35
+
30
36
  end
31
37
  end
32
38
  end
@@ -23,8 +23,7 @@ module Spree
23
23
  if params[:guest_checkout] == "false"
24
24
  @order.associate_user!(Spree.user_class.find(params[:user_id]), @order.email.blank?)
25
25
  end
26
- while @order.next; end
27
-
26
+ @order.next
28
27
  @order.refresh_shipment_rates
29
28
  flash[:success] = Spree.t('customer_details_updated')
30
29
  redirect_to edit_admin_order_url(@order)
@@ -20,11 +20,11 @@ module Spree
20
20
 
21
21
  params[:q].delete(:inventory_units_shipment_id_null) if params[:q][:inventory_units_shipment_id_null] == "0"
22
22
 
23
- if !params[:q][:created_at_gt].blank?
23
+ if params[:q][:created_at_gt].present?
24
24
  params[:q][:created_at_gt] = Time.zone.parse(params[:q][:created_at_gt]).beginning_of_day rescue ""
25
25
  end
26
26
 
27
- if !params[:q][:created_at_lt].blank?
27
+ if params[:q][:created_at_lt].present?
28
28
  params[:q][:created_at_lt] = Time.zone.parse(params[:q][:created_at_lt]).end_of_day rescue ""
29
29
  end
30
30
 
@@ -109,16 +109,16 @@ module Spree
109
109
  end
110
110
 
111
111
  def open_adjustments
112
- adjustments = @order.adjustments.where(:state => 'closed')
113
- adjustments.update_all(:state => 'open')
112
+ adjustments = @order.all_adjustments.where(state: 'closed')
113
+ adjustments.update_all(state: 'open')
114
114
  flash[:success] = Spree.t(:all_adjustments_opened)
115
115
 
116
116
  respond_with(@order) { |format| format.html { redirect_to :back } }
117
117
  end
118
118
 
119
119
  def close_adjustments
120
- adjustments = @order.adjustments.where(:state => 'open')
121
- adjustments.update_all(:state => 'closed')
120
+ adjustments = @order.all_adjustments.where(state: 'open')
121
+ adjustments.update_all(state: 'closed')
122
122
  flash[:success] = Spree.t(:all_adjustments_closed)
123
123
 
124
124
  respond_with(@order) { |format| format.html { redirect_to :back } }
@@ -130,9 +130,6 @@ module Spree
130
130
  clone_admin_product_url resource
131
131
  end
132
132
 
133
- def permit_attributes
134
- params.require(:product).permit!
135
- end
136
133
  end
137
134
  end
138
135
  end
@@ -0,0 +1,17 @@
1
+ module Spree
2
+ module Admin
3
+ class RootController < Spree::Admin::BaseController
4
+
5
+ skip_before_filter :authorize_admin
6
+
7
+ def index
8
+ redirect_to admin_root_redirect_path
9
+ end
10
+
11
+ protected
12
+ def admin_root_redirect_path
13
+ spree.admin_orders_path
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,5 +1,21 @@
1
1
  module Spree
2
2
  class BackendConfiguration < Preferences::Configuration
3
- preference :locale, :string, :default => Rails.application.config.i18n.default_locale
3
+ preference :locale, :string, default: Rails.application.config.i18n.default_locale
4
+
5
+ ORDER_TABS ||= [:orders, :payments, :creditcard_payments,
6
+ :shipments, :credit_cards, :return_authorizations,
7
+ :customer_returns, :adjustments, :customer_details]
8
+ PRODUCT_TABS ||= [:products, :option_types, :properties, :prototypes,
9
+ :variants, :product_properties, :taxonomies,
10
+ :taxons]
11
+ REPORT_TABS ||= [:reports]
12
+ CONFIGURATION_TABS ||= [:configurations, :general_settings, :tax_categories,
13
+ :tax_rates, :zones, :countries, :states,
14
+ :payment_methods, :shipping_methods,
15
+ :shipping_categories, :stock_transfers,
16
+ :stock_locations, :trackers, :refund_reasons,
17
+ :reimbursement_types, :return_authorization_reasons]
18
+ PROMOTION_TABS ||= [:promotions, :promotion_categories]
19
+ USER_TABS ||= [:users]
4
20
  end
5
21
  end
@@ -22,7 +22,10 @@
22
22
  </tr>
23
23
  </thead>
24
24
  <tbody>
25
- <%= render "spree/admin/log_entries/#{@payment.payment_method.name.gsub(' ', '').underscore}", entry: entry %>
25
+ <tr>
26
+ <td>Message</td>
27
+ <td><%= entry.parsed_details.message %></td>
28
+ </tr>
26
29
  </tbody>
27
30
  <% end %>
28
- </table>
31
+ </table>
@@ -36,9 +36,8 @@
36
36
  var shipments = [];
37
37
 
38
38
  <% @order.shipments.each do |shipment| %>
39
- shipments.push(<%== shipment.to_json(:root => false, :include => [:inventory_units, :stock_location]) %>);
39
+ shipments.push(<%== shipment.as_json(:root => false, :only => [:id, :tracking, :number, :state, :stock_location_id], :include => [:inventory_units, :stock_location]).to_json %>);
40
40
  <% end %>
41
-
42
41
  <%= render :partial => 'spree/admin/shared/update_order_state', :handlers => [:js] %>
43
42
  <% end -%>
44
43
  </div>
@@ -32,7 +32,7 @@
32
32
  var shipments = [];
33
33
 
34
34
  <% @order.shipments.each do |shipment| %>
35
- shipments.push(<%== shipment.to_json(:root => false, :include => [:inventory_units, :stock_location]) %>);
35
+ shipments.push(<%== shipment.as_json(:root => false, :only => [:id, :tracking, :number, :state, :stock_location_id], :include => [:inventory_units, :stock_location]).to_json %>);
36
36
  <% end %>
37
37
 
38
38
  <%= render :partial => 'spree/admin/shared/update_order_state', :handlers => [:js] %>
@@ -51,7 +51,7 @@
51
51
  <%= f.fields_for :ship_address do |sa_form| %>
52
52
  <div class="field" style="position: absolute;margin-top: -15px;right: 0;">
53
53
  <span data-hook="use_billing">
54
- <%= check_box_tag 'order[use_billing]', '1', (!(@order.bill_address.empty? && @order.ship_address.empty?) && @order.bill_address.same_as?(@order.ship_address)) %>
54
+ <%= check_box_tag 'order[use_billing]', '1', ((@order.bill_address.empty? && @order.ship_address.empty?) && @order.bill_address.same_as?(@order.ship_address)) %>
55
55
  <%= label_tag 'order[use_billing]', Spree.t(:use_billing_address) %>
56
56
  </span>
57
57
  </div>
@@ -17,7 +17,7 @@
17
17
  </div>
18
18
 
19
19
  <% if @order.payments.exists? && @order.considered_risky? %>
20
- <%= render 'spree/admin/orders/risk_analysis', latest_payment: @order.payments.order("created_at DESC").first %>
20
+ <%= render 'spree/admin/orders/risk_analysis', latest_payment: @order.payments.last %>
21
21
  <% end %>
22
22
 
23
23
  <%= render partial: 'add_product' if @order.shipment_state != 'shipped' && can?(:update, @order) %>
@@ -45,10 +45,16 @@
45
45
  <%= label_tag :q_number_cont, Spree.t(:order_number, :number => '') %>
46
46
  <%= f.text_field :number_cont %>
47
47
  </div>
48
+
48
49
  <div class="field">
49
50
  <%= label_tag :q_email_cont, Spree.t(:email) %>
50
51
  <%= f.text_field :email_cont %>
51
52
  </div>
53
+
54
+ <div class="field">
55
+ <%= label_tag :q_line_items_variant_id_in, Spree.t(:sku) %>
56
+ <%= f.select :line_items_variant_id_in, Spree::Variant.pluck(:sku, :id), {:include_blank => true}, :class => 'select2' %>
57
+ </div>
52
58
  </div>
53
59
 
54
60
  <div class="four columns">
@@ -132,7 +138,13 @@
132
138
  <% if Spree::Order.checkout_step_names.include?(:delivery) %>
133
139
  <td class="align-center"><span class="state <%= order.shipment_state %>"><%= Spree.t("shipment_states.#{order.shipment_state}") if order.shipment_state %></span></td>
134
140
  <% end %>
135
- <td><%= mail_to order.email %></td>
141
+ <td>
142
+ <% if order.user %>
143
+ <%= link_to order.email, edit_admin_user_path(order.user) %>
144
+ <% else %>
145
+ <%= mail_to order.email %>
146
+ <% end %>
147
+ </td>
136
148
  <td class="align-center"><%= order.display_total.to_html %></td>
137
149
  <td class='actions align-center' data-hook="admin_orders_index_row_actions">
138
150
  <%= link_to_edit_url edit_admin_order_path(order), :title => "admin_edit_#{dom_id(order)}", :no_text => true %>
@@ -4,7 +4,7 @@
4
4
  <div data-hook="admin_product_form_name">
5
5
  <%= f.field_container :name do %>
6
6
  <%= f.label :name, raw(Spree.t(:name) + content_tag(:span, ' *', :class => 'required')) %>
7
- <%= f.text_field :name, :class => 'fullwidth title' %>
7
+ <%= f.text_field :name, :class => 'fullwidth title', :required => true %>
8
8
  <%= f.error_message_on :name %>
9
9
  <% end %>
10
10
  </div>
@@ -12,7 +12,7 @@
12
12
  <div data-hook="admin_product_form_slug">
13
13
  <%= f.field_container :slug do %>
14
14
  <%= f.label :slug, raw(Spree.t(:slug) + content_tag(:span, ' *', :class => "required")) %>
15
- <%= f.text_field :slug, :class => 'fullwidth title' %>
15
+ <%= f.text_field :slug, :class => 'fullwidth title', :required => true %>
16
16
  <%= f.error_message_on :slug %>
17
17
  <% end %>
18
18
  </div>
@@ -30,7 +30,7 @@
30
30
  <div data-hook="admin_product_form_price">
31
31
  <%= f.field_container :price do %>
32
32
  <%= f.label :price, raw(Spree.t(:master_price) + content_tag(:span, ' *', :class => "required")) %>
33
- <%= f.text_field :price, :value => number_to_currency(@product.price, :unit => '') %>
33
+ <%= f.text_field :price, :value => number_to_currency(@product.price, :unit => ''), :required => true %>
34
34
  <%= f.error_message_on :price %>
35
35
  <% end %>
36
36
  </div>
@@ -42,6 +42,7 @@
42
42
  <%= f.error_message_on :cost_price %>
43
43
  <% end %>
44
44
  </div>
45
+
45
46
  <div data-hook="admin_product_form_cost_currency" class="omega two columns">
46
47
  <%= f.field_container :cost_currency do %>
47
48
  <%= f.label :cost_currency, Spree.t(:cost_currency) %>
@@ -10,7 +10,7 @@
10
10
 
11
11
  <%= f.field_container :name do %>
12
12
  <%= f.label :name, Spree.t(:name) %> <span class="required">*</span><br />
13
- <%= f.text_field :name, :class => 'fullwidth title' %>
13
+ <%= f.text_field :name, :class => 'fullwidth title', :required => true %>
14
14
  <%= f.error_message_on :name %>
15
15
  <% end %>
16
16
 
@@ -35,7 +35,7 @@
35
35
  <div data-hook="new_product_price" class="four columns">
36
36
  <%= f.field_container :price do %>
37
37
  <%= f.label :price, Spree.t(:master_price) %> <span class="required">*</span><br />
38
- <%= f.text_field :price, :value => number_to_currency(@product.price, :unit => ''), :class => 'fullwidth' %>
38
+ <%= f.text_field :price, :value => number_to_currency(@product.price, :unit => ''), :class => 'fullwidth', :required => true %>
39
39
  <%= f.error_message_on :price %>
40
40
  <% end %>
41
41
  </div>
@@ -54,7 +54,7 @@
54
54
  <div data-hook="new_product_shipping_category" class="alpha four columns">
55
55
  <%= f.field_container :shipping_category do %>
56
56
  <%= f.label :shipping_category_id, Spree.t(:shipping_categories) %><span class="required">*</span><br />
57
- <%= f.collection_select(:shipping_category_id, @shipping_categories, :id, :name, { :include_blank => Spree.t('match_choices.none') }, { :class => 'select2 fullwidth' }) %>
57
+ <%= f.collection_select(:shipping_category_id, @shipping_categories, :id, :name, { :include_blank => Spree.t('match_choices.none') }, { :class => 'select2 fullwidth', :required => true }) %>
58
58
  <%= f.error_message_on :shipping_category_id %>
59
59
  <% end %>
60
60
  </div>
@@ -2,11 +2,7 @@
2
2
  <%= Spree.t(:editing_promotion_category) %>
3
3
  <% end %>
4
4
 
5
- <% content_for :page_actions do %>
6
- <li>
7
- <%= button_link_to Spree.t(:back_to_promotion_categories_list), spree.admin_promotion_categories_path, :icon => 'arrow-left' %>
8
- </li>
9
- <% end %>
5
+ <%= render 'spree/admin/shared/promotion_sub_menu' %>
10
6
 
11
7
  <%= form_for @promotion_category, :url => object_url, :method => :put do |f| %>
12
8
  <fieldset class="no-border-top">
@@ -14,4 +10,3 @@
14
10
  <%= render :partial => 'spree/admin/shared/edit_resource_links' %>
15
11
  </fieldset>
16
12
  <% end %>
17
-
@@ -4,31 +4,39 @@
4
4
 
5
5
  <% content_for :page_actions do %>
6
6
  <li>
7
- <%= button_link_to Spree.t(:new_promotion_category), spree.new_admin_promotion_category_path, :icon => 'plus' %>
8
- </li>
9
- <li>
10
- <%= button_link_to Spree.t(:back_to_promotions_list), spree.admin_promotions_path, :icon => 'arrow-left' %>
7
+ <%= button_link_to Spree.t(:new_promotion_category), spree.new_admin_promotion_category_path, icon: 'plus', remote: true, id: 'new_promotion_category_link' %>
11
8
  </li>
12
9
  <% end %>
13
10
 
14
- <table>
15
- <colgroup>
16
- <col style="width: 85%">
17
- <col style="width: 15%">
18
- </colgroup>
19
- <thead>
20
- <th><%= Spree::PromotionCategory.human_attribute_name :name %></th>
21
- <th class='actions'></th>
22
- </thead>
23
- <tbody>
24
- <% @promotion_categories.each do |promotion_category| %>
25
- <tr>
26
- <td><%= promotion_category.name %></td>
27
- <td class="actions">
28
- <%= link_to_edit promotion_category, :no_text => true %>
29
- <%= link_to_delete promotion_category, :no_text => true %>
30
- </td>
31
- </tr>
32
- <% end %>
33
- </tbody>
34
- </table>
11
+ <%= render 'spree/admin/shared/promotion_sub_menu' %>
12
+
13
+ <div id="new_promotion_category"></div>
14
+
15
+ <% if @promotion_categories.any? %>
16
+ <table>
17
+ <colgroup>
18
+ <col style="width: 85%">
19
+ <col style="width: 15%">
20
+ </colgroup>
21
+ <thead>
22
+ <th><%= Spree::PromotionCategory.human_attribute_name :name %></th>
23
+ <th class='actions'></th>
24
+ </thead>
25
+ <tbody>
26
+ <% @promotion_categories.each do |promotion_category| %>
27
+ <tr>
28
+ <td><%= promotion_category.name %></td>
29
+ <td class="actions">
30
+ <%= link_to_edit promotion_category, :no_text => true %>
31
+ <%= link_to_delete promotion_category, :no_text => true %>
32
+ </td>
33
+ </tr>
34
+ <% end %>
35
+ </tbody>
36
+ </table>
37
+ <% else %>
38
+ <div class="alpha sixteen columns no-objects-found">
39
+ <%= Spree.t(:no_resource_found, resource: I18n.t(:other, scope: 'activerecord.models.spree/promotion_category')) %>
40
+ <%= link_to Spree.t(:add_one) + '!', spree.new_admin_promotion_category_path, remote: true, id: 'new_promotion_category_link' %>
41
+ </div>
42
+ <% end %>
@@ -2,11 +2,7 @@
2
2
  <%= Spree.t(:new_promotion_category) %>
3
3
  <% end %>
4
4
 
5
- <% content_for :page_actions do %>
6
- <li>
7
- <%= button_link_to Spree.t(:back_to_promotion_categories_list), spree.admin_promotion_categories_path, :icon => 'arrow-left' %>
8
- </li>
9
- <% end %>
5
+ <%= render 'spree/admin/shared/promotion_sub_menu' %>
10
6
 
11
7
  <%= form_for :promotion_category, :url => collection_url do |f| %>
12
8
  <fieldset class="no-border-top">
@@ -0,0 +1,5 @@
1
+ $("#new_promotion_category").html('<%= escape_javascript(render template: "spree/admin/promotion_categories/new", formats: [:html], handlers: [:erb]) %>');
2
+ <% unless Rails.env.test? %>
3
+ $('.select2').select2();
4
+ <% end %>
5
+ $("#new_promotion_category_link").parent().hide();
@@ -2,11 +2,7 @@
2
2
  <%= Spree.t(:editing_promotion) %>
3
3
  <% end %>
4
4
 
5
- <% content_for :page_actions do %>
6
- <li>
7
- <%= button_link_to Spree.t(:back_to_promotions_list), admin_promotions_path, :icon => 'arrow-left' %>
8
- </li>
9
- <% end %>
5
+ <%= render 'spree/admin/shared/promotion_sub_menu' %>
10
6
 
11
7
  <%= form_for @promotion, :url => object_url, :method => :put do |f| %>
12
8
  <fieldset class="no-border-top">
@@ -3,14 +3,13 @@
3
3
  <% end %>
4
4
 
5
5
  <% content_for :page_actions do %>
6
- <li>
7
- <%= button_link_to Spree.t(:manage_promotion_categories), spree.admin_promotion_categories_path, :icon => 'bars' %>
8
- </li>
9
6
  <li>
10
7
  <%= button_link_to Spree.t(:new_promotion), spree.new_admin_promotion_path, :icon => 'plus' %>
11
8
  </li>
12
9
  <% end %>
13
10
 
11
+ <%= render 'spree/admin/shared/promotion_sub_menu' %>
12
+
14
13
  <% content_for :table_filter_title do %>
15
14
  <%= Spree.t(:search) %>
16
15
  <% end %>
@@ -100,7 +99,7 @@
100
99
  </tbody>
101
100
  </table>
102
101
  <% else %>
103
- <div class="alpha twelve columns no-objects-found">
102
+ <div class="alpha omega sixteen columns no-objects-found">
104
103
  <%= Spree.t(:no_resource_found, resource: I18n.t(:other, scope: 'activerecord.models.spree/promotion')) %>,
105
104
  <%= link_to Spree.t(:add_one), spree.new_admin_promotion_path %>!
106
105
  </div>
@@ -2,11 +2,7 @@
2
2
  <%= Spree.t(:new_promotion) %>
3
3
  <% end %>
4
4
 
5
- <% content_for :page_actions do %>
6
- <li>
7
- <%= button_link_to Spree.t(:back_to_promotions_list), spree.admin_promotions_path, :icon => 'arrow-left' %>
8
- </li>
9
- <% end %>
5
+ <%= render 'spree/admin/shared/promotion_sub_menu' %>
10
6
 
11
7
  <%= form_for :promotion, :url => collection_url do |f| %>
12
8
  <fieldset class="no-border-top">
@@ -2,24 +2,35 @@
2
2
  <div class="alpha four columns">
3
3
  <%= f.field_container :name do %>
4
4
  <%= f.label :name, Spree.t(:name) %> <span class="required">*</span><br />
5
- <%= f.text_field :name, :class => 'fullwidth' %>
5
+ <%= f.text_field :name, class: 'fullwidth' %>
6
6
  <%= f.error_message_on :name %>
7
7
  <% end %>
8
8
  </div>
9
9
 
10
- <div class="six columns">
10
+ <div class="four columns">
11
11
  <div id='properties' data-hook>
12
12
  <%= f.field_container :property_ids do %>
13
13
  <%= f.label :property_ids, Spree.t(:properties) %><br>
14
- <%= f.select :property_ids, Spree::Property.all.map { |p| [p.presentation, p.id] }, {}, { :multiple => true, :class => "select2 fullwidth" } %>
14
+ <%= f.select :property_ids, Spree::Property.all.map { |p| ["#{p.presentation} (#{p.name})", p.id] }, {}, { multiple: true, class: "select2 fullwidth" } %>
15
15
  <% end %>
16
16
  </div>
17
17
  </div>
18
18
 
19
- <div class="six columns omega">
20
- <%= f.field_container :option_type_ids do %>
21
- <%= f.label :option_type_ids, Spree.t(:option_types) %><br>
22
- <%= f.select :option_type_ids, Spree::OptionType.all.map { |ot| [ot.presentation, ot.id] }, {}, { :multiple => true, :class => "select2 fullwidth" } %>
23
- <% end %>
19
+ <div class="four columns">
20
+ <div id="option_types" data-hook>
21
+ <%= f.field_container :option_type_ids do %>
22
+ <%= f.label :option_type_ids, Spree.t(:option_types) %><br>
23
+ <%= f.select :option_type_ids, Spree::OptionType.all.map { |ot| ["#{ot.presentation} (#{ot.name})", ot.id] }, {}, { multiple: true, class: "select2 fullwidth" } %>
24
+ <% end %>
25
+ </div>
26
+ </div>
27
+
28
+ <div class="four columns omega">
29
+ <div id='taxons' data-hook>
30
+ <%= f.field_container :taxon_ids do %>
31
+ <%= f.label :taxon_ids, Spree.t(:taxons) %><br>
32
+ <%= f.select :taxon_ids, Spree::Taxon.all.map { |t| [t.name, t.id] }, {}, { multiple: true, class: "select2 fullwidth" } %>
33
+ <% end %>
34
+ </div>
24
35
  </div>
25
36
  </div>
@@ -10,8 +10,8 @@
10
10
  <%= configurations_sidebar_menu_item Spree.t(:tax_rates), admin_tax_rates_path %>
11
11
  <%= configurations_sidebar_menu_item Spree.t(:zones), admin_zones_path %>
12
12
  <%= configurations_sidebar_menu_item Spree.t(:countries), admin_countries_path %>
13
- <% if Spree::Config[:default_country_id] %>
14
- <%= configurations_sidebar_menu_item Spree.t(:states), admin_country_states_path(Spree::Config[:default_country_id]) %>
13
+ <% if country = Spree::Country.find_by_id(Spree::Config[:default_country_id]) || Spree::Country.first %>
14
+ <%= configurations_sidebar_menu_item Spree.t(:states), admin_country_states_path(country) %>
15
15
  <% end %>
16
16
  <%= configurations_sidebar_menu_item Spree.t(:payment_methods), admin_payment_methods_path %>
17
17
  <%= configurations_sidebar_menu_item Spree.t(:taxonomies), admin_taxonomies_path %>
@@ -24,7 +24,6 @@
24
24
  <%= content_tag :li, :class => ('active' if current == 'Stock Management') do %>
25
25
  <%= link_to_with_icon 'tasks', Spree.t(:stock_management), stock_admin_product_url(@product) %>
26
26
  <% end if can?(:stock, Spree::Product) %>
27
- </li>
28
27
  </ul>
29
28
  </nav>
30
29
 
@@ -0,0 +1,6 @@
1
+ <% content_for :sub_menu do %>
2
+ <ul id="sub_nav" data-hook="admin_promotion_sub_tabs" class="inline-menu">
3
+ <%= tab :promotions %>
4
+ <%= tab :promotion_categories %>
5
+ </ul>
6
+ <% end %>
@@ -1,16 +1,21 @@
1
1
  <% if can? :admin, Spree::Order %>
2
- <%= tab :orders, :payments, :creditcard_payments, :shipments, :credit_cards, :return_authorizations, :customer_returns, :icon => 'shopping-cart' %>
2
+ <%= tab *Spree::BackendConfiguration::ORDER_TABS, icon: 'shopping-cart' %>
3
3
  <% end %>
4
+
4
5
  <% if can? :admin, Spree::Product %>
5
- <%= tab :products, :option_types, :properties, :prototypes, :variants, :product_properties, :taxonomies, :taxons, :icon => 'th-large' %>
6
+ <%= tab *Spree::BackendConfiguration::PRODUCT_TABS, icon: 'th-large' %>
6
7
  <% end %>
8
+
7
9
  <% if can? :admin, Spree::Admin::ReportsController %>
8
- <%= tab :reports, :icon => 'file' %>
10
+ <%= tab *Spree::BackendConfiguration::REPORT_TABS, icon: 'file' %>
9
11
  <% end %>
10
- <%= tab :configurations, :general_settings, :tax_categories, :tax_rates, :zones, :countries, :states, :payment_methods, :shipping_methods, :shipping_categories, :stock_transfers, :stock_locations, :trackers, :label => 'configuration', :icon => 'wrench', :url => spree.edit_admin_general_settings_path %>
12
+
13
+ <%= tab *Spree::BackendConfiguration::CONFIGURATION_TABS, label: 'configuration', icon: 'wrench', url: spree.edit_admin_general_settings_path %>
14
+
11
15
  <% if can? :admin, Spree::Promotion %>
12
- <%= tab(:promotions, :url => spree.admin_promotions_path, :icon => 'bullhorn') %>
16
+ <%= tab *Spree::BackendConfiguration::PROMOTION_TABS, url: spree.admin_promotions_path, icon: 'bullhorn' %>
13
17
  <% end %>
18
+
14
19
  <% if Spree.user_class && can?(:admin, Spree.user_class) %>
15
- <%= tab(:users, :url => spree.admin_users_path, :icon => 'user') %>
20
+ <%= tab *Spree::BackendConfiguration::USER_TABS, url: spree.admin_users_path, icon: 'user' %>
16
21
  <% end %>
@@ -1,95 +1,81 @@
1
1
  <div data-hook="admin_stock_locations_form_fields" class="row">
2
- <div class="row">
3
- <div class="alpha twelve columns">
2
+ <div class="alpha nine columns" data-hook="stock_location_names">
3
+ <div data-hook="stock_location_name">
4
4
  <%= f.field_container :name do %>
5
5
  <%= f.label :name, Spree.t(:name) %> <span class="required">*</span><br />
6
- <%= f.text_field :name, :class => 'fullwidth' %>
7
- <% end %><br>
8
- <%= f.field_container :admin_name do %>
9
- <%= f.label :admin_name, Spree.t(:internal_name) %>
10
- <%= f.text_field :admin_name, :class => 'fullwidth', :label => false %>
6
+ <%= f.text_field :name, class: 'fullwidth', required: true %>
11
7
  <% end %>
12
8
  </div>
13
- <div class="omega four columns">
14
- <%= f.field_container :active do %>
15
- <label for="active"><%= Spree.t(:status) %></label>
16
- <ul>
17
- <li>
18
- <%= f.label :active, Spree.t(:active) %>
19
- <%= f.check_box :active %>
20
- </li>
21
- <li>
22
- <%= f.label :default, Spree.t(:default) %>
23
- <%= f.check_box :default %>
24
- </li>
25
- <li>
26
- <%= f.label :backorderable_default, Spree.t(:backorderable_default) %>
27
- <%= f.check_box :backorderable_default %>
28
- </li>
29
- <li>
30
- <%= f.label :propagate_all_variants, Spree.t(:propagate_all_variants) %>
31
- <%= f.check_box :propagate_all_variants %>
32
- </li>
33
- </ul>
9
+ <div data-hook="stock_location_admin_name">
10
+ <%= f.field_container :admin_name do %>
11
+ <%= f.label :admin_name, Spree.t(:internal_name) %>
12
+ <%= f.text_field :admin_name, class: 'fullwidth', label: false %>
34
13
  <% end %>
35
14
  </div>
36
15
  </div>
37
16
 
38
- <div class="row">
39
- <div class="alpha four columns">
40
- <div class="field ">
41
- <%= f.label :address1, Spree.t(:street_address) %>
42
- <%= f.text_field :address1, :class => 'fullwidth' %>
43
- </div>
44
- </div>
17
+ <div class="omega three columns" data-hook="stock_location_status">
18
+ <%= f.field_container :active do %>
19
+ <label for="active"><%= Spree.t(:status) %></label>
20
+ <ul>
21
+ <li class="fullwidth" data-hook="stock_location_active">
22
+ <%= f.check_box :active %>
23
+ <%= f.label :active, Spree.t(:active) %>
24
+ </li>
25
+ <li class="fullwidth" data-hook="stock_location_default">
26
+ <%= f.check_box :default %>
27
+ <%= f.label :default, Spree.t(:default) %>
28
+ </li>
29
+ <li class="fullwidth" data-hook="stock_location_backorderable_default">
30
+ <%= f.check_box :backorderable_default %>
31
+ <%= f.label :backorderable_default, Spree.t(:backorderable_default) %>
32
+ </li>
33
+ <li class="fullwidth" data-hook="stock_location_propagate_all_variants">
34
+ <%= f.check_box :propagate_all_variants %>
35
+ <%= f.label :propagate_all_variants, Spree.t(:propagate_all_variants) %>
36
+ </li>
37
+ </ul>
38
+ <% end %>
39
+ </div>
45
40
 
46
- <div class="four columns">
47
- <div class="field ">
48
- <%= f.label :address2, Spree.t(:street_address_2) %>
49
- <%= f.text_field :address2, :class => 'fullwidth' %>
50
- </div>
51
- </div>
52
- <div class="four columns">
53
- <div class="field ">
54
- <%= f.label :city, Spree.t(:city) %>
55
- <%= f.text_field :city, :class => 'fullwidth' %>
56
- </div>
57
- </div>
41
+ <div class="alpha six columns field" data-hook="stock_location_address1">
42
+ <%= f.label :address1, Spree.t(:street_address) %>
43
+ <%= f.text_field :address1, class: 'fullwidth' %>
44
+ </div>
58
45
 
59
- <div class="omega four columns">
60
- <div class="field ">
61
- <%= f.label :zipcode, Spree.t(:zip) %>
62
- <%= f.text_field :zipcode, :class => 'fullwidth' %>
63
- </div>
64
- </div>
46
+ <div class="omega six columns field" data-hook="stock_location_city">
47
+ <%= f.label :city, Spree.t(:city) %>
48
+ <%= f.text_field :city, class: 'fullwidth' %>
65
49
  </div>
66
50
 
67
- <div class="row">
68
- <div class="alpha eight columns">
69
- <div class="field ">
70
- <%= f.label :country_id, Spree.t(:country) %>
71
- <span id="country"><%= f.collection_select :country_id, available_countries, :id, :name, {}, {:class => 'select2 fullwidth'} %></span>
72
- </div>
73
- </div>
51
+ <div class="alpha six columns field" data-hook="stock_location_address2">
52
+ <%= f.label :address2, Spree.t(:street_address_2) %>
53
+ <%= f.text_field :address2, class: 'fullwidth' %>
54
+ </div>
74
55
 
75
- <div class="four columns">
76
- <div class="field ">
77
- <% if f.object.country %>
78
- <%= f.label :state_id, Spree.t(:state) %>
79
- <span id="state" class="region">
80
- <%= f.text_field :state_name, :style => "display: #{f.object.country.states.empty? ? 'block' : 'none' };", :disabled => !f.object.country.states.empty?, :class => 'fullwidth state_name' %>
81
- <%= f.collection_select :state_id, f.object.country.states.sort, :id, :name, {:include_blank => true}, {:class => 'select2 fullwidth', :style => "display: #{f.object.country.states.empty? ? 'none' : 'block' };", :disabled => f.object.country.states.empty?} %>
82
- </span>
83
- <% end %>
84
- </div>
85
- </div>
56
+ <div class="three columns field" data-hook="stock_location_zipcode">
57
+ <%= f.label :zipcode, Spree.t(:zip) %>
58
+ <%= f.text_field :zipcode, class: 'fullwidth' %>
59
+ </div>
86
60
 
87
- <div class="omega four columns">
88
- <div class="field ">
89
- <%= f.label :phone, Spree.t(:phone) %>
90
- <%= f.phone_field :phone, :class => 'fullwidth' %>
91
- </div>
92
- </div>
61
+ <div class="omega three columns field" data-hook="stock_location_phone">
62
+ <%= f.label :phone, Spree.t(:phone) %>
63
+ <%= f.phone_field :phone, class: 'fullwidth' %>
64
+ </div>
65
+
66
+ <div class="alpha six columns field" data-hook="stock_location_country">
67
+ <%= f.label :country_id, Spree.t(:country) %>
68
+ <span id="country"><%= f.collection_select :country_id, available_countries, :id, :name, {}, { class: 'select2 fullwidth' } %></span>
69
+ </div>
70
+
71
+ <div class="omega six columns field" data-hook="stock_location_state">
72
+ <% if f.object.country %>
73
+ <%= f.label :state_id, Spree.t(:state) %>
74
+ <span id="state" class="region">
75
+ <%= f.text_field :state_name, style: "display: #{f.object.country.states.empty? ? 'block' : 'none' };", disabled: !f.object.country.states.empty?, class: 'fullwidth state_name' %>
76
+ <%= f.collection_select :state_id, f.object.country.states.sort, :id, :name, { include_blank: true }, {class: 'select2 fullwidth', style: "display: #{f.object.country.states.empty? ? 'none' : 'block' };", disabled: f.object.country.states.empty?} %>
77
+ </span>
78
+ <% end %>
93
79
  </div>
94
80
  </div>
95
81
 
@@ -1,4 +1,4 @@
1
- <%= render :partial => 'spree/admin/shared/configuration_menu' %>
1
+ <%= render 'spree/admin/shared/configuration_menu' %>
2
2
 
3
3
  <% content_for :page_title do %>
4
4
  <%= Spree.t(:new_taxonomy) %>
@@ -10,6 +10,8 @@
10
10
  </li>
11
11
  <% end %>
12
12
 
13
+ <%= render 'spree/admin/shared/product_sub_menu' %>
14
+
13
15
  <%= form_for [:admin, @taxonomy] do |f| %>
14
16
 
15
17
  <%= render :partial => 'form', :locals => { :f => f } %>
data/config/routes.rb CHANGED
@@ -1,13 +1,13 @@
1
1
  Spree::Core::Engine.add_routes do
2
2
  namespace :admin do
3
- get '/search/users', :to => "search#users", :as => :search_users
3
+ get '/search/users', to: "search#users", as: :search_users
4
4
 
5
5
  resources :promotions do
6
6
  resources :promotion_rules
7
7
  resources :promotion_actions
8
8
  end
9
9
 
10
- resources :promotion_categories, :except => [:show]
10
+ resources :promotion_categories, except: [:show]
11
11
 
12
12
  resources :zones
13
13
 
@@ -37,10 +37,10 @@ Spree::Core::Engine.add_routes do
37
37
  post :update_positions
38
38
  end
39
39
  end
40
- resources :variants_including_master, :only => [:update]
40
+ resources :variants_including_master, only: [:update]
41
41
  end
42
42
 
43
- get '/variants/search', :to => "variants#search", :as => :search_variants
43
+ get '/variants/search', to: "variants#search", as: :search_variants
44
44
 
45
45
  resources :option_types do
46
46
  collection do
@@ -49,7 +49,7 @@ Spree::Core::Engine.add_routes do
49
49
  end
50
50
  end
51
51
 
52
- delete '/option_values/:id', :to => "option_values#destroy", :as => :option_value
52
+ delete '/option_values/:id', to: "option_values#destroy", as: :option_value
53
53
 
54
54
  resources :properties do
55
55
  collection do
@@ -57,7 +57,7 @@ Spree::Core::Engine.add_routes do
57
57
  end
58
58
  end
59
59
 
60
- delete '/product_properties/:id', :to => "product_properties#destroy", :as => :product_property
60
+ delete '/product_properties/:id', to: "product_properties#destroy", as: :product_property
61
61
 
62
62
  resources :prototypes do
63
63
  member do
@@ -69,7 +69,7 @@ Spree::Core::Engine.add_routes do
69
69
  end
70
70
  end
71
71
 
72
- resources :orders, :except => [:show] do
72
+ resources :orders, except: [:show] do
73
73
  member do
74
74
  get :cart
75
75
  post :resend
@@ -80,7 +80,7 @@ Spree::Core::Engine.add_routes do
80
80
  put :resume
81
81
  end
82
82
 
83
- resource :customer, :controller => "orders/customer_details"
83
+ resource :customer, controller: "orders/customer_details"
84
84
  resources :customer_returns, only: [:index, :new, :edit, :create, :update] do
85
85
  member do
86
86
  put :refund
@@ -128,34 +128,34 @@ Spree::Core::Engine.add_routes do
128
128
  resources :taxons
129
129
  end
130
130
 
131
- resources :taxons, :only => [:index, :show] do
131
+ resources :taxons, only: [:index, :show] do
132
132
  collection do
133
133
  get :search
134
134
  end
135
135
  end
136
136
 
137
- resources :reports, :only => [:index] do
137
+ resources :reports, only: [:index] do
138
138
  collection do
139
139
  get :sales_total
140
140
  post :sales_total
141
141
  end
142
142
  end
143
143
 
144
- resources :reimbursement_types, :only => [:index]
145
- resources :refund_reasons, :except => [:show, :destroy]
146
- resources :return_authorization_reasons, :except => [:show, :destroy]
144
+ resources :reimbursement_types, only: [:index]
145
+ resources :refund_reasons, except: [:show, :destroy]
146
+ resources :return_authorization_reasons, except: [:show, :destroy]
147
147
 
148
148
  resources :shipping_methods
149
149
  resources :shipping_categories
150
- resources :stock_transfers, :only => [:index, :show, :new, :create]
150
+ resources :stock_transfers, only: [:index, :show, :new, :create]
151
151
  resources :stock_locations do
152
- resources :stock_movements, :except => [:edit, :update, :destroy]
152
+ resources :stock_movements, except: [:edit, :update, :destroy]
153
153
  collection do
154
154
  post :transfer_stock
155
155
  end
156
156
  end
157
157
 
158
- resources :stock_items, :only => [:create, :update, :destroy]
158
+ resources :stock_items, only: [:create, :update, :destroy]
159
159
  resources :tax_rates
160
160
 
161
161
  resources :trackers
@@ -171,5 +171,5 @@ Spree::Core::Engine.add_routes do
171
171
  end
172
172
  end
173
173
 
174
- get '/admin', :to => 'admin/orders#index', :as => :admin
174
+ get '/admin', to: 'admin/root#index', as: :admin
175
175
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_backend
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0.rc2
4
+ version: 2.4.0.rc3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Schofield
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-09 00:00:00.000000000 Z
11
+ date: 2014-11-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: spree_api
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 2.4.0.rc2
19
+ version: 2.4.0.rc3
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 2.4.0.rc2
26
+ version: 2.4.0.rc3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: spree_core
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 2.4.0.rc2
33
+ version: 2.4.0.rc3
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 2.4.0.rc2
40
+ version: 2.4.0.rc3
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: jquery-rails
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -203,6 +203,7 @@ files:
203
203
  - app/controllers/spree/admin/return_authorization_reasons_controller.rb
204
204
  - app/controllers/spree/admin/return_authorizations_controller.rb
205
205
  - app/controllers/spree/admin/return_items_controller.rb
206
+ - app/controllers/spree/admin/root_controller.rb
206
207
  - app/controllers/spree/admin/search_controller.rb
207
208
  - app/controllers/spree/admin/shipping_categories_controller.rb
208
209
  - app/controllers/spree/admin/shipping_methods_controller.rb
@@ -261,7 +262,6 @@ files:
261
262
  - app/views/spree/admin/images/new.html.erb
262
263
  - app/views/spree/admin/line_items/create.js.erb
263
264
  - app/views/spree/admin/line_items/destroy.js.erb
264
- - app/views/spree/admin/log_entries/_credit_card.html.erb
265
265
  - app/views/spree/admin/log_entries/index.html.erb
266
266
  - app/views/spree/admin/option_types/_form.html.erb
267
267
  - app/views/spree/admin/option_types/_option_value_fields.html.erb
@@ -317,6 +317,7 @@ files:
317
317
  - app/views/spree/admin/promotion_categories/edit.html.erb
318
318
  - app/views/spree/admin/promotion_categories/index.html.erb
319
319
  - app/views/spree/admin/promotion_categories/new.html.erb
320
+ - app/views/spree/admin/promotion_categories/new.js.erb
320
321
  - app/views/spree/admin/promotion_rules/create.js.erb
321
322
  - app/views/spree/admin/promotion_rules/destroy.js.erb
322
323
  - app/views/spree/admin/promotions/_actions.html.erb
@@ -394,6 +395,7 @@ files:
394
395
  - app/views/spree/admin/shared/_order_tabs.html.erb
395
396
  - app/views/spree/admin/shared/_product_sub_menu.html.erb
396
397
  - app/views/spree/admin/shared/_product_tabs.html.erb
398
+ - app/views/spree/admin/shared/_promotion_sub_menu.html.erb
397
399
  - app/views/spree/admin/shared/_refunds.html.erb
398
400
  - app/views/spree/admin/shared/_report_criteria.html.erb
399
401
  - app/views/spree/admin/shared/_report_order_criteria.html.erb
@@ -1,4 +0,0 @@
1
- <tr>
2
- <td>Message</td>
3
- <td><%= entry.parsed_details.message %></td>
4
- </tr>