PluginProbe
Booking Calendar / 10.11.3
Booking Calendar v10.11.3
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 10.11 All 204 releases
booking / includes / page-form-simple / _src / wpbc_simple_form.js

wpbc_simple_form.js in Booking Calendar 10.11.3, at includes/page-form-simple/_src/wpbc_simple_form.js

588 lines 23.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * Add 'last_selected', 'current' CSS classes on FOCUS to table rows
3 */
4 ( function( $ ){
5 var controlled = false;
6 var shifted = false;
7 var hasFocus = false;
8
9 $(document).on('keyup keydown', function(e){ shifted = e.shiftKey; controlled = e.ctrlKey || e.metaKey } );
10
11 $('.wpbc_input_table').on( 'focus click', 'input', function( e ) {
12
13 var this_closest_table = $(this).closest('table');
14 var this_closest_row = $(this).closest('tr');
15
16 if ( ( e.type == 'focus' && hasFocus != this_closest_row.index() ) || ( e.type == 'click' && $(this).is(':focus') ) ) {
17
18 hasFocus = this_closest_row.index();
19
20 if ( ! shifted && ! controlled ) {
21 $('tr', this_closest_table).removeClass('current').removeClass('last_selected');
22 this_closest_row.addClass('current').addClass('last_selected');
23 } else if ( shifted ) {
24 $('tr', this_closest_table).removeClass('current');
25 this_closest_row.addClass('selected_now').addClass('current');
26
27 if ( $('tr.last_selected', this_closest_table).size() > 0 ) {
28 if ( this_closest_row.index() > $('tr.last_selected', this_closest_table).index() ) {
29 $('tr', this_closest_table).slice( $('tr.last_selected', this_closest_table).index(), this_closest_row.index() ).addClass('current');
30 } else {
31 $('tr', this_closest_table).slice( this_closest_row.index(), $('tr.last_selected', this_closest_table).index() + 1 ).addClass('current');
32 }
33 }
34
35 $('tr', this_closest_table).removeClass('last_selected');
36 this_closest_row.addClass('last_selected');
37 } else {
38 $('tr', this_closest_table).removeClass('last_selected');
39 if ( controlled && $(this).closest('tr').is('.current') ) {
40 this_closest_row.removeClass('current');
41 } else {
42 this_closest_row.addClass('current').addClass('last_selected');
43 }
44 }
45
46 $('tr', this_closest_table).removeClass('selected_now');
47
48 }
49 }).on( 'blur', 'input', function( e ) {
50 hasFocus = false;
51 });
52
53 }( jQuery ) );
54
55
56 // Make Table sortable
57 function wpbc_make_table_sortable(){
58
59 jQuery('.wpbc_input_table tbody th').css('cursor','move');
60
61 jQuery('.wpbc_input_table tbody td.sort').css('cursor','move');
62
63 jQuery('.wpbc_input_table.sortable tbody').sortable({
64 items:'tr',
65 cursor:'move',
66 axis:'y',
67 // connectWith: ".wpbc_table_form_free tbody", //// FixIn: 10.1.2.2.
68 // //axis:'y',
69 scrollSensitivity:40,
70 forcePlaceholderSize: true,
71 helper: 'clone',
72 opacity: 0.65,
73 placeholder: '.wpbc_input_table .sort',
74 start:function(event,ui){
75 ui.item.css('background-color','#f6f6f6');
76 },
77 stop:function(event,ui){
78 ui.item.removeAttr('style');
79 }
80 });
81 }
82
83
84 // Activate row delete
85 function wpbc_activate_table_row_delete( del_btn_css_class, is_confirm ){
86
87 // Delete Row
88 jQuery( del_btn_css_class ).on( 'click', function(){ // FixIn: 8.7.11.12.
89
90 if ( true === is_confirm ){
91 if ( ! wpbc_are_you_sure( 'Do you really want to do this ?' ) ){
92 return false;
93 }
94 }
95
96 var $current = jQuery(this).closest('tr');
97 if ( $current.size() > 0 ) {
98 $current.each(function(){
99 jQuery(this).remove();
100 });
101 return true;
102 }
103
104 return false;
105 });
106
107 }
108
109
110 //////////////////////////////////////////////////////////
111 // Fields Generator Section
112 //////////////////////////////////////////////////////////
113
114
115 /**
116 * Check Name in "field form" about possible usage of this name and about any Duplicates in Filds Table
117 * @param {string} field_name
118 */
119 function wpbc_check_typed_name( field_name ){
120
121 // Set Name only Letters
122 if ( ( jQuery('#' + field_name + '_name').val() != '' )
123 && ( ! jQuery('#' + field_name + '_name').is(':disabled') )
124 ){
125 var p_name = jQuery('#' + field_name + '_name').val();
126 p_name = p_name.replace(/[^A-Za-z0-9_-]*[0-9]*$/g,'').replace(/[^A-Za-z0-9_-]/g,'');
127 p_name = p_name.toLowerCase();
128
129
130 jQuery('input[name^=form_field_name]').each(function(){
131 var text_value = jQuery(this).val();
132 if( text_value == p_name ) { // error element with this name exist
133
134 p_name += '_' + Math.round( new Date().getTime() ) + '_rand'; //Add random sufix
135 }
136 });
137
138 jQuery('#' + field_name + '_name').val( p_name );
139 }
140 }
141
142
143 /** Reset to default values all Form fields for creation new fields */
144 function wpbc_reset_all_forms(){
145
146 jQuery('.wpbc_table_form_free tr').removeClass('highlight');
147 jQuery('.wpbc_add_field_row').hide();
148 jQuery('.wpbc_edit_field_row').hide();
149
150 var field_type_array = [ 'text', 'textarea', 'select', 'selectbox', 'checkbox', 'rangetime', 'durationtime', 'starttime', 'endtime' ]; //FixIn: TimeFreeGenerator
151 var field_type;
152
153 jQuery( '.field_options_format').remove();
154
155 for (var i = 0; i < field_type_array.length; i++) {
156 field_type = field_type_array[i];
157
158 if ( ! jQuery('#' + field_type + '_field_generator_name').is(':disabled') ){ //FixIn: TimeFreeGenerator
159 jQuery( '#' + field_type + '_field_generator_active' ).prop( 'checked', true );
160 jQuery( '#' + field_type + '_field_generator_required' ).prop( 'checked', false );
161 jQuery( '#' + field_type + '_field_generator_label' ).val( '' );
162
163 jQuery( '#' + field_type + '_field_generator_name' ).prop( 'disabled', false );
164 jQuery( '#' + field_type + '_field_generator_name' ).val( '' );
165 jQuery( '#' + field_type + '_field_generator_value' ).val( '' );
166 }
167 }
168 }
169
170
171 /**
172 * Show selected Add New Field form, and reset fields in this form
173 *
174 * @param string selected_field_value
175 */
176 function wpbc_show_fields_generator( selected_field_value ) {
177 if (
178 ('text' === selected_field_value) ||
179 ('textarea' === selected_field_value) ||
180 ('select' === selected_field_value) ||
181 ('selectbox' === selected_field_value) ||
182 ('checkbox' === selected_field_value)
183 ) {
184 if ('select' === selected_field_value){
185 jQuery( '#' + 'selectbox' + '_field_generator_name' ).prop( 'disabled', false );
186 }
187 jQuery( '#' + selected_field_value + '_field_generator_name' ).prop( 'disabled', false );
188 }
189
190 wpbc_reset_all_forms();
191
192 var time_fields_arr = [ 'rangetime', 'durationtime', 'starttime', 'endtime' ];
193 var time_fields_arr_count = time_fields_arr.length;
194 for ( var i = 0; i < time_fields_arr_count; i++ ) {
195 // time_fields_arr[i] = 'rangetime'.
196 if ( 'edit_' + time_fields_arr[i] === selected_field_value ) {
197 // This field already exist in the booking form, and thats why we can not add a new field, and instead of that edit it.
198 var range_time_edit_field = jQuery( '.wpbc_table_form_free :input[value="' + time_fields_arr[i] + '"]' ); // time_fields_arr[i] = 'rangetime'.
199 var range_time_field_num = 0;
200
201 if ( range_time_edit_field.length > 0 ) {
202 var range_time_edit_field_name = jQuery( range_time_edit_field.get( 0 ) ).attr( 'name' );
203 range_time_edit_field_name = range_time_edit_field_name.replaceAll( 'form_field_name[', '' ).replaceAll( ']', '' );
204 range_time_field_num = parseInt( range_time_edit_field_name );
205 if ( range_time_field_num > 0 ) {
206 wpbc_start_edit_form_field( range_time_field_num );
207 }
208 }
209 if ( 0 === range_time_field_num ) {
210 selected_field_value = time_fields_arr[i]; // time_fields_arr[i] = 'rangetime'.
211 } else {
212 return;
213 }
214 }
215
216 }
217
218 if (selected_field_value == 'selector_hint') {
219 jQuery('.metabox_wpbc_form_field_free_generator').hide();
220 jQuery( '#wpbc_form_field_free input.wpbc_submit_button[type="submit"],input.wpbc_submit_button[type="button"]').show(); // FixIn: 8.7.11.7.
221 jQuery( '#wpbc_settings__form_fields__toolbar').show();
222 } else {
223 jQuery('.metabox_wpbc_form_field_free_generator').show();
224 jQuery('.wpbc_field_generator').hide();
225 jQuery('.wpbc_field_generator_' + selected_field_value ).show();
226 jQuery('#wpbc_form_field_free_generator_metabox h3.hndle span').html( jQuery('#select_form_help_shortcode option:selected').text() );
227 jQuery('.wpbc_add_field_row').show();
228 jQuery( '#wpbc_form_field_free input.wpbc_submit_button[type="submit"],input.wpbc_submit_button[type="button"]').hide(); // FixIn: 8.7.11.7.
229 jQuery( '#wpbc_settings__form_fields__toolbar').hide();
230 }
231 }
232
233
234 /** Hide all Add New Field forms, and reset fields in these forms*/
235 function wpbc_hide_fields_generators() {
236 wpbc_reset_all_forms();
237 jQuery('.metabox_wpbc_form_field_free_generator').hide();
238 jQuery('#select_form_help_shortcode>option:eq(0)').attr('selected', true);
239
240 jQuery( '#wpbc_form_field_free input.wpbc_submit_button[type="submit"],input.wpbc_submit_button[type="button"]').show(); // FixIn: 8.7.11.7.
241 jQuery( '#wpbc_settings__form_fields__toolbar').show();
242 }
243
244
245 /**
246 * Add New Row with new Field to Table and Submit Saving changes.
247 *
248 * @param {string} field_name
249 * @param {string} field_type
250 */
251 function wpbc_add_field ( field_name, field_type ) {
252
253 // FixIn: TimeFreeGenerator.
254 var time_fields_arr = [ 'rangetime' ]; //, 'durationtime', 'starttime', 'endtime' ]; .
255 var time_fields_arr_count = time_fields_arr.length;
256 for ( var i = 0; i < time_fields_arr_count; i++ ) {
257 // time_fields_arr[i] = 'rangetime'.
258 if ( time_fields_arr[i] + '_field_generator' === field_name ) {
259 var replaced_result = wpbc_get_saved_value_from_timeslots_table();
260 if ( false === replaced_result ){
261 wpbc_hide_fields_generators();
262 //TOO: Show warning at the top of page, about error during saving timeslots
263 console.log( 'error during parsing timeslots tbale and savig it.' )
264 return;
265 }
266 }
267 }
268
269 if ( jQuery('#' + field_name + '_name').val() != '' ) {
270
271 wpbc_check_typed_name( field_name );
272
273 var row_num = jQuery('.wpbc_table_form_free tbody tr').length + Math.round( new Date().getTime() ) ;
274
275 var row_active = 'Off';
276 var row_active_checked = '';
277 if ( jQuery('#' + field_name + '_active').is( ":checked" ) ) {
278 row_active = 'On';
279 row_active_checked = ' checked="checked" ';
280 }
281
282 var row_required = 'Off';
283 var row_required_checked = '';
284 if ( jQuery('#' + field_name + '_required').is( ":checked" ) ) {
285 row_required = 'On';
286 row_required_checked = ' checked="checked" ';
287 }
288
289
290 var row;
291 row = '<tr class="account ui-sortable-handle">';
292
293 ////////////////////////////////////////////////////////////
294 row += '<td class="sort" style="cursor: move;"><span class="wpbc_icn_drag_indicator" aria-hidden="true"></span></td>';
295
296 row += '<td class="field_active">';
297 row += '<input type="checkbox" name="form_field_active['+ row_num +']" value="' + row_active + '" ' + row_active_checked + ' autocomplete="off" />';
298 row += '</td>';
299
300 ////////////////////////////////////////////////////////////
301 row += '<td class="field_label">';
302
303 //row += '<legend class="screen-reader-text"><span>' + jQuery('#' + field_name + '_label').val() + '</span></legend>';
304
305 row += '<input type="text" name="form_field_label['+ row_num +']" value="'
306 + jQuery('#' + field_name + '_label').val() + '" placeholder="'
307 + jQuery('#' + field_name + '_label').val() + '" class="regular-text" autocomplete="off" />';
308
309 row += '<div class="field_type_name_description">';
310 //row += '<?php echo esc_js( __( 'Type', 'booking' ) ); ?>: <div class="field_type_name_value">' +field_type+ '</div>';
311 row += 'Type: <div class="field_type_name_value">' +field_type+ '</div>';
312 row += '<span class="field_type_name_separator">|</span>';
313 //row += '<?php echo esc_js( __( 'Name', 'booking' ) ); ?>: <div class="field_type_name_value">' + jQuery('#' + field_name + '_name').val() + '</div>';
314 row += 'Name: <div class="field_type_name_value">' + jQuery('#' + field_name + '_name').val() + '</div>';
315 row += '</div>';
316
317 row += '<input type="hidden" value="' + ( ( 'select' == field_type ) ? 'selectbox' : field_type ) + '" name="form_field_type[' + row_num + ']" autocomplete="off" />';
318 row += '<input type="hidden" value="' + jQuery('#' + field_name + '_name').val() + '" name="form_field_name[' + row_num + ']" autocomplete="off" />';
319 row += '<input type="hidden" value="' + ((jQuery( '#' + field_name + '_value' ).length) ? jQuery( '#' + field_name + '_value' ).val() : '') + '" name="form_field_value[' + row_num + ']" autocomplete="off" />';
320
321 row += '</td>';
322
323 ////////////////////////////////////////////////////////////
324 row += '<td class="field_required">';
325
326 // FixIn: TimeFreeGenerator.
327 if (
328 ('rangetime' === field_name) ||
329 ('durationtime' === field_name) ||
330 ('starttime' === field_name) ||
331 ('endtime' === field_name)
332 ) {
333 row += '<input type="checkbox" disabled="DISABLED" name="form_field_required[' + row_num + ']" value="On" checked="checked" autocomplete="off" />';
334 } else {
335 row += '<input type="checkbox" name="form_field_required[' + row_num + ']" value="' + row_required + '" ' + row_required_checked + ' autocomplete="off" />';
336 }
337
338 row += '</td>';
339
340 ////////////////////////////////////////////////////////////
341 // row += '<td class="field_options">';
342 // row += '<input type="text" disabled="DISABLED" value="' + field_type + ' | ' + jQuery('#' + field_name + '_name').val() + '" autocomplete="off" />';
343 // row += '</td>';
344
345 ////////////////////////////////////////////////////////////
346 row += '<td class="field_options">';
347
348 //row += '<a href="javascript:void(0)" class="tooltip_top button-secondary button" title="<?php echo esc_js( __('Edit' ,'booking') ) ; ?>"><i class="wpbc_icn_draw"></i></a>';
349 //row += '<a href="javascript:void(0)" class="tooltip_top button-secondary button delete_bk_link" title="<?php echo esc_js( __('Remove' ,'booking') ) ; ?>"><i class="wpbc_icn_close"></i></a>';
350
351 row += '</td>';
352 ////////////////////////////////////////////////////////////
353 row += '</tr>';
354
355 jQuery('.wpbc_table_form_free tbody').append( row );
356
357 wpbc_hide_fields_generators();
358
359 document.forms['wpbc_form_field_free'].submit(); //Submit form
360
361 } else {
362 wpbc_field_highlight( '#' + field_name + '_name' );
363 }
364 }
365
366
367 /**
368 * Prepare Edit section for editing specific field.
369 * @param row_number
370 */
371 function wpbc_start_edit_form_field( row_number ) {
372
373 wpbc_reset_all_forms(); // Reset Fields in all generator rows (text,select,...) to init (empty) values
374 jQuery('.wpbc_edit_field_row').show(); // Show row with edit btn
375
376 jQuery('.wpbc_table_form_free tr').removeClass('highlight');
377 jQuery('input[name="form_field_name['+row_number+']"]').closest('tr').addClass('highlight'); //Highlight row
378
379 // Get exist data from EXIST fields Table
380 var field_active = jQuery('input[name="form_field_active['+row_number+']"]').is( ":checked" );
381 var field_required = jQuery('input[name="form_field_required['+row_number+']"]').is( ":checked" );
382 var field_label = jQuery('input[name="form_field_label['+row_number+']"]').val();
383 var field_value = jQuery('input[name="form_field_value['+row_number+']"]').val();
384 var field_name = jQuery('input[name="form_field_name['+row_number+']"]').val();
385 var field_type = jQuery('input[name="form_field_type['+row_number+']"]').val();
386 //console.log( 'field_active, field_required, field_label, field_value, field_name, field_type', field_active, field_required, field_label, field_value, field_name, field_type );
387
388 jQuery('.metabox_wpbc_form_field_free_generator').show(); // Show Generator section
389 jQuery('.wpbc_field_generator').hide(); // Hide inside of generator sub section relative to fields types
390
391
392 // FixIn: TimeFreeGenerator - Exception - field with name 'rangetime, have type 'rangetype' in Generator BUT, it have to be saved as 'select' type'.
393 if ( 'rangetime' == field_name ) {
394 /**
395 * Field 'rangetime_field_generator' have DIV section, which have CSS class 'wpbc_field_generator_rangetime',
396 * but its also defined with type 'select' for adding this field via javascript:wpbc_add_field ( 'rangetime_field_generator', 'select' );
397 */
398
399 field_type = 'rangetime';
400
401 /**
402 * During editing 'field_required' == false, because this field does not exist in the Table with exist fields, but we need to set it to true and disabled.
403 */
404 }
405
406 jQuery( '.wpbc_field_generator_' + field_type ).show(); // Show specific generator sub section relative to selected Field Type.
407 jQuery( '#wpbc_form_field_free_generator_metabox h3.hndle span' ).html( 'Edit: ' + field_name );
408
409
410 jQuery( '#' + field_type + '_field_generator_active' ).prop( 'checked', field_active );
411 jQuery( '#' + field_type + '_field_generator_required' ).prop( 'checked', field_required );
412 jQuery( '#' + field_type + '_field_generator_label' ).val( field_label );
413 jQuery( '#' + field_type + '_field_generator_name' ).val( field_name );
414 jQuery( '#' + field_type + '_field_generator_value' ).val( field_value );
415 jQuery( '#' + field_type + '_field_generator_name' ).prop( 'disabled', true );
416
417 jQuery( '.field_options_format').remove();
418
419 // FixIn: TimeFreeGenerator.
420 if ( ('rangetime' === field_name) ||
421 ('durationtime' === field_name) ||
422 ('starttime' === field_name) ||
423 ('endtime' === field_name)
424 ) {
425 jQuery( '#' + field_type + '_field_generator_required' ).prop( 'checked', true ).prop( 'disabled', true ); // Set Disabled and Checked -- Required field.
426 if ( 'durationtime' === field_name ) {
427 jQuery( '#' + field_type + '_field_generator_value' ).after(
428 '<div class="wpbc-settings-notice notice-info notice-helpful-info field_options_format" style="margin: 30px 0;">'+
429 'The option format is "Title@@Time Duration," where "Title" is usually the service name and "Time Duration" is defined in the format HH:MM (HH = hours from 00 to 23, MM = minutes from 00 to 59).'
430 + '</div>'
431 );
432 }
433 if ( 'starttime' === field_name ) {
434 jQuery( '#' + field_type + '_field_generator_value' ).after(
435 '<div class="wpbc-settings-notice notice-info notice-helpful-info field_options_format" style="margin: 30px 0;">'+
436 'The option format is "Title@@Time," where "Title" is any text (typically the time in AM/PM format) and "Time" is defined in the 24-hour format (HH:MM), where HH = hours (00 to 23) and MM = minutes (00 to 59).'
437 + '</div>'
438 );
439 }
440 }
441 if ( 'rangetime' === field_name ) {
442 wpbc_check_typed_values( field_name + '_field_generator' ); // Update Options and Titles for TimeSlots.
443 wpbc_timeslots_table__fill_rows();
444 }
445
446 jQuery( '#wpbc_form_field_free input.wpbc_submit_button[type="submit"],input.wpbc_submit_button[type="button"]' ).hide(); // FixIn: 8.7.11.7.
447 jQuery( '#wpbc_settings__form_fields__toolbar' ).hide();
448
449 wpbc_scroll_to( '#wpbc_form_field_free_generator_metabox' );
450 }
451
452
453 /**
454 * Prepare fields data, and submit Edited field by clicking "Save changes" btn.
455 *
456 * @param field_name
457 * @param field_type
458 */
459 function wpbc_finish_edit_form_field( field_name, field_type ) {
460
461 // FixIn: TimeFreeGenerator.
462 var time_fields_arr = [ 'rangetime', ]; // 'durationtime', 'starttime', 'endtime' ];
463 var time_fields_arr_count = time_fields_arr.length;
464 for ( var i = 0; i < time_fields_arr_count; i++ ) {
465 // time_fields_arr[i] = 'rangetime'.
466 if ( time_fields_arr[i] + '_field_generator' === field_name ) {
467 var replaced_result = wpbc_get_saved_value_from_timeslots_table();
468 if ( false === replaced_result ) {
469 wpbc_hide_fields_generators();
470 // TODO: Show warning at the top of page, about error during saving timeslots.
471 console.log( 'error during parsing timeslots table and savig it.' )
472 return;
473 }
474 }
475 }
476
477
478 // Get Values in Edit Form ////////////////////////////////////
479
480 //0: var field_type
481 //1:
482 var row_active = 'Off';
483 var row_active_checked = false;
484 if ( jQuery('#' + field_name + '_active').is( ":checked" ) ) {
485 row_active = 'On';
486 row_active_checked = true;
487 }
488 //2:
489 var row_required = 'Off';
490 var row_required_checked = false;
491 if ( jQuery('#' + field_name + '_required').is( ":checked" ) ) {
492 row_required = 'On';
493 row_required_checked = true;
494 }
495 //3:
496 var row_label = jQuery('#' + field_name + '_label').val();
497 //4:
498 var row_name = jQuery('#' + field_name + '_name').val();
499 //5:
500 var row_value = jQuery('#' + field_name + '_value').val();
501
502 // Set values to the ROW in Fields Table /////////////////////
503 //1:
504 jQuery('.wpbc_table_form_free tr.highlight input[name^=form_field_active]').prop( 'checked', row_active_checked );
505 jQuery('.wpbc_table_form_free tr.highlight input[name^=form_field_active]').val( row_active );
506 //2:
507 jQuery('.wpbc_table_form_free tr.highlight input[name^=form_field_required]').prop( 'checked', row_required_checked );
508 jQuery('.wpbc_table_form_free tr.highlight input[name^=form_field_required]').val( row_required );
509 //3:
510 jQuery('.wpbc_table_form_free tr.highlight input[name^=form_field_label]').val( row_label );
511 // //4:
512 // jQuery('.wpbc_table_form_free tr.highlight input[name^=form_field_name]').val( row_name );
513 // //0:
514 // jQuery('.wpbc_table_form_free tr.highlight input[name^=form_field_type]').val( field_type );
515 //5:
516 jQuery('.wpbc_table_form_free tr.highlight input[name^=form_field_value]').val( row_value );
517 // // Options field:
518 // jQuery('.wpbc_table_form_free tr.highlight td.field_options input:disabled').val( field_type + '|' + row_name );
519
520
521 // Hide generators and Reset forms and Disable highlighting
522 wpbc_hide_fields_generators();
523
524 // Submit form
525 document.forms['wpbc_form_field_free'].submit();
526 }
527
528
529 /**
530 * Check Value and parse it to Options and Titles
531 * @param {string} field_name
532 */
533 function wpbc_check_typed_values( field_name ){
534
535 var t_options_titles_arr = wpbc_get_titles_options_from_values( '#' + field_name + '_value' );
536
537 if ( false !== t_options_titles_arr ) {
538
539 var t_options = t_options_titles_arr[0].join( "\n" );
540 var t_titles = t_options_titles_arr[1].join( "\n" );
541 jQuery('#' + field_name + '_options_options').val( t_options );
542 jQuery('#' + field_name + '_options_titles').val( t_titles );
543
544 }
545 }
546
547
548 /**
549 * Get array with Options and Titles from Values, if in values was defined constrution like this ' Option @@ Title '
550 * @param field_id string
551 * @returns array | false
552 */
553 function wpbc_get_titles_options_from_values( field_id ){
554 if ( ( jQuery( field_id ).val() != '' )
555 && ( ! jQuery( field_id ).is(':disabled') )
556 ){
557
558 var tslots = jQuery( field_id ).val();
559 tslots = tslots.split('\n');
560 var t_options = [];
561 var t_titles = [];
562 var slot_t = '';
563
564 if ( ( typeof tslots !== 'undefined' ) && ( tslots.length > 0 ) ){
565
566 for ( var i=0; i < tslots.length; i++ ) {
567
568 slot_t = tslots[ i ].split( '@@' );
569
570 if ( slot_t.length > 1 ){
571 t_options.push( slot_t[ 1 ].trim() );
572 t_titles.push( slot_t[ 0 ].trim() );
573 } else {
574 t_options.push( slot_t[ 0 ].trim() );
575 t_titles.push( '' );
576 }
577 }
578
579 }
580 var t_options_titles_arr = [];
581 t_options_titles_arr.push( t_options );
582 t_options_titles_arr.push( t_titles );
583
584 return t_options_titles_arr;
585 }
586 return false;
587 }
588