Plugin Directory

Changeset 1592015


Ignore:
Timestamp:
02/08/2017 09:01:50 PM (9 years ago)
Author:
Cohhe
Message:

bugfixes. More details in the changelog

Location:
directory-builder
Files:
10 edited
10 copied

Legend:

Unmodified
Added
Removed
  • directory-builder/tags/1.3.3/README.txt

    r1591115 r1592015  
    44Requires at least: 4.5.3
    55Tested up to: 4.7.2
    6 Stable tag: 1.3.2
     6Stable tag: 1.3.3
    77License: GPLv2 or later
    88License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    2525
    2626== Changelog ==
     27
     28= 1.3.3 =
     29* Fixed custom field issues
     30* Added autocomplete feature for city field
     31* Fixed error with amenities
     32* Fixed issue which prevented street names from being added to the map
     33* Allow to change expiration date manually
     34* Fixed "Set address button"
    2735
    2836= 1.3.2 =
  • directory-builder/tags/1.3.3/admin/class-db-functionality-admin.php

    r1591115 r1592015  
    7575         */
    7676
    77         // if ( $hook != 'directory-builder_page_directory-builder-settings' && $hook != 'toplevel_page_directory-builder' ) {
    78         //  return;
    79         // }
    80 
    8177        wp_enqueue_style( $this->db_func, plugin_dir_url( __FILE__ ) . 'css/db-functionality-admin.css', array(), $this->version, 'all' );
    8278
  • directory-builder/tags/1.3.3/admin/js/db-functionality-admin.js

    r1567908 r1592015  
    406406    jQuery(document).on('click', '.db-expiration-save', function() {
    407407        var listing_id = jQuery(this).attr('data-id');
    408         var listing_package = jQuery(this).attr('data-package');
    409408
    410409        jQuery.ajax({
     
    414413                'action': 'db_change_expiration',
    415414                'listing_id': listing_id,
    416                 'listing_package': listing_package,
    417415                'new_date': jQuery('.db-listing-expiration-date').val(),
    418416            },
     
    711709        });
    712710    });
    713 
    714711});
    715 
    716 jQuery(window).load(function() {
    717    
    718 });
  • directory-builder/tags/1.3.3/directory-builder.php

    r1591115 r1592015  
    1717 * Plugin URI:        https://cohhe.com/
    1818 * Description:       Directory builder provides listing functionality for your theme.
    19  * Version:           1.3.2
     19 * Version:           1.3.3
    2020 * Author:            Cohhe
    2121 * Author URI:        https://cohhe.com/
     
    551551                    </div>
    552552                    <div class="db-field-row focused active clearfix">
    553                         <label class="field-label">Show on listing page?</label>
     553                        <label class="field-label">Show on list pages?</label>
    554554                        <div class="db-field-input">
    555555                            <select class="db-create-on-listing">
     
    557557                                <option value="yes" <?php echo(isset($field_settings['on_listing'])&&$field_settings['on_listing']=='yes'?'selected':''); ?>>Yes</option>
    558558                            </select>
    559                             <span class="field-description">Do you want to show this field on listing pages?</span>
     559                            <span class="field-description">Do you want to show this field on pages that display listings in lists (for example search)?</span>
    560560                        </div>
    561561                    </div>
    562562                    <div class="db-field-row focused active clearfix">
    563                         <label class="field-label">Show on detail pages?</label>
     563                        <label class="field-label">Show on details page?</label>
    564564                        <div class="db-field-input">
    565565                            <select class="db-create-on-detail">
     
    567567                                <option value="yes" <?php echo(isset($field_settings['on_detail'])&&$field_settings['on_detail']=='yes'?'selected':''); ?>>Yes</option>
    568568                            </select>
    569                             <span class="field-description">Do you want to show this field on detail pages?</span>
     569                            <span class="field-description">Do you want to show this field on single listing page?</span>
    570570                        </div>
    571571                    </div>
     
    10311031                                    jQuery('#listing_city, #listing_zip, #listing_neighborhood, #listing_state').val('');
    10321032                                    jQuery.each(data.results['0'].address_components, function( index, address_comp ) {
    1033                                         if( address_comp.types[0] == "locality" && address_comp.types[1] == "political" ) {
     1033                                        if( ( address_comp.types[0] == "locality" && address_comp.types[1] == "political" ) || address_comp.types[0] == "postal_town" ) {
    10341034                                            jQuery('#listing_city').val( address_comp.long_name );
    10351035                                        }
     
    10471047                                        }
    10481048
    1049                                         if ( address_comp.types[0] == "administrative_area_level_1" && address_comp.types[1] == "political" ) {
     1049                                        if ( ( address_comp.types[0] == "administrative_area_level_1" && address_comp.types[1] == "political" ) || address_comp.types[0] == "neighborhood" && address_comp.types[1] == "political" ) {
    10501050                                            jQuery('#listing_neighborhood').val( address_comp.long_name );
    10511051                                        }
     
    11241124                $field_settings = json_decode($package_list['0']->package_settings, true);
    11251125            }
     1126
     1127            if ( isset($order_data['listing_expires']) && !is_numeric($order_data['listing_expires']) && isset($order_data['completed_on']) && $field_settings['listing_run_type'] == 'days' ) {
     1128                $order_data['listing_expires'] = date( get_option('date_format'), strtotime('+'.$field_settings['listing_run_days'].' days', $order_data['completed_on']));
     1129            } else if ( !isset($order_data['listing_expires']) ) {
     1130                $order_data['listing_expires'] = 'Unknown';
     1131            }
    11261132        } else {
    11271133            $order_data = array(
     
    11451151        if ( $field_settings['listing_run_type'] == 'forever' ) {
    11461152            $listing_expiration = '<a href="javascript:void(0)" class="db-expiration-select">'.__('Never', 'directory-builder').'</a>';
    1147         } else if ( $field_settings['listing_run_type'] == 'days' && isset($order_data['completed_on']) ) {
    1148             $listing_expiration = '<a href="javascript:void(0)" class="db-expiration-select">'.date( get_option('date_format'), strtotime('+'.$field_settings['listing_run_days'].' days', $order_data['completed_on'])).'</a>';
    1149             $listing_expiration_date = date( 'Y-m-d', strtotime('+'.$field_settings['listing_run_days'].' days', $order_data['completed_on']));
     1153        } else if ( $field_settings['listing_run_type'] == 'days' && $order_data['listing_expires'] != 'Unknown' ) {
     1154            $listing_expiration = '<a href="javascript:void(0)" class="db-expiration-select">'.date( get_option('date_format'), $order_data['listing_expires']).'</a>';
     1155            $listing_expiration_date = date( 'Y-m-d', $order_data['listing_expires']);
    11501156        } else {
    11511157            $listing_expiration = '<a href="javascript:void(0)" class="db-expiration-select">'.__('Unknown', 'directory-builder').'</a>';
     
    11811187                        if ( !empty($package_list) ) {
    11821188                            foreach ($package_list as $package_value) {
    1183                                 echo '<option value="'.$package_value->ID.'">'.$field_settings['fee_label'].'</option>';
     1189                                echo '<option value="'.$package_value->ID.'">'.$package_value->package_name.'</option>';
    11841190                            }
    11851191                        }
     
    11991205                <div class="db-expiration-dialog" style="display: none;">
    12001206                    <input type="date" class="db-listing-expiration-date" value="<?php echo $listing_expiration_date; ?>">
    1201                     <a href="javascript:void(0)" class="db-expiration-save" data-id="<?php echo $object->ID; ?>" data-package="<?php echo $order_data['listing_package']; ?>"><?php _e('Change', 'directory-builder'); ?></a>
     1207                    <a href="javascript:void(0)" class="db-expiration-save" data-id="<?php echo $object->ID; ?>"><?php _e('Change', 'directory-builder'); ?></a>
    12021208                </div>
    12031209            </span>
     
    13331339                    $output .= '<label class="db-field-row-label" for="'.$field_name.'">'.$field_title.'</label>';
    13341340                }
    1335                 $output .= '<input type="text" id="'.$field_name.'" name="'.$field_name.'" class="'.$custom_class.'" placeholder="'.$field_title.'" value="'.$field_default.'"'.$field_validation_pattern.$field_validation_pattern_message.'>';
     1341                $output .= '<input type="text" id="'.$field_name.'" name="'.$field_name.'" class="'.$custom_class.'" placeholder="'.$field_title.'" value="'.$field_default.'"'.$field_validation_pattern.$field_validation_pattern_message.' autocomplete="off">';
    13361342                if ( $field_description != '' || ( $field_settings['required'] == 'yes' && $field_required_message != '' ) ) {
    13371343                    $output .= '<div class="db-field-meta">';
     
    15361542                }
    15371543                if ( !empty($select_values) ) {
    1538                     $output .= '<select class="'.$custom_class.'" name="'.$field_name.'" multiple>';
     1544                    $output .= '<select class="'.$custom_class.'" name="'.$field_name.'[]" multiple>';
    15391545                    foreach ($select_values as $select_value) {
    15401546                        $select_data = explode(':', $select_value);
    1541                         $selected_values = explode( ',', $field_default );
     1547                        if ( is_array($field_default) ) {
     1548                            $selected_values = $field_default;
     1549                        } else {
     1550                            $selected_values = explode( ',', $field_default );
     1551                        }
    15421552
    15431553                        $is_selected = (in_array($select_data['0'], $selected_values)?' selected':'');
     
    20882098            unset($search_terms['listing_name']);
    20892099        }
    2090         $search_limit = $main_settings['per_page'];
    2091         $search_listings = $wpdb->get_results('SELECT * FROM '.$wpdb->posts.' WHERE post_type="listings" && post_status="publish"'.$search_where.' LIMIT '.$search_limit);
     2100        $search_listings = $wpdb->get_results('SELECT * FROM '.$wpdb->posts.' WHERE post_type="listings" && post_status="publish"'.$search_where);
    20922101        $search_distance = (isset($search_terms['listing_search_radius'])?$search_terms['listing_search_radius']:$main_settings['search_radius_distance']);
    20932102        unset($search_terms['listing_search_radius']);
     
    20962105            $field_list = db_get_active_fields();
    20972106
    2098             if ( $main_settings['search_radius_status'] == 'yes' && isset($search_terms['listing_address']) && $search_terms['listing_address'] != '' ) {
     2107            if ( isset($search_terms['listing_address']) && $search_terms['listing_address'] != '' ) {
    20992108                $search_coordinates = db_get_coordinates( $search_terms['listing_address'] );
    21002109                $search_coordinates = explode(',', $search_coordinates);
    21012110            }
    21022111
     2112            $listings_matched = 0;
    21032113            foreach ($search_listings as $listing_value) {
    21042114                $custom_field_data = db_get_listing_custom_values($field_list, $listing_value->ID);
     
    21142124                        $dist_show_listing = true;
    21152125                    }
     2126                } else if ( isset($search_terms['listing_address']) && $search_terms['listing_address'] != '' ) {
     2127                    $db_search_distance = db_calculateDistanceFromLatLong($listing_value['listing_address_lat'], $listing_value['listing_address_lng'], $search_coordinates['0'], $search_coordinates['1'], $main_settings['search_radius_value']);
     2128
     2129                    if ( intval($db_search_distance) > 200 ) {
     2130                        $dist_show_listing = false;
     2131                    } else {
     2132                        $dist_show_listing = true;
     2133                    }
    21162134                }
    21172135
     
    21212139                    foreach ($search_terms as $search_key => $search_value) {
    21222140
    2123                         if ( $main_settings['search_radius_status'] == 'yes' && isset($search_terms['listing_address']) && $search_terms['listing_address'] != '' && $search_key == 'listing_address' && $dist_show_listing ) {
     2141                        if ( isset($search_terms['listing_address']) && $search_terms['listing_address'] != '' && $search_key == 'listing_address' && $dist_show_listing ) {
    21242142                            $matched_settings++;
    21252143                            continue;
     
    21702188                    $db_search_listing_data = $listing_value;
    21712189
     2190                    $listings_matched++;                   
     2191                    if ( $listings_matched > $main_settings['per_page'] ) {
     2192                        break;
     2193                    }
     2194
    21722195                    $all_listings[$listing_value['ID']] = db_load_template( 'search-listing-item.php', true, false, $main_settings );
    21732196                    if ( function_exists('whitelab_get_image_css') ) {
     
    23262349
    23272350function db_get_active_details_fields() {
    2328     $meta_values = array(
    2329         'listing_address' => 'Listing address'
    2330     );
     2351    $meta_values = array();
    23312352
    23322353    global $wpdb;
     
    23352356        foreach ($field_list as $field_value) {
    23362357            $field_settings = json_decode($field_value->field_settings, true);
    2337             if ( $field_settings['on_detail'] == 'yes' ) {
     2358
     2359            // Temporary skip address and phone as they are hardcoded
     2360            if ( $field_settings['field_name'] == 'listingphone' || $field_settings['field_name'] == 'listing_address' ) {
     2361                continue;
     2362            }
     2363
     2364            if ( $field_settings['on_listing'] == 'yes' ) {
    23382365                $meta_values[$field_settings['field_name']] = $field_settings['frontend_title'];
    23392366            }
     
    29873014}
    29883015
    2989 function db_get_listing_custom_field_data( $listing_array, $custom_class = '' ) {
     3016function db_get_listing_custom_field_data( $listing_array, $custom_class = '', $echo = true ) {
    29903017    $active_fields = db_get_active_details_fields();
    29913018
    29923019    if ( !empty($active_fields) ) {
    29933020        foreach ($active_fields as $field_name => $field_title) {
    2994             if ( isset($listing_array[$field_name]) ) {
    2995                 echo '<div class="'.$custom_class.'">'.'<span class="db-field-title">'.$field_title.': </span><span class="db-field-value">'.(is_array($listing_array[$field_name])?implode(', ', $listing_array[$field_name]):$listing_array[$field_name]).'</span></div>';
     3021            if ( isset($listing_array[$field_name]) && !empty($listing_array[$field_name]) ) {
     3022
     3023                // Echo or return?
     3024                if ( $echo === true ) {
     3025                    echo '<div class="'.$custom_class.'">'.'<span class="db-field-title">'.$field_title.': </span><span class="db-field-value">'.(is_array($listing_array[$field_name])?implode(', ', $listing_array[$field_name]):$listing_array[$field_name]).'</span></div>';
     3026                } else if ( $echo === false ) {
     3027                    return '<div class="'.$custom_class.'">'.'<span class="db-field-title">'.$field_title.': </span><span class="db-field-value">'.(is_array($listing_array[$field_name])?implode(', ', $listing_array[$field_name]):$listing_array[$field_name]).'</span></div>';
     3028                }
     3029               
    29963030            }
    29973031        }
     
    32253259
    32263260function db_insert_review( $comment_id, $comment_object ) {
    3227     add_comment_meta( $comment_id, 'listing_review_rating', (isset($_REQUEST['listing_rating'])?intval($_REQUEST['listing_rating']):1));
    3228     add_comment_meta( $comment_id, 'listing_review_title', (isset($_REQUEST['review-title'])?sanitize_text_field($_REQUEST['review-title']):''));
     3261    if ( !isset($_POST['listing_rating']) || !isset($_POST['review-title']) ) {
     3262        return;
     3263    }
     3264
     3265    $rating_value = (isset($_POST['listing_rating'])?intval($_POST['listing_rating']):1);
     3266    $rating_title = (isset($_POST['review-title'])?sanitize_text_field($_POST['review-title']):'');
     3267
     3268    add_comment_meta( $comment_id, 'listing_review_rating', $rating_value);
     3269    add_comment_meta( $comment_id, 'listing_review_title', $rating_title);
    32293270    $post_id = $comment_object->comment_post_ID;
    32303271
     
    32373278    $listing_ratings = get_post_meta( $post_id, 'listing_ratings', true);
    32383279    if ( $listing_ratings == '' ) {
    3239         update_post_meta( $post_id, 'listing_ratings', array( $user_id => intval($_REQUEST['listing_rating']) ) );
     3280        update_post_meta( $post_id, 'listing_ratings', array( $user_id => $rating_value ) );
    32403281    } else {
    3241         $listing_ratings[$user_id] = intval($_REQUEST['listing_rating']);
     3282        $listing_ratings[$user_id] = $rating_value;
    32423283        update_post_meta( $post_id, 'listing_ratings', $listing_ratings );
    32433284    }
     
    35433584                                <div class="dt-form-row">
    35443585                                    <label for="db-agree-to-terms" class="dt-checkbox">
    3545                                         <input type="checkbox" id="db-agree-to-terms" name="db-agree-to-terms" required="">I agree to all statements in <a href="#">terms and conditions</a>
     3586                                        <input type="checkbox" id="db-agree-to-terms" name="db-agree-to-terms" required="">'.esc_html__('I agree to all statements in', 'directory-builder').' <a href="javascript:void(0)" class="db-show-checkout-terms">'.esc_html__('terms and conditions', 'directory-builder').'</a>
     3587                                        <div class="db-checkout-terms hidden">'.nl2br($main_settings['terms_and_conditions']).'</div>
    35463588                                    </label>
    35473589                                </div>';
     
    35873629                                <div class="dt-form-row">
    35883630                                    <label for="db-agree-to-terms" class="dt-checkbox">
    3589                                         <input type="checkbox" id="db-agree-to-terms" name="db-agree-to-terms" required="">I agree to all statements in <a href="#">terms and conditions</a>
     3631                                        <input type="checkbox" id="db-agree-to-terms" name="db-agree-to-terms" required="">'.esc_html__('I agree to all statements in', 'directory-builder').' <a href="javascript:void(0)" class="db-show-checkout-terms">'.esc_html__('terms and conditions', 'directory-builder').'</a>
     3632                                        <div class="db-checkout-terms hidden">'.nl2br($main_settings['terms_and_conditions']).'</div>
    35903633                                    </label>
    35913634                                </div>';
     
    40394082            }
    40404083
    4041             if ( $main_settings['terms_and_conditions_status'] && !$db_edit_listing ) {
     4084            if ( $main_settings['terms_and_conditions_status'] && !$db_edit_listing && $main_settings['db_theme_id'] != 'db_theme' ) {
    40424085                $output .= '<div class="db-field-row terms-and-conditions required">
    40434086                    <label>'.__('Terms and conditions', 'directory-builder').'</label>
     
    41374180
    41384181    $listing_id = ( isset($_POST['listing_id']) ? intval($_POST['listing_id']) : '' );
    4139     $listing_package = ( isset($_POST['listing_package']) ? sanitize_text_field($_POST['listing_package']) : '' );
    41404182    $new_date = ( isset($_POST['new_date']) ? sanitize_text_field($_POST['new_date']) : '' );
    41414183
     
    41444186    $save_expiration = false;
    41454187
    4146     $package_list = $wpdb->get_results('SELECT * FROM '.$wpdb->prefix.'directory_packages WHERE ID="'.$listing_package.'"');
    4147     if ( !empty($package_list) ) {
    4148         $field_settings = json_decode($package_list['0']->package_settings, true);
    4149 
    4150         if ( $field_settings['listing_run_type'] == 'days' ) {
    4151             $listing_expiration_date = strtotime('-'.$field_settings['listing_run_days'].' days', strtotime($new_date));
    4152             $listing_info['completed_on'] = $listing_expiration_date;
    4153 
    4154             $save_expiration = update_post_meta( $listing_id, 'db_order_info', $listing_info );
    4155         }
    4156     }
     4188    $listing_info['listing_expires'] = strtotime($new_date);
     4189    $save_expiration = update_post_meta( $listing_id, 'db_order_info', $listing_info );
    41574190
    41584191    if ( $save_expiration ) {
    4159         echo '{"save_response": "0", "package_name": "'.date( get_option('date_format'), strtotime('+'.$field_settings['listing_run_days'].' days', $listing_expiration_date)).'"}';
     4192        echo '{"save_response": "0", "package_name": "'.date( get_option('date_format'), $listing_info['listing_expires']).'"}';
    41604193    } else {
    41614194        echo '{"save_response": "failed"}';
     
    49334966}
    49344967add_action( 'wp_ajax_db_featured_status', 'db_featured_status_func' );
     4968
     4969function db_do_cities_autocomplete() {
     4970    $city_value = ( isset($_POST['city_value']) ? esc_attr($_POST['city_value']) : '' );
     4971    global $wpdb;
     4972    $prepared_data = array();
     4973    $cities = $wpdb->get_results('SELECT DISTINCT meta_value as city FROM ' . $wpdb->prefix . 'postmeta WHERE meta_key="listing_city" && meta_value LIKE "%' . $city_value . '%"');
     4974   
     4975    if ( !empty($cities) ) {
     4976        foreach ($cities as $city_value) {
     4977            $prepared_data[] =  $city_value->city;
     4978        }
     4979
     4980        echo json_encode( $prepared_data );
     4981    } else {
     4982        echo 'failed';
     4983    }
     4984   
     4985    die(0);
     4986}
     4987add_action( 'wp_ajax_db_city_autocomplete', 'db_do_cities_autocomplete' );
     4988add_action( 'wp_ajax_nopriv_db_city_autocomplete', 'db_do_cities_autocomplete' );
  • directory-builder/tags/1.3.3/includes/class-db-functionality-activator.php

    r1571162 r1592015  
    7070                "required" => "no",
    7171                "required_message" => "",
    72                 "on_listing" => "no",
     72                "on_listing" => "yes",
    7373                "on_detail" => "no",
    7474                "on_contact" => "yes",
     
    258258                "required" => "no",
    259259                "required_message" => "",
    260                 "on_listing" => "no",
     260                "on_listing" => "yes",
    261261                "on_detail" => "no",
    262262                "on_contact" => "yes",
     
    296296                "required" => "no",
    297297                "required_message" => "",
    298                 "on_listing" => "yes",
    299                 "on_detail" => "no",
     298                "on_listing" => "no",
     299                "on_detail" => "yes",
    300300                "on_contact" => "no",
    301301                "field_type" => "hoursofoperation"
     
    312312                "required" => "no",
    313313                "required_message" => "",
    314                 "on_listing" => "yes",
    315                 "on_detail" => "no",
     314                "on_listing" => "no",
     315                "on_detail" => "yes",
    316316                "on_contact" => "no",
    317317                "multiselect_type" => "select",
     
    361361                'search_fields' => array('listing_name', 'listing_categories', 'listing_country', 'listing_address', 'search_radius'),
    362362                'search_layout' => '{"row_1":["listing_name","listing_categories","listing_country","listing_address","search_radius"]}',
    363                 'search_radius_status' => 'no',
     363                'search_radius_status' => 'yes',
    364364                'search_radius_value' => 'km',
    365365                'search_radius_distance' => '150',
  • directory-builder/tags/1.3.3/paypal_ipn.php

    r1557657 r1592015  
    108108    if ( $payment_status == 'Completed' ) {
    109109        $order_info['completed_on'] = time();
     110       
    110111        update_post_meta( $listing_id, 'db_claim_info', get_current_user_id() );
    111112    }
  • directory-builder/tags/1.3.3/public/css/db-functionality-public.css

    r1557657 r1592015  
    119119    background: #D8D8D8;
    120120    border-radius: 4px;
     121}
     122
     123.db-main-search-listings.db-no-listings .db-search-scrollbar {
     124    display: none;
    121125}
    122126
     
    509513.db-upload-placeholder {
    510514    pointer-events: none;
     515}
     516
     517.db-checkout-terms {
     518    height: 228px;
     519    overflow: auto;
     520    text-align: left;
    511521}
    512522
  • directory-builder/tags/1.3.3/public/js/db-functionality-public.js

    r1591115 r1592015  
    176176        var parsed_search_data = jQuery.parseJSON(data);
    177177        if ( typeof parsed_search_data.listing_html.length != 'number' ) {
     178            jQuery('.db-main-search-listings').removeClass('db-no-listings');
    178179            jQuery.each(parsed_search_data.listing_html, function(index, data) {
    179180                jQuery('.db-main-search-listings').append(data);
     
    270271           
    271272        } else {
     273            jQuery('.db-main-search-listings').addClass('db-no-listings');
    272274            jQuery('.db-main-search-listings').append('<div class="db-main-search-item full-listing" style="text-align: center;">No listings found!</div>');
    273275            db_clear_markers();
     
    507509        jQuery(this).parent().remove();
    508510    });
    509 
    510     // jQuery(document).on('click', '*', function() {
    511     //  if ( jQuery('.db-hop-dialog').css('display') == 'block' ) {
    512     //      console.log(jQuery(this).attr('class'));
    513     //  }
    514     // });
    515511
    516512    jQuery(document).on('click', function(e) {
     
    812808        });
    813809    }
     810
     811    var $idle_timer;
     812    jQuery(document).on('input', '[name="listing_city"]', function() {
     813        clearTimeout($idle_timer);
     814        var city_name = jQuery(this).val();
     815        var city_row = jQuery(this).parent();
     816
     817        if ( jQuery(this).val().length >= 1 ) {
     818            $idle_timer = setTimeout(function() {
     819                jQuery.ajax({
     820                    type: 'POST',
     821                    url: db_main.ajaxurl,
     822                    data: {
     823                        'action': 'db_city_autocomplete',
     824                        'city_value': city_name
     825                    },
     826                    success: function( data ) {
     827                        if ( !city_row.find('.db-row-autocomplete').length ) {
     828                            city_row.append('<div class="db-row-autocomplete" data-active="listing_city"><div class="db-autocomplete-inner"><div class="db-autocomplete-items"></div><div class="db-autocomplete-scrollbar-wrapper"><span class="db-autocomplete-scrollbar"></span></div></div></div>');
     829                        }
     830
     831                        city_row.find('.db-row-autocomplete .db-autocomplete-items').html('');
     832
     833                        if ( data != 'failed' ) {
     834                            var parsed_data = jQuery.parseJSON( data );
     835                            jQuery.each(parsed_data, function( index, value ) {
     836                                city_row.find('.db-row-autocomplete .db-autocomplete-items').append('<span class="db-autocomplete-item">'+value+'</span>');
     837                            });
     838                        } else {
     839                            city_row.find('.db-row-autocomplete .db-autocomplete-items').append('<span class="db-autocomplete-item not-active">Nothing found!</span>');
     840                        }
     841                        city_row.find('.db-row-autocomplete').addClass('active');
     842
     843                        if ( city_row.find('.db-autocomplete-items')[0].scrollHeight < 139 ) {
     844                            city_row.find('.db-autocomplete-scrollbar').hide();
     845                        } else {
     846                            city_row.find('.db-autocomplete-scrollbar').show();
     847                        }
     848
     849                        city_row.find('.db-autocomplete-items').bind('scroll', function() {
     850                            var scrolled_percentage = jQuery(this).scrollTop()/(jQuery(this)[0].scrollHeight-jQuery(this).innerHeight())*100;
     851                            var extra_scroll = jQuery(this).parent().parent().find('.db-autocomplete-scrollbar').height()*(scrolled_percentage/100);
     852                            var scroll_height = 'calc('+scrolled_percentage+'% - '+extra_scroll+'px)';
     853                            jQuery(this).parent().parent().find('.db-autocomplete-scrollbar').css('top', scroll_height);
     854                        });
     855
     856                        city_row.find('.db-autocomplete-scrollbar').css('height', city_row.find('.db-autocomplete-items')[0].offsetHeight*(city_row.find('.db-autocomplete-items')[0].offsetHeight/city_row.find('.db-autocomplete-items')[0].scrollHeight));
     857                    }
     858                });
     859            }, 500);
     860        } else {
     861            city_row.find('.db-row-autocomplete').removeClass('active');
     862        }
     863    });
     864
     865    jQuery(document).on('click', '.db-autocomplete-item', function() {
     866        jQuery('[name="'+jQuery(this).parent().parent().parent().attr('data-active')+'"]').val( jQuery(this).text() );
     867        jQuery(this).parent().parent().parent().removeClass('active');
     868    });
     869
     870    jQuery(document).on('click', '.db-show-checkout-terms', function() {
     871        jQuery(this).next().toggleClass('hidden');
     872    });
    814873});
  • directory-builder/trunk/README.txt

    r1591115 r1592015  
    44Requires at least: 4.5.3
    55Tested up to: 4.7.2
    6 Stable tag: 1.3.2
     6Stable tag: 1.3.3
    77License: GPLv2 or later
    88License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    2525
    2626== Changelog ==
     27
     28= 1.3.3 =
     29* Fixed custom field issues
     30* Added autocomplete feature for city field
     31* Fixed error with amenities
     32* Fixed issue which prevented street names from being added to the map
     33* Allow to change expiration date manually
     34* Fixed "Set address button"
    2735
    2836= 1.3.2 =
  • directory-builder/trunk/admin/class-db-functionality-admin.php

    r1591115 r1592015  
    7575         */
    7676
    77         // if ( $hook != 'directory-builder_page_directory-builder-settings' && $hook != 'toplevel_page_directory-builder' ) {
    78         //  return;
    79         // }
    80 
    8177        wp_enqueue_style( $this->db_func, plugin_dir_url( __FILE__ ) . 'css/db-functionality-admin.css', array(), $this->version, 'all' );
    8278
  • directory-builder/trunk/admin/js/db-functionality-admin.js

    r1567908 r1592015  
    406406    jQuery(document).on('click', '.db-expiration-save', function() {
    407407        var listing_id = jQuery(this).attr('data-id');
    408         var listing_package = jQuery(this).attr('data-package');
    409408
    410409        jQuery.ajax({
     
    414413                'action': 'db_change_expiration',
    415414                'listing_id': listing_id,
    416                 'listing_package': listing_package,
    417415                'new_date': jQuery('.db-listing-expiration-date').val(),
    418416            },
     
    711709        });
    712710    });
    713 
    714711});
    715 
    716 jQuery(window).load(function() {
    717    
    718 });
  • directory-builder/trunk/directory-builder.php

    r1591115 r1592015  
    1717 * Plugin URI:        https://cohhe.com/
    1818 * Description:       Directory builder provides listing functionality for your theme.
    19  * Version:           1.3.2
     19 * Version:           1.3.3
    2020 * Author:            Cohhe
    2121 * Author URI:        https://cohhe.com/
     
    551551                    </div>
    552552                    <div class="db-field-row focused active clearfix">
    553                         <label class="field-label">Show on listing page?</label>
     553                        <label class="field-label">Show on list pages?</label>
    554554                        <div class="db-field-input">
    555555                            <select class="db-create-on-listing">
     
    557557                                <option value="yes" <?php echo(isset($field_settings['on_listing'])&&$field_settings['on_listing']=='yes'?'selected':''); ?>>Yes</option>
    558558                            </select>
    559                             <span class="field-description">Do you want to show this field on listing pages?</span>
     559                            <span class="field-description">Do you want to show this field on pages that display listings in lists (for example search)?</span>
    560560                        </div>
    561561                    </div>
    562562                    <div class="db-field-row focused active clearfix">
    563                         <label class="field-label">Show on detail pages?</label>
     563                        <label class="field-label">Show on details page?</label>
    564564                        <div class="db-field-input">
    565565                            <select class="db-create-on-detail">
     
    567567                                <option value="yes" <?php echo(isset($field_settings['on_detail'])&&$field_settings['on_detail']=='yes'?'selected':''); ?>>Yes</option>
    568568                            </select>
    569                             <span class="field-description">Do you want to show this field on detail pages?</span>
     569                            <span class="field-description">Do you want to show this field on single listing page?</span>
    570570                        </div>
    571571                    </div>
     
    10311031                                    jQuery('#listing_city, #listing_zip, #listing_neighborhood, #listing_state').val('');
    10321032                                    jQuery.each(data.results['0'].address_components, function( index, address_comp ) {
    1033                                         if( address_comp.types[0] == "locality" && address_comp.types[1] == "political" ) {
     1033                                        if( ( address_comp.types[0] == "locality" && address_comp.types[1] == "political" ) || address_comp.types[0] == "postal_town" ) {
    10341034                                            jQuery('#listing_city').val( address_comp.long_name );
    10351035                                        }
     
    10471047                                        }
    10481048
    1049                                         if ( address_comp.types[0] == "administrative_area_level_1" && address_comp.types[1] == "political" ) {
     1049                                        if ( ( address_comp.types[0] == "administrative_area_level_1" && address_comp.types[1] == "political" ) || address_comp.types[0] == "neighborhood" && address_comp.types[1] == "political" ) {
    10501050                                            jQuery('#listing_neighborhood').val( address_comp.long_name );
    10511051                                        }
     
    11241124                $field_settings = json_decode($package_list['0']->package_settings, true);
    11251125            }
     1126
     1127            if ( isset($order_data['listing_expires']) && !is_numeric($order_data['listing_expires']) && isset($order_data['completed_on']) && $field_settings['listing_run_type'] == 'days' ) {
     1128                $order_data['listing_expires'] = date( get_option('date_format'), strtotime('+'.$field_settings['listing_run_days'].' days', $order_data['completed_on']));
     1129            } else if ( !isset($order_data['listing_expires']) ) {
     1130                $order_data['listing_expires'] = 'Unknown';
     1131            }
    11261132        } else {
    11271133            $order_data = array(
     
    11451151        if ( $field_settings['listing_run_type'] == 'forever' ) {
    11461152            $listing_expiration = '<a href="javascript:void(0)" class="db-expiration-select">'.__('Never', 'directory-builder').'</a>';
    1147         } else if ( $field_settings['listing_run_type'] == 'days' && isset($order_data['completed_on']) ) {
    1148             $listing_expiration = '<a href="javascript:void(0)" class="db-expiration-select">'.date( get_option('date_format'), strtotime('+'.$field_settings['listing_run_days'].' days', $order_data['completed_on'])).'</a>';
    1149             $listing_expiration_date = date( 'Y-m-d', strtotime('+'.$field_settings['listing_run_days'].' days', $order_data['completed_on']));
     1153        } else if ( $field_settings['listing_run_type'] == 'days' && $order_data['listing_expires'] != 'Unknown' ) {
     1154            $listing_expiration = '<a href="javascript:void(0)" class="db-expiration-select">'.date( get_option('date_format'), $order_data['listing_expires']).'</a>';
     1155            $listing_expiration_date = date( 'Y-m-d', $order_data['listing_expires']);
    11501156        } else {
    11511157            $listing_expiration = '<a href="javascript:void(0)" class="db-expiration-select">'.__('Unknown', 'directory-builder').'</a>';
     
    11811187                        if ( !empty($package_list) ) {
    11821188                            foreach ($package_list as $package_value) {
    1183                                 echo '<option value="'.$package_value->ID.'">'.$field_settings['fee_label'].'</option>';
     1189                                echo '<option value="'.$package_value->ID.'">'.$package_value->package_name.'</option>';
    11841190                            }
    11851191                        }
     
    11991205                <div class="db-expiration-dialog" style="display: none;">
    12001206                    <input type="date" class="db-listing-expiration-date" value="<?php echo $listing_expiration_date; ?>">
    1201                     <a href="javascript:void(0)" class="db-expiration-save" data-id="<?php echo $object->ID; ?>" data-package="<?php echo $order_data['listing_package']; ?>"><?php _e('Change', 'directory-builder'); ?></a>
     1207                    <a href="javascript:void(0)" class="db-expiration-save" data-id="<?php echo $object->ID; ?>"><?php _e('Change', 'directory-builder'); ?></a>
    12021208                </div>
    12031209            </span>
     
    13331339                    $output .= '<label class="db-field-row-label" for="'.$field_name.'">'.$field_title.'</label>';
    13341340                }
    1335                 $output .= '<input type="text" id="'.$field_name.'" name="'.$field_name.'" class="'.$custom_class.'" placeholder="'.$field_title.'" value="'.$field_default.'"'.$field_validation_pattern.$field_validation_pattern_message.'>';
     1341                $output .= '<input type="text" id="'.$field_name.'" name="'.$field_name.'" class="'.$custom_class.'" placeholder="'.$field_title.'" value="'.$field_default.'"'.$field_validation_pattern.$field_validation_pattern_message.' autocomplete="off">';
    13361342                if ( $field_description != '' || ( $field_settings['required'] == 'yes' && $field_required_message != '' ) ) {
    13371343                    $output .= '<div class="db-field-meta">';
     
    15361542                }
    15371543                if ( !empty($select_values) ) {
    1538                     $output .= '<select class="'.$custom_class.'" name="'.$field_name.'" multiple>';
     1544                    $output .= '<select class="'.$custom_class.'" name="'.$field_name.'[]" multiple>';
    15391545                    foreach ($select_values as $select_value) {
    15401546                        $select_data = explode(':', $select_value);
    1541                         $selected_values = explode( ',', $field_default );
     1547                        if ( is_array($field_default) ) {
     1548                            $selected_values = $field_default;
     1549                        } else {
     1550                            $selected_values = explode( ',', $field_default );
     1551                        }
    15421552
    15431553                        $is_selected = (in_array($select_data['0'], $selected_values)?' selected':'');
     
    20882098            unset($search_terms['listing_name']);
    20892099        }
    2090         $search_limit = $main_settings['per_page'];
    2091         $search_listings = $wpdb->get_results('SELECT * FROM '.$wpdb->posts.' WHERE post_type="listings" && post_status="publish"'.$search_where.' LIMIT '.$search_limit);
     2100        $search_listings = $wpdb->get_results('SELECT * FROM '.$wpdb->posts.' WHERE post_type="listings" && post_status="publish"'.$search_where);
    20922101        $search_distance = (isset($search_terms['listing_search_radius'])?$search_terms['listing_search_radius']:$main_settings['search_radius_distance']);
    20932102        unset($search_terms['listing_search_radius']);
     
    20962105            $field_list = db_get_active_fields();
    20972106
    2098             if ( $main_settings['search_radius_status'] == 'yes' && isset($search_terms['listing_address']) && $search_terms['listing_address'] != '' ) {
     2107            if ( isset($search_terms['listing_address']) && $search_terms['listing_address'] != '' ) {
    20992108                $search_coordinates = db_get_coordinates( $search_terms['listing_address'] );
    21002109                $search_coordinates = explode(',', $search_coordinates);
    21012110            }
    21022111
     2112            $listings_matched = 0;
    21032113            foreach ($search_listings as $listing_value) {
    21042114                $custom_field_data = db_get_listing_custom_values($field_list, $listing_value->ID);
     
    21142124                        $dist_show_listing = true;
    21152125                    }
     2126                } else if ( isset($search_terms['listing_address']) && $search_terms['listing_address'] != '' ) {
     2127                    $db_search_distance = db_calculateDistanceFromLatLong($listing_value['listing_address_lat'], $listing_value['listing_address_lng'], $search_coordinates['0'], $search_coordinates['1'], $main_settings['search_radius_value']);
     2128
     2129                    if ( intval($db_search_distance) > 200 ) {
     2130                        $dist_show_listing = false;
     2131                    } else {
     2132                        $dist_show_listing = true;
     2133                    }
    21162134                }
    21172135
     
    21212139                    foreach ($search_terms as $search_key => $search_value) {
    21222140
    2123                         if ( $main_settings['search_radius_status'] == 'yes' && isset($search_terms['listing_address']) && $search_terms['listing_address'] != '' && $search_key == 'listing_address' && $dist_show_listing ) {
     2141                        if ( isset($search_terms['listing_address']) && $search_terms['listing_address'] != '' && $search_key == 'listing_address' && $dist_show_listing ) {
    21242142                            $matched_settings++;
    21252143                            continue;
     
    21702188                    $db_search_listing_data = $listing_value;
    21712189
     2190                    $listings_matched++;                   
     2191                    if ( $listings_matched > $main_settings['per_page'] ) {
     2192                        break;
     2193                    }
     2194
    21722195                    $all_listings[$listing_value['ID']] = db_load_template( 'search-listing-item.php', true, false, $main_settings );
    21732196                    if ( function_exists('whitelab_get_image_css') ) {
     
    23262349
    23272350function db_get_active_details_fields() {
    2328     $meta_values = array(
    2329         'listing_address' => 'Listing address'
    2330     );
     2351    $meta_values = array();
    23312352
    23322353    global $wpdb;
     
    23352356        foreach ($field_list as $field_value) {
    23362357            $field_settings = json_decode($field_value->field_settings, true);
    2337             if ( $field_settings['on_detail'] == 'yes' ) {
     2358
     2359            // Temporary skip address and phone as they are hardcoded
     2360            if ( $field_settings['field_name'] == 'listingphone' || $field_settings['field_name'] == 'listing_address' ) {
     2361                continue;
     2362            }
     2363
     2364            if ( $field_settings['on_listing'] == 'yes' ) {
    23382365                $meta_values[$field_settings['field_name']] = $field_settings['frontend_title'];
    23392366            }
     
    29873014}
    29883015
    2989 function db_get_listing_custom_field_data( $listing_array, $custom_class = '' ) {
     3016function db_get_listing_custom_field_data( $listing_array, $custom_class = '', $echo = true ) {
    29903017    $active_fields = db_get_active_details_fields();
    29913018
    29923019    if ( !empty($active_fields) ) {
    29933020        foreach ($active_fields as $field_name => $field_title) {
    2994             if ( isset($listing_array[$field_name]) ) {
    2995                 echo '<div class="'.$custom_class.'">'.'<span class="db-field-title">'.$field_title.': </span><span class="db-field-value">'.(is_array($listing_array[$field_name])?implode(', ', $listing_array[$field_name]):$listing_array[$field_name]).'</span></div>';
     3021            if ( isset($listing_array[$field_name]) && !empty($listing_array[$field_name]) ) {
     3022
     3023                // Echo or return?
     3024                if ( $echo === true ) {
     3025                    echo '<div class="'.$custom_class.'">'.'<span class="db-field-title">'.$field_title.': </span><span class="db-field-value">'.(is_array($listing_array[$field_name])?implode(', ', $listing_array[$field_name]):$listing_array[$field_name]).'</span></div>';
     3026                } else if ( $echo === false ) {
     3027                    return '<div class="'.$custom_class.'">'.'<span class="db-field-title">'.$field_title.': </span><span class="db-field-value">'.(is_array($listing_array[$field_name])?implode(', ', $listing_array[$field_name]):$listing_array[$field_name]).'</span></div>';
     3028                }
     3029               
    29963030            }
    29973031        }
     
    32253259
    32263260function db_insert_review( $comment_id, $comment_object ) {
    3227     add_comment_meta( $comment_id, 'listing_review_rating', (isset($_REQUEST['listing_rating'])?intval($_REQUEST['listing_rating']):1));
    3228     add_comment_meta( $comment_id, 'listing_review_title', (isset($_REQUEST['review-title'])?sanitize_text_field($_REQUEST['review-title']):''));
     3261    if ( !isset($_POST['listing_rating']) || !isset($_POST['review-title']) ) {
     3262        return;
     3263    }
     3264
     3265    $rating_value = (isset($_POST['listing_rating'])?intval($_POST['listing_rating']):1);
     3266    $rating_title = (isset($_POST['review-title'])?sanitize_text_field($_POST['review-title']):'');
     3267
     3268    add_comment_meta( $comment_id, 'listing_review_rating', $rating_value);
     3269    add_comment_meta( $comment_id, 'listing_review_title', $rating_title);
    32293270    $post_id = $comment_object->comment_post_ID;
    32303271
     
    32373278    $listing_ratings = get_post_meta( $post_id, 'listing_ratings', true);
    32383279    if ( $listing_ratings == '' ) {
    3239         update_post_meta( $post_id, 'listing_ratings', array( $user_id => intval($_REQUEST['listing_rating']) ) );
     3280        update_post_meta( $post_id, 'listing_ratings', array( $user_id => $rating_value ) );
    32403281    } else {
    3241         $listing_ratings[$user_id] = intval($_REQUEST['listing_rating']);
     3282        $listing_ratings[$user_id] = $rating_value;
    32423283        update_post_meta( $post_id, 'listing_ratings', $listing_ratings );
    32433284    }
     
    35433584                                <div class="dt-form-row">
    35443585                                    <label for="db-agree-to-terms" class="dt-checkbox">
    3545                                         <input type="checkbox" id="db-agree-to-terms" name="db-agree-to-terms" required="">I agree to all statements in <a href="#">terms and conditions</a>
     3586                                        <input type="checkbox" id="db-agree-to-terms" name="db-agree-to-terms" required="">'.esc_html__('I agree to all statements in', 'directory-builder').' <a href="javascript:void(0)" class="db-show-checkout-terms">'.esc_html__('terms and conditions', 'directory-builder').'</a>
     3587                                        <div class="db-checkout-terms hidden">'.nl2br($main_settings['terms_and_conditions']).'</div>
    35463588                                    </label>
    35473589                                </div>';
     
    35873629                                <div class="dt-form-row">
    35883630                                    <label for="db-agree-to-terms" class="dt-checkbox">
    3589                                         <input type="checkbox" id="db-agree-to-terms" name="db-agree-to-terms" required="">I agree to all statements in <a href="#">terms and conditions</a>
     3631                                        <input type="checkbox" id="db-agree-to-terms" name="db-agree-to-terms" required="">'.esc_html__('I agree to all statements in', 'directory-builder').' <a href="javascript:void(0)" class="db-show-checkout-terms">'.esc_html__('terms and conditions', 'directory-builder').'</a>
     3632                                        <div class="db-checkout-terms hidden">'.nl2br($main_settings['terms_and_conditions']).'</div>
    35903633                                    </label>
    35913634                                </div>';
     
    40394082            }
    40404083
    4041             if ( $main_settings['terms_and_conditions_status'] && !$db_edit_listing ) {
     4084            if ( $main_settings['terms_and_conditions_status'] && !$db_edit_listing && $main_settings['db_theme_id'] != 'db_theme' ) {
    40424085                $output .= '<div class="db-field-row terms-and-conditions required">
    40434086                    <label>'.__('Terms and conditions', 'directory-builder').'</label>
     
    41374180
    41384181    $listing_id = ( isset($_POST['listing_id']) ? intval($_POST['listing_id']) : '' );
    4139     $listing_package = ( isset($_POST['listing_package']) ? sanitize_text_field($_POST['listing_package']) : '' );
    41404182    $new_date = ( isset($_POST['new_date']) ? sanitize_text_field($_POST['new_date']) : '' );
    41414183
     
    41444186    $save_expiration = false;
    41454187
    4146     $package_list = $wpdb->get_results('SELECT * FROM '.$wpdb->prefix.'directory_packages WHERE ID="'.$listing_package.'"');
    4147     if ( !empty($package_list) ) {
    4148         $field_settings = json_decode($package_list['0']->package_settings, true);
    4149 
    4150         if ( $field_settings['listing_run_type'] == 'days' ) {
    4151             $listing_expiration_date = strtotime('-'.$field_settings['listing_run_days'].' days', strtotime($new_date));
    4152             $listing_info['completed_on'] = $listing_expiration_date;
    4153 
    4154             $save_expiration = update_post_meta( $listing_id, 'db_order_info', $listing_info );
    4155         }
    4156     }
     4188    $listing_info['listing_expires'] = strtotime($new_date);
     4189    $save_expiration = update_post_meta( $listing_id, 'db_order_info', $listing_info );
    41574190
    41584191    if ( $save_expiration ) {
    4159         echo '{"save_response": "0", "package_name": "'.date( get_option('date_format'), strtotime('+'.$field_settings['listing_run_days'].' days', $listing_expiration_date)).'"}';
     4192        echo '{"save_response": "0", "package_name": "'.date( get_option('date_format'), $listing_info['listing_expires']).'"}';
    41604193    } else {
    41614194        echo '{"save_response": "failed"}';
     
    49334966}
    49344967add_action( 'wp_ajax_db_featured_status', 'db_featured_status_func' );
     4968
     4969function db_do_cities_autocomplete() {
     4970    $city_value = ( isset($_POST['city_value']) ? esc_attr($_POST['city_value']) : '' );
     4971    global $wpdb;
     4972    $prepared_data = array();
     4973    $cities = $wpdb->get_results('SELECT DISTINCT meta_value as city FROM ' . $wpdb->prefix . 'postmeta WHERE meta_key="listing_city" && meta_value LIKE "%' . $city_value . '%"');
     4974   
     4975    if ( !empty($cities) ) {
     4976        foreach ($cities as $city_value) {
     4977            $prepared_data[] =  $city_value->city;
     4978        }
     4979
     4980        echo json_encode( $prepared_data );
     4981    } else {
     4982        echo 'failed';
     4983    }
     4984   
     4985    die(0);
     4986}
     4987add_action( 'wp_ajax_db_city_autocomplete', 'db_do_cities_autocomplete' );
     4988add_action( 'wp_ajax_nopriv_db_city_autocomplete', 'db_do_cities_autocomplete' );
  • directory-builder/trunk/includes/class-db-functionality-activator.php

    r1571162 r1592015  
    7070                "required" => "no",
    7171                "required_message" => "",
    72                 "on_listing" => "no",
     72                "on_listing" => "yes",
    7373                "on_detail" => "no",
    7474                "on_contact" => "yes",
     
    258258                "required" => "no",
    259259                "required_message" => "",
    260                 "on_listing" => "no",
     260                "on_listing" => "yes",
    261261                "on_detail" => "no",
    262262                "on_contact" => "yes",
     
    296296                "required" => "no",
    297297                "required_message" => "",
    298                 "on_listing" => "yes",
    299                 "on_detail" => "no",
     298                "on_listing" => "no",
     299                "on_detail" => "yes",
    300300                "on_contact" => "no",
    301301                "field_type" => "hoursofoperation"
     
    312312                "required" => "no",
    313313                "required_message" => "",
    314                 "on_listing" => "yes",
    315                 "on_detail" => "no",
     314                "on_listing" => "no",
     315                "on_detail" => "yes",
    316316                "on_contact" => "no",
    317317                "multiselect_type" => "select",
     
    361361                'search_fields' => array('listing_name', 'listing_categories', 'listing_country', 'listing_address', 'search_radius'),
    362362                'search_layout' => '{"row_1":["listing_name","listing_categories","listing_country","listing_address","search_radius"]}',
    363                 'search_radius_status' => 'no',
     363                'search_radius_status' => 'yes',
    364364                'search_radius_value' => 'km',
    365365                'search_radius_distance' => '150',
  • directory-builder/trunk/paypal_ipn.php

    r1557657 r1592015  
    108108    if ( $payment_status == 'Completed' ) {
    109109        $order_info['completed_on'] = time();
     110       
    110111        update_post_meta( $listing_id, 'db_claim_info', get_current_user_id() );
    111112    }
  • directory-builder/trunk/public/css/db-functionality-public.css

    r1557657 r1592015  
    119119    background: #D8D8D8;
    120120    border-radius: 4px;
     121}
     122
     123.db-main-search-listings.db-no-listings .db-search-scrollbar {
     124    display: none;
    121125}
    122126
     
    509513.db-upload-placeholder {
    510514    pointer-events: none;
     515}
     516
     517.db-checkout-terms {
     518    height: 228px;
     519    overflow: auto;
     520    text-align: left;
    511521}
    512522
  • directory-builder/trunk/public/js/db-functionality-public.js

    r1591115 r1592015  
    176176        var parsed_search_data = jQuery.parseJSON(data);
    177177        if ( typeof parsed_search_data.listing_html.length != 'number' ) {
     178            jQuery('.db-main-search-listings').removeClass('db-no-listings');
    178179            jQuery.each(parsed_search_data.listing_html, function(index, data) {
    179180                jQuery('.db-main-search-listings').append(data);
     
    270271           
    271272        } else {
     273            jQuery('.db-main-search-listings').addClass('db-no-listings');
    272274            jQuery('.db-main-search-listings').append('<div class="db-main-search-item full-listing" style="text-align: center;">No listings found!</div>');
    273275            db_clear_markers();
     
    507509        jQuery(this).parent().remove();
    508510    });
    509 
    510     // jQuery(document).on('click', '*', function() {
    511     //  if ( jQuery('.db-hop-dialog').css('display') == 'block' ) {
    512     //      console.log(jQuery(this).attr('class'));
    513     //  }
    514     // });
    515511
    516512    jQuery(document).on('click', function(e) {
     
    812808        });
    813809    }
     810
     811    var $idle_timer;
     812    jQuery(document).on('input', '[name="listing_city"]', function() {
     813        clearTimeout($idle_timer);
     814        var city_name = jQuery(this).val();
     815        var city_row = jQuery(this).parent();
     816
     817        if ( jQuery(this).val().length >= 1 ) {
     818            $idle_timer = setTimeout(function() {
     819                jQuery.ajax({
     820                    type: 'POST',
     821                    url: db_main.ajaxurl,
     822                    data: {
     823                        'action': 'db_city_autocomplete',
     824                        'city_value': city_name
     825                    },
     826                    success: function( data ) {
     827                        if ( !city_row.find('.db-row-autocomplete').length ) {
     828                            city_row.append('<div class="db-row-autocomplete" data-active="listing_city"><div class="db-autocomplete-inner"><div class="db-autocomplete-items"></div><div class="db-autocomplete-scrollbar-wrapper"><span class="db-autocomplete-scrollbar"></span></div></div></div>');
     829                        }
     830
     831                        city_row.find('.db-row-autocomplete .db-autocomplete-items').html('');
     832
     833                        if ( data != 'failed' ) {
     834                            var parsed_data = jQuery.parseJSON( data );
     835                            jQuery.each(parsed_data, function( index, value ) {
     836                                city_row.find('.db-row-autocomplete .db-autocomplete-items').append('<span class="db-autocomplete-item">'+value+'</span>');
     837                            });
     838                        } else {
     839                            city_row.find('.db-row-autocomplete .db-autocomplete-items').append('<span class="db-autocomplete-item not-active">Nothing found!</span>');
     840                        }
     841                        city_row.find('.db-row-autocomplete').addClass('active');
     842
     843                        if ( city_row.find('.db-autocomplete-items')[0].scrollHeight < 139 ) {
     844                            city_row.find('.db-autocomplete-scrollbar').hide();
     845                        } else {
     846                            city_row.find('.db-autocomplete-scrollbar').show();
     847                        }
     848
     849                        city_row.find('.db-autocomplete-items').bind('scroll', function() {
     850                            var scrolled_percentage = jQuery(this).scrollTop()/(jQuery(this)[0].scrollHeight-jQuery(this).innerHeight())*100;
     851                            var extra_scroll = jQuery(this).parent().parent().find('.db-autocomplete-scrollbar').height()*(scrolled_percentage/100);
     852                            var scroll_height = 'calc('+scrolled_percentage+'% - '+extra_scroll+'px)';
     853                            jQuery(this).parent().parent().find('.db-autocomplete-scrollbar').css('top', scroll_height);
     854                        });
     855
     856                        city_row.find('.db-autocomplete-scrollbar').css('height', city_row.find('.db-autocomplete-items')[0].offsetHeight*(city_row.find('.db-autocomplete-items')[0].offsetHeight/city_row.find('.db-autocomplete-items')[0].scrollHeight));
     857                    }
     858                });
     859            }, 500);
     860        } else {
     861            city_row.find('.db-row-autocomplete').removeClass('active');
     862        }
     863    });
     864
     865    jQuery(document).on('click', '.db-autocomplete-item', function() {
     866        jQuery('[name="'+jQuery(this).parent().parent().parent().attr('data-active')+'"]').val( jQuery(this).text() );
     867        jQuery(this).parent().parent().parent().removeClass('active');
     868    });
     869
     870    jQuery(document).on('click', '.db-show-checkout-terms', function() {
     871        jQuery(this).next().toggleClass('hidden');
     872    });
    814873});
Note: See TracChangeset for help on using the changeset viewer.