Ticket #24716: 24716.4.diff
File 24716.4.diff, 20.7 KB (added by , 11 years ago) |
---|
-
src/wp-admin/css/list-tables.css
diff --git a/src/wp-admin/css/list-tables.css b/src/wp-admin/css/list-tables.css index 0b4115d..62fc5b1 100644
a b classes exist in paginate_links() but not seen in list table output. */ 634 634 635 635 .view-switch > a:before { 636 636 color: #bbb; 637 content: '\f163';638 637 display: inline-block; 639 638 float: left; 640 639 font: normal 20px/1 'dashicons'; … … classes exist in paginate_links() but not seen in list table output. */ 645 644 -moz-osx-font-smoothing: grayscale; 646 645 } 647 646 647 .view-switch > .view-list:before { 648 content: '\f163'; 649 } 650 648 651 .view-switch a:hover:before { 649 652 color: #727272; 650 653 } … … classes exist in paginate_links() but not seen in list table output. */ 653 656 color: #0074a2; 654 657 } 655 658 656 .view-switch > a + a :before{659 .view-switch > a + a { 657 660 margin-left: 5px; 661 } 662 663 .view-switch > .view-excerpt:before { 658 664 content: '\f164'; 659 665 } 660 666 667 .view-switch > .view-grid:before { 668 content: '\f180'; 669 } 670 661 671 .filter { 662 672 float: left; 663 673 margin: -5px 0 0 10px; -
src/wp-admin/includes/class-wp-list-table.php
diff --git a/src/wp-admin/includes/class-wp-list-table.php b/src/wp-admin/includes/class-wp-list-table.php index b2ca8aa..76f25e0 100644
a b class WP_List_Table { 493 493 <div class="view-switch"> 494 494 <?php 495 495 foreach ( $modes as $mode => $title ) { 496 $class = ( $current_mode == $mode ) ? 'class="current"' : ''; 497 echo "<a href='" . esc_url( add_query_arg( 'mode', $mode, $_SERVER['REQUEST_URI'] ) ) . "' $class><img id='view-switch-$mode' src='" . esc_url( includes_url( 'images/blank.gif' ) ) . "' width='20' height='20' title='$title' alt='$title' /></a>\n"; 496 $classes = array( 'view-' . $mode ); 497 if ( $current_mode == $mode ) 498 $classes[] = 'current'; 499 printf( 500 "<a href='%s' class='%s'><img id='view-switch-$mode' src='%s' width='20' height='20' title='%s' alt='%s' /></a>\n", 501 esc_url( add_query_arg( 'mode', $mode ) ), 502 implode( ' ', $classes ), 503 esc_url( includes_url( 'images/blank.gif' ) ), 504 $title, 505 $title 506 ); 498 507 } 499 508 ?> 500 509 </div> -
src/wp-admin/includes/class-wp-media-list-table.php
diff --git a/src/wp-admin/includes/class-wp-media-list-table.php b/src/wp-admin/includes/class-wp-media-list-table.php index 4de086a..fc008b1 100644
a b class WP_Media_List_Table extends WP_List_Table { 23 23 } 24 24 25 25 public function prepare_items() { 26 global $lost, $wp_query, $post_mime_types, $avail_post_mime_types ;26 global $lost, $wp_query, $post_mime_types, $avail_post_mime_types, $mode; 27 27 28 28 $q = $_REQUEST; 29 29 … … class WP_Media_List_Table extends WP_List_Table { 34 34 35 35 $this->is_trash = isset( $_REQUEST['status'] ) && 'trash' == $_REQUEST['status']; 36 36 37 $mode = empty( $_REQUEST['mode'] ) ? 'list' : $_REQUEST['mode']; 38 37 39 $this->set_pagination_args( array( 38 40 'total_items' => $wp_query->found_posts, 39 41 'total_pages' => $wp_query->max_num_pages, … … class WP_Media_List_Table extends WP_List_Table { 125 127 _e( 'No media attachments found.' ); 126 128 } 127 129 130 protected function pagination( $which ) { 131 global $mode; 132 133 parent::pagination( $which ); 134 135 $this->view_switcher( $mode ); 136 } 137 138 /** 139 * Display a view switcher 140 * 141 * @since 3.1.0 142 * @access protected 143 */ 144 protected function view_switcher( $current_mode ) { 145 $modes = array( 146 'list' => __( 'List View' ), 147 'grid' => __( 'Grid View' ) 148 ); 149 150 ?> 151 <input type="hidden" name="mode" value="<?php echo esc_attr( $current_mode ); ?>" /> 152 <div class="view-switch"> 153 <?php 154 foreach ( $modes as $mode => $title ) { 155 $classes = array( 'view-' . $mode ); 156 if ( $current_mode == $mode ) 157 $classes[] = 'current'; 158 printf( 159 "<a href='%s' class='%s'><img id='view-switch-$mode' src='%s' width='20' height='20' title='%s' alt='%s' /></a>\n", 160 esc_url( add_query_arg( 'mode', $mode ) ), 161 implode( ' ', $classes ), 162 esc_url( includes_url( 'images/blank.gif' ) ), 163 $title, 164 $title 165 166 ); 167 } 168 ?> 169 </div> 170 <?php 171 } 172 128 173 protected function get_columns() { 129 174 $posts_columns = array(); 130 175 $posts_columns['cb'] = '<input type="checkbox" />'; -
src/wp-admin/js/media.js
diff --git a/src/wp-admin/js/media.js b/src/wp-admin/js/media.js index f9fc650..e767b09 100644
a b var findPosts; 72 72 }; 73 73 74 74 $( document ).ready( function() { 75 // Open up a manage media frame into the grid. 76 wp.media && wp.media({ 77 frame: 'manage', 78 container: $('#wpbody-content') 79 }).open(); 80 75 81 $( '#find-posts-submit' ).click( function( event ) { 76 82 if ( ! $( '#find-posts-response input[type="radio"]:checked' ).length ) 77 83 event.preventDefault(); -
src/wp-admin/upload.php
diff --git a/src/wp-admin/upload.php b/src/wp-admin/upload.php index c38a0b6..11175f9 100644
a b require_once( dirname( __FILE__ ) . '/admin.php' ); 12 12 if ( !current_user_can('upload_files') ) 13 13 wp_die( __( 'You do not have permission to upload files.' ) ); 14 14 15 $mode = get_user_option( 'media_library_mode', get_current_user_id() ) ? get_user_option( 'media_library_mode', get_current_user_id() ) : 'grid'; 16 $modes = array( 'grid', 'list' ); 17 18 if ( isset( $_GET['mode'] ) && in_array( $_GET['mode'], $modes ) ) { 19 $mode = $_GET['mode']; 20 update_user_option( get_current_user_id(), 'media_library_mode', $mode ); 21 } 22 23 if ( 'grid' === $mode ) { 24 wp_enqueue_media(); 25 wp_enqueue_script( 'media' ); 26 require_once( ABSPATH . 'wp-admin/admin-header.php' ); 27 ?><div class="view-switch media-grid-view-switch"> 28 <a href="<?php echo esc_url( add_query_arg( 'mode', 'list', $_SERVER['REQUEST_URI'] ) ) ?>" class="view-list"> 29 <img id="view-switch-list" src="<?php echo includes_url( 'images/blank.gif' ) ?>" width="20" height="20" title="List View" alt="List View"/> 30 </a> 31 <a href="<?php echo esc_url( add_query_arg( 'mode', 'grid', $_SERVER['REQUEST_URI'] ) ) ?>" class="view-grid current"> 32 <img id="view-switch-excerpt" src="<?php echo includes_url( 'images/blank.gif' ) ?>" width="20" height="20" title="Grid View" alt="Grid View"/> 33 </a> 34 </div><?php 35 include( ABSPATH . 'wp-admin/admin-footer.php' ); 36 exit; 37 } 38 15 39 $wp_list_table = _get_list_table('WP_Media_List_Table'); 16 40 $pagenum = $wp_list_table->get_pagenum(); 17 41 … … if ( !empty($message) ) { ?> 237 261 <?php $wp_list_table->display(); ?> 238 262 239 263 <div id="ajax-response"></div> 240 <?php find_posts_div(); ?> 264 <?php find_posts_div(); ?> 241 265 </form> 242 266 </div> 243 267 -
src/wp-includes/css/media-views.css
diff --git a/src/wp-includes/css/media-views.css b/src/wp-includes/css/media-views.css index 7d16c30..779f084 100644
a b 295 295 margin: 3px 0; 296 296 } 297 297 298 .media-sidebar .setting span{298 .media-sidebar .setting .name { 299 299 min-width: 30%; 300 300 margin-right: 4%; 301 301 font-size: 12px; 302 text-align: right; 302 303 } 303 304 304 305 .media-sidebar .setting select { … … 319 320 min-height: 22px; 320 321 padding-top: 8px; 321 322 line-height: 16px; 322 text-align: right;323 323 font-weight: normal; 324 324 color: #666; 325 325 } 326 326 327 .compat-item label span { 328 text-align: right; 329 } 330 327 331 .media-sidebar .setting input, 328 .media-sidebar .setting textarea { 332 .media-sidebar .setting textarea, 333 .media-sidebar .setting .value { 329 334 margin: 1px; 330 335 width: 65%; 331 336 float: right; … … 1812 1817 color: #666; 1813 1818 } 1814 1819 1815 .image-details .embed-media-settings .setting span{1820 .image-details .embed-media-settings .setting .name { 1816 1821 float: left; 1817 1822 width: 25%; 1818 1823 text-align: right; … … 2368 2373 background-image: url(../images/spinner-2x.gif); 2369 2374 } 2370 2375 } 2376 2377 2378 /** 2379 * Media Grid 2380 */ 2381 2382 .media-grid-view h1 { 2383 color: #222; 2384 font-size: 23px; 2385 font-weight: 400; 2386 margin: 10px 0 0; 2387 padding: 9px 15px 4px 22px; 2388 line-height: 29px; 2389 } 2390 2391 .media-grid-view-switch { 2392 position: fixed; 2393 right: 10px; 2394 top: 44px; 2395 z-index: 300; 2396 } 2397 2398 /** 2399 * Position both the frame and the uploader window into the content 2400 * area of the screen. 2401 */ 2402 .media-grid-view { 2403 position: fixed; 2404 bottom: 0; 2405 left: 160px; 2406 right: 0; 2407 top: 32px; 2408 } 2409 @media screen and (max-width: 900px) { 2410 .auto-fold .media-grid-view { 2411 left: 36px; 2412 } 2413 } 2414 @media screen and (max-width: 782px) { 2415 .media-grid-view { 2416 top: 46px; 2417 } 2418 .auto-fold .media-grid-view { 2419 left: 0px; 2420 bottom: 0px; 2421 } 2422 } 2423 2424 /* Regions we don't use at all */ 2425 .media-grid-view .media-frame-toolbar, 2426 .media-grid-view .media-frame-menu { 2427 display: none; 2428 } 2429 2430 .media-grid-view .media-frame-content { 2431 bottom: 40px; 2432 } 2433 @media screen and (max-width: 782px) { 2434 .media-grid-view .media-frame-content { 2435 border-bottom: none; 2436 bottom: 0; 2437 } 2438 } 2439 2440 @media only screen and (max-width: 640px), screen and (max-height: 400px) { 2441 .media-grid-view .media-frame-title { 2442 display: block; 2443 width: auto; 2444 bottom: auto; 2445 right: 0; 2446 top: 0; 2447 height: 60px; 2448 } 2449 } 2450 No newline at end of file -
src/wp-includes/js/media-models.js
diff --git a/src/wp-includes/js/media-models.js b/src/wp-includes/js/media-models.js index 1dd7196..176b424 100644
a b window.wp = window.wp || {}; 30 30 frame = new MediaFrame.Select( attributes ); 31 31 } else if ( 'post' === attributes.frame && MediaFrame.Post ) { 32 32 frame = new MediaFrame.Post( attributes ); 33 } else if ( 'manage' === attributes.frame && MediaFrame.Manage ) { 34 frame = new MediaFrame.Manage( attributes ); 33 35 } else if ( 'image' === attributes.frame && MediaFrame.ImageDetails ) { 34 36 frame = new MediaFrame.ImageDetails( attributes ); 35 37 } else if ( 'audio' === attributes.frame && MediaFrame.AudioDetails ) { -
src/wp-includes/js/media-views.js
diff --git a/src/wp-includes/js/media-views.js b/src/wp-includes/js/media-views.js index 26fe39d..93b9617 100644
a b 614 614 615 615 this.get('selection').on( 'add remove reset', this.refreshContent, this ); 616 616 617 if ( this.get( 'contentUserSetting') ) {617 if ( this.get( 'router' ) && this.get('contentUserSetting') ) { 618 618 this.frame.on( 'content:activate', this.saveContentMode, this ); 619 619 this.set( 'content', getUserSetting( 'libraryContent', this.get('content') ) ); 620 620 } … … 1890 1890 }); 1891 1891 1892 1892 /** 1893 * wp.media.view.MediaFrame.Manage 1894 * 1895 * A generic management frame workflow. 1896 * 1897 * Used in the media grid view. 1898 * 1899 * @constructor 1900 * @augments wp.media.view.MediaFrame 1901 * @augments wp.media.view.Frame 1902 * @augments wp.media.View 1903 * @augments wp.Backbone.View 1904 * @augments Backbone.View 1905 * @mixes wp.media.controller.StateMachine 1906 */ 1907 media.view.MediaFrame.Manage = media.view.MediaFrame.extend({ 1908 /** 1909 * @global wp.Uploader 1910 */ 1911 initialize: function() { 1912 _.defaults( this.options, { 1913 title: l10n.mediaLibraryTitle, 1914 modal: false, 1915 selection: [], 1916 library: {}, 1917 multiple: false, 1918 state: 'library', 1919 uploader: true 1920 }); 1921 1922 // Ensure core and media grid view UI is enabled. 1923 this.$el.addClass('wp-core-ui media-grid-view'); 1924 1925 // Force the uploader off if the upload limit has been exceeded or 1926 // if the browser isn't supported. 1927 if ( wp.Uploader.limitExceeded || ! wp.Uploader.browser.supported ) { 1928 this.options.uploader = false; 1929 } 1930 1931 // Initialize a window-wide uploader. 1932 if ( this.options.uploader ) { 1933 var uploader = new media.view.UploaderWindow({ 1934 controller: this, 1935 uploader: { 1936 dropzone: $('body'), 1937 container: $('body') 1938 } 1939 }).render(); 1940 uploader.ready(); 1941 $('body').append( uploader.el ); 1942 1943 this.options.uploader = false; 1944 } 1945 1946 /** 1947 * call 'initialize' directly on the parent class 1948 */ 1949 media.view.MediaFrame.prototype.initialize.apply( this, arguments ); 1950 1951 // Since we're not using the default modal built into 1952 // a media frame, append our $element to the supplied container. 1953 this.$el.appendTo( this.options.container ); 1954 1955 this.createSelection(); 1956 this.createStates(); 1957 this.bindHandlers(); 1958 this.render(); 1959 }, 1960 1961 createSelection: function() { 1962 var selection = this.options.selection; 1963 1964 if ( ! (selection instanceof media.model.Selection) ) { 1965 this.options.selection = new media.model.Selection( selection, { 1966 multiple: this.options.multiple 1967 }); 1968 } 1969 1970 this._selection = { 1971 attachments: new media.model.Attachments(), 1972 difference: [] 1973 }; 1974 }, 1975 1976 createStates: function() { 1977 var options = this.options; 1978 1979 if ( this.options.states ) { 1980 return; 1981 } 1982 var libraryState = new media.controller.Library({ 1983 library: media.query( options.library ), 1984 multiple: options.multiple, 1985 title: options.title, 1986 priority: 20, 1987 toolbar: false, 1988 router: false, 1989 content: 'browse', 1990 filterable: 'mime-types' 1991 }); 1992 1993 // Add the default states. 1994 this.states.add([ 1995 // Main states. 1996 libraryState, 1997 1998 new media.controller.EditImage( { model: options.editImage } ) 1999 ]); 2000 }, 2001 2002 bindHandlers: function() { 2003 this.on( 'router:create:browse', this.createRouter, this ); 2004 this.on( 'router:render:browse', this.browseRouter, this ); 2005 this.on( 'content:create:browse', this.browseContent, this ); 2006 this.on( 'content:render:upload', this.uploadContent, this ); 2007 this.on( 'content:render:edit-image', this.editImageContent, this ); 2008 }, 2009 2010 // Routers 2011 browseRouter: function( view ) { 2012 view.set({ 2013 upload: { 2014 text: l10n.uploadFilesTitle, 2015 priority: 20 2016 }, 2017 browse: { 2018 text: l10n.mediaLibraryTitle, 2019 priority: 40 2020 } 2021 }); 2022 }, 2023 2024 // Routers 2025 browseRouter: function( view ) { 2026 view.set({ 2027 upload: { 2028 text: l10n.uploadFilesTitle, 2029 priority: 20 2030 }, 2031 browse: { 2032 text: l10n.mediaLibraryTitle, 2033 priority: 40 2034 } 2035 }); 2036 }, 2037 2038 /** 2039 * Content 2040 * 2041 * @param {Object} content 2042 * @this wp.media.controller.Region 2043 */ 2044 browseContent: function( content ) { 2045 var state = this.state(); 2046 2047 // Browse our library of attachments. 2048 content.view = new media.view.AttachmentsBrowser({ 2049 controller: this, 2050 collection: state.get('library'), 2051 selection: state.get('selection'), 2052 model: state, 2053 sortable: state.get('sortable'), 2054 search: state.get('searchable'), 2055 filters: state.get('filterable'), 2056 display: state.get('displaySettings'), 2057 dragInfo: state.get('dragInfo'), 2058 bulkEdit: true, 2059 2060 suggestedWidth: state.get('suggestedWidth'), 2061 suggestedHeight: state.get('suggestedHeight'), 2062 2063 AttachmentView: state.get('AttachmentView') 2064 }); 2065 }, 2066 2067 editImageContent: function() { 2068 var image = this.state().get('image'), 2069 view = new media.view.EditImage( { model: image, controller: this } ).render(); 2070 2071 this.content.set( view ); 2072 2073 // after creating the wrapper view, load the actual editor via an ajax call 2074 view.loadEditor(); 2075 2076 }, 2077 2078 /** 2079 * 2080 * @this wp.media.controller.Region 2081 */ 2082 uploadContent: function() { 2083 this.$el.removeClass('hide-toolbar'); 2084 this.content.set( new media.view.UploaderInline({ 2085 controller: this 2086 }) ); 2087 } 2088 }); 2089 2090 /** 1893 2091 * wp.media.view.MediaFrame.Select 1894 2092 * 1895 2093 * Type of media frame that is used to select an item or items from the media library … … 5332 5530 } 5333 5531 }); 5334 5532 5533 /** 5534 * wp.media.view.AttachmentFilters.FileTypes 5535 * 5536 * @constructor 5537 * @augments wp.media.view.AttachmentFilters 5538 * @augments wp.media.View 5539 * @augments wp.Backbone.View 5540 * @augments Backbone.View 5541 */ 5542 media.view.AttachmentFilters.mimeTypes = media.view.AttachmentFilters.extend({ 5543 createFilters: function() { 5544 var filters = {}; 5545 5546 _.each( media.view.settings.mimeTypes || {}, function( text, key ) { 5547 filters[ key ] = { 5548 text: text, 5549 props: { 5550 type: key, 5551 uploadedTo: null, 5552 orderby: 'date', 5553 order: 'DESC' 5554 } 5555 }; 5556 }); 5557 filters.all = { 5558 text: l10n.allMediaTypes, 5559 props: { 5560 type: null, 5561 uploadedTo: null, 5562 orderby: 'date', 5563 order: 'DESC' 5564 }, 5565 priority: 10 5566 }; 5567 5568 this.filters = filters; 5569 } 5570 }); 5571 5335 5572 5336 5573 /** 5337 5574 * wp.media.view.AttachmentsBrowser … … 5386 5623 FiltersConstructor = media.view.AttachmentFilters.Uploaded; 5387 5624 } else if ( 'all' === filters ) { 5388 5625 FiltersConstructor = media.view.AttachmentFilters.All; 5626 } else if ( 'mime-types' === filters ) { 5627 FiltersConstructor = media.view.AttachmentFilters.mimeTypes; 5389 5628 } 5390 5629 5391 5630 if ( FiltersConstructor ) { -
src/wp-includes/media-template.php
diff --git a/src/wp-includes/media-template.php b/src/wp-includes/media-template.php index 59c018c..d0869c0 100644
a b function wp_print_media_templates() { 308 308 <div class="filename">{{ data.filename }}</div> 309 309 <div class="uploaded">{{ data.dateFormatted }}</div> 310 310 311 <div class="file-size">{{ data.filesizeHumanReadable }}</div> 311 312 <# if ( 'image' === data.type && ! data.uploading ) { #> 312 313 <# if ( data.width && data.height ) { #> 313 314 <div class="dimensions">{{ data.width }} × {{ data.height }}</div> … … function wp_print_media_templates() { 339 340 </div> 340 341 </div> 341 342 343 <label class="setting" data-setting="url"> 344 <span class="name"><?php _e('URL'); ?></span> 345 <input type="text" value="{{ data.url }}" readonly /> 346 </label> 342 347 <# var maybeReadOnly = data.can.save || data.allowLocalEdits ? '' : 'readonly'; #> 343 344 <span><?php _e('Title'); ?></span>345 346 347 348 <span><?php _e('Caption'); ?></span>349 350 348 <label class="setting" data-setting="title"> 349 <span class="name"><?php _e('Title'); ?></span> 350 <input type="text" value="{{ data.title }}" {{ maybeReadOnly }} /> 351 </label> 352 <label class="setting" data-setting="caption"> 353 <span class="name"><?php _e('Caption'); ?></span> 354 <textarea {{ maybeReadOnly }}>{{ data.caption }}</textarea> 355 </label> 351 356 <# if ( 'image' === data.type ) { #> 352 357 <label class="setting" data-setting="alt"> 353 <span ><?php _e('Alt Text'); ?></span>358 <span class="name"><?php _e('Alt Text'); ?></span> 354 359 <input type="text" value="{{ data.alt }}" {{ maybeReadOnly }} /> 355 360 </label> 356 361 <# } #> 357 <label class="setting" data-setting="description"> 358 <span><?php _e('Description'); ?></span> 359 <textarea {{ maybeReadOnly }}>{{ data.description }}</textarea> 362 <label class="setting" data-setting="description"> 363 <span class="name"><?php _e('Description'); ?></span> 364 <textarea {{ maybeReadOnly }}>{{ data.description }}</textarea> 365 </label> 366 <label class="setting"> 367 <span class="name"><?php _e( 'Uploaded By' ); ?></span> 368 <span class="value">{{ data.authorName }}</span> 360 369 </label> 370 <# if ( data.uploadedTo ) { #> 371 <label class="setting"> 372 <span class="name"><?php _e('Uploaded To'); ?></span> 373 <span class="value"><a href="{{ data.uploadedToLink }}">{{ data.uploadedToTitle }}</a></span> 374 </label> 375 <# } #> 361 376 </script> 362 377 363 378 <script type="text/html" id="tmpl-media-selection"> -
src/wp-includes/media.php
diff --git a/src/wp-includes/media.php b/src/wp-includes/media.php index 43b5aab..477f252 100644
a b function wp_prepare_attachment_for_js( $attachment ) { 2563 2563 'editLink' => false, 2564 2564 ); 2565 2565 2566 $author = new WP_User( $attachment->post_author ); 2567 $response['authorName'] = $author->display_name; 2568 2569 if ( $attachment->post_parent ) { 2570 $post_parent = get_post( $attachment->post_parent ); 2571 $response['uploadedToLink'] = get_edit_post_link( $attachment->post_parent, 'raw' ); 2572 $response['uploadedToTitle'] = $post_parent->post_title ? $post_parent->post_title : __( '(No title)' ); 2573 } 2574 2575 $bytes = filesize( get_attached_file( $attachment->ID ) ); 2576 $response['filesizeInBytes'] = $bytes; 2577 $response['filesizeHumanReadable'] = size_format( $bytes ); 2578 2566 2579 if ( current_user_can( 'edit_post', $attachment->ID ) ) { 2567 2580 $response['nonces']['update'] = wp_create_nonce( 'update-post_' . $attachment->ID ); 2568 2581 $response['nonces']['edit'] = wp_create_nonce( 'image_editor-' . $attachment->ID ); … … function wp_enqueue_media( $args = array() ) { 2820 2833 'createNewVideoPlaylist' => __( 'Create a new video playlist' ), 2821 2834 'returnToLibrary' => __( '← Return to library' ), 2822 2835 'allMediaItems' => __( 'All media items' ), 2836 'allMediaTypes' => __( 'All media types' ), 2823 2837 'noItemsFound' => __( 'No items found.' ), 2824 2838 'insertIntoPost' => $hier ? __( 'Insert into page' ) : __( 'Insert into post' ), 2825 2839 'uploadedToThisPost' => $hier ? __( 'Uploaded to this page' ) : __( 'Uploaded to this post' ),