diff --git a/wp-admin/css/press-this.css b/wp-admin/css/press-this.css
index f9533eebbe..98af86ded2 100644
--- a/wp-admin/css/press-this.css
+++ b/wp-admin/css/press-this.css
@@ -91,10 +91,27 @@ body {
border-top: none;
}
-.submit input {
-
+.button {
+font-family: "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif;
+padding: 3px 5px;
+font-size: 12px;
+line-height: 1.5em;
+border-width: 1px;
+border-style: solid;
+-moz-border-radius: 3px;
+-khtml-border-radius: 3px;
+-webkit-border-radius: 3px;
+border-radius: 3px;
+cursor: pointer;
+margin-left: 5px;
+text-decoration: none;
}
+.howto {
+font-size: 11px;
+}
+#newtag { padding: 3px; }
+
#wphead {
height: 2em;
padding-top: 8px;
@@ -189,7 +206,7 @@ div#container form {
div#categories {
font-size: 85%;
position: absolute;
-
+ top: 50px;
right: 16px;
width: 27%;
z-index: 2;
@@ -269,7 +286,6 @@ div#categories h2 {
#img_container {
background-color: #fff;
- margin-top: 10px;
overflow: auto;
height: 100px;
}
@@ -283,42 +299,39 @@ div#categories h2 {
margin-bottom: 7px;
cursor: pointer;
}
-
+.submit {
+-moz-border-radius-bottomleft: 3px;
+-khtml-border-bottom-left-radius: 3px;
+-webkit-border-bottom-left-radius: 3px;
+border-bottom-left-radius: 3px;
+-moz-border-radius-bottomright: 3px;
+-khtml-border-bottom-right-radius: 3px;
+-webkit-border-bottom-right-radius: 3px;
+border-bottom-right-radius: 3px;
+margin: 0;
+padding: 0;
+}
.submitbox {
width: 100%;
float: right;
}
-.submitbox .submit {
- text-align: left;
- padding: 12px 10px 10px 10px;
- font-size: 11px;
-}
-
-.submit {
- border-top: 1px solid #ccc;
- padding: 1.5em 0 0 0;
- margin: 10px 0 0 0;
- -moz-border-radius-bottomleft: 3px;
- -khtml-border-bottom-left-radius: 3px;
- -webkit-border-bottom-left-radius: 3px;
- border-bottom-left-radius: 3px;
- -moz-border-radius-bottomright: 3px;
- -khtml-border-bottom-right-radius: 3px;
- -webkit-border-bottom-right-radius: 3px;
- border-bottom-right-radius: 3px;
-}
-
.submitbox .submit a:hover {
border-bottom-width: 1px;
border-bottom-style: solid;
}
.submitbox .submit input {
- margin-bottom: 8px;
- margin-right: 3px;
- padding: 6px 4px;
border: none;
+ text-align: left;
+ padding: 12px 10px 10px 10px;
+ font-size: 12px;
+ margin: 10px;
+
+ -moz-border-radius: 3px;
+ -khtml-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ border-radius: 3px;
cursor: pointer;
}
@@ -337,3 +350,22 @@ div#categories h2 {
.hidden {
display: none;
}
+
+.video_split #extra_fields {
+width: 27%;
+height: 300px;
+float: left;
+}
+#embed_code {
+border: 0;
+width: 99%;
+height: 200px;
+}
+.video_split .editor_area {
+width: 70%;
+float: right;
+}
+
+#jaxtag {
+clear: both;
+}
\ No newline at end of file
diff --git a/wp-admin/includes/file.php b/wp-admin/includes/file.php
index a83b475e28..9eed2bf98d 100644
--- a/wp-admin/includes/file.php
+++ b/wp-admin/includes/file.php
@@ -184,6 +184,98 @@ function wp_handle_upload( &$file, $overrides = false ) {
return $return;
}
+// Pass this function an array similar to that of a $_FILES POST array.
+function wp_handle_sideload( &$file, $overrides = false ) {
+ // The default error handler.
+ if (! function_exists( 'wp_handle_upload_error' ) ) {
+ function wp_handle_upload_error( &$file, $message ) {
+ return array( 'error'=>$message );
+ }
+ }
+
+ // You may define your own function and pass the name in $overrides['upload_error_handler']
+ $upload_error_handler = 'wp_handle_upload_error';
+
+ // $_POST['action'] must be set and its value must equal $overrides['action'] or this:
+ $action = 'wp_handle_sideload';
+
+ // Courtesy of php.net, the strings that describe the error indicated in $_FILES[{form field}]['error'].
+ $upload_error_strings = array( false,
+ __( "The file exceeds the upload_max_filesize
directive in php.ini
." ),
+ __( "The file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form." ),
+ __( "The file was only partially uploaded." ),
+ __( "No file was sent." ),
+ __( "Missing a temporary folder." ),
+ __( "Failed to write file to disk." ));
+
+ // All tests are on by default. Most can be turned off by $override[{test_name}] = false;
+ $test_form = true;
+ $test_size = true;
+
+ // If you override this, you must provide $ext and $type!!!!
+ $test_type = true;
+ $mimes = false;
+
+ // Install user overrides. Did we mention that this voids your warranty?
+ if ( is_array( $overrides ) )
+ extract( $overrides, EXTR_OVERWRITE );
+
+ // A correct form post will pass this test.
+ if ( $test_form && (!isset( $_POST['action'] ) || ($_POST['action'] != $action ) ) )
+ return $upload_error_handler( $file, __( 'Invalid form submission.' ));
+
+ // A successful upload will pass this test. It makes no sense to override this one.
+ if ( $file['error'] > 0 )
+ return $upload_error_handler( $file, $upload_error_strings[$file['error']] );
+
+ // A non-empty file will pass this test.
+ if ( $test_size && !(filesize($file['tmp_name']) > 0 ) )
+ return $upload_error_handler( $file, __( 'File is empty. Please upload something more substantial. This error could also be caused by uploads being disabled in your php.ini.' ));
+
+ // A properly uploaded file will pass this test. There should be no reason to override this one.
+ if (! @ is_file( $file['tmp_name'] ) )
+ return $upload_error_handler( $file, __( 'Specified file does not exist.' ));
+
+ // A correct MIME type will pass this test. Override $mimes or use the upload_mimes filter.
+ if ( $test_type ) {
+ $wp_filetype = wp_check_filetype( $file['name'], $mimes );
+
+ extract( $wp_filetype );
+
+ if ( ( !$type || !$ext ) && !current_user_can( 'unfiltered_upload' ) )
+ return $upload_error_handler( $file, __( 'File type does not meet security guidelines. Try another.' ));
+
+ if ( !$ext )
+ $ext = ltrim(strrchr($file['name'], '.'), '.');
+
+ if ( !$type )
+ $type = $file['type'];
+ }
+
+ // A writable uploads dir will pass this test. Again, there's no point overriding this one.
+ if ( ! ( ( $uploads = wp_upload_dir() ) && false === $uploads['error'] ) )
+ return $upload_error_handler( $file, $uploads['error'] );
+
+ $filename = wp_unique_filename( $uploads['path'], $file['name'], $unique_filename_callback );
+
+ // Move the file to the uploads dir
+ $new_file = $uploads['path'] . "/$filename";
+ if ( false === @ rename( $file['tmp_name'], $new_file ) ) {
+ return $upload_error_handler( $file, sprintf( __('The uploaded file could not be moved to %s.' ), $uploads['path'] ) );
+ }
+
+ // Set correct file permissions
+ $stat = stat( dirname( $new_file ));
+ $perms = $stat['mode'] & 0000666;
+ @ chmod( $new_file, $perms );
+
+ // Compute the URL
+ $url = $uploads['url'] . "/$filename";
+
+ $return = apply_filters( 'wp_handle_upload', array( 'file' => $new_file, 'url' => $url, 'type' => $type ) );
+
+ return $return;
+}
/**
* Downloads a url to a local file using the Snoopy HTTP Class
diff --git a/wp-admin/includes/media.php b/wp-admin/includes/media.php
index 027d1b7a49..4f7b344542 100644
--- a/wp-admin/includes/media.php
+++ b/wp-admin/includes/media.php
@@ -116,6 +116,83 @@ function media_handle_upload($file_id, $post_id, $post_data = array()) {
}
+function media_sideload_image($file, $post_id) {
+
+ if (!empty($file) ) {
+ // Upload File button was clicked
+
+ $file_array['name'] = basename($file);
+ $file_array['tmp_name'] = download_url($file);
+
+ $sideload = media_handle_sideload($file_array, $post_id);
+
+ $id = $sideload['id'];
+ $src = $sideload['src'];
+
+ unset($file_array['tmp_name']);
+ unset($file_array);
+
+ if ( is_wp_error($id) ) {
+ $errors['upload_error'] = $id;
+ $id = false;
+ }
+ }
+
+ if ( !empty($src) && !strpos($src, '://') )
+
+ $src = "http://$src";
+ /*$alt = attribute_escape($_POST['insertonly']['alt']);
+ if ( isset($_POST['insertonly']['align']) ) {
+ $align = attribute_escape($_POST['insertonly']['align']);
+ $class = " class='align$align'";
+ } */
+ if ( !empty($src) )
+ $html = "";
+ return $html;
+
+}
+
+function media_handle_sideload($file_array, $post_id, $post_data = array()) {
+ $overrides = array('test_form'=>false);
+ $file = wp_handle_sideload($file_array, $overrides);
+
+ if ( isset($file['error']) )
+ return new wp_error( 'upload_error', $file['error'] );
+
+ $url = $file['url'];
+ $type = $file['type'];
+ $file = $file['file'];
+ $title = preg_replace('/\.[^.]+$/', '', basename($file));
+ $content = '';
+
+ // use image exif/iptc data for title and caption defaults if possible
+ if ( $image_meta = @wp_read_image_metadata($file) ) {
+ if ( trim($image_meta['title']) )
+ $title = $image_meta['title'];
+ if ( trim($image_meta['caption']) )
+ $content = $image_meta['caption'];
+ }
+
+ // Construct the attachment array
+ $attachment = array_merge( array(
+ 'post_mime_type' => $type,
+ 'guid' => $url,
+ 'post_parent' => $post_id,
+ 'post_title' => $title,
+ 'post_content' => $content,
+ ), $post_data );
+
+ // Save the data
+ $id = wp_insert_attachment($attachment, $file, $post_parent);
+ if ( !is_wp_error($id) ) {
+ wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) );
+ }
+
+ return array('id' => $id, 'src' => $url);
+
+}
+
+
// wrap iframe content (produced by $content_func) in a doctype, html head/body etc
// any additional function args will be passed to content_func
function wp_iframe($content_func /* ... */) {
diff --git a/wp-admin/press-this.php b/wp-admin/press-this.php
index 1df7c697f8..a618f73cf4 100644
--- a/wp-admin/press-this.php
+++ b/wp-admin/press-this.php
@@ -1,114 +1,226 @@
-if ( 'post' == $_REQUEST['action'] ) {
- check_admin_referer('press-this');
- $post_ID = press_it(); ?>
-
';
+ // insert the post with nothing in it, to get an ID
+ $post_ID = wp_insert_post($quick, true);
+
+ $content = '';
+ switch ( $_REQUEST['post_type'] ) {
+ case 'text':
+ $content .= $_REQUEST['content'];
- $content .= '';
+ case 'quote':
+ $content .= $_REQUEST['content'];
+ break;
- if ($_REQUEST['photo_link'])
- $content .= '
- ';
+ case 'photo':
+ if ($_REQUEST['photo_link'])
+ $content .= '';
+
+ $content .= media_sideload_image($_REQUEST['photo_src'], $post_ID);
- if ($_REQUEST['content'])
- $content = $content . "\n".$_REQUEST['content'];
+ if ($_REQUEST['photo_link'])
+ $content .= '';
- break;
- case "video":
- $content = $_REQUEST['content'];
-
- break;
- }
+ if ($_REQUEST['content'])
+ $content .= $content . "\n\n".$_REQUEST['content'];
+
+ break;
+ case "video":
+ if($_REQUEST['embed_code'])
+ $content .= $_REQUEST['embed_code']."\n\n";
+ $content .= $_REQUEST['content'];
+ break;
+ }
$quick['post_content'] = $content;
- $post_ID = wp_insert_post($quick, true);
-
- if ( is_wp_error($post_ID) )
- wp_die($wp_error);
-
+ if ( is_wp_error($post_ID) ) {
+ wp_die($id);
+ wp_delete_post($post_ID);
+ } else {
+ $quick['ID'] = $post_ID;
+ wp_update_post($quick);
+ }
return $post_ID;
}
-function tag_div() { ?>
-
- - -
-+ + +
+'); - jQuery(document).ready(function() { - - - - - + return false; + break; + case 'video' : + reset_height(); + jQuery('.editor-container').show(); + jQuery('#content_type').show(); + set_menu('video'); + set_title(''); + + jQuery('#extra_fields').show(); + jQuery('body').addClass('video_split'); - + + jQuery('#extra_fields').load('', { ajax: 'video', selection: ''}, function() { + + '; ?> + + '; + + if(trim($selection) == '') $selection = '' . $title . ' on Vimeo'; + }else { + $content = $selection; + } ?> + jQuery('#embed_code').prepend(''); + set_editor(''); + + }); - - - - jQuery("#text_button").click(function () { - jQuery('.editor-container').show(); - jQuery('#content_type').show(); - jQuery('#photo_fields').hide(); - set_menu('text'); - set_title(''); - set_editor(''); - return false; - }); - - jQuery("#quote_button").click(function () { - jQuery('.editor-container').show(); - jQuery('#content_type').show(); - jQuery('#photo_fields').hide(); - set_menu('quote'); - set_title(''); - set_editor('
'); + + return false; + break; - return false; - }); - + case 'photo' : + reset_height(); + set_menu('photo'); + set_title('Caption'); + set_editor(''); + + jQuery('#extra_fields').show(); + jQuery('#extra_fields').load(''); + jQuery('#extra_fields').prepend('