Press This enhancement from noel. see #7066

git-svn-id: http://svn.automattic.com/wordpress/trunk@8048 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
ryan 2008-06-04 16:13:55 +00:00
parent f1b8d9596a
commit 6aaddbee0a
4 changed files with 553 additions and 285 deletions

View File

@ -91,10 +91,27 @@ body {
border-top: none; 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 { #wphead {
height: 2em; height: 2em;
padding-top: 8px; padding-top: 8px;
@ -189,7 +206,7 @@ div#container form {
div#categories { div#categories {
font-size: 85%; font-size: 85%;
position: absolute; position: absolute;
top: 50px;
right: 16px; right: 16px;
width: 27%; width: 27%;
z-index: 2; z-index: 2;
@ -269,7 +286,6 @@ div#categories h2 {
#img_container { #img_container {
background-color: #fff; background-color: #fff;
margin-top: 10px;
overflow: auto; overflow: auto;
height: 100px; height: 100px;
} }
@ -283,42 +299,39 @@ div#categories h2 {
margin-bottom: 7px; margin-bottom: 7px;
cursor: pointer; 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 { .submitbox {
width: 100%; width: 100%;
float: right; 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 { .submitbox .submit a:hover {
border-bottom-width: 1px; border-bottom-width: 1px;
border-bottom-style: solid; border-bottom-style: solid;
} }
.submitbox .submit input { .submitbox .submit input {
margin-bottom: 8px;
margin-right: 3px;
padding: 6px 4px;
border: none; 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; cursor: pointer;
} }
@ -337,3 +350,22 @@ div#categories h2 {
.hidden { .hidden {
display: none; 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;
}

View File

@ -184,6 +184,98 @@ function wp_handle_upload( &$file, $overrides = false ) {
return $return; 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 <code>upload_max_filesize</code> directive in <code>php.ini</code>." ),
__( "The file exceeds the <em>MAX_FILE_SIZE</em> 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 * Downloads a url to a local file using the Snoopy HTTP Class

View File

@ -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 = "<img src='$src' alt='$alt'$class />";
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 // wrap iframe content (produced by $content_func) in a doctype, html head/body etc
// any additional function args will be passed to content_func // any additional function args will be passed to content_func
function wp_iframe($content_func /* ... */) { function wp_iframe($content_func /* ... */) {

View File

@ -1,114 +1,226 @@
<?php <?php
require_once('admin.php'); require_once('admin.php');
if ( ! current_user_can('publish_posts') ) wp_die( __( 'Cheatin&#8217; uh?' )); if ( ! current_user_can('publish_posts') ) wp_die( __( 'Cheatin&#8217; uh?' )); ?>
if ( 'post' == $_REQUEST['action'] ) {
check_admin_referer('press-this');
$post_ID = press_it(); ?>
<script>if(confirm("<?php _e('Your post is saved. Do you want to view the post?') ?>")) {window.opener.location.replace("<?php echo get_permalink($post_ID);?>");}window.close();</script>
<?php <?php
die;
}
function press_it() { function press_it() {
$quick['post_status'] = 'publish'; $quick['post_status'] = 'publish';
$quick['post_category'] = $_REQUEST['post_category']; $quick['post_category'] = $_REQUEST['post_category'];
$quick['tags_input'] = $_REQUEST['tags_input']; $quick['tags_input'] = $_REQUEST['tags_input'];
$quick['post_title'] = $_REQUEST['post_title']; $quick['post_title'] = $_REQUEST['post_title'];
$quick['post_content'] = '';
$content = '';
switch ( $_REQUEST['post_type'] ) {
case 'text':
$content = $_REQUEST['content'];
case 'quote':
$content = $_REQUEST['content'];
break;
case 'photo':
// http_post_data(); // insert the post with nothing in it, to get an ID
$post_ID = wp_insert_post($quick, true);
if ($_REQUEST['photo_link'])
$content = '<a href="' . $_REQUEST['photo_link'] . '">'; $content = '';
switch ( $_REQUEST['post_type'] ) {
case 'text':
$content .= $_REQUEST['content'];
$content .= '<img src="' . $_REQUEST['photo_src'] . '" alt=""/>'; case 'quote':
$content .= $_REQUEST['content'];
break;
if ($_REQUEST['photo_link']) case 'photo':
$content .= '</a> if ($_REQUEST['photo_link'])
'; $content .= '<a href="' . $_REQUEST['photo_link'] . '">';
$content .= media_sideload_image($_REQUEST['photo_src'], $post_ID);
if ($_REQUEST['content']) if ($_REQUEST['photo_link'])
$content = $content . "\n".$_REQUEST['content']; $content .= '</a>';
break; if ($_REQUEST['content'])
case "video": $content .= $content . "\n\n".$_REQUEST['content'];
$content = $_REQUEST['content'];
break;
break; case "video":
} if($_REQUEST['embed_code'])
$content .= $_REQUEST['embed_code']."\n\n";
$content .= $_REQUEST['content'];
break;
}
$quick['post_content'] = $content; $quick['post_content'] = $content;
$post_ID = wp_insert_post($quick, true); if ( is_wp_error($post_ID) ) {
wp_die($id);
if ( is_wp_error($post_ID) ) wp_delete_post($post_ID);
wp_die($wp_error); } else {
$quick['ID'] = $post_ID;
wp_update_post($quick);
}
return $post_ID; return $post_ID;
} }
function tag_div() { ?> function tag_div() { ?>
<p id="jaxtag"><label class="hidden" for="newtag"><?php _e('Tags'); ?></label><input type="text" name="tags_input" class="tags-input" id="tags-input" size="40" tabindex="3" value="<?php echo get_tags_to_edit( $post->ID ); ?>" /></p> <p id="jaxtag"><label class="hidden" for="newtag"><?php _e('Tags'); ?></label><input type="text" name="tags_input" class="tags-input" id="tags-input" size="40" tabindex="3" value="<?php echo get_tags_to_edit( $post->ID ); ?>" /></p>
<div id="tagchecklist"></div> <div id="tagchecklist"></div>
<?php <?php
}
function category_div() {
?>
<div id="categories">
<div class="submitbox" id="submitpost">
<div id="previewview"> <h2><?php _e('Categories') ?></h2></div>
<div class="inside">
<div id="categories-all">
<ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
<?php wp_category_checklist() ?>
</ul>
</div>
</div>
<p class="submit">
<input type="submit" value="<?php _e('Publish') ?>" onclick="document.getElementById('photo_saving').style.display = '';"/>
<img src="images/loading.gif" alt="" id="photo_saving" style="width:16px; height:16px; vertical-align:-4px; display:none;"/>
</p>
</div>
<?php
}
function get_images_from_uri($uri) {
$content = wp_remote_fopen($uri);
$uri = str_replace(basename($uri), '', $uri);
$host = parse_url($uri);
if ( false === $content ) return '';
$pattern = '/<img[^>]+src=[\'"]([^\'" >]+?)[\'" >]/is';
preg_match_all($pattern, $content, $matches);
if ( empty($matches[1]) ) return '';
$sources = array();
foreach ($matches[1] as $src) {
if ( false !== strpos($src, '&') )
continue;
if ( !strstr( $src, 'http://' ) )
$src = 'http://'.str_replace('//','/', $host['host'].'/'.$host['path'].'/'.$src);
$sources[] = $src;
} }
return "'" . implode("','", $sources) . "'";
function category_div() {
?>
<div id="categories">
<div class="submitbox" id="submitpost">
<div id="previewview"> <h2><?php _e('Categories') ?></h2></div>
<div class="inside">
<div id="categories-all">
<ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
<?php wp_category_checklist() ?>
</ul>
</div>
</div>
<p class="submit">
<input type="submit" value="<?php _e('Publish') ?>" onclick="document.getElementById('photo_saving').style.display = '';"/>
<img src="images/loading.gif" alt="" id="photo_saving" style="width:16px; height:16px; vertical-align:-4px; display:none;"/>
</p>
</div>
<?php
}
// For posts submitted
if ( 'post' == $_REQUEST['action'] ) {
check_admin_referer('press-this'); $post_ID = press_it(); ?>
<script>if(confirm("<?php _e('Your post is saved. Do you want to view the post?') ?>")){window.opener.location.replace("<?php echo get_permalink($post_ID);?>");}window.close();</script>
<?php die;
} }
// Ajax Requests
$url = $_REQUEST['url'];
$selection = $_REQUEST['selection'];
if($_REQUEST['ajax'] == 'video') { ?>
<h2 id="embededcode"><label for="embed_code"><?php _e('Embed Code') ?></label></h2>
<div class="titlewrap" >
<textarea name="embed_code" id="embed_code" rows="8" cols="40"><?php echo $selection; ?></textarea>
</div>
<?php die;
}
if($_REQUEST['ajax'] == 'photo_images') {
function get_images_from_uri($uri) {
$content = wp_remote_fopen($uri);
$host = parse_url($uri);
if ( false === $content ) return '';
$pattern = '/<img[^>]+src=[\'"]([^\'" >]+?)[\'" >]/is';
preg_match_all($pattern, $content, $matches);
if ( empty($matches[1]) ) return '';
$sources = array();
foreach ($matches[1] as $src) {
if ( false !== strpos($src, '&') ) continue;
if(strpos($src, 'http') === false) {
if(strpos($src, '../') === false && strpos($src, './') === false) {
$src = 'http://'.str_replace('//','/', $host['host'].'/'.$src);
} else {
$src = 'http://'.str_replace('//','/', $host['host'].'/'.$host['path'].'/'.$src);
}
}
$sources[] = $src;
}
return "'" . implode("','", $sources) . "'";
}
echo 'new Array('.get_images_from_uri($url).')';
die;
}
if($_REQUEST['ajax'] == 'photo_js') { ?>
var last = null
function pick(img) {
if (last) last.style.backgroundColor = '#f4f4f4';
if (img) {
jQuery('#photo_src').val(img.src);
img.style.backgroundColor = '#44f';
}
last = img;
/*noel's code to select more than one image....
jQuery('.photolist').append('<h2><?php _e("Photo URL") ?></h2>' +
'<div class="titlewrap">' +
'<a href="#" class="remove">remove <input name="photo_src" id="photo_src[]" value ="'+ img.src +'" class="text" onkeydown="pick(0);"/></a>' +
'</div>');*/
return false;
}
jQuery('.remove').click(function() {
jQuery(this).remove;
});
var my_src, img, img_tag, aspect, w, h, skip, i, strtoappend = "";
var my_src =eval(
jQuery.ajax({
type: "GET",
url: "<?php echo clean_url($_SERVER['PHP_SELF']); ?>",
cache : false,
async : false,
data: "ajax=photo_images&url=<?php echo $url?>",
dataType : "script"
}).responseText);
for (i = 0; i < my_src.length; i++) {
img = new Image();
img.src = my_src[i];
img_attr = 'id="img' + i + '" onclick="pick(this);"';
skip = false;
if (img.width && img.height) {
if (img.width * img.height < 2500) skip = true;
aspect = img.width / img.height;
if (aspect > 1) { // Image is wide
scale = 75 / img.width;
} else { // Image is tall or square
scale = 75 / img.height;
}
if (scale < 1) {
w = parseInt(img.width * scale);
h = parseInt(img.height * scale);
} else {
w = img.width;
h = img.height;
}
img_attr += ' style="width: ' + w + 'px; height: ' + h + 'px;"';
}
if (!skip) strtoappend += '<a href="' + img.src + '" title="" class="thickbox"><img src="' + img.src + '" ' + img_attr + '/></a>';
}
jQuery('#img_container').html(strtoappend);
tb_init('a.thickbox, area.thickbox, input.thickbox'); //pass where to apply thickbox
<?php die; }
if($_REQUEST['ajax'] == 'photo') { ?>
<h2><?php _e('Photo URL') ?></h2>
<div class="titlewrap">
<input name="photo_src" id="photo_src" class="text" onkeydown="pick(0);"/>
</div>
<div class="photolist"></div>
<h2><?php _e('Link Photo to following URL') ?></h2><?php _e('(leave blank to leave the photo unlinked)') ?>
<div class="titlewrap">
<input name="photo_link" id="photo_link" class="text" value="<?php echo attribute_escape($url);?>"/>
</div>
<small><?php _e('Click images to select:') ?></small>
<div class="titlewrap">
<div id="img_container">Loading Images...</div>
</div>
<?php die; }
// Clean up the data being passed in // Clean up the data being passed in
$title = wp_specialchars(stripslashes($_GET['t'])); $title = wp_specialchars(stripslashes($_GET['t']));
$selection = trim(wp_specialchars(str_replace("\n", ' ',stripslashes($_GET['s'])))); $selection = trim(wp_specialchars(str_replace("\n", ' ',stripslashes($_GET['s']))));
@ -122,7 +234,6 @@ $url = clean_url($_GET['u']);
<script type="text/javascript" src="../wp-includes/js/tinymce/tiny_mce.js"></script> <script type="text/javascript" src="../wp-includes/js/tinymce/tiny_mce.js"></script>
<?php <?php
wp_enqueue_script('jquery-ui-tabs');
add_thickbox(); add_thickbox();
wp_enqueue_style('press-this'); wp_enqueue_style('press-this');
wp_enqueue_style( 'colors' ); wp_enqueue_style( 'colors' );
@ -153,6 +264,7 @@ $url = clean_url($_GET['u']);
width: "100%", width: "100%",
theme : "advanced", theme : "advanced",
theme_advanced_buttons1 : "bold,italic,underline,blockquote,separator,strikethrough,bullist,numlist,undo,redo,link,unlink", theme_advanced_buttons1 : "bold,italic,underline,blockquote,separator,strikethrough,bullist,numlist,undo,redo,link,unlink",
extended_valid_elements : "object[width|height],param[name|value],embed[src|type|wmode|width|height], a[name|href|target|title|onclick], img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name], hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]",
theme_advanced_buttons2 : "", theme_advanced_buttons2 : "",
theme_advanced_buttons3 : "", theme_advanced_buttons3 : "",
theme_advanced_toolbar_location : "top", theme_advanced_toolbar_location : "top",
@ -174,26 +286,26 @@ $url = clean_url($_GET['u']);
}); });
<?php } ?> <?php } ?>
jQuery('#tags-input').hide(); jQuery('#tags-input').hide();
tag_update_quickclicks(); tag_update_quickclicks();
// add the quickadd form // add the quickadd form
jQuery('#jaxtag').prepend('<span id="ajaxtag"><input type="text" name="newtag" id="newtag" class="form-input-tip" size="16" autocomplete="off" value="'+postL10n.addTag+'" /><input type="submit" class="button" id="tagadd" value="' + postL10n.add + '" tabindex="3" onclick="return false;" /><input type="hidden"/><input type="hidden"/><span class="howto">'+postL10n.separate+'</span></span>'); jQuery('#jaxtag').prepend('<span id="ajaxtag"><input type="text" name="newtag" id="newtag" class="form-input-tip" size="16" autocomplete="off" value="'+postL10n.addTag+'" /><input type="submit" class="button" id="tagadd" value="' + postL10n.add + '" tabindex="3" onclick="return false;" /><input type="hidden"/><input type="hidden"/><span class="howto">'+postL10n.separate+'</span></span>');
jQuery('#tagadd').click( tag_flush_to_text ); jQuery('#tagadd').click( tag_flush_to_text );
jQuery('#newtag').focus(function() { jQuery('#newtag').focus(function() {
if ( this.value == postL10n.addTag ) if ( this.value == postL10n.addTag )
jQuery(this).val( '' ).removeClass( 'form-input-tip' ); jQuery(this).val( '' ).removeClass( 'form-input-tip' );
}); });
jQuery('#newtag').blur(function() { jQuery('#newtag').blur(function() {
if ( this.value == '' ) if ( this.value == '' )
jQuery(this).val( postL10n.addTag ).addClass( 'form-input-tip' ); jQuery(this).val( postL10n.addTag ).addClass( 'form-input-tip' );
}); });
// auto-save tags on post save/publish // auto-save tags on post save/publish
jQuery('#publish').click( tag_save_on_publish ); jQuery('#publish').click( tag_save_on_publish );
jQuery('#save-post').click( tag_save_on_publish ); jQuery('#save-post').click( tag_save_on_publish );
function set_menu(type) { function set_menu(type) {
jQuery('#text_button').removeClass('ui-tabs-selected'); jQuery('#text_button').removeClass('ui-tabs-selected');
@ -202,129 +314,113 @@ $url = clean_url($_GET['u']);
jQuery("#post_type").val(type); jQuery("#post_type").val(type);
} }
function set_editor(text) { function set_editor(text) {
tinyMCE.activeEditor.setContent(''); if(tinyMCE.activeEditor) tinyMCE.activeEditor.setContent('');
tinyMCE.execCommand('mceInsertContent' ,false, text); if(tinyMCE.activeEditor) tinyMCE.execCommand('mceInsertContent' ,false, text);
} }
function set_title(title) { jQuery("#content_type").text(title); } function set_title(title) { jQuery("#content_type").text(title); }
function reset_height() {
var last = null; tinyMCE.height = '170px';
function pick(img) {
if (last) last.style.backgroundColor = '#f4f4f4';
if (img) {
document.getElementById('photo_src').value = img.src;
img.style.backgroundColor = '#44f';
}
last = img;
/*noel's code to select more than one image....
jQuery('.photolist').append('<h2><?php _e("Photo URL") ?></h2>' +
'<div class="titlewrap">' +
'<a href="#" class="remove">remove <input name="photo_src" id="photo_src[]" value ="'+ img.src +'" class="text" onkeydown="pick(0);"/></a>' +
'</div>');*/
return false;
} }
function show(tab_name) {
jQuery('body').removeClass('video_split');
jQuery('#extra_fields').hide();
switch(tab_name) {
case 'text' :
reset_height();
jQuery('.editor-container').show();
jQuery('#content_type').show();
set_menu('text');
set_title('<?php _e('Text') ?>');
set_editor('<?php echo $selection; ?>');
return false;
break;
case 'quote' :
reset_height();
jQuery('.editor-container').show();
jQuery('#content_type').show();
set_menu('quote');
set_title('<?php _e('Quote') ?>');
set_editor('<blockquote><p><?php echo $selection; ?> </p><p><cite><a href="<?php echo $url; ?>"><?php echo $title; ?></a></cite> </p></blockquote>');
jQuery(document).ready(function() { return false;
break;
case 'video' :
<?php if ( preg_match("/youtube\.com\/watch/i", $url) ) { ?> reset_height();
jQuery('.editor-container').show();
<?php } elseif ( preg_match("/flickr\.com/i", $url) ) { ?> jQuery('#content_type').show();
set_menu('video');
set_title('<?php _e('Caption') ?>');
jQuery('#extra_fields').show();
jQuery('body').addClass('video_split');
<?php } else { ?>
jQuery('#extra_fields').load('<?php echo clean_url($_SERVER['PHP_SELF']); ?>', { ajax: 'video', selection: '<?php echo attribute_escape($selection); ?>'}, function() {
<?php
if ( preg_match("/youtube\.com\/watch/i", $url) ) {
list($domain, $video_id) = split("v=", $url);
$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>'; ?>
<?php } elseif ( preg_match("/vimeo\.com\/[0-9]+/i", $url) ) {
list($domain, $video_id) = split(".com/", $url);
$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>';
if(trim($selection) == '') $selection = '<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>';
}else {
$content = $selection;
} ?>
jQuery('#embed_code').prepend('<?php echo htmlentities($content); ?>');
set_editor('<?php echo $title; ?>');
});
<?php } ?>
return false;
break;
jQuery("#text_button").click(function () {
jQuery('.editor-container').show();
jQuery('#content_type').show();
jQuery('#photo_fields').hide();
set_menu('text');
set_title('<?php _e('Text') ?>');
set_editor('<?php echo $selection; ?>');
return false;
});
jQuery("#quote_button").click(function () {
jQuery('.editor-container').show();
jQuery('#content_type').show();
jQuery('#photo_fields').hide();
set_menu('quote');
set_title('<?php _e('Quote') ?>');
set_editor('<blockquote><p><?php echo $selection; ?> </p><p><cite><a href="<?php echo $url; ?>"><?php echo $title; ?></a></cite> </p></blockquote>');
return false; case 'photo' :
}); reset_height();
set_menu('photo');
set_title('Caption');
set_editor('<a href="<?php echo $url; ?>"><?php echo $title; ?></a>');
jQuery('#extra_fields').show();
jQuery('#extra_fields').load('<?php echo clean_url($_SERVER['PHP_SELF']).'/?ajax=photo&url='.attribute_escape($url); ?>');
jQuery('#extra_fields').prepend('<h2><img src="images/loading.gif" alt="" /> Loading...</h2>');
jQuery.ajax({
type: "GET",
cache : false,
url: "<?php echo clean_url($_SERVER['PHP_SELF']); ?>",
data: "ajax=photo_js&url=<?php echo $url?>",
dataType : "script",
success : function() {
}
});
return false;
break;
jQuery("#video_button").click(function () {
jQuery('.editor-container').show();
jQuery('#content_type').show();
jQuery('#photo_fields').hide();
set_menu('video');
set_title('<?php _e('Video') ?>');
set_editor('<a href="<?php echo $url; ?>"><?php echo $title; ?></a>');
<?php /*
<!--list($garbage,$video_id) = split("v=", $_REQUEST['content']);
$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>';-->
*/?>
return false;
});
jQuery("#photo_button").click(function () {
set_menu('photo');
set_title('Caption');
set_editor('<a href="<?php echo $url; ?>"><?php echo $title; ?></a>');
jQuery('#photo_fields').show();
jQuery('.remove').click(function() {
jQuery(this).remove;
});
var img, img_tag, aspect, w, h, skip, i, strtoappend = "";
var my_src = [<?php echo get_images_from_uri($url); ?>];
for (i = 0; i < my_src.length; i++) {
img = new Image();
img.src = my_src[i];
img_attr = 'id="img' + i + '" onclick="pick(this);"';
skip = false;
if (img.width && img.height) {
if (img.width * img.height < 2500) skip = true;
aspect = img.width / img.height;
if (aspect > 1) { // Image is wide
scale = 75 / img.width;
} else { // Image is tall or square
scale = 75 / img.height;
}
if (scale < 1) {
w = parseInt(img.width * scale);
h = parseInt(img.height * scale);
} else {
w = img.width;
h = img.height;
}
img_attr += ' style="width: ' + w + 'px; height: ' + h + 'px;"';
}
if (!skip) strtoappend += '<a href="' + img.src + '" title="" class="thickbox"><img src="' + img.src + '" ' + img_attr + '/></a>';
} }
jQuery('#img_container').html(strtoappend);
tb_init('a.thickbox, area.thickbox, input.thickbox'); //pass where to apply thickbox
});
});
</script>
}
jQuery(document).ready(function() {
jQuery('#menu li').click(function (){
tab_name = this.id.split('_');
tab_name = tab_name[0];
show(tab_name);
});
<?php if ( preg_match("/youtube\.com\/watch/i", $url) ) { ?>
show('video');
<?php } elseif ( preg_match("/vimeo\.com\/[0-9]+/i", $url) ) { ?>
show('video');
<?php } elseif ( preg_match("/flickr\.com/i", $url) ) { ?>
show('photo');
<?php } ?>
});
</script>
</head> </head>
<body class="press-this"> <body class="press-this">
<div id="wphead"> <div id="wphead">
@ -339,8 +435,8 @@ $url = clean_url($_GET['u']);
</ul> </ul>
<form action="press-this.php?action=post" method="post"> <form action="press-this.php?action=post" method="post">
<?php wp_nonce_field('press-this') ?> <?php wp_nonce_field('press-this') ?>
<input type="hidden" name="source" value="bookmarklet"/>
<input type="hidden" name="post_type" id="post_type" value="text"/> <input type="hidden" name="post_type" id="post_type" value="text"/>
<div id="posting"> <div id="posting">
@ -348,49 +444,20 @@ $url = clean_url($_GET['u']);
<div class="titlewrap"> <div class="titlewrap">
<input name="post_title" id="post_title" class="text" value="<?php echo attribute_escape($title);?>"/> <input name="post_title" id="post_title" class="text" value="<?php echo attribute_escape($title);?>"/>
</div> </div>
<div id="photo_fields" style="display: none;">
<h2><label for="photo_src"><?php _e('Photo URL') ?></label></h2> <div id="extra_fields" style="display: none"></div>
<div class="titlewrap"> <div class="editor_area">
<input name="photo_src" id="photo_src" class="text" onkeydown="pick(0);"/>
</div>
<div class="photolist"></div>
<h2><label for="photo_link"><?php _e('Link Photo to following URL') ?></label></h2><?php _e('(leave blank to leave the photo unlinked)') ?>
<div class="titlewrap">
<input name="photo_link" id="photo_link" class="text" value="<?php echo attribute_escape($url);?>"/>
</div>
<small><?php _e('Click images to select:') ?></small>
<div class="titlewrap">
<div id="img_container"></div>
</div>
</div>
<h2 id="content_type"><label for="content"><?php _e('Post') ?></label></h2> <h2 id="content_type"><label for="content"><?php _e('Post') ?></label></h2>
<div class="editor-container"> <div class="editor-container">
<textarea name="content" id="content" style="height:170px;width:100%;" class="mceEditor"> <textarea name="content" id="content" style="width:100%;" class="mceEditor">
<?php echo $selection; ?> <?php echo $selection; ?>
</textarea> </textarea>
</div> </div>
</div>
<?php tag_div(); ?> <?php tag_div(); ?>
</div> </div>
<?php category_div(); ?> <?php category_div(); ?>
</form> </form>
<?php /*
if ( preg_match("/youtube\.com\/watch/i", $url) ) {
list($domain, $video_id) = split("v=", $url);
?>
<input type="hidden" name="content" value="<?php echo attribute_escape($url); ?>" />
<img src="http://img.youtube.com/vi/<?php echo $video_id; ?>/default.jpg" align="right" style="border:solid 1px #aaa;" width="130" height="97"/>
<?php } else { ?>
<h2><label for="video_post_one"><?php _e('Embed Code') ?></label></h2>
<textarea name="content" id="video_post_one" style="height:80px;width:100%;"></textarea>
<?php } */?>
</body> </body>
</html> </html>