From 2551d884050f99cbc350f0152b7428d04b1fe2dd Mon Sep 17 00:00:00 2001
From: Henning Leutz <leutz@pcsg.de>
Date: Tue, 14 Mar 2023 11:24:11 +0100
Subject: [PATCH] fix: quiqqer/coupons#14

---
 ajax/create.php                 |  16 +++--
 bin/backend/controls/Manager.js | 108 +++++++++++++++++---------------
 2 files changed, 70 insertions(+), 54 deletions(-)

diff --git a/ajax/create.php b/ajax/create.php
index 8ef89fb..2039113 100644
--- a/ajax/create.php
+++ b/ajax/create.php
@@ -1,9 +1,9 @@
 <?php
 
-use QUI\ERP\Coupons\Handler;
-use QUI\Utils\Security\Orthos;
 use QUI\ERP\Coupons\CouponCodeException;
+use QUI\ERP\Coupons\Handler;
 use QUI\ERP\Discount\Handler as DiscountsHandler;
+use QUI\Utils\Security\Orthos;
 
 /**
  * Create new CouponCode(s)
@@ -14,7 +14,15 @@
 QUI::$Ajax->registerFunction(
     'package_quiqqer_coupons_ajax_create',
     function ($attributes) {
-        $attributes = Orthos::clearArray(\json_decode($attributes, true));
+        $attributes = Orthos::clearArray(json_decode($attributes, true));
+
+        if (!empty($attributes['code'])) {
+            $attributes['code'] = html_entity_decode($attributes['code']);
+        }
+
+        if (!empty($attributes['title'])) {
+            $attributes['title'] = html_entity_decode($attributes['title']);
+        }
 
         try {
             $amount      = 1;
@@ -64,7 +72,7 @@ function ($attributes) {
                 if ($i === 0) {
                     \QUI\Translator::update(
                         'quiqqer/discount',
-                        'discount.'.$NewDiscount->getId().'.title',
+                        'discount.' . $NewDiscount->getId() . '.title',
                         'quiqqer/discount',
                         [
                             'de' => $L->getByLang('de', 'quiqqer/coupons', 'Discount.default_title', [
diff --git a/bin/backend/controls/Manager.js b/bin/backend/controls/Manager.js
index 625738a..3714ed8 100644
--- a/bin/backend/controls/Manager.js
+++ b/bin/backend/controls/Manager.js
@@ -63,11 +63,11 @@ define('package/quiqqer/coupons/bin/backend/controls/Manager', [
         initialize: function (options) {
             this.parent(options);
 
-            this.Loader      = new QUILoader();
-            this.$User       = null;
-            this.$Grid       = null;
+            this.Loader = new QUILoader();
+            this.$User = null;
+            this.$Grid = null;
             this.$GridParent = null;
-            this.$Panel      = null;
+            this.$Panel = null;
 
             this.addEvents({
                 onCreate : this.$onCreate,
@@ -155,43 +155,51 @@ define('package/quiqqer/coupons/bin/backend/controls/Manager', [
             );
 
             this.$Grid = new Grid(this.$GridParent, {
-                columnModel      : [{
-                    header   : QUILocale.get('quiqqer/system', 'id'),
-                    dataIndex: 'id',
-                    dataType : 'number',
-                    width    : 50
-                }, {
-                    header   : QUILocale.get(lg, 'controls.manager.tbl.header.code'),
-                    dataIndex: 'code',
-                    dataType : 'string',
-                    width    : 150
-                }, {
-                    header   : QUILocale.get(lg, 'controls.manager.tbl.header.title'),
-                    dataIndex: 'title',
-                    dataType : 'string',
-                    width    : 200
-                }, {
-                    header   : QUILocale.get(lg, 'controls.manager.tbl.header.status'),
-                    dataIndex: 'status',
-                    dataType : 'node',
-                    width    : 200,
-                    className: 'clickable'
-                }, {
-                    header   : QUILocale.get(lg, 'controls.manager.tbl.header.validUntilDate'),
-                    dataIndex: 'validUntilDateText',
-                    dataType : 'string',
-                    width    : 150
-                }, {
-                    header   : QUILocale.get(lg, 'controls.manager.tbl.header.reusable'),
-                    dataIndex: 'maxUsageLabel',
-                    dataType : 'string',
-                    width    : 150
-                }, {
-                    header   : QUILocale.get(lg, 'controls.manager.tbl.header.createDate'),
-                    dataIndex: 'createDate',
-                    dataType : 'string',
-                    width    : 150
-                }],
+                columnModel      : [
+                    {
+                        header   : QUILocale.get('quiqqer/system', 'id'),
+                        dataIndex: 'id',
+                        dataType : 'number',
+                        width    : 50
+                    },
+                    {
+                        header   : QUILocale.get(lg, 'controls.manager.tbl.header.code'),
+                        dataIndex: 'code',
+                        dataType : 'string',
+                        width    : 150
+                    },
+                    {
+                        header   : QUILocale.get(lg, 'controls.manager.tbl.header.title'),
+                        dataIndex: 'title',
+                        dataType : 'string',
+                        width    : 200
+                    },
+                    {
+                        header   : QUILocale.get(lg, 'controls.manager.tbl.header.status'),
+                        dataIndex: 'status',
+                        dataType : 'node',
+                        width    : 200,
+                        className: 'clickable'
+                    },
+                    {
+                        header   : QUILocale.get(lg, 'controls.manager.tbl.header.validUntilDate'),
+                        dataIndex: 'validUntilDateText',
+                        dataType : 'string',
+                        width    : 150
+                    },
+                    {
+                        header   : QUILocale.get(lg, 'controls.manager.tbl.header.reusable'),
+                        dataIndex: 'maxUsageLabel',
+                        dataType : 'string',
+                        width    : 150
+                    },
+                    {
+                        header   : QUILocale.get(lg, 'controls.manager.tbl.header.createDate'),
+                        dataIndex: 'createDate',
+                        dataType : 'string',
+                        width    : 150
+                    }
+                ],
                 pagination       : true,
                 serverSort       : true,
                 selectable       : true,
@@ -356,7 +364,7 @@ define('package/quiqqer/coupons/bin/backend/controls/Manager', [
 
                     return;
                 }
-
+                console.log(QUIFormUtils.getFormData(Form));
                 CouponCodes.create(QUIFormUtils.getFormData(Form)).then((couponCodeId) => {
                     if (!couponCodeId) {
                         Popup.Loader.hide();
@@ -408,7 +416,7 @@ define('package/quiqqer/coupons/bin/backend/controls/Manager', [
                 events     : {
                     onOpen: (Win) => {
                         const Content = Popup.getContent();
-                        Form          = Content.getElement('form');
+                        Form = Content.getElement('form');
 
                         Form.addEvent('submit', function (event) {
                             event.stop();
@@ -416,12 +424,12 @@ define('package/quiqqer/coupons/bin/backend/controls/Manager', [
                         });
 
                         const Amount = Content.getElement('input[name="amount"]');
-                        const Code   = Content.getElement('input[name="code"]');
+                        const Code = Content.getElement('input[name="code"]');
 
                         Code.addEvent('keyup', function () {
                             if (Code.value !== '') {
                                 Amount.disabled = true;
-                                Amount.value    = 1;
+                                Amount.value = 1;
                             } else {
                                 Amount.disabled = false;
                             }
@@ -523,10 +531,10 @@ define('package/quiqqer/coupons/bin/backend/controls/Manager', [
          * Remove all selected licenses
          */
         $delete: function () {
-            var self       = this;
+            var self = this;
             var deleteData = [];
-            var deleteIds  = [];
-            var rows       = this.$Grid.getSelectedData();
+            var deleteIds = [];
+            var rows = this.$Grid.getSelectedData();
 
             for (var i = 0, len = rows.length; i < len; i++) {
                 deleteData.push(
@@ -612,7 +620,7 @@ define('package/quiqqer/coupons/bin/backend/controls/Manager', [
                             headerOrderPrefixedId: QUILocale.get(lg, lgPrefix + 'headerOrderPrefixedId')
                         }));
 
-                        var Content   = Popup.getContent();
+                        var Content = Popup.getContent();
                         var TableBody = Content.getElement('tbody');
 
                         for (var i = 0, len = RowData.usages.length; i < len; i++) {
@@ -620,7 +628,7 @@ define('package/quiqqer/coupons/bin/backend/controls/Manager', [
 
                             var Row = new Element('tr', {
                                 html: '<td>' + usage.date + '</td>' +
-                                    '<td>' + usage.userId + ' (' + usage.userName + ')</td>'
+                                      '<td>' + usage.userId + ' (' + usage.userName + ')</td>'
                             }).inject(TableBody);
 
                             new Element('td', {
-- 
GitLab