name = 'rgba_color';
/*
* label (string) Multiple words, can include spaces, visible when selecting a field type
*/
$this->label = __('RGBA Color', 'advanced-custom-fields-rgba-color');
/*
* category (string) basic | content | choice | relational | jquery | layout | CUSTOM GROUP NAME
*/
$this->category = 'choice';
/*
* defaults (array) Array of default settings which are merged into the field object. These are used later in settings
*/
$this->defaults = array(
'rgba' =>'',
'return_value' => 0,
'ext_value' => array(),
);
/*
* l10n (array) Array of strings that are used in JavaScript. This allows JS strings to be translated in PHP and loaded via:
* var message = acf._e('rgba_color', 'error');
*/
$this->l10n = array(
'error' => __('Error! Please enter a higher value', 'advanced-custom-fields-rgba-color'),
);
// do not delete!
parent::__construct();
}
/*
* render_field_settings()
*
* Create extra settings for your field. These are visible when editing a field
*
* @type action
* @since 3.6
* @date 23/01/13
*
* @param $field (array) the $field being edited
* @return n/a
*/
function render_field_settings( $field ) {
/*
* acf_render_field_setting
*
* This function will create a setting for your field. Simply pass the $field parameter and an array of field settings.
* The array of settings does not require a `value` or `prefix`; These settings are found from the $field array.
*
* More than one setting can be added by copy/paste the above code.
* Please note that you must also have a matching $defaults value for the field name (font_size)
*/
acf_render_field_setting( $field, array(
'label' => __('RGBA Color','advanced-custom-fields-rgba-color'),
'instructions' => __('Following this methods for default value: rgba(red, green, blue, alpha)','advanced-custom-fields-rgba-color'),
'type' => 'text',
'name' => 'rgba',
));
acf_render_field_setting( $field, array(
'label' => __('Return Value ','advanced-custom-fields-rgba-color'),
'type' => 'radio',
'name' => 'return_value',
'layout' => 'horizontal',
'choices' => array(
1 => __('hex and opacity', 'return_value'),
0 => __('css rgba', 'return_value'),
)
));
}
/*
* render_field()
*
* Create the HTML interface for your field
*
* @param $field (array) the $field being rendered
*
* @type action
* @since 3.6
* @date 23/01/13
*
* @param $field (array) the $field being edited
* @return n/a
*/
function render_field( $field ) {
// add empty value (allows '' to be selected)
if( empty($field['value']) ){
if ($field['rgba']) {
if ($field['return_value']) {
$rgba = sscanf($field['rgba'], "rgba(%d, %d, %d, %f)");
$hex = "#";
$hex.= str_pad(dechex($rgba[0]), 2, "0", STR_PAD_LEFT);
$hex.= str_pad(dechex($rgba[1]), 2, "0", STR_PAD_LEFT);
$hex.= str_pad(dechex($rgba[2]), 2, "0", STR_PAD_LEFT);
$field['value']['hex'] = $hex;
$field['value']['opacity'] = $rgba[3];
} else{
$field['value'] = $field['rgba'];
}
} else {
if ($field['return_value']) {
$field['value']['hex'] = '#2b42d6';
$field['value']['opacity'] = 0;
} else{
$field['value'] = '';
}
}
}
if( empty($field['value']) ){
$field['ext_value']['he-op']['hex'] = '#000000';
$field['ext_value']['he-op']['opacity'] = '0';
$field['ext_value']['rgba'] = '';
} else {
if( empty($field['value']['hex']) ){
$rgba = sscanf($field['value'], "rgba(%d, %d, %d, %f)");
$hex = "#";
$hex.= str_pad(dechex($rgba[0]), 2, "0", STR_PAD_LEFT);
$hex.= str_pad(dechex($rgba[1]), 2, "0", STR_PAD_LEFT);
$hex.= str_pad(dechex($rgba[2]), 2, "0", STR_PAD_LEFT);
$field['ext_value']['he-op']['hex'] = $hex;
$field['ext_value']['he-op']['opacity'] = $rgba[3];
$field['ext_value']['rgba'] = $field['value'];
} else {
$field['ext_value']['he-op']['hex'] = $field['value']['hex'];
$field['ext_value']['he-op']['opacity'] = $field['value']['opacity'];
$hex = preg_replace("/#/", "", $field['value']['hex']);
$color = array();
if(strlen($hex) == 3) {
$color['r'] = hexdec(substr($hex, 0, 1) . $r);
$color['g'] = hexdec(substr($hex, 1, 1) . $g);
$color['b'] = hexdec(substr($hex, 2, 1) . $b);
}
else if(strlen($hex) == 6) {
$color['r'] = hexdec(substr($hex, 0, 2));
$color['g'] = hexdec(substr($hex, 2, 2));
$color['b'] = hexdec(substr($hex, 4, 2));
}
$field['ext_value']['rgba'] = 'rgba(' . $color['r'] . ',' . $color['g'] . ',' . $color['b'] . ',' . $field['value']['opacity'] . ')';
}
}
// echo '
';
// print_r( $field);
// echo '
';
if ($field['return_value']) {
$hexname = $field['name'] . '[hex]';
$opacityname = $field['name'] . '[opacity]';
$rgbatext = '';
$readonly = 'readonly';
} else {
$hexname = '';
$opacityname = '';
$rgbatext = $field['name'];
$readonly = '';
}
echo '';
echo "";
}
/*
* input_admin_enqueue_scripts()
*
* This action is called in the admin_enqueue_scripts action on the edit screen where your field is created.
* Use this action to add CSS + JavaScript to assist your render_field() action.
*
* @type action (admin_enqueue_scripts)
* @since 3.6
* @date 23/01/13
*
* @param n/a
* @return n/a
*/
function input_admin_enqueue_scripts() {
$dir = plugin_dir_url( __FILE__ );
// register & include JS
wp_register_script( 'acf-input-rgba_minicolors', "{$dir}js/jquery.minicolors.min.js" );
wp_enqueue_script('acf-input-rgba_minicolors');
wp_register_script( 'acf-input-rgba_color', "{$dir}js/input.js" );
wp_enqueue_script('acf-input-rgba_color');
// register & include CSS
wp_register_style( 'acf-input-rgba_color', "{$dir}css/input.css" );
wp_enqueue_style('acf-input-rgba_color');
wp_enqueue_media();
}
/*
* input_admin_head()
*
* This action is called in the admin_head action on the edit screen where your field is created.
* Use this action to add CSS and JavaScript to assist your render_field() action.
*
* @type action (admin_head)
* @since 3.6
* @date 23/01/13
*
* @param n/a
* @return n/a
*/
/*
function input_admin_head() {
}
*/
/*
* input_form_data()
*
* This function is called once on the 'input' page between the head and footer
* There are 2 situations where ACF did not load during the 'acf/input_admin_enqueue_scripts' and
* 'acf/input_admin_head' actions because ACF did not know it was going to be used. These situations are
* seen on comments / user edit forms on the front end. This function will always be called, and includes
* $args that related to the current screen such as $args['post_id']
*
* @type function
* @date 6/03/2014
* @since 5.0.0
*
* @param $args (array)
* @return n/a
*/
/*
function input_form_data( $args ) {
}
*/
/*
* input_admin_footer()
*
* This action is called in the admin_footer action on the edit screen where your field is created.
* Use this action to add CSS and JavaScript to assist your render_field() action.
*
* @type action (admin_footer)
* @since 3.6
* @date 23/01/13
*
* @param n/a
* @return n/a
*/
/*
function input_admin_footer() {
}
*/
/*
* field_group_admin_enqueue_scripts()
*
* This action is called in the admin_enqueue_scripts action on the edit screen where your field is edited.
* Use this action to add CSS + JavaScript to assist your render_field_options() action.
*
* @type action (admin_enqueue_scripts)
* @since 3.6
* @date 23/01/13
*
* @param n/a
* @return n/a
*/
/*
function field_group_admin_enqueue_scripts() {
}
*/
/*
* field_group_admin_head()
*
* This action is called in the admin_head action on the edit screen where your field is edited.
* Use this action to add CSS and JavaScript to assist your render_field_options() action.
*
* @type action (admin_head)
* @since 3.6
* @date 23/01/13
*
* @param n/a
* @return n/a
*/
/*
function field_group_admin_head() {
}
*/
/*
* load_value()
*
* This filter is applied to the $value after it is loaded from the db
*
* @type filter
* @since 3.6
* @date 23/01/13
*
* @param $value (mixed) the value found in the database
* @param $post_id (mixed) the $post_id from which the value was loaded
* @param $field (array) the field array holding all the field options
* @return $value
*/
/*
function load_value( $value, $post_id, $field ) {
return $value;
}
*/
/*
* update_value()
*
* This filter is applied to the $value before it is saved in the db
*
* @type filter
* @since 3.6
* @date 23/01/13
*
* @param $value (mixed) the value found in the database
* @param $post_id (mixed) the $post_id from which the value was loaded
* @param $field (array) the field array holding all the field options
* @return $value
*/
/*
function update_value( $value, $post_id, $field ) {
return $value;
}
*/
/*
* format_value()
*
* This filter is appied to the $value after it is loaded from the db and before it is returned to the template
*
* @type filter
* @since 3.6
* @date 23/01/13
*
* @param $value (mixed) the value which was loaded from the database
* @param $post_id (mixed) the $post_id from which the value was loaded
* @param $field (array) the field array holding all the field options
*
* @return $value (mixed) the modified value
*/
/*
function format_value( $value, $post_id, $field ) {
// bail early if no value
if( empty($value) ) {
return $value;
}
// apply setting
if( $field['font_size'] > 12 ) {
// format the value
// $value = 'something';
}
// return
return $value;
}
*/
/*
* validate_value()
*
* This filter is used to perform validation on the value prior to saving.
* All values are validated regardless of the field's required setting. This allows you to validate and return
* messages to the user if the value is not correct
*
* @type filter
* @date 11/02/2014
* @since 5.0.0
*
* @param $valid (boolean) validation status based on the value and the field's required setting
* @param $value (mixed) the $_POST value
* @param $field (array) the field array holding all the field options
* @param $input (string) the corresponding input name for $_POST value
* @return $valid
*/
function validate_value( $valid, $value, $field, $input ){
if ($field['required']) {
$set = 0;
$txt = __('The value is empty! : ','advanced-custom-fields-rgba-color');
if ($field['return_value']) {
if( empty($value['hex'])){
$txt .= __('hex, ','advanced-custom-fields-rgba-color');
$set = 1;
}
if( empty($value['opacity'])){
$txt .= __('opacity, ','advanced-custom-fields-rgba-color');
$set = 1;
}
} else {
if( empty($value)){
$txt .= __('rgba, ','advanced-custom-fields-rgba-color');
$set = 1;
}
}
if ($set) {
$valid = $txt;
}
}
return $valid;
}
/*
* delete_value()
*
* This action is fired after a value has been deleted from the db.
* Please note that saving a blank value is treated as an update, not a delete
*
* @type action
* @date 6/03/2014
* @since 5.0.0
*
* @param $post_id (mixed) the $post_id from which the value was deleted
* @param $key (string) the $meta_key which the value was deleted
* @return n/a
*/
/*
function delete_value( $post_id, $key ) {
}
*/
/*
* load_field()
*
* This filter is applied to the $field after it is loaded from the database
*
* @type filter
* @date 23/01/2013
* @since 3.6.0
*
* @param $field (array) the field array holding all the field options
* @return $field
*/
/*
function load_field( $field ) {
return $field;
}
*/
/*
* update_field()
*
* This filter is applied to the $field before it is saved to the database
*
* @type filter
* @date 23/01/2013
* @since 3.6.0
*
* @param $field (array) the field array holding all the field options
* @return $field
*/
/*
function update_field( $field ) {
return $field;
}
*/
/*
* delete_field()
*
* This action is fired after a field is deleted from the database
*
* @type action
* @date 11/02/2014
* @since 5.0.0
*
* @param $field (array) the field array holding all the field options
* @return n/a
*/
/*
function delete_field( $field ) {
}
*/
}
// create field
new acf_field_rgba_color();
?>