Sync plugins from current page
Signed-off-by: Adrian Nöthlich <git@promasu.tech>
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
(function($, undefined){
|
||||
|
||||
/**
|
||||
* locationManager
|
||||
*
|
||||
* Field group location rules functionality
|
||||
*
|
||||
* @date 15/12/17
|
||||
* @since 5.7.0
|
||||
*
|
||||
* @param void
|
||||
* @return void
|
||||
*/
|
||||
|
||||
var locationManager = new acf.Model({
|
||||
|
||||
id: 'locationManager',
|
||||
wait: 'ready',
|
||||
|
||||
events: {
|
||||
'click .add-location-rule': 'onClickAddRule',
|
||||
'click .add-location-group': 'onClickAddGroup',
|
||||
'click .remove-location-rule': 'onClickRemoveRule',
|
||||
'change .refresh-location-rule': 'onChangeRemoveRule'
|
||||
},
|
||||
|
||||
initialize: function(){
|
||||
this.$el = $('#acf-field-group-locations');
|
||||
},
|
||||
|
||||
onClickAddRule: function( e, $el ){
|
||||
this.addRule( $el.closest('tr') );
|
||||
},
|
||||
|
||||
onClickRemoveRule: function( e, $el ){
|
||||
this.removeRule( $el.closest('tr') );
|
||||
},
|
||||
|
||||
onChangeRemoveRule: function( e, $el ){
|
||||
this.changeRule( $el.closest('tr') );
|
||||
},
|
||||
|
||||
onClickAddGroup: function( e, $el ){
|
||||
this.addGroup();
|
||||
},
|
||||
|
||||
addRule: function( $tr ){
|
||||
acf.duplicate( $tr );
|
||||
},
|
||||
|
||||
removeRule: function( $tr ){
|
||||
if( $tr.siblings('tr').length == 0 ) {
|
||||
$tr.closest('.rule-group').remove();
|
||||
} else {
|
||||
$tr.remove();
|
||||
}
|
||||
},
|
||||
|
||||
changeRule: function( $rule ){
|
||||
|
||||
// vars
|
||||
var $group = $rule.closest('.rule-group');
|
||||
var prefix = $rule.find('td.param select').attr('name').replace('[param]', '');
|
||||
|
||||
// ajaxdata
|
||||
var ajaxdata = {};
|
||||
ajaxdata.action = 'acf/field_group/render_location_rule';
|
||||
ajaxdata.rule = acf.serialize( $rule, prefix );
|
||||
ajaxdata.rule.id = $rule.data('id');
|
||||
ajaxdata.rule.group = $group.data('id');
|
||||
|
||||
// temp disable
|
||||
acf.disable( $rule.find('td.value') );
|
||||
|
||||
// ajax
|
||||
$.ajax({
|
||||
url: acf.get('ajaxurl'),
|
||||
data: acf.prepareForAjax(ajaxdata),
|
||||
type: 'post',
|
||||
dataType: 'html',
|
||||
success: function( html ){
|
||||
if( !html ) return;
|
||||
$rule.replaceWith( html );
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
addGroup: function(){
|
||||
|
||||
// vars
|
||||
var $group = this.$('.rule-group:last');
|
||||
|
||||
// duplicate
|
||||
$group2 = acf.duplicate( $group );
|
||||
|
||||
// update h4
|
||||
$group2.find('h4').text( acf.__('or') );
|
||||
|
||||
// remove all tr's except the first one
|
||||
$group2.find('tr').not(':first').remove();
|
||||
}
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
Reference in New Issue
Block a user