From e2b3b2abcb641df6eabc3e0fbb9b8ff3f2e5c969 Mon Sep 17 00:00:00 2001 From: Nathan Coad Date: Fri, 4 Oct 2013 00:00:04 +1000 Subject: [PATCH] Form for adding variety session to timeslot --- booking.module | 36 ++++++++++++--- booking.variety.inc | 105 ++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 127 insertions(+), 14 deletions(-) diff --git a/booking.module b/booking.module index 0f7f9c7..a64b6b3 100644 --- a/booking.module +++ b/booking.module @@ -310,23 +310,49 @@ function booking_menu() { ); $items['admin/config/booking/variety/create'] = array( - 'title' => 'Add New Variety Session', - 'description' => 'Add variety session for the Booking module', + 'title' => 'Add New Variety Session Timeslot', + 'description' => 'Add variety session timeslot for the Booking module', 'page callback' => 'drupal_get_form', //'page arguments' => array('booking_price_create'), - 'page arguments' => array('booking_variety_form', true), + 'page arguments' => array('booking_variety_timeslot_form', true), 'access arguments' => array('access administration pages'), 'type' => MENU_LOCAL_ACTION, ); $items['admin/config/booking/variety/%/edit'] = array( - 'title' => 'Edit Variety Session', + 'title' => 'Edit Variety Session Timeslot', 'page callback' => 'drupal_get_form', - 'page arguments' => array('booking_variety_form', false, 4), + 'page arguments' => array('booking_variety_timeslot_form', false, 4), 'access arguments' => array('access administration pages'), 'type' => MENU_CALLBACK, ); + + $items['admin/config/booking/variety/%/session/list'] = array( + 'title' => 'List Variety Sessions', + 'description' => 'List variety sessions for the specified timeslot', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('booking_variety_list_session_form', 4), + 'access arguments' => array('access administration pages'), + 'type' => MENU_CALLBACK, + ); + + $items['admin/config/booking/variety/%/session/create'] = array( + 'title' => 'Add New Variety Session', + 'description' => 'Add variety session to the specified timeslot', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('booking_variety_create_session_form', 4), + 'access arguments' => array('access administration pages'), + 'type' => MENU_CALLBACK, + ); + $items['admin/config/booking/variety/%/session/edit'] = array( + 'title' => 'Edit Variety Session', + 'description' => 'Edit variety session for the specified timeslot', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('booking_variety_edit_session_form', 4), + 'access arguments' => array('access administration pages'), + 'type' => MENU_CALLBACK, + ); //the paypal IPN $items[BOOKING_PAYPAL_IPN_PATH] = array( diff --git a/booking.variety.inc b/booking.variety.inc index 49fa524..ca8abe9 100644 --- a/booking.variety.inc +++ b/booking.variety.inc @@ -13,16 +13,18 @@ function booking_variety_admin() // tabledrag example http://dropbucket.org/node/204 $form = array (); $options = array (); - $prefix = t("

!link

", - array ('!link' => l('Add New Event', 'admin/config/booking/variety/create'))); + //$prefix = t("

!link

", + // array ('!link' => l('Add New Variety Timeslot', 'admin/config/booking/variety/create'))); $header = array ( 'tid' => t('Event ID'), 'booking_variety_time_descrip' => t('Description'), 'booking_variety_status' => t('Status'), - 'booking_variety_start' => t('Session Start'), - 'booking_variety_end' => t('Session End'), - 'booking_edit' => t('Edit event'), + 'booking_variety_start' => t('Timeslot Start'), + 'booking_variety_end' => t('Timeslot End'), + 'variety_edit' => t('Edit Timeslot'), + 'variety_session_list' => t('List Sessions'), + 'variety_session_add' => t('Add Session'), ); $result = db_query("SELECT * from {booking_variety_times}"); @@ -36,7 +38,9 @@ function booking_variety_admin() 'booking_variety_status' => $data->booking_variety_status, 'booking_variety_start' => date("Y-m-d H:i", $data->booking_variety_start), 'booking_variety_end' => date("Y-m-d H:i", $data->booking_variety_end), - 'booking_edit' => l('Edit', t('admin/config/booking/variety/!tid/edit', array('!tid' => $data->tid))), + 'variety_edit' => l('Edit Timeslot', t('admin/config/booking/variety/!tid/edit', array('!tid' => $data->tid))), + 'variety_session_list' => l('List Sessions', t('admin/config/booking/variety/!tid/session/list', array('!tid' => $data->tid))), + 'variety_session_add' => l('Add Session', t('admin/config/booking/variety/!tid/session/create', array('!tid' => $data->tid))), ); } @@ -75,7 +79,7 @@ function booking_variety_admin_submit($form, &$form_state) } -function booking_variety_form($node, &$form_state, $create, $editid = 0) +function booking_variety_timeslot_form($node, &$form_state, $create, $editid = 0) { global $event; $form = array (); @@ -110,7 +114,7 @@ function booking_variety_form($node, &$form_state, $create, $editid = 0) $form['booking_variety_time_descrip'] = array ( '#type' => 'textfield', - '#title' => t('The name of this variety session'), + '#title' => t('The name of this variety session timeslot'), '#size' => 60, '#maxlength' => 150, '#required' => TRUE, @@ -170,7 +174,7 @@ function booking_variety_form($node, &$form_state, $create, $editid = 0) ); } -function booking_variety_form_submit($form, &$form_state) { +function booking_variety_timeslot_form_submit($form, &$form_state) { global $event; $values = $form_state['input']; @@ -223,5 +227,88 @@ function booking_variety_form_submit($form, &$form_state) { ->execute(); } + $form_state['redirect'] = array('admin/config/booking/variety'); +} + +function booking_variety_create_session_form($node, &$form_state, $editid = 0) +{ + global $event; + $form = array (); + $prefix = "

Add a new variety session to the specified variety session timeslot for the bookings module.

"; + $data = $node; + + //verify that $editid is a number + if (! preg_match('/^[0-9]+$/', $editid)) { + drupal_set_message("Error: Invalid variety ID supplied. Unable to update variety session information.", 'error', FALSE); + drupal_goto('admin/config/booking/variety'); + return ""; + } + + $data = db_select ('booking_variety_times', 'v') + ->condition('v.tid', $editid, '=') + ->fields('v') + ->execute() + ->fetchObject(); + + //add this to the form in a hidden field so we can update the right event + $form['tid'] = array ( + '#type' => 'hidden', + '#value' => $editid, + ); + + $form['booking_variety_descrip'] = array ( + '#type' => 'textfield', + '#title' => t('The name of the variety session to add to this timeslot'), + '#size' => 60, + '#maxlength' => 150, + '#required' => TRUE, + '#default_value' => !empty($data->booking_variety_descrip) ? $data->booking_variety_descrip : '', + ); + + $form['booking_variety_status'] = array( + '#type' => 'checkbox', + '#title' => t('Make this variety session active?'), + '#default_value' => !empty($data->booking_variety_status) ? $data->booking_variety_status : '', + ); + + $form['booking_variety_maxsize'] = array ( + '#type' => 'textfield', + '#title' => t('The maximum number of people permitted in this variety session'), + '#size' => 5, + '#maxlength' => 5, + '#required' => TRUE, + '#default_value' => !empty($data->booking_variety_maxsize) ? $data->booking_variety_maxsize : '0', + ); + + $form['submit'] = array + ( + '#type' => 'submit', + '#value' => t('Create'), + ); + + return array ( + 'first_para' => array ( + '#type' => 'markup', + '#markup' => $prefix, + ), + 'form' => $form, + ); +} + +function booking_variety_create_session_form_submit($form, &$form_state) { + global $event; + $values = $form_state['input']; + + db_insert('booking_variety_options') + ->fields(array( + 'booking_eventid' => $event->eid, + 'booking_variety_timeslot_id' => $values['tid'], + 'booking_variety_status' => $values['booking_variety_status'] == 1 ? 1 : 0, + 'booking_variety_descrip' => $values['booking_variety_descrip'], + 'booking_variety_maxsize' => $values['booking_variety_maxsize'], + 'booking_variety_regncount' => 0, + )) + ->execute(); + $form_state['redirect'] = array('admin/config/booking/variety'); } \ No newline at end of file