Customize: Add notice for when there are no nav menus created yet, prompting user to create one.

Props bpayton, melchoyce, westonruter.
Fixes #42116.


git-svn-id: https://develop.svn.wordpress.org/trunk@41823 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Weston Ruter 2017-10-11 05:27:05 +00:00
parent 3c7a504ed4
commit 1cff26c4b7
3 changed files with 71 additions and 2 deletions

View File

@ -773,6 +773,9 @@ body.adding-menu-items #customize-preview iframe {
/* @todo update selector */
#accordion-section-add_menu {
margin: 15px 12px;
}
#accordion-section-add_menu h3 {
text-align: right;
}

View File

@ -1163,7 +1163,8 @@
attachEvents: function() {
var section = this,
container = section.container,
contentContainer = section.contentContainer;
contentContainer = section.contentContainer,
navMenuSettingPattern = /^nav_menu\[/;
/*
* We have to manually handle section expanded because we do not
@ -1184,7 +1185,66 @@
event.preventDefault();
} );
api.Section.prototype.attachEvents.apply( this, arguments );
/**
* Get number of non-deleted nav menus.
*
* @since 4.9.0
* @returns {number} Count.
*/
function getNavMenuCount() {
var count = 0;
api.each( function( setting ) {
if ( navMenuSettingPattern.test( setting.id ) && false !== setting.get() ) {
count += 1;
}
} );
return count;
}
/**
* Update visibility of notice to prompt users to create menus.
*
* @since 4.9.0
* @returns {void}
*/
function updateNoticeVisibility() {
container.find( '.add-new-menu-notice' ).prop( 'hidden', getNavMenuCount() > 0 );
}
/**
* Handle setting addition.
*
* @since 4.9.0
* @param {wp.customize.Setting} setting - Added setting.
* @returns {void}
*/
function addChangeEventListener( setting ) {
if ( navMenuSettingPattern.test( setting.id ) ) {
setting.bind( updateNoticeVisibility );
updateNoticeVisibility();
}
}
/**
* Handle setting removal.
*
* @since 4.9.0
* @param {wp.customize.Setting} setting - Removed setting.
* @returns {void}
*/
function removeChangeEventListener( setting ) {
if ( navMenuSettingPattern.test( setting.id ) ) {
setting.unbind( updateNoticeVisibility );
updateNoticeVisibility();
}
}
api.each( addChangeEventListener );
api.bind( 'add', addChangeEventListener );
api.bind( 'removed', removeChangeEventListener );
updateNoticeVisibility();
api.Section.prototype.attachEvents.apply( section, arguments );
},
/**

View File

@ -951,6 +951,12 @@ final class WP_Customize_Nav_Menus {
</script>
<script type="text/html" id="tmpl-nav-menu-create-menu-section-title">
<p class="add-new-menu-notice">
<?php _e( 'It doesn&#8217;t look like your site has any menus yet. Want to build one? Click the button to start.' ); ?>
</p>
<p class="add-new-menu-notice">
<?php _e( 'You&#8217;ll create a menu, assign it a location, and add menu items like links to pages and categories. If your theme has multiple menu areas, you might need to create more than one.' ); ?>
</p>
<h3>
<button type="button" class="button customize-add-menu-button">
<?php _e( 'Create New Menu' ); ?>