Progress on room location definition forms

This commit is contained in:
2014-11-26 12:13:22 +11:00
parent fe5060179b
commit 9c0189d43f
2 changed files with 41 additions and 13 deletions

View File

@@ -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', "<pre>Loading node query output:\n@info</pre>", array('@info' => print_r( $result, true)));
watchdog('booking', "<pre>Loading node query output:\n@info</pre>", 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("<h2>Room Allocation</h2><p>!link</p>",
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));

View File

@@ -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("<p>Manually assign/update room allocation for !first !last.<br /></p>",
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;
}