<!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']) &amp;&amp; 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('/&quot;.*?(&quot;|$)|((?&lt;=[\\s&quot;,+])|^)[^\\s&quot;,+]+/', $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-&gt;get_results( &quot;SELECT ID, post_title, post_status, post_date FROM $wpdb-&gt;posts WHERE post_type = '$what' AND post_status IN ('draft', 'publish') AND ($search) ORDER BY post_date_gmt DESC LIMIT 50&quot; );
</span><span class="cx"> 
</span><del>-        if ( ! $posts )
-                exit( __('No posts found.') );
</del><ins>+        if ( ! $posts ) {
+                $posttype = get_post_type_object($what);
+                exit($posttype-&gt;labels-&gt;not_found);
+        }
</ins><span class="cx"> 
</span><span class="cx">         $html = '&lt;table class=&quot;widefat&quot; cellspacing=&quot;0&quot;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class=&quot;found-radio&quot;&gt;&lt;br /&gt;&lt;/th&gt;&lt;th&gt;'.__('Title').'&lt;/th&gt;&lt;th&gt;'.__('Date').'&lt;/th&gt;&lt;th&gt;'.__('Status').'&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;';
</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">                                 &lt;input type=&quot;text&quot; id=&quot;find-posts-input&quot; name=&quot;ps&quot; value=&quot;&quot; /&gt;
</span><span class="cx">                                 &lt;input type=&quot;button&quot; onclick=&quot;findPosts.send();&quot; value=&quot;&lt;?php esc_attr_e( 'Search' ); ?&gt;&quot; class=&quot;button&quot; /&gt;&lt;br /&gt;
</span><span class="cx"> 
</span><del>-                                &lt;input type=&quot;radio&quot; name=&quot;find-posts-what&quot; id=&quot;find-posts-posts&quot; checked=&quot;checked&quot; value=&quot;posts&quot; /&gt;
-                                &lt;label for=&quot;find-posts-posts&quot;&gt;&lt;?php _e( 'Posts' ); ?&gt;&lt;/label&gt;
-                                &lt;input type=&quot;radio&quot; name=&quot;find-posts-what&quot; id=&quot;find-posts-pages&quot; value=&quot;pages&quot; /&gt;
-                                &lt;label for=&quot;find-posts-pages&quot;&gt;&lt;?php _e( 'Pages' ); ?&gt;&lt;/label&gt;
</del><ins>+                                &lt;?php
+                                $post_types = get_post_types( array('public' =&gt; true), 'objects' );
+                                foreach ( $post_types as $post ) {
+                                        if ( 'attachment' == $post-&gt;name )
+                                                continue;
+                                ?&gt;
+                                &lt;input type=&quot;radio&quot; name=&quot;find-posts-what&quot; id=&quot;find-posts-&lt;?php echo esc_attr($post-&gt;name); ?&gt;&quot; value=&quot;&lt;?php echo esc_attr($post-&gt;name); ?&gt;&quot; &lt;?php checked($post-&gt;name,  'post'); ?&gt; /&gt;
+                                &lt;label for=&quot;find-posts-&lt;?php echo esc_attr($post-&gt;name); ?&gt;&quot;&gt;&lt;?php echo $post-&gt;label; ?&gt;&lt;/label&gt;
+                                &lt;?php
+                                } ?&gt;
</ins><span class="cx">                         &lt;/div&gt;
</span><span class="cx">                         &lt;div id=&quot;find-posts-response&quot;&gt;&lt;/div&gt;
</span><span class="cx">                 &lt;/div&gt;
</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;
+                        $(&quot;input[@name='itemSelect[]']:checked&quot;).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&amp;&amp;c){a(&quot;#affected&quot;).attr(&quot;name&quot;,d).val(c)}a(&quot;#find-posts&quot;).show().draggable({handle:&quot;#find-posts-head&quot;}).css({top:b+50+&quot;px&quot;,left:&quot;50%&quot;,marginLeft:&quot;-250px&quot;});a(&quot;#find-posts-input&quot;).focus().keyup(function(f){if(f.which==27){findPosts.close()}});return false},close:function(){a(&quot;#find-posts-response&quot;).html(&quot;&quot;);a(&quot;#find-posts&quot;).draggable(&quot;destroy&quot;).hide()},send:function(){var b={ps:a(&quot;#find-posts-input&quot;).val(),action:&quot;find_posts&quot;,_ajax_nonce:a(&quot;#_ajax_nonce&quot;).val()};if(a(&quot;#find-posts-pages&quot;).is(&quot;:checked&quot;)){b.pages=1}else{b.posts=1}a.ajax({type:&quot;POST&quot;,url:ajaxurl,data:b,success:function(c){findPosts.show(c)},error:function(c){findPosts.error(c)}})},show:function(b){if(typeof(b)==&quot;string&quot;){this.error({responseText:b});return}var c=wpAjax.parseAjaxResponse(b);if(c.errors){this.error({responseText:wpAjax.broken})}c=c.responses[0];a(&quot;#find-posts-response&quot;).html(c.data)},error:function(b){var c=b.statusText;if(b.responseText){c=b.responseText.replace(/&lt;.[^&lt;&gt;]*?&gt;/g,&quot;&quot;)}if(c){a(&quot;#find-posts-response&quot;).html(c)}}};a(document).ready(function(){a(&quot;#find-posts-submit&quot;).click(function(b){if(&quot;&quot;==a(&quot;#find-posts-response&quot;).html()){b.preventDefault()}});a(&quot;#doaction, #doaction2&quot;).click(function(b){a('select[name^=&quot;action&quot;]').each(function(){if(a(this).val()==&quot;attach&quot;){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&amp;&amp;c){a(&quot;#affected&quot;).attr(&quot;name&quot;,d).val(c)}a(&quot;#find-posts&quot;).show().draggable({handle:&quot;#find-posts-head&quot;}).css({top:b+50+&quot;px&quot;,left:&quot;50%&quot;,marginLeft:&quot;-250px&quot;});a(&quot;#find-posts-input&quot;).focus().keyup(function(f){if(f.which==27){findPosts.close()}});return false},close:function(){a(&quot;#find-posts-response&quot;).html(&quot;&quot;);a(&quot;#find-posts&quot;).draggable(&quot;destroy&quot;).hide()},send:function(){var b={ps:a(&quot;#find-posts-input&quot;).val(),action:&quot;find_posts&quot;,_ajax_nonce:a(&quot;#_ajax_nonce&quot;).val()};var c;a(&quot;input[@name='itemSelect[]']:checked&quot;).each(function(){c=a(this).val()});b.post_type=c;a.ajax({type:&quot;POST&quot;,url:ajaxurl,data:b,success:function(d){findPosts.show(d)},error:function(d){findPosts.error(d)}})},show:function(b){if(typeof(b)==&quot;string&quot;){this.error({responseText:b});return}var c=wpAjax.parseAjaxResponse(b);if(c.errors){this.error({responseText:wpAjax.broken})}c=c.responses[0];a(&quot;#find-posts-response&quot;).html(c.data)},error:function(b){var c=b.statusText;if(b.responseText){c=b.responseText.replace(/&lt;.[^&lt;&gt;]*?&gt;/g,&quot;&quot;)}if(c){a(&quot;#find-posts-response&quot;).html(c)}}};a(document).ready(function(){a(&quot;#find-posts-submit&quot;).click(function(b){if(&quot;&quot;==a(&quot;#find-posts-response&quot;).html()){b.preventDefault()}});a(&quot;#doaction, #doaction2&quot;).click(function(b){a('select[name^=&quot;action&quot;]').each(function(){if(a(this).val()==&quot;attach&quot;){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-&gt;add( 'list-revisions', &quot;/wp-includes/js/wp-list-revisions$suffix.js&quot;, null, '20091223' );
</span><span class="cx"> 
</span><del>-                $scripts-&gt;add( 'media', &quot;/wp-admin/js/media$suffix.js&quot;, array( 'jquery-ui-draggable' ), '20090415' );
</del><ins>+                $scripts-&gt;add( 'media', &quot;/wp-admin/js/media$suffix.js&quot;, array( 'jquery-ui-draggable' ), '20100524' );
</ins><span class="cx">                 $scripts-&gt;add_data( 'media', 'group', 1 );
</span><span class="cx"> 
</span><span class="cx">                 $scripts-&gt;add( 'image-edit', &quot;/wp-admin/js/image-edit$suffix.js&quot;, array('jquery', 'json2', 'imgareaselect'), '20091111' );
</span></span></pre>
</div>
</div>

</body>
</html>