settings['url'];
$version = $this->settings['version'];
wp_register_script(
'acf-image-aspect-ratio-crop',
"{$url}assets/dist/input-script.js",
['acf-input'],
WP_DEBUG ? md5_file($this->settings['path'] . '/assets/dist/input-script.js') : $version
);
$translation_array = [
'cropping_in_progress' => __(
'Cropping image...',
'acf-image-aspect-ratio-crop'
),
'cropping_failed' => __(
'Failed to crop image',
'acf-image-aspect-ratio-crop'
),
'crop' => __('Crop', 'acf-image-aspect-ratio-crop'),
'cancel' => __('Cancel', 'acf-image-aspect-ratio-crop'),
'modal_title' => __('Crop image', 'acf-image-aspect-ratio-crop'),
];
$settings_array = [
'modal_type' => $this->settings['user_settings']['modal_type'],
];
wp_localize_script(
'acf-image-aspect-ratio-crop',
'aiarc_settings',
$settings_array
);
wp_localize_script(
'acf-image-aspect-ratio-crop',
'aiarc_translations',
$translation_array
);
wp_enqueue_script('acf-image-aspect-ratio-crop');
wp_register_style(
'acf-image-aspect-ratio-crop',
"{$url}assets/dist/input-style.css",
['acf-input'],
WP_DEBUG ? md5_file($this->settings['path'] . '/assets/dist/input-style.css') : $version
);
wp_enqueue_style('acf-image-aspect-ratio-crop');
}
/*
function input_admin_enqueue_scripts() {
// vars
$url = $this->settings['url'];
$version = $this->settings['version'];
// register & include JS
wp_register_script('acf-image-aspect-ratio-crop', "{$url}assets/js/input.js", array('acf-input'), $version);
wp_enqueue_script('acf-image-aspect-ratio-crop');
// register & include CSS
wp_register_style('acf-image-aspect-ratio-crop', "{$url}assets/css/input.css", array('acf-input'), $version);
wp_enqueue_style('acf-image-aspect-ratio-crop');
}
*/
/*
* 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;
}
*/
function update_value($value, $post_id, $field)
{
return acf_get_field_type('file')->update_value(
$value,
$post_id,
$field
);
}
/*
* 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;
}
*/
/*
* 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 false;
}
// bail early if not numeric (error message)
if (!is_numeric($value)) {
return false;
}
// convert to int
$value = intval($value);
// format
if ($field['return_format'] == 'url') {
return wp_get_attachment_url($value);
} elseif ($field['return_format'] == 'array') {
$output = acf_get_attachment($value);
$output['original_image'] = null;
$original = get_post_meta(
$value,
'acf_image_aspect_ratio_crop_original_image_id'
);
if (count($original)) {
$output['original_image'] = acf_get_attachment($original[0]);
}
return $output;
}
// 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 ){
// Basic usage
if( $value < $field['custom_minimum_setting'] )
{
$valid = false;
}
// Advanced usage
if( $value < $field['custom_minimum_setting'] )
{
$valid = __('The value is too little!','acf-image-aspect-ratio-crop'),
}
// return
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 ) {
}
*/
/*
* get_media_item_args
*
* description
*
* @type function
* @date 27/01/13
* @since 3.6.0
*
* @param $vars (array)
* @return $vars
*/
function get_media_item_args($vars)
{
$vars['send'] = true;
return $vars;
}
/*
* wp_prepare_attachment_for_js
*
* this filter allows ACF to add in extra data to an attachment JS object
* This sneaky hook adds the missing sizes to each attachment in the 3.5 uploader.
* It would be a lot easier to add all the sizes to the 'image_size_names_choose' filter but
* then it will show up on the normal the_content editor
*
* @type function
* @since: 3.5.7
* @date 13/01/13
*
* @param {int} $post_id
* @return {int} $post_id
*/
function wp_prepare_attachment_for_js($response, $attachment, $meta)
{
// only for image
if ($response['type'] != 'image') {
return $response;
}
// make sure sizes exist. Perhaps they dont?
if (!isset($meta['sizes'])) {
return $response;
}
$attachment_url = $response['url'];
$base_url = str_replace(
wp_basename($attachment_url),
'',
$attachment_url
);
if (isset($meta['sizes']) && is_array($meta['sizes'])) {
foreach ($meta['sizes'] as $k => $v) {
if (!isset($response['sizes'][$k])) {
$response['sizes'][$k] = [
'height' => $v['height'],
'width' => $v['width'],
'url' => $base_url . $v['file'],
'orientation' =>
$v['height'] > $v['width']
? 'portrait'
: 'landscape',
];
}
}
}
return $response;
}
}
// initialize
new npx_acf_field_image_aspect_ratio_crop($this->settings);
?>