236 lines
7.8 KiB
HTML
Executable File
236 lines
7.8 KiB
HTML
Executable File
{extends file="admin-layout.tpl"}
|
|
{block name="check-permissions"}admin.coupon.update{/block}
|
|
{block name="page-title"}{intl l='Update coupon'}{/block}
|
|
|
|
{block name="main-content"}
|
|
<section id="wrapper" class="container">
|
|
|
|
<nav>
|
|
<ul class="breadcrumb">
|
|
{include file="includes/coupon_breadcrumb.html"}
|
|
</ul>
|
|
</nav>
|
|
|
|
<div class="page-header">
|
|
<h1>Coupons : <small>Update a coupon</small></h1>
|
|
</div>
|
|
|
|
{form name="thelia.admin.coupon.creation"}
|
|
{include file='coupon/form.html' formAction={url path={$formAction}} form=$form noRules=false}
|
|
{/form}
|
|
|
|
</section> <!-- #wrapper -->
|
|
{/block}
|
|
|
|
{include file='includes/confirmation-modal.html'}
|
|
|
|
{block name="javascript-initialization"}
|
|
{javascripts file='assets/bootstrap-datepicker/js/bootstrap-datepicker.js'}
|
|
<script src="{$asset_url}"></script>
|
|
{/javascripts}
|
|
|
|
{javascripts file='assets/js/main.js'}
|
|
<script src="{$asset_url}"></script>
|
|
{/javascripts}
|
|
|
|
{javascripts file='assets/js/json2.js'}
|
|
<script src="{$asset_url}"></script>
|
|
{/javascripts}
|
|
|
|
<script>
|
|
$(function($){
|
|
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
|
|
var initRules = function() {
|
|
var rules = [];
|
|
{foreach from=$rulesObject key=k item=rule}
|
|
var rule = {};
|
|
rule['serviceId'] = '{$rule.serviceId nofilter}';
|
|
rule['operators'] = {};
|
|
rule['values'] = {};
|
|
|
|
{foreach from=$rule.validators.setOperators key=input item=operator}
|
|
rule['operators']['{$input nofilter}'] = '{$operator nofilter}';
|
|
rule['values']['{$input nofilter}'] = '{$rule.validators.setValues[$input] nofilter}';
|
|
{/foreach}
|
|
rules.push(rule);
|
|
{/foreach}
|
|
|
|
return rules;
|
|
}
|
|
|
|
// Save Rules AJAX
|
|
var saveRuleAjax = function() {
|
|
console.log('rulesToSave');
|
|
console.log(rulesToSave);
|
|
var $url = '{$urlAjaxUpdateRules}';
|
|
$.ajax({
|
|
type: "POST",
|
|
url: $url,
|
|
data: {literal}{{/literal}rules:JSON.stringify(rulesToSave){literal}}{/literal},
|
|
statusCode: {
|
|
404: function() {
|
|
$('#constraint-add-operators-values').html(
|
|
'{intl l='Please retry'}'
|
|
);
|
|
}
|
|
}
|
|
}).done(function(data) {
|
|
$('#constraint-list').html(data);
|
|
$('#constraint-add-operators-values').html('');
|
|
});
|
|
}
|
|
|
|
// 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(typeof id === 'number' && id % 1 == 0) {
|
|
rulesToSave[id] = ruleToSave;
|
|
} else {
|
|
rulesToSave.push(ruleToSave);
|
|
}
|
|
|
|
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
|
|
var loadRuleInputs = function(ruleId, ruleToSave, callBack) {
|
|
$('#constraint-add-operators-values').html('<div class="loading" ></div>');
|
|
var url = "{$urlAjaxGetRuleInput}";
|
|
url = url.replace('ruleId', ruleId)
|
|
$.ajax({
|
|
url: url,
|
|
statusCode: {
|
|
404: function() {
|
|
$('#constraint-add-operators-values').html(
|
|
'{intl l='Please select another rule'}'
|
|
);
|
|
}
|
|
}
|
|
}).done(function(data) {
|
|
$('#constraint-add-operators-values').html(data);
|
|
return callBack(ruleToSave);
|
|
});
|
|
}
|
|
|
|
|
|
// 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();
|
|
|
|
// Remove rule on click
|
|
var onClickUpdateRule = function() {
|
|
$('.constraint-update-btn').on('click', function (e) {
|
|
e.preventDefault();
|
|
var $this = $(this);
|
|
updateRuleAjax($this.attr('data-int'));
|
|
});
|
|
}
|
|
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) {});
|
|
});
|
|
}
|
|
onRuleChange();
|
|
|
|
|
|
|
|
|
|
// Rule to save
|
|
var ruleToSave = {literal}{}{/literal};
|
|
// Rules which will be saved
|
|
var rulesToSave = initRules();
|
|
});
|
|
|
|
|
|
|
|
</script>
|
|
{/block}
|