author | ymh <ymh.work@gmail.com> |
Mon, 14 Oct 2019 18:30:03 +0200 | |
changeset 10 | 372f2766ea20 |
parent 9 | 177826044cd9 |
child 16 | a86126ab1dd4 |
permissions | -rw-r--r-- |
0 | 1 |
<?php |
2 |
/** |
|
3 |
* WordPress Dashboard Widget Administration Screen API |
|
4 |
* |
|
5 |
* @package WordPress |
|
6 |
* @subpackage Administration |
|
7 |
*/ |
|
8 |
||
9 |
/** |
|
10 |
* Registers dashboard widgets. |
|
11 |
* |
|
12 |
* Handles POST data, sets up filters. |
|
13 |
* |
|
14 |
* @since 2.5.0 |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
15 |
* |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
16 |
* @global array $wp_registered_widgets |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
17 |
* @global array $wp_registered_widget_controls |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
18 |
* @global array $wp_dashboard_control_callbacks |
0 | 19 |
*/ |
20 |
function wp_dashboard_setup() { |
|
21 |
global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks; |
|
22 |
$wp_dashboard_control_callbacks = array(); |
|
9 | 23 |
$screen = get_current_screen(); |
0 | 24 |
|
25 |
/* Register Widgets and Controls */ |
|
26 |
||
27 |
$response = wp_check_browser_version(); |
|
28 |
||
29 |
if ( $response && $response['upgrade'] ) { |
|
30 |
add_filter( 'postbox_classes_dashboard_dashboard_browser_nag', 'dashboard_browser_nag_class' ); |
|
9 | 31 |
if ( $response['insecure'] ) { |
0 | 32 |
wp_add_dashboard_widget( 'dashboard_browser_nag', __( 'You are using an insecure browser!' ), 'wp_dashboard_browser_nag' ); |
9 | 33 |
} else { |
0 | 34 |
wp_add_dashboard_widget( 'dashboard_browser_nag', __( 'Your browser is out of date!' ), 'wp_dashboard_browser_nag' ); |
9 | 35 |
} |
36 |
} |
|
37 |
||
38 |
// PHP Version. |
|
39 |
$response = wp_check_php_version(); |
|
40 |
if ( $response && isset( $response['is_acceptable'] ) && ! $response['is_acceptable'] && current_user_can( 'update_php' ) ) { |
|
41 |
add_filter( 'postbox_classes_dashboard_dashboard_php_nag', 'dashboard_php_nag_class' ); |
|
42 |
wp_add_dashboard_widget( 'dashboard_php_nag', __( 'PHP Update Required' ), 'wp_dashboard_php_nag' ); |
|
0 | 43 |
} |
44 |
||
45 |
// Right Now |
|
9 | 46 |
if ( is_blog_admin() && current_user_can( 'edit_posts' ) ) { |
5 | 47 |
wp_add_dashboard_widget( 'dashboard_right_now', __( 'At a Glance' ), 'wp_dashboard_right_now' ); |
9 | 48 |
} |
0 | 49 |
|
9 | 50 |
if ( is_network_admin() ) { |
0 | 51 |
wp_add_dashboard_widget( 'network_dashboard_right_now', __( 'Right Now' ), 'wp_network_dashboard_right_now' ); |
9 | 52 |
} |
0 | 53 |
|
5 | 54 |
// Activity Widget |
55 |
if ( is_blog_admin() ) { |
|
56 |
wp_add_dashboard_widget( 'dashboard_activity', __( 'Activity' ), 'wp_dashboard_site_activity' ); |
|
0 | 57 |
} |
58 |
||
59 |
// QuickPress Widget |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
60 |
if ( is_blog_admin() && current_user_can( get_post_type_object( 'post' )->cap->create_posts ) ) { |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
61 |
$quick_draft_title = sprintf( '<span class="hide-if-no-js">%1$s</span> <span class="hide-if-js">%2$s</span>', __( 'Quick Draft' ), __( 'Your Recent Drafts' ) ); |
5 | 62 |
wp_add_dashboard_widget( 'dashboard_quick_press', $quick_draft_title, 'wp_dashboard_quick_press' ); |
0 | 63 |
} |
5 | 64 |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
65 |
// WordPress Events and News |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
66 |
wp_add_dashboard_widget( 'dashboard_primary', __( 'WordPress Events and News' ), 'wp_dashboard_events_news' ); |
5 | 67 |
|
68 |
if ( is_network_admin() ) { |
|
0 | 69 |
|
5 | 70 |
/** |
71 |
* Fires after core widgets for the Network Admin dashboard have been registered. |
|
72 |
* |
|
73 |
* @since 3.1.0 |
|
74 |
*/ |
|
75 |
do_action( 'wp_network_dashboard_setup' ); |
|
0 | 76 |
|
5 | 77 |
/** |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
78 |
* Filters the list of widgets to load for the Network Admin dashboard. |
5 | 79 |
* |
80 |
* @since 3.1.0 |
|
81 |
* |
|
9 | 82 |
* @param string[] $dashboard_widgets An array of dashboard widget IDs. |
5 | 83 |
*/ |
0 | 84 |
$dashboard_widgets = apply_filters( 'wp_network_dashboard_widgets', array() ); |
85 |
} elseif ( is_user_admin() ) { |
|
5 | 86 |
|
87 |
/** |
|
88 |
* Fires after core widgets for the User Admin dashboard have been registered. |
|
89 |
* |
|
90 |
* @since 3.1.0 |
|
91 |
*/ |
|
0 | 92 |
do_action( 'wp_user_dashboard_setup' ); |
5 | 93 |
|
94 |
/** |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
95 |
* Filters the list of widgets to load for the User Admin dashboard. |
5 | 96 |
* |
97 |
* @since 3.1.0 |
|
98 |
* |
|
9 | 99 |
* @param string[] $dashboard_widgets An array of dashboard widget IDs. |
5 | 100 |
*/ |
0 | 101 |
$dashboard_widgets = apply_filters( 'wp_user_dashboard_widgets', array() ); |
102 |
} else { |
|
5 | 103 |
|
104 |
/** |
|
105 |
* Fires after core widgets for the admin dashboard have been registered. |
|
106 |
* |
|
107 |
* @since 2.5.0 |
|
108 |
*/ |
|
0 | 109 |
do_action( 'wp_dashboard_setup' ); |
5 | 110 |
|
111 |
/** |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
112 |
* Filters the list of widgets to load for the admin dashboard. |
5 | 113 |
* |
114 |
* @since 2.5.0 |
|
115 |
* |
|
9 | 116 |
* @param string[] $dashboard_widgets An array of dashboard widget IDs. |
5 | 117 |
*/ |
0 | 118 |
$dashboard_widgets = apply_filters( 'wp_dashboard_widgets', array() ); |
119 |
} |
|
120 |
||
121 |
foreach ( $dashboard_widgets as $widget_id ) { |
|
9 | 122 |
$name = empty( $wp_registered_widgets[ $widget_id ]['all_link'] ) ? $wp_registered_widgets[ $widget_id ]['name'] : $wp_registered_widgets[ $widget_id ]['name'] . " <a href='{$wp_registered_widgets[$widget_id]['all_link']}' class='edit-box open-box'>" . __( 'View all' ) . '</a>'; |
123 |
wp_add_dashboard_widget( $widget_id, $name, $wp_registered_widgets[ $widget_id ]['callback'], $wp_registered_widget_controls[ $widget_id ]['callback'] ); |
|
0 | 124 |
} |
125 |
||
9 | 126 |
if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset( $_POST['widget_id'] ) ) { |
0 | 127 |
check_admin_referer( 'edit-dashboard-widget_' . $_POST['widget_id'], 'dashboard-widget-nonce' ); |
128 |
ob_start(); // hack - but the same hack wp-admin/widgets.php uses |
|
129 |
wp_dashboard_trigger_widget_control( $_POST['widget_id'] ); |
|
130 |
ob_end_clean(); |
|
131 |
wp_redirect( remove_query_arg( 'edit' ) ); |
|
132 |
exit; |
|
133 |
} |
|
134 |
||
9 | 135 |
/** This action is documented in wp-admin/includes/meta-boxes.php */ |
5 | 136 |
do_action( 'do_meta_boxes', $screen->id, 'normal', '' ); |
0 | 137 |
|
9 | 138 |
/** This action is documented in wp-admin/includes/meta-boxes.php */ |
5 | 139 |
do_action( 'do_meta_boxes', $screen->id, 'side', '' ); |
0 | 140 |
} |
141 |
||
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
142 |
/** |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
143 |
* Adds a new dashboard widget. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
144 |
* |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
145 |
* @since 2.7.0 |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
146 |
* |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
147 |
* @global array $wp_dashboard_control_callbacks |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
148 |
* |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
149 |
* @param string $widget_id Widget ID (used in the 'id' attribute for the widget). |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
150 |
* @param string $widget_name Title of the widget. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
151 |
* @param callable $callback Function that fills the widget with the desired content. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
152 |
* The function should echo its output. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
153 |
* @param callable $control_callback Optional. Function that outputs controls for the widget. Default null. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
154 |
* @param array $callback_args Optional. Data that should be set as the $args property of the widget array |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
155 |
* (which is the second parameter passed to your callback). Default null. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
156 |
*/ |
0 | 157 |
function wp_add_dashboard_widget( $widget_id, $widget_name, $callback, $control_callback = null, $callback_args = null ) { |
158 |
$screen = get_current_screen(); |
|
159 |
global $wp_dashboard_control_callbacks; |
|
160 |
||
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
161 |
$private_callback_args = array( '__widget_basename' => $widget_name ); |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
162 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
163 |
if ( is_null( $callback_args ) ) { |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
164 |
$callback_args = $private_callback_args; |
9 | 165 |
} elseif ( is_array( $callback_args ) ) { |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
166 |
$callback_args = array_merge( $callback_args, $private_callback_args ); |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
167 |
} |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
168 |
|
0 | 169 |
if ( $control_callback && current_user_can( 'edit_dashboard' ) && is_callable( $control_callback ) ) { |
9 | 170 |
$wp_dashboard_control_callbacks[ $widget_id ] = $control_callback; |
0 | 171 |
if ( isset( $_GET['edit'] ) && $widget_id == $_GET['edit'] ) { |
9 | 172 |
list($url) = explode( '#', add_query_arg( 'edit', false ), 2 ); |
0 | 173 |
$widget_name .= ' <span class="postbox-title-action"><a href="' . esc_url( $url ) . '">' . __( 'Cancel' ) . '</a></span>'; |
9 | 174 |
$callback = '_wp_dashboard_control_callback'; |
0 | 175 |
} else { |
9 | 176 |
list($url) = explode( '#', add_query_arg( 'edit', $widget_id ), 2 ); |
0 | 177 |
$widget_name .= ' <span class="postbox-title-action"><a href="' . esc_url( "$url#$widget_id" ) . '" class="edit-box open-box">' . __( 'Configure' ) . '</a></span>'; |
178 |
} |
|
179 |
} |
|
180 |
||
5 | 181 |
$side_widgets = array( 'dashboard_quick_press', 'dashboard_primary' ); |
0 | 182 |
|
183 |
$location = 'normal'; |
|
9 | 184 |
if ( in_array( $widget_id, $side_widgets ) ) { |
0 | 185 |
$location = 'side'; |
9 | 186 |
} |
187 |
||
188 |
$high_priority_widgets = array( 'dashboard_browser_nag', 'dashboard_php_nag' ); |
|
0 | 189 |
|
190 |
$priority = 'core'; |
|
9 | 191 |
if ( in_array( $widget_id, $high_priority_widgets, true ) ) { |
0 | 192 |
$priority = 'high'; |
9 | 193 |
} |
0 | 194 |
|
195 |
add_meta_box( $widget_id, $widget_name, $callback, $screen, $location, $priority, $callback_args ); |
|
196 |
} |
|
197 |
||
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
198 |
/** |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
199 |
* Outputs controls for the current dashboard widget. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
200 |
* |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
201 |
* @access private |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
202 |
* @since 2.7.0 |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
203 |
* |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
204 |
* @param mixed $dashboard |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
205 |
* @param array $meta_box |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
206 |
*/ |
0 | 207 |
function _wp_dashboard_control_callback( $dashboard, $meta_box ) { |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
208 |
echo '<form method="post" class="dashboard-widget-control-form wp-clearfix">'; |
0 | 209 |
wp_dashboard_trigger_widget_control( $meta_box['id'] ); |
210 |
wp_nonce_field( 'edit-dashboard-widget_' . $meta_box['id'], 'dashboard-widget-nonce' ); |
|
9 | 211 |
echo '<input type="hidden" name="widget_id" value="' . esc_attr( $meta_box['id'] ) . '" />'; |
212 |
submit_button( __( 'Submit' ) ); |
|
0 | 213 |
echo '</form>'; |
214 |
} |
|
215 |
||
216 |
/** |
|
217 |
* Displays the dashboard. |
|
218 |
* |
|
219 |
* @since 2.5.0 |
|
220 |
*/ |
|
221 |
function wp_dashboard() { |
|
9 | 222 |
$screen = get_current_screen(); |
223 |
$columns = absint( $screen->get_columns() ); |
|
5 | 224 |
$columns_css = ''; |
225 |
if ( $columns ) { |
|
226 |
$columns_css = " columns-$columns"; |
|
227 |
} |
|
0 | 228 |
|
9 | 229 |
?> |
5 | 230 |
<div id="dashboard-widgets" class="metabox-holder<?php echo $columns_css; ?>"> |
231 |
<div id="postbox-container-1" class="postbox-container"> |
|
0 | 232 |
<?php do_meta_boxes( $screen->id, 'normal', '' ); ?> |
233 |
</div> |
|
5 | 234 |
<div id="postbox-container-2" class="postbox-container"> |
0 | 235 |
<?php do_meta_boxes( $screen->id, 'side', '' ); ?> |
236 |
</div> |
|
5 | 237 |
<div id="postbox-container-3" class="postbox-container"> |
0 | 238 |
<?php do_meta_boxes( $screen->id, 'column3', '' ); ?> |
239 |
</div> |
|
5 | 240 |
<div id="postbox-container-4" class="postbox-container"> |
0 | 241 |
<?php do_meta_boxes( $screen->id, 'column4', '' ); ?> |
242 |
</div> |
|
243 |
</div> |
|
244 |
||
9 | 245 |
<?php |
0 | 246 |
wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); |
247 |
wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); |
|
248 |
||
249 |
} |
|
250 |
||
5 | 251 |
// |
252 |
// Dashboard Widgets |
|
253 |
// |
|
0 | 254 |
|
5 | 255 |
/** |
256 |
* Dashboard widget that displays some basic stats about the site. |
|
257 |
* |
|
258 |
* Formerly 'Right Now'. A streamlined 'At a Glance' as of 3.8. |
|
259 |
* |
|
260 |
* @since 2.7.0 |
|
261 |
*/ |
|
262 |
function wp_dashboard_right_now() { |
|
9 | 263 |
?> |
5 | 264 |
<div class="main"> |
265 |
<ul> |
|
266 |
<?php |
|
267 |
// Posts and Pages |
|
268 |
foreach ( array( 'post', 'page' ) as $post_type ) { |
|
269 |
$num_posts = wp_count_posts( $post_type ); |
|
270 |
if ( $num_posts && $num_posts->publish ) { |
|
271 |
if ( 'post' == $post_type ) { |
|
272 |
$text = _n( '%s Post', '%s Posts', $num_posts->publish ); |
|
273 |
} else { |
|
274 |
$text = _n( '%s Page', '%s Pages', $num_posts->publish ); |
|
275 |
} |
|
9 | 276 |
$text = sprintf( $text, number_format_i18n( $num_posts->publish ) ); |
5 | 277 |
$post_type_object = get_post_type_object( $post_type ); |
278 |
if ( $post_type_object && current_user_can( $post_type_object->cap->edit_posts ) ) { |
|
279 |
printf( '<li class="%1$s-count"><a href="edit.php?post_type=%1$s">%2$s</a></li>', $post_type, $text ); |
|
280 |
} else { |
|
281 |
printf( '<li class="%1$s-count"><span>%2$s</span></li>', $post_type, $text ); |
|
282 |
} |
|
283 |
} |
|
0 | 284 |
} |
5 | 285 |
// Comments |
286 |
$num_comm = wp_count_comments(); |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
287 |
if ( $num_comm && ( $num_comm->approved || $num_comm->moderated ) ) { |
5 | 288 |
$text = sprintf( _n( '%s Comment', '%s Comments', $num_comm->approved ), number_format_i18n( $num_comm->approved ) ); |
289 |
?> |
|
290 |
<li class="comment-count"><a href="edit-comments.php"><?php echo $text; ?></a></li> |
|
291 |
<?php |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
292 |
$moderated_comments_count_i18n = number_format_i18n( $num_comm->moderated ); |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
293 |
/* translators: %s: number of comments in moderation */ |
9 | 294 |
$text = sprintf( _n( '%s Comment in moderation', '%s Comments in moderation', $num_comm->moderated ), $moderated_comments_count_i18n ); |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
295 |
?> |
9 | 296 |
<li class="comment-mod-count |
297 |
<?php |
|
298 |
if ( ! $num_comm->moderated ) { |
|
299 |
echo ' hidden'; |
|
300 |
} |
|
301 |
?> |
|
302 |
"><a href="edit-comments.php?comment_status=moderated" class="comments-in-moderation-text"><?php echo $text; ?></a></li> |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
303 |
<?php |
0 | 304 |
} |
305 |
||
5 | 306 |
/** |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
307 |
* Filters the array of extra elements to list in the 'At a Glance' |
5 | 308 |
* dashboard widget. |
309 |
* |
|
310 |
* Prior to 3.8.0, the widget was named 'Right Now'. Each element |
|
311 |
* is wrapped in list-item tags on output. |
|
312 |
* |
|
313 |
* @since 3.8.0 |
|
314 |
* |
|
9 | 315 |
* @param string[] $items Array of extra 'At a Glance' widget items. |
5 | 316 |
*/ |
317 |
$elements = apply_filters( 'dashboard_glance_items', array() ); |
|
0 | 318 |
|
5 | 319 |
if ( $elements ) { |
320 |
echo '<li>' . implode( "</li>\n<li>", $elements ) . "</li>\n"; |
|
321 |
} |
|
0 | 322 |
|
5 | 323 |
?> |
324 |
</ul> |
|
325 |
<?php |
|
326 |
update_right_now_message(); |
|
0 | 327 |
|
328 |
// Check if search engines are asked not to index this site. |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
329 |
if ( ! is_network_admin() && ! is_user_admin() && current_user_can( 'manage_options' ) && '0' == get_option( 'blog_public' ) ) { |
5 | 330 |
|
331 |
/** |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
332 |
* Filters the link title attribute for the 'Search Engines Discouraged' |
5 | 333 |
* message displayed in the 'At a Glance' dashboard widget. |
334 |
* |
|
335 |
* Prior to 3.8.0, the widget was named 'Right Now'. |
|
336 |
* |
|
337 |
* @since 3.0.0 |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
338 |
* @since 4.5.0 The default for `$title` was updated to an empty string. |
5 | 339 |
* |
340 |
* @param string $title Default attribute text. |
|
341 |
*/ |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
342 |
$title = apply_filters( 'privacy_on_link_title', '' ); |
5 | 343 |
|
344 |
/** |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
345 |
* Filters the link label for the 'Search Engines Discouraged' message |
5 | 346 |
* displayed in the 'At a Glance' dashboard widget. |
347 |
* |
|
348 |
* Prior to 3.8.0, the widget was named 'Right Now'. |
|
349 |
* |
|
350 |
* @since 3.0.0 |
|
351 |
* |
|
352 |
* @param string $content Default text. |
|
353 |
*/ |
|
9 | 354 |
$content = apply_filters( 'privacy_on_link_text', __( 'Search Engines Discouraged' ) ); |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
355 |
$title_attr = '' === $title ? '' : " title='$title'"; |
0 | 356 |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
357 |
echo "<p><a href='options-reading.php'$title_attr>$content</a></p>"; |
0 | 358 |
} |
5 | 359 |
?> |
360 |
</div> |
|
361 |
<?php |
|
362 |
/* |
|
363 |
* activity_box_end has a core action, but only prints content when multisite. |
|
364 |
* Using an output buffer is the only way to really check if anything's displayed here. |
|
365 |
*/ |
|
366 |
ob_start(); |
|
0 | 367 |
|
5 | 368 |
/** |
369 |
* Fires at the end of the 'At a Glance' dashboard widget. |
|
370 |
* |
|
371 |
* Prior to 3.8.0, the widget was named 'Right Now'. |
|
372 |
* |
|
373 |
* @since 2.5.0 |
|
374 |
*/ |
|
0 | 375 |
do_action( 'rightnow_end' ); |
5 | 376 |
|
377 |
/** |
|
378 |
* Fires at the end of the 'At a Glance' dashboard widget. |
|
379 |
* |
|
380 |
* Prior to 3.8.0, the widget was named 'Right Now'. |
|
381 |
* |
|
382 |
* @since 2.0.0 |
|
383 |
*/ |
|
0 | 384 |
do_action( 'activity_box_end' ); |
5 | 385 |
|
386 |
$actions = ob_get_clean(); |
|
387 |
||
9 | 388 |
if ( ! empty( $actions ) ) : |
389 |
?> |
|
5 | 390 |
<div class="sub"> |
391 |
<?php echo $actions; ?> |
|
392 |
</div> |
|
9 | 393 |
<?php |
394 |
endif; |
|
0 | 395 |
} |
396 |
||
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
397 |
/** |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
398 |
* @since 3.1.0 |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
399 |
*/ |
0 | 400 |
function wp_network_dashboard_right_now() { |
401 |
$actions = array(); |
|
9 | 402 |
if ( current_user_can( 'create_sites' ) ) { |
403 |
$actions['create-site'] = '<a href="' . network_admin_url( 'site-new.php' ) . '">' . __( 'Create a New Site' ) . '</a>'; |
|
404 |
} |
|
405 |
if ( current_user_can( 'create_users' ) ) { |
|
406 |
$actions['create-user'] = '<a href="' . network_admin_url( 'user-new.php' ) . '">' . __( 'Create a New User' ) . '</a>'; |
|
407 |
} |
|
0 | 408 |
|
409 |
$c_users = get_user_count(); |
|
410 |
$c_blogs = get_blog_count(); |
|
411 |
||
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
412 |
/* translators: %s: number of users on the network */ |
0 | 413 |
$user_text = sprintf( _n( '%s user', '%s users', $c_users ), number_format_i18n( $c_users ) ); |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
414 |
/* translators: %s: number of sites on the network */ |
0 | 415 |
$blog_text = sprintf( _n( '%s site', '%s sites', $c_blogs ), number_format_i18n( $c_blogs ) ); |
416 |
||
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
417 |
/* translators: 1: text indicating the number of sites on the network, 2: text indicating the number of users on the network */ |
0 | 418 |
$sentence = sprintf( __( 'You have %1$s and %2$s.' ), $blog_text, $user_text ); |
419 |
||
420 |
if ( $actions ) { |
|
421 |
echo '<ul class="subsubsub">'; |
|
422 |
foreach ( $actions as $class => $action ) { |
|
9 | 423 |
$actions[ $class ] = "\t<li class='$class'>$action"; |
0 | 424 |
} |
425 |
echo implode( " |</li>\n", $actions ) . "</li>\n"; |
|
426 |
echo '</ul>'; |
|
427 |
} |
|
9 | 428 |
?> |
0 | 429 |
<br class="clear" /> |
430 |
||
431 |
<p class="youhave"><?php echo $sentence; ?></p> |
|
5 | 432 |
|
433 |
||
434 |
<?php |
|
435 |
/** |
|
436 |
* Fires in the Network Admin 'Right Now' dashboard widget |
|
437 |
* just before the user and site search form fields. |
|
438 |
* |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
439 |
* @since MU (3.0.0) |
5 | 440 |
*/ |
9 | 441 |
do_action( 'wpmuadminresult' ); |
5 | 442 |
?> |
0 | 443 |
|
9 | 444 |
<form action="<?php echo network_admin_url( 'users.php' ); ?>" method="get"> |
0 | 445 |
<p> |
5 | 446 |
<label class="screen-reader-text" for="search-users"><?php _e( 'Search Users' ); ?></label> |
447 |
<input type="search" name="s" value="" size="30" autocomplete="off" id="search-users"/> |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
448 |
<?php submit_button( __( 'Search Users' ), '', false, false, array( 'id' => 'submit_users' ) ); ?> |
0 | 449 |
</p> |
450 |
</form> |
|
451 |
||
9 | 452 |
<form action="<?php echo network_admin_url( 'sites.php' ); ?>" method="get"> |
0 | 453 |
<p> |
5 | 454 |
<label class="screen-reader-text" for="search-sites"><?php _e( 'Search Sites' ); ?></label> |
455 |
<input type="search" name="s" value="" size="30" autocomplete="off" id="search-sites"/> |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
456 |
<?php submit_button( __( 'Search Sites' ), '', false, false, array( 'id' => 'submit_sites' ) ); ?> |
0 | 457 |
</p> |
458 |
</form> |
|
9 | 459 |
<?php |
5 | 460 |
/** |
461 |
* Fires at the end of the 'Right Now' widget in the Network Admin dashboard. |
|
462 |
* |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
463 |
* @since MU (3.0.0) |
5 | 464 |
*/ |
0 | 465 |
do_action( 'mu_rightnow_end' ); |
5 | 466 |
|
467 |
/** |
|
468 |
* Fires at the end of the 'Right Now' widget in the Network Admin dashboard. |
|
469 |
* |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
470 |
* @since MU (3.0.0) |
5 | 471 |
*/ |
0 | 472 |
do_action( 'mu_activity_box_end' ); |
473 |
} |
|
474 |
||
5 | 475 |
/** |
476 |
* The Quick Draft widget display and creation of drafts. |
|
477 |
* |
|
478 |
* @since 3.8.0 |
|
479 |
* |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
480 |
* @global int $post_ID |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
481 |
* |
5 | 482 |
* @param string $error_msg Optional. Error message. Default false. |
483 |
*/ |
|
484 |
function wp_dashboard_quick_press( $error_msg = false ) { |
|
0 | 485 |
global $post_ID; |
486 |
||
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
487 |
if ( ! current_user_can( 'edit_posts' ) ) { |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
488 |
return; |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
489 |
} |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
490 |
|
0 | 491 |
/* Check if a new auto-draft (= no new post_ID) is needed or if the old can be used */ |
492 |
$last_post_id = (int) get_user_option( 'dashboard_quick_press_last_post_id' ); // Get the last post_ID |
|
493 |
if ( $last_post_id ) { |
|
494 |
$post = get_post( $last_post_id ); |
|
495 |
if ( empty( $post ) || $post->post_status != 'auto-draft' ) { // auto-draft doesn't exists anymore |
|
5 | 496 |
$post = get_default_post_to_edit( 'post', true ); |
0 | 497 |
update_user_option( get_current_user_id(), 'dashboard_quick_press_last_post_id', (int) $post->ID ); // Save post_ID |
498 |
} else { |
|
499 |
$post->post_title = ''; // Remove the auto draft title |
|
500 |
} |
|
501 |
} else { |
|
9 | 502 |
$post = get_default_post_to_edit( 'post', true ); |
0 | 503 |
$user_id = get_current_user_id(); |
504 |
// Don't create an option if this is a super admin who does not belong to this site. |
|
9 | 505 |
if ( in_array( get_current_blog_id(), array_keys( get_blogs_of_user( $user_id ) ) ) ) { |
0 | 506 |
update_user_option( $user_id, 'dashboard_quick_press_last_post_id', (int) $post->ID ); // Save post_ID |
9 | 507 |
} |
0 | 508 |
} |
509 |
||
510 |
$post_ID = (int) $post->ID; |
|
9 | 511 |
?> |
0 | 512 |
|
5 | 513 |
<form name="post" action="<?php echo esc_url( admin_url( 'post.php' ) ); ?>" method="post" id="quick-press" class="initial-form hide-if-no-js"> |
514 |
||
515 |
<?php if ( $error_msg ) : ?> |
|
516 |
<div class="error"><?php echo $error_msg; ?></div> |
|
517 |
<?php endif; ?> |
|
518 |
||
0 | 519 |
<div class="input-text-wrap" id="title-wrap"> |
9 | 520 |
<label for="title"> |
5 | 521 |
<?php |
522 |
/** This filter is documented in wp-admin/edit-form-advanced.php */ |
|
523 |
echo apply_filters( 'enter_title_here', __( 'Title' ), $post ); |
|
524 |
?> |
|
525 |
</label> |
|
526 |
<input type="text" name="post_title" id="title" autocomplete="off" /> |
|
0 | 527 |
</div> |
528 |
||
5 | 529 |
<div class="textarea-wrap" id="description-wrap"> |
9 | 530 |
<label for="content"><?php _e( 'Content' ); ?></label> |
531 |
<textarea name="content" id="content" placeholder="<?php esc_attr_e( 'What’s on your mind?' ); ?>" class="mceEditor" rows="3" cols="15" autocomplete="off"></textarea> |
|
0 | 532 |
</div> |
533 |
||
534 |
<p class="submit"> |
|
5 | 535 |
<input type="hidden" name="action" id="quickpost-action" value="post-quickdraft-save" /> |
0 | 536 |
<input type="hidden" name="post_ID" value="<?php echo $post_ID; ?>" /> |
537 |
<input type="hidden" name="post_type" value="post" /> |
|
5 | 538 |
<?php wp_nonce_field( 'add-post' ); ?> |
539 |
<?php submit_button( __( 'Save Draft' ), 'primary', 'save', false, array( 'id' => 'save-post' ) ); ?> |
|
0 | 540 |
<br class="clear" /> |
541 |
</p> |
|
542 |
||
543 |
</form> |
|
5 | 544 |
<?php |
545 |
wp_dashboard_recent_drafts(); |
|
0 | 546 |
} |
547 |
||
548 |
/** |
|
5 | 549 |
* Show recent drafts of the user on the dashboard. |
0 | 550 |
* |
5 | 551 |
* @since 2.7.0 |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
552 |
* |
9 | 553 |
* @param WP_Post[] $drafts Optional. Array of posts to display. Default false. |
0 | 554 |
*/ |
5 | 555 |
function wp_dashboard_recent_drafts( $drafts = false ) { |
556 |
if ( ! $drafts ) { |
|
557 |
$query_args = array( |
|
558 |
'post_type' => 'post', |
|
559 |
'post_status' => 'draft', |
|
560 |
'author' => get_current_user_id(), |
|
561 |
'posts_per_page' => 4, |
|
562 |
'orderby' => 'modified', |
|
9 | 563 |
'order' => 'DESC', |
5 | 564 |
); |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
565 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
566 |
/** |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
567 |
* Filters the post query arguments for the 'Recent Drafts' dashboard widget. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
568 |
* |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
569 |
* @since 4.4.0 |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
570 |
* |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
571 |
* @param array $query_args The query arguments for the 'Recent Drafts' dashboard widget. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
572 |
*/ |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
573 |
$query_args = apply_filters( 'dashboard_recent_drafts_query_args', $query_args ); |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
574 |
|
5 | 575 |
$drafts = get_posts( $query_args ); |
576 |
if ( ! $drafts ) { |
|
577 |
return; |
|
9 | 578 |
} |
579 |
} |
|
0 | 580 |
|
5 | 581 |
echo '<div class="drafts">'; |
582 |
if ( count( $drafts ) > 3 ) { |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
583 |
echo '<p class="view-all"><a href="' . esc_url( admin_url( 'edit.php?post_status=draft' ) ) . '">' . __( 'View all drafts' ) . "</a></p>\n"; |
9 | 584 |
} |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
585 |
echo '<h2 class="hide-if-no-js">' . __( 'Your Recent Drafts' ) . "</h2>\n<ul>"; |
0 | 586 |
|
5 | 587 |
$drafts = array_slice( $drafts, 0, 3 ); |
588 |
foreach ( $drafts as $draft ) { |
|
9 | 589 |
$url = get_edit_post_link( $draft->ID ); |
5 | 590 |
$title = _draft_or_post_title( $draft->ID ); |
591 |
echo "<li>\n"; |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
592 |
/* translators: %s: post title */ |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
593 |
echo '<div class="draft-title"><a href="' . esc_url( $url ) . '" aria-label="' . esc_attr( sprintf( __( 'Edit “%s”' ), $title ) ) . '">' . esc_html( $title ) . '</a>'; |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
594 |
echo '<time datetime="' . get_the_time( 'c', $draft ) . '">' . get_the_time( __( 'F j, Y' ), $draft ) . '</time></div>'; |
5 | 595 |
if ( $the_content = wp_trim_words( $draft->post_content, 10 ) ) { |
596 |
echo '<p>' . $the_content . '</p>'; |
|
9 | 597 |
} |
5 | 598 |
echo "</li>\n"; |
9 | 599 |
} |
5 | 600 |
echo "</ul>\n</div>"; |
0 | 601 |
} |
602 |
||
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
603 |
/** |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
604 |
* Outputs a row for the Recent Comments widget. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
605 |
* |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
606 |
* @access private |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
607 |
* @since 2.7.0 |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
608 |
* |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
609 |
* @global WP_Comment $comment |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
610 |
* |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
611 |
* @param WP_Comment $comment The current comment. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
612 |
* @param bool $show_date Optional. Whether to display the date. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
613 |
*/ |
0 | 614 |
function _wp_dashboard_recent_comments_row( &$comment, $show_date = true ) { |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
615 |
$GLOBALS['comment'] = clone $comment; |
0 | 616 |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
617 |
if ( $comment->comment_post_ID > 0 ) { |
5 | 618 |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
619 |
$comment_post_title = _draft_or_post_title( $comment->comment_post_ID ); |
9 | 620 |
$comment_post_url = get_the_permalink( $comment->comment_post_ID ); |
621 |
$comment_post_link = "<a href='$comment_post_url'>$comment_post_title</a>"; |
|
5 | 622 |
} else { |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
623 |
$comment_post_link = ''; |
5 | 624 |
} |
625 |
||
0 | 626 |
$actions_string = ''; |
627 |
if ( current_user_can( 'edit_comment', $comment->comment_ID ) ) { |
|
5 | 628 |
// Pre-order it: Approve | Reply | Edit | Spam | Trash. |
0 | 629 |
$actions = array( |
9 | 630 |
'approve' => '', |
631 |
'unapprove' => '', |
|
632 |
'reply' => '', |
|
633 |
'edit' => '', |
|
634 |
'spam' => '', |
|
635 |
'trash' => '', |
|
636 |
'delete' => '', |
|
637 |
'view' => '', |
|
0 | 638 |
); |
639 |
||
9 | 640 |
$del_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "delete-comment_$comment->comment_ID" ) ); |
0 | 641 |
$approve_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "approve-comment_$comment->comment_ID" ) ); |
642 |
||
9 | 643 |
$approve_url = esc_url( "comment.php?action=approvecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$approve_nonce" ); |
0 | 644 |
$unapprove_url = esc_url( "comment.php?action=unapprovecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$approve_nonce" ); |
9 | 645 |
$spam_url = esc_url( "comment.php?action=spamcomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" ); |
646 |
$trash_url = esc_url( "comment.php?action=trashcomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" ); |
|
647 |
$delete_url = esc_url( "comment.php?action=deletecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" ); |
|
0 | 648 |
|
9 | 649 |
$actions['approve'] = "<a href='$approve_url' data-wp-lists='dim:the-comment-list:comment-$comment->comment_ID:unapproved:e7e7d3:e7e7d3:new=approved' class='vim-a aria-button-if-js' aria-label='" . esc_attr__( 'Approve this comment' ) . "'>" . __( 'Approve' ) . '</a>'; |
650 |
$actions['unapprove'] = "<a href='$unapprove_url' data-wp-lists='dim:the-comment-list:comment-$comment->comment_ID:unapproved:e7e7d3:e7e7d3:new=unapproved' class='vim-u aria-button-if-js' aria-label='" . esc_attr__( 'Unapprove this comment' ) . "'>" . __( 'Unapprove' ) . '</a>'; |
|
651 |
$actions['edit'] = "<a href='comment.php?action=editcomment&c={$comment->comment_ID}' aria-label='" . esc_attr__( 'Edit this comment' ) . "'>" . __( 'Edit' ) . '</a>'; |
|
652 |
$actions['reply'] = '<button type="button" onclick="window.commentReply && commentReply.open(\'' . $comment->comment_ID . '\',\'' . $comment->comment_post_ID . '\');" class="vim-r button-link hide-if-no-js" aria-label="' . esc_attr__( 'Reply to this comment' ) . '">' . __( 'Reply' ) . '</button>'; |
|
653 |
$actions['spam'] = "<a href='$spam_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID::spam=1' class='vim-s vim-destructive aria-button-if-js' aria-label='" . esc_attr__( 'Mark this comment as spam' ) . "'>" . /* translators: mark as spam link */ _x( 'Spam', 'verb' ) . '</a>'; |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
654 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
655 |
if ( ! EMPTY_TRASH_DAYS ) { |
9 | 656 |
$actions['delete'] = "<a href='$delete_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID::trash=1' class='delete vim-d vim-destructive aria-button-if-js' aria-label='" . esc_attr__( 'Delete this comment permanently' ) . "'>" . __( 'Delete Permanently' ) . '</a>'; |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
657 |
} else { |
9 | 658 |
$actions['trash'] = "<a href='$trash_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID::trash=1' class='delete vim-d vim-destructive aria-button-if-js' aria-label='" . esc_attr__( 'Move this comment to the Trash' ) . "'>" . _x( 'Trash', 'verb' ) . '</a>'; |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
659 |
} |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
660 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
661 |
$actions['view'] = '<a class="comment-link" href="' . esc_url( get_comment_link( $comment ) ) . '" aria-label="' . esc_attr__( 'View this comment' ) . '">' . __( 'View' ) . '</a>'; |
0 | 662 |
|
5 | 663 |
/** |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
664 |
* Filters the action links displayed for each comment in the 'Recent Comments' |
5 | 665 |
* dashboard widget. |
666 |
* |
|
667 |
* @since 2.6.0 |
|
668 |
* |
|
9 | 669 |
* @param string[] $actions An array of comment actions. Default actions include: |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
670 |
* 'Approve', 'Unapprove', 'Edit', 'Reply', 'Spam', |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
671 |
* 'Delete', and 'Trash'. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
672 |
* @param WP_Comment $comment The comment object. |
5 | 673 |
*/ |
9 | 674 |
$actions = apply_filters( 'comment_row_actions', array_filter( $actions ), $comment ); |
0 | 675 |
|
676 |
$i = 0; |
|
677 |
foreach ( $actions as $action => $link ) { |
|
678 |
++$i; |
|
9 | 679 |
( ( ( 'approve' == $action || 'unapprove' == $action ) && 2 === $i ) || 1 === $i ) ? $sep = '' : $sep = ' | '; |
0 | 680 |
|
681 |
// Reply and quickedit need a hide-if-no-js span |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
682 |
if ( 'reply' == $action || 'quickedit' == $action ) { |
0 | 683 |
$action .= ' hide-if-no-js'; |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
684 |
} |
0 | 685 |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
686 |
if ( 'view' === $action && '1' !== $comment->comment_approved ) { |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
687 |
$action .= ' hidden'; |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
688 |
} |
0 | 689 |
$actions_string .= "<span class='$action'>$sep$link</span>"; |
690 |
} |
|
691 |
} |
|
9 | 692 |
?> |
0 | 693 |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
694 |
<li id="comment-<?php echo $comment->comment_ID; ?>" <?php comment_class( array( 'comment-item', wp_get_comment_status( $comment ) ), $comment ); ?>> |
0 | 695 |
|
696 |
<?php echo get_avatar( $comment, 50, 'mystery' ); ?> |
|
697 |
||
9 | 698 |
<?php if ( ! $comment->comment_type || 'comment' == $comment->comment_type ) : ?> |
5 | 699 |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
700 |
<div class="dashboard-comment-wrap has-row-actions"> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
701 |
<p class="comment-meta"> |
9 | 702 |
<?php |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
703 |
// Comments might not have a post they relate to, e.g. programmatically created ones. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
704 |
if ( $comment_post_link ) { |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
705 |
printf( |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
706 |
/* translators: 1: comment author, 2: post link, 3: notification if the comment is pending */ |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
707 |
__( 'From %1$s on %2$s %3$s' ), |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
708 |
'<cite class="comment-author">' . get_comment_author_link( $comment ) . '</cite>', |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
709 |
$comment_post_link, |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
710 |
'<span class="approve">' . __( '[Pending]' ) . '</span>' |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
711 |
); |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
712 |
} else { |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
713 |
printf( |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
714 |
/* translators: 1: comment author, 2: notification if the comment is pending */ |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
715 |
__( 'From %1$s %2$s' ), |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
716 |
'<cite class="comment-author">' . get_comment_author_link( $comment ) . '</cite>', |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
717 |
'<span class="approve">' . __( '[Pending]' ) . '</span>' |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
718 |
); |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
719 |
} |
9 | 720 |
?> |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
721 |
</p> |
0 | 722 |
|
9 | 723 |
<?php |
0 | 724 |
else : |
5 | 725 |
switch ( $comment->comment_type ) { |
9 | 726 |
case 'pingback': |
5 | 727 |
$type = __( 'Pingback' ); |
728 |
break; |
|
9 | 729 |
case 'trackback': |
5 | 730 |
$type = __( 'Trackback' ); |
731 |
break; |
|
9 | 732 |
default: |
5 | 733 |
$type = ucwords( $comment->comment_type ); |
734 |
} |
|
0 | 735 |
$type = esc_html( $type ); |
9 | 736 |
?> |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
737 |
<div class="dashboard-comment-wrap has-row-actions"> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
738 |
<p class="comment-meta"> |
9 | 739 |
<?php |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
740 |
// Pingbacks, Trackbacks or custom comment types might not have a post they relate to, e.g. programmatically created ones. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
741 |
if ( $comment_post_link ) { |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
742 |
printf( |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
743 |
/* translators: 1: type of comment, 2: post link, 3: notification if the comment is pending */ |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
744 |
_x( '%1$s on %2$s %3$s', 'dashboard' ), |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
745 |
"<strong>$type</strong>", |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
746 |
$comment_post_link, |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
747 |
'<span class="approve">' . __( '[Pending]' ) . '</span>' |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
748 |
); |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
749 |
} else { |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
750 |
printf( |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
751 |
/* translators: 1: type of comment, 2: notification if the comment is pending */ |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
752 |
_x( '%1$s %2$s', 'dashboard' ), |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
753 |
"<strong>$type</strong>", |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
754 |
'<span class="approve">' . __( '[Pending]' ) . '</span>' |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
755 |
); |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
756 |
} |
9 | 757 |
?> |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
758 |
</p> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
759 |
<p class="comment-author"><?php comment_author_link( $comment ); ?></p> |
0 | 760 |
|
761 |
<?php endif; // comment_type ?> |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
762 |
<blockquote><p><?php comment_excerpt( $comment ); ?></p></blockquote> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
763 |
<?php if ( $actions_string ) : ?> |
0 | 764 |
<p class="row-actions"><?php echo $actions_string; ?></p> |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
765 |
<?php endif; ?> |
0 | 766 |
</div> |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
767 |
</li> |
9 | 768 |
<?php |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
769 |
$GLOBALS['comment'] = null; |
0 | 770 |
} |
771 |
||
772 |
/** |
|
5 | 773 |
* Callback function for Activity widget. |
0 | 774 |
* |
5 | 775 |
* @since 3.8.0 |
0 | 776 |
*/ |
5 | 777 |
function wp_dashboard_site_activity() { |
778 |
||
779 |
echo '<div id="activity-widget">'; |
|
0 | 780 |
|
9 | 781 |
$future_posts = wp_dashboard_recent_posts( |
782 |
array( |
|
783 |
'max' => 5, |
|
784 |
'status' => 'future', |
|
785 |
'order' => 'ASC', |
|
786 |
'title' => __( 'Publishing Soon' ), |
|
787 |
'id' => 'future-posts', |
|
788 |
) |
|
789 |
); |
|
790 |
$recent_posts = wp_dashboard_recent_posts( |
|
791 |
array( |
|
792 |
'max' => 5, |
|
793 |
'status' => 'publish', |
|
794 |
'order' => 'DESC', |
|
795 |
'title' => __( 'Recently Published' ), |
|
796 |
'id' => 'published-posts', |
|
797 |
) |
|
798 |
); |
|
0 | 799 |
|
5 | 800 |
$recent_comments = wp_dashboard_recent_comments(); |
801 |
||
9 | 802 |
if ( ! $future_posts && ! $recent_posts && ! $recent_comments ) { |
5 | 803 |
echo '<div class="no-activity">'; |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
804 |
echo '<p class="smiley" aria-hidden="true"></p>'; |
5 | 805 |
echo '<p>' . __( 'No activity yet!' ) . '</p>'; |
806 |
echo '</div>'; |
|
0 | 807 |
} |
808 |
||
5 | 809 |
echo '</div>'; |
0 | 810 |
} |
811 |
||
812 |
/** |
|
5 | 813 |
* Generates Publishing Soon and Recently Published sections. |
814 |
* |
|
815 |
* @since 3.8.0 |
|
816 |
* |
|
817 |
* @param array $args { |
|
818 |
* An array of query and display arguments. |
|
0 | 819 |
* |
5 | 820 |
* @type int $max Number of posts to display. |
821 |
* @type string $status Post status. |
|
822 |
* @type string $order Designates ascending ('ASC') or descending ('DESC') order. |
|
823 |
* @type string $title Section title. |
|
824 |
* @type string $id The container id. |
|
825 |
* } |
|
826 |
* @return bool False if no posts were found. True otherwise. |
|
0 | 827 |
*/ |
5 | 828 |
function wp_dashboard_recent_posts( $args ) { |
829 |
$query_args = array( |
|
830 |
'post_type' => 'post', |
|
831 |
'post_status' => $args['status'], |
|
832 |
'orderby' => 'date', |
|
833 |
'order' => $args['order'], |
|
834 |
'posts_per_page' => intval( $args['max'] ), |
|
835 |
'no_found_rows' => true, |
|
836 |
'cache_results' => false, |
|
837 |
'perm' => ( 'future' === $args['status'] ) ? 'editable' : 'readable', |
|
838 |
); |
|
839 |
||
840 |
/** |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
841 |
* Filters the query arguments used for the Recent Posts widget. |
5 | 842 |
* |
843 |
* @since 4.2.0 |
|
844 |
* |
|
845 |
* @param array $query_args The arguments passed to WP_Query to produce the list of posts. |
|
846 |
*/ |
|
847 |
$query_args = apply_filters( 'dashboard_recent_posts_query_args', $query_args ); |
|
9 | 848 |
$posts = new WP_Query( $query_args ); |
0 | 849 |
|
5 | 850 |
if ( $posts->have_posts() ) { |
851 |
||
852 |
echo '<div id="' . $args['id'] . '" class="activity-block">'; |
|
853 |
||
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
854 |
echo '<h3>' . $args['title'] . '</h3>'; |
5 | 855 |
|
856 |
echo '<ul>'; |
|
857 |
||
9 | 858 |
$today = current_time( 'Y-m-d' ); |
859 |
$tomorrow = gmdate( 'Y-m-d', strtotime( '+1 day', current_time( 'timestamp' ) ) ); |
|
860 |
$year = current_time( 'Y' ); |
|
5 | 861 |
|
862 |
while ( $posts->have_posts() ) { |
|
863 |
$posts->the_post(); |
|
864 |
||
865 |
$time = get_the_time( 'U' ); |
|
866 |
if ( date( 'Y-m-d', $time ) == $today ) { |
|
867 |
$relative = __( 'Today' ); |
|
868 |
} elseif ( date( 'Y-m-d', $time ) == $tomorrow ) { |
|
869 |
$relative = __( 'Tomorrow' ); |
|
9 | 870 |
} elseif ( date( 'Y', $time ) !== $year ) { |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
871 |
/* translators: date and time format for recent posts on the dashboard, from a different calendar year, see https://secure.php.net/date */ |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
872 |
$relative = date_i18n( __( 'M jS Y' ), $time ); |
5 | 873 |
} else { |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
874 |
/* translators: date and time format for recent posts on the dashboard, see https://secure.php.net/date */ |
5 | 875 |
$relative = date_i18n( __( 'M jS' ), $time ); |
876 |
} |
|
877 |
||
878 |
// Use the post edit link for those who can edit, the permalink otherwise. |
|
879 |
$recent_post_link = current_user_can( 'edit_post', get_the_ID() ) ? get_edit_post_link() : get_permalink(); |
|
880 |
||
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
881 |
$draft_or_post_title = _draft_or_post_title(); |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
882 |
printf( |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
883 |
'<li><span>%1$s</span> <a href="%2$s" aria-label="%3$s">%4$s</a></li>', |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
884 |
/* translators: 1: relative date, 2: time */ |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
885 |
sprintf( _x( '%1$s, %2$s', 'dashboard' ), $relative, get_the_time() ), |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
886 |
$recent_post_link, |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
887 |
/* translators: %s: post title */ |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
888 |
esc_attr( sprintf( __( 'Edit “%s”' ), $draft_or_post_title ) ), |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
889 |
$draft_or_post_title |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
890 |
); |
0 | 891 |
} |
892 |
||
5 | 893 |
echo '</ul>'; |
894 |
echo '</div>'; |
|
895 |
||
896 |
} else { |
|
897 |
return false; |
|
0 | 898 |
} |
899 |
||
5 | 900 |
wp_reset_postdata(); |
0 | 901 |
|
5 | 902 |
return true; |
0 | 903 |
} |
904 |
||
905 |
/** |
|
5 | 906 |
* Show Comments section. |
907 |
* |
|
908 |
* @since 3.8.0 |
|
909 |
* |
|
910 |
* @param int $total_items Optional. Number of comments to query. Default 5. |
|
911 |
* @return bool False if no comments were found. True otherwise. |
|
912 |
*/ |
|
913 |
function wp_dashboard_recent_comments( $total_items = 5 ) { |
|
914 |
// Select all comment types and filter out spam later for better query performance. |
|
915 |
$comments = array(); |
|
916 |
||
917 |
$comments_query = array( |
|
918 |
'number' => $total_items * 5, |
|
9 | 919 |
'offset' => 0, |
5 | 920 |
); |
9 | 921 |
if ( ! current_user_can( 'edit_posts' ) ) { |
5 | 922 |
$comments_query['status'] = 'approve'; |
9 | 923 |
} |
5 | 924 |
|
925 |
while ( count( $comments ) < $total_items && $possible = get_comments( $comments_query ) ) { |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
926 |
if ( ! is_array( $possible ) ) { |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
927 |
break; |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
928 |
} |
5 | 929 |
foreach ( $possible as $comment ) { |
9 | 930 |
if ( ! current_user_can( 'read_post', $comment->comment_post_ID ) ) { |
5 | 931 |
continue; |
9 | 932 |
} |
5 | 933 |
$comments[] = $comment; |
9 | 934 |
if ( count( $comments ) == $total_items ) { |
5 | 935 |
break 2; |
9 | 936 |
} |
5 | 937 |
} |
938 |
$comments_query['offset'] += $comments_query['number']; |
|
9 | 939 |
$comments_query['number'] = $total_items * 10; |
5 | 940 |
} |
941 |
||
942 |
if ( $comments ) { |
|
943 |
echo '<div id="latest-comments" class="activity-block">'; |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
944 |
echo '<h3>' . __( 'Recent Comments' ) . '</h3>'; |
5 | 945 |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
946 |
echo '<ul id="the-comment-list" data-wp-lists="list:comment">'; |
9 | 947 |
foreach ( $comments as $comment ) { |
5 | 948 |
_wp_dashboard_recent_comments_row( $comment ); |
9 | 949 |
} |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
950 |
echo '</ul>'; |
5 | 951 |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
952 |
if ( current_user_can( 'edit_posts' ) ) { |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
953 |
echo '<h3 class="screen-reader-text">' . __( 'View more comments' ) . '</h3>'; |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
954 |
_get_list_table( 'WP_Comments_List_Table' )->views(); |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
955 |
} |
5 | 956 |
|
957 |
wp_comment_reply( -1, false, 'dashboard', false ); |
|
958 |
wp_comment_trashnotice(); |
|
959 |
||
960 |
echo '</div>'; |
|
961 |
} else { |
|
962 |
return false; |
|
963 |
} |
|
964 |
return true; |
|
965 |
} |
|
966 |
||
967 |
/** |
|
968 |
* Display generic dashboard RSS widget feed. |
|
0 | 969 |
* |
970 |
* @since 2.5.0 |
|
971 |
* |
|
972 |
* @param string $widget_id |
|
973 |
*/ |
|
974 |
function wp_dashboard_rss_output( $widget_id ) { |
|
975 |
$widgets = get_option( 'dashboard_widget_options' ); |
|
976 |
echo '<div class="rss-widget">'; |
|
5 | 977 |
wp_widget_rss_output( $widgets[ $widget_id ] ); |
9 | 978 |
echo '</div>'; |
0 | 979 |
} |
980 |
||
981 |
/** |
|
982 |
* Checks to see if all of the feed url in $check_urls are cached. |
|
983 |
* |
|
984 |
* If $check_urls is empty, look for the rss feed url found in the dashboard |
|
985 |
* widget options of $widget_id. If cached, call $callback, a function that |
|
986 |
* echoes out output for this widget. If not cache, echo a "Loading..." stub |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
987 |
* which is later replaced by Ajax call (see top of /wp-admin/index.php) |
0 | 988 |
* |
989 |
* @since 2.5.0 |
|
990 |
* |
|
991 |
* @param string $widget_id |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
992 |
* @param callable $callback |
0 | 993 |
* @param array $check_urls RSS feeds |
994 |
* @return bool False on failure. True on success. |
|
995 |
*/ |
|
996 |
function wp_dashboard_cached_rss_widget( $widget_id, $callback, $check_urls = array() ) { |
|
9 | 997 |
$loading = '<p class="widget-loading hide-if-no-js">' . __( 'Loading…' ) . '</p><div class="hide-if-js notice notice-error inline"><p>' . __( 'This widget requires JavaScript.' ) . '</p></div>'; |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
998 |
$doing_ajax = wp_doing_ajax(); |
0 | 999 |
|
9 | 1000 |
if ( empty( $check_urls ) ) { |
0 | 1001 |
$widgets = get_option( 'dashboard_widget_options' ); |
9 | 1002 |
if ( empty( $widgets[ $widget_id ]['url'] ) && ! $doing_ajax ) { |
0 | 1003 |
echo $loading; |
1004 |
return false; |
|
1005 |
} |
|
9 | 1006 |
$check_urls = array( $widgets[ $widget_id ]['url'] ); |
0 | 1007 |
} |
1008 |
||
9 | 1009 |
$locale = get_user_locale(); |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1010 |
$cache_key = 'dash_v2_' . md5( $widget_id . '_' . $locale ); |
0 | 1011 |
if ( false !== ( $output = get_transient( $cache_key ) ) ) { |
1012 |
echo $output; |
|
1013 |
return true; |
|
1014 |
} |
|
1015 |
||
1016 |
if ( ! $doing_ajax ) { |
|
1017 |
echo $loading; |
|
1018 |
return false; |
|
1019 |
} |
|
1020 |
||
1021 |
if ( $callback && is_callable( $callback ) ) { |
|
5 | 1022 |
$args = array_slice( func_get_args(), 3 ); |
1023 |
array_unshift( $args, $widget_id, $check_urls ); |
|
0 | 1024 |
ob_start(); |
1025 |
call_user_func_array( $callback, $args ); |
|
1026 |
set_transient( $cache_key, ob_get_flush(), 12 * HOUR_IN_SECONDS ); // Default lifetime in cache of 12 hours (same as the feeds) |
|
1027 |
} |
|
1028 |
||
1029 |
return true; |
|
1030 |
} |
|
1031 |
||
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1032 |
// |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1033 |
// Dashboard Widgets Controls |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1034 |
// |
0 | 1035 |
|
1036 |
/** |
|
1037 |
* Calls widget control callback. |
|
1038 |
* |
|
1039 |
* @since 2.5.0 |
|
1040 |
* |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1041 |
* @global array $wp_dashboard_control_callbacks |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1042 |
* |
0 | 1043 |
* @param int $widget_control_id Registered Widget ID. |
1044 |
*/ |
|
1045 |
function wp_dashboard_trigger_widget_control( $widget_control_id = false ) { |
|
1046 |
global $wp_dashboard_control_callbacks; |
|
1047 |
||
9 | 1048 |
if ( is_scalar( $widget_control_id ) && $widget_control_id && isset( $wp_dashboard_control_callbacks[ $widget_control_id ] ) && is_callable( $wp_dashboard_control_callbacks[ $widget_control_id ] ) ) { |
1049 |
call_user_func( |
|
1050 |
$wp_dashboard_control_callbacks[ $widget_control_id ], |
|
1051 |
'', |
|
1052 |
array( |
|
1053 |
'id' => $widget_control_id, |
|
1054 |
'callback' => $wp_dashboard_control_callbacks[ $widget_control_id ], |
|
1055 |
) |
|
1056 |
); |
|
0 | 1057 |
} |
1058 |
} |
|
1059 |
||
1060 |
/** |
|
1061 |
* The RSS dashboard widget control. |
|
1062 |
* |
|
1063 |
* Sets up $args to be used as input to wp_widget_rss_form(). Handles POST data |
|
1064 |
* from RSS-type widgets. |
|
1065 |
* |
|
1066 |
* @since 2.5.0 |
|
1067 |
* |
|
1068 |
* @param string $widget_id |
|
1069 |
* @param array $form_inputs |
|
1070 |
*/ |
|
1071 |
function wp_dashboard_rss_control( $widget_id, $form_inputs = array() ) { |
|
9 | 1072 |
if ( ! $widget_options = get_option( 'dashboard_widget_options' ) ) { |
0 | 1073 |
$widget_options = array(); |
9 | 1074 |
} |
0 | 1075 |
|
9 | 1076 |
if ( ! isset( $widget_options[ $widget_id ] ) ) { |
1077 |
$widget_options[ $widget_id ] = array(); |
|
1078 |
} |
|
0 | 1079 |
|
9 | 1080 |
$number = 1; // Hack to use wp_widget_rss_form() |
1081 |
$widget_options[ $widget_id ]['number'] = $number; |
|
0 | 1082 |
|
9 | 1083 |
if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset( $_POST['widget-rss'][ $number ] ) ) { |
1084 |
$_POST['widget-rss'][ $number ] = wp_unslash( $_POST['widget-rss'][ $number ] ); |
|
1085 |
$widget_options[ $widget_id ] = wp_widget_rss_process( $_POST['widget-rss'][ $number ] ); |
|
1086 |
$widget_options[ $widget_id ]['number'] = $number; |
|
5 | 1087 |
|
1088 |
// Title is optional. If black, fill it if possible. |
|
9 | 1089 |
if ( ! $widget_options[ $widget_id ]['title'] && isset( $_POST['widget-rss'][ $number ]['title'] ) ) { |
1090 |
$rss = fetch_feed( $widget_options[ $widget_id ]['url'] ); |
|
1091 |
if ( is_wp_error( $rss ) ) { |
|
1092 |
$widget_options[ $widget_id ]['title'] = htmlentities( __( 'Unknown Feed' ) ); |
|
0 | 1093 |
} else { |
9 | 1094 |
$widget_options[ $widget_id ]['title'] = htmlentities( strip_tags( $rss->get_title() ) ); |
0 | 1095 |
$rss->__destruct(); |
9 | 1096 |
unset( $rss ); |
0 | 1097 |
} |
1098 |
} |
|
1099 |
update_option( 'dashboard_widget_options', $widget_options ); |
|
9 | 1100 |
$locale = get_user_locale(); |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1101 |
$cache_key = 'dash_v2_' . md5( $widget_id . '_' . $locale ); |
0 | 1102 |
delete_transient( $cache_key ); |
1103 |
} |
|
1104 |
||
9 | 1105 |
wp_widget_rss_form( $widget_options[ $widget_id ], $form_inputs ); |
0 | 1106 |
} |
1107 |
||
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1108 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1109 |
/** |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1110 |
* Renders the Events and News dashboard widget. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1111 |
* |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1112 |
* @since 4.8.0 |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1113 |
*/ |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1114 |
function wp_dashboard_events_news() { |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1115 |
wp_print_community_events_markup(); |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1116 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1117 |
?> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1118 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1119 |
<div class="wordpress-news hide-if-no-js"> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1120 |
<?php wp_dashboard_primary(); ?> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1121 |
</div> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1122 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1123 |
<p class="community-events-footer"> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1124 |
<?php |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1125 |
printf( |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1126 |
'<a href="%1$s" target="_blank">%2$s <span class="screen-reader-text">%3$s</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>', |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1127 |
'https://make.wordpress.org/community/meetups-landing-page', |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1128 |
__( 'Meetups' ), |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1129 |
/* translators: accessibility text */ |
9 | 1130 |
__( '(opens in a new tab)' ) |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1131 |
); |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1132 |
?> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1133 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1134 |
| |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1135 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1136 |
<?php |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1137 |
printf( |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1138 |
'<a href="%1$s" target="_blank">%2$s <span class="screen-reader-text">%3$s</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>', |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1139 |
'https://central.wordcamp.org/schedule/', |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1140 |
__( 'WordCamps' ), |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1141 |
/* translators: accessibility text */ |
9 | 1142 |
__( '(opens in a new tab)' ) |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1143 |
); |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1144 |
?> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1145 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1146 |
| |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1147 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1148 |
<?php |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1149 |
printf( |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1150 |
'<a href="%1$s" target="_blank">%2$s <span class="screen-reader-text">%3$s</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>', |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1151 |
/* translators: If a Rosetta site exists (e.g. https://es.wordpress.org/news/), then use that. Otherwise, leave untranslated. */ |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1152 |
esc_url( _x( 'https://wordpress.org/news/', 'Events and News dashboard widget' ) ), |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1153 |
__( 'News' ), |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1154 |
/* translators: accessibility text */ |
9 | 1155 |
__( '(opens in a new tab)' ) |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1156 |
); |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1157 |
?> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1158 |
</p> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1159 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1160 |
<?php |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1161 |
} |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1162 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1163 |
/** |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1164 |
* Prints the markup for the Community Events section of the Events and News Dashboard widget. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1165 |
* |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1166 |
* @since 4.8.0 |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1167 |
*/ |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1168 |
function wp_print_community_events_markup() { |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1169 |
?> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1170 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1171 |
<div class="community-events-errors notice notice-error inline hide-if-js"> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1172 |
<p class="hide-if-js"> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1173 |
<?php _e( 'This widget requires JavaScript.' ); ?> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1174 |
</p> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1175 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1176 |
<p class="community-events-error-occurred" aria-hidden="true"> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1177 |
<?php _e( 'An error occurred. Please try again.' ); ?> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1178 |
</p> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1179 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1180 |
<p class="community-events-could-not-locate" aria-hidden="true"></p> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1181 |
</div> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1182 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1183 |
<div class="community-events-loading hide-if-no-js"> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1184 |
<?php _e( 'Loading…' ); ?> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1185 |
</div> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1186 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1187 |
<?php |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1188 |
/* |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1189 |
* Hide the main element when the page first loads, because the content |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1190 |
* won't be ready until wp.communityEvents.renderEventsTemplate() has run. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1191 |
*/ |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1192 |
?> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1193 |
<div id="community-events" class="community-events" aria-hidden="true"> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1194 |
<div class="activity-block"> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1195 |
<p> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1196 |
<span id="community-events-location-message"></span> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1197 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1198 |
<button class="button-link community-events-toggle-location" aria-label="<?php esc_attr_e( 'Edit city' ); ?>" aria-expanded="false"> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1199 |
<span class="dashicons dashicons-edit"></span> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1200 |
</button> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1201 |
</p> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1202 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1203 |
<form class="community-events-form" aria-hidden="true" action="<?php echo esc_url( admin_url( 'admin-ajax.php' ) ); ?>" method="post"> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1204 |
<label for="community-events-location"> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1205 |
<?php _e( 'City:' ); ?> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1206 |
</label> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1207 |
<?php |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1208 |
/* translators: Replace with a city related to your locale. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1209 |
* Test that it matches the expected location and has upcoming |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1210 |
* events before including it. If no cities related to your |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1211 |
* locale have events, then use a city related to your locale |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1212 |
* that would be recognizable to most users. Use only the city |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1213 |
* name itself, without any region or country. Use the endonym |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1214 |
* (native locale name) instead of the English name if possible. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1215 |
*/ |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1216 |
?> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1217 |
<input id="community-events-location" class="regular-text" type="text" name="community-events-location" placeholder="<?php esc_attr_e( 'Cincinnati' ); ?>" /> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1218 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1219 |
<?php submit_button( __( 'Submit' ), 'secondary', 'community-events-submit', false ); ?> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1220 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1221 |
<button class="community-events-cancel button-link" type="button" aria-expanded="false"> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1222 |
<?php _e( 'Cancel' ); ?> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1223 |
</button> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1224 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1225 |
<span class="spinner"></span> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1226 |
</form> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1227 |
</div> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1228 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1229 |
<ul class="community-events-results activity-block last"></ul> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1230 |
</div> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1231 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1232 |
<?php |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1233 |
} |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1234 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1235 |
/** |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1236 |
* Renders the events templates for the Event and News widget. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1237 |
* |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1238 |
* @since 4.8.0 |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1239 |
*/ |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1240 |
function wp_print_community_events_templates() { |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1241 |
?> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1242 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1243 |
<script id="tmpl-community-events-attend-event-near" type="text/template"> |
9 | 1244 |
<?php |
1245 |
printf( |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1246 |
/* translators: %s: the name of a city */ |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1247 |
__( 'Attend an upcoming event near %s.' ), |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1248 |
'<strong>{{ data.location.description }}</strong>' |
9 | 1249 |
); |
1250 |
?> |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1251 |
</script> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1252 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1253 |
<script id="tmpl-community-events-could-not-locate" type="text/template"> |
9 | 1254 |
<?php |
1255 |
printf( |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1256 |
/* translators: %s is the name of the city we couldn't locate. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1257 |
* Replace the examples with cities in your locale, but test |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1258 |
* that they match the expected location before including them. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1259 |
* Use endonyms (native locale names) whenever possible. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1260 |
*/ |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1261 |
__( 'We couldn’t locate %s. Please try another nearby city. For example: Kansas City; Springfield; Portland.' ), |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1262 |
'<em>{{data.unknownCity}}</em>' |
9 | 1263 |
); |
1264 |
?> |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1265 |
</script> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1266 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1267 |
<script id="tmpl-community-events-event-list" type="text/template"> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1268 |
<# _.each( data.events, function( event ) { #> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1269 |
<li class="event event-{{ event.type }} wp-clearfix"> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1270 |
<div class="event-info"> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1271 |
<div class="dashicons event-icon" aria-hidden="true"></div> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1272 |
<div class="event-info-inner"> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1273 |
<a class="event-title" href="{{ event.url }}">{{ event.title }}</a> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1274 |
<span class="event-city">{{ event.location.location }}</span> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1275 |
</div> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1276 |
</div> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1277 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1278 |
<div class="event-date-time"> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1279 |
<span class="event-date">{{ event.formatted_date }}</span> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1280 |
<# if ( 'meetup' === event.type ) { #> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1281 |
<span class="event-time">{{ event.formatted_time }}</span> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1282 |
<# } #> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1283 |
</div> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1284 |
</li> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1285 |
<# } ) #> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1286 |
</script> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1287 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1288 |
<script id="tmpl-community-events-no-upcoming-events" type="text/template"> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1289 |
<li class="event-none"> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1290 |
<# if ( data.location.description ) { #> |
9 | 1291 |
<?php |
1292 |
printf( |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1293 |
/* translators: 1: the city the user searched for, 2: meetup organization documentation URL */ |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1294 |
__( 'There aren’t any events scheduled near %1$s at the moment. Would you like to <a href="%2$s">organize one</a>?' ), |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1295 |
'{{ data.location.description }}', |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1296 |
__( 'https://make.wordpress.org/community/handbook/meetup-organizer/welcome/' ) |
9 | 1297 |
); |
1298 |
?> |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1299 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1300 |
<# } else { #> |
9 | 1301 |
<?php |
1302 |
printf( |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1303 |
/* translators: %s: meetup organization documentation URL */ |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1304 |
__( 'There aren’t any events scheduled near you at the moment. Would you like to <a href="%s">organize one</a>?' ), |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1305 |
__( 'https://make.wordpress.org/community/handbook/meetup-organizer/welcome/' ) |
9 | 1306 |
); |
1307 |
?> |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1308 |
<# } #> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1309 |
</li> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1310 |
</script> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1311 |
<?php |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1312 |
} |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1313 |
|
0 | 1314 |
/** |
9 | 1315 |
* 'WordPress Events and News' dashboard widget. |
5 | 1316 |
* |
1317 |
* @since 2.7.0 |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1318 |
* @since 4.8.0 Removed popular plugins feed. |
5 | 1319 |
*/ |
1320 |
function wp_dashboard_primary() { |
|
1321 |
$feeds = array( |
|
9 | 1322 |
'news' => array( |
5 | 1323 |
|
1324 |
/** |
|
9 | 1325 |
* Filters the primary link URL for the 'WordPress Events and News' dashboard widget. |
5 | 1326 |
* |
1327 |
* @since 2.5.0 |
|
1328 |
* |
|
1329 |
* @param string $link The widget's primary link URL. |
|
1330 |
*/ |
|
9 | 1331 |
'link' => apply_filters( 'dashboard_primary_link', __( 'https://wordpress.org/news/' ) ), |
5 | 1332 |
|
1333 |
/** |
|
9 | 1334 |
* Filters the primary feed URL for the 'WordPress Events and News' dashboard widget. |
5 | 1335 |
* |
1336 |
* @since 2.3.0 |
|
1337 |
* |
|
1338 |
* @param string $url The widget's primary feed URL. |
|
1339 |
*/ |
|
9 | 1340 |
'url' => apply_filters( 'dashboard_primary_feed', __( 'https://wordpress.org/news/feed/' ) ), |
5 | 1341 |
|
1342 |
/** |
|
9 | 1343 |
* Filters the primary link title for the 'WordPress Events and News' dashboard widget. |
5 | 1344 |
* |
1345 |
* @since 2.3.0 |
|
1346 |
* |
|
1347 |
* @param string $title Title attribute for the widget's primary link. |
|
1348 |
*/ |
|
1349 |
'title' => apply_filters( 'dashboard_primary_title', __( 'WordPress Blog' ) ), |
|
1350 |
'items' => 1, |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1351 |
'show_summary' => 0, |
5 | 1352 |
'show_author' => 0, |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1353 |
'show_date' => 0, |
5 | 1354 |
), |
1355 |
'planet' => array( |
|
1356 |
||
1357 |
/** |
|
9 | 1358 |
* Filters the secondary link URL for the 'WordPress Events and News' dashboard widget. |
5 | 1359 |
* |
1360 |
* @since 2.3.0 |
|
1361 |
* |
|
1362 |
* @param string $link The widget's secondary link URL. |
|
1363 |
*/ |
|
9 | 1364 |
'link' => apply_filters( 'dashboard_secondary_link', __( 'https://planet.wordpress.org/' ) ), |
5 | 1365 |
|
1366 |
/** |
|
9 | 1367 |
* Filters the secondary feed URL for the 'WordPress Events and News' dashboard widget. |
5 | 1368 |
* |
1369 |
* @since 2.3.0 |
|
1370 |
* |
|
1371 |
* @param string $url The widget's secondary feed URL. |
|
1372 |
*/ |
|
9 | 1373 |
'url' => apply_filters( 'dashboard_secondary_feed', __( 'https://planet.wordpress.org/feed/' ) ), |
5 | 1374 |
|
1375 |
/** |
|
9 | 1376 |
* Filters the secondary link title for the 'WordPress Events and News' dashboard widget. |
5 | 1377 |
* |
1378 |
* @since 2.3.0 |
|
1379 |
* |
|
1380 |
* @param string $title Title attribute for the widget's secondary link. |
|
1381 |
*/ |
|
1382 |
'title' => apply_filters( 'dashboard_secondary_title', __( 'Other WordPress News' ) ), |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1383 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1384 |
/** |
9 | 1385 |
* Filters the number of secondary link items for the 'WordPress Events and News' dashboard widget. |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1386 |
* |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1387 |
* @since 4.4.0 |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1388 |
* |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1389 |
* @param string $items How many items to show in the secondary feed. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1390 |
*/ |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1391 |
'items' => apply_filters( 'dashboard_secondary_items', 3 ), |
5 | 1392 |
'show_summary' => 0, |
1393 |
'show_author' => 0, |
|
1394 |
'show_date' => 0, |
|
9 | 1395 |
), |
5 | 1396 |
); |
1397 |
||
1398 |
wp_dashboard_cached_rss_widget( 'dashboard_primary', 'wp_dashboard_primary_output', $feeds ); |
|
1399 |
} |
|
1400 |
||
1401 |
/** |
|
9 | 1402 |
* Display the WordPress events and news feeds. |
5 | 1403 |
* |
1404 |
* @since 3.8.0 |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1405 |
* @since 4.8.0 Removed popular plugins feed. |
5 | 1406 |
* |
1407 |
* @param string $widget_id Widget ID. |
|
1408 |
* @param array $feeds Array of RSS feeds. |
|
1409 |
*/ |
|
1410 |
function wp_dashboard_primary_output( $widget_id, $feeds ) { |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1411 |
foreach ( $feeds as $type => $args ) { |
5 | 1412 |
$args['type'] = $type; |
1413 |
echo '<div class="rss-widget">'; |
|
1414 |
wp_widget_rss_output( $args['url'], $args ); |
|
9 | 1415 |
echo '</div>'; |
5 | 1416 |
} |
1417 |
} |
|
1418 |
||
1419 |
/** |
|
0 | 1420 |
* Display file upload quota on dashboard. |
1421 |
* |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1422 |
* Runs on the {@see 'activity_box_end'} hook in wp_dashboard_right_now(). |
0 | 1423 |
* |
1424 |
* @since 3.0.0 |
|
1425 |
* |
|
5 | 1426 |
* @return bool|null True if not multisite, user can't upload files, or the space check option is disabled. |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1427 |
*/ |
0 | 1428 |
function wp_dashboard_quota() { |
9 | 1429 |
if ( ! is_multisite() || ! current_user_can( 'upload_files' ) || get_site_option( 'upload_space_check_disabled' ) ) { |
0 | 1430 |
return true; |
9 | 1431 |
} |
0 | 1432 |
|
1433 |
$quota = get_space_allowed(); |
|
9 | 1434 |
$used = get_space_used(); |
0 | 1435 |
|
9 | 1436 |
if ( $used > $quota ) { |
0 | 1437 |
$percentused = '100'; |
9 | 1438 |
} else { |
0 | 1439 |
$percentused = ( $used / $quota ) * 100; |
9 | 1440 |
} |
1441 |
$used_class = ( $percentused >= 70 ) ? ' warning' : ''; |
|
1442 |
$used = round( $used, 2 ); |
|
0 | 1443 |
$percentused = number_format( $percentused ); |
1444 |
||
1445 |
?> |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1446 |
<h3 class="mu-storage"><?php _e( 'Storage Space' ); ?></h3> |
5 | 1447 |
<div class="mu-storage"> |
1448 |
<ul> |
|
1449 |
<li class="storage-count"> |
|
9 | 1450 |
<?php |
1451 |
$text = sprintf( |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1452 |
/* translators: %s: number of megabytes */ |
5 | 1453 |
__( '%s MB Space Allowed' ), |
1454 |
number_format_i18n( $quota ) |
|
1455 |
); |
|
1456 |
printf( |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1457 |
'<a href="%1$s">%2$s <span class="screen-reader-text">(%3$s)</span></a>', |
5 | 1458 |
esc_url( admin_url( 'upload.php' ) ), |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1459 |
$text, |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1460 |
__( 'Manage Uploads' ) |
9 | 1461 |
); |
1462 |
?> |
|
5 | 1463 |
</li><li class="storage-count <?php echo $used_class; ?>"> |
9 | 1464 |
<?php |
1465 |
$text = sprintf( |
|
5 | 1466 |
/* translators: 1: number of megabytes, 2: percentage */ |
1467 |
__( '%1$s MB (%2$s%%) Space Used' ), |
|
1468 |
number_format_i18n( $used, 2 ), |
|
1469 |
$percentused |
|
1470 |
); |
|
1471 |
printf( |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1472 |
'<a href="%1$s" class="musublink">%2$s <span class="screen-reader-text">(%3$s)</span></a>', |
5 | 1473 |
esc_url( admin_url( 'upload.php' ) ), |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1474 |
$text, |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1475 |
__( 'Manage Uploads' ) |
9 | 1476 |
); |
1477 |
?> |
|
5 | 1478 |
</li> |
1479 |
</ul> |
|
0 | 1480 |
</div> |
1481 |
<?php |
|
1482 |
} |
|
1483 |
||
1484 |
// Display Browser Nag Meta Box |
|
1485 |
function wp_dashboard_browser_nag() { |
|
9 | 1486 |
$notice = ''; |
0 | 1487 |
$response = wp_check_browser_version(); |
1488 |
||
1489 |
if ( $response ) { |
|
1490 |
if ( $response['insecure'] ) { |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1491 |
/* translators: %s: browser name and link */ |
9 | 1492 |
$msg = sprintf( |
1493 |
__( "It looks like you're using an insecure version of %s. Using an outdated browser makes your computer unsafe. For the best WordPress experience, please update your browser." ), |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1494 |
sprintf( '<a href="%s">%s</a>', esc_url( $response['update_url'] ), esc_html( $response['name'] ) ) |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1495 |
); |
0 | 1496 |
} else { |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1497 |
/* translators: %s: browser name and link */ |
9 | 1498 |
$msg = sprintf( |
1499 |
__( "It looks like you're using an old version of %s. For the best WordPress experience, please update your browser." ), |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1500 |
sprintf( '<a href="%s">%s</a>', esc_url( $response['update_url'] ), esc_html( $response['name'] ) ) |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1501 |
); |
0 | 1502 |
} |
1503 |
||
1504 |
$browser_nag_class = ''; |
|
9 | 1505 |
if ( ! empty( $response['img_src'] ) ) { |
1506 |
$img_src = ( is_ssl() && ! empty( $response['img_src_ssl'] ) ) ? $response['img_src_ssl'] : $response['img_src']; |
|
0 | 1507 |
|
9 | 1508 |
$notice .= '<div class="alignright browser-icon"><a href="' . esc_attr( $response['update_url'] ) . '"><img src="' . esc_attr( $img_src ) . '" alt="" /></a></div>'; |
0 | 1509 |
$browser_nag_class = ' has-browser-icon'; |
1510 |
} |
|
1511 |
$notice .= "<p class='browser-update-nag{$browser_nag_class}'>{$msg}</p>"; |
|
1512 |
||
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1513 |
$browsehappy = 'https://browsehappy.com/'; |
9 | 1514 |
$locale = get_user_locale(); |
1515 |
if ( 'en_US' !== $locale ) { |
|
0 | 1516 |
$browsehappy = add_query_arg( 'locale', $locale, $browsehappy ); |
9 | 1517 |
} |
0 | 1518 |
|
1519 |
$notice .= '<p>' . sprintf( __( '<a href="%1$s" class="update-browser-link">Update %2$s</a> or learn how to <a href="%3$s" class="browse-happy-link">browse happy</a>' ), esc_attr( $response['update_url'] ), esc_html( $response['name'] ), esc_url( $browsehappy ) ) . '</p>'; |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1520 |
$notice .= '<p class="hide-if-no-js"><a href="" class="dismiss" aria-label="' . esc_attr__( 'Dismiss the browser warning panel' ) . '">' . __( 'Dismiss' ) . '</a></p>'; |
0 | 1521 |
$notice .= '<div class="clear"></div>'; |
1522 |
} |
|
1523 |
||
5 | 1524 |
/** |
9 | 1525 |
* Filters the notice output for the 'Browse Happy' nag meta box. |
1526 |
* |
|
1527 |
* @since 3.2.0 |
|
1528 |
* |
|
1529 |
* @param string $notice The notice content. |
|
1530 |
* @param array $response An array containing web browser information. See `wp_check_browser_version()`. |
|
1531 |
*/ |
|
0 | 1532 |
echo apply_filters( 'browse-happy-notice', $notice, $response ); |
1533 |
} |
|
1534 |
||
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1535 |
/** |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1536 |
* @since 3.2.0 |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1537 |
* |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1538 |
* @param array $classes |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1539 |
* @return array |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1540 |
*/ |
0 | 1541 |
function dashboard_browser_nag_class( $classes ) { |
1542 |
$response = wp_check_browser_version(); |
|
1543 |
||
9 | 1544 |
if ( $response && $response['insecure'] ) { |
0 | 1545 |
$classes[] = 'browser-insecure'; |
9 | 1546 |
} |
0 | 1547 |
|
1548 |
return $classes; |
|
1549 |
} |
|
1550 |
||
1551 |
/** |
|
1552 |
* Check if the user needs a browser update |
|
1553 |
* |
|
1554 |
* @since 3.2.0 |
|
1555 |
* |
|
1556 |
* @return array|bool False on failure, array of browser data on success. |
|
1557 |
*/ |
|
1558 |
function wp_check_browser_version() { |
|
9 | 1559 |
if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { |
0 | 1560 |
return false; |
9 | 1561 |
} |
0 | 1562 |
|
1563 |
$key = md5( $_SERVER['HTTP_USER_AGENT'] ); |
|
1564 |
||
9 | 1565 |
if ( false === ( $response = get_site_transient( 'browser_' . $key ) ) ) { |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1566 |
// include an unmodified $wp_version |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1567 |
include( ABSPATH . WPINC . '/version.php' ); |
0 | 1568 |
|
9 | 1569 |
$url = 'http://api.wordpress.org/core/browse-happy/1.1/'; |
0 | 1570 |
$options = array( |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1571 |
'body' => array( 'useragent' => $_SERVER['HTTP_USER_AGENT'] ), |
9 | 1572 |
'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url( '/' ), |
0 | 1573 |
); |
1574 |
||
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1575 |
if ( wp_http_supports( array( 'ssl' ) ) ) { |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1576 |
$url = set_url_scheme( $url, 'https' ); |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1577 |
} |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1578 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1579 |
$response = wp_remote_post( $url, $options ); |
0 | 1580 |
|
9 | 1581 |
if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) { |
0 | 1582 |
return false; |
9 | 1583 |
} |
0 | 1584 |
|
1585 |
/** |
|
1586 |
* Response should be an array with: |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1587 |
* 'platform' - string - A user-friendly platform name, if it can be determined |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1588 |
* 'name' - string - A user-friendly browser name |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1589 |
* 'version' - string - The version of the browser the user is using |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1590 |
* 'current_version' - string - The most recent version of the browser |
0 | 1591 |
* 'upgrade' - boolean - Whether the browser needs an upgrade |
1592 |
* 'insecure' - boolean - Whether the browser is deemed insecure |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1593 |
* 'update_url' - string - The url to visit to upgrade |
0 | 1594 |
* 'img_src' - string - An image representing the browser |
1595 |
* 'img_src_ssl' - string - An image (over SSL) representing the browser |
|
1596 |
*/ |
|
1597 |
$response = json_decode( wp_remote_retrieve_body( $response ), true ); |
|
1598 |
||
9 | 1599 |
if ( ! is_array( $response ) ) { |
0 | 1600 |
return false; |
9 | 1601 |
} |
0 | 1602 |
|
1603 |
set_site_transient( 'browser_' . $key, $response, WEEK_IN_SECONDS ); |
|
1604 |
} |
|
1605 |
||
1606 |
return $response; |
|
1607 |
} |
|
1608 |
||
1609 |
/** |
|
9 | 1610 |
* Displays the PHP update nag. |
1611 |
* |
|
1612 |
* @since 5.1.0 |
|
1613 |
*/ |
|
1614 |
function wp_dashboard_php_nag() { |
|
1615 |
$response = wp_check_php_version(); |
|
1616 |
||
1617 |
if ( ! $response ) { |
|
1618 |
return; |
|
1619 |
} |
|
1620 |
||
1621 |
if ( isset( $response['is_secure'] ) && ! $response['is_secure'] ) { |
|
1622 |
$msg = __( 'WordPress has detected that your site is running on an insecure version of PHP.' ); |
|
1623 |
} else { |
|
1624 |
$msg = __( 'WordPress has detected that your site is running on an outdated version of PHP.' ); |
|
1625 |
} |
|
1626 |
||
1627 |
?> |
|
1628 |
<p><?php echo $msg; ?></p> |
|
1629 |
||
1630 |
<h3><?php _e( 'What is PHP and how does it affect my site?' ); ?></h3> |
|
1631 |
<p><?php _e( 'PHP is the programming language we use to build and maintain WordPress. Newer versions of PHP are both faster and more secure, so updating will have a positive effect on your site’s performance.' ); ?></p> |
|
1632 |
||
1633 |
<p class="button-container"> |
|
1634 |
<?php |
|
1635 |
printf( |
|
1636 |
'<a class="button button-primary" href="%1$s" target="_blank" rel="noopener noreferrer">%2$s <span class="screen-reader-text">%3$s</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>', |
|
1637 |
esc_url( wp_get_update_php_url() ), |
|
1638 |
__( 'Learn more about updating PHP' ), |
|
1639 |
/* translators: accessibility text */ |
|
1640 |
__( '(opens in a new tab)' ) |
|
1641 |
); |
|
1642 |
?> |
|
1643 |
</p> |
|
1644 |
<?php |
|
1645 |
||
1646 |
wp_update_php_annotation(); |
|
1647 |
wp_direct_php_update_button(); |
|
1648 |
} |
|
1649 |
||
1650 |
/** |
|
1651 |
* Adds an additional class to the PHP nag if the current version is insecure. |
|
1652 |
* |
|
1653 |
* @since 5.1.0 |
|
1654 |
* |
|
1655 |
* @param array $classes Metabox classes. |
|
1656 |
* @return array Modified metabox classes. |
|
1657 |
*/ |
|
1658 |
function dashboard_php_nag_class( $classes ) { |
|
1659 |
$response = wp_check_php_version(); |
|
1660 |
||
1661 |
if ( $response && isset( $response['is_secure'] ) && ! $response['is_secure'] ) { |
|
1662 |
$classes[] = 'php-insecure'; |
|
1663 |
} |
|
1664 |
||
1665 |
return $classes; |
|
1666 |
} |
|
1667 |
||
1668 |
/** |
|
0 | 1669 |
* Empty function usable by plugins to output empty dashboard widget (to be populated later by JS). |
1670 |
*/ |
|
1671 |
function wp_dashboard_empty() {} |
|
1672 |
||
1673 |
/** |
|
1674 |
* Displays a welcome panel to introduce users to WordPress. |
|
1675 |
* |
|
1676 |
* @since 3.3.0 |
|
1677 |
*/ |
|
1678 |
function wp_welcome_panel() { |
|
1679 |
?> |
|
1680 |
<div class="welcome-panel-content"> |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1681 |
<h2><?php _e( 'Welcome to WordPress!' ); ?></h2> |
0 | 1682 |
<p class="about-description"><?php _e( 'We’ve assembled some links to get you started:' ); ?></p> |
1683 |
<div class="welcome-panel-column-container"> |
|
1684 |
<div class="welcome-panel-column"> |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1685 |
<?php if ( current_user_can( 'customize' ) ) : ?> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1686 |
<h3><?php _e( 'Get Started' ); ?></h3> |
5 | 1687 |
<a class="button button-primary button-hero load-customize hide-if-no-customize" href="<?php echo wp_customize_url(); ?>"><?php _e( 'Customize Your Site' ); ?></a> |
1688 |
<?php endif; ?> |
|
0 | 1689 |
<a class="button button-primary button-hero hide-if-customize" href="<?php echo admin_url( 'themes.php' ); ?>"><?php _e( 'Customize Your Site' ); ?></a> |
1690 |
<?php if ( current_user_can( 'install_themes' ) || ( current_user_can( 'switch_themes' ) && count( wp_get_themes( array( 'allowed' => true ) ) ) > 1 ) ) : ?> |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1691 |
<?php $themes_link = current_user_can( 'customize' ) ? add_query_arg( 'autofocus[panel]', 'themes', admin_url( 'customize.php' ) ) : admin_url( 'themes.php' ); ?> |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1692 |
<p class="hide-if-no-customize"><?php printf( __( 'or, <a href="%s">change your theme completely</a>' ), $themes_link ); ?></p> |
0 | 1693 |
<?php endif; ?> |
1694 |
</div> |
|
1695 |
<div class="welcome-panel-column"> |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1696 |
<h3><?php _e( 'Next Steps' ); ?></h3> |
0 | 1697 |
<ul> |
1698 |
<?php if ( 'page' == get_option( 'show_on_front' ) && ! get_option( 'page_for_posts' ) ) : ?> |
|
1699 |
<li><?php printf( '<a href="%s" class="welcome-icon welcome-edit-page">' . __( 'Edit your front page' ) . '</a>', get_edit_post_link( get_option( 'page_on_front' ) ) ); ?></li> |
|
1700 |
<li><?php printf( '<a href="%s" class="welcome-icon welcome-add-page">' . __( 'Add additional pages' ) . '</a>', admin_url( 'post-new.php?post_type=page' ) ); ?></li> |
|
1701 |
<?php elseif ( 'page' == get_option( 'show_on_front' ) ) : ?> |
|
1702 |
<li><?php printf( '<a href="%s" class="welcome-icon welcome-edit-page">' . __( 'Edit your front page' ) . '</a>', get_edit_post_link( get_option( 'page_on_front' ) ) ); ?></li> |
|
1703 |
<li><?php printf( '<a href="%s" class="welcome-icon welcome-add-page">' . __( 'Add additional pages' ) . '</a>', admin_url( 'post-new.php?post_type=page' ) ); ?></li> |
|
1704 |
<li><?php printf( '<a href="%s" class="welcome-icon welcome-write-blog">' . __( 'Add a blog post' ) . '</a>', admin_url( 'post-new.php' ) ); ?></li> |
|
1705 |
<?php else : ?> |
|
1706 |
<li><?php printf( '<a href="%s" class="welcome-icon welcome-write-blog">' . __( 'Write your first blog post' ) . '</a>', admin_url( 'post-new.php' ) ); ?></li> |
|
1707 |
<li><?php printf( '<a href="%s" class="welcome-icon welcome-add-page">' . __( 'Add an About page' ) . '</a>', admin_url( 'post-new.php?post_type=page' ) ); ?></li> |
|
9 | 1708 |
<li><?php printf( '<a href="%s" class="welcome-icon welcome-setup-home">' . __( 'Set up your homepage' ) . '</a>', current_user_can( 'customize' ) ? add_query_arg( 'autofocus[section]', 'static_front_page', admin_url( 'customize.php' ) ) : admin_url( 'options-reading.php' ) ); ?></li> |
0 | 1709 |
<?php endif; ?> |
1710 |
<li><?php printf( '<a href="%s" class="welcome-icon welcome-view-site">' . __( 'View your site' ) . '</a>', home_url( '/' ) ); ?></li> |
|
1711 |
</ul> |
|
1712 |
</div> |
|
1713 |
<div class="welcome-panel-column welcome-panel-last"> |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
1714 |
<h3><?php _e( 'More Actions' ); ?></h3> |
0 | 1715 |
<ul> |
5 | 1716 |
<?php if ( current_theme_supports( 'widgets' ) || current_theme_supports( 'menus' ) ) : ?> |
9 | 1717 |
<li><div class="welcome-icon welcome-widgets-menus"> |
1718 |
<?php |
|
1719 |
if ( current_theme_supports( 'widgets' ) && current_theme_supports( 'menus' ) ) { |
|
1720 |
printf( |
|
1721 |
__( 'Manage <a href="%1$s">widgets</a> or <a href="%2$s">menus</a>' ), |
|
1722 |
admin_url( 'widgets.php' ), |
|
1723 |
admin_url( 'nav-menus.php' ) |
|
1724 |
); |
|
1725 |
} elseif ( current_theme_supports( 'widgets' ) ) { |
|
1726 |
echo '<a href="' . admin_url( 'widgets.php' ) . '">' . __( 'Manage widgets' ) . '</a>'; |
|
1727 |
} else { |
|
1728 |
echo '<a href="' . admin_url( 'nav-menus.php' ) . '">' . __( 'Manage menus' ) . '</a>'; |
|
1729 |
} |
|
1730 |
?> |
|
1731 |
</div></li> |
|
5 | 1732 |
<?php endif; ?> |
1733 |
<?php if ( current_user_can( 'manage_options' ) ) : ?> |
|
0 | 1734 |
<li><?php printf( '<a href="%s" class="welcome-icon welcome-comments">' . __( 'Turn comments on or off' ) . '</a>', admin_url( 'options-discussion.php' ) ); ?></li> |
5 | 1735 |
<?php endif; ?> |
1736 |
<li><?php printf( '<a href="%s" class="welcome-icon welcome-learn-more">' . __( 'Learn more about getting started' ) . '</a>', __( 'https://codex.wordpress.org/First_Steps_With_WordPress' ) ); ?></li> |
|
0 | 1737 |
</ul> |
1738 |
</div> |
|
1739 |
</div> |
|
1740 |
</div> |
|
1741 |
<?php |
|
1742 |
} |