Make WordPress Core


Ignore:
Timestamp:
07/10/2008 03:49:52 AM (16 years ago)
Author:
ryan
Message:

Media Uploader improvements from azaozz: Improves the insert external image dialog, redirects to the gallery tab after "Save all changes" is clicked, shows the "Order" fields on the closed tabs, where they are easier to use, and only in the Gallery. see #7274

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/includes/media.php

    r8265 r8304  
    2727
    2828function the_media_upload_tabs() {
     29    global $redir_tab;
    2930    $tabs = media_upload_tabs();
    3031
    3132    if ( !empty($tabs) ) {
    3233        echo "<ul id='sidemenu'>\n";
    33         if ( isset($_GET['tab']) && array_key_exists($_GET['tab'], $tabs) )
     34        if ( isset($redir_tab) && array_key_exists($redir_tab, $tabs) )
     35            $current = $redir_tab;
     36        elseif ( isset($_GET['tab']) && array_key_exists($_GET['tab'], $tabs) )
    3437            $current = $_GET['tab'];
    3538        else {
     
    155158            $content = $image_meta['caption'];
    156159    }
    157    
     160
    158161    $title = @$desc;
    159162
     
    326329    }
    327330
    328     if ( isset($_POST['save']) )
     331    if ( isset($_POST['save']) ) {
    329332        $errors['upload_notice'] = __('Saved.');
     333        return media_upload_gallery();
     334    }
    330335
    331336    return wp_iframe( 'media_upload_type_form', 'image', $errors, $id );
     
    337342        $file_array['tmp_name'] = download_url($file);
    338343        $desc = @$desc;
    339        
     344
    340345        $id = media_handle_sideload($file_array, $post_id, $desc);
    341346        $src = $id;
     
    386391    }
    387392
    388     if ( isset($_POST['save']) )
     393    if ( isset($_POST['save']) ) {
    389394        $errors['upload_notice'] = __('Saved.');
     395        return media_upload_gallery();
     396    }
    390397
    391398    return wp_iframe( 'media_upload_type_form', 'audio', $errors, $id );
     
    424431    }
    425432
    426     if ( isset($_POST['save']) )
     433    if ( isset($_POST['save']) ) {
    427434        $errors['upload_notice'] = __('Saved.');
     435        return media_upload_gallery();
     436    }
    428437
    429438    return wp_iframe( 'media_upload_type_form', 'video', $errors, $id );
     
    462471    }
    463472
    464     if ( isset($_POST['save']) )
     473    if ( isset($_POST['save']) ) {
    465474        $errors['upload_notice'] = __('Saved.');
     475        return media_upload_gallery();
     476    }
    466477
    467478    return wp_iframe( 'media_upload_type_form', 'file', $errors, $id );
     
    674685
    675686function get_media_item( $attachment_id, $args = null ) {
     687    global $redir_tab;
     688
    676689    $default_args = array( 'errors' => null, 'send' => true, 'delete' => true, 'toggle' => true );
    677690    $args = wp_parse_args( $args, $default_args );
     
    721734
    722735    $display_title = ( !empty( $title ) ) ? $title : $filename; // $title shouldn't ever be empty, but just in case
    723     $display_title = wp_html_excerpt($display_title, 100);
     736    $display_title = wp_html_excerpt($display_title, 60);
     737
     738    $gallery = ( (isset($_REQUEST['tab']) && 'gallery' == $_REQUEST['tab']) || (isset($redir_tab) && 'gallery' == $redir_tab) ) ? true : false;
     739    $order = '';
     740
     741    foreach ( $form_fields as $key => $val ) {
     742        if ( 'menu_order' == $key ) {
     743            if ( $gallery )
     744                $order = '<div class="menu_order"> <input class="menu_order_input" type="text" id="attachments['.$attachment_id.'][menu_order]" name="attachments['.$attachment_id.'][menu_order]" value="'.$val['value'].'" /></div>';
     745            else
     746                $order = '<input type="hidden" name="attachments['.$attachment_id.'][menu_order]" value="'.$val['value'].'" />';
     747
     748            unset($form_fields['menu_order']);
     749            break;
     750        }
     751    }
    724752
    725753    $item = "
    726754    $type
    727755    $toggle_links
     756    $order
    728757    <div class='filename new'>$display_title</div>
    729758    <table class='slidetoggle describe $class'>
     
    959988</div>
    960989
     990<script type="text/javascript">
     991//<![CDATA[
     992var addExtImage = {
     993
     994    width : '',
     995    height : '',
     996    align : 'alignnone',
     997
     998    insert : function() {
     999        var t = this, html, f = document.forms[0], cls, title = '', alt = '', caption = null;
     1000
     1001        if ( '' == f.src.value || '' == t.width ) return false;
     1002
     1003        if ( f.title.value ) {
     1004            title = f.title.value.replace(/['"<>]+/g, '');
     1005            title = ' title="'+title+'"';
     1006        }
     1007
     1008        if ( f.alt.value ) {
     1009            alt = f.alt.value.replace(/['"<>]+/g, '');
     1010            caption = f.alt.value.replace(/'/g, '&#39;').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
     1011        }
     1012
     1013        cls = caption ? '' : ' class="'+t.align+'"';
     1014
     1015        html = '<img alt="'+alt+'" src="'+f.src.value+'"'+title+cls+' width="'+t.width+'" height="'+t.height+'" />';
     1016
     1017        if ( f.url.value )
     1018            html = '<a href="'+f.url.value+'">'+html+'</a>';
     1019
     1020        if ( caption )
     1021            html = '[wp_caption id="" align="'+t.align+'" width="'+t.width+'" caption="'+caption+'"]'+html+'[/wp_caption]';
     1022
     1023        var win = window.dialogArguments || opener || parent || top;
     1024        win.send_to_editor(html);
     1025    },
     1026
     1027    resetImageData : function() {
     1028        var t = addExtImage;
     1029
     1030        t.width = t.height = '';
     1031        document.getElementById('go_button').style.color = '#bbb';
     1032        if ( ! document.forms[0].src.value )
     1033            document.getElementById('status_img').src = 'images/required.gif';
     1034        else document.getElementById('status_img').src = 'images/no.png';
     1035    },
     1036
     1037    updateImageData : function() {
     1038        var t = addExtImage;
     1039
     1040        t.width = t.preloadImg.width;
     1041        t.height = t.preloadImg.height;
     1042        document.getElementById('go_button').style.color = '#333';
     1043        document.getElementById('status_img').src = 'images/yes.png';
     1044    },
     1045
     1046    getImageData : function() {
     1047        var t = addExtImage, src = document.forms[0].src.value;
     1048
     1049        if ( ! src ) {
     1050            t.resetImageData();
     1051            return false;
     1052        }
     1053        document.getElementById('status_img').src = 'images/loading.gif';
     1054        t.preloadImg = new Image();
     1055        t.preloadImg.onload = t.updateImageData;
     1056        t.preloadImg.onerror = t.resetImageData;
     1057        t.preloadImg.src = src;
     1058    }
     1059}
     1060//]]>
     1061</script>
     1062
    9611063<div id="media-items">
    9621064<div class="media-item media-blank">
     
    9701072
    9711073function media_upload_gallery_form($errors) {
     1074    global $redir_tab;
     1075
     1076    $redir_tab = 'gallery';
    9721077    media_upload_header();
    9731078
    9741079    $post_id = intval($_REQUEST['post_id']);
    975 
    9761080    $form_action_url = admin_url("media-upload.php?type={$GLOBALS['type']}&tab=gallery&post_id=$post_id");
    977 
    9781081?>
    9791082
     
    9931096<?php wp_nonce_field('media-form'); ?>
    9941097<?php //media_upload_form( $errors ); ?>
    995 
     1098<table class="widefat">
     1099<thead><tr>
     1100<th><?php _e('Media'); ?></th>
     1101<th class="order-head"><?php _e('Order'); ?></th>
     1102</tr></thead>
     1103</table>
    9961104<div id="media-items">
    9971105<?php echo get_media_items($post_id, $errors); ?>
    9981106</div>
     1107<p class="ml-submit">
    9991108<input type="submit" class="button savebutton" name="save" value="<?php echo attribute_escape( __( 'Save all changes' ) ); ?>" />
    10001109<input type="submit" class="button insert-gallery" name="insert-gallery" value="<?php echo attribute_escape( __( 'Insert gallery into post' ) ); ?>" />
     
    10021111<input type="hidden" name="type" value="<?php echo attribute_escape( $GLOBALS['type'] ); ?>" />
    10031112<input type="hidden" name="tab" value="<?php echo attribute_escape( $GLOBALS['tab'] ); ?>" />
     1113</p>
    10041114</form>
    10051115<?php
     
    11561266    <table class="describe"><tbody>
    11571267        <tr>
     1268            <th valign="top" scope="row" class="label" style="width:120px;">
     1269                <span class="alignleft"><label for="src">' . __('Source') . '</label></span>
     1270                <span class="alignright"><img id="status_img" src="images/required.gif" title="required" alt="required" /></span>
     1271            </th>
     1272            <td class="field"><input id="src" name="src" value="" type="text" aria-required="true" onblur="addExtImage.getImageData()"></td>
     1273        </tr>
     1274
     1275        <tr>
    11581276            <th valign="top" scope="row" class="label">
    1159                 <span class="alignleft"><label for="insertonly[src]">' . __('Image URL') . '</label></span>
     1277                <span class="alignleft"><label for="title">' . __('Image Title') . '</label></span>
    11601278                <span class="alignright"><abbr title="required" class="required">*</abbr></span>
    11611279            </th>
    1162             <td class="field"><input id="insertonly[src]" name="insertonly[src]" value="" type="text" aria-required="true"></td>
    1163         </tr>
     1280            <td class="field"><p><input id="title" name="title" value="" type="text" aria-required="true" /></p></td>
     1281        </tr>
     1282
    11641283        <tr>
    11651284            <th valign="top" scope="row" class="label">
    1166                 <span class="alignleft"><label for="insertonly[alt]">' . __('Description') . '</label></span>
    1167                 <span class="alignright"><abbr title="required" class="required">*</abbr></span>
     1285                <span class="alignleft"><label for="alt">' . __('Image Caption') . '</label></span>
    11681286            </th>
    1169             <td class="field"><input id="insertonly[alt]" name="insertonly[alt]" value="" type="text" aria-required="true"></td>
    1170         </tr>
    1171         <tr><td></td><td class="help">' . __('Alternate text, e.g. "The Mona Lisa"') . '</td></tr>
     1287            <td class="field"><input id="alt" name="alt" value="" type="text" aria-required="true" />
     1288            <p class="help">' . __('Also used as alternate text for the image') . '</p></td>
     1289        </tr>
     1290
    11721291        <tr class="align">
    1173             <th valign="top" scope="row" class="label"><label for="insertonly[align]">' . __('Alignment') . '</label></th>
     1292            <th valign="top" scope="row" class="label"><p><label for="align">' . __('Alignment') . '</label></p></th>
    11741293            <td class="field">
    1175                 <input name="insertonly[align]" id="image-align-none-0" value="none" type="radio" checked="checked" />
    1176                 <label for="image-align-none-0" class="align image-align-none-label">' . __('None') . '</label>
    1177                 <input name="insertonly[align]" id="image-align-left-0" value="left" type="radio" />
    1178                 <label for="image-align-left-0" class="align image-align-left-label">' . __('Left') . '</label>
    1179                 <input name="insertonly[align]" id="image-align-center-0" value="center" type="radio" />
    1180                 <label for="image-align-center-0" class="align image-align-center-label">' . __('Center') . '</label>
    1181                 <input name="insertonly[align]" id="image-align-right-0" value="right" type="radio" />
    1182                 <label for="image-align-right-0" class="align image-align-right-label">' . __('Right') . '</label>
     1294                <input name="align" id="align-none" value="alignnone" onclick="addExtImage.align=this.value" type="radio" checked="checked" />
     1295                <label for="align-none" class="align image-align-none-label">' . __('None') . '</label>
     1296                <input name="align" id="align-left" value="alignleft" onclick="addExtImage.align=this.value" type="radio" />
     1297                <label for="align-left" class="align image-align-left-label">' . __('Left') . '</label>
     1298                <input name="align" id="align-center" value="aligncenter" onclick="addExtImage.align=this.value" type="radio" />
     1299                <label for="align-center" class="align image-align-center-label">' . __('Center') . '</label>
     1300                <input name="align" id="align-right" value="alignright" onclick="addExtImage.align=this.value" type="radio" />
     1301                <label for="align-right" class="align image-align-right-label">' . __('Right') . '</label>
    11831302            </td>
    11841303        </tr>
     1304
     1305        <tr>
     1306            <th valign="top" scope="row" class="label">
     1307                <span class="alignleft"><label for="url">' . __('Link URL') . '</label></span>
     1308            </th>
     1309            <td class="field"><input id="url" name="url" value="" type="text" /><br />
     1310
     1311            <button type="button" class="button" value="" onclick="document.forms[0].url.value=null">' . __('None') . '</button>
     1312            <button type="button" class="button" value="" onclick="document.forms[0].url.value=document.forms[0].src.value">' . __('Link to image') . '</button>
     1313            <p class="help">' . __('Enter a link URL or click above for presets.') . '</p></td>
     1314        </tr>
     1315
    11851316        <tr>
    11861317            <td></td>
    11871318            <td>
    1188                 <input type="submit" class="button" name="insertonlybutton" value="' . attribute_escape(__('Insert into Post')) . '" />
     1319                <input type="button" class="button" id="go_button" style="color:#bbb;" onclick="addExtImage.insert()" value="' . attribute_escape(__('Insert into Post')) . '" />
    11891320            </td>
    11901321        </tr>
Note: See TracChangeset for help on using the changeset viewer.