2008-05-12 21:08:39 +02:00
< ? php
require_once ( 'admin.php' );
2008-05-20 18:37:54 +02:00
if ( ! current_user_can ( 'publish_posts' ) ) wp_die ( __ ( 'Cheatin’ 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
die ;
}
2008-05-12 21:08:39 +02:00
2008-05-14 22:01:09 +02:00
function press_it () {
2008-05-12 21:08:39 +02:00
$quick [ 'post_status' ] = 'publish' ;
$quick [ 'post_category' ] = $_REQUEST [ 'post_category' ];
$quick [ 'tags_input' ] = $_REQUEST [ 'tags_input' ];
$quick [ 'post_title' ] = $_REQUEST [ 'post_title' ];
$content = '' ;
switch ( $_REQUEST [ 'post_type' ] ) {
2008-05-28 20:18:44 +02:00
case 'text' :
2008-05-12 21:08:39 +02:00
$content = $_REQUEST [ 'content' ];
case 'quote' :
2008-05-28 20:18:44 +02:00
$content = $_REQUEST [ 'content' ];
2008-05-12 21:08:39 +02:00
break ;
case 'photo' :
2008-05-28 20:18:44 +02:00
// http_post_data();
2008-05-12 21:08:39 +02:00
if ( $_REQUEST [ 'photo_link' ])
2008-05-28 20:18:44 +02:00
$content = '<a href="' . $_REQUEST [ 'photo_link' ] . '">' ;
2008-05-12 21:08:39 +02:00
2008-05-20 18:37:54 +02:00
$content .= '<img src="' . $_REQUEST [ 'photo_src' ] . '" alt=""/>' ;
2008-05-12 21:08:39 +02:00
if ( $_REQUEST [ 'photo_link' ])
2008-05-22 17:47:37 +02:00
$content .= ' </ a >
' ;
2008-05-12 21:08:39 +02:00
if ( $_REQUEST [ 'content' ])
2008-05-22 17:47:37 +02:00
$content = $content . " \n " . $_REQUEST [ 'content' ];
2008-05-12 21:08:39 +02:00
break ;
case " video " :
2008-05-28 20:18:44 +02:00
$content = $_REQUEST [ 'content' ];
break ;
2008-05-12 21:08:39 +02:00
}
$quick [ 'post_content' ] = $content ;
$post_ID = wp_insert_post ( $quick , true );
if ( is_wp_error ( $post_ID ) )
wp_die ( $wp_error );
return $post_ID ;
}
2008-05-20 18:37:54 +02:00
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>
< div id = " tagchecklist " ></ div >
< ? php
2008-05-14 22:01:09 +02:00
}
function category_div () {
?>
2008-05-20 18:37:54 +02:00
< 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 = ''; " />
2008-05-25 22:39:16 +02:00
< img src = " images/loading.gif " alt = " " id = " photo_saving " style = " width:16px; height:16px; vertical-align:-4px; display:none; " />
2008-05-20 18:37:54 +02:00
</ p >
</ div >
2008-05-14 22:01:09 +02:00
< ? php
2008-05-12 21:08:39 +02:00
}
2008-05-14 00:12:52 +02:00
function get_images_from_uri ( $uri ) {
2008-05-20 18:37:54 +02:00
2008-05-14 00:12:52 +02:00
$content = wp_remote_fopen ( $uri );
2008-05-28 20:18:44 +02:00
$uri = str_replace ( basename ( $uri ), '' , $uri );
$host = parse_url ( $uri );
2008-05-20 18:37:54 +02:00
if ( false === $content ) return '' ;
2008-05-14 00:12:52 +02:00
2008-05-15 02:20:27 +02:00
$pattern = '/<img[^>]+src=[\'"]([^\'" >]+?)[\'" >]/is' ;
2008-05-14 00:12:52 +02:00
preg_match_all ( $pattern , $content , $matches );
2008-05-20 18:37:54 +02:00
if ( empty ( $matches [ 1 ]) ) return '' ;
2008-05-14 00:12:52 +02:00
$sources = array ();
2008-05-28 20:18:44 +02:00
2008-05-14 00:12:52 +02:00
foreach ( $matches [ 1 ] as $src ) {
if ( false !== strpos ( $src , '&' ) )
continue ;
2008-05-28 20:18:44 +02:00
$src = 'http://' . str_replace ( '//' , '/' , $host [ 'host' ] . '/' . $host [ 'path' ] . '/' . $src );
2008-05-20 18:37:54 +02:00
2008-05-14 00:12:52 +02:00
$sources [] = $src ;
}
return " ' " . implode ( " ',' " , $sources ) . " ' " ;
}
2008-05-28 20:18:44 +02:00
// Clean up the data being passed in
$title = wp_specialchars ( stripslashes ( $_GET [ 't' ]));
$selection = trim ( wp_specialchars ( str_replace ( " \n " , ' ' , stripslashes ( $_GET [ 's' ]))));
$url = clean_url ( $_GET [ 'u' ]);
?>
<! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN " " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
< html xmlns = " http://www.w3.org/1999/xhtml " < ? php do_action ( 'admin_xml_ns' ); ?> <?php language_attributes(); ?>>
< head >
< meta http - equiv = " Content-Type " content = " <?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?> " />
< title >< ? php _e ( 'Press This' ) ?> </title>
< script type = " text/javascript " src = " ../wp-includes/js/tinymce/tiny_mce.js " ></ script >
< ? php
wp_enqueue_script ( 'jquery-ui-tabs' );
add_thickbox ();
wp_enqueue_style ( 'press-this' );
wp_enqueue_style ( 'colors' );
wp_enqueue_script ( 'post' );
do_action ( 'admin_print_styles' );
do_action ( 'admin_print_scripts' );
do_action ( 'admin_head' );
?>
< script type = " text/javascript " >
< ? php if ( user_can_richedit () ) {
2008-05-20 18:37:54 +02:00
$language = ( '' == get_locale () ) ? 'en' : strtolower ( substr ( get_locale (), 0 , 2 ) );
// Add TinyMCE languages
@ include_once ( dirname ( __FILE__ ) . '/../wp-includes/js/tinymce/langs/wp-langs.php' );
if ( isset ( $strings ) ) echo $strings ; ?>
( function () {
var base = tinymce . baseURL , sl = tinymce . ScriptLoader , ln = " <?php echo $language ; ?> " ;
sl . markDone ( base + '/langs/' + ln + '.js' );
sl . markDone ( base + '/themes/advanced/langs/' + ln + '.js' );
sl . markDone ( base + '/themes/advanced/langs/' + ln + '_dlg.js' );
})();
2008-05-14 22:01:09 +02:00
tinyMCE . init ({
mode : " textareas " ,
editor_selector : " mceEditor " ,
language : " <?php echo $language ; ?> " ,
width : " 100% " ,
theme : " advanced " ,
theme_advanced_buttons1 : " bold,italic,underline,blockquote,separator,strikethrough,bullist,numlist,undo,redo,link,unlink " ,
theme_advanced_buttons2 : " " ,
theme_advanced_buttons3 : " " ,
theme_advanced_toolbar_location : " top " ,
theme_advanced_toolbar_align : " left " ,
theme_advanced_statusbar_location : " bottom " ,
theme_advanced_resizing : true ,
theme_advanced_resize_horizontal : false ,
skin : " wp_theme " ,
dialog_type : " modal " ,
relative_urls : false ,
remove_script_host : false ,
convert_urls : false ,
apply_source_formatting : false ,
remove_linebreaks : true ,
accessibility_focus : false ,
tab_focus : " :next " ,
2008-05-22 17:47:37 +02:00
plugins : " safari,inlinepopups " ,
2008-05-25 22:39:16 +02:00
entities : " 38,amp,60,lt,62,gt "
2008-05-14 22:01:09 +02:00
});
< ? php } ?>
2008-05-20 18:37:54 +02:00
2008-05-14 22:01:09 +02:00
jQuery ( '#tags-input' ) . hide ();
2008-05-20 18:37:54 +02:00
2008-05-14 22:01:09 +02:00
tag_update_quickclicks ();
2008-05-20 18:37:54 +02:00
2008-05-14 22:01:09 +02:00
// add the quickadd form
2008-05-22 17:47:37 +02:00
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>' );
2008-05-20 18:37:54 +02:00
2008-05-14 22:01:09 +02:00
jQuery ( '#tagadd' ) . click ( tag_flush_to_text );
jQuery ( '#newtag' ) . focus ( function () {
if ( this . value == postL10n . addTag )
jQuery ( this ) . val ( '' ) . removeClass ( 'form-input-tip' );
});
jQuery ( '#newtag' ) . blur ( function () {
if ( this . value == '' )
jQuery ( this ) . val ( postL10n . addTag ) . addClass ( 'form-input-tip' );
});
// auto-save tags on post save/publish
jQuery ( '#publish' ) . click ( tag_save_on_publish );
jQuery ( '#save-post' ) . click ( tag_save_on_publish );
2008-05-28 20:18:44 +02:00
function set_menu ( type ) {
jQuery ( '#text_button' ) . removeClass ( 'ui-tabs-selected' );
jQuery ( '#menu li' ) . removeClass ( 'ui-tabs-selected' );
jQuery ( '#' + type + '_button' ) . addClass ( 'ui-tabs-selected' );
jQuery ( " #post_type " ) . val ( type );
}
function set_editor ( text ) {
tinyMCE . activeEditor . setContent ( '' );
tinyMCE . execCommand ( 'mceInsertContent' , false , text );
}
function set_title ( title ) { jQuery ( " #content_type " ) . text ( title ); }
var last = null ;
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 ;
}
2008-05-14 22:01:09 +02:00
2008-05-28 20:18:44 +02:00
jQuery ( document ) . ready ( function () {
< ? php if ( preg_match ( " /youtube \ .com \ /watch/i " , $url ) ) { ?>
< ? php } elseif ( preg_match ( " /flickr \ .com/i " , $url ) ) { ?>
< ? php } else { ?>
2008-05-14 00:12:52 +02:00
2008-05-28 20:18:44 +02:00
< ? php } ?>
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 ;
});
2008-05-22 17:47:37 +02:00
2008-05-28 20:18:44 +02:00
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 ;
});
2008-05-22 02:06:41 +02:00
2008-05-28 20:18:44 +02:00
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 ;
2008-05-14 22:01:09 +02:00
2008-05-28 20:18:44 +02:00
});
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 );
2008-05-14 22:01:09 +02:00
2008-05-28 20:18:44 +02:00
tb_init ( 'a.thickbox, area.thickbox, input.thickbox' ); //pass where to apply thickbox
});
});
2008-05-14 22:01:09 +02:00
</ script >
2008-05-22 17:47:37 +02:00
2008-05-14 22:01:09 +02:00
</ head >
2008-05-30 01:30:28 +02:00
< body class = " press-this " >
2008-05-20 18:37:54 +02:00
< div id = " wphead " >
2008-05-22 17:48:32 +02:00
< h1 >< span id = " viewsite " >< a href = " <?php echo get_option('home'); ?>/ " >< ? php _e ( 'Visit:' ) ?> <?php bloginfo('name'); ?></a></span></h1>
2008-05-20 18:37:54 +02:00
</ div >
2008-05-22 17:47:37 +02:00
2008-05-28 20:18:44 +02:00
< ul id = " menu " class = " ui-tabs-nav " >
< li id = " text_button " class = " ui-tabs-selected " >< a href = " # " >< ? php _e ( 'Text' ) ?> </a></li>
< li id = " photo_button " >< a href = " # " >< ? php _e ( 'Photo' ) ?> </a></li>
< li id = " quote_button " >< a href = " # " >< ? php _e ( 'Quote' ) ?> </a></li>
< li id = " video_button " >< a href = " # " >< ? php _e ( 'Video' ) ?> </a></li>
</ ul >
2008-05-14 00:12:52 +02:00
2008-05-28 20:18:44 +02:00
< form action = " press-this.php?action=post " method = " post " >
2008-05-14 18:59:07 +02:00
< ? php wp_nonce_field ( 'press-this' ) ?>
2008-05-14 00:12:52 +02:00
< input type = " hidden " name = " source " value = " bookmarklet " />
2008-05-28 20:18:44 +02:00
< input type = " hidden " name = " post_type " id = " post_type " value = " text " />
2008-05-14 00:12:52 +02:00
< div id = " posting " >
2008-05-20 18:37:54 +02:00
2008-05-30 18:00:37 +02:00
< h2 id = " title " >< label for = " post_title " >< ? php _e ( 'Title' ) ?> </label></h2>
2008-05-20 18:37:54 +02:00
< div class = " titlewrap " >
2008-05-28 20:18:44 +02:00
< input name = " post_title " id = " post_title " class = " text " value = " <?php echo attribute_escape( $title );?> " />
2008-05-14 00:12:52 +02:00
</ div >
2008-05-28 20:18:44 +02:00
< div id = " photo_fields " style = " display: none; " >
2008-05-30 18:00:37 +02:00
< h2 >< label for = " photo_src " >< ? php _e ( 'Photo URL' ) ?> </label></h2>
2008-05-28 20:18:44 +02:00
< div class = " titlewrap " >
< input name = " photo_src " id = " photo_src " class = " text " onkeydown = " pick(0); " />
</ div >
2008-05-20 18:37:54 +02:00
2008-05-28 20:18:44 +02:00
< div class = " photolist " ></ div >
2008-05-20 18:37:54 +02:00
2008-05-30 18:00:37 +02:00
< h2 >< label for = " photo_link " >< ? php _e ( 'Link Photo to following URL' ) ?> </label></h2><?php _e('(leave blank to leave the photo unlinked)') ?>
2008-05-28 20:18:44 +02:00
< div class = " titlewrap " >
< input name = " photo_link " id = " photo_link " class = " text " value = " <?php echo attribute_escape( $url );?> " />
</ div >
2008-05-22 17:47:37 +02:00
2008-05-28 20:18:44 +02:00
< small >< ? php _e ( 'Click images to select:' ) ?> </small>
< div class = " titlewrap " >
< div id = " img_container " ></ div >
</ div >
2008-05-20 18:37:54 +02:00
</ div >
2008-05-30 18:00:37 +02:00
< h2 id = " content_type " >< label for = " content " >< ? php _e ( 'Post' ) ?> </label></h2>
2008-05-20 18:37:54 +02:00
< div class = " editor-container " >
2008-05-28 20:18:44 +02:00
< textarea name = " content " id = " content " style = " height:170px;width:100%; " class = " mceEditor " >
2008-05-25 22:39:16 +02:00
< ? php echo $selection ; ?>
</ textarea >
2008-05-20 18:37:54 +02:00
</ div >
2008-05-14 22:01:09 +02:00
< ? php tag_div (); ?>
2008-05-20 18:37:54 +02:00
2008-05-12 21:08:39 +02:00
</ div >
2008-05-28 20:18:44 +02:00
< ? php category_div (); ?>
</ form >
< ? php /*
2008-05-17 20:50:54 +02:00
if ( preg_match ( " /youtube \ .com \ /watch/i " , $url ) ) {
2008-05-17 01:20:56 +02:00
list ( $domain , $video_id ) = split ( " v= " , $url );
2008-05-12 21:08:39 +02:00
?>
2008-05-17 01:20:56 +02:00
< input type = " hidden " name = " content " value = " <?php echo attribute_escape( $url ); ?> " />
2008-05-20 18:37:54 +02:00
< img src = " http://img.youtube.com/vi/<?php echo $video_id ; ?>/default.jpg " align = " right " style = " border:solid 1px #aaa; " width = " 130 " height = " 97 " />
2008-05-12 21:08:39 +02:00
< ? php } else { ?>
2008-05-20 18:37:54 +02:00
2008-05-30 18:00:37 +02:00
< h2 >< label for = " video_post_one " >< ? php _e ( 'Embed Code' ) ?> </label></h2>
2008-05-12 21:08:39 +02:00
< textarea name = " content " id = " video_post_one " style = " height:80px;width:100%; " ></ textarea >
2008-05-28 20:18:44 +02:00
< ? php } */ ?>
</ body >
</ html >