WordPress.org

Make WordPress Core

Ticket #7607: 7607.4.diff

File 7607.4.diff, 34.2 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_id']); 
     391        } 
     392                 
     393        if ( isset($_POST['gallery_delete']) && !is_null($_POST['gallery_delete']) && ($_POST['gallery_delete'] > 0) )  
     394                wp_delete_gallery($post['post_id'], $_POST['gallery_delete']);  
    381395 
    382396        if ( isset($_POST['send']) ) { 
    383397                $keys = array_keys($_POST['send']); 
     
    426440                        $align = attribute_escape($_POST['insertonly']['align']); 
    427441                        $class = " class='align$align'"; 
    428442                } 
     443                if ( isset($_POST['insertonly']['title']) ) {  
     444                        $title = " title='".attribute_escape($_POST['insertonly']['title'])."'";  
     445                }  
    429446                if ( !empty($src) ) 
    430                         $html = "<img src='$src' alt='$alt'$class />"; 
     447                        $html = "<img src='$src' alt='$alt'$title$class />"; 
    431448                return media_send_to_editor($html); 
    432449        } 
    433450 
     
    841858                        $post['errors']['post_title']['errors'][] = __('Empty Title filled from filename.'); 
    842859                } 
    843860        } 
     861         
     862        $post['group_name'] = $_POST['attachments']['group_name'][$attachment['group_number']]; 
    844863 
    845864        return $post; 
    846865} 
     
    969988 * @param array $errors Errors for attachment, if any. 
    970989 * @return string 
    971990 */ 
    972 function get_media_items( $post_id, $errors ) { 
     991function get_media_items( $post_id, $group_number = null, $errors ) { 
    973992        if ( $post_id ) { 
    974993                $post = get_post($post_id); 
    975                 if ( $post && $post->post_type == 'attachment' ) 
     994                if ( $post && $post->post_type == 'attachment' ) { 
    976995                        $attachments = array($post->ID => $post); 
    977                 else 
    978                         $attachments = get_children( array( 'post_parent' => $post_id, 'post_type' => 'attachment', 'orderby' => 'menu_order ASC, ID', 'order' => 'DESC') ); 
     996                } else { 
     997                        $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') ) ); 
     998                         
     999                        if ( ! count($attachments) )  
     1000                                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>";  
     1001                } 
    9791002        } else { 
    9801003                if ( is_array($GLOBALS['wp_the_query']->posts) ) 
    9811004                        foreach ( $GLOBALS['wp_the_query']->posts as $attachment ) 
     
    9851008        if ( empty($attachments) ) 
    9861009                return ''; 
    9871010 
    988         foreach ( $attachments as $id => $attachment ) 
     1011        foreach ( $attachments as $id => $attachment ) {         
    9891012                if ( $item = get_media_item( $id, array( 'errors' => isset($errors[$id]) ? $errors[$id] : null) ) ) 
    9901013                        $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>"; 
    991  
     1014        } 
     1015         
    9921016        return $output; 
    9931017} 
    9941018 
     
    10261050        $filename = basename($post->guid); 
    10271051        $title = attribute_escape($post->post_title); 
    10281052        $description = attribute_escape($post->post_content); 
     1053        $group_number = attribute_escape($post->group_number); 
    10291054        if ( $_tags = get_the_tags($attachment_id) ) { 
    10301055                foreach ( $_tags as $tag ) 
    10311056                        $tags[] = $tag->name; 
     
    10561081        $gallery = ( (isset($_REQUEST['tab']) && 'gallery' == $_REQUEST['tab']) || (isset($redir_tab) && 'gallery' == $redir_tab) ) ? true : false; 
    10571082        $order = ''; 
    10581083 
     1084        $groupnum = '<input type="hidden" class="group-value" name="attachments['.$attachment_id.'][group_number]" value="'.$group_number.'" />'; 
     1085 
    10591086        foreach ( $form_fields as $key => $val ) { 
    10601087                if ( 'menu_order' == $key ) { 
    10611088                        if ( $gallery ) 
     
    10721099        $type 
    10731100        $toggle_links 
    10741101        $order 
     1102        $groupnum 
    10751103        $display_title 
    10761104        <table class='slidetoggle describe $class'> 
    10771105                <thead class='media-item-info'> 
     
    13551383                html = '<img alt="'+alt+'" src="'+f.src.value+'"'+title+cls+' width="'+t.width+'" height="'+t.height+'" />'; 
    13561384 
    13571385                if ( f.url.value ) 
    1358                         html = '<a href="'+f.url.value+'">'+html+'</a>'; 
     1386                        html = '<a href="'+f.url.value+'"'+title+'>'+html+'</a>'; 
    13591387 
    13601388                if ( caption ) 
    13611389                        html = '[caption id="" align="'+t.align+'" width="'+t.width+'" caption="'+caption+'"]'+html+'[/caption]'; 
     
    14251453        media_upload_header(); 
    14261454 
    14271455        $post_id = intval($_REQUEST['post_id']); 
     1456        $groups = intval(get_attachment_groups( $post_id )); 
     1457        $_group_name = get_attachments_groupsname( $post_id ); 
     1458         
    14281459        $form_action_url = admin_url("media-upload.php?type={$GLOBALS['type']}&tab=gallery&post_id=$post_id"); 
    14291460?> 
    14301461 
     
    14341465        var preloaded = $(".media-item.preloaded"); 
    14351466        if ( preloaded.length > 0 ) { 
    14361467                preloaded.each(function(){prepareMediaItem({id:this.id.replace(/[^0-9]/g, '')},'');}); 
    1437                 updateMediaForm(); 
    14381468        } 
     1469        jQuery("a.del-group").click(function () {  
     1470                var deleteConfirmation = confirm('<?php _e("Are you sure you want to delete this gallery group?"); ?>');  
     1471                 
     1472                if (!deleteConfirmation) { return; }  
     1473                 
     1474                if (jQuery("#media-group-" + jQuery(this).attr('value') + " .media-item input.group-value").length) 
     1475                {  
     1476                        jQuery.each(jQuery("#media-group-delete-" + jQuery(this).attr('value') + " .media-item input.group-value"), function(i, id) {  
     1477                                jQuery(id)[0].value = 0;        //      we are going to set all the items to group 0              
     1478                        });  
     1479                }  
     1480                jQuery("#gallery-delete").val( jQuery(this).attr('value') );    //      set the gallery we are deleting  
     1481                jQuery("#media-group-" + jQuery(this).attr('value')).hide();    //      hide the gallery and then...  
     1482                jQuery(".savebutton").click();  
     1483        });  
     1484        jQuery("a.insert-group").click(function () { 
     1485                jQuery("#gallery-insert").val( jQuery(this).attr('value') );    //      set the gallery we are inserting  
     1486                jQuery(".insert-gallery").click();                
     1487        }); 
    14391488}); 
    14401489--> 
    14411490</script> 
     
    14431492<form enctype="multipart/form-data" method="post" action="<?php echo attribute_escape($form_action_url); ?>" class="media-upload-form validate" id="gallery-form"> 
    14441493<?php wp_nonce_field('media-form'); ?> 
    14451494<?php //media_upload_form( $errors ); ?> 
     1495<div id="media-items">  
     1496<?php  
     1497for ( $i = 0; $i < $groups; $i++ )  
     1498{  
     1499?>  
     1500<div id="media-group-<?php echo $i; ?>" class="media-groups">  
     1501<input type="hidden" id="media-group-value-<?php echo $i; ?>" value="<?php echo $i; ?>" />  
    14461502<table class="widefat"> 
    14471503<thead><tr> 
    1448 <th><?php _e('Media'); ?></th> 
     1504<th>  
     1505<?php   
     1506if ($i > 0) { 
     1507         
     1508        $delete = "<a href=\"#media-group-delete-value-".$i."\" value=\"".$i."\" class=\"del-group\">" . __('Delete') . "</a>";  
     1509        $insert = "<a href=\"#media-group-insert-value-".$i."\" value=\"".$i."\" class=\"insert-group\">" . __('Insert') . "</a>";  
     1510        $group_link = "<small>[".$delete." | " .$insert."]</small>"; 
     1511        $group_name = "<input type=\"text\" name=\"attachments[group_name][".$i."]\" value=\"" . $_group_name[$i] . "\" size=\"20\" />"; 
     1512         
     1513        printf( __('Group (%1$d) %2$s %3$s'), $i, $group_name, $group_link); 
     1514 
     1515                 
     1516} else {  
     1517 
     1518        _e('Media: Non-grouped items.');  
     1519         
     1520} 
     1521?>  
     1522</th> 
    14491523<th class="order-head"><?php _e('Order'); ?></th> 
    14501524</tr></thead> 
    14511525</table> 
    1452 <div id="media-items"> 
    1453 <?php echo get_media_items($post_id, $errors); ?> 
     1526<?php echo get_media_items($post_id, $i, $errors); ?> 
    14541527</div> 
     1528<?php  
     1529} 
     1530?>  
     1531</div> 
    14551532<p class="ml-submit"> 
    14561533<input type="submit" class="button savebutton" name="save" value="<?php echo attribute_escape( __( 'Save all changes' ) ); ?>" /> 
    1457 <input type="submit" class="button insert-gallery" name="insert-gallery" value="<?php echo attribute_escape( __( 'Insert gallery into post' ) ); ?>" /> 
     1534<input type="submit" class="button new-gallery" name="new-gallery" value="<?php echo attribute_escape( __( 'Create new gallery' ) ); ?>" />  
     1535<input type="submit" class="button insert-gallery" name="insert-gallery" value="<?php echo attribute_escape( __( 'Insert full gallery into post' ) ); ?>" />  
     1536<input type="hidden" name="gallery_delete" id="gallery-delete" value="" />  
     1537<input type="hidden" name="gallery_insert" id="gallery-insert" value="" />  
    14581538<input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" /> 
    14591539<input type="hidden" name="type" value="<?php echo attribute_escape( $GLOBALS['type'] ); ?>" /> 
    14601540<input type="hidden" name="tab" value="<?php echo attribute_escape( $GLOBALS['tab'] ); ?>" /> 
    14611541</p> 
    14621542</form> 
     1543<script type="text/javascript">  
     1544<!--  
     1545        updateMediaForm();  
     1546-->  
     1547</script>  
    14631548<?php 
    14641549} 
    14651550 
     
    16061691</script> 
    16071692 
    16081693<div id="media-items"> 
    1609 <?php echo get_media_items(null, $errors); ?> 
     1694<?php echo get_media_items(null, null, $errors); ?>  
    16101695</div> 
    16111696<p class="ml-submit"> 
    16121697<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 
     911        if ( $wp_current_db_version < 9094 ) {  
     912                update_option('image_display_type', 'none');    // default display option  
     913                $posts = $wpdb->get_results("SELECT ID FROM $wpdb->posts WHERE (post_type = 'post' || post_type = 'page')");  
     914                foreach ( (array) $posts as $post ) {  
     915                        $attachments = $wpdb->get_results("SELECT ID FROM $wpdb->posts WHERE post_type = 'attachment' AND post_parent = $post->ID"); 
     916                         
     917                        foreach ( (array) $attachments as $attachment )  
     918                                $attach[] = $attachment->ID;  
     919                         
     920                        $_new_group = array(0 => array ('name' => null, 'items' => $attach));  
     921                        update_post_meta( $post->ID, '_wp_post_attachments', $_new_group );  
     922                        unset($attach);  
     923                }                 
     924        }  
     925        unset($posts, $attachments);  
     926                 
    909927} 
    910928 
    911929 
  • 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                // @todo: This is untested. 
     110                $attachment_childern = get_children( array('post_parent' => $post_id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) ); 
     111        } 
     112         
     113        $attachment = _get_attachment_data ( $post_id ); 
     114         
     115        if ( !is_array($attachment) ) 
     116                return; 
     117 
     118        foreach ( $attachment_childern as $id => $image ) { 
     119                 
     120                foreach ( $attachment as $key => $group ) { 
     121                 
     122                        if ( !is_array($group['items']) ) 
     123                                continue; 
     124                                 
     125                        if (is_null($group_number)) { 
     126                                if ($key == 0) { continue; } 
     127                        } else { 
     128                                if ($key != $group_number) { continue; } 
     129                        } 
     130                         
     131                        if (in_array($id, $group['items'])) { 
     132                                 
     133                                $image = $attachment_childern[$id]; 
     134                                $image->group_number = $key; 
     135                                $image->group_name = $group['name']; 
     136                                 
     137                                $attach[$id] = $image; 
     138                         
     139                        } 
     140 
     141                } 
     142                 
     143        } 
     144         
     145        return $attach; 
     146} 
     147 
     148/** 
     149 * Get the gallery groups names. 
     150 * 
     151 * @since 2.7.0 
     152 * 
     153 * @param int $post_id Post ID 
     154 */ 
     155function &get_attachments_groupsname( $post_id ) { 
     156 
     157        $attachment = _get_attachment_data ( $post_id ); 
     158         
     159        if ( !is_array($attachment) ) 
     160                return ''; 
     161         
     162        foreach ( $attachment as $key => $group ) { 
     163                $groups[$key] = $group['name']; 
     164        }  
     165         
     166        return $groups; 
     167} 
     168 
     169/** 
     170 * Get the number of groups attached to this post. 
     171 * 
     172 * @since 2.7.0 
     173 * 
     174 * @param int $post_id Post ID 
     175 */ 
     176function get_attachment_groups( $post_id ) { 
     177         
     178        return count(_get_attachment_data ( $post_id )); 
     179} 
     180 
     181/** 
     182 * Insert a new gallery into the post.  
     183 *  
     184 * @since 2.7.0  
     185 *  
     186 * @param int $post_id post data  
     187*/  
     188function wp_new_gallery ( $post_id ) {  
     189 
     190        $attachment = _get_attachment_data ( $post_id ); 
     191 
     192        foreach ( $attachment as $key => $group ) { 
     193                $_group[$key] = array ('name' => $group['name'], 'items' => $group['items']); 
     194        } 
     195 
     196        $_group[] = array ('name' => null, 'items' => null); 
     197         
     198        update_post_meta( $post_id, '_wp_post_attachments', $_group); 
     199         
     200} 
     201 
     202/** 
     203 * We are deleting a gallery and moving  
     204 *  
     205 * @since 2.7.0  
     206 *  
     207 * @param int $post_id Post ID 
     208 * @param int $group_number Group Number 
     209*/  
     210function wp_delete_gallery ( $post_id, $group_num ) { 
     211          
     212        $attachment = _get_attachment_data ( $post_id ); 
     213         
     214        foreach ( $attachment as $key => $group ) { 
     215                if ($key != $group_num) { 
     216                        $_group[$key] = array ('name' => $group['name'], 'items' => $group['items']); 
     217                        continue;                                                
     218                }        
     219                 
     220                if ( !is_array($group['items']) ) 
     221                        break; 
     222                 
     223                foreach ( $group['items'] as $item => $attachment_id ) { 
     224                        $_attach[] = $attachment_id;     
     225                } 
     226        } 
     227         
     228        if ( is_array($_group[0]['items']) && is_array($_attach) )  { 
     229                $i = array_merge($_group[0]['items'], $_attach);         
     230                $_group[0] = array ('name' => null, 'items' => $i);      
     231        } else { 
     232                $_group[0] = array ('name' => null, 'items' => $_group[0]['items']); 
     233        } 
     234 
     235        update_post_meta( $post_id, '_wp_post_attachments', $_group ); 
     236 
     237} 
     238 
     239/** 
     240 * Updating the postmeta data when saving the gallery information. 
     241 *  
     242 * @since 2.7.0  
     243 *  
     244 * @param int $attachment_id Attachment ID 
     245 * @param int $post_id Post ID 
     246 * @param int $group_name Group Name 
     247 * @param int $group_number Group Number 
     248*/  
     249function wp_update_attachment ( $attachment_id, $post_id, $group_name = null, $group_number = null) { 
     250         
     251        $attachment = _get_attachment_data ( $post_id ); 
     252 
     253        if (!is_array($attachment)) { 
     254                $_attach[] = array ('name' => null, 'items' => array($attachment_id) ); 
     255                add_post_meta($post_id, '_wp_post_attachments', $_attach, true); 
     256                return true; 
     257        } 
     258 
     259        //      check to see if this group ($group_number) has a name assignment and is not null 
     260         
     261        /* 
     262        if (( !isset($attachment[$group_number][name]) ) || ( !is_null($attachment[$group_number][name]) )) 
     263                if ($group_name != $attachment[$group_number][name]) 
     264                        _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) 
     265         
     266        */ 
     267         
     268        //      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. 
     269        $update = false; 
     270        foreach ( $attachment as $key => $group ) { 
     271                if ($key == $group_number) { 
     272                        if ((!is_array($group['items'])) || (!in_array($attachment_id, $group['items']) )) { 
     273                                if ($key == $group_number) { 
     274                                        $update = true; 
     275                                        $i[count($group['items'])] = $attachment_id; 
     276                                         
     277                                        if (!is_array($group['items'])) 
     278                                                $group['items'] = $i; 
     279                                        else 
     280                                                $group['items'] = array_merge($group['items'], $i); 
     281                                         
     282                                        _update_attachment_groupitem( $post_id, $key, $group['items'] ); 
     283                                } 
     284                        } 
     285                } 
     286        } 
     287        foreach ( $attachment as $key => $group ) { 
     288                if (($key != $group_number) && ($update)) { 
     289                        if ( in_array($attachment_id, $group['items']) ) { 
     290                                foreach ($group['items'] as $item => $attach) { 
     291                                        if ($attach != $attachment_id) 
     292                                                $g[] = $attach; 
     293                                } 
     294                                _update_attachment_groupitem( $post_id, $key, $g ); 
     295                        } 
     296                }        
     297        } 
     298         
     299} 
     300 
     301/** 
     302 * Updateing the group name. (Private) 
     303 *  
     304 * @since 2.7.0  
     305 *  
     306 * @param int $post_id Post ID 
     307 * @param int $group_number Group Number 
     308 * @param str $group_name Group Name 
     309*/  
     310function _update_attachment_groupname ( $post_id, $group_number, $group_name ) { 
     311                 
     312        $_attachment = _get_attachment_data ( $post_id ); 
     313        $_attachment[$group_number][name] = stripslashes($group_name); 
     314         
     315        update_post_meta( $post_id, '_wp_post_attachments', $_attachment ); 
     316         
     317} 
     318 
     319/** 
     320 * Updateing the group items. (Private) 
     321 *  
     322 * @since 2.7.0  
     323 *  
     324 * @param int $post_id Post ID 
     325 * @param int $group_number Group Number 
     326 * @param array $attachment_data The new item data for this group. 
     327*/  
     328function _update_attachment_groupitem ( $post_id, $group_number, $attachment_data ) { 
     329         
     330        $_attachment = _get_attachment_data ( $post_id ); 
     331        $_attachment[$group_number][items] = $attachment_data; 
     332         
     333        update_post_meta( $post_id, '_wp_post_attachments', $_attachment ); 
     334 
     335} 
     336 
     337 /** 
     338 * Retrieve a post given its title. 
     339 * 
     340 * @since 2.7.0 
     341 * @uses $wpdb 
     342 * 
     343 * @param string $page_title Page title 
     344 * @param string $output Optional. Output type. OBJECT, ARRAY_N, or ARRAY_A. 
     345 * @return mixed 
     346 */ 
     347function get_post_by_title($page_title, $output = OBJECT) { 
     348        global $wpdb; 
     349        $post = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_title = %s AND post_type='post'", $page_title )); 
     350        if ( $post ) 
     351                return get_post($post, $output); 
     352 
     353        return null; 
     354} 
     355 
     356/** 
    72357 * Retrieve child pages from list of pages matching page ID. 
    73358 * 
    74359 * Matches against the pages parameter against the page ID. Also matches all 
     
    22442558 
    22452559        // export array as variables 
    22462560        extract($object, EXTR_SKIP); 
    2247  
     2561         
    22482562        // Make sure we set a valid category 
    22492563        if (0 == count($post_category) || !is_array($post_category)) { 
    22502564                $post_category = array(get_option('default_category')); 
     
    23382652                $post_name = sanitize_title($post_title, $post_ID); 
    23392653                $wpdb->update( $wpdb->posts, compact("post_name"), array( 'ID' => $post_ID ) ); 
    23402654        } 
     2655         
     2656        wp_update_attachment($post_ID, $post_parent, $group_name, $group_number);       // update or insert attachment into postmeta field 
    23412657 
    23422658        wp_set_post_categories($post_ID, $post_category); 
    23432659