248 lines
4.5 KiB
JavaScript
248 lines
4.5 KiB
JavaScript
(function($, undefined){
|
|
|
|
/**
|
|
* mid
|
|
*
|
|
* Calculates the model ID for a field type
|
|
*
|
|
* @date 15/12/17
|
|
* @since 5.6.5
|
|
*
|
|
* @param string type
|
|
* @return string
|
|
*/
|
|
|
|
var modelId = function( type ) {
|
|
return acf.strPascalCase( type || '' ) + 'FieldSetting';
|
|
};
|
|
|
|
/**
|
|
* registerFieldType
|
|
*
|
|
* description
|
|
*
|
|
* @date 14/12/17
|
|
* @since 5.6.5
|
|
*
|
|
* @param type $var Description. Default.
|
|
* @return type Description.
|
|
*/
|
|
|
|
acf.registerFieldSetting = function( model ){
|
|
var proto = model.prototype;
|
|
var mid = modelId(proto.type + ' ' + proto.name);
|
|
this.models[ mid ] = model;
|
|
};
|
|
|
|
/**
|
|
* newField
|
|
*
|
|
* description
|
|
*
|
|
* @date 14/12/17
|
|
* @since 5.6.5
|
|
*
|
|
* @param type $var Description. Default.
|
|
* @return type Description.
|
|
*/
|
|
|
|
acf.newFieldSetting = function( field ){
|
|
|
|
// vars
|
|
var type = field.get('setting') || '';
|
|
var name = field.get('name') || '';
|
|
var mid = modelId( type + ' ' + name );
|
|
var model = acf.models[ mid ] || null;
|
|
|
|
// bail ealry if no setting
|
|
if( model === null ) return false;
|
|
|
|
// instantiate
|
|
var setting = new model( field );
|
|
|
|
// return
|
|
return setting;
|
|
};
|
|
|
|
/**
|
|
* acf.getFieldSetting
|
|
*
|
|
* description
|
|
*
|
|
* @date 19/4/18
|
|
* @since 5.6.9
|
|
*
|
|
* @param type $var Description. Default.
|
|
* @return type Description.
|
|
*/
|
|
|
|
acf.getFieldSetting = function( field ) {
|
|
|
|
// allow jQuery
|
|
if( field instanceof jQuery ) {
|
|
field = acf.getField(field);
|
|
}
|
|
|
|
// return
|
|
return field.setting;
|
|
};
|
|
|
|
/**
|
|
* settingsManager
|
|
*
|
|
* description
|
|
*
|
|
* @date 6/1/18
|
|
* @since 5.6.5
|
|
*
|
|
* @param type $var Description. Default.
|
|
* @return type Description.
|
|
*/
|
|
|
|
var settingsManager = new acf.Model({
|
|
actions: {
|
|
'new_field': 'onNewField'
|
|
},
|
|
onNewField: function( field ){
|
|
field.setting = acf.newFieldSetting( field );
|
|
}
|
|
});
|
|
|
|
/**
|
|
* acf.FieldSetting
|
|
*
|
|
* description
|
|
*
|
|
* @date 6/1/18
|
|
* @since 5.6.5
|
|
*
|
|
* @param type $var Description. Default.
|
|
* @return type Description.
|
|
*/
|
|
|
|
acf.FieldSetting = acf.Model.extend({
|
|
|
|
field: false,
|
|
type: '',
|
|
name: '',
|
|
wait: 'ready',
|
|
eventScope: '.acf-field',
|
|
|
|
events: {
|
|
'change': 'render'
|
|
},
|
|
|
|
setup: function( field ){
|
|
|
|
// vars
|
|
var $field = field.$el;
|
|
|
|
// set props
|
|
this.$el = $field;
|
|
this.field = field;
|
|
this.$fieldObject = $field.closest('.acf-field-object');
|
|
this.fieldObject = acf.getFieldObject( this.$fieldObject );
|
|
|
|
// inherit data
|
|
$.extend(this.data, field.data);
|
|
},
|
|
|
|
initialize: function(){
|
|
this.render();
|
|
},
|
|
|
|
render: function(){
|
|
// do nothing
|
|
}
|
|
});
|
|
|
|
/*
|
|
* Date Picker
|
|
*
|
|
* This field type requires some extra logic for its settings
|
|
*
|
|
* @type function
|
|
* @date 24/10/13
|
|
* @since 5.0.0
|
|
*
|
|
* @param n/a
|
|
* @return n/a
|
|
*/
|
|
|
|
var DisplayFormatFieldSetting = acf.FieldSetting.extend({
|
|
type: '',
|
|
name: '',
|
|
render: function(){
|
|
var $input = this.$('input[type="radio"]:checked');
|
|
if( $input.val() != 'other' ) {
|
|
this.$('input[type="text"]').val( $input.val() );
|
|
}
|
|
}
|
|
});
|
|
|
|
var DatePickerDisplayFormatFieldSetting = DisplayFormatFieldSetting.extend({
|
|
type: 'date_picker',
|
|
name: 'display_format'
|
|
});
|
|
|
|
var DatePickerReturnFormatFieldSetting = DisplayFormatFieldSetting.extend({
|
|
type: 'date_picker',
|
|
name: 'return_format'
|
|
});
|
|
|
|
acf.registerFieldSetting( DatePickerDisplayFormatFieldSetting );
|
|
acf.registerFieldSetting( DatePickerReturnFormatFieldSetting );
|
|
|
|
/*
|
|
* Date Time Picker
|
|
*
|
|
* This field type requires some extra logic for its settings
|
|
*
|
|
* @type function
|
|
* @date 24/10/13
|
|
* @since 5.0.0
|
|
*
|
|
* @param n/a
|
|
* @return n/a
|
|
*/
|
|
|
|
var DateTimePickerDisplayFormatFieldSetting = DisplayFormatFieldSetting.extend({
|
|
type: 'date_time_picker',
|
|
name: 'display_format'
|
|
});
|
|
|
|
var DateTimePickerReturnFormatFieldSetting = DisplayFormatFieldSetting.extend({
|
|
type: 'date_time_picker',
|
|
name: 'return_format'
|
|
});
|
|
|
|
acf.registerFieldSetting( DateTimePickerDisplayFormatFieldSetting );
|
|
acf.registerFieldSetting( DateTimePickerReturnFormatFieldSetting );
|
|
|
|
/*
|
|
* Time Picker
|
|
*
|
|
* This field type requires some extra logic for its settings
|
|
*
|
|
* @type function
|
|
* @date 24/10/13
|
|
* @since 5.0.0
|
|
*
|
|
* @param n/a
|
|
* @return n/a
|
|
*/
|
|
|
|
var TimePickerDisplayFormatFieldSetting = DisplayFormatFieldSetting.extend({
|
|
type: 'time_picker',
|
|
name: 'display_format'
|
|
});
|
|
|
|
var TimePickerReturnFormatFieldSetting = DisplayFormatFieldSetting.extend({
|
|
name: 'time_picker',
|
|
name: 'return_format'
|
|
});
|
|
|
|
acf.registerFieldSetting( TimePickerDisplayFormatFieldSetting );
|
|
acf.registerFieldSetting( TimePickerReturnFormatFieldSetting );
|
|
|
|
})(jQuery); |