mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-11 23:17:48 +00:00
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:
@@ -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
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)]
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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 "/"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
Darkswarm.filter "translate", ->
|
||||
(key, options) ->
|
||||
t(key, options)
|
||||
|
||||
Darkswarm.filter "t", ->
|
||||
(key, options) ->
|
||||
t(key, options)
|
||||
3
app/assets/javascripts/darkswarm/i18n.js.erb
Normal file
3
app/assets/javascripts/darkswarm/i18n.js.erb
Normal 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 %>
|
||||
12
app/assets/javascripts/darkswarm/i18n.translate.js.coffee
Normal file
12
app/assets/javascripts/darkswarm/i18n.translate.js.coffee
Normal 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
|
||||
@@ -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 ", "
|
||||
|
||||
@@ -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 = "/"
|
||||
|
||||
@@ -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)->
|
||||
|
||||
@@ -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)=>
|
||||
|
||||
@@ -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 = {}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 "/"
|
||||
|
||||
@@ -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/
|
||||
@@ -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}}"}
|
||||
|
||||
@@ -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}}"}
|
||||
|
||||
@@ -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"}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"}
|
||||
|
||||
@@ -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
|
||||
@@ -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",
|
||||
|
||||
@@ -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"}
|
||||
|
||||
.row.cta-container
|
||||
|
||||
@@ -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 }}
|
||||
|
||||
|
||||
%a{"ng-click" => "expanded = !expanded"}
|
||||
Price graph
|
||||
%span{"bo-text" => "'price_graph' | t"}
|
||||
%i.ofn-i_006-caret-up
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
.progress
|
||||
.right Fees
|
||||
.right {{'fees' | t}}
|
||||
.meter
|
||||
Item cost
|
||||
{{'item_cost' | t}}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()" } } ×
|
||||
|
||||
.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}}" }
|
||||
|
||||
|
||||
@@ -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}}" }
|
||||
|
||||
@@ -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}}" }
|
||||
|
||||
@@ -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 >
|
||||
%a.button.primary{ type: "button", href: "/" } {{'registration_finished_action' | t}} >
|
||||
|
||||
@@ -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}}" }
|
||||
|
||||
@@ -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×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}}
|
||||
|
||||
@@ -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×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}}
|
||||
|
||||
@@ -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')" } }
|
||||
|
||||
@@ -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()" } }
|
||||
|
||||
@@ -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}}" }
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
%p Producers make yummy things to eat &/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
|
||||
|
||||
%p If you’re not a producer, you’re 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}}" }
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]"}
|
||||
|
||||
@@ -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}}"}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -13,5 +13,5 @@
|
||||
= render "checkout/payment", f: f
|
||||
%p
|
||||
%button.button.primary{type: :submit}
|
||||
Place order now
|
||||
= t :checkout_send
|
||||
/ {{ checkout.$valid }}
|
||||
|
||||
@@ -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}"}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
%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
|
||||
%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'
|
||||
|
||||
|
||||
@@ -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'
|
||||
|
||||
|
||||
@@ -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"}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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?
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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. We’ll help reach all the players, all the stakeholders, all the sectors.
|
||||
%p.text-big You need resourcing. We’ll bring all our experience to bear. You need cooperation. We’ll 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"
|
||||
|
||||
@@ -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…
|
||||
%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. It’s transparent, so it creates real relationships. It’s open source, so it’s 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"}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 @@
|
||||
|
||||
.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
|
||||
|
||||
@@ -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"}
|
||||
|
||||
|
||||
@@ -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 }}"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 "×".html_safe, "#", class: "close-reveal-modal"
|
||||
@@ -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 "×".html_safe, "#", class: "close-reveal-modal"
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
- content_for(:title) do
|
||||
Map
|
||||
= t :label_map
|
||||
|
||||
= inject_enterprises
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 & 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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 @@
|
||||
|
||||
|
||||
%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"}
|
||||
|
||||
.row.cta-container
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
- content_for(:title) do
|
||||
Register
|
||||
= t :register_title
|
||||
|
||||
= inject_spree_api_key
|
||||
= inject_available_countries
|
||||
|
||||
@@ -3,4 +3,5 @@
|
||||
%h4= title
|
||||
%p.text-small= description
|
||||
%a{href: link, target: "_blank"}
|
||||
%strong More
|
||||
%strong
|
||||
= t :label_more
|
||||
|
||||
@@ -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?
|
||||
%strong Start here
|
||||
= t :alert_selling_on_ofn
|
||||
|
||||
%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 |
|
||||
%a{href: "http://www.openfoodnetwork.org/news/", target: "_blank"} News
|
||||
%a{href: "http://www.openfoodnetwork.org/news/", target: "_blank"}
|
||||
= t :footer_global_news
|
||||
%span |
|
||||
%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 |
|
||||
%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 |
|
||||
%a{href: "http://community.openfoodnetwork.org", target: "_blank"} Community
|
||||
%a{href: "http://community.openfoodnetwork.org", target: "_blank"}
|
||||
= t :footer_sites_community
|
||||
%span |
|
||||
%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 & conditions
|
||||
= t :footer_legal_call
|
||||
%a{href: ContentConfig.footer_tos_url}
|
||||
= t :footer_legal_tos
|
||||
|
|
||||
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
|
||||
|
||||
@@ -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: "#"} ×
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user