From b92eb64e6270a7494a201fab6f248385fbabcc7e Mon Sep 17 00:00:00 2001 From: Steven Marsden Date: Wed, 4 Feb 2015 16:44:16 -0500 Subject: [PATCH] Interface updates --- .gitignore | 9 +- application/controllers/booking.php | 8 +- application/libraries/Calendar.php | 6 +- application/models/booking_model.php | 16 ++ application/views/booking/booking_main.php | 113 +++++---- application/views/denied.php | 15 ++ application/views/email/booking_ics.php | 12 +- assets/css/booking_main.css | 257 +++++++++++++++++---- assets/img/Book-Room-Icon1.png | Bin 0 -> 3888 bytes assets/img/Book-Room-Icon10.png | Bin 0 -> 1455 bytes assets/img/Book-Room-Icon11.png | Bin 0 -> 1500 bytes assets/img/Book-Room-Icon12.png | Bin 0 -> 1368 bytes assets/img/Book-Room-Icon13.png | Bin 0 -> 1529 bytes assets/img/Book-Room-Icon14.png | Bin 0 -> 1337 bytes assets/img/Book-Room-Icon15.png | Bin 0 -> 568 bytes assets/img/Book-Room-Icon16.png | Bin 0 -> 317 bytes assets/img/Book-Room-Icon2.png | Bin 0 -> 1249 bytes assets/img/Book-Room-Icon3.png | Bin 0 -> 1341 bytes assets/img/Book-Room-Icon4.png | Bin 0 -> 1260 bytes assets/img/Book-Room-Icon5.png | Bin 0 -> 1246 bytes assets/img/Book-Room-Icon6.png | Bin 0 -> 1317 bytes assets/img/Book-Room-Icon7.png | Bin 0 -> 1458 bytes assets/img/Book-Room-Icon8.png | Bin 0 -> 1465 bytes assets/img/Book-Room-Icon9.png | Bin 0 -> 1346 bytes assets/js/booking_main.js | 4 + temp/README.txt | 3 + 26 files changed, 336 insertions(+), 107 deletions(-) create mode 100644 application/views/denied.php create mode 100644 assets/img/Book-Room-Icon1.png create mode 100644 assets/img/Book-Room-Icon10.png create mode 100644 assets/img/Book-Room-Icon11.png create mode 100644 assets/img/Book-Room-Icon12.png create mode 100644 assets/img/Book-Room-Icon13.png create mode 100644 assets/img/Book-Room-Icon14.png create mode 100644 assets/img/Book-Room-Icon15.png create mode 100644 assets/img/Book-Room-Icon16.png create mode 100644 assets/img/Book-Room-Icon2.png create mode 100644 assets/img/Book-Room-Icon3.png create mode 100644 assets/img/Book-Room-Icon4.png create mode 100644 assets/img/Book-Room-Icon5.png create mode 100644 assets/img/Book-Room-Icon6.png create mode 100644 assets/img/Book-Room-Icon7.png create mode 100644 assets/img/Book-Room-Icon8.png create mode 100644 assets/img/Book-Room-Icon9.png create mode 100644 temp/README.txt diff --git a/.gitignore b/.gitignore index 397e699..6486ae1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ -application/cache/* -application/logs/* -cache* -temp* \ No newline at end of file +/application/cache/* +/application/logs/* +/cache/* +/temp/* +!/temp/README.txt \ No newline at end of file diff --git a/application/controllers/booking.php b/application/controllers/booking.php index 068adf7..8a53701 100644 --- a/application/controllers/booking.php +++ b/application/controllers/booking.php @@ -15,10 +15,7 @@ class Booking extends CI_Controller { //$this->template->load(template, view, vars) function Booking(){ parent::__construct(); - - //TEMP - - + //Check for existing login if(!strlen($this->session->userdata('username')) > 0){ $this->session->set_flashdata('origin', current_url()); @@ -176,6 +173,8 @@ function submit(){ $this->email->message($email_content); $this->email->attach('temp/'.$id.'.ics'); $this->email->send(); + $this->booking_model->delete_ics($id); + $this->session->set_flashdata('success', "Booking Successfully Made"); @@ -193,4 +192,5 @@ function submit(){ redirect(base_url()); } } + } \ No newline at end of file diff --git a/application/libraries/Calendar.php b/application/libraries/Calendar.php index 735a5a0..4f0815e 100644 --- a/application/libraries/Calendar.php +++ b/application/libraries/Calendar.php @@ -17,9 +17,9 @@ function drawCalendar($month = null, $year = null, $selected_day = null) { $rows = 1; $output = ""; - $output .= ''; - $output .= ''; - $output .= ""; + $output .= '
<  '. date('F Y', $date) .'  >
SuMoTuWeThFrSa
'; + $output .= ''; + $output .= ""; $output .= ""; for($i = 1; $i <= $offset; $i++){ diff --git a/application/models/booking_model.php b/application/models/booking_model.php index d755e05..20e2f99 100644 --- a/application/models/booking_model.php +++ b/application/models/booking_model.php @@ -111,6 +111,8 @@ function is_allowed($room_id){ function book_room($room_id, $start, $end, $comment){ //Make sure the slot is not already booked! + $this->db->cache_off(); + $sql = "SELECT * FROM bookings WHERE start >= '". date('Y-m-d H:i:s', $start)."' and end <= '". date('Y-m-d H:i:s', $end)."' @@ -118,6 +120,8 @@ function book_room($room_id, $start, $end, $comment){ $existing_bookings = $this->db->query($sql); + $this->db->cache_on(); + if($existing_bookings->num_rows() == 0){ $data = array( 'room_id' => $room_id, @@ -281,15 +285,27 @@ function set_block_booking_rooms($rooms, $bb_id){ } function generate_ics($booking_id){ + $this->load->model('room_model'); + $this->db->where('booking_id', $booking_id); $booking_data = $this->db->get('bookings')->row(); + $room_result = $this->room_model->load_room($booking_data->room_id); + $room = $room_result['room_data']->row(); + $data = array( 'start' => strtotime($booking_data->start), 'end' => strtotime($booking_data->end), + 'room' => $room->name, + 'booking_id' => $booking_id, ); $ics_content = $this->load->view('email/booking_ics',$data, TRUE); file_put_contents('temp/'.$booking_id.'.ics', $ics_content); } + + function delete_ics($booking_id){ + @unlink('temp/'.$booking_id.'.ics'); + return; + } } \ No newline at end of file diff --git a/application/views/booking/booking_main.php b/application/views/booking/booking_main.php index 3d9a163..ce7a099 100644 --- a/application/views/booking/booking_main.php +++ b/application/views/booking/booking_main.php @@ -28,40 +28,56 @@ session->flashdata('success') !== FALSE): ?>session->flashdata('danger') !== FALSE): ?> -
- -
-
SHOW TODAY
- -input->get('date') !== FALSE): ?> - -
Filter -
- -
- result() as $resource): ?> -
- +
+
+ - - result() as $building): ?> -
- +
+
- - +
+
+
+ +input->get('date') !== FALSE): ?> + +
@@ -84,21 +100,21 @@ if(isset($rooms[$role->role_id])): ?> -

name; ?>

+ +

name; ?>

+
name; ?>+
- - - -
Previous Month'. strtoupper(date('F Y', $date)) .'Next Month
SUNMONTUEWEDTHUFRISAT
+
+ '; + echo ''; $tStart = mktime(0,0,0) + (($hours['min'] * 24) * 60 * 60); @@ -110,7 +126,7 @@ $tNow = $tStart; while($tNow <= $tEnd){ - echo ''; + echo ''; $tNow += 60 * 30; //30 MINUTES (60 seconds * 30) } @@ -130,7 +146,7 @@ else{ $seats = "1 seat"; } - echo ''; + echo ''; $tStart = mktime(0,0,0, $date_raw['month'], $date_raw['day'], $date_raw['year']) + (($hours['min'] * 24) * 60 * 60); //Start the "closed" slot at the earliest time } @@ -153,7 +169,7 @@ $numSlots = ceil(((($hours[$room->external_id]->STARTTIME - $hours['min']) * 24) * 60) / 30); //Output the placeholder - echo ''; + echo ''; //Adjust the starting time to be offset $tStart = mktime(0,0,0,$date_raw['month'], $date_raw['day'], $date_raw['year']) + (($hours[$room->external_id]->STARTTIME * 24) * 60 * 60); @@ -176,10 +192,12 @@ if(strtotime($block_booking['start']) < $tStart){ $block_booking['start'] = date('Y-m-d H:i:s', $tStart); } - + //Since we bumped the start time forward, make sure it didn't pass the end time. If it did, ignore the block booking (since the booking started/ended during closed hours) if($block_booking['end'] > $block_booking['start']){ + if(array_key_exists($room->room_id, $block_booking['room']) && strtotime($block_booking['start']) == $tNow){ + $bbStart = strtotime($block_booking['start']); $bbEnd = strtotime($block_booking['end']); @@ -199,7 +217,7 @@ $end_row = true; } - echo ''; + echo ''; break; } @@ -219,11 +237,14 @@ $booker_name = $bookings[$room->room_id][$tNow]->booker_name; //If this is your booking, or you are admin, show who booked it - if($booker_username == $this->session->userdata('username') || $this->session->userdata('super_admin') == TRUE){ - echo ''; + if($booker_username == $this->session->userdata('username') ){ + echo ''; + } + else if($this->session->userdata('super_admin') == TRUE){ + echo ''; } else{ - echo ''; + echo ''; } $tNow += 60 * $diff ; //Add "diff" minutes @@ -237,10 +258,10 @@ //Check to see if the date is in the past, or too far in the future if(time() > $tNow){ - echo ''; + echo ''; } else{ - echo ''; + echo ''; } $tNow += 60 * 30; //Add 30 minutes @@ -254,7 +275,7 @@ $numSlots = ceil(((($hours['max'] - $hours[$room->external_id]->ENDTIME) * 24) * 60) / 30); //Output the placeholder - echo ''; + echo ''; } echo ''; diff --git a/application/views/denied.php b/application/views/denied.php new file mode 100644 index 0000000..b50529b --- /dev/null +++ b/application/views/denied.php @@ -0,0 +1,15 @@ + + +template->set('headers', $head);?> + + + +

Ryerson University Libray Room Booking

+ +

You do not have access to the Library Room Booking System

+ +

If you believe you have reached this page in error, please contact

+ +

Logout

+
+template->set('content', $content);?> \ No newline at end of file diff --git a/application/views/email/booking_ics.php b/application/views/email/booking_ics.php index fc38121..b637c98 100644 --- a/application/views/email/booking_ics.php +++ b/application/views/email/booking_ics.php @@ -2,11 +2,11 @@ VERSION:2.0 PRODID:-//Ryerson University Library//NONSGML v1.0//EN BEGIN:VEVENT -UID:session->userdata('username').EMAIL_SUFFIX; ?> -DTSTAMP: -DTSTART: -DTEND: -SUMMARY: Library Room Booking -LOCATION: TST100 +UID:session->userdata('username').EMAIL_SUFFIX. ":". $booking_id. "\n"; ?> +DTSTAMP: +DTSTART: +DTEND: +SUMMARY: Library Room Booking +LOCATION: END:VEVENT END:VCALENDAR \ No newline at end of file diff --git a/assets/css/booking_main.css b/assets/css/booking_main.css index c0461f3..52b2584 100644 --- a/assets/css/booking_main.css +++ b/assets/css/booking_main.css @@ -3,16 +3,12 @@ padding: 0; } -#showtoday{ - font-size: 0.9em; - background-color: #000000; - color: #FFFFFF; - padding: 0.3em 0.6em; - text-align:center; - margin: 0 auto; - text-decoration: none; +a, a:visited, a:hover, a:active { + color: inherit; } + + .center{ text-align: center; margin: 0 auto; @@ -20,19 +16,37 @@ .calendar_container{ margin-bottom:0.4em; + float: right; } .table_calendar{ - width: 300px; + width: 450px; + height: 300px; background-color: #f2f2f2; - border: 2px solid #d8d8d8; + margin: 0 auto; + border-collapse: collapse; +} + +.table_calendar a.month_arrow { + font-size: 25px; + background-color: #f5945d; + display: block; + height: 70px; + line-height: 70px; + width: 55px; + padding: 0!important; + margin: 0!important; + } .table_calendar a{ text-decoration: none; color: #000075; font-size: 14px; + width: 30px; + height: 30px; + display: inline-block; } .table_calendar .month_year a{ @@ -40,38 +54,57 @@ } .table_calendar td,.table_calendar th{ - padding: 0.4em; text-align: center; width: 90px; + height: 40px; + border-collapse: collapse; + font-family: 'Open Sans', sans-serif; + font-size:17px; + } + + + .table_calendar .month_year{ - font-size: 1.8em; text-align: center; - border-bottom: 2px solid #d8d8d8; - background-color: #f35d3c; + background-color: #f27935; color: #FFFFFF; - padding: 0.4em; + padding: 0; + margin: 0; + height: 70px; + line-height: 70px; + position: relative; + top: -2px; + font-family: 'Open Sans', sans-serif; + font-size:30px; + font-weight: normal; } -.table_calendar .calendar_today{ +.table_calendar .calendar_today a{ text-align: center; - -moz-border-radius: 28px; /* or 50% */ - border-radius: 28px; /* or 50% */ - - background-color: #f35d3c; - color: #FFFFFF; + -moz-border-radius: 0.5em; /* or 50% */ + border-radius: 0.5em; /* or 50% */ + width: 40px; + height: 40px; + line-height: 40px; + display: inline-block; + background-color: #a3eaf9; + } -.table_calendar .selected_date { +.table_calendar .selected_date a{ text-align: center; - -moz-border-radius: 28px; /* or 50% */ - border-radius: 28px; /* or 50% */ - - background-color: #ffffa4; + -moz-border-radius: 0.5em; /* or 50% */ + border-radius: 0.5em; /* or 50% */ + width: 40px; + height: 40px; + line-height: 40px; + display: inline-block; + background-color: #fbd4be; } .table_calendar .past_date a{ @@ -86,63 +119,124 @@ position: relative; } +.role_title{ + background-color: #191d23; + margin-left: 6px; + height: 40px; + color: #ffffff; + line-height: 40px; + padding-left: 3em; + font-size: 17px; + font-family: 'Open Sans', sans-serif; + position: relative; + top: 1px; + margin-top: 2em; +} + +.role_title_collapse a{ + float: right; + display: inline-block; + width: 40px; + background-color: #323a45; + text-align: center; + font-size: 23px; + text-decoration: none; +} + .table-wrapper { overflow-x:scroll; overflow-y:visible; margin-left: 185px; + } tr.room_row > td{ max-width: 70px; min-width: 70px; - padding: 0.4em; - border: 1px solid #999999; + padding: 0; + border: 1px solid #000000; } .table-wrapper th { - padding: 5px 20px; + padding: 0; width: 180px; max-width: 180px; - border: 1px solid #999999; - background-color: #ffffa4; + color: #ffffff; + background-color: #35383b; text-align:center; white-space: nowrap; + +} + +.table_cell_height{ + height: 25px; + line-height: 25px; + overflow: hidden; + text-overflow: ellipsis; + font-size: 1em; + width: 9em; + margin: 0 auto; + +} + +.room_name .table_cell_height{ + margin: 0; + width: 12em; +} + + +.booking_table td{ + max-height: 30px; + height: 30px; + min-height: 30px; + border: none; + overflow: hidden; +} + +.booking_table th{ + max-height: 30px; + height: 30px; + min-height: 30px; + border: 1px solid #000000; + + } .table-wrapper th:first-child { position: absolute; - left: 5px; - margin-top: -1px; - border-right: none; + left: 6px; + + } .table-wrapper .room_name{ color: #FFFFFF; - background-color: #f35d3c; + background-color: #f27935; text-align: left; + padding-left: 1em; } .table-wrapper .room_free{ - background-color: #63cbd8; - display: table-cell; + background-color: #a1e3ef; + min-width: 90px; - border: 1px solid #999999; - height: 30px; + border: 1px solid #000000; + text-align: center; } .table-wrapper .not_avail{ background-color: #e3e3e3; - display: table-cell; + min-width: 90px; - border: 1px solid #999999; - height: 30px; + border: 1px solid #000000; + text-align: center } @@ -161,7 +255,17 @@ tr.room_row > td{ } .booked_cell{ - background-color: #e3e3e3; + background-color: #e6e6e6; + color: #999999; + text-align: center; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.my_booked_cell{ + background-color: #1fbba6; + color: #333333; text-align: center; overflow: hidden; text-overflow: ellipsis; @@ -169,7 +273,8 @@ tr.room_row > td{ } .closed{ - background-color: #f1e4c9; + background-color: #2b3035; + color: #ffffff; text-align: center; overflow: hidden; text-overflow: ellipsis; @@ -182,4 +287,68 @@ tr.room_row > td{ #filter_container{ display: none; + color: #000000; +} + +#top_left{ + float: left; +} + +#top_content{ + width: 780px; + margin: 0 auto; +} + +#app_links{ + margin-bottom: 2em; +} + +#app_links li{ + list-style: none; + margin-bottom: 2px; + +} + +#app_links li a{ + text-decoration: none; + height: 40px; + line-height: 40px; + background-color: #F2F2F2; + color: #5E6D82; + text-align: center; + width: 280px; + display: inline-block; + + font-weight: bold; + border-radius:0.4em; +} + +#app_links .selected{ + color: #FFFFFF; + background-color: #323A45; +} + +#filter_link_title{ + width: 280px; + text-align: center; + text-decoration: none; + background-color: #f27935; + display: inline-block; + height: 40px; + line-height: 40px; + color: #FFFFFF; + font-weight: bold; + border-radius: 0.4em; +} + +#filter_link { + float: right; + color: #FFFFFF; + background-color: #f5945d; + border-top-right-radius: 0.2em; + border-bottom-right-radius: 0.2em; + text-decoration: none; + width: 40px; + font-size: 1.5em; + text-align: center; } \ No newline at end of file diff --git a/assets/img/Book-Room-Icon1.png b/assets/img/Book-Room-Icon1.png new file mode 100644 index 0000000000000000000000000000000000000000..642aa3e6b3dd531cc88fe8e041484278d8b4deb0 GIT binary patch literal 3888 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 JPDHLkV1iEqu3-QG literal 0 HcmV?d00001 diff --git a/assets/img/Book-Room-Icon11.png b/assets/img/Book-Room-Icon11.png new file mode 100644 index 0000000000000000000000000000000000000000..a5c6719ed9b124002034e8187134c275c8c8a0d8 GIT binary patch literal 1500 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 literal 0 HcmV?d00001 diff --git a/assets/img/Book-Room-Icon14.png b/assets/img/Book-Room-Icon14.png new file mode 100644 index 0000000000000000000000000000000000000000..f2b23e831e3c9cadf17beced25aba795c7151120 GIT binary patch literal 1337 zcmV-91;+Y`P)002t}1^@s6I8J)%0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU$+et)0RCwC#Tg{Q$Fch{4hrNXk;#3f} zf_N)f=m08Mr~s${QUT5}C)f(sd&>W zCS#7;&U4_H)=2EYZBU>Cw6qr_2%Z6gPK+oJ@~I>W-FeH1yj{)01yL6&P@@t?By}-3 zX3PS?nvP`L1tTg2%e+~#P@h)h5?Ilci#ZZ{C>bWhXL912TSjJz_Y^lrR*61UE=Xa4 z(p5La?IIQ&0ExIhzsaN&iF#oR+KKB+&1dCvIZXpl!w!thxv6BdbFxr>U_p^epA5P) zjQdcRn>kAsTE&SG)p|kV`90I8496{OtYg@r>zO8M!HCjwXV;U`Ezug2F7inJ26x^y zAUr0y8l)HL)yTpqM&G_kEunSZmj>3(v;P(7XI1nZbYNBV?VA+c@8s_px}|QQd1FM; zan_xag`EJYQ&|%?sTm(!hFZZEiKv^?iB$|R2GzQ!YgiTy=Sxd3B*ElVVqZhlo<+`k zbiEy^9Ye;EU;&_Vnk(_wxn&l6E-Z1R{p;`?rO;5e1l{d?M^t+ zgSSLls?nX8UJ|K$NtS}Vt->`g?oQYy>!TxlElhMLY@`mEA}YFq9Fy3<39`_%3&+Tk zx)fEFMAxt^YF(qMugM)^NnYSYw?oktS+6D8{Ivu=QE_G#s;*Na~0i%2td@SGy-mv5~`e<4<>9Ges-r;x_lt;Dq?j zmCD{wMiZuQZ8ycDr-{@iW%dqCWqQLM*k%0jncwf{Fl|+^7LjI>ued+J$)`rg&M8(1T50^{R`>|YrZn^U)e>bBjo_RX)&_|+lH0w1eg+;M9v&VZ9v&VZ9v;r&j{pMzy83!aeT|^n00000NkvXXu0mjf_fL3p literal 0 HcmV?d00001 diff --git a/assets/img/Book-Room-Icon15.png b/assets/img/Book-Room-Icon15.png new file mode 100644 index 0000000000000000000000000000000000000000..a449eab429da9b86f547250c71bea351b8be5a7f GIT binary patch literal 568 zcmeAS@N?(olHy`uVBq!ia0vp^-XP4u1|%)~s$Kyp$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@jJG^p978H@y_wS(c*sDcO?o}E1yde_aEJ5;MuSG9#+wdv z4{UNYpTL{KY{ew~qWbvbb?xf9LboLLz3=0`Fk!;_dZs(3DUv|j7-E>NZ(H=ePUEOb zApg>yd|8)iCSUZ9>U?}4Vs!3jRJAFZnoS@>Z*|56fCBO=DvYid-?x7JYR&;JR+?{t_uYVL_9rv;7Wl?a99q zVrjqd;o7NF{ZsT#8NBnow$1nNY@VoQofJjx$P-Rt3Se^61Xdt>(}Y%?6h<%!lx#pz za;;wJ|KaRo_kQb7DxIU1$RGM5MR!x4-pgyJkH=@#uCsozIaFS6Td+=Wjn2__+nS7B z6Xvtd^LI{BTz&j&)`Yj;F29+1t2pq1(nJ$u&&TnrUMTIKQgt-+)TSdgX}jMZ+0NeX ztE<#n5i=(lUf)dIx>yR?4Gg}-r~aiR9Fly==d#Wzp$P!#)c1b? literal 0 HcmV?d00001 diff --git a/assets/img/Book-Room-Icon16.png b/assets/img/Book-Room-Icon16.png new file mode 100644 index 0000000000000000000000000000000000000000..5212497cee67f47aa664b694ac816f0722803fa2 GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^J|N7&1|*M957Y)yk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X?t8j8hE&{obL${)lL3Rn#cKu($_7o!J39N+CNGe-aB?qb zzSXSmKgDF>#P5@j32&+7mC;i4n55$QYyYD-;pcPmpQhicsO&Pl$GU_l}qI3pH^&3{>c{=s_Q=XTQ#^Y(m;J+}H`)U&Ps1$jix=bqY8vgu;- zTh6VR!cZwwer~(rKuk?EXw_lTd({*_tVK`qa;8nv>(x*39@&(7aNVCh#@1~8IzOZL?*6r9T39G6&|WxD z5T7@HzWc&EHrpR-PC3nZq-JJPrt_NF&db(>A7o!>W3&Ez>cgP5-fI>&%RF9by!MG_ z#muGk`c6CJKTgcl*!b1%TIt`70UPBGoz^&7wK3`AVUgk|I!9`jT1Tz_dT(n?-JYC7 ztjG7H+$s7wdrtMsy=PumubVmbn_Q~HL{pP=4FZRgR@BRKG{+X3YYfnDrpDOm> zF1}dyJ8S3HA71xLgNpW8c9qU`=?XWATO#-J|G7_(itb-3n*8N|u4B^Cis{ZO^PPWg zj_UE1T_fV=oTGHo$AeWvKx)ZJ#5VKTq7Vl>QkH=Ij*9rI$kn(xl+Gh2!` zJS@}yz3YO$^~Ot9=cGktwF|Bk-ONdk&s03+>^$YODDV4qf}fWhE~^&SKK*3xy4U9w zZ#-T2cEiL2^=tplJ+HX$|H{G{J@4m#D?ENu`iM3E$GKtMvjdV2cTDFweq*1>r{zEX z6|S1B8g6ZT`HWe*qvzg>!KXb>xG}HTy>0SY+tQaS?=3oh>+~Mg<0;>!2mGsecqVM^4q=Q+u&7z@S#`{YSpr%As>i7YiMg z3Qhgr*6wq3*IF^R!i~W^k zKP>!UH~Ge+!#mTRE5b}RinTB3{&4Ay>Z8fm?oY}3DD$#%@$(}BlfG}rKQC3}>$Kjm z`thGvc8ljtj&PpD%`BIvAinWL>!u@0AnFrkl#x2CBG4FDoubBwC#UB8Rb&x-%H{M| zIc(DDd8%RdMK`w|dF8!M^}W^Rgl96}x9PVt<8 literal 0 HcmV?d00001 diff --git a/assets/img/Book-Room-Icon3.png b/assets/img/Book-Room-Icon3.png new file mode 100644 index 0000000000000000000000000000000000000000..065865861c1dc684f902d69cffb0daee09faccd4 GIT binary patch literal 1341 zcmeAS@N?(olHy`uVBq!ia0vp^(?FPm4M^HB7Cr(}k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+SnhkeIEGZ*dNcQ7;3Ef-hVb_P?(EOBEaptSpTz3G>I8&I zK$yVVF50ob(Ctmb>xR`2-o3qhT0&A;QQ)TdzWlV~kK0=IOxNE%+jmnTAJAG9@Zf<3 zSLxw->6<y z)NM`9k)X3rGi1^%ZvE}6I1_ldRbq4gy=AXwId<+`dACI&*^bZVrZ>Bqr5bBP1PC&8 zu$pP4>~Lhau-3cH@yUHo{>R(R%(vU0M<01}e%EnVo(*AKlTP((Ui~)Z#cO8a)ekqt ze)D=9^zG)+bx*Yx9oyyWVS09F--)O4KW0mbsqk~_R@NKK9ev-X7p8M0ps%TJp6HW3 zdEfYdp5^Wi^E^{uq*pcn`>z#$mWi)=&Ly!|f79oGv-NU5h-~Y(&}KQp1cDAaK)B|^ zjc1em4&U;dkel~bIhc!O3qBZaCFiq zrOr7!zHl$IFS|15P51SwZ{=SaH?P;c|Nq%N`wQI>l96jv&i>!M{h`&fwj)tXzU+>g z_Lw(tO=s7W_Ze@pd%xU_ocI6UQ#pZb z+wymB>niJ|_I}$IDf|1?i{phIlT(&F+#b5Ee$DOsmn+&Oe?|0nGG|Lf#T;i;yJgO6 z{_EoPkbbMBfl-sHJC)6Mu2KEfsrGUCu_bi#UoGp|jxxE+mG^aS#(J)M?;evK zWUcM#`{;K_?Ao_JkJJMuSNPw(ol?Bj|JO9{wJVP;JXS1Iv8nd{!;snAf3lyPn=${% zp-mwt^BU}UE?v7ZO}^w-t=_(NozM%W*SzLuKX~J}Vw(E1&aPCkcgLBEO{di#`Zh;| z-8Ut0&54`)+SnVro}Rxl&!h0doZU@%J2ivWsK5TaZo2H;Qwsz(zSzT@-U>~B9jqOQ z#7G5B>e3V8^XAx`PwTB^Eel)ke{=6sk=2hc#cz$aP%8bfe*03*J3W;O8-ITH=>M|z zeZt;jlcW~uTW_AVV(p*V*LKIpME{&#ay-A~`)$L7@aYRauTwhe8{l5{#{@ij$o9lZ=Lu7ElA<^e-4N#9DZst+z`TePtq~_!za4SX1ELM;VnvE#MUA!_ zCvXGNo6gplj@Fn2e;u&aYE-SymMDPqg0uq_fl#Q@&Lt){_WoWRv@BsyOi=XEq@!<2 z(+(cU6x;e}u~C}$>_dF_QkLnmKW$l7usKce(#Ol0W#zh}D8&wtbD;54cmpFto#xJ) S0cuiNAZbrmKbLh*2~7alU4Q5R literal 0 HcmV?d00001 diff --git a/assets/img/Book-Room-Icon4.png b/assets/img/Book-Room-Icon4.png new file mode 100644 index 0000000000000000000000000000000000000000..da99e1f1f7e8bb0f9ad2533c994275882304bf39 GIT binary patch literal 1260 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 M07*qoM6N<$f-$n3PXGV_ literal 0 HcmV?d00001 diff --git a/assets/img/Book-Room-Icon8.png b/assets/img/Book-Room-Icon8.png new file mode 100644 index 0000000000000000000000000000000000000000..2b1f5497d9c3ea3cd0b2bab3ed048d48ec595db0 GIT binary patch literal 1465 zcmV;q1xEUbP)002t}1^@s6I8J)%0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU%TS-JgRCwC#TZ?ttFccLz48R6;Ca5z( z%mgJ91SV*ifG`1M0>}i=32-KeGeO)9+zl%ATs5z%Wy|)HF^%3iIuOA6T;2DTB1DiN zL4pJc5+q2FAZM0QAA>wRJjC*4CfluS>ivX#oywNU_9TCoeOR#M;uHC@k}Yw3B$sV1 zpWA;Ju;gMDb9P{pDFr|gU|3Z08^yLe*-!Cbg9Vk_LER{09%Vbq?{hFt{Wb-#3e>O0 zGYY6_SJjlyN9g}k$((**PFe3@Vc~DYCKXVtZHanDrnnb@^+G1sYN24lf%KyoaO0|y*swzbJL$~iD@LF;U4cSB3Y;miYZ07;>+=Q1H-S*> zS)*;?fvISa{W1$|cq1Pvpi&0g_tK_MumI7j~6y?%*8Ca^V_aKVIdh< zpyg{rb}4pVtA*QC7@!=Dk0Wnth+UjhgU)CMw?w68V6d|~JKDKd*FHIzMPsQWXKaMN z_Li}F7Y?w#koQj>=J;e8i%V{ezmGn_iU|`^?v=oH73Nq>eb0>$Bdzk_V}>y!64?2Y z42zmDdF~hvBQeIft9o`UE<8y6@R{yJzKj(X zD>yu%B`h(4nIkJ<2TRjCYLbdLE+j!5MBP0*i!HHX>;tUtM>@W@b%#0SjJZX?VvO!vYGp@<+o~Er<={l5dWx+1(qWUL?eO z5sfnrqKWg;<%o-$!9{!meC2IKndep+{s;}EE_&gODe4a zA7Y$ki;w=eWgUe#VCKpQ6$W$P;mQNE%p{y zig>5-Ek4xsH#PmHsCcA(vToF15ef3XS&bSg7JLUAx-d3@I?qIP;qUjMLmyWwM~+O| zRe+R{UH0O=j0?QB%s`Fp^=jqF0jQJs_j=)3)WE?EWXSKl%&E@6)4QRiS04Ko0C7ZH z8dodz0mQUdX2H-NjEsDc_tc@LCt}+cK5ST3P)h6G>mgt0FFB=I^~NmYilTGjZ2+L1 zhy%Fm>XBWUMUUmz;&R06T`n6~)IA?B1u4T$CEme;Yt|kx8`{5wIEaq**bjcom=%`{ zd`a?5-g^g&rWQXh5UkvnD*lhm@>Z3&5<%F&iZ5_Y-sW7F8*ZdWSs{GT#kWCuN0M0U z;^U-GuyXNU-qi+wj5pR{f+y7{1RXQ{5Dy{ T(tg1*00000NkvXXu0mjf7aFzd literal 0 HcmV?d00001 diff --git a/assets/img/Book-Room-Icon9.png b/assets/img/Book-Room-Icon9.png new file mode 100644 index 0000000000000000000000000000000000000000..65721988e5f415158fb74981dfce1f1bbedd3094 GIT binary patch literal 1346 zcmV-I1-<%-P)002t}1^@s6I8J)%0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU$3ZR4cSMW{+ zF%`sA5U3!e0-yq*0-yp&1(*ur??B&yzk}EPoQ4~X0ogj)hG=Iz7-QM;dhc|15<&z7 z1Ox;G1Ox;Gw2WR8H<{1pvHD2W_M$e}ACR9jwdHEtsq^x0OO|^0M19QEmRL5CYFnsw z+iydbdRS1-2GwMuKvD!MEGjt%)HYJrDIS_EG`S6$8&%9&Z3p$cM8(0m84?Smz8h_T zsG(2ORM(zg`)=aNgQAYaClzQ`tCG_rYy;FK6yS+Uo-E_dufTCLJQR?*JR6EVS+ERUdjH>LpZd%aId=N2bi?wvtrVz zjGHO+U4?nCisrW`hZc4F$w5{`QWRgvNqST#OwjG}I_Ae7XL*J+0!mv|rG}rIxOAfL zXd-DtWJP6WUvczXxTa06x#1hxAE?e8v7#Ck#m}C6)d16< zFH~4;LGqN-{J4FV^i)Fm5a+sa*~uN;)bV}e+V zttx+n@~Atj-?Ep{%UHmBDKmh3 zdtF-DvmnZ>D7Iz>7H$Au+|XB_ZaH|mHuTz($0o_rrhdS(%~+h5RzhE)SU7A{S?Fl@ zgs5Rx*QukK(zUD;A3m&ananP_yr3WZHeoIi*(u9dpbF9SPjLq@%ETkr5!qH*Zx_lg zU5E2pt~zAV;rVbcOc{PE@lF;F&3XjPyY`n53+Pyned4!FS#imY?+GWe@0~1~TKv63 zvZOCld_-k=t4j1m02^8H9X^w{KHtg>muf_rVfdhnZ=D()Nn)*wkAo)3lHy$6)ee7* z+Xhn$@MXWT>L42?Cqnh;a?K?rS+5r4N~CSyR)!t>gJqIJl&qYqNJvB~2|vVnJ?X8! z=;9-LBHgp>d}{F~ufgUYSaD4g(n>#Z=YqA!y5J+UDMZ5Kn$i*%A<=*4qN_D{3lbAz zHh^D5DK>;k!^fP6a*D1^xCR6S1Ox;G1Ox=Mf`0-G08Ez&^NB7@JOBUy07*qoM6N<$ Ef)KBb`~Uy| literal 0 HcmV?d00001 diff --git a/assets/js/booking_main.js b/assets/js/booking_main.js index f6dbe93..65cff2b 100644 --- a/assets/js/booking_main.js +++ b/assets/js/booking_main.js @@ -6,6 +6,10 @@ $('#filter_link').on('click', function(){ $('#filter_container').toggle(); }); +$('.role_title_collapse a').on('click', function(){ + $(this).parent().parent().next().toggle(); +}); + //Create the filter functionality $(".filter_checkbox").change(function() { //Reset all the filters, then re-apply them diff --git a/temp/README.txt b/temp/README.txt new file mode 100644 index 0000000..eb64456 --- /dev/null +++ b/temp/README.txt @@ -0,0 +1,3 @@ +This folder is used as temporary storage when ICS files are created. +Also used for caching "hours". Reduces external calls, and make the application faster +DO NOT DELETE IT! \ No newline at end of file
 
 
'.date("g:iA",$tNow).'
'.date("g:iA",$tNow).'
'.$room->name .' ('.$seats.')
'; + echo '
'.$room->name .' • '.$seats.'
'; foreach($resources[$room->room_id]->result() as $resource){ echo ''.$resource->name . ''; @@ -144,7 +160,7 @@ $numSlots = ceil(((($hours['max'] - $hours['min']) * 24) * 60) / 30) + 1; //Output the placeholder - echo '
Closed
Closed
Closed
Closed
'.$block_booking['reason'].'
'.$block_booking['reason'].'
'.$booker_name.'
'.$booker_name.'
'.$booker_name.'
Booked
Booked
'.date("g:iA",$tNow).'
'.date("g:iA",$tNow).'
'.date("g:iA",$tNow).'Closed
Closed