WordPress.org

Make WordPress Core

Ticket #7607: 7607.3.diff

File 7607.3.diff, 32.9 KB (added by ShaneF, 6 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_number = 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, array('group_number' => $group_number), get_children( array( 'post_parent' => $post_id, 'post_type' => 'attachment', 'orderby' => 'menu_order ASC, ID', 'order' => 'DESC') ) ); 
     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        $groups = 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 < $groups; $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/includes/upgrade.php

     
    906906        // Update post_date for unpublished posts with empty timestamp 
    907907        if ( $wp_current_db_version < 8921 ) 
    908908                $wpdb->query( "UPDATE $wpdb->posts SET post_date = post_modified WHERE post_date = '0000-00-00 00:00:00'" ); 
     909         
     910        // Create gallery index of all current posts 
     911        if ( $wp_current_db_version < 9094 ) { 
     912                update_option('image_display_type', 'none');    // default display option 
     913                 
     914                $posts = $wpdb->get_results("SELECT ID FROM $wpdb->posts WHERE (post_type = 'post' || post_type = 'page')"); 
     915                foreach ( (array) $posts as $post ) { 
     916                        $attachments = $wpdb->get_results("SELECT ID FROM $wpdb->posts WHERE post_type = 'attachment' AND post_parent = $post->ID"); 
     917                         
     918                        foreach ( (array) $attachments as $attachment ) 
     919                                $attach[] = $attachment->ID; 
     920                         
     921                        $_new_group = array(0 => array ('name' => null, 'items' => $attach)); 
     922                        update_post_meta( $post->ID, '_wp_post_attachments', $_new_group ); 
     923                        unset($attach); 
     924                }                
     925        } 
     926        unset($posts, $attachments); 
     927         
    909928} 
    910929 
    911930 
  • 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-admin/options-media.php

     
    3939    }  
    4040?>  
    4141</fieldset></td>  
     42</tr> 
     43<tr valign="top">  
     44<th scope="row"><?php _e('Image display') ?></th>  
     45<td><fieldset><legend class="hidden"><?php _e('Image display') ?></legend>  
     46<?php  
     47    $display_types = array('none' => 'Default', 'lightbox' => 'Lightbox', 'shutterset' => 'Shutter Set', 
     48                                                'lytebox' => 'Lyte Box', 'greybox' => 'Grey Box', 'thickbox' => 'Thick Box', 'lightview' => 'Light View' 
     49        );  
     50 
     51    $default_image_display_type = get_option('image_display_type'); 
     52        if ( empty($default_image_display_type) ) 
     53            $default_image_display_type = 'none'; 
     54 
     55    foreach ($display_types as $type => $name) { ?> 
     56        <input type="radio" name="image_display_type" id="image_display_type_<?php echo $type; ?>" value="<?php echo $type; ?>"<?php echo ($default_image_display_type == $type ? ' checked="checked"' : ''); ?> /> 
     57        <label for="image_display_type_<?php echo $type; ?>"><?php _e($name); ?></label> 
     58    <?php  
     59    }  
     60?>  
     61</fieldset></td>  
    4262</tr>  
    4363</table> 
    4464 
  • wp-admin/options.php

     
    2525        'general' => array('blogname', 'blogdescription', 'admin_email', 'users_can_register', 'gmt_offset', 'date_format', 'time_format', 'start_of_week', 'comment_registration', 'default_role' ), 
    2626        'discussion' => array( 'default_pingback_flag', 'default_ping_status', 'default_comment_status', 'comments_notify', 'moderation_notify', 'comment_moderation', 'require_name_email', 'comment_whitelist', 'comment_max_links', 'moderation_keys', 'blacklist_keys', 'show_avatars', 'avatar_rating', 'avatar_default', 'close_comments_for_old_posts', 'close_comments_days_old', 'thread_comments', 'thread_comments_depth', 'page_comments', 'comments_per_page' ), 
    2727        'misc' => array( 'hack_file', 'use_linksupdate', 'uploads_use_yearmonth_folders', 'upload_path' ), 
    28         'media' => array( 'thumbnail_size_w', 'thumbnail_size_h', 'thumbnail_crop', 'medium_size_w', 'medium_size_h', 'large_size_w', 'large_size_h', 'image_default_size', 'image_default_align', 'image_default_link_type' ), 
     28        'media' => array( 'thumbnail_size_w', 'thumbnail_size_h', 'thumbnail_crop', 'medium_size_w', 'medium_size_h', 'large_size_w', 'large_size_h', 'image_default_size', 'image_default_align', 'image_default_link_type', 'image_display_type' ), 
    2929        'privacy' => array( 'blog_public' ), 
    3030        'reading' => array( 'posts_per_page', 'posts_per_rss', 'rss_use_excerpt', 'blog_charset', 'gzipcompression', 'show_on_front', 'page_on_front', 'page_for_posts' ), 
    3131        'writing' => array( 'default_post_edit_rows', 'use_smilies', 'ping_sites', 'mailserver_url', 'mailserver_port', 'mailserver_login', 'mailserver_pass', 'default_category', 'default_email_category', 'use_balanceTags', 'default_link_category', 'enable_app', 'enable_xmlrpc' ), 
  • 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.gallery-space {  
     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.gallery-space {  
     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'          => get_option('image_display_type'), 
     621                'name'           => null, 
     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( $id, array('group_number' => $group, 'name' => $name, 'order' => $order, 'orderby' => $orderby), get_children( array('post_parent' => $id, 'post_status' => 'inherit', 'post_type' => 'attachment', '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                $group_gallery = "-" . $group_area; 
     648        } else { 
     649                $group_area = $group; 
     650                $group_gallery = "-" . $group; 
     651        } 
     652         
     653        $output = apply_filters('gallery_style', "<div id='gallery-$post->ID-$group_area' class='gallery'>"); 
    661654 
    662655        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}>"; 
     656                 
     657                if ( !is_null($attachment->group_name) ) 
     658                        $group_name = $attachment->group_name; 
     659                 
     660                if ( !is_null($group) ) 
     661                        if ($attachment->group_number != $group) 
     662                                continue; 
     663 
     664                $a_img = wp_get_attachment_url($id); 
     665                $att_page = get_attachment_link($id); 
     666                $img = wp_get_attachment_image_src($id, $size); 
     667                 
     668                $img = $img[0]; 
     669                $title = $attachment->post_excerpt; 
     670                 
     671                if ($title == '') 
     672                        $title = $attachment->post_title; 
     673                 
     674                $output .= "\n<{$itemtag} class='gallery-item col-$columns'>\n"; 
     675                $output .= "<{$icontag} class='gallery-icon'>\n"; 
     676                 
     677                switch ($class) 
     678                { 
     679                        case 'lightbox': 
     680                                $class_rel = ' class="lightbox" rel="lightbox[gallery-'.$post->ID.$group_gallery.']"'; 
     681                                break; 
     682                        case 'shutterset': 
     683                                $class_rel = ' class="shutterset-gallery-'.$post->ID.$group_gallery.'" rel="lightbox[gallery-'.$post->ID.$group_gallery.']"'; 
     684                                break; 
     685                        case 'lytebox': 
     686                                $class_rel = ' class="lytebox" rel="lytebox[gallery-'.$post->ID.$group_gallery.']"'; 
     687                                break; 
     688                        case 'greybox': 
     689                                $class_rel = ' class="greybox" rel="gb_imageset[gallery-'.$post->ID.$group_gallery.']"'; 
     690                                break; 
     691                        case 'thickbox': 
     692                                $class_rel = ' class="thickbox" rel="gallery-'.$post->ID.$group_gallery.'"'; 
     693                                break; 
     694                        case 'lightview': 
     695                                $class_rel = ' class="lightview" rel="gallery[gallery-'.$post->ID.$group_gallery.']"'; 
     696                                break; 
     697                        default: 
     698                                $class_rel = null; 
     699                                break; 
     700                } 
     701 
     702                if (!is_null($class_rel)) 
     703                        $link = $a_img; 
     704                else 
     705                        $link = $att_page; 
     706                 
     707                $output .= "\t<a href=\"$link\" title=\"$title\"$class_rel><img src=\"$img\" alt=\"$title\" /></a>"; 
     708                $output .= "\n</{$icontag}>"; 
     709                 
    669710                if ( $captiontag && trim($attachment->post_excerpt) ) { 
    670                         $output .= " 
    671                                 <{$captiontag} class='gallery-caption'> 
    672                                 {$attachment->post_excerpt} 
    673                                 </{$captiontag}>"; 
     711                        $output .= "\n<$captiontag class='gallery-caption'>\n\t"; 
     712                        $output .= $attachment->post_excerpt; 
     713                        $output .= "</$captiontag>"; 
    674714                } 
    675                 $output .= "</{$itemtag}>"; 
    676                 if ( $columns > 0 && ++$i % $columns == 0 ) 
    677                         $output .= '<br style="clear: both" />'; 
     715                 
     716                $output .= "\n</{$itemtag}>"; 
     717                 
     718                if($columns > 0 && ++$i % $columns == 0) 
     719                        $output .= '<div style="clear:both;" class="gallery-space"><!-- --></div>'; 
    678720        } 
     721        $output .= "\n</div>\n"; 
    679722 
    680         $output .= " 
    681                         <br style='clear: both;' /> 
    682                 </div>\n"; 
     723        if ((isset($group_name)) && (!is_null($group))) 
     724                $output .= "<p style=\"text-align: center;\"><strong>".$group_name."</strong></p>\n"; 
    683725 
    684726        return $output; 
    685727} 
  • 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 $attachment_childern All the childern's of the current post in an array. 
     93 */ 
     94function &get_attachments( $post_id, $attachment_options = '', $attachment_childern ) { 
     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                $attachment_childern = get_children( array('post_parent' => $post_id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) ); 
     110        } 
     111         
     112        $attachment = _get_attachment_data ( $post_id ); 
     113         
     114        if ( !is_array($attachment) ) 
     115                return; 
     116 
     117        foreach ( $attachment_childern as $id => $image ) { 
     118                 
     119                foreach ( $attachment as $key => $group ) { 
     120                 
     121                        if ( !is_array($group['items']) ) 
     122                                continue; 
     123                                 
     124                        if (is_null($group_number)) { 
     125                                if ($key == 0) { continue; } 
     126                        } else { 
     127                                if ($key != $group_number) { continue; } 
     128                        } 
     129                         
     130                        if (in_array($id, $group['items'])) { 
     131                                 
     132                                $image = $attachment_childern[$id]; 
     133                                $image->group_number = $key; 
     134                                $image->group_name = $group['name']; 
     135                                 
     136                                $attach[$id] = $image; 
     137                         
     138                        } 
     139 
     140                } 
     141                 
     142        } 
     143         
     144        return $attach; 
     145} 
     146 
     147/** 
     148 * Get the gallery groups names. 
     149 * 
     150 * @since 2.7.0 
     151 * 
     152 * @param int $post_id Post ID 
     153 */ 
     154function &get_attachments_groupsname( $post_id ) { 
     155 
     156        $attachment = _get_attachment_data ( $post_id ); 
     157         
     158        if ( !is_array($attachment) ) 
     159                return ''; 
     160         
     161        foreach ( $attachment as $key => $group ) { 
     162                $groups[$key] = $group['name']; 
     163        }  
     164         
     165        return $groups; 
     166} 
     167 
     168/** 
     169 * Get the number of groups attached to this post. 
     170 * 
     171 * @since 2.7.0 
     172 * 
     173 * @param int $post_id Post ID 
     174 */ 
     175function get_attachment_groups( $post_id ) { 
     176         
     177        return count(_get_attachment_data ( $post_id )); 
     178} 
     179 
     180/** 
     181 * Insert a new gallery into the post.  
     182 *  
     183 * @since 2.7.0  
     184 *  
     185 * @param int $post_id post data  
     186*/  
     187function wp_new_gallery ( $post_id ) {  
     188 
     189        $attachment = _get_attachment_data ( $post_id ); 
     190         
     191        foreach ( $attachment as $key => $group ) 
     192                $_group[$key] = array ('name' => $group['name'], 'items' => $group['items']); 
     193 
     194        $_group[] = array ('name' => null, 'items' => null); 
     195         
     196        update_post_meta( $post_id, '_wp_post_attachments', $_group ); 
     197         
     198} 
     199 
     200/** 
     201 * We are deleting a gallery and moving  
     202 *  
     203 * @since 2.7.0  
     204 *  
     205 * @param int $post_id Post ID 
     206 * @param int $group_number Group Number 
     207*/  
     208function wp_delete_gallery ( $post_id, $group_num ) { 
     209          
     210        $attachment = _get_attachment_data ( $post_id ); 
     211         
     212        foreach ( $attachment as $key => $group ) { 
     213                if ($key != $group_num) { 
     214                        $_group[$key] = array ('name' => $group['name'], 'items' => $group['items']); 
     215                        continue;                                                
     216                }        
     217                 
     218                if ( !is_array($group['items']) ) 
     219                        break; 
     220                 
     221                foreach ( $group['items'] as $item => $attachment_id ) { 
     222                        $_attach[] = $attachment_id;     
     223                } 
     224        } 
     225         
     226        if ( is_array($_group[0]['items']) && is_array($_attach) )  { 
     227                $i = array_merge($_group[0]['items'], $_attach);         
     228                $_group[0] = array ('name' => null, 'items' => $i);      
     229        } else { 
     230                $_group[0] = array ('name' => null, 'items' => $_group[0]['items']); 
     231        } 
     232 
     233        update_post_meta( $post_id, '_wp_post_attachments', $_group ); 
     234 
     235} 
     236 
     237/** 
     238 * Updating the postmeta data when saving the gallery information. 
     239 *  
     240 * @since 2.7.0  
     241 *  
     242 * @param int $attachment_id Attachment ID 
     243 * @param int $post_id Post ID 
     244 * @param int $group_name Group Name 
     245 * @param int $group_number Group Number 
     246*/  
     247function wp_update_attachment ( $attachment_id, $post_id, $group_name = null, $group_number) { 
     248         
     249        $attachment = _get_attachment_data ( $post_id ); 
     250 
     251        //      check to see if this group ($group_number) has a name assignment and is not null 
     252        if (( !isset($attachment[$group_number][name]) ) || ( !is_null($attachment[$group_number][name]) )) 
     253                if ($group_name != $attachment[$group_number][name]) 
     254                        _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) 
     255         
     256         
     257        //      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. 
     258        $update = false; 
     259        foreach ( $attachment as $key => $group ) { 
     260                if ($key == $group_number) { 
     261                        if ((!is_array($group['items'])) || (!in_array($attachment_id, $group['items']) )) { 
     262                                if ($key == $group_number) { 
     263                                        $update = true; 
     264                                        $i[count($group['items'])] = $attachment_id; 
     265                                         
     266                                        if (!is_array($group['items'])) 
     267                                                $group['items'] = $i; 
     268                                        else 
     269                                                $group['items'] = array_merge($group['items'], $i); 
     270                                         
     271                                        _update_attachment_groupitem( $post_id, $key, $group['items'] ); 
     272                                } 
     273                        } 
     274                } 
     275        } 
     276        foreach ( $attachment as $key => $group ) { 
     277                if (($key != $group_number) && ($update)) { 
     278                        if ( in_array($attachment_id, $group['items']) ) { 
     279                                foreach ($group['items'] as $item => $attach) { 
     280                                        if ($attach != $attachment_id) 
     281                                                $g[] = $attach; 
     282                                } 
     283                                _update_attachment_groupitem( $post_id, $key, $g ); 
     284                        } 
     285                }        
     286        } 
     287         
     288} 
     289 
     290/** 
     291 * Updateing the group name. (Private) 
     292 *  
     293 * @since 2.7.0  
     294 *  
     295 * @param int $post_id Post ID 
     296 * @param int $group_number Group Number 
     297 * @param str $group_name Group Name 
     298*/  
     299function _update_attachment_groupname ( $post_id, $group_number, $group_name ) { 
     300                 
     301        $_attachment = _get_attachment_data ( $post_id ); 
     302        $_attachment[$group_number][name] = stripslashes($group_name); 
     303         
     304        update_post_meta( $post_id, '_wp_post_attachments', $_attachment ); 
     305         
     306} 
     307 
     308/** 
     309 * Updateing the group items. (Private) 
     310 *  
     311 * @since 2.7.0  
     312 *  
     313 * @param int $post_id Post ID 
     314 * @param int $group_number Group Number 
     315 * @param array $attachment_data The new item data for this group. 
     316*/  
     317function _update_attachment_groupitem ( $post_id, $group_number, $attachment_data ) { 
     318         
     319        $_attachment = _get_attachment_data ( $post_id ); 
     320        $_attachment[$group_number][items] = $attachment_data; 
     321         
     322        update_post_meta( $post_id, '_wp_post_attachments', $_attachment ); 
     323 
     324} 
     325 
     326/** 
    72327 * Retrieve all children of the post parent ID. 
    73328 * 
    74329 * Normally, without any enhancements, the children would apply to pages. In the 
     
    19482203} 
    19492204 
    19502205/** 
     2206 * Retrieve a post given its title. 
     2207 * 
     2208 * @since 2.7.0 
     2209 * @uses $wpdb 
     2210 * 
     2211 * @param string $page_title Page title 
     2212 * @param string $output Optional. Output type. OBJECT, ARRAY_N, or ARRAY_A. 
     2213 * @return mixed 
     2214 */ 
     2215function get_post_by_title($page_title, $output = OBJECT) { 
     2216        global $wpdb; 
     2217        $post = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_title = %s AND post_type='post'", $page_title )); 
     2218        if ( $post ) 
     2219                return get_post($post, $output); 
     2220 
     2221        return null; 
     2222} 
     2223 
     2224/** 
    19512225 * Retrieve child pages from list of pages matching page ID. 
    19522226 * 
    19532227 * Matches against the pages parameter against the page ID. Also matches all 
     
    22372511        // export array as variables 
    22382512        extract($object, EXTR_SKIP); 
    22392513 
     2514        wp_update_attachment($ID, $post_parent, $group_name, $group_number);    // update or insert attachment into postmeta field 
     2515         
    22402516        // Make sure we set a valid category 
    22412517        if (0 == count($post_category) || !is_array($post_category)) { 
    22422518                $post_category = array(get_option('default_category'));