WIP
- Coupon Add/Edit/Delete rule AJAX - add tests casper JS
This commit is contained in:
3
core/lib/Thelia/Tests/Functionnal/casperjs/conf/dit.js
Normal file
3
core/lib/Thelia/Tests/Functionnal/casperjs/conf/dit.js
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
//DIT = Environnement d'intégration
|
||||||
|
var copark_base_url = 'http://ws.copark.dit.linux.thelia.fr/';
|
||||||
|
casper.test.done(0);
|
||||||
3
core/lib/Thelia/Tests/Functionnal/casperjs/conf/local.js
Normal file
3
core/lib/Thelia/Tests/Functionnal/casperjs/conf/local.js
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
//LOCAL = ton pc
|
||||||
|
var thelia2_base_url = 'http://www.thelia2.dev/index.php/';
|
||||||
|
casper.test.done(0);
|
||||||
3
core/lib/Thelia/Tests/Functionnal/casperjs/conf/uat.js
Normal file
3
core/lib/Thelia/Tests/Functionnal/casperjs/conf/uat.js
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
//UAT = Recette client
|
||||||
|
var copark_base_url = 'http://ws.copark.uat.openstudio.fr/';
|
||||||
|
casper.test.done(0);
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
casper.test.comment('Please edit 00_parameters.js to add your configuration');
|
||||||
|
|
||||||
|
var thelia2_login_admin_url = thelia2_base_url + 'admin/login';
|
||||||
|
|
||||||
|
|
||||||
|
//var findMyId = /([0-9]+)$/;
|
||||||
|
//var currentId;
|
||||||
|
|
||||||
|
casper.test.comment('Variables are set');
|
||||||
|
|
||||||
|
casper.test.done(0);
|
||||||
25
core/lib/Thelia/Tests/Functionnal/casperjs/exe/10_login.js
Normal file
25
core/lib/Thelia/Tests/Functionnal/casperjs/exe/10_login.js
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
casper.test.comment('Testing login');
|
||||||
|
|
||||||
|
casper.start(thelia2_login_admin_url, function() {
|
||||||
|
this.echo('\nLOGIN');
|
||||||
|
this.test.assertTitle('Welcome - Thelia Back Office', 'Web page title OK');
|
||||||
|
this.sendKeys('form[action*="checklogin"] input[name="thelia_admin_login[username]"]', 'thelia2');
|
||||||
|
this.sendKeys('form[action*="checklogin"] input[name="thelia_admin_login[password]"]', 'thelia2');
|
||||||
|
this.click('form[action*="checklogin"] input[type="submit"]');
|
||||||
|
});
|
||||||
|
|
||||||
|
casper.wait(1000, function() {
|
||||||
|
this.echo("\nWaiting....");
|
||||||
|
});
|
||||||
|
|
||||||
|
casper.then(function(){
|
||||||
|
this.echo('\nDASHBOARD');
|
||||||
|
console.log('Now on : ' + this.getCurrentUrl());
|
||||||
|
this.test.assertTitle('Back-office home - Thelia Back Office', 'Web page title OK');
|
||||||
|
this.test.assertSelectorHasText('#wrapper > div', ' This is the administration home page. Put some interesting statistics here, and display useful information :) ', 'Web page main content OK');
|
||||||
|
});
|
||||||
|
|
||||||
|
//RUN
|
||||||
|
casper.run(function() {
|
||||||
|
this.test.done();
|
||||||
|
});
|
||||||
26
core/lib/Thelia/Tests/Functionnal/casperjs/run.sh
Executable file
26
core/lib/Thelia/Tests/Functionnal/casperjs/run.sh
Executable file
@@ -0,0 +1,26 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# @author Guillaume MOREL
|
||||||
|
|
||||||
|
echo "Force dropping database. All data will be lost."
|
||||||
|
|
||||||
|
cd local/config/
|
||||||
|
|
||||||
|
echo -e "\n\e[01;34m[INFO] Building Models file\e[00m\n"
|
||||||
|
../../bin/propel build -v --output-dir=../../core/lib/
|
||||||
|
|
||||||
|
echo -e "\n\e[01;34m[INFO] Building SQL CREATE file\e[00m\n"
|
||||||
|
../../bin/propel sql:build -v --output-dir=../../install/
|
||||||
|
|
||||||
|
echo -e "\n\e[01;34m[INFO] Reloaded Thelia2 database\e[00m\n"
|
||||||
|
cd ../..
|
||||||
|
rm install/sqldb.map
|
||||||
|
php Thelia thelia:dev:reloadDB
|
||||||
|
|
||||||
|
echo -e "\n\e[01;34m[INFO] Installing fixtures\e[00m\n"
|
||||||
|
php install/faker.php
|
||||||
|
|
||||||
|
echo -e "\n\e[01;34m[INFO] Adding admin\e[00m\n"
|
||||||
|
php Thelia thelia:create-admin --login_name thelia2 --password thelia2 --last_name thelia2 --first_name thelia2
|
||||||
|
|
||||||
|
# casperjs test ./exe --pre=./conf/local.js --direct
|
||||||
|
|
||||||
4
core/lib/Thelia/Tests/Functionnal/casperjs/run_ci.sh
Executable file
4
core/lib/Thelia/Tests/Functionnal/casperjs/run_ci.sh
Executable file
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# @author Quentin Dufour
|
||||||
|
|
||||||
|
/usrcasperjs test ./exe --pre=./conf/dit.js --xunit=reports/report.xml
|
||||||
148
templates/admin/default/assets/js/coupon.js
Normal file
148
templates/admin/default/assets/js/coupon.js
Normal file
@@ -0,0 +1,148 @@
|
|||||||
|
$(function($){
|
||||||
|
|
||||||
|
// Clean array from deleteValue (undefined) keys
|
||||||
|
Array.prototype.clean = function(deleteValue) {
|
||||||
|
for (var i = 0; i < this.length; i++) {
|
||||||
|
if (this[i] == deleteValue) {
|
||||||
|
this.splice(i, 1);
|
||||||
|
i--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Remove 1 Rule then Save Rules AJAX
|
||||||
|
couponManager.removeRuleAjax = function(id) {
|
||||||
|
// Delete rule in temporary array
|
||||||
|
delete couponManager.rulesToSave[id];
|
||||||
|
couponManager.rulesToSave.clean(undefined);
|
||||||
|
|
||||||
|
// Save
|
||||||
|
couponManager.saveRuleAjax();
|
||||||
|
};
|
||||||
|
|
||||||
|
// Add 1 Rule / or update the temporary Rules array then Save Rules via AJAX
|
||||||
|
couponManager.addRuleAjax = function(id) {
|
||||||
|
console.log('addRuleAjax '+ id);
|
||||||
|
// If create
|
||||||
|
if(!id) {
|
||||||
|
console.log('pushing');
|
||||||
|
couponManager.rulesToSave.push(couponManager.ruleToSave);
|
||||||
|
} else { // else update
|
||||||
|
console.log('editing ' + id);
|
||||||
|
couponManager.rulesToSave[id] = couponManager.ruleToSave;
|
||||||
|
// reset edit mode to off
|
||||||
|
couponManager.ruleIdToUpdate = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save
|
||||||
|
couponManager.saveRuleAjax();
|
||||||
|
};
|
||||||
|
|
||||||
|
// Set rule inputs to allow editing
|
||||||
|
couponManager.updateRuleAjax = function(id) {
|
||||||
|
couponManager.ruleToUpdate = 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];
|
||||||
|
|
||||||
|
// Set the rule selector
|
||||||
|
$("#category-rule option").filter(function() {
|
||||||
|
return $(this).val() == couponManager.ruleToUpdate.serviceId;
|
||||||
|
}).prop('selected', true);
|
||||||
|
|
||||||
|
// Force rule input refresh
|
||||||
|
couponManager.loadRuleInputs(couponManager.ruleToUpdate.serviceId, function() {
|
||||||
|
couponManager.fillInRuleInputs();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// Fill in rule inputs
|
||||||
|
couponManager.fillInRuleInputs = function() {
|
||||||
|
console.log('fillInRuleInputs with');
|
||||||
|
console.log(couponManager.ruleToUpdate);
|
||||||
|
var operatorId = null;
|
||||||
|
var valueId = null;
|
||||||
|
var idName = null;
|
||||||
|
|
||||||
|
for (idName in couponManager.ruleToUpdate.operators) {
|
||||||
|
// Setting idName operator select
|
||||||
|
operatorId = idName + '-operator';
|
||||||
|
$('#' + operatorId).val(couponManager.ruleToUpdate.operators[idName]);
|
||||||
|
|
||||||
|
valueId = idName + '-value';
|
||||||
|
// Setting idName value input
|
||||||
|
$('#' + valueId).val(couponManager.ruleToUpdate.values[idName]);
|
||||||
|
}
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Save rules on click
|
||||||
|
couponManager.onClickSaveRule = function() {
|
||||||
|
$('#constraint-save-btn').on('click', function () {
|
||||||
|
couponManager.addRuleAjax(couponManager.ruleIdToUpdate);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
couponManager.onClickSaveRule();
|
||||||
|
|
||||||
|
// Remove rule on click
|
||||||
|
couponManager.onClickDeleteRule = function() {
|
||||||
|
$('.constraint-delete-btn').on('click', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
var $this = $(this);
|
||||||
|
couponManager.removeRuleAjax($this.attr('data-int'));
|
||||||
|
});
|
||||||
|
};
|
||||||
|
couponManager.onClickDeleteRule();
|
||||||
|
|
||||||
|
// Update rule on click
|
||||||
|
couponManager.onClickUpdateRule = function() {
|
||||||
|
$('.constraint-update-btn').on('click', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
var $this = $(this);
|
||||||
|
couponManager.updateRuleAjax($this.attr('data-int'));
|
||||||
|
|
||||||
|
// Hide row being updated
|
||||||
|
$this.parent().parent().remove();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
couponManager.onClickUpdateRule();
|
||||||
|
|
||||||
|
// Reload effect inputs when changing effect
|
||||||
|
couponManager.onEffectChange = function() {
|
||||||
|
$('#effect').on('change', function () {
|
||||||
|
var optionSelected = $("option:selected", this);
|
||||||
|
$('#effectToolTip').html(optionSelected.attr("data-description"));
|
||||||
|
});
|
||||||
|
};
|
||||||
|
couponManager.onEffectChange();
|
||||||
|
|
||||||
|
// Reload rule inputs when changing effect
|
||||||
|
couponManager.onRuleChange = function() {
|
||||||
|
$('#category-rule').on('change', function () {
|
||||||
|
couponManager.loadRuleInputs($(this).val(), function(ruleToSave) {});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
couponManager.onRuleChange();
|
||||||
|
|
||||||
|
// Fill in ready to be saved rule array
|
||||||
|
// var onInputsChange = function()
|
||||||
|
// In AJAX response
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
// Rule to save
|
||||||
|
|
||||||
|
var couponManager = {};
|
||||||
|
couponManager.ruleToSave = {};
|
||||||
|
couponManager.ruleIdToUpdate = false;
|
||||||
@@ -37,24 +37,19 @@
|
|||||||
<script src="{$asset_url}"></script>
|
<script src="{$asset_url}"></script>
|
||||||
{/javascripts}
|
{/javascripts}
|
||||||
|
|
||||||
|
{javascripts file='assets/js/coupon.js'}
|
||||||
|
<script src="{$asset_url}"></script>
|
||||||
|
{/javascripts}
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
$(function($){
|
$(function($){
|
||||||
miniBrowser(0, '/test_to_remove/datas_coupon_edit.json');
|
miniBrowser(0, '/test_to_remove/datas_coupon_edit.json');
|
||||||
|
|
||||||
Array.prototype.clean = function(deleteValue) {
|
|
||||||
for (var i = 0; i < this.length; i++) {
|
|
||||||
if (this[i] == deleteValue) {
|
|
||||||
this.splice(i, 1);
|
|
||||||
i--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Init Rules
|
// Init Rules
|
||||||
var initRules = function() {
|
couponManager.initRules = function() {
|
||||||
var rules = [];
|
var rules = [];
|
||||||
{foreach from=$rulesObject key=k item=rule}
|
{foreach from=$rulesObject key=k item=rule}
|
||||||
|
// Init rule
|
||||||
var rule = {};
|
var rule = {};
|
||||||
rule['serviceId'] = '{$rule.serviceId nofilter}';
|
rule['serviceId'] = '{$rule.serviceId nofilter}';
|
||||||
rule['operators'] = {};
|
rule['operators'] = {};
|
||||||
@@ -64,19 +59,24 @@
|
|||||||
rule['operators']['{$input nofilter}'] = '{$operator nofilter}';
|
rule['operators']['{$input nofilter}'] = '{$operator nofilter}';
|
||||||
rule['values']['{$input nofilter}'] = '{$rule.validators.setValues[$input] nofilter}';
|
rule['values']['{$input nofilter}'] = '{$rule.validators.setValues[$input] nofilter}';
|
||||||
{/foreach}
|
{/foreach}
|
||||||
|
|
||||||
|
// Add rule
|
||||||
rules.push(rule);
|
rules.push(rule);
|
||||||
{/foreach}
|
{/foreach}
|
||||||
|
|
||||||
return rules;
|
return rules;
|
||||||
}
|
};
|
||||||
|
|
||||||
// Save Rules AJAX
|
// Save Rules AJAX
|
||||||
var saveRuleAjax = function() {
|
couponManager.saveRuleAjax = function() {
|
||||||
|
$('#constraint-add-operators-values').html('<div class="loading" ></div>');
|
||||||
|
console.log('about to save');
|
||||||
|
console.log(couponManager.rulesToSave);
|
||||||
var $url = '{$urlAjaxUpdateRules}';
|
var $url = '{$urlAjaxUpdateRules}';
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "POST",
|
type: "POST",
|
||||||
url: $url,
|
url: $url,
|
||||||
data: {literal}{{/literal}rules:JSON.stringify(rulesToSave){literal}}{/literal},
|
data: {literal}{{/literal}rules:JSON.stringify(couponManager.rulesToSave){literal}}{/literal},
|
||||||
statusCode: {
|
statusCode: {
|
||||||
404: function() {
|
404: function() {
|
||||||
$('#constraint-add-operators-values').html(
|
$('#constraint-add-operators-values').html(
|
||||||
@@ -87,72 +87,13 @@
|
|||||||
}).done(function(data) {
|
}).done(function(data) {
|
||||||
$('#constraint-list').html(data);
|
$('#constraint-list').html(data);
|
||||||
$('#constraint-add-operators-values').html('');
|
$('#constraint-add-operators-values').html('');
|
||||||
|
couponManager.onClickUpdateRule();
|
||||||
|
couponManager.onClickDeleteRule();
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
// Remove 1 Rule then Save Rules AJAX
|
|
||||||
var removeRuleAjax = function(id) {
|
|
||||||
// Delete rule in temporary array
|
|
||||||
delete rulesToSave[id];
|
|
||||||
rulesToSave.clean(undefined);
|
|
||||||
|
|
||||||
// Save
|
|
||||||
saveRuleAjax();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add 1 Rule / or update the temporary Rules array then Save Rules via AJAX
|
|
||||||
var addRuleAjax = function(id) {
|
|
||||||
// If update
|
|
||||||
if(typeof id === 'number' && id % 1 == 0) {
|
|
||||||
rulesToSave[id] = ruleToSave;
|
|
||||||
} else { // If create
|
|
||||||
rulesToSave.push(ruleToSave);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Save
|
|
||||||
saveRuleAjax();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set rule inputs to allow editing
|
|
||||||
var updateRuleAjax = function(id) {
|
|
||||||
ruleToSave = rulesToSave[id];
|
|
||||||
var ruleToUpdate = ruleToSave;
|
|
||||||
|
|
||||||
// Deleting this rule, we will reset it
|
|
||||||
delete rulesToSave[id];
|
|
||||||
|
|
||||||
// Set the rule seletor
|
|
||||||
$("#category-rule option").filter(function() {
|
|
||||||
return $(this).val() == ruleToSave.serviceId;
|
|
||||||
}).prop('selected', true);
|
|
||||||
|
|
||||||
// Force rule input refresh
|
|
||||||
loadRuleInputs(ruleToSave.serviceId, ruleToUpdate, function(ruleToUpdate) {
|
|
||||||
fillInRuleInputs(ruleToUpdate);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fill in rule inputs
|
|
||||||
var fillInRuleInputs = function(ruleToUpdate) {
|
|
||||||
var valueId = null;
|
|
||||||
var operatorId = null;
|
|
||||||
|
|
||||||
for (idName in ruleToUpdate.operators) {
|
|
||||||
// Setting idName operator input
|
|
||||||
operatorId = idName + '-operator';
|
|
||||||
$('#' + operatorId).val(ruleToUpdate.operators[idName]);
|
|
||||||
// Setting idName value input
|
|
||||||
valueId = idName + '-value';
|
|
||||||
$('#' + valueId).val(ruleToUpdate.values[idName]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Reload rule inputs
|
// Reload rule inputs
|
||||||
var loadRuleInputs = function(ruleId, ruleToSave, callBack) {
|
couponManager.loadRuleInputs = function(ruleId, callBack) {
|
||||||
$('#constraint-add-operators-values').html('<div class="loading" ></div>');
|
$('#constraint-add-operators-values').html('<div class="loading" ></div>');
|
||||||
var url = "{$urlAjaxGetRuleInput}";
|
var url = "{$urlAjaxGetRuleInput}";
|
||||||
url = url.replace('ruleId', ruleId)
|
url = url.replace('ruleId', ruleId)
|
||||||
@@ -167,71 +108,13 @@
|
|||||||
}
|
}
|
||||||
}).done(function(data) {
|
}).done(function(data) {
|
||||||
$('#constraint-add-operators-values').html(data);
|
$('#constraint-add-operators-values').html(data);
|
||||||
return callBack(ruleToSave);
|
|
||||||
|
return callBack();
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
|
|
||||||
// Save rules on click
|
|
||||||
var onClickSaveRule = function() {
|
|
||||||
$('#constraint-save-btn').on('click', function (e) {
|
|
||||||
addRuleAjax();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
onClickSaveRule();
|
|
||||||
|
|
||||||
// Remove rule on click
|
|
||||||
var onClickDeleteRule = function() {
|
|
||||||
$('.constraint-delete-btn').on('click', function (e) {
|
|
||||||
e.preventDefault();
|
|
||||||
var $this = $(this);
|
|
||||||
removeRuleAjax($this.attr('data-int'));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
onClickDeleteRule();
|
|
||||||
|
|
||||||
// Update rule on click
|
|
||||||
var onClickUpdateRule = function() {
|
|
||||||
$('.constraint-update-btn').on('click', function (e) {
|
|
||||||
e.preventDefault();
|
|
||||||
var $this = $(this);
|
|
||||||
updateRuleAjax($this.attr('data-int'));
|
|
||||||
|
|
||||||
// Hide row being updated
|
|
||||||
$this.parent().parent().remove();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
onClickUpdateRule();
|
|
||||||
|
|
||||||
// Reload effect inputs when changing effect
|
|
||||||
var onEffectChange = function() {
|
|
||||||
$('#effect').on('change', function (e) {
|
|
||||||
var optionSelected = $("option:selected", this);
|
|
||||||
$('#effectToolTip').html(optionSelected.attr("data-description"));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
onEffectChange();
|
|
||||||
|
|
||||||
// Reload rule inputs when changing effect
|
|
||||||
var onRuleChange = function() {
|
|
||||||
$('#category-rule').on('change', function (e) {
|
|
||||||
loadRuleInputs($(this).val(), null, function(ruleToSave) {literal}{}{/literal});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
onRuleChange();
|
|
||||||
|
|
||||||
// Fill in ready to be saved rule array
|
|
||||||
// var onInputsChange = function()
|
|
||||||
// In AJAX response
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Rules which will be saved
|
// Rules which will be saved
|
||||||
var rulesToSave = initRules();
|
couponManager.rulesToSave = couponManager.initRules();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Rule to save
|
|
||||||
var ruleToSave = {literal}{}{/literal};
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
{/block}
|
{/block}
|
||||||
|
|||||||
@@ -72,29 +72,31 @@
|
|||||||
<script>
|
<script>
|
||||||
|
|
||||||
// Init Rules to set
|
// Init Rules to set
|
||||||
ruleToSave['serviceId'] = '{$ruleId}';
|
couponManager.ruleToSave['serviceId'] = '{$ruleId}';
|
||||||
ruleToSave['operators'] = {literal}{}{/literal};
|
couponManager.ruleToSave['operators'] = {literal}{}{/literal};
|
||||||
ruleToSave['values'] = {literal}{}{/literal};
|
couponManager.ruleToSave['values'] = {literal}{}{/literal};
|
||||||
{foreach from=$inputs.inputs key=name item=input}
|
{foreach from=$inputs.inputs key=name item=input}
|
||||||
ruleToSave['operators']['{$name nofilter}'] = '{foreach from=$inputs.inputs[$name].availableOperators key=keyOperator item=valueOperator name=operators}{if $smarty.foreach.operators.first}{$keyOperator nofilter}{/if}{/foreach}';
|
couponManager.ruleToSave['operators']['{$name nofilter}'] = '{foreach from=$inputs.inputs[$name].availableOperators key=keyOperator item=valueOperator name=operators}{if $smarty.foreach.operators.first}{$keyOperator nofilter}{/if}{/foreach}';
|
||||||
ruleToSave['values']['{$name nofilter}'] = '{if count($inputs.inputs[$name].availableValues) != 0}{foreach from=$inputs.inputs[$name].availableValues key=keyValue item=valueValue name=values}{if $smarty.foreach.values.first}{$keyValue nofilter}{/if}{/foreach}{else}to set{/if}';
|
couponManager.ruleToSave['values']['{$name nofilter}'] = '{if count($inputs.inputs[$name].availableValues) != 0}{foreach from=$inputs.inputs[$name].availableValues key=keyValue item=valueValue name=values}{if $smarty.foreach.values.first}{$keyValue nofilter}{/if}{/foreach}{else}to set{/if}';
|
||||||
{/foreach}
|
{/foreach}
|
||||||
|
|
||||||
|
|
||||||
// Fill in ready to be saved rule array
|
// Fill in ready to be saved rule array
|
||||||
var onInputsChange = function() {literal}{{/literal}
|
couponManager.onInputsChange = function() {literal}{{/literal}
|
||||||
{foreach from=$inputs.inputs key=name item=input}
|
{foreach from=$inputs.inputs key=name item=input}
|
||||||
// Operator selector
|
// Operator selector
|
||||||
$('#{$name}-operator').change(function (e) {
|
$('#{$name}-operator').change(function (e) {
|
||||||
|
console.log('changin operator');
|
||||||
var $this = $(this);
|
var $this = $(this);
|
||||||
ruleToSave['operators']['{$name nofilter}'] = $this.val();
|
couponManager.ruleToSave['operators']['{$name nofilter}'] = $this.val();
|
||||||
});
|
});
|
||||||
// Value input
|
// Value input
|
||||||
$('#{$name}-value').change(function (e) {
|
$('#{$name}-value').change(function (e) {
|
||||||
|
console.log('changin value');
|
||||||
var $this = $(this);
|
var $this = $(this);
|
||||||
ruleToSave['values']['{$name nofilter}'] = $this.val();
|
couponManager.ruleToSave['values']['{$name nofilter}'] = $this.val();
|
||||||
});
|
});
|
||||||
{/foreach}
|
{/foreach}
|
||||||
{literal}}{/literal}
|
{literal}}{/literal}
|
||||||
onInputsChange();
|
couponManager.onInputsChange();
|
||||||
</script>
|
</script>
|
||||||
Reference in New Issue
Block a user