<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><style type="text/css"><!--
#msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; }
#msg ul, pre { overflow: auto; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<title>[14869] trunk: Allow searching custom post types when attaching media.</title>
</head>
<body>
<div id="msg">
<dl>
<dt>Revision</dt> <dd><a href="http://trac.wordpress.org/changeset/14869">14869</a></dd>
<dt>Author</dt> <dd>ryan</dd>
<dt>Date</dt> <dd>2010-05-25 02:18:07 +0000 (Tue, 25 May 2010)</dd>
</dl>
<h3>Log Message</h3>
<pre>Allow searching custom post types when attaching media. Props markoheijnen. fixes <a href="http://trac.wordpress.org/ticket/13229">#13229</a></pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkwpadminadminajaxphp">trunk/wp-admin/admin-ajax.php</a></li>
<li><a href="#trunkwpadminincludestemplatephp">trunk/wp-admin/includes/template.php</a></li>
<li><a href="#trunkwpadminjsmediadevjs">trunk/wp-admin/js/media.dev.js</a></li>
<li><a href="#trunkwpadminjsmediajs">trunk/wp-admin/js/media.js</a></li>
<li><a href="#trunkwpincludesscriptloaderphp">trunk/wp-includes/script-loader.php</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkwpadminadminajaxphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/admin-ajax.php (14868 => 14869)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/admin-ajax.php        2010-05-25 01:43:07 UTC (rev 14868)
+++ trunk/wp-admin/admin-ajax.php        2010-05-25 02:18:07 UTC (rev 14869)
</span><span class="lines">@@ -1254,7 +1254,11 @@
</span><span class="cx">         if ( empty($_POST['ps']) )
</span><span class="cx">                 exit;
</span><span class="cx">
</span><del>-        $what = isset($_POST['pages']) ? 'page' : 'post';
</del><ins>+        if ( !empty($_POST['post_type']) && in_array( $_POST['post_type'], get_post_types() ) )
+                $what = $_POST['post_type'];
+        else
+                $what = 'post';
+
</ins><span class="cx">         $s = stripslashes($_POST['ps']);
</span><span class="cx">         preg_match_all('/".*?("|$)|((?<=[\\s",+])|^)[^\\s",+]+/', $s, $matches);
</span><span class="cx">         $search_terms = array_map('_search_terms_tidy', $matches[0]);
</span><span class="lines">@@ -1271,8 +1275,10 @@
</span><span class="cx">
</span><span class="cx">         $posts = $wpdb->get_results( "SELECT ID, post_title, post_status, post_date FROM $wpdb->posts WHERE post_type = '$what' AND post_status IN ('draft', 'publish') AND ($search) ORDER BY post_date_gmt DESC LIMIT 50" );
</span><span class="cx">
</span><del>-        if ( ! $posts )
-                exit( __('No posts found.') );
</del><ins>+        if ( ! $posts ) {
+                $posttype = get_post_type_object($what);
+                exit($posttype->labels->not_found);
+        }
</ins><span class="cx">
</span><span class="cx">         $html = '<table class="widefat" cellspacing="0"><thead><tr><th class="found-radio"><br /></th><th>'.__('Title').'</th><th>'.__('Date').'</th><th>'.__('Status').'</th></tr></thead><tbody>';
</span><span class="cx">         foreach ( $posts as $post ) {
</span></span></pre></div>
<a id="trunkwpadminincludestemplatephp"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/includes/template.php (14868 => 14869)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/includes/template.php        2010-05-25 01:43:07 UTC (rev 14868)
+++ trunk/wp-admin/includes/template.php        2010-05-25 02:18:07 UTC (rev 14869)
</span><span class="lines">@@ -3275,10 +3275,16 @@
</span><span class="cx">                                 <input type="text" id="find-posts-input" name="ps" value="" />
</span><span class="cx">                                 <input type="button" onclick="findPosts.send();" value="<?php esc_attr_e( 'Search' ); ?>" class="button" /><br />
</span><span class="cx">
</span><del>-                                <input type="radio" name="find-posts-what" id="find-posts-posts" checked="checked" value="posts" />
-                                <label for="find-posts-posts"><?php _e( 'Posts' ); ?></label>
-                                <input type="radio" name="find-posts-what" id="find-posts-pages" value="pages" />
-                                <label for="find-posts-pages"><?php _e( 'Pages' ); ?></label>
</del><ins>+                                <?php
+                                $post_types = get_post_types( array('public' => true), 'objects' );
+                                foreach ( $post_types as $post ) {
+                                        if ( 'attachment' == $post->name )
+                                                continue;
+                                ?>
+                                <input type="radio" name="find-posts-what" id="find-posts-<?php echo esc_attr($post->name); ?>" value="<?php echo esc_attr($post->name); ?>" <?php checked($post->name, 'post'); ?> />
+                                <label for="find-posts-<?php echo esc_attr($post->name); ?>"><?php echo $post->label; ?></label>
+                                <?php
+                                } ?>
</ins><span class="cx">                         </div>
</span><span class="cx">                         <div id="find-posts-response"></div>
</span><span class="cx">                 </div>
</span></span></pre></div>
<a id="trunkwpadminjsmediadevjs"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/js/media.dev.js (14868 => 14869)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/js/media.dev.js        2010-05-25 01:43:07 UTC (rev 14868)
+++ trunk/wp-admin/js/media.dev.js        2010-05-25 02:18:07 UTC (rev 14869)
</span><span class="lines">@@ -31,11 +31,10 @@
</span><span class="cx">                                 _ajax_nonce: $('#_ajax_nonce').val()
</span><span class="cx">                         };
</span><span class="cx">
</span><del>-                        if ( $('#find-posts-pages').is(':checked') ) {
-                                post['pages'] = 1;
-                        } else {
-                                post['posts'] = 1;
-                        }
</del><ins>+                        var selectedItem;
+                        $("input[@name='itemSelect[]']:checked").each(function() { selectedItem = $(this).val() });
+                        post['post_type'] = selectedItem;
+
</ins><span class="cx">                         $.ajax({
</span><span class="cx">                                 type : 'POST',
</span><span class="cx">                                 url : ajaxurl,
</span></span></pre></div>
<a id="trunkwpadminjsmediajs"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/js/media.js (14868 => 14869)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/js/media.js        2010-05-25 01:43:07 UTC (rev 14868)
+++ trunk/wp-admin/js/media.js        2010-05-25 02:18:07 UTC (rev 14869)
</span><span class="lines">@@ -1 +1 @@
</span><del>-var findPosts;(function(a){findPosts={open:function(d,c){var b=document.documentElement.scrollTop||a(document).scrollTop();if(d&&c){a("#affected").attr("name",d).val(c)}a("#find-posts").show().draggable({handle:"#find-posts-head"}).css({top:b+50+"px",left:"50%",marginLeft:"-250px"});a("#find-posts-input").focus().keyup(function(f){if(f.which==27){findPosts.close()}});return false},close:function(){a("#find-posts-response").html("");a("#find-posts").draggable("destroy").hide()},send:function(){var b={ps:a("#find-posts-input").val(),action:"find_posts",_ajax_nonce:a("#_ajax_nonce").val()};if(a("#find-posts-pages").is(":checked")){b.pages=1}else{b.posts=1}a.ajax({type:"POST",url:ajaxurl,data:b,success:function(c){findPosts.show(c)},error:function(c){findPosts.error(c)}})},show:function(b){if(typeof(b)=="string"){this.error({responseText:b});return}var c=wpAjax.parseAjaxResponse(b);if(c.errors){this.error({responseText:wpAjax.broken})}c=c.responses[0];a("#find-posts-response").html(c.data)},error:function(b){var c=b.statusText;if(b.responseText){c=b.responseText.replace(/<.[^<>]*?>/g,"")}if(c){a("#find-posts-response").html(c)}}};a(document).ready(function(){a("#find-posts-submit").click(function(b){if(""==a("#find-posts-response").html()){b.preventDefault()}});a("#doaction, #doaction2").click(function(b){a('select[name^="action"]').each(function(){if(a(this).val()=="attach"){b.preventDefault();findPosts.open()}})})})})(jQuery);
</del><span class="cx">\ No newline at end of file
</span><ins>+var findPosts;(function(a){findPosts={open:function(d,c){var b=document.documentElement.scrollTop||a(document).scrollTop();if(d&&c){a("#affected").attr("name",d).val(c)}a("#find-posts").show().draggable({handle:"#find-posts-head"}).css({top:b+50+"px",left:"50%",marginLeft:"-250px"});a("#find-posts-input").focus().keyup(function(f){if(f.which==27){findPosts.close()}});return false},close:function(){a("#find-posts-response").html("");a("#find-posts").draggable("destroy").hide()},send:function(){var b={ps:a("#find-posts-input").val(),action:"find_posts",_ajax_nonce:a("#_ajax_nonce").val()};var c;a("input[@name='itemSelect[]']:checked").each(function(){c=a(this).val()});b.post_type=c;a.ajax({type:"POST",url:ajaxurl,data:b,success:function(d){findPosts.show(d)},error:function(d){findPosts.error(d)}})},show:function(b){if(typeof(b)=="string"){this.error({responseText:b});return}var c=wpAjax.parseAjaxResponse(b);if(c.errors){this.error({responseText:wpAjax.broken})}c=c.responses[0];a("#find-posts-response").html(c.data)},error:function(b){var c=b.statusText;if(b.responseText){c=b.responseText.replace(/<.[^<>]*?>/g,"")}if(c){a("#find-posts-response").html(c)}}};a(document).ready(function(){a("#find-posts-submit").click(function(b){if(""==a("#find-posts-response").html()){b.preventDefault()}});a("#doaction, #doaction2").click(function(b){a('select[name^="action"]').each(function(){if(a(this).val()=="attach"){b.preventDefault();findPosts.open()}})})})})(jQuery);
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkwpincludesscriptloaderphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/script-loader.php (14868 => 14869)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/script-loader.php        2010-05-25 01:43:07 UTC (rev 14868)
+++ trunk/wp-includes/script-loader.php        2010-05-25 02:18:07 UTC (rev 14869)
</span><span class="lines">@@ -369,7 +369,7 @@
</span><span class="cx">
</span><span class="cx">                 $scripts->add( 'list-revisions', "/wp-includes/js/wp-list-revisions$suffix.js", null, '20091223' );
</span><span class="cx">
</span><del>-                $scripts->add( 'media', "/wp-admin/js/media$suffix.js", array( 'jquery-ui-draggable' ), '20090415' );
</del><ins>+                $scripts->add( 'media', "/wp-admin/js/media$suffix.js", array( 'jquery-ui-draggable' ), '20100524' );
</ins><span class="cx">                 $scripts->add_data( 'media', 'group', 1 );
</span><span class="cx">
</span><span class="cx">                 $scripts->add( 'image-edit', "/wp-admin/js/image-edit$suffix.js", array('jquery', 'json2', 'imgareaselect'), '20091111' );
</span></span></pre>
</div>
</div>
</body>
</html>