WordPress.org

Make WordPress Core

Changeset 7932


Ignore:
Timestamp:
05/14/2008 08:01:09 PM (10 years ago)
Author:
ryan
Message:

Press This: AJAX load all tabs, add tag UI, make category list scrollable.

Location:
trunk/wp-admin
Files:
3 edited

Legend:

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

    r7931 r7932  
    335335}
    336336
     337#categories-all {
     338    overflow: auto;
     339    height: 30em;   
     340}
     341
    337342#categories ul {
    338343    list-style: none;
     
    347352}
    348353
     354#tagsdiv #newtag {
     355    margin-right: 5px;
     356    width: 16em;
     357}
     358
     359#tagchecklist {
     360    margin-left: 10px;
     361
     362    font-size: 12px;
     363    overflow: auto;
     364}
     365
     366#tagchecklist strong {
     367    margin-left: -8px;
     368    position: absolute;
     369}
     370
     371#tagchecklist span {
     372    margin-right: 25px;
     373    display: block;
     374    float: left;
     375    font-size: 11px;
     376    line-height: 1.8em;
     377    white-space: nowrap;
     378    cursor: default;
     379}
     380
     381#tagchecklist span a {
     382    margin: 6px 0pt 0pt -9px;
     383    cursor: pointer;
     384    width: 10px;
     385    height: 10px;
     386    display: block;
     387    float: left;
     388    text-indent: -9999px;
     389    overflow: hidden;
     390    position: absolute;
     391}
     392
     393.howto {
     394    font-style: italic;
     395    display: block;
     396}
     397
    349398/* end quickpost css */
  • trunk/wp-admin/js/post.js

    r7777 r7932  
    1919
    2020function tag_update_quickclicks() {
     21    if ( jQuery( '#tags-input' ).length == 0 )
     22        return;
    2123    var current_tags = jQuery( '#tags-input' ).val().split(',');
    2224    jQuery( '#tagchecklist' ).empty();
  • trunk/wp-admin/press-this.php

    r7931 r7932  
    55    wp_die( __( 'Cheatin’ uh?' ));
    66
    7 function quick_post() {
     7function press_it() {
    88    $quick['post_status'] = 'publish';
    99    $quick['post_category'] = $_REQUEST['post_category'];
     
    5858}
    5959
    60 function tag_input() {
    61     $s = '<div id="tagdiv">
    62         <h2>' . __('Tags') . '</h2>
    63         <input type="text" name="tags_input" class="text" id="tags-input" size="30" tabindex="3" value="" /><br/>' .
    64         __('Comma separated (e.g. Wordpress, Plugins)') .
    65         '</div>';
    66    
    67     return $s;
     60function tag_div() {
     61?>
     62    <h2><?php _e('Tags') ?></h2>
     63    <div id="tagsdiv">
     64        <div class="inside">
     65            <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>
     66<div id="tagchecklist"></div>
     67        </div>
     68    </div>
     69<?php
     70}
     71
     72function category_div() {
     73?>
     74                <div id="categories">
     75                    <h2><?php _e('Categories') ?></h2>
     76                    <div id="categories-all">
     77                        <ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
     78                        <?php wp_category_checklist() ?>
     79                        </ul>
     80                    </div>
     81                </div>
     82<?php
    6883}
    6984
     
    99114}
    100115
    101 // Clean up the data being passed in
    102 $title = stripslashes($_GET['t']);
    103 
    104 if ( !empty($_GET['load']) && 'photo' == $_GET['load'] ) {
    105 ?>
    106     <script type="text/javascript">
    107     <?php if ( user_can_richedit() ) {
     116function press_this_js_init() {
     117    if ( user_can_richedit() ) {
    108118        $language = ( '' == get_locale() ) ? 'en' : strtolower( substr(get_locale(), 0, 2) );
    109119    ?>
    110 
    111120            tinyMCE.init({
    112121                mode: "textareas",
     
    135144            });
    136145    <?php } ?>
    137             var last = null;
    138             function pick(img) {
    139                 if (last) last.style.backgroundColor = '#f4f4f4';
    140                 if (img) {
    141                     document.getElementById('photo_src').value = img.src;
    142                     img.style.backgroundColor = '#44f';
    143                 }
    144                 last = img;
    145                 return false;
    146             }
    147 
    148             jQuery(document).ready(function() {
    149                 var img, img_tag, aspect, w, h, skip, i, strtoappend = "";
    150                 var my_src = [<?php echo get_images_from_uri(clean_url($_GET['u'])); ?>];
    151 
    152                 for (i = 0; i < my_src.length; i++) {
    153                     img = new Image();
    154                     img.src = my_src[i];
    155                     img_attr = 'id="img' + i + '" onclick="pick(this);"';
    156                     skip = false;
    157                     if (img.width && img.height) {
    158                         if (img.width * img.height < 2500) skip = true;
    159                         aspect = img.width / img.height;
    160                         if (aspect > 1) {
    161                             // Image is wide
    162                             scale = 75 / img.width;
    163                         } else {
    164                             // Image is tall or square
    165                             scale = 75 / img.height;
    166                         }
    167                         if (scale < 1) {
    168                             w = parseInt(img.width * scale);
    169                             h = parseInt(img.height * scale);
    170                         } else {
    171                             w = img.width;
    172                             h = img.height;
    173                         }
    174                         img_attr += ' style="width: ' + w + 'px; height: ' + h + 'px;"';
    175                     }
    176                     if (!skip) {
    177                         strtoappend += '<a href="' + img.src + '" title="" class="thickbox"><img src="' + img.src + '" ' + img_attr + '/></a>'
    178                     }
    179                 }
    180                 jQuery('#img_container').html(strtoappend);
    181 
    182                 tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox
    183             });
    184     </script>
    185 
    186             <form action="press-this.php?action=post" method="post" id="photo_form">
    187                 <?php wp_nonce_field('press-this') ?>
    188                 <input type="hidden" name="source" value="bookmarklet"/>
    189                 <input type="hidden" name="post_type" value="photo"/>
    190                 <div id="posting">
    191                     <h2><?php _e('Post Title') ?></h2>
    192                     <input name="post_title" id="post_title" class="text" value="<?php echo attribute_escape($title);?>"/>
    193 
    194                     <h2><?php _e('Caption') ?></h2>
    195                     <div class="editor-container">
    196                         <textarea name="content" id="photo_post_two" style="height:130px;width:100%;" class="mceEditor"><?php echo stripslashes($_GET['s']);?>
    197                         <br>&lt;a href="<?php echo clean_url($_GET['u']);?>"&gt;<?php echo $title;?>&lt;/a&gt;</textarea>
    198                     </div>
    199 
    200                     <h2><?php _e('Photo URL') ?></h2>
    201                     <input name="photo_src" id="photo_src" class="text" onkeydown="pick(0);"/>
    202 
    203                     <style type="text/css">
    204                         #img_container img {
    205                             width:          75px;
    206                             height:         75px;
    207                             padding:        2px;
    208                             background-color: #f4f4f4;
    209                             margin-right:   7px;
    210                             margin-bottom:  7px;
    211                             cursor:         pointer;
    212                         }
    213                     </style>
    214                     <div id="img_container" style="border:solid 1px #ccc; background-color:#f4f4f4; padding:5px; width:370px; margin-top:10px; overflow:auto; height:100px;">
    215                     </div>
    216 
    217                     <h2><?php _e('Link Photo to following URL') ?></h2><?php _e('(leave blank to leave the photo unlinked)') ?>
    218                     <input name="photo_link" id="photo_link" class="text" value="<?php echo attribute_escape($_GET['u']);?>"/>
    219 
    220                     <?php tag_input(); ?>
    221      
    222                     <div>         
    223                         <input type="submit" value="<?php _e('Create Photo') ?>" style="margin-top:15px;"   onclick="document.getElementById('photo_saving').style.display = '';"/>&nbsp;&nbsp;
    224 
    225                         <a href="#" onclick="if (confirm('<?php _e('Are you sure?') ?>')) { self.close(); } else { return false; }" style="color:#007BFF;"><?php _e('Cancel') ?></a>&nbsp;&nbsp;
    226                         <img src="/images/bookmarklet_loader.gif" alt="" id="photo_saving" style="width:16px; height:16px; vertical-align:-4px; display:none;"/>
    227                     </div>
    228                 </div>
    229                 <div id="categories">
    230                     <h2><?php _e('Categories') ?></h2>
    231                     <ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
    232                     <?php wp_category_checklist($post_ID) ?>
    233                     </ul>
    234                 </div>
    235             </form>
    236 <?php
    237 exit;
    238 }
     146        jQuery('#tags-input').hide();
     147        tag_update_quickclicks();
     148        // add the quickadd form
     149        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="button" class="button" id="tagadd" value="' + postL10n.add + '" tabindex="3" /><input type="hidden"/><input type="hidden"/><span class="howto">'+postL10n.separate+'</span></span>');
     150        jQuery('#tagadd').click( tag_flush_to_text );
     151        jQuery('#newtag').focus(function() {
     152            if ( this.value == postL10n.addTag )
     153                jQuery(this).val( '' ).removeClass( 'form-input-tip' );
     154        });
     155        jQuery('#newtag').blur(function() {
     156            if ( this.value == '' )
     157                jQuery(this).val( postL10n.addTag ).addClass( 'form-input-tip' );
     158        });
     159
     160        // auto-save tags on post save/publish
     161        jQuery('#publish').click( tag_save_on_publish );
     162        jQuery('#save-post').click( tag_save_on_publish );
     163<?php
     164}
     165
     166// Clean up the data being passed in
     167$title = stripslashes($_GET['t']);
     168
     169if ( empty($_GET['tab']) ) {
    239170?>
    240171<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    246177    <script type="text/javascript" src="../wp-includes/js/tinymce/tiny_mce.js"></script>
    247178       
    248     <?php wp_enqueue_script('jquery-ui-tabs'); ?>
    249     <?php wp_enqueue_script('thickbox'); ?>
    250     <?php do_action('admin_print_scripts'); do_action('admin_head'); ?>
    251     <?php wp_admin_css('css/press-this'); ?>
    252     <?php wp_admin_css( 'css/colors' ); ?>
    253 
     179<?php
     180    wp_enqueue_script('jquery-ui-tabs');
     181    wp_enqueue_script('thickbox');
     182    wp_enqueue_script('post');
     183    do_action('admin_print_scripts'); do_action('admin_head');
     184    wp_admin_css('css/press-this');
     185    wp_admin_css( 'css/colors' );
     186?>
    254187    <script type="text/javascript">
    255188    <?php if ( user_can_richedit() ) {
     
    310243
    311244<?php
    312 if ( 'post' == $_REQUEST['action'] ) {
    313     check_admin_referer('press-this');
    314     $post_ID = quick_post();
    315 ?>
    316     <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>
    317     </body></html>
    318 <?php
    319     die;
    320 }
    321 
     245    if ( 'post' == $_REQUEST['action'] ) {
     246        check_admin_referer('press-this');
     247        $post_ID = press_it();
     248?>
     249        <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>
     250        </body></html>
     251<?php
     252        die;
     253    }
    322254?>
    323255    <div id="container">
    324    
    325256        <ul>
    326             <li><a href="#section-1"><span><?php _e('Text/Link') ?></span></a></li>
    327             <li><a href="<?php echo add_query_arg('load', 'photo') ?>"><span><?php _e('Photo') ?></span></a></li>
    328             <li><a href="#section-3"><span><?php _e('Quote') ?></span></a></li>
    329             <li><a href="#section-4"><span><?php _e('Video') ?></span></a></li>
     257            <li><a href="<?php echo clean_url(add_query_arg('tab', 'text')) ?>"><span><?php _e('Text/Link') ?></span></a></li>
     258            <li><a href="<?php echo clean_url(add_query_arg('tab', 'photo')) ?>"><span><?php _e('Photo') ?></span></a></li>
     259            <li><a href="<?php echo clean_url(add_query_arg('tab', 'quote')) ?>"><span><?php _e('Quote') ?></span></a></li>
     260            <li><a href="<?php echo clean_url(add_query_arg('tab', 'video')) ?>"><span><?php _e('Video') ?></span></a></li>
    330261        </ul>
    331 
    332         <!-- Regular -->
    333         <div id="section-1">
     262    </div>
     263
     264</body>
     265</html>
     266<?php
     267exit;
     268} elseif ( 'photo' == $_GET['tab'] ) {
     269?>
     270    <script type="text/javascript">
     271        <?php press_this_js_init(); ?>
     272            var last = null;
     273            function pick(img) {
     274                if (last) last.style.backgroundColor = '#f4f4f4';
     275                if (img) {
     276                    document.getElementById('photo_src').value = img.src;
     277                    img.style.backgroundColor = '#44f';
     278                }
     279                last = img;
     280                return false;
     281            }
     282            jQuery(document).ready(function() {
     283                var img, img_tag, aspect, w, h, skip, i, strtoappend = "";
     284                var my_src = [<?php echo get_images_from_uri(clean_url($_GET['u'])); ?>];
     285
     286                for (i = 0; i < my_src.length; i++) {
     287                    img = new Image();
     288                    img.src = my_src[i];
     289                    img_attr = 'id="img' + i + '" onclick="pick(this);"';
     290                    skip = false;
     291                    if (img.width && img.height) {
     292                        if (img.width * img.height < 2500) skip = true;
     293                        aspect = img.width / img.height;
     294                        if (aspect > 1) {
     295                            // Image is wide
     296                            scale = 75 / img.width;
     297                        } else {
     298                            // Image is tall or square
     299                            scale = 75 / img.height;
     300                        }
     301                        if (scale < 1) {
     302                            w = parseInt(img.width * scale);
     303                            h = parseInt(img.height * scale);
     304                        } else {
     305                            w = img.width;
     306                            h = img.height;
     307                        }
     308                        img_attr += ' style="width: ' + w + 'px; height: ' + h + 'px;"';
     309                    }
     310                    if (!skip) {
     311                        strtoappend += '<a href="' + img.src + '" title="" class="thickbox"><img src="' + img.src + '" ' + img_attr + '/></a>'
     312                    }
     313                }
     314                jQuery('#img_container').html(strtoappend);
     315
     316                tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox
     317            });
     318    </script>
     319
     320            <form action="press-this.php?action=post" method="post" id="photo_form">
     321                <?php wp_nonce_field('press-this') ?>
     322                <input type="hidden" name="source" value="bookmarklet"/>
     323                <input type="hidden" name="post_type" value="photo"/>
     324                <div id="posting">
     325                    <h2><?php _e('Post Title') ?></h2>
     326                    <input name="post_title" id="post_title" class="text" value="<?php echo attribute_escape($title);?>"/>
     327
     328                    <h2><?php _e('Caption') ?></h2>
     329                    <div class="editor-container">
     330                        <textarea name="content" id="photo_post_two" style="height:130px;width:100%;" class="mceEditor"><?php echo stripslashes($_GET['s']);?>
     331                        <br>&lt;a href="<?php echo clean_url($_GET['u']);?>"&gt;<?php echo $title;?>&lt;/a&gt;</textarea>
     332                    </div>
     333
     334                    <h2><?php _e('Photo URL') ?></h2>
     335                    <input name="photo_src" id="photo_src" class="text" onkeydown="pick(0);"/>
     336
     337                    <style type="text/css">
     338                        #img_container img {
     339                            width:          75px;
     340                            height:         75px;
     341                            padding:        2px;
     342                            background-color: #f4f4f4;
     343                            margin-right:   7px;
     344                            margin-bottom:  7px;
     345                            cursor:         pointer;
     346                        }
     347                    </style>
     348                    <div id="img_container" style="border:solid 1px #ccc; background-color:#f4f4f4; padding:5px; width:370px; margin-top:10px; overflow:auto; height:100px;">
     349                    </div>
     350
     351                    <h2><?php _e('Link Photo to following URL') ?></h2><?php _e('(leave blank to leave the photo unlinked)') ?>
     352                    <input name="photo_link" id="photo_link" class="text" value="<?php echo attribute_escape($_GET['u']);?>"/>
     353
     354                    <?php tag_div(); ?>
     355     
     356                    <div>         
     357                        <input type="submit" value="<?php _e('Create Photo') ?>" style="margin-top:15px;"   onclick="document.getElementById('photo_saving').style.display = '';"/>&nbsp;&nbsp;
     358
     359                        <a href="#" onclick="if (confirm('<?php _e('Are you sure?') ?>')) { self.close(); } else { return false; }" style="color:#007BFF;"><?php _e('Cancel') ?></a>&nbsp;&nbsp;
     360                        <img src="/images/bookmarklet_loader.gif" alt="" id="photo_saving" style="width:16px; height:16px; vertical-align:-4px; display:none;"/>
     361                    </div>
     362                </div>
     363                <?php category_div() ?>
     364            </form>
     365<?php
     366exit;
     367} elseif ( 'text' == $_GET['tab'] ) {
     368?>
     369        <script type="text/javascript">
     370        <?php press_this_js_init(); ?>
     371        </script>
     372
    334373          <form action="press-this.php?action=post" method="post" id="regular_form">
    335374                <?php wp_nonce_field('press-this') ?>
     
    345384                    </div>       
    346385
    347                     <?php tag_input(); ?>
     386                    <?php tag_div(); ?>
    348387       
    349388                    <div>         
     
    353392                    </div>
    354393                </div>
    355                 <div id="categories">
    356                     <h2><?php _e('Categories') ?></h2>
    357                     <ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
    358                     <?php wp_category_checklist($post_ID) ?>
    359                     </ul>
    360                 </div>
     394                <?php category_div() ?>
    361395             </form>
    362         </div>
    363 
    364         <!-- Quote -->
    365         <div id="section-3">
     396<?php
     397exit;
     398} elseif ( 'quote' == $_GET['tab'] ) {
     399?>
     400        <script type="text/javascript">
     401        <?php press_this_js_init(); ?>
     402        </script>
     403
    366404            <form action="press-this.php?action=post" method="post" id="quote_form">
    367405                <?php wp_nonce_field('press-this') ?>
     
    382420                    </div>
    383421
    384                     <?php tag_input(); ?>
     422                    <?php tag_div(); ?>
    385423
    386424                    <div>         
     
    390428                    </div>
    391429                </div>
    392                 <div id="categories">
    393                     <h2><?php _e('Categories') ?></h2>
    394                     <ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
    395                     <?php wp_category_checklist($post_ID) ?>
    396                     </ul>
    397                 </div>
     430                <?php category_div() ?>
    398431            </form>
    399         </div>
    400 
    401         <!-- Video -->
    402         <div id="section-4">
     432<?php
     433exit;
     434} elseif ( 'video' == $_GET['tab'] ) {
     435?>
     436        <script type="text/javascript">
     437        <?php press_this_js_init(); ?>
     438        </script>
     439
    403440            <form action="press-this.php?action=post" method="post" id="video_form">
    404441                <?php wp_nonce_field('press-this') ?>
     
    426463                    </div>
    427464
    428                     <?php tag_input(); ?>
     465                    <?php tag_div(); ?>
    429466
    430467                    <div>               
     
    434471                    </div>
    435472                </div>
    436                 <div id="categories">
    437                     <h2><?php _e('Categories') ?></h2>
    438                     <ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
    439                     <?php wp_category_checklist($post_ID) ?>
    440                     </ul>
    441                 </div>
     473                <?php category_div() ?>
    442474            </form>
    443         </div>
    444 
    445     </div>
    446 
    447 </body>
    448 </html>
     475<?php
     476exit;
     477}
     478?>         
Note: See TracChangeset for help on using the changeset viewer.