diff options
Diffstat (limited to 'wp-admin/includes/template.php')
-rw-r--r-- | wp-admin/includes/template.php | 626 |
1 files changed, 626 insertions, 0 deletions
diff --git a/wp-admin/includes/template.php b/wp-admin/includes/template.php new file mode 100644 index 0000000..1cf9284 --- /dev/null +++ b/wp-admin/includes/template.php @@ -0,0 +1,626 @@ +<?php + +// +// Big Mess +// + +// Dandy new recursive multiple category stuff. +function cat_rows( $parent = 0, $level = 0, $categories = 0 ) { + if ( !$categories ) + $categories = get_categories( 'hide_empty=0' ); + + $children = _get_term_hierarchy('category'); + + if ( $categories ) { + ob_start(); + foreach ( $categories as $category ) { + if ( $category->term_id == 0 ) { + $wpdb->query("DELETE FROM $wpdb->terms WHERE term_id = 0"); + continue; + } + if ( $category->parent == $parent) { + echo "\t" . _cat_row( $category, $level ); + if ( isset($children[$category->term_id]) ) + cat_rows( $category->term_id, $level +1, $categories ); + } + } + $output = ob_get_contents(); + ob_end_clean(); + + $output = apply_filters('cat_rows', $output); + + echo $output; + } else { + return false; + } +} + +function _cat_row( $category, $level, $name_override = false ) { + global $class; + + $pad = str_repeat( '— ', $level ); + if ( current_user_can( 'manage_categories' ) ) { + $edit = "<a href='categories.php?action=edit&cat_ID=$category->term_id' class='edit'>".__( 'Edit' )."</a></td>"; + $default_cat_id = (int) get_option( 'default_category' ); + + if ( $category->term_id != $default_cat_id ) + $edit .= "<td><a href='" . wp_nonce_url( "categories.php?action=delete&cat_ID=$category->term_id", 'delete-category_' . $category->term_id ) . "' onclick=\"return deleteSomething( 'cat', $category->term_id, '" . js_escape(sprintf( __("You are about to delete the category '%s'.\nAll posts that were only assigned to this category will be assigned to the '%s' category.\nAll links that were only assigned to this category will be assigned to the '%s' category.\n'OK' to delete, 'Cancel' to stop." ), $category->name, get_catname( $default_cat_id ), get_catname( $default_link_cat_id ) )) . "' );\" class='delete'>".__( 'Delete' )."</a>"; + else + $edit .= "<td style='text-align:center'>".__( "Default" ); + } else + $edit = ''; + + $class = ( ( defined( 'DOING_AJAX' ) && DOING_AJAX ) || " class='alternate'" == $class ) ? '' : " class='alternate'"; + + $category->count = number_format_i18n( $category->count ); + $posts_count = ( $category->count > 0 ) ? "<a href='edit.php?cat=$category->term_id'>$category->count</a>" : $category->count; + $output = "<tr id='cat-$category->term_id'$class> + <th scope='row' style='text-align: center'>$category->term_id</th> + <td>" . ( $name_override ? $name_override : $pad . ' ' . $category->name ) . "</td> + <td>$category->description</td> + <td align='center'>$posts_count</td> + <td>$edit</td>\n\t</tr>\n"; + + return apply_filters('cat_row', $output); +} + +function checked( $checked, $current) { + if ( $checked == $current) + echo ' checked="checked"'; +} + +// TODO: Remove? +function documentation_link( $for ) { + return; +} + +function selected( $selected, $current) { + if ( $selected == $current) + echo ' selected="selected"'; +} + +// +// Nasty Category Stuff +// + +function sort_cats( $cat1, $cat2 ) { + if ( $cat1['checked'] || $cat2['checked'] ) + return ( $cat1['checked'] && !$cat2['checked'] ) ? -1 : 1; + else + return strcasecmp( $cat1['cat_name'], $cat2['cat_name'] ); +} + +function get_nested_categories( $default = 0, $parent = 0 ) { + global $post_ID, $mode, $wpdb, $checked_categories; + + if ( empty($checked_categories) ) { + if ( $post_ID ) { + $checked_categories = wp_get_post_categories($post_ID); + + if ( count( $checked_categories ) == 0 ) { + // No selected categories, strange + $checked_categories[] = $default; + } + } else { + $checked_categories[] = $default; + } + } + + $cats = get_categories("parent=$parent&hide_empty=0&fields=ids"); + + $result = array (); + if ( is_array( $cats ) ) { + foreach ( $cats as $cat) { + if ( $cat == 0 ) { + $wpdb->query("DELETE FROM $wpdb->terms WHERE term_id = 0"); + continue; + } + $result[$cat]['children'] = get_nested_categories( $default, $cat); + $result[$cat]['cat_ID'] = $cat; + $result[$cat]['checked'] = in_array( $cat, $checked_categories ); + $result[$cat]['cat_name'] = get_the_category_by_ID( $cat); + } + } + + $result = apply_filters('get_nested_categories', $result); + usort( $result, 'sort_cats' ); + + return $result; +} + +function write_nested_categories( $categories ) { + foreach ( $categories as $category ) { + echo '<li id="category-', $category['cat_ID'], '"><label for="in-category-', $category['cat_ID'], '" class="selectit"><input value="', $category['cat_ID'], '" type="checkbox" name="post_category[]" id="in-category-', $category['cat_ID'], '"', ($category['checked'] ? ' checked="checked"' : "" ), '/> ', wp_specialchars( apply_filters('the_category', $category['cat_name'] )), "</label></li>"; + + if ( $category['children'] ) { + echo "<ul>\n"; + write_nested_categories( $category['children'] ); + echo "</ul>\n"; + } + } +} + +function dropdown_categories( $default = 0 ) { + write_nested_categories( get_nested_categories( $default) ); +} + +function dropdown_link_categories( $default = 0 ) { + global $link_id; + + if ( $link_id ) { + $checked_categories = wp_get_link_cats($link_id); + + if ( count( $checked_categories ) == 0 ) { + // No selected categories, strange + $checked_categories[] = $default; + } + } else { + $checked_categories[] = $default; + } + + $categories = get_terms('link_category', 'orderby=count&hide_empty=0'); + + if ( empty($categories) ) + return; + + foreach ( $categories as $category ) { + $cat_id = $category->term_id; + $name = wp_specialchars( apply_filters('the_category', $category->name)); + $checked = in_array( $cat_id, $checked_categories ); + echo '<li id="link-category-', $cat_id, '"><label for="in-link-category-', $cat_id, '" class="selectit"><input value="', $cat_id, '" type="checkbox" name="link_category[]" id="in-link-category-', $cat_id, '"', ($checked ? ' checked="checked"' : "" ), '/> ', $name, "</label></li>"; + } +} + +function page_rows( $parent = 0, $level = 0, $pages = 0, $hierarchy = true ) { + global $wpdb, $class, $post; + + if (!$pages ) + $pages = get_pages( 'sort_column=menu_order' ); + + if (! $pages ) + return false; + + foreach ( $pages as $post) { + setup_postdata( $post); + if ( $hierarchy && ($post->post_parent != $parent) ) + continue; + + $post->post_title = wp_specialchars( $post->post_title ); + $pad = str_repeat( '— ', $level ); + $id = (int) $post->ID; + $class = ('alternate' == $class ) ? '' : 'alternate'; +?> + <tr id='page-<?php echo $id; ?>' class='<?php echo $class; ?>'> + <th scope="row" style="text-align: center"><?php echo $post->ID; ?></th> + <td> + <?php echo $pad; ?><?php the_title() ?> + </td> + <td><?php the_author() ?></td> + <td><?php if ( '0000-00-00 00:00:00' ==$post->post_modified ) _e('Unpublished'); else echo mysql2date( __('Y-m-d g:i a'), $post->post_modified ); ?></td> + <td><a href="<?php the_permalink(); ?>" rel="permalink" class="view"><?php _e( 'View' ); ?></a></td> + <td><?php if ( current_user_can( 'edit_page', $id ) ) { echo "<a href='page.php?action=edit&post=$id' class='edit'>" . __( 'Edit' ) . "</a>"; } ?></td> + <td><?php if ( current_user_can( 'delete_page', $id ) ) { echo "<a href='" . wp_nonce_url( "page.php?action=delete&post=$id", 'delete-page_' . $id ) . "' class='delete' onclick=\"return deleteSomething( 'page', " . $id . ", '" . js_escape(sprintf( __("You are about to delete the '%s' page.\n'OK' to delete, 'Cancel' to stop." ), get_the_title() ) ) . "' );\">" . __( 'Delete' ) . "</a>"; } ?></td> + </tr> + +<?php + if ( $hierarchy ) page_rows( $id, $level + 1, $pages ); + } +} + +function user_row( $user_object, $style = '' ) { + global $current_user; + + if ( !(is_object( $user_object) && is_a( $user_object, 'WP_User' ) ) ) + $user_object = new WP_User( (int) $user_object ); + $email = $user_object->user_email; + $url = $user_object->user_url; + $short_url = str_replace( 'http://', '', $url ); + $short_url = str_replace( 'www.', '', $short_url ); + if ('/' == substr( $short_url, -1 )) + $short_url = substr( $short_url, 0, -1 ); + if ( strlen( $short_url ) > 35 ) + $short_url = substr( $short_url, 0, 32 ).'...'; + $numposts = get_usernumposts( $user_object->ID ); + $r = "<tr id='user-$user_object->ID'$style> + <td><input type='checkbox' name='users[]' id='user_{$user_object->ID}' value='{$user_object->ID}' /> <label for='user_{$user_object->ID}'>{$user_object->ID}</label></td> + <td><label for='user_{$user_object->ID}'><strong>$user_object->user_login</strong></label></td> + <td><label for='user_{$user_object->ID}'>$user_object->first_name $user_object->last_name</label></td> + <td><a href='mailto:$email' title='" . sprintf( __('e-mail: %s' ), $email ) . "'>$email</a></td> + <td><a href='$url' title='website: $url'>$short_url</a></td>"; + $r .= "\n\t\t<td align='center'>"; + if ( $numposts > 0 ) { + $r .= "<a href='edit.php?author=$user_object->ID' title='" . __( 'View posts by this author' ) . "' class='edit'>"; + $r .= sprintf(__ngettext( 'View %s post', 'View %s posts', $numposts ), $numposts); + $r .= '</a>'; + } + $r .= "</td>\n\t\t<td>"; + if ( ( is_site_admin() || $current_user->ID == $user_object->ID ) && current_user_can( 'edit_user', $user_object->ID ) ) { + $edit_link = add_query_arg( 'wp_http_referer', urlencode( clean_url( stripslashes( $_SERVER['REQUEST_URI'] ) ) ), "user-edit.php?user_id=$user_object->ID" ); + $r .= "<a href='$edit_link' class='edit'>".__( 'Edit' )."</a>"; + } + $r .= "</td>\n\t</tr>"; + return $r; +} + +function _wp_get_comment_list( $s = false, $start, $num ) { + global $wpdb; + + $start = abs( (int) $start ); + $num = (int) $num; + + if ( $s ) { + $s = $wpdb->escape($s); + $comments = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS * FROM $wpdb->comments WHERE + (comment_author LIKE '%$s%' OR + comment_author_email LIKE '%$s%' OR + comment_author_url LIKE ('%$s%') OR + comment_author_IP LIKE ('%$s%') OR + comment_content LIKE ('%$s%') ) AND + comment_approved != 'spam' + ORDER BY comment_date DESC LIMIT $start, $num"); + } else { + $comments = $wpdb->get_results( "SELECT SQL_CALC_FOUND_ROWS * FROM $wpdb->comments WHERE comment_approved = '0' OR comment_approved = '1' ORDER BY comment_date DESC LIMIT $start, $num" ); + } + + update_comment_cache($comments); + + $total = $wpdb->get_var( "SELECT FOUND_ROWS()" ); + + return array($comments, $total); +} + +function _wp_comment_list_item( $id, $alt = 0 ) { + global $authordata, $comment, $wpdb; + $id = (int) $id; + $comment =& get_comment( $id ); + $class = ''; + $post = get_post($comment->comment_post_ID); + $authordata = get_userdata($post->post_author); + $comment_status = wp_get_comment_status($comment->comment_ID); + if ( 'unapproved' == $comment_status ) + $class .= ' unapproved'; + if ( $alt % 2 ) + $class .= ' alternate'; + echo "<li id='comment-$comment->comment_ID' class='$class'>"; +?> +<p><strong><?php comment_author(); ?></strong> <?php if ($comment->comment_author_email) { ?>| <?php comment_author_email_link() ?> <?php } if ($comment->comment_author_url && 'http://' != $comment->comment_author_url) { ?> | <?php comment_author_url_link() ?> <?php } ?>| <?php _e('IP:') ?> <a href="http://ws.arin.net/cgi-bin/whois.pl?queryinput=<?php comment_author_IP() ?>"><?php comment_author_IP() ?></a></p> + +<?php comment_text() ?> + +<p><?php comment_date(__('M j, g:i A')); ?> — [ +<?php +if ( current_user_can('edit_post', $comment->comment_post_ID) ) { + echo " <a href='comment.php?action=editcomment&c=".$comment->comment_ID."'>" . __('Edit') . '</a>'; + echo ' | <a href="' . wp_nonce_url('comment.php?action=deletecomment&p=' . $comment->comment_post_ID . '&c=' . $comment->comment_ID, 'delete-comment_' . $comment->comment_ID) . '" onclick="return deleteSomething( \'comment\', ' . $comment->comment_ID . ', \'' . js_escape(sprintf(__("You are about to delete this comment by '%s'.\n'Cancel' to stop, 'OK' to delete."), $comment->comment_author)) . "', theCommentList );\">" . __('Delete') . '</a> '; + if ( ('none' != $comment_status) && ( current_user_can('moderate_comments') ) ) { + echo '<span class="unapprove"> | <a href="' . wp_nonce_url('comment.php?action=unapprovecomment&p=' . $comment->comment_post_ID . '&c=' . $comment->comment_ID, 'unapprove-comment_' . $comment->comment_ID) . '" onclick="return dimSomething( \'comment\', ' . $comment->comment_ID . ', \'unapproved\', theCommentList );">' . __('Unapprove') . '</a> </span>'; + echo '<span class="approve"> | <a href="' . wp_nonce_url('comment.php?action=approvecomment&p=' . $comment->comment_post_ID . '&c=' . $comment->comment_ID, 'approve-comment_' . $comment->comment_ID) . '" onclick="return dimSomething( \'comment\', ' . $comment->comment_ID . ', \'unapproved\', theCommentList );">' . __('Approve') . '</a> </span>'; + } + echo " | <a href=\"" . wp_nonce_url("comment.php?action=deletecomment&dt=spam&p=" . $comment->comment_post_ID . "&c=" . $comment->comment_ID, 'delete-comment_' . $comment->comment_ID) . "\" onclick=\"return deleteSomething( 'comment-as-spam', $comment->comment_ID, '" . js_escape(sprintf(__("You are about to mark as spam this comment by '%s'.\n'Cancel' to stop, 'OK' to mark as spam."), $comment->comment_author)) . "', theCommentList );\">" . __('Spam') . "</a> "; +} +$post = get_post($comment->comment_post_ID, OBJECT, 'display'); +$post_title = wp_specialchars( $post->post_title, 'double' ); +$post_title = ('' == $post_title) ? "# $comment->comment_post_ID" : $post_title; +?> + ] — <a href="<?php echo get_permalink($comment->comment_post_ID); ?>"><?php echo $post_title; ?></a></p> + </li> +<?php +} + +function wp_dropdown_cats( $currentcat = 0, $currentparent = 0, $parent = 0, $level = 0, $categories = 0 ) { + global $wpdb; + if (!$categories ) + $categories = get_categories( 'hide_empty=0' ); + + if ( $categories ) { + foreach ( $categories as $category ) { + if ( $currentcat != $category->term_id && $parent == $category->parent) { + $pad = str_repeat( '– ', $level ); + $category->name = wp_specialchars( $category->name ); + echo "\n\t<option value='$category->term_id'"; + if ( $currentparent == $category->term_id ) + echo " selected='selected'"; + echo ">$pad$category->name</option>"; + wp_dropdown_cats( $currentcat, $currentparent, $category->term_id, $level +1, $categories ); + } + } + } else { + return false; + } +} + +function list_meta( $meta ) { + global $post_ID; + // Exit if no meta + if (!$meta ) { + echo '<tbody id="the-list"><tr style="display: none;"><td> </td></tr></tbody>'; //TBODY needed for list-manipulation JS + return; + } + $count = 0; +?> + <thead> + <tr> + <th><?php _e( 'Key' ) ?></th> + <th><?php _e( 'Value' ) ?></th> + <th colspan='2'><?php _e( 'Action' ) ?></th> + </tr> + </thead> +<?php + $r ="\n\t<tbody id='the-list'>"; + foreach ( $meta as $entry ) { + ++ $count; + if ( $count % 2 ) + $style = 'alternate'; + else + $style = ''; + if ('_' == $entry['meta_key'] { 0 } ) + $style .= ' hidden'; + + if ( is_serialized( $entry['meta_value'] ) ) { + if ( is_serialized_string( $entry['meta_value'] ) ) { + // this is a serialized string, so we should display it + $entry['meta_value'] = maybe_unserialize( $entry['meta_value'] ); + } else { + // this is a serialized array/object so we should NOT display it + --$count; + continue; + } + } + + $key_js = js_escape( $entry['meta_key'] ); + $entry['meta_key'] = attribute_escape($entry['meta_key']); + $entry['meta_value'] = attribute_escape($entry['meta_value']); + $entry['meta_id'] = (int) $entry['meta_id']; + $r .= "\n\t<tr id='meta-{$entry['meta_id']}' class='$style'>"; + $r .= "\n\t\t<td valign='top'><input name='meta[{$entry['meta_id']}][key]' tabindex='6' type='text' size='20' value='{$entry['meta_key']}' /></td>"; + $r .= "\n\t\t<td><textarea name='meta[{$entry['meta_id']}][value]' tabindex='6' rows='2' cols='30'>{$entry['meta_value']}</textarea></td>"; + $r .= "\n\t\t<td align='center'><input name='updatemeta' type='submit' class='updatemeta' tabindex='6' value='".attribute_escape(__( 'Update' ))."' /><br />"; + $r .= "\n\t\t<input name='deletemeta[{$entry['meta_id']}]' type='submit' onclick=\"return deleteSomething( 'meta', {$entry['meta_id']}, '"; + $r .= js_escape(sprintf( __("You are about to delete the '%s' custom field on this post.\n'OK' to delete, 'Cancel' to stop." ), $key_js ) ); + $r .= "' );\" class='deletemeta' tabindex='6' value='".attribute_escape(__( 'Delete' ))."' /></td>"; + $r .= "\n\t</tr>"; + } + echo $r; + echo "\n\t</tbody>"; +} + +function meta_form() { + global $wpdb; + $limit = (int) apply_filters( 'postmeta_form_limit', 30 ); + $keys = $wpdb->get_col( " + SELECT meta_key + FROM $wpdb->postmeta + WHERE meta_key NOT LIKE '\_%' + GROUP BY meta_key + ORDER BY meta_id DESC + LIMIT $limit" ); + if ( $keys ) + natcasesort($keys); +?> +<h3><?php _e( 'Add a new custom field:' ) ?></h3> +<table id="newmeta" cellspacing="3" cellpadding="3"> + <tr> +<th colspan="2"><?php _e( 'Key' ) ?></th> +<th><?php _e( 'Value' ) ?></th> +</tr> + <tr valign="top"> + <td align="right" width="18%"> +<?php if ( $keys ) : ?> +<select id="metakeyselect" name="metakeyselect" tabindex="7"> +<option value="#NONE#"><?php _e( '- Select -' ); ?></option> +<?php + + foreach ( $keys as $key ) { + $key = attribute_escape( $key ); + echo "\n\t<option value='$key'>$key</option>"; + } +?> +</select> <?php _e( 'or' ); ?> +<?php endif; ?> +</td> +<td><input type="text" id="metakeyinput" name="metakeyinput" tabindex="7" /></td> + <td><textarea id="metavalue" name="metavalue" rows="3" cols="25" tabindex="8"></textarea></td> + </tr> + +</table> +<p class="submit"><input type="submit" id="updatemetasub" name="updatemeta" tabindex="9" value="<?php _e( 'Add Custom Field »' ) ?>" /></p> +<?php + +} + +function touch_time( $edit = 1, $for_post = 1, $tab_index = 0 ) { + global $wp_locale, $post, $comment; + + if ( $for_post ) + $edit = ( in_array($post->post_status, array('draft', 'pending') ) && (!$post->post_date || '0000-00-00 00:00:00' == $post->post_date ) ) ? false : true; + + $tab_index_attribute = ''; + if ( (int) $tab_index > 0 ) + $tab_index_attribute = " tabindex=\"$tab_index\""; + + echo '<fieldset><legend><input type="checkbox" class="checkbox" name="edit_date" value="1" id="timestamp"'.$tab_index_attribute.' /> <label for="timestamp">'.__( 'Edit timestamp' ).'</label></legend>'; + + $time_adj = time() + (get_option( 'gmt_offset' ) * 3600 ); + $post_date = ($for_post) ? $post->post_date : $comment->comment_date; + $jj = ($edit) ? mysql2date( 'd', $post_date ) : gmdate( 'd', $time_adj ); + $mm = ($edit) ? mysql2date( 'm', $post_date ) : gmdate( 'm', $time_adj ); + $aa = ($edit) ? mysql2date( 'Y', $post_date ) : gmdate( 'Y', $time_adj ); + $hh = ($edit) ? mysql2date( 'H', $post_date ) : gmdate( 'H', $time_adj ); + $mn = ($edit) ? mysql2date( 'i', $post_date ) : gmdate( 'i', $time_adj ); + $ss = ($edit) ? mysql2date( 's', $post_date ) : gmdate( 's', $time_adj ); + + echo "<select name=\"mm\" onchange=\"edit_date.checked=true\"$tab_index_attribute>\n"; + for ( $i = 1; $i < 13; $i = $i +1 ) { + echo "\t\t\t<option value=\"$i\""; + if ( $i == $mm ) + echo ' selected="selected"'; + echo '>' . $wp_locale->get_month( $i ) . "</option>\n"; + } +?> +</select> +<input type="text" id="jj" name="jj" value="<?php echo $jj; ?>" size="2" maxlength="2" onchange="edit_date.checked=true"<?php echo $tab_index_attribute ?> /> +<input type="text" id="aa" name="aa" value="<?php echo $aa ?>" size="4" maxlength="5" onchange="edit_date.checked=true"<?php echo $tab_index_attribute ?> /> @ +<input type="text" id="hh" name="hh" value="<?php echo $hh ?>" size="2" maxlength="2" onchange="edit_date.checked=true"<?php echo $tab_index_attribute ?> /> : +<input type="text" id="mn" name="mn" value="<?php echo $mn ?>" size="2" maxlength="2" onchange="edit_date.checked=true"<?php echo $tab_index_attribute ?> /> +<input type="hidden" id="ss" name="ss" value="<?php echo $ss ?>" size="2" maxlength="2" onchange="edit_date.checked=true" /> +<?php + if ( $edit ) { + printf( _c( 'Existing timestamp: %1$s %2$s, %3$s @ %4$s:%5$s|1: month, 2: month string, 3: full year, 4: hours, 5: minutes' ), $wp_locale->get_month( $mm ), $jj, $aa, $hh, $mn ); + } +?> +</fieldset> + <?php + +} + +function page_template_dropdown( $default = '' ) { + $templates = get_page_templates(); + ksort( $templates ); + foreach (array_keys( $templates ) as $template ) + : if ( $default == $templates[$template] ) + $selected = " selected='selected'"; + else + $selected = ''; + echo "\n\t<option value='".$templates[$template]."' $selected>$template</option>"; + endforeach; +} + +function parent_dropdown( $default = 0, $parent = 0, $level = 0 ) { + global $wpdb, $post_ID; + $items = $wpdb->get_results( "SELECT ID, post_parent, post_title FROM $wpdb->posts WHERE post_parent = $parent AND post_type = 'page' ORDER BY menu_order" ); + + if ( $items ) { + foreach ( $items as $item ) { + // A page cannot be its own parent. + if (!empty ( $post_ID ) ) { + if ( $item->ID == $post_ID ) { + continue; + } + } + $pad = str_repeat( ' ', $level * 3 ); + if ( $item->ID == $default) + $current = ' selected="selected"'; + else + $current = ''; + + echo "\n\t<option value='$item->ID'$current>$pad " . wp_specialchars($item->post_title) . "</option>"; + parent_dropdown( $default, $item->ID, $level +1 ); + } + } else { + return false; + } +} + +function browse_happy() { + $getit = __( 'WordPress recommends a better browser' ); + echo ' + <p id="bh" style="text-align: center;"><a href="http://browsehappy.com/" title="'.$getit.'"><img src="images/browse-happy.gif" alt="Browse Happy" /></a></p> + '; +} + +if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) + add_action( 'admin_footer', 'browse_happy' ); + +function the_attachment_links( $id = false ) { + $id = (int) $id; + $post = & get_post( $id ); + + if ( $post->post_type != 'attachment' ) + return false; + + $icon = get_attachment_icon( $post->ID ); + $attachment_data = wp_get_attachment_metadata( $id ); + $thumb = isset( $attachment_data['thumb'] ); +?> +<form id="the-attachment-links"> +<table> + <col /> + <col class="widefat" /> + <tr> + <th scope="row"><?php _e( 'URL' ) ?></th> + <td><textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><?php echo wp_get_attachment_url(); ?></textarea></td> + </tr> +<?php if ( $icon ) : ?> + <tr> + <th scope="row"><?php $thumb ? _e( 'Thumbnail linked to file' ) : _e( 'Image linked to file' ); ?></th> + <td><textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><a href="<?php echo wp_get_attachment_url(); ?>"><?php echo $icon ?></a></textarea></td> + </tr> + <tr> + <th scope="row"><?php $thumb ? _e( 'Thumbnail linked to page' ) : _e( 'Image linked to page' ); ?></th> + <td><textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><a href="<?php echo get_attachment_link( $post->ID ) ?>" rel="attachment wp-att-<?php echo $post->ID; ?>"><?php echo $icon ?></a></textarea></td> + </tr> +<?php else : ?> + <tr> + <th scope="row"><?php _e( 'Link to file' ) ?></th> + <td><textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><a href="<?php echo wp_get_attachment_url(); ?>" class="attachmentlink"><?php echo basename( wp_get_attachment_url() ); ?></a></textarea></td> + </tr> + <tr> + <th scope="row"><?php _e( 'Link to page' ) ?></th> + <td><textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><a href="<?php echo get_attachment_link( $post->ID ) ?>" rel="attachment wp-att-<?php echo $post->ID ?>"><?php the_title(); ?></a></textarea></td> + </tr> +<?php endif; ?> +</table> +</form> +<?php +} + +function wp_dropdown_roles( $default = false ) { + global $wp_roles; + $r = ''; + foreach( array_reverse($wp_roles->role_names) as $role => $name ) + if ( $default == $role ) // Make default first in list + $p = "\n\t<option selected='selected' value='$role'>$name</option>"; + else + $r .= "\n\t<option value='$role'>$name</option>"; + echo $p . $r; +} + +function wp_convert_hr_to_bytes( $size ) { + $size = strtolower($size); + $bytes = (int) $size; + if ( strpos($size, 'k') !== false ) + $bytes = intval($size) * 1024; + elseif ( strpos($size, 'm') !== false ) + $bytes = intval($size) * 1024 * 1024; + elseif ( strpos($size, 'g') !== false ) + $bytes = intval($size) * 1024 * 1024 * 1024; + return $bytes; +} + +function wp_convert_bytes_to_hr( $bytes ) { + $units = array( 0 => 'B', 1 => 'kB', 2 => 'MB', 3 => 'GB' ); + $log = log( $bytes, 1024 ); + $power = (int) $log; + $size = pow(1024, $log - $power); + return $size . $units[$power]; +} + +function wp_import_upload_form( $action ) { + $u_bytes = wp_convert_hr_to_bytes( ini_get( 'upload_max_filesize' ) ); + $p_bytes = wp_convert_hr_to_bytes( ini_get( 'post_max_size' ) ); + $bytes = apply_filters( 'import_upload_size_limit', min($u_bytes, $p_bytes), $u_bytes, $p_bytes ); + $size = wp_convert_bytes_to_hr( $bytes ); +?> +<form enctype="multipart/form-data" id="import-upload-form" method="post" action="<?php echo attribute_escape($action) ?>"> +<p> +<?php wp_nonce_field('import-upload'); ?> +<label for="upload"><?php _e( 'Choose a file from your computer:' ); ?></label> (<?php printf( __('Maximum size: %s' ), $size ); ?>) +<input type="file" id="upload" name="import" size="25" /> +<input type="hidden" name="action" value="save" /> +<input type="hidden" name="max_file_size" value="<?php echo $bytes; ?>" /> +</p> +<p class="submit"> +<input type="submit" value="<?php _e( 'Upload file and import »' ); ?>" /> +</p> +</form> +<?php +} + +function wp_remember_old_slug() { + global $post; + $name = attribute_escape($post->post_name); // just in case + if ( strlen($name) ) + echo '<input type="hidden" id="wp-old-slug" name="wp-old-slug" value="' . $name . '" />'; +} + +?> |