From 8668bf93bd44abe1589695c1fe452bbb1e76cad4 Mon Sep 17 00:00:00 2001 From: gmorel Date: Thu, 12 Sep 2013 14:10:36 +0200 Subject: [PATCH] Working - Coupon Add/Edit/Delete rule AJAX --- core/lib/Thelia/Constraint/Rule/Operators.php | 6 +- templates/admin/default/assets/js/coupon.js | 67 ++++++----- templates/admin/default/coupon-update.html | 6 + .../admin/default/coupon/rule-input-ajax.html | 28 +++-- tests/functionnal/casperjs/exe/30_coupons.js | 113 +++++++++++++----- 5 files changed, 148 insertions(+), 72 deletions(-) diff --git a/core/lib/Thelia/Constraint/Rule/Operators.php b/core/lib/Thelia/Constraint/Rule/Operators.php index 41640810c..2ed5c2909 100644 --- a/core/lib/Thelia/Constraint/Rule/Operators.php +++ b/core/lib/Thelia/Constraint/Rule/Operators.php @@ -133,21 +133,21 @@ abstract class Operators break; case self::INFERIOR_OR_EQUAL: $ret = $translator->trans( - 'inferior or equals to', + 'inferior or equal to', array(), 'constraint' ); break; case self::EQUAL: $ret = $translator->trans( - 'equals to', + 'equal to', array(), 'constraint' ); break; case self::SUPERIOR_OR_EQUAL: $ret = $translator->trans( - 'superior or equals to', + 'superior or equal to', array(), 'constraint' ); diff --git a/templates/admin/default/assets/js/coupon.js b/templates/admin/default/assets/js/coupon.js index 1ccd70861..038c9114a 100644 --- a/templates/admin/default/assets/js/coupon.js +++ b/templates/admin/default/assets/js/coupon.js @@ -22,17 +22,20 @@ $(function($){ }; // Add 1 Rule / or update the temporary Rules array then Save Rules via AJAX - couponManager.addRuleAjax = function(id) { - console.log('addRuleAjax '+ id); + couponManager.createOrUpdateRuleAjax = function() { + var id = couponManager.ruleToUpdateId; + console.log('createOrUpdateRuleAjax '+ id); // If create if(!id) { console.log('pushing'); + console.log(couponManager.ruleToSave); couponManager.rulesToSave.push(couponManager.ruleToSave); } else { // else update console.log('editing ' + id); + console.log(couponManager.ruleToSave); couponManager.rulesToSave[id] = couponManager.ruleToSave; // reset edit mode to off - couponManager.ruleIdToUpdate = false; + couponManager.ruleToUpdateId = false; } // Save @@ -40,21 +43,21 @@ $(function($){ }; // Set rule inputs to allow editing - couponManager.updateRuleAjax = function(id) { - couponManager.ruleToUpdate = couponManager.rulesToSave[id]; + couponManager.updateRuleSelectAjax = function(id) { + couponManager.ruleToUpdateId = id; + couponManager.ruleToSave = couponManager.rulesToSave[id]; console.log('Set id to edit to ' + id); - couponManager.ruleIdToUpdate = id; - // Deleting this rule, we will reset it - delete couponManager.rulesToSave[id]; +// // Deleting this rule, we will reset it +// delete couponManager.rulesToSave[id]; // Set the rule selector $("#category-rule option").filter(function() { - return $(this).val() == couponManager.ruleToUpdate.serviceId; + return $(this).val() == couponManager.ruleToSave.serviceId; }).prop('selected', true); // Force rule input refresh - couponManager.loadRuleInputs(couponManager.ruleToUpdate.serviceId, function() { + couponManager.loadRuleInputs(couponManager.ruleToSave.serviceId, function() { couponManager.fillInRuleInputs(); }); }; @@ -62,39 +65,40 @@ $(function($){ // Fill in rule inputs couponManager.fillInRuleInputs = function() { console.log('fillInRuleInputs with'); - console.log(couponManager.ruleToUpdate); + console.log(couponManager.ruleToSave); var operatorId = null; var valueId = null; var idName = null; + var id = couponManager.ruleToUpdateId; if(id) { - couponManager.ruleToUpdate = couponManager.ruleToSave; + couponManager.ruleToSave = couponManager.rulesToSave[id]; } - for (idName in couponManager.ruleToUpdate.operators) { + for (idName in couponManager.ruleToSave.operators) { // Setting idName operator select operatorId = idName + '-operator'; - $('#' + operatorId).val(couponManager.ruleToUpdate.operators[idName]); + $('#' + operatorId).val(couponManager.ruleToSave.operators[idName]); - valueId = idName + '-value'; // Setting idName value input - $('#' + valueId).val(couponManager.ruleToUpdate.values[idName]); + valueId = idName + '-value'; + $('#' + valueId).val(couponManager.ruleToSave.values[idName]); } - couponManager.ruleToSave = couponManager.ruleToUpdate; +// couponManager.ruleToSave = couponManager.ruleToUpdate; - var id = couponManager.ruleIdToUpdate; - console.log('id to edit = ' + id); - if(id) { - console.log('setint rulesToSave[' + id + ']'); - console.log(couponManager.ruleToSave); - couponManager.rulesToSave[id] = couponManager.ruleToSave; - } +// var id = couponManager.ruleToUpdateId; +// console.log('id to edit = ' + id); +// if(id) { +// console.log('setint rulesToSave[' + id + ']'); +// console.log(couponManager.ruleToSave); +// couponManager.rulesToSave[id] = couponManager.ruleToSave; +// } }; // Save rules on click couponManager.onClickSaveRule = function() { $('#constraint-save-btn').on('click', function () { - couponManager.addRuleAjax(couponManager.ruleIdToUpdate); + couponManager.createOrUpdateRuleAjax(); }); }; couponManager.onClickSaveRule(); @@ -114,7 +118,7 @@ $(function($){ $('.constraint-update-btn').on('click', function (e) { e.preventDefault(); var $this = $(this); - couponManager.updateRuleAjax($this.attr('data-int')); + couponManager.updateRuleSelectAjax($this.attr('data-int')); // Hide row being updated $this.parent().parent().remove(); @@ -134,7 +138,7 @@ $(function($){ // Reload rule inputs when changing effect couponManager.onRuleChange = function() { $('#category-rule').on('change', function () { - couponManager.loadRuleInputs($(this).val(), function(ruleToSave) {}); + couponManager.loadRuleInputs($(this).val(), function() {}); }); }; couponManager.onRuleChange(); @@ -148,5 +152,12 @@ $(function($){ // Rule to save var couponManager = {}; +// Rule to be saved couponManager.ruleToSave = {}; -couponManager.ruleIdToUpdate = false; \ No newline at end of file +couponManager.ruleToSave.serviceId = false; +couponManager.ruleToSave.operators = {}; +couponManager.ruleToSave.values = {}; +// Rules payload to save +couponManager.rulesToSave = []; +// Rule being updated id +couponManager.ruleToUpdateId = false; \ No newline at end of file diff --git a/templates/admin/default/coupon-update.html b/templates/admin/default/coupon-update.html index 925296aae..9d6e79c60 100755 --- a/templates/admin/default/coupon-update.html +++ b/templates/admin/default/coupon-update.html @@ -87,6 +87,11 @@ }).done(function(data) { $('#constraint-list').html(data); $('#constraint-add-operators-values').html(''); + // Set the rule selector + $("#category-rule option").filter(function() { + return $(this).val() == 'thelia.constraint.rule.available_for_everyone'; + }).prop('selected', true); + couponManager.onClickUpdateRule(); couponManager.onClickDeleteRule(); }); @@ -108,6 +113,7 @@ } }).done(function(data) { $('#constraint-add-operators-values').html(data); + couponManager.ruleToSave.serviceId = ruleId; return callBack(); }); diff --git a/templates/admin/default/coupon/rule-input-ajax.html b/templates/admin/default/coupon/rule-input-ajax.html index cdf683d21..76bb545f5 100644 --- a/templates/admin/default/coupon/rule-input-ajax.html +++ b/templates/admin/default/coupon/rule-input-ajax.html @@ -3,7 +3,7 @@
@@ -11,7 +11,7 @@
{if $input.type == 'select'} @@ -72,12 +72,20 @@