PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 13.3.3
Jetpack – WP Security, Backup, Speed, & Growth v13.3.3
12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 14.5.1 14.6.1 14.7.1 14.8.1 14.9.2 15.0.3 15.1.2 15.2.1 15.3.2 15.4.1 15.5.1 15.6.1 15.7.2 15.8.1 15.9.2 16.0.2 16.1.3 16.2-a.5 16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / modules / masterbar / admin-menu / admin-menu.js
jetpack / modules / masterbar / admin-menu Last commit date
admin-menu-nav-unification-rtl.css 2 years ago admin-menu-nav-unification-rtl.min.css 2 years ago admin-menu-nav-unification.css 2 years ago admin-menu-nav-unification.min.css 2 years ago admin-menu-rtl.css 2 years ago admin-menu-rtl.min.css 2 years ago admin-menu.css 2 years ago admin-menu.js 2 years ago admin-menu.min.css 2 years ago class-admin-menu.php 2 years ago class-atomic-admin-menu.php 2 years ago class-base-admin-menu.php 2 years ago class-dashboard-switcher-tracking.php 3 years ago class-domain-only-admin-menu.php 2 years ago class-jetpack-admin-menu.php 2 years ago class-p2-admin-menu.php 4 years ago class-wpcom-admin-menu.php 2 years ago class-wpcom-email-subscription-checker.php 3 years ago dashicon-set.php 4 years ago globe-icon.svg 3 years ago load.php 2 years ago menu-mappings.php 3 years ago
admin-menu.js
185 lines
1 /* global ajaxurl, jetpackAdminMenu */
2
3 ( function ( $ ) {
4 function init() {
5 var adminbar = document.querySelector( '#wpadminbar' );
6 var wpwrap = document.querySelector( '#wpwrap' );
7 var adminMenu = document.querySelector( '#adminmenu' );
8 var dismissClass = 'dismissible-card__close-icon';
9
10 if ( ! adminbar ) {
11 return;
12 }
13
14 function setAriaExpanded( value ) {
15 var anchors = adminbar.querySelectorAll( '#wp-admin-bar-blog a' );
16 for ( var i = 0; i < anchors.length; i++ ) {
17 anchors[ i ].setAttribute( 'aria-expanded', value );
18 }
19 }
20
21 setFocusOnActiveMenuItem();
22 setAriaExpanded( 'false' );
23
24 var adminbarBlog = adminbar.querySelector( '#wp-admin-bar-blog.my-sites > a' );
25
26 // Toggle sidebar when toggle is clicked.
27 if ( adminbarBlog && ! document.body.classList.contains( 'wpcom-admin-interface' ) ) {
28 // We need to remove an event listener and attribute from the my sites button to prevent default behavior of the wp-responsive-overlay.
29 $( '#wp-admin-bar-blog.my-sites > a' ).off( 'click.wp-responsive' );
30 adminbarBlog.removeAttribute( 'aria-haspopup' );
31 // Toggle the sidebar when the 'My Sites' button is clicked in a mobile view.
32 adminbarBlog.addEventListener( 'click', toggleSidebar );
33 // Detect a click outside the sidebar and close it if its open.
34 document.addEventListener( 'click', closeSidebarWhenClickedOutside );
35 }
36
37 function closeSidebarWhenClickedOutside( event ) {
38 const isClickOnToggle = !! event.target.closest( '#wp-admin-bar-blog > a' );
39 const isClickInsideMenu = document.getElementById( 'adminmenu' ).contains( event.target );
40 const sidebarIsOpen = wpwrap.classList.contains( 'wp-responsive-open' );
41 const shouldCloseSidebar = sidebarIsOpen && ! isClickOnToggle && ! isClickInsideMenu;
42 if ( shouldCloseSidebar ) {
43 toggleSidebar( event );
44 }
45 }
46
47 function toggleSidebar( event ) {
48 // Prevent the menu toggle from being triggered when the screen is not in mobile view.
49 // This allows the toggle to function as a link to the site's dashboard the same way it works in Calypso.
50 if ( $( window ).width() > 782 ) {
51 event.stopImmediatePropagation(); // Prevent propagation to conflicting event handlers.
52 return true;
53 }
54
55 event.preventDefault();
56
57 // Remove event handlers from the original toggle as its hidden and conflicts with the new toggle.
58 $( '#wp-admin-bar-menu-toggle' ).off( 'click.wp-responsive' );
59
60 // Close any open toolbar submenus.
61 var hovers = adminbar.querySelectorAll( '.hover' );
62
63 const hoverLength = hovers.length;
64 for ( var i = 0; i < hoverLength; i++ ) {
65 hovers[ i ].classList.remove( 'hover' );
66 }
67 wpwrap.classList.toggle( 'wp-responsive-open' );
68 if ( wpwrap.classList.contains( 'wp-responsive-open' ) ) {
69 setAriaExpanded( 'true' );
70 var first = document.querySelector( '#adminmenu a' );
71 if ( first ) {
72 first.focus();
73 }
74 } else {
75 setAriaExpanded( 'false' );
76 }
77 }
78
79 if ( adminMenu ) {
80 var collapseButton = adminMenu.querySelector( '#collapse-button' );
81 // Nav-Unification feature:
82 // Saves the sidebar state in server when "Collapse menu" is clicked.
83 // This is needed so that we update WPCOM for this preference in real-time.
84 if ( collapseButton ) {
85 collapseButton.addEventListener( 'click', function ( event ) {
86 // Let's the core event listener be triggered first.
87 setTimeout( function () {
88 saveSidebarIsExpanded( event.target.parentNode.getAttribute( 'aria-expanded' ) );
89 }, 50 );
90 } );
91 }
92
93 adminMenu.addEventListener( 'click', function ( event ) {
94 if (
95 event.target.classList.contains( dismissClass ) ||
96 event.target.closest( '.' + dismissClass )
97 ) {
98 event.preventDefault();
99
100 const siteNotice = document.getElementById( 'toplevel_page_site-notices' );
101 if ( siteNotice ) {
102 siteNotice.style.display = 'none';
103 }
104
105 const jitmDismissButton = event.target;
106
107 makeAjaxRequest(
108 'POST',
109 ajaxurl,
110 'application/x-www-form-urlencoded; charset=UTF-8',
111 'id=' +
112 encodeURIComponent( jitmDismissButton.dataset.feature_id ) +
113 '&feature_class=' +
114 encodeURIComponent( jitmDismissButton.dataset.feature_class ) +
115 '&action=jitm_dismiss' +
116 '&_ajax_nonce=' +
117 jetpackAdminMenu.jitmDismissNonce
118 );
119 }
120 } );
121
122 makeAjaxRequest(
123 'GET',
124 ajaxurl + '?action=upsell_nudge_jitm&_ajax_nonce=' + jetpackAdminMenu.upsellNudgeJitm,
125 undefined,
126 null,
127 function ( xhr ) {
128 try {
129 if ( xhr.readyState === XMLHttpRequest.DONE ) {
130 if ( xhr.status === 200 && xhr.responseText ) {
131 adminMenu
132 .querySelector( '#toplevel_page_site_card' )
133 .insertAdjacentHTML( 'afterend', xhr.responseText );
134 }
135 }
136 } catch ( error ) {
137 // On failure, we just won't display an upsell nudge
138 }
139 }
140 );
141 }
142 }
143
144 function makeAjaxRequest( method, url, contentType, body = null, callback = null ) {
145 var xhr = new XMLHttpRequest();
146 xhr.open( method, url, true );
147 xhr.setRequestHeader( 'X-Requested-With', 'XMLHttpRequest' );
148 if ( contentType ) {
149 xhr.setRequestHeader( 'Content-Type', contentType );
150 }
151 xhr.withCredentials = true;
152 if ( callback ) {
153 xhr.onreadystatechange = function () {
154 callback( xhr );
155 };
156 }
157 xhr.send( body );
158 }
159
160 function saveSidebarIsExpanded( expanded ) {
161 makeAjaxRequest(
162 'POST',
163 ajaxurl,
164 'application/x-www-form-urlencoded; charset=UTF-8',
165 'action=sidebar_state&expanded=' + expanded
166 );
167 }
168
169 function setFocusOnActiveMenuItem() {
170 var currentMenuItem = document.querySelector( '.wp-submenu .current > a' );
171
172 if ( ! currentMenuItem ) {
173 return;
174 }
175
176 currentMenuItem.focus( { preventScroll: true } );
177 }
178
179 if ( document.readyState === 'loading' ) {
180 document.addEventListener( 'DOMContentLoaded', init );
181 } else {
182 init();
183 }
184 } )( jQuery );
185