Make WordPress Core

Changeset 3303


Ignore:
Timestamp:
12/13/2005 07:19:56 PM (18 years ago)
Author:
ryan
Message:

Attachment enhancements from skeltoac. fixes #2074

Location:
trunk
Files:
1 added
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/admin-functions.php

    r3295 r3303  
    743743            @ imagecopyresampled($thumbnail, $image, 0, 0, 0, 0, $image_new_width, $image_new_height, $image_attr[0], $image_attr[1]);
    744744
     745            // If no filters change the filename, we'll do a default transformation.
     746            if ( basename($file) == $thumb = apply_filters('thumbnail_filename', basename($file)) )
     747                $thumb = preg_replace('!(\.[^.]+)?$!', __('.thumbnail').'$1', basename($file), 1);
     748
     749            $thumbpath = str_replace(basename($file), $thumb, $file);
     750
    745751            // move the thumbnail to it's final destination
    746 
    747             $path = explode('/', $file);
    748             $thumbpath = substr($file, 0, strrpos($file, '/')).'/thumb-'.$path[count($path) - 1];
    749 
    750752            if ($type[2] == 1) {
    751753                if (!imagegif($thumbnail, $thumbpath)) {
     
    772774        return $error;
    773775    } else {
    774         return 1;
     776        return $thumbpath;
    775777    }
    776778}
     
    16341636function wp_handle_upload(&$file, $overrides = false) {
    16351637    // The default error handler.
    1636     function wp_handle_upload_error(&$file, $message) {
    1637         return array('error'=>$message);
     1638    if (! function_exists('wp_handle_upload_error') ) {
     1639        function wp_handle_upload_error(&$file, $message) {
     1640            return array('error'=>$message);
     1641        }
    16381642    }
    16391643
     
    16541658
    16551659    // Accepted MIME types are set here as PCRE. Override with $override['mimes'].
    1656     $mimes = apply_filters('upload_mimes', array(
    1657             'image/jpeg'    =>  'jpg|jpeg|jpe',
    1658             'image/gif' =>  'gif',
    1659             'image/(png|x-png)' =>  'png',
    1660             'image/(bmp|x-bmp|x-ms-bmp)'    =>  'bmp',
    1661             'image/(tiff|x-tiff)'   =>  'tif|tiff',
    1662             'image/(ico|x-ico)' =>  'ico',
    1663             'video/(asf|x-asf|x-ms-asf)'    =>  'asf|asx|wma|wax|wmv|wmx',
    1664             'video/(wmv|x-wmv|x-ms-wmv)'    =>  'wmv',
    1665             'video/(msvideo|x-msvideo)' =>  'avi',
    1666             'video/(quicktime|x-quicktime)' =>  'mov|qt',
    1667             'video/(mpeg|x-mpeg)'   =>  'mpeg|mpg|mpe',
    1668             'text/plain'    =>  'txt|c|cc|h|php',
    1669             'text/richtext' =>  'rtx',
    1670             'text/css'  =>  'css',
    1671             'text/html' =>  'htm|html',
    1672             'text/javascript'   =>  'js',
    1673             'audio/(mpeg|x-mpeg|mpeg3|x-mpeg3)' =>  'mp3',
    1674             'audio/x-realaudio' =>  'ra|ram',
    1675             'audio/(wav|x-wav)' =>  'wav',
    1676             'audio/(ogg|x-ogg)' =>  'ogg',
    1677             'audio/(midi|x-midi)'   =>  'mid|midi',
    1678             'application/pdf'   =>  'pdf',
    1679             'application/msword'    =>  'doc',
    1680             'application/mspowerpoint'  =>  'pot|pps|ppt',
    1681             'application/mswrite'   =>  'wri',
    1682             'application/(msexcel|vnd.ms-excel)'    =>  'xla|xls|xlt|xlw',
    1683             'application/msaccess'  =>  'mdb',
    1684             'application/msproject' =>  'mpp',
    1685             'application/x-shockwave-flash' =>  'swf',
    1686             'application/java'  =>  'class',
    1687             'application/x-tar' =>  'tar',
    1688             'application/(zip|x-zip-compressed)'    =>  'zip',
    1689             'application/(x-gzip|x-gzip-compressed)'    =>  'gz|gzip'));
    1690 
    1691     // For security, we never trust HTTP Content-Type headers unless the user overrides this.
    1692     $trust_content_type = false;
     1660    $mimes = apply_filters('upload_mimes', array (
     1661        'jpg|jpeg|jpe' => 'image/jpeg',
     1662        'gif' => 'image/gif',
     1663        'png' => 'image/png',
     1664        'bmp' => 'image/bmp',
     1665        'tif|tiff' => 'image/tiff',
     1666        'ico' => 'image/x-icon',
     1667        'asf|asx|wax|wmv|wmx' => 'video/asf',
     1668        'avi' => 'video/avi',
     1669        'mov|qt' => 'video/quicktime',
     1670        'mpeg|mpg|mpe' => 'video/mpeg',
     1671        'txt|c|cc|h|php' => 'text/plain',
     1672        'rtx' => 'text/richtext',
     1673        'css' => 'text/css',
     1674        'htm|html' => 'text/html',
     1675        'mp3|mp4' => 'audio/mpeg',
     1676        'ra|ram' => 'audio/x-realaudio',
     1677        'wav' => 'audio/wav',
     1678        'ogg' => 'audio/ogg',
     1679        'mid|midi' => 'audio/midi',
     1680        'wma' => 'audio/wma',
     1681        'rtf' => 'application/rtf',
     1682        'js' => 'application/javascript',
     1683        'pdf' => 'application/pdf',
     1684        'doc' => 'application/msword',
     1685        'pot|pps|ppt' => 'application/vnd.ms-powerpoint',
     1686        'wri' => 'application/vnd.ms-write',
     1687        'xla|xls|xlt|xlw' => 'application/vnd.ms-excel',
     1688        'mdb' => 'application/vnd.ms-access',
     1689        'mpp' => 'application/vnd.ms-project',
     1690        'swf' => 'application/x-shockwave-flash',
     1691        'class' => 'application/java',
     1692        'tar' => 'application/x-tar',
     1693        'zip' => 'application/zip',
     1694        'gz|gzip' => 'application/x-gzip',
     1695        'exe' => 'application/x-msdownload'
     1696    ));
    16931697
    16941698    // All tests are on by default. Most can be turned off by $override[{test_name}] = false;
    16951699    $test_form = true;
    16961700    $test_size = true;
     1701
     1702    // If you override this, you must provide $ext and $type!!!!
    16971703    $test_type = true;
    16981704
     
    17171723        return $upload_error_handler($file, __('Specified file failed upload test.'));
    17181724
    1719     // A correct MIME type will pass this test. We can't always determine it programatically, so we'll trust the HTTP headers.
     1725    // A correct MIME type will pass this test.
    17201726    if ( $test_type ) {
    17211727        $type = false;
    17221728        $ext = false;
    1723         foreach ($mimes as $mime_preg => $ext_preg) {
    1724             $mime_preg = '!^' . $mime_preg . '$!i';
     1729        foreach ($mimes as $ext_preg => $mime_match) {
    17251730            $ext_preg = '![^.]\.(' . $ext_preg . ')$!i';
    1726             if ( preg_match($mime_preg, $file['type'], $type) ) {
    1727                 if ( preg_match($ext_preg, $file['name'], $ext) ) {
    1728                     break;
    1729                 } else {
    1730                     return $upload_error_handler($file, __('File extension does not match file type. Try another.'));
    1731                 }
    1732             }
    1733         }
    1734         if (! $type && $ext )
     1731            if ( preg_match($ext_preg, $file['name'], $ext_matches) ) {
     1732                $type = $mime_match;
     1733                $ext = $ext_matches[1];
     1734            }
     1735        }
     1736
     1737        if ( !$type || !$ext )
    17351738            return $upload_error_handler($file, __('File type does not meet security guidelines. Try another.'));
    1736         $type = $type[0];
    1737         $ext = $ext[1];
    17381739    }
    17391740
     
    17551756    $new_file = $uploads['path'] . "/$filename";
    17561757    if ( false === move_uploaded_file($file['tmp_name'], $new_file) )
    1757         die(__('The uploaded file could not be moved to $file.'));
     1758        die(printf(__('The uploaded file could not be moved to %s.'), $file['path']));
    17581759
    17591760    // Set correct file permissions
     
    17651766    $url = $uploads['url'] . "/$filename";
    17661767
    1767     return array('file' => $new_file, 'url' => $url);
     1768    return array('file' => $new_file, 'url' => $url, 'type' => $type);
    17681769}
    17691770
     
    18371838}
    18381839
     1840function the_attachment_links($id = false) {
     1841    $id = (int) $id;
     1842    $post = & get_post($id);
     1843
     1844    if ( $post->post_status != 'attachment' )
     1845        return false;
     1846
     1847    $icon = get_attachment_icon($post->ID);
     1848
    18391849?>
     1850<?php _e('Text linked to file') ?><br/>
     1851<textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><a href="<?php echo $post->guid ?>" class="attachmentlink"><?php echo basename($post->guid) ?></a></textarea>
     1852<?php _e('Text linked to subpost') ?><br/>
     1853<textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><a href="<?php echo get_attachment_link($post->ID) ?>" rel="attachment" id="<?php echo $post->ID ?>"><?php echo $post->post_title ?></a></textarea>
     1854<?php if ( $icon ) : ?>
     1855<?php _e('Thumbnail linked to file') ?><br/>
     1856<textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><a href="<?php echo $post->guid ?>" class="attachmentlink"><img src="<?php echo $thumb ?>" class="attachmentthumb" alt="<?php echo $post->post_title ?>" /></a></textarea>
     1857<?php _e('Thumbnail linked to subpost') ?><br/>
     1858<textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><a href="<?php echo get_attachment_link($post->ID) ?>" class="attachmentlink"><img src="<?php echo $icon ?>" class="attachmentthumb" alt="<?php echo $post->post_title ?>" /></a></textarea>
     1859<?php endif; ?>
     1860<?php
     1861}
     1862
     1863function get_udims($width, $height) {
     1864    if ( $height <= 96 && $width <= 128 )
     1865        return array($width, $height);
     1866    elseif ( $width / $height > 4 / 3 )
     1867        return array(128, (int) ($height / $width * 128));
     1868    else
     1869        return array((int) ($width / $height * 96), 96);
     1870}
     1871
     1872?>
  • trunk/wp-admin/edit-pages.php

    r2832 r3303  
    1010<p><?php _e('Pages are like posts except they live outside of the normal blog chronology and can be hierarchical. You can use pages to organize and manage any amount of content.'); ?> <a href="page-new.php"><?php _e('Create a new page'); ?> &raquo;</a></p>
    1111
     12<form name="searchform" action="" method="get">
     13  <fieldset>
     14  <legend><?php _e('Search Pages&hellip;') ?></legend>
     15  <input type="text" name="s" value="<?php if (isset($_GET['s'])) echo wp_specialchars($_GET['s'], 1); ?>" size="17" />
     16  <input type="submit" name="submit" value="<?php _e('Search') ?>"  />
     17  </fieldset>
     18</form>
     19
    1220<?php
    13 $posts = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_status = 'static'");
     21
     22$show_post_type = 'page';
     23
     24if ( isset($_GET['s']) )
     25    wp();
     26else
     27    $posts = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_status = 'static'");
    1428
    1529if ($posts) {
     
    2539    <th scope="col"></th>
    2640  </tr>
    27 <?php page_rows(); ?>
     41<?php
     42if ( isset($_GET['s']) ) {
     43foreach ( $posts as $post ) :
     44    $class = ('alternate' != $class) ? 'alternate' : ''; ?>
     45  <tr id='page-<?php echo $id; ?>' class='<?php echo $class; ?>'>
     46    <th scope="row"><?php echo $post->ID; ?></th>
     47    <td>
     48      <?php echo $pad; ?><?php the_title() ?>
     49    </td>
     50    <td><?php the_author() ?></td>
     51    <td><?php echo mysql2date('Y-m-d g:i a', $post->post_modified); ?></td>
     52    <td><a href="<?php the_permalink(); ?>" rel="permalink" class="edit"><?php _e('View'); ?></a></td>
     53    <td><?php if ( current_user_can('edit_pages') ) { echo "<a href='post.php?action=edit&amp;post=$id' class='edit'>" . __('Edit') . "</a>"; } ?></td>
     54    <td><?php if ( current_user_can('edit_pages') ) { echo "<a href='post.php?action=delete&amp;post=$id' class='delete' onclick=\"return deleteSomething( 'page', " . $id . ", '" . sprintf(__("You are about to delete the &quot;%s&quot; page.\\n&quot;OK&quot; to delete, &quot;Cancel&quot; to stop."), wp_specialchars(get_the_title('','',0), 1)) . "' );\">" . __('Delete') . "</a>"; } ?></td>
     55  </tr>
     56<?php
     57endforeach;
     58} else {
     59    page_rows();
     60}
     61?>
    2862</table>
    2963
  • trunk/wp-admin/edit.php

    r3202 r3303  
    6666    printf(__('Search for &#8220;%s&#8221;'), wp_specialchars($_GET['s']) );
    6767} else {
    68     if ( ! is_paged() || get_query_var('paged') == 1 )
     68    if ( is_single() )
     69        printf(__('Comments on %s'), $post->post_title);
     70    elseif ( ! is_paged() || get_query_var('paged') == 1 )
    6971        _e('Last 15 Posts');
    7072    else
  • trunk/wp-admin/inline-uploading.php

    r3295 r3303  
    2626$images_width = 1;
    2727
    28 function get_udims($width, $height) {
    29     if ( $height <= 96 && $width <= 128 )
    30         return array($width, $height);
    31     elseif ( $width / $height > 4 / 3 )
    32         return array(128, (int) ($height / $width * 128));
    33     else
    34         return array((int) ($width / $height * 96), 96);
    35 }
    36 
    3728switch($action) {
    3829case 'delete':
     
    5647
    5748$url = $file['url'];
     49$type = $file['type'];
    5850$file = $file['file'];
    5951$filename = basename($file);
     
    6557    'post_status' => 'attachment',
    6658    'post_parent' => $post,
    67     'post_mime_type' => $_FILES['image']['type'],
     59    'post_mime_type' => $type,
    6860    'guid' => $url
    6961    );
     
    8072    $imagedata['hwstring_small'] = "height='$uheight' width='$uwidth'";
    8173    $imagedata['file'] = $file;
    82     $imagedata['thumb'] = "thumb-$filename";
    8374
    8475    add_post_meta($id, '_wp_attachment_metadata', $imagedata);
     
    8677    if ( $imagedata['width'] * $imagedata['height'] < 3 * 1024 * 1024 ) {
    8778        if ( $imagedata['width'] > 128 && $imagedata['width'] >= $imagedata['height'] * 4 / 3 )
    88             $error = wp_create_thumbnail($file, 128);
     79            $thumb = wp_create_thumbnail($file, 128);
    8980        elseif ( $imagedata['height'] > 96 )
    90             $error = wp_create_thumbnail($file, 96);
     81            $thumb = wp_create_thumbnail($file, 96);
     82
     83        if ( @file_exists($thumb) ) {
     84            $newdata = $imagedata;
     85            $newdata['thumb'] = basename($thumb);
     86            update_post_meta($id, '_wp_attachment_metadata', $newdata, $imagedata);
     87        } else {
     88            $error = $thumb;
     89        }
    9190    }
    9291} else {
     
    163162    $__using_thumbnail = __('Using Thumbnail');
    164163    $__using_original = __('Using Original');
     164    $__using_title = __('Using Title');
     165    $__using_filename = __('Using Filename');
     166    $__using_icon = __('Using Icon');
    165167    $__no_thumbnail = '<del>'.__('No Thumbnail').'</del>';
    166168    $__send_to_editor = __('Send to editor');
     
    174176usingthumbnail = '$__using_thumbnail';
    175177usingoriginal = '$__using_original';
     178usingtitle = '$__using_title';
     179usingfilename = '$__using_filename';
     180usingicon = '$__using_icon';
    176181var aa = new Array();
    177182var ab = new Array();
     
    180185var srca = new Array();
    181186var srcb = new Array();
     187var title = new Array();
     188var filename = new Array();
     189var icon = new Array();
    182190";
    183191    foreach ( $attachments as $key => $attachment ) {
     
    194202        $attachment = array_merge($attachment, $meta);
    195203        $send_delete_cancel = "<a onclick=\"sendToEditor({$ID});return false;\" href=\"javascript:void()\">$__send_to_editor</a>
    196 <a onclick=\"return confirm('$__confirmdelete')\" href=\"".basename(__FILE__)."?action=delete&amp;attachment={$ID}&amp;all=$all&amp;start=$start&amp;post=$post\">$__delete</a>
     204<!--<a onclick=\"return confirm('$__confirmdelete')\" href=\"".basename(__FILE__)."?action=delete&amp;attachment={$ID}&amp;all=$all&amp;start=$start&amp;post=$post\">$__delete</a>-->
    197205        <a onclick=\"popup.style.display='none';return false;\" href=\"javascript:void()\">$__close</a>
    198206";
     
    235243";
    236244        } else {
    237             $script .= "aa[{$ID}] = '<a id=\"{$ID}\" rel=\"attachment\" href=\"$href\" onclick=\"doPopup({$ID});return false;\" title=\"{$attachment['post_title']}\">{$attachment['post_title']}</a>';
    238 ab[{$ID}] = '<a id=\"{$ID}\" href=\"{$attachment['guid']}\" onclick=\"doPopup({$ID});return false;\" title=\"{$attachment['post_title']}\">{$attachment['post_title']}</a>';
     245            $title = $attachment['post_title'];
     246            $filename = basename($attachment['guid']);
     247            if ( $icon = get_attachment_icon($ID) )
     248                $toggle_icon = "<a id=\"I{$ID}\" onclick=\"toggleOtherIcon({$ID});return false;\" href=\"javascript:void()\">$__using_title</a>";
     249            $script .= "aa[{$ID}] = '<a id=\"{$ID}\" rel=\"attachment\" href=\"$href\" onclick=\"doPopup({$ID});return false;\" title=\"{$title}\">{$attachment['post_title']}</a>';
     250ab[{$ID}] = '<a id=\"{$ID}\" href=\"{$filename}\" onclick=\"doPopup({$ID});return false;\" title=\"{$title}\">{$attachment['post_title']}</a>';
     251title[{$ID}] = '{$attachment['post_title']}';
     252filename[{$ID}] = '{$filename}';
     253icon[{$ID}] = '{$icon}';
    239254";
    240255            $html .= "<div id='target{$ID}' class='attwrap left'>
    241     <div id='div{$ID}' class='otherwrap' onmousedown=\"selectLink({$ID})\" onclick=\"doPopup({$ID});return false;\">
     256    <div id='div{$ID}' class='otherwrap usingtext' onmousedown=\"selectLink({$ID})\" onclick=\"doPopup({$ID});return false;\">
    242257        <a id=\"{$ID}\" href=\"{$attachment['guid']}\" onmousedown=\"selectLink({$ID});\" onclick=\"return false;\">{$attachment['post_title']}</a>
    243258    </div>
     
    247262    <div class='filetype'>".__('File Type:').' '.str_replace('/',"/\n",$attachment['post_mime_type'])."</div>
    248263    <a id=\"L{$ID}\" onclick=\"toggleOtherLink({$ID});return false;\" href=\"javascript:void()\">$__linked_to_file</a>
     264    {$toggle_icon}
    249265    {$send_delete_cancel}
    250266</div>
     
    321337    od=document.getElementById('div'+n);
    322338    ol=document.getElementById('L'+n);
     339    oi=document.getElementById(n);
     340    ih=oi.innerHTML;
    323341    if ( ol.innerHTML == linkedtofile ) {
    324342        od.innerHTML = aa[n];
     
    328346        ol.innerHTML = linkedtofile;
    329347    }
     348    oi=document.getElementById(n);
     349    oi.innerHTML = ih;
    330350}
    331351function toggleImage(n) {
     
    339359        oi.innerHTML = usingthumbnail;
    340360    }
     361}
     362function toggleOtherIcon(n) {
     363    od = document.getElementById('div'+n);
     364    o = document.getElementById(n);
     365    oi = document.getElementById('I'+n);
     366    if ( oi.innerHTML == usingtitle ) {
     367        o.innerHTML = filename[n];
     368        oi.innerHTML = usingfilename;
     369    } else if ( oi.innerHTML == usingfilename ) {
     370        o.innerHTML = icon[n];
     371        oi.innerHTML = usingicon;
     372    } else {
     373        o.innerHTML = title[n];
     374        oi.innerHTML = usingtitle;
     375    }
     376    if ( oi.innerHTML == usingicon )
     377        od.className = 'otherwrap usingicon';
     378    else
     379        od.classname = 'otherwrap usingtext';
    341380}
    342381
     
    402441.otherwrap {
    403442    margin-right: 5px;
    404     height: 90px;
    405443    overflow: hidden;
    406444    background-color: #f9fcfe;
    407445    float: left;
    408     padding: 3px;
    409446}
    410447.otherwrap a {
    411448    display: block;
    412     width: 122px;
    413449}
    414450.otherwrap a, .otherwrap a:hover, .otherwrap a:active, .otherwrap a:visited {
    415451    color: blue;
     452}
     453.usingicon {
     454    padding: 0px;
     455    height: 96px;
     456    text-align: center;
     457}
     458.usingicon a {
     459    width: 128px;
     460}
     461.usingtext {
     462    padding: 3px;
     463    height: 90px;
     464    text-align: left;
     465}
     466.usingtext a {
     467    width: 122px;
    416468}
    417469.filetype {
  • trunk/wp-admin/post.php

    r3262 r3303  
    7575    if ($post->post_status == 'static')
    7676        include('edit-page-form.php');
     77    elseif ($post->post_status == 'attachment')
     78        include('edit-attachment-form.php');
    7779    else
    7880        include('edit-form-advanced.php');
     
    8587    <?php
    8688    break;
     89
     90case 'editattachment':
     91    $post_id = (int) $_POST['post_ID'];
     92
     93    // Don't let these be changed
     94    unset($_POST['guid']);
     95    $_POST['post_status'] = 'attachment';
     96
     97    // Update the thumbnail filename
     98    $oldmeta = $newmeta = get_post_meta($post_id, '_wp_attachment_metadata', true);
     99    $newmeta['thumb'] = $_POST['thumb'];
     100
     101    if ( '' !== $oldmeta )
     102        update_post_meta($post_id, '_wp_attachment_metadata', $newmeta, $oldmeta);
     103    else
     104        add_post_meta($post_id, '_wp_attachment_metadata', $newmeta);
    87105
    88106case 'editpost':
     
    99117        if ( $_POST['referredby'] == 'redo' )
    100118            $location = get_permalink( $post_ID );
     119    } elseif ($action == 'editattachment') {
     120        $location = 'attachments.php';
    101121    } else {
    102122        $location = 'post.php';
     
    111131
    112132    $post_id = (isset($_GET['post']))  ? intval($_GET['post']) : intval($_POST['post_ID']);
     133
     134    $post = & get_post($post_id);
    113135   
    114136    if ( !current_user_can('edit_post', $post_id) )
    115137        die( __('You are not allowed to delete this post.') );
    116138
    117     if (! wp_delete_post($post_id))
     139    if ( (($post->post_status != 'attachment') && !wp_delete_post($post_id)) || !wp_delete_attachment($post_id))
    118140        die( __('Error in deleting...') );
    119141
    120142    $sendback = $_SERVER['HTTP_REFERER'];
    121143    if (strstr($sendback, 'post.php')) $sendback = get_settings('siteurl') .'/wp-admin/post.php';
     144    elseif (strstr($sendback, 'attachments.php')) $sendback = get_settings('siteurl') .'/wp-admin/attachments.php';
    122145    $sendback = preg_replace('|[^a-z0-9-~+_.?#=&;,/:]|i', '', $sendback);
    123146    header ('Location: ' . $sendback);
  • trunk/wp-admin/wp-admin.css

    r3283 r3303  
    162162    width: 100%;
    163163    overflow-y: hidden;
     164}
     165
     166form#upload th {
     167    text-align: right;
     168}
     169
     170form#upload #post_content, form#upload #post_title {
     171    width: 250px;
     172}
     173
     174form#upload #post_content {
     175    height: 50px;
     176}
     177
     178.attpreview {
     179    width: 1px; /* hug */
     180    text-align: center;
    164181}
    165182
     
    390407}
    391408
    392 #titlediv {
     409#titlediv, #guiddiv {
    393410    margin: 0 8px 0 0;
    394411    padding: 0px;
     
    410427}
    411428
    412 #titlediv input {
     429#titlediv input, #guiddiv input {
    413430    margin: 0px;
    414431    width: 100%;
     
    457474}
    458475
    459 #postexcerpt div {
     476#postexcerpt div, #attachmentlinks div {
    460477    margin-right: 8px;
    461478}
    462479
    463 * html #postexcerpt .dbx-toggle-open {
     480#attachmentlinks textarea {
     481    width: 100%;
     482    height: 2.5em;
     483    margin-bottom: 6px;
     484}
     485
     486* html #postexcerpt .dbx-toggle-open, * html #postexcerpt .dbx-toggle-open {
    464487    padding-right: 8px;
    465488}
    466489
    467 #excerpt {
     490#excerpt, .attachmentlinks {
    468491    margin: 0px;
    469492    height: 4em;
     
    734757}
    735758
    736 #slugdiv input, #passworddiv input, #authordiv select {
     759#slugdiv input, #passworddiv input, #authordiv select, #thumbdiv input, #parentdiv input {
    737760    margin-top: .5em;
    738761    width: 90%;
  • trunk/wp-content/themes/default/attachment.php

    r3251 r3303  
    1212            <h2><a href="<?php echo get_permalink($post->post_parent); ?>" rev="attachment"><?php echo get_the_title($post->post_parent); ?></a> &raquo; <a href="<?php echo get_permalink() ?>" rel="bookmark" title="Permanent Link: <?php the_title(); ?>"><?php the_title(); ?></a></h2>
    1313            <div class="entrytext">
    14 <?php   $type = explode('/', $post->post_mime_type);
    15     switch ( $type[0] ) {
    16     case 'image' :
    17         $meta = get_post_meta($post->ID, '_wp_attachment_metadata', true);
    18         if ($meta['width'] > 450) : ?>
    19                 <p><a href="<?php echo $post->guid; ?>" title="<?php echo $post->post_title.': '.$meta['width'].'x'.$meta['height'] ?>"><img class="centered" src="<?php echo $post->guid; ?>" alt="<?php the_title(); ?>" style="width:450px;" /></a></p>
    20 <?php       else : ?>
    21                 <p><img class="centered" src="<?php echo $post->guid; ?>" alt="<?php the_title(); ?>" /></p>
    22 <?php       endif;
    23         break;
    24     default :
    25 ?>
    26                 <p><a href="<?php echo $post->guid; ?>"><?php echo basename($post->guid); ?></a></p>
    27 <?php
    28     }
    29 ?>
     14                <p class="<?php $link = get_the_attachment_link($post->ID, true, array(450, 800)); /* Doing this now populates the imagesize stuff */ echo $post->iconsize[0] <= 128 ? 'small' : ''; ?>attachment"><?php echo get_the_attachment_link($post->ID, true, array(450, 800)); ?><br /><?php echo basename($post->guid); ?></p>
     15
    3016                <?php the_content('<p class="serif">Read the rest of this entry &raquo;</p>'); ?>
    3117   
  • trunk/wp-content/themes/default/style.css

    r2274 r3303  
    264264    margin: 30px 0;
    265265    }
    266    
     266
     267.widecolumn .smallattachment {
     268    text-align: center;
     269    float: left;
     270    width: 128px;
     271    margin: 5px 5px 5px 0px;
     272}
     273
     274.widecolumn .attachment {
     275    text-align: center;
     276    margin: 5px 0px;
     277}
     278
     279.postmetadata {
     280    clear: left;
     281}
     282
    267283#footer {
    268284    padding: 0 0 0 1px;
  • trunk/wp-includes/classes.php

    r3300 r3303  
    9898            $qv['attachment_id'] = $qv['subpost_id'];
    9999           
    100         if ( ('' != $qv['attachment']) || $qv['attachment_id'] ) {
     100        if ( ('' != $qv['attachment']) || (int) $qv['attachment_id'] ) {
    101101            $this->is_single = true;
    102102            $this->is_attachment = true;
    103         }
    104 
    105         if ('' != $qv['name']) {
     103        } elseif ('' != $qv['name']) {
    106104            $this->is_single = true;
    107105        } elseif ( $qv['p'] ) {
     
    116114        } elseif (!empty($qv['s'])) {
    117115            $this->is_search = true;
     116            switch ($qv['show_post_type']) {
     117            case 'page' :
     118                $this->is_page = true;
     119                break;
     120            case 'attachment' :
     121                $this->is_attachment = true;
     122                break;
     123            }
    118124        } else {
    119125        // Look for archive queries.  Dates, categories, authors.
     
    198204            if ( ($this->is_date || $this->is_author || $this->is_category)) {
    199205                $this->is_archive = true;
     206            }
     207
     208            if ( 'attachment' == $qv['show_post_type'] ) {
     209                $this->is_attachment = true;
    200210            }
    201211        }
     
    14141424    var $public_query_vars = array('m', 'p', 'posts', 'w', 'cat', 'withcomments', 's', 'search', 'exact', 'sentence', 'debug', 'calendar', 'page', 'paged', 'more', 'tb', 'pb', 'author', 'order', 'orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'feed', 'author_name', 'static', 'pagename', 'page_id', 'error', 'comments_popup', 'attachment', 'attachment_id', 'subpost', 'subpost_id');
    14151425
    1416     var $private_query_vars = array('posts_per_page', 'posts_per_archive_page', 'what_to_show', 'showposts', 'nopaging');
     1426    var $private_query_vars = array('posts_per_page', 'posts_per_archive_page', 'what_to_show', 'showposts', 'nopaging', 'show_post_type');
    14171427
    14181428    var $query_vars;
  • trunk/wp-includes/functions-post.php

    r3291 r3303  
    209209}
    210210
    211 function wp_insert_attachment($object, $file, $post_parent = 0) {
     211function wp_insert_attachment($object, $file = false, $post_parent = 0) {
    212212    global $wpdb, $user_ID;
    213213
    214214    if ( is_object($object) )
    215215        $object = get_object_vars($object);
    216    
     216
    217217    // Export array as variables
    218218    extract($object);
     
    321321    wp_set_post_cats('', $post_ID, $post_category);
    322322
    323     add_post_meta($post_ID, '_wp_attached_file', $file);
     323    if ( $file )
     324        add_post_meta($post_ID, '_wp_attached_file', $file);
    324325
    325326    clean_post_cache($post_ID);
     
    344345        return false;
    345346
    346     $meta = get_post_meta($postid, 'imagedata', true);
     347    $meta = get_post_meta($postid, '_wp_attachment_metadata', true);
    347348    $file = get_post_meta($postid, '_wp_attached_file', true);
    348349
     
    355356    $wpdb->query("DELETE FROM $wpdb->postmeta WHERE post_id = $postid");
    356357
    357     if ( ! empty($meta['file']) )
    358         @ unlink($meta['file']);
     358    if ( ! empty($meta['thumb']) ) {
     359        // Don't delete the thumb if another attachment uses it
     360        if (! $foo = $wpdb->get_row("SELECT meta_id FROM $wpdb->postmeta WHERE meta_key = '_wp_attachment_metadata' AND meta_value LIKE '%".$wpdb->escape($meta['thumb'])."%' AND post_id <> $postid"))
     361            @ unlink(str_replace(basename($file), $meta['thumb'], $file));
     362    }
    359363
    360364    if ( ! empty($file) )
     
    429433        $postarr['post_date_gmt'] = '';
    430434    }
     435
     436    if ($postarr['post_status'] == 'attachment')
     437        return wp_insert_attachment($postarr);
    431438
    432439    return wp_insert_post($postarr);
     
    511518    if ( !$post = $wpdb->get_row("SELECT * FROM $wpdb->posts WHERE ID = $postid") )
    512519        return $post;
     520
     521    if ( 'attachment' == $post->post_status )
     522        return wp_delete_attachment($postid);
    513523
    514524    do_action('delete_post', $postid);
  • trunk/wp-includes/functions.php

    r3298 r3303  
    504504    $original_prev = $prev_value;
    505505    if ( is_array($prev_value) || is_object($prev_value) )
    506         $prev_value = serialize($value);
     506        $prev_value = $wpdb->escape(serialize($prev_value));
    507507
    508508    if (! $wpdb->get_var("SELECT meta_key FROM $wpdb->postmeta WHERE meta_key
  • trunk/wp-includes/template-functions-links.php

    r3122 r3303  
    210210    get_currentuserinfo();
    211211
    212     if ( !user_can_edit_post($user_ID, $post->ID) || is_attachment() ) {
     212    if ( !user_can_edit_post($user_ID, $post->ID) ) {
    213213        return;
    214214    }
    215215
    216     $location = get_settings('siteurl') . "/wp-admin/post.php?action=edit&amp;post=$post->ID";
     216    if ( is_attachment() )
     217        $file = 'attachments';
     218    else
     219        $file = 'post';
     220
     221    $location = get_settings('siteurl') . "/wp-admin/{$file}.php?action=edit&amp;post=$post->ID";
    217222    echo $before . "<a href=\"$location\">$link</a>" . $after;
    218223}
  • trunk/wp-includes/template-functions-post.php

    r3229 r3303  
    440440}
    441441
    442 function prepend_attachment($content) {
    443     global $post;
    444 
    445     $p = '<p class="attachment">';
    446 
    447     if ( '' != $post->guid ) {
    448         if ( substr($post->post_mime_type, 0, 6) == 'image/' )
    449             $p .= '<a href="' . $post->guid . '" title="Click for full-size image" ><img class="attachmentimage" src="' . $post->guid . '" alt="' . $post->post_title . '" /></a>';
    450         else
    451             $p .= __('Attachment') . ' (' . $post->post_mime_type . ')';
     442function the_attachment_link($id = 0, $fullsize = false, $max_dims = false) {
     443    echo get_the_attachment_link($id, $fullsize, $max_dims);
     444}
     445
     446function get_the_attachment_link($id = 0, $fullsize = false, $max_dims = false) {
     447    $id = (int) $id;
     448    $_post = & get_post($id);
     449
     450    if ( ('attachment' != $_post->post_status) || ('' == $_post->guid) )
     451        return __('Missing Attachment');
     452
     453    if (! empty($_post->guid) ) {
     454        $innerHTML = get_attachment_innerHTML($_post->ID, $fullsize, $max_dims);
     455
     456        return "<a href=\"{$_post->guid}\" title=\"{$_post->post_title}\" >{$innerHTML}</a>";
     457
    452458    } else {
    453459        $p .= __('Missing attachment');
    454460    }
    455 
     461    return $p;
     462}
     463
     464function get_attachment_icon($id = 0, $fullsize = false, $max_dims = false) {
     465    $id = (int) $id;
     466    $post = & get_post($id);
     467
     468    $mime = $post->post_mime_type;
     469
     470    $imagedata = get_post_meta($post->ID, '_wp_attachment_metadata', true);
     471
     472    $file = get_post_meta($post->ID, '_wp_attached_file', true);
     473
     474    if ( !$fullsize && !empty($imagedata['thumb'])
     475            && ($thumbfile = str_replace(basename($file), $imagedata['thumb'], $file))
     476            && file_exists($thumbfile) ) {
     477
     478        // We have a thumbnail desired, specified and existing
     479
     480        $src = str_replace(basename($post->guid), $imagedata['thumb'], $post->guid);
     481        $src_file = $thumbfile;
     482        $class = 'attachmentthumb';
     483
     484    } elseif ( substr($mime, 0, 6) == 'image/'
     485            && file_exists($file) ) {
     486
     487        // We have an image without a thumbnail
     488
     489        $src = $post->guid;
     490        $src_file = & $file;
     491        $class = 'attachmentimage';
     492    } elseif (! empty($mime) ) {
     493
     494        // No thumb, no image. We'll look for a mime-related icon instead.
     495        $icon_dir = apply_filters('icon_dir', get_template_directory().'/images');
     496        $icon_dir_uri = apply_filters('icon_dir_uri', get_template_directory_uri().'/images');
     497
     498        $types = array(substr($mime, 0, strpos($mime, '/')), substr($mime, strpos($mime, '/') + 1), str_replace('/', '_', $mime));
     499        $exts = array('jpg', 'gif', 'png');
     500        foreach ($types as $type) {
     501            foreach ($exts as $ext) {
     502                $src_file = "$icon_dir/$type.$ext";
     503                if ( file_exists($src_file) ) {
     504                    $src = "$icon_dir_uri/$type.$ext";
     505                    break 2;
     506                }
     507            }
     508        }
     509    }
     510
     511    if (! isset($src) )
     512        return false;
     513
     514    // Do we need to constrain the image?
     515    if ( ($max_dims = apply_filters('attachment_max_dims', $max_dims)) && file_exists($src_file) ) {
     516
     517        $imagesize = getimagesize($src_file);
     518
     519        if (($imagesize[0] > $max_dims[0]) || $imagesize[1] > $max_dims[1] ) {
     520            $actual_aspect = $imagesize[0] / $imagesize[1];
     521            $desired_aspect = $max_dims[0] / $max_dims[1];
     522
     523            if ( $actual_aspect >= $desired_aspect ) {
     524                $height = $actual_aspect * $max_dims[0];
     525                $constraint = "width=\"{$max_dims[0]}\" ";
     526                $post->iconsize = array($max_dims[0], $height);
     527            } else {
     528                $width = $max_dims[1] / $actual_aspect;
     529                $constraint = "height=\"{$max_dims[1]}\" ";
     530                $post->iconsize = array($width, $max_dims[1]);
     531            }
     532        } else {
     533            $post->iconsize = array($imagesize[0], $imagesize[1]);
     534        }
     535    }
     536
     537    $icon = "<img src=\"{$src}\" title=\"{$post->post_title}\" {$constraint}/>";
     538
     539    return apply_filters('attachment_icon', $icon, $post->ID);
     540}
     541
     542function get_attachment_innerHTML($id = 0, $fullsize = false, $max_dims = false) {
     543    $id = (int) $id;
     544
     545    if ( $innerHTML = get_attachment_icon($id, $fullsize, $max_dims))
     546        return $innerHTML;
     547
     548    $post = & get_post($id);
     549
     550    $innerHTML = $post->post_title;
     551
     552    return apply_filters('attachment_innerHTML', $innerHTML, $post->ID);
     553}
     554
     555function prepend_attachment($content) {
     556    $p = '<p class="attachment">';
     557    $p .= get_the_attachment_link(false, true, array(400, 300));
    456558    $p .= '</p>';
     559    $p = apply_filters('prepend_attachment', $p);
    457560
    458561    return "$p\n$content";
    459562}
     563
    460564?>
Note: See TracChangeset for help on using the changeset viewer.