web/wp-admin/press-this.php
branchwordpress
changeset 109 03b0d1493584
child 132 4d4862461b8d
equal deleted inserted replaced
-1:000000000000 109:03b0d1493584
       
     1 <?php
       
     2 /**
       
     3  * Press This Display and Handler.
       
     4  *
       
     5  * @package WordPress
       
     6  * @subpackage Press_This
       
     7  */
       
     8 
       
     9 /** WordPress Administration Bootstrap */
       
    10 require_once('admin.php');
       
    11 header('Content-Type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset'));
       
    12 
       
    13 if ( ! current_user_can('edit_posts') )
       
    14 	wp_die( __( 'Cheatin&#8217; uh?' ) );
       
    15 
       
    16 /**
       
    17  * Convert characters.
       
    18  *
       
    19  * @package WordPress
       
    20  * @subpackage Press_This
       
    21  * @since 2.6.0
       
    22  *
       
    23  * @param string $text
       
    24  * @return string
       
    25  */
       
    26 function aposfix($text) {
       
    27 	$translation_table[chr(34)] = '&quot;';
       
    28 	$translation_table[chr(38)] = '&';
       
    29 	$translation_table[chr(39)] = '&apos;';
       
    30 	return preg_replace("/&(?![A-Za-z]{0,4}\w{2,3};|#[0-9]{2,3};)/","&amp;" , strtr($text, $translation_table));
       
    31 }
       
    32 
       
    33 /**
       
    34  * Press It form handler.
       
    35  *
       
    36  * @package WordPress
       
    37  * @subpackage Press_This
       
    38  * @since 2.6.0
       
    39  *
       
    40  * @return int Post ID
       
    41  */
       
    42 function press_it() {
       
    43 	// define some basic variables
       
    44 	$quick['post_status'] = 'draft'; // set as draft first
       
    45 	$quick['post_category'] = isset($_REQUEST['post_category']) ? $_REQUEST['post_category'] : null;
       
    46 	$quick['tax_input'] = isset($_REQUEST['tax_input']) ? $_REQUEST['tax_input'] : '';
       
    47 	$quick['post_title'] = isset($_REQUEST['title']) ? $_REQUEST['title'] : '';
       
    48 	$quick['post_content'] = '';
       
    49 
       
    50 	// insert the post with nothing in it, to get an ID
       
    51 	$post_ID = wp_insert_post($quick, true);
       
    52 	$content = isset($_REQUEST['content']) ? $_REQUEST['content'] : '';
       
    53 
       
    54 	$upload = false;
       
    55 	if( !empty($_REQUEST['photo_src']) && current_user_can('upload_files') )
       
    56 		foreach( (array) $_REQUEST['photo_src'] as $key => $image)
       
    57 			// see if files exist in content - we don't want to upload non-used selected files.
       
    58 			if( strpos($_REQUEST['content'], $image) !== false ) {
       
    59 				$desc = isset($_REQUEST['photo_description'][$key]) ? $_REQUEST['photo_description'][$key] : '';
       
    60 				$upload = media_sideload_image($image, $post_ID, $desc);
       
    61 
       
    62 				// Replace the POSTED content <img> with correct uploaded ones. Regex contains fix for Magic Quotes
       
    63 				if( !is_wp_error($upload) ) $content = preg_replace('/<img ([^>]*)src=\\\?(\"|\')'.preg_quote($image, '/').'\\\?(\2)([^>\/]*)\/*>/is', $upload, $content);
       
    64 			}
       
    65 
       
    66 	// set the post_content and status
       
    67 	$quick['post_status'] = isset($_REQUEST['publish']) ? 'publish' : 'draft';
       
    68 	$quick['post_content'] = $content;
       
    69 	// error handling for $post
       
    70 	if ( is_wp_error($post_ID)) {
       
    71 		wp_die($id);
       
    72 		wp_delete_post($post_ID);
       
    73 	// error handling for media_sideload
       
    74 	} elseif ( is_wp_error($upload)) {
       
    75 		wp_die($upload);
       
    76 		wp_delete_post($post_ID);
       
    77 	} else {
       
    78 		$quick['ID'] = $post_ID;
       
    79 		wp_update_post($quick);
       
    80 	}
       
    81 	return $post_ID;
       
    82 }
       
    83 
       
    84 // For submitted posts.
       
    85 if ( isset($_REQUEST['action']) && 'post' == $_REQUEST['action'] ) {
       
    86 	check_admin_referer('press-this');
       
    87 	$post_ID = press_it();
       
    88 	$posted =  $post_ID;
       
    89 } else {
       
    90 	$post_ID = 0;
       
    91 }
       
    92 
       
    93 // Set Variables
       
    94 $title = isset( $_GET['t'] ) ? trim( strip_tags( aposfix( stripslashes( $_GET['t'] ) ) ) ) : '';
       
    95 $selection = isset( $_GET['s'] ) ? trim( htmlspecialchars( html_entity_decode( aposfix( stripslashes( $_GET['s'] ) ) ) ) ) : '';
       
    96 if ( ! empty($selection) ) {
       
    97 	$selection = preg_replace('/(\r?\n|\r)/', '</p><p>', $selection);
       
    98 	$selection = '<p>'.str_replace('<p></p>', '', $selection).'</p>';
       
    99 }
       
   100 $url = isset($_GET['u']) ? esc_url($_GET['u']) : '';
       
   101 $image = isset($_GET['i']) ? $_GET['i'] : '';
       
   102 
       
   103 if ( !empty($_REQUEST['ajax']) ) {
       
   104 switch ($_REQUEST['ajax']) {
       
   105 	case 'video': ?>
       
   106 		<script type="text/javascript" charset="utf-8">
       
   107 			jQuery('.select').click(function() {
       
   108 				append_editor(jQuery('#embed-code').val());
       
   109 				jQuery('#extra_fields').hide();
       
   110 				jQuery('#extra_fields').html('');
       
   111 			});
       
   112 			jQuery('.close').click(function() {
       
   113 				jQuery('#extra_fields').hide();
       
   114 				jQuery('#extra_fields').html('');
       
   115 			});
       
   116 		</script>
       
   117 		<div class="postbox">
       
   118 		<h2><label for="embed-code"><?php _e('Embed Code') ?></label></h2>
       
   119 		<div class="inside">
       
   120 			<textarea name="embed-code" id="embed-code" rows="8" cols="40"><?php echo wp_htmledit_pre( $selection ); ?></textarea>
       
   121 			<p id="options"><a href="#" class="select button"><?php _e('Insert Video'); ?></a> <a href="#" class="close button"><?php _e('Cancel'); ?></a></p>
       
   122 		</div>
       
   123 		</div>
       
   124 		<?php break;
       
   125 
       
   126 	case 'photo_thickbox': ?>
       
   127 		<script type="text/javascript" charset="utf-8">
       
   128 			jQuery('.cancel').click(function() {
       
   129 				tb_remove();
       
   130 			});
       
   131 			jQuery('.select').click(function() {
       
   132 				image_selector();
       
   133 			});
       
   134 		</script>
       
   135 		<h3 class="tb"><label for="this_photo_description"><?php _e('Description') ?></label></h3>
       
   136 		<div class="titlediv">
       
   137 		<div class="titlewrap">
       
   138 			<input id="this_photo_description" name="photo_description" class="tbtitle text" onkeypress="if(event.keyCode==13) image_selector();" value="<?php echo esc_attr($title);?>"/>
       
   139 		</div>
       
   140 		</div>
       
   141 
       
   142 		<p class="centered"><input type="hidden" name="this_photo" value="<?php echo esc_attr($image); ?>" id="this_photo" />
       
   143 			<a href="#" class="select"><img src="<?php echo esc_url($image); ?>" alt="<?php echo esc_attr(__('Click to insert.')); ?>" title="<?php echo esc_attr(__('Click to insert.')); ?>" /></a></p>
       
   144 
       
   145 		<p id="options"><a href="#" class="select button"><?php _e('Insert Image'); ?></a> <a href="#" class="cancel button"><?php _e('Cancel'); ?></a></p>
       
   146 
       
   147 
       
   148 		<?php break;
       
   149 
       
   150 	case 'photo_thickbox_url': ?>
       
   151 		<script type="text/javascript" charset="utf-8">
       
   152 			jQuery('.cancel').click(function() {
       
   153 				tb_remove();
       
   154 			});
       
   155 
       
   156 			jQuery('.select').click(function() {
       
   157 				image_selector();
       
   158 			});
       
   159 		</script>
       
   160 		<h3 class="tb"><label for="this_photo"><?php _e('URL') ?></label></h3>
       
   161 		<div class="titlediv">
       
   162 			<div class="titlewrap">
       
   163 			<input id="this_photo" name="this_photo" class="tbtitle text" onkeypress="if(event.keyCode==13) image_selector();" />
       
   164 			</div>
       
   165 		</div>
       
   166 
       
   167 
       
   168 		<h3 class="tb"><label for="photo_description"><?php _e('Description') ?></label></h3>
       
   169 		<div id="titlediv">
       
   170 			<div class="titlewrap">
       
   171 			<input id="this_photo_description" name="photo_description" class="tbtitle text" onkeypress="if(event.keyCode==13) image_selector();" value="<?php echo esc_attr($title);?>"/>
       
   172 			</div>
       
   173 		</div>
       
   174 
       
   175 		<p id="options"><a href="#" class="select"><?php _e('Insert Image'); ?></a> | <a href="#" class="cancel"><?php _e('Cancel'); ?></a></p>
       
   176 		<?php break;
       
   177 	case 'photo_images':
       
   178 		/**
       
   179 		 * Retrieve all image URLs from given URI.
       
   180 		 *
       
   181 		 * @package WordPress
       
   182 		 * @subpackage Press_This
       
   183 		 * @since 2.6.0
       
   184 		 *
       
   185 		 * @param string $uri
       
   186 		 * @return string
       
   187 		 */
       
   188 		function get_images_from_uri($uri) {
       
   189 			if( preg_match('/\.(jpg|jpe|jpeg|png|gif)$/', $uri) && !strpos($uri,'blogger.com') )
       
   190 				return "'".$uri."'";
       
   191 			$content = wp_remote_fopen($uri);
       
   192 			if ( false === $content )
       
   193 				return '';
       
   194 			$host = parse_url($uri);
       
   195 			$pattern = '/<img ([^>]*)src=(\"|\')([^<>]+?\.(png|jpeg|jpg|jpe|gif))[^<>\'\"]*(\2)([^>\/]*)\/*>/is';
       
   196 			preg_match_all($pattern, $content, $matches);
       
   197 			if ( empty($matches[0]) )
       
   198 				return '';
       
   199 			$sources = array();
       
   200 			foreach ($matches[3] as $src) {
       
   201 				// if no http in url
       
   202 				if(strpos($src, 'http') === false)
       
   203 					// if it doesn't have a relative uri
       
   204 					if( strpos($src, '../') === false && strpos($src, './') === false && strpos($src, '/') === 0)
       
   205 						$src = 'http://'.str_replace('//','/', $host['host'].'/'.$src);
       
   206 					else
       
   207 						$src = 'http://'.str_replace('//','/', $host['host'].'/'.dirname($host['path']).'/'.$src);
       
   208 				$sources[] = esc_url($src);
       
   209 			}
       
   210 			return "'" . implode("','", $sources) . "'";
       
   211 		}
       
   212 		$url = urldecode($url);
       
   213 		$url = str_replace(' ', '%20', $url);
       
   214 		echo 'new Array('.get_images_from_uri($url).')';
       
   215 
       
   216 		break;
       
   217 
       
   218 	case 'photo_js': ?>
       
   219 		// gather images and load some default JS
       
   220 		var last = null
       
   221 		var img, img_tag, aspect, w, h, skip, i, strtoappend = "";
       
   222 			var my_src = eval(
       
   223 				jQuery.ajax({
       
   224 			   		type: "GET",
       
   225 			   		url: "<?php echo esc_url($_SERVER['PHP_SELF']); ?>",
       
   226 					cache : false,
       
   227 					async : false,
       
   228 			   		data: "ajax=photo_images&u=<?php echo urlencode($url); ?>",
       
   229 					dataType : "script"
       
   230 				}).responseText
       
   231 			);
       
   232 			if(my_src.length == 0) {
       
   233 				var my_src = eval(
       
   234 				jQuery.ajax({
       
   235 			   		type: "GET",
       
   236 			   		url: "<?php echo esc_url($_SERVER['PHP_SELF']); ?>",
       
   237 					cache : false,
       
   238 					async : false,
       
   239 			   		data: "ajax=photo_images&u=<?php echo urlencode($url); ?>",
       
   240 					dataType : "script"
       
   241 				}).responseText
       
   242 				);
       
   243 				if(my_src.length == 0) {
       
   244 					strtoappend = '<?php _e('Unable to retrieve images or no images on page.'); ?>';
       
   245 				}
       
   246 			}
       
   247 
       
   248 		for (i = 0; i < my_src.length; i++) {
       
   249 			img = new Image();
       
   250 			img.src = my_src[i];
       
   251 			img_attr = 'id="img' + i + '"';
       
   252 			skip = false;
       
   253 
       
   254 			maybeappend = '<a href="?ajax=photo_thickbox&amp;i=' + encodeURIComponent(img.src) + '&amp;u=<?php echo urlencode($url); ?>&amp;height=400&amp;width=500" title="" class="thickbox"><img src="' + img.src + '" ' + img_attr + '/></a>';
       
   255 
       
   256 			if (img.width && img.height) {
       
   257 				if (img.width >= 30 && img.height >= 30) {
       
   258 					aspect = img.width / img.height;
       
   259 					scale = (aspect > 1) ? (71 / img.width) : (71 / img.height);
       
   260 
       
   261 					w = img.width;
       
   262 					h = img.height;
       
   263 
       
   264 					if (scale < 1) {
       
   265 						w = parseInt(img.width * scale);
       
   266 						h = parseInt(img.height * scale);
       
   267 					}
       
   268 					img_attr += ' style="width: ' + w + 'px; height: ' + h + 'px;"';
       
   269 					strtoappend += maybeappend;
       
   270 				}
       
   271 			} else {
       
   272 				strtoappend += maybeappend;
       
   273 			}
       
   274 		}
       
   275 
       
   276 		function pick(img, desc) {
       
   277 			if (img) {
       
   278 				if('object' == typeof jQuery('.photolist input') && jQuery('.photolist input').length != 0) length = jQuery('.photolist input').length;
       
   279 				if(length == 0) length = 1;
       
   280 				jQuery('.photolist').append('<input name="photo_src[' + length + ']" value="' + img +'" type="hidden"/>');
       
   281 				jQuery('.photolist').append('<input name="photo_description[' + length + ']" value="' + desc +'" type="hidden"/>');
       
   282 				insert_editor( "\n\n" + encodeURI('<p style="text-align: center;"><a href="<?php echo $url; ?>"><img src="' + img +'" alt="' + desc + '" /></a></p>'));
       
   283 			}
       
   284 			return false;
       
   285 		}
       
   286 
       
   287 		function image_selector() {
       
   288 			tb_remove();
       
   289 			desc = jQuery('#this_photo_description').val();
       
   290 			src = jQuery('#this_photo').val();
       
   291 			pick(src, desc);
       
   292 			jQuery('#extra_fields').hide();
       
   293 			jQuery('#extra_fields').html('');
       
   294 			return false;
       
   295 		}
       
   296 
       
   297 		jQuery(document).ready(function() {
       
   298 			jQuery('#extra_fields').html('<div class="postbox"><h2>Photo <small id="photo_directions">(<?php _e("click images to select") ?>)</small></h2><ul id="actions"><li><a href="#" id="photo_add_url" class="thickbox button"><?php _e("Add from URL") ?> +</a></li></ul><div class="inside"><div class="titlewrap"><div id="img_container"></div></div><p id="options"><a href="#" class="close button"><?php _e('Cancel'); ?></a><a href="#" class="refresh button"><?php _e('Refresh'); ?></a></p></div>');
       
   299 			jQuery('.close').click(function() {
       
   300 				jQuery('#extra_fields').hide();
       
   301 				jQuery('#extra_fields').html('');
       
   302 			});
       
   303 			jQuery('.refresh').click(function() {
       
   304 						show('photo');
       
   305 					});
       
   306 			jQuery('#img_container').html(strtoappend);
       
   307 			jQuery('#photo_add_url').attr('href', '?ajax=photo_thickbox_url&height=200&width=500');
       
   308 			tb_init('#extra_fields .thickbox');
       
   309 
       
   310 
       
   311 		});
       
   312 		<?php break;
       
   313 }
       
   314 die;
       
   315 }
       
   316 
       
   317 ?>
       
   318 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
       
   319 <html xmlns="http://www.w3.org/1999/xhtml" <?php do_action('admin_xml_ns'); ?> <?php language_attributes(); ?>>
       
   320 <head>
       
   321 	<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?>" />
       
   322 	<title><?php _e('Press This') ?></title>
       
   323 
       
   324 <?php
       
   325 	add_thickbox();
       
   326 	wp_enqueue_style('press-this');
       
   327 	wp_enqueue_style('press-this-ie');
       
   328 	wp_enqueue_style( 'colors' );
       
   329 	wp_enqueue_script( 'post' );
       
   330 	wp_enqueue_script('editor');
       
   331 ?>
       
   332 <script type="text/javascript">
       
   333 //<![CDATA[
       
   334 addLoadEvent = function(func){if(typeof jQuery!="undefined")jQuery(document).ready(func);else if(typeof wpOnload!='function'){wpOnload=func;}else{var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}};
       
   335 var userSettings = {'url':'<?php echo SITECOOKIEPATH; ?>','uid':'<?php if ( ! isset($current_user) ) $current_user = wp_get_current_user(); echo $current_user->ID; ?>','time':'<?php echo time() ?>'};
       
   336 var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
       
   337 //]]>
       
   338 </script>
       
   339 
       
   340 <?php
       
   341 	do_action('admin_print_styles');
       
   342 	do_action('admin_print_scripts');
       
   343 	do_action('admin_head');
       
   344 
       
   345 	if ( user_can_richedit() ) {
       
   346 		add_filter( 'teeny_mce_before_init', create_function( '$a', '$a["height"] = "400"; $a["onpageload"] = ""; $a["mode"] = "textareas"; $a["editor_selector"] = "mceEditor"; return $a;' ) );
       
   347 		wp_tiny_mce( true );
       
   348 	}
       
   349 ?>
       
   350 	<script type="text/javascript">
       
   351 	function insert_plain_editor(text) {
       
   352 		edCanvas = document.getElementById('content');
       
   353 		edInsertContent(edCanvas, text);
       
   354 	}
       
   355 	function set_editor(text) {
       
   356 		if ( '' == text || '<p></p>' == text ) text = '<p><br /></p>';
       
   357 		if ( tinyMCE.activeEditor ) tinyMCE.execCommand('mceSetContent', false, text);
       
   358 	}
       
   359 	function insert_editor(text) {
       
   360 		if ( '' != text && tinyMCE.activeEditor && ! tinyMCE.activeEditor.isHidden()) {
       
   361 			tinyMCE.execCommand('mceInsertContent', false, '<p>' + decodeURI(tinymce.DOM.decode(text)) + '</p>', {format : 'raw'});
       
   362 		} else {
       
   363 			insert_plain_editor(decodeURI(text));
       
   364 		}
       
   365 	}
       
   366 	function append_editor(text) {
       
   367 		if ( '' != text && tinyMCE.activeEditor && ! tinyMCE.activeEditor.isHidden()) {
       
   368 			tinyMCE.execCommand('mceSetContent', false, tinyMCE.activeEditor.getContent({format : 'raw'}) + '<p>' + text + '</p>');
       
   369 			tinyMCE.execCommand('mceCleanup');
       
   370 		} else {
       
   371 			insert_plain_editor(text);
       
   372 		}
       
   373 	}
       
   374 
       
   375 	function show(tab_name) {
       
   376 		jQuery('#extra_fields').html('');
       
   377 		jQuery('#extra_fields').show();
       
   378 		switch(tab_name) {
       
   379 			case 'video' :
       
   380 				jQuery('#extra_fields').load('<?php echo esc_url($_SERVER['PHP_SELF']); ?>', { ajax: 'video', s: '<?php echo esc_attr($selection); ?>'}, function() {
       
   381 					<?php
       
   382 					$content = '';
       
   383 					if ( preg_match("/youtube\.com\/watch/i", $url) ) {
       
   384 						list($domain, $video_id) = split("v=", $url);
       
   385 						$video_id = esc_attr($video_id);
       
   386 						$content = '<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/' . $video_id . '"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/' . $video_id . '" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>';
       
   387 
       
   388 					} elseif ( preg_match("/vimeo\.com\/[0-9]+/i", $url) ) {
       
   389 						list($domain, $video_id) = split(".com/", $url);
       
   390 						$video_id = esc_attr($video_id);
       
   391 						$content = '<object width="400" height="225"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=' . $video_id . '&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" />	<embed src="http://www.vimeo.com/moogaloop.swf?clip_id=' . $video_id . '&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="225"></embed></object>';
       
   392 
       
   393 						if ( trim($selection) == '' )
       
   394 							$selection = '<p><a href="http://www.vimeo.com/' . $video_id . '?pg=embed&sec=' . $video_id . '">' . $title . '</a> on <a href="http://vimeo.com?pg=embed&sec=' . $video_id . '">Vimeo</a></p>';
       
   395 
       
   396 					} elseif ( strpos( $selection, '<object' ) !== false ) {
       
   397 						$content = $selection;
       
   398 					}
       
   399 					?>
       
   400 					jQuery('#embed-code').prepend('<?php echo htmlentities($content); ?>');
       
   401 				});
       
   402 				return false;
       
   403 				break;
       
   404 			case 'photo' :
       
   405 				jQuery('#extra_fields').before('<p id="waiting"><img src="images/wpspin_light.gif" alt="" /> <?php echo esc_js( __( 'Loading...' ) ); ?></p>');
       
   406 				jQuery.ajax({
       
   407 					type: "GET",
       
   408 					cache : false,
       
   409 					url: "<?php echo esc_url($_SERVER['PHP_SELF']); ?>",
       
   410 					data: "ajax=photo_js&u=<?php echo urlencode($url)?>",
       
   411 					dataType : "script",
       
   412 					success : function() {
       
   413 						jQuery('#waiting').remove();
       
   414 					}
       
   415 				});
       
   416 				return false;
       
   417 				break;
       
   418 		}
       
   419 	}
       
   420 	jQuery(document).ready(function() {
       
   421 		//resize screen
       
   422 		window.resizeTo(720,570);
       
   423 		// set button actions
       
   424     	jQuery('#photo_button').click(function() { show('photo'); return false; });
       
   425 		jQuery('#video_button').click(function() { show('video'); return false; });
       
   426 		// auto select
       
   427 		<?php if ( preg_match("/youtube\.com\/watch/i", $url) ) { ?>
       
   428 			show('video');
       
   429 		<?php } elseif ( preg_match("/vimeo\.com\/[0-9]+/i", $url) ) { ?>
       
   430 			show('video');
       
   431 		<?php  } elseif ( preg_match("/flickr\.com/i", $url) ) { ?>
       
   432 			show('photo');
       
   433 		<?php } ?>
       
   434 		jQuery('#title').unbind();
       
   435 		jQuery('#publish, #save').click(function() { jQuery('#saving').css('display', 'inline'); });
       
   436 	});
       
   437 </script>
       
   438 </head>
       
   439 <body class="press-this">
       
   440 <div id="wphead"></div>
       
   441 <form action="press-this.php?action=post" method="post">
       
   442 <div id="poststuff" class="metabox-holder">
       
   443 	<div id="side-info-column">
       
   444 		<div class="sleeve">
       
   445 			<h1 id="viewsite"><a class="button" href="<?php echo get_option('home'); ?>/" target="_blank"><?php bloginfo('name'); ?> &rsaquo; <?php _e('Press This') ?></a></span></h1>
       
   446 
       
   447 			<?php wp_nonce_field('press-this') ?>
       
   448 			<input type="hidden" name="post_type" id="post_type" value="text"/>
       
   449 			<input type="hidden" name="autosave" id="autosave" />
       
   450 			<input type="hidden" id="original_post_status" name="original_post_status" value="draft" />
       
   451 			<input type="hidden" id="prev_status" name="prev_status" value="draft" />
       
   452 
       
   453 			<!-- This div holds the photo metadata -->
       
   454 			<div class="photolist"></div>
       
   455 
       
   456 			<div id="submitdiv" class="stuffbox">
       
   457 				<h3><?php _e('Publish') ?></h3>
       
   458 				<div class="inside">
       
   459 					<p>
       
   460 						<input class="button" type="submit" name="draft" value="<?php esc_attr_e('Save Draft') ?>" id="save" />
       
   461 						<?php if ( current_user_can('publish_posts') ) { ?>
       
   462 							<input class="button-primary" type="submit" name="publish" value="<?php esc_attr_e('Publish') ?>" id="publish" />
       
   463 						<?php } else { ?>
       
   464 							<br /><br /><input class="button-primary" type="submit" name="review" value="<?php esc_attr_e('Submit for Review') ?>" id="review" />
       
   465 						<?php } ?>
       
   466 						<img src="images/wpspin_light.gif" alt="" id="saving" style="display:none;" />
       
   467 					</p>
       
   468 				</div>
       
   469 			</div>
       
   470 
       
   471 			<div id="categorydiv" class="stuffbox">
       
   472 				<h3><?php _e('Categories') ?></h3>
       
   473 				<div class="inside">
       
   474 
       
   475 					<div id="categories-all" class="tabs-panel">
       
   476 						<ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
       
   477 							<?php wp_category_checklist($post_ID, false) ?>
       
   478 						</ul>
       
   479 					</div>
       
   480 
       
   481 					<div id="category-adder" class="wp-hidden-children">
       
   482 						<a id="category-add-toggle" href="#category-add" class="hide-if-no-js" tabindex="3"><?php _e( '+ Add New Category' ); ?></a>
       
   483 						<p id="category-add" class="wp-hidden-child">
       
   484 							<label class="screen-reader-text" for="newcat"><?php _e( 'Add New Category' ); ?></label><input type="text" name="newcat" id="newcat" class="form-required form-input-tip" value="<?php esc_attr_e( 'New category name' ); ?>" tabindex="3" aria-required="true"/>
       
   485 							<label class="screen-reader-text" 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 ) ); ?>
       
   486 							<input type="button" id="category-add-sumbit" class="add:categorychecklist:category-add button" value="<?php esc_attr_e( 'Add' ); ?>" tabindex="3" />
       
   487 							<?php wp_nonce_field( 'add-category', '_ajax_nonce', false ); ?>
       
   488 							<span id="category-ajax-response"></span>
       
   489 						</p>
       
   490 					</div>
       
   491 				</div>
       
   492 			</div>
       
   493 
       
   494 			<div id="tagsdiv-post_tag" class="stuffbox" >
       
   495 				<h3><span><?php _e('Post Tags'); ?></span></h3>
       
   496 				<div class="inside">
       
   497 					<div class="tagsdiv" id="post_tag">
       
   498 						<p class="jaxtag">
       
   499 							<label class="screen-reader-text" for="newtag"><?php _e('Post Tags'); ?></label>
       
   500 							<input type="hidden" name="tax_input[post_tag]" class="the-tags" id="tax-input[post_tag]" value="" />
       
   501 							<span class="ajaxtag" style="display:none;">
       
   502 								<input type="text" name="newtag[post_tag]" class="newtag form-input-tip" size="16" autocomplete="off" value="<?php esc_attr_e('Add new tag'); ?>" />
       
   503 								<input type="button" class="button tagadd" value="<?php esc_attr_e('Add'); ?>" tabindex="3" />
       
   504 							</span>
       
   505 						</p>
       
   506 						<div class="tagchecklist"></div>
       
   507 					</div>
       
   508 					<p class="tagcloud-link"><a href="#titlediv" class="tagcloud-link" id="link-post_tag"><?php _e('Choose from the most used tags in Post Tags'); ?></a></p>
       
   509 				</div>
       
   510 			</div>
       
   511 		</div>
       
   512 	</div>
       
   513 
       
   514 	<div class="posting">
       
   515 		<?php if ( isset($posted) && intval($posted) ) { $post_ID = intval($posted); ?>
       
   516 		<div id="message" class="updated fade"><p><strong><?php _e('Your post has been saved.'); ?></strong> <a onclick="window.opener.location.replace(this.href); window.close();" href="<?php echo get_permalink( $post_ID); ?>"><?php _e('View post'); ?></a> | <a href="<?php echo get_edit_post_link( $post_ID ); ?>" onclick="window.opener.location.replace(this.href); window.close();"><?php _e('Edit post'); ?></a> | <a href="#" onclick="window.close();"><?php _e('Close Window'); ?></a></p></div>
       
   517 		<?php } ?>
       
   518 
       
   519 		<div id="titlediv">
       
   520 			<div class="titlewrap">
       
   521 				<input name="title" id="title" class="text" value="<?php echo esc_attr($title);?>"/>
       
   522 			</div>
       
   523 		</div>
       
   524 
       
   525 		<div id="extra_fields" style="display: none"></div>
       
   526 
       
   527 		<div class="postdivrich">
       
   528 			<ul id="actions">
       
   529 
       
   530 				<li id="photo_button">
       
   531 					Add: <?php if ( current_user_can('upload_files') ) { ?><a title="<?php _e('Insert an Image'); ?>" href="#">
       
   532 <img alt="<?php _e('Insert an Image'); ?>" src="images/media-button-image.gif"/></a>
       
   533 					<?php } ?>
       
   534 				</li>
       
   535 				<li id="video_button">
       
   536 					<a title="<?php _e('Embed a Video'); ?>" href="#"><img alt="<?php _e('Embed a Video'); ?>" src="images/media-button-video.gif"/></a>
       
   537 				</li>
       
   538 				<?php if( user_can_richedit() ) { ?>
       
   539 				<li id="switcher">
       
   540 					<?php wp_print_scripts( 'quicktags' ); ?>
       
   541 					<?php add_filter('the_editor_content', 'wp_richedit_pre'); ?>
       
   542 					<a id="edButtonHTML" onclick="switchEditors.go('content', 'html');"><?php _e('HTML'); ?></a>
       
   543 					<a id="edButtonPreview" class="active" onclick="switchEditors.go('content', 'tinymce');"><?php _e('Visual'); ?></a>
       
   544 					<div class="zerosize"><input accesskey="e" type="button" onclick="switchEditors.go('content')" /></div>
       
   545 				</li>
       
   546 				<?php } ?>
       
   547 			</ul>
       
   548 			<div id="quicktags"></div>
       
   549 			<div class="editor-container">
       
   550 				<textarea name="content" id="content" style="width:100%;" class="mceEditor" rows="15">
       
   551 					<?php if ($selection) echo wp_richedit_pre( $selection ); ?>
       
   552 					<?php if ($url) { echo '<p>'; if($selection) _e('via '); printf( "<a href='%s'>%s</a>.", esc_url( $url ), esc_html( $title ) ); echo '</p>'; } ?>
       
   553 				</textarea>
       
   554 			</div>
       
   555 		</div>
       
   556 	</div>
       
   557 </div>
       
   558 </form>
       
   559 <?php do_action('admin_print_footer_scripts'); ?>
       
   560 <script type="text/javascript">if(typeof wpOnload=='function')wpOnload();</script>
       
   561 </body>
       
   562 </html>