From ca79b8b3291d9225225042c33b2a688071e3bf8e Mon Sep 17 00:00:00 2001 From: Herbert Maschke Date: Fri, 7 Aug 2020 20:26:42 +0200 Subject: [PATCH] avoid 'Copy of Copy of Copy of ...' infinite prefixing of copies --- .../Webkul/Admin/src/Resources/lang/ar/app.php | 4 ++-- .../Webkul/Admin/src/Resources/lang/de/app.php | 4 ++-- .../Webkul/Admin/src/Resources/lang/en/app.php | 4 ++-- .../src/Http/Controllers/CartRuleController.php | 5 +++-- .../src/Repositories/ProductRepository.php | 15 +++++++++------ 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/packages/Webkul/Admin/src/Resources/lang/ar/app.php b/packages/Webkul/Admin/src/Resources/lang/ar/app.php index e3ca93f40..760907ce1 100644 --- a/packages/Webkul/Admin/src/Resources/lang/ar/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/ar/app.php @@ -5,8 +5,8 @@ return [ 'create' => 'خلق', 'update' => 'تحديث', 'delete' => 'حذف', - 'copy-of' => 'نسخة من', - 'copy-of-slug' => 'نسخة-من', + 'copy-of' => 'نسخة من ', + 'copy-of-slug' => 'نسخة-من-', 'failed' => 'فشل', 'store' => 'متجر', 'image' => 'صورة', diff --git a/packages/Webkul/Admin/src/Resources/lang/de/app.php b/packages/Webkul/Admin/src/Resources/lang/de/app.php index a104a25e6..612607ba4 100755 --- a/packages/Webkul/Admin/src/Resources/lang/de/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/de/app.php @@ -2,8 +2,8 @@ return [ 'save' => 'Speichern', - 'copy-of' => 'Kopie von', - 'copy-of-slug' => 'kopie-von', + 'copy-of' => 'Kopie von ', + 'copy-of-slug' => 'kopie-von-', 'create' => 'Erstellen', 'update' => 'Update', 'delete' => 'Löschen', diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php index a493fcd5d..d23dc046c 100755 --- a/packages/Webkul/Admin/src/Resources/lang/en/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php @@ -2,8 +2,8 @@ return [ 'save' => 'Save', - 'copy-of' => 'Copy of', - 'copy-of-slug' => 'copy-of', + 'copy-of' => 'Copy of ', + 'copy-of-slug' => 'copy-of-', 'create' => 'Create', 'update' => 'Update', 'delete' => 'Delete', diff --git a/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php b/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php index e0cbf68e9..3e78c957a 100644 --- a/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php +++ b/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php @@ -2,6 +2,7 @@ namespace Webkul\CartRule\Http\Controllers; +use Exception; use Illuminate\View\View; use Illuminate\Http\Request; use Illuminate\Support\Facades\Event; @@ -87,7 +88,7 @@ class CartRuleController extends Controller ->replicate() ->fill([ 'status' => 0, - 'name' => __('admin::app.copy-of') . ' ' . $originalCartRule->name, + 'name' => __('admin::app.copy-of') . $originalCartRule->name, ]); $copiedCartRule->save(); @@ -209,7 +210,7 @@ class CartRuleController extends Controller session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Cart Rule'])); return response()->json(['message' => true], 200); - } catch (\Exception $e) { + } catch (Exception $e) { session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Cart Rule'])); } diff --git a/packages/Webkul/Product/src/Repositories/ProductRepository.php b/packages/Webkul/Product/src/Repositories/ProductRepository.php index c3268eb32..7c92e9871 100755 --- a/packages/Webkul/Product/src/Repositories/ProductRepository.php +++ b/packages/Webkul/Product/src/Repositories/ProductRepository.php @@ -3,6 +3,7 @@ namespace Webkul\Product\Repositories; use Exception; +use Illuminate\Support\Str; use Illuminate\Support\Facades\DB; use Webkul\Product\Models\Product; use Illuminate\Pagination\Paginator; @@ -613,8 +614,9 @@ class ProductRepository extends Repository $newValue = $oldValue->replicate(); if ($oldValue->attribute_id === $attributeIds['name']) { - $copiedName = sprintf('%s %s (%s)', - trans('admin::app.copy-of'), + $copyOf = trans('admin::app.copy-of'); + $copiedName = sprintf('%s%s (%s)', + Str::startsWith($originalProduct->name, $copyOf) ? '' : $copyOf, $originalProduct->name, $randomSuffix ); @@ -623,13 +625,14 @@ class ProductRepository extends Repository } if ($oldValue->attribute_id === $attributeIds['url_key']) { - $copiedSlug = sprintf('%s-%s-%s', - trans('admin::app.copy-of'), + $copyOfSlug = trans('admin::app.copy-of-slug'); + $copiedSlug = sprintf('%s%s-%s', + Str::startsWith($originalProduct->url_key, $copyOfSlug) ? '' : $copyOfSlug, $originalProduct->url_key, $randomSuffix ); - $newValue->text_value = __('admin::app.copy-of-slug') . '-' . $originalProduct->url_key . '-' . $randomSuffix; - $newProductFlat->url_key = __('admin::app.copy-of-slug') . '-' . $originalProduct->url_key . '-' . $randomSuffix; + $newValue->text_value = $copiedSlug; + $newProductFlat->url_key = $copiedSlug; } if ($oldValue->attribute_id === $attributeIds['sku']) {