<!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>[14815] trunk:
  Ensure that QuickPress media uploads get attached to the auto-draft we create for new posts correctly
 .</title>
</head>
<body>

<div id="msg">
<dl>
<dt>Revision</dt> <dd><a href="http://trac.wordpress.org/changeset/14815">14815</a></dd>
<dt>Author</dt> <dd>westi</dd>
<dt>Date</dt> <dd>2010-05-23 07:58:06 +0000 (Sun, 23 May 2010)</dd>
</dl>

<h3>Log Message</h3>
<pre>Ensure that QuickPress media uploads get attached to the auto-draft we create for new posts correctly. Fixes <a href="http://trac.wordpress.org/ticket/10917">#10917</a> props ocean90.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkwpadminincludesdashboardphp">trunk/wp-admin/includes/dashboard.php</a></li>
<li><a href="#trunkwpadminindexextraphp">trunk/wp-admin/index-extra.php</a></li>
<li><a href="#trunkwpadminjsdashboarddevjs">trunk/wp-admin/js/dashboard.dev.js</a></li>
<li><a href="#trunkwpadminjsdashboardjs">trunk/wp-admin/js/dashboard.js</a></li>
<li><a href="#trunkwpadminpostphp">trunk/wp-admin/post.php</a></li>
<li><a href="#trunkwpincludesscriptloaderphp">trunk/wp-includes/script-loader.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkwpadminincludesdashboardphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/includes/dashboard.php (14814 => 14815)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/includes/dashboard.php        2010-05-23 07:49:21 UTC (rev 14814)
+++ trunk/wp-admin/includes/dashboard.php        2010-05-23 07:58:06 UTC (rev 14815)
</span><span class="lines">@@ -383,18 +383,20 @@
</span><span class="cx">         do_action( 'activity_box_end' );
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-function wp_dashboard_quick_press() {
</del><ins>+function wp_dashboard_quick_press_output() {
+        global $post_ID;
+
</ins><span class="cx">         $drafts = false;
</span><span class="cx">         if ( 'post' === strtolower( $_SERVER['REQUEST_METHOD'] ) &amp;&amp; isset( $_POST['action'] ) &amp;&amp; 0 === strpos( $_POST['action'], 'post-quickpress' ) &amp;&amp; (int) $_POST['post_ID'] ) {
</span><span class="cx">                 $view = get_permalink( $_POST['post_ID'] );
</span><span class="cx">                 $edit = esc_url( get_edit_post_link( $_POST['post_ID'] ) );
</span><span class="cx">                 if ( 'post-quickpress-publish' == $_POST['action'] ) {
</span><span class="cx">                         if ( current_user_can('publish_posts') )
</span><del>-                                printf( '&lt;div class=&quot;message&quot;&gt;&lt;p&gt;' . __( 'Post Published. &lt;a href=&quot;%s&quot;&gt;View post&lt;/a&gt; | &lt;a href=&quot;%s&quot;&gt;Edit post&lt;/a&gt;' ) . '&lt;/p&gt;&lt;/div&gt;', esc_url( $view ), $edit );
</del><ins>+                                printf( '&lt;div class=&quot;updated&quot;&gt;&lt;p&gt;' . __( 'Post published. &lt;a href=&quot;%s&quot;&gt;View post&lt;/a&gt; | &lt;a href=&quot;%s&quot;&gt;Edit post&lt;/a&gt;' ) . '&lt;/p&gt;&lt;/div&gt;', esc_url( $view ), $edit );
</ins><span class="cx">                         else
</span><del>-                                printf( '&lt;div class=&quot;message&quot;&gt;&lt;p&gt;' . __( 'Post submitted. &lt;a href=&quot;%s&quot;&gt;Preview post&lt;/a&gt; | &lt;a href=&quot;%s&quot;&gt;Edit post&lt;/a&gt;' ) . '&lt;/p&gt;&lt;/div&gt;', esc_url( add_query_arg( 'preview', 1, $view ) ), $edit );
</del><ins>+                                printf( '&lt;div class=&quot;updated&quot;&gt;&lt;p&gt;' . __( 'Post submitted. &lt;a href=&quot;%s&quot;&gt;Preview post&lt;/a&gt; | &lt;a href=&quot;%s&quot;&gt;Edit post&lt;/a&gt;' ) . '&lt;/p&gt;&lt;/div&gt;', esc_url( add_query_arg( 'preview', 1, $view ) ), $edit );
</ins><span class="cx">                 } else {
</span><del>-                        printf( '&lt;div class=&quot;message&quot;&gt;&lt;p&gt;' . __( 'Draft Saved. &lt;a href=&quot;%s&quot;&gt;Preview post&lt;/a&gt; | &lt;a href=&quot;%s&quot;&gt;Edit post&lt;/a&gt;' ) . '&lt;/p&gt;&lt;/div&gt;', esc_url( add_query_arg( 'preview', 1, $view ) ), $edit );
</del><ins>+                        printf( '&lt;div class=&quot;updated&quot;&gt;&lt;p&gt;' . __( 'Draft saved. &lt;a href=&quot;%s&quot;&gt;Preview post&lt;/a&gt; | &lt;a href=&quot;%s&quot;&gt;Edit post&lt;/a&gt;' ) . '&lt;/p&gt;&lt;/div&gt;', esc_url( add_query_arg( 'preview', 1, $view ) ), $edit );
</ins><span class="cx">                         $drafts_query = new WP_Query( array(
</span><span class="cx">                                 'post_type' =&gt; 'post',
</span><span class="cx">                                 'post_status' =&gt; 'draft',
</span><span class="lines">@@ -407,11 +409,26 @@
</span><span class="cx">                         if ( $drafts_query-&gt;posts )
</span><span class="cx">                                 $drafts =&amp; $drafts_query-&gt;posts;
</span><span class="cx">                 }
</span><del>-                printf('&lt;p class=&quot;textright&quot;&gt;' . __('You can also try %s, easy blogging from anywhere on the Web.') . '&lt;/p&gt;', '&lt;a href=&quot;tools.php&quot;&gt;' . __('Press This') . '&lt;/a&gt;' );
</del><ins>+                printf('&lt;p class=&quot;textright&quot;&gt;' . __('You can also try %s, easy blogging from anywhere on the Web.') . '&lt;/p&gt;', '&lt;a href=&quot;' . esc_url( admin_url( 'tools.php' ) ) . '&quot;&gt;' . __('Press This') . '&lt;/a&gt;' );
</ins><span class="cx">                 $_REQUEST = array(); // hack for get_default_post_to_edit()
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        $post = get_default_post_to_edit();
</del><ins>+        /* Check if a new auto-draft (= no new post_ID) is needed or if the old can be used */
+        $last_post_id = (int) get_user_option( 'dashboard_quick_press_last_post_id' ); // Get the last post_ID
+        if ( $last_post_id ) {
+                $post = get_post( $last_post_id );
+                if ( empty( $post ) || $post-&gt;post_status != 'auto-draft' ) { // auto-draft doesn't exists anymore
+                        $post = get_default_post_to_edit('post', true);
+                        update_user_option( (int) $GLOBALS['current_user']-&gt;ID, 'dashboard_quick_press_last_post_id', (int) $post-&gt;ID ); // Save post_ID
+                } else {
+                        $post-&gt;post_title = ''; // Remove the auto draft title
+                }
+        } else {
+                $post = get_default_post_to_edit('post', true);
+                update_user_option( (int) $GLOBALS['current_user']-&gt;ID, 'dashboard_quick_press_last_post_id', (int) $post-&gt;ID ); // Save post_ID
+        }
+
+        $post_ID = (int) $post-&gt;ID;
</ins><span class="cx"> ?&gt;
</span><span class="cx"> 
</span><span class="cx">         &lt;form name=&quot;post&quot; action=&quot;&lt;?php echo esc_url( admin_url( 'post.php' ) ); ?&gt;&quot; method=&quot;post&quot; id=&quot;quick-press&quot;&gt;
</span><span class="lines">@@ -440,7 +457,7 @@
</span><span class="cx"> 
</span><span class="cx">                 &lt;p class=&quot;submit&quot;&gt;
</span><span class="cx">                         &lt;input type=&quot;hidden&quot; name=&quot;action&quot; id=&quot;quickpost-action&quot; value=&quot;post-quickpress-save&quot; /&gt;
</span><del>-                        &lt;input type=&quot;hidden&quot; name=&quot;quickpress_post_ID&quot; value=&quot;&lt;?php echo (int) $post-&gt;ID; ?&gt;&quot; /&gt;
</del><ins>+                        &lt;input type=&quot;hidden&quot; name=&quot;quickpress_post_ID&quot; value=&quot;&lt;?php echo $post_ID; ?&gt;&quot; /&gt;
</ins><span class="cx">                         &lt;input type=&quot;hidden&quot; name=&quot;post_type&quot; value=&quot;post&quot; /&gt;
</span><span class="cx">                         &lt;?php wp_nonce_field('add-post'); ?&gt;
</span><span class="cx">                         &lt;input type=&quot;submit&quot; name=&quot;save&quot; id=&quot;save-post&quot; class=&quot;button&quot; tabindex=&quot;4&quot; value=&quot;&lt;?php esc_attr_e('Save Draft'); ?&gt;&quot; /&gt;
</span><span class="lines">@@ -459,6 +476,10 @@
</span><span class="cx">                 wp_dashboard_recent_drafts( $drafts );
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+function wp_dashboard_quick_press() {
+        echo '&lt;p class=&quot;widget-loading hide-if-no-js&quot;&gt;' . __( 'Loading&amp;#8230;' ) . '&lt;/p&gt;&lt;p class=&quot;describe hide-if-js&quot;&gt;' . __('This widget requires JavaScript.') . '&lt;/p&gt;';
+}
+
</ins><span class="cx"> function wp_dashboard_recent_drafts( $drafts = false ) {
</span><span class="cx">         if ( !$drafts ) {
</span><span class="cx">                 $drafts_query = new WP_Query( array(
</span></span></pre></div>
<a id="trunkwpadminindexextraphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/index-extra.php (14814 => 14815)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/index-extra.php        2010-05-23 07:49:21 UTC (rev 14814)
+++ trunk/wp-admin/index-extra.php        2010-05-23 07:58:06 UTC (rev 14815)
</span><span class="lines">@@ -32,6 +32,10 @@
</span><span class="cx"> case 'dashboard_plugins' :
</span><span class="cx">         wp_dashboard_plugins_output();
</span><span class="cx">         break;
</span><ins>+        
+case 'dashboard_quick_press' :
+        wp_dashboard_quick_press_output();
+        break;
</ins><span class="cx"> 
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkwpadminjsdashboarddevjs"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/js/dashboard.dev.js (14814 => 14815)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/js/dashboard.dev.js        2010-05-23 07:49:21 UTC (rev 14814)
+++ trunk/wp-admin/js/dashboard.dev.js        2010-05-23 07:58:06 UTC (rev 14815)
</span><span class="lines">@@ -6,7 +6,8 @@
</span><span class="cx">                 'dashboard_incoming_links',
</span><span class="cx">                 'dashboard_primary',
</span><span class="cx">                 'dashboard_secondary',
</span><del>-                'dashboard_plugins'
</del><ins>+                'dashboard_plugins',
+                'dashboard_quick_press'
</ins><span class="cx">         ];
</span><span class="cx"> 
</span><span class="cx">         ajaxPopulateWidgets = function(el) {
</span><span class="lines">@@ -20,6 +21,10 @@
</span><span class="cx">                                                         $(this).css('display', '');
</span><span class="cx">                                                         if ( 'dashboard_plugins' == id &amp;&amp; $.isFunction(tb_init) )
</span><span class="cx">                                                                 tb_init('#dashboard_plugins a.thickbox');
</span><ins>+                                                        if ( 'dashboard_quick_press' == id &amp;&amp; $.isFunction(tb_init) ) {
+                                                                tb_init('#dashboard_quick_press a.thickbox');
+                                                                quickPressLoad();
+                                                        }
</ins><span class="cx">                                                 });
</span><span class="cx">                                         });
</span><span class="cx">                                 }, i * 500 );
</span><span class="lines">@@ -53,6 +58,7 @@
</span><span class="cx">                         $('#dashboard_quick_press div.inside').load( t.attr( 'action' ), t.serializeArray(), function() {
</span><span class="cx">                                 $('#dashboard_quick_press #publishing-action img.waiting').css('visibility', 'hidden');
</span><span class="cx">                                 $('#quick-press .submit input[type=&quot;submit&quot;], #quick-press .submit input[type=&quot;reset&quot;]').attr('disabled','');
</span><ins>+                                $('#dashboard_quick_press ul').next('p').remove();
</ins><span class="cx">                                 $('#dashboard_quick_press ul').find('li').each( function() {
</span><span class="cx">                                         $('#dashboard_recent_drafts ul').prepend( this );
</span><span class="cx">                                 } ).end().remove();
</span><span class="lines">@@ -65,6 +71,5 @@
</span><span class="cx">                 $('#publish').click( function() { act.val( 'post-quickpress-publish' ); } );
</span><span class="cx"> 
</span><span class="cx">         };
</span><del>-        quickPressLoad();
</del><span class="cx"> 
</span><span class="cx"> } );
</span></span></pre></div>
<a id="trunkwpadminjsdashboardjs"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/js/dashboard.js (14814 => 14815)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/js/dashboard.js        2010-05-23 07:49:21 UTC (rev 14814)
+++ trunk/wp-admin/js/dashboard.js        2010-05-23 07:58:06 UTC (rev 14815)
</span><span class="lines">@@ -1 +1 @@
</span><del>-var ajaxWidgets,ajaxPopulateWidgets,quickPressLoad;jQuery(document).ready(function(a){ajaxWidgets=[&quot;dashboard_incoming_links&quot;,&quot;dashboard_primary&quot;,&quot;dashboard_secondary&quot;,&quot;dashboard_plugins&quot;];ajaxPopulateWidgets=function(b){show=function(g,c){var f,d=a(&quot;#&quot;+g+&quot; div.inside:visible&quot;).find(&quot;.widget-loading&quot;);if(d.length){f=d.parent();setTimeout(function(){f.load(&quot;index-extra.php?jax=&quot;+g,&quot;&quot;,function(){f.hide().slideDown(&quot;normal&quot;,function(){a(this).css(&quot;display&quot;,&quot;&quot;);if(&quot;dashboard_plugins&quot;==g&amp;&amp;a.isFunction(tb_init)){tb_init(&quot;#dashboard_plugins a.thickbox&quot;)}})})},c*500)}};if(b){b=b.toString();if(a.inArray(b,ajaxWidgets)!=-1){show(b,0)}}else{a.each(ajaxWidgets,function(c){show(this,c)})}};ajaxPopulateWidgets();postboxes.add_postbox_toggles(&quot;dashboard&quot;,{pbshow:ajaxPopulateWidgets});quickPressLoad=function(){var b=a(&quot;#quickpost-action&quot;),c;c=a(&quot;#quick-press&quot;).submit(function(){a(&quot;#dashboard_quick_press #publishing-action img.waiting&quot;).css(&quot;visibility&quot;,&quot;visible&quot;);a('#quick-press .submit input[type=&quot;submit&quot;], #quick-press .submit input[type=&quot;reset&quot;]').attr(&quot;disabled&quot;,&quot;disabled&quot;);if(&quot;post&quot;==b.val()){b.val(&quot;post-quickpress-publish&quot;)}a(&quot;#dashboard_quick_press div.inside&quot;).load(c.attr(&quot;action&quot;),c.serializeArray(),function(){a(&quot;#dashboard_quick_press #publishing-action img.waiting&quot;).css(&quot;visibility&quot;,&quot;hidden&quot;);a('#quick-press .submit input[type=&quot;submit&quot;], #quick-press .submit input[type=&quot;reset&quot;]').attr(&quot;disabled&quot;,&quot;&quot;);a(&quot;#dashboard_quick_press ul&quot;).find(&quot;li&quot;).each(function(){a(&quot;#dashboard_recent_drafts ul&quot;).prepend(this)}).end().remove();tb_init(&quot;a.thickbox&quot;);quickPressLoad()});return false});a(&quot;#publish&quot;).click(function(){b.val(&quot;post-quickpress-publish&quot;)})};quickPressLoad()});
</del><span class="cx">\ No newline at end of file
</span><ins>+var ajaxWidgets,ajaxPopulateWidgets,quickPressLoad;jQuery(document).ready(function(a){ajaxWidgets=[&quot;dashboard_incoming_links&quot;,&quot;dashboard_primary&quot;,&quot;dashboard_secondary&quot;,&quot;dashboard_plugins&quot;,&quot;dashboard_quick_press&quot;];ajaxPopulateWidgets=function(b){show=function(g,c){var f,d=a(&quot;#&quot;+g+&quot; div.inside:visible&quot;).find(&quot;.widget-loading&quot;);if(d.length){f=d.parent();setTimeout(function(){f.load(&quot;index-extra.php?jax=&quot;+g,&quot;&quot;,function(){f.hide().slideDown(&quot;normal&quot;,function(){a(this).css(&quot;display&quot;,&quot;&quot;);if(&quot;dashboard_plugins&quot;==g&amp;&amp;a.isFunction(tb_init)){tb_init(&quot;#dashboard_plugins a.thickbox&quot;)}if(&quot;dashboard_quick_press&quot;==g&amp;&amp;a.isFunction(tb_init)){tb_init(&quot;#dashboard_quick_press a.thickbox&quot;);quickPressLoad()}})})},c*500)}};if(b){b=b.toString();if(a.inArray(b,ajaxWidgets)!=-1){show(b,0)}}else{a.each(ajaxWidgets,function(c){show(this,c)})}};ajaxPopulateWidgets();postboxes.add_postbox_toggles(&quot;dashboard&quot;,{pbshow:ajaxPopulateWidgets});quickPressLoad=function(){var b=a(&quot;#quickpost-action&quot;),c;c=a(&quot;#quick-press&quot;).submit(function(){a(&quot;#dashboard_quick_press #publishing-action img.waiting&quot;).css(&quot;visibility&quot;,&quot;visible&quot;);a('#quick-press .submit input[type=&quot;submit&quot;], #quick-press .submit input[type=&quot;reset&quot;]').attr(&quot;disabled&quot;,&quot;disabled&quot;);if(&quot;post&quot;==b.val()){b.val(&quot;post-quickpress-publish&quot;)}a(&quot;#dashboard_quick_press div.inside&quot;).load(c.attr(&quot;action&quot;),c.serializeArray(),function(){a(&quot;#dashboard_quick_press #publishing-action img.waiting&quot;).css(&quot;visibility&quot;,&quot;hidden&quot;);a('#quick-press .submit input[type=&quot;submit&quot;], #quick-press .submit input[type=&quot;reset&quot;]').attr(&quot;disabled&quot;,&quot;&quot;);a(&quot;#dashboard_quick_press ul&quot;).next(&quot;p&quot;).remove();a(&quot;#dashboard_quick_press ul&quot;).find(&quot;li&quot;).each(function(){a(&quot;#dashboard_recent_drafts ul&quot;).prepend(this)}).end().remove();tb_init(&quot;a.thickbox&quot;);quickPressLoad()});return false});a(&quot;#publish&quot;).click(function(){b.val(&quot;post-quickpress-publish&quot;)})}});
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkwpadminpostphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/post.php (14814 => 14815)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/post.php        2010-05-23 07:49:21 UTC (rev 14814)
+++ trunk/wp-admin/post.php        2010-05-23 07:58:06 UTC (rev 14815)
</span><span class="lines">@@ -131,7 +131,7 @@
</span><span class="cx">                 $_POST['post_ID'] = $post_id;
</span><span class="cx">                 // output the quickpress dashboard widget
</span><span class="cx">                 require_once(ABSPATH . 'wp-admin/includes/dashboard.php');
</span><del>-                wp_dashboard_quick_press();
</del><ins>+                wp_dashboard_quick_press_output();
</ins><span class="cx">                 exit;
</span><span class="cx">         }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkwpincludesscriptloaderphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/script-loader.php (14814 => 14815)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/script-loader.php        2010-05-23 07:49:21 UTC (rev 14814)
+++ trunk/wp-includes/script-loader.php        2010-05-23 07:58:06 UTC (rev 14815)
</span><span class="lines">@@ -360,7 +360,7 @@
</span><span class="cx"> 
</span><span class="cx">                 $scripts-&gt;add( 'farbtastic', '/wp-admin/js/farbtastic.js', array('jquery'), '1.2' );
</span><span class="cx"> 
</span><del>-                $scripts-&gt;add( 'dashboard', &quot;/wp-admin/js/dashboard$suffix.js&quot;, array( 'jquery', 'admin-comments', 'postbox' ), '20100213' );
</del><ins>+                $scripts-&gt;add( 'dashboard', &quot;/wp-admin/js/dashboard$suffix.js&quot;, array( 'jquery', 'admin-comments', 'postbox' ), '20100523' );
</ins><span class="cx">                 $scripts-&gt;add_data( 'dashboard', 'group', 1 );
</span><span class="cx"> 
</span><span class="cx">                 $scripts-&gt;add( 'hoverIntent', &quot;/wp-includes/js/hoverIntent$suffix.js&quot;, array('jquery'), '20090102' );
</span></span></pre>
</div>
</div>

</body>
</html>