WordPress.org

Make WordPress Core

Changeset 8067


Ignore:
Timestamp:
06/10/2008 04:13:06 PM (10 years ago)
Author:
ryan
Message:

Press This improvements from noel. fixes #7117

Location:
trunk/wp-admin
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/css/press-this.css

    r8062 r8067  
    357357    float: left;
    358358}
     359
    359360#embed_code {
    360361    border: 0;
     
    395396    text-decoration: underline;
    396397}
     398
     399
     400.photolist {
     401display: none;
     402}
     403
     404#extra_fields small {
     405display: block;
     406margin-top: .5em;
     407padding-bottom: .25em;
     408}
     409
     410#TB_ajaxContent #options {
     411position: absolute;
     412top: 20px;
     413right: 25px;
     414background: white;
     415padding: 5px;
     416}
     417#TB_ajaxContent h3 {
     418margin-bottom: .25em;
     419}
     420
     421.updated {
     422    margin: 0;
     423    margin-left: 15px;
     424    margin-right: 15px;
     425    padding: 0;
     426    max-width: 980px;
     427    border-width: 1px;
     428    border-style: solid;
     429    padding: 0 0.6em;
     430    max-width: 950px;
     431    margin-top: 1em;
     432    margin-bottom: 1em;
     433}
     434
     435.updated p, .error p {
     436    margin: 0.6em 0;
     437}
     438
     439.updated a, .error a {
     440    text-decoration: underline;
     441}
     442
     443.updated a {
     444    text-decoration: none;
     445    padding-bottom: 2px;
     446}
  • trunk/wp-admin/includes/media.php

    r8048 r8067  
    117117
    118118
    119 function media_sideload_image($file, $post_id) {
     119function media_sideload_image($file, $post_id, $desc = null) {
    120120
    121121    if (!empty($file) ) {
     
    124124        $file_array['name'] = basename($file);
    125125        $file_array['tmp_name'] = download_url($file);
     126        $desc = @$desc;
    126127       
    127         $sideload = media_handle_sideload($file_array, $post_id);
     128        $sideload = media_handle_sideload($file_array, $post_id, $desc);
    128129
    129130        $id = $sideload['id'];
     
    142143       
    143144        $src = "http://$src";
    144         /*$alt = attribute_escape($_POST['insertonly']['alt']);
    145         if ( isset($_POST['insertonly']['align']) ) {
    146             $align = attribute_escape($_POST['insertonly']['align']);
    147             $class = " class='align$align'";
    148         } */
     145        $alt = @$desc;
     146       
    149147        if ( !empty($src) )
    150             $html = "<img src='$src' alt='$alt'$class />";
     148            $html = "<img src='$src' alt='$alt' />";
    151149            return $html;
    152150   
    153151}
    154152
    155 function media_handle_sideload($file_array, $post_id, $post_data = array()) {
     153function media_handle_sideload($file_array, $post_id, $desc = null, $post_data = array()) {
    156154    $overrides = array('test_form'=>false);
    157155    $file = wp_handle_sideload($file_array, $overrides);
     
    173171            $content = $image_meta['caption'];
    174172    }
     173   
     174    $title = @$desc;
    175175
    176176    // Construct the attachment array
  • trunk/wp-admin/press-this.php

    r8059 r8067  
    66<?php
    77function press_it() {
    8         $quick['post_status'] = 'publish';
    9         $quick['post_category'] = $_REQUEST['post_category'];
    10         $quick['tags_input'] = $_REQUEST['tags_input'];
    11         $quick['post_title'] = $_REQUEST['post_title'];
    12         $quick['post_content'] = '';
    13        
    14         // insert the post with nothing in it, to get an ID
    15         $post_ID = wp_insert_post($quick, true);
    16        
    17         $content = '';
    18         switch ( $_REQUEST['post_type'] ) {
    19             case 'text':
    20                 $content .= $_REQUEST['content'];
    21 
    22             case 'quote':
    23                 $content .= $_REQUEST['content'];
    24                 break;
    25 
    26             case 'photo':
    27                 if ($_REQUEST['photo_link'])
    28                     $content .= '<a href="' . $_REQUEST['photo_link'] . '">';
    29                    
    30                     $content .= media_sideload_image($_REQUEST['photo_src'], $post_ID);
    31 
    32                 if ($_REQUEST['photo_link'])
    33                     $content .= '</a>';
    34 
    35                 if ($_REQUEST['content'])
    36                     $content .= $content . "\n\n".$_REQUEST['content'];
    37 
    38                 break;
    39             case "video":
    40                 if($_REQUEST['embed_code'])
    41                     $content .= $_REQUEST['embed_code']."\n\n";
    42                 $content .= $_REQUEST['content'];
    43                 break; 
     8    #define some basic variables
     9    $quick['post_status'] = 'publish';
     10    $quick['post_category'] = $_REQUEST['post_category'];
     11    $quick['tags_input'] = $_REQUEST['tags_input'];
     12    $quick['post_title'] = $_REQUEST['post_title'];
     13    $quick['post_content'] = '';
     14       
     15    # insert the post with nothing in it, to get an ID
     16    $post_ID = wp_insert_post($quick, true);
     17       
     18    $content = '';
     19    switch ( $_REQUEST['post_type'] ) {
     20        case 'text':
     21        case 'quote':
     22            $content .= $_REQUEST['content'];
     23            break;
     24       
     25        case 'photo':
     26            foreach($_REQUEST['photo_src'] as $key => $data) {
     27                #quote for matching
     28                $quoted = str_replace('/', '\/', preg_quote($data));
     29               
     30                # see if files exist in content - we don't want to upload non-used selected files.
     31                preg_match('/'.$quoted.'/', $_REQUEST['content'], $matches[0]);
     32                if($matches[0])
     33                    media_sideload_image($data, $post_ID, $_REQUEST['photo_description'][$key]);   
     34            }
     35            $content = $_REQUEST['content'];
     36            break;
     37           
     38        case "video":
     39            if($_REQUEST['embed_code'])
     40                $content .= $_REQUEST['embed_code']."\n\n";
     41            $content .= $_REQUEST['content'];
     42            break; 
    4443        }
    45 
     44    # set the post_content
    4645    $quick['post_content'] = $content;
    4746
     47    #error handling for $post
    4848    if ( is_wp_error($post_ID) ) {
    4949        wp_die($id);
    5050        wp_delete_post($post_ID);
    51     } else {
     51
     52    #error handling for media_sideload
     53    } else {   
    5254        $quick['ID'] = $post_ID;
    5355        wp_update_post($quick);
     
    5658}
    5759
    58     function tag_div() { ?>
     60function tag_div() { ?>
    5961        <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>
    6062        <div id="tagchecklist"></div>
    61     <?php
    62     }
    63 
    64     function category_div() {
    65     ?>
     63<?php }
     64
     65function category_div() { ?>
    6666    <div id="categories">
    6767        <div class="submitbox" id="submitpost">
     
    7979            </p>
    8080        </div> 
    81     <?php
    82     }
    83 
    84 // For posts submitted
     81<?php }
     82
     83# For submitted posts.
    8584if ( 'post' == $_REQUEST['action'] ) {
    8685    check_admin_referer('press-this'); $post_ID = press_it(); ?>
    87         <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>
     86   
     87    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     88    <html xmlns="http://www.w3.org/1999/xhtml" <?php do_action('admin_xml_ns'); ?> <?php language_attributes(); ?>>
     89    <head>
     90        <meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?>" />
     91        <title><?php _e('Press This') ?></title>
     92    <?php
     93        add_thickbox();
     94        wp_enqueue_style('press-this');
     95        wp_enqueue_style( 'colors' );
     96        wp_enqueue_script('post');
     97
     98        do_action('admin_print_styles');
     99        do_action('admin_print_scripts');
     100        do_action('admin_head');
     101    ?>
     102    </head>
     103    <body class="press-this">
     104        <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="post.php?action=edit&amp;post=<?php echo $post_ID; ?>" onclick="window.opener.location.replace(this.href); window.close();"><?php _e('Edit post'); ?></a> | <a href="#" onclick="window.close();">Close Window</a></p></div>
     105    </body>
     106    </html>
    88107    <?php die;
    89108}
     
    93112$selection = trim(wp_specialchars(str_replace("\n", ' ',stripslashes($_GET['s']))));
    94113$url = $_GET['u'];
     114$image = $_GET['i'];
     115if($_REQUEST['ajax'] == 'thickbox') { ?>
     116    <script type="text/javascript" charset="utf-8">
     117        jQuery('.cancel').click(function() {
     118            tb_remove();
     119        });
     120       
     121        function image_selector() {
     122            desc = jQuery('#this_photo_description').val();
     123            src = jQuery('#this_photo').val();
     124            pick(src, desc);
     125            tb_remove();
     126            return false;
     127        }
     128       
     129        jQuery('.select').click(function() {
     130            image_selector();
     131        });
     132
     133    </script>
     134    <h3 id="title"><label for="post_title"><?php _e('Description') ?></label></h3>
     135    <div class="titlewrap">
     136        <input id="this_photo_description" name="photo_description" class="text" onkeypress="if(event.keyCode==13) image_selector();" value="<?php echo attribute_escape($title);?>"/>
     137    </div>
     138       
     139    <p><input type="hidden" name="this_photo" value="<?php echo $image; ?>" id="this_photo" />
     140        <a href="#" class="select" rel="<?php echo $image; ?>"><img src="<?php echo $image; ?>" width="475" alt="Click to insert." title="Click to insert." /></a></p>
     141   
     142    <p id="options"><a href="#" class="select" rel="<?php echo $image; ?>">Insert Image</a> | <a href="#" class="cancel">Cancel</a></p>
     143<?php die;
     144}
     145
    95146
    96147if($_REQUEST['ajax'] == 'video') { ?>
     
    138189   
    139190            var last = null
    140             function pick(img) {
    141 
    142                 if (last) last.style.backgroundColor = '#f4f4f4';
    143                 if (img) {
    144                     jQuery('#photo_src').val(img.src);
    145                     img.style.backgroundColor = '#44f';
    146                 }
    147                 last = img;
    148                
    149                 /*noel's code to select more than one image....
    150                 jQuery('.photolist').append('<h2><?php _e("Photo URL") ?></h2>' +
    151                 '<div class="titlewrap">' +
    152                 '<a href="#" class="remove">remove <input name="photo_src" id="photo_src[]" value ="'+ img.src +'" class="text" onkeydown="pick(0);"/></a>' +
    153                 '</div>');*/
    154 
     191           
     192            function pick(img, desc) {
     193                if (img) {
     194                    length = jQuery('.photolist input').length;
     195                    if(length == 0) length = 1;
     196                    jQuery('.photolist').append('<input name="photo_src[' + length + ']" value="' + img +'" type="hidden"/>');
     197                    jQuery('.photolist').append('<input name="photo_description[' + length + ']" value="' + desc +'" type="hidden"/>');
     198                    append_editor('<img src="' + img +'" alt="' + desc + '" />'); }
    155199                return false;
    156200            }
    157201
    158             jQuery('.remove').click(function() {
    159                 jQuery(this).remove;
    160             });
    161 
    162 
    163202            var my_src, img, img_tag, aspect, w, h, skip, i, strtoappend = "";
    164203           
    165             var my_src =eval(
     204            var my_src = eval(
    166205            jQuery.ajax({
    167206                type: "GET",
     
    170209                async : false,
    171210                data: "ajax=photo_images&u=<?php echo urlencode($url); ?>",
    172             dataType : "script"
    173             }).responseText);
     211                dataType : "script"
     212                }).responseText);
    174213
    175214            for (i = 0; i < my_src.length; i++) {
    176215                img = new Image();
    177216                img.src = my_src[i];
    178                 img_attr = 'id="img' + i + '" onclick="pick(this);"';
     217                img_attr = 'id="img' + i;
    179218                skip = false;
    180219
     
    197236                }
    198237
    199                 if (!skip) strtoappend += '<a href="' + img.src + '" title="" class="thickbox"><img src="' + img.src + '" ' + img_attr + '/></a>';
     238                if (!skip) strtoappend += '<a href="?ajax=thickbox&amp;i=' + img.src + '&amp;u=<?php echo $url; ?>&amp;height=400&amp;width=500" title="" class="thickbox"><img src="' + img.src + '" ' + img_attr + '/></a>';
    200239
    201240            }
     
    208247
    209248if($_REQUEST['ajax'] == 'photo') { ?>
    210         <h2><?php _e('Photo URL') ?></h2>
    211         <div class="titlewrap">
    212             <input name="photo_src" id="photo_src" class="text" onkeydown="pick(0);"/>
    213         </div>
    214249   
    215250        <div class="photolist"></div>
    216    
    217         <h2><?php _e('Link Photo to following URL') ?></h2><?php _e('(leave blank to leave the photo unlinked)') ?>
    218         <div class="titlewrap">
    219             <input name="photo_link" id="photo_link" class="text" value="<?php echo attribute_escape($url);?>"/>
    220         </div>
    221251   
    222252        <small><?php _e('Click images to select:') ?></small>
     
    265295                theme : "advanced",
    266296                theme_advanced_buttons1 : "bold,italic,underline,blockquote,separator,strikethrough,bullist,numlist,undo,redo,link,unlink",
    267                 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]",
    268297                theme_advanced_buttons2 : "",
    269298                theme_advanced_buttons3 : "",
     
    279308                convert_urls : false,
    280309                apply_source_formatting : false,
    281                 remove_linebreaks : true,
     310                remove_linebreaks : false,
    282311                accessibility_focus : false,
    283312                tab_focus : ":next",
     
    316345    function set_editor(text) {
    317346        if(tinyMCE.activeEditor) tinyMCE.activeEditor.setContent('');
     347        if(tinyMCE.activeEditor) tinyMCE.execCommand('mceInsertContent' ,false, text);
     348    }
     349    function append_editor(text) {
    318350        if(tinyMCE.activeEditor) tinyMCE.execCommand('mceInsertContent' ,false, text);
    319351    }
     
    332364                set_menu('text');
    333365                set_title('<?php _e('Text') ?>');
    334                 set_editor('<?php echo $selection; ?>');
     366                set_editor("<?php echo $selection; ?>");
    335367                return false;
    336368            break;
     
    341373                set_menu('quote');
    342374                set_title('<?php _e('Quote') ?>');
    343                 set_editor('<blockquote><p><?php echo $selection; ?> </p><p><cite><a href="<?php echo $url; ?>"><?php echo $title; ?></a></cite> </p></blockquote>');
     375                set_editor("<blockquote><p><?php echo $selection; ?> </p><p><cite><a href='<?php echo ''; ?>'><?php echo ''; ?></a></cite> </p></blockquote>");
    344376
    345377                return false;
     
    373405                    } ?>
    374406                    jQuery('#embed_code').prepend('<?php echo htmlentities($content); ?>');
    375                     set_editor('<?php echo $title; ?>');
     407                    set_editor("<?php echo $title; ?>");
    376408                   
    377409                });
     
    384416                reset_height();
    385417                set_menu('photo');
    386                 set_title('Caption');
    387                 set_editor('<a href="<?php echo $url; ?>"><?php echo $title; ?></a>');
    388                
     418                set_title('Post');
     419                <?php if($selection) { ?>
     420                    set_editor("<?php echo $selection; ?>");
     421                <?php } else { ?>
     422                    set_editor('')
     423                <?php } ?>
    389424                jQuery('#extra_fields').show();
    390425                jQuery('#extra_fields').load('<?php echo clean_url($_SERVER['PHP_SELF']).'/?ajax=photo&u='.attribute_escape($url); ?>');
     
    399434                    }
    400435                });
     436               
    401437                return false;
    402438            break;
     
    445481                        <input name="post_title" id="post_title" class="text" value="<?php echo attribute_escape($title);?>"/>
    446482                    </div>
    447 
     483                   
    448484                    <div id="extra_fields" style="display: none"></div>
    449485                    <div class="editor_area">
Note: See TracChangeset for help on using the changeset viewer.