File "form-taxonomy.php"

Full path: /home/kosmetik/public_html/wp-content/plugins/advanced-custom-fields/includes/forms/form-taxonomy.php
File size: 5.29 B
MIME-type: text/x-php
Charset: utf-8

Download   Open   Edit   Advanced Editor   Back

<?php

if (!class_exists('acf_form_taxonomy')) {
    class acf_form_taxonomy
    {
        var $view = 'add';
        function __construct()
        {
            add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts'));
            add_action('create_term', array($this, 'save_term'), 10, 3);
            add_action('edit_term', array($this, 'save_term'), 10, 3);
            add_action('delete_term', array($this, 'delete_term'), 10, 4);
        }
        function validate_page()
        {
            global $pagenow;
            if ($pagenow === 'edit-tags.php' || $pagenow === 'term.php') {
                return true;
            }
            return false;
        }
        function admin_enqueue_scripts()
        {
            if (!$this->validate_page()) {
                return;
            }
            $screen = get_current_screen();
            $taxonomy = $screen->taxonomy;
            acf_enqueue_scripts();
            add_action('admin_footer', array($this, 'admin_footer'), 10, 1);
            add_action("{$taxonomy}_add_form_fields", array($this, 'add_term'), 10, 1);
            add_action("{$taxonomy}_edit_form", array($this, 'edit_term'), 10, 2);
        }
        function add_term($taxonomy)
        {
            $post_id = 'term_0';
            $this->view = 'add';
            $field_groups = acf_get_field_groups(array('taxonomy' => $taxonomy));
            if (!empty($field_groups)) {
                acf_form_data(array('screen' => 'taxonomy', 'post_id' => $post_id));
                echo '<div id="acf-term-fields" class="acf-fields -clear">';
                foreach ($field_groups as $field_group) {
                    $fields = acf_get_fields($field_group);
                    acf_render_fields($fields, $post_id, 'div', 'field');
                }
                echo '</div>';
            }
        }
        function edit_term($term, $taxonomy)
        {
            $post_id = 'term_' . $term->term_id;
            $this->view = 'edit';
            $field_groups = acf_get_field_groups(array('taxonomy' => $taxonomy));
            if (!empty($field_groups)) {
                acf_form_data(array('screen' => 'taxonomy', 'post_id' => $post_id));
                foreach ($field_groups as $field_group) {
                    if ($field_group['style'] == 'default') {
                        echo '<h2>' . $field_group['title'] . '</h2>';
                    }
                    echo '<table class="form-table">';
                    $fields = acf_get_fields($field_group);
                    acf_render_fields($fields, $post_id, 'tr', 'field');
                    echo '</table>';
                }
            }
        }
        function admin_footer()
        {
            ?>
<script type="text/javascript">
(function($) {
	
	// Define vars.
	var view = '<?php 
            echo $this->view;
            ?>';
	var $form = $('#' + view + 'tag');
	var $submit = $('#' + view + 'tag input[type="submit"]:last');
	
	// Add missing spinner.
	if( !$submit.next('.spinner').length ) {
		$submit.after('<span class="spinner"></span>');
	}
	
			<?php 
            if ($this->view == 'add') {
                ?>
	
	// vars
	var $fields = $('#acf-term-fields');
	var html = '';
	
	// Store a copy of the $fields html used later to replace after AJAX request.
	// Hook into 'prepare' action to allow ACF core helpers to first modify DOM.
	// Fixes issue where hidden #acf-hidden-wp-editor is initialized again.
	acf.addAction('prepare', function(){
		html = $fields.html();
	}, 6);
		
	// WP triggers click as primary action
	$submit.on('click', function( e ){
		
		// validate
		var valid = acf.validateForm({
			form: $form,
			event: e,
			reset: true
		});
		
		// if not valid, stop event and allow validation to continue
		if( !valid ) {
			e.preventDefault();
			e.stopImmediatePropagation();
		}
	});
	
	// listen to AJAX add-tag complete
	$(document).ajaxComplete(function(event, xhr, settings) {
		
		// bail early if is other ajax call
		if( settings.data.indexOf('action=add-tag') == -1 ) {
			return;
		}
		
		// bail early if response contains error
		if( xhr.responseText.indexOf('wp_error') !== -1 ) {
			return;
		}
		
		// action for 3rd party customization
		acf.doAction('remove', $fields);
		
		// reset HTML
		$fields.html( html );
		
		// action for 3rd party customization
		acf.doAction('append', $fields);
		
		// reset unload
		acf.unload.reset();
	});
	
		<?php 
            }
            ?>
	
})(jQuery);	
</script>
			<?php 
        }
        function save_term($term_id, $tt_id, $taxonomy)
        {
            $post_id = 'term_' . $term_id;
            if (!acf_verify_nonce('taxonomy')) {
                return $term_id;
            }
            acf_validate_save_post(true);
            acf_save_post($post_id);
        }
        function delete_term($term, $tt_id, $taxonomy, $deleted_term)
        {
            if (acf_isset_termmeta()) {
                return $term;
            }
            global $wpdb;
            $search = $taxonomy . '_' . $term . '_%';
            $_search = '_' . $search;
            $search = str_replace('_', '\\_', $search);
            $_search = str_replace('_', '\\_', $_search);
            $result = $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->options} WHERE option_name LIKE %s OR option_name LIKE %s", $search, $_search));
        }
    }
    new acf_form_taxonomy();
}