home *** CD-ROM | disk | FTP | other *** search
/ HTML Examples / WP.iso / wordpress / wp-includes / customize / class-wp-customize-nav-menu-item-control.php < prev    next >
Encoding:
PHP Script  |  2017-07-26  |  6.3 KB  |  163 lines

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