Coupon : Condition module refactor

Less crappy unmaintainable javascript
More logic in extendable php
This commit is contained in:
gmorel
2014-01-05 00:00:15 +01:00
parent 49782765b4
commit e606a6f8ce
31 changed files with 1086 additions and 612 deletions

View File

@@ -36,8 +36,6 @@
<script src="{$asset_url}"></script>
{/javascripts}
<script>
</script>
{javascripts file='assets/js/coupon.js'}
<script src="{$asset_url}"></script>
{/javascripts}
@@ -62,94 +60,19 @@
});
$(function($){
// miniBrowser(0, '/test_to_remove/datas_coupon_edit.json');
// Url alowing to get coupon inputs
$.couponManager.urlAjaxAdminCouponDrawInputs = "{$urlAjaxAdminCouponDrawInputs}";
$.couponManager.urlAjaxSaveConditions = '{$urlAjaxSaveConditions}';
$.couponManager.urlAjaxDeleteConditions = '{$urlAjaxDeleteConditions}';
$.couponManager.urlAjaxGetConditionSummaries = '{$urlAjaxGetConditionSummaries}';
$.couponManager.urlAjaxAdminCouponDrawInputs = '{$urlAjaxAdminCouponDrawInputs}';
$.couponManager.urlAjaxGetConditionInputFromServiceId = '{$urlAjaxGetConditionInputFromServiceId}';
$.couponManager.urlAjaxGetConditionInputFromConditionInterface = '{$urlAjaxGetConditionInputFromConditionInterface}';
$.couponManager.intlPleaseRetry = '{intl l='Please retry'}';
// Init Conditions
$.couponManager.initConditions = function() {
var conditions = [];
{foreach from=$conditionsObject key=k item=condition}
// Init condition
var condition = {};
condition['serviceId'] = '{$condition.serviceId nofilter}';
condition['operators'] = {};
condition['values'] = {};
{foreach from=$condition.validators.setOperators key=input item=operator}
condition['operators']['{$input nofilter}'] = '{$operator nofilter}';
condition['values']['{$input nofilter}'] = '{$condition.validators.setValues[$input] nofilter}';
{/foreach}
// Add condition
conditions.push(condition);
{/foreach}
return conditions;
};
// Save Conditions AJAX
$.couponManager.saveConditionAjax = function() {
$('#condition-add-operators-values').html('<div class="loading" ></div>');
var $url = '{$urlAjaxUpdateConditions}';
$.ajax({
type: "POST",
url: $url,
data: {literal}{{/literal}conditions:JSON.stringify($.couponManager.conditionsToSave){literal}}{/literal},
statusCode: {
404: function() {
$('#condition-add-operators-values').html(
'{intl l='Please retry'}'
);
}
}
}).done(function(data) {
$('#condition-list').html(data);
$('#condition-add-operators-values').html('');
// Set the condition selector
$("#category-condition option").filter(function() {
return $(this).val() == 'thelia.condition.match_for_everyone';
}).prop('selected', true);
$.couponManager.onClickUpdateCondition();
$.couponManager.onClickDeleteCondition();
});
};
// Reload condition inputs
$.couponManager.loadConditionInputs = function(conditionId, callBack) {
$('#condition-add-operators-values').html('<div class="loading" ></div>');
var url = "{$urlAjaxGetConditionInput}";
url = url.replace('conditionId', conditionId)
$.ajax({
url: url,
statusCode: {
404: function() {
$('#condition-add-operators-values').html(
'{intl l='Please select another condition'}'
);
}
}
}).done(function(data) {
$('#condition-add-operators-values').html(data);
$.couponManager.conditionToSave.serviceId = conditionId;
if (conditionId == -1) {
// Placeholder can't be saved
$('#condition-save-btn').hide();
} else {
$('#condition-save-btn').show();
}
return callBack();
});
};
// Conditions which will be saved
$.couponManager.conditionsToSave = $.couponManager.initConditions();
$.couponManager.intlPleaseSelectAnotherCondition = '{intl l='Please select another condition'}';
$.couponManager.intlDoYouReallyWantToSetCouponAvailableForEveryOne = '{intl l='Do you really want to set this coupon available to everyone ?'}';
$('#condition-save-btn').hide();
});
</script>
{/block}