From 9c0189d43feb9ce03f54ec86cb2023a4560847ad Mon Sep 17 00:00:00 2001 From: Nathan Coad Date: Wed, 26 Nov 2014 12:13:22 +1100 Subject: [PATCH] Progress on room location definition forms --- booking.register.inc | 11 +++++++---- booking.rooms.inc | 43 ++++++++++++++++++++++++++++++++++--------- 2 files changed, 41 insertions(+), 13 deletions(-) diff --git a/booking.register.inc b/booking.register.inc index 416ed36..ef1b2a6 100644 --- a/booking.register.inc +++ b/booking.register.inc @@ -1236,6 +1236,7 @@ function booking_load_query($node_ids = NULL, $fetchAssoc = FALSE) { $query->leftJoin('booking_room_mapping', 'rm', 'p.nid = rm.booking_nodeid'); $query->leftJoin('booking_room_definition', 'r', 'rm.booking_roomid = r.rid'); + $query->leftJoin('booking_room_locations', 'l', 'l.lid = r.booking_room_location_id'); } //add the joins to flatten out study groups into columns @@ -1266,7 +1267,8 @@ function booking_load_query($node_ids = NULL, $fetchAssoc = FALSE) if (variable_get('booking_enable_roomallocations', 0) == 1) { $query->fields('rm', array('booking_room_bedtype')) - ->fields('r', array('rid', 'booking_room_location_id', 'booking_room_number')); + ->fields('r', array('rid', 'booking_room_location_id', 'booking_room_number')) + ->fields('l'); } //now add the study group fields if applicable @@ -1294,7 +1296,7 @@ function booking_load_query($node_ids = NULL, $fetchAssoc = FALSE) $result = $query->execute(); } - //watchdog('booking', "
Loading node query output:\n@info
", array('@info' => print_r( $result, true))); + watchdog('booking', "
Loading node query output:\n@info
", array('@info' => print_r( $result, true))); return $result; } @@ -1940,10 +1942,11 @@ function booking_view($node, $view_mode) { if (variable_get('booking_enable_roomallocations', 0) == 1) { $room_heading = t("

Room Allocation

!link

", - array('!link' => l(t('Edit Room Allocation'), t('admin/booking/!id/edit-room', array('!id' => $node->nid))) + array('!link' => l(t('Edit Room Allocation'), t('admin/booking/!id/edit-room', array('!id' => $node->nid)), array('query' => drupal_get_destination()) ) )); $room_rows = array(); - $room_rows[] = array(t('Room Location'), _booking_room_location_lookup($node->booking_room_location_id)); + //$room_rows[] = array(t('Room Location'), _booking_room_location_lookup($node->booking_room_location_id)); + $room_rows[] = array(t('Room Location'), $node->booking_roomlocation_descrip); $room_rows[] = array(t('Room Number'), $node->booking_room_number); $room_rows[] = array(t('Bed Type'), _booking_room_bedtype_lookup($node->booking_room_bedtype)); diff --git a/booking.rooms.inc b/booking.rooms.inc index b0d0157..7e517a4 100644 --- a/booking.rooms.inc +++ b/booking.rooms.inc @@ -66,18 +66,21 @@ function booking_roomallocations_view_summary() { $query = db_select('booking_person', 'p'); $query->leftJoin('booking_room_mapping', 'm', 'm.booking_nodeid = p.nid'); $query->leftJoin('booking_room_definition', 'r', 'r.rid = m.booking_roomid'); + $query->leftJoin('booking_room_locations', 'l', 'l.lid = r.booking_room_location_id'); $db_and = db_and(); $db_and->condition('p.booking_event_id', $event->eid, '='); $db_and->condition('p.booking_status', 1, '='); $query->condition($db_and); - $query->fields('p')->fields('m')->fields('r'); + $query->fields('p')->fields('m')->fields('r')->fields('l'); $table_sort = $query->extend('TableSort')->orderbyHeader($header); $result = $table_sort->execute(); foreach($result as $data) { - $location_link = $data->booking_room_location_id > 0 ? _booking_room_location_lookup($data->booking_room_location_id) . - l(t(' (Edit)'), t('admin/booking/rooms/!id/assign', array('!id' => $data->booking_room_location_id))) : ''; + //$location_link = $data->booking_room_location_id > 0 ? _booking_room_location_lookup($data->booking_room_location_id) . + // l(t(' (Edit)'), t('admin/booking/rooms/!id/assign', array('!id' => $data->booking_room_location_id))) : ''; + $location_link = $data->booking_room_location_id > 0 ? $data->booking_roomlocation_descrip . + l(t(' (Edit)'), t('admin/booking/rooms/!id/assign', array('!id' => $data->booking_room_location_id)), array('query' => drupal_get_destination()) ) : ''; $rows[] = array ( 'data' => array( @@ -90,7 +93,7 @@ function booking_roomallocations_view_summary() { $location_link, $data->booking_room_number, _booking_room_bedtype_lookup($data->booking_room_bedtype), - l(t('Change Room'), t('admin/booking/!id/edit-room', array('!id' => $data->nid))), + l( t('Change Room'), t('admin/booking/!id/edit-room', array('!id' => $data->nid)), array('query' => drupal_get_destination()) ), ), ); } @@ -123,6 +126,8 @@ function booking_room_edit_form($node, &$form_state, $nid) { $form = array(); $room_options = array(); + $location_options = array(); + $location_options[] = "--"; //verify that $nid is a number if (! preg_match('/^[0-9]+$/', $nid)) { @@ -148,6 +153,13 @@ function booking_room_edit_form($node, &$form_state, $nid) { //person must exist in database, load all the bits $person = node_load($nid); + + //load the room locations + $locations_query = db_query("SELECT * FROM {booking_room_locations} where booking_roomlocation_active='Y'"); + foreach($locations_query as $row) + { + $location_options[$row->lid] = $row->booking_roomlocation_descrip; + } $prefix = t("

Manually assign/update room allocation for !first !last.

", array('!first' => $person->booking_firstname, '!last' => $person->booking_lastname)); @@ -164,7 +176,7 @@ function booking_room_edit_form($node, &$form_state, $nid) { $form['booking_room_location_id'] = array( '#type' => 'select', '#title' => t('Room Location'), - '#options' => _booking_room_location_lookup(), + '#options' => $location_options, '#default_value' => $person->booking_room_location_id, '#ajax' => array( 'event' => 'change', @@ -244,9 +256,11 @@ function booking_bedtype_ajax_callback($form, $form_state) { */ function _booking_get_roomedit_roomnum_options($selected) { $room_options = array(); - + $room_options[] = "--"; + $room_query = db_query("SELECT * FROM {booking_room_definition} WHERE booking_room_location_id = :lid", array(':lid' => $selected)); + foreach($room_query as $room) { $room_options[$room->booking_room_number] = $room->booking_room_number; @@ -264,7 +278,7 @@ function _booking_get_roomedit_roomnum_options($selected) { */ function _booking_get_roomedit_bedtype_options($location_id, $room_num) { $bed_options = array(); - $bed_options[] = ""; + $bed_options[] = "--"; $details = db_query("SELECT * FROM {booking_room_definition} WHERE booking_room_location_id = :lid AND booking_room_number = :num", array(':lid' => $location_id, ':num' => $room_num))->fetchObject(); @@ -311,6 +325,14 @@ function booking_room_edit_form_validate($form, &$form_state) { } else { + if (!isset($values['booking_room_location_id']) || !isset($values['booking_room_number']) || !isset($values['booking_room_bedtype'])) + { + form_set_error('form', + t('Invalid configuration detected. Please ensure a room location, room number and bed type are all set.') + ); + return; + } + //get the specific room definition from the database $details = db_query("SELECT * FROM {booking_room_definition} WHERE booking_room_location_id = :lid AND booking_room_number = :num", array(':lid' => $values['booking_room_location_id'], ':num' => $values['booking_room_number']))->fetchObject(); @@ -339,6 +361,7 @@ function booking_room_edit_form_validate($form, &$form_state) { function booking_room_edit_form_submit($form, &$form_state) { global $event; $values = $form_state['input']; + $redirect_path = "admin/config/booking/rooms"; //check if we should remove the room allocation if ($form_state['values']['op'] == 'Remove') @@ -355,7 +378,8 @@ function booking_room_edit_form_submit($form, &$form_state) { ->condition('booking_nodeid', $values['personid']) ->execute(); - return; + + //return; } //otherwise, continue with adding/updating the room allocation else @@ -409,7 +433,8 @@ function booking_room_edit_form_submit($form, &$form_state) { drupal_set_message($message, 'status', FALSE); } //end operation check - + + $form_state['redirect'] = $redirect_path; }