Make WordPress Core

Ticket #7607: 7607.3.diff

File 7607.3.diff, 32.9 KB (added by ShaneF, 16 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'));