diff --git a/Gemfile b/Gemfile
index 6e48dd97d5..f8407decdc 100644
--- a/Gemfile
+++ b/Gemfile
@@ -50,7 +50,7 @@ gem 'gmaps4rails'
gem 'spinjs-rails'
gem 'rack-ssl', :require => 'rack/ssl'
gem 'custom_error_message', :github => 'jeremydurham/custom-err-msg'
-gem 'angularjs-file-upload-rails', '~> 1.1.0'
+gem 'angularjs-file-upload-rails', '~> 1.1.6'
gem 'roadie-rails', '~> 1.0.3'
gem 'figaro'
gem 'blockenspiel'
diff --git a/Gemfile.lock b/Gemfile.lock
index 0dc7a067ee..824f8a0c04 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -154,7 +154,7 @@ GEM
railties (>= 3.1)
sprockets (~> 2)
tilt
- angularjs-file-upload-rails (1.1.0)
+ angularjs-file-upload-rails (1.1.6)
angularjs-rails (1.5.5)
ansi (1.4.2)
arel (3.0.3)
@@ -649,7 +649,7 @@ DEPENDENCIES
acts-as-taggable-on (~> 3.4)
andand
angular-rails-templates (~> 0.2.0)
- angularjs-file-upload-rails (~> 1.1.0)
+ angularjs-file-upload-rails (~> 1.1.6)
angularjs-rails (= 1.5.5)
atomic
awesome_print
@@ -737,4 +737,4 @@ RUBY VERSION
ruby 2.1.5p273
BUNDLED WITH
- 1.12.5
+ 1.13.6
diff --git a/app/assets/javascripts/admin/enterprises/controllers/side_menu_controller.js.coffee b/app/assets/javascripts/admin/enterprises/controllers/side_menu_controller.js.coffee
index 913ff59d3e..fa346e100f 100644
--- a/app/assets/javascripts/admin/enterprises/controllers/side_menu_controller.js.coffee
+++ b/app/assets/javascripts/admin/enterprises/controllers/side_menu_controller.js.coffee
@@ -6,7 +6,6 @@ angular.module("admin.enterprises")
$scope.menu.setItems [
{ name: 'primary_details', label: t('primary_details'), icon_class: "icon-home" }
- { name: 'users', label: t('users'), icon_class: "icon-user" }
{ name: 'address', label: t('address'), icon_class: "icon-map-marker" }
{ name: 'contact', label: t('contact'), icon_class: "icon-phone" }
{ name: 'social', label: t('social'), icon_class: "icon-twitter" }
@@ -20,11 +19,11 @@ angular.module("admin.enterprises")
{ name: 'inventory_settings', label: t('inventory_settings'), icon_class: "icon-list-ol", show: "enterpriseIsShop()" }
{ name: 'tag_rules', label: t('tag_rules'), icon_class: "icon-random", show: "enterpriseIsShop()" }
{ name: 'shop_preferences', label: t('shop_preferences'), icon_class: "icon-shopping-cart", show: "enterpriseIsShop()" }
+ { name: 'users', label: t('users'), icon_class: "icon-user" }
]
$scope.select(0)
-
$scope.showItem = (item) ->
if item.show?
$parse(item.show)($scope)
diff --git a/app/controllers/sitemap_controller.rb b/app/controllers/sitemap_controller.rb
new file mode 100644
index 0000000000..103b6e93ee
--- /dev/null
+++ b/app/controllers/sitemap_controller.rb
@@ -0,0 +1,11 @@
+class SitemapController < ApplicationController
+ layout nil
+
+ def index
+ headers['Content-Type'] = 'application/xml'
+ @page_urls = [shops_url, map_url, producers_url, groups_url]
+ @enterprises = Enterprise.is_hub
+ @groups = EnterpriseGroup.all
+ respond_to :xml
+ end
+end
diff --git a/app/models/enterprise.rb b/app/models/enterprise.rb
index 840477185f..e9acbd51f6 100644
--- a/app/models/enterprise.rb
+++ b/app/models/enterprise.rb
@@ -163,10 +163,18 @@ class Enterprise < ActiveRecord::Base
}
scope :distributing_products, lambda { |products|
- with_distributed_products_outer.with_order_cycles_and_exchange_variants_outer.
- where('product_distributions.product_id IN (?) OR spree_variants.product_id IN (?)', products, products).
- select('DISTINCT enterprises.*')
+ # TODO: remove this when we pull out product distributions
+ pds = joins("INNER JOIN product_distributions ON product_distributions.distributor_id = enterprises.id").
+ where("product_distributions.product_id IN (?)", products).select('DISTINCT enterprises.id')
+
+ exs = joins("INNER JOIN exchanges ON (exchanges.receiver_id = enterprises.id AND exchanges.incoming = 'f')").
+ joins('INNER JOIN exchange_variants ON (exchange_variants.exchange_id = exchanges.id)').
+ joins('INNER JOIN spree_variants ON (spree_variants.id = exchange_variants.variant_id)').
+ where('spree_variants.product_id IN (?)', products).select('DISTINCT enterprises.id')
+
+ where(id: pds | exs)
}
+
scope :managed_by, lambda { |user|
if user.has_spree_role?('admin')
scoped
diff --git a/app/views/admin/account/show.html.haml b/app/views/admin/account/show.html.haml
index 808402ed16..b052b5b0a0 100644
--- a/app/views/admin/account/show.html.haml
+++ b/app/views/admin/account/show.html.haml
@@ -1,8 +1,6 @@
-
- content_for :page_title do
= t(:account)
-
- if @invoices.empty?
%h4= t(:no_invoices_to_display)
diff --git a/app/views/admin/accounts_and_billing_settings/edit.html.haml b/app/views/admin/accounts_and_billing_settings/edit.html.haml
index 72ce7920a9..83cfbbb76e 100644
--- a/app/views/admin/accounts_and_billing_settings/edit.html.haml
+++ b/app/views/admin/accounts_and_billing_settings/edit.html.haml
@@ -9,7 +9,7 @@
%fieldset.no-border-bottom
%legend
- =t :admin_settings
+ = t(:admin_settings)
= form_for @settings, as: :settings, url: main_app.admin_accounts_and_billing_settings_path, :method => :put do |f|
.row{ ng: { app: 'admin.accounts_and_billing_settings' } }
.twelve.columns.alpha.omega
diff --git a/app/views/admin/cache_settings/show.html.haml b/app/views/admin/cache_settings/show.html.haml
index 79b3e5acaf..f2069f0e55 100644
--- a/app/views/admin/cache_settings/show.html.haml
+++ b/app/views/admin/cache_settings/show.html.haml
@@ -4,10 +4,10 @@
%table.index
%thead
%tr
- %th Distributor
- %th Order Cycle
- %th Status
- %th Diff
+ %th= t('.distributor')
+ %th= t('.order_cycle')
+ %th= t('.status')
+ %th= t('.diff')
%tbody
- @results.each do |result|
%tr
diff --git a/app/views/admin/contents/edit.html.haml b/app/views/admin/contents/edit.html.haml
index 82751abebc..e0bdb0adc0 100644
--- a/app/views/admin/contents/edit.html.haml
+++ b/app/views/admin/contents/edit.html.haml
@@ -1,8 +1,7 @@
= render 'spree/admin/shared/configuration_menu'
- content_for :page_title do
- Content
-
+ = t('.title')
= form_tag main_app.admin_content_path, method: :put, multipart: true do
#preferences
diff --git a/app/views/admin/enterprise_fees/index.html.haml b/app/views/admin/enterprise_fees/index.html.haml
index ec62fa5d36..3a2dae96b1 100644
--- a/app/views/admin/enterprise_fees/index.html.haml
+++ b/app/views/admin/enterprise_fees/index.html.haml
@@ -1,5 +1,5 @@
= content_for :page_title do
- =t :Enterprise_Fees
+ = t('.title')
= ng_form_for @enterprise_fee_set, :url => main_app.bulk_update_admin_enterprise_fees_path, :html => {'ng-app' => 'admin.enterpriseFees', 'ng-controller' => 'enterpriseFeesCtrl'} do |enterprise_fee_set_form|
= hidden_field_tag 'enterprise_id', @enterprise.id if @enterprise
@@ -12,17 +12,17 @@
%thead
%tr
%th
- =t'Enterprise'
+ = t('.enterprise')
%th
- =t'fee_type'
+ = t('.fee_type')
%th
- =t'name'
+ = t('.name')
%th
- =t'tax_category'
+ = t('.tax_category')
%th
- =t'calculator'
+ = t('.calculator')
%th
- =t'calculator_values'
+ = t('.calculator_values')
%th.actions
%tbody
= enterprise_fee_set_form.ng_fields_for :collection do |f|
diff --git a/app/views/admin/enterprise_groups/index.html.haml b/app/views/admin/enterprise_groups/index.html.haml
index 747eff0b94..2540c64980 100644
--- a/app/views/admin/enterprise_groups/index.html.haml
+++ b/app/views/admin/enterprise_groups/index.html.haml
@@ -3,7 +3,7 @@
- if admin_user?
= content_for :page_actions do
- %li= button_link_to "New Enterprise Group", main_app.new_admin_enterprise_group_path
+ %li= button_link_to t('.new_button'), main_app.new_admin_enterprise_group_path
%table.index#listing_enterprise_groups
%thead
diff --git a/app/views/admin/enterprises/_actions.html.haml b/app/views/admin/enterprises/_actions.html.haml
index 5bcfc7a512..d5b3ae14a9 100644
--- a/app/views/admin/enterprises/_actions.html.haml
+++ b/app/views/admin/enterprises/_actions.html.haml
@@ -1,4 +1,4 @@
-= link_to_with_icon('icon-edit', 'Edit Profile', main_app.edit_admin_enterprise_path(enterprise), class: 'edit')
+= link_to_with_icon('icon-edit', t('.edit_profile'), main_app.edit_admin_enterprise_path(enterprise), class: 'edit')
%br/
- if can? :destroy, enterprise
@@ -6,27 +6,27 @@
%br/
- if enterprise.is_primary_producer
- = link_to_with_icon 'icon-dashboard', 'Properties', main_app.admin_enterprise_producer_properties_path(enterprise_id: enterprise)
+ = link_to_with_icon 'icon-dashboard', t('.properties'), main_app.admin_enterprise_producer_properties_path(enterprise_id: enterprise)
(#{enterprise.producer_properties.count})
%br/
- if enterprise.is_distributor
- if can?(:admin, Spree::PaymentMethod) && can?(:manage_payment_methods, enterprise)
- = link_to_with_icon 'icon-chevron-right', 'Payment Methods', spree.admin_payment_methods_path(enterprise_id: enterprise.id)
+ = link_to_with_icon 'icon-chevron-right', t('.payment_methods'), spree.admin_payment_methods_path(enterprise_id: enterprise.id)
(#{enterprise.payment_methods.count})
- if enterprise.payment_methods.count == 0
- %span.icon-exclamation-sign{"ofn-with-tip" => "This enterprise has no payment methods", style: "font-size: 16px;color: #DA5354"}
+ %span.icon-exclamation-sign{"ofn-with-tip" => t('.payment_methods_tip'), style: "font-size: 16px;color: #DA5354"}
%br/
- if can?(:admin, Spree::ShippingMethod) && can?(:manage_shipping_methods, enterprise)
- = link_to_with_icon 'icon-plane', 'Shipping Methods', spree.admin_shipping_methods_path(enterprise_id: enterprise.id)
+ = link_to_with_icon 'icon-plane', t('.shipping_methods'), spree.admin_shipping_methods_path(enterprise_id: enterprise.id)
(#{enterprise.shipping_methods.count})
- if enterprise.shipping_methods.count == 0
- %span.icon-exclamation-sign{"ofn-with-tip" => "This enterprise has shipping methods", style: "font-size: 16px;color: #DA5354"}
+ %span.icon-exclamation-sign{"ofn-with-tip" => t('.shipping_methods_tip'), style: "font-size: 16px;color: #DA5354"}
%br/
- if can?(:admin, EnterpriseFee) && can?(:manage_enterprise_fees, enterprise)
- = link_to_with_icon 'icon-money', 'Enterprise Fees', main_app.admin_enterprise_fees_path(enterprise_id: enterprise.id)
+ = link_to_with_icon 'icon-money', t('.enterprise_fees'), main_app.admin_enterprise_fees_path(enterprise_id: enterprise.id)
(#{enterprise.enterprise_fees.count})
- if enterprise.enterprise_fees.count == 0
- %span.icon-warning-sign{"ofn-with-tip" => "This enterprise has no fees", style: "font-size: 16px;color: orange"}
+ %span.icon-warning-sign{"ofn-with-tip" => t('.enterprise_fees_tip'), style: "font-size: 16px;color: orange"}
diff --git a/app/views/admin/enterprises/_admin_index.html.haml b/app/views/admin/enterprises/_admin_index.html.haml
index 2359f45f78..5e1eb4c92c 100644
--- a/app/views/admin/enterprises/_admin_index.html.haml
+++ b/app/views/admin/enterprises/_admin_index.html.haml
@@ -15,13 +15,13 @@
%col{style: "width: 25%;"}/
%thead
%tr{"data-hook" => "enterprises_header"}
- %th Name
- %th Role
+ %th= t('.name')
+ %th= t('.role')
- if spree_current_user.admin?
- %th Sells
- %th Visible?
+ %th= t('.sells')
+ %th= t('.visible')
- if spree_current_user.admin?
- %th Owner
+ %th= t('.owner')
%th
%tbody
= f.fields_for :collection do |enterprise_form|
@@ -30,7 +30,7 @@
%td= link_to enterprise.name, main_app.edit_admin_enterprise_path(enterprise)
%td
= enterprise_form.check_box :is_primary_producer
- Producer
+ = t('.producer')
- if spree_current_user.admin?
%td= enterprise_form.select :sells, Enterprise::SELLS, {}, class: 'select2 fullwidth'
%td= enterprise_form.check_box :visible
@@ -41,4 +41,4 @@
- if @enterprises.empty?
%tr
%td{colspan: "4"}= t(:none)
- = f.submit 'Update'
+ = f.submit t(:update)
diff --git a/app/views/admin/enterprises/_change_type_form.html.haml b/app/views/admin/enterprises/_change_type_form.html.haml
index ac5ca55821..a7c07ab87b 100644
--- a/app/views/admin/enterprises/_change_type_form.html.haml
+++ b/app/views/admin/enterprises/_change_type_form.html.haml
@@ -12,36 +12,36 @@
.basic_producer.option.one-third.column.alpha
%a.full-width.button.selector{ ng: { click: "sells='none'", class: "{selected: sells=='none'}" } }
.top
- %h3 Producer Profile
- %p Connect through OFN
- .bottom ALWAYS FREE
+ %h3= t('.producer_profile')
+ %p= t('.connect_ofn')
+ .bottom= t('.always_free')
%p.description
- Add your products to Open Food Network, allowing hubs to stock your products in their stores.
+ = t('.producer_description_text')
.producer_shop.option.one-third.column
%a.full-width.button.selector{ ng: { click: "sells='own'", class: "{selected: sells=='own'}" } }
.top
- %h3 Producer Shop
- %p Sell your own produce
+ %h3= t('.producer_shop')
+ %p= t('.sell_your_produce')
.bottom
%monthly-pricing-description{ joiner: "newline" }
%p.description
- Sell your products directly to customers through your very own Open Food Network shopfront.
+ = t('.producer_description_text')
%br
%br
- A Producer Shop is for your produce only, if you want to sell produce grown/produced off site, select 'Producer Hub'.
+ = t('.producer_description_text2')
.full_hub.option.one-third.column.omega
%a.full-width.button.selector{ ng: { click: "sells='any'", class: "{selected: sells=='any'}" } }
.top
- %h3 Producer Hub
- %p Sell produce from self and others
+ %h3= t('.producer_hub')
+ %p= t('.producer_hub_text')
.bottom
%monthly-pricing-description{ joiner: "newline" }
%p.description
- Your enterprise is the backbone of your local food system. You can sell your own produce as well as produce aggregated from other enterprises through your shopfront on the Open Food Network.
+ = t('.producer_hub_description_text')
-# %p.description
-# Test out having your own shopfront with full access to all Shopfront features for 30 days.
@@ -55,38 +55,38 @@
.shop_profile.option.six.columns
%a.full-width.button.selector{ ng: { click: "sells='none'", class: "{selected: sells=='none'}" } }
.top
- %h3 Profile Only
- %p Get a listing
- .bottom ALWAYS FREE
+ %h3= t('.profile')
+ %p= t('.get_listing')
+ .bottom= t('.always_free')
%p.description
- People can find and contact you on the Open Food Network. Your enterprise will be visible on the map, and will be searchable in listings.
+ = t('.profile_description_text')
.full_hub.option.six.columns
%a.full-width.button.selector{ ng: { click: "sells='any'", class: "{selected: sells=='any'}" } }
.top
- %h3 Hub Shop
- %p Sell produce from others
+ %h3= t('.hub_shop')
+ %p= t('.hub_shop_text')
.bottom
%monthly-pricing-description{ joiner: "newline" }
%p.description
- Your enterprise is the backbone of your local food system. You aggregate produce from other enterprises and can sell it through your shop on the Open Food Network.
+ = t('.hub_shop_description_text')
.two.columns.omega
.row
.sixteen.columns.alpha
%span.error{ ng: { show: "(change_type.sells.$error.required || change_type.sells.$error.pattern) && submitted" } }
- Please choose one of the options above.
+ = t('.choose_option')
- if @enterprise.sells == 'unspecified' && @enterprise.shop_trial_start_date.nil?
-if free_use?
- %input.button.big{ type: 'submit', value: 'Select and continue', ng: { click: "submit(change_type)" } }
+ %input.button.big{ type: 'submit', value: t(:select_continue), ng: { click: "submit(change_type)" } }
- else
- trial_length = Spree::Config[:shop_trial_length_days]
%input.button.big{ type: 'submit', value: "Start #{trial_length}-Day Shop Trial", ng: { click: "submit(change_type)", show: "sells=='own' || sells=='any'" } }
- %input.button.big{ type: 'submit', value: 'Select and continue', ng: { click: "submit(change_type)", hide: "sells=='own' || sells=='any'" } }
+ %input.button.big{ type: 'submit', value: t(:select_continue), ng: { click: "submit(change_type)", hide: "sells=='own' || sells=='any'" } }
- elsif @enterprise.sells == 'unspecified'
- %input.button.big{ type: 'submit', value: 'Select and continue', ng: { click: "submit(change_type)" } }
+ %input.button.big{ type: 'submit', value: t(:select_continue), ng: { click: "submit(change_type)" } }
- else
- %input.button.big{ type: 'submit', value: 'Change now', ng: { click: "submit(change_type)" } }
+ %input.button.big{ type: 'submit', value: t('.change_now'), ng: { click: "submit(change_type)" } }
%br
%hr
diff --git a/app/views/admin/enterprises/_enterprise_user_index.html.haml b/app/views/admin/enterprises/_enterprise_user_index.html.haml
index d89970946d..4b777e127b 100644
--- a/app/views/admin/enterprises/_enterprise_user_index.html.haml
+++ b/app/views/admin/enterprises/_enterprise_user_index.html.haml
@@ -2,7 +2,7 @@
.row{ 'ng-hide' => '!loaded' }
.controls{ :class => "sixteen columns alpha", :style => "margin-bottom: 15px;" }
.four.columns.alpha
- %input{ :class => "fullwidth", :type => "text", :id => 'quick_search', 'ng-model' => 'quickSearch', :placeholder => 'Search By Name' }
+ %input{ :class => "fullwidth", :type => "text", :id => 'quick_search', 'ng-model' => 'quickSearch', :placeholder => t('.search_placeholder') }
.six.columns
-# = render 'admin/shared/bulk_actions_dropdown'
.three.columns
@@ -41,7 +41,7 @@
%i.icon-status{ ng: { class: "enterprise.status" } }
%td.manage{ ng: { show: 'columns.manage.visible' } }
%a.button.fullwidth{ ng: { href: '{{::enterprise.edit_path}}' } }
- Manage
+ = t('.manage')
%i.icon-arrow-right
%tr.panel-row{ object: "enterprise", panels: "{producer: 'enterprise_producer', package: 'enterprise_package', status: 'enterprise_status'}" }
diff --git a/app/views/admin/enterprises/_new_form.html.haml b/app/views/admin/enterprises/_new_form.html.haml
index ba8fce56ae..f04e55acd6 100644
--- a/app/views/admin/enterprises/_new_form.html.haml
+++ b/app/views/admin/enterprises/_new_form.html.haml
@@ -1,98 +1,97 @@
.row
.three.columns.alpha
- = f.label :name
+ = f.label :name, t('admin.enterprises.form.primary_details.name')
%span.required *
.nine.columns.omega
- = f.text_field :name, { placeholder: "eg. Professor Plum's Biodynamic Truffles", class: "fullwidth" }
+ = f.text_field :name, { placeholder: t('admin.enterprises.form.primary_details.name_placeholder'), class: "fullwidth" }
- if spree_current_user.admin?
.row
.three.columns.alpha
- =f.label :owner_id, 'Owner'
+ =f.label :owner_id, t('.owner')
%span.required *
- %div{'ofn-with-tip' => "The primary user responsible for this enterprise."}
- %a What's this?
+ %div{'ofn-with-tip' => t('.owner_tip')}
+ %a= t('admin.whats_this')
.nine.columns.omega
- owner_email = @enterprise.andand.owner.andand.email || ""
= f.hidden_field :owner_id, class: "select2 fullwidth", 'user-select' => 'Enterprise.owner'
.row
.three.columns.alpha
- %label Primary Producer?
- %div{'ofn-with-tip' => "Select 'Producer' if you are a primary producer of food."}
- %a What's this?
+ %label= t('admin.enterprises.form.primary_details.primary_producer')
+ %div{'ofn-with-tip' => t('admin.enterprises.form.primary_details.primary_producer_tip')}
+ %a= t('admin.whats_this')
.five.columns.omega
= f.check_box :is_primary_producer, 'ng-model' => 'Enterprise.is_primary_producer'
- = f.label :is_primary_producer, 'I am a Producer'
+ = f.label :is_primary_producer, t('.i_am_producer')
- if spree_current_user.admin?
.row
.alpha.eleven.columns
.three.columns.alpha
- = f.label :sells, 'Sells'
- %div{'ofn-with-tip' => "None - enterprise does not sell to customers directly.
Own - Enterprise sells own products to customers.
Any - Enterprise can sell own or other enterprises products.
"}
+ = f.label :sells, t('admin.enterprises.form.primary_details.sells')
+ %div{'ofn-with-tip' => t('admin.enterprises.form.primary_details.sells_tip')}
%a What's this?
.two.columns
= f.radio_button :sells, "none", 'ng-model' => 'Enterprise.sells'
- = f.label :sells, "None", value: "none"
+ = f.label :sells, t('admin.enterprises.form.primary_details.none'), value: "none"
.two.columns
= f.radio_button :sells, "own", 'ng-model' => 'Enterprise.sells'
- = f.label :sells, "Own", value: "own"
+ = f.label :sells, t('admin.enterprises.form.primary_details.own'), value: "own"
.four.columns.omega
= f.radio_button :sells, "any", 'ng-model' => 'Enterprise.sells'
- = f.label :sells, "Any", value: "any"
-
+ = f.label :sells, t('admin.enterprises.form.primary_details.any'), value: "any"
.row
.alpha.three.columns
- = f.label :contact, 'Contact Name'
+ = f.label :contact, t('.contact_name')
.omega.nine.columns
- = f.text_field :contact, { placeholder: "eg. Gustav Plum"}
+ = f.text_field :contact, { placeholder: t('admin.enterprises.form.contact.name_placeholder')}
.row
.alpha.three.columns
- = f.label :email_address
+ = f.label :email_address, t('admin.enterprises.form.contact.email_address')
.omega.nine.columns
- = f.text_field :email_address, { placeholder: "eg. gustav@truffles.com", "ng-model" => "Enterprise.email_address" }
+ = f.text_field :email_address, { placeholder: t('admin.enterprises.form.contact.email_address_placeholder'), "ng-model" => "Enterprise.email_address" }
.row
.alpha.three.columns
- = f.label :phone
+ = f.label :phone, t('admin.enterprises.form.contact.phone')
.omega.nine.columns
- = f.text_field :phone, { placeholder: "eg. 98 7654 3210"}
+ = f.text_field :phone, { placeholder: t('admin.enterprises.form.contact.phone_placeholder')}
.row
.alpha.three.columns
- = f.label :website
+ = f.label :website, t('admin.enterprises.form.contact.website')
.omega.nine.columns
- = f.text_field :website, { placeholder: "eg. www.truffles.com"}
+ = f.text_field :website, { placeholder: t('admin.enterprises.form.contact.website_placeholder')}
= f.fields_for :address do |af|
.row
.three.columns.alpha
- = af.label :address1
+ = af.label :address1, t(:address)
%span.required *
.nine.columns.omega
- = af.text_field :address1, { placeholder: "eg. 123 High Street"}
+ = af.text_field :address1, { placeholder: t(:address_placeholder)}
.row
.alpha.three.columns
- = af.label :address2
+ = af.label :address2, t(:address2)
.nine.columns.omega
= af.text_field :address2
.row
.three.columns.alpha
- = af.label :city, 'Suburb'
+ = af.label :city, t(:city)
\/
- = af.label :zipcode, 'Postcode'
+ = af.label :zipcode, t(:postcode)
%span.required *
.four.columns
- = af.text_field :city, { placeholder: "eg. Northcote"}
+ = af.text_field :city, { placeholder: t(:city_placeholder)}
.five.columns.omega
- = af.text_field :zipcode, { placeholder: "eg. 3070"}
+ = af.text_field :zipcode, { placeholder: t(:postcode_placeholder)}
.row
.three.columns.alpha
- = af.label :state_id, 'State'
+ = af.label :state_id, t(:state)
\/
- = af.label :country_id, 'Country'
+ = af.label :country_id, t(:country)
.four.columns
= af.collection_select :state_id, af.object.country.states, :id, :name, {}, :class => "select2 fullwidth"
.five.columns.omega
diff --git a/app/views/admin/enterprises/_ng_form.html.haml b/app/views/admin/enterprises/_ng_form.html.haml
index ca38b7eca4..17b649bcc6 100644
--- a/app/views/admin/enterprises/_ng_form.html.haml
+++ b/app/views/admin/enterprises/_ng_form.html.haml
@@ -8,8 +8,8 @@
} do |f|
%save-bar{ dirty: "enterprise_form.$dirty", persist: "true" }
- %input.red{ type: "button", value: "Update", ng: { click: "submit()", disabled: "!enterprise_form.$dirty" } }
- %input{ type: "button", ng: { value: "enterprise_form.$dirty ? 'Cancel' : 'Close'", click: "cancel('#{main_app.admin_enterprises_path}')" } }
+ %input.red{ type: "button", value: t(:update), ng: { click: "submit()", disabled: "!enterprise_form.$dirty" } }
+ %input{ type: "button", ng: { value: "enterprise_form.$dirty ? '#{t(:cancel)}' : '#{t(:close)}'", click: "cancel('#{main_app.admin_enterprises_path}')" } }
diff --git a/app/views/admin/enterprises/edit.html.haml b/app/views/admin/enterprises/edit.html.haml
index 5d3a623f40..2e53f3e2c0 100644
--- a/app/views/admin/enterprises/edit.html.haml
+++ b/app/views/admin/enterprises/edit.html.haml
@@ -1,12 +1,11 @@
-= render :partial => 'spree/shared/error_messages', :locals => { :target => @enterprise }
+= render partial: 'spree/shared/error_messages', locals: { target: @enterprise }
- content_for :page_title do
- Editing:
+ = t('.editing')
= @enterprise.name
- content_for :page_actions do
- %li= button_link_to "Back to enterprises list", main_app.admin_enterprises_path, icon: 'icon-arrow-left'
-
+ %li= button_link_to t('.back_link'), main_app.admin_enterprises_path, icon: 'icon-arrow-left'
= render 'admin/enterprises/form_data'
diff --git a/app/views/admin/enterprises/form/_about_us.html.haml b/app/views/admin/enterprises/form/_about_us.html.haml
index a04437dad0..32550b711b 100644
--- a/app/views/admin/enterprises/form/_about_us.html.haml
+++ b/app/views/admin/enterprises/form/_about_us.html.haml
@@ -1,11 +1,11 @@
.row
.alpha.three.columns
- = f.label :description, 'Short Description'
+ = f.label :description, t('.desc_short')
.omega.eight.columns
- = f.text_field :description, maxlength: 255, placeholder: 'Tell us about your enterprise in one or two sentences'
+ = f.text_field :description, maxlength: 255, placeholder: t('.desc_short_placeholder')
.row
.alpha.three.columns
- = f.label :long_description, 'About Us'
+ = f.label :long_description, t('.desc_long')
.omega.eight.columns
-# textAngular toolbar options, add to the ta-toolbar array below and separate into groups with extra ],[ if needed:
-# ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'pre', 'quote'],
@@ -14,4 +14,4 @@
-# ['html', 'insertImage', 'insertLink', 'insertVideo']
%text-angular{'ng-model' => 'Enterprise.long_description', 'id' => 'enterprise_long_description', 'name' => 'enterprise[long_description]', 'class' => 'text-angular',
'ta-toolbar' => "[['h1','h2','h3','h4','p'],['bold','italics','underline','clear'],['insertLink']]",
- 'placeholder' => 'Tell customers about yourself. This information appears on your public profile.'}
\ No newline at end of file
+ 'placeholder' => t('.desc_long_placeholder')}
\ No newline at end of file
diff --git a/app/views/admin/enterprises/form/_address.html.haml b/app/views/admin/enterprises/form/_address.html.haml
index 68ae7d68bf..a1485d485f 100644
--- a/app/views/admin/enterprises/form/_address.html.haml
+++ b/app/views/admin/enterprises/form/_address.html.haml
@@ -1,34 +1,35 @@
-# redo denoting required fields in the whole project
.row
- Required fields are denoted with an asterisk (
+ = t(:required_fields)
+ (
%span.required *
)
.row
.three.columns.alpha
- = af.label :address1
+ = af.label :address1, t(:address)
%span.required *
.eight.columns.omega
- = af.text_field :address1, { placeholder: "eg. 123 High Street"}
+ = af.text_field :address1, { placeholder: t(:address_placeholder) }
.row
.alpha.three.columns
- = af.label :address2
+ = af.label :address2, t(:address2)
.eight.columns.omega
= af.text_field :address2
.row
.three.columns.alpha
- = af.label :city, 'Suburb'
+ = af.label :city, t(:city)
\/
- = af.label :zipcode, 'Postcode'
+ = af.label :zipcode, t(:postcode)
%span.required *
.four.columns
- = af.text_field :city, { placeholder: "eg. Northcote"}
+ = af.text_field :city, { placeholder: t(:city_placeholder) }
.four.columns.omega
- = af.text_field :zipcode, { placeholder: "eg. 3070"}
+ = af.text_field :zipcode, { placeholder: t(:postcode_placeholder) }
.row
.three.columns.alpha
- = af.label :state_id, 'State'
+ = af.label :state_id, t(:state)
\/
- = af.label :country_id, 'Country'
+ = af.label :country_id, t(:country)
%span.required *
.four.columns
= af.collection_select :state_id, af.object.country.states, :id, :name, {}, :class => "select2 fullwidth"
diff --git a/app/views/admin/enterprises/form/_business_details.html.haml b/app/views/admin/enterprises/form/_business_details.html.haml
index 92f727d8d3..4015e51282 100644
--- a/app/views/admin/enterprises/form/_business_details.html.haml
+++ b/app/views/admin/enterprises/form/_business_details.html.haml
@@ -1,14 +1,14 @@
.row
.alpha.three.columns
- = f.label :abn, 'ABN'
+ = f.label :abn, t('.abn')
.omega.eight.columns
- = f.text_field :abn, { placeholder: "eg. 99 123 456 789"}
+ = f.text_field :abn, { placeholder: t('.abn_placeholder') }
.row
.alpha.three.columns
- = f.label :acn, 'ACN'
+ = f.label :acn, t('.acn')
.omega.eight.columns
- = f.text_field :acn, { placeholder: "eg. 123 456 789"}
+ = f.text_field :acn, { placeholder: t('.acn_placeholder') }
.row
.three.columns.alpha
@@ -16,8 +16,8 @@
.two.columns
= f.radio_button :charges_sales_tax, true
- = f.label :charges_sales_tax, "Yes", :value => "true"
+ = f.label :charges_sales_tax, t(:say_yes), value: 'true'
.five.columns.omega
= f.radio_button :charges_sales_tax, false
- = f.label :charges_sales_tax, "No", :value => "false"
+ = f.label :charges_sales_tax, t(:say_no), value: 'false'
diff --git a/app/views/admin/enterprises/form/_contact.html.haml b/app/views/admin/enterprises/form/_contact.html.haml
index 28bbd6014b..1a7fa792f1 100644
--- a/app/views/admin/enterprises/form/_contact.html.haml
+++ b/app/views/admin/enterprises/form/_contact.html.haml
@@ -1,20 +1,20 @@
.row
.alpha.three.columns
- = f.label :contact, 'Name'
+ = f.label :contact, t('.name')
.omega.eight.columns
- = f.text_field :contact, { placeholder: "eg. Gustav Plum"}
+ = f.text_field :contact, { placeholder: t('.name_placeholder') }
.row
.alpha.three.columns
- = f.label :email_address
+ = f.label :email_address, t('.email_address')
.omega.eight.columns
- = f.text_field :email_address, { placeholder: "eg. gustav@truffles.com" }
+ = f.text_field :email_address, { placeholder: t('.email_address_placeholder') }
.row
.alpha.three.columns
- = f.label :phone
+ = f.label :phone, t('.phone')
.omega.eight.columns
- = f.text_field :phone, { placeholder: "eg. 98 7654 3210"}
+ = f.text_field :phone, { placeholder: t('.phone_placeholder') }
.row
.alpha.three.columns
- = f.label :website
+ = f.label :website, t('.website')
.omega.eight.columns
- = f.text_field :website, { placeholder: "eg. www.truffles.com"}
+ = f.text_field :website, { placeholder: t('.website_placeholder') }
diff --git a/app/views/admin/enterprises/form/_enterprise_fees.html.haml b/app/views/admin/enterprises/form/_enterprise_fees.html.haml
index 53e48f1be9..dcae9afbc4 100644
--- a/app/views/admin/enterprises/form/_enterprise_fees.html.haml
+++ b/app/views/admin/enterprises/form/_enterprise_fees.html.haml
@@ -2,8 +2,8 @@
%table
%thead
%tr
- %th Name
- %th Fee Type
+ %th= t('.name')
+ %th= t('.fee_type')
-# %th Calculator
-# %th Calculator Values
%tbody
@@ -16,15 +16,15 @@
%br
%div
%a.button{ href: "#{main_app.admin_enterprise_fees_path}"}
- Manage Enterprise Fees
+ = t('.manage_fees')
%i.icon-arrow-right
- else
%p.text-center
- You don't have any enterprise fees yet.
+ = t('.no_fees_yet')
%br
.text-center
%a.button{ href: "#{main_app.admin_enterprise_fees_path}"}
- Create One Now
+ = t('.create_button')
%i.icon-arrow-right
diff --git a/app/views/admin/enterprises/form/_images.html.haml b/app/views/admin/enterprises/form/_images.html.haml
index c03be2caa3..97d31dabcc 100644
--- a/app/views/admin/enterprises/form/_images.html.haml
+++ b/app/views/admin/enterprises/form/_images.html.haml
@@ -8,11 +8,13 @@
= f.file_field :logo
.row
.alpha.three.columns
- = f.label :promo_image, 'ofn-with-tip' => 'This image is displayed in "About Us"'
+ = f.label :promo_image, 'ofn-with-tip' => t('.promo_image_placeholder')
%br/
- %span{ style: 'font-weight:bold' } PLEASE NOTE:
- Any promo image uploaded here will be cropped to 1200 x 260.
- The promo image is displayed at the top of an enterprise's profile page and pop-ups.
+ %span{ style: 'font-weight:bold' }= t('.promo_image_note1')
+ %br
+ = t('.promo_image_note2')
+ %br
+ = t('.promo_image_note3')
.omega.eight.columns
= image_tag @object.promo_image(:large) if @object.promo_image.present?
diff --git a/app/views/admin/enterprises/form/_inventory_settings.html.haml b/app/views/admin/enterprises/form/_inventory_settings.html.haml
index 0df0fdb35f..c055a1231f 100644
--- a/app/views/admin/enterprises/form/_inventory_settings.html.haml
+++ b/app/views/admin/enterprises/form/_inventory_settings.html.haml
@@ -3,16 +3,17 @@
-# their inventory if they so choose
.row
.alpha.eleven.columns
- You may opt to manage stock levels and prices in via your
+ = t('.text1')
= succeed "." do
%strong
- %a{href: main_app.admin_inventory_path } inventory
- If you are using the inventory tool, you can select whether new products added by your suppliers need to be added to your inventory before they can be stocked. If you are not using your inventory to manage your products you should select the 'recommended' option below:
+ %a{href: main_app.admin_inventory_path }= t('.inventory')
+ %br
+ = t('.text2')
.row
.alpha.eleven.columns
.five.columns.alpha
= radio_button :enterprise, :preferred_product_selection_from_inventory_only, "0", { 'ng-model' => 'Enterprise.preferred_product_selection_from_inventory_only' }
- = label :enterprise, :preferred_product_selection_from_inventory_only, "New products can be put into my shopfront (recommended)"
+ = label :enterprise, :preferred_product_selection_from_inventory_only, t('.preferred_product_selection_from_inventory_only_yes')
.six.columns.omega
= radio_button :enterprise, :preferred_product_selection_from_inventory_only, "1", { 'ng-model' => 'Enterprise.preferred_product_selection_from_inventory_only' }
- = label :enterprise, :preferred_product_selection_from_inventory_only, "New products must be added to my inventory before they can be put into my shopfront"
+ = label :enterprise, :preferred_product_selection_from_inventory_only, t('.preferred_product_selection_from_inventory_only_no')
diff --git a/app/views/admin/enterprises/form/_payment_methods.html.haml b/app/views/admin/enterprises/form/_payment_methods.html.haml
index 57d9426d03..efcde16dc0 100644
--- a/app/views/admin/enterprises/form/_payment_methods.html.haml
+++ b/app/views/admin/enterprises/form/_payment_methods.html.haml
@@ -2,32 +2,32 @@
%table
%thead
%tr
- %th Name
- %th Applies?
+ %th= t('.name')
+ %th= t('.applies')
%th
%tbody
- @payment_methods.each do |payment_method|
%tr{ ng: { controller: 'paymentMethodsCtrl', init: "findPaymentMethodByID(#{payment_method.id})" } }
%td= payment_method.name
%td= f.check_box :payment_method_ids, { multiple: true, 'ng-model' => 'PaymentMethod.selected' }, payment_method.id, nil
- %td= link_to "Edit", edit_admin_payment_method_path(payment_method)
+ %td= link_to t(:edit), edit_admin_payment_method_path(payment_method)
%br
.row
.six.columns.alpha
%a.button{ href: "#{admin_payment_methods_path}"}
- Manage Payment Methods
+ = t('.manage')
%i.icon-arrow-right
.five.columns.omega.text-right
%a.button{ href: "#{new_admin_payment_method_path}"}
- Create New Payment Method
+ = t('.create_button')
%i.icon-plus
- else
%p.text-center
- You don't have any payment methods yet.
+ = t('.no_method_yet')
%br
.text-center
%a.button{ href: "#{new_admin_payment_method_path}"}
- Create One Now
+ = t('.create_one_button')
%i.icon-arrow-right
diff --git a/app/views/admin/enterprises/form/_primary_details.html.haml b/app/views/admin/enterprises/form/_primary_details.html.haml
index 52b2ffebce..aad869288e 100644
--- a/app/views/admin/enterprises/form/_primary_details.html.haml
+++ b/app/views/admin/enterprises/form/_primary_details.html.haml
@@ -1,61 +1,61 @@
.row
.alpha.eleven.columns
.three.columns.alpha
- = f.label :name
+ = f.label :name, t('.name')
%span.required *
.eight.columns.omega
- = f.text_field :name, { placeholder: "eg. Professor Plum's Biodynamic Truffles" }
+ = f.text_field :name, { placeholder: t('.name_placeholder') }
- if @groups.present?
.row
.alpha.eleven.columns
.three.columns.alpha
- = f.label :group_ids, 'Groups'
- %div{'ofn-with-tip' => "Select any groups or regions that you are a member of. This will help customers find your enterprise."}
- %a What's this?
+ = f.label :group_ids, t('.groups')
+ %div{'ofn-with-tip' => t('.groups_tip')}
+ %a= t('admin.whats_this')
.eight.columns.omega
- = f.collection_select :group_ids, @groups, :id, :name, {}, class: "select2 fullwidth", multiple: true, placeholder: "Start typing to search available groups..."
+ = f.collection_select :group_ids, @groups, :id, :name, {}, class: "select2 fullwidth", multiple: true, placeholder: t('.groups_placeholder')
.row
.three.columns.alpha
- %label Primary Producer
- %div{'ofn-with-tip' => "Select 'Producer' if you are a primary producer of food."}
- %a What's this?
+ %label= t('.primary_producer')
+ %div{'ofn-with-tip' => t('.primary_producer_tip')}
+ %a= t('admin.whats_this')
.five.columns.omega
= f.check_box :is_primary_producer, 'ng-model' => 'Enterprise.is_primary_producer'
- = f.label :is_primary_producer, 'Producer'
+ = f.label :is_primary_producer, t('.producer')
- if spree_current_user.admin?
.row
.alpha.eleven.columns
.three.columns.alpha
- = f.label :sells, 'Sells'
- %div{'ofn-with-tip' => "None - enterprise does not sell to customers directly.
Own - Enterprise sells own products to customers.
Any - Enterprise can sell own or other enterprises products.
"}
- %a What's this?
+ = f.label :sells, t('.sells')
+ %div{'ofn-with-tip' => t('.sells_tip')}
+ %a= t('admin.whats_this')
.two.columns
= f.radio_button :sells, "none", 'ng-model' => 'Enterprise.sells'
- = f.label :sells, "None", value: "none"
+ = f.label :sells, t('.none'), value: "none"
.two.columns
= f.radio_button :sells, "own", 'ng-model' => 'Enterprise.sells'
- = f.label :sells, "Own", value: "own"
+ = f.label :sells, t('.own'), value: "own"
.four.columns.omega
= f.radio_button :sells, "any", 'ng-model' => 'Enterprise.sells'
- = f.label :sells, "Any", value: "any"
+ = f.label :sells, t('.any'), value: "any"
.row
.three.columns.alpha
- %label Visible in search?
- %div{'ofn-with-tip' => "Determines whether this enterprise will be visible to customers when searching the site."}
- %a What's this?
+ %label= t('.visible_in_search')
+ %div{'ofn-with-tip' => t('.visible_in_search_tip')}
+ %a= t('admin.whats_this')
.two.columns
= f.radio_button :visible, true
- = f.label :visible, "Visible", :value => "true"
+ = f.label :visible, t('.visible'), value: 'true'
.five.columns.omega
= f.radio_button :visible, false
- = f.label :visible, "Not Visible", :value => "false"
+ = f.label :visible, t('.not_visible'), value: 'false'
.permalink{ ng: { controller: "permalinkCtrl" } }
.row{ ng: { show: "Enterprise.sells == 'own' || Enterprise.sells == 'any'" } }
.three.columns.alpha
- = f.label :permalink, 'Permalink (no spaces)'
- %div{'ofn-with-tip' => "This permalink is used to create the url to your shop: #{spree.root_url}your-shop-name/shop"}
- %a What's this?
+ = f.label :permalink, t('.permalink')
+ %div{'ofn-with-tip' => t('.permalink_tip', link: spree.root_url)}
+ %a= t('admin.whats_this')
.six.columns
= f.text_field :permalink, { 'ng-model' => "Enterprise.permalink", placeholder: "eg. your-shop-name", 'ng-model-options' => "{ updateOn: 'default blur', debounce: {'default': 300, 'blur': 0} }" }
.two.columns.omega
@@ -65,9 +65,9 @@
%i{ ng: { class: "{'icon-ok-sign': availability == 'Available', 'icon-remove-sign': availability == 'Unavailable'}" } }
.row{ ng: { show: "Enterprise.sells == 'own' || Enterprise.sells == 'any'" } }
.three.columns.alpha
- %label Link to shop front
- %div{'ofn-with-tip' => "A direct link to your shopfront on the Open Food Network."}
- %a What's this?
+ %label= t('.link_to_front')
+ %div{'ofn-with-tip' => t('.link_to_front_tip')}
+ %a= t('admin.whats_this')
.eight.columns.omega
= surround spree.root_url, "/shop" do
{{Enterprise.permalink}}
diff --git a/app/views/admin/enterprises/form/_shipping_methods.html.haml b/app/views/admin/enterprises/form/_shipping_methods.html.haml
index 5ccc22a720..db7daa5b98 100644
--- a/app/views/admin/enterprises/form/_shipping_methods.html.haml
+++ b/app/views/admin/enterprises/form/_shipping_methods.html.haml
@@ -2,8 +2,8 @@
%table
%thead
%tr
- %th Name
- %th Applies?
+ %th= t('.name')
+ %th= t('.applies')
%th
%tbody
- @shipping_methods.each do |shipping_method|
@@ -15,19 +15,19 @@
.row
.six.columns.alpha
%a.button{ href: "#{admin_shipping_methods_path}"}
- Manage Shipping Methods
+ = t('.manage')
%i.icon-arrow-right
.five.columns.omega.text-right
%a.button{ href: "#{new_admin_shipping_method_path}"}
- Create New Shipping Method
+ = t('.create_button')
%i.icon-plus
- else
%p.text-center
- You don't have any shipping methods yet.
+ = t('.no_method_yet')
%br
.text-center
%a.button{ href: "#{new_admin_shipping_method_path}"}
- Create One Now
+ = t('.create_one_button')
%i.icon-arrow-right
diff --git a/app/views/admin/enterprises/form/_shop_preferences.html.haml b/app/views/admin/enterprises/form/_shop_preferences.html.haml
index 6573e4f3b4..0e5a1096f0 100644
--- a/app/views/admin/enterprises/form/_shop_preferences.html.haml
+++ b/app/views/admin/enterprises/form/_shop_preferences.html.haml
@@ -5,7 +5,7 @@
.eight.columns.omega
%text-angular{'ng-model' => 'Enterprise.preferred_shopfront_message', 'id' => 'enterprise_preferred_shopfront_message', 'name' => 'enterprise[preferred_shopfront_message]', 'class' => 'text-angular',
'ta-toolbar' => "[['h1','h2','h3','h4','p'],['bold','italics','underline','clear'],['insertLink']]",
- 'placeholder' => 'An optional explanation for customers detailing how your shopfront works, to be displayed above the product list on your shop page.'}
+ 'placeholder' => t('.shopfront_message_placeholder')}
.row
.alpha.eleven.columns
.three.columns.alpha
@@ -13,7 +13,7 @@
.eight.columns.omega
%text-angular{'ng-model' => 'Enterprise.preferred_shopfront_closed_message', 'id' => 'enterprise_preferred_shopfront_closed_message', 'name' => 'enterprise[preferred_shopfront_closed_message]', 'class' => 'text-angular',
'ta-toolbar' => "[['h1','h2','h3','h4','p'],['bold','italics','underline','clear'],['insertLink']]",
- 'placeholder' => 'A message which provides a more detailed explanation about why your shop is closed and/or when customers can expect it to open again. This is displayed on your shop only when you have no active order cycles (ie. shop is closed).'}
+ 'placeholder' => t('.shopfront_closed_message_placeholder')}
.row
.alpha.eleven.columns
.three.columns.alpha
@@ -29,10 +29,10 @@
= f.label "enterprise_preferred_shopfront_order_cycle_order", t(:sort_order_cycles_on_shopfront_by)
.three.columns
= radio_button :enterprise, :preferred_shopfront_order_cycle_order, :orders_open_at, { 'ng-model' => 'Enterprise.preferred_shopfront_order_cycle_order' }
- = label :enterprise, :preferred_shopfront_order_cycle_order_orders_open_at, "Open Date"
+ = label :enterprise, :preferred_shopfront_order_cycle_order_orders_open_at, t('.open_date')
.five.columns.omega
= radio_button :enterprise, :preferred_shopfront_order_cycle_order, :orders_close_at, { 'ng-model' => 'Enterprise.preferred_shopfront_order_cycle_order' }
- = label :enterprise, :preferred_shopfront_order_cycle_order_orders_close_at, "Close Date"
+ = label :enterprise, :preferred_shopfront_order_cycle_order_orders_close_at, t('.close_date')
.row
.alpha.eleven.columns
.three.columns.alpha
diff --git a/app/views/admin/enterprises/form/_social.html.haml b/app/views/admin/enterprises/form/_social.html.haml
index 1909a6fc4a..11939739c1 100644
--- a/app/views/admin/enterprises/form/_social.html.haml
+++ b/app/views/admin/enterprises/form/_social.html.haml
@@ -17,4 +17,4 @@
.alpha.three.columns
= f.label :twitter
.omega.eight.columns
- = f.text_field :twitter, { placeholder: "eg. @the_prof" }
\ No newline at end of file
+ = f.text_field :twitter, { placeholder: t('.twitter_placeholder') }
\ No newline at end of file
diff --git a/app/views/admin/enterprises/form/_tag_rules.html.haml b/app/views/admin/enterprises/form/_tag_rules.html.haml
index e58f7c5a62..822ea3f1ff 100644
--- a/app/views/admin/enterprises/form/_tag_rules.html.haml
+++ b/app/views/admin/enterprises/form/_tag_rules.html.haml
@@ -2,7 +2,7 @@
.eleven.columns.alpha.omega
%ofn-sortable{ axis: "y", handle: ".header", items: '.customer_tag', position: "tagGroup.position", after: { sort: "updateRuleCounts()" } }
.no_tags{ ng: { show: "tagGroups.length == 0" } }
- No tags apply to this enterprise yet
+ = t('.no_tags_yet')
= render 'admin/enterprises/form/tag_rules/default_rules'
-# = render 'customer_tags'
.customer_tag{ id: "tg_{{tagGroup.position}}", ng: { repeat: "tagGroup in tagGroups" } }
@@ -14,14 +14,14 @@
%tr
%td
%h5
- For customers tagged:
+ = t('.for_customers_tagged')
%td
%tags-with-translation{ object: "tagGroup", max: 1, on: { tag: { added: "updateTagsRulesFor(tagGroup)", removed: "updateTagsRulesFor(tagGroup)" } } }
.no_rules{ ng: { show: "tagGroup.rules.length == 0" } }
- No rules apply to this tag yet
+ = t('.no_rules_yet')
.tag_rule{ ng: { repeat: "rule in tagGroup.rules" } }
.add_rule.text-center
- %input.button.icon-plus{ type: 'button', value: "+ Add A New Rule", "add-new-rule-to" => "addNewRuleTo", "tag-group" => "tagGroup", "new-tag-rule-dialog" => true }
+ %input.button.icon-plus{ type: 'button', value: t('.add_new_rule'), "add-new-rule-to" => "addNewRuleTo", "tag-group" => "tagGroup", "new-tag-rule-dialog" => true }
.add_tag
- %input.button.red.icon-plus{ type: 'button', value: "+ Add A New Tag", ng: { click: 'addNewTag()' } }
+ %input.button.red.icon-plus{ type: 'button', value: t('.add_new_tag'), ng: { click: 'addNewTag()' } }
diff --git a/app/views/admin/enterprises/form/_users.html.haml b/app/views/admin/enterprises/form/_users.html.haml
index 42e25fad0a..a0b5b7e662 100644
--- a/app/views/admin/enterprises/form/_users.html.haml
+++ b/app/views/admin/enterprises/form/_users.html.haml
@@ -4,19 +4,17 @@
-if @enterprise.pending_any_confirmation?
.alert-box
- email = @enterprise.confirmed? ? @enterprise.unconfirmed_email : @enterprise.email
- Email confirmation is pending.
- We've sent a confirmation email to
- %strong= "#{email}."
- = link_to('Resend', main_app.enterprise_confirmation_path(enterprise: { id: @enterprise.id, email: email } ), method: :post)
+ = t('.email_confirmation_notice_html', {email: "#{email}".html_safe})
+ = link_to(t('.resend'), main_app.enterprise_confirmation_path(enterprise: { id: @enterprise.id, email: email } ), method: :post)
%a.close{ href: "#" } ×
.row
.three.columns.alpha
- =f.label :owner_id, 'Owner'
+ =f.label :owner_id, t('.owner')
- if full_permissions
%span.required *
- %div{'ofn-with-tip' => "The primary user responsible for this enterprise."}
- %a What's this?
+ %div{'ofn-with-tip' => t('.owner_tip')}
+ %a= t('admin.whats_this')
.eight.columns.omega
- if full_permissions
= f.hidden_field :owner_id, class: "select2 fullwidth", 'user-select' => 'Enterprise.owner'
@@ -25,29 +23,29 @@
.row
.three.columns.alpha
- = f.label :email, 'Notifications'
+ = f.label :email, t('.notifications')
- if full_permissions
%span.required *
- .with-tip{'data-powertip' => "Notifications about orders will be send to this email address."}
- %a What's this?
+ .with-tip{'data-powertip' => t('.notifications_tip')}
+ %a= t('admin.whats_this')
.eight.columns.omega
- if full_permissions
- = f.text_field :email, { placeholder: "eg. gustav@truffles.com", "ng-model" => "Enterprise.email" }
+ = f.text_field :email, { placeholder: t('.notifications_placeholder'), "ng-model" => "Enterprise.email" }
- else
= @enterprise.email
.row{ ng: { hide: "pristineEmail == null || pristineEmail == Enterprise.email"} }
.alpha.three.columns
.omega.eight.columns
- Note: A new email address may need to be confirmed prior to use
+ = t('.notifications_note')
.row
.three.columns.alpha
- =f.label :user_ids, 'Managers'
+ =f.label :user_ids, t('.managers')
- if full_permissions
%span.required *
- %div{'ofn-with-tip' => "The other users with permission to manage this enterprise."}
- %a What's this?
+ %div{'ofn-with-tip' => t('.managers_tip')}
+ %a= t('admin.whats_this')
.eight.columns.omega
- if full_permissions
%table
diff --git a/app/views/admin/enterprises/form/tag_rules/_default_rules.html.haml b/app/views/admin/enterprises/form/tag_rules/_default_rules.html.haml
index 09c78f9c8c..a6e149d238 100644
--- a/app/views/admin/enterprises/form/tag_rules/_default_rules.html.haml
+++ b/app/views/admin/enterprises/form/tag_rules/_default_rules.html.haml
@@ -6,10 +6,10 @@
%tr
%td
%h5
- By Default
+ = t('.by_default')
%i.text-big.icon-question-sign.help-modal{ template: 'admin/modals/tag_rule_help.html' }
.no_rules{ ng: { show: "defaultTagGroup.rules.length == 0" } }
- No default rules apply yet
+ = t('.no_rules_yet')
.tag_rule{ ng: { repeat: "rule in defaultTagGroup.rules" } }
.add_rule.text-center
- %input.button.icon-plus{ type: 'button', value: "+ Add A New Default Rule", "add-new-rule-to" => "addNewRuleTo", "tag-group" => "defaultTagGroup", "new-tag-rule-dialog" => true }
+ %input.button.icon-plus{ type: 'button', value: t('.add_new_button'), "add-new-rule-to" => "addNewRuleTo", "tag-group" => "defaultTagGroup", "new-tag-rule-dialog" => true }
diff --git a/app/views/admin/enterprises/index.html.haml b/app/views/admin/enterprises/index.html.haml
index b84659738c..a233bc3146 100644
--- a/app/views/admin/enterprises/index.html.haml
+++ b/app/views/admin/enterprises/index.html.haml
@@ -1,19 +1,19 @@
- content_for :page_title do
- Enterprises
+ = t('.title')
- content_for :page_actions do
= render 'admin/shared/user_guide_link'
- if spree_current_user.can_own_more_enterprises?
%li#new_product_link
- = button_link_to "New Enterprise", main_app.new_admin_enterprise_path, :icon => 'icon-plus', :id => 'admin_new_enterprise_link'
+ = button_link_to t('.new_enterprise'), main_app.new_admin_enterprise_path, icon: 'icon-plus', id: 'admin_new_enterprise_link'
= admin_inject_monthly_bill_description
= admin_inject_column_preferences module: 'admin.enterprises', action: "enterprises_index"
= render 'admin/shared/enterprises_sub_menu'
-= render :partial => 'spree/shared/error_messages', :locals => { :target => @enterprise_set }
+= render partial: 'spree/shared/error_messages', locals: { target: @enterprise_set }
- if spree_current_user.admin?
= render 'admin_index'
diff --git a/app/views/admin/enterprises/new.html.haml b/app/views/admin/enterprises/new.html.haml
index 4413acfc2c..4676d117fb 100644
--- a/app/views/admin/enterprises/new.html.haml
+++ b/app/views/admin/enterprises/new.html.haml
@@ -1,10 +1,10 @@
-= render :partial => 'spree/shared/error_messages', :locals => { :target => @enterprise }
+= render partial: 'spree/shared/error_messages', locals: { target: @enterprise }
- content_for :page_title do
- New Enterprise
+ = t('.title')
- content_for :page_actions do
- %li= button_link_to "Back to enterprises list", main_app.admin_enterprises_path, icon: 'icon-arrow-left'
+ %li= button_link_to t('.back_link'), main_app.admin_enterprises_path, icon: 'icon-arrow-left'
-# Form
diff --git a/app/views/admin/enterprises/welcome.html.haml b/app/views/admin/enterprises/welcome.html.haml
index cfe5593d99..8f70211e88 100644
--- a/app/views/admin/enterprises/welcome.html.haml
+++ b/app/views/admin/enterprises/welcome.html.haml
@@ -1,13 +1,13 @@
#welcome_page.sixteen.columns.alpha
%header
- %h1 Welcome to the Open Food Network!
+ %h1= t('.welcome_title')
%p
- You have successfully created a
+ = t('.welcome_text')
%strong
= "#{"producer " if @enterprise.is_primary_producer}profile"
%section
- %h2 Next step
- %p Choose your starting point:
+ %h2= t('.next_step')
+ %p= t('.choose_starting_point')
= render partial: "change_type_form"
diff --git a/app/views/admin/order_cycles/_advanced_settings.html.haml b/app/views/admin/order_cycles/_advanced_settings.html.haml
index f8f71d0b93..bfbd6e9c91 100644
--- a/app/views/admin/order_cycles/_advanced_settings.html.haml
+++ b/app/views/admin/order_cycles/_advanced_settings.html.haml
@@ -1,22 +1,22 @@
.row
.alpha.omega.sixteen.columns
- %h3 Advanced Settings
+ %h3= t('.title')
= form_for [main_app, :admin, @order_cycle] do |f|
.row
.six.columns.alpha
= f.label "enterprise_preferred_product_selection_from_coordinator_inventory_only", t('admin.order_cycles.edit.choose_products_from')
- .with-tip{'data-powertip' => "You can opt to restrict all available products (both incoming and outgoing), to only those in #{@order_cycle.coordinator.name}'s inventory."}
- %a What's this?
+ .with-tip{'data-powertip' => t('.choose_product_tip', inventory: @order_cycle.coordinator.name)}
+ %a= t('admin.whats_this')
.four.columns
= f.radio_button :preferred_product_selection_from_coordinator_inventory_only, true
- = f.label :preferred_product_selection_from_coordinator_inventory_only, "Coordinator's Inventory Only"
+ = f.label :preferred_product_selection_from_coordinator_inventory_only, t('.preferred_product_selection_from_coordinator_inventory_only_here')
.six.columns.omega
= f.radio_button :preferred_product_selection_from_coordinator_inventory_only, false
- = f.label :preferred_product_selection_from_coordinator_inventory_only, "All Available Products"
+ = f.label :preferred_product_selection_from_coordinator_inventory_only, t('.preferred_product_selection_from_coordinator_inventory_only_all')
.row
.sixteen.columns.alpha.omega.text-center
- %input{ type: 'submit', value: 'Save and Reload Page' }
- or
- %a{ href: "#", onClick: "toggleSettings()" } Close
+ %input{ type: 'submit', value: t('.save_reload') }
+ = t(:or)
+ %a{ href: "#", onClick: "toggleSettings()" }= t(:close)
diff --git a/app/views/admin/order_cycles/_coordinator_fees.html.haml b/app/views/admin/order_cycles/_coordinator_fees.html.haml
index 86e0d0a7af..a22deee37f 100644
--- a/app/views/admin/order_cycles/_coordinator_fees.html.haml
+++ b/app/views/admin/order_cycles/_coordinator_fees.html.haml
@@ -1,6 +1,6 @@
%ol.coordinator-fees
%li{'ng-repeat' => 'enterprise_fee in order_cycle.coordinator_fees'}
= select_tag 'order_cycle_coordinator_fee_{{ $index }}_id', nil, {'ng-model' => 'enterprise_fee.id', 'ng-options' => 'enterprise_fee.id as enterprise_fee.name for enterprise_fee in enterpriseFeesForEnterprise(order_cycle.coordinator_id)'}
- = link_to 'Remove', '#', {'id' => 'order_cycle_coordinator_fee_{{ $index }}_remove', 'ng-click' => 'removeCoordinatorFee($event, $index)'}
+ = link_to t(:remove), '#', {'id' => 'order_cycle_coordinator_fee_{{ $index }}_remove', 'ng-click' => 'removeCoordinatorFee($event, $index)'}
-= f.submit 'Add coordinator fee', 'ng-click' => 'addCoordinatorFee($event)'
+= f.submit t('.add'), 'ng-click' => 'addCoordinatorFee($event)'
diff --git a/app/views/admin/order_cycles/_form.html.haml b/app/views/admin/order_cycles/_form.html.haml
index ebe9e45905..f075c2cf33 100644
--- a/app/views/admin/order_cycles/_form.html.haml
+++ b/app/views/admin/order_cycles/_form.html.haml
@@ -3,55 +3,54 @@
-if Enterprise.managed_by(spree_current_user).include? @order_cycle.coordinator
= render 'coordinator_fees', f: f
-%h2 Incoming
+%h2= t('.incoming')
%table.exchanges
%thead
%tr
- %th Supplier
+ %th= t('.supplier')
%th
- Products
+ =t('.products')
= surround '(', ')' do
%a{href: '#', 'ng-click' => "OrderCycle.toggleAllProducts('incoming')"}
- %span{'ng-show' => "OrderCycle.showProducts['incoming']"} Collapse all
- %span{'ng-hide' => "OrderCycle.showProducts['incoming']"} Expand all
- %th Receival details
- %th Fees
+ %span{'ng-show' => "OrderCycle.showProducts['incoming']"}= t(:collapse_all)
+ %span{'ng-hide' => "OrderCycle.showProducts['incoming']"}= t(:expand_all)
+ %th= t('.receival_details')
+ %th= t('.fees')
%th.actions
%tbody.panel-ctrl{ object: 'exchange', 'ng-repeat' => 'exchange in order_cycle.incoming_exchanges'}
- = render 'exchange_form', :f => f, :type => 'supplier'
+ = render 'exchange_form', f: f, type: 'supplier'
- if Enterprise.managed_by(spree_current_user).include? @order_cycle.coordinator
= render 'add_exchange_form', f: f, type: 'supplier'
-%h2 Outgoing
+%h2= t('.outgoing')
%table.exchanges
%thead
%tr
- %th Distributor
+ %th= t('.distributor')
%th
- Products
+ = t('.products')
= surround '(', ')' do
%a{href: '#', 'ng-click' => "OrderCycle.toggleAllProducts('outgoing')"}
- %span{'ng-show' => "OrderCycle.showProducts['outgoing']"} Collapse all
- %span{'ng-hide' => "OrderCycle.showProducts['outgoing']"} Expand all
- %th{ ng: { if: 'enterprises[exchange.enterprise_id].managed || order_cycle.viewing_as_coordinator' } } Tags
- %th Pickup / Delivery details
+ %span{'ng-show' => "OrderCycle.showProducts['outgoing']"}= t(:collapse_all)
+ %span{'ng-hide' => "OrderCycle.showProducts['outgoing']"}= t(:expand_all)
+ %th{ ng: { if: 'enterprises[exchange.enterprise_id].managed || order_cycle.viewing_as_coordinator' } }
+ = t('.tags')
+ %th= t('.delivery_details')
%th Fees
%th.actions
%tbody.panel-ctrl{ object: 'exchange', 'ng-repeat' => 'exchange in order_cycle.outgoing_exchanges'}
- = render 'exchange_form', :f => f, :type => 'distributor'
-
+ = render 'exchange_form', f: f, type: 'distributor'
- if Enterprise.managed_by(spree_current_user).include? @order_cycle.coordinator
= render 'add_exchange_form', f: f, type: 'distributor'
.actions
- %span{'ng-hide' => 'loaded()'} Loading...
-
+ %span{'ng-hide' => 'loaded()'}= t(:loading)
- unless Rails.env.production?
#order-cycles-debug
- %h2 Debug information
+ %h2= t('.debug_info')
%pre loaded = {{ loaded() | json }}
%hr/
diff --git a/app/views/admin/order_cycles/_name_and_timing_form.html.haml b/app/views/admin/order_cycles/_name_and_timing_form.html.haml
index 39fa19f287..d081120210 100644
--- a/app/views/admin/order_cycles/_name_and_timing_form.html.haml
+++ b/app/views/admin/order_cycles/_name_and_timing_form.html.haml
@@ -1,13 +1,13 @@
.row
.alpha.two.columns
- = f.label :name
+ = f.label :name, t('.name')
.six.columns.omega
- if viewing_as_coordinator_of?(@order_cycle)
= f.text_field :name, 'ng-model' => 'order_cycle.name', 'required' => true, 'ng-disabled' => '!loaded()'
- else
{{ order_cycle.name }}
.two.columns
- = f.label :orders_open_at, 'Orders open'
+ = f.label :orders_open_at, t('.orders_open')
.omega.six.columns
- if viewing_as_coordinator_of?(@order_cycle)
= f.text_field :orders_open_at, 'datetimepicker' => 'order_cycle.orders_open_at', 'ng-model' => 'order_cycle.orders_open_at', 'ng-disabled' => '!loaded()'
@@ -16,11 +16,11 @@
.row
.alpha.two.columns
- = f.label :coordinator
+ = f.label :coordinator, t('.coordinator')
.six.columns.omega
= @order_cycle.coordinator.name
.two.columns
- = f.label :orders_close_at, 'Orders close'
+ = f.label :orders_close, t('.orders_close')
.six.columns.omega
- if viewing_as_coordinator_of?(@order_cycle)
= f.text_field :orders_close_at, 'datetimepicker' => 'order_cycle.orders_close_at', 'ng-model' => 'order_cycle.orders_close_at', 'ng-disabled' => '!loaded()'
diff --git a/app/views/admin/order_cycles/_row.html.haml b/app/views/admin/order_cycles/_row.html.haml
index d75a97bbb5..cbfde7f546 100644
--- a/app/views/admin/order_cycles/_row.html.haml
+++ b/app/views/admin/order_cycles/_row.html.haml
@@ -13,7 +13,7 @@
- if suppliers.count > 3
%span{'ofn-with-tip' => supplier_list}
= suppliers.count
- suppliers
+ = t('.suppliers')
- else
= supplier_list
%td= order_cycle.coordinator.name
@@ -23,12 +23,12 @@
- if distributors.count > 3
%span{'ofn-with-tip' => distributor_list}
= distributors.count
- distributors
+ = t('.distributors')
- else
= distributor_list
%td.products
- %span= "#{order_cycle.variants.count} variants"
+ %span= "#{order_cycle.variants.count} #{t('.variants')}"
%td.actions
= link_to '', main_app.edit_admin_order_cycle_path(order_cycle), class: 'edit-order-cycle icon-edit no-text'
@@ -36,4 +36,4 @@
= link_to '', main_app.clone_admin_order_cycle_path(order_cycle), class: 'clone-order-cycle icon-copy no-text'
- if can_delete?(order_cycle)
%td.actions
- = link_to '', main_app.admin_order_cycle_path(order_cycle), class: 'delete-order-cycle icon-trash no-text', :method => :delete, data: { confirm: "Are you sure?" }
+ = link_to '', main_app.admin_order_cycle_path(order_cycle), class: 'delete-order-cycle icon-trash no-text', :method => :delete, data: { confirm: t(:are_you_sure) }
diff --git a/app/views/admin/order_cycles/_simple_form.html.haml b/app/views/admin/order_cycles/_simple_form.html.haml
index a7a0363cd3..15303b1f5d 100644
--- a/app/views/admin/order_cycles/_simple_form.html.haml
+++ b/app/views/admin/order_cycles/_simple_form.html.haml
@@ -2,23 +2,23 @@
.row
.alpha.two.columns
- = label_tag 'Ready for'
+ = label_tag t('.ready_for')
.six.columns
- = text_field_tag 'order_cycle_outgoing_exchange_0_pickup_time', '', 'id' => 'order_cycle_outgoing_exchange_0_pickup_time', 'placeholder' => 'Date / time', 'ng-model' => 'outgoing_exchange.pickup_time', 'size' => 30
+ = text_field_tag 'order_cycle_outgoing_exchange_0_pickup_time', '', 'id' => 'order_cycle_outgoing_exchange_0_pickup_time', 'placeholder' => t('.ready_for_placeholder'), 'ng-model' => 'outgoing_exchange.pickup_time', 'size' => 30
.two.columns
- = label_tag 'Customer instructions'
+ = label_tag t('.customer_instructions')
.six.columns.omega
- = text_field_tag 'order_cycle_outgoing_exchange_0_pickup_instructions', '', 'id' => 'order_cycle_outgoing_exchange_0_pickup_instructions', 'placeholder' => 'Pick-up or delivery notes', 'ng-model' => 'outgoing_exchange.pickup_instructions', 'size' => 30
+ = text_field_tag 'order_cycle_outgoing_exchange_0_pickup_instructions', '', 'id' => 'order_cycle_outgoing_exchange_0_pickup_instructions', 'placeholder' => t('.customer_instructions_placeholder'), 'ng-model' => 'outgoing_exchange.pickup_instructions', 'size' => 30
-= label_tag 'Products'
+= label_tag t('.products')
%table.exchanges
%tbody{ng: {repeat: "exchange in order_cycle.incoming_exchanges"}}
%tr.products
%td{ ng: { include: "'admin/panels/exchange_supplied_products.html'" } }
%br/
-= label_tag 'Fees'
+= label_tag t('.fees')
= render 'coordinator_fees', f: f
.actions
- %span{'ng-hide' => 'loaded()'} Loading...
+ %span{'ng-hide' => 'loaded()'}= t(:loading)
diff --git a/app/views/admin/order_cycles/edit.html.haml b/app/views/admin/order_cycles/edit.html.haml
index 4712566dfd..34f64c1ee7 100644
--- a/app/views/admin/order_cycles/edit.html.haml
+++ b/app/views/admin/order_cycles/edit.html.haml
@@ -12,26 +12,24 @@
- if can? :notify_producers, @order_cycle
%li
- = button_to "Notify producers", main_app.notify_producers_admin_order_cycle_path, :id => 'admin_notify_producers', :confirm => 'Are you sure?'
+ = button_to "Notify producers", main_app.notify_producers_admin_order_cycle_path, :id => 'admin_notify_producers', :confirm => t(:are_you_sure)
%li
%button#toggle_settings{ onClick: 'toggleSettings()' }
- Advanced Settings
+ = t('.advanced_settings')
%i.icon-chevron-down
-
#advanced_settings{ hidden: true }
= render partial: "/admin/order_cycles/advanced_settings"
%h1
= t :edit_order_cycle
-
- ng_controller = order_cycles_simple_form ? 'AdminSimpleEditOrderCycleCtrl' : 'AdminEditOrderCycleCtrl'
= form_for [main_app, :admin, @order_cycle], :url => '', :html => {:class => 'ng order_cycle', 'ng-app' => 'admin.orderCycles', 'ng-controller' => ng_controller, name: 'order_cycle_form'} do |f|
%save-bar{ dirty: "order_cycle_form.$dirty", persist: "true" }
- %input.red{ type: "button", value: "Update", ng: { click: "submit($event, null)", disabled: "!order_cycle_form.$dirty" } }
- %input.red{ type: "button", value: "Update and Close", ng: { click: "submit($event, '#{main_app.admin_order_cycles_path}')", disabled: "!order_cycle_form.$dirty" } }
+ %input.red{ type: "button", value: t(:update), ng: { click: "submit($event, null)", disabled: "!order_cycle_form.$dirty" } }
+ %input.red{ type: "button", value: t('.update_and_close'), ng: { click: "submit($event, '#{main_app.admin_order_cycles_path}')", disabled: "!order_cycle_form.$dirty" } }
%input{ type: "button", ng: { value: "order_cycle_form.$dirty ? 'Cancel' : 'Close'", click: "cancel('#{main_app.admin_order_cycles_path}')" } }
- if order_cycles_simple_form
diff --git a/app/views/admin/order_cycles/index.html.haml b/app/views/admin/order_cycles/index.html.haml
index 824aa66ee8..989983b5b0 100644
--- a/app/views/admin/order_cycles/index.html.haml
+++ b/app/views/admin/order_cycles/index.html.haml
@@ -3,7 +3,7 @@
= content_for :page_actions do
%li#new_order_cycle_link
- = button_link_to t(:new_order_cycle), main_app.new_admin_order_cycle_path, :icon => 'icon-plus', :id => 'admin_new_order_cycle_link'
+ = button_link_to t(:new_order_cycle), main_app.new_admin_order_cycle_path, icon: 'icon-plus', id: 'admin_new_order_cycle_link'
- if @show_more
%li
= button_link_to t(:label_less), main_app.admin_order_cycles_path
diff --git a/app/views/admin/order_cycles/new.html.haml b/app/views/admin/order_cycles/new.html.haml
index 4e5a95544c..6bc0946f01 100644
--- a/app/views/admin/order_cycles/new.html.haml
+++ b/app/views/admin/order_cycles/new.html.haml
@@ -7,7 +7,7 @@
= form_for [main_app, :admin, @order_cycle], :url => '', :html => {:class => 'ng order_cycle', 'ng-app' => 'admin.orderCycles', 'ng-controller' => ng_controller, name: 'order_cycle_form'} do |f|
%save-bar{ dirty: "order_cycle_form.$dirty", persist: "true" }
- %input.red{ type: "button", value: "Create", ng: { click: "submit($event, '#{main_app.admin_order_cycles_path}')", disabled: "!order_cycle_form.$dirty" } }
+ %input.red{ type: "button", value: t(:create), ng: { click: "submit($event, '#{main_app.admin_order_cycles_path}')", disabled: "!order_cycle_form.$dirty" } }
%input{ type: "button", ng: { value: "order_cycle_form.$dirty ? 'Cancel' : 'Close'", click: "cancel('#{main_app.admin_order_cycles_path}')" } }
- if order_cycles_simple_form
diff --git a/app/views/admin/producer_properties/_form.html.haml b/app/views/admin/producer_properties/_form.html.haml
index dcd83f8ec4..249301ae40 100644
--- a/app/views/admin/producer_properties/_form.html.haml
+++ b/app/views/admin/producer_properties/_form.html.haml
@@ -4,8 +4,8 @@
%table.index.sortable{"data-hook" => "", "data-sortable-link" => main_app.update_positions_admin_enterprise_producer_properties_url(@enterprise)}
%thead
%tr{"data-hook" => "producer_properties_header"}
- %th{colspan: "2"} Property
- %th Value
+ %th{colspan: "2"}= t('.property')
+ %th= t('.value')
%th.actions
%tbody#producer_properties{"data-hook" => ""}
= f.fields_for :producer_properties do |pp_form|
diff --git a/app/views/admin/producer_properties/index.html.haml b/app/views/admin/producer_properties/index.html.haml
index d898860cb1..c66f02a32e 100644
--- a/app/views/admin/producer_properties/index.html.haml
+++ b/app/views/admin/producer_properties/index.html.haml
@@ -1,17 +1,14 @@
- content_for :page_title do
= "#{@enterprise.name}:"
- Producer Properties
-
+ = t('.title')
- content_for :page_actions do
%ul.tollbar.inline-menu
%li
= link_to_add_fields t(:add_producer_property), 'tbody#producer_properties', class: 'icon-plus button'
-
= render 'spree/shared/error_messages', target: @enterprise
-
= form_for @enterprise, url: main_app.admin_enterprise_path(@enterprise), method: :put do |f|
= render 'form', f: f
diff --git a/app/views/admin/shared/_user_guide_link.html.haml b/app/views/admin/shared/_user_guide_link.html.haml
index 6081422aba..cd1b0dba86 100644
--- a/app/views/admin/shared/_user_guide_link.html.haml
+++ b/app/views/admin/shared/_user_guide_link.html.haml
@@ -1 +1 @@
-= button_link_to "User Guide", "http://www.openfoodnetwork.org/platform/user-guide/", :icon => 'icon-external-link', target: '_blank'
+= button_link_to t('.user_guide'), "http://www.openfoodnetwork.org/platform/user-guide/", icon: 'icon-external-link', target: '_blank'
diff --git a/app/views/admin/variant_overrides/_loading_flash.html.haml b/app/views/admin/variant_overrides/_loading_flash.html.haml
index c543a5517c..2baa04a473 100644
--- a/app/views/admin/variant_overrides/_loading_flash.html.haml
+++ b/app/views/admin/variant_overrides/_loading_flash.html.haml
@@ -1,3 +1,3 @@
%div.sixteen.columns.alpha.omega#loading{ ng: { cloak: true, if: 'hub_id && products.length == 0 && RequestMonitor.loading' } }
%img.spinner{ src: "/assets/spinning-circles.svg" }
- %h1 LOADING INVENTORY
+ %h1= t('.loading_inventory')
diff --git a/app/views/admin/variant_overrides/_show_more.html.haml b/app/views/admin/variant_overrides/_show_more.html.haml
index 21e927e443..5e8274d99c 100644
--- a/app/views/admin/variant_overrides/_show_more.html.haml
+++ b/app/views/admin/variant_overrides/_show_more.html.haml
@@ -1,5 +1,5 @@
-# %show-more.text-center{ data: "filteredProducts", limit: "productLimit", increment: "10" }
.text-center{ ng: { show: "filteredProducts.length > productLimit" } }
- %input{ type: 'button', value: 'Show More', ng: { click: 'productLimit = productLimit + 10' } }
- or
- %input{ type: 'button', value: "Show All ({{ filteredProducts.length - productLimit }} More)", ng: { click: 'productLimit = filteredProducts.length' } }
+ %input{ type: 'button', value: t(:show_more), ng: { click: 'productLimit = productLimit + 10' } }
+ = t(:or)
+ %input{ type: 'button', value: "#{t(:show_all)} ({{ filteredProducts.length - productLimit }} More)", ng: { click: 'productLimit = filteredProducts.length' } }
diff --git a/app/views/checkout/_payment.html.haml b/app/views/checkout/_payment.html.haml
index 8d387145d5..928578158f 100644
--- a/app/views/checkout/_payment.html.haml
+++ b/app/views/checkout/_payment.html.haml
@@ -16,7 +16,7 @@
-# TODO render this in Angular instead of server-side
-# The problem being how to render the partials
.row
- .small-6.columns
+ .small-12.medium-12.large-6.columns
- available_payment_methods.each do |method|
.row
.small-12.columns
@@ -34,6 +34,6 @@
.row{"ng-if" => "order.payment_method_id == #{method.id}"}
.small-12.columns
= render partial: "spree/checkout/payment/#{method.method_type}", :locals => { :payment_method => method }
- .small-12.columns.medium-6.columns.large-6.columns
+ .small-12.medium-12.large-6.columns
#distributor_address.panel{"ng-show" => "Checkout.paymentMethod().description"}
%span.pre-wrap {{ Checkout.paymentMethod().description }}
diff --git a/app/views/checkout/_shipping.html.haml b/app/views/checkout/_shipping.html.haml
index 4e6e63d666..6cba461be0 100644
--- a/app/views/checkout/_shipping.html.haml
+++ b/app/views/checkout/_shipping.html.haml
@@ -13,7 +13,7 @@
"ng-class" => "{valid: shipping.$valid, open: accordion.shipping}"}
= render 'checkout/accordion_heading'
- .small-12.columns.medium-6.columns.large-6.columns
+ .small-12.columns.medium-12.columns.large-6.columns
%label{"ng-repeat" => "method in ShippingMethods.shipping_methods"}
%input{type: :radio,
required: true,
@@ -38,7 +38,7 @@
%input{type: :checkbox, "ng-model" => "Checkout.default_ship_address"}
= t :checkout_default_ship_address
- .small-12.columns.medium-6.columns.large-6.columns
+ .small-12.columns.medium-12.columns.large-6.columns
#distributor_address.panel{"ng-show" => "Checkout.shippingMethod().description"}
%span{ style: "white-space: pre-wrap;" }{{ Checkout.shippingMethod().description }}
%br/
diff --git a/app/views/layouts/darkswarm.html.haml b/app/views/layouts/darkswarm.html.haml
index d3f0a78087..20a47be970 100644
--- a/app/views/layouts/darkswarm.html.haml
+++ b/app/views/layouts/darkswarm.html.haml
@@ -13,7 +13,7 @@
%link{href: "https://fonts.googleapis.com/css?family=Roboto:400,300italic,400italic,300,700,700italic|Oswald:300,400,700", rel: "stylesheet", type: "text/css"}
= yield :scripts
- %script{src: "//maps.googleapis.com/maps/api/js?libraries=places,geometry"}
+ %script{src: "//maps.googleapis.com/maps/api/js?libraries=places,geometry#{ ENV['GOOGLE_MAPS_API_KEY'] ? '&key=' + ENV['GOOGLE_MAPS_API_KEY'] : ''} "}
= split_stylesheet_link_tag "darkswarm/all"
= javascript_include_tag "darkswarm/all"
diff --git a/app/views/sitemap/index.xml.haml b/app/views/sitemap/index.xml.haml
new file mode 100644
index 0000000000..dac6032a15
--- /dev/null
+++ b/app/views/sitemap/index.xml.haml
@@ -0,0 +1,17 @@
+!!! XML
+%urlset{xmlns: "http://www.sitemaps.org/schemas/sitemap/0.9"}
+ - for page_url in @page_urls
+ %url
+ %loc= page_url
+ %changefreq monthly
+
+ - for enterprise in @enterprises
+ %url
+ %loc= enterprise_shop_url(enterprise)
+ %lastmod= enterprise.updated_at.strftime('%Y-%m-%d')
+ %changefreq weekly
+
+ - for group in @groups
+ %url
+ %loc= group_url(group)
+ %changefreq monthly
diff --git a/config/application.yml.example b/config/application.yml.example
index 0b1871466b..5b38a6da60 100644
--- a/config/application.yml.example
+++ b/config/application.yml.example
@@ -21,3 +21,6 @@ CURRENCY: AUD
#
# DISCOURSE_URL must be the URL of your Discourse instance.
#DISCOURSE_URL: "https://noticeboard.openfoodnetwork.org.au"
+
+# see: https://developers.google.com/maps/documentation/javascript/get-api-key
+# GOOGLE_MAPS_API_KEY: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml
index bda8867858..92eba244eb 100644
--- a/config/locales/en-GB.yml
+++ b/config/locales/en-GB.yml
@@ -11,7 +11,7 @@ en-GB:
Were you a guest last time? Perhaps you need to create an account or reset your password.
enterprise_confirmations:
enterprise:
- confirmed: Thank you, your email address has been confirmed.
+ confirmed: Thankyou, your email address has been confirmed.
not_confirmed: Your email address could not be confirmed. Perhaps you have already completed this step?
confirmation_sent: "Confirmation email sent!"
confirmation_not_sent: "Could not send a confirmation email."
@@ -522,14 +522,14 @@ en-GB:
producers_title: Producers
producers_headline: Find local producers
producers_signup_title: Sign up as a producer
- producers_signup_headline: Food producers, empowered.
- producers_signup_motivation: Sell your food and tell your stories to diverse new markets. Save time and money on every overhead. We support innovation without the risk. We've levelled the playing field.
- producers_signup_send: Join now
- producers_signup_enterprise: Enterprise Accounts
+ producers_signup_headline: Food producers. Meet OFN.
+ producers_signup_motivation: Sell your food and tell your stories. Save time and money on every overhead. We support innovation without the risk. We're levelling the playing field.
+ producers_signup_send: Register
+ producers_signup_enterprise: Why the Open Food Network?
producers_signup_studies: Stories from our producers.
producers_signup_cta_headline: Join now!
- producers_signup_cta_action: Join now
- producers_signup_detail: Here's the detail.
+ producers_signup_cta_action: Register
+ producers_signup_detail: Got a question?
products_item: Item
products_description: Description
products_variant: Variant
@@ -537,7 +537,7 @@ en-GB:
products_available: Available?
products_producer: "Producer"
products_price: "Price"
- register_title: Register
+ register_title: Find out more
sell_title: "Register"
sell_headline: "Get on the Open Food Network!"
sell_motivation: "Showcase your beautiful food."
@@ -875,7 +875,7 @@ en-GB:
spree_admin_single_enterprise_alert_mail_confirmation: "Please confirm the email address for"
spree_admin_single_enterprise_alert_mail_sent: "We've sent an email to"
spree_admin_overview_action_required: "Action Required"
- spree_admin_overview_check_your_inbox: "Please check your inbox for further instructions. Thanks!"
+ spree_admin_overview_check_your_inbox: "Please check you inbox for further instructions. Thanks!"
change_package: "Change Package"
spree_admin_single_enterprise_hint: "Hint: To allow people to find you, turn on your visibility under"
your_profil_live: "Your profile live"
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 6f04c26284..902d32e35c 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -70,9 +70,17 @@ en:
say_no: "No"
say_yes: "Yes"
then: then
-
sort_order_cycles_on_shopfront_by: "Sort Order Cycles On Shopfront By"
-
+ required_fields: Required fields are denoted with an asterisk
+ select_continue: Select and Continue
+ remove: Remove
+ or: or
+ collapse_all: Collapse all
+ expand_all: Expand all
+ loading: Loading...
+ show_more: Show more
+ show_all: Show all
+ cancel: Cancel
admin:
# Common properties / models
@@ -131,6 +139,31 @@ en:
update_address: 'Update Address'
confirm_delete: 'Sure to delete?'
+ cache_settings:
+ show:
+ distributor: Distributor
+ order_cycle: Order Cycle
+ status: Status
+ diff: Diff
+
+ contents:
+ edit:
+ title: Content
+
+ enterprise_fees:
+ index:
+ title: Entreprise Fees
+ enterprise: Enterprise
+ fee_type: Fee Type
+ name: Name
+ tax_category: Tax Category
+ calculator: Calculator
+ calculator_values: Calculator Values
+
+ enterprise_groups:
+ index:
+ new_button: New Enterprise Group
+
products:
bulk_edit:
unit: Unit
@@ -142,6 +175,8 @@ en:
av_on: "Av. On"
variant_overrides:
+ loading_flash:
+ loading_inventory: LOADING INVENTORY
index:
title: Inventory
description: Use this page to manage inventories for your enterprises. Any product details set here will override those set on the 'Products' page
@@ -193,11 +228,89 @@ en:
enterprises:
index:
- producer?: Producer?
+ title: Enterprises
+ new_enterprise: New Enterprise
+ producer?: "Producer?"
package: Package
status: Status
manage: Manage
form:
+ about_us:
+ desc_short: Short Description
+ desc_short_placeholder: Tell us about your enterprise in one or two sentences
+ desc_long: About Us
+ desc_long_placeholder: Tell customers about yourself. This information appears on your public profile.
+ business_details:
+ abn: ABN
+ abn_placeholder: eg. 99 123 456 789
+ acn: ACN
+ acn_placeholder: eg. 123 456 789
+ contact:
+ name: Name
+ name_placeholder: eg. Gustav Plum
+ email_address: Email Address
+ email_address_placeholder: eg. gustav@truffles.com
+ phone: Phone
+ phone_placeholder: eg. 98 7654 3210
+ website: Website
+ website_placeholder: eg. www.truffles.com
+ enterprise_fees:
+ name: Name
+ fee_type: Fee Type
+ manage_fees: Manage Enterprise Fees
+ no_fees_yet: You don't have any enterprise fees yet.
+ create_button: Create One Now
+ images:
+ logo: Logo
+ promo_image_placeholder: 'This image is displayed in "About Us"'
+ promo_image_note1: 'PLEASE NOTE:'
+ promo_image_note2: Any promo image uploaded here will be cropped to 1200 x 260.
+ promo_image_note3: The promo image is displayed at the top of an enterprise's profile page and pop-ups.
+ inventory_settings:
+ text1: You may opt to manage stock levels and prices in via your
+ inventory: inventory
+ text2: "If you are using the inventory tool, you can select whether new products \
+ added by your suppliers need to be added to your inventory before they can be \
+ stocked. If you are not using your inventory to manage your products you should \
+ select the 'recommended' option below:"
+ preferred_product_selection_from_inventory_only_yes: New products can be put into my shopfront (recommended)
+ preferred_product_selection_from_inventory_only_no: New products must be added to my inventory before they can be put into my shopfront
+ payment_methods:
+ name: Name
+ applies: Applies?
+ manage: Manage Payment Methods
+ not_method_yet: You don't have any payment methods yet.
+ create_button: Create New Payment Method
+ create_one_button: Create One Now
+ primary_details:
+ name: Name
+ name_placeholder: eg. Professor Plum's Biodynamic Truffles
+ groups: Groups
+ groups_tip: Select any groups or regions that you are a member of. This will help customers find your enterprise.
+ groups_placeholder: Start typing to search available groups...
+ primary_producer: Primary Producer?
+ primary_producer_tip: Select 'Producer' if you are a primary producer of food.
+ producer: Producer
+ any: Any
+ none: None
+ own: Own
+ sells: Sells
+ sells_tip: "None - enterprise does not sell to customers directly.
Own - Enterprise sells own products to customers.
Any - Enterprise can sell own or other enterprises products.
"
+ visible_in_search: Visible in search?
+ visible_in_search_tip: Determines whether this enterprise will be visible to customers when searching the site.
+ visible: Visible
+ not_visible: Not visible
+ permalink: Permalink (no spaces)
+ permalink_tip: "This permalink is used to create the url to your shop: {{link}} your-shop-name/shop"
+ link_to_front: Link to shop front
+ link_to_front_tip: A direct link to your shopfront on the Open Food Network.
+ shipping_methods:
+ name: Name
+ applies: Applies?
+ manage: Manage Shipping Methods
+ create_button: Create New Shipping Method
+ create_one_button: Create One Now
+ no_method_yet: You don't have any shipping methods yet.
shop_preferences:
shopfront_requires_login: "Publicly visible shopfront?"
shopfront_requires_login_tip: "Choose whether customers must login to view the shopfront or if it's visible to everybody."
@@ -207,6 +320,142 @@ en:
allow_guest_orders_tip: "Allow checkout as guest or require a registered user."
allow_guest_orders_false: "Require login to order"
allow_guest_orders_true: "Allow guest checkout"
+ shopfront_message_placeholder: \
+ An optional explanation for customers detailing how your shopfront works, \
+ to be displayed above the product list on your shop page.
+ shopfront_closed_message_placeholder: \
+ A message which provides a more detailed explanation about why your shop is \
+ closed and/or when customers can expect it to open again. This is displayed \
+ on your shop only when you have no active order cycles (ie. shop is closed).
+ open_date: Open Date
+ close_date: Close Date
+ social:
+ twitter_placeholder: eg. @the_prof
+ tag_rules:
+ default_rules:
+ by_default: By Default
+ no_rules_yet: No default rules apply yet
+ add_new_button: '+ Add A New Default Rule'
+ no_tags_yet: No tags apply to this enterprise yet
+ no_rules_yet: No rules apply to this tag yet
+ for_customers_tagged: 'For customers tagged:'
+ add_new_rule: '+ Add A New Rule'
+ add_new_tag: '+ Add A New Tag'
+ users:
+ email_confirmation_notice_html: "Email confirmation is pending. We've sent a confirmation email to %{email}."
+ resend: Resend
+ owner: 'Owner'
+ owner_tip: The primary user responsible for this enterprise.
+ notifications: Notifications
+ notifications_tip: Notifications about orders will be send to this email address.
+ notifications_placeholder: eg. gustav@truffles.com
+ notifications_note: 'Note: A new email address may need to be confirmed prior to use'
+ managers: Managers
+ managers_tip: The other users with permission to manage this enterprise.
+ actions:
+ edit_profile: Edit Profile
+ properties: Properties
+ payment_methods: Payment Methods
+ payment_methods_tip: This enterprise has no payment methods
+ shipping_methods: Shipping Methods
+ shipping_methods_tip: This enterprise has shipping methods
+ enterprise_fees: Enterprise Fees
+ enterprise_fees_tip: This enterprise has no fees
+ admin_index:
+ name: Name
+ role: Role
+ sells: Sells
+ visible: Visible?
+ owner: Owner
+ producer: Producer
+ change_type_form:
+ producer_profile: Producer Profile
+ connect_ofn: Connect through OFN
+ always_free: ALWAYS FREE
+ producer_description_text: Add your products to Open Food Network, allowing hubs to stock your products in their stores.
+ producer_shop: Producer Shop
+ sell_your_produce: Sell your own produce
+ sell_description_text: Sell your products directly to customers through your very own Open Food Network shopfront.
+ sell_description_text2: A Producer Shop is for your produce only, if you want to sell produce grown/produced off site, select 'Producer Hub'.
+ producer_hub: Producer Hub
+ producer_hub_text: Sell produce from self and others
+ producer_hub_description_text: Your enterprise is the backbone of your local food system. You can sell your own produce as well as produce aggregated from other enterprises through your shopfront on the Open Food Network.
+ profile: Profile Only
+ get_listing: Get a listing
+ profile_description_text: People can find and contact you on the Open Food Network. Your enterprise will be visible on the map, and will be searchable in listings.
+ hub_shop: Hub Shop
+ hub_shop_text: Sell produce from others
+ hub_shop_description_text: Your enterprise is the backbone of your local food system. You aggregate produce from other enterprises and can sell it through your shop on the Open Food Network.
+ choose_option: Please choose one of the options above.
+ change_now: Change now
+ enterprise_user_index:
+ search_placeholder: Search By Name
+ manage: Manage
+ new_form:
+ owner: Owner
+ owner_tip: The primary user responsible for this enterprise.
+ i_am_producer: I am a Producer
+ contact_name: Contact Name
+ edit:
+ editing: 'Editing:'
+ back_link: Back to enterprises list
+ new:
+ title: New Enterprise
+ back_link: Back to enterprises list
+ welcome:
+ welcome_title: Welcome to the Open Food Network!
+ welcome_text: You have successfully created a
+ next_step: Next step
+ choose_starting_point: 'Choose your starting point:'
+ order_cycles:
+ advanced_settings:
+ title: Advanced Settings
+ choose_product_tip: You can opt to restrict all available products (both incoming and outgoing), to only those in {{inventory}}'s inventory.
+ preferred_product_selection_from_coordinator_inventory_only_here: Coordinator's Inventory Only
+ preferred_product_selection_from_coordinator_inventory_only_all: All Available Products
+ save_reload: Save and Reload Page
+ coordinator_fees:
+ add: Add coordinator fee
+ form:
+ incoming: Incoming
+ supplier: Supplier
+ products: Products
+ receival_details: Receival details
+ fees: Fees
+ outgoing: Outgoing
+ distributor: Distributor
+ products: Products
+ tags: Tags
+ delivery_detaisl: Pickup / Delivery details
+ debug_info: Debug information
+ name_and_timing_form:
+ name: Name
+ orders_open: Orders open at
+ coordinator: Coordinator
+ order_closes: Orders close
+ row:
+ suppliers: suppliers
+ distributors: distributors
+ variants: variants
+ simple_form:
+ ready_for: Ready for
+ ready_for_placeholder: Date / time
+ customer_instructions: Customer instructions
+ customer_instructions_placeholder: Pick-up or delivery notes
+ products: Products
+ fees: Fees
+ edit:
+ advanced_settings: Advanced Settings
+ update_and_close: Update and Close
+ producer_properties:
+ form:
+ property: Property
+ value: Value
+ index:
+ title: Producer Properties
+ shared:
+ user_guide_link:
+ user_guide: User Guide
home:
hubs:
@@ -256,10 +505,14 @@ en:
phone: Phone
next: Next
address: Address
+ address_placeholder: eg. 123 High Street
address2: Address (contd.)
city: City
+ city_placeholder: eg. Northcote
state: State
postcode: Postcode
+ postcode_placeholder: eg. 3070
+ state: State
country: Country
unauthorized: Unauthorized
terms_of_service: "Terms of service"
@@ -413,6 +666,8 @@ en:
order_payment_paypal_successful: Your payment via PayPal has been processed successfully.
order_hub_info: Hub Info
+ bom_tip: "Use this page to alter product quantities across multiple orders. Products may also be removed from orders entirely, if required."
+
unsaved_changes_warning: "Unsaved changes exist and will be lost if you continue."
unsaved_changes_error: "Fields with red borders contain errors."
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 0594d8a112..74fdc54336 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -53,6 +53,17 @@ fr:
say_yes: "Oui"
then: puis
sort_order_cycles_on_shopfront_by: "Trier les cycles de vente par"
+ required_fields: "Les champs obligatoires sont annotés d'une astérisque"
+ select_continue: Sélectionner et Continuer
+ remove: Supprimer
+ or: ou
+ collapse_all: Réduire
+ expand_all: Etendre
+ loading: Chargement...
+ show_more: Voir plus
+ show_all: Voir tout
+ cancel: Annuler
+
admin:
date: Date
email: Email
@@ -100,6 +111,27 @@ fr:
select_country: 'Choisir le pays'
select_state: 'Choisir le département'
edit: 'Modifier'
+ cache_settings:
+ show:
+ distributor: Distributeur
+ order_cycle: Cycle de vente
+ status: Statut
+ diff: Diff
+ contents:
+ edit:
+ title: Contenu
+ enterprise_fees:
+ index:
+ title: Marges de l'entreprise
+ enterprise: Entreprise
+ fee_type: Type de marge
+ name: Nom
+ tax_category: TVA appliquée
+ calculator: Calculateur
+ calculator_values: Valeurs applicables
+ enterprise_groups:
+ index:
+ new_button: Nouveau groupe d'entreprise
products:
bulk_edit:
unit: Unité
@@ -110,6 +142,8 @@ fr:
available_on: Disponible sur
av_on: "Disp. sur"
variant_overrides:
+ loading_flash:
+ loading_inventory: LOADING INVENTORY
index:
title: Stock
description: Utilisez cette page pour gérer le catalogue de votre entreprise. Les détails produits saisis ici remplaceront ceux de la page "Produit" pour votre entreprise uniquement.
@@ -162,11 +196,231 @@ fr:
status: Statut
manage: Gérer
form:
+ about_us:
+ desc_short: Description courte
+ desc_short_placeholder: Dites nous à propos de votre entreprise en 2 lignes
+ desc_long: Description publique
+ desc_long_placeholder: Décrivez-vous à vos clients. Cette information apparaîtra sur votre profil public.
+ business_details:
+ abn: ABN
+ abn_placeholder: "ex: 99 123 456 789"
+ acn: ACN
+ acn_placeholder: "ex: 123 456 789"
+ contact:
+ name: Prénom/Nom
+ name_placeholder: "ex: Maurice Batot"
+ email_address: Email Address
+ email_address_placeholder: "ex: maurice@tomates.fr"
+ phone: Téléphone
+ phone_placeholder: "ex: 98 7654 3210"
+ website: Site Web
+ website_placeholder: "ex: www.tomates.fr"
+ enterprise_fees:
+ name: Nom
+ fee_type: Type de marge
+ manage_fees: Gérer vos marges
+ no_fees_yet: Vous n'avez pas encore de marges définies.
+ create_button: Créer une nouvelle marge
+ images:
+ logo: Logo
+ promo_image_placeholder: 'Cette image est affichée dans la partie "A Propos"'
+ promo_image_note1: 'NOTES :'
+ promo_image_note2: Toutes les images uploadées ici seront coupées pour 1200x260 pixels.
+ promo_image_note3: L'image promotionelle est affichée en haut de la page profil de l'entreprise et sur les pop-ups.
+ inventory_settings:
+ text1: Vous pouvez gérer votre stock et vos prix via votre
+ inventory: inventaire
+ text2: "If you are using the inventory tool, you can select whether new products \
+ added by your suppliers need to be added to your inventory before they can be \
+ stocked. If you are not using your inventory to manage your products you should \
+ select the 'recommended' option below:"
+ preferred_product_selection_from_inventory_only_yes: Les nouveaux produits peuvent être mis dans mon magasin (Recommendé)
+ preferred_product_selection_from_inventory_only_no: Les nouveaux produits doivent être ajouté dans mon magasin avant de pouvoir être ajouté dans mon magasin
+ payment_methods:
+ name: Nom
+ applies: Applies?
+ manage: Gérer les moyens de paiement
+ not_method_yet: Vous n'avez encore aucun moyen de paiement.
+ create_button: Ajouter un nouveau moyen de paiement
+ create_one_button: Ajouter un nouveau moyen de paiement
primary_details:
+ name: Nom
+ name_placeholder: 'ex: Les Oranges Bleues'
+ groups: Groupes
+ groups_tip: Select any groups or regions that you are a member of. This will help customers find your enterprise.
+ groups_placeholder: Commencer à taper dans rechercher les groupes disponibles...
+ primary_producer: Primary Producer
+ primary_producer_tip: Select 'Producer' if you are a primary producer of food.
+ producer: Producteur
+ any: Any
+ none: None
+ own: Own
+ sells: Sells
+ sells_tip: "None - enterprise does not sell to customers directly.
Own - Enterprise sells own products to customers.
Any - Enterprise can sell own or other enterprises products.
"
+ visible_in_seach: Visible dans la recherche?
+ visible_in_seach_tip: Determines whether this enterprise will be visible to customers when searching the site.
+ visible: Visible
+ not_visible: Pas visible
+ permalink: Lien (pas d'espace)
+ permalink_tip: "This permalink is used to create the url to your shop: {{link}} your-shop-name/shop"
+ link_to_front: Link to shop front
+ link_to_front_tip: A direct link to your shopfront on the Open Food Network.
+ shipping_methods:
+ name: Nom
+ applies: Applies?
+ manage: Gérer les moyens de livraison
+ create_button: Ajouter un nouveau moyen de livraison
+ create_one_button: Ajouter un nouveau moyen de livraison
+ no_method_yet: Vous n'avez encore aucun moyen de livraison défini.
+ shop_preferences:
shopfront_requires_login: "Cette boutique exige un login?"
shopfront_requires_login_tip: "Les acheteurs doivent-ils se connecter pour accéder à la boutique?"
shopfront_requires_login_false: "Public"
shopfront_requires_login_true: "Demander aux acheteurs de se connecter"
+ allow_guest_orders: "Guest orders"
+ allow_guest_orders_tip: "Allow checkout as guest or require a registered user."
+ allow_guest_orders_false: "Require login to order"
+ allow_guest_orders_true: "Allow guest checkout"
+ shopfront_message_placeholder: \
+ An optional explanation for customers detailing how your shopfront works, \
+ to be displayed above the product list on your shop page.
+ shopfront_closed_message_placeholder: \
+ A message which provides a more detailed explanation about why your shop is \
+ closed and/or when customers can expect it to open again. This is displayed \
+ on your shop only when you have no active order cycles (ie. shop is closed).
+ open_date: Open Date
+ close_date: Close Date
+ social:
+ twitter_placeholder: 'ex: @lesorangesbleues'
+ tag_rules:
+ default_rules:
+ by_default: Par défaut
+ no_rules_yet: Aucune règle encore ajoutée
+ add_new_button: + Ajouter une nouvelle règle
+ no_tags_yet: Aucun tag encore défini pour cette entreprise
+ no_rules_yet: Aucun régle encore définie pour ce tag
+ for_customers_tagged: 'For customers tagged:'
+ add_new_rule: '+ Ajouter une nouvelle régle'
+ add_new_tag: '+ Ajouter un nouveau tag'
+ users:
+ email_confirmation_text: Email confirmation is pending.
We've sent a confirmation email to
+ resend: Renvoyer
+ owner: Propriétaire
+ owner_tip: Le premier utilisateur responsable pour l'entreprise.
+ notifications: Notifications
+ notifications_tip: Notifications about orders will be send to this email address.
+ notifications_placeholder: 'ex: gustav@truffles.com'
+ notifications_note: 'Note: A new email address may need to be confirmed prior to use'
+ managers: Managers
+ managers_tip: The other users with permission to manage this enterprise.
+ actions:
+ edit_profile: Mettre à jour le profil
+ properties: Propriétés
+ payment_methods: Méthodes de paiement
+ payment_methods_tip: Cette entreprise n'a pas de méthode de paiement
+ shipping_methods: Méthodes de livraison
+ shipping_methods_tip: Cette entreprise n'a pas de méthode de livraisons
+ enterprise_fees: Enterprise Fees
+ enterprise_fees_tip: This enterprise has no fees
+ admin_index:
+ name: Nom
+ role: Role
+ sells: Sells
+ visible: Visible?
+ owner: Owner
+ producer: Producer
+ change_type_form:
+ producer_profile: Producer Profile
+ connect_ofn: Connect through OFN
+ always_free: ALWAYS FREE
+ producer_description_text: Add your products to Open Food Network, allowing hubs to stock your products in their stores.
+ producer_shop: Producer Shop
+ sell_your_produce: Sell your own produce
+ sell_description_text: Sell your products directly to customers through your very own Open Food Network shopfront.
+ sell_description_text2: A Producer Shop is for your produce only, if you want to sell produce grown/produced off site, select 'Producer Hub'.
+ producer_hub: Producer Hub
+ producer_hub_text: Sell produce from self and others
+ producer_hub_description_text: Your enterprise is the backbone of your local food system. You can sell your own produce as well as produce aggregated from other enterprises through your shopfront on the Open Food Network.
+ profile: Profile Only
+ get_listing: Get a listing
+ profile_description_text: People can find and contact you on the Open Food Network. Your enterprise will be visible on the map, and will be searchable in listings.
+ hub_shop: Hub Shop
+ hub_shop_text: Sell produce from others
+ hub_shop_description_text: Your enterprise is the backbone of your local food system. You aggregate produce from other enterprises and can sell it through your shop on the Open Food Network.
+ choose_option: Please choose one of the options above.
+ change_now: Change now
+ enterprise_user_index:
+ search_placeholder: Search By Name
+ manage: Manage
+ new_form:
+ owner: Owner
+ owner_tip: The primary user responsible for this enterprise.
+ i_am_producer: I am a Producer
+ contact_name: Nom du contact
+ edit:
+ editing: 'Editing:'
+ back_link: Retour à la liste d'entreprise
+ index:
+ title: Enterprises
+ new_enterprise: Ajouter une nouvelle entreprise
+ new:
+ title: Nouvelle entreprise
+ back_link: Retour à la liste d'entreprise
+ welcome:
+ welcome_title: Bienvenue chez Open Food France !
+ welcome_text: Vous avez bien créé une
+ next_step: Etape suivante
+ choose_starting_point: 'Choose your starting point:'
+ order_cycles:
+ advanced_settings:
+ title: Advanced Settings
+ choose_product_tip: You can opt to restrict all available products (both incoming and outgoing), to only those in {{inventory}}'s inventory.
+ preferred_product_selection_from_coordinator_inventory_only_here: Coordinator's Inventory Only
+ preferred_product_selection_from_coordinator_inventory_only_all: All Available Products
+ save_reload: Save and Reload Page
+ coordinator_fees:
+ add: Add coordinator fee
+ form:
+ incoming: Incoming
+ supplier: Supplier
+ products: Products
+ receival_details: Receival details
+ fees: Fees
+ outgoing: Outgoing
+ distributor: Distributor
+ products: Products
+ tags: Tags
+ delivery_detaisl: Pickup / Delivery details
+ debug_info: Debug information
+ name_and_timing_form:
+ name: Name
+ orders_open: Orders open
+ coordinator: Coordinator
+ order_closes: Orders close
+ row:
+ suppliers: suppliers
+ distributors: distributors
+ variants: variants
+ simple_form:
+ ready_for: Ready for
+ ready_for_placeholder: Date / time
+ customer_instructions: Customer instructions
+ customer_instructions_placeholder: Pick-up or delivery notes
+ products: Products
+ fees: Fees
+ edit:
+ advanced_settings: Advanced Settings
+ update_and_close: Update and Close
+ producer_properties:
+ form:
+ property: Propriété
+ value: Valeur
+ index:
+ title: Producer Properties
+ shared:
+ user_guide_link:
+ user_guide: Guide l'utilisateur
+
home:
hubs:
show_closed_shops: "Aficher les boutiques fermées"
@@ -211,10 +465,14 @@ fr:
phone: Téléphone
next: Suivant
address: Adresse
+ address_placeholder: "ex: 16, rue du Marché"
address2: Adresse (suite)
city: Ville
+ city_placeholder: "ex: Lille"
state: Département
postcode: Code postal
+ postcode_placeholder: "ex: 59000"
+ state: Région
country: Pays
unauthorized: Non authorisé
terms_of_service: "Conditions d'utilisation"
diff --git a/config/routes.rb b/config/routes.rb
index 69319ae84a..607e6308a2 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -169,6 +169,8 @@ Openfoodnetwork::Application.routes.draw do
end
end
+ get 'sitemap.xml', to: 'sitemap#index', defaults: { format: 'xml' }
+
# Mount Spree's routes
mount Spree::Core::Engine, :at => '/'
diff --git a/spec/features/consumer/sitemap_spec.rb b/spec/features/consumer/sitemap_spec.rb
new file mode 100644
index 0000000000..6ec913de32
--- /dev/null
+++ b/spec/features/consumer/sitemap_spec.rb
@@ -0,0 +1,12 @@
+require 'spec_helper'
+
+feature 'sitemap' do
+ let(:enterprise) { create(:distributor_enterprise) }
+ let!(:group) { create(:enterprise_group, enterprises: [enterprise], on_front_page: true) }
+
+ it "renders sitemap" do
+ visit '/sitemap.xml'
+ expect(page).to have_content enterprise_shop_url(enterprise)
+ expect(page).to have_content group_url(group)
+ end
+end