Dashboard: Introduce a "Try Gutenberg" callout.
To encourage more people to try Gutenberg, this new Dashboard box allows site users to easily install and try out Gutenberg. Props pento, melchoyce, joen, karmatosed. Fixes #41316. Built from https://develop.svn.wordpress.org/trunk@41895 git-svn-id: http://core.svn.wordpress.org/trunk@41729 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
e914c0447c
commit
3981736cd6
|
@ -64,7 +64,7 @@ $core_actions_post = array(
|
|||
'parse-media-shortcode', 'destroy-sessions', 'install-plugin', 'update-plugin', 'crop-image',
|
||||
'generate-password', 'save-wporg-username', 'delete-plugin', 'search-plugins',
|
||||
'search-install-plugins', 'activate-plugin', 'update-theme', 'delete-theme', 'install-theme',
|
||||
'get-post-thumbnail-html', 'get-community-events', 'edit-theme-plugin-file',
|
||||
'get-post-thumbnail-html', 'get-community-events', 'edit-theme-plugin-file', 'update-try-gutenberg-panel',
|
||||
);
|
||||
|
||||
// Deprecated
|
||||
|
|
|
@ -764,6 +764,7 @@ img.emoji {
|
|||
|
||||
/* @todo can we combine these into a class or use an existing dashicon one? */
|
||||
.welcome-panel .welcome-panel-close:before,
|
||||
.try-gutenberg-panel .try-gutenberg-panel-close:before,
|
||||
.tagchecklist .ntdelbutton .remove-tag-icon:before,
|
||||
#bulk-titles div a:before,
|
||||
.notice-dismiss:before {
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -764,6 +764,7 @@ img.emoji {
|
|||
|
||||
/* @todo can we combine these into a class or use an existing dashicon one? */
|
||||
.welcome-panel .welcome-panel-close:before,
|
||||
.try-gutenberg-panel .try-gutenberg-panel-close:before,
|
||||
.tagchecklist .ntdelbutton .remove-tag-icon:before,
|
||||
#bulk-titles div a:before,
|
||||
.notice-dismiss:before {
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -98,7 +98,8 @@
|
|||
}
|
||||
|
||||
/* Welcome Panel */
|
||||
.welcome-panel {
|
||||
.welcome-panel,
|
||||
.try-gutenberg-panel {
|
||||
position: relative;
|
||||
overflow: auto;
|
||||
margin: 16px 0;
|
||||
|
@ -110,27 +111,33 @@
|
|||
line-height: 2.1em;
|
||||
}
|
||||
|
||||
.welcome-panel h2 {
|
||||
.welcome-panel h2,
|
||||
.try-gutenberg-panel h2 {
|
||||
margin: 0;
|
||||
font-size: 21px;
|
||||
font-weight: 400;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.welcome-panel h3 {
|
||||
.welcome-panel h3,
|
||||
.try-gutenberg-panel h3 {
|
||||
margin: 1.33em 0 0;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.welcome-panel li {
|
||||
.welcome-panel li,
|
||||
.try-gutenberg-panel li {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.welcome-panel p {
|
||||
.welcome-panel p,
|
||||
.try-gutenberg-panel p,
|
||||
.try-gutenberg-panel-column p.about-description {
|
||||
color: #72777c;
|
||||
}
|
||||
|
||||
.welcome-panel a {
|
||||
.welcome-panel a,
|
||||
.try-gutenberg-panel a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
|
@ -139,7 +146,13 @@
|
|||
margin: 0;
|
||||
}
|
||||
|
||||
.welcome-panel .welcome-panel-close {
|
||||
.try-gutenberg-panel .about-description {
|
||||
font-size: 16px;
|
||||
margin-top: 1.33em;
|
||||
}
|
||||
|
||||
.welcome-panel .welcome-panel-close,
|
||||
.try-gutenberg-panel .try-gutenberg-panel-close {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 10px;
|
||||
|
@ -149,7 +162,8 @@
|
|||
text-decoration: none;
|
||||
}
|
||||
|
||||
.welcome-panel .welcome-panel-close:before {
|
||||
.welcome-panel .welcome-panel-close:before,
|
||||
.try-gutenberg-panel .try-gutenberg-panel-close:before {
|
||||
position: absolute;
|
||||
top: 8px;
|
||||
right: 0;
|
||||
|
@ -164,27 +178,48 @@
|
|||
white-space: normal;
|
||||
}
|
||||
|
||||
.welcome-panel-content {
|
||||
margin-right: 13px;
|
||||
.welcome-panel-content,
|
||||
.try-gutenberg-panel-content {
|
||||
margin: 0 13px;
|
||||
max-width: 1500px;
|
||||
}
|
||||
|
||||
.welcome-panel .welcome-panel-column-container {
|
||||
.try-gutenberg-panel img {
|
||||
max-width: 360px;
|
||||
width: 100%;
|
||||
border: 1px solid #f3f4f5;
|
||||
}
|
||||
|
||||
.try-gutenberg-panel .install-now.updating-message:before,
|
||||
.try-gutenberg-panel .install-now.updated-message:before {
|
||||
margin-top: 11px;
|
||||
}
|
||||
|
||||
.welcome-panel .welcome-panel-column-container,
|
||||
.try-gutenberg-panel .try-gutenberg-panel-column-container {
|
||||
clear: both;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.welcome-panel .welcome-panel-column {
|
||||
.welcome-panel .welcome-panel-column,
|
||||
.try-gutenberg-panel .try-gutenberg-panel-column {
|
||||
width: 32%;
|
||||
min-width: 200px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.ie8 .welcome-panel .welcome-panel-column {
|
||||
.try-gutenberg-panel .try-gutenberg-panel-column {
|
||||
width: calc( 32% - 20px );
|
||||
padding: 0 0 20px 20px;
|
||||
}
|
||||
|
||||
.ie8 .welcome-panel .welcome-panel-column,
|
||||
.ie8 .try-gutenberg-panel .try-gutenberg-panel-column {
|
||||
min-width: 230px;
|
||||
}
|
||||
|
||||
.welcome-panel .welcome-panel-column:first-child {
|
||||
.welcome-panel .welcome-panel-column:first-child
|
||||
.try-gutenberg-panel .try-gutenberg-panel-column:first-child {
|
||||
width: 36%;
|
||||
}
|
||||
|
||||
|
@ -192,7 +227,8 @@
|
|||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.welcome-panel-column p {
|
||||
.welcome-panel-column p,
|
||||
.try-gutenberg-panel-column p {
|
||||
margin-top: 7px;
|
||||
color: #444;
|
||||
}
|
||||
|
@ -201,11 +237,13 @@
|
|||
line-height: 16px;
|
||||
}
|
||||
|
||||
.welcome-panel .welcome-panel-column ul {
|
||||
.welcome-panel .welcome-panel-column ul,
|
||||
.try-gutenberg-panel .try-gutenberg-panel-column ul {
|
||||
margin: 0.8em 0 1em 1em;
|
||||
}
|
||||
|
||||
.welcome-panel .welcome-panel-column li {
|
||||
.welcome-panel .welcome-panel-column li,
|
||||
.try-gutenberg-panel .try-gutenberg-panel-column li {
|
||||
line-height: 16px;
|
||||
list-style-type: none;
|
||||
padding: 0 0 8px;
|
||||
|
@ -1207,14 +1245,29 @@ a.rsswidget {
|
|||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
.try-gutenberg-panel .try-gutenberg-panel-image-column {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.try-gutenberg-panel .try-gutenberg-panel-column {
|
||||
width: calc( 49% - 20px );
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 870px) {
|
||||
.welcome-panel .welcome-panel-column,
|
||||
.try-gutenberg-panel .try-gutenberg-panel-column,
|
||||
.welcome-panel .welcome-panel-column:first-child {
|
||||
display: block;
|
||||
float: none;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.try-gutenberg-panel .try-gutenberg-panel-image-column {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.welcome-panel .welcome-panel-column li {
|
||||
display: inline-block;
|
||||
margin-left: 13px;
|
||||
|
@ -1223,7 +1276,6 @@ a.rsswidget {
|
|||
.welcome-panel .welcome-panel-column ul {
|
||||
margin: 0.4em 0 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media screen and ( max-width: 782px ) {
|
||||
|
@ -1266,7 +1318,8 @@ a.rsswidget {
|
|||
/* Smartphone */
|
||||
@media screen and (max-width: 600px) {
|
||||
/* Keep the close icon from overlapping the Welcome text. */
|
||||
.welcome-panel .welcome-panel-close {
|
||||
.welcome-panel .welcome-panel-close,
|
||||
.try-gutenberg-panel .try-gutenberg-panel-close {
|
||||
overflow: hidden;
|
||||
text-indent: 40px;
|
||||
white-space: nowrap;
|
||||
|
@ -1278,7 +1331,8 @@ a.rsswidget {
|
|||
}
|
||||
|
||||
/* Make the close icon larger for tappability. */
|
||||
.welcome-panel .welcome-panel-close:before {
|
||||
.welcome-panel .welcome-panel-close:before,
|
||||
.try-gutenberg-panel .try-gutenberg-panel-close:before {
|
||||
font-size: 20px;
|
||||
top: 5px;
|
||||
right: -35px;
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -98,7 +98,8 @@
|
|||
}
|
||||
|
||||
/* Welcome Panel */
|
||||
.welcome-panel {
|
||||
.welcome-panel,
|
||||
.try-gutenberg-panel {
|
||||
position: relative;
|
||||
overflow: auto;
|
||||
margin: 16px 0;
|
||||
|
@ -110,27 +111,33 @@
|
|||
line-height: 2.1em;
|
||||
}
|
||||
|
||||
.welcome-panel h2 {
|
||||
.welcome-panel h2,
|
||||
.try-gutenberg-panel h2 {
|
||||
margin: 0;
|
||||
font-size: 21px;
|
||||
font-weight: 400;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.welcome-panel h3 {
|
||||
.welcome-panel h3,
|
||||
.try-gutenberg-panel h3 {
|
||||
margin: 1.33em 0 0;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.welcome-panel li {
|
||||
.welcome-panel li,
|
||||
.try-gutenberg-panel li {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.welcome-panel p {
|
||||
.welcome-panel p,
|
||||
.try-gutenberg-panel p,
|
||||
.try-gutenberg-panel-column p.about-description {
|
||||
color: #72777c;
|
||||
}
|
||||
|
||||
.welcome-panel a {
|
||||
.welcome-panel a,
|
||||
.try-gutenberg-panel a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
|
@ -139,7 +146,13 @@
|
|||
margin: 0;
|
||||
}
|
||||
|
||||
.welcome-panel .welcome-panel-close {
|
||||
.try-gutenberg-panel .about-description {
|
||||
font-size: 16px;
|
||||
margin-top: 1.33em;
|
||||
}
|
||||
|
||||
.welcome-panel .welcome-panel-close,
|
||||
.try-gutenberg-panel .try-gutenberg-panel-close {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
|
@ -149,7 +162,8 @@
|
|||
text-decoration: none;
|
||||
}
|
||||
|
||||
.welcome-panel .welcome-panel-close:before {
|
||||
.welcome-panel .welcome-panel-close:before,
|
||||
.try-gutenberg-panel .try-gutenberg-panel-close:before {
|
||||
position: absolute;
|
||||
top: 8px;
|
||||
left: 0;
|
||||
|
@ -164,27 +178,48 @@
|
|||
white-space: normal;
|
||||
}
|
||||
|
||||
.welcome-panel-content {
|
||||
margin-left: 13px;
|
||||
.welcome-panel-content,
|
||||
.try-gutenberg-panel-content {
|
||||
margin: 0 13px;
|
||||
max-width: 1500px;
|
||||
}
|
||||
|
||||
.welcome-panel .welcome-panel-column-container {
|
||||
.try-gutenberg-panel img {
|
||||
max-width: 360px;
|
||||
width: 100%;
|
||||
border: 1px solid #f3f4f5;
|
||||
}
|
||||
|
||||
.try-gutenberg-panel .install-now.updating-message:before,
|
||||
.try-gutenberg-panel .install-now.updated-message:before {
|
||||
margin-top: 11px;
|
||||
}
|
||||
|
||||
.welcome-panel .welcome-panel-column-container,
|
||||
.try-gutenberg-panel .try-gutenberg-panel-column-container {
|
||||
clear: both;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.welcome-panel .welcome-panel-column {
|
||||
.welcome-panel .welcome-panel-column,
|
||||
.try-gutenberg-panel .try-gutenberg-panel-column {
|
||||
width: 32%;
|
||||
min-width: 200px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.ie8 .welcome-panel .welcome-panel-column {
|
||||
.try-gutenberg-panel .try-gutenberg-panel-column {
|
||||
width: calc( 32% - 20px );
|
||||
padding: 0 20px 20px 0;
|
||||
}
|
||||
|
||||
.ie8 .welcome-panel .welcome-panel-column,
|
||||
.ie8 .try-gutenberg-panel .try-gutenberg-panel-column {
|
||||
min-width: 230px;
|
||||
}
|
||||
|
||||
.welcome-panel .welcome-panel-column:first-child {
|
||||
.welcome-panel .welcome-panel-column:first-child
|
||||
.try-gutenberg-panel .try-gutenberg-panel-column:first-child {
|
||||
width: 36%;
|
||||
}
|
||||
|
||||
|
@ -192,7 +227,8 @@
|
|||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.welcome-panel-column p {
|
||||
.welcome-panel-column p,
|
||||
.try-gutenberg-panel-column p {
|
||||
margin-top: 7px;
|
||||
color: #444;
|
||||
}
|
||||
|
@ -201,11 +237,13 @@
|
|||
line-height: 16px;
|
||||
}
|
||||
|
||||
.welcome-panel .welcome-panel-column ul {
|
||||
.welcome-panel .welcome-panel-column ul,
|
||||
.try-gutenberg-panel .try-gutenberg-panel-column ul {
|
||||
margin: 0.8em 1em 1em 0;
|
||||
}
|
||||
|
||||
.welcome-panel .welcome-panel-column li {
|
||||
.welcome-panel .welcome-panel-column li,
|
||||
.try-gutenberg-panel .try-gutenberg-panel-column li {
|
||||
line-height: 16px;
|
||||
list-style-type: none;
|
||||
padding: 0 0 8px;
|
||||
|
@ -1207,14 +1245,29 @@ a.rsswidget {
|
|||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
.try-gutenberg-panel .try-gutenberg-panel-image-column {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.try-gutenberg-panel .try-gutenberg-panel-column {
|
||||
width: calc( 49% - 20px );
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 870px) {
|
||||
.welcome-panel .welcome-panel-column,
|
||||
.try-gutenberg-panel .try-gutenberg-panel-column,
|
||||
.welcome-panel .welcome-panel-column:first-child {
|
||||
display: block;
|
||||
float: none;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.try-gutenberg-panel .try-gutenberg-panel-image-column {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.welcome-panel .welcome-panel-column li {
|
||||
display: inline-block;
|
||||
margin-right: 13px;
|
||||
|
@ -1223,7 +1276,6 @@ a.rsswidget {
|
|||
.welcome-panel .welcome-panel-column ul {
|
||||
margin: 0.4em 0 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media screen and ( max-width: 782px ) {
|
||||
|
@ -1266,7 +1318,8 @@ a.rsswidget {
|
|||
/* Smartphone */
|
||||
@media screen and (max-width: 600px) {
|
||||
/* Keep the close icon from overlapping the Welcome text. */
|
||||
.welcome-panel .welcome-panel-close {
|
||||
.welcome-panel .welcome-panel-close,
|
||||
.try-gutenberg-panel .try-gutenberg-panel-close {
|
||||
overflow: hidden;
|
||||
text-indent: 40px;
|
||||
white-space: nowrap;
|
||||
|
@ -1278,7 +1331,8 @@ a.rsswidget {
|
|||
}
|
||||
|
||||
/* Make the close icon larger for tappability. */
|
||||
.welcome-panel .welcome-panel-close:before {
|
||||
.welcome-panel .welcome-panel-close:before,
|
||||
.try-gutenberg-panel .try-gutenberg-panel-close:before {
|
||||
font-size: 20px;
|
||||
top: 5px;
|
||||
left: -35px;
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1479,6 +1479,19 @@ function wp_ajax_update_welcome_panel() {
|
|||
wp_die( 1 );
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajax handler for updating whether to display the Try Gutenberg panel.
|
||||
*
|
||||
* @since 4.9.0
|
||||
*/
|
||||
function wp_ajax_update_try_gutenberg_panel() {
|
||||
check_ajax_referer( 'try-gutenberg-panel-nonce', 'trygutenbergpanelnonce' );
|
||||
|
||||
update_user_meta( get_current_user_id(), 'show_try_gutenberg_panel', empty( $_POST['visible'] ) ? 0 : 1 );
|
||||
|
||||
wp_die( 1 );
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajax handler for retrieving menu meta boxes.
|
||||
*
|
||||
|
|
|
@ -1020,7 +1020,10 @@ final class WP_Screen {
|
|||
update_user_meta( get_current_user_id(), 'show_welcome_panel', $welcome_checked );
|
||||
} else {
|
||||
$welcome_checked = get_user_meta( get_current_user_id(), 'show_welcome_panel', true );
|
||||
if ( 2 == $welcome_checked && wp_get_current_user()->user_email != get_option( 'admin_email' ) ) {
|
||||
if ( '' === $welcome_checked ) {
|
||||
$welcome_checked = '1';
|
||||
}
|
||||
if ( '2' === $welcome_checked && wp_get_current_user()->user_email != get_option( 'admin_email' ) ) {
|
||||
$welcome_checked = false;
|
||||
}
|
||||
}
|
||||
|
@ -1028,6 +1031,24 @@ final class WP_Screen {
|
|||
echo '<input type="checkbox" id="wp_welcome_panel-hide"' . checked( (bool) $welcome_checked, true, false ) . ' />';
|
||||
echo _x( 'Welcome', 'Welcome panel' ) . "</label>\n";
|
||||
}
|
||||
|
||||
if ( 'dashboard' === $this->id && has_action( 'try_gutenberg_panel' ) ) {
|
||||
if ( isset( $_GET['try_gutenberg'] ) ) {
|
||||
$try_gutenberg_checked = empty( $_GET['try_gutenberg'] ) ? 0 : 1;
|
||||
update_user_meta( get_current_user_id(), 'show_try_gutenberg_panel', $try_gutenberg_checked );
|
||||
} else {
|
||||
$try_gutenberg_checked = get_user_meta( get_current_user_id(), 'show_try_gutenberg_panel', true );
|
||||
if ( '' === $try_gutenberg_checked ) {
|
||||
$try_gutenberg_checked = '1';
|
||||
}
|
||||
if ( '2' === $try_gutenberg_checked && wp_get_current_user()->user_email != get_option( 'admin_email' ) ) {
|
||||
$try_gutenberg_checked = false;
|
||||
}
|
||||
}
|
||||
echo '<label for="wp_try_gutenberg_panel-hide">';
|
||||
echo '<input type="checkbox" id="wp_try_gutenberg_panel-hide"' . checked( (bool) $try_gutenberg_checked, true, false ) . ' />';
|
||||
echo __( 'New Editor' ) . "</label>\n";
|
||||
}
|
||||
?>
|
||||
</fieldset>
|
||||
<?php
|
||||
|
|
|
@ -1619,3 +1619,50 @@ function wp_welcome_panel() {
|
|||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays a Try Gutenberg Panel, to introduce people to Gutenberg
|
||||
*
|
||||
* @since 4.9.0
|
||||
*/
|
||||
function wp_try_gutenberg_panel() {
|
||||
$plugins = get_plugins();
|
||||
$action = $url = $classes = '';
|
||||
|
||||
if ( current_user_can( 'install_plugins' ) && empty( $plugins['gutenberg/gutenberg.php'] ) ) {
|
||||
$action = __( 'Install Today' );
|
||||
$url = wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=gutenberg' ), 'install-plugin_gutenberg' );
|
||||
$classes = ' install-now';
|
||||
} else if ( current_user_can( 'install_plugins' ) && is_plugin_inactive( 'gutenberg/gutenberg.php' ) ) {
|
||||
$action = __( 'Activate Today' );
|
||||
$url = wp_nonce_url( self_admin_url( 'plugins.php?action=activate&plugin=gutenberg/gutenberg.php&from=try-gutenberg' ), 'activate-plugin_gutenberg/gutenberg.php' );
|
||||
$classes = ' activate-now';
|
||||
} else if ( current_user_can( 'edit_posts' ) && is_plugin_active( 'gutenberg/gutenberg.php' ) ) {
|
||||
$action = __( 'Try Today' );
|
||||
$url = admin_url( 'admin.php?page=gutenberg-demo' );
|
||||
}
|
||||
|
||||
?>
|
||||
<div class="try-gutenberg-panel-content plugin-card-gutenberg">
|
||||
<div class="try-gutenberg-panel-column-container">
|
||||
<div class="try-gutenberg-panel-column try-gutenberg-panel-image-column">
|
||||
<img src="https://s.w.org/images/core/gutenberg-screenshot.gif?<?php echo date( 'Ymd' ); ?>" alt="<?php esc_attr_e( 'Gutenberg animated preview' ); ?>" />
|
||||
</div>
|
||||
<h2><?php _e( 'Try the new editing experience' ); ?></h2>
|
||||
<div class="try-gutenberg-panel-column">
|
||||
<p class="about-description"><?php _e( 'WordPress is working on a better way to control your content. How about giving it a try early?' ); ?></p>
|
||||
<?php if ( $action ) { ?>
|
||||
<p><a class="button button-primary button-hero<?php echo $classes; ?>" href="<?php echo esc_url( $url ); ?>"><?php echo $action; ?></a></p>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<div class="try-gutenberg-panel-column try-gutenberg-panel-last">
|
||||
<h3><?php _e( 'Want to get involved?' ); ?></h3>
|
||||
<ul>
|
||||
<li><?php printf( __( 'Learn more about the project <a href="%s">codenamed Gutenberg</a>.' ), 'https://wordpress.org/gutenberg/' ); ?></li>
|
||||
<li><?php printf( __( 'Help <a href="%1$s">with testing</a>, or contribute on the <a href="%2$s">GitHub repository</a>.' ), '', 'https://github.com/WordPress/gutenberg/' ); ?></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
|
|
@ -103,12 +103,38 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
|
|||
<div class="wrap">
|
||||
<h1><?php echo esc_html( $title ); ?></h1>
|
||||
|
||||
<?php if ( has_action( 'try_gutenberg_panel' ) ) :
|
||||
$classes = 'try-gutenberg-panel';
|
||||
|
||||
$option = get_user_meta( get_current_user_id(), 'show_try_gutenberg_panel', true );
|
||||
// 0 = hide, 1 = toggled to show or single site creator, 2 = multisite site owner
|
||||
$hide = '0' === $option || ( '2' === $option && wp_get_current_user()->user_email !== get_option( 'admin_email' ) );
|
||||
if ( $hide )
|
||||
$classes .= ' hidden'; ?>
|
||||
|
||||
<div id="try-gutenberg-panel" class="<?php echo esc_attr( $classes ); ?>">
|
||||
<?php wp_nonce_field( 'try-gutenberg-panel-nonce', 'trygutenbergpanelnonce', false ); ?>
|
||||
<a class="try-gutenberg-panel-close" href="<?php echo esc_url( admin_url( '?try_gutenberg=0' ) ); ?>" aria-label="<?php esc_attr_e( 'Dismiss the Try Gutenberg panel' ); ?>"><?php _e( 'Dismiss' ); ?></a>
|
||||
<?php
|
||||
/**
|
||||
* Add content to the Try Gutenberg panel on the admin dashboard.
|
||||
*
|
||||
* To remove the Try Gutenberg panel, use remove_action():
|
||||
*
|
||||
* remove_action( 'try_gutenberg_panel', 'wp_try_gutenberg_panel' );
|
||||
*
|
||||
* @since 4.9.0
|
||||
*/
|
||||
do_action( 'try_gutenberg_panel' );
|
||||
?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<?php if ( has_action( 'welcome_panel' ) && current_user_can( 'edit_theme_options' ) ) :
|
||||
$classes = 'welcome-panel';
|
||||
|
||||
$option = get_user_meta( get_current_user_id(), 'show_welcome_panel', true );
|
||||
// 0 = hide, 1 = toggled to show or single site creator, 2 = multisite site owner
|
||||
$hide = 0 == $option || ( 2 == $option && wp_get_current_user()->user_email != get_option( 'admin_email' ) );
|
||||
$hide = '0' === $option || ( '2' === $option && wp_get_current_user()->user_email != get_option( 'admin_email' ) );
|
||||
if ( $hide )
|
||||
$classes .= ' hidden'; ?>
|
||||
|
||||
|
|
|
@ -31,6 +31,48 @@ jQuery(document).ready( function($) {
|
|||
updateWelcomePanel( this.checked ? 1 : 0 );
|
||||
});
|
||||
|
||||
var tryGutenbergPanel = $( '#try-gutenberg-panel' ),
|
||||
tryGutenbergPanelHide = $('#wp_try_gutenberg_panel-hide'),
|
||||
updateTryGutenbergPanel, installGutenbergSuccess;
|
||||
|
||||
updateTryGutenbergPanel = function( visible ) {
|
||||
$.post( ajaxurl, {
|
||||
action: 'update-try-gutenberg-panel',
|
||||
visible: visible,
|
||||
trygutenbergpanelnonce: $( '#trygutenbergpanelnonce' ).val()
|
||||
});
|
||||
};
|
||||
|
||||
installGutenbergSuccess = function( response ) {
|
||||
response.activateUrl += '&from=try-gutenberg';
|
||||
wp.updates.installPluginSuccess( response );
|
||||
};
|
||||
|
||||
if ( tryGutenbergPanel.hasClass('hidden') && tryGutenbergPanelHide.prop('checked') ) {
|
||||
tryGutenbergPanel.removeClass('hidden');
|
||||
}
|
||||
|
||||
$('.try-gutenberg-panel-close, .try-gutenberg-panel-dismiss a', tryGutenbergPanel).click( function(e) {
|
||||
e.preventDefault();
|
||||
tryGutenbergPanel.addClass('hidden');
|
||||
updateTryGutenbergPanel( 0 );
|
||||
$('#wp_try_gutenberg_panel-hide').prop('checked', false);
|
||||
});
|
||||
|
||||
tryGutenbergPanelHide.click( function() {
|
||||
tryGutenbergPanel.toggleClass('hidden', ! this.checked );
|
||||
updateTryGutenbergPanel( this.checked ? 1 : 0 );
|
||||
});
|
||||
|
||||
tryGutenbergPanel.on( 'click', '.install-now', function( e ) {
|
||||
e.preventDefault();
|
||||
var args = {
|
||||
slug: 'gutenberg',
|
||||
success: installGutenbergSuccess,
|
||||
};
|
||||
wp.updates.installPlugin( args );
|
||||
} );
|
||||
|
||||
// These widgets are sometimes populated via ajax
|
||||
ajaxWidgets = ['dashboard_primary'];
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -585,10 +585,18 @@
|
|||
|
||||
$message
|
||||
.removeClass( 'updating-message' )
|
||||
.addClass( 'updated-message installed button-disabled' )
|
||||
.addClass( 'updated-message installed' )
|
||||
.attr( 'aria-label', wp.updates.l10n.pluginInstalledLabel.replace( '%s', response.pluginName ) )
|
||||
.text( wp.updates.l10n.pluginInstalled );
|
||||
|
||||
if ( $message.hasClass( 'button-primary' ) ) {
|
||||
$message.addClass( 'button-primary-disabled' );
|
||||
} else if ( $message.hasClass( 'button-secondary' ) ) {
|
||||
$message.addClass( 'button-secondary-disabled' );
|
||||
} else {
|
||||
$message.addClass( 'button-disabled' );
|
||||
}
|
||||
|
||||
wp.a11y.speak( wp.updates.l10n.installedMsg, 'polite' );
|
||||
|
||||
$document.trigger( 'wp-plugin-install-success', response );
|
||||
|
@ -597,7 +605,8 @@
|
|||
setTimeout( function() {
|
||||
|
||||
// Transform the 'Install' button into an 'Activate' button.
|
||||
$message.removeClass( 'install-now installed button-disabled updated-message' ).addClass( 'activate-now button-primary' )
|
||||
$message.removeClass( 'install-now installed button-primary-disabled button-secondary-disabled button-disabled updated-message' )
|
||||
.addClass( 'activate-now button-primary' )
|
||||
.attr( 'href', response.activateUrl )
|
||||
.attr( 'aria-label', wp.updates.l10n.activatePluginLabel.replace( '%s', response.pluginName ) )
|
||||
.text( wp.updates.l10n.activatePlugin );
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -65,6 +65,8 @@ if ( $action ) {
|
|||
wp_redirect( self_admin_url("import.php?import=" . str_replace('-importer', '', dirname($plugin))) ); // overrides the ?error=true one above and redirects to the Imports page, stripping the -importer suffix
|
||||
} else if ( isset($_GET['from']) && 'press-this' == $_GET['from'] ) {
|
||||
wp_redirect( self_admin_url( "press-this.php") );
|
||||
} else if ( isset($_GET['from']) && 'try-gutenberg' == $_GET['from'] ) {
|
||||
wp_redirect( self_admin_url( "admin.php?page=gutenberg-demo") );
|
||||
} else {
|
||||
wp_redirect( self_admin_url("plugins.php?activate=true&plugin_status=$status&paged=$page&s=$s") ); // overrides the ?error=true one above
|
||||
}
|
||||
|
|
|
@ -322,6 +322,7 @@ add_action( 'wp_scheduled_auto_draft_delete', 'wp_delete_auto_drafts'
|
|||
add_action( 'admin_init', 'send_frame_options_header', 10, 0 );
|
||||
add_action( 'importer_scheduled_cleanup', 'wp_delete_attachment' );
|
||||
add_action( 'upgrader_scheduled_cleanup', 'wp_delete_attachment' );
|
||||
add_action( 'try_gutenberg_panel', 'wp_try_gutenberg_panel' );
|
||||
add_action( 'welcome_panel', 'wp_welcome_panel' );
|
||||
|
||||
// Navigation menu actions
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
*
|
||||
* @global string $wp_version
|
||||
*/
|
||||
$wp_version = '4.9-beta2-41894';
|
||||
$wp_version = '4.9-beta2-41895';
|
||||
|
||||
/**
|
||||
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
||||
|
|
Loading…
Reference in New Issue