WordPress.org

Make WordPress Core

Ticket #7117: press-this-6-10-5am.diff

File press-this-6-10-5am.diff, 15.2 KB (added by noel, 6 years ago)
  • wp-admin/includes/media.php

     
    116116} 
    117117 
    118118 
    119 function media_sideload_image($file, $post_id) { 
     119function media_sideload_image($file, $post_id, $desc = null) { 
    120120 
    121121        if (!empty($file) ) { 
    122122                // Upload File button was clicked 
    123123                 
    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']; 
    130131                $src = $sideload['src']; 
     
    141142        if ( !empty($src) && !strpos($src, '://') ) 
    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); 
    158156 
     
    172170                if ( trim($image_meta['caption']) ) 
    173171                        $content = $image_meta['caption']; 
    174172        } 
     173         
     174        $title = @$desc; 
    175175 
    176176        // Construct the attachment array 
    177177        $attachment = array_merge( array( 
  • wp-admin/press-this.php

     
    55 
    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'] = ''; 
     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'] = ''; 
    1314                 
    14                 // insert the post with nothing in it, to get an ID 
    15                 $post_ID = wp_insert_post($quick, true); 
     15        # insert the post with nothing in it, to get an ID 
     16        $post_ID = wp_insert_post($quick, true); 
    1617                 
    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;   
     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); 
    5456        } 
    5557        return $post_ID; 
    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<?php } 
    6364 
    64         function category_div() { 
    65         ?> 
     65function category_div() { ?> 
    6666        <div id="categories"> 
    6767                <div class="submitbox" id="submitpost"> 
    6868                        <div id="previewview">  <h2><?php _e('Categories') ?></h2></div> 
     
    7878                        <img src="images/loading.gif" alt="" id="photo_saving" style="width:16px; height:16px; vertical-align:-4px; display:none;"/> 
    7979                        </p> 
    8080                </div>   
    81         <?php 
    82         } 
     81<?php } 
    8382 
    84 // For posts submitted 
     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} 
    90109 
     
    92111$title = wp_specialchars(stripslashes($_GET['t'])); 
    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                }); 
    95132 
     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 
     146 
    96147if($_REQUEST['ajax'] == 'video') { ?> 
    97148        <h2 id="embededcode"><label for="embed_code"><?php _e('Embed Code') ?></label></h2> 
    98149        <div class="titlewrap" > 
     
    137188if($_REQUEST['ajax'] == 'photo_js') { ?> 
    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", 
    168207                                url: "<?php echo clean_url($_SERVER['PHP_SELF']); ?>", 
    169208                                cache : false, 
    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 
    181220                                if (img.width && img.height) { 
     
    196235                                        img_attr += ' style="width: ' + w + 'px; height: ' + h + 'px;"'; 
    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                        } 
    202241 
     
    207246<?php die; } 
    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> 
    216251         
    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> 
    221          
    222252                <small><?php _e('Click images to select:') ?></small> 
    223253                <div class="titlewrap"> 
    224254                        <div id="img_container">Loading Images...</div> 
     
    264294                                width: "100%", 
    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 : "", 
    270299                                theme_advanced_toolbar_location : "top", 
     
    278307                                remove_script_host : false, 
    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", 
    284313                                plugins : "safari,inlinepopups", 
     
    317346                if(tinyMCE.activeEditor) tinyMCE.activeEditor.setContent(''); 
    318347                if(tinyMCE.activeEditor) tinyMCE.execCommand('mceInsertContent' ,false, text); 
    319348        } 
     349        function append_editor(text) { 
     350                if(tinyMCE.activeEditor) tinyMCE.execCommand('mceInsertContent' ,false, text); 
     351        } 
    320352        function set_title(title) { jQuery("#content_type").text(title); } 
    321353        function reset_height() { 
    322354                tinyMCE.height = '170px'; 
     
    331363                                jQuery('#content_type').show(); 
    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; 
    337369                        case 'quote' : 
     
    340372                                jQuery('#content_type').show(); 
    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; 
    346378                        break; 
     
    372404                                                $content = $selection; 
    373405                                        } ?> 
    374406                                        jQuery('#embed_code').prepend('<?php echo htmlentities($content); ?>'); 
    375                                         set_editor('<?php echo $title; ?>'); 
     407                                        set_editor("<?php echo $title; ?>"); 
    376408                                         
    377409                                }); 
    378410 
     
    383415                        case 'photo' : 
    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); ?>'); 
    391426                                jQuery('#extra_fields').prepend('<h2><img src="images/loading.gif" alt="" /> Loading...</h2>'); 
     
    398433                                        success : function() { 
    399434                                        } 
    400435                                }); 
     436                                 
    401437                                return false; 
    402438                        break; 
    403439 
     
    444480                                        <div class="titlewrap"> 
    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"> 
    450486                                        <h2 id="content_type"><label for="content"><?php _e('Post') ?></label></h2> 
  • wp-admin/css/press-this.css

     
    356356        height: 300px; 
    357357        float: left; 
    358358} 
     359 
    359360#embed_code { 
    360361        border: 0; 
    361362        width: 99%; 
     
    394395.ac_match { 
    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} 
     447 No newline at end of file