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 | Restaurant Reservations |
Version | 1.5 |
Comparing to | |
See all releases |
Code changes from version 1.4.10 to 1.5
- assets/addons-backup.json +1 -1
- assets/css/admin.css +60 -18
- assets/js/admin.js +146 -29
- assets/js/booking-form.js +2 -1
- includes/AdminBookings.class.php +122 -6
- includes/Compatibility.class.php +53 -0
- includes/Query.class.php +3 -4
- includes/WP_List_Table.BookingsTable.class.php +126 -13
- languages/restaurant-reservations.pot +88 -71
- readme.txt +11 -1
- restaurant-reservations.php +1 -1
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 .
|
54 |
-
|
55 |
-
|
|
|
|
|
|
|
|
|
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#
|
85 |
-
width:
|
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
|
155 |
-
#rtb-bookings-table .column-
|
156 |
display: block;
|
157 |
}
|
158 |
|
159 |
-
#rtb-bookings-table .column-
|
160 |
display: none;
|
161 |
}
|
162 |
}
|
@@ -238,15 +269,9 @@
|
|
238 |
display: block;
|
239 |
}
|
240 |
|
241 |
-
|
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
|
25 |
-
$( '
|
26 |
-
|
27 |
-
|
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 |
-
*
|
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 |
-
|
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 == '
|
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
|
18 |
-
add_action( 'admin_footer-toplevel_page_rtb-bookings', array( $this, '
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
* @since 0.0.1
|
89 |
*/
|
90 |
-
public function
|
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 |
-
$
|
105 |
-
$args['
|
106 |
-
$args['
|
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
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
'
|
321 |
-
'
|
322 |
);
|
|
|
323 |
|
324 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
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.
|
6 |
"Report-Msgid-Bugs-To: "
|
7 |
"http://wordpress.org/support/plugin/restaurant-reservations\n"
|
8 |
-
"POT-Creation-Date: 2015-
|
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:
|
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:
|
56 |
msgid "Restaurant Bookings"
|
57 |
msgstr ""
|
58 |
|
59 |
-
#: includes/AdminBookings.class.php:
|
60 |
msgid "Add New"
|
61 |
msgstr ""
|
62 |
|
63 |
-
#: includes/AdminBookings.class.php:
|
|
|
|
|
|
|
|
|
64 |
msgid "Add Booking"
|
65 |
msgstr ""
|
66 |
|
67 |
-
#: includes/AdminBookings.class.php:
|
|
|
68 |
msgid "Cancel"
|
69 |
msgstr ""
|
70 |
|
71 |
-
#: includes/AdminBookings.class.php:
|
72 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
73 |
msgid "Send Email"
|
74 |
msgstr ""
|
75 |
|
76 |
-
#: includes/AdminBookings.class.php:
|
77 |
msgid "Subject"
|
78 |
msgstr ""
|
79 |
|
80 |
-
#: includes/AdminBookings.class.php:
|
81 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
82 |
msgid "Message"
|
83 |
msgstr ""
|
84 |
|
85 |
-
#: includes/AdminBookings.class.php:
|
|
|
|
|
|
|
|
|
86 |
msgid "Close"
|
87 |
msgstr ""
|
88 |
|
89 |
-
#: includes/AdminBookings.class.php:
|
90 |
msgid "Booking Status"
|
91 |
msgstr ""
|
92 |
|
93 |
-
#: includes/AdminBookings.class.php:
|
94 |
msgid "Send notifications"
|
95 |
msgstr ""
|
96 |
|
97 |
-
#: includes/AdminBookings.class.php:
|
98 |
msgid "Learn more"
|
99 |
msgstr ""
|
100 |
|
101 |
-
#: includes/AdminBookings.class.php:
|
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:
|
109 |
msgid "You have been logged out. Please %slogin again%s."
|
110 |
msgstr ""
|
111 |
|
112 |
-
#: includes/AdminBookings.class.php:
|
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:
|
119 |
msgid "The booking could not be retrieved. Please reload the page and try again."
|
120 |
msgstr ""
|
121 |
|
122 |
-
#: includes/AdminBookings.class.php:
|
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:
|
129 |
msgid "Please enter a message before sending the email."
|
130 |
msgstr ""
|
131 |
|
132 |
-
#: includes/AdminBookings.class.php:
|
133 |
msgid "The email could not be sent because some critical information was missing."
|
134 |
msgstr ""
|
135 |
|
136 |
-
#: includes/AdminBookings.class.php:
|
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:
|
219 |
msgid "Bookings"
|
220 |
msgstr ""
|
221 |
|
222 |
#: includes/CustomPostTypes.class.php:39
|
223 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
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:
|
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:
|
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:
|
697 |
msgid "Name"
|
698 |
msgstr ""
|
699 |
|
700 |
#: includes/Settings.class.php:804
|
701 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
702 |
msgid "Email"
|
703 |
msgstr ""
|
704 |
|
705 |
#: includes/Settings.class.php:813
|
706 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
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:
|
763 |
msgid "Upcoming"
|
764 |
msgstr ""
|
765 |
|
766 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
767 |
msgid "Today"
|
768 |
msgstr ""
|
769 |
|
770 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
771 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
772 |
msgid "All"
|
773 |
msgstr ""
|
774 |
|
775 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
776 |
msgid "Start Date:"
|
777 |
msgstr ""
|
778 |
|
779 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
780 |
msgid "Start Date"
|
781 |
msgstr ""
|
782 |
|
783 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
784 |
msgid "End Date:"
|
785 |
msgstr ""
|
786 |
|
787 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
788 |
msgid "End Date"
|
789 |
msgstr ""
|
790 |
|
791 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
792 |
msgid "Apply"
|
793 |
msgstr ""
|
794 |
|
795 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
796 |
msgid "Clear Filter"
|
797 |
msgstr ""
|
798 |
|
799 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
800 |
msgid "Pending"
|
801 |
msgstr ""
|
802 |
|
803 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
804 |
msgid "Confirmed"
|
805 |
msgstr ""
|
806 |
|
807 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
808 |
msgid "Closed"
|
809 |
msgstr ""
|
810 |
|
811 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
812 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
813 |
msgid "Trash"
|
814 |
msgstr ""
|
815 |
|
816 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
817 |
msgid "Status"
|
818 |
msgstr ""
|
819 |
|
820 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
|
|
|
|
|
|
|
|
821 |
msgid "Edit"
|
822 |
msgstr ""
|
823 |
|
824 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
825 |
msgid "Delete"
|
826 |
msgstr ""
|
827 |
|
828 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
829 |
msgid "Set To Confirmed"
|
830 |
msgstr ""
|
831 |
|
832 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
833 |
msgid "Set To Pending Review"
|
834 |
msgstr ""
|
835 |
|
836 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
837 |
msgid "Set To Closed"
|
838 |
msgstr ""
|
839 |
|
840 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
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:
|
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:
|
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:
|
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:
|
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:
|
871 |
msgid "You're viewing bookings that have been moved to the trash."
|
872 |
msgstr ""
|
873 |
|
874 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
875 |
msgid "Only today's bookings are being shown."
|
876 |
msgstr ""
|
877 |
|
878 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
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.
|
925 |
#. Plugin URI of the plugin/theme
|
926 |
-
#. #-#-#-#-# restaurant-reservations.pot (Restaurant Reservations 1.
|
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:
|
989 |
msgctxt "Title of admin page that lists bookings"
|
990 |
msgid "Bookings"
|
991 |
msgstr ""
|
992 |
|
993 |
-
#: includes/AdminBookings.class.php:
|
994 |
msgctxt "Title of bookings admin menu item"
|
995 |
msgid "Bookings"
|
996 |
msgstr ""
|
997 |
|
998 |
-
#: includes/AdminBookings.class.php:
|
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:
|
1323 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
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:
|
1331 |
msgctxt "Separator between two dates in a date range"
|
1332 |
msgid "—"
|
1333 |
msgstr ""
|
1334 |
|
1335 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
1336 |
msgctxt "Status label for bookings put in the trash"
|
1337 |
msgid "Trash"
|
1338 |
msgstr ""
|
1339 |
|
1340 |
-
#: includes/WP_List_Table.BookingsTable.class.php:
|
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:
|
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 "—"
|
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.
|
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.
|
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
|