WordPress.org

Make WordPress Core

Ticket #7607: 7607.4.diff

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

     
    1616function media_upload_tabs() {
    1717        $_default_tabs = array(
    1818                'type' => __('Choose File'), // handler action suffix => tab text
    19                 'gallery' => __('Gallery'),
     19                'gallery' => __('Attachments'),
    2020                'library' => __('Media Library'),
    2121        );
    2222
     
    4040        if ( intval($_REQUEST['post_id']) )
    4141                $attachments = intval($wpdb->get_var($wpdb->prepare("SELECT count(*) FROM $wpdb->posts WHERE post_type = 'attachment' AND post_parent = %d", $_REQUEST['post_id'])));
    4242
    43         $tabs['gallery'] = sprintf(__('Gallery (%s)'), "<span id='attachments-count'>$attachments</span>");
     43        $tabs['gallery'] = sprintf(__('Attachments (%s)'), "<span id='attachments-count'>$attachments</span>");
    4444
    4545        return $tabs;
    4646}
     
    9898        $rel = $rel ? ' rel="attachment wp-att-'.attribute_escape($id).'"' : '';
    9999
    100100        if ( $url )
    101                 $html = '<a href="' . clean_url($url) . "\"$rel>$html</a>";
     101                $html = '<a href="' . clean_url($url) . "\" title=\"". attribute_escape($title) ."\"$rel>$html</a>";
    102102
    103103        $html = apply_filters( 'image_send_to_editor', $html, $id, $alt, $title, $align, $url, $size );
    104104
     
    358358                        $post['post_title'] = $attachment['post_title'];
    359359                if ( isset($attachment['post_excerpt']) )
    360360                        $post['post_excerpt'] = $attachment['post_excerpt'];
     361                if ( isset($attachment['group_number']) )
     362                        $post['group_number'] = $attachment['group_number'];
    361363                if ( isset($attachment['menu_order']) )
    362364                        $post['menu_order'] = $attachment['menu_order'];
    363365
     
    376378                                wp_set_object_terms($attachment_id, array_map('trim', preg_split('/,+/', $attachment[$t])), $t, false);
    377379        }
    378380
    379         if ( isset($_POST['insert-gallery']) )
    380                 return media_send_to_editor('[gallery]');
     381        if ( isset($_POST['insert-gallery']) ) {
     382                if ( ( isset($_POST['gallery_insert']) ) && ( $_POST['gallery_insert'] > 0 ) ) {
     383                        return media_send_to_editor('[gallery group="'.$_POST['gallery_insert'].'"]');
     384                } else {
     385                        return media_send_to_editor('[gallery]');
     386                }
     387        }
     388       
     389        if ( isset($_POST['new-gallery']) ) {   
     390                wp_new_gallery($_POST['post_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