diff --git src/wp-admin/js/customize-nav-menus.js src/wp-admin/js/customize-nav-menus.js
index e745561..07c1670 100644
|
|
|
676 | 676 | }, |
677 | 677 | |
678 | 678 | populateControls: function() { |
679 | | var section = this, menuNameControlId, menuControl, menuNameControl; |
| 679 | var section = this, menuNameControlId, menuAutoAddControlId, menuControl, menuNameControl, menuAutoAddControl; |
680 | 680 | |
681 | 681 | // Add the control for managing the menu name. |
682 | 682 | menuNameControlId = section.id + '[name]'; |
… |
… |
|
707 | 707 | type: 'nav_menu', |
708 | 708 | content: '<li id="customize-control-' + section.id.replace( '[', '-' ).replace( ']', '' ) + '" class="customize-control customize-control-nav_menu"></li>', // @todo core should do this for us |
709 | 709 | section: section.id, |
710 | | priority: 999, |
| 710 | priority: 998, |
711 | 711 | active: true, |
712 | 712 | settings: { |
713 | 713 | 'default': section.id |
… |
… |
|
719 | 719 | menuControl.active.set( true ); |
720 | 720 | } |
721 | 721 | |
| 722 | // Add the control for managing the menu auto_add. |
| 723 | menuAutoAddControlId = section.id + '[auto_add]'; |
| 724 | menuAutoAddControl = api.control( menuAutoAddControlId ); |
| 725 | if ( ! menuAutoAddControl ) { |
| 726 | menuAutoAddControl = new api.controlConstructor.nav_menu_auto_add( menuAutoAddControlId, { |
| 727 | params: { |
| 728 | type: 'nav_menu_auto_add', |
| 729 | content: '<li id="customize-control-' + section.id.replace( '[', '-' ).replace( ']', '' ) + '-auto-add" class="customize-control customize-control-nav_menu_auto_add"></li>', // @todo core should do this for us |
| 730 | label: '', |
| 731 | active: true, |
| 732 | section: section.id, |
| 733 | priority: 999, |
| 734 | settings: { |
| 735 | 'default': section.id |
| 736 | } |
| 737 | } |
| 738 | } ); |
| 739 | api.control.add( menuAutoAddControl.id, menuAutoAddControl ); |
| 740 | menuAutoAddControl.active.set( true ); |
| 741 | } |
| 742 | |
722 | 743 | }, |
723 | 744 | |
724 | 745 | /** |
… |
… |
|
1592 | 1613 | }); |
1593 | 1614 | |
1594 | 1615 | /** |
| 1616 | * wp.customize.Menus.MenuAutoAddControl |
| 1617 | * |
| 1618 | * Customizer control for a nav menu's auto add. |
| 1619 | * |
| 1620 | * @constructor |
| 1621 | * @augments wp.customize.Control |
| 1622 | */ |
| 1623 | api.Menus.MenuAutoAddControl = api.Control.extend({ |
| 1624 | |
| 1625 | ready: function() { |
| 1626 | var control = this, |
| 1627 | settingValue = control.setting(); |
| 1628 | |
| 1629 | /* |
| 1630 | * Since the control is not registered in PHP, we need to prevent the |
| 1631 | * preview's sending of the activeControls to result in this control |
| 1632 | * being deactivated. |
| 1633 | */ |
| 1634 | control.active.validate = function() { |
| 1635 | return api.section( control.section() ).active(); |
| 1636 | }; |
| 1637 | |
| 1638 | control.autoAddElement = new api.Element( control.container.find( 'input[type=checkbox].auto_add' ) ); |
| 1639 | |
| 1640 | control.autoAddElement.bind(function( value ) { |
| 1641 | var settingValue = control.setting(); |
| 1642 | if ( settingValue && settingValue.name !== value ) { |
| 1643 | settingValue = _.clone( settingValue ); |
| 1644 | settingValue.auto_add = value; |
| 1645 | control.setting.set( settingValue ); |
| 1646 | } |
| 1647 | }); |
| 1648 | if ( settingValue ) { |
| 1649 | control.autoAddElement.set( settingValue.auto_add ); |
| 1650 | } |
| 1651 | |
| 1652 | control.setting.bind(function( object ) { |
| 1653 | if ( object ) { |
| 1654 | control.autoAddElement.set( object.auto_add ); |
| 1655 | } |
| 1656 | }); |
| 1657 | } |
| 1658 | |
| 1659 | }); |
| 1660 | |
| 1661 | /** |
1595 | 1662 | * wp.customize.Menus.MenuControl |
1596 | 1663 | * |
1597 | 1664 | * Customizer control for menus. |
… |
… |
|
1662 | 1729 | var control = this, |
1663 | 1730 | menuId = control.params.menu_id; |
1664 | 1731 | |
1665 | | control.elements = {}; |
1666 | | control.elements.auto_add = new api.Element( control.container.find( 'input[type=checkbox].auto_add' ) ); |
1667 | | |
1668 | | control.elements.auto_add.bind(function( auto_add ) { |
1669 | | var settingValue = control.setting(); |
1670 | | if ( settingValue && settingValue.auto_add !== auto_add ) { |
1671 | | settingValue = _.clone( settingValue ); |
1672 | | settingValue.auto_add = auto_add; |
1673 | | control.setting.set( settingValue ); |
1674 | | } |
1675 | | }); |
1676 | | control.elements.auto_add.set( control.setting().auto_add ); |
1677 | | control.setting.bind(function( object ) { |
1678 | | if ( ! object ) { |
1679 | | return; |
1680 | | } |
1681 | | control.elements.auto_add.set( object.auto_add ); |
1682 | | }); |
1683 | | |
1684 | 1732 | control.setting.bind( function( to ) { |
1685 | 1733 | var name; |
1686 | 1734 | if ( false === to ) { |
… |
… |
|
2244 | 2292 | nav_menu_item: api.Menus.MenuItemControl, |
2245 | 2293 | nav_menu: api.Menus.MenuControl, |
2246 | 2294 | nav_menu_name: api.Menus.MenuNameControl, |
| 2295 | nav_menu_auto_add: api.Menus.MenuAutoAddControl, |
2247 | 2296 | new_menu: api.Menus.NewMenuControl |
2248 | 2297 | }); |
2249 | 2298 | |
diff --git src/wp-includes/class-wp-customize-control.php src/wp-includes/class-wp-customize-control.php
index 6aad58e..09ab176 100644
|
|
class WP_Customize_Nav_Menu_Control extends WP_Customize_Control { |
1603 | 1603 | <?php endforeach; ?> |
1604 | 1604 | |
1605 | 1605 | </ul> |
1606 | | <?php endif; ?> |
1607 | | <p> |
1608 | | <label> |
1609 | | <input type="checkbox" class="auto_add"> |
1610 | | <?php _e( 'Automatically add new top-level pages to this menu' ) ?> |
1611 | | </label> |
1612 | | </p> |
1613 | | <?php |
| 1606 | <?php endif; |
1614 | 1607 | } |
1615 | 1608 | |
1616 | 1609 | /** |
… |
… |
class WP_Customize_Nav_Menu_Name_Control extends WP_Customize_Control { |
1886 | 1879 | } |
1887 | 1880 | |
1888 | 1881 | /** |
| 1882 | * Customize control to represent the auto_add field for a given menu. |
| 1883 | * |
| 1884 | * @since 4.3.0 |
| 1885 | */ |
| 1886 | class WP_Customize_Nav_Menu_Auto_Add_Control extends WP_Customize_Control { |
| 1887 | |
| 1888 | /** |
| 1889 | * Type of control, used by JS. |
| 1890 | * |
| 1891 | * @since 4.3.0 |
| 1892 | * |
| 1893 | * @var string |
| 1894 | */ |
| 1895 | public $type = 'nav_menu_auto_add'; |
| 1896 | |
| 1897 | /** |
| 1898 | * No-op since we're using JS template. |
| 1899 | * |
| 1900 | * @since 4.3.0 |
| 1901 | */ |
| 1902 | protected function render_content() {} |
| 1903 | |
| 1904 | /** |
| 1905 | * Render the Underscore template for this control. |
| 1906 | * |
| 1907 | * @since 4.3.0 |
| 1908 | */ |
| 1909 | protected function content_template() { |
| 1910 | ?> |
| 1911 | <label> |
| 1912 | <span class="customize-control-title"><?php _e( 'Menu Options' ); ?></span> |
| 1913 | <input type="checkbox" class="auto_add" /> |
| 1914 | <?php _e( 'Automatically add new top-level pages to this menu' ); ?> |
| 1915 | </label> |
| 1916 | <?php |
| 1917 | } |
| 1918 | } |
| 1919 | |
| 1920 | /** |
1889 | 1921 | * Customize control class for new menus. |
1890 | 1922 | * |
1891 | 1923 | * @since 4.3.0 |
diff --git src/wp-includes/class-wp-customize-nav-menus.php src/wp-includes/class-wp-customize-nav-menus.php
index 340b367..2090d9d 100644
|
|
final class WP_Customize_Nav_Menus { |
405 | 405 | $this->manager->register_panel_type( 'WP_Customize_Nav_Menus_Panel' ); |
406 | 406 | $this->manager->register_control_type( 'WP_Customize_Nav_Menu_Control' ); |
407 | 407 | $this->manager->register_control_type( 'WP_Customize_Nav_Menu_Name_Control' ); |
| 408 | $this->manager->register_control_type( 'WP_Customize_Nav_Menu_Auto_Add_Control' ); |
408 | 409 | $this->manager->register_control_type( 'WP_Customize_Nav_Menu_Item_Control' ); |
409 | 410 | |
410 | 411 | // Create a panel for Menus. |