0

I am working on a custom module to create a form. Functionality of the module is as follows: The first form has an url, on clicking the url it should show another form as a pop-up. How can i call these forms in the hook menu. Does tools_js has any significance?

<?php

function patient_menu() {


$items['patient_add/mainpage'] = array(
    'title' => 'New Patient',
    'page callback' => 'patient_form',
    'page arguments' => array(),
    'access callback' => 'user_is_logged_in',
    'type' => MENU_CALLBACK,
);
//a link to add patient diseases

$items['patient_add/%ctools_js'] = array(
'page callback' => 'patient_callback',
'page arguments' => array(1),
'access callback' => 'user_is_logged_in',
'type' => MENU_CALLBACK,
);

return $items;
}

 // a function to make a  link
function _patient_make_link($link_text = '') {

 return '<div id="patient">' . l($link_text, 'patient_add/nojs', array('attributes' => array('class' => 'ctools-use-modal'))) . '</div>';
}
//first form

function patient_form($form, &$form_state)  {
ctools_include('modal');
ctools_modal_add_js();    

$form['p_name'] = array(
    '#type' => 'textfield',
    '#title' => t('Name'), 
    '#size' => 30, 
    '#maxlength' => 128, 
    '#required' => TRUE,
);

$form['age'] = array(
    '#type' => 'textfield',
    '#title' => t('Age'), 
    '#size' => 30, 
    '#maxlength' => 30, 
    '#required' => TRUE,
    '#attributes' => array('placeholder' => t( 'in Years' )),
);


$form['submit'] = array(
    '#value' => t('Add Patient'),
    '#type' => 'submit',
);

_patient_make_link('add disease details');

return $form;

}

//Ajax menu callback

function patient_callback($ajax) {
if ($ajax) {
ctools_include('ajax');
ctools_include('modal');

$form_state = array(
  'ajax' => TRUE,
  'title' => t('disease details'),
);
$output = ctools_modal_form_wrapper('disease_form', $form_state);
if (!empty($form_state['ajax_commands'])) {
  $output = $form_state['ajax_commands'];
}
print ajax_render($output);
drupal_exit();
}
 else {
  return drupal_get_form('disease_form');
  }
}
//second form
function disease_form($form, $form_state){
  $form['disease_ids'] = array(
    '#type' => 'select',
    '#title' => t('Disease IDs'),
    '#multiple' => TRUE,
    '#options' => array(
        'Cancer' => 'Cancer',
        'Dengu' => 'Dengu',
        'Viral Fever' => 'Viral Fever',
        'Malaria' => 'Malaria',
    ), 
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
);
return $form;

}


function patient_form_submit($form, &$form_state) {}
0

You are partial on the right path, I would suggest following a guide like https://www.deeson.co.uk/labs/insert-form-pop-modal-ctools-and-drupal-7 and then work your way towards what you need based on that.

  • I am working with two forms. In the above example they are working with only one form. – ana Aug 11 '16 at 12:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.