Posted by Merlin on Fri Sep 4, 2009 12:27 am.
Slides: http://www.slideshare.net/merlinofchaos/the-chaos-tools-suite
This is the modal test module. You can create the .info file that goes with it.
<?php
/**
* Implementation of hook_menu().
*/
function modal_test_menu() {
$items = array();
$items['modal_test'] = array(
'title' => 'Modal test',
'access callback' => TRUE,
'page callback' => 'modal_test_page',
);
$items['modal_test/form'] = array(
'title' => 'AJAX modal dialog',
'access callback' => TRUE,
'page callback' => 'modal_test_popup',
'type' => MENU_CALLBACK,
);
return $items;
}
function modal_test_page() {
ctools_include('ajax'); // Module include the dependence it needs for ajax.
ctools_include('modal');
ctools_modal_add_js();
$output = ctools_modal_text_button(t('Click Here'), 'modal_test/form', t('Pop me up'));
$output .= '<div id="modal-message"> </div>';
ctools_include('plugins');
return $output;
}
function modal_test_popup() {
ctools_include('ajax');
ctools_include('modal');
$form_state = array('ajax' => TRUE);
$output = ctools_modal_form_wrapper('module_test_form', $form_state);
if (!$output) {
$output = array();
$output[] = ctools_ajax_command_replace('#modal-message', '<div id="modal-message">' . $form_state['message'] . '</div>');
$output[] = ctools_modal_command_dismiss();
}
ctools_ajax_render($output);
}
function module_test_form(&$form_state) {
$form['text'] = array(
'#type' => 'textfield',
'#title' => t('Text'),
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
);
return $form;
}
function module_test_form_submit(&$form, &$form_state) {
$form_state['message'] = t('Message: %message', array('%message' => $form_state['values']['text']));
}
?>
CTools session at Drupalcon
Thanks Earl,
I was just about to dive in the CTools code after the session and the Panels BOF later on when you tweeted this post.
Great stuff.
TUc
Exportables
Great presentation but a pity you didn't manage to show example exportable usage.
hi there How do you
hi there
How do you implement that code
Hi Merlin, Thanks for your
Hi Merlin,
Thanks for your great work, True Ajax helper (so as panels and forms wizards, and...) was really missing in D6 !!
I was wondering how forms generated by ctools_modal_form_wrapper and rendered by ctools_ajax_render($output) could by themed ?
How can I mix html and ctools forms as output of the callback to build more complicated page structure without mix logic and template ?
keep movin' and Happy New Year !!!
They are normal forms. They
They are normal forms. They can be themed by creating a theme_FORM_ID function (and registering it in your hook_theme so it can be found).
Thanks for responding me
Thanks for responding me !
That's true but, as far as i know, i can't pass $form_values as an argument of my theming function, so how could i build a complex rendering in function of some values...
( In fact I would like to pass some argument in my form's building function but this isn't possible with ctools_modal_form_wrapper(), I could pass these arguments in the $form_values but what for if my theming function isn't aware of them ...)
Have you any clues ?
-forgive my bad english-
Ctools Form Wizard for Adding Nodes
Hi Merlin,
Thanks for all your incredible work.
Can the Ctools Form Wizard be used to create custom content types (nodes)?
Multistep form
I like the concept of your multistep form - caching an object. It meets one of the shortcomings of Drupal 6.
Is there some means of customising the buttons - i.e. changing the default names?
Post new comment