Restaurant Reservations - Version 1.5

Version Description

This update adds the ability to configure which columns are visible in the bookings table. It works with the Custom Fields addon. If you have added fields using custom code, please read the release notification at themeofthecrop.com before updating.

Download this release

Release Info

Developer NateWr
Plugin Icon 128x128 Restaurant Reservations
Version 1.5
Comparing to
See all releases

Code changes from version 1.4.10 to 1.5

assets/addons-backup.json CHANGED
@@ -15,7 +15,7 @@
15
  "price":"$20",
16
  "img":"https:\/\/themeofthecrop.com\/promo\/plugins\/mailchimp-for-rtb.png",
17
  "status":"released",
18
- "description":"Subscribe emails from new restaurant reservations to your MailChimp mailing list."
19
  },
20
  {
21
  "id":"export-bookings-for-rtb",
15
  "price":"$20",
16
  "img":"https:\/\/themeofthecrop.com\/promo\/plugins\/mailchimp-for-rtb.png",
17
  "status":"released",
18
+ "description":"Subscribe emails from new restaurant reservations to your MailChimp mailing list. <strong>Use a different mailing list provider? Let me know <a href=\"http:\/\/themeofthecrop.com\/2015\/12\/17\/suggest-next-mailing-list-integration\/?utm_source=Plugin&utm_medium=Addon%20List&utm_campaign=Restaurant%20Reservations\">which one</a>.</strong>"
19
  },
20
  {
21
  "id":"export-bookings-for-rtb",
assets/css/admin.css CHANGED
@@ -50,9 +50,13 @@
50
  color: #000;
51
  }
52
 
53
- #rtb-bookings-table .column-message .rtb-message-data,
54
- #rtb-bookings-table .message-row {
55
- display: none;
 
 
 
 
56
  }
57
 
58
  #rtb-bookings-table tr.closed {
@@ -64,8 +68,7 @@
64
  filter: opacity(alpha=100);
65
  }
66
 
67
- #rtb-bookings-table tr.pending .check-column,
68
- #rtb-bookings-table tr.pending.message-row td {
69
  border-left: 4px solid #dd3d36;
70
  }
71
 
@@ -81,8 +84,8 @@
81
  width: 3em;
82
  }
83
 
84
- #rtb-bookings-table th#message {
85
- width: 5em;
86
  }
87
 
88
  #rtb-bookings-table td .actions {
@@ -144,6 +147,34 @@
144
  background: #dd3d36;
145
  }
146
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
147
  @media screen and (max-width: 782px) {
148
 
149
  /* Prevent date column from being hidden in WP versions < 4.3 */
@@ -151,12 +182,12 @@
151
  display: table-cell;
152
  }
153
 
154
- /* Always display message data in mobile views */
155
- #rtb-bookings-table .column-message .rtb-message-data {
156
  display: block;
157
  }
158
 
159
- #rtb-bookings-table .column-message .rtb-show-message {
160
  display: none;
161
  }
162
  }
@@ -238,15 +269,9 @@
238
  display: block;
239
  }
240
 
241
- #rtb-booking-modal button,
242
- #rtb-email-modal button {
243
- margin-top: 1em;
244
- margin-right: 1em;
245
- }
246
-
247
- #rtb-booking-modal .button,
248
- #rtb-email-modal .button {
249
  margin-top: 1em;
 
250
  }
251
 
252
  .rtb-admin-modal button,
@@ -341,6 +366,23 @@
341
  max-height: 20em;
342
  }
343
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
344
  #rtb-error-modal .rtb-error-msg {
345
  margin-bottom: 1em;
346
  }
50
  color: #000;
51
  }
52
 
53
+ #rtb-bookings-table .tablenav .actions .button {
54
+ margin-top: 1px;
55
+ margin-bottom: 1px;
56
+ }
57
+
58
+ #rtb-bookings-table .tablenav .actions .button .dashicons {
59
+ line-height: 28px;
60
  }
61
 
62
  #rtb-bookings-table tr.closed {
68
  filter: opacity(alpha=100);
69
  }
70
 
71
+ #rtb-bookings-table tr.pending .check-column {
 
72
  border-left: 4px solid #dd3d36;
73
  }
74
 
84
  width: 3em;
85
  }
86
 
87
+ #rtb-bookings-table th#details {
88
+ width: 4em;
89
  }
90
 
91
  #rtb-bookings-table td .actions {
147
  background: #dd3d36;
148
  }
149
 
150
+ #rtb-bookings-table tr ul {
151
+ margin: 0;
152
+ }
153
+
154
+ .rtb-details-data {
155
+ display: none;
156
+ }
157
+
158
+ .rtb-details-data .details {
159
+ margin: 0;
160
+ }
161
+
162
+ .rtb-details-data .details > li {
163
+ margin-top: 2em;
164
+ }
165
+
166
+ .rtb-details-data .details > li:first-child {
167
+ margin-top: 0;
168
+ }
169
+
170
+ .rtb-details-data .details .label {
171
+ font-weight: 900;
172
+ }
173
+
174
+ #rtb-details-modal .rtb-details-data {
175
+ display: block;
176
+ }
177
+
178
  @media screen and (max-width: 782px) {
179
 
180
  /* Prevent date column from being hidden in WP versions < 4.3 */
182
  display: table-cell;
183
  }
184
 
185
+ /* Always display details data in mobile views */
186
+ #rtb-bookings-table .column-details .rtb-details-data {
187
  display: block;
188
  }
189
 
190
+ #rtb-bookings-table .column-details .rtb-show-details {
191
  display: none;
192
  }
193
  }
269
  display: block;
270
  }
271
 
272
+ .rtb-admin-modal .button {
 
 
 
 
 
 
 
273
  margin-top: 1em;
274
+ margin-right: 0.5em;
275
  }
276
 
277
  .rtb-admin-modal button,
366
  max-height: 20em;
367
  }
368
 
369
+ .rtb-column-form ul {
370
+ margin: 0;
371
+ }
372
+
373
+ .rtb-column-form label {
374
+ font-style: normal;
375
+ padding: 2px 0;
376
+ }
377
+
378
+ .rtb-column-form fieldset {
379
+ margin-bottom: 2em;
380
+ }
381
+
382
+ .rtb-column-form .action-status {
383
+ margin-top: 0;
384
+ }
385
+
386
  #rtb-error-modal .rtb-error-msg {
387
  margin-bottom: 1em;
388
  }
assets/js/admin.js CHANGED
@@ -21,22 +21,10 @@ jQuery(document).ready(function ($) {
21
  });
22
  });
23
 
24
- // Show or hide a booking message in the bookings table
25
- $( '#rtb-bookings-table .column-message a' ).click( function () {
26
- var message_id = $(this).data( 'id' );
27
- if ( $(this).parent().parent().siblings( '#' + message_id ).length ) {
28
- $( '#' + $(this).data( 'id' ) ).fadeOut( function() {
29
- $(this).remove();
30
- });
31
- $(this).children( '.dashicons' ).removeClass( 'dashicons-welcome-comments' ).addClass( 'dashicons-testimonial' );
32
- } else {
33
- var row = $(this).closest( 'tr' );
34
- row.after( '<tr class="' + row.attr( 'class' ) + ' message-row" id="' + message_id + '"><td colspan="' + row.children( 'th, td' ).length + '">' + $(this).siblings( '.rtb-message-data' ).html() + '</td></tr>' );
35
- $( '#' + message_id ).fadeIn();
36
- $(this).children( '.dashicons' ).removeClass( 'dashicons-testimonial' ).addClass( 'dashicons-welcome-comments' );
37
- }
38
-
39
- return false;
40
  });
41
 
42
  // Register clicks on action links
@@ -68,6 +56,18 @@ jQuery(document).ready(function ($) {
68
  e.preventDefault();
69
  });
70
 
 
 
 
 
 
 
 
 
 
 
 
 
71
  /**
72
  * Show/hide loading spinner when edit/delete link clicked
73
  */
@@ -80,7 +80,7 @@ jQuery(document).ready(function ($) {
80
  }
81
 
82
  /**
83
- * Modal to add/edit bookings from the admin
84
  */
85
  var rtb_booking_modal = $( '#rtb-booking-modal' );
86
  var rtb_booking_modal_fields = rtb_booking_modal.find( '#rtb-booking-form-fields' );
@@ -91,6 +91,13 @@ jQuery(document).ready(function ($) {
91
  var rtb_email_modal_submit = rtb_email_modal.find( 'button' );
92
  var rtb_email_modal_cancel = rtb_email_modal.find( '#rtb-cancel-email-modal' );
93
  var rtb_email_modal_action_status = rtb_email_modal.find( '.action-status' );
 
 
 
 
 
 
 
94
  var rtb_booking_modal_error = $( '#rtb-error-modal' );
95
  var rtb_booking_modal_error_msg = rtb_booking_modal_error.find( '.rtb-error-msg' );
96
 
@@ -171,6 +178,45 @@ jQuery(document).ready(function ($) {
171
  }
172
  }
173
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
174
  /**
175
  * Initialize form field events
176
  */
@@ -243,12 +289,7 @@ jQuery(document).ready(function ($) {
243
 
244
  if ( r.success ) {
245
 
246
- var rows = cell.parent();
247
- var next = rows.next();
248
- if ( next.hasClass( 'message-row' ) ) {
249
- rows = rows.add( next );
250
- }
251
- rows.fadeOut( 500, function() {
252
  $(this).remove();
253
  });
254
 
@@ -292,11 +333,7 @@ jQuery(document).ready(function ($) {
292
  // but this will just reset everything again
293
  rtb_toggle_booking_form_modal( false );
294
  rtb_toggle_email_modal( false );
295
-
296
- // Show booking form modal
297
- $( '.add-booking' ).click( function() {
298
- rtb_toggle_booking_form_modal( true );
299
- });
300
 
301
  // Close booking form modal when background or cancel button is clicked
302
  rtb_booking_modal.click( function(e) {
@@ -320,6 +357,28 @@ jQuery(document).ready(function ($) {
320
  }
321
  });
322
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
323
  // Close booking form error modal when background or cancel button is clicked
324
  rtb_booking_modal_error.click( function(e) {
325
  if ( $(e.target).is( rtb_booking_modal_error ) || $(e.target).is( rtb_booking_modal_error.find( 'a.button' ) ) ) {
@@ -332,6 +391,8 @@ jQuery(document).ready(function ($) {
332
  if ( e.which == '27' ) {
333
  rtb_toggle_booking_form_modal( false );
334
  rtb_toggle_email_modal( false );
 
 
335
  rtb_toggle_booking_form_error_modal( false );
336
  }
337
  });
@@ -436,7 +497,7 @@ jQuery(document).ready(function ($) {
436
 
437
  } else {
438
 
439
- if ( typeof r.data == 'unspecified' || typeof r.data.error == 'unspecified' ) {
440
  rtb_toggle_booking_form_error_modal( true, rtb_admin.strings.error_unspecified );
441
  } else {
442
  rtb_toggle_booking_form_error_modal( true, r.data.msg );
@@ -455,6 +516,62 @@ jQuery(document).ready(function ($) {
455
  });
456
  });
457
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
458
  // Show the addons
459
  if ( $( '#rtb-addons' ).length ) {
460
 
21
  });
22
  });
23
 
24
+ // Show or hide extra booking details in the bookings table
25
+ $( '.rtb-show-details' ).click( function (e) {
26
+ e.preventDefault();
27
+ rtb_toggle_details_modal( true, $(this).siblings( '.rtb-details-data' ).html() );
 
 
 
 
 
 
 
 
 
 
 
 
28
  });
29
 
30
  // Register clicks on action links
56
  e.preventDefault();
57
  });
58
 
59
+ // Show booking form modal
60
+ $( '.add-booking' ).click( function( e ) {
61
+ e.preventDefault();
62
+ rtb_toggle_booking_form_modal( true );
63
+ });
64
+
65
+ // Show column configuration modal
66
+ $( '.rtb-columns-button' ).click( function( e ) {
67
+ e.preventDefault();
68
+ rtb_toggle_column_modal( true );
69
+ });
70
+
71
  /**
72
  * Show/hide loading spinner when edit/delete link clicked
73
  */
80
  }
81
 
82
  /**
83
+ * Modals for the admin page
84
  */
85
  var rtb_booking_modal = $( '#rtb-booking-modal' );
86
  var rtb_booking_modal_fields = rtb_booking_modal.find( '#rtb-booking-form-fields' );
91
  var rtb_email_modal_submit = rtb_email_modal.find( 'button' );
92
  var rtb_email_modal_cancel = rtb_email_modal.find( '#rtb-cancel-email-modal' );
93
  var rtb_email_modal_action_status = rtb_email_modal.find( '.action-status' );
94
+ var rtb_column_modal = $( '#rtb-column-modal' );
95
+ var rtb_column_modal_submit = rtb_column_modal.find( 'button' );
96
+ var rtb_column_modal_cancel = rtb_column_modal.find( '#rtb-cancel-column-modal' );
97
+ var rtb_column_modal_action_status = rtb_column_modal.find( '.action-status' );
98
+ var rtb_details_modal = $( '#rtb-details-modal' );
99
+ var rtb_details_modal_close = rtb_details_modal.find( '#rtb-close-details-modal' );
100
+ var rtb_details_modal_cancel = rtb_details_modal.find( '#rtb-cancel-details-modal' );
101
  var rtb_booking_modal_error = $( '#rtb-error-modal' );
102
  var rtb_booking_modal_error_msg = rtb_booking_modal_error.find( '.rtb-error-msg' );
103
 
178
  }
179
  }
180
 
181
+ /**
182
+ * Show or hide the column configuration modal
183
+ */
184
+ function rtb_toggle_column_modal( show ) {
185
+
186
+ if ( show ) {
187
+ rtb_column_modal.scrollTop( 0 ).addClass( 'is-visible' );
188
+ $( 'body' ).addClass( 'rtb-hide-body-scroll' );
189
+
190
+ } else {
191
+ rtb_column_modal.removeClass( 'is-visible' );
192
+ $( 'body' ).removeClass( 'rtb-hide-body-scroll' );
193
+ }
194
+ }
195
+
196
+ /**
197
+ * Show or hide the booking details modal
198
+ */
199
+ function rtb_toggle_details_modal( show, content ) {
200
+
201
+ if ( show ) {
202
+ rtb_details_modal.addClass( 'is-visible' ).scrollTop( 0 )
203
+ .find( '.rtb-details-data' ).html( content );
204
+ $( 'body' ).addClass( 'rtb-hide-body-scroll' );
205
+ rtb_details_modal.find( '.actions' ).click( function(e) {
206
+ var target = $( e.target );
207
+ rtb_toggle_details_modal( false );
208
+ rtb_toggle_email_modal( true, target.data( 'id'), target.data( 'email' ), target.data( 'name' ) );
209
+ });
210
+
211
+ } else {
212
+ rtb_details_modal.removeClass( 'is-visible' );
213
+ $( 'body' ).removeClass( 'rtb-hide-body-scroll' );
214
+ setTimeout( function() {
215
+ rtb_details_modal.find( '.rtb-details-data' ).empty();
216
+ }, 300 );
217
+ }
218
+ }
219
+
220
  /**
221
  * Initialize form field events
222
  */
289
 
290
  if ( r.success ) {
291
 
292
+ cell.parent().fadeOut( 500, function() {
 
 
 
 
 
293
  $(this).remove();
294
  });
295
 
333
  // but this will just reset everything again
334
  rtb_toggle_booking_form_modal( false );
335
  rtb_toggle_email_modal( false );
336
+ rtb_toggle_column_modal( false );
 
 
 
 
337
 
338
  // Close booking form modal when background or cancel button is clicked
339
  rtb_booking_modal.click( function(e) {
357
  }
358
  });
359
 
360
+ // Close column modal when background or cancel button is clicked
361
+ rtb_column_modal.click( function(e) {
362
+ if ( $(e.target).is( rtb_column_modal ) ) {
363
+ rtb_toggle_column_modal( false );
364
+ }
365
+
366
+ if ( $(e.target).is( rtb_column_modal_cancel ) && rtb_column_modal_cancel.prop( 'disabled' ) !== true ) {
367
+ rtb_toggle_column_modal( false );
368
+ }
369
+ });
370
+
371
+ // Close details modal when background or cancel button is clicked
372
+ rtb_details_modal.click( function(e) {
373
+ if ( $(e.target).is( rtb_details_modal ) ) {
374
+ rtb_toggle_details_modal( false );
375
+ }
376
+
377
+ if ( $(e.target).is( rtb_details_modal_cancel ) ) {
378
+ rtb_toggle_details_modal( false );
379
+ }
380
+ });
381
+
382
  // Close booking form error modal when background or cancel button is clicked
383
  rtb_booking_modal_error.click( function(e) {
384
  if ( $(e.target).is( rtb_booking_modal_error ) || $(e.target).is( rtb_booking_modal_error.find( 'a.button' ) ) ) {
391
  if ( e.which == '27' ) {
392
  rtb_toggle_booking_form_modal( false );
393
  rtb_toggle_email_modal( false );
394
+ rtb_toggle_column_modal( false );
395
+ rtb_toggle_details_modal( false );
396
  rtb_toggle_booking_form_error_modal( false );
397
  }
398
  });
497
 
498
  } else {
499
 
500
+ if ( typeof r.data == 'undefined' || typeof r.data.error == 'undefined' ) {
501
  rtb_toggle_booking_form_error_modal( true, rtb_admin.strings.error_unspecified );
502
  } else {
503
  rtb_toggle_booking_form_error_modal( true, r.data.msg );
516
  });
517
  });
518
 
519
+ // Submit column configuration modal
520
+ rtb_column_modal_submit.click( function(e) {
521
+
522
+ e.preventDefault();
523
+ e.stopPropagation();
524
+
525
+ if ( $(this).prop( 'disabled' ) === true ) {
526
+ return;
527
+ }
528
+
529
+ // Loading
530
+ rtb_column_modal_submit.prop( 'disabled', true );
531
+ rtb_column_modal_cancel.prop( 'disabled', true );
532
+ rtb_column_modal_action_status.addClass( 'is-visible' );
533
+ rtb_show_action_status( rtb_column_modal_action_status, 'loading' );
534
+
535
+ var params = {};
536
+
537
+ params.action = 'rtb-admin-column-modal';
538
+ params.nonce = rtb_admin.nonce;
539
+
540
+ params.columns = [];
541
+ rtb_column_modal.find( 'input[name="rtb-columns-config"]:checked' ).each( function() {
542
+ params.columns.push( $(this).val() );
543
+ });
544
+
545
+ var data = $.param( params );
546
+
547
+ var jqhxr = $.post( ajaxurl, data, function( r ) {
548
+
549
+ if ( r.success ) {
550
+
551
+ // Refresh the page so that the new details are visible
552
+ window.location.reload();
553
+
554
+ } else {
555
+
556
+ if ( typeof r.data == 'undefined' || typeof r.data.error == 'undefined' ) {
557
+ rtb_toggle_booking_form_error_modal( true, rtb_admin.strings.error_unspecified );
558
+ } else {
559
+ rtb_toggle_booking_form_error_modal( true, r.data.msg );
560
+ }
561
+
562
+ rtb_column_modal_cancel.prop( 'disabled', false );
563
+ rtb_column_modal_submit.prop( 'disabled', false );
564
+ }
565
+
566
+ rtb_show_action_status( rtb_column_modal_action_status, r.success );
567
+
568
+ // Hide result status icon after a few seconds
569
+ setTimeout( function() {
570
+ rtb_column_modal.find( '.action-status' ).removeClass( 'is-visible' );
571
+ }, 4000 );
572
+ });
573
+ });
574
+
575
  // Show the addons
576
  if ( $( '#rtb-addons' ).length ) {
577
 
assets/js/booking-form.js CHANGED
@@ -19,7 +19,8 @@ jQuery(document).ready(function ($) {
19
  // Show the message field on the booking form
20
  $( '.rtb-booking-form .add-message a' ).click( function() {
21
  $(this).hide();
22
- $(this).parent().siblings( '.message' ).addClass( 'message-open' );
 
23
 
24
  return false;
25
  });
19
  // Show the message field on the booking form
20
  $( '.rtb-booking-form .add-message a' ).click( function() {
21
  $(this).hide();
22
+ $(this).parent().siblings( '.message' ).addClass( 'message-open' )
23
+ .find( 'label' ).focus();
24
 
25
  return false;
26
  });
includes/AdminBookings.class.php CHANGED
@@ -14,8 +14,8 @@ class rtbAdminBookings {
14
  // Add the admin menu
15
  add_action( 'admin_menu', array( $this, 'add_menu_page' ) );
16
 
17
- // Print the booking form modal
18
- add_action( 'admin_footer-toplevel_page_rtb-bookings', array( $this, 'print_booking_form_modal' ) );
19
 
20
  // Receive Ajax requests
21
  add_action( 'wp_ajax_nopriv_rtb-admin-booking-modal' , array( $this , 'nopriv_ajax' ) );
@@ -24,6 +24,8 @@ class rtbAdminBookings {
24
  add_action( 'wp_ajax_rtb-admin-trash-booking', array( $this, 'trash_booking_ajax' ) );
25
  add_action( 'wp_ajax_nopriv_rtb-admin-email-modal' , array( $this , 'nopriv_ajax' ) );
26
  add_action( 'wp_ajax_rtb-admin-email-modal', array( $this, 'email_modal_ajax' ) );
 
 
27
 
28
  // Validate post status and notification fields
29
  add_action( 'rtb_validate_booking_submission', array( $this, 'validate_admin_fields' ) );
@@ -31,6 +33,9 @@ class rtbAdminBookings {
31
  // Set post status when adding to the database
32
  add_filter( 'rtb_insert_booking_data', array( $this, 'insert_booking_data' ), 10, 2 );
33
 
 
 
 
34
  }
35
 
36
  /**
@@ -84,10 +89,35 @@ class rtbAdminBookings {
84
  }
85
 
86
  /**
87
- * Print the booking form modal container on the admin bookings page
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  * @since 0.0.1
89
  */
90
- public function print_booking_form_modal() {
91
 
92
  global $rtb_controller;
93
  ?>
@@ -112,7 +142,7 @@ class rtbAdminBookings {
112
  <?php echo $this->print_booking_form_fields(); ?>
113
  </div>
114
 
115
- <button type="submit" class="button-primary">
116
  <?php _e( 'Add Booking', 'restaurant-reservations' ); ?>
117
  </button>
118
  <a href="#" class="button" id="rtb-cancel-booking-modal">
@@ -153,7 +183,7 @@ class rtbAdminBookings {
153
  </div>
154
  </fieldset>
155
 
156
- <button type="submit" class="button-primary">
157
  <?php _e( 'Send Email', 'restaurant-reservations' ); ?>
158
  </button>
159
  <a href="#" class="button" id="rtb-cancel-email-modal">
@@ -167,6 +197,63 @@ class rtbAdminBookings {
167
  </form>
168
  </div>
169
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
170
  <!-- Restaurant Reservations error message modal -->
171
  <div id="rtb-error-modal" class="rtb-admin-modal">
172
  <div class="rtb-error rtb-container">
@@ -523,6 +610,35 @@ class rtbAdminBookings {
523
  wp_send_json_success();
524
  }
525
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
526
 
527
  /**
528
  * Validate post status and notification fields
14
  // Add the admin menu
15
  add_action( 'admin_menu', array( $this, 'add_menu_page' ) );
16
 
17
+ // Print the modals
18
+ add_action( 'admin_footer-toplevel_page_rtb-bookings', array( $this, 'print_modals' ) );
19
 
20
  // Receive Ajax requests
21
  add_action( 'wp_ajax_nopriv_rtb-admin-booking-modal' , array( $this , 'nopriv_ajax' ) );
24
  add_action( 'wp_ajax_rtb-admin-trash-booking', array( $this, 'trash_booking_ajax' ) );
25
  add_action( 'wp_ajax_nopriv_rtb-admin-email-modal' , array( $this , 'nopriv_ajax' ) );
26
  add_action( 'wp_ajax_rtb-admin-email-modal', array( $this, 'email_modal_ajax' ) );
27
+ add_action( 'wp_ajax_nopriv_rtb-admin-column-modal' , array( $this , 'nopriv_ajax' ) );
28
+ add_action( 'wp_ajax_rtb-admin-column-modal', array( $this, 'column_modal_ajax' ) );
29
 
30
  // Validate post status and notification fields
31
  add_action( 'rtb_validate_booking_submission', array( $this, 'validate_admin_fields' ) );
33
  // Set post status when adding to the database
34
  add_filter( 'rtb_insert_booking_data', array( $this, 'insert_booking_data' ), 10, 2 );
35
 
36
+ // Add the columns configuration button to the table
37
+ add_action( 'rtb_bookings_table_actions', array( $this, 'print_columns_config_button' ), 9 );
38
+
39
  }
40
 
41
  /**
89
  }
90
 
91
  /**
92
+ * Print button for configuring columns
93
+ *
94
+ * @param string pos Position of this tablenav: top|btm
95
+ * @since 0.1
96
+ */
97
+ public function print_columns_config_button( $pos ) {
98
+ if ( $pos != 'top' ) {
99
+ return;
100
+ }
101
+ ?>
102
+
103
+ <div class="alignleft actions rtb-actions">
104
+ <a href="#" class="button rtb-columns-button">
105
+ <span class="dashicons dashicons-admin-settings"></span>
106
+ <?php esc_html_e( 'Columns', 'restaurant-reservations' ); ?>
107
+ </a>
108
+ </div>
109
+
110
+ <?php
111
+ }
112
+
113
+ /**
114
+ * Print the modal containers
115
+ *
116
+ * New/edit bookings, send email, configure columns, errors.
117
+ *
118
  * @since 0.0.1
119
  */
120
+ public function print_modals() {
121
 
122
  global $rtb_controller;
123
  ?>
142
  <?php echo $this->print_booking_form_fields(); ?>
143
  </div>
144
 
145
+ <button type="submit" class="button button-primary">
146
  <?php _e( 'Add Booking', 'restaurant-reservations' ); ?>
147
  </button>
148
  <a href="#" class="button" id="rtb-cancel-booking-modal">
183
  </div>
184
  </fieldset>
185
 
186
+ <button type="submit" class="button button-primary">
187
  <?php _e( 'Send Email', 'restaurant-reservations' ); ?>
188
  </button>
189
  <a href="#" class="button" id="rtb-cancel-email-modal">
197
  </form>
198
  </div>
199
  </div>
200
+
201
+ <!-- Restaurant Reservations column configuration modal -->
202
+ <div id="rtb-column-modal" class="rtb-admin-modal">
203
+ <div class="rtb-column-form rtb-container">
204
+ <form method="POST">
205
+ <input type="hidden" name="action" value="admin_column_config">
206
+
207
+ <fieldset>
208
+ <legend><?php esc_html_e( 'Columns', 'restaurant-reservations' ); ?></legend>
209
+ <ul>
210
+ <?php
211
+ $bookings_table = new rtbBookingsTable();
212
+ $columns = $bookings_table->get_all_columns();
213
+ $visible = $bookings_table->get_columns();
214
+ foreach( $columns as $column => $label ) :
215
+ // Don't allow these columns to be hidden
216
+ if ( $column == 'cb' || $column == 'details' || $column == 'date' ) {
217
+ continue;
218
+ }
219
+ ?>
220
+ <li>
221
+ <label>
222
+ <input type="checkbox" name="rtb-columns-config" value="<?php esc_attr_e( $column ); ?>"<?php if ( array_key_exists( $column, $visible ) ) : ?> checked<?php endif; ?>>
223
+ <?php esc_html_e( $label ); ?>
224
+ </label>
225
+ </li>
226
+ <?php
227
+ endforeach;
228
+ ?>
229
+ </ul>
230
+ </fieldset>
231
+
232
+ <button type="submit" class="button button-primary">
233
+ <?php _e( 'Update', 'restaurant-reservations' ); ?>
234
+ </button>
235
+ <a href="#" class="button" id="rtb-cancel-column-modal">
236
+ <?php _e( 'Cancel', 'restaurant-reservations' ); ?>
237
+ </a>
238
+ <div class="action-status">
239
+ <span class="spinner loading"></span>
240
+ <span class="dashicons dashicons-no-alt error"></span>
241
+ <span class="dashicons dashicons-yes success"></span>
242
+ </div>
243
+ </form>
244
+ </div>
245
+ </div>
246
+
247
+ <!-- Restaurant Reservations details modal -->
248
+ <div id="rtb-details-modal" class="rtb-admin-modal">
249
+ <div class="rtb-details-form rtb-container">
250
+ <div class="rtb-details-data"></div>
251
+ <a href="#" class="button" id="rtb-cancel-details-modal">
252
+ <?php _e( 'Close', 'restaurant-reservations' ); ?>
253
+ </a>
254
+ </div>
255
+ </div>
256
+
257
  <!-- Restaurant Reservations error message modal -->
258
  <div id="rtb-error-modal" class="rtb-admin-modal">
259
  <div class="rtb-error rtb-container">
610
  wp_send_json_success();
611
  }
612
 
613
+ /**
614
+ * Handle ajax requests to configure columns
615
+ *
616
+ * @since 1.3.1
617
+ */
618
+ public function column_modal_ajax() {
619
+
620
+ global $rtb_controller;
621
+
622
+ // Authenticate request
623
+ if ( !check_ajax_referer( 'rtb-admin', 'nonce' ) || !current_user_can( 'manage_bookings' ) ) {
624
+ $this->nopriv_ajax();
625
+ }
626
+
627
+ if ( !isset( $_POST['columns'] ) || !is_array( $_POST['columns'] ) || empty( $_POST['columns'] ) ) {
628
+ wp_send_json_error(
629
+ array(
630
+ 'error' => 'no_columns',
631
+ 'msg' => __( 'You must select at least one column to display.', 'restaurant-reservations' ),
632
+ )
633
+ );
634
+ }
635
+
636
+ $settings = get_option( 'rtb-settings' );
637
+ $settings['bookings-table-columns'] = array_map( 'sanitize_key', $_POST['columns'] );
638
+ update_option( 'rtb-settings', $settings );
639
+
640
+ wp_send_json_success();
641
+ }
642
 
643
  /**
644
  * Validate post status and notification fields
includes/Compatibility.class.php CHANGED
@@ -24,6 +24,9 @@ class rtbCompatibility {
24
  // Run a filter deprecrated in 1.4.3
25
  add_filter( 'rtb_bookings_table_views_date_range', array( $this, 'rtn_bookings_table_views_schedule' ) );
26
 
 
 
 
27
  }
28
 
29
  /**
@@ -56,6 +59,56 @@ class rtbCompatibility {
56
  return apply_filters( 'rtn_bookings_table_views_schedule', $views );
57
  }
58
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
  }
60
  } // endif
61
 
24
  // Run a filter deprecrated in 1.4.3
25
  add_filter( 'rtb_bookings_table_views_date_range', array( $this, 'rtn_bookings_table_views_schedule' ) );
26
 
27
+ // Make sure custom fields don't completely disappear in 1.5
28
+ add_action( 'admin_init', array( $this, 'maybe_bridge_cffrtb_to_1_5' ) );
29
+
30
  }
31
 
32
  /**
59
  return apply_filters( 'rtn_bookings_table_views_schedule', $views );
60
  }
61
 
62
+ /**
63
+ * Check whether or not we need to run some compatibiilty code for older
64
+ * versions of the Custom Fields addon.
65
+ *
66
+ * @since 0.1
67
+ */
68
+ public function maybe_bridge_cffrtb_to_1_5() {
69
+ if ( !function_exists( 'cffrtbInit' ) || !function_exists( 'get_plugin_data' ) ) {
70
+ return;
71
+ }
72
+
73
+ $cffrtb = get_plugin_data( cffrtbInit::$plugin_dir . '/custom-fields-for-rtb.php', false );
74
+ if ( !isset( $cffrtb['Version'] ) || $cffrtb['Version'] >= 1.2 ) {
75
+ return;
76
+ }
77
+
78
+ add_filter( 'rtb_bookings_table_column_details', array( $this, 'add_cffrtb_fields_to_details' ), 11, 2 );
79
+ }
80
+
81
+ /**
82
+ * Add custom fields output to details column
83
+ *
84
+ * This function eases the transition to v1.5 for users of the Custom Fields
85
+ * addon. Some of the details around how the custom field data is added to
86
+ * the bookings table was changed. If the user is using an outdated version
87
+ * of Custom Fields, this function will ensure the data gets dropped into
88
+ * the new details column. There is still some wonky behavior: the custom
89
+ * fields appear as potential columns but adding them won't do anything.
90
+ * But this will at least ensure that the data doesn't disappear and users
91
+ * can then update to get the full functionality.
92
+ *
93
+ * @since 1.5
94
+ */
95
+ public function add_cffrtb_fields_to_details( $details, $booking ) {
96
+
97
+ if ( !isset( $booking->custom_fields ) ) {
98
+ return $details;
99
+ }
100
+
101
+ $fields = cffrtbInit()->fields->get_booking_fields_display_array( $booking );
102
+ foreach( $fields as $field ) {
103
+ $details[] = array(
104
+ 'label' => $field['title'],
105
+ 'value' => $field['display_val'],
106
+ );
107
+ }
108
+
109
+ return $details;
110
+ }
111
+
112
  }
113
  } // endif
114
 
includes/Query.class.php CHANGED
@@ -101,10 +101,9 @@ class rtbQuery {
101
  $args['date_query'] = $date_query;
102
  }
103
  } elseif ( $args['date_range'] === 'today' ) {
104
- $today = getdate();
105
- $args['year'] = $today['year'];
106
- $args['monthnum'] = $today['mon'];
107
- $args['day'] = $today['mday'];
108
 
109
  } elseif ( $args['date_range'] === 'upcoming' ) {
110
  $args['date_query'] = array(
101
  $args['date_query'] = $date_query;
102
  }
103
  } elseif ( $args['date_range'] === 'today' ) {
104
+ $args['year'] = date( 'Y', current_time( 'timestamp' ) );
105
+ $args['monthnum'] = date( 'm', current_time( 'timestamp' ) );
106
+ $args['day'] = date( 'd', current_time( 'timestamp' ) );
 
107
 
108
  } elseif ( $args['date_range'] === 'upcoming' ) {
109
  $args['date_query'] = array(
includes/WP_List_Table.BookingsTable.class.php CHANGED
@@ -75,13 +75,21 @@ class rtbBookingsTable extends WP_List_Table {
75
  public $action_result = array();
76
 
77
  /**
78
- * Type of nulk or quick action last performed
79
  *
80
  * @var string
81
  * @since 1.4.6
82
  */
83
  public $last_action = '';
84
 
 
 
 
 
 
 
 
 
85
  /**
86
  * Initialize the table and perform any requested actions
87
  *
@@ -118,6 +126,9 @@ class rtbBookingsTable extends WP_List_Table {
118
  $this->bookings_data();
119
 
120
  $this->base_url = admin_url( 'admin.php?page=' . RTB_BOOKING_POST_TYPE );
 
 
 
121
  }
122
 
123
  /**
@@ -307,21 +318,70 @@ class rtbBookingsTable extends WP_List_Table {
307
 
308
  /**
309
  * Retrieve the table columns
 
310
  * @since 0.0.1
311
  */
312
  public function get_columns() {
313
- $columns = array(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
314
  'cb' => '<input type="checkbox" />', //Render a checkbox instead of text
315
  'date' => __( 'Date', 'restaurant-reservations' ),
316
  'party' => __( 'Party', 'restaurant-reservations' ),
317
  'name' => __( 'Name', 'restaurant-reservations' ),
318
  'email' => __( 'Email', 'restaurant-reservations' ),
319
  'phone' => __( 'Phone', 'restaurant-reservations' ),
320
- 'message' => __( 'Message', 'restaurant-reservations' ),
321
- 'status' => __( 'Status', 'restaurant-reservations' )
322
  );
 
323
 
324
- return apply_filters( 'rtb_bookings_table_columns', $columns );
 
 
 
 
 
 
 
 
 
 
325
  }
326
 
327
  /**
@@ -369,13 +429,6 @@ class rtbBookingsTable extends WP_List_Table {
369
  case 'phone' :
370
  $value = $booking->phone;
371
  break;
372
- case 'message' :
373
- $value = '';
374
- if ( trim( $booking->message ) ) {
375
- $value = '<a href="#" class="rtb-show-message" data-id="message-' . esc_attr( $booking->ID ) . '"><span class="dashicons dashicons-testimonial"></span></a>';
376
- $value .= '<div class="rtb-message-data">' . $booking->message . '</div>';
377
- }
378
- break;
379
  case 'status' :
380
  global $rtb_controller;
381
  if ( !empty( $rtb_controller->cpts->booking_statuses[$booking->post_status] ) ) {
@@ -386,6 +439,28 @@ class rtbBookingsTable extends WP_List_Table {
386
  $value = $booking->post_status;
387
  }
388
  break;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
389
  default:
390
  $value = isset( $booking->$column_name ) ? $booking->$column_name : '';
391
  break;
@@ -407,6 +482,44 @@ class rtbBookingsTable extends WP_List_Table {
407
  );
408
  }
409
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
410
  /**
411
  * Retrieve the bulk actions
412
  * @since 0.0.1
@@ -583,7 +696,7 @@ class rtbBookingsTable extends WP_List_Table {
583
  } elseif ( !empty( $_GET['date_range'] ) ) {
584
 
585
  if ( $_GET['date_range'] == 'today' ) {
586
- $where .= " AND p.post_date >= '" . date( 'Y-m-d' ) . "' AND p.post_date <= '" . date( 'Y-m-d', current_time( 'timestamp' ) + 86400 ) . "'";
587
  }
588
 
589
  // Default date setting is to show upcoming bookings
75
  public $action_result = array();
76
 
77
  /**
78
+ * Type of bulk or quick action last performed
79
  *
80
  * @var string
81
  * @since 1.4.6
82
  */
83
  public $last_action = '';
84
 
85
+ /**
86
+ * Stored reference to visible columns
87
+ *
88
+ * @var string
89
+ * @since 1.5
90
+ */
91
+ public $visible_columns = array();
92
+
93
  /**
94
  * Initialize the table and perform any requested actions
95
  *
126
  $this->bookings_data();
127
 
128
  $this->base_url = admin_url( 'admin.php?page=' . RTB_BOOKING_POST_TYPE );
129
+
130
+ // Add default items to the details column if they've been hidden
131
+ add_filter( 'rtb_bookings_table_column_details', array( $this, 'add_details_column_items' ), 10, 2 );
132
  }
133
 
134
  /**
318
 
319
  /**
320
  * Retrieve the table columns
321
+ *
322
  * @since 0.0.1
323
  */
324
  public function get_columns() {
325
+
326
+ // Prevent the lookup from running over and over again on a single
327
+ // page load
328
+ if ( !empty( $this->visible_columns ) ) {
329
+ return $this->visible_columns;
330
+ }
331
+
332
+ $all_default_columns = $this->get_all_default_columns();
333
+
334
+ global $rtb_controller;
335
+ $visible_columns = $rtb_controller->settings->get_setting( 'bookings-table-columns' );
336
+ if ( empty( $visible_columns ) ) {
337
+ $columns = $all_default_columns;
338
+ } else {
339
+ $columns = array();
340
+ $columns['cb'] = $all_default_columns['cb'];
341
+ $columns['date'] = $all_default_columns['date'];
342
+
343
+ foreach( $all_default_columns as $key => $column ) {
344
+ if ( in_array( $key, $visible_columns ) ) {
345
+ $columns[$key] = $all_default_columns[$key];
346
+ }
347
+ }
348
+ $columns['details'] = $all_default_columns['details'];
349
+ }
350
+
351
+ $this->visible_columns = apply_filters( 'rtb_bookings_table_columns', $columns );
352
+
353
+ return $this->visible_columns;
354
+ }
355
+
356
+ /**
357
+ * Retrieve all default columns
358
+ *
359
+ * @since 1.5
360
+ */
361
+ public function get_all_default_columns() {
362
+ return array(
363
  'cb' => '<input type="checkbox" />', //Render a checkbox instead of text
364
  'date' => __( 'Date', 'restaurant-reservations' ),
365
  'party' => __( 'Party', 'restaurant-reservations' ),
366
  'name' => __( 'Name', 'restaurant-reservations' ),
367
  'email' => __( 'Email', 'restaurant-reservations' ),
368
  'phone' => __( 'Phone', 'restaurant-reservations' ),
369
+ 'status' => __( 'Status', 'restaurant-reservations' ),
370
+ 'details' => __( 'Details', 'restaurant-reservations' ),
371
  );
372
+ }
373
 
374
+ /**
375
+ * Retrieve all available columns
376
+ *
377
+ * This is used to get all columns including those deactivated and filtered
378
+ * out via get_columns().
379
+ *
380
+ * @since 1.5
381
+ */
382
+ public function get_all_columns() {
383
+ $columns = $this->get_all_default_columns();
384
+ return apply_filters( 'rtb_bookings_all_table_columns', $columns );
385
  }
386
 
387
  /**
429
  case 'phone' :
430
  $value = $booking->phone;
431
  break;
 
 
 
 
 
 
 
432
  case 'status' :
433
  global $rtb_controller;
434
  if ( !empty( $rtb_controller->cpts->booking_statuses[$booking->post_status] ) ) {
439
  $value = $booking->post_status;
440
  }
441
  break;
442
+ case 'details' :
443
+ $value = '';
444
+
445
+ $details = array();
446
+ if ( trim( $booking->message ) ) {
447
+ $details[] = array(
448
+ 'label' => __( 'Message', 'restaurant-reservations' ),
449
+ 'value' => $booking->message,
450
+ );
451
+ }
452
+
453
+ $details = apply_filters( 'rtb_bookings_table_column_details', $details, $booking );
454
+
455
+ if ( !empty( $details ) ) {
456
+ $value = '<a href="#" class="rtb-show-details" data-id="details-' . esc_attr( $booking->ID ) . '"><span class="dashicons dashicons-testimonial"></span></a>';
457
+ $value .= '<div class="rtb-details-data"><ul class="details">';
458
+ foreach( $details as $detail ) {
459
+ $value .= '<li><div class="label">' . $detail['label'] . '</div><div class="value">' . $detail['value'] . '</div></li>';
460
+ }
461
+ $value .= '</ul></div>';
462
+ }
463
+ break;
464
  default:
465
  $value = isset( $booking->$column_name ) ? $booking->$column_name : '';
466
  break;
482
  );
483
  }
484
 
485
+ /**
486
+ * Add hidden columns values to the details column
487
+ *
488
+ * This only handles the default columns. Custom data needs to hook in and
489
+ * add it's own items to the $details array.
490
+ *
491
+ * @since 1.5
492
+ */
493
+ public function add_details_column_items( $details, $booking ) {
494
+ global $rtb_controller;
495
+ $visible_columns = $this->get_columns();
496
+ $default_columns = $this->get_all_default_columns();
497
+
498
+ // Columns which can't be hidden
499
+ unset( $default_columns['cb'] );
500
+ unset( $default_columns['details'] );
501
+ unset( $default_columns['date'] );
502
+
503
+ $detail_columns = array_diff( $default_columns, $visible_columns );
504
+
505
+ if ( !empty( $detail_columns ) ) {
506
+ foreach( $detail_columns as $key => $label ) {
507
+
508
+ $value = $this->column_default( $booking, $key );
509
+ if ( empty( $value ) ) {
510
+ continue;
511
+ }
512
+
513
+ $details[] = array(
514
+ 'label' => $label,
515
+ 'value' => $value,
516
+ );
517
+ }
518
+ }
519
+
520
+ return $details;
521
+ }
522
+
523
  /**
524
  * Retrieve the bulk actions
525
  * @since 0.0.1
696
  } elseif ( !empty( $_GET['date_range'] ) ) {
697
 
698
  if ( $_GET['date_range'] == 'today' ) {
699
+ $where .= " AND p.post_date >= '" . date( 'Y-m-d', current_time( 'timestamp' ) ) . "' AND p.post_date < '" . date( 'Y-m-d', current_time( 'timestamp' ) + 86400 ) . "'";
700
  }
701
 
702
  // Default date setting is to show upcoming bookings
languages/restaurant-reservations.pot CHANGED
@@ -2,10 +2,10 @@
2
  # This file is distributed under the same license as the Restaurant Reservations package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Restaurant Reservations 1.4.9\n"
6
  "Report-Msgid-Bugs-To: "
7
  "http://wordpress.org/support/plugin/restaurant-reservations\n"
8
- "POT-Creation-Date: 2015-10-06 18:38:20+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=utf-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
@@ -26,7 +26,7 @@ msgstr ""
26
  "X-Textdomain-Support: yes\n"
27
 
28
  #: includes/Addons.class.php:101
29
- #: includes/WP_List_Table.BookingsTable.class.php:347
30
  msgid "Loading"
31
  msgstr ""
32
 
@@ -52,91 +52,104 @@ msgid ""
52
  "target=\"_blank\">support forums</a>."
53
  msgstr ""
54
 
55
- #: includes/AdminBookings.class.php:67
56
  msgid "Restaurant Bookings"
57
  msgstr ""
58
 
59
- #: includes/AdminBookings.class.php:68 includes/CustomPostTypes.class.php:42
60
  msgid "Add New"
61
  msgstr ""
62
 
63
- #: includes/AdminBookings.class.php:116 restaurant-reservations.php:226
 
 
 
 
64
  msgid "Add Booking"
65
  msgstr ""
66
 
67
- #: includes/AdminBookings.class.php:119 includes/AdminBookings.class.php:160
 
68
  msgid "Cancel"
69
  msgstr ""
70
 
71
- #: includes/AdminBookings.class.php:140 includes/AdminBookings.class.php:157
72
- #: includes/WP_List_Table.BookingsTable.class.php:366
73
  msgid "Send Email"
74
  msgstr ""
75
 
76
- #: includes/AdminBookings.class.php:147
77
  msgid "Subject"
78
  msgstr ""
79
 
80
- #: includes/AdminBookings.class.php:151 includes/Settings.class.php:826
81
- #: includes/WP_List_Table.BookingsTable.class.php:320
82
  msgid "Message"
83
  msgstr ""
84
 
85
- #: includes/AdminBookings.class.php:174
 
 
 
 
86
  msgid "Close"
87
  msgstr ""
88
 
89
- #: includes/AdminBookings.class.php:240
90
  msgid "Booking Status"
91
  msgstr ""
92
 
93
- #: includes/AdminBookings.class.php:248
94
  msgid "Send notifications"
95
  msgstr ""
96
 
97
- #: includes/AdminBookings.class.php:253
98
  msgid "Learn more"
99
  msgstr ""
100
 
101
- #: includes/AdminBookings.class.php:254
102
  msgid ""
103
  "When adding a booking or changing a booking's status with this form, no "
104
  "email notifications will be sent. Check this option if you want to send "
105
  "email notifications."
106
  msgstr ""
107
 
108
- #: includes/AdminBookings.class.php:308
109
  msgid "You have been logged out. Please %slogin again%s."
110
  msgstr ""
111
 
112
- #: includes/AdminBookings.class.php:344
113
  msgid ""
114
  "This booking has been sent to the %sTrash%s where it can not be edited. Set "
115
  "the booking to Pending or Confirmed to edit it."
116
  msgstr ""
117
 
118
- #: includes/AdminBookings.class.php:361
119
  msgid "The booking could not be retrieved. Please reload the page and try again."
120
  msgstr ""
121
 
122
- #: includes/AdminBookings.class.php:443
123
  msgid ""
124
  "Unable to trash this post. Please try again. If you continue to have "
125
  "trouble, please refresh the page."
126
  msgstr ""
127
 
128
- #: includes/AdminBookings.class.php:485
129
  msgid "Please enter a message before sending the email."
130
  msgstr ""
131
 
132
- #: includes/AdminBookings.class.php:494
133
  msgid "The email could not be sent because some critical information was missing."
134
  msgstr ""
135
 
136
- #: includes/AdminBookings.class.php:506
137
  msgid "There was an error loading the booking and the email was not sent."
138
  msgstr ""
139
 
 
 
 
 
140
  #: includes/AdminPageSettingLicenseKey.class.php:193
141
  msgid "Invalid"
142
  msgstr ""
@@ -215,12 +228,12 @@ msgstr ""
215
 
216
  #: includes/CustomPostTypes.class.php:38 includes/CustomPostTypes.class.php:40
217
  #: includes/CustomPostTypes.class.php:41
218
- #: includes/WP_List_Table.BookingsTable.class.php:97
219
  msgid "Bookings"
220
  msgstr ""
221
 
222
  #: includes/CustomPostTypes.class.php:39
223
- #: includes/WP_List_Table.BookingsTable.class.php:96
224
  msgid "Booking"
225
  msgstr ""
226
 
@@ -675,7 +688,7 @@ msgid "Book a table"
675
  msgstr ""
676
 
677
  #: includes/Settings.class.php:770
678
- #: includes/WP_List_Table.BookingsTable.class.php:315
679
  msgid "Date"
680
  msgstr ""
681
 
@@ -684,7 +697,7 @@ msgid "Time"
684
  msgstr ""
685
 
686
  #: includes/Settings.class.php:782
687
- #: includes/WP_List_Table.BookingsTable.class.php:316
688
  msgid "Party"
689
  msgstr ""
690
 
@@ -693,17 +706,17 @@ msgid "Contact Details"
693
  msgstr ""
694
 
695
  #: includes/Settings.class.php:798
696
- #: includes/WP_List_Table.BookingsTable.class.php:317
697
  msgid "Name"
698
  msgstr ""
699
 
700
  #: includes/Settings.class.php:804
701
- #: includes/WP_List_Table.BookingsTable.class.php:318
702
  msgid "Email"
703
  msgstr ""
704
 
705
  #: includes/Settings.class.php:813
706
- #: includes/WP_List_Table.BookingsTable.class.php:319
707
  msgid "Phone"
708
  msgstr ""
709
 
@@ -759,123 +772,127 @@ msgstr ""
759
  msgid "Current date and time"
760
  msgstr ""
761
 
762
- #: includes/WP_List_Table.BookingsTable.class.php:207
763
  msgid "Upcoming"
764
  msgstr ""
765
 
766
- #: includes/WP_List_Table.BookingsTable.class.php:208
767
  msgid "Today"
768
  msgstr ""
769
 
770
- #: includes/WP_List_Table.BookingsTable.class.php:209
771
- #: includes/WP_List_Table.BookingsTable.class.php:267
772
  msgid "All"
773
  msgstr ""
774
 
775
- #: includes/WP_List_Table.BookingsTable.class.php:225
776
  msgid "Start Date:"
777
  msgstr ""
778
 
779
- #: includes/WP_List_Table.BookingsTable.class.php:226
780
  msgid "Start Date"
781
  msgstr ""
782
 
783
- #: includes/WP_List_Table.BookingsTable.class.php:227
784
  msgid "End Date:"
785
  msgstr ""
786
 
787
- #: includes/WP_List_Table.BookingsTable.class.php:228
788
  msgid "End Date"
789
  msgstr ""
790
 
791
- #: includes/WP_List_Table.BookingsTable.class.php:229
792
  msgid "Apply"
793
  msgstr ""
794
 
795
- #: includes/WP_List_Table.BookingsTable.class.php:231
796
  msgid "Clear Filter"
797
  msgstr ""
798
 
799
- #: includes/WP_List_Table.BookingsTable.class.php:268
800
  msgid "Pending"
801
  msgstr ""
802
 
803
- #: includes/WP_List_Table.BookingsTable.class.php:269
804
  msgid "Confirmed"
805
  msgstr ""
806
 
807
- #: includes/WP_List_Table.BookingsTable.class.php:270
808
  msgid "Closed"
809
  msgstr ""
810
 
811
- #: includes/WP_List_Table.BookingsTable.class.php:271
812
- #: includes/WP_List_Table.BookingsTable.class.php:352
813
  msgid "Trash"
814
  msgstr ""
815
 
816
- #: includes/WP_List_Table.BookingsTable.class.php:321
817
  msgid "Status"
818
  msgstr ""
819
 
820
- #: includes/WP_List_Table.BookingsTable.class.php:351
 
 
 
 
821
  msgid "Edit"
822
  msgstr ""
823
 
824
- #: includes/WP_List_Table.BookingsTable.class.php:416
825
  msgid "Delete"
826
  msgstr ""
827
 
828
- #: includes/WP_List_Table.BookingsTable.class.php:417
829
  msgid "Set To Confirmed"
830
  msgstr ""
831
 
832
- #: includes/WP_List_Table.BookingsTable.class.php:418
833
  msgid "Set To Pending Review"
834
  msgstr ""
835
 
836
- #: includes/WP_List_Table.BookingsTable.class.php:419
837
  msgid "Set To Closed"
838
  msgstr ""
839
 
840
- #: includes/WP_List_Table.BookingsTable.class.php:533
841
  msgid "%d booking deleted successfully."
842
  msgid_plural "%d bookings deleted successfully."
843
  msgstr[0] ""
844
  msgstr[1] ""
845
 
846
- #: includes/WP_List_Table.BookingsTable.class.php:536
847
  msgid "%d booking confirmed."
848
  msgid_plural "%d bookings confirmed."
849
  msgstr[0] ""
850
  msgstr[1] ""
851
 
852
- #: includes/WP_List_Table.BookingsTable.class.php:539
853
  msgid "%d booking set to pending."
854
  msgid_plural "%d bookings set to pending."
855
  msgstr[0] ""
856
  msgstr[1] ""
857
 
858
- #: includes/WP_List_Table.BookingsTable.class.php:542
859
  msgid "%d booking closed."
860
  msgid_plural "%d bookings closed."
861
  msgstr[0] ""
862
  msgstr[1] ""
863
 
864
- #: includes/WP_List_Table.BookingsTable.class.php:554
865
  msgid "%d booking had errors and could not be processed."
866
  msgid_plural "%d bookings had errors and could not be processed."
867
  msgstr[0] ""
868
  msgstr[1] ""
869
 
870
- #: includes/WP_List_Table.BookingsTable.class.php:681
871
  msgid "You're viewing bookings that have been moved to the trash."
872
  msgstr ""
873
 
874
- #: includes/WP_List_Table.BookingsTable.class.php:690
875
  msgid "Only today's bookings are being shown."
876
  msgstr ""
877
 
878
- #: includes/WP_List_Table.BookingsTable.class.php:692
879
  msgid "Only upcoming bookings are being shown."
880
  msgstr ""
881
 
@@ -921,9 +938,9 @@ msgstr ""
921
  msgid "Restaurant Reservations"
922
  msgstr ""
923
 
924
- #. #-#-#-#-# restaurant-reservations.pot (Restaurant Reservations 1.4.9) #-#-#-#-#
925
  #. Plugin URI of the plugin/theme
926
- #. #-#-#-#-# restaurant-reservations.pot (Restaurant Reservations 1.4.9) #-#-#-#-#
927
  #. Author URI of the plugin/theme
928
  msgid "http://themeofthecrop.com"
929
  msgstr ""
@@ -985,17 +1002,17 @@ msgid ""
985
  "sent to the email address you provided."
986
  msgstr ""
987
 
988
- #: includes/AdminBookings.class.php:43
989
  msgctxt "Title of admin page that lists bookings"
990
  msgid "Bookings"
991
  msgstr ""
992
 
993
- #: includes/AdminBookings.class.php:44
994
  msgctxt "Title of bookings admin menu item"
995
  msgid "Bookings"
996
  msgstr ""
997
 
998
- #: includes/AdminBookings.class.php:143
999
  msgctxt "Label next to the email address to which an email will be sent"
1000
  msgid "To"
1001
  msgstr ""
@@ -1319,32 +1336,32 @@ msgctxt "Brief default description of a scheduling exception when no times are s
1319
  msgid "Closed all day"
1320
  msgstr ""
1321
 
1322
- #: includes/WP_List_Table.BookingsTable.class.php:158
1323
- #: includes/WP_List_Table.BookingsTable.class.php:160
1324
  msgctxt ""
1325
  "No date limit in a date range, eg 2014-* would mean any date from 2014 or "
1326
  "after"
1327
  msgid "*"
1328
  msgstr ""
1329
 
1330
- #: includes/WP_List_Table.BookingsTable.class.php:159
1331
  msgctxt "Separator between two dates in a date range"
1332
  msgid "&mdash;"
1333
  msgstr ""
1334
 
1335
- #: includes/WP_List_Table.BookingsTable.class.php:384
1336
  msgctxt "Status label for bookings put in the trash"
1337
  msgid "Trash"
1338
  msgstr ""
1339
 
1340
- #: includes/WP_List_Table.BookingsTable.class.php:683
1341
  msgctxt ""
1342
  "Indicates which booking status is currently being filtered in the list of "
1343
  "bookings."
1344
  msgid "You're viewing bookings that have been marked as %s."
1345
  msgstr ""
1346
 
1347
- #: includes/WP_List_Table.BookingsTable.class.php:688
1348
  msgctxt "Notification of booking date range, eg - bookings from 2014-12-02-2014-12-05"
1349
  msgid "Only bookings from %s are being shown."
1350
  msgstr ""
2
  # This file is distributed under the same license as the Restaurant Reservations package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Restaurant Reservations 1.5\n"
6
  "Report-Msgid-Bugs-To: "
7
  "http://wordpress.org/support/plugin/restaurant-reservations\n"
8
+ "POT-Creation-Date: 2015-12-17 15:05:31+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=utf-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
26
  "X-Textdomain-Support: yes\n"
27
 
28
  #: includes/Addons.class.php:101
29
+ #: includes/WP_List_Table.BookingsTable.class.php:407
30
  msgid "Loading"
31
  msgstr ""
32
 
52
  "target=\"_blank\">support forums</a>."
53
  msgstr ""
54
 
55
+ #: includes/AdminBookings.class.php:72
56
  msgid "Restaurant Bookings"
57
  msgstr ""
58
 
59
+ #: includes/AdminBookings.class.php:73 includes/CustomPostTypes.class.php:42
60
  msgid "Add New"
61
  msgstr ""
62
 
63
+ #: includes/AdminBookings.class.php:106 includes/AdminBookings.class.php:208
64
+ msgid "Columns"
65
+ msgstr ""
66
+
67
+ #: includes/AdminBookings.class.php:146 restaurant-reservations.php:226
68
  msgid "Add Booking"
69
  msgstr ""
70
 
71
+ #: includes/AdminBookings.class.php:149 includes/AdminBookings.class.php:190
72
+ #: includes/AdminBookings.class.php:236
73
  msgid "Cancel"
74
  msgstr ""
75
 
76
+ #: includes/AdminBookings.class.php:170 includes/AdminBookings.class.php:187
77
+ #: includes/WP_List_Table.BookingsTable.class.php:426
78
  msgid "Send Email"
79
  msgstr ""
80
 
81
+ #: includes/AdminBookings.class.php:177
82
  msgid "Subject"
83
  msgstr ""
84
 
85
+ #: includes/AdminBookings.class.php:181 includes/Settings.class.php:826
86
+ #: includes/WP_List_Table.BookingsTable.class.php:448
87
  msgid "Message"
88
  msgstr ""
89
 
90
+ #: includes/AdminBookings.class.php:233
91
+ msgid "Update"
92
+ msgstr ""
93
+
94
+ #: includes/AdminBookings.class.php:252 includes/AdminBookings.class.php:261
95
  msgid "Close"
96
  msgstr ""
97
 
98
+ #: includes/AdminBookings.class.php:327
99
  msgid "Booking Status"
100
  msgstr ""
101
 
102
+ #: includes/AdminBookings.class.php:335
103
  msgid "Send notifications"
104
  msgstr ""
105
 
106
+ #: includes/AdminBookings.class.php:340
107
  msgid "Learn more"
108
  msgstr ""
109
 
110
+ #: includes/AdminBookings.class.php:341
111
  msgid ""
112
  "When adding a booking or changing a booking's status with this form, no "
113
  "email notifications will be sent. Check this option if you want to send "
114
  "email notifications."
115
  msgstr ""
116
 
117
+ #: includes/AdminBookings.class.php:395
118
  msgid "You have been logged out. Please %slogin again%s."
119
  msgstr ""
120
 
121
+ #: includes/AdminBookings.class.php:431
122
  msgid ""
123
  "This booking has been sent to the %sTrash%s where it can not be edited. Set "
124
  "the booking to Pending or Confirmed to edit it."
125
  msgstr ""
126
 
127
+ #: includes/AdminBookings.class.php:448
128
  msgid "The booking could not be retrieved. Please reload the page and try again."
129
  msgstr ""
130
 
131
+ #: includes/AdminBookings.class.php:530
132
  msgid ""
133
  "Unable to trash this post. Please try again. If you continue to have "
134
  "trouble, please refresh the page."
135
  msgstr ""
136
 
137
+ #: includes/AdminBookings.class.php:572
138
  msgid "Please enter a message before sending the email."
139
  msgstr ""
140
 
141
+ #: includes/AdminBookings.class.php:581
142
  msgid "The email could not be sent because some critical information was missing."
143
  msgstr ""
144
 
145
+ #: includes/AdminBookings.class.php:593
146
  msgid "There was an error loading the booking and the email was not sent."
147
  msgstr ""
148
 
149
+ #: includes/AdminBookings.class.php:631
150
+ msgid "You must select at least one column to display."
151
+ msgstr ""
152
+
153
  #: includes/AdminPageSettingLicenseKey.class.php:193
154
  msgid "Invalid"
155
  msgstr ""
228
 
229
  #: includes/CustomPostTypes.class.php:38 includes/CustomPostTypes.class.php:40
230
  #: includes/CustomPostTypes.class.php:41
231
+ #: includes/WP_List_Table.BookingsTable.class.php:105
232
  msgid "Bookings"
233
  msgstr ""
234
 
235
  #: includes/CustomPostTypes.class.php:39
236
+ #: includes/WP_List_Table.BookingsTable.class.php:104
237
  msgid "Booking"
238
  msgstr ""
239
 
688
  msgstr ""
689
 
690
  #: includes/Settings.class.php:770
691
+ #: includes/WP_List_Table.BookingsTable.class.php:364
692
  msgid "Date"
693
  msgstr ""
694
 
697
  msgstr ""
698
 
699
  #: includes/Settings.class.php:782
700
+ #: includes/WP_List_Table.BookingsTable.class.php:365
701
  msgid "Party"
702
  msgstr ""
703
 
706
  msgstr ""
707
 
708
  #: includes/Settings.class.php:798
709
+ #: includes/WP_List_Table.BookingsTable.class.php:366
710
  msgid "Name"
711
  msgstr ""
712
 
713
  #: includes/Settings.class.php:804
714
+ #: includes/WP_List_Table.BookingsTable.class.php:367
715
  msgid "Email"
716
  msgstr ""
717
 
718
  #: includes/Settings.class.php:813
719
+ #: includes/WP_List_Table.BookingsTable.class.php:368
720
  msgid "Phone"
721
  msgstr ""
722
 
772
  msgid "Current date and time"
773
  msgstr ""
774
 
775
+ #: includes/WP_List_Table.BookingsTable.class.php:218
776
  msgid "Upcoming"
777
  msgstr ""
778
 
779
+ #: includes/WP_List_Table.BookingsTable.class.php:219
780
  msgid "Today"
781
  msgstr ""
782
 
783
+ #: includes/WP_List_Table.BookingsTable.class.php:220
784
+ #: includes/WP_List_Table.BookingsTable.class.php:278
785
  msgid "All"
786
  msgstr ""
787
 
788
+ #: includes/WP_List_Table.BookingsTable.class.php:236
789
  msgid "Start Date:"
790
  msgstr ""
791
 
792
+ #: includes/WP_List_Table.BookingsTable.class.php:237
793
  msgid "Start Date"
794
  msgstr ""
795
 
796
+ #: includes/WP_List_Table.BookingsTable.class.php:238
797
  msgid "End Date:"
798
  msgstr ""
799
 
800
+ #: includes/WP_List_Table.BookingsTable.class.php:239
801
  msgid "End Date"
802
  msgstr ""
803
 
804
+ #: includes/WP_List_Table.BookingsTable.class.php:240
805
  msgid "Apply"
806
  msgstr ""
807
 
808
+ #: includes/WP_List_Table.BookingsTable.class.php:242
809
  msgid "Clear Filter"
810
  msgstr ""
811
 
812
+ #: includes/WP_List_Table.BookingsTable.class.php:279
813
  msgid "Pending"
814
  msgstr ""
815
 
816
+ #: includes/WP_List_Table.BookingsTable.class.php:280
817
  msgid "Confirmed"
818
  msgstr ""
819
 
820
+ #: includes/WP_List_Table.BookingsTable.class.php:281
821
  msgid "Closed"
822
  msgstr ""
823
 
824
+ #: includes/WP_List_Table.BookingsTable.class.php:282
825
+ #: includes/WP_List_Table.BookingsTable.class.php:412
826
  msgid "Trash"
827
  msgstr ""
828
 
829
+ #: includes/WP_List_Table.BookingsTable.class.php:369
830
  msgid "Status"
831
  msgstr ""
832
 
833
+ #: includes/WP_List_Table.BookingsTable.class.php:370
834
+ msgid "Details"
835
+ msgstr ""
836
+
837
+ #: includes/WP_List_Table.BookingsTable.class.php:411
838
  msgid "Edit"
839
  msgstr ""
840
 
841
+ #: includes/WP_List_Table.BookingsTable.class.php:529
842
  msgid "Delete"
843
  msgstr ""
844
 
845
+ #: includes/WP_List_Table.BookingsTable.class.php:530
846
  msgid "Set To Confirmed"
847
  msgstr ""
848
 
849
+ #: includes/WP_List_Table.BookingsTable.class.php:531
850
  msgid "Set To Pending Review"
851
  msgstr ""
852
 
853
+ #: includes/WP_List_Table.BookingsTable.class.php:532
854
  msgid "Set To Closed"
855
  msgstr ""
856
 
857
+ #: includes/WP_List_Table.BookingsTable.class.php:646
858
  msgid "%d booking deleted successfully."
859
  msgid_plural "%d bookings deleted successfully."
860
  msgstr[0] ""
861
  msgstr[1] ""
862
 
863
+ #: includes/WP_List_Table.BookingsTable.class.php:649
864
  msgid "%d booking confirmed."
865
  msgid_plural "%d bookings confirmed."
866
  msgstr[0] ""
867
  msgstr[1] ""
868
 
869
+ #: includes/WP_List_Table.BookingsTable.class.php:652
870
  msgid "%d booking set to pending."
871
  msgid_plural "%d bookings set to pending."
872
  msgstr[0] ""
873
  msgstr[1] ""
874
 
875
+ #: includes/WP_List_Table.BookingsTable.class.php:655
876
  msgid "%d booking closed."
877
  msgid_plural "%d bookings closed."
878
  msgstr[0] ""
879
  msgstr[1] ""
880
 
881
+ #: includes/WP_List_Table.BookingsTable.class.php:667
882
  msgid "%d booking had errors and could not be processed."
883
  msgid_plural "%d bookings had errors and could not be processed."
884
  msgstr[0] ""
885
  msgstr[1] ""
886
 
887
+ #: includes/WP_List_Table.BookingsTable.class.php:794
888
  msgid "You're viewing bookings that have been moved to the trash."
889
  msgstr ""
890
 
891
+ #: includes/WP_List_Table.BookingsTable.class.php:803
892
  msgid "Only today's bookings are being shown."
893
  msgstr ""
894
 
895
+ #: includes/WP_List_Table.BookingsTable.class.php:805
896
  msgid "Only upcoming bookings are being shown."
897
  msgstr ""
898
 
938
  msgid "Restaurant Reservations"
939
  msgstr ""
940
 
941
+ #. #-#-#-#-# restaurant-reservations.pot (Restaurant Reservations 1.5) #-#-#-#-#
942
  #. Plugin URI of the plugin/theme
943
+ #. #-#-#-#-# restaurant-reservations.pot (Restaurant Reservations 1.5) #-#-#-#-#
944
  #. Author URI of the plugin/theme
945
  msgid "http://themeofthecrop.com"
946
  msgstr ""
1002
  "sent to the email address you provided."
1003
  msgstr ""
1004
 
1005
+ #: includes/AdminBookings.class.php:48
1006
  msgctxt "Title of admin page that lists bookings"
1007
  msgid "Bookings"
1008
  msgstr ""
1009
 
1010
+ #: includes/AdminBookings.class.php:49
1011
  msgctxt "Title of bookings admin menu item"
1012
  msgid "Bookings"
1013
  msgstr ""
1014
 
1015
+ #: includes/AdminBookings.class.php:173
1016
  msgctxt "Label next to the email address to which an email will be sent"
1017
  msgid "To"
1018
  msgstr ""
1336
  msgid "Closed all day"
1337
  msgstr ""
1338
 
1339
+ #: includes/WP_List_Table.BookingsTable.class.php:169
1340
+ #: includes/WP_List_Table.BookingsTable.class.php:171
1341
  msgctxt ""
1342
  "No date limit in a date range, eg 2014-* would mean any date from 2014 or "
1343
  "after"
1344
  msgid "*"
1345
  msgstr ""
1346
 
1347
+ #: includes/WP_List_Table.BookingsTable.class.php:170
1348
  msgctxt "Separator between two dates in a date range"
1349
  msgid "&mdash;"
1350
  msgstr ""
1351
 
1352
+ #: includes/WP_List_Table.BookingsTable.class.php:437
1353
  msgctxt "Status label for bookings put in the trash"
1354
  msgid "Trash"
1355
  msgstr ""
1356
 
1357
+ #: includes/WP_List_Table.BookingsTable.class.php:796
1358
  msgctxt ""
1359
  "Indicates which booking status is currently being filtered in the list of "
1360
  "bookings."
1361
  msgid "You're viewing bookings that have been marked as %s."
1362
  msgstr ""
1363
 
1364
+ #: includes/WP_List_Table.BookingsTable.class.php:801
1365
  msgctxt "Notification of booking date range, eg - bookings from 2014-12-02-2014-12-05"
1366
  msgid "Only bookings from %s are being shown."
1367
  msgstr ""
readme.txt CHANGED
@@ -5,7 +5,7 @@ Plugin URL: http://themeofthecrop.com
5
  Requires at Least: 3.8
6
  Tested Up To: 4.4
7
  Tags: restaurant, reservations, bookings, table bookings, restaurant reservation, table reservation
8
- Stable tag: 1.4.10
9
  License: GPLv2 or later
10
  Donate link: http://themeofthecrop.com
11
 
@@ -106,6 +106,13 @@ The addon, [Custom Fields for Restaurant Reservations](http://themeofthecrop.com
106
 
107
  == Changelog ==
108
 
 
 
 
 
 
 
 
109
  = 1.4.10 (2015-10-29) =
110
  * Fix: Allow settings page required capability to be filtered later
111
  * Fix: Compatibility issue with old versions of jQuery
@@ -249,6 +256,9 @@ The addon, [Custom Fields for Restaurant Reservations](http://themeofthecrop.com
249
 
250
  == Upgrade Notice ==
251
 
 
 
 
252
  = 1.4.10 =
253
  This update includes a new Spanish translation and a few minor fixes. Updating isn't necessary for most people.
254
 
5
  Requires at Least: 3.8
6
  Tested Up To: 4.4
7
  Tags: restaurant, reservations, bookings, table bookings, restaurant reservation, table reservation
8
+ Stable tag: 1.5
9
  License: GPLv2 or later
10
  Donate link: http://themeofthecrop.com
11
 
106
 
107
  == Changelog ==
108
 
109
+ = 1.5 (2015-12-17) =
110
+ * Fix: pickadate iOS bug
111
+ * Fix: Bookings table's Today view didn't respect WordPress timezone setting
112
+ * Add: Allow bookings table columns to be toggled on/off
113
+ * Update: Convert message column/row drop-down to a details modal for all hidden columns
114
+ * Update: Put focus into message field when expanded in booking form
115
+
116
  = 1.4.10 (2015-10-29) =
117
  * Fix: Allow settings page required capability to be filtered later
118
  * Fix: Compatibility issue with old versions of jQuery
256
 
257
  == Upgrade Notice ==
258
 
259
+ = 1.5 =
260
+ This update adds the ability to configure which columns are visible in the bookings table. It works with the Custom Fields addon. If you have added fields using custom code, please read the release notification at themeofthecrop.com before updating.
261
+
262
  = 1.4.10 =
263
  This update includes a new Spanish translation and a few minor fixes. Updating isn't necessary for most people.
264
 
restaurant-reservations.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Restaurant Reservations
4
  * Plugin URI: http://themeofthecrop.com
5
  * Description: Accept restaurant reservations and bookings online.
6
- * Version: 1.4.10
7
  * Author: Theme of the Crop
8
  * Author URI: http://themeofthecrop.com
9
  * License: GNU General Public License v2.0 or later
3
  * Plugin Name: Restaurant Reservations
4
  * Plugin URI: http://themeofthecrop.com
5
  * Description: Accept restaurant reservations and bookings online.
6
+ * Version: 1.5
7
  * Author: Theme of the Crop
8
  * Author URI: http://themeofthecrop.com
9
  * License: GNU General Public License v2.0 or later