PluginProbe
Booking Calendar / 11.6
Booking Calendar v11.6
11.9 11.8.4 11.8.3 11.8.2 11.8.1 11.8 11.7 11.6.1 11.6 11.5 11.4.3 11.4.2 11.4.1 11.4 11.3 11.2.1 11.2 11.1 11.0 10.15.7 10.15.6 10.1.3 10.10 10.10.1 10.10.2 All 205 releases
booking / includes / page-bookings / booking_listing_row.php

booking_listing_row.php in Booking Calendar 11.6, at includes/page-bookings/booking_listing_row.php

760 lines 34.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Booking Listing Template - Booking Row
4 *
5 * @version 1.0
6 * @package Any
7 * @category Templates for Booking Listing
8 * @author wpdevelop
9 *
10 * @web-site https://wpbookingcalendar.com/
11 * @email [email protected]
12 *
13 * @modified 2025-03-24
14 */
15
16 if ( ! defined( 'ABSPATH' ) ) {
17 exit; // Exit, if accessed directly.
18 }
19
20 function wpbc_template__booking_listing_header() {
21
22 // Header
23 ?><script type="text/html" id="tmpl-wpbc_ajx_booking_list_header">
24 <div class="wpbc__list__head wpbc_selectable_head">
25 <div class="wpbc__list__row">
26 <div class="wpbc__list__col wpbc_col_id check-column">
27 <div class="content_text"><input type="checkbox" /></div>
28 </div>
29 <div class="wpbc__list__col">
30 <div class="content_text"><?php WPBC_Listing_Actions__Bulk_Actions::get_button(); ?></div>
31 <div class="wpbc_ui_el__divider"><div class="wpbc_ui_el__vertical_space"></div></div>
32 <div class="content_text"><?php WPBC_Listing_Filters__Expand_Colapse_All::get_button(); ?></div>
33 </div>
34 <div class="wpbc__list__col col__right">
35 <div class="content_text"><?php WPBC_Listing_Filters__Sort_By::get_button(); ?></div>
36 <div class="wpbc_ui_el__divider"><div class="wpbc_ui_el__vertical_line"></div></div>
37 <div class="wpbc_ajx_booking_pagination_header wpbc__list__col"></div>
38 </div>
39 </div>
40 </div>
41 </script><?php
42 }
43
44 /**
45 * Footer Template for listing Table.
46 *
47 * @return void
48 */
49 function wpbc_template__booking_listing_footer() {
50
51 // Footer.
52 ?>
53 <script type="text/html" id="tmpl-wpbc_ajx_booking_list_footer">
54 <div class="wpbc__list__foot wpbc_selectable_foot">
55 <div class="wpbc__list__row">
56 <?php /* ?>
57 <div class="wpbc__list__col wpbc_col_id check-column">
58 <div class="content_text"><input type="checkbox"/></div>
59 </div>
60 <?php */ ?>
61 <div class="wpbc__list__col col__right">
62 <div class="wpbc_ajx_booking_pagination_footer wpbc__list__col"></div>
63 </div>
64 </div>
65 </div>
66 </script>
67 <?php
68 }
69
70
71 function wpbc_template__booking_listing_row() {
72
73 // Rows.
74 ?>
75 <script type="text/html" id="tmpl-wpbc_ajx_booking_list_row">
76 <div id="row_id_{{{data.parsed_fields.booking_id}}}"
77 class="wpbc_listing_usual_row wpbc_list_row wpbc_row wpbc_ui_el__listing_row
78 <# if ( '1' === data.parsed_fields.trash ) { #> wpbc_row_booking_trash <# } #>
79 <# if ( '1' == data.approved ) { #>wpbc_row_booking_approved<# } else { #>wpbc_row_booking_pending<# } #>
80 ">
81 <?php wpbc_for_booking_template__action_read(); ?>
82 <span class="wpbc_row_wrap max_height_a">
83 <div class="wpbc_a_row wpbc_a_row__booking wpbc_a_row_nowrap">
84 <div class="wpbc_a_col wpbc_a_col__check check-column "><?php wpbc_template__booking_listing_row__section_col__checkrow(); ?></div>
85 <div class="wpbc_a_col wpbc_a_col__dates"><?php wpbc_template__booking_listing_row__section_col__dates(); ?></div>
86 <div class="wpbc_a_col wpbc_a_col__data wpbc_a_overflow_hide">
87 <div class="wpbc_a_row wpbc_a_row_nowrap">
88 <div class="wpbc_a_col wpbc_a_col__details_lables wpbc_a_overflow_hide">
89 <div class="wpbc_a_row">
90 <div class="wpbc_a_col"><?php wpbc_template__booking_listing_row__section_col__booking_data(); ?></div>
91 </div>
92 <div class="wpbc_a_row">
93 <div class="wpbc_a_col"><?php wpbc_template__booking_listing_row__section_col__labels(); ?></div>
94 </div>
95 </div>
96 <div class="wpbc_a_col wpbc_a_col__cost"><?php wpbc_template__booking_listing_row__section_col__cost(); ?></div>
97 <div class="wpbc_a_col wpbc_a_col__action"><?php wpbc_template__booking_listing_row__section_col__action_button(); ?></div>
98 </div>
99 <?php wpbc_template__booking_listing_row__section_col__appointment_details(); ?>
100 <div class="wpbc_a_row wpbc_a_row__notes">
101 <div class="wpbc_a_col"><?php wpbc_template__booking_listing_row__section_col__note_readonly(); ?></div>
102 </div>
103 <div class="wpbc_a_row wpbc_a_row__system">
104 <div class="wpbc_a_col"><?php wpbc_template__booking_listing_row__section_col__sys_info(); ?></div>
105 </div>
106 <?php wpbc_template__booking_listing_row__section_col__hidden_fields(); ?>
107 </div>
108 </div>
109 </span>
110 </div>
111 </script>
112 <?php
113
114 /**
115 * data objet = { "booking_db": {
116 "booking_id": "3",
117 "trash": "0",
118 "sync_gid": "",
119 "is_new": "0",
120 "status": "",
121 "sort_date": "2022-02-03 12:00:01",
122 "modification_date": "2022-03-14 17:48:23",
123 "form": "selectbox-one^rangetime2^12:00 - 14:00~text^name2^Anthony~text^secondname2^Gomez~text^email2^[email protected]~text^address2^144 Hitchcock Rd~text^city2^Jacksonville~text^postcode2^38374~text^country2^US~text^phone2^988-48-45~selectbox-one^visitors2^3~checkbox^children2[]^2~textarea^details2^",
124 "hash": "993086af7a382f3956e6a0010932c856",
125 "booking_type": "2",
126 "remark": null,
127 "cost": "58.00",
128 "pay_status": "",
129 "pay_request": "0"
130 },
131 "id": "3",
132 "approved": "0",
133 "dates": [ "2022-02-03 12:00:01", "2022-02-03 14:00:02" ],
134 "child_id": [ "", "" ],
135 "short_dates": [ "2022-02-03 12:00:01", "-", "2022-02-03 14:00:02" ],
136 "short_dates_child_id": [ "", "", "" ],
137 "parsed_fields": {
138 "rangetime": "12:00 PM - 2:00 PM",
139 "name": "Anthony",
140 "secondname": "Gomez",
141 "email": "[email protected]",
142 "address": "144 Hitchcock Rd",
143 "city": "Jacksonville",
144 "postcode": "38374",
145 "country": "US",
146 "phone": "988-48-45",
147 "visitors": "3",
148 "children": "2",
149 "details": "",
150 "booking_id": "3",
151 "trash": "0",
152 "sync_gid": "",
153 "is_new": "0",
154 "status": "",
155 "sort_date": "2022-02-03 12:00:01",
156 "modification_date": "March 14, 2022 5:48 PM",
157 "hash": "993086af7a382f3956e6a0010932c856",
158 "booking_type": "2",
159 "cost": "58.00",
160 "pay_status": "",
161 "pay_request": "0",
162 "id": "3",
163 "approved": "0"
164 },
165 "templates": {
166 "form_show": "<div class=\"standard-content-form\"> \r\n\t<strong>First Name</strong>:<span class=\"fieldvalue\">Anthony</span>&nbsp;&nbsp; \r\n\t<strong>Last Name</strong>:<span class=\"fieldvalue\">Gomez</span>&nbsp;&nbsp; \r\n\t<strong>Email</strong>:<span class=\"fieldvalue\">[email protected]</span>&nbsp;&nbsp; \r\n\t<strong>Adults</strong>:<span class=\"fieldvalue\"> 3</span>&nbsp;&nbsp; \r\n\t<strong>Children</strong>:<span class=\"fieldvalue\"> 2</span>&nbsp;&nbsp; \r\n\t<strong>Details</strong>:&nbsp;&nbsp;<span class=\"fieldvalue\"> </span> \r\n</div>"
167 },
168 "__search_request_keyword__": ""
169 }
170 */
171 }
172
173 // ---------------------------------------------------------------------------------------------------------------------
174 // Booking Row Elements
175 // ---------------------------------------------------------------------------------------------------------------------
176 function wpbc_template__booking_listing_row__section_col__checkrow(){
177
178 ?>
179 <div class="content_text"><input type="checkbox"/></div>
180 <?php
181 }
182
183 function wpbc_template__booking_listing_row__section_col__dates() {
184
185 ?>
186 <div class="booking_dates_small booking_dates_expand_section" style="<# /* if ( 'short' !== wpbc_ajx_booking_listing.search_get_param('ui_usr__dates_short_wide') ) { #>display: none;<# } */ #>" >
187 <div class="content_text">{{{data.templates.short_dates_content}}}</div>
188 </div>
189 <div class="booking_dates_full booking_dates_expand_section" style="<# /* if ( 'wide' !== wpbc_ajx_booking_listing.search_get_param('ui_usr__dates_short_wide') ) { #>display: none;<# } */ #>" >
190 <div class="content_text">{{{data.templates.wide_dates_content}}}</div>
191 </div>
192 <div class="wpbc_btn_expand_down">
193 <a class="wpbc_btn_expand_down_a"
194 href="javascript:void(0)"
195 onclick="javascript:jQuery(this).parents('.wpbc_row_wrap').toggleClass('max_height_a');jQuery( this ).find('.menu_icon').toggle();">
196 <i class="menu_icon icon-1x wpbc_icn_expand_more" title="<?php echo esc_js( __( 'Expand', 'booking' ) ); ?>"></i>
197 <i class="menu_icon icon-1x wpbc_icn_expand_less" title="<?php echo esc_js( __( 'Colapse', 'booking' ) ); ?>" style="display:none;"></i>
198 </a>
199 </div>
200 <?php
201 }
202
203 function wpbc_template__booking_listing_row__section_col__booking_data(){
204
205 ?>
206 <div class="wpbc_listing_col wpbc_col_data">
207 <div class="content_text">
208 <#
209 var booking_details_simple = data.templates.form_show_simple;
210 var booking_details = data.templates.form_show;
211 var booking_keyword = data[ '__search_request_keyword__' ];
212 booking_details = wpbc_get_highlighted_search_keyword( booking_details, booking_keyword );
213 booking_details_simple = wpbc_get_highlighted_search_keyword( booking_details_simple, booking_keyword );
214 #>
215 <a title="<?php echo esc_js( __( 'Expand', 'booking' ) ); ?>"
216 href="javascript:void(0)"
217 onclick="javascript:jQuery(this).parents('.wpbc_row_wrap').toggleClass('max_height_a');jQuery(this).parents('.wpbc_row_wrap').find('.wpbc_btn_expand_down_a .menu_icon').toggle();"
218 class="booking_details_simple__expand"
219 ><div class="booking_details_simple">{{{booking_details_simple}}}</div></a>
220 <span <?php /* ?>
221 title="<?php echo esc_js( __( 'Collapse', 'booking' ) ); ?>"
222 href="javascript:void(0)"
223 onclick="javascript:jQuery(this).parents('.wpbc_row_wrap').toggleClass('max_height_a');jQuery(this).parents('.wpbc_row_wrap').find('.wpbc_btn_expand_down_a .menu_icon').toggle();"
224 <?php // FixIn: 10.11.3.2 */ ?>
225 class="booking_details_simple__expand"
226 ><div class="booking_details_full">{{{booking_details}}}</div></span>
227 </div>
228 </div>
229 <?php
230 }
231
232 /**
233 * Render immutable Appointment information in the expanded Booking row.
234 *
235 * The complete row is emitted only for a booking that has an Appointment
236 * snapshot in its parsed listing fields.
237 *
238 * @return void
239 */
240 function wpbc_template__booking_listing_row__section_col__appointment_details() {
241 ?>
242 <# if ( undefined != data.parsed_fields.appointment_service_title && '' != data.parsed_fields.appointment_service_title ) { #>
243 <div class="wpbc_a_row wpbc_a_row__appointment">
244 <div class="wpbc_a_col">
245 <div class="wpbc_listing_col wpbc_col_appointment_details">
246 <div class="content_text">
247 <div class="wpbc_appointment_booking_details">
248 <strong><?php echo esc_js( __( 'Appointment details', 'booking' ) ); ?></strong>
249 <span><?php echo esc_js( __( 'Service', 'booking' ) ); ?>: <strong>{{data.parsed_fields.appointment_service_title}}</strong></span>
250 <span><?php echo esc_js( __( 'Provider', 'booking' ) ); ?>: <strong>{{data.parsed_fields.appointment_provider_title}}</strong></span>
251 <# if ( undefined != data.parsed_fields.appointment_service_cost_formatted && '' != data.parsed_fields.appointment_service_cost_formatted ) { #>
252 <span><?php echo esc_js( __( 'Service price', 'booking' ) ); ?>: <strong>{{data.parsed_fields.appointment_service_cost_formatted}}</strong></span>
253 <# } #>
254 <# if ( undefined != data.parsed_fields.appointment_time_label ) { #>
255 <span><?php echo esc_js( __( 'Appointment time', 'booking' ) ); ?>: <strong>{{data.parsed_fields.appointment_time_label}}</strong></span>
256 <span><?php echo esc_js( __( 'Buffer before / after', 'booking' ) ); ?>: <strong>{{data.parsed_fields.appointment_buffer_before_minutes}} / {{data.parsed_fields.appointment_buffer_after_minutes}} <?php echo esc_js( __( 'min', 'booking' ) ); ?></strong></span>
257 <span><?php echo esc_js( __( 'Provider reserved', 'booking' ) ); ?>: <strong>{{data.parsed_fields.appointment_reserved_time_label}}</strong></span>
258 <# } #>
259 </div>
260 </div>
261 </div>
262 </div>
263 </div>
264 <# } #>
265 <?php
266 }
267
268 function wpbc_template__booking_listing_row__section_col__labels(){
269
270 ?>
271 <div class="wpbc_listing_col wpbc_col_booking_labels wpbc_col_labels">
272 <div class="content_text">
273 <span class="wpbc_label wpbc_label_booking_id"><span class="label_sup">ID:</span>{{data['parsed_fields']['booking_id']}}</span><?php
274 ?>
275 <#
276 var resource_title_listing = ( undefined != data.parsed_fields.resource_title_listing && '' != data.parsed_fields.resource_title_listing )
277 ? data.parsed_fields.resource_title_listing
278 : data.parsed_fields.resource_title;
279 var resource_id_listing = ( undefined != data.parsed_fields.resource_id_listing && '' != data.parsed_fields.resource_id_listing )
280 ? data.parsed_fields.resource_id_listing
281 : data.parsed_fields.resource_id;
282
283 if ( '<?php echo esc_js(__( 'Resource not exist', 'booking' )); ?>' == resource_title_listing ) {
284 #><span class="wpbc_label wpbc_label_resource wpbc_label_deleted_resource">{{{resource_title_listing}}}</span><#
285 } else if ( '' != resource_title_listing ) {
286 #><a href="javascript:void(0)" class="wpbc_label_link " title='<?php echo esc_attr( __( 'Change resource', 'booking' ) ); ?>'
287 onclick="wpbc_boo_listing__click__change_booking_resource( {{data['parsed_fields']['booking_id']}}, {{resource_id_listing}} );">
288 <span class="wpbc_label wpbc_label_resource">{{{resource_title_listing}}}</span></a><#
289 }
290
291 if ( '' != data.templates.payment_label_template ) {
292 #><a href="javascript:void(0)" class="wpbc_label_link " title='<?php echo esc_attr( __( 'Update payment status', 'booking' ) ); ?>'
293 onclick="javascript:wpbc_boo_listing__click__set_payment_status( {{data.parsed_fields.booking_id}}, '{{data.parsed_fields.pay_status}}' );">
294 {{{data.templates.payment_label_template}}}
295 </a><#
296 }
297
298 if ( undefined != data.parsed_fields.appointment_service_title && '' != data.parsed_fields.appointment_service_title ) {
299 #><span class="wpbc_label wpbc_label_appointment_service">{{data.parsed_fields.appointment_service_title}} <span aria-hidden="true">&middot;</span> {{data.parsed_fields.appointment_duration_minutes}} <?php echo esc_js( __( 'min', 'booking' ) ); ?></span><#
300 }
301
302 if ( '' != data.parsed_fields.sync_gid ) {
303 #><span class="wpbc_label wpbc_label_imported"><i class="menu_icon icon-1x wpbc_icn_cloud_download system_update_alt"></i><?php echo esc_js(__( 'Imported', 'booking' )); ?></span><#
304 }
305
306 #><span class="wpbc_label wpbc_label_trash<# if ( '1' != data.parsed_fields.trash ) { #> hidden_items <# } #>"><i style="color: #f6efe8;" class="menu_icon icon-1x wpbc_icn_delete_forever"></i><?php echo esc_js(__( 'In Trash', 'booking' )); ?></span><#
307
308 #><span class="wpbc_label wpbc_label_approved<# if ( '0' == data.approved ) { #> hidden_items <# } #>"><i style="color: #def5d4;" class="menu_icon icon-1x wpbc_icn_done_all"></i><?php echo esc_js(__( 'Approved', 'booking' )); ?></span><#
309 #><span class="wpbc_label wpbc_label_pending<# if ( '1' == data.approved ) { #> hidden_items <# } #>"><i style="color: #f6efe8;" class="menu_icon icon-1x wpbc_icn_hourglass_empty"></i><?php echo esc_js(__( 'Pending', 'booking' )); ?></span><#
310
311 #><?php
312
313
314 $labels = get_bk_option( 'wpbc_ajx_booking_labels' );
315 $labels = explode( "\n", $labels );
316 $labels = array_map( 'trim', $labels );
317
318 // Check for Labels and colors.
319 foreach ( $labels as $label ) {
320
321 if ( ( ! empty( $label ) ) && ( false !== strpos( ':', $label ) ) ) {
322 list( $label, $color, $text_color ) = explode( ':', $label );
323 } else {
324 $color = '';
325 $text_color = '';
326 }
327
328 if ( ! empty( $label ) ) {
329 ?><span class="wpbc_label" style="color:<?php echo esc_attr( $text_color ); ?>;background-color:<?php echo esc_attr( $color ); ?>;">{{{data.parsed_fields<?php
330 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
331 echo $label;
332 ?>}}}</span><?php
333 }
334 }
335
336 // Predefined internal Labels.
337 ?>
338 <#
339 if ( ( undefined != data._paid )
340 && ( -1 != data._paid.toLowerCase().indexOf( 'refund' ) )
341 ) {
342 #><span class="wpbc_label booking_label__refund"><?php echo esc_js(__('Refund','booking')); ?></span><#
343 }
344 console.log( 'row listing', data ); // LISTING_ROWS
345 #>
346 </div>
347 </div>
348 <?php
349 }
350
351 function wpbc_template__booking_listing_row__section_col__note_readonly(){
352
353 if ( ! class_exists( 'wpdev_bk_personal' ) ) {
354 return false;
355 }
356
357 $booking_action = 'set_booking_note';
358
359 $el_id = 'ui_btn_' . $booking_action . '__note_readonly';
360
361 if ( ! wpbc_is_user_can( $booking_action, wpbc_get_current_user_id() ) ) {
362 return false;
363 }
364
365 $params_textarea = array(
366 'id' => "{$booking_action}_text_{{data.parsed_fields.booking_id}}",
367 'name' => "{$booking_action}_text_{{data.parsed_fields.booking_id}}",
368 'label' => '',
369 'style' => '',
370 'class' => "{$booking_action}_text",
371 'disabled' => ! false,
372 'attr' => array(),
373 'rows' => '3',
374 'cols' => '50',
375 'placeholder' => '',
376 'value' => '{{{data.parsed_fields.remark}}}',
377 'is_escape_value' => true,
378 //, 'onfocus' => "console.log( 'ON FOCUS:', jQuery( this ).val() , 'in element:' , jQuery( this ) );" // JavaScript code.
379 //, 'onchange' => "console.log( 'ON CHANGE:', jQuery( this ).val() , 'in element:' , jQuery( this ) );" // JavaScript code.
380 );
381
382 ?>
383 <div class="wpbc_listing_col wpbc_col_note_readonly">
384 <div class="content_text">
385 <div class="ui_remark_section ui_remark_section__note_readonly is_expand_remarks_<?php //echo ($is_expand_remarks) ? 'on' : 'off'; ?>"
386 style="<# if ( 'Off' === wpbc_ajx_booking_listing.search_get_param('ui_usr__is_expand_remarks') ) { #>display0: none;<# } #><# if ( '' == data.parsed_fields.remark.trim() ) { #>display: none;<# } #>"
387 >
388 <label><?php esc_html_e( 'Notes', 'booking' ); ?></label>
389 <a href="javascript:void(0)"
390 onclick="javascript:wpbc_boo_listing__click__set_booking_note( {{data.parsed_fields.booking_id}}, jQuery( '#set_booking_note_text_{{data.parsed_fields.booking_id}}').val() );"
391 style="text-de"
392 >
393 <span><?php esc_html_e('Edit note','booking'); ?>&nbsp;</span>
394 <i class="menu_icon icon-1x wpbc_icn_edit"></i>
395 </a>
396 <?php
397 wpbc_flex_textarea( $params_textarea );
398 ?>
399 </div>
400 </div>
401 </div>
402 <?php
403 }
404
405 function wpbc_template__booking_listing_row__section_col__sys_info(){
406
407 ?>
408 <div class="wpbc_listing_col wpbc_col_sys_info">
409 <div class="content_text">
410 <div class="wpbc_actions_sysinfo">
411 <span class="sysinfo_id"><?php echo esc_js(__( 'Booking ID', 'booking' )); ?>: <strong>{{data['parsed_fields']['booking_id']}}</strong></span><div class="wpbc_ui_el__vetical_line sysinfo_id"></div>
412 <span class="sysinfo_edited"><?php echo esc_js(__( 'Edited', 'booking' )); ?>: <strong>{{data['parsed_fields']['modification_date']}}</strong></span><div class="wpbc_ui_el__vetical_line sysinfo_edited"></div>
413 <span class="sysinfo_created"><?php echo esc_js(__( 'Created', 'booking' )); ?>: <strong>{{data['parsed_fields']['creation_date']}}</strong></span><div class="wpbc_ui_el__vetical_line sysinfo_created"></div>
414 <# if (
415 undefined != data.parsed_fields.appointment_reserved_time_label
416 && ( Number( data.parsed_fields.appointment_buffer_before_minutes || 0 ) > 0 || Number( data.parsed_fields.appointment_buffer_after_minutes || 0 ) > 0 )
417 ) { #>
418 <span class="sysinfo_appointment_buffer"><?php echo esc_js( __( 'Buffer', 'booking' ) ); ?>: <strong>{{data.parsed_fields.appointment_buffer_before_minutes}} / {{data.parsed_fields.appointment_buffer_after_minutes}} <?php echo esc_js( __( 'min', 'booking' ) ); ?></strong></span><div class="wpbc_ui_el__vetical_line sysinfo_appointment_buffer"></div>
419 <span class="sysinfo_appointment_reserved"><?php echo esc_js( __( 'Blocked', 'booking' ) ); ?>: <strong>{{data.parsed_fields.appointment_reserved_time_label}}</strong></span><div class="wpbc_ui_el__vetical_line sysinfo_appointment_reserved"></div>
420 <# } #>
421 <span class="sysinfo_hash"><?php echo esc_js(__( 'Hash', 'booking' )); ?>: <strong>{{data['parsed_fields']['hash']}}</strong></span><div class="wpbc_ui_el__vetical_line sysinfo_hash"></div>
422 <span class="sysinfo_sync_id"><?php echo esc_js(__( 'Sync ID', 'booking' )); ?>: <strong>{{data['parsed_fields']['sync_id']}}</strong></span>
423 </div>
424 </div>
425 </div>
426 <?php
427 }
428
429 function wpbc_template__booking_listing_row__section_col__hidden_fields(){
430 ?>
431 <#
432 var selected_locale_value = '';
433 if (
434 ( 'undefined' !== typeof( data.parsed_fields.booking_options) )
435 && ( 'undefined' !== typeof( data.parsed_fields.booking_options.booking_meta_locale ) )
436 ){
437 var selected_locale_value = data.parsed_fields.booking_options.booking_meta_locale;
438 }
439 #>
440 <input type="hidden" id="locale_for_booking{{data['parsed_fields']['booking_id']}}" name="locale_for_booking{{data['parsed_fields']['booking_id']}}" value="{{selected_locale_value}}" />
441 <?php
442 }
443
444 function wpbc_template__booking_listing_row__section_col__cost() {
445
446 if ( ! class_exists( 'wpdev_bk_biz_s' ) ) {
447 return false;
448 }
449
450 ?>
451 <div class="wpbc_listing_col wpbc_col_cost">
452 <a href="javascript:void(0)"
453 onclick="javascript:wpbc_boo_listing__click__set_booking_cost( {{data.parsed_fields.booking_id}}, '{{data.parsed_fields.cost}}' );">
454 {{{data.parsed_fields.currency_symbol}}}
455 {{data.parsed_fields.cost}}
456 </a>
457 </div>
458 <?php
459 }
460
461 function wpbc_template__booking_listing_row__section_col__action_button() {
462
463 ?>
464 <div class="wpbc_listing_col wpbc_col_action">
465 <?php
466 wpbc_template__booking_listing__el__btn_action()
467 ?>
468 </div>
469 <?php
470 }
471
472 // ---------------------------------------------------------------------------------------------------------------------
473 // Action Button
474 // ---------------------------------------------------------------------------------------------------------------------
475
476 function wpbc_template__booking_listing__el__btn_action(){
477
478 $el_arr = array(
479 'title' => '',
480 'font_icon' => 'wpbc_icn_more_vert',
481 'position' => 'right',
482 'has_down_arrow' => false,
483 'container_style' => 'position:absolute;',
484 'items' => array(),
485 );
486
487 $el_arr['items'][] = array( 'type' => 'html', 'html' => wpbc_template__booking_listing__action_approved() );
488 $el_arr['items'][] = array( 'type' => 'html', 'html' => wpbc_template__booking_listing__action_pending() );
489 $el_arr['items'][] = array( 'type' => 'divider' );
490 $el_arr['items'][] = array( 'type' => 'html', 'html' => wpbc_template__booking_listing__action_edit_booking() );
491 $el_arr['items'][] = array( 'type' => 'html', 'html' => WPBC_Action_Booking_Note::get_button() );
492 $el_arr['items'][] = array( 'type' => 'html', 'html' => wpbc_template__booking_listing__action_print() );
493 if ( class_exists( 'wpdev_bk_biz_s' ) ) {
494 $el_arr['items'][] = array( 'type' => 'header', 'title' => __( 'Collect Payment', 'booking' ) );
495 $el_arr['items'][] = array( 'type' => 'html', 'html' => WPBC_Action_Payment_Request::get_button() );
496 $el_arr['items'][] = array( 'type' => 'divider' );
497 $el_arr['items'][] = array( 'type' => 'header', 'title' => __( 'Payment Price and Status', 'booking' ) );
498 $el_arr['items'][] = array( 'type' => 'html', 'html' => WPBC_Action_Booking_Cost::get_button() );
499 $el_arr['items'][] = array( 'type' => 'html', 'html' => WPBC_Action_Payment_Satatus::get_button() );
500 }
501 $el_arr['items'][] = array( 'type' => 'divider' );
502 $el_arr['items'][] = array( 'type' => 'html', 'html' => wpbc_template__booking_listing__action_add_google_calendar() );
503 $el_arr['items'][] = array( 'type' => 'html', 'html' => WPBC_Action_Change_Resource::get_button() );
504 $el_arr['items'][] = array( 'type' => 'html', 'html' => WPBC_Action_Duplicate_Booking::get_button() );
505 $el_arr['items'][] = array( 'type' => 'html', 'html' => WPBC_Action_Change_Locale::get_button() );
506 $el_arr['items'][] = array( 'type' => 'divider' );
507 $el_arr['items'][] = array( 'type' => 'html', 'html' => wpbc_template__booking_listing__action_trash() );
508 $el_arr['items'][] = array( 'type' => 'html', 'html' => wpbc_template__booking_listing__action_trash_restore() );
509 $el_arr['items'][] = array( 'type' => 'html', 'html' => wpbc_template__booking_listing__action_delete() );
510
511 $el_arr = apply_filters( 'wpbc_template__booking_listing__el__btn_action' , $el_arr );
512
513 wpbc_ui_el__dropdown_menu( $el_arr );
514 }
515
516 // ---------------------------------------------------------------------------------------------------------------------
517 // -- Action for Options in Dropdown Menu
518 // ---------------------------------------------------------------------------------------------------------------------
519
520 /**
521 * -- Approve -- Option for "Actions Dropdown Menu"
522 *
523 * @return string
524 */
525 function wpbc_template__booking_listing__action_approved() {
526
527 $booking_action = 'set_booking_approved';
528 if ( ! wpbc_is_user_can( $booking_action, wpbc_get_current_user_id() ) ) {
529 return false;
530 }
531 $html_for_drop_down_option = "<# if ( '0' == data['approved']) { #>";
532 $html_for_drop_down_option .= "<a class=\"ul_dropdown_menu_li_action ul_dropdown_menu_li_action_" . $booking_action . "\"
533 href=\"javascript:void(0)\"
534 onclick=\"wpbc_ajx_booking_ajax_action_request( {
535 'booking_action' : '{$booking_action}',
536 'booking_id' : {{data['parsed_fields']['booking_id']}}
537 } );
538 wpbc_button_enable_loading_icon( this );\"
539 >" .
540 esc_js( __( 'Approve', 'booking' ) ) .
541 "<i class='menu_icon icon-1x wpbc_icn_done_all'></i>" .
542 '</a>';
543 $html_for_drop_down_option .= '<# } #>';
544
545 return $html_for_drop_down_option;
546 }
547
548 /**
549 * -- Pending -- Option for "Actions Dropdown Menu"
550 *
551 * @return string
552 */
553 function wpbc_template__booking_listing__action_pending() {
554
555 $booking_action = 'set_booking_pending';
556 if ( ! wpbc_is_user_can( $booking_action, wpbc_get_current_user_id() ) ) {
557 return false;
558 }
559
560 $html_for_drop_down_option = "<# if ( '1' == data['approved']) { #>";
561 $html_for_drop_down_option .= "<a class=\"ul_dropdown_menu_li_action ul_dropdown_menu_li_action_" . $booking_action . "\"
562 href=\"javascript:void(0)\"
563 onclick=\"if ( ! wpbc_is_modal_accessible( '#wpbc_modal__set_booking_pending__section' ) ) {
564 return false;
565 }
566 jQuery( '.wpbc_modal__title__reason__booking_id' ).html( 'ID: ' + {{data.parsed_fields.booking_id}} );
567 jQuery( '#wpbc_modal__set_booking_pending__booking_id').val('{{data.parsed_fields.booking_id}}');
568 jQuery( '#wpbc_modal__set_booking_pending__section' ).wpbc_my_modal( 'show' );
569 jQuery( '#wpbc_modal__set_booking_pending__value' ).trigger( 'focus' );
570 \"
571 >" .
572 esc_js( __( 'Set as Pending', 'booking' ) ) .
573 "<i class='menu_icon icon-1x wpbc_icn_hourglass_empty'></i>" .
574 '</a>';
575 $html_for_drop_down_option .= '<# } #>';
576
577 return $html_for_drop_down_option;
578 }
579
580 /**
581 * -- Edit Booking -- Option for "Actions Dropdown Menu"
582 *
583 * @return string
584 */
585 function wpbc_template__booking_listing__action_edit_booking() {
586
587 $booking_action = 'edit_booking';
588
589 if ( ! wpbc_is_user_can( $booking_action, wpbc_get_current_user_id() ) ) {
590 return false;
591 }
592
593 $edit_booking_onclick = "if ( '' == '{{data.parsed_fields.hash}}' ) { return false; }"
594 . " wpbc_boo_listing__click__add_booking_modal_from_row("
595 . " '{{data.parsed_fields.booking_id}}',"
596 . " '{{data.parsed_fields.resource_id}}',"
597 . " '{{data.parsed_fields.hash}}',"
598 . " '{{data.parsed_fields.wpbc_custom_booking_form}}'"
599 . ' );';
600 // FixIn: 10.10.1.2 $edit_booking_url .= ( 'Off' !== get_bk_option( 'booking_is_resource_no_update__during_editing' ) ) ? '&resource_no_update=1' : ''; // FixIn: 9.4.2.3.
601
602 $html_for_drop_down_option = "<a href='javascript:void(0)'
603 onclick=\"" . $edit_booking_onclick . "\"
604 class=\"ul_dropdown_menu_li_action ul_dropdown_menu_li_action_" . $booking_action .
605 " <# if ( '' == data['parsed_fields']['hash']) { #>wpbc_field_disabled<# } #>\" >" .
606 esc_js( __( 'Edit booking', 'booking' ) ) .
607 "<i class='menu_icon icon-1x wpbc_icn_draw'></i>" .
608 '</a>';
609
610 return $html_for_drop_down_option;
611 }
612
613 /**
614 * -- Add to Google Calendar -- Option for "Actions Dropdown Menu"
615 *
616 * @return string
617 */
618 function wpbc_template__booking_listing__action_add_google_calendar() {
619
620 $booking_action = 'booking_add_google_calendar';
621
622 if ( ! wpbc_is_user_can( $booking_action, wpbc_get_current_user_id() ) ) {
623 return false;
624 }
625
626 $edit_booking_url = '{{{data.parsed_fields.google_calendar_link}}}';
627
628 $html_for_drop_down_option = "<a href='" . $edit_booking_url . "'
629 target='_blank'
630 class='ul_dropdown_menu_li_action ul_dropdown_menu_li_action_" . $booking_action . "' >" .
631 esc_js( __( 'Add to Google Calendar', 'booking' ) ) .
632 "<i class='menu_icon icon-1x wpbc_icn_event'></i>" .
633 '</a>';
634
635 return $html_for_drop_down_option;
636 }
637
638 /**
639 * -- Trash -- Option for "Actions Dropdown Menu"
640 *
641 * @return string
642 */
643 function wpbc_template__booking_listing__action_trash() {
644
645 $booking_action = 'move_booking_to_trash';
646
647 if ( ! wpbc_is_user_can( $booking_action, wpbc_get_current_user_id() ) ) {
648 return false;
649 }
650
651 $html_for_drop_down_option = "<# if ( '0' == data['parsed_fields']['trash'] ) { #>";
652 $html_for_drop_down_option .= "<a class=\"ul_dropdown_menu_li_action ul_dropdown_menu_li_action_" . $booking_action . "\"
653 href=\"javascript:void(0)\"
654 onclick=\"if ( ! wpbc_is_modal_accessible( '#wpbc_modal__move_booking_to_trash__section' ) ) {
655 return false;
656 }
657 jQuery( '#wpbc_modal__move_booking_to_trash__booking_id').val('{{data.parsed_fields.booking_id}}');
658 jQuery( '.wpbc_modal__title__reason__booking_id' ).html( 'ID: ' + {{data['parsed_fields']['booking_id']}} );
659 jQuery( '#wpbc_modal__move_booking_to_trash__section' ).wpbc_my_modal( 'show' );
660 jQuery( '#wpbc_modal__move_booking_to_trash__value' ).trigger( 'focus' );
661 \"
662 >" .
663 esc_js( __( 'Reject - move to trash', 'booking' ) ) .
664 "<i class='menu_icon icon-1x wpbc_icn_delete_outline'></i>" .
665 '</a>';
666 $html_for_drop_down_option .= '<# } #>';
667
668 return $html_for_drop_down_option;
669 }
670
671 /**
672 * -- Restore -- Option for "Actions Dropdown Menu"
673 *
674 * @return string
675 */
676 function wpbc_template__booking_listing__action_trash_restore() {
677
678 $booking_action = 'restore_booking_from_trash';
679
680 if ( ! wpbc_is_user_can( $booking_action, wpbc_get_current_user_id() ) ) {
681 return false;
682 }
683
684 $html_for_drop_down_option = "<# if ( '1' == data['parsed_fields']['trash'] ) { #>";
685 $html_for_drop_down_option .= "<a class=\"ul_dropdown_menu_li_action ul_dropdown_menu_li_action_" . $booking_action . "\"
686 href=\"javascript:void(0)\"
687 onclick=\"if ( ! wpbc_is_modal_accessible( '#wpbc_modal__restore_booking_from_trash__section' ) ) {
688 return false;
689 }
690 jQuery( '#wpbc_modal__restore_booking_from_trash__booking_id').val('{{data.parsed_fields.booking_id}}');
691 jQuery( '.wpbc_modal__title__reason__booking_id' ).html( 'ID: ' + {{data.parsed_fields.booking_id}} );
692 jQuery( '#wpbc_modal__restore_booking_from_trash__section' ).wpbc_my_modal( 'show' );
693 jQuery( '#wpbc_modal__restore_booking_from_trash__value' ).trigger( 'focus' );
694 \"
695 >" .
696 esc_js( __( 'Restore', 'booking' ) ) .
697 "<i class='menu_icon icon-1x wpbc_icn_rotate_left'></i>" .
698 '</a>';
699 $html_for_drop_down_option .= '<# } #>';
700
701 return $html_for_drop_down_option;
702 }
703
704 /**
705 * -- Completely Delete -- Option for "Actions Dropdown Menu"
706 *
707 * @return string
708 */
709 function wpbc_template__booking_listing__action_delete() {
710
711 $booking_action = 'delete_booking_completely';
712
713 if ( ! wpbc_is_user_can( $booking_action, wpbc_get_current_user_id() ) ) {
714 return false;
715 }
716
717 $html_for_drop_down_option = "<# if ( '1' == data['parsed_fields']['trash'] ) { #>";
718 $html_for_drop_down_option .= "<a class=\"ul_dropdown_menu_li_action ul_dropdown_menu_li_action_" . $booking_action . "\"
719 href=\"javascript:void(0)\"
720 onclick=\"if ( ! wpbc_is_modal_accessible( '#wpbc_modal__delete_booking_completely__section' ) ) {
721 return false;
722 }
723 jQuery( '#wpbc_modal__delete_booking_completely__booking_id').val('{{data.parsed_fields.booking_id}}');
724 jQuery( '.wpbc_modal__title__reason__booking_id' ).html( 'ID: ' + {{data['parsed_fields']['booking_id']}} );
725 jQuery( '#wpbc_modal__delete_booking_completely__section' ).wpbc_my_modal( 'show' );
726 jQuery( '#wpbc_modal__delete_booking_completely__value' ).trigger( 'focus' );
727 \"
728 >" .
729 esc_js( __( 'Completely Delete', 'booking' ) ) .
730 "<i class='menu_icon icon-1x wpbc_icn_close'></i>" .
731 '</a>';
732 $html_for_drop_down_option .= '<# } #>';
733
734 return $html_for_drop_down_option;
735 }
736
737 /**
738 * -- Print one booking -- Option for "Actions Dropdown Menu"
739 *
740 * @return string
741 */
742 function wpbc_template__booking_listing__action_print() {
743
744 $booking_action = 'set_print';
745
746 if ( ! wpbc_is_user_can( $booking_action, wpbc_get_current_user_id() ) ) {
747 return false;
748 }
749
750 $html_for_drop_down_option = "<a class=\"ul_dropdown_menu_li_action ul_dropdown_menu_li_action_" . $booking_action . "\"
751 href=\"javascript:void(0)\"
752 onclick=\"wpbc_print_dialog__show( {{data['parsed_fields']['booking_id']}} );\"
753 >" .
754 esc_js( __( 'Print', 'booking' ) ) .
755 "<i class='menu_icon icon-1x wpbc_icn_print'></i>" .
756 '</a>';
757
758 return $html_for_drop_down_option;
759 }
760