Merge branch 'i18n-replace-strings-in-js' into i18n

Conflicts:
	.travis.yml
	app/views/spree/order_mailer/confirm_email_for_customer.html.haml
	config/locales/en.yml
This commit is contained in:
Maikel Linke
2015-10-21 14:09:43 +11:00
163 changed files with 2376 additions and 771 deletions

View File

@@ -15,5 +15,5 @@ $(document).ready ->
$('td.cart-adjustments a').click ->
$('.cart_adjustment').toggle()
$(this).html('Item Handling Fees (included in item totals)')
$(this).html(t('item_handling_fees'))
false

View File

@@ -7,6 +7,6 @@ Darkswarm.controller "ForgotCtrl", ($scope, $http, $location, AuthenticationServ
$http.post("/user/spree_user/password", {spree_user: $scope.spree_user}).success (data)->
$scope.sent = true
.error (data) ->
$scope.errors = "Email address not found"
$scope.errors = t 'email_not_found'
else
$scope.errors = "You must provide an email address"
$scope.errors = t 'email_required'

View File

@@ -2,7 +2,7 @@ Darkswarm.controller "LoginCtrl", ($scope, $http, $window, AuthenticationService
$scope.path = "/login"
$scope.submit = ->
Loading.message = "Hold on a moment, we're logging you in"
Loading.message = t 'logging_in'
$http.post("/user/spree_user/sign_in", {spree_user: $scope.spree_user}).success (data)->
if Redirections.after_login
$window.location.href = $window.location.origin + Redirections.after_login

View File

@@ -3,18 +3,18 @@ Darkswarm.controller "PaymentCtrl", ($scope, $timeout) ->
$scope.name = "payment"
$scope.months = [
{key: "January", value: "1"},
{key: "February", value: "2"},
{key: "March", value: "3"},
{key: "April", value: "4"},
{key: "May", value: "5"},
{key: "June", value: "6"},
{key: "July", value: "7"},
{key: "August", value: "8"},
{key: "September", value: "9"},
{key: "October", value: "10"},
{key: "November", value: "11"},
{key: "December", value: "12"},
{key: t("january"), value: "1"},
{key: t("february"), value: "2"},
{key: t("march"), value: "3"},
{key: t("april"), value: "4"},
{key: t("may"), value: "5"},
{key: t("june"), value: "6"},
{key: t("july"), value: "7"},
{key: t("august"), value: "8"},
{key: t("september"), value: "9"},
{key: t("october"), value: "10"},
{key: t("november"), value: "11"},
{key: t("december"), value: "12"},
]
$scope.years = [moment().year()..(moment().year()+15)]

View File

@@ -10,7 +10,7 @@ Darkswarm.directive "ofnChangeHub", (CurrentHub, Cart) ->
if cart_will_need_emptying()
elm.bind 'click', (ev)->
if confirm "Are you sure? This will change your selected hub and remove any items in your shopping cart."
if confirm t('confirm_hub_change')
Cart.clear()
else
ev.preventDefault()

View File

@@ -12,7 +12,7 @@ Darkswarm.directive "ofnChangeOrderCycle", (OrderCycle, Cart, storage) ->
elm.bind 'change', (ev)->
if cart_needs_emptying()
if confirm "Are you sure? This will change your selected order cycle and remove any items in your shopping cart."
if confirm t('confirm_oc_change')
Cart.clear()
scope.changeOrderCycle()
else

View File

@@ -3,7 +3,7 @@ Darkswarm.directive 'mapSearch', ($timeout)->
restrict: 'E'
require: '^googleMap'
replace: true
template: '<input id="pac-input" placeholder="Type in a location..."></input>'
template: '<input id="pac-input" placeholder="' + t('location_placeholder') + '"></input>'
link: (scope, elem, attrs, ctrl)->
$timeout =>
map = ctrl.getMap()

View File

@@ -9,5 +9,5 @@ Darkswarm.directive "ofnRegistrationLimitModal", (Navigation, $modal, Loading) -
scope.modalInstance.result.then scope.close, scope.close
scope.close = ->
Loading.message = "Taking you back to the home page"
Loading.message = t 'going_back_to_home_page'
Navigation.go "/"

View File

@@ -5,6 +5,6 @@ Darkswarm.filter "date_in_words", ->
Darkswarm.filter "sensible_timeframe", (date_in_wordsFilter)->
(date) ->
if moment().add('days', 2) < moment(date)
"Orders open"
t 'orders_open'
else
"Closing #{date_in_wordsFilter(date)}"
t('closing') + date_in_wordsFilter(date)

View File

@@ -0,0 +1,7 @@
Darkswarm.filter "translate", ->
(key, options) ->
t(key, options)
Darkswarm.filter "t", ->
(key, options) ->
t(key, options)

View File

@@ -0,0 +1,3 @@
<%# Defines a global I18n object containing the language of the current locale %>
<%- I18n.backend.send(:init_translations) unless I18n.backend.initialized? %>
window.I18n = <%= I18n.backend.send(:translations)[I18n.locale].with_indifferent_access.to_json.html_safe %>

View File

@@ -0,0 +1,12 @@
# Declares the translation function t.
# You can use translate('login') or t('login') in Javascript.
window.translate = (key, options = {}) ->
unless 'I18n' of window
console.log 'The I18n object is undefined. Cannot translate text.'
return key
return key unless key of I18n
text = I18n[key]
for name, value of options
text = text.split("%{#{name}}").join(value)
text
window.t = window.translate

View File

@@ -32,10 +32,10 @@ window.FieldsetMixin = ($scope)->
errors = for error, invalid of $scope.error(path)
if invalid
switch error
when "required" then "can't be blank"
when "number" then "must be number"
when "email" then "must be email address"
when "required" then t('error_required')
when "number" then t('error_number')
when "email" then t('error_email')
#server_errors = $scope.Order.errors[path.replace('order.', '')]
#errors.push server_errors if server_errors?
(errors.filter (error) -> error?).join ", "
(errors.filter (error) -> error?).join ", "

View File

@@ -28,6 +28,6 @@ Darkswarm.factory "AuthenticationService", (Navigation, $modal, $location, Redir
if location.pathname in ["/", "/checkout"]
Navigation.navigate "/"
else
Loading.message = "Taking you back to the home page"
Loading.message = t 'going_back_to_home_page'
location.hash = ""
location.pathname = "/"

View File

@@ -44,7 +44,7 @@ Darkswarm.factory 'Cart', (CurrentOrder, Variants, $timeout, $http, storage)->
unsaved: =>
@dirty = true
$(window).bind "beforeunload", ->
"Your order hasn't been saved yet. Give us a few seconds to finish!"
t 'order_not_saved_yet'
line_items_present: =>
@line_items.filter (li)->

View File

@@ -6,7 +6,7 @@ Darkswarm.factory 'Checkout', (CurrentOrder, ShippingMethods, PaymentMethods, $h
ship_address_same_as_billing: true
submit: ->
Loading.message = "Submitting your order: please wait"
Loading.message = t 'submitting_order'
$http.put('/checkout', {order: @preprocess()}).success (data, status)=>
Navigation.go data.path
.error (response, status)=>

View File

@@ -11,7 +11,7 @@ Darkswarm.factory "EnterpriseRegistrationService", ($http, RegistrationService,
@enterprise[key] = value
create: =>
Loading.message = "Creating " + @enterprise.name
Loading.message = t('creating') + " " + @enterprise.name
$http(
method: "POST"
url: "/api/enterprises"
@@ -28,14 +28,13 @@ Darkswarm.factory "EnterpriseRegistrationService", ($http, RegistrationService,
Loading.clear()
if data?.errors?
errors = ("#{k.capitalize()} #{v[0]}" for k, v of data.errors when v.length > 0)
alert "Failed to create your enterprise.\n" + errors.join('\n')
alert t('failed_to_create_enterprise') + "\n" + errors.join('\n')
else
alert('Failed to create your enterprise.\nPlease ensure all fields are completely filled out.')
alert(t('failed_to_create_enterprise_unknown'))
)
# RegistrationService.select('about')
update: (step) =>
Loading.message = "Updating " + @enterprise.name
Loading.message = t('updating') + " " + @enterprise.name
$http(
method: "PUT"
url: "/api/enterprises/#{@enterprise.id}"
@@ -48,9 +47,8 @@ Darkswarm.factory "EnterpriseRegistrationService", ($http, RegistrationService,
RegistrationService.select(step)
).error((data) ->
Loading.clear()
alert('Failed to update your enterprise.\nPlease ensure all fields are completely filled out.')
alert(t('failed_to_update_enterprise_unknown'))
)
# RegistrationService.select(step)
prepare: =>
enterprise = {}

View File

@@ -16,11 +16,11 @@ Darkswarm.factory "FilterSelectorsService", ->
filterText: (active)=>
total = @totalActive()
if total == 0
if active then "Hide filters" else "Filter by"
if active then t('hide_filters') else t('filter_by')
else if total == 1
"1 filter applied"
t 'one_filter_applied'
else
"#{@totalActive()} filters applied"
@totalActive() + t('x_filters_applied')
clearAll: =>
for selector in @selectors

View File

@@ -19,5 +19,5 @@ angular.module('Darkswarm').factory "RegistrationService", (Navigation, $modal,
@current_step
close: ->
Loading.message = "Taking you back to the home page"
Loading.message = t 'going_back_to_home_page'
Navigation.go "/"

View File

@@ -1,3 +0,0 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/

View File

@@ -1,5 +1,5 @@
%tab#forgot{"ng-controller" => "ForgotCtrl",
heading: "Forgot Password?",
heading: "{{'forgot_password' | t}}",
active: "active(path)",
select: "select(path)"}
@@ -8,7 +8,7 @@
.row
.large-12.columns
.alert-box.success.radius{"ng-show" => "sent"}
An email with instructions on resetting your password has been sent!
{{'password_reset_sent' | t}}
%div{"ng-show" => "!sent"}
.alert-box.alert{"ng-show" => "errors != null"}
@@ -16,7 +16,7 @@
.row
.large-12.columns
%label{for: "email"} Your email
%label{for: "email"} {{'signup_email' | t}}
%input.title.input-text{name: "email",
type: "email",
id: "email",
@@ -27,4 +27,4 @@
%input.button.primary{name: "commit",
tabindex: "3",
type: "submit",
value: "Reset password"}
value: "{{'reset_password' | t}}"}

View File

@@ -1,5 +1,5 @@
%tab#login-content{"ng-controller" => "LoginCtrl",
heading: "Log in",
heading: "{{'label_login' | t}}",
active: "active(path)",
select: "select(path)"}
%form{"ng-submit" => "submit()"}
@@ -9,7 +9,7 @@
{{ errors }}
.row
.large-12.columns
%label{for: "email"} Email
%label{for: "email"} {{'email' | t}}
%input.title.input-text{name: "email",
type: "email",
id: "email",
@@ -17,7 +17,7 @@
"ng-model" => "spree_user.email"}
.row
.large-12.columns
%label{for: "password"} Password
%label{for: "password"} {{'password' | t}}
%input.title.input-text{name: "password",
type: "password",
id: "password",
@@ -31,10 +31,10 @@
id: "remember_me",
value: "1",
"ng-model" => "spree_user.remember_me"}
%label{for: "remember_me"} Remember Me
%label{for: "remember_me"} {{'remember_me' | t}}
.row
.large-12.columns
%input.button.primary{name: "commit",
tabindex: "3",
type: "submit",
value: "Log in"}
value: "{{'label_login' | t}}"}

View File

@@ -1,6 +1,6 @@
%div.contact-container{bindonce: true}
%div.modal-centered{"bo-if" => "enterprise.email || enterprise.website || enterprise.phone"}
%p.modal-header Contact
%p.modal-header {{'contact' | t}}
%p{"bo-if" => "enterprise.phone", "bo-text" => "enterprise.phone"}
%p.word-wrap{"ng-if" => "enterprise.email"}

View File

@@ -3,7 +3,7 @@
/ TODO: Rob add logic for taxons and properties too:
/ %div{"ng-if" => "enterprise.long_description.length > 0 || enterprise.logo"}
%div
%p.modal-header About
%p.modal-header {{'label_about' | t}}
/ TODO: Rob - add in taxons and properties and property pop-overs
-# TODO: Add producer taxons and properties here

View File

@@ -1,5 +1,5 @@
%div.modal-centered{bindonce: true, "bo-if" => "enterprise.twitter || enterprise.facebook || enterprise.linkedin || enterprise.instagram"}
%p.modal-header Follow
%p.modal-header {{'follow' | t}}
.follow-icons
%span{"bo-if" => "enterprise.twitter"}
%a{"bo-href-i" => "http://twitter.com/{{enterprise.twitter}}", target: "_blank"}

View File

@@ -1,15 +0,0 @@
.row.pad-top{bindonce: true, "ng-if" => "enterprise.hubs.length > 0 && enterprise.is_distributor"}
.cta-container.small-12.columns
%label
Shop for
%strong{"bo-text" => "enterprise.name"}
products at:
%a.cta-hub{"ng-repeat" => "hub in enterprise.hubs",
"bo-href" => "hub.path",
"bo-class" => "{primary: hub.active, secondary: !hub.active}",
"ofn-change-hub" => "hub"}
%i.ofn-i_033-open-sign{"bo-if" => "hub.active"}
%i.ofn-i_032-closed-sign{"bo-if" => "!hub.active"}
.hub-name{"bo-text" => "hub.name"}
.button-address{"bo-bind" => "[hub.address.city, hub.address.state_name] | printArray"}
/ %i.ofn-i_007-caret-right

View File

@@ -2,16 +2,16 @@
.cta-container.small-12.columns
.row
.small-4.columns
%label{"active-table-hub-link" => "enterprise", change: "Change shop to:", shop: "Shop now at:"}
%label{"active-table-hub-link" => "enterprise", change: "{{'change_shop' | t}}", shop: "{{'shop_at' | t}}"}
.small-8.columns.right
%label.right{"bo-if" => "enterprise.pickup || enterprise.delivery"}
Delivery options:
{{'hubs_delivery_options' | t}}:
%span{"bo-if" => "enterprise.pickup"}
%i.ofn-i_038-takeaway
Pickup
{{'hubs_pickup' | t}}
%span{"bo-if" => "enterprise.delivery"}
%i.ofn-i_039-delivery
Delivery
{{'hubs_delivery' | t}}
.row
.columns.small-12
%a.cta-hub{"bo-href" => "enterprise.path",

View File

@@ -6,10 +6,7 @@
.row
.columns.small-12.fat
%div{"bo-if" => "enterprise.name"}
%label
Shop for
%span.turquoise{"bo-text" => "enterprise.name"}
products at:
%label{"bo-html" => "t('shop_for_products_html', {enterprise: enterprise.name})"}
%div.show-for-medium-up{"bo-if" => "!enterprise.name"}
&nbsp;
.row.cta-container

View File

@@ -4,35 +4,35 @@
.collapsed{"ng-show" => "!expanded"}
%price-percentage{percentage: 'variant.basePricePercentage'}
%a{"ng-click" => "expanded = !expanded"}
Full price breakdown
%span{"bo-text" => "'price_breakdown' | t"}
%i.ofn-i_005-caret-down
.expanded{"ng-show" => "expanded"}
%ul
%li.cost
.right {{ variant.price | localizeCurrency }}
Item cost
%span{"bo-text" => "'item_cost' | t"}
%li.admin-fee{"bo-if" => "variant.fees.admin"}
.right {{ variant.fees.admin | localizeCurrency }}
Admin fee
%span{"bo-text" => "'admin_fee' | t"}
%li.sales-fee{"bo-if" => "variant.fees.sales"}
.right {{ variant.fees.sales | localizeCurrency }}
Sales fee
%span{"bo-text" => "'sales_fee' | t"}
%li.packing-fee{"bo-if" => "variant.fees.packing"}
.right {{ variant.fees.packing | localizeCurrency }}
Packing fee
%span{"bo-text" => "'packing_fee' | t"}
%li.transport-fee{"bo-if" => "variant.fees.transport"}
.right {{ variant.fees.transport | localizeCurrency }}
Transport fee
%span{"bo-text" => "'transport_fee' | t"}
%li.fundraising-fee{"bo-if" => "variant.fees.fundraising"}
.right {{ variant.fees.fundraising | localizeCurrency }}
Fundraising fee
%span{"bo-text" => "'fundraising_fee' | t"}
%li.total
%strong
.right = {{ variant.price_with_fees | localizeCurrency }}
&nbsp;
%a{"ng-click" => "expanded = !expanded"}
Price graph
%span{"bo-text" => "'price_graph' | t"}
%i.ofn-i_006-caret-up

View File

@@ -1,5 +1,5 @@
.progress
.right Fees
.right {{'fees' | t}}
.meter
Item cost
{{'item_cost' | t}}

View File

@@ -3,7 +3,7 @@
.columns.small-12.large-6.product-header
%h3{"bo-text" => "product.name"}
%span
%em from
%em {{'products_from' | t}}
%span{"bo-text" => "enterprise.name"}
%br

View File

@@ -3,9 +3,9 @@
.row
.small-12.columns
%header
%h2 Nice one!
%h2 {{'enterprise_about_headline' | t}}
%h5
Now let's flesh out the details about
{{'enterprise_about_message' | t}}
%span{ ng: { class: "{brick: !enterprise.is_primary_producer, turquoise: enterprise.is_primary_producer}" } }
{{ enterprise.name }}
@@ -13,45 +13,45 @@
.row
.small-12.columns
.alert-box.info{ "ofn-inline-alert" => true, ng: { show: "visible" } }
%h6 Success! {{ enterprise.name }} added to the Open Food Network
%span If you exit this wizard at any stage, you need to click the confirmation link in the email you have received. This will take you to your admin interface where you can continue setting up your profile.
%h6{ "ng-bind" => "'enterprise_success' | t:{enterprise: enterprise.name}" }
%span {{'enterprise_registration_exit_message' | t}}
%a.close{ ng: { click: "close()" } } &times;
.small-12.large-8.columns
.row
.small-12.columns
.field
%label{ for: 'enterprise_description' } Short Description:
%input.chunky{ id: 'enterprise_description', placeholder: "A short sentence describing your enterprise", ng: { model: 'enterprise.description' } }
%label{ for: 'enterprise_description' } {{'enterprise_description' | t}}:
%input.chunky{ id: 'enterprise_description', placeholder: "{{'enterprise_description_placeholder' | t}}", ng: { model: 'enterprise.description' } }
.row
.small-12.columns
.field
%label{ for: 'enterprise_long_desc' } Long Description:
%textarea.chunky{ id: 'enterprise_long_desc', rows: 6, placeholder: "This is your opportunity to tell the story of your enterprise - what makes you different and wonderful? We'd suggest keeping your description to under 600 characters or 150 words.", ng: { model: 'enterprise.long_description' } }
%small {{ enterprise.long_description.length }} characters / up to 600 recommended
%label{ for: 'enterprise_long_desc' } {{'enterprise_long_desc' | t}}:
%textarea.chunky{ id: 'enterprise_long_desc', rows: 6, placeholder: "{{'enterprise_long_desc_placeholder' | t}}", ng: { model: 'enterprise.long_description' } }
%small{ "ng-bind" => "'enterprise_long_desc_length' | t:{num: enterprise.long_description.length}" }
.small-12.large-4.columns
.row
.small-12.columns
.field
%label{ for: 'enterprise_abn' } ABN:
%input.chunky{ id: 'enterprise_abn', placeholder: "eg. 99 123 456 789", ng: { model: 'enterprise.abn' } }
%label{ for: 'enterprise_abn' } {{'enterprise_abn' | t}}:
%input.chunky{ id: 'enterprise_abn', placeholder: "{{'enterprise_abn_placeholder' | t}}", ng: { model: 'enterprise.abn' } }
.row
.small-12.columns
.field
%label{ for: 'enterprise_acn' } ACN:
%input.chunky{ id: 'enterprise_acn', placeholder: "eg. 123 456 789", ng: { model: 'enterprise.acn' } }
%label{ for: 'enterprise_acn' } {{'enterprise_acn' | t}}:
%input.chunky{ id: 'enterprise_acn', placeholder: "{{'enterprise_acn_placeholder' | t}}", ng: { model: 'enterprise.acn' } }
.row
.small-12.columns
.field
%label{ for: 'enterprise_charges_sales_tax' }= t(:charges_sales_tax)
%input{ id: 'enterprise_charges_sales_tax_true', type: 'radio', name: 'charges_sales_tax', value: 'true', required: true, ng: { model: 'enterprise.charges_sales_tax' } }
%label{ for: 'enterprise_charges_sales_tax_true' } Yes
%label{ for: 'enterprise_charges_sales_tax_true' } {{'say_yes' | t}}
%input{ id: 'enterprise_charges_sales_tax_false', type: 'radio', name: 'charges_sales_tax', value: 'false', required: true, ng: { model: 'enterprise.charges_sales_tax' } }
%label{ for: 'enterprise_charges_sales_tax_false' } No
%label{ for: 'enterprise_charges_sales_tax_false' } {{'say_no' | t}}
%span.error.small-12.columns{ ng: { show: "about.charges_sales_tax.$error.required && submitted" } }
You need to make a selection.
{{'enterprise_tax_required' | t}}
.row.buttons.pad-top
.small-12.columns
%input.button.primary.right{ type: "submit", value: "Continue" }
%input.button.primary.right{ type: "submit", value: "{{'continue' | t}}" }

View File

@@ -3,28 +3,27 @@
.row
.small-12.columns
%header
%h2 Greetings!
%h5
Who is responsible for managing {{ enterprise.name }}?
%h2 {{'registration_greeting' | t}}
%h5{ "ng-bind" => "'who_is_managing_enterprise' | t:{enterprise: enterprise.name}" }
%form{ name: 'contact', novalidate: true, ng: { controller: "RegistrationFormCtrl", submit: "selectIfValid('type',contact)" } }
.row.content
.small-12.medium-12.large-7.columns
.row
.small-12.columns.field
%label{ for: 'enterprise_contact' } Primary Contact:
%label{ for: 'enterprise_contact' } {{'enterprise_contact' | t}}:
%input.chunky.small-12.columns{ id: 'enterprise_contact', name: 'contact', required: true, placeholder: "Contact Name", ng: { model: 'enterprise.contact' } }
%span.error.small-12.columns{ ng: { show: "contact.contact.$error.required && submitted" } }
You need to enter a primary contact.
{{'enterprise_contact_required' | t}}
.row
.small-12.columns.field
%label{ for: 'enterprise_email' } Email address:
%label{ for: 'enterprise_email' } {{'enterprise_email' | t}}:
%input.chunky.small-12.columns{ id: 'enterprise_email', name: 'email', type: 'email', required: true, placeholder: "eg. charlie@thefarm.com", ng: { model: 'enterprise.email' } }
%span.error.small-12.columns{ ng: { show: "(contact.email.$error.email || contact.email.$error.required) && submitted" } }
You need to enter valid email address.
{{'enterprise_email_required' | t}}
.row
.small-12.columns.field
%label{ for: 'enterprise_phone' } Phone number:
%label{ for: 'enterprise_phone' } {{'enterprise_phone' | t}}:
%input.chunky.small-12.columns{ id: 'enterprise_phone', name: 'phone', placeholder: "eg. (03) 1234 5678", ng: { model: 'enterprise.phone' } }
.small-12.medium-12.large-5.hide-for-small-only
/ %h6
@@ -43,5 +42,5 @@
.row.buttons
.small-12.columns
%input.button.secondary{ type: "button", value: "Back", ng: { click: "select('details')" } }
%input.button.primary.right{ type: "submit", value: "Continue" }
%input.button.secondary{ type: "button", value: "{{'back' | t}}", ng: { click: "select('details')" } }
%input.button.primary.right{ type: "submit", value: "{{'continue' | t}}" }

View File

@@ -3,75 +3,62 @@
.row
.small-12.columns
%header
%h2 Let's Get Started
%h5{ bo: { if: "enterprise.type != 'own'" } } Woot! First we need to know a little bit about your enterprise:
%h5{ bo: { if: "enterprise.type == 'own'" } } Woot! First we need to know a little bit about your farm:
%h2 {{'registration_detail_headline' | t}}
%h5{ bo: { if: "enterprise.type != 'own'" } } {{'registration_detail_enterprise' | t}}
%h5{ bo: { if: "enterprise.type == 'own'" } } {{'registration_detail_producer' | t}}
%form{ name: 'details', novalidate: true, ng: { controller: "RegistrationFormCtrl", submit: "selectIfValid('contact',details)" } }
.row
.small-12.medium-9.large-12.columns.end
.field
%label{ for: 'enterprise_name', bo: { if: "enterprise.type != 'own'" } } Enterprise Name:
%label{ for: 'enterprise_name', bo: { if: "enterprise.type == 'own'" } } Farm Name:
%input.chunky{ id: 'enterprise_name', name: 'name', placeholder: "e.g. Charlie's Awesome Farm", required: true, ng: { model: 'enterprise.name' } }
%label{ for: 'enterprise_name', bo: { if: "enterprise.type != 'own'" } } {{'registration_detail_name_enterprise' | t}}
%label{ for: 'enterprise_name', bo: { if: "enterprise.type == 'own'" } } {{'registration_detail_name_producer' | t}}
%input.chunky{ id: 'enterprise_name', name: 'name', placeholder: "{{'registration_detail_name_placeholder' | t}}", required: true, ng: { model: 'enterprise.name' } }
%span.error{ ng: { show: "details.name.$error.required && submitted" } }
Please choose a unique name for your enterprise
{{'registration_detail_name_error' | t}}
.row
.small-12.medium-9.large-6.columns
.field
%label{ for: 'enterprise_address' } Address line 1:
%input.chunky{ id: 'enterprise_address', name: 'address1', required: true, placeholder: "e.g. 123 Cranberry Drive", required: true, ng: { model: 'enterprise.address.address1' } }
%label{ for: 'enterprise_address' } {{'registration_detail_address1' | t}}
%input.chunky{ id: 'enterprise_address', name: 'address1', required: true, placeholder: "{{'registration_detail_address1_placeholder' | t}}", required: true, ng: { model: 'enterprise.address.address1' } }
%span.error{ ng: { show: "details.address1.$error.required && submitted" } }
Please enter an address
{{'registration_detail_address1_error' | t}}
.field
%label{ for: 'enterprise_address2' } Address line 2:
%label{ for: 'enterprise_address2' } {{'registration_detail_address2' | t}}
%input.chunky{ id: 'enterprise_address2', name: 'address2', required: false, placeholder: "", required: false, ng: { model: 'enterprise.address.address2' } }
.small-12.medium-9.large-6.columns.end
.row
.small-12.medium-8.large-8.columns
.field
%label{ for: 'enterprise_city' } Suburb:
%input.chunky{ id: 'enterprise_city', name: 'city', required: true, placeholder: "e.g. Northcote", ng: { model: 'enterprise.address.city' } }
%label{ for: 'enterprise_city' } {{'registration_detail_suburb' | t}}
%input.chunky{ id: 'enterprise_city', name: 'city', required: true, placeholder: "{{'registration_detail_suburb_placeholder' | t}}", ng: { model: 'enterprise.address.city' } }
%span.error{ ng: { show: "details.city.$error.required && submitted" } }
Please enter a suburb
{{'registration_detail_suburb_error' | t}}
.small-12.medium-4.large-4.columns
.field
%label{ for: 'enterprise_zipcode' } Postcode:
%input.chunky{ id: 'enterprise_zipcode', name: 'zipcode', required: true, placeholder: "e.g. 3070", ng: { model: 'enterprise.address.zipcode' } }
%label{ for: 'enterprise_zipcode' } {{'registration_detail_postcode' | t}}
%input.chunky{ id: 'enterprise_zipcode', name: 'zipcode', required: true, placeholder: "{{'registration_detail_postcode_placeholder' | t}}", ng: { model: 'enterprise.address.zipcode' } }
%span.error{ ng: { show: "details.zipcode.$error.required && submitted" } }
Postcode required
{{'registration_detail_postcode_error' | t}}
.row
.small-12.medium-4.large-4.columns
.field
%label{ for: 'enterprise_state' } State:
%label{ for: 'enterprise_state' } {{'registration_detail_state' | t}}
%select.chunky{ id: 'enterprise_state', name: 'state', ng: { model: 'enterprise.address.state_id', options: 's.id as s.abbr for s in enterprise.country.states', show: 'countryHasStates()', required: 'countryHasStates()' } }
%span.error{ ng: { show: "details.state.$error.required && submitted" } }
State required
{{'registration_detail_state_error' | t}}
.small-12.medium-8.large-8.columns
.field
%label{ for: 'enterprise_country' } Country:
%label{ for: 'enterprise_country' } {{'registration_detail_country' | t}}
%select.chunky{ id: 'enterprise_country', name: 'country', required: true, ng: { model: 'enterprise.country', options: 'c as c.name for c in countries' } }
%span.error{ ng: { show: "details.country.$error.required && submitted" } }
Please select a country
/ .small-12.medium-12.large-5.hide-for-small-only
/ %h6
/ Location display
/ %i.ofn-i_013-help.has-tip{ 'data-tooltip' => true, title: "Choose how you want to display your enterprise's address on the Open Food Network. By default, full location is shown everywhere including street name and number."}
/ .row
/ .small-12.columns
/ %label.indent-checkbox
/ %input{ type: 'checkbox', id: 'enterpise_suburb_only', ng: { model: 'enterprise.suburb_only' } }
/ Hide my street name and street number from the public (ie. only show the suburb)
/ .small-12.columns
/ %label.indent-checkbox
/ %input{ type: 'checkbox', id: 'enterprise_on_map', ng: { model: 'enterprise.on_map' } }
/ Blur my location on the map (show an approximate, not exact pin)
{{'registration_detail_country_error' | t}}
.row.buttons
.small-12.columns
%hr
%input.button.primary.right{ type: "submit", value: "Continue" }
%input.button.primary.right{ type: "submit", value: "{{'continue' | t}}" }

View File

@@ -2,23 +2,14 @@
.row
.small-12.columns.pad-top
%header
%h2 Finished!
%h2 {{'registration_finished_headline' | t}}
.panel.callout
%p
Thanks for filling out the details for
%span{ ng: { class: "{brick: !enterprise.is_primary_producer, turquoise: enterprise.is_primary_producer}" } }
{{ enterprise.name }}
%p You can change or update your enterprise at any stage by logging into Open Food Network and going to Admin.
%p{ "ng-bind" => "'registration_finished_thanks' | t:{enterprise: enterprise.name}" }
%p {{'registration_finished_login' | t}}
.row
.small-12.columns.text-center
%h4
Activate
%span{ ng: { class: "{brick: !enterprise.is_primary_producer, turquoise: enterprise.is_primary_producer}" } }
{{ enterprise.name }}
%h4{ "ng-bind" => "'registration_finished_activate' | t:{enterprise: enterprise.name}" }
%p
We've sent a confirmation email to
%strong {{ enterprise.email }} if it hasn't been activated before.
%br Please follow the instructions there to make your enterprise visible on the Open Food Network.
%p{ "ng-bind-html" => "t('registration_finished_activate_instruction_html', {email: enterprise.email})"}
%a.button.primary{ type: "button", href: "/" } Open Food Network home &gt;
%a.button.primary{ type: "button", href: "/" } {{'registration_finished_action' | t}} &gt;

View File

@@ -3,8 +3,8 @@
.row
.small-12.columns
%header
%h2 Thanks!
%h5 Let's upload some pretty pictures so your profile looks great! :)
%h2 {{'registration_images_headline' | t}}
%h5 {{'registration_images_description' | t}}
%form{ name: 'images', novalidate: true, ng: { controller: "RegistrationFormCtrl", submit: "select('social')" } }
.row{ ng: { repeat: 'image_step in imageSteps', show: "imageStep == image_step" } }
@@ -18,5 +18,5 @@
.row.buttons.pad-top{ ng: { if: "imageStep == 'promo'" } }
.small-12.columns
%input.button.secondary{ type: "button", value: "Back", ng: { click: "imageSelect('logo')" } }
%input.button.primary.right{ type: "submit", value: "Continue" }
%input.button.secondary{ type: "button", value: "{{'back' | t}}", ng: { click: "imageSelect('logo')" } }
%input.button.primary.right{ type: "submit", value: "{{'continue' | t}}" }

View File

@@ -4,42 +4,42 @@
.row
.small-12.columns.center
%h4
Step 1. Select Logo Image
{{'select_logo' | t}}
.row
.small-12.columns.center
%span.small
Tip: Square images will work best, preferably at least 300&times;300px
{{'logo_tip' | t}}
.row.pad-top
.small-12.columns
.image-select.small-12.columns
%label.small-12.columns.button{ for: 'image-select' } Choose a logo image
%label.small-12.columns.button{ for: 'image-select' } {{'logo_label' | t}}
%input#image-select{ type: 'file', hidden: true, 'nv-file-select' => true, uploader: "imageUploader", options: '{ alias: imageStep }' }
.row.show-for-large-up
.large-12.columns
%span#or.large-12.columns
OR
{{'action_or' | t}}
.row.show-for-large-up
.large-12.columns
#image-over{ 'nv-file-over' => true, uploader: "imageUploader" }
Drag and drop your logo here
{{'logo_drag' | t}}
.small-12.medium-12.large-6.columns
.row
.small-12.columns.center
.row
.small-12.columns.center
%h4
Step 2. Review Your Logo
{{'review_logo' | t}}
.row
.small-12.columns.center
%span.small
Tip: for best results, your logo should fill the available space
{{'review_logo_tip' | t}}
.row.pad-top
.small-12.columns.center
#image-placeholder.logo
%img{ ng: { show: "imageSrc() && !imageUploader.isUploading", src: '{{ imageSrc() }}' } }
.message{ ng: { hide: "imageSrc() || imageUploader.isUploading" } }
Your logo will appear here for review once uploaded
{{'logo_placeholder' | t}}
.loading{ ng: { hide: "!imageUploader.isUploading" } }
%img.spinner{ src: "/assets/spinning-circles.svg" }
%br/
Uploading...
{{'uploading' | t}}

View File

@@ -2,42 +2,42 @@
.row
.small-12.columns.center
%h4
Step 3. Select Promo Image
{{'select_promo_image' | t}}
.row
.small-12.medium-12.large-5.columns.center
.row
.small-12.columns.center
%span.small
Tip: Shown as a banner, preferred size is 1200&times;260px
{{'promo_image_tip' | t}}
.row.pad-top
.small-12.columns
.image-select.small-12.columns
%label.small-12.columns.button{ for: 'image-select' } Choose a promo image
%label.small-12.columns.button{ for: 'image-select' } {{'promo_image_label' | t}}
%input#image-select{ type: 'file', hidden: true, 'nv-file-select' => true, uploader: "imageUploader", options: '{ alias: imageStep }' }
.large-2.columns
%span#or.horizontal.large-12.columns
OR
{{'action_or' | t}}
.large-5.columns
#image-over{ 'nv-file-over' => true, uploader: "imageUploader" }
Drag and drop your promo here
{{'promo_image_drag' | t}}
.small-12.medium-12.large-12.columns.pad-top
.row
.small-12.columns.center
%h4
Step 4. Review Your Promo Banner
{{'review_promo_image' | t}}
.row
.small-12.columns.center
.row
.small-12.columns.center
%span.small
Tip: for best results, your promo image should fill the available space
{{'review_promo_image_tip' | t}}
.row.pad-top
.small-12.columns.center
#image-placeholder.promo
%img{ ng: { show: "imageSrc() && !imageUploader.isUploading", src: '{{ imageSrc() }}' } }
.message{ ng: { hide: "imageSrc() || imageUploader.isUploading" } }
Your logo will appear here for review once uploaded
{{'promo_image_placeholder' | t}}
.loading{ ng: { hide: "!imageUploader.isUploading" } }
%img.spinner{ src: "/assets/spinning-circles.svg" }
%br/
Uploading...
{{'uploading' | t}}

View File

@@ -1,46 +1,41 @@
.row
.small-12.columns
%header
%h2 Hi there!
%h2 {{'registration_greeting' | t}}
%h4
%small
%i.ofn-i_040-hub
You can now create a profile for your Producer or Hub
{{'registration_intro' | t}}
.hide-for-large-up
%hr
%input.button.small.primary{ type: "button", value: "Let's get started!", ng: { click: "select('details')" } }
%input.button.small.primary{ type: "button", value: "{{'registration_action' | t}}", ng: { click: "select('details')" } }
%hr
.row{ 'data-equalizer' => true }
.small-12.medium-12.large-6.columns.pad-top{ 'data-equalizer-watch' => true }
%h5 You'll need:
%h5 {{'registration_checklist' | t}}:
%ul.check-list
%li
5-10 minutes
{{'registration_time' | t}}
%li
Enterprise address
{{'registration_enterprise_address' | t}}
%li
Primary contact details
{{'registration_contact_details' | t}}
%li
Your logo image
{{'registration_logo' | t}}
%li
Landscape image for your profile
{{'registration_promo_image' | t}}
%li
'About Us' text
{{'registration_about_us' | t}}
.small-9.medium-8.large-5.columns.pad-top.end{ 'data-equalizer-watch' => true}
%h5
What do I get?
%p
Your profile helps people
%strong find
and
%strong contact
you on the Open Food Network.
%p Use this space to tell the story of your enterprise, to help drive connections to your social and online presence.
%p It's also the first step towards trading on the Open Food Network, or opening an online store.
{{'registration_outcome_headline' | t}}
%p{ "ng-bind-html" => "t('registration_outcome1_html')" }
%p {{'registration_outcome2' | t}}
%p {{'registration_outcome3' | t}}
.row.show-for-large-up
.small-12.columns
%hr
%input.button.primary.right{ type: "button", value: "Let's get started!", ng: { click: "select('details')" } }
%input.button.primary.right{ type: "button", value: "{{'registration_action' | t}}", ng: { click: "select('details')" } }

View File

@@ -1,16 +1,16 @@
.row
.small-12.columns
%header
%h2 Oh no!
%h4 You have reached the limit!
%h2 {{'limit_reached_headline' | t}}
%h4 {{'limit_reached_message' | t}}
.row
.small-12.medium-3.large-2.columns.text-right.hide-for-small-only
%img{:src => "/assets/potatoes.png"}
.small-12.medium-9.large-10.columns
%p
You have reached the limit for the number of enterprises you are allowed to own on the
{{'limit_reached_text' | t}}
%strong Open Food Network.
.row
.small-12.columns
%hr
%input.button.primary{ type: "button", value: "Return to the homepage", ng: { click: "close()" } }
%input.button.primary{ type: "button", value: "{{'limit_reached_action' | t}}", ng: { click: "close()" } }

View File

@@ -4,12 +4,8 @@
.row
.small-12.columns
%header
%h2 Final step!
%h5
How can people find
%span{ ng: { class: "{brick: !enterprise.is_primary_producer, turquoise: enterprise.is_primary_producer}" } }
{{ enterprise.name }}
online?
%h2 {{'enterprise_final_step' | t}}
%h5{ "ng-bind" => "'enterprise_social_text' | t:{enterprise: enterprise.name}" }
%form{ name: 'social', novalidate: true, ng: { controller: "RegistrationFormCtrl", submit: "update('finished',social)" } }
.row.content
@@ -17,33 +13,33 @@
.row
.small-12.columns
.field
%label{ for: 'enterprise_website' } Website:
%input.chunky{ id: 'enterprise_website', placeholder: "eg. openfoodnetwork.org.au", ng: { model: 'enterprise.website' } }
%label{ for: 'enterprise_website' } {{'website' | t}}:
%input.chunky{ id: 'enterprise_website', placeholder: "{{'website_placeholder' | t}}", ng: { model: 'enterprise.website' } }
.row
.small-12.columns
.field
%label{ for: 'enterprise_facebook' } Facebook:
%input.chunky{ id: 'enterprise_facebook', placeholder: "eg. www.facebook.com/PageNameHere", ng: { model: 'enterprise.facebook' } }
%label{ for: 'enterprise_facebook' } {{'facebook' | t}}:
%input.chunky{ id: 'enterprise_facebook', placeholder: "{{'facebook_placeholder' | t}}", ng: { model: 'enterprise.facebook' } }
.row
.small-12.columns
.field
%label{ for: 'enterprise_linkedin' } LinkedIn:
%input.chunky{ id: 'enterprise_linkedin', placeholder: "eg. www.linkedin.com/YourNameHere", ng: { model: 'enterprise.linkedin' } }
%label{ for: 'enterprise_linkedin' } {{'linkedin' | t}}:
%input.chunky{ id: 'enterprise_linkedin', placeholder: "{{'linkedin_placeholder' | t}}", ng: { model: 'enterprise.linkedin' } }
.small-12.large-5.columns
.row
.small-12.columns
.field
%label{ for: 'enterprise_twitter' } Twitter:
%input.chunky{ id: 'enterprise_twitter', placeholder: "eg. @twitter_handle", ng: { model: 'enterprise.twitter' } }
%label{ for: 'enterprise_twitter' } {{'twitter' | t}}:
%input.chunky{ id: 'enterprise_twitter', placeholder: "{{'twitter_placeholder' | t}}", ng: { model: 'enterprise.twitter' } }
.row
.small-12.columns
.field
%label{ for: 'enterprise_instagram' } Instagram:
%input.chunky{ id: 'enterprise_instagram', placeholder: "eg. @instagram_handle", ng: { model: 'enterprise.instagram' } }
%label{ for: 'enterprise_instagram' } {{'instagram' | t}}:
%input.chunky{ id: 'enterprise_instagram', placeholder: "{{'instagram_placeholder' | t}}", ng: { model: 'enterprise.instagram' } }
.row.buttons
.small-12.columns
%input.button.secondary{ type: "button", value: "Back", ng: { click: "select('images')" } }
%input.button.primary.right{ type: "submit", value: "Continue" }
%input.button.secondary{ type: "button", value: "{{'back' | t}}", ng: { click: "select('images')" } }
%input.button.primary.right{ type: "submit", value: "{{'continue' | t}}" }

View File

@@ -5,12 +5,9 @@
.row
.small-12.columns
%header
%h2
Last step to add
%span{ ng: { class: "{brick: !enterprise.is_primary_producer, turquoise: enterprise.is_primary_producer}" } }
{{ enterprise.name }}!
%h2{ "ng-bind" => "'registration_type_headline' | t:{enterprise: enterprise.name}" }
%h4
Are you a producer?
{{'registration_type_question' | t}}
%form{ name: 'type', novalidate: true, ng: { controller: "RegistrationFormCtrl", submit: "create(type)" } }
.row#enterprise-types{ 'data-equalizer' => true, bo: { if: "enterprise.type != 'own'" } }
@@ -19,32 +16,32 @@
.small-12.medium-6.large-6.columns{ 'data-equalizer-watch' => true }
%a.btnpanel#producer-panel{ href: "#", ng: { click: "enterprise.is_primary_producer = true", class: "{selected: enterprise.is_primary_producer}" } }
%i.ofn-i_059-producer
%h4 Yes, I'm a producer
%h4 {{'registration_type_producer' | t}}
.small-12.medium-6.large-6.columns{ 'data-equalizer-watch' => true }
%a.btnpanel#hub-panel{ href: "#", ng: { click: "enterprise.is_primary_producer = false", class: "{selected: enterprise.is_primary_producer == false}" } }
%i.ofn-i_063-hub
%h4 No, I'm not a producer
%h4 {{'registration_type_no_producer' | t}}
.row
.small-12.columns
%input.chunky{ id: 'enterprise_is_primary_producer', name: 'is_primary_producer', hidden: true, required: true, ng: { model: 'enterprise.is_primary_producer' } }
%span.error{ ng: { show: "type.is_primary_producer.$error.required && submitted" } }
Please choose one. Are you are producer?
{{'registration_type_error' | t}}
.row
.small-12.columns
.panel.callout
.left
%i.ofn-i_013-help
&nbsp;
%p Producers make yummy things to eat &amp;/or drink. You're a producer if you grow it, raise it, brew it, bake it, ferment it, milk it or mould it.
%p {{'registration_type_producer_help' | t}}
.panel.callout
.left
%i.ofn-i_013-help
&nbsp;
%p If youre not a producer, youre probably someone who sells and distributes food. You might be a hub, coop, buying group, retailer, wholesaler or other.
%p {{'registration_type_no_producer_help' | t}}
.row.buttons
.small-12.columns
%input.button.secondary{ type: "button", value: "Back", ng: { click: "select('contact')" } }
%input.button.primary.right{ type: "submit", value: "Create Profile" }
%input.button.secondary{ type: "button", value: "{{'back' | t}}", ng: { click: "select('contact')" } }
%input.button.primary.right{ type: "submit", value: "{{'create_profile' | t}}" }

View File

@@ -1,7 +1,7 @@
.container
.row.modal-centered
%h2 Welcome to the Open Food Network!
%h5 Start By Signing Up (or logging in):
%h2 {{'welcome_to_ofn' | t}}
%h5 {{'signup_or_login' | t}}:
%div{"ng-controller" => "AuthenticationCtrl"}
%tabset
%ng-include{src: "'signup.html'"}
@@ -9,9 +9,9 @@
%ng-include{src: "'forgot.html'"}
%div{ ng: { show: "active('/signup')"} }
%hr
Already have an account?
{{'have_an_account' | t}}
%a{ href: "", ng: { click: "select('/login')"}}
Log in now.
{{'action_login' | t}}
%a.close-reveal-modal{"ng-click" => "$close()"}
%i.ofn-i_009-close

View File

@@ -5,7 +5,7 @@
.bulk-buy.inline{"bo-if" => "variant.product.group_buy"}
%i.ofn-i_056-bulk><
%em><
\ Bulk
\ {{'bulk' | t}}
-# WITHOUT GROUP BUY
.small-5.medium-3.large-3.columns.text-right{"bo-if" => "!variant.product.group_buy"}
@@ -30,7 +30,7 @@
integer: true,
min: 0,
"ng-model" => "variant.line_item.quantity",
placeholder: "min",
placeholder: "{{'shop_variant_quantity_min' | t}}",
"ofn-disable-scroll" => true,
max: "{{variant.on_demand && 9999 || variant.count_on_hand }}",
name: "variants[{{variant.id}}]", id: "variants_{{variant.id}}"}
@@ -40,7 +40,7 @@
integer: true,
min: 0,
"ng-model" => "variant.line_item.max_quantity",
placeholder: "max",
placeholder: "{{'shop_variant_quantity_max' | t}}",
"ofn-disable-scroll" => true,
max: "{{variant.on_demand && 9999 || variant.count_on_hand }}",
name: "variant_attributes[{{variant.id}}][max_quantity]"}

View File

@@ -1,11 +1,11 @@
%tab#sign-up-content{"ng-controller" => "SignupCtrl",
heading: "Sign up",
heading: "{{'label_signup' | t}}",
active: "active(path)",
select: "select(path)"}
%form{"ng-submit" => "submit()"}
.row
.large-12.columns
%label{for: "email"} Your email
%label{for: "email"} {{'signup_email' | t}}
%input.title.input-text{name: "email",
type: "email",
id: "email",
@@ -15,7 +15,7 @@
{{ errors.email.join(' ') }}
.row
.large-12.columns
%label{for: "password"} Choose a password
%label{for: "password"} {{'choose_password' | t}}
%input.title.input-text{name: "password",
type: "password",
id: "password",
@@ -26,7 +26,7 @@
{{ errors.password.join(' ') }}
.row
.large-12.columns
%label{for: "password_confirmation"} Confirm password
%label{for: "password_confirmation"} {{'confirm_password' | t}}
%input.title.input-text{name: "password_confirmation",
type: "password",
id: "password_confirmation",
@@ -38,4 +38,4 @@
%input.button.primary{name: "commit",
tabindex: "3",
type: "submit",
value: "Sign up now"}
value: "{{'action_signup' | t}}"}

View File

@@ -7,9 +7,11 @@
.small-4.medium-3.columns.text-right
%span.accordion-up
%em
%small Hide
%small
= t :hide
%i.ofn-i_053-point-up
%span.accordion-down
%em
%small Expand
%small
= t :expand
%i.ofn-i_052-point-down

View File

@@ -1,11 +1,14 @@
%section{"ng-show" => "!enabled"}
.row
.small-12.columns.text-center{"ng-controller" => "AuthenticationCtrl"}
%h3.pad-top Ok, ready to checkout?
%h3.pad-top
= t :checkout_headline
.row.pad-top
.small-5.columns.text-center{"ng-controller" => "AuthenticationCtrl"}
%button.primary.expand{"ng-click" => "open()"} Log in
%button.primary.expand{"ng-click" => "open()"}
= t :label_login
.small-2.columns.text-center
%p.pad-top -OR-
.small-5.columns.text-center
%button.neutral-btn.dark.expand{"ng-click" => "enabled = true"} Checkout as guest
%button.neutral-btn.dark.expand{"ng-click" => "enabled = true"}
= t :checkout_as_guest

View File

@@ -7,7 +7,7 @@
%i.ofn-i_009-close
%label.label.round.success.right
%i.ofn-i_051-check-big
Billing info
= t :checkout_billing
%accordion-group{"is-open" => "accordion.billing",
"ng-class" => "{valid: billing.$valid, open: accordion.billing}"}
@@ -16,23 +16,24 @@
= f.fields_for :bill_address, @order.bill_address do |ba|
.row
.small-12.columns
= validated_input "Address", "order.bill_address.address1", "ofn-focus" => "accordion['billing']"
= validated_input t(:address), "order.bill_address.address1", "ofn-focus" => "accordion['billing']"
.row
.small-12.columns
= validated_input "Address (contd.)", "order.bill_address.address2", required: false
= validated_input t(:address2), "order.bill_address.address2", required: false
.row
.small-6.columns
= validated_input "City", "order.bill_address.city"
= validated_input t(:city), "order.bill_address.city"
.small-6.columns
= validated_select "State", "order.bill_address.state_id", checkout_state_options(:billing)
= validated_select t(:state), "order.bill_address.state_id", checkout_state_options(:billing)
.row
.small-6.columns
= validated_input "Postcode", "order.bill_address.zipcode"
= validated_input t(:postcode), "order.bill_address.zipcode"
.small-6.columns.right
= validated_select "Country", "order.bill_address.country_id", checkout_country_options
= validated_select t(:country), "order.bill_address.country_id", checkout_country_options
.row
.small-12.columns.text-right
%button.primary{"ng-disabled" => "billing.$invalid", "ng-click" => "next($event)"} Next
%button.primary{"ng-disabled" => "billing.$invalid", "ng-click" => "next($event)"}
= t :next

View File

@@ -7,7 +7,7 @@
%i.ofn-i_009-close
%label.label.round.success.right
%i.ofn-i_051-check-big
Your details
= t :checkout_details
%accordion-group{"is-open" => "accordion.details",
"ng-class" => "{valid: details.$valid, open: accordion.details}"}
@@ -15,17 +15,18 @@
.row
.small-6.columns
= validated_input "First Name", "order.bill_address.firstname"
= validated_input t(:first_name), "order.bill_address.firstname"
.small-6.columns
= validated_input "Last Name", "order.bill_address.lastname"
= validated_input t(:last_name), "order.bill_address.lastname"
.row
.small-6.columns
= validated_input 'Email', 'order.email', type: :email, "ofn-focus" => "accordion['details']"
= validated_input t(:email), 'order.email', type: :email, "ofn-focus" => "accordion['details']"
.small-6.columns
= validated_input 'Phone', 'order.bill_address.phone'
= validated_input t(:phone), 'order.bill_address.phone'
.row
.small-12.columns.text-right
%button.primary{"ng-disabled" => "details.$invalid", "ng-click" => "next($event)"} Next
%button.primary{"ng-disabled" => "details.$invalid", "ng-click" => "next($event)"}
= t :next

View File

@@ -13,5 +13,5 @@
= render "checkout/payment", f: f
%p
%button.button.primary{type: :submit}
Place order now
= t :checkout_send
/ {{ checkout.$valid }}

View File

@@ -7,7 +7,7 @@
%i.ofn-i_009-close
%label.label.round.success.right
%i.ofn-i_051-check-big
Payment
= t :checkout_shipping
%accordion-group{"is-open" => "accordion.payment",
"ng-class" => "{valid: payment.$valid, open: accordion.payment}"}

View File

@@ -7,7 +7,7 @@
%i.ofn-i_009-close
%label.label.round.success.right
%i.ofn-i_051-check-big
Shipping info
= t :checkout_shipping
%accordion-group{"is-open" => "accordion.shipping",
"ng-class" => "{valid: shipping.$valid, open: accordion.shipping}"}
@@ -22,7 +22,7 @@
"ng-model" => "order.shipping_method_id"}
{{ method.name }}
%em.light{"ng-show" => "!method.price || method.price == 0"}
(Free)
= "(#{t(:checkout_method_free)})"
%em.light{"ng-hide" => "!method.price || method.price == 0"}
({{ method.price | localizeCurrency }})
@@ -31,14 +31,15 @@
%label{"ng-if" => "Checkout.requireShipAddress()"}
%input{type: :checkbox, "ng-model" => "Checkout.ship_address_same_as_billing"}
Shipping address same as billing address?
= t :checkout_address_same
.small-12.columns.medium-6.columns.large-6.columns
#distributor_address.panel{"ng-show" => "Checkout.shippingMethod().description"}
%span{ style: "white-space: pre-wrap;" }{{ Checkout.shippingMethod().description }}
%br/
%br/
= 'Ready for:' if @order.order_cycle.pickup_time_for(@order.distributor)
- if @order.order_cycle.pickup_time_for(@order.distributor)
= t :checkout_ready_for
= @order.order_cycle.pickup_time_for(@order.distributor)
= f.fields_for :ship_address, @order.ship_address do |sa|
@@ -46,8 +47,9 @@
.row
.small-12.columns
= f.text_area :special_instructions, label: "Any comments or special instructions?", size: "60x4", "ng-model" => "order.special_instructions"
= f.text_area :special_instructions, label: t(:checkout_instructions), size: "60x4", "ng-model" => "order.special_instructions"
.row
.small-12.columns.text-right
%button.primary{"ng-disabled" => "shipping.$invalid", "ng-click" => "next($event)"} Next
%button.primary{"ng-disabled" => "shipping.$invalid", "ng-click" => "next($event)"}
= t :next

View File

@@ -1,10 +1,12 @@
%orderdetails
= form_for current_order, url: "#", html: {"ng-submit" => "purchase($event, checkout)"} do |f|
%fieldset
%legend Your order
%legend
= t :checkout_your_order
%table
%tr
%th Cart total
%th
= t :checkout_cart_total
%td.cart-total.text-right= display_checkout_subtotal(@order)
- checkout_adjustments_for(current_order, exclude: [:shipping, :line_item]).reject{ |a| a.amount == 0 }.each do |adjustment|
@@ -13,15 +15,16 @@
%td.text-right= adjustment.display_amount.to_html
%tr
%th Shipping
%th
= t :checkout_shipping_price
%td.shipping.text-right {{ Checkout.shippingPrice() | localizeCurrency }}
%tr
%th Total
%th
= t :checkout_total_price
%td.total.text-right {{ Checkout.cartTotal() | localizeCurrency }}
//= f.submit "Purchase", class: "button", "ofn-focus" => "accordion['payment']"
%a.button.secondary{href: cart_url}
%i.ofn-i_008-caret-left
Back to Cart
= t :checkout_back_to_cart

View File

@@ -1,14 +1,15 @@
- content_for(:title) do
Checkout
= t :checkout_title
= inject_enterprises
.darkswarm.footer-pad
- content_for :order_cycle_form do
%closing Checkout now
%closing
= t :checkout_now
%p
Order ready for
= t :checkout_order_ready
%strong
= pickup_time current_order_cycle

View File

@@ -1,22 +1,18 @@
%h3
= "Hi, #{@resource.contact}!"
= t :email_confirmation_greeting, contact: @resource.contact
%p.lead
= "A profile for #{@resource.name} has been successfully created!"
To activate your Profile we need to confirm this email address.
= t :email_confirmation_profile_created, name: @resource.name
%p &nbsp;
%p.callout
Please click the link below to confirm your email and to continue setting up your profile.
= t :email_confirmation_click_link
%br
%strong
= link_to 'Confirm this email address »', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token)
= link_to t(:email_confirmation_link_label), confirmation_url(@resource, :confirmation_token => @resource.confirmation_token)
%p &nbsp;
%p
After confirming your email you can access your administration account for this enterprise.
See the
= link_to 'User Guide', 'http://www.openfoodnetwork.org/platform/user-guide/'
= "to find out more about #{ Spree::Config[:site_name] }'s features and to start using your profile or online store."
= t :email_confirmation_help, link: link_to(t(:email_confirmation_userguide), 'http://www.openfoodnetwork.org/platform/user-guide/'), sitename: Spree::Config[:site_name]
= render 'shared/mailers/signoff'

View File

@@ -1,26 +1,22 @@
%h3
= "Welcome, #{@enterprise.contact}!"
= "#{t(:email_welcome)}, #{@enterprise.contact}!"
%p.lead
Thank you for confirming your email address.
= t :email_confirmed
%strong
= @enterprise.name
= "is now part of #{ Spree::Config.site_name }!"
= "#{t(:email_registered)} #{ Spree::Config.site_name }!"
%p
The User Guide with detailed support for setting up your Producer or Hub is here:
= link_to 'Open Food Network User Guide', 'http://www.openfoodnetwork.org/platform/user-guide/'
= t :email_userguide_html, link: link_to('Open Food Network User Guide', 'http://www.openfoodnetwork.org/platform/user-guide/')
%p
You can manage your account by logging into the
= link_to 'Admin Panel', spree.admin_url
or by clicking on the cog in the top right hand side of the homepage, and selecting Administration.
= t :email_admin_html, link: link_to('Admin Panel', spree.admin_url)
%p
We also have an online forum for community discussion related to OFN software and the unique challenges of running a food enterprise. You are encouraged to join in. We are constantly evolving and your input into this forum will shape what happens next.
= link_to 'Join the community.', 'http://community.openfoodnetwork.org/'
= t :email_community_html, link: link_to('Join the community.', 'http://community.openfoodnetwork.org/')
%p
If you have any difficulties, check out our FAQs, browse the forum or post a 'Support' topic and someone will help you out!
= t :email_help
= render 'shared/mailers/signoff'

View File

@@ -8,17 +8,18 @@
%div{"ng-controller" => "OrderCycleChangeCtrl", "ng-cloak" => true}
%closing{"ng-if" => "OrderCycle.selected()"}
Next order closing
= t :enterprises_next_closing
%strong {{ OrderCycle.orders_close_at() | date_in_words }}
%span Ready for
%span
= t :enterprises_ready_for
/ Will this label should be a variable to reflect 'Ready for pickup / delivery' as appropriate
%select.avenir#order_cycle_id{"ng-model" => "order_cycle.order_cycle_id",
"ofn-change-order-cycle" => true,
"ng-options" => "oc.id as oc.time for oc in #{@order_cycles.map {|oc| {time: pickup_time(oc), id: oc.id}}.to_json}",
"popover-placement" => "left", "popover" => "Choose when you want your order:", "popover-trigger" => "openTrigger"}
"popover-placement" => "left", "popover" => t(:enterprises_choose), "popover-trigger" => "openTrigger"}

View File

@@ -1,7 +1,8 @@
%div.contact-container{bindonce: true}
- if @group.email.present? || @group.website.present? || @group.phone.present?
%div.modal-centered
%p.modal-header Contact
%p.modal-header
= t :groups_contact_web
- if @group.phone.present?
%p
%a{tel: @group.phone}
@@ -9,16 +10,17 @@
- if @group.email.present?
%p
=link_to_service "", @group.email.reverse, mailto: true do
Email us
= t :groups_contact_email
- if @group.website.present?
%p
=link_to_service "http://", @group.website do
Visit our website
= t :groups_contact_website
%div{bindonce: true}
- if @group.facebook.present? || @group.twitter.present? || @group.linkedin.present? || @group.instagram.present?
%div.modal-centered.pad-top
%p.modal-header Follow
%p.modal-header
= t :groups_contact_web
.follow-icons{bindonce: true}
=link_to_service "http://twitter.com/", @group.twitter do
%i.ofn-i_041-twitter
@@ -32,7 +34,8 @@
%div{bindonce: true}
- if @group.address1.present? || @group.city.present?
%div.modal-centered.pad-top
%p.modal-header Address
%p.modal-header
= t :groups_contact_web
%p
= @group.address1
- if @group.address2.present?

View File

@@ -1,5 +1,5 @@
- content_for(:title) do
Groups
= t :groups_title
= inject_enterprises
@@ -9,11 +9,12 @@
#groups.pad-top.footer-pad{"ng-controller" => "GroupsCtrl"}
#active-table-search.row.pad-top
.small-12.columns
%h1 Groups / regions
%h1
= t :groups_headline
%p
%input{type: :text,
"ng-model" => "query",
placeholder: "Search name or keyword",
placeholder: t(:groups_search),
"ng-debounce" => "150",
"ofn-disable-enter" => true}
@@ -39,6 +40,6 @@
.group{"ng-show" => "groups.length == 0"}
.row.pad-top
No groups found
= t :groups_no_groups
= render partial: "shared/footer"

View File

@@ -42,16 +42,18 @@
%tab{heading: 'About us',
active: "active(\'about\')",
select: "select(\'about\')"}
%h1 About Us
%h1
= t :groups_about
%p!= @group.long_description
%tab{heading: 'Our producers',
%tab{heading: t(:groups_producers),
active: "active(\'producers\')",
select: "select(\'producers\')"}
.producers{"ng-controller" => "GroupEnterprisesCtrl"}
.row
.small-12.columns
%h1 Our Producers
%h1
= t :groups_producers
= render partial: "shared/components/enterprise_search"
-# TODO: find out why this is not working
-#= render partial: "producers/filters"
@@ -71,13 +73,14 @@
= render partial: 'shared/components/enterprise_no_results'
%tab{heading: 'Our hubs',
%tab{heading: t(:groups_hubs),
active: "active(\'hubs\')",
select: "select(\'hubs\')"}
.hubs{"ng-controller" => "GroupEnterprisesCtrl"}
.row
.small-12.columns
%h1 Our Hubs
%h1
= t :groups_hubs
= render partial: "shared/components/enterprise_search"
-# TODO: find out why this is not working
@@ -109,11 +112,11 @@
%p.text-small
= "Copyright #{Date.today.year} #{@group.name}"
%h2
=link_to_service "https://www.facebook.com/", @group.facebook, title: 'Follow us on Facebook' do
=link_to_service "https://www.facebook.com/", @group.facebook, title: t(:groups_contact_facebook) do
%i.ofn-i_044-facebook
=link_to_service "", @group.email.reverse, title:'Email us', mailto: true do
=link_to_service "", @group.email.reverse, title: t(:groups_contact_email), mailto: true do
%i.ofn-i_050-mail-circle
=link_to_service "http://", @group.website, title: 'Visit our website' do
=link_to_service "http://", @group.website, title: t(:groups_contact_website) do
%i.ofn-i_049-web
%p
&nbsp;

View File

@@ -1,36 +1,48 @@
- content_for(:title) do
Sign up as a group
= t :groups_signup_title
#panes
#shops-signup.pane
.row.header
.small-12.medium-12.columns.text-center
%h2 Groups sign up
%h2
= t :groups_signup_headline
.row.content
.small-12.medium-6.medium-offset-3.columns.text-center
%p.text-big We're an amazing platform for collaborative marketing, the easiest way for your members and stakeholders to reach new markets. We're non-profit, affordable, and simple.
%p.text-big
= t :groups_signup_intro
%br
%a.button.transparent{href: "hello@openfoodnetwork.org?subject=I'd%20like%20to%20talk%20to%20you%20about%20groups%20on%20the%20Open%20Food%20Network".reverse, target: '_blank', mailto: true}
Email us
= t :groups_signup_email
.groups-details.pane
.row
.small-12.medium-8.medium-offset-2.columns
%h3.text-center We transform food systems fairly.
%p.text-big It's why we get out of bed every day. We're a global non-profit, based on open source code. We play fair. You can always trust us.
%p.text-big We know you have big ideas, and we want to help. We'll share our knowledge, networks and resources. We know that isolation doesn't create change, so we'll partner with you.
%h3.text-center
= t :groups_signup_motivation1
%p.text-big
= t :groups_signup_motivation2
%p.text-big
= t :groups_signup_motivation3
%br
%h3.text-center We meet you where you are.
%p.text-big You might be an alliance of food hubs, producers, or distributors, and an industry body, or a local government.
%p.text-big Whatever your role in your local food movement, we're ready to help. However you come to wonder what Open Food Network would look like or is doing in your part of the world, let's start the conversation.
%h3.text-center
= t :groups_signup_motivation4
%p.text-big
= t :groups_signup_motivation5
%p.text-big
= t :groups_signup_motivation6
%br
%h3.text-center We make food movements make more sense.
%p.text-big You need to activate and enable your networks, we offer a platform for conversation and action. You need real engagement. Well help reach all the players, all the stakeholders, all the sectors.
%p.text-big You need resourcing. Well bring all our experience to bear. You need cooperation. Well better connect you to a global network of peers.
%h3.text-center
= t :groups_signup_motivation7
%p.text-big
= t :groups_signup_motivation8
%p.text-big
= t :groups_signup_motivation9
.pane
.row
.small-12.medium-10.medium-offset-1.columns.text-center
%h2 Group Account
%h2
= t :groups_signup_pricing
-# %p.text-big
-# / If there is a time-sensitive offer you can write it here, e.g.
-# Time-sensitive offer goes here!
@@ -40,22 +52,26 @@
#shops-case-studies
.row
.small-12.medium-10.medium-offset-1.columns
%h2.text-center Case studies
%h2.text-center
= t :groups_signup_studies
%br
= ContentConfig.group_signup_case_studies_html.html_safe
.pane#cta
.row
.small-12.medium-6.medium-offset-3.columns.text-center
%h2 Ready to discuss?
%p.text-big Get in touch to discover what OFN can do for you:
%h2
= t :groups_signup_contact
%p.text-big
= t :groups_signup_contact_text
%a.button.transparent{href: "hello@openfoodnetwork.org?subject=I'd%20like%20to%20talk%20to%20you%20about%20groups%20on%20the%20Open%20Food%20Network".reverse, target: '_blank', mailto: true}
Email us
= t :groups_signup_email
#hub-details.pane.footer-pad
.row
.small-12.medium-10.medium-offset-1.columns
%h2.text-center Here's the detail.
%h2.text-center
= t :groups_signup_detail
= ContentConfig.group_signup_detail_html.html_safe
= render partial: "shared/footer"

View File

@@ -1,17 +1,25 @@
#brand-story.pane
.row
.small-12.medium-8.medium-offset-2.columns.text-center
%h2 Food, unincorporated.
%p Sometimes the best way to fix the system is to start a new one&hellip;
%h2
= t :brandstory_headline
%p
= t :brandstory_intro
#brand-story-text.hide-show.slideable
%p We begin from the ground up. With farmers and growers ready to tell their stories proudly and truly. With distributors ready to connect people with products fairly and honestly. With buyers who believe that better weekly shopping decisions can seriously change the world.
%p Then we need a way to make it real. A way to empower everyone who grows, sells and buys food. A way to tell all the stories, to handle all the logistics. A way to turn transaction into transformation every day.
%p So we build an online marketplace that levels the playing field. Its transparent, so it creates real relationships. Its open source, so its owned by everyone. It scales to regions and nations, so people start versions across the world.
%p It works everywhere. It changes everything.
%p
%strong We call it Open Food Network.
%p We all love food. Now we can love our food system too.
= t :brandstory_part1
%p
= t :brandstory_part2
%p
= t :brandstory_part3
%p
= t :brandstory_part4
%p
%strong
= t :brandstory_part5_strong
%p
= t :brandstory_part6
%a.text-vbig{"slide-toggle" => "#brand-story-text", "ng-click" => "toggleBrandStory()"}
%i.ofn-i_005-caret-down{"ng-hide" => "brandStoryExpanded"}

View File

@@ -1,7 +1,8 @@
#cta.pane
.row
.small-12.columns.text-center
%h2 Shopping that makes the world a better place.
%h2
= t :cta_headline
%br
%a.button.transparent{href: "/shops"}
I'm Ready
= t :cta_label

View File

@@ -1,7 +1,8 @@
.row.active_table_row{"ng-show" => "open()", "ng-click" => "toggle($event)", "ng-class" => "{'open' : !ofn-i_032-closed-sign()}", bindonce: true}
.columns.small-12.medium-6.large-5.fat
%div{"bo-if" => "hub.taxons"}
%label Shop for
%label
= t :hubs_buy
.trans-sentence
%span.fat-taxons{"ng-repeat" => "taxon in hub.taxons"}
%render-svg{path: "{{taxon.icon}}"}
@@ -10,17 +11,19 @@
&nbsp;
.columns.small-12.medium-3.large-2.fat
%div{"bo-if" => "hub.pickup || hub.delivery"}
%label Delivery options
%label
= t :hubs_delivery_options
%ul.small-block-grid-2.medium-block-grid-1.large-block-grid-1
%li.pickup{"bo-if" => "hub.pickup"}
%i.ofn-i_038-takeaway
Pickup
= t :hubs_pickup
%li.delivery{"bo-if" => "hub.delivery"}
%i.ofn-i_039-delivery
Delivery
= t :hubs_delivery
.columns.small-12.medium-3.large-5.fat
%div{"bo-if" => "hub.producers"}
%label Our producers
%label
= t :hubs_producers
%ul.small-block-grid-2.medium-block-grid-1.large-block-grid-2{"ng-class" => "{'show-more-producers' : toggleMoreProducers}", "class" => "producers-list"}
%li{"ng-repeat" => "enterprise in hub.producers | limitTo:7"}
%enterprise-modal
@@ -31,9 +34,9 @@
.more
+
%span{"bo-text" => "hub.producers.length-7"}
More
= t :label_more
.less
Show less
= t :label_less
%li{"ng-repeat" => "enterprise in hub.producers.slice(7,hub.producers.length)", "class" => "additional-producer"}
%enterprise-modal
%i.ofn-i_036-producers

View File

@@ -8,13 +8,15 @@
.row.filter-box
.small-12.large-9.columns
%h5.tdhead
.light Filter by
Type
.light
= t :hubs_filter_by
= t :hubs_filter_type
%filter-selector.small-block-grid-2.medium-block-grid-4.large-block-grid-5{ objects: "visibleMatches | visible | taxonsOf", "active-selectors" => "activeTaxons" }
.small-12.large-3.columns
%h5.tdhead
.light Filter by
Delivery
.light
= t :hubs_filter_by
= t :hubs_filter_delivery
%ul.small-block-grid-2.medium-block-grid-4.large-block-grid-2
%shipping-type-selector{results: "shippingTypes"}

View File

@@ -3,7 +3,8 @@
#hubs.hubs{"ng-controller" => "EnterprisesCtrl", "ng-cloak" => true}
.row
.small-12.columns
%h1{"scroll-after-load" => (spree_current_user ? true : nil)} Shop in your local area
%h1{"scroll-after-load" => (spree_current_user ? true : nil)}
= t :hubs_intro
= render "shared/components/enterprise_search"
= render "home/filters"
@@ -11,16 +12,18 @@
.row
.small-12.columns
.name-matches{"ng-show" => "nameMatchesFiltered.length > 0"}
%h2 Did you mean?
%h2
= t :hubs_matches
= render "home/hubs_table", enterprises: "nameMatches"
.distance-matches{"ng-if" => "nameMatchesFiltered.length == 0 || distanceMatchesShown"}
%h2{"ng-show" => "nameMatchesFiltered.length > 0 || query.length > 0"}
Closest to
= t :hubs_matches
%span{"ng-show" => "nameMatchesFiltered.length > 0"} {{ nameMatchesFiltered[0].name }}...
%span{"ng-hide" => "nameMatchesFiltered.length > 0"} {{ query }}...
= render "home/hubs_table", enterprises: "distanceMatches"
.show-distance-matches{"ng-show" => "nameMatchesFiltered.length > 0 && !distanceMatchesShown"}
%a{href: "", "ng-click" => "showDistanceMatches()"} Show me shops near {{ nameMatchesFiltered[0].name }}
%a{href: "", "ng-click" => "showDistanceMatches()"}
= t :hubs_distance_filter, location: "{{ nameMatchesFiltered[0].name }}"

View File

@@ -1,10 +1,11 @@
.row
.large-12.large-centered.columns
%h2 Login
%h2
= t :label_login
= form_for Spree::User.new, :remote => true, :html => {'data-type' => :json}, :as => :spree_user, :url => spree.spree_user_session_path do |f|
#password-credentials
#login-error-alert.alert-box.alert.hide
Invalid email or password
= t :login_invalid
%p
= f.label :email, t(:email)
= f.email_field :email, :class => 'title', :tabindex => 1, :id => "login_spree_user_email"

View File

@@ -1,6 +1,7 @@
.row
.large-12.large-centered.columns
%h2 Sign Up
%h2
= t :label_signup
= form_for Spree::User.new, :as => :spree_user, :url => spree.spree_user_registration_path(@spree_user) do |f|
%p
= f.label :email, t(:email)

View File

@@ -1,23 +1,24 @@
#stats.pane
.row.header
.small-12.medium-8.medium-offset-2.columns.text-center
%h2 We're creating a new food system.
%h2
= t :stats_headline
.row.content
- if ContentConfig.home_show_stats
.small-12.medium-3.columns.text-center
%h4
%strong= number_with_delimiter @num_producers
food producers
= t :stats_producers
.small-12.medium-3.columns.text-center
%h4
%strong= number_with_delimiter @num_distributors
food shops
= t :stats_shops
.small-12.medium-3.columns.text-center
%h4
%strong= number_with_delimiter @num_users
food shoppers
= t :stats_shoppers
.small-12.medium-3.columns.text-center
%h4
%strong= number_with_delimiter @num_orders
food orders
= t :stats_orders

View File

@@ -1,23 +1,30 @@
#system.pane
.row
.small-12.medium-12.large-8.large-offset-2.columns.text-center
%h2 Here's how it works.
%h2
= t :system_headline
.row
.small-12.medium-4.columns.text-left
.home-icon-box
%a.search{href: "/shops"}
.home-icon-box-bottom
%h4 1. Search
%p.text-normal Search our diverse, independent shops for seasonal local food. Search by neighbourhood and food category, or whether you prefer delivery or pickup.
%h4
= t :system_step1
%p.text-normal
= t :system_step1_text
.small-12.medium-4.columns.text-left
.home-icon-box
%a.shop{href: "/shops"}
.home-icon-box-bottom
%h4 2. Shop
%p.text-normal Transform your transactions with affordable local food from diverse producers and hubs. Know the stories behind your food and the people who make it!
%h4
= t :system_step2
%p.text-normal
= t :system_step2_text
.small-12.medium-4.columns.text-left
.home-icon-box
%a.pick-up-delivery{href: "/shops"}
.home-icon-box-bottom
%h4 3. Pick-up / Delivery
%p.text-normal Hang on for your delivery, or visit your producer or hub for a more personal connection with your food. Food shopping as diverse as nature intended it.
%h4
= t :system_step3
%p.text-normal
= t :system_step3_text

View File

@@ -13,7 +13,7 @@
%img{src: "/assets/logo-white-notext.png", width: "250", title: Spree::Config.site_name}
%br/
%a.button.transparent{href: "/shops"}
Shop Now
= t :home_shop
#panes

View File

@@ -1,17 +0,0 @@
#become-distributor.reveal-modal
.row
.small-12.columns
%h2 Become our distributor
%p
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum
.row
.small-12.columns
= form_tag do
= text_area_tag :email_body, "", :input_html => { :rows => 10 }
= submit_tag "Submit", class: "button"
= link_to "&#215;".html_safe, "#", class: "close-reveal-modal"

View File

@@ -1,17 +0,0 @@
#become-farmer.reveal-modal
.row
.small-12.columns
%h2 Become our farmer
%p
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum
.row
.small-12.columns
= form_tag do
= text_area_tag :email_body, "", :input_html => { :rows => 10 }
= submit_tag "Submit", class: "button"
= link_to "&#215;".html_safe, "#", class: "close-reveal-modal"

View File

@@ -3,7 +3,7 @@
%meta{charset: 'utf-8'}/
%meta{name: 'viewport', content: "width=device-width,initial-scale=1.0"}/
%title= content_for?(:title) ? "#{yield(:title)} - Open Food Network".html_safe : 'Welcome to Open Food Network'
%title= content_for?(:title) ? "#{yield(:title)} - #{t(:title)}".html_safe : "#{t(:welcome_to)} #{t(:title)}"
- if Rails.env.production?
= favicon_link_tag
- else

View File

@@ -4,7 +4,7 @@
%meta{:content => "width=device-width", :name => "viewport" }/
%meta{:content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/
%title
Open Food Network
= Spree::Config[:site_name]
= stylesheet_link_tag 'mail/all'
%body{:bgcolor => "#FFFFFF" }
%table.head-wrap{:bgcolor => "#f2f2f2"}
@@ -18,7 +18,7 @@
%img{:src => "#{ asset_path 'logo-color.png' }", :width => "144", :height => "50"}/
%td{:align => "right"}
%h6.collapse
Open Food Network
= Spree::Config[:site_name]
%td
%table.body-wrap
@@ -43,9 +43,9 @@
%td{:align => "center"}
%p
%a{:href => "#{ URI.join(spree.root_url, "Terms-of-service.pdf").to_s }", :target => "_blank"}
Terms of service
= t :terms_of_service
|
%a{:href => "#{ spree.root_url }"}
Open Food Network
= Spree::Config[:site_name]
/ | <a href="#"><unsubscribe>Unsubscribe</unsubscribe></a>
%td
%td

View File

@@ -3,7 +3,7 @@
%meta{charset: 'utf-8'}/
%meta{name: 'viewport', content: "width=device-width,initial-scale=1.0"}/
%title= content_for?(:title) ? "#{yield(:title)} - Open Food Network" : 'Welcome to Open Food Network'
%title= content_for?(:title) ? "#{yield(:title)} - #{Spree::Config[:site_name]}" : "#{t(:welcome_to)} #{Spree::Config[:site_name]}"
- if Rails.env.production?
= favicon_link_tag
- else

View File

@@ -1,5 +1,5 @@
- content_for(:title) do
Map
= t :label_map
= inject_enterprises

View File

@@ -1,8 +1,11 @@
%h2
%i.ofn-i_040-hub>
Food Hubs
%h5 Our food hubs are the point of contact between you and the people who make your food!
%p You can search for a convenient hub by location or name. Some hubs have multiple points where you can pick-up your purchases, and some will also provide delivery options. Each food hub is a sales point with independent business operations and logistics - so variations between hubs are to be expected.
%p You can only shop at one food hub at a time.
= t :modal_hubs
%h5
= t :modal_hubs_abstract
%p
= t :modal_hubs_content1
%p
= t :modal_hubs_content2
%a.close-reveal-modal{"ng-click" => "$close()"}
%i.ofn-i_009-close

View File

@@ -1,7 +1,9 @@
%h2
%i.ofn-i_035-groups
Groups / Regions
%p These are the organisations and relationships between hubs which make up the Open Food Network.
%p Some groups are clustered by location or council, others by non-geographic similarities.
= t :modal_groups
%p
= t :modal_groups
%p
= t :modal_groups
%a.close-reveal-modal{"ng-click" => "$close()"}
%i.ofn-i_009-close
%i.ofn-i_009-close

View File

@@ -1,10 +1,17 @@
%h2 How it works
%h5 Shop the Open Food Network
%p Search for a food hub near you to start shopping! You can expand each food hub to see what kinds of goodies are available, and click through to start shopping. (You can only shop one food hub at a time.)
%h5 Pick-ups, delivery &amp; shipping costs
%p Some food hubs deliver to your door, while others require you to pick-up your purchases. You can see which options are available on the homepage, and select which you'd like at the shopping and check-out pages. Delivery will cost more, and pricing differs from hub-to-hub. Each food hub is a sales point with independent business operations and logisitics - so variations between hubs are to be expected.
%h5 Learn more
%p If you want to learn more about the Open Food Network, how it works, and get involved, check out:
%h2
= t :modal_how
%h5
= t :modal_how_shop
%p
= t :modal_how_shop_explained
%h5
= t :modal_how_pickup
%p
= t :modal_how_pickup_explained
%h5
= t :modal_how
%p
= t :modal_how
%a.button.neutral-btn.dark{:href => "http://www.openfoodnetwork.org" , :target => "_blank" } Open Food Network
%a.close-reveal-modal{"ng-click" => "$close()"}
%i.ofn-i_009-close

View File

@@ -1,6 +1,7 @@
%h2
%i.ofn-i_036-producers
Producers
%p Our producers make all the delicious food you can shop for on the Open Food Network.
= t :modal_producers
%p
= t :modal_producers_explained
%a.close-reveal-modal{"ng-click" => "$close()"}
%i.ofn-i_009-close
%i.ofn-i_009-close

View File

@@ -1,6 +1,6 @@
/ %script = Spree.api_key = raw(try_spree_current_user.try(:spree_api_key).to_s.inspect)
Current cart for:
= t :ofn_cart_headline
= spree_current_user.andand.email
%div{ 'ng-app' => 'store', 'ng-controller' => 'CartCtrl', 'ng-init' => "loadCart(#{spree_current_user.andand.cart.andand.id});" }
{{cart}} {{state}}
@@ -8,20 +8,27 @@ Current cart for:
%br
%ul
%li(ng-repeat="order in cart.orders")
%strong Distributor:
%strong
= t :ofn_cart_distributor
{{order.distributor}}
%strong Order cycle:
%strong
= t :ofn_cart_oc
{{order.order_cycle.andand.name}}
%strong From:
%strong
= t :ofn_cart_from
{{order.order_cycle.andand.orders_open_at}}
%strong To:
%strong
= t :ofn_cart_to
{{order.order_cycle.andand.orders_close_at}}
%ul
%li(ng-repeat="line_item in order.line_items")
%strong Product:
%strong
= t :ofn_cart_product
{{line_item.name}}
%strong Quantity:
%strong
= t :ofn_cart_quatity
{{line_item.quantity}}
%button Buy me
%button
= t :ofn_cart_send
%br

View File

@@ -3,13 +3,16 @@
#distribution-choice
- if current_distributor.present?
%p
%strong Hub:
%strong
= t :ocs_choice_distributor
= current_distributor.name
- if current_order_cycle.present?
%p
%strong Order Cycle:
%strong
= t :ocs_choice_oc
= current_order_cycle.name
- if current_distributor.nil? && current_order_cycle.nil?
%p You have not yet picked where you will get your order from.
%p
= t :ocs_choice_text

View File

@@ -1,19 +1,17 @@
.columns.two= image_tag 'pickup.png'
.columns.nine
%h2 Orders are currently closed for this hub
%h2
= t :ocs_closed_headline
%p
- if most_recently_closed = OrderCycle.most_recently_closed_for(@enterprise)
The last cycle closed
= distance_of_time_in_words_to_now most_recently_closed.orders_close_at
ago.
Please contact your hub directly to see if they accept late orders, or wait until the next cycle opens.
= t :ocs_closed_time, time: distance_of_time_in_words_to_now(most_recently_closed.orders_close_at)
= t :ocs_closed_contact
- if next_oc = OrderCycle.first_opening_for(@enterprise)
%h4
The next order cycle opens in
= distance_of_time_in_words_to_now next_oc.orders_open_at
= t :ocs_closed_opens, time: distance_of_time_in_words_to_now(next_oc.orders_open_at)
%p
= "Email: #{current_distributor.email}" if current_distributor.email
= t(:ocs_closed_email, email: current_distributor.email) if current_distributor.email
%br/
= "Phone: #{current_distributor.phone}" if current_distributor.phone
= t(:ocs_closed_phone, phone: current_distributor.phone) if current_distributor.phone

View File

@@ -1,10 +1,12 @@
.columns.six
%h1= "Your order will be ready on #{pickup_time}"
%h1
= t :ocs_pickup_time, pickup_time: pickup_time
%i
= link_to 'Change Collection Date', spree.clear_orders_path, :id => 'reset_order_cycle'
(This will reset your cart)
= link_to t(:ocs_change_date), spree.clear_orders_path, :id => 'reset_order_cycle'
= t :ocs_change_date_notice
.columns.five
.row
%strong ORDERS CLOSE
%strong
= t :ocs_close_time
.countdown-panel
%h1= distance_of_time_in_words_to_now(current_order_cycle.orders_close_at)

View File

@@ -1,10 +1,12 @@
.columns.two= image_tag 'pickup.png'
.columns.six
%h2 When do you want your order?
%p No products are displayed until you select a date.
%h2
= t :ocs_when_headline
%p
= t :ocs_when_text
.columns.three
= form_for current_order(true), :html => {:id => 'order_cycle_select'} do |f|
= f.hidden_field :distributor_id, :value => @enterprise.id
.order-cycles
= f.select :order_cycle_id, order_cycle_options, {include_blank: 'Closing On'}
= hidden_field_tag :commit, 'Choose Order Cycle'
= f.select :order_cycle_id, order_cycle_options, {include_blank: t(:ocs_when_closing)}
= hidden_field_tag :commit, t(:ocs_when_choose)

View File

@@ -11,5 +11,5 @@
= render partial: "order_cycles/orders_open"
%p
%strong= link_to "List View", shop_path
%strong= link_to t(:ocs_list), shop_path

View File

@@ -3,7 +3,8 @@
.columns.small-12.medium-7.large-7.fat
/ Will add in long description available once clean up HTML formatting producer.long_description
%div{"bo-if" => "producer.description"}
%label About us
%label
= t :producers_about
%img.right.show-for-medium-up{"bo-src" => "producer.logo" }
%p.text-small{ "bo-text" => "producer.description"}
%div.show-for-medium-up{"bo-if" => "producer.description.length==0"}
@@ -12,7 +13,8 @@
.columns.small-12.medium-5.large-5.fat
%div{"bo-if" => "producer.supplied_taxons"}
%label Shop for
%label
= t :producers_buy
%p.trans-sentence
%span.fat-taxons{"ng-repeat" => "taxon in producer.supplied_taxons"}
%render-svg{path: "{{taxon.icon}}"}
@@ -22,10 +24,11 @@
&nbsp;
%div{"bo-if" => "producer.email || producer.website || producer.phone"}
%label Contact
%label
= t :producers_contact
%p.word-wrap{"bo-if" => "producer.phone"}
Call
= t :producers_contact_phone
%span{"bo-text" => "producer.phone"}
%p.word-wrap{"bo-if" => "producer.email"}
@@ -37,7 +40,8 @@
%span{"bo-bind" => "producer.website | stripUrl"}
%div{"bo-if" => "producer.twitter || producer.facebook || producer.linkedin || producer.instagram"}
%label Follow
%label
= t :producers_social
.follow-icons{bindonce: true}
%span{"bo-if" => "producer.twitter"}
%a{"bo-href-i" => "http://twitter.com/{{producer.twitter}}", target: "_blank"}
@@ -61,9 +65,9 @@
.columns.small-12.fat
%div{"bo-if" => "producer.name"}
%label
Shop for
= t :producers_buy
%span.turquoise{"bo-text" => "producer.name"}
products at:
= t :producers_at
%div.show-for-medium-up{"bo-if" => "!producer.name"}
&nbsp;
.row.cta-container

View File

@@ -8,7 +8,8 @@
.row.filter-box
.small-12.columns
%h5.tdhead
.light Filter by
Type
.light
= t :producers_filter
= t :producers_filter
%filter-selector.small-block-grid-2.medium-block-grid-4.large-block-grid-6{objects: "Enterprises.producers | searchEnterprises:query | taxonsOf", "active-selectors" => "activeTaxons"}
= render partial: 'shared/components/filter_box'

View File

@@ -1,12 +1,13 @@
- content_for(:title) do
Producers
= t :producers_title
= inject_enterprises
.producers{"ng-controller" => "EnterprisesCtrl", "ng-cloak" => true}
.row
.small-12.columns.pad-top
%h1 Find local producers
%h1
= t :producers_headline
= render partial: "shared/components/enterprise_search"
= render partial: "producers/filters"

View File

@@ -1,21 +1,24 @@
- content_for(:title) do
Sign up as a producer
= t :producers_signup_title
#panes
#producer-signup.pane
.row.header
.small-12.medium-12.columns.text-center
%h2 Food producers, empowered.
%h2
= t :producers_signup_headline
.row.content
.small-12.medium-6.medium-offset-3.columns.text-center
%p.text-big 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.
%p.text-big
= t :producers_signup_motivation
%br
%a.button.transparent{href: "/register"}
Join now
= t :producers_signup_send
.pane
.row
.small-12.medium-10.medium-offset-1.columns.text-center
%h2 Enterprise Accounts
%h2
= t :producers_signup_enterprise
-# %p.text-big
-# If there is a time-sensitive offer you can write it here, e.g.
-# Sign up before 30th June for an extra month free!
@@ -25,22 +28,25 @@
#producer-case-studies
.row
.small-12.medium-10.medium-offset-1.columns
%h2.text-center Stories from our producers.
%h2.text-center
= t :producers_signup_studies
%br
= ContentConfig.producer_signup_case_studies_html.html_safe
.pane#cta
.row
.small-12.medium-6.medium-offset-3.columns.text-center
%h2 Join now!
%h2
= t :producers_signup_cta_headline
%p.text-big Start with a free profile, and expand when you're ready!
%a.button.transparent{href: "/register"}
Join now
= t :producers_signup_cta_action
#producer-details.pane.footer-pad
.row
.small-12.medium-10.medium-offset-1.columns
%h2.text-center Here's the detail.
%h2.text-center
= t :producers_signup_detail
= ContentConfig.producer_signup_detail_html.html_safe
= render partial: "shared/footer"

View File

@@ -1,11 +1,17 @@
%table#product-list
%thead
%th Item
%th Description
%th Variant
%th Quantity
%th Available?
%th Price
%th
= t :products_item
%th
= t :products_description
%th
= t :products_variant
%th
= t :products_quantity
%th
= t :products_available
%th
= t :products_price
- list.each do |product|
%tr

View File

@@ -1,5 +1,5 @@
- content_for(:title) do
Register
= t :register_title
= inject_spree_api_key
= inject_available_countries

View File

@@ -3,4 +3,5 @@
%h4= title
%p.text-small= description
%a{href: link, target: "_blank"}
%strong More
%strong
= t :label_more

View File

@@ -9,30 +9,41 @@
.alert-box
%a.big-alert{href: "http://www.openfoodnetwork.org", target: "_blank"}
%h6
Interested in selling food on the Open Food Network? &nbsp;
%strong Start here
= t :alert_selling_on_ofn
&nbsp;
%strong
= t :alert_start_here
%i.ofn-i_054-point-right
.row
.small-12.medium-4.medium-offset-2.columns.text-center
%h6 OFN Global
%h6
= t :footer_global_headline
%p
%a{href: "http://www.openfoodnetwork.org", target: "_blank"} Home
%a{href: "http://www.openfoodnetwork.org", target: "_blank"}
= t :footer_global_home
%span &#124;
%a{href: "http://www.openfoodnetwork.org/news/", target: "_blank"} News
%a{href: "http://www.openfoodnetwork.org/news/", target: "_blank"}
= t :footer_global_news
%span &#124;
%a{href: "http://www.openfoodnetwork.org/about/history-team/", target: "_blank"} About
%a{href: "http://www.openfoodnetwork.org/about/history-team/", target: "_blank"}
= t :footer_global_about
%span &#124;
%a{href: "http://www.openfoodnetwork.org/contact/", target: "_blank"} Contact
%a{href: "http://www.openfoodnetwork.org/contact/", target: "_blank"}
= t :footer_global_contact
.small-12.medium-4.columns.text-center
%h6 OFN Sites
%h6
= t :footer_sites_headline
%p
%a{href: "http://dev.openfoodnetwork.org", target: "_blank"} Developer
%a{href: "http://dev.openfoodnetwork.org", target: "_blank"}
= t :footer_sites_developer
%span &#124;
%a{href: "http://community.openfoodnetwork.org", target: "_blank"} Community
%a{href: "http://community.openfoodnetwork.org", target: "_blank"}
= t :footer_sites_community
%span &#124;
%a{href: "http://www.openfoodnetwork.org/platform/user-guide/", target: "_blank"} User Guide
%a{href: "http://www.openfoodnetwork.org/platform/user-guide/", target: "_blank"}
= t :footer_sites_userguide
.medium-2.columns.text-center
/ Placeholder
@@ -43,8 +54,10 @@
%p.secure-icon
%i.ofn-i_017-locked
.small-12.medium-6.columns.text-center
%p.text-big.secure-text Secure and trusted.
%p.secure-text Open Food Network uses SSL encryption (2048 bit RSA) everywhere to keep your shopping and payment information private. Our servers do not store your credit card details and payments are processed by PCI-compliant services.
%p.text-big.secure-text
= t :footer_secure
%p.secure-text
= t :footer_secure_text
.small-12.medium-2.columns
.row
@@ -55,7 +68,8 @@
.row
.small-6.medium-3.medium-offset-2.columns.text-left
// This is the instance-managed set of links:
%h4 Keep in touch
%h4
= t :footer_contact_headline
%p.social-icons
- if ContentConfig.footer_facebook_url.present?
%a{href: ContentConfig.footer_facebook_url}
@@ -77,33 +91,45 @@
%i.ofn-i_045-pintrest
- if ContentConfig.footer_email.present?
%p
%a{href: ContentConfig.footer_email.reverse, mailto: true, target: '_blank'} Email us
%a{href: ContentConfig.footer_email.reverse, mailto: true, target: '_blank'}
= t :footer_contact_email
= render_markdown(ContentConfig.footer_links_md).html_safe
.small-6.medium-3.columns.text-left
%h4 Navigate
%h4
= t :footer_nav_headline
%p
%a{href: "/shops"} Shops
%a{href: "/shops"}
= t :label_shops
%p
%a{href: "/map"} Map
%a{href: "/map"}
= t :label_map
%p
%a{href: "/producers"} Producers
%a{href: "/producers"}
= t :label_producers
%p
%a{href: "/groups"} Groups
%a{href: "/groups"}
= t :label_groups
%p
%a{href: ContentConfig.footer_about_url} About
%a{href: ContentConfig.footer_about_url}
= t :label_about
.small-12.medium-2.columns.text-left
%h4 Join us
%h4
= t :footer_join_headline
%p
%a{href: "/producers/signup"} Producers sign-up
%a{href: "/producers/signup"}
= t :footer_join_producers
%p
%a{href: "/shops/signup"} Hubs sign-up
%a{href: "/shops/signup"}
= t :footer_join_hubs
%p
%a{href: "/groups/signup"} Groups sign-up
%a{href: "/groups/signup"}
= t :footer_join_groups
%p
%a{href: "http://www.openfoodnetwork.org/platform/food-system-partners/", target: "_blank"} Food systems partners
%a{href: "http://www.openfoodnetwork.org/platform/food-system-partners/", target: "_blank"}
= t :footer_join_partners
.medium-2.columns.text-center
/ Placeholder
@@ -119,18 +145,21 @@
%img{src: ContentConfig.footer_logo.url, width: "220"}
.small-12.medium-5.columns.text-left
%p.text-small
Read our
%a{href: ContentConfig.footer_tos_url} Terms &amp; conditions
= t :footer_legal_call
%a{href: ContentConfig.footer_tos_url}
= t :footer_legal_tos
&#124;
Find us on
= t :footer_legal_visit
%a{href:"https://github.com/openfoodfoundation/openfoodnetwork", target: "_blank"} Github
%p.text-small
Open Food Network is a free and open source software platform. Our content is licensed with
= t :footer_legal_text
= succeed ',' do
%a{href:"https://creativecommons.org/licenses/by-sa/3.0/", target: "_blank" } CC BY-SA 3.0
and our code with
%a{href:"https://creativecommons.org/licenses/by-sa/3.0/", target: "_blank" }
= t :footer_legal_license_content
= t :footer_legal_text
= succeed '.' do
%a{href:"https://tldrlegal.com/license/gnu-affero-general-public-license-v3-(agpl-3.0)", target: "_blank" } AGPL 3
%a{href:"https://tldrlegal.com/license/gnu-affero-general-public-license-v3-(agpl-3.0)", target: "_blank" }
= t :footer_legal_license_code
.medium-2.columns.text-center
/ Placeholder

View File

@@ -3,23 +3,29 @@
.small-4.large-2.columns
%i.ofn-i_012-warning
.small-8.large-10.columns
%h3 Your browser is out of date :-(
%p For the best Open Food Network experience, we strongly recommend upgrading your browser:
%h3
= t :ie_warning_headline
%p
= t :ie_warning_text
.row
.small-4.columns.browserbtn
%a.browserlogo{href: "https://www.google.com/intl/en_au/chrome/browser/", target: "_blank"}
%img{src: "assets/browser-logos/chrome.png"}
%a{href: "https://www.google.com/intl/en_au/chrome/browser/", target: "_blank"} Download Chrome
%a{href: "https://www.google.com/intl/en_au/chrome/browser/", target: "_blank"}
= t :ie_warning_chrome
.small-4.columns.browserbtn
%a.browserlogo{href: "http://www.mozilla.org/en-US/firefox/new/", target: "_blank"}
%img{src: "assets/browser-logos/firefox.png"}
%a{href: "http://www.mozilla.org/en-US/firefox/new/", target: "_blank"} Download Firefox
%a{href: "http://www.mozilla.org/en-US/firefox/new/", target: "_blank"}
= t :ie_warning_firefox
.small-4.columns.browserbtn
%a.browserlogo{href: "http://windows.microsoft.com/en-AU/internet-explorer/download-ie", target: "_blank"}
%img{src: "assets/browser-logos/internet-explorer.png"}
%a{href: "http://windows.microsoft.com/en-AU/internet-explorer/download-ie", target: "_blank"} Upgrade Internet Explorer
%a{href: "http://windows.microsoft.com/en-AU/internet-explorer/download-ie", target: "_blank"}
= t :ie_warning_ie
.row.ie-msg
.small-12.large-12.columns
.text-center
%em Can't upgrade your browser? Try Open Food Network on your smartphone :-)
%em
= t :ie_warning_other
%a#closeie.close{href: "#"} ×

View File

@@ -1,12 +1,12 @@
- if spree_current_user.nil?
%li#login-link= link_to "Login", "#login", id: "sidebarLoginButton", class: "sidebar-button"
%li#login-link= link_to t(:label_login), "#login", id: "sidebarLoginButton", class: "sidebar-button"
%li#login-name.hide
%li.divider
%li#sign-up-link= link_to "Sign Up", "#signup", id: "sidebarSignUpButton", class: "sidebar-button"
%li#sign-up-link= link_to t(:label_signup), "#signup", id: "sidebarSignUpButton", class: "sidebar-button"
%li#sign-out-link.hide= link_to "Sign Out", "/logout"
- else
%li#login-link.hide= link_to "Login", "#sidebar", id: "sidebarLoginButton", class: "sidebar-button"
%li#login-link.hide= link_to t(:label_login), "#sidebar", id: "sidebarLoginButton", class: "sidebar-button"
%li#login-name= link_to "#{spree_current_user.email}", "#"
%li.divider
%li#sign-up-link.hide= link_to "Sign Up", "#"
%li#sign-out-link= link_to "Sign Out", "/logout"
%li#sign-up-link.hide= link_to t(:label_signup), "#"
%li#sign-out-link= link_to t(:label_logout), "/logout"

View File

@@ -9,17 +9,15 @@
%li
%a{href: spree.admin_path, target:'_blank'}
%i.ofn-i_021-tools
Administration
= t 'label_administration'
%li
%a{href: spree.account_path}
%i.ofn-i_015-user
Account
= t 'label_account'
= "(" + spree_current_user.email + ")"
%li
%a{title: 'Log Out', href:'/logout' }
%a{title: t('label_logout'), href:'/logout' }
%i.ofn-i_018-unlocked
Log out
= t 'label_logout'

View File

@@ -2,15 +2,14 @@
%li
%a{href: spree.admin_path, target:'_blank'}
%i.ofn-i_021-tools
Admin
= t 'label_admin'
%li
%a{href: spree.account_path}
%i.ofn-i_015-user
Account
/ = spree_current_user.email
= t 'label_account'
%li
%a{title: 'Log Out', href:'/logout' }
%a{title: t('label_logout'), href:'/logout' }
%i.ofn-i_018-unlocked
Log out
= t 'label_logout'

View File

@@ -1,5 +1,5 @@
%li#login-link{"ng-controller" => "AuthenticationCtrl"}
%a{"ng-click" => "open()"}
%i.ofn-i_017-locked
%span Log in
%span
= t 'label_login'

Some files were not shown because too many files have changed in this diff Show More