ru-se.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

class-wp-customize-nav-menu-item-control.php (6994B)


      1 <?php
      2 /**
      3  * Customize API: WP_Customize_Nav_Menu_Item_Control class
      4  *
      5  * @package WordPress
      6  * @subpackage Customize
      7  * @since 4.4.0
      8  */
      9 
     10 /**
     11  * Customize control to represent the name field for a given menu.
     12  *
     13  * @since 4.3.0
     14  *
     15  * @see WP_Customize_Control
     16  */
     17 class WP_Customize_Nav_Menu_Item_Control extends WP_Customize_Control {
     18 
     19 	/**
     20 	 * Control type.
     21 	 *
     22 	 * @since 4.3.0
     23 	 * @var string
     24 	 */
     25 	public $type = 'nav_menu_item';
     26 
     27 	/**
     28 	 * The nav menu item setting.
     29 	 *
     30 	 * @since 4.3.0
     31 	 * @var WP_Customize_Nav_Menu_Item_Setting
     32 	 */
     33 	public $setting;
     34 
     35 	/**
     36 	 * Constructor.
     37 	 *
     38 	 * @since 4.3.0
     39 	 *
     40 	 * @see WP_Customize_Control::__construct()
     41 	 *
     42 	 * @param WP_Customize_Manager $manager Customizer bootstrap instance.
     43 	 * @param string               $id      The control ID.
     44 	 * @param array                $args    Optional. Arguments to override class property defaults.
     45 	 *                                      See WP_Customize_Control::__construct() for information
     46 	 *                                      on accepted arguments. Default empty array.
     47 	 */
     48 	public function __construct( $manager, $id, $args = array() ) {
     49 		parent::__construct( $manager, $id, $args );
     50 	}
     51 
     52 	/**
     53 	 * Don't render the control's content - it's rendered with a JS template.
     54 	 *
     55 	 * @since 4.3.0
     56 	 */
     57 	public function render_content() {}
     58 
     59 	/**
     60 	 * JS/Underscore template for the control UI.
     61 	 *
     62 	 * @since 4.3.0
     63 	 */
     64 	public function content_template() {
     65 		?>
     66 		<div class="menu-item-bar">
     67 			<div class="menu-item-handle">
     68 				<span class="item-type" aria-hidden="true">{{ data.item_type_label }}</span>
     69 				<span class="item-title" aria-hidden="true">
     70 					<span class="spinner"></span>
     71 					<span class="menu-item-title<# if ( ! data.title && ! data.original_title ) { #> no-title<# } #>">{{ data.title || data.original_title || wp.customize.Menus.data.l10n.untitled }}</span>
     72 				</span>
     73 				<span class="item-controls">
     74 					<button type="button" class="button-link item-edit" aria-expanded="false"><span class="screen-reader-text">
     75 					<?php
     76 						/* translators: 1: Title of a menu item, 2: Type of a menu item. */
     77 						printf( __( 'Edit menu item: %1$s (%2$s)' ), '{{ data.title || wp.customize.Menus.data.l10n.untitled }}', '{{ data.item_type_label }}' );
     78 					?>
     79 					</span><span class="toggle-indicator" aria-hidden="true"></span></button>
     80 					<button type="button" class="button-link item-delete submitdelete deletion"><span class="screen-reader-text">
     81 					<?php
     82 						/* translators: 1: Title of a menu item, 2: Type of a menu item. */
     83 						printf( __( 'Remove Menu Item: %1$s (%2$s)' ), '{{ data.title || wp.customize.Menus.data.l10n.untitled }}', '{{ data.item_type_label }}' );
     84 					?>
     85 					</span></button>
     86 				</span>
     87 			</div>
     88 		</div>
     89 
     90 		<div class="menu-item-settings" id="menu-item-settings-{{ data.menu_item_id }}">
     91 			<# if ( 'custom' === data.item_type ) { #>
     92 			<p class="field-url description description-thin">
     93 				<label for="edit-menu-item-url-{{ data.menu_item_id }}">
     94 					<?php _e( 'URL' ); ?><br />
     95 					<input class="widefat code edit-menu-item-url" type="text" id="edit-menu-item-url-{{ data.menu_item_id }}" name="menu-item-url" />
     96 				</label>
     97 			</p>
     98 		<# } #>
     99 			<p class="description description-thin">
    100 				<label for="edit-menu-item-title-{{ data.menu_item_id }}">
    101 					<?php _e( 'Navigation Label' ); ?><br />
    102 					<input type="text" id="edit-menu-item-title-{{ data.menu_item_id }}" placeholder="{{ data.original_title }}" class="widefat edit-menu-item-title" name="menu-item-title" />
    103 				</label>
    104 			</p>
    105 			<p class="field-link-target description description-thin">
    106 				<label for="edit-menu-item-target-{{ data.menu_item_id }}">
    107 					<input type="checkbox" id="edit-menu-item-target-{{ data.menu_item_id }}" class="edit-menu-item-target" value="_blank" name="menu-item-target" />
    108 					<?php _e( 'Open link in a new tab' ); ?>
    109 				</label>
    110 			</p>
    111 			<p class="field-title-attribute field-attr-title description description-thin">
    112 				<label for="edit-menu-item-attr-title-{{ data.menu_item_id }}">
    113 					<?php _e( 'Title Attribute' ); ?><br />
    114 					<input type="text" id="edit-menu-item-attr-title-{{ data.menu_item_id }}" class="widefat edit-menu-item-attr-title" name="menu-item-attr-title" />
    115 				</label>
    116 			</p>
    117 			<p class="field-css-classes description description-thin">
    118 				<label for="edit-menu-item-classes-{{ data.menu_item_id }}">
    119 					<?php _e( 'CSS Classes' ); ?><br />
    120 					<input type="text" id="edit-menu-item-classes-{{ data.menu_item_id }}" class="widefat code edit-menu-item-classes" name="menu-item-classes" />
    121 				</label>
    122 			</p>
    123 			<p class="field-xfn description description-thin">
    124 				<label for="edit-menu-item-xfn-{{ data.menu_item_id }}">
    125 					<?php _e( 'Link Relationship (XFN)' ); ?><br />
    126 					<input type="text" id="edit-menu-item-xfn-{{ data.menu_item_id }}" class="widefat code edit-menu-item-xfn" name="menu-item-xfn" />
    127 				</label>
    128 			</p>
    129 			<p class="field-description description description-thin">
    130 				<label for="edit-menu-item-description-{{ data.menu_item_id }}">
    131 					<?php _e( 'Description' ); ?><br />
    132 					<textarea id="edit-menu-item-description-{{ data.menu_item_id }}" class="widefat edit-menu-item-description" rows="3" cols="20" name="menu-item-description">{{ data.description }}</textarea>
    133 					<span class="description"><?php _e( 'The description will be displayed in the menu if the current theme supports it.' ); ?></span>
    134 				</label>
    135 			</p>
    136 
    137 			<?php
    138 			/**
    139 			 * Fires at the end of the form field template for nav menu items in the customizer.
    140 			 *
    141 			 * Additional fields can be rendered here and managed in JavaScript.
    142 			 *
    143 			 * @since 5.4.0
    144 			 */
    145 			do_action( 'wp_nav_menu_item_custom_fields_customize_template' );
    146 			?>
    147 
    148 			<div class="menu-item-actions description-thin submitbox">
    149 				<# if ( ( 'post_type' === data.item_type || 'taxonomy' === data.item_type ) && '' !== data.original_title ) { #>
    150 				<p class="link-to-original">
    151 					<?php
    152 						/* translators: Nav menu item original title. %s: Original title. */
    153 						printf( __( 'Original: %s' ), '<a class="original-link" href="{{ data.url }}">{{ data.original_title }}</a>' );
    154 					?>
    155 				</p>
    156 				<# } #>
    157 
    158 				<button type="button" class="button-link button-link-delete item-delete submitdelete deletion"><?php _e( 'Remove' ); ?></button>
    159 				<span class="spinner"></span>
    160 			</div>
    161 			<input type="hidden" name="menu-item-db-id[{{ data.menu_item_id }}]" class="menu-item-data-db-id" value="{{ data.menu_item_id }}" />
    162 			<input type="hidden" name="menu-item-parent-id[{{ data.menu_item_id }}]" class="menu-item-data-parent-id" value="{{ data.parent }}" />
    163 		</div><!-- .menu-item-settings-->
    164 		<ul class="menu-item-transport"></ul>
    165 		<?php
    166 	}
    167 
    168 	/**
    169 	 * Return parameters for this control.
    170 	 *
    171 	 * @since 4.3.0
    172 	 *
    173 	 * @return array Exported parameters.
    174 	 */
    175 	public function json() {
    176 		$exported                 = parent::json();
    177 		$exported['menu_item_id'] = $this->setting->post_id;
    178 
    179 		return $exported;
    180 	}
    181 }