Hi,

Thank you for this easy to use module. I'd like to a for a way to auto close the modal on user submition if the form doesn't have errors. Can you please provide some advise?

I have search in the web and I get to the ctools_modal_command_dismiss() function but I'm not sure where to put it.

Thank you

Julian

Comments

Hi

I have found a solution, it needs this code change in the ctools_automodal.module line 127 function ctools_automodal_get_form:

$commands = ctools_modal_form_wrapper($form_id, $form_state);
    if ($form_state['executed']) {
      $commands = array(ctools_modal_command_dismiss());
    }else {
    if (empty($commands)) {
      $commands[] = ctools_modal_command_loading();
      if (!empty($_GET['destination'])) {
        $commands[] = ctools_ajax_command_redirect($_GET['destination']);
      }
    }
    }

Please let me know you comments. The other posibility is in the submition function for the form add a form_state['command'] array variable that allows to control wether to close the modal or maintain the user there for further user operations.

Let me know your comments

Julian Mancera

Status:Active» Needs work

Hi julianmancera

Unfortunately it does not work for me, form still stays open when submit after applying changes.

I tested it putting this code inside an implementation of hook_menu_alter:

<?php
$items
['node/add/article']['modal'] = TRUE;
?>

That's the core node add form.

I was trying it on an (almost) clean installation.

Actually, it seems to work if form is not an administrative form. I created a custom form and it worked, but I don't know if that would be part of this issue, because I noticed that administrative forms on modal windows behave quite strange.

EDIT: If you allow other users to use that modal administrative form (in my case that means allowing anonymous to add articles), when submit an ajax error happens http://d.pr/i/IjA9

Issue summary:View changes

There is no need for that, you are using it wrong You can do it all with form rebuild and ctools_modal_command_dismiss(); and ajax_render, I also added $commands[] = ctools_ajax_command_redirect(''); so you redirect when you submited a form to a page you want.

function custom_form($form, &$form_state)
{
$form = array();
  $form['something'] = array(
    '#type' => 'textfield',
    '#title' => t('Enter'),
  );
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Submit'),
  );
if ( $form_state['submitted']){
        $commands[] = ctools_modal_command_dismiss();
         $commands[] = ctools_ajax_command_redirect('<front>');
    print ajax_render($commands);
    exit;
}
  return $form;
}
function custom_form_submit(&$form, &$form_state) {
  $form_state['rebuild'] = TRUE;
}

Status:Needs work» Fixed

Status:Fixed» Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.