Make WordPress Core

Ticket #9674: meta_boxes.diff

File meta_boxes.diff, 58.6 KB (added by wnorris, 17 years ago)
  • includes/meta_boxes.php

     
     1<?php
     2
     3// -- Post related Meta Boxes from edit-form-advanced.php
     4
     5/**
     6 * Display post submit form fields.
     7 *
     8 * @since 2.7.0
     9 *
     10 * @param object $post
     11 */
     12function post_submit_meta_box($post) {
     13        global $action;
     14
     15        $post_type = $post->post_type;
     16        $can_publish = current_user_can("publish_${post_type}s");
     17?>
     18<div class="submitbox" id="submitpost">
     19
     20<div id="minor-publishing">
     21
     22<?php // Hidden submit button early on so that the browser chooses the right button when form is submitted with Return key ?>
     23<div style="display:none;">
     24<input type="submit" name="save" value="<?php _ea('Save'); ?>" />
     25</div>
     26
     27<div id="minor-publishing-actions">
     28<div id="save-action">
     29<?php if ( 'publish' != $post->post_status && 'future' != $post->post_status && 'pending' != $post->post_status )  { ?>
     30<input <?php if ( 'private' == $post->post_status ) { ?>style="display:none"<?php } ?> type="submit" name="save" id="save-post" value="<?php _ea('Save Draft'); ?>" tabindex="4" class="button button-highlighted" />
     31<?php } elseif ( 'pending' == $post->post_status && $can_publish ) { ?>
     32<input type="submit" name="save" id="save-post" value="<?php _ea('Save as Pending'); ?>" tabindex="4" class="button button-highlighted" />
     33<?php } ?>
     34</div>
     35
     36<div id="preview-action">
     37<?php
     38if ( 'publish' == $post->post_status ) {
     39        $preview_link = clean_url(get_permalink($post->ID));
     40        $preview_button = __('Preview Changes');
     41} else {
     42        $preview_link = clean_url(apply_filters('preview_post_link', add_query_arg('preview', 'true', get_permalink($post->ID))));
     43        $preview_button = __('Preview');
     44}
     45?>
     46<a class="preview button" href="<?php echo $preview_link; ?>" target="wp-preview" id="post-preview" tabindex="4"><?php echo $preview_button; ?></a>
     47<input type="hidden" name="wp-preview" id="wp-preview" value="" />
     48</div>
     49
     50<div class="clear"></div>
     51</div><?php // /minor-publishing-actions ?>
     52
     53<div id="misc-publishing-actions">
     54
     55<div class="misc-pub-section<?php if ( !$can_publish ) { echo '  misc-pub-section-last'; } ?>"><label for="post_status"><?php _e('Status:') ?></label>
     56<b><span id="post-status-display">
     57<?php
     58switch ( $post->post_status ) {
     59        case 'private':
     60                _e('Privately Published');
     61                break;
     62        case 'publish':
     63                _e('Published');
     64                break;
     65        case 'future':
     66                _e('Scheduled');
     67                break;
     68        case 'pending':
     69                _e('Pending Review');
     70                break;
     71        case 'draft':
     72                _e('Draft');
     73                break;
     74}
     75?>
     76</span></b>
     77<?php if ( 'publish' == $post->post_status || 'private' == $post->post_status || $can_publish ) { ?>
     78<a href="#post_status" <?php if ( 'private' == $post->post_status ) { ?>style="display:none;" <?php } ?>class="edit-post-status hide-if-no-js" tabindex='4'><?php _e('Edit') ?></a>
     79
     80<div id="post-status-select" class="hide-if-js">
     81<input type="hidden" name="hidden_post_status" id="hidden_post_status" value="<?php echo attr($post->post_status); ?>" />
     82<select name='post_status' id='post_status' tabindex='4'>
     83<?php if ( 'publish' == $post->post_status ) : ?>
     84<option<?php selected( $post->post_status, 'publish' ); ?> value='publish'><?php _e('Published') ?></option>
     85<?php elseif ( 'private' == $post->post_status ) : ?>
     86<option<?php selected( $post->post_status, 'private' ); ?> value='publish'><?php _e('Privately Published') ?></option>
     87<?php elseif ( 'future' == $post->post_status ) : ?>
     88<option<?php selected( $post->post_status, 'future' ); ?> value='future'><?php _e('Scheduled') ?></option>
     89<?php endif; ?>
     90<option<?php selected( $post->post_status, 'pending' ); ?> value='pending'><?php _e('Pending Review') ?></option>
     91<option<?php selected( $post->post_status, 'draft' ); ?> value='draft'><?php _e('Draft') ?></option>
     92</select>
     93 <a href="#post_status" class="save-post-status hide-if-no-js button"><?php _e('OK'); ?></a>
     94 <a href="#post_status" class="cancel-post-status hide-if-no-js"><?php _e('Cancel'); ?></a>
     95</div>
     96
     97<?php } ?>
     98</div><?php // /misc-pub-section ?>
     99
     100<div class="misc-pub-section " id="visibility">
     101<?php _e('Visibility:'); ?> <b><span id="post-visibility-display"><?php
     102
     103if ( 'private' == $post->post_status ) {
     104        $post->post_password = '';
     105        $visibility = 'private';
     106        $visibility_trans = __('Private');
     107} elseif ( !empty( $post->post_password ) ) {
     108        $visibility = 'password';
     109        $visibility_trans = __('Password protected');
     110} elseif ( $post_type == 'post' && is_sticky( $post->ID ) ) {
     111        $visibility = 'public';
     112        $visibility_trans = __('Public, Sticky');
     113} else {
     114        $visibility = 'public';
     115        $visibility_trans = __('Public');
     116}
     117
     118?><?php echo wp_specialchars( $visibility_trans ); ?></span></b> <?php if ( $can_publish ) { ?> <a href="#visibility" class="edit-visibility hide-if-no-js"><?php _e('Edit'); ?></a>
     119
     120<div id="post-visibility-select" class="hide-if-js">
     121<input type="hidden" name="hidden_post_password" id="hidden-post-password" value="<?php echo attr($post->post_password); ?>" />
     122<?php if ($post_type == 'post'): ?>
     123<input type="checkbox" style="display:none" name="hidden_post_sticky" id="hidden-post-sticky" value="sticky" <?php checked(is_sticky($post->ID)); ?> />
     124<?php endif; ?>
     125<input type="hidden" name="hidden_post_visibility" id="hidden-post-visibility" value="<?php echo attr( $visibility ); ?>" />
     126
     127
     128<input type="radio" name="visibility" id="visibility-radio-public" value="public" <?php checked( $visibility, 'public' ); ?> /> <label for="visibility-radio-public" class="selectit"><?php _e('Public'); ?></label><br />
     129<?php if ($post_type == 'post'): ?>
     130<span id="sticky-span"><input id="sticky" name="sticky" type="checkbox" value="sticky" <?php checked(is_sticky($post->ID)); ?> tabindex="4" /> <label for="sticky" class="selectit"><?php _e('Stick this post to the front page') ?></label><br /></span>
     131<?php endif; ?>
     132<input type="radio" name="visibility" id="visibility-radio-password" value="password" <?php checked( $visibility, 'password' ); ?> /> <label for="visibility-radio-password" class="selectit"><?php _e('Password protected'); ?></label><br />
     133<span id="password-span"><label for="post_password"><?php _e('Password:'); ?></label> <input type="text" name="post_password" id="post_password" value="<?php echo attr($post->post_password); ?>" /><br /></span>
     134<input type="radio" name="visibility" id="visibility-radio-private" value="private" <?php checked( $visibility, 'private' ); ?> /> <label for="visibility-radio-private" class="selectit"><?php _e('Private'); ?></label><br />
     135
     136<p>
     137 <a href="#visibility" class="save-post-visibility hide-if-no-js button"><?php _e('OK'); ?></a>
     138 <a href="#visibility" class="cancel-post-visibility hide-if-no-js"><?php _e('Cancel'); ?></a>
     139</p>
     140</div>
     141<?php } ?>
     142
     143</div><?php // /misc-pub-section ?>
     144
     145
     146<?php
     147// translators: Publish box date formt, see http://php.net/date
     148$datef = __( 'M j, Y @ G:i' );
     149if ( 0 != $post->ID ) {
     150        if ( 'future' == $post->post_status ) { // scheduled for publishing at a future date
     151                $stamp = __('Scheduled for: <b>%1$s</b>');
     152        } else if ( 'publish' == $post->post_status || 'private' == $post->post_status ) { // already published
     153                $stamp = __('Published on: <b>%1$s</b>');
     154        } else if ( '0000-00-00 00:00:00' == $post->post_date_gmt ) { // draft, 1 or more saves, no date specified
     155                $stamp = __('Publish <b>immediately</b>');
     156        } else if ( time() < strtotime( $post->post_date_gmt . ' +0000' ) ) { // draft, 1 or more saves, future date specified
     157                $stamp = __('Schedule for: <b>%1$s</b>');
     158        } else { // draft, 1 or more saves, date specified
     159                $stamp = __('Publish on: <b>%1$s</b>');
     160        }
     161        $date = date_i18n( $datef, strtotime( $post->post_date ) );
     162} else { // draft (no saves, and thus no date specified)
     163        $stamp = __('Publish <b>immediately</b>');
     164        $date = date_i18n( $datef, strtotime( current_time('mysql') ) );
     165}
     166?>
     167<?php if ( $can_publish ) : // Contributors don't get to choose the date of publish ?>
     168<div class="misc-pub-section curtime misc-pub-section-last">
     169        <span id="timestamp">
     170        <?php printf($stamp, $date); ?></span>
     171        <a href="#edit_timestamp" class="edit-timestamp hide-if-no-js" tabindex='4'><?php _e('Edit') ?></a>
     172        <div id="timestampdiv" class="hide-if-js"><?php touch_time(($action == 'edit'),1,4); ?></div>
     173</div><?php // /misc-pub-section ?>
     174<?php endif; ?>
     175
     176</div>
     177<div class="clear"></div>
     178</div>
     179
     180<div id="major-publishing-actions">
     181<?php do_action('post_submitbox_start'); ?>
     182<div id="delete-action">
     183<?php
     184if ( ( 'edit' == $action ) && current_user_can("delete_${post_type}", $post->ID) ) { ?>
     185<?php $delete_url = add_query_arg( array('action'=>'delete', 'post'=>$post->ID) ); ?>
     186<a class="submitdelete deletion" href="<?php echo wp_nonce_url($delete_url, "delete-${post_type}_" . $post->ID); ?>" onclick="if ( confirm('<?php echo js_escape(sprintf( ('draft' == $post->post_status) ? __("You are about to delete this draft '%s'\n  'Cancel' to stop, 'OK' to delete.") : __("You are about to delete this post '%s'\n  'Cancel' to stop, 'OK' to delete."), $post->post_title )); ?>') ) {return true;}return false;"><?php _e('Delete'); ?></a>
     187<?php } ?>
     188</div>
     189
     190<div id="publishing-action">
     191<?php
     192if ( !in_array( $post->post_status, array('publish', 'future', 'private') ) || 0 == $post->ID ) { ?>
     193<?php if ( $can_publish ) : ?>
     194        <?php if ( !empty($post->post_date_gmt) && time() < strtotime( $post->post_date_gmt . ' +0000' ) ) : ?>
     195                <input name="original_publish" type="hidden" id="original_publish" value="<?php _ea('Schedule') ?>" />
     196                <input name="publish" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php _ea('Schedule') ?>" />
     197        <?php else : ?>
     198                <input name="original_publish" type="hidden" id="original_publish" value="<?php _ea('Publish') ?>" />
     199                <input name="publish" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php _ea('Publish') ?>" />
     200        <?php endif; ?>
     201<?php else : ?>
     202        <input name="original_publish" type="hidden" id="original_publish" value="<?php _ea('Submit for Review') ?>" />
     203        <input name="publish" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php _ea('Submit for Review') ?>" />
     204<?php endif; ?>
     205<?php } else { ?>
     206        <input name="original_publish" type="hidden" id="original_publish" value="<?php _ea('Update') ?>" />
     207        <input name="save" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php _ea('Update') ?>" />
     208<?php } ?>
     209</div>
     210<div class="clear"></div>
     211</div>
     212</div>
     213
     214<?php
     215}
     216
     217/**
     218 * Display post tags form fields.
     219 *
     220 * @since 2.6.0
     221 *
     222 * @param object $post
     223 */
     224function post_tags_meta_box($post, $box) {
     225        $tax_name = substr($box['id'], 8);
     226        $taxonomy = get_taxonomy($tax_name);
     227        $helps = isset($taxonomy->helps) ? attr($taxonomy->helps) : __('Separate tags with commas.');
     228?>
     229<div class="tagsdiv" id="<?php echo $tax_name; ?>">
     230        <p class="jaxtag">
     231                <label class="hidden" for="newtag"><?php _e( $box['title'] ); ?></label>
     232                <input type="hidden" name="<?php echo "tax_input[$tax_name]"; ?>" class="the-tags" id="tax-input[<?php echo $tax_name; ?>]" value="<?php echo attr(get_terms_to_edit( $post->ID, $tax_name )); ?>" />
     233
     234        <span class="ajaxtag">
     235                <input type="text" name="newtag[<?php echo $tax_name; ?>]" class="newtag form-input-tip" size="16" autocomplete="off" value="<?php _ea('Add new tag'); ?>" />
     236                <input type="button" class="button tagadd" value="<?php _ea('Add'); ?>" tabindex="3" />
     237        </span></p>
     238        <p class="howto"><?php echo $helps; ?></p>
     239        <div class="tagchecklist"></div>
     240</div>
     241<p class="tagcloud-link hide-if-no-js"><a href="#titlediv" class="tagcloud-link" id="link-<?php echo $tax_name; ?>"><?php printf( __('Choose from the most used tags in %s'), $box['title'] ); ?></a></p>
     242<?php
     243}
     244
     245/**
     246 * Display post categories form fields.
     247 *
     248 * @since 2.6.0
     249 *
     250 * @param object $post
     251 */
     252function post_categories_meta_box($post) {
     253?>
     254<ul id="category-tabs">
     255        <li class="ui-tabs-selected"><a href="#categories-all" tabindex="3"><?php _e( 'All Categories' ); ?></a></li>
     256        <li class="hide-if-no-js"><a href="#categories-pop" tabindex="3"><?php _e( 'Most Used' ); ?></a></li>
     257</ul>
     258
     259<div id="categories-pop" class="ui-tabs-panel" style="display: none;">
     260        <ul id="categorychecklist-pop" class="categorychecklist form-no-clear" >
     261                <?php $popular_ids = wp_popular_terms_checklist('category'); ?>
     262        </ul>
     263</div>
     264
     265<div id="categories-all" class="ui-tabs-panel">
     266        <ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
     267                <?php wp_category_checklist($post->ID, false, false, $popular_ids) ?>
     268        </ul>
     269</div>
     270
     271<?php if ( current_user_can('manage_categories') ) : ?>
     272<div id="category-adder" class="wp-hidden-children">
     273        <h4><a id="category-add-toggle" href="#category-add" class="hide-if-no-js" tabindex="3"><?php _e( '+ Add New Category' ); ?></a></h4>
     274        <p id="category-add" class="wp-hidden-child">
     275                <label class="hidden" for="newcat"><?php _e( 'Add New Category' ); ?></label><input type="text" name="newcat" id="newcat" class="form-required form-input-tip" value="<?php _ea( 'New category name' ); ?>" tabindex="3" aria-required="true"/>
     276                <label class="hidden" for="newcat_parent"><?php _e('Parent category'); ?>:</label><?php wp_dropdown_categories( array( 'hide_empty' => 0, 'name' => 'newcat_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => __('Parent category'), 'tab_index' => 3 ) ); ?>
     277                <input type="button" id="category-add-sumbit" class="add:categorychecklist:category-add button" value="<?php _ea( 'Add' ); ?>" tabindex="3" />
     278                <?php wp_nonce_field( 'add-category', '_ajax_nonce', false ); ?>
     279                <span id="category-ajax-response"></span>
     280        </p>
     281</div>
     282<?php
     283endif;
     284
     285}
     286
     287/**
     288 * Display post excerpt form fields.
     289 *
     290 * @since 2.6.0
     291 *
     292 * @param object $post
     293 */
     294function post_excerpt_meta_box($post) {
     295?>
     296<label class="hidden" for="excerpt"><?php _e('Excerpt') ?></label><textarea rows="1" cols="40" name="excerpt" tabindex="6" id="excerpt"><?php echo $post->post_excerpt ?></textarea>
     297<p><?php _e('Excerpts are optional hand-crafted summaries of your content. You can <a href="http://codex.wordpress.org/Template_Tags/the_excerpt" target="_blank">use them in your template</a>'); ?></p>
     298<?php
     299}
     300
     301/**
     302 * Display trackback links form fields.
     303 *
     304 * @since 2.6.0
     305 *
     306 * @param object $post
     307 */
     308function post_trackback_meta_box($post) {
     309        $form_trackback = '<input type="text" name="trackback_url" id="trackback_url" class="code" tabindex="7" value="'. attr( str_replace("\n", ' ', $post->to_ping) ) .'" />';
     310        if ('' != $post->pinged) {
     311                $pings = '<p>'. __('Already pinged:') . '</p><ul>';
     312                $already_pinged = explode("\n", trim($post->pinged));
     313                foreach ($already_pinged as $pinged_url) {
     314                        $pings .= "\n\t<li>" . wp_specialchars($pinged_url) . "</li>";
     315                }
     316                $pings .= '</ul>';
     317        }
     318
     319?>
     320<p><label for="trackback_url"><?php _e('Send trackbacks to:'); ?></label> <?php echo $form_trackback; ?><br /> (<?php _e('Separate multiple URLs with spaces'); ?>)</p>
     321<p><?php _e('Trackbacks are a way to notify legacy blog systems that you&#8217;ve linked to them. If you link other WordPress blogs they&#8217;ll be notified automatically using <a href="http://codex.wordpress.org/Introduction_to_Blogging#Managing_Comments" target="_blank">pingbacks</a>, no other action necessary.'); ?></p>
     322<?php
     323if ( ! empty($pings) )
     324        echo $pings;
     325}
     326
     327/**
     328 * Display custom fields for the post form fields.
     329 *
     330 * @since 2.6.0
     331 *
     332 * @param object $post
     333 */
     334function post_custom_meta_box($post) {
     335?>
     336<div id="postcustomstuff">
     337<div id="ajax-response"></div>
     338<?php
     339$metadata = has_meta($post->ID);
     340list_meta($metadata);
     341meta_form();
     342?>
     343</div>
     344<p><?php _e('Custom fields can be used to add extra metadata to a post that you can <a href="http://codex.wordpress.org/Using_Custom_Fields" target="_blank">use in your theme</a>.'); ?></p>
     345<?php
     346}
     347
     348/**
     349 * Display comment status for post form fields.
     350 *
     351 * @since 2.6.0
     352 *
     353 * @param object $post
     354 */
     355function post_comment_status_meta_box($post) {
     356?>
     357<input name="advanced_view" type="hidden" value="1" />
     358<p class="meta-options">
     359        <label for="comment_status" class="selectit"> <input name="comment_status" type="checkbox" id="comment_status" value="open" <?php checked($post->comment_status, 'open'); ?> /> <?php _e('Allow comments') ?></label><br />
     360        <label for="ping_status" class="selectit"><input name="ping_status" type="checkbox" id="ping_status" value="open" <?php checked($post->ping_status, 'open'); ?> /> <?php _e('Allow <a href="http://codex.wordpress.org/Introduction_to_Blogging#Managing_Comments" target="_blank">trackbacks and pingbacks</a>') ?></label>
     361</p>
     362<?php
     363}
     364
     365/**
     366 * Display comments for post.
     367 *
     368 * @since 2.8.0
     369 *
     370 * @param object $post
     371 */
     372function post_comment_meta_box($post) {
     373        global $wpdb, $post_ID;
     374
     375        $total = $wpdb->get_var($wpdb->prepare("SELECT count(1) FROM $wpdb->comments WHERE comment_post_ID = '%d' AND ( comment_approved = '0' OR comment_approved = '1')", $post_ID));
     376
     377        if ( 1 > $total ) {
     378                echo '<p>' . __('No comments yet.') . '</p>';
     379                return;
     380        }
     381
     382        wp_nonce_field( 'get-comments', 'add_comment_nonce', false );
     383?>
     384
     385<table class="widefat comments-box fixed" cellspacing="0" style="display:none;">
     386<thead>
     387        <tr>
     388    <th scope="col" class="column-author"><?php _e('Author') ?></th>
     389    <th scope="col" class="column-comment">
     390                <?php /* translators: field name in comment form */ echo _x('Comment', 'noun'); ?>
     391        </th>
     392  </tr>
     393</thead>
     394<tbody id="the-comment-list" class="list:comment">
     395</tbody>
     396</table>
     397<p class="hide-if-no-js"><a href="#commentstatusdiv" id="show-comments" onclick="commentsBox.get(<?php echo $total; ?>);return false;"><?php _e('Show comments'); ?></a> <img class="waiting" style="display:none;" src="images/loading.gif" alt="" /></p>
     398<?php
     399        $hidden = get_hidden_meta_boxes('post');
     400        if ( ! in_array('commentsdiv', $hidden) ) { ?>
     401                <script type="text/javascript">jQuery(document).ready(function(){commentsBox.get(<?php echo $total; ?>, 10);});</script>
     402<?php
     403        }
     404}
     405
     406/**
     407 * Display post slug form fields.
     408 *
     409 * @since 2.6.0
     410 *
     411 * @param object $post
     412 */
     413function post_slug_meta_box($post, $box) {
     414?>
     415<label class="hidden" for="post_name"><?php echo $box['title']; ?></label><input name="post_name" type="text" size="13" id="post_name" value="<?php echo attr( $post->post_name ); ?>" />
     416<?php
     417}
     418
     419/**
     420 * Display list of post revisions.
     421 *
     422 * @since 2.6.0
     423 *
     424 * @param object $post
     425 */
     426function post_revisions_meta_box($post) {
     427        wp_list_post_revisions();
     428}
     429
     430/**
     431 * Display form field with list of authors.
     432 *
     433 * @since 2.6.0
     434 *
     435 * @param object $post
     436 */
     437function post_author_meta_box($post, $box) {
     438        global $current_user, $user_ID;
     439        $authors = get_editable_user_ids( $current_user->id, true, $post->post_type ); // TODO: ROLE SYSTEM
     440        if ( $post->post_author && !in_array($post->post_author, $authors) )
     441                $authors[] = $post->post_author;
     442?>
     443<label class="hidden" for="post_author_override"><?php echo $box['title']; ?></label><?php wp_dropdown_users( array('include' => $authors, 'name' => 'post_author_override', 'selected' => empty($post->ID) ? $user_ID : $post->post_author) ); ?>
     444<?php
     445}
     446
     447
     448// -- Page related Meta Boxes from edit-page-form.php
     449
     450
     451/**
     452 * Display page attributes form fields.
     453 *
     454 * @since 2.7.0
     455 *
     456 * @param object $post
     457 */
     458function page_attributes_meta_box($post){
     459?>
     460<h5><?php _e('Parent') ?></h5>
     461<label class="hidden" for="parent_id"><?php _e('Page Parent') ?></label>
     462<?php wp_dropdown_pages(array('exclude_tree' => $post->ID, 'selected' => $post->post_parent, 'name' => 'parent_id', 'show_option_none' => __('Main Page (no parent)'), 'sort_column'=> 'menu_order, post_title')); ?>
     463<p><?php _e('You can arrange your pages in hierarchies, for example you could have an &#8220;About&#8221; page that has &#8220;Life Story&#8221; and &#8220;My Dog&#8221; pages under it. There are no limits to how deeply nested you can make pages.'); ?></p>
     464<?php
     465        if ( 0 != count( get_page_templates() ) ) {
     466?>
     467<h5><?php _e('Template') ?></h5>
     468<label class="hidden" for="page_template"><?php _e('Page Template') ?></label><select name="page_template" id="page_template">
     469<option value='default'><?php _e('Default Template'); ?></option>
     470<?php page_template_dropdown($post->page_template); ?>
     471</select>
     472<p><?php _e('Some themes have custom templates you can use for certain pages that might have additional features or custom layouts. If so, you&#8217;ll see them above.'); ?></p>
     473<?php
     474        }
     475?>
     476<h5><?php _e('Order') ?></h5>
     477<p><label class="hidden" for="menu_order"><?php _e('Page Order') ?></label><input name="menu_order" type="text" size="4" id="menu_order" value="<?php echo attr($post->menu_order) ?>" /></p>
     478<p><?php _e('Pages are usually ordered alphabetically, but you can put a number above to change the order pages appear in. (We know this is a little janky, it&#8217;ll be better in future releases.)'); ?></p>
     479<?php
     480}
  • edit-page-form.php

     
    4949$temp_ID = (int) $temp_ID;
    5050$user_ID = (int) $user_ID;
    5151
    52 /**
    53  * Display submit form fields.
    54  *
    55  * @since 2.7.0
    56  *
    57  * @param object $post
    58  */
    59 function page_submit_meta_box($post) {
    60         global $action;
     52require_once('includes/meta_boxes.php');
    6153
    62         $can_publish = current_user_can('publish_pages');
    63 ?>
    64 <div class="submitbox" id="submitpage">
    65 
    66 <div id="minor-publishing">
    67 
    68 <?php // Hidden submit button early on so that the browser chooses the right button when form is submitted with Return key ?>
    69 <div style="display:none;">
    70 <input type="submit" name="save" value="<?php _ea('Save'); ?>" />
    71 </div>
    72 
    73 <div id="minor-publishing-actions">
    74 <div id="save-action">
    75 <?php if ( 'publish' != $post->post_status && 'future' != $post->post_status && 'pending' != $post->post_status )  { ?>
    76 <input <?php if ( 'private' == $post->post_status ) { ?>style="display:none"<?php } ?> type="submit" name="save" id="save-post" value="<?php _ea('Save Draft'); ?>" tabindex="4" class="button button-highlighted" />
    77 <?php } elseif ( 'pending' == $post->post_status && $can_publish ) { ?>
    78 <input type="submit" name="save" id="save-post" value="<?php _ea('Save as Pending'); ?>" tabindex="4" class="button button-highlighted" />
    79 <?php } ?>
    80 </div>
    81 
    82 <div id="preview-action">
    83 <?php
    84 if ( 'publish' == $post->post_status ) {
    85         $preview_link = clean_url(get_permalink($post->ID));
    86         $preview_button = __('Preview Changes');
    87 } else {
    88         $preview_link = clean_url(apply_filters('preview_post_link', add_query_arg('preview', 'true', get_permalink($post->ID))));
    89         $preview_button = __('Preview');
    90 }
    91 ?>
    92 <a class="preview button" href="<?php echo $preview_link; ?>" target="wp-preview" id="post-preview" tabindex="4"><?php echo $preview_button; ?></a>
    93 <input type="hidden" name="wp-preview" id="wp-preview" value="" />
    94 </div>
    95 
    96 <div class="clear"></div>
    97 </div><?php // /minor-publishing-actions ?>
    98 
    99 <div id="misc-publishing-actions">
    100 
    101 <div class="misc-pub-section<?php if ( !$can_publish ) { echo ' misc-pub-section-last'; } ?>"><label for="post_status"><?php _e('Status:') ?></label>
    102 <b><span id="post-status-display">
    103 <?php
    104 switch ( $post->post_status ) {
    105         case 'private':
    106                 _e('Privately Published');
    107                 break;
    108         case 'publish':
    109                 _e('Published');
    110                 break;
    111         case 'future':
    112                 _e('Scheduled');
    113                 break;
    114         case 'pending':
    115                 _e('Pending Review');
    116                 break;
    117         case 'draft':
    118                 _e('Draft');
    119                 break;
    120 }
    121 ?>
    122 </span></b>
    123 <?php if ( 'publish' == $post->post_status || 'private' == $post->post_status || $can_publish ) { ?>
    124 <a href="#post_status" <?php if ( 'private' == $post->post_status ) { ?>style="display:none;" <?php } ?>class="edit-post-status hide-if-no-js" tabindex='4'><?php _e('Edit') ?></a>
    125 
    126 <div id="post-status-select" class="hide-if-js">
    127 <input type="hidden" name="hidden_post_status" id="hidden_post_status" value="<?php echo attr($post->post_status); ?>" />
    128 <select name='post_status' id='post_status' tabindex='4'>
    129 <?php if ( 'publish' == $post->post_status ) : ?>
    130 <option<?php selected( $post->post_status, 'publish' ); ?> value='publish'><?php _e('Published') ?></option>
    131 <?php elseif ( 'private' == $post->post_status ) : ?>
    132 <option<?php selected( $post->post_status, 'private' ); ?> value='publish'><?php _e('Privately Published') ?></option>
    133 <?php elseif ( 'future' == $post->post_status ) : ?>
    134 <option<?php selected( $post->post_status, 'future' ); ?> value='future'><?php _e('Scheduled') ?></option>
    135 <?php endif; ?>
    136 <option<?php selected( $post->post_status, 'pending' ); ?> value='pending'><?php _e('Pending Review') ?></option>
    137 <option<?php selected( $post->post_status, 'draft' ); ?> value='draft'><?php _e('Draft') ?></option>
    138 </select>
    139 
    140  <a href="#post_status" class="save-post-status hide-if-no-js button"><?php _e('OK'); ?></a>
    141  <a href="#post_status" class="cancel-post-status hide-if-no-js"><?php _e('Cancel'); ?></a>
    142 </div>
    143 
    144 <?php } ?>
    145 </div><?php // /misc-pub-section ?>
    146 
    147 <div class="misc-pub-section " id="visibility">
    148 <?php _e('Visibility:'); ?> <b><span id="post-visibility-display"><?php
    149 
    150 if ( 'private' == $post->post_status ) {
    151         $post->post_password = '';
    152         $visibility = 'private';
    153         $visibility_trans = __('Private');
    154 } elseif ( !empty( $post->post_password ) ) {
    155         $visibility = 'password';
    156         $visibility_trans = __('Password protected');
    157 } else {
    158         $visibility = 'public';
    159         $visibility_trans = __('Public');
    160 }
    161 
    162 ?><?php echo wp_specialchars( $visibility_trans ); ?></span></b> <?php if ( $can_publish ) { ?> <a href="#visibility" class="edit-visibility hide-if-no-js"><?php _e('Edit'); ?></a>
    163 
    164 <div id="post-visibility-select" class="hide-if-js">
    165 <input type="hidden" name="hidden_post_password" id="hidden-post-password" value="<?php echo attr($post->post_password); ?>" />
    166 <input type="hidden" name="hidden_post_visibility" id="hidden-post-visibility" value="<?php echo attr( $visibility ); ?>" />
    167 
    168 
    169 <input type="radio" name="visibility" id="visibility-radio-public" value="public" <?php checked( $visibility, 'public' ); ?> /> <label for="visibility-radio-public" class="selectit"><?php _e('Public'); ?></label><br />
    170 <input type="radio" name="visibility" id="visibility-radio-password" value="password" <?php checked( $visibility, 'password' ); ?> /> <label for="visibility-radio-password" class="selectit"><?php _e('Password protected'); ?></label><br />
    171 <span id="password-span"><label for="post_password"><?php _e('Password:'); ?></label> <input type="text" name="post_password" id="post_password" value="<?php echo attr($post->post_password); ?>" /><br /></span>
    172 <input type="radio" name="visibility" id="visibility-radio-private" value="private" <?php checked( $visibility, 'private' ); ?> /> <label for="visibility-radio-private" class="selectit"><?php _e('Private'); ?></label><br />
    173 
    174 <p>
    175  <a href="#visibility" class="save-post-visibility hide-if-no-js button"><?php _e('OK'); ?></a>
    176  <a href="#visibility" class="cancel-post-visibility hide-if-no-js"><?php _e('Cancel'); ?></a>
    177 </p>
    178 </div>
    179 <?php } ?>
    180 
    181 </div><?php // /misc-pub-section ?>
    182 
    183 <?php
    184 // translators: Publish box date formt, see http://php.net/date
    185 $datef = __( 'M j, Y @ G:i' );
    186 if ( 0 != $post->ID ) {
    187         if ( 'future' == $post->post_status ) { // scheduled for publishing at a future date
    188                 $stamp = __('Scheduled for: <b>%1$s</b>');
    189         } else if ( 'publish' == $post->post_status || 'private' == $post->post_status ) { // already published
    190                 $stamp = __('Published on: <b>%1$s</b>');
    191         } else if ( '0000-00-00 00:00:00' == $post->post_date_gmt ) { // draft, 1 or more saves, no date specified
    192                 $stamp = __('Publish <b>immediately</b>');
    193         } else if ( time() < strtotime( $post->post_date_gmt . ' +0000' ) ) { // draft, 1 or more saves, future date specified
    194                 $stamp = __('Schedule for: <b>%1$s</b>');
    195         } else { // draft, 1 or more saves, date specified
    196                 $stamp = __('Publish on: <b>%1$s</b>');
    197         }
    198         $date = date_i18n( $datef, strtotime( $post->post_date ) );
    199 } else { // draft (no saves, and thus no date specified)
    200         $stamp = __('Publish <b>immediately</b>');
    201         $date = date_i18n( $datef, strtotime( current_time('mysql') ) );
    202 }
    203 ?>
    204 <?php if ( $can_publish ) : // Contributors don't get to choose the date of publish ?>
    205 <div class="misc-pub-section curtime misc-pub-section-last">
    206         <span id="timestamp">
    207         <?php printf($stamp, $date); ?></span>
    208         <a href="#edit_timestamp" class="edit-timestamp hide-if-no-js" tabindex='4'><?php _e('Edit') ?></a>
    209         <div id="timestampdiv" class="hide-if-js"><?php touch_time(($action == 'edit'),1,4); ?></div>
    210 </div><?php // /misc-pub-section ?>
    211 <?php endif; ?>
    212 
    213 </div>
    214 <div class="clear"></div>
    215 </div>
    216 
    217 <div id="major-publishing-actions">
    218 <?php do_action('post_submitbox_start'); ?>
    219 <div id="delete-action">
    220 <?php
    221 if ( ( 'edit' == $action ) && current_user_can('delete_page', $post->ID) ) { ?>
    222 <a class="submitdelete deletion" href="<?php echo wp_nonce_url("page.php?action=delete&amp;post=$post->ID", 'delete-page_' . $post->ID); ?>" onclick="if ( confirm('<?php echo js_escape(sprintf( ('draft' == $post->post_status) ? __("You are about to delete this draft '%s'\n  'Cancel' to stop, 'OK' to delete.") : __("You are about to delete this page '%s'\n  'Cancel' to stop, 'OK' to delete."), $post->post_title )); ?>') ) {return true;}return false;"><?php _e('Delete'); ?></a>
    223 <?php } ?>
    224 </div>
    225 
    226 <div id="publishing-action">
    227 <?php
    228 if ( !in_array( $post->post_status, array('publish', 'future', 'private') ) || 0 == $post->ID ) { ?>
    229 <?php if ( $can_publish ) : ?>
    230         <?php if ( !empty($post->post_date_gmt) && time() < strtotime( $post->post_date_gmt . ' +0000' ) ) : ?>
    231                 <input name="original_publish" type="hidden" id="original_publish" value="<?php _ea('Schedule') ?>" />
    232                 <input name="publish" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php _ea('Schedule') ?>" />
    233         <?php else : ?>
    234                 <input name="original_publish" type="hidden" id="original_publish" value="<?php _ea('Publish') ?>" />
    235                 <input name="publish" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php _ea('Publish') ?>" />
    236         <?php endif; ?>
    237 <?php else : ?>
    238         <input name="original_publish" type="hidden" id="original_publish" value="<?php _ea('Submit for Review') ?>" />
    239         <input name="publish" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php _ea('Submit for Review') ?>" />
    240 <?php endif; ?>
    241 <?php } else { ?>
    242         <input name="original_publish" type="hidden" id="original_publish" value="<?php _ea('Update Page') ?>" />
    243         <input name="save" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php _ea('Update Page') ?>" />
    244 <?php } ?>
    245 </div>
    246 <div class="clear"></div>
    247 </div>
    248 </div>
    249 <?php
    250 }
    251 add_meta_box('pagesubmitdiv', __('Publish'), 'page_submit_meta_box', 'page', 'side', 'core');
    252 
    253 /**
    254  * Display page password form fields.
    255  *
    256  * @since 2.6.0
    257  *
    258  * @param object $post
    259  */
    260 function page_password_meta_box($post){
    261 ?>
    262 <p><label for="post_status_private" class="selectit"><input id="post_status_private" name="post_status" type="checkbox" value="private" <?php checked($post->post_status, 'private'); ?> tabindex='4' /> <?php _e('Keep this page private') ?></label></p>
    263 <h4><?php _e( 'Page Password' ); ?></h4>
    264 <p><label class="hidden" for="post_password"><?php _e('Password Protect This Page') ?></label><input name="post_password" type="text" size="25" id="post_password" value="<?php the_post_password(); ?>" /></p>
    265 <p><?php _e('Setting a password will require people who visit your blog to enter the above password to view this page and its comments.'); ?></p>
    266 <?php
    267 }
    268 // add_meta_box('pagepassworddiv', __('Privacy Options'), 'page_password_meta_box', 'page', 'side', 'core');
    269 
    270 /**
    271  * Display page attributes form fields.
    272  *
    273  * @since 2.7.0
    274  *
    275  * @param object $post
    276  */
    277 function page_attributes_meta_box($post){
    278 ?>
    279 <h5><?php _e('Parent') ?></h5>
    280 <label class="hidden" for="parent_id"><?php _e('Page Parent') ?></label>
    281 <?php wp_dropdown_pages(array('exclude_tree' => $post->ID, 'selected' => $post->post_parent, 'name' => 'parent_id', 'show_option_none' => __('Main Page (no parent)'), 'sort_column'=> 'menu_order, post_title')); ?>
    282 <p><?php _e('You can arrange your pages in hierarchies, for example you could have an &#8220;About&#8221; page that has &#8220;Life Story&#8221; and &#8220;My Dog&#8221; pages under it. There are no limits to how deeply nested you can make pages.'); ?></p>
    283 <?php
    284         if ( 0 != count( get_page_templates() ) ) {
    285 ?>
    286 <h5><?php _e('Template') ?></h5>
    287 <label class="hidden" for="page_template"><?php _e('Page Template') ?></label><select name="page_template" id="page_template">
    288 <option value='default'><?php _e('Default Template'); ?></option>
    289 <?php page_template_dropdown($post->page_template); ?>
    290 </select>
    291 <p><?php _e('Some themes have custom templates you can use for certain pages that might have additional features or custom layouts. If so, you&#8217;ll see them above.'); ?></p>
    292 <?php
    293         }
    294 ?>
    295 <h5><?php _e('Order') ?></h5>
    296 <p><label class="hidden" for="menu_order"><?php _e('Page Order') ?></label><input name="menu_order" type="text" size="4" id="menu_order" value="<?php echo attr($post->menu_order) ?>" /></p>
    297 <p><?php _e('Pages are usually ordered alphabetically, but you can put a number above to change the order pages appear in. (We know this is a little janky, it&#8217;ll be better in future releases.)'); ?></p>
    298 <?php
    299 }
     54add_meta_box('pagesubmitdiv', __('Publish'), 'post_submit_meta_box', 'page', 'side', 'core');
    30055add_meta_box('pageparentdiv', __('Attributes'), 'page_attributes_meta_box', 'page', 'side', 'core');
     56add_meta_box('pagecustomdiv', __('Custom Fields'), 'post_custom_meta_box', 'page', 'normal', 'core');
     57add_meta_box('pagecommentstatusdiv', __('Discussion'), 'post_comment_status_meta_box', 'page', 'normal', 'core');
     58add_meta_box('pageslugdiv', __('Page Slug'), 'post_slug_meta_box', 'page', 'normal', 'core');
    30159
    302 /**
    303  * Display custom field for page form fields.
    304  *
    305  * @since 2.6.0
    306  *
    307  * @param object $post
    308  */
    309 function page_custom_meta_box($post){
    310 ?>
    311 <div id="postcustomstuff">
    312 <?php
    313 $metadata = has_meta($post->ID);
    314 list_meta($metadata);
    315 meta_form();
    316 ?>
    317 <div id="ajax-response"></div>
    318 </div>
    319 <p><?php _e('Custom fields can be used to add extra metadata to a post that you can <a href="http://codex.wordpress.org/Using_Custom_Fields" target="_blank">use in your theme</a>.'); ?></p>
    320 <?php
    321 }
    322 add_meta_box('pagecustomdiv', __('Custom Fields'), 'page_custom_meta_box', 'page', 'normal', 'core');
    323 
    324 /**
    325  * Display comments status form fields.
    326  *
    327  * @since 2.6.0
    328  *
    329  * @param object $post
    330  */
    331 function page_comments_status_meta_box($post){
    332 ?>
    333 <input name="advanced_view" type="hidden" value="1" />
    334 <p><label for="comment_status" class="selectit">
    335 <input name="comment_status" type="checkbox" id="comment_status" value="open" <?php checked($post->comment_status, 'open'); ?> />
    336 <?php _e('Allow Comments') ?></label></p>
    337 <p><label for="ping_status" class="selectit"><input name="ping_status" type="checkbox" id="ping_status" value="open" <?php checked($post->ping_status, 'open'); ?> /> <?php _e('Allow Pings') ?></label></p>
    338 <p><?php _e('These settings apply to this page only. &#8220;Pings&#8221; are <a href="http://codex.wordpress.org/Introduction_to_Blogging#Managing_Comments" target="_blank">trackbacks and pingbacks</a>.'); ?></p>
    339 <?php
    340 }
    341 add_meta_box('pagecommentstatusdiv', __('Discussion'), 'page_comments_status_meta_box', 'page', 'normal', 'core');
    342 
    343 /**
    344  * Display page slug form fields.
    345  *
    346  * @since 2.6.0
    347  *
    348  * @param object $post
    349  */
    350 function page_slug_meta_box($post){
    351 ?>
    352 <label class="hidden" for="post_name"><?php _e('Page Slug') ?></label><input name="post_name" type="text" size="13" id="post_name" value="<?php echo attr( $post->post_name ); ?>" />
    353 <?php
    354 }
    355 add_meta_box('pageslugdiv', __('Page Slug'), 'page_slug_meta_box', 'page', 'normal', 'core');
    356 
    35760$authors = get_editable_user_ids( $current_user->id, true, 'page' ); // TODO: ROLE SYSTEM
    35861if ( $post->post_author && !in_array($post->post_author, $authors) )
    35962        $authors[] = $post->post_author;
    36063if ( $authors && count( $authors ) > 1 ) {
    361         /**
    362          * Display page author form fields, when more than one author exists.
    363          *
    364          * @since 2.6.0
    365          *
    366          * @param object $post
    367          */
    368         function page_author_meta_box($post){
    369                 global $current_user, $user_ID;
    370                 $authors = get_editable_user_ids( $current_user->id, true, 'page' ); // TODO: ROLE SYSTEM
    371                 if ( $post->post_author && !in_array($post->post_author, $authors) )
    372                         $authors[] = $post->post_author;
    373 ?>
    374 <label class="hidden" for="post_author_override"><?php _e('Page Author'); ?></label><?php wp_dropdown_users( array('include' => $authors, 'name' => 'post_author_override', 'selected' => empty($post->ID) ? $user_ID : $post->post_author) ); ?>
    375 <?php
    376         }
    377         add_meta_box('pageauthordiv', __('Page Author'), 'page_author_meta_box', 'page', 'normal', 'core');
     64        add_meta_box('pageauthordiv', __('Page Author'), 'post_author_meta_box', 'page', 'normal', 'core');
    37865}
    37966
    38067if ( 0 < $post_ID && wp_get_post_revisions( $post_ID ) ) :
    381 /**
    382  * Display list of page revisions.
    383  *
    384  * @since 2.6.0
    385  *
    386  * @param object $post
    387  */
    388 function page_revisions_meta_box($post) {
    389         wp_list_post_revisions();
    390 }
    391 add_meta_box('revisionsdiv', __('Page Revisions'), 'page_revisions_meta_box', 'page', 'normal', 'core');
     68add_meta_box('revisionsdiv', __('Page Revisions'), 'post_revisions_meta_box', 'page', 'normal', 'core');
    39269endif;
    39370
    39471do_action('do_meta_boxes', 'page', 'normal', $post);
  • edit-form-advanced.php

     
    5353}
    5454
    5555// All meta boxes should be defined and added before the first do_meta_boxes() call (or potentially during the do_meta_boxes action).
     56require_once('includes/meta_boxes.php');
    5657
    57 /**
    58  * Display post submit form fields.
    59  *
    60  * @since 2.7.0
    61  *
    62  * @param object $post
    63  */
    64 function post_submit_meta_box($post) {
    65         global $action;
    66 
    67         $can_publish = current_user_can('publish_posts');
    68 ?>
    69 <div class="submitbox" id="submitpost">
    70 
    71 <div id="minor-publishing">
    72 
    73 <?php // Hidden submit button early on so that the browser chooses the right button when form is submitted with Return key ?>
    74 <div style="display:none;">
    75 <input type="submit" name="save" value="<?php _ea('Save'); ?>" />
    76 </div>
    77 
    78 <div id="minor-publishing-actions">
    79 <div id="save-action">
    80 <?php if ( 'publish' != $post->post_status && 'future' != $post->post_status && 'pending' != $post->post_status )  { ?>
    81 <input <?php if ( 'private' == $post->post_status ) { ?>style="display:none"<?php } ?> type="submit" name="save" id="save-post" value="<?php _ea('Save Draft'); ?>" tabindex="4" class="button button-highlighted" />
    82 <?php } elseif ( 'pending' == $post->post_status && $can_publish ) { ?>
    83 <input type="submit" name="save" id="save-post" value="<?php _ea('Save as Pending'); ?>" tabindex="4" class="button button-highlighted" />
    84 <?php } ?>
    85 </div>
    86 
    87 <div id="preview-action">
    88 <?php
    89 if ( 'publish' == $post->post_status ) {
    90         $preview_link = clean_url(get_permalink($post->ID));
    91         $preview_button = __('Preview Changes');
    92 } else {
    93         $preview_link = clean_url(apply_filters('preview_post_link', add_query_arg('preview', 'true', get_permalink($post->ID))));
    94         $preview_button = __('Preview');
    95 }
    96 ?>
    97 <a class="preview button" href="<?php echo $preview_link; ?>" target="wp-preview" id="post-preview" tabindex="4"><?php echo $preview_button; ?></a>
    98 <input type="hidden" name="wp-preview" id="wp-preview" value="" />
    99 </div>
    100 
    101 <div class="clear"></div>
    102 </div><?php // /minor-publishing-actions ?>
    103 
    104 <div id="misc-publishing-actions">
    105 
    106 <div class="misc-pub-section<?php if ( !$can_publish ) { echo '  misc-pub-section-last'; } ?>"><label for="post_status"><?php _e('Status:') ?></label>
    107 <b><span id="post-status-display">
    108 <?php
    109 switch ( $post->post_status ) {
    110         case 'private':
    111                 _e('Privately Published');
    112                 break;
    113         case 'publish':
    114                 _e('Published');
    115                 break;
    116         case 'future':
    117                 _e('Scheduled');
    118                 break;
    119         case 'pending':
    120                 _e('Pending Review');
    121                 break;
    122         case 'draft':
    123                 _e('Draft');
    124                 break;
    125 }
    126 ?>
    127 </span></b>
    128 <?php if ( 'publish' == $post->post_status || 'private' == $post->post_status || $can_publish ) { ?>
    129 <a href="#post_status" <?php if ( 'private' == $post->post_status ) { ?>style="display:none;" <?php } ?>class="edit-post-status hide-if-no-js" tabindex='4'><?php _e('Edit') ?></a>
    130 
    131 <div id="post-status-select" class="hide-if-js">
    132 <input type="hidden" name="hidden_post_status" id="hidden_post_status" value="<?php echo attr($post->post_status); ?>" />
    133 <select name='post_status' id='post_status' tabindex='4'>
    134 <?php if ( 'publish' == $post->post_status ) : ?>
    135 <option<?php selected( $post->post_status, 'publish' ); ?> value='publish'><?php _e('Published') ?></option>
    136 <?php elseif ( 'private' == $post->post_status ) : ?>
    137 <option<?php selected( $post->post_status, 'private' ); ?> value='publish'><?php _e('Privately Published') ?></option>
    138 <?php elseif ( 'future' == $post->post_status ) : ?>
    139 <option<?php selected( $post->post_status, 'future' ); ?> value='future'><?php _e('Scheduled') ?></option>
    140 <?php endif; ?>
    141 <option<?php selected( $post->post_status, 'pending' ); ?> value='pending'><?php _e('Pending Review') ?></option>
    142 <option<?php selected( $post->post_status, 'draft' ); ?> value='draft'><?php _e('Draft') ?></option>
    143 </select>
    144  <a href="#post_status" class="save-post-status hide-if-no-js button"><?php _e('OK'); ?></a>
    145  <a href="#post_status" class="cancel-post-status hide-if-no-js"><?php _e('Cancel'); ?></a>
    146 </div>
    147 
    148 <?php } ?>
    149 </div><?php // /misc-pub-section ?>
    150 
    151 <div class="misc-pub-section " id="visibility">
    152 <?php _e('Visibility:'); ?> <b><span id="post-visibility-display"><?php
    153 
    154 if ( 'private' == $post->post_status ) {
    155         $post->post_password = '';
    156         $visibility = 'private';
    157         $visibility_trans = __('Private');
    158 } elseif ( !empty( $post->post_password ) ) {
    159         $visibility = 'password';
    160         $visibility_trans = __('Password protected');
    161 } elseif ( is_sticky( $post->ID ) ) {
    162         $visibility = 'public';
    163         $visibility_trans = __('Public, Sticky');
    164 } else {
    165         $visibility = 'public';
    166         $visibility_trans = __('Public');
    167 }
    168 
    169 ?><?php echo wp_specialchars( $visibility_trans ); ?></span></b> <?php if ( $can_publish ) { ?> <a href="#visibility" class="edit-visibility hide-if-no-js"><?php _e('Edit'); ?></a>
    170 
    171 <div id="post-visibility-select" class="hide-if-js">
    172 <input type="hidden" name="hidden_post_password" id="hidden-post-password" value="<?php echo attr($post->post_password); ?>" />
    173 <input type="checkbox" style="display:none" name="hidden_post_sticky" id="hidden-post-sticky" value="sticky" <?php checked(is_sticky($post->ID)); ?> />
    174 <input type="hidden" name="hidden_post_visibility" id="hidden-post-visibility" value="<?php echo attr( $visibility ); ?>" />
    175 
    176 
    177 <input type="radio" name="visibility" id="visibility-radio-public" value="public" <?php checked( $visibility, 'public' ); ?> /> <label for="visibility-radio-public" class="selectit"><?php _e('Public'); ?></label><br />
    178 <span id="sticky-span"><input id="sticky" name="sticky" type="checkbox" value="sticky" <?php checked(is_sticky($post->ID)); ?> tabindex="4" /> <label for="sticky" class="selectit"><?php _e('Stick this post to the front page') ?></label><br /></span>
    179 <input type="radio" name="visibility" id="visibility-radio-password" value="password" <?php checked( $visibility, 'password' ); ?> /> <label for="visibility-radio-password" class="selectit"><?php _e('Password protected'); ?></label><br />
    180 <span id="password-span"><label for="post_password"><?php _e('Password:'); ?></label> <input type="text" name="post_password" id="post_password" value="<?php echo attr($post->post_password); ?>" /><br /></span>
    181 <input type="radio" name="visibility" id="visibility-radio-private" value="private" <?php checked( $visibility, 'private' ); ?> /> <label for="visibility-radio-private" class="selectit"><?php _e('Private'); ?></label><br />
    182 
    183 <p>
    184  <a href="#visibility" class="save-post-visibility hide-if-no-js button"><?php _e('OK'); ?></a>
    185  <a href="#visibility" class="cancel-post-visibility hide-if-no-js"><?php _e('Cancel'); ?></a>
    186 </p>
    187 </div>
    188 <?php } ?>
    189 
    190 </div><?php // /misc-pub-section ?>
    191 
    192 
    193 <?php
    194 // translators: Publish box date formt, see http://php.net/date
    195 $datef = __( 'M j, Y @ G:i' );
    196 if ( 0 != $post->ID ) {
    197         if ( 'future' == $post->post_status ) { // scheduled for publishing at a future date
    198                 $stamp = __('Scheduled for: <b>%1$s</b>');
    199         } else if ( 'publish' == $post->post_status || 'private' == $post->post_status ) { // already published
    200                 $stamp = __('Published on: <b>%1$s</b>');
    201         } else if ( '0000-00-00 00:00:00' == $post->post_date_gmt ) { // draft, 1 or more saves, no date specified
    202                 $stamp = __('Publish <b>immediately</b>');
    203         } else if ( time() < strtotime( $post->post_date_gmt . ' +0000' ) ) { // draft, 1 or more saves, future date specified
    204                 $stamp = __('Schedule for: <b>%1$s</b>');
    205         } else { // draft, 1 or more saves, date specified
    206                 $stamp = __('Publish on: <b>%1$s</b>');
    207         }
    208         $date = date_i18n( $datef, strtotime( $post->post_date ) );
    209 } else { // draft (no saves, and thus no date specified)
    210         $stamp = __('Publish <b>immediately</b>');
    211         $date = date_i18n( $datef, strtotime( current_time('mysql') ) );
    212 }
    213 ?>
    214 <?php if ( $can_publish ) : // Contributors don't get to choose the date of publish ?>
    215 <div class="misc-pub-section curtime misc-pub-section-last">
    216         <span id="timestamp">
    217         <?php printf($stamp, $date); ?></span>
    218         <a href="#edit_timestamp" class="edit-timestamp hide-if-no-js" tabindex='4'><?php _e('Edit') ?></a>
    219         <div id="timestampdiv" class="hide-if-js"><?php touch_time(($action == 'edit'),1,4); ?></div>
    220 </div><?php // /misc-pub-section ?>
    221 <?php endif; ?>
    222 
    223 </div>
    224 <div class="clear"></div>
    225 </div>
    226 
    227 <div id="major-publishing-actions">
    228 <?php do_action('post_submitbox_start'); ?>
    229 <div id="delete-action">
    230 <?php
    231 if ( ( 'edit' == $action ) && current_user_can('delete_post', $post->ID) ) { ?>
    232 <a class="submitdelete deletion" href="<?php echo wp_nonce_url("post.php?action=delete&amp;post=$post->ID", 'delete-post_' . $post->ID); ?>" onclick="if ( confirm('<?php echo js_escape(sprintf( ('draft' == $post->post_status) ? __("You are about to delete this draft '%s'\n  'Cancel' to stop, 'OK' to delete.") : __("You are about to delete this post '%s'\n  'Cancel' to stop, 'OK' to delete."), $post->post_title )); ?>') ) {return true;}return false;"><?php _e('Delete'); ?></a>
    233 <?php } ?>
    234 </div>
    235 
    236 <div id="publishing-action">
    237 <?php
    238 if ( !in_array( $post->post_status, array('publish', 'future', 'private') ) || 0 == $post->ID ) { ?>
    239 <?php if ( current_user_can('publish_posts') ) : ?>
    240         <?php if ( !empty($post->post_date_gmt) && time() < strtotime( $post->post_date_gmt . ' +0000' ) ) : ?>
    241                 <input name="original_publish" type="hidden" id="original_publish" value="<?php _ea('Schedule') ?>" />
    242                 <input name="publish" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php _ea('Schedule') ?>" />
    243         <?php else : ?>
    244                 <input name="original_publish" type="hidden" id="original_publish" value="<?php _ea('Publish') ?>" />
    245                 <input name="publish" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php _ea('Publish') ?>" />
    246         <?php endif; ?>
    247 <?php else : ?>
    248         <input name="original_publish" type="hidden" id="original_publish" value="<?php _ea('Submit for Review') ?>" />
    249         <input name="publish" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php _ea('Submit for Review') ?>" />
    250 <?php endif; ?>
    251 <?php } else { ?>
    252         <input name="original_publish" type="hidden" id="original_publish" value="<?php _ea('Update Post') ?>" />
    253         <input name="save" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php _ea('Update Post') ?>" />
    254 <?php } ?>
    255 </div>
    256 <div class="clear"></div>
    257 </div>
    258 </div>
    259 
    260 <?php
    261 }
    26258add_meta_box('submitdiv', __('Publish'), 'post_submit_meta_box', 'post', 'side', 'core');
    26359
    264 /**
    265  * Display post tags form fields.
    266  *
    267  * @since 2.6.0
    268  *
    269  * @param object $post
    270  */
    271 function post_tags_meta_box($post, $box) {
    272         $tax_name = substr($box['id'], 8);
    273         $taxonomy = get_taxonomy($tax_name);
    274         $helps = isset($taxonomy->helps) ? attr($taxonomy->helps) : __('Separate tags with commas.');
    275 ?>
    276 <div class="tagsdiv" id="<?php echo $tax_name; ?>">
    277         <p class="jaxtag">
    278                 <label class="hidden" for="newtag"><?php _e( $box['title'] ); ?></label>
    279                 <input type="hidden" name="<?php echo "tax_input[$tax_name]"; ?>" class="the-tags" id="tax-input[<?php echo $tax_name; ?>]" value="<?php echo attr(get_terms_to_edit( $post->ID, $tax_name )); ?>" />
    28060
    281         <span class="ajaxtag">
    282                 <input type="text" name="newtag[<?php echo $tax_name; ?>]" class="newtag form-input-tip" size="16" autocomplete="off" value="<?php _ea('Add new tag'); ?>" />
    283                 <input type="button" class="button tagadd" value="<?php _ea('Add'); ?>" tabindex="3" />
    284         </span></p>
    285         <p class="howto"><?php echo $helps; ?></p>
    286         <div class="tagchecklist"></div>
    287 </div>
    288 <p class="tagcloud-link hide-if-no-js"><a href="#titlediv" class="tagcloud-link" id="link-<?php echo $tax_name; ?>"><?php printf( __('Choose from the most used tags in %s'), $box['title'] ); ?></a></p>
    289 <?php
    290 }
    291 
    29261// all tag-style post taxonomies
    29362foreach ( get_object_taxonomies('post') as $tax_name ) {
    29463        if ( !is_taxonomy_hierarchical($tax_name) ) {
     
    29968        }
    30069}
    30170
    302 /**
    303  * Display post categories form fields.
    304  *
    305  * @since 2.6.0
    306  *
    307  * @param object $post
    308  */
    309 function post_categories_meta_box($post) {
    310 ?>
    311 <ul id="category-tabs">
    312         <li class="ui-tabs-selected"><a href="#categories-all" tabindex="3"><?php _e( 'All Categories' ); ?></a></li>
    313         <li class="hide-if-no-js"><a href="#categories-pop" tabindex="3"><?php _e( 'Most Used' ); ?></a></li>
    314 </ul>
    315 
    316 <div id="categories-pop" class="ui-tabs-panel" style="display: none;">
    317         <ul id="categorychecklist-pop" class="categorychecklist form-no-clear" >
    318                 <?php $popular_ids = wp_popular_terms_checklist('category'); ?>
    319         </ul>
    320 </div>
    321 
    322 <div id="categories-all" class="ui-tabs-panel">
    323         <ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
    324                 <?php wp_category_checklist($post->ID, false, false, $popular_ids) ?>
    325         </ul>
    326 </div>
    327 
    328 <?php if ( current_user_can('manage_categories') ) : ?>
    329 <div id="category-adder" class="wp-hidden-children">
    330         <h4><a id="category-add-toggle" href="#category-add" class="hide-if-no-js" tabindex="3"><?php _e( '+ Add New Category' ); ?></a></h4>
    331         <p id="category-add" class="wp-hidden-child">
    332                 <label class="hidden" for="newcat"><?php _e( 'Add New Category' ); ?></label><input type="text" name="newcat" id="newcat" class="form-required form-input-tip" value="<?php _ea( 'New category name' ); ?>" tabindex="3" aria-required="true"/>
    333                 <label class="hidden" for="newcat_parent"><?php _e('Parent category'); ?>:</label><?php wp_dropdown_categories( array( 'hide_empty' => 0, 'name' => 'newcat_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => __('Parent category'), 'tab_index' => 3 ) ); ?>
    334                 <input type="button" id="category-add-sumbit" class="add:categorychecklist:category-add button" value="<?php _ea( 'Add' ); ?>" tabindex="3" />
    335                 <?php wp_nonce_field( 'add-category', '_ajax_nonce', false ); ?>
    336                 <span id="category-ajax-response"></span>
    337         </p>
    338 </div>
    339 <?php
    340 endif;
    341 
    342 }
    34371add_meta_box('categorydiv', __('Categories'), 'post_categories_meta_box', 'post', 'side', 'core');
    344 
    345 /**
    346  * Display post password form fields.
    347  *
    348  * @since 2.6.0
    349  *
    350  * @param object $post
    351  */
    352 function post_password_meta_box($post) {
    353 ?>
    354 <p>
    355         <label for="post_status_private" class="selectit"><input id="post_status_private" name="post_status" type="checkbox" value="private" <?php checked($post->post_status, 'private'); ?> tabindex="4" /> <?php _e('Keep this post private') ?></label>
    356 </p>
    357 <h4><?php _e( 'Post Password' ); ?></h4>
    358 <p><label class="hidden" for="post_password"><?php _e('Password Protect This Post') ?></label><input name="post_password" type="text" size="25" id="post_password" value="<?php the_post_password(); ?>" /></p>
    359 <p><?php _e('Setting a password will require people who visit your blog to enter the above password to view this post and its comments.'); ?></p>
    360 <?php
    361 }
    362 // add_meta_box('passworddiv', __('Privacy Options'), 'post_password_meta_box', 'post', 'side', 'core');
    363 
    364 /**
    365  * Display post excerpt form fields.
    366  *
    367  * @since 2.6.0
    368  *
    369  * @param object $post
    370  */
    371 function post_excerpt_meta_box($post) {
    372 ?>
    373 <label class="hidden" for="excerpt"><?php _e('Excerpt') ?></label><textarea rows="1" cols="40" name="excerpt" tabindex="6" id="excerpt"><?php echo $post->post_excerpt ?></textarea>
    374 <p><?php _e('Excerpts are optional hand-crafted summaries of your content. You can <a href="http://codex.wordpress.org/Template_Tags/the_excerpt" target="_blank">use them in your template</a>'); ?></p>
    375 <?php
    376 }
    37772add_meta_box('postexcerpt', __('Excerpt'), 'post_excerpt_meta_box', 'post', 'normal', 'core');
    378 
    379 /**
    380  * Display trackback links form fields.
    381  *
    382  * @since 2.6.0
    383  *
    384  * @param object $post
    385  */
    386 function post_trackback_meta_box($post) {
    387         $form_trackback = '<input type="text" name="trackback_url" id="trackback_url" class="code" tabindex="7" value="'. attr( str_replace("\n", ' ', $post->to_ping) ) .'" />';
    388         if ('' != $post->pinged) {
    389                 $pings = '<p>'. __('Already pinged:') . '</p><ul>';
    390                 $already_pinged = explode("\n", trim($post->pinged));
    391                 foreach ($already_pinged as $pinged_url) {
    392                         $pings .= "\n\t<li>" . wp_specialchars($pinged_url) . "</li>";
    393                 }
    394                 $pings .= '</ul>';
    395         }
    396 
    397 ?>
    398 <p><label for="trackback_url"><?php _e('Send trackbacks to:'); ?></label> <?php echo $form_trackback; ?><br /> (<?php _e('Separate multiple URLs with spaces'); ?>)</p>
    399 <p><?php _e('Trackbacks are a way to notify legacy blog systems that you&#8217;ve linked to them. If you link other WordPress blogs they&#8217;ll be notified automatically using <a href="http://codex.wordpress.org/Introduction_to_Blogging#Managing_Comments" target="_blank">pingbacks</a>, no other action necessary.'); ?></p>
    400 <?php
    401 if ( ! empty($pings) )
    402         echo $pings;
    403 }
    40473add_meta_box('trackbacksdiv', __('Send Trackbacks'), 'post_trackback_meta_box', 'post', 'normal', 'core');
    405 
    406 /**
    407  * Display custom fields for the post form fields.
    408  *
    409  * @since 2.6.0
    410  *
    411  * @param object $post
    412  */
    413 function post_custom_meta_box($post) {
    414 ?>
    415 <div id="postcustomstuff">
    416 <div id="ajax-response"></div>
    417 <?php
    418 $metadata = has_meta($post->ID);
    419 list_meta($metadata);
    420 meta_form();
    421 ?>
    422 </div>
    423 <p><?php _e('Custom fields can be used to add extra metadata to a post that you can <a href="http://codex.wordpress.org/Using_Custom_Fields" target="_blank">use in your theme</a>.'); ?></p>
    424 <?php
    425 }
    42674add_meta_box('postcustom', __('Custom Fields'), 'post_custom_meta_box', 'post', 'normal', 'core');
    427 
    42875do_action('dbx_post_advanced');
    429 
    430 /**
    431  * Display comment status for post form fields.
    432  *
    433  * @since 2.6.0
    434  *
    435  * @param object $post
    436  */
    437 function post_comment_status_meta_box($post) {
    438 ?>
    439 <input name="advanced_view" type="hidden" value="1" />
    440 <p class="meta-options">
    441         <label for="comment_status" class="selectit"> <input name="comment_status" type="checkbox" id="comment_status" value="open" <?php checked($post->comment_status, 'open'); ?> /> <?php _e('Allow comments on this post') ?></label><br />
    442         <label for="ping_status" class="selectit"><input name="ping_status" type="checkbox" id="ping_status" value="open" <?php checked($post->ping_status, 'open'); ?> /> <?php _e('Allow <a href="http://codex.wordpress.org/Introduction_to_Blogging#Managing_Comments" target="_blank">trackbacks and pingbacks</a> on this post') ?></label>
    443 </p>
    444 <?php
    445 }
    44676add_meta_box('commentstatusdiv', __('Discussion'), 'post_comment_status_meta_box', 'post', 'normal', 'core');
    44777
    448 /**
    449  * Display comments for post.
    450  *
    451  * @since 2.8.0
    452  *
    453  * @param object $post
    454  */
    455 function post_comment_meta_box($post) {
    456         global $wpdb, $post_ID;
    457 
    458         $total = $wpdb->get_var($wpdb->prepare("SELECT count(1) FROM $wpdb->comments WHERE comment_post_ID = '%d' AND ( comment_approved = '0' OR comment_approved = '1')", $post_ID));
    459 
    460         if ( 1 > $total ) {
    461                 echo '<p>' . __('No comments yet.') . '</p>';
    462                 return;
    463         }
    464 
    465         wp_nonce_field( 'get-comments', 'add_comment_nonce', false );
    466 ?>
    467 
    468 <table class="widefat comments-box fixed" cellspacing="0" style="display:none;">
    469 <thead>
    470         <tr>
    471     <th scope="col" class="column-author"><?php _e('Author') ?></th>
    472     <th scope="col" class="column-comment">
    473                 <?php /* translators: field name in comment form */ echo _x('Comment', 'noun'); ?>
    474         </th>
    475   </tr>
    476 </thead>
    477 <tbody id="the-comment-list" class="list:comment">
    478 </tbody>
    479 </table>
    480 <p class="hide-if-no-js"><a href="#commentstatusdiv" id="show-comments" onclick="commentsBox.get(<?php echo $total; ?>);return false;"><?php _e('Show comments'); ?></a> <img class="waiting" style="display:none;" src="images/loading.gif" alt="" /></p>
    481 <?php
    482         $hidden = get_hidden_meta_boxes('post');
    483         if ( ! in_array('commentsdiv', $hidden) ) { ?>
    484                 <script type="text/javascript">jQuery(document).ready(function(){commentsBox.get(<?php echo $total; ?>, 10);});</script>
    485 <?php
    486         }
    487 }
    48878if ( 'publish' == $post->post_status || 'private' == $post->post_status )
    48979        add_meta_box('commentsdiv', __('Comments'), 'post_comment_meta_box', 'post', 'normal', 'core');
    49080
    491 /**
    492  * Display post slug form fields.
    493  *
    494  * @since 2.6.0
    495  *
    496  * @param object $post
    497  */
    498 function post_slug_meta_box($post) {
    499 ?>
    500 <label class="hidden" for="post_name"><?php _e('Post Slug') ?></label><input name="post_name" type="text" size="13" id="post_name" value="<?php echo attr( $post->post_name ); ?>" />
    501 <?php
    502 }
    50381if ( !( 'pending' == $post->post_status && !current_user_can( 'publish_posts' ) ) )
    50482        add_meta_box('slugdiv', __('Post Slug'), 'post_slug_meta_box', 'post', 'normal', 'core');
    50583
     
    50785if ( $post->post_author && !in_array($post->post_author, $authors) )
    50886        $authors[] = $post->post_author;
    50987if ( $authors && count( $authors ) > 1 ) :
    510 /**
    511  * Display form field with list of authors.
    512  *
    513  * @since 2.6.0
    514  *
    515  * @param object $post
    516  */
    517 function post_author_meta_box($post) {
    518         global $current_user, $user_ID;
    519         $authors = get_editable_user_ids( $current_user->id ); // TODO: ROLE SYSTEM
    520         if ( $post->post_author && !in_array($post->post_author, $authors) )
    521                 $authors[] = $post->post_author;
    522 ?>
    523 <label class="hidden" for="post_author_override"><?php _e('Post Author'); ?></label><?php wp_dropdown_users( array('include' => $authors, 'name' => 'post_author_override', 'selected' => empty($post->ID) ? $user_ID : $post->post_author) ); ?>
    524 <?php
    525 }
    52688add_meta_box('authordiv', __('Post Author'), 'post_author_meta_box', 'post', 'normal', 'core');
    52789endif;
    52890
    52991if ( 0 < $post_ID && wp_get_post_revisions( $post_ID ) ) :
    530 /**
    531  * Display list of post revisions.
    532  *
    533  * @since 2.6.0
    534  *
    535  * @param object $post
    536  */
    537 function post_revisions_meta_box($post) {
    538         wp_list_post_revisions();
    539 }
    54092add_meta_box('revisionsdiv', __('Post Revisions'), 'post_revisions_meta_box', 'post', 'normal', 'core');
    54193endif;
    54294