<div class="gmail_quote"><div>Hi,</div><div><br></div><div>I was working on this module where I needed to change the submit actions of a submit button, after the submit action of another button. Let us say, I have two submit buttons, sb1 and sb2:</div>


<div><br></div><div><div>$form[&#39;sb1&#39;] = array(</div><div>    &#39;#type&#39; =&gt; &#39;submit&#39;,</div><div>    &#39;#value&#39; =&gt; t(&#39;sb1&#39;),</div><div>    &#39;#submit&#39; =&gt; array(&#39;test_module_sb1_submit&#39;),    </div>


<div>  );</div><div><br></div><div><div>$form[&#39;sb2&#39;] = array(</div><div>    &#39;#type&#39; =&gt; &#39;submit&#39;,</div><div>    &#39;#value&#39; =&gt; t(&#39;sb2&#39;),</div><div>    &#39;#submit&#39; =&gt; array(&#39;test_module_sb2_submit&#39;),    </div>


<div>  );</div><div>  </div><div>  $form[&#39;sb2&#39;][&#39;#ahah&#39;] = array(</div><div>      &#39;path&#39; =&gt; &#39;test_module/js&#39;,</div><div>      &#39;wrapper&#39; =&gt; &#39;test_module_replace&#39;,</div>


<div>      &#39;effect&#39; =&gt; &#39;fade&#39;,</div><div>    );</div><div><br></div><div><br></div><div>Now when sb1 is submitted and form is rebuild, I am changing the submit actions of sb2 to these, </div><div><br></div>


<div><div>$form[&#39;sb2&#39;] = array(</div><div>    &#39;#type&#39; =&gt; &#39;submit&#39;,</div><div>    &#39;#value&#39; =&gt; t(&#39;sb2&#39;),</div><div>    &#39;#submit&#39; =&gt; array(&#39;test_module_sb2_change_submit&#39;),    </div>


<div>  );</div><div>  </div><div>  $form[&#39;sb2&#39;][&#39;#ahah&#39;] = array(</div><div>      &#39;path&#39; =&gt; &#39;test_module_change/js&#39;,</div><div>      &#39;wrapper&#39; =&gt; &#39;test_module_replace&#39;,</div>


<div>      &#39;effect&#39; =&gt; &#39;fade&#39;,</div><div>    );</div><div><br></div><div>The submit function is successfully changed to &#39;test_module_sb2_change_submit&#39;, but the &#39;#ahah&#39; property of &#39;sb2&#39; remains the same. Is this the expected behavior or a bug? I could not find any documentation on this. How this can be achieved? How this can be achieved if the first button &#39;sb1&#39; is also &#39;ahah&#39; processed?</div>


<div><br></div><div>Thanks, I am attaching the test code for quick look on what I expect and what I get.</div><div><br></div><div>test_module.module</div><div>------------------------------</div><div>
<div><br></div><div>function test_module_menu() {</div><div><br></div><div>$items = array();</div><div><br></div><div>$items[&#39;test&#39;] = array(</div><div>    &#39;title&#39; =&gt; &#39;Test form resubmit&#39;,</div>


<div>    &#39;page callback&#39; =&gt; &#39;drupal_get_form&#39;,</div><div>    &#39;page arguments&#39; =&gt; array(&#39;test_module_test&#39;),</div><div>    &#39;access arguments&#39; =&gt; FALSE,</div><div>    &#39;type&#39; =&gt; MENU_CALLBACK,</div>


<div>  );</div><div>$items[&#39;test_module/js&#39;] = array(</div><div>    &#39;title&#39; =&gt; &#39;Ahah submit&#39;,</div><div>    &#39;page callback&#39; =&gt; &#39;test_module_js&#39;,</div><div>    &#39;access callback&#39; =&gt; &#39;_test_module_access_js&#39;,</div>


<div>    &#39;access arguments&#39; =&gt; FALSE,</div><div>    &#39;type&#39; =&gt; MENU_CALLBACK,</div><div>  );</div><div>  </div><div>  $items[&#39;test_module_change/js&#39;] = array(</div><div>    &#39;title&#39; =&gt; &#39;Ahah submit&#39;,</div>


<div>    &#39;page callback&#39; =&gt; &#39;test_module_change_js&#39;,</div><div>    &#39;access callback&#39; =&gt; &#39;_test_module_access_js&#39;,</div><div>    &#39;access arguments&#39; =&gt; FALSE,</div><div>    &#39;type&#39; =&gt; MENU_CALLBACK,</div>


<div>  );</div><div>  return $items;</div><div>}</div><div><br></div><div>function _test_module_access_js() {</div><div>    return TRUE;</div><div>}</div><div><br></div><div>function test_module_test(&amp;$form_state) {</div>


<div><br></div><div>    $form[&#39;sb1&#39;] = array(</div><div>    &#39;#type&#39; =&gt; &#39;submit&#39;,</div><div>    &#39;#value&#39; =&gt; t(&#39;SB1&#39;),</div><div>    &#39;#submit&#39; =&gt; array(&#39;test_module_sb1_submit&#39;),    </div>


<div>  );</div><div>  </div><div>  $form[&#39;val&#39;] = array(&#39;#value&#39; =&gt; &#39;&lt;div id=&quot;test_module_replace&quot;&gt; This is it &lt;/div&gt;&#39;);</div><div>  </div><div>   $form[&#39;sb2&#39;] = array(</div>


<div>    &#39;#type&#39; =&gt; &#39;submit&#39;,</div><div>    &#39;#value&#39; =&gt; t(&#39;SB2&#39;),</div><div>    &#39;#submit&#39; =&gt; array(&#39;test_module_sb2_submit&#39;),    </div><div>  );</div><div>  </div>

<div>
  $form[&#39;sb2&#39;][&#39;#ahah&#39;] = array(</div><div>      &#39;path&#39; =&gt; &#39;test_module/js&#39;,</div><div>      &#39;wrapper&#39; =&gt; &#39;test_module_replace&#39;,</div><div>      &#39;effect&#39; =&gt; &#39;fade&#39;,</div>


<div>    );</div><div>    </div><div>    if($form_state[&#39;resub&#39;]) {</div><div>    </div><div>    $form[&#39;sb2&#39;] = array(</div><div>    &#39;#type&#39; =&gt; &#39;submit&#39;,</div><div>    &#39;#value&#39; =&gt; t(&#39;SB2&#39;),</div>


<div>    &#39;#submit&#39; =&gt; array(&#39;test_module_sb2_change_submit&#39;),    </div><div>  );</div><div>  </div><div>  $form[&#39;sb2&#39;][&#39;#ahah&#39;] = array(</div><div>      &#39;path&#39; =&gt; &#39;test_module_change/js&#39;,</div>


<div>      &#39;wrapper&#39; =&gt; &#39;test_module_replace&#39;,</div><div>      &#39;effect&#39; =&gt; &#39;fade&#39;,</div><div>    );</div><div>    </div><div>    }</div><div>    </div><div>    return $form;</div><div>


    </div><div>    </div><div>    </div><div>}</div><div><br></div><div>function test_module_sb1_submit(&amp;$form, &amp;$form_state) {</div><div>$form_state[&#39;rebuild&#39;] = TRUE;</div><div>$form_state[&#39;resub&#39;] = TRUE;</div>


<div>}</div><div><br></div><div>function test_module_sb2_submit(&amp;$form, &amp;$form_state) {</div><div>drupal_set_message(t(&quot;In submit 1&quot;));</div><div>}</div><div><br></div><div>function test_module_sb2_change_submit(&amp;$form, &amp;$form_state) {</div>


<div>drupal_set_message(t(&quot;changed to submit 2&quot;));</div><div>}</div><div><br></div><div><br></div><div>function test_module_js() {</div><div><br></div><div> $form_state = array(&#39;storage&#39; =&gt; NULL, &#39;submitted&#39; =&gt; FALSE);</div>


<div> $form_build_id = $_POST[&#39;form_build_id&#39;];</div><div> $form = form_get_cache($form_build_id, $form_state);</div><div> $form_state[&#39;post&#39;] = $form[&#39;#post&#39;] = $_POST;</div><div> $form[&#39;#programmed&#39;] = $form[&#39;#redirect&#39;] = FALSE;</div>


<div> $args = $form[&#39;#parameters&#39;];</div><div> $form_id = array_shift($args);</div><div> drupal_process_form($form_id, $form, $form_state);</div><div> $form = drupal_rebuild_form($form_id, $form_state, $args, $form_build_id);</div>


<div> //Get HTML for the replacement form. Only these elements will be AHAH-refreshed.</div><div> $new_form = array();</div><div> </div><div> $new_form[&#39;element&#39;] = array(&#39;#value&#39; =&gt; &quot;Addition by submit 1&quot;);</div>


<div>    $output = theme(&#39;status_messages&#39;) . drupal_render($new_form);</div><div>    //Return the results.</div><div>    drupal_json(array(&#39;status&#39; =&gt; TRUE, &#39;data&#39; =&gt; $output));</div><div><br>


</div><div>}</div><div>function test_module_change_js() {</div><div><br></div><div> $form_state = array(&#39;storage&#39; =&gt; NULL, &#39;submitted&#39; =&gt; FALSE);</div><div> $form_build_id = $_POST[&#39;form_build_id&#39;];</div>


<div> $form = form_get_cache($form_build_id, $form_state);</div><div> $form_state[&#39;post&#39;] = $form[&#39;#post&#39;] = $_POST;</div><div> $form[&#39;#programmed&#39;] = $form[&#39;#redirect&#39;] = FALSE;</div><div>


 $args = $form[&#39;#parameters&#39;];</div><div> $form_id = array_shift($args);</div><div> drupal_process_form($form_id, $form, $form_state);</div><div> $form = drupal_rebuild_form($form_id, $form_state, $args, $form_build_id);</div>


<div> //Get HTML for the replacement form. Only these elements will be AHAH-refreshed.</div><div> $new_form = array();</div><div> </div><div> $new_form[&#39;element&#39;] = array(&#39;#value&#39; =&gt; &quot;Never gets added&quot;);</div>


<div>    $output = theme(&#39;status_messages&#39;) . drupal_render($new_form);</div><div>    //Return the results.</div><div>    drupal_json(array(&#39;status&#39; =&gt; TRUE, &#39;data&#39; =&gt; $output));</div><div><br>


</div><div>}</div><div><br></div><div><a href="http://test_module.info" target="_blank">test_module.info</a></div><div>-----------------------</div><div><br></div><div><div>name = &quot;test module&quot;</div><div>core = 6.x</div>

<div><br>
</div></div></div></div></div></div><br clear="all">--<br>Regards,<br>Nitin Kumar Gupta<br><a href="http://publicmind.in/blog/" target="_blank">http://publicmind.in/blog/</a><br>
</div><br>