WordPress.org

Make WordPress Core

Ticket #7607: 7607.2.diff

File 7607.2.diff, 26.7 KB (added by ShaneF, 10 years ago)
  • wp-admin/includes/media.php

     
    1616function media_upload_tabs() {
    1717        $_default_tabs = array(
    1818                'type' => __('Choose File'), // handler action suffix => tab text
    19                 'gallery' => __('Gallery'),
     19                'gallery' => __('Attachments'),
    2020                'library' => __('Media Library'),
    2121        );
    2222
     
    4040        if ( intval($_REQUEST['post_id']) )
    4141                $attachments = intval($wpdb->get_var($wpdb->prepare("SELECT count(*) FROM $wpdb->posts WHERE post_type = 'attachment' AND post_parent = %d", $_REQUEST['post_id'])));
    4242
    43         $tabs['gallery'] = sprintf(__('Gallery (%s)'), "<span id='attachments-count'>$attachments</span>");
     43        $tabs['gallery'] = sprintf(__('Attachments (%s)'), "<span id='attachments-count'>$attachments</span>");
    4444
    4545        return $tabs;
    4646}
     
    9898        $rel = $rel ? ' rel="attachment wp-att-'.attribute_escape($id).'"' : '';
    9999
    100100        if ( $url )
    101                 $html = '<a href="' . clean_url($url) . "\"$rel>$html</a>";
     101                $html = '<a href="' . clean_url($url) . "\" title=\"". attribute_escape($title) ."\"$rel>$html</a>";
    102102
    103103        $html = apply_filters( 'image_send_to_editor', $html, $id, $alt, $title, $align, $url, $size );
    104104
     
    358358                        $post['post_title'] = $attachment['post_title'];
    359359                if ( isset($attachment['post_excerpt']) )
    360360                        $post['post_excerpt'] = $attachment['post_excerpt'];
     361                if ( isset($attachment['group_number']) )
     362                        $post['group_number'] = $attachment['group_number'];
    361363                if ( isset($attachment['menu_order']) )
    362364                        $post['menu_order'] = $attachment['menu_order'];
    363365
     
    376378                                wp_set_object_terms($attachment_id, array_map('trim', preg_split('/,+/', $attachment[$t])), $t, false);
    377379        }
    378380
    379         if ( isset($_POST['insert-gallery']) )
    380                 return media_send_to_editor('[gallery]');
     381        if ( isset($_POST['insert-gallery']) ) {
     382                if ( ( isset($_POST['gallery_insert']) ) && ( $_POST['gallery_insert'] > 0 ) ) {
     383                        return media_send_to_editor('[gallery group="'.$_POST['gallery_insert'].'"]');
     384                } else {
     385                        return media_send_to_editor('[gallery]');
     386                }
     387        }
     388       
     389        if ( isset($_POST['new-gallery']) )
     390                wp_new_gallery($post['post_parent']);
     391               
     392        if ( isset($_POST['gallery_delete']) && !is_null($_POST['gallery_delete']) && ($_POST['gallery_delete'] > 0) )
     393                wp_delete_gallery($post['post_parent'], $_POST['gallery_delete']);
    381394
    382395        if ( isset($_POST['send']) ) {
    383396                $keys = array_keys($_POST['send']);
     
    426439                        $align = attribute_escape($_POST['insertonly']['align']);
    427440                        $class = " class='align$align'";
    428441                }
     442                if ( isset($_POST['insertonly']['title']) ) {
     443                        $title = " title='".attribute_escape($_POST['insertonly']['title'])."'";
     444                }
    429445                if ( !empty($src) )
    430                         $html = "<img src='$src' alt='$alt'$class />";
     446                        $html = "<img src='$src' alt='$alt'$title$class />";
    431447                return media_send_to_editor($html);
    432448        }
    433449
     
    844860                        $post['errors']['post_title']['errors'][] = __('Empty Title filled from filename.');
    845861                }
    846862        }
     863       
     864        $post['group_name'] = $_POST['attachments']['group_name'][$attachment['group_number']];
    847865
    848866        return $post;
    849867}
     
    968986 * @param unknown_type $errors
    969987 * @return unknown
    970988 */
    971 function get_media_items( $post_id, $errors ) {
     989function get_media_items( $post_id, $group_num = null, $errors ) {
    972990        if ( $post_id ) {
    973991                $post = get_post($post_id);
    974                 if ( $post && $post->post_type == 'attachment' )
     992                if ( $post && $post->post_type == 'attachment' ) {
    975993                        $attachments = array($post->ID => $post);
    976                 else
    977                         $attachments = get_children( array( 'post_parent' => $post_id, 'post_type' => 'attachment', 'orderby' => 'menu_order ASC, ID', 'order' => 'DESC') );
     994                } else {
     995                        $attachments = get_attachments( $post_id, $group_num );
     996                       
     997                        if ( ! count($attachments) )
     998                                return "\n<div class='media-item media-no-items child-of-$post_id preloaded'><div class='progress'><div class='bar'></div></div><div id='media-upload-error-$id'></div><div class='filename'></div><div class='filename new'>". __("No images in this group. Move items to this group.") ."</div></div>";
     999                }
    9781000        } else {
    9791001                if ( is_array($GLOBALS['wp_the_query']->posts) )
    9801002                        foreach ( $GLOBALS['wp_the_query']->posts as $attachment )
     
    9841006        if ( empty($attachments) )
    9851007                return '';
    9861008
    987         foreach ( $attachments as $id => $attachment )
     1009        foreach ( $attachments as $id => $attachment ) {       
    9881010                if ( $item = get_media_item( $id, array( 'errors' => isset($errors[$id]) ? $errors[$id] : null) ) )
    9891011                        $output .= "\n<div id='media-item-$id' class='media-item child-of-$attachment->post_parent preloaded'><div class='progress'><div class='bar'></div></div><div id='media-upload-error-$id'></div><div class='filename'></div>$item\n</div>";
    990 
     1012        }
     1013       
    9911014        return $output;
    9921015}
    9931016
     
    10251048        $filename = basename($post->guid);
    10261049        $title = attribute_escape($post->post_title);
    10271050        $description = attribute_escape($post->post_content);
     1051        $group_number = attribute_escape($post->group_number);
    10281052        if ( $_tags = get_the_tags($attachment_id) ) {
    10291053                foreach ( $_tags as $tag )
    10301054                        $tags[] = $tag->name;
     
    10551079        $gallery = ( (isset($_REQUEST['tab']) && 'gallery' == $_REQUEST['tab']) || (isset($redir_tab) && 'gallery' == $redir_tab) ) ? true : false;
    10561080        $order = '';
    10571081
     1082        $groupnum = '<input type="hidden" class="group-value" name="attachments['.$attachment_id.'][group_number]" value="'.$group_number.'" />';
     1083
    10581084        foreach ( $form_fields as $key => $val ) {
    10591085                if ( 'menu_order' == $key ) {
    10601086                        if ( $gallery )
     
    10711097        $type
    10721098        $toggle_links
    10731099        $order
     1100        $groupnum
    10741101        $display_title
    10751102        <table class='slidetoggle describe $class'>
    10761103                <thead class='media-item-info'>
     
    13541381                html = '<img alt="'+alt+'" src="'+f.src.value+'"'+title+cls+' width="'+t.width+'" height="'+t.height+'" />';
    13551382
    13561383                if ( f.url.value )
    1357                         html = '<a href="'+f.url.value+'">'+html+'</a>';
     1384                        html = '<a href="'+f.url.value+'"'+title+'>'+html+'</a>';
    13581385
    13591386                if ( caption )
    13601387                        html = '[caption id="" align="'+t.align+'" width="'+t.width+'" caption="'+caption+'"]'+html+'[/caption]';
     
    14241451        media_upload_header();
    14251452
    14261453        $post_id = intval($_REQUEST['post_id']);
     1454        $group_num = intval(get_attachment_groups( $post_id ));
     1455        $_group_name = get_attachments_groupsname( $post_id );
     1456       
    14271457        $form_action_url = admin_url("media-upload.php?type={$GLOBALS['type']}&tab=gallery&post_id=$post_id");
    14281458?>
    14291459
     
    14331463        var preloaded = $(".media-item.preloaded");
    14341464        if ( preloaded.length > 0 ) {
    14351465                preloaded.each(function(){prepareMediaItem({id:this.id.replace(/[^0-9]/g, '')},'');});
    1436                 updateMediaForm();
    14371466        }
     1467        jQuery("a.del-group").click(function () {
     1468                var deleteConfirmation = confirm('<?php _e("Are you sure you want to delete this gallery group?"); ?>');
     1469               
     1470                if (!deleteConfirmation) { return; }
     1471               
     1472                if (jQuery("#media-group-" + jQuery(this).attr('value') + " .media-item input.group-value").length)
     1473                {
     1474                        jQuery.each(jQuery("#media-group-delete-" + jQuery(this).attr('value') + " .media-item input.group-value"), function(i, id) {
     1475                                jQuery(id)[0].value = 0;        //      we are going to set all the items to group 0             
     1476                        });
     1477                }
     1478                jQuery("#gallery-delete").val( jQuery(this).attr('value') );    //      set the gallery we are deleting
     1479                jQuery("#media-group-" + jQuery(this).attr('value')).hide();    //      hide the gallery and then...
     1480                jQuery(".savebutton").click();
     1481        });
     1482        jQuery("a.insert-group").click(function () {
     1483                jQuery("#gallery-insert").val( jQuery(this).attr('value') );    //      set the gallery we are inserting
     1484                jQuery(".insert-gallery").click();               
     1485        });
    14381486});
    14391487-->
    14401488</script>
     
    14421490<form enctype="multipart/form-data" method="post" action="<?php echo attribute_escape($form_action_url); ?>" class="media-upload-form validate" id="gallery-form">
    14431491<?php wp_nonce_field('media-form'); ?>
    14441492<?php //media_upload_form( $errors ); ?>
     1493<div id="media-items">
     1494<?php
     1495for ( $i = 0; $i < $group_num; $i++ )
     1496{
     1497?>
     1498<div id="media-group-<?php echo $i; ?>" class="media-groups">
     1499<input type="hidden" id="media-group-value-<?php echo $i; ?>" value="<?php echo $i; ?>" />
    14451500<table class="widefat">
    14461501<thead><tr>
    1447 <th><?php _e('Media'); ?></th>
     1502<th>
     1503<?php 
     1504if ($i > 0) {
     1505       
     1506        $delete = "<a href=\"#media-group-delete-value-".$i."\" value=\"".$i."\" class=\"del-group\">" . __('Delete') . "</a>";
     1507        $insert = "<a href=\"#media-group-insert-value-".$i."\" value=\"".$i."\" class=\"insert-group\">" . __('Insert') . "</a>";
     1508        $group_link = "<small>[".$delete." | " .$insert."]</small>";
     1509        $group_name = "<input type=\"text\" name=\"attachments[group_name][".$i."]\" value=\"" . $_group_name[$i] . "\" size=\"20\" />";
     1510       
     1511        printf( __('Group (%1$d) %2$s %3$s'), $i, $group_name, $group_link);
     1512
     1513               
     1514} else {
     1515
     1516        _e('Media: Non-grouped items.');
     1517       
     1518}
     1519?>
     1520</th>
    14481521<th class="order-head"><?php _e('Order'); ?></th>
    14491522</tr></thead>
    14501523</table>
    1451 <div id="media-items">
    1452 <?php echo get_media_items($post_id, $errors); ?>
     1524<?php echo get_media_items($post_id, $i, $errors); ?>
    14531525</div>
     1526<?php
     1527}
     1528?>
     1529</div>
    14541530<p class="ml-submit">
    14551531<input type="submit" class="button savebutton" name="save" value="<?php echo attribute_escape( __( 'Save all changes' ) ); ?>" />
    1456 <input type="submit" class="button insert-gallery" name="insert-gallery" value="<?php echo attribute_escape( __( 'Insert gallery into post' ) ); ?>" />
     1532<input type="submit" class="button new-gallery" name="new-gallery" value="<?php echo attribute_escape( __( 'Create new gallery' ) ); ?>" />
     1533<input type="submit" class="button insert-gallery" name="insert-gallery" value="<?php echo attribute_escape( __( 'Insert full gallery into post' ) ); ?>" />
     1534<input type="hidden" name="gallery_delete" id="gallery-delete" value="" />
     1535<input type="hidden" name="gallery_insert" id="gallery-insert" value="" />
    14571536<input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" />
    14581537<input type="hidden" name="type" value="<?php echo attribute_escape( $GLOBALS['type'] ); ?>" />
    14591538<input type="hidden" name="tab" value="<?php echo attribute_escape( $GLOBALS['tab'] ); ?>" />
    14601539</p>
    14611540</form>
     1541<script type="text/javascript">
     1542<!--
     1543        updateMediaForm();
     1544-->
     1545</script>
    14621546<?php
    14631547}
    14641548
     
    16051689</script>
    16061690
    16071691<div id="media-items">
    1608 <?php echo get_media_items(null, $errors); ?>
     1692<?php echo get_media_items(null, null, $errors); ?>
    16091693</div>
    16101694<p class="ml-submit">
    16111695<input type="submit" class="button savebutton" name="save" value="<?php echo attribute_escape( __( 'Save all changes' ) ); ?>" />
  • wp-admin/js/gallery.js

     
    11jQuery(function($) {
    22        var gallerySortable;
     3
    34        var gallerySortableInit = function() {
    45                gallerySortable = $('#media-items').sortable( {
    56                        items: '.media-item',
    67                        placeholder: 'sorthelper',
    78                        axis: 'y',
    89                        distance: 2,
    9                         update: galleryReorder
     10                        update: galleryHandle,
    1011                } );
    1112        }
    12 
    13         // When an update has occurred, adjust the order for each item
     13       
     14        var galleryHandle = function (e, sort) {
     15                galleryReorder(e, sort);
     16                gallerySortGroups();
     17        }
     18       
     19        // @todo: fix me!
     20        // When an update has occurred, adjust the order for each item..
    1421        var galleryReorder = function(e, sort) {
     22                var o = 0;
    1523                jQuery.each(sort['element'].sortable('toArray'), function(i, id) {
    16                         jQuery('#' + id + ' .menu_order input')[0].value = (1+i);
     24                        if (id)
     25                        {
     26                                o++;
     27                                jQuery('#' + id + ' .menu_order input')[0].value = o;
     28                        }
    1729                });
    1830        }
    19 
     31       
     32        var gallerySortGroups = function () {
     33                var mediaGroups = jQuery(".media-groups").length;
     34                for (g = 0; g < mediaGroups; g++)
     35                {
     36                        jQuery.each(jQuery("#media-group-" + g + " .media-item input.group-value"), function(i, id) {
     37                                jQuery(id)[0].value = g;               
     38                        });
     39                }
     40        }
     41       
    2042        // initialize sortable
    2143        gallerySortableInit();
    2244});
  • wp-content/themes/classic/style.css

     
    320320        text-transform: capitalize;
    321321}
    322322
    323 /* Captions & aligment */
     323/* Gallery & Captions & Aligment */
     324
     325.gallery {
     326        display: block;
     327        clear: left;
     328        overflow: hidden;
     329        margin: auto;
     330}
     331       
     332.gallery-item {
     333        float: left;
     334        margin: 10px 0 0 0;
     335        text-align: center;
     336}
     337       
     338.gallery .gallery-item img, .gallery .gallery-item img.thumbnail {
     339        max-width: 89%;
     340        height: auto;
     341        padding: 1%;
     342        margin: 0
     343        auto;
     344}
     345
     346.gallery div.clear {
     347        width: 0px;
     348        height: 0px;
     349}
     350
     351.col-1 { width: 100%; }
     352.col-2 { width: 50%; }
     353.col-3 { width: 33%; }
     354.col-4 { width: 24.5%; }
     355.col-5 { width: 20%; }
     356.col-6 { width: 16.5%; }
     357.col-7 { width: 14%; }
     358.col-8 { width: 12.4%; }
     359.col-9 { width: 11%; }
     360.col-10 { width: 10%; }
     361.col-11 { width: 9%; }
     362.col-12 { width: 8.33%; }
     363.col-13 { width: 7.6%; }
     364.col-14 { width: 7.1%; }
     365.col-15 { width: 6.66%; }
     366.col-16 { width: 6.25%; }
     367.col-17 { width: 5.83%; }
     368.col-18 { width: 5.55%; }
     369.col-19 { width: 5.25%; }
     370.col-20 { width: 4.95%; }
     371
     372.gallery-caption {
     373        margin-left: 0;
     374}
     375
     376.clear {
     377        clear: both;
     378        height: 0;
     379}
     380
    324381.aligncenter,
    325382div.aligncenter {
    326383        display: block;
     
    360417        padding: 0 4px 5px;
    361418        margin: 0;
    362419}
    363 /* End captions & aligment */
     420/* End Gallery & Captions & Aligment */
  • wp-content/themes/default/style.css

     
    663663        }
    664664/* End Various Tags & Classes*/
    665665
     666/* Gallery & Captions & Aligment */
    666667
     668.gallery {
     669        display: block;
     670        clear: left;
     671        overflow: hidden;
     672        margin: auto;
     673}
     674       
     675.gallery-item {
     676        float: left;
     677        margin: 10px 0 0 0;
     678        text-align: center;
     679}
     680       
     681.gallery .gallery-item img, .gallery .gallery-item img.thumbnail {
     682        max-width: 89%;
     683        height: auto;
     684        padding: 1%;
     685        margin: 0
     686        auto;
     687}
    667688
    668 /* Captions */
     689.gallery div.clear {
     690        width: 0px;
     691        height: 0px;
     692}
     693
     694.col-1 { width: 100%; }
     695.col-2 { width: 50%; }
     696.col-3 { width: 33%; }
     697.col-4 { width: 24.5%; }
     698.col-5 { width: 20%; }
     699.col-6 { width: 16.5%; }
     700.col-7 { width: 14%; }
     701.col-8 { width: 12.4%; }
     702.col-9 { width: 11%; }
     703.col-10 { width: 10%; }
     704.col-11 { width: 9%; }
     705.col-12 { width: 8.33%; }
     706.col-13 { width: 7.6%; }
     707.col-14 { width: 7.1%; }
     708.col-15 { width: 6.66%; }
     709.col-16 { width: 6.25%; }
     710.col-17 { width: 5.83%; }
     711.col-18 { width: 5.55%; }
     712.col-19 { width: 5.25%; }
     713.col-20 { width: 4.95%; }
     714
     715.gallery-caption {
     716        margin-left: 0;
     717}
     718
     719.clear {
     720        clear: both;
     721        height: 0;
     722}
     723
    669724.aligncenter,
    670725div.aligncenter {
    671726        display: block;
     
    673728        margin-right: auto;
    674729}
    675730
     731.alignleft {
     732        float: left;
     733}
     734
     735.alignright {
     736        float: right;
     737}
     738
    676739.wp-caption {
    677740        border: 1px solid #ddd;
    678741        text-align: center;
     
    697760        padding: 0 4px 5px;
    698761        margin: 0;
    699762}
    700 /* End captions */
     763/* End Gallery & Captions & Aligment */
    701764
    702 
    703765/* "Daisy, Daisy, give me your answer do. I'm half crazy all for the love of you.
    704766        It won't be a stylish marriage, I can't afford a carriage.
    705767        But you'll look sweet upon the seat of a bicycle built for two." */
  • wp-includes/js/swfupload/handlers.js

     
    126126        }
    127127
    128128        // Only show Save buttons when there is at least one file.
    129         if ( jQuery('#media-items>*').not('.media-blank').length > 0 )
     129        if ( jQuery('#media-items .media-item').not('.media-no-items').length > 0 )
    130130                jQuery('.savebutton').show();
    131131        else
    132132                jQuery('.savebutton').hide();
    133133
     134        // Only show new Gallery button when there are at least two files.
     135        if ( jQuery('#media-items .media-item').not('.media-no-items').length > 1 )
     136                jQuery('.new-gallery').show();
     137        else
     138                jQuery('.new-gallery').hide();
     139
    134140        // Only show Gallery button when there are at least two files.
    135         if ( jQuery('#media-items>*').length > 1 )
     141        if ( jQuery('#media-items .media-groups').length > 1 )
    136142                jQuery('.insert-gallery').show();
    137143        else
    138144                jQuery('.insert-gallery').hide();
     145               
    139146}
    140147
    141148function uploadSuccess(fileObj, serverData) {
  • wp-includes/media.php

     
    617617                'icontag'    => 'dt',
    618618                'captiontag' => 'dd',
    619619                'columns'    => 3,
     620                'class'          => null,       //      default viewing type
     621                'name'           => null,       //      name of the post
     622                'group'          => null,
    620623                'size'       => 'thumbnail',
    621624        ), $attr));
    622625
    623626        $id = intval($id);
    624         $attachments = get_children( array('post_parent' => $id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) );
    625 
     627        $attachments = get_attachments( $post->ID, array('group_number' => $group, 'name' => $name), array('post_status' => 'inherit', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) );
     628       
    626629        if ( empty($attachments) )
    627630                return '';
    628631
     
    639642        $columns = intval($columns);
    640643        $itemwidth = $columns > 0 ? floor(100/$columns) : 100;
    641644
    642         $output = apply_filters('gallery_style', "
    643                 <style type='text/css'>
    644                         .gallery {
    645                                 margin: auto;
    646                         }
    647                         .gallery-item {
    648                                 float: left;
    649                                 margin-top: 10px;
    650                                 text-align: center;
    651                                 width: {$itemwidth}%;                   }
    652                         .gallery img {
    653                                 border: 2px solid #cfcfcf;
    654                         }
    655                         .gallery-caption {
    656                                 margin-left: 0;
    657                         }
    658                 </style>
    659                 <!-- see gallery_shortcode() in wp-includes/media.php -->
    660                 <div class='gallery'>");
     645        if ( is_null($group) )
     646                $group_area = 0;
     647        else
     648                $group_area = $group;
     649       
     650        $output = apply_filters('gallery_style', "<div id='gallery-$post->ID-$group_area' class='gallery'>");
    661651
    662652        foreach ( $attachments as $id => $attachment ) {
    663                 $link = wp_get_attachment_link($id, $size, true);
    664                 $output .= "<{$itemtag} class='gallery-item'>";
    665                 $output .= "
    666                         <{$icontag} class='gallery-icon'>
    667                                 $link
    668                         </{$icontag}>";
     653               
     654                if ( !is_null($group) )
     655                        if ($attachment->group_number != $group)
     656                                continue;
     657
     658                $a_img = wp_get_attachment_url($id);
     659                $att_page = get_attachment_link($id);
     660                $img = wp_get_attachment_image_src($id, $size);
     661               
     662                $img = $img[0];
     663                $title = $attachment->post_excerpt;
     664               
     665                if ($title == '')
     666                        $title = $attachment->post_title;
     667               
     668                $output .= "\n<{$itemtag} class='gallery-item col-$columns'>\n";
     669                $output .= "<{$icontag} class='gallery-icon'>\n";
     670               
     671                switch ($class)
     672                {
     673                        case 'lightbox':
     674                                $class_rel = ' class=\"lightbox\" rel=\"lightbox[gallery-$post->ID]\"';
     675                                break;
     676                        case 'shutterset':
     677                                $class_rel = ' class=\"shutterset-gallery-$post->ID\" rel=\"lightbox[gallery-$post->ID]\"';
     678                                break;
     679                        case 'lytebox':
     680                                $class_rel = ' class=\"lytebox\" rel=\"lytebox[gallery-$post->ID]\"';
     681                                break;
     682                        case 'greybox':
     683                                $class_rel = ' class=\"greybox\" rel=\"gb_imageset[gallery-$post->ID]\"';
     684                                break;
     685                        case 'thickbox':
     686                                $class_rel = ' class=\"thickbox\" rel=\"gallery-$post->ID\"';
     687                                break;
     688                        case 'lightview':
     689                                $class_rel = ' class=\"lightview\" rel=\"gallery[gallery-$post->ID]\"';
     690                                break;
     691                        default:
     692                                $class_rel = '';
     693                                break;
     694                }
     695               
     696                if ($a_rel == true)
     697                        $link = $a_img;
     698                elseif ($a_class == true)
     699                        $link = $a_img;
     700                else
     701                        $link = $att_page;
     702               
     703                $output .= "\t<a href=\"$link\" title=\"$title\"$class_rel><img src=\"$img\" alt=\"$title\" /></a>";
     704                $output .= "\n</{$icontag}>";
     705               
    669706                if ( $captiontag && trim($attachment->post_excerpt) ) {
    670                         $output .= "
    671                                 <{$captiontag} class='gallery-caption'>
    672                                 {$attachment->post_excerpt}
    673                                 </{$captiontag}>";
     707                        $output .= "\n<$captiontag class='gallery-caption'>\n\t";
     708                        $output .= $attachment->post_excerpt;
     709                        $output .= "</$captiontag>";
    674710                }
    675                 $output .= "</{$itemtag}>";
    676                 if ( $columns > 0 && ++$i % $columns == 0 )
    677                         $output .= '<br style="clear: both" />';
     711               
     712                $output .= "\n</{$itemtag}>";
     713               
     714                if($columns > 0 && ++$i % $columns == 0)
     715                        $output .= '<div style="clear:both;" class="clear"><!-- --></div>';
    678716        }
    679 
    680         $output .= "
    681                         <br style='clear: both;' />
    682                 </div>\n";
    683 
     717        $output .= "\n</div>\n";
    684718        return $output;
    685719}
    686720
  • wp-includes/post.php

     
    6969}
    7070
    7171/**
     72 * Get the posts attachments data.
     73 *
     74 * @since 2.7.0
     75 *
     76 * @param int $post_id Post ID
     77 */
     78function _get_attachment_data ( $post_id ) {
     79        global $wpdb;
     80
     81        $_attchments = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = '_wp_post_attachments' LIMIT 1", $post_id));
     82        return unserialize($_attchments->meta_value);
     83}
     84
     85/**
     86 * Get the posts attachments.
     87 *
     88 * @since 2.7.0
     89 *
     90 * @param int $post_id Post ID
     91 * @param mixed $attachment_options Group Options
     92 * @param mixed $args Optional. User defined arguments for replacing the defaults.
     93 */
     94function &get_attachments( $post_id, $attachment_options, $args = '' ) {
     95
     96        extract($attachment_options, EXTR_SKIP);
     97
     98        if (!is_null($name)) {
     99               
     100                if (is_numeric($name))
     101                        $post_id = $name;
     102               
     103                if ($page = get_page_by_title($name))
     104                        $post_id = $page->ID;
     105               
     106                if ($post = get_post_by_title($name))
     107                        $post_id = $post->ID;
     108        }
     109
     110        $attachment = _get_attachment_data ( $post_id );
     111       
     112        if ( !is_array($attachment) )
     113                return;
     114               
     115        foreach ( $attachment as $key => $group ) {
     116               
     117                if (!is_null($group_number))
     118                        if ($key != $group_number) { continue; }
     119               
     120                if ( !is_array($group['items']) )
     121                        break;
     122                       
     123                foreach ( $group['items'] as $item => $attachment_id ) {
     124                        $p = get_post( $attachment_id );        //       might be a better way to do this...
     125                        $p->group_number = $key;
     126                       
     127                        $attach[$attachment_id] = $p;
     128                }
     129        }
     130       
     131        // @todo Orginize the array items based on the settings either default or user ($args)
     132       
     133        return $attach;
     134}
     135
     136/**
     137 * Get the gallery groups names.
     138 *
     139 * @since 2.7.0
     140 *
     141 * @param int $post_id Post ID
     142 */
     143function &get_attachments_groupsname( $post_id ) {
     144
     145        $attachment = _get_attachment_data ( $post_id );
     146       
     147        if ( !is_array($attachment) )
     148                return '';
     149       
     150        foreach ( $attachment as $key => $group ) {
     151                $groups[$key] = $group['name'];
     152        }
     153       
     154        return $groups;
     155}
     156
     157/**
     158 * Get the number of groups attached to this post.
     159 *
     160 * @since 2.7.0
     161 *
     162 * @param int $post_id Post ID
     163 */
     164function get_attachment_groups( $post_id ) {
     165       
     166        return count(_get_attachment_data ( $post_id ));
     167}
     168
     169/**
     170 * Insert a new gallery into the post.
     171 *
     172 * @since 2.7.0
     173 *
     174 * @param int $post_id post data
     175*/
     176function wp_new_gallery ( $post_id ) {
     177
     178        $attachment = _get_attachment_data ( $post_id );
     179       
     180        foreach ( $attachment as $key => $group )
     181                $_group[$key] = array ('name' => $group['name'], 'items' => $group['items']);
     182
     183        $_group[] = array ('name' => null, 'items' => null);
     184       
     185        update_post_meta( $post_id, '_wp_post_attachments', $_group );
     186       
     187}
     188
     189/**
     190 * We are deleting a gallery and moving
     191 *
     192 * @since 2.7.0
     193 *
     194 * @param int $post_id Post ID
     195 * @param int $group_number Group Number
     196*/
     197function wp_delete_gallery ( $post_id, $group_num ) {
     198         
     199        $attachment = _get_attachment_data ( $post_id );
     200       
     201        foreach ( $attachment as $key => $group ) {
     202                if ($key != $group_num) {
     203                        $_group[$key] = array ('name' => $group['name'], 'items' => $group['items']);
     204                        continue;                                               
     205                }       
     206               
     207                if ( !is_array($group['items']) )
     208                        break;
     209               
     210                foreach ( $group['items'] as $item => $attachment_id ) {
     211                        $_attach[] = $attachment_id;   
     212                }
     213        }
     214       
     215        if ( is_array($_group[0]['items']) && is_array($_attach) )  {
     216                $i = array_merge($_group[0]['items'], $_attach);       
     217                $_group[0] = array ('name' => null, 'items' => $i);     
     218        } else {
     219                $_group[0] = array ('name' => null, 'items' => $_group[0]['items']);
     220        }
     221
     222        update_post_meta( $post_id, '_wp_post_attachments', $_group );
     223
     224}
     225
     226/**
     227 * Updating the postmeta data when saving the gallery information.
     228 *
     229 * @since 2.7.0
     230 *
     231 * @param int $attachment_id Attachment ID
     232 * @param int $post_id Post ID
     233 * @param int $group_name Group Name
     234 * @param int $group_number Group Number
     235*/
     236function wp_update_attachment ( $attachment_id, $post_id, $group_name = null, $group_number) {
     237       
     238        $attachment = _get_attachment_data ( $post_id );
     239
     240        //      check to see if this group ($group_number) has a name assignment and is not null
     241        if (( !isset($attachment[$group_number][name]) ) || ( !is_null($attachment[$group_number][name]) ))
     242                if ($group_name != $attachment[$group_number][name])
     243                        _update_attachment_groupname( $post_id, $group_number, $group_name);    // update group name of group number if they are not the same (should only happen once if it does change)
     244       
     245        //      check to see if this attachment ($attachment_id) is not part of the group. If it's not part of this group add it to the group.
     246        /*
     247         *
     248         * This is where we should be re-orginizing the attachments items
     249         *
     250         */
     251       
     252}
     253
     254/**
     255 * Updateing the group name. (Privte)
     256 *
     257 * @since 2.7.0
     258 *
     259 * @param int $post_id Post ID
     260 * @param int $group_number Group Number
     261 * @param str $group_name Group Name
     262*/
     263function _update_attachment_groupname ( $post_id, $group_number, $group_name ) {
     264               
     265        $_attachment = _get_attachment_data ( $post_id );
     266        $_attachment[$group_number][name] = $group_name;
     267       
     268        update_post_meta( $post_id, '_wp_post_attachments', $_attachment );
     269       
     270}
     271
     272function _update_attachment_groupitem ( $post_id, $group_number, $attachment_id ) {
     273       
     274        $_attachment = _get_attachment_data ( $post_id );
     275
     276        //      update_post_meta( $post_id, '_wp_post_attachments', $_attachment );
     277
     278}
     279
     280/**
    72281 * Retrieve all children of the post parent ID.
    73282 *
    74283 * Normally, without any enhancements, the children would apply to pages. In the
     
    19412150}
    19422151
    19432152/**
     2153 * Retrieve a post given its title.
     2154 *
     2155 * @since 2.7.0
     2156 * @uses $wpdb
     2157 *
     2158 * @param string $page_title Page title
     2159 * @param string $output Optional. Output type. OBJECT, ARRAY_N, or ARRAY_A.
     2160 * @return mixed
     2161 */
     2162function get_post_by_title($page_title, $output = OBJECT) {
     2163        global $wpdb;
     2164        $post = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_title = %s AND post_type='post'", $page_title ));
     2165        if ( $post )
     2166                return get_post($post, $output);
     2167
     2168        return null;
     2169}
     2170
     2171/**
    19442172 * Retrieve child pages from list of pages matching page ID.
    19452173 *
    19462174 * Matches against the pages parameter against the page ID. Also matches all
     
    22302458        // export array as variables
    22312459        extract($object, EXTR_SKIP);
    22322460
     2461        wp_update_attachment($ID, $post_parent, $group_name, $group_number);    // update or insert attachment into postmeta field
     2462       
    22332463        // Make sure we set a valid category
    22342464        if (0 == count($post_category) || !is_array($post_category)) {
    22352465                $post_category = array(get_option('default_category'));