Merge branch 'master' into 3-0-merge-master

This commit is contained in:
Luis Ramos
2020-02-28 09:52:01 +00:00
32 changed files with 724 additions and 44 deletions

View File

@@ -60,7 +60,7 @@ gem 'haml'
gem 'rabl'
gem 'redcarpet'
gem 'sass'
gem 'sass-rails', groups: [:default]
gem 'sass-rails'
gem 'truncate_html'
gem 'unicorn'

View File

@@ -622,8 +622,8 @@ GEM
sprockets (>= 2.8, < 4.0)
state_machine (1.2.0)
stringex (1.5.1)
stripe (5.11.0)
temple (0.8.2)
stripe (5.15.0)
test-unit (3.3.5)
power_assert
test-unit (3.3.5)
thor (0.20.3)

View File

@@ -1,4 +1,4 @@
angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout, $filter, $http, $window, BulkProducts, DisplayProperties, DirtyProducts, VariantUnitManager, StatusMessage, producers, Taxons, Columns, tax_categories, RequestMonitor, SortOptions) ->
angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout, $filter, $http, $window, BulkProducts, DisplayProperties, DirtyProducts, VariantUnitManager, StatusMessage, producers, Taxons, Columns, tax_categories, RequestMonitor, SortOptions, ErrorsParser) ->
$scope.StatusMessage = StatusMessage
$scope.columns = Columns.columns
@@ -230,10 +230,9 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
BulkProducts.updateVariantLists(data.products || [])
$timeout -> $scope.displaySuccess()
).error (data, status) ->
if status == 400 && data.errors? && data.errors.length > 0
errors = error + "\n" for error in data.errors
alert t("products_update_error") + "\n" + errors
$scope.displayFailure t("products_update_error")
if status == 400 && data.errors?
errorsString = ErrorsParser.toString(data.errors, status)
$scope.displayFailure t("products_update_error") + "\n" + errorsString
else
$scope.displayFailure t("products_update_error_data") + status
@@ -284,7 +283,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
$scope.displayFailure = (failMessage) ->
StatusMessage.display 'failure', t("products_update_error_msg") + "#{failMessage}"
StatusMessage.display 'failure', t("products_update_error_msg") + " #{failMessage}"
$scope.displayDirtyProducts = ->

View File

@@ -0,0 +1,21 @@
# Parses a structure of errors that came from the server
angular.module("admin.utils").factory "ErrorsParser", ->
new class ErrorsParser
toString: (errors, defaultContent = "") =>
return defaultContent unless errors?
errorsString = ""
if errors.length > 0
# it is an array of errors
errorsString = errors.join("\n") + "\n"
else
# it is a hash of errors
keys = Object.keys(errors)
for key in keys
errorsString += errors[key].join("\n") + "\n"
this.defaultIfEmpty(errorsString, defaultContent)
defaultIfEmpty: (content, defaultContent) =>
return defaultContent if content == ""
content

View File

@@ -70,10 +70,6 @@ module Spree
Spree.t(event_sym, resource: resource_desc)
end
def render_js_for_destroy
render partial: '/spree/admin/shared/destroy'
end
# Index request for JSON needs to pass a CSRF token in order to prevent JSON Hijacking
def check_json_authenticity
return unless request.format.js? || request.format.json?

View File

@@ -2589,6 +2589,21 @@ ar:
signup_or_login: "البدء بالتسجيل (أو تسجيل الدخول)"
have_an_account: "هل لديك حساب؟"
action_login: "تسجيل الدخول الآن."
inflections:
each:
zero: "كل"
one: "كل"
two: "كل"
few: "كل"
many: "كل"
other: "كل"
pack:
zero: "حزم"
one: "رزمة"
two: "حزم"
few: "حزم"
many: "حزم"
other: "حزم"
producers:
signup:
start_free_profile: "ابدأ بملف تعريف مجاني ، وتوسع عندما تكون جاهزًا!"

View File

@@ -2575,6 +2575,10 @@ de_DE:
signup_or_login: "Beginnen Sie mit der Anmeldung (oder melden Sie sich an)"
have_an_account: "Hast du schon ein Konto?"
action_login: "Jetzt einloggen."
inflections:
bottle:
one: "Flasche"
other: "Flaschen"
producers:
signup:
start_free_profile: "Beginnen Sie mit einem kostenlosen Profil und erweitern Sie es, wenn Sie fertig sind!"

View File

@@ -919,7 +919,7 @@ en_CA:
distributors: distributors
variants: variants
simple_form:
ready_for: Ready for
ready_for: Options
ready_for_placeholder: Date / time
customer_instructions: Customer instructions
customer_instructions_placeholder: 'Notes:'
@@ -1282,6 +1282,7 @@ en_CA:
saving_credit_card: Saving credit card...
card_has_been_removed: "Your card has been removed (number: %{number})"
card_could_not_be_removed: Sorry, the card could not be removed
invalid_credit_card: "Invalid credit card"
ie_warning_headline: "Your browser is out of date :-("
ie_warning_text: "For the best Open Food Network experience, we strongly recommend upgrading your browser:"
ie_warning_chrome: Download Chrome
@@ -2423,6 +2424,12 @@ en_CA:
severity: Severity
description: Description
resolve: Resolve
exchange_products:
load_more_variants: "Load More Variants"
load_all_variants: "Load All Variants"
select_all_variants: "Select All %{total_number_of_variants}Variants"
variants_loaded: "%{num_of_variants_loaded}of%{total_number_of_variants}Variants Loaded"
loading_variants: "Loading Variants"
tag_rules:
shipping_method_tagged_top: "Shipping methods tagged"
shipping_method_tagged_bottom: "are:"
@@ -2581,6 +2588,79 @@ en_CA:
signup_or_login: "Start By Signing Up (or logging in)"
have_an_account: "Already have an account?"
action_login: "Log in now."
inflections:
each:
one: "each"
other: "each"
bunch:
one: "bunch"
other: "bunches"
pack:
one: "pack"
other: "packs"
box:
one: "box"
other: "boxes"
bottle:
one: "bottle"
other: "bottles"
jar:
one: "jar"
other: "jars"
head:
one: "head"
other: "heads"
bag:
one: "bag"
other: "bags"
loaf:
one: "loaf"
other: "loaves"
single:
one: "single"
other: "singles"
tub:
one: "tub"
other: "tubs"
punnet:
one: "punnet"
other: "punnets"
packet:
one: "packet"
other: "packets"
item:
one: "item"
other: "items"
dozen:
one: "dozen"
other: "dozens"
unit:
one: "unit"
other: "units"
serve:
one: "serve"
other: "serves"
tray:
one: "tray"
other: "trays"
piece:
one: "piece"
other: "pieces"
pot:
one: "pot"
other: "pots"
bundle:
one: "bundle"
other: "bundles"
flask:
one: "flask"
other: "flasks"
basket:
one: "basket"
other: "baskets"
sack:
one: "sack"
other: "sacks"
producers:
signup:
start_free_profile: "Start with a free profile, and expand when you're ready!"
@@ -2823,6 +2903,8 @@ en_CA:
zipcode: Postal Code
weight: Weight (per kg)
error_user_destroy_with_orders: "Users with completed orders may not be deleted"
cannot_create_payment_without_payment_methods: "You cannot create a payment for an order without any payment methods defined."
please_define_payment_methods: "Please define some payment methods first."
options: "Options"
actions:
update: "Update"
@@ -2929,7 +3011,7 @@ en_CA:
email: "Customer E-Mail"
invoice:
issued_on: "Issued on"
tax_invoice: "TAX INVOICE"
tax_invoice: "Order Number"
code: "Code"
from: "From"
to: "To"

View File

@@ -2589,6 +2589,79 @@ en_FR:
signup_or_login: "Start By Signing Up (or logging in)"
have_an_account: "Already have an account?"
action_login: "Log in now."
inflections:
each:
one: "each"
other: "each"
bunch:
one: "bunch"
other: "bunches"
pack:
one: "pack"
other: "packs"
box:
one: "box"
other: "boxes"
bottle:
one: "bottle"
other: "bottles"
jar:
one: "jar"
other: "jars"
head:
one: "head"
other: "heads"
bag:
one: "bag"
other: "bags"
loaf:
one: "loaf"
other: "loaves"
single:
one: "single"
other: "singles"
tub:
one: "tub"
other: "tubs"
punnet:
one: "punnet"
other: "punnets"
packet:
one: "packet"
other: "packets"
item:
one: "item"
other: "items"
dozen:
one: "dozen"
other: "dozens"
unit:
one: "unit"
other: "units"
serve:
one: "serve"
other: "serves"
tray:
one: "tray"
other: "trays"
piece:
one: "piece"
other: "pieces"
pot:
one: "pot"
other: "pots"
bundle:
one: "bundle"
other: "bundles"
flask:
one: "flask"
other: "flasks"
basket:
one: "basket"
other: "baskets"
sack:
one: "sack"
other: "sacks"
producers:
signup:
start_free_profile: "Start with a free profile, and expand when you're ready!"

View File

@@ -2595,6 +2595,79 @@ en_GB:
signup_or_login: "Start By signing up (or logging in)"
have_an_account: "Already have an account?"
action_login: "Log in now."
inflections:
each:
one: "each"
other: "each"
bunch:
one: "bunch"
other: "bunches"
pack:
one: "pack"
other: "packs"
box:
one: "box"
other: "boxes"
bottle:
one: "bottle"
other: "bottles"
jar:
one: "jar"
other: "jars"
head:
one: "head"
other: "heads"
bag:
one: "bag"
other: "bags"
loaf:
one: "loaf"
other: "loaves"
single:
one: "single"
other: "singles"
tub:
one: "tub"
other: "tubs"
punnet:
one: "punnet"
other: "punnets"
packet:
one: "packet"
other: "packets"
item:
one: "item"
other: "items"
dozen:
one: "dozen"
other: "dozens"
unit:
one: "unit"
other: "units"
serve:
one: "serve"
other: "serves"
tray:
one: "tray"
other: "trays"
piece:
one: "piece"
other: "pieces"
pot:
one: "pot"
other: "pots"
bundle:
one: "bundle"
other: "bundles"
flask:
one: "flask"
other: "flasks"
basket:
one: "basket"
other: "baskets"
sack:
one: "sack"
other: "sacks"
producers:
signup:
start_free_profile: "Start with a free profile, and expand when you're ready!"

View File

@@ -1282,6 +1282,7 @@ en_NZ:
saving_credit_card: Saving credit card...
card_has_been_removed: "Your card has been removed (number: %{number})"
card_could_not_be_removed: Sorry, the card could not be removed
invalid_credit_card: "Invalid credit card"
ie_warning_headline: "Your browser is out of date :-("
ie_warning_text: "For the best Open Food Network experience, we strongly recommend upgrading your browser:"
ie_warning_chrome: Download Chrome
@@ -2424,6 +2425,12 @@ en_NZ:
severity: Severity
description: Description
resolve: Resolve
exchange_products:
load_more_variants: "Load More Variants"
load_all_variants: "Load All Variants"
select_all_variants: "Select All %{total_number_of_variants} Variants"
variants_loaded: "%{num_of_variants_loaded} of %{total_number_of_variants} Variants Loaded"
loading_variants: "Loading Variants"
tag_rules:
shipping_method_tagged_top: "Shipping methods tagged"
shipping_method_tagged_bottom: "are:"
@@ -2582,6 +2589,79 @@ en_NZ:
signup_or_login: "Start By Signing Up (or logging in)"
have_an_account: "Already have an account?"
action_login: "Log in now."
inflections:
each:
one: "each"
other: "each"
bunch:
one: "bunch"
other: "bunches"
pack:
one: "pack"
other: "packs"
box:
one: "box"
other: "boxes"
bottle:
one: "bottle"
other: "bottles"
jar:
one: "jar"
other: "jars"
head:
one: "head"
other: "heads"
bag:
one: "bag"
other: "bags"
loaf:
one: "loaf"
other: "loaves"
single:
one: "single"
other: "singles"
tub:
one: "tub"
other: "tubs"
punnet:
one: "punnet"
other: "punnets"
packet:
one: "packet"
other: "packets"
item:
one: "item"
other: "items"
dozen:
one: "dozen"
other: "dozens"
unit:
one: "unit"
other: "units"
serve:
one: "serve"
other: "serves"
tray:
one: "tray"
other: "trays"
piece:
one: "piece"
other: "pieces"
pot:
one: "pot"
other: "pots"
bundle:
one: "bundle"
other: "bundles"
flask:
one: "flask"
other: "flasks"
basket:
one: "basket"
other: "baskets"
sack:
one: "sack"
other: "sacks"
producers:
signup:
start_free_profile: "Start with a basic profile, and expand when you're ready!"

View File

@@ -2619,6 +2619,79 @@ fr:
signup_or_login: "Commencez par vous inscrire (ou connexion)"
have_an_account: "Déjà inscrit?"
action_login: "Se connecter."
inflections:
each:
one: "chacun"
other: "chacun"
bunch:
one: "bouquet"
other: "bouquets"
pack:
one: "caisse"
other: "caisses"
box:
one: "boîte"
other: "boîtes"
bottle:
one: "bouteille"
other: "bouteilles"
jar:
one: "bocal"
other: "bocaux"
head:
one: "tête"
other: "têtes"
bag:
one: "sac"
other: "sacs"
loaf:
one: "miche"
other: "miches"
single:
one: "unité"
other: "unités"
tub:
one: "bac"
other: "bacs"
punnet:
one: "barquette"
other: "barquettes"
packet:
one: "paquet"
other: "paquets"
item:
one: "article"
other: "articles"
dozen:
one: "dizaine"
other: "dizaines"
unit:
one: "unité"
other: "unités"
serve:
one: "service"
other: "services"
tray:
one: "plateau"
other: "plateaux"
piece:
one: "pièce"
other: "pièces"
pot:
one: "pot"
other: "pots"
bundle:
one: "botte"
other: "bottes"
flask:
one: "flacon"
other: "flacons"
basket:
one: "panier"
other: "paniers"
sack:
one: "sachet"
other: "sachets"
producers:
signup:
start_free_profile: "Commencez par créer votre profil entreprise, et changez de formule quand vous êtes prêt !"

View File

@@ -1284,6 +1284,7 @@ fr_CA:
saving_credit_card: Enregistrement de la carte de crédit...
card_has_been_removed: "Votre carte a été supprimée (numéro : %{number})"
card_could_not_be_removed: Désolée, la carte n'a pas pu être supprimée :-(
invalid_credit_card: "Cette carte de crédit n'est pas valide"
ie_warning_headline: "Votre navigateur n'est pas à jour :-("
ie_warning_text: "Pour une expérience optimale sur Open Food Network, nous vous recommandons fortement de mettre à jour votre navigateur:"
ie_warning_chrome: Télécharger Chrome
@@ -2436,6 +2437,12 @@ fr_CA:
severity: Gravité
description: Description
resolve: Résoudre
exchange_products:
load_more_variants: "Afficher plus de variantes"
load_all_variants: "Afficher toutes les variantes"
select_all_variants: "Sélectionnez toutes les%{total_number_of_variants}variantes"
variants_loaded: "%{num_of_variants_loaded}sur%{total_number_of_variants}variantes"
loading_variants: "Chargement des variantes"
tag_rules:
shipping_method_tagged_top: "Les méthodes de livraison taggées"
shipping_method_tagged_bottom: "sont:"
@@ -2595,6 +2602,79 @@ fr_CA:
signup_or_login: "Commencez par vous inscrire (ou vous connecter)"
have_an_account: "Déjà inscrit?"
action_login: "Se connecter."
inflections:
each:
one: "chacun"
other: "chacun"
bunch:
one: "bouquet"
other: "bouquets"
pack:
one: "caisse"
other: "caisses"
box:
one: "boîte"
other: "boîtes"
bottle:
one: "bouteille"
other: "bouteilles"
jar:
one: "bocal"
other: "bocaux"
head:
one: "tête"
other: "têtes"
bag:
one: "sac"
other: "sacs"
loaf:
one: "miche"
other: "miches"
single:
one: "unité"
other: "unités"
tub:
one: "bac"
other: "bacs"
punnet:
one: "barquette"
other: "barquettes"
packet:
one: "paquets"
other: "paquets"
item:
one: "article"
other: "articles"
dozen:
one: "dizaine"
other: "dizaines"
unit:
one: "unité"
other: "unités"
serve:
one: "service"
other: "services"
tray:
one: "plateau"
other: "plateaux"
piece:
one: "pièce"
other: "pièces"
pot:
one: "pots"
other: "pots"
bundle:
one: "botte"
other: "bottes"
flask:
one: "flacons"
other: "flacon"
basket:
one: "panier"
other: "paniers"
sack:
one: "sachet"
other: "sachets"
producers:
signup:
start_free_profile: "Commencez par créer votre profil entreprise, c'est gratuit, et changez de formule quand vous êtes prêt !"
@@ -2837,6 +2917,8 @@ fr_CA:
zipcode: Code postal
weight: Poids (au kg)
error_user_destroy_with_orders: "Les utilisateurs avec des commandes finalisées pourraient ne pas être supprimés"
cannot_create_payment_without_payment_methods: "Vous ne pouvez pas ajouter un paiement pour une commande sans avoir défini de méthode de paiement au préalable."
please_define_payment_methods: "Il faut que vous définissiez une méthode de paiement avant tout !"
options: "Options"
actions:
update: "Mettre à jour"

View File

@@ -2588,6 +2588,79 @@ nb:
signup_or_login: "Kom i gang ved å registrere deg (eller logge inn)"
have_an_account: "Har du allerede en konto?"
action_login: "Logg inn nå."
inflections:
each:
one: "Hver"
other: "hver"
bunch:
one: "bunke"
other: "bunker"
pack:
one: "pakke"
other: "pakker"
box:
one: "eske"
other: "esker"
bottle:
one: "flaske"
other: "flasker"
jar:
one: "krukke"
other: "krukker"
head:
one: "hode"
other: "hoder"
bag:
one: "pose"
other: "poser"
loaf:
one: "skive"
other: "skiver"
single:
one: "enkelt"
other: "enkle"
tub:
one: "kar"
other: "kar"
punnet:
one: "eske"
other: "esker"
packet:
one: "pakke"
other: "pakker"
item:
one: "stk"
other: "stk"
dozen:
one: "dusin"
other: "dusin"
unit:
one: "enhet"
other: "enheter"
serve:
one: "porsjon"
other: "porsjoner"
tray:
one: "brett"
other: "brett"
piece:
one: "stykke"
other: "stykker"
pot:
one: "gryte"
other: "gryter"
bundle:
one: "bunt"
other: "bunter"
flask:
one: "kolbe"
other: "kolber"
basket:
one: "kurv"
other: "kurver"
sack:
one: "sekk"
other: "sekker"
producers:
signup:
start_free_profile: "Start med en gratis profil, og utvid når du er klar!"

View File

@@ -420,7 +420,7 @@ tr:
display_as: Gösterme Şekli
category: Kategori
tax_category: Vergi Kategorisi
inherits_properties?: Özellikler kopyalanıyor mu?
inherits_properties?: Özellikler aktarılıyor mu?
available_on: Mevcut Olma Tarihi
av_on: "Mevcut Olma Tarihi"
import_date: Aktarıldı
@@ -433,7 +433,7 @@ tr:
search: "Ara"
properties:
property_name: "Özellik Adı"
inherited_property: "Kopyalanan Özellik"
inherited_property: "Aktarılan Özellik"
variants:
infinity: "Sonsuz"
to_order_tip: "Sipariş üzerine yapılan ürünlerin, belirlenmiş stok seviyeleri yoktur."
@@ -547,7 +547,7 @@ tr:
description: İşletmelerinizin stoklarını yönetmek için bu sayfayı kullanın. Burada yapılan değişiklikler 'Ürünler' sayfasındaki ayarları da günceller.
enable_reset?: Stok Sıfırlama etkinleştirilsin mi?
default_stock: "Varsayılan stok"
inherit?: Kopyala?
inherit?: Aktar?
add: Ekle
hide: Sakla
import_date: Aktarıldı
@@ -1294,13 +1294,13 @@ tr:
desc_part_1: "Çerezler, bazı web sitelerini ziyaret ettiğinizde bilgisayarınızda depolanan çok küçük metin dosyalarıdır."
desc_part_2: "AGA'da gizliliğinize tamamen saygılıyız. Yalnızca size gıda satma/satın alma hizmetini sunmak için gerekli olan çerezleri kullanıyoruz. Verilerinizin hiçbirini satmıyoruz. Gelecekte, ekosistem için yararlı olabilecek yeni müşterek hizmetleri oluşturmak için bazı verilerinizi paylaşmanızı önerebiliriz (yerel gıda sistemleri için lojistik hizmetler gibi) ama henüz o seviyede değiliz ve bunu zaten sizin izniniz olmadan yapmayacağız :-)"
desc_part_3: "Platforma 'Giriş' yaptığınızda kim olduğunuzu hatırlamak veya giriş yapmamış olsanız bile sepetinize koyduğunuz ürünleri hatırlayabilmek için çerezleri kullanırız. “Çerezleri kabul et” butonuna tuşlamadan gezinmeye devam ederseniz, web sitesinin çalışması için gerekli olan çerezleri saklamak için bize izin verdiğinizi varsayıyoruz. İşte kullandığımız çerezlerin listesi!"
essential_cookies: "Temel Çerezler"
essential_cookies: "Kullanılması Zorunlu Olan Çerezler"
essential_cookies_desc: "Web sitemizin çalışması için aşağıdaki çerezler kesinlikle gereklidir."
essential_cookies_note: "Çerezlerin çoğu yalnızca benzersiz bir tanımlayıcı içerir, ancak başka hiçbir veri içermez, bu nedenle örneğin e-posta adresiniz ve şifreniz hiçbir zaman bunlarda bulunmaz ve hiçbir zaman açıklanmaz."
cookie_domain: "Olarak ayarla:"
cookie_session_desc: "Web sitesinin sayfa ziyaretleri arasındaki kullanıcıları hatırlamasına, örneğin sepetinizdeki öğeleri hatırlamasına izin vermek için kullanılır."
cookie_consent_desc: "Çerezleri depolamak için kullanıcı onayının durumunu korumak amacıyla kullanılır"
cookie_remember_me_desc: "Kullanıcı web sitesinden kendisini hatırlamasını isterse kullanılır. Bu çerez 12 gün sonra otomatik olarak silinir. Kullanıcı olarak bu çerezin silinmesini istiyorsanız, yalnızca çıkış yapmanız gerekir. Bu çerezin bilgisayarınıza yüklenmesini istemiyorsanız, giriş yaparken “beni hatırla” onay kutusunu işaretlememelisiniz."
cookie_remember_me_desc: "Kullanıcı web sitesinden kendisini hatırlamasını isterse kullanılır. Bu çerez 12 gün sonra otomatik olarak silinir. Kullanıcı olarak bu çerezin silinmesini istiyorsanız, hesabınızdan çıkış yapmanız yeterli. Bu çerezin bilgisayarınıza yüklenmesini istemiyorsanız, giriş yaparken “beni hatırla” onay kutusunu işaretlememelisiniz."
cookie_openstreemap_desc: "Sevecen açık kaynak harita sağlayıcımız (OpenStreetMap) tarafından, belirli bir süre içinde çok fazla istek almamasını ve hizmetlerinin kötüye kullanılmasını önlemek için kullanılır."
cookie_stripe_desc: "Sahtekarlık tespiti için ödeme işlemcimiz Stripe tarafından toplanan veriler https://stripe.com/cookies-policy/legal. Tüm mağazalar Stripe'ı ödeme yöntemi olarak kullanmaz, ancak dolandırıcılığın tüm sayfalara uygulanmasını önlemek iyi bir yöntemdir. Stripe muhtemelen sayfalarımızdan hangilerinin genellikle API'leriyle etkileşime girdiğini gösteren bir resim oluşturur ve daha sonra olağandışı bir şeyi işaretler. Dolayısıyla, Stripe çerezinin ayarlanması, kullanıcıya ödeme yönteminin sağlanmasından daha geniş bir işleve sahiptir. Kaldırılması hizmetin güvenliğini etkileyebilir. Stripe hakkında daha fazla bilgi edinebilir ve gizlilik politikasını https://stripe.com/privacy adresinde okuyabilirsiniz."
statistics_cookies: "İstatistik Çerezleri"
@@ -1324,7 +1324,7 @@ tr:
disabling_cookies_safari_link: "https://www.apple.com/legal/privacy/en-ww/cookies/"
disabling_cookies_note: "Ancak, Açık Gıda Ağı tarafından kullanılan temel çerezleri silerseniz veya değiştirirseniz, web sitesinin çalışmadığını, örneğin ödeme yapmak için sepetinize hiçbir şey ekleyemeyeceğinizi unutmayın."
cookies_banner:
cookies_usage: "Bu site, gezinmenizi sürtünmesiz ve güvenli hale getirmek ve sunduğumuz özellikleri iyileştirmek için nasıl kullandığınızı anlamamıza yardımcı olmak için çerezleri kullanır."
cookies_usage: "Bu site, gezinmenizi sorunsuz ve güvenli hale getirmek ve sunduğumuz özellikleri iyileştirmek için nasıl kullandığınızı anlamamıza yardımcı olmak için çerezleri kullanır."
cookies_definition: "Çerezler, bazı web sitelerini ziyaret ettiğinizde bilgisayarınızda depolanan çok küçük metin dosyalarıdır."
cookies_desc: "Yalnızca size çevrimiçi yiyecek satma / satın alma hizmetini sunmak için gerekli olan çerezleri kullanıyoruz. Verilerinizin hiçbirini satmıyoruz. Hizmete giriş yaptığınızda kim olduğunuzu hatırlamak veya giriş yapmamış olsanız bile sepetinize koyduğunuz öğeleri hatırlayabilmek için çerezleri kullanırız. Tıklamadan web sitesinde gezinmeye devam ederseniz “Çerezleri kabul et”, web sitesinin çalışması için gerekli olan çerezleri saklamak için bize izin verdiğinizi varsayıyoruz."
cookies_policy_link_desc: "Daha fazla bilgi edinmek istiyorsanız,"
@@ -1791,7 +1791,7 @@ tr:
yes_producer: "Evet, üreticiyim"
no_producer: "Hayır, üretici değilim"
producer_field_error: "Lütfen birini seçin. Üretici misiniz?"
yes_producer_help: "Siz de birşeyler yetiştiriyor, büyütüyor, sağıyor, hasat ediyor, pişiriyor kurutuyor veya hazırlıyorsanız, siz de bir üreticisiniz."
yes_producer_help: "Siz de birşeyler yetiştiriyor, büyütüyor, sağıyor, hasat ediyor, pişiriyor kurutuyor veya hazırlıyorsanız, üreticisiniz demektir."
no_producer_help: "Üretici değilseniz muhtemelen gıdaya ulaşım sağlayan, dağıtım veya satış yapan bir grup ya da işletmesiniz. Bir dükkan, kooperatif, gıda topluluğu, restaurant veya toptancı bile olabilirsiniz. "
create_profile: "Profil oluştur"
about:
@@ -2402,10 +2402,9 @@ tr:
enterprise_producer:
producer: Üretici
producer_text1: >
Dürüst ve bilinçli üreticiler, insanlara sağlıklı ve lezzetli yiyecek
ve içecekler sağlar. Siz de tamamen doğal yollarla bir şeyler yettiriyor,
büyütüyor, pişiriyor, sağıyor veya mayalıyorsanız, bu üreticilerden
birisiniz demektir.
Dürüst ve bilinçli üreticiler, insanlara sağlıklı gıdalar sağlar. Siz
de birşeyler yetiştiriyor, büyütüyor, sağıyor, hasat ediyor, pişiriyor
kurutuyor veya hazırlıyorsanız, üreticisiniz demektir.
producer_text2: >
Üreticiler sistem üzerinde farklı şekillerde aktif olarak da hem kendilerine
hem de diğer işletmelere daha faydalı olabilirler. Çevrelerindeki üreticilerin
@@ -2427,7 +2426,7 @@ tr:
status_title: "%{name} kuruldu ve başlamaya hazır!"
severity: Şiddet
description: ıklama
resolve: çözmek
resolve: Çözüm
exchange_products:
load_more_variants: "Daha Fazla Varyant Yükle"
load_all_variants: "Tüm Varyantları Yükle"
@@ -2447,7 +2446,7 @@ tr:
select_rule_type: "Bir kural türü seçin:"
add_rule: "Kural Ekle"
enterprise_fees:
inherit_from_product: "Üründen Kopyala"
inherit_from_product: "Üründen Aktar"
orders:
index:
per_page: "sayfa başına %{results}"
@@ -2592,6 +2591,73 @@ tr:
signup_or_login: "Kaydolarak Başlayın (veya giriş yapın)"
have_an_account: "Zaten hesabınız var mı?"
action_login: "Şimdi giriş yapın."
inflections:
each:
one: "her biri"
other: "her biri"
bunch:
one: "Demet"
other: "demet"
pack:
one: "pack"
other: "paket"
box:
one: "Kutu"
other: "koli"
bottle:
one: "şişe"
other: "şişe"
jar:
one: "kavanoz"
other: "kavanoz"
head:
one: "kafa"
other: "baş"
bag:
one: "sırt çantası"
other: "çanta"
loaf:
one: "somun"
other: "somun"
single:
one: "tek"
other: "tane"
tub:
one: "küvet"
other: "fıçı"
punnet:
one: "meyve sepeti"
other: "meyve sepeti"
packet:
one: "paket"
other: "paket"
item:
one: "madde"
other: "Ürün"
dozen:
one: "düzine"
other: "deste"
unit:
one: "birim"
other: "birimler"
serve:
one: "servis"
other: "porsiyon"
piece:
one: "parça"
other: "parça"
bundle:
one: "demeti"
other: "demet"
flask:
one: "şişe"
other: "cep şişesi"
basket:
one: "sepet"
other: "sepet"
sack:
one: "çuval"
other: "çuval"
producers:
signup:
start_free_profile: "Ücretsiz bir profille başlayın ve hazır olduğunuzda devam edin!"
@@ -2867,7 +2933,7 @@ tr:
groups: "Gruplar"
product_properties:
index:
inherits_properties_checkbox_hint: "Özellikler i%{supplier}'den kopyalanacak mı? (yukarıda geçersiz kılınmadıkça)"
inherits_properties_checkbox_hint: "Özellikler %{supplier}'den aktarılsın mı? (yukarıda geçersiz kılınmadıkça)"
add_product_properties: "Ürün Özelliği Ekle"
select_from_prototype: "Prototipten Seç"
properties:
@@ -3051,7 +3117,7 @@ tr:
display_as: Gösterme Şekli
category: Kategori
tax_category: Vergi Kategorisi
inherits_properties?: Özellikler kopyalanır mı?
inherits_properties?: Özellikler aktarılıyor mu?
available_on: Şu Tarihte Hazır
av_on: "Şu tarihte hazır"
import_date: "İçe Aktarım Tarihi"

View File

@@ -15,9 +15,9 @@ module OpenFoodNetwork
end
def stripe_configuration_incomplete?(payment_method)
return true if payment_method.preferred_enterprise_id.zero?
payment_method.stripe_account_id.blank?
payment_method.preferred_enterprise_id.nil? ||
payment_method.preferred_enterprise_id.zero? ||
payment_method.stripe_account_id.blank?
end
end
end

View File

@@ -710,13 +710,22 @@ describe "AdminProductEditCtrl", ->
$httpBackend.flush()
expect($scope.displayFailure).toHaveBeenCalled()
it "shows an alert with error information when post returns 400 with an errors array", ->
spyOn(window, "alert")
$scope.products = "updated list of products"
$httpBackend.expectPOST("/admin/products/bulk_update").respond 400, { "errors": ["an error"] }
$scope.updateProducts "updated list of products"
$httpBackend.flush()
expect(window.alert).toHaveBeenCalledWith("Saving failed with the following error(s):\nan error\n")
describe "displaying the error information when post returns 400", ->
beforeEach ->
spyOn $scope, "displayFailure"
$scope.products = "updated list of products"
it "displays errors in an array", ->
$httpBackend.expectPOST("/admin/products/bulk_update").respond 400, { "errors": ["an error"] }
$scope.updateProducts "updated list of products"
$httpBackend.flush()
expect($scope.displayFailure).toHaveBeenCalledWith("Saving failed with the following error(s):\nan error\n")
it "displays errors in a hash", ->
$httpBackend.expectPOST("/admin/products/bulk_update").respond 400, { "errors": { "base": ["a basic error"] } }
$scope.updateProducts "updated list of products"
$httpBackend.flush()
expect($scope.displayFailure).toHaveBeenCalledWith("Saving failed with the following error(s):\na basic error\n")
describe "adding variants", ->

View File

@@ -0,0 +1,20 @@
describe "ErrorsParser service", ->
errorsParser = null
beforeEach ->
module('admin.utils')
inject (ErrorsParser) ->
errorsParser = ErrorsParser
describe "toString", ->
it "returns empty string for nil errors", ->
expect(errorsParser.toString(null)).toEqual ""
it "returns the elements in the array if an array is provided", ->
expect(errorsParser.toString(["1", "2"])).toEqual "1\n2\n"
it "returns the elements in the hash if a hash is provided", ->
expect(errorsParser.toString({ "keyname": ["1", "2"] })).toEqual "1\n2\n"
it "returns all elements in all hash keys provided", ->
expect(errorsParser.toString({ "keyname1": ["1", "2"], "keyname2": ["3", "4"] })).toEqual "1\n2\n3\n4\n"

View File

@@ -1,4 +1,5 @@
require 'spec_helper'
require 'open_food_network/bulk_coop_report'
include AuthenticationWorkflow

View File

@@ -1,4 +1,5 @@
require 'spec_helper'
require 'open_food_network/customers_report'
module OpenFoodNetwork
describe CustomersReport do

View File

@@ -1,4 +1,5 @@
require 'spec_helper'
require 'open_food_network/group_buy_report'
module OpenFoodNetwork
describe GroupBuyReport do

View File

@@ -1,4 +1,5 @@
require 'spec_helper'
require 'open_food_network/order_and_distributor_report'
module OpenFoodNetwork
describe OrderAndDistributorReport do

View File

@@ -1,4 +1,5 @@
require 'spec_helper'
require 'open_food_network/order_cycle_management_report'
include AuthenticationWorkflow

View File

@@ -1,4 +1,5 @@
require 'spec_helper'
require 'open_food_network/order_grouper'
module OpenFoodNetwork
describe OrderGrouper do

View File

@@ -1,4 +1,5 @@
require "spec_helper"
require 'open_food_network/orders_and_fulfillments_report/customer_totals_report'
RSpec.describe OpenFoodNetwork::OrdersAndFulfillmentsReport::CustomerTotalsReport do
let!(:distributor) { create(:distributor_enterprise) }

View File

@@ -1,4 +1,5 @@
require "spec_helper"
require 'spec_helper'
require 'open_food_network/orders_and_fulfillments_report/distributor_totals_by_supplier_report'
RSpec.describe OpenFoodNetwork::OrdersAndFulfillmentsReport::DistributorTotalsBySupplierReport do
let!(:distributor) { create(:distributor_enterprise) }

View File

@@ -1,4 +1,5 @@
require "spec_helper"
require 'spec_helper'
require 'open_food_network/orders_and_fulfillments_report/supplier_totals_by_distributor_report'
RSpec.describe OpenFoodNetwork::OrdersAndFulfillmentsReport::SupplierTotalsByDistributorReport do
let!(:distributor) { create(:distributor_enterprise) }

View File

@@ -1,4 +1,5 @@
require "spec_helper"
require 'spec_helper'
require 'open_food_network/orders_and_fulfillments_report/supplier_totals_report'
RSpec.describe OpenFoodNetwork::OrdersAndFulfillmentsReport::SupplierTotalsReport do
let!(:distributor) { create(:distributor_enterprise) }

View File

@@ -1,4 +1,5 @@
require 'spec_helper'
require 'open_food_network/orders_and_fulfillments_report'
describe OpenFoodNetwork::OrdersAndFulfillmentsReport do
include AuthenticationWorkflow

View File

@@ -1,4 +1,5 @@
require 'spec_helper'
require 'open_food_network/packing_report'
include AuthenticationWorkflow

View File

@@ -1,4 +1,5 @@
require 'spec_helper'
require 'open_food_network/products_and_inventory_report'
module OpenFoodNetwork
describe ProductsAndInventoryReport do

View File

@@ -1,7 +1,8 @@
require 'spec_helper'
require 'open_food_network/users_and_enterprises_report'
module OpenFoodNetwork
describe OrderAndDistributorReport do
describe UsersAndEnterprisesReport do
include AuthenticationWorkflow
describe "users_and_enterprises" do