Plugin Directory

Changeset 3329796


Ignore:
Timestamp:
07/17/2025 03:12:30 PM (9 months ago)
Author:
jrmoser
Message:

v1.1.6

Location:
box-tracker-portal
Files:
14 edited
10 copied

Legend:

Unmodified
Added
Removed
  • box-tracker-portal/tags/1.1.6/box-tracker-portal.php

    r3278350 r3329796  
    88Plugin URI: https://www.dumpster.software/api/word-press-plugin.html
    99Description: The Box Tracker Portal plugin facilitates online ordering for waste haulers. Customers will be able to book and manage work orders, manage job sites, view reporting and manage their transactions.  Using the Web API tab on Box Tracker's Preferences app, you can prevent over booking, control which days of the week online orders will be accepted, and prevent same day ordering.  For more information about Box Tracker or this plugin please contact support at 603 546 6751 option 2 or support@cairnapps.com
    10 Version: 1.1.5
     10Version: 1.1.6
    1111Author: Cairn Applications Inc
    1212Author URI: https://www.cloud-computing.rocks/
  • box-tracker-portal/tags/1.1.6/includes/ajax/jobsite-page.php

    r3278341 r3329796  
    160160                }
    161161
    162                 $b0xTPortal_jobsite_name         = sanitize_text_field($b0xTPortal_jobsite_data->jobSiteObj->JobName);
     162                $b0xTPortal_validated            = "0";
     163                $b0xTPortal_jobsite_name         = "";
     164                if(isset($b0xTPortal_jobsite_data->jobSiteObj->Validated)) { $b0xTPortal_validated    = sanitize_text_field($b0xTPortal_jobsite_data->jobSiteObj->Validated); }
     165                if(isset($b0xTPortal_jobsite_data->jobSiteObj->JobName))   { $b0xTPortal_jobsite_name = sanitize_text_field($b0xTPortal_jobsite_data->jobSiteObj->JobName);   }
     166                $b0xTPortal_jobsite_validated    = is_numeric($b0xTPortal_validated) ? $b0xTPortal_validated : "0";
     167
    163168                $b0xTPortal_jobsite_zip          = sanitize_text_field($b0xTPortal_jobsite_data->jobSiteObj->Zip);
    164169                $b0xTPortal_jobsite_county       = sanitize_text_field($b0xTPortal_jobsite_data->jobSiteObj->County);
     
    171176                $b0xTPortal_jobsite_billing_note = sanitize_text_field($b0xTPortal_jobsite_data->jobSiteObj->BillingNote);
    172177                $b0xTPortal_jobsite_leed         = sanitize_text_field($b0xTPortal_jobsite_data->jobSiteObj->LEED);
    173                 $b0xTPortal_validated            = sanitize_text_field($b0xTPortal_jobsite_data->jobSiteObj->Validated);
    174                 $b0xTPortal_jobsite_validated    = is_numeric($b0xTPortal_validated) ? $b0xTPortal_validated : "0";
    175178
    176179                $b0xTPortal_jobsite_required_fields_for_eval = array();
  • box-tracker-portal/tags/1.1.6/includes/ajax/reports-page.php

    r2763253 r3329796  
    133133
    134134        $b0xTPortal_report_params = array();
    135         if($_POST["b0xTPortal_report_start_date"]) {
     135        if(isset($_POST["b0xTPortal_report_start_date"])) {
    136136            $b0xTPortal_report_params["startDate"] = sanitize_text_field($_POST["b0xTPortal_report_start_date"]);
    137137        }
    138138
    139         if($_POST["b0xTPortal_report_end_date"]) {
     139        if(isset($_POST["b0xTPortal_report_end_date"])) {
    140140            $b0xTPortal_report_params["endDate"] = sanitize_text_field($_POST["b0xTPortal_report_end_date"]);
    141141        }
    142142
    143         if($_POST["b0xTPortal_report_delivery_date"]) {
     143        if(isset($_POST["b0xTPortal_report_delivery_date"])) {
    144144            $b0xTPortal_report_params["deliveryDate"] = sanitize_text_field($_POST["b0xTPortal_report_delivery_date"]);
    145145        }
    146146
    147         if($_POST["b0xTPortal_report_month"]) {
     147        if(isset($_POST["b0xTPortal_report_month"])) {
    148148            $b0xTPortal_report_params["month"] = sanitize_text_field($_POST["b0xTPortal_report_month"]);
    149149        }
    150150
    151         if($_POST["b0xTPortal_report_year"]) {
     151        if(isset($_POST["b0xTPortal_report_year"])) {
    152152            $b0xTPortal_report_params["year"] = sanitize_text_field($_POST["b0xTPortal_report_year"]);
    153153        }
    154154
    155         if($_POST["b0xTPortal_report_jobsite_id"]) {
     155        if(isset($_POST["b0xTPortal_report_jobsite_id"])) {
    156156            $b0xTPortal_report_params["jobSite"] = sanitize_text_field($_POST["b0xTPortal_report_jobsite_id"]);
    157157        }
    158158
    159         if($_POST["b0xTPortal_report_wo_type"]) {
     159        if(isset($_POST["b0xTPortal_report_wo_type"])) {
    160160            $b0xTPortal_report_params["woType"] = sanitize_text_field($_POST["b0xTPortal_report_wo_type"]);
    161161        }
    162162
    163         if($_POST["b0xTPortal_report_check_boxes"] && is_array($_POST["b0xTPortal_report_check_boxes"])) {
     163        if(isset($_POST["b0xTPortal_report_check_boxes"]) && is_array($_POST["b0xTPortal_report_check_boxes"])) {
    164164            $b0xTPortal_check_boxes = $this->b0xTPortal_sanitize_array_values($_POST["b0xTPortal_report_check_boxes"]);
    165165
     
    171171        }
    172172
    173         if($_POST["b0xTPortal_report_sort_by"]) {
     173        if(isset($_POST["b0xTPortal_report_sort_by"])) {
    174174            $b0xTPortal_report_params["sortBy"] = sanitize_text_field($_POST["b0xTPortal_report_sort_by"]);
    175175        }
    176176
    177         if($_POST["b0xTPortal_report_filter_by"]) {
     177        if(isset($_POST["b0xTPortal_report_filter_by"])) {
    178178            $b0xTPortal_report_params["filterBy"] = sanitize_text_field($_POST["b0xTPortal_report_filter_by"]);
    179179        }
    180180
    181         if($_POST["b0xTPortal_report_list_by"]) {
     181        if(isset($_POST["b0xTPortal_report_list_by"])) {
    182182            $b0xTPortal_report_params["listBy"] = sanitize_text_field($_POST["b0xTPortal_report_list_by"]);
    183183        }
  • box-tracker-portal/tags/1.1.6/includes/ajax/workorder-page.php

    r3278341 r3329796  
    3030        $b0xTPortal_username             = sanitize_text_field($_SESSION['b0xTPortal_session']['username']);
    3131        $b0xTPortal_session_key_customer = sanitize_text_field($_SESSION['b0xTPortal_session']['session_key']);
    32         $b0xTPortal_search_field         = sanitize_text_field($_POST["b0xTPortal_search"]);
     32
     33        $b0xTPortal_search_field         = "";
     34        if(isset($_POST["b0xTPortal_search"])) { $b0xTPortal_search_field = sanitize_text_field($_POST["b0xTPortal_search"]); }
    3335
    3436        if($b0xTPortal_username == "" || $b0xTPortal_session_key_customer == "") {
  • box-tracker-portal/tags/1.1.6/includes/base/ajax-utility.php

    r2763253 r3329796  
    9898               
    9999            foreach ($b0xTPortal_required_fields as $b0xTPortal_field_value) {
    100                 if($b0xTPortal_fields_map[$b0xTPortal_field_value]) {
     100                if(isset($b0xTPortal_fields_map[$b0xTPortal_field_value])) {
    101101                    array_push($b0xTPortal_required_fields_mapped, $b0xTPortal_fields_map[$b0xTPortal_field_value]);   
    102102                }   
  • box-tracker-portal/tags/1.1.6/includes/base/enqueue.php

    r3247411 r3329796  
    3030            wp_enqueue_style('b0xTPortal-front-house-style', $this->b0xTPortal_plugin_url.'styles/front-house-style.css', '', '', 'all');
    3131            wp_enqueue_style('b0xTPortal-jquery-ui-style', "https://ajax.googleapis.com/ajax/libs/jqueryui/1.9.0/themes/base/jquery-ui.css", '', '', 'all');
     32            wp_enqueue_style('b0xTPortal-google-maps-icon-style', "https://fonts.googleapis.com/icon?family=Material+Icons", '', '', 'all');
    3233
    3334            wp_enqueue_script('b0xTPortal-login-page', $this->b0xTPortal_plugin_url.'javascript/dynamic-templates/login-page.js', '', '', 'all');
     
    4546
    4647            $b0xT_google_api_key = sanitize_text_field(get_option('b0xT_google_api_key'));
    47             wp_enqueue_script('b0xTPortal-google-maps', "https://maps.googleapis.com/maps/api/js?key=$b0xT_google_api_key&libraries=places", '', '', 'all');
     48            wp_enqueue_script('b0xTPortal-google-maps', "https://maps.googleapis.com/maps/api/js?key=$b0xT_google_api_key&loading=async&libraries=places", '', '', 'all');
    4849            wp_enqueue_script('b0xTPortal-google-charts', "https://www.gstatic.com/charts/loader.js", '', '', 'all');
    4950            wp_enqueue_script('b0xTPortal-dialog-box-script', $this->b0xTPortal_plugin_url.'javascript/dialog-box-script.js', '', '', 'all');
  • box-tracker-portal/tags/1.1.6/javascript/address-validation-script.js

    r2763253 r3329796  
    22     var b0xTPortal_address_data = this;
    33     b0xTPortal_address_data.config = b0xTPortal_arg_config;
     4     b0xTPortal_address_data.random_number = Math.floor(Math.random() * 1000000);
    45
    56     b0xTPortal_address_data.validated = "0";
    67
    7      var b0xTPortal_place_auto_complete;
    8 
    9      this._b0xTPortal_init = function() {
    10           //setup google places address autocomplete
    11           var b0xTPortal_search = b0xTPortal_address_data.config.searchCtrl;
    12           b0xTPortal_place_auto_complete = new google.maps.places.Autocomplete(
     8     this._b0xTPortal_init = async function() {
     9          let b0xTPortal_waitForGoogle = async function() {
     10               return new Promise(function(b0xTPortal_resolve) {
     11                    async function b0xTPortal_isItReady() {
     12                         if(typeof(google.maps.places) !== "undefined") {
     13                              try { //make a call to make sure the api is included in the key.
     14                                    //this call is not included in billing because the get details never
     15                                    //never gets called.
     16                                   const b0xTPortal_token = new google.maps.places.AutocompleteSessionToken();
     17                                   const b0xTPortal_suggestions = await google.maps.places.AutocompleteSuggestion.fetchAutocompleteSuggestions({
     18                                        sessionToken: b0xTPortal_token,
     19                                        input: "588",
     20                                        language: "en-US",
     21                                        includedRegionCodes: ["us", "ca"]   
     22                                   });
     23                              } catch(e) {
     24                                    b0xTPortal_resolve(1);
     25                              }
     26                              b0xTPortal_resolve(0);
     27                         } else {
     28                              setTimeout(b0xTPortal_isItReady, 50);
     29                         }
     30                    }
     31                    b0xTPortal_isItReady();
     32               });
     33          };
     34
     35          let b0xTPortal_legacy_check = await b0xTPortal_waitForGoogle();
     36
     37          if(b0xTPortal_legacy_check) {
     38               b0xTPortal_address_data._b0xTPortal_init_legacy();
     39               return;
     40          }
     41
     42          let b0xTPortal_address_suggestion_wrap                   = document.createElement("div");
     43          b0xTPortal_address_suggestion_wrap.style.position        = "absolute";
     44          b0xTPortal_address_suggestion_wrap.style.marginTop       = "1px";
     45          b0xTPortal_address_suggestion_wrap.style.borderRadius    = "1px";
     46          b0xTPortal_address_suggestion_wrap.style.backgroundColor = "#ffffff";
     47          b0xTPortal_address_suggestion_wrap.style.zIndex          = 1;
     48
     49          //allow developers to style it
     50          b0xTPortal_address_suggestion_wrap.setAttribute("class", "b0xTPortal_address_suggestion_wrap");
     51
     52          b0xTPortal_address_data.address_suggestion_wrap          = b0xTPortal_address_suggestion_wrap;
     53          b0xTPortal_address_data.config.searchCtrl.after(b0xTPortal_address_suggestion_wrap);
     54          b0xTPortal_address_data.config.searchCtrl.setAttribute("placeholder", "Search Address");
     55
     56          //setup event listensers on fields
     57          b0xTPortal_address_data.config.searchCtrl.addEventListener("keyup", function(b0xTPortal_e) {
     58               if(b0xTPortal_e.key != "ArrowDown" && b0xTPortal_e.key != "ArrowUp" && b0xTPortal_e.key != "ArrowLeft" && b0xTPortal_e.key != "ArrowRight" && b0xTPortal_e.key != "Enter") {     
     59                    clearTimeout(b0xTPortal_address_data.searchTimeOut); 
     60                    b0xTPortal_address_data.searchTimeOut = setTimeout(function() {
     61                         if(!String(b0xTPortal_address_data.config.searchCtrl.value).trim()) {
     62                              b0xTPortal_address_data.address_suggestion_wrap.innerHTML = "";
     63                              b0xTPortal_address_data.address_suggestion_wrap.style.boxShadow = "none";
     64                              return;
     65                         }
     66
     67                         //if we are using the search bar to act as the address bar aswell. then trigger the address changed
     68                         if(b0xTPortal_address_data.config.addressCtrl && (b0xTPortal_address_data.config.addressCtrl == b0xTPortal_address_data.config.searchCtrl)) {
     69                              b0xTPortal_address_data._b0xTPortal_address_changed();
     70                         }
     71     
     72                         b0xTPortal_address_data._b0xTPortal_get_suggestions(b0xTPortal_address_data.config.searchCtrl.value);
     73                         b0xTPortal_address_data.address_suggestion_wrap.style.boxShadow = "0px 0px 4px 1px #d2d2d2";
     74                    }, 500);
     75               }
     76          });
     77
     78          b0xTPortal_address_data.config.searchCtrl.addEventListener("keydown", function(b0xTPortal_e) {
     79               let b0xTPortal_address_suggestions_wrap = document.getElementById("b0xTPortal_"+b0xTPortal_address_data.random_number+"_AddrVldtrSuggestionsContent");
     80               if(!b0xTPortal_address_suggestions_wrap) { return; }
     81
     82               let b0xTPortal_selected = function(b0xTPortal_argDiv) {
     83                    b0xTPortal_argDiv.parentElement.style.color = "#0174ab";
     84                    b0xTPortal_argDiv.parentElement.style.backgroundColor = "#dddddd";
     85                    b0xTPortal_address_data.config.searchCtrl.value = b0xTPortal_argDiv.valHTML;
     86               };
     87
     88               let b0xTPortal_unSelected = function(b0xTPortal_argDiv) {
     89                    b0xTPortal_argDiv.parentElement.style.removeProperty("color");
     90                    b0xTPortal_argDiv.parentElement.style.removeProperty("background-color");
     91               };
     92 
     93               if(b0xTPortal_e.key == "ArrowDown" || b0xTPortal_e.key == "ArrowUp" || b0xTPortal_e.key == "Enter") {
     94                    let b0xTPortal_child_wrappers = Array.from(b0xTPortal_address_suggestions_wrap.children);
     95
     96                    if(b0xTPortal_e.key == "ArrowDown" || b0xTPortal_e.key == "ArrowUp") {
     97                         clearTimeout(b0xTPortal_address_data.cursorTimeout);
     98                         b0xTPortal_child_wrappers.forEach(function(b0xTPortal_argDiv) {
     99                              b0xTPortal_unSelected(b0xTPortal_argDiv.children[0]);
     100                         });
     101
     102                         if(String(b0xTPortal_address_suggestions_wrap.keyIndex) == "") {
     103                              b0xTPortal_address_suggestions_wrap.keyIndex  = -1;
     104                         }
     105
     106                         if(b0xTPortal_e.key == "ArrowDown") {
     107                              if(b0xTPortal_address_suggestions_wrap.keyIndex < b0xTPortal_child_wrappers.length) {
     108                                   b0xTPortal_address_suggestions_wrap.keyIndex++;
     109                              }
     110
     111                              if(b0xTPortal_address_suggestions_wrap.keyIndex == b0xTPortal_child_wrappers.length) {
     112                                   b0xTPortal_address_suggestions_wrap.keyIndex = -1;
     113                              }
     114                         } else {
     115                              if(b0xTPortal_address_suggestions_wrap.keyIndex >= -1) {
     116                                   b0xTPortal_address_suggestions_wrap.keyIndex--;
     117                              }
     118
     119                              if(b0xTPortal_address_suggestions_wrap.keyIndex == -2) {
     120                                   b0xTPortal_address_suggestions_wrap.keyIndex = b0xTPortal_child_wrappers.length - 1;
     121                              }
     122                         }
     123
     124                         if(b0xTPortal_child_wrappers[b0xTPortal_address_suggestions_wrap.keyIndex]) {
     125                              let b0xTPortal_nextDiv = b0xTPortal_child_wrappers[b0xTPortal_address_suggestions_wrap.keyIndex].children[0];
     126                              b0xTPortal_selected(b0xTPortal_nextDiv);
     127                         } else {
     128                              b0xTPortal_address_data.config.searchCtrl.value = b0xTPortal_address_suggestions_wrap.keyOrgVal;
     129                         }
     130
     131                         //for smooth transition
     132                         b0xTPortal_address_data.config.searchCtrl.style.caretColor = 'transparent';
     133                         b0xTPortal_address_data.cursorTimeout = setTimeout(function() {
     134                              let b0xTPortal_valLength = b0xTPortal_address_data.config.searchCtrl.value.length;
     135                              b0xTPortal_address_data.config.searchCtrl.setSelectionRange(b0xTPortal_valLength, b0xTPortal_valLength);
     136                              b0xTPortal_address_data.config.searchCtrl.style.removeProperty("caret-color");
     137                         }, 10);
     138                    } else if(b0xTPortal_e.key == "Enter") {
     139                         if(b0xTPortal_child_wrappers[b0xTPortal_address_suggestions_wrap.keyIndex]) {
     140                              let b0xTPortal_nextDiv = b0xTPortal_child_wrappers[b0xTPortal_address_suggestions_wrap.keyIndex].children[0];
     141                              b0xTPortal_nextDiv.click();
     142                              b0xTPortal_address_data.config.searchCtrl.blur();
     143                         }
     144                    }
     145               }
     146          });
     147
     148          b0xTPortal_address_data.config.searchCtrl.addEventListener("focus", function(b0xTPortal_e) {     
     149               clearTimeout(b0xTPortal_address_data.searchTimeOut); 
     150               b0xTPortal_address_data.searchTimeOut = setTimeout(function() {
     151                    if(!String(b0xTPortal_address_data.config.searchCtrl.value).trim()) { return; }
     152                    b0xTPortal_address_data._b0xTPortal_get_suggestions(b0xTPortal_address_data.config.searchCtrl.value);
     153                    b0xTPortal_address_data.address_suggestion_wrap.style.boxShadow = "0px 0px 4px 1px #d2d2d2";
     154               }, 500);
     155          });
     156
     157          b0xTPortal_address_data.config.searchCtrl.addEventListener("blur", function(b0xTPortal_e) {
     158               clearTimeout(b0xTPortal_address_data.blurTimeOut); 
     159               b0xTPortal_address_data.blurTimeOut = setTimeout(function() {
     160                    b0xTPortal_address_data.address_suggestion_wrap.innerHTML = "";
     161                    b0xTPortal_address_data.address_suggestion_wrap.style.boxShadow = "none";
     162               }, 500);
     163          });
     164
     165          //if we are not using the search bar to act as the address bar, then set an onchange handler. Otherwise skip it
     166          if(b0xTPortal_address_data.config.addressCtrl && (b0xTPortal_address_data.config.addressCtrl != b0xTPortal_address_data.config.searchCtrl)) {
     167               b0xTPortal_address_data.config.addressCtrl = b0xTPortal_address_data._b0xTPortal_address_changed;
     168          }
     169
     170          b0xTPortal_address_data.config.cityCtrl.onchange   = b0xTPortal_address_data._b0xTPortal_address_changed;
     171          b0xTPortal_address_data.config.stateCtrl.onchange  = b0xTPortal_address_data._b0xTPortal_address_changed;
     172          b0xTPortal_address_data.config.postalCtrl.onchange = b0xTPortal_address_data._b0xTPortal_address_changed;
     173     };
     174
     175     this._b0xTPortal_init_legacy = function() {
     176          let b0xTPortal_search = b0xTPortal_address_data.config.searchCtrl;
     177          let b0xTPortal_place_auto_complete = new google.maps.places.Autocomplete(
    13178               b0xTPortal_search, {
    14179                    fields: ['geometry', 'address_component', 'type']
     
    16181          );
    17182
    18           var b0xTPortal_call_back = function () {
    19                b0xTPortal_address_data._b0xTPortal_fill_in_address();
    20           }
    21 
    22           b0xTPortal_place_auto_complete.addListener( 'place_changed',  b0xTPortal_call_back);
    23           b0xTPortal_address_data.placeautocomplete = b0xTPortal_place_auto_complete;
     183          let b0xTPortal_call_back = function () {
     184               b0xTPortal_address_data._b0xTPortal_fill_in_address_legacy();
     185          }
     186
     187          b0xTPortal_place_auto_complete.addListener('place_changed',  b0xTPortal_call_back);
     188          b0xTPortal_address_data.placeautocomplete_legacy = b0xTPortal_place_auto_complete;
    24189
    25190          //limit the counties to usa and canada
     
    29194
    30195          //setup event listensers on fields
    31           b0xTPortal_address_data.config.addressCtrl.oninput = b0xTPortal_address_data._b0xTPortal_address_changed;
    32           b0xTPortal_address_data.config.cityCtrl.onchange = b0xTPortal_address_data._b0xTPortal_address_changed;
    33           b0xTPortal_address_data.config.stateCtrl.onchange = b0xTPortal_address_data._b0xTPortal_address_changed;
    34           b0xTPortal_address_data.config.postalCtrl.onchange = b0xTPortal_address_data._b0xTPortal_address_changed;
    35      };
    36 
    37      this._b0xTPortal_fill_in_address = function () {
    38           var b0xTPortal_place = b0xTPortal_address_data.placeautocomplete.getPlace();
     196          b0xTPortal_address_data.config.addressCtrl.onchange = function() { b0xTPortal_address_data._b0xTPortal_address_changed(1); }
     197          b0xTPortal_address_data.config.cityCtrl.onchange    = function() { b0xTPortal_address_data._b0xTPortal_address_changed(1); }
     198          b0xTPortal_address_data.config.stateCtrl.onchange   = function() { b0xTPortal_address_data._b0xTPortal_address_changed(1); }
     199          b0xTPortal_address_data.config.postalCtrl.onchange  = function() { b0xTPortal_address_data._b0xTPortal_address_changed(1); }
     200     }
     201
     202     this._b0xTPortal_get_suggestions = async function(b0xTPortal_v) {
     203          //creating a new session if it does not exist.
     204          const b0xTPortal_token = b0xTPortal_address_data.token_session ? b0xTPortal_address_data.token_session : new google.maps.places.AutocompleteSessionToken();
     205          b0xTPortal_address_data.token_session = b0xTPortal_token;
     206
     207          let b0xTPortal_options = {
     208               sessionToken: b0xTPortal_token,
     209               input: b0xTPortal_v,
     210               language: "en-US",
     211               includedRegionCodes: ["us", "ca"]
     212          };
     213
     214          const b0xTPortal_suggestions = await google.maps.places.AutocompleteSuggestion.fetchAutocompleteSuggestions(b0xTPortal_options);
     215          const b0xTPortal_suggestions_array = b0xTPortal_suggestions.suggestions;
     216
     217          let b0xTPortal_fill_structure = function(b0xTPortal_address_suggestions_wrap) {
     218               b0xTPortal_address_suggestions_wrap.innerHTML = "";
     219               b0xTPortal_address_suggestions_wrap.keyIndex  = "";
     220               b0xTPortal_address_suggestions_wrap.keyOrgVal = b0xTPortal_address_data.config.searchCtrl.value;
     221
     222               b0xTPortal_suggestions_array.forEach(function(b0xTPortal_suggestion, b0xTPortal_index) {
     223                    const b0xTPortal_place_prediction = b0xTPortal_suggestion.placePrediction;
     224                    let b0xTPortal_input_wrap              = document.createElement("div");
     225                    let b0xTPortal_input                   = document.createElement("div");
     226                    b0xTPortal_input.style.whiteSpace      = "nowrap";
     227                    b0xTPortal_input.style.borderRadius    = "0px";
     228                    b0xTPortal_input.style.width           = "calc(100% - 20px)";
     229                    b0xTPortal_input.style.border          = "0px";
     230                    b0xTPortal_input.style.padding         = "10px";
     231                    b0xTPortal_input.style.cursor          = "pointer";
     232
     233                    let b0xTPortal_icon                    = document.createElement("i");
     234                    b0xTPortal_icon.style.verticalAlign    = "middle";
     235                    b0xTPortal_icon.style.fontSize         = "14pt";
     236                    b0xTPortal_icon.style.marginRight      = "5px";
     237                    b0xTPortal_icon.style.color            = "#808080";
     238
     239                    b0xTPortal_icon.setAttribute("class", "material-icons");
     240                    b0xTPortal_icon.innerHTML = "place";
     241
     242                    b0xTPortal_input.appendChild(b0xTPortal_icon);
     243                    b0xTPortal_input.innerHTML += b0xTPortal_place_prediction.text.toString();
     244                    b0xTPortal_input.valHTML = b0xTPortal_place_prediction.text.toString();
     245
     246                    if(b0xTPortal_index < b0xTPortal_suggestions_array.length - 1) {
     247                         b0xTPortal_input_wrap.style.borderBottom = "1px solid #d1cfcf";
     248                    }
     249
     250                    b0xTPortal_input.onmouseover = function() {
     251                         this.style.color = "#0174ab";
     252                         this.style.backgroundColor = "#f5f5f5";
     253                    };
     254                    b0xTPortal_input.onmouseout = function() {
     255                         this.style.removeProperty("color");
     256                         this.style.removeProperty("background-color");
     257                    }
     258                    b0xTPortal_input.onclick = function() {
     259                         clearTimeout(b0xTPortal_address_data.blurTimeOut);
     260                         clearTimeout(b0xTPortal_address_data.searchTimeOut);
     261                         b0xTPortal_address_data._b0xTPortal_fill_in_address(b0xTPortal_place_prediction);
     262                         b0xTPortal_address_data.address_suggestion_wrap.innerHTML = "";
     263                         b0xTPortal_address_data.address_suggestion_wrap.style.boxShadow = "none";
     264                    }
     265
     266                    b0xTPortal_input_wrap.appendChild(b0xTPortal_input);
     267                    b0xTPortal_address_suggestions_wrap.appendChild(b0xTPortal_input_wrap);
     268               });
     269          };
     270
     271          let b0xTPortal_build_structure = function() {
     272               let b0xTPortal_flex_master_div                 = document.createElement("div");
     273               b0xTPortal_flex_master_div.style.flexDirection = "column";
     274               b0xTPortal_flex_master_div.style.display       = "flex";
     275
     276               //content
     277               let b0xTPortal_address_suggestions_wrap                = document.createElement("div");
     278               b0xTPortal_address_suggestions_wrap.setAttribute("id", "b0xTPortal_"+b0xTPortal_address_data.random_number+"_AddrVldtrSuggestionsContent");
     279               b0xTPortal_address_suggestions_wrap.style.border       = "1px solid #d1cfcf";
     280               b0xTPortal_address_suggestions_wrap.style.borderBottom = "0px";
     281               b0xTPortal_address_suggestions_wrap.style.overflowY    = "auto";
     282               b0xTPortal_address_suggestions_wrap.style.maxHeight    = "300px";
     283
     284               b0xTPortal_fill_structure(b0xTPortal_address_suggestions_wrap);
     285
     286               b0xTPortal_flex_master_div.appendChild(b0xTPortal_address_suggestions_wrap);
     287
     288               //logo
     289               let b0xTPortal_powered_by_wrap = document.createElement("div");
     290               b0xTPortal_powered_by_wrap.style.border    = "1px solid #d1cfcf";         
     291               b0xTPortal_powered_by_wrap.style.borderTop = "0px";
     292
     293               let b0xTPortal_powered_by = document.createElement("div");
     294               b0xTPortal_powered_by.style.borderRadius  = "0px";
     295               b0xTPortal_powered_by.style.width         = "calc(100% - 20px)";
     296               b0xTPortal_powered_by.style.border        = "0px";
     297               b0xTPortal_powered_by.style.padding       = "10px";
     298
     299               b0xTPortal_powered_by.style.color         = "#808080";
     300               b0xTPortal_powered_by.style.textAlign     = "right";
     301               b0xTPortal_powered_by.style.fontWeight    = "bold";
     302               b0xTPortal_powered_by.style.pointerEvents = "none";
     303               b0xTPortal_powered_by.innerHTML           = "powered by";
     304
     305               let b0xTPortal_icon = document.createElement("img");
     306               b0xTPortal_icon.setAttribute("src", b0xTPortal_address_data.config.imageUrl+"/Google_logo.png");
     307
     308               b0xTPortal_icon.style.height        = "18px";
     309               b0xTPortal_icon.style.verticalAlign = "middle";
     310               b0xTPortal_icon.style.marginLeft    = "5px";
     311
     312               b0xTPortal_powered_by.appendChild(b0xTPortal_icon);
     313               b0xTPortal_powered_by_wrap.appendChild(b0xTPortal_powered_by);
     314
     315               b0xTPortal_flex_master_div.appendChild(b0xTPortal_powered_by_wrap);
     316
     317               //put it together
     318               b0xTPortal_address_data.address_suggestion_wrap.appendChild(b0xTPortal_flex_master_div);
     319          };
     320
     321          let b0xTPortal_address_suggestions_wrap = document.getElementById("b0xTPortal_"+b0xTPortal_address_data.random_number+"_AddrVldtrSuggestionsContent");
     322
     323          if(!b0xTPortal_address_suggestions_wrap) {
     324               b0xTPortal_build_structure();
     325          } else {
     326               b0xTPortal_fill_structure(b0xTPortal_address_suggestions_wrap);
     327          }
     328     };
     329
     330     this._b0xTPortal_fill_in_address = async function (b0xTPortal_place_prediction) {
     331          var b0xTPortal_place = b0xTPortal_place_prediction.toPlace();
     332
     333          await b0xTPortal_place.fetchFields({fields: ['location', 'addressComponents', 'types', 'displayName']});
     334
     335          //clear session token, this way we create a
     336          //new one when the suggestion triggers again
     337          b0xTPortal_address_data.token_session = undefined;
     338
     339          if (!b0xTPortal_place.location) {
     340               b0xTPortal_address_data.b0xTPortal_refresh_google_verification();
     341
     342               if(b0xTPortal_address_data.dBox) {
     343                    b0xTPortal_address_data.dBox.b0xTPortal_open_dialog("WARNING!!", 'No details available for input: '+b0xTPortal_place.displayName, null);
     344               }
     345               return;
     346          }
     347       
     348          //get autocompleted address
     349          let b0xTPortal_street_number = b0xTPortal_address_data._b0xTPortal_find_address_component( b0xTPortal_place.addressComponents, 'street_number' );
     350          b0xTPortal_street_number.shortText = b0xTPortal_street_number.shortText ? b0xTPortal_street_number.shortText : b0xTPortal_address_data.config.searchCtrl.value.split(' ')[0].replaceAll(/\D/g, '');
     351 
     352          let b0xTPortal_street_name = b0xTPortal_address_data._b0xTPortal_find_address_component( b0xTPortal_place.addressComponents, 'street_address' );
     353          b0xTPortal_street_name = b0xTPortal_street_name.longText ? b0xTPortal_street_name : b0xTPortal_address_data._b0xTPortal_find_address_component( b0xTPortal_place.addressComponents, 'route' );
     354          b0xTPortal_street_name = b0xTPortal_street_name.longText ? b0xTPortal_street_name : b0xTPortal_address_data._b0xTPortal_find_address_component( b0xTPortal_place.addressComponents, 'intersection' );
     355 
     356          let b0xTPortal_city = b0xTPortal_address_data._b0xTPortal_find_address_component( b0xTPortal_place.addressComponents, 'locality' );
     357          b0xTPortal_city = b0xTPortal_city.longText ? b0xTPortal_city : b0xTPortal_address_data._b0xTPortal_find_address_component( b0xTPortal_place.addressComponents, 'administrative_area_level_3' );
     358          b0xTPortal_city = b0xTPortal_city.longText ? b0xTPortal_city : b0xTPortal_address_data._b0xTPortal_find_address_component( b0xTPortal_place.addressComponents, 'sublocality_level_1' );
     359 
     360          let b0xTPortal_state = b0xTPortal_address_data._b0xTPortal_find_address_component( b0xTPortal_place.addressComponents, 'administrative_area_level_1' );
     361          let b0xTPortal_postal = b0xTPortal_address_data._b0xTPortal_find_address_component( b0xTPortal_place.addressComponents, 'postal_code' );         
     362          let b0xTPortal_postal_suffix = b0xTPortal_address_data._b0xTPortal_find_address_component( b0xTPortal_place.addressComponents, 'postal_code_suffix' );
     363
     364          //we are done, clear address field
     365          b0xTPortal_address_data.config.addressCtrl.value = "";
     366
     367          //however, is state part of the selected country ?
     368          //if not we dont want to go any further than this
     369          var found_state = 0;
     370          for(var option of b0xTPortal_address_data.config.stateCtrl.options) {
     371               if(option.value == b0xTPortal_state.shortText) {
     372                    found_state++;
     373               }
     374          }
     375
     376          if(!found_state) {
     377               b0xTPortal_address_data.config.cityCtrl.value = "";
     378               b0xTPortal_address_data.config.stateCtrl.value = "";
     379               b0xTPortal_address_data.b0xTPortal_refresh_google_verification();
     380               if(b0xTPortal_address_data.dBox) {
     381                    b0xTPortal_address_data.dBox.b0xTPortal_open_dialog("WARNING!!", "This address appears to reside in a country that is not accepted by this company", null);
     382               }
     383               return;
     384          }
     385
     386          b0xTPortal_address_data.config.addressCtrl.value = `${b0xTPortal_street_number.shortText} ${b0xTPortal_street_name.shortText}`;
     387          b0xTPortal_address_data.current_address = `${b0xTPortal_street_number.shortText} ${b0xTPortal_street_name.shortText}`;
     388          b0xTPortal_address_data.config.cityCtrl.value = b0xTPortal_city.longText;
     389          b0xTPortal_address_data.config.stateCtrl.value = b0xTPortal_state.shortText;
     390          b0xTPortal_address_data.config.postalCtrl.value = b0xTPortal_postal.shortText;
     391
     392          //check if the address is rooftop
     393          let b0xTPortal_verified = b0xTPortal_place.types.includes('premise') || b0xTPortal_place.location.location_type == 'ROOFTOP' || b0xTPortal_postal_suffix.shortText.length;
     394
     395          b0xTPortal_verified = b0xTPortal_verified ? 1 : 0;
     396          b0xTPortal_address_data.b0xTPortal_refresh_google_verification(b0xTPortal_verified);
     397     };
     398
     399     this._b0xTPortal_fill_in_address_legacy = function () {
     400          var b0xTPortal_place = b0xTPortal_address_data.placeautocomplete_legacy.getPlace();
    39401
    40402          if (!b0xTPortal_place.geometry) {
     
    98460     };
    99461
    100      this._b0xTPortal_find_address_component = function( b0xTPortal_address_array, b0xTPortal_search ) {
     462     this._b0xTPortal_find_address_component = function(b0xTPortal_address_array, b0xTPortal_search, b0xTPortal_arg_legacy) {
    101463          for( let i = 0; i < b0xTPortal_address_array.length; i++ ) {
    102464               if ( b0xTPortal_address_array[i].types[0] == b0xTPortal_search ) {
     
    104466               }
    105467          }
    106           return { long_name: '', short_name: '', types: [ b0xTPortal_search ] };
     468          if(b0xTPortal_arg_legacy) {
     469               return { long_name: '', short_name: '', types: [ b0xTPortal_search ] };
     470          }
     471          return { longText: '', shortText: '', types: [ b0xTPortal_search ] };
    107472     };
    108473
     
    129494     };
    130495
    131      this._b0xTPortal_address_changed = function() {
    132           if(b0xTPortal_address_data.validated * 1 == 0) {} else {
    133                b0xTPortal_address_data.b0xTPortal_refresh_google_verification(0);
    134           }
     496     this._b0xTPortal_address_changed = function(b0xTPortal_arg_legacy) {
     497          let b0xTPortal_the_work = function() {
     498               if(b0xTPortal_address_data.validated * 1 == 0) {} else {
     499                    b0xTPortal_address_data.b0xTPortal_refresh_google_verification(0);
     500               }
     501          }
     502
     503          if(b0xTPortal_arg_legacy) {
     504               b0xTPortal_the_work();
     505               return;
     506          }
     507
     508          clearTimeout(b0xTPortal_address_data.changeTimeout);
     509          b0xTPortal_address_data.changeTimeout = setTimeout(function() {
     510               b0xTPortal_the_work(); 
     511          }, 500);
    135512     };
    136513
     
    167544}
    168545
    169 
    170 
  • box-tracker-portal/tags/1.1.6/javascript/dynamic-templates/add-edit-jobsite-page.js

    r2924835 r3329796  
    305305                    "stateCtrl" : b0xTPortal_data.fields["b0xTPortal_jobsite_state"],
    306306                    "postalCtrl" : b0xTPortal_data.fields["b0xTPortal_jobsite_zip"],
    307                     "validateCtrl" : b0xTPortal_data.fields["b0xTPortal_google_validator"]
     307                    "validateCtrl" : b0xTPortal_data.fields["b0xTPortal_google_validator"],
     308                    "imageUrl": b0xTPortal_data.config.image_url
    308309                });
    309310            }
  • box-tracker-portal/tags/1.1.6/readme.txt

    r3278350 r3329796  
    44Requires PHP: 5.6.4
    55Tested up to: 6.8
    6 Stable tag: 1.1.5
     6Stable tag: 1.1.6
    77License: GPLv2 or later
    88License URI: http://www.gnu.org/licenses/gpl-2.0.html
  • box-tracker-portal/trunk/box-tracker-portal.php

    r3278350 r3329796  
    88Plugin URI: https://www.dumpster.software/api/word-press-plugin.html
    99Description: The Box Tracker Portal plugin facilitates online ordering for waste haulers. Customers will be able to book and manage work orders, manage job sites, view reporting and manage their transactions.  Using the Web API tab on Box Tracker's Preferences app, you can prevent over booking, control which days of the week online orders will be accepted, and prevent same day ordering.  For more information about Box Tracker or this plugin please contact support at 603 546 6751 option 2 or support@cairnapps.com
    10 Version: 1.1.5
     10Version: 1.1.6
    1111Author: Cairn Applications Inc
    1212Author URI: https://www.cloud-computing.rocks/
  • box-tracker-portal/trunk/includes/ajax/jobsite-page.php

    r3278341 r3329796  
    160160                }
    161161
    162                 $b0xTPortal_jobsite_name         = sanitize_text_field($b0xTPortal_jobsite_data->jobSiteObj->JobName);
     162                $b0xTPortal_validated            = "0";
     163                $b0xTPortal_jobsite_name         = "";
     164                if(isset($b0xTPortal_jobsite_data->jobSiteObj->Validated)) { $b0xTPortal_validated    = sanitize_text_field($b0xTPortal_jobsite_data->jobSiteObj->Validated); }
     165                if(isset($b0xTPortal_jobsite_data->jobSiteObj->JobName))   { $b0xTPortal_jobsite_name = sanitize_text_field($b0xTPortal_jobsite_data->jobSiteObj->JobName);   }
     166                $b0xTPortal_jobsite_validated    = is_numeric($b0xTPortal_validated) ? $b0xTPortal_validated : "0";
     167
    163168                $b0xTPortal_jobsite_zip          = sanitize_text_field($b0xTPortal_jobsite_data->jobSiteObj->Zip);
    164169                $b0xTPortal_jobsite_county       = sanitize_text_field($b0xTPortal_jobsite_data->jobSiteObj->County);
     
    171176                $b0xTPortal_jobsite_billing_note = sanitize_text_field($b0xTPortal_jobsite_data->jobSiteObj->BillingNote);
    172177                $b0xTPortal_jobsite_leed         = sanitize_text_field($b0xTPortal_jobsite_data->jobSiteObj->LEED);
    173                 $b0xTPortal_validated            = sanitize_text_field($b0xTPortal_jobsite_data->jobSiteObj->Validated);
    174                 $b0xTPortal_jobsite_validated    = is_numeric($b0xTPortal_validated) ? $b0xTPortal_validated : "0";
    175178
    176179                $b0xTPortal_jobsite_required_fields_for_eval = array();
  • box-tracker-portal/trunk/includes/ajax/reports-page.php

    r2763253 r3329796  
    133133
    134134        $b0xTPortal_report_params = array();
    135         if($_POST["b0xTPortal_report_start_date"]) {
     135        if(isset($_POST["b0xTPortal_report_start_date"])) {
    136136            $b0xTPortal_report_params["startDate"] = sanitize_text_field($_POST["b0xTPortal_report_start_date"]);
    137137        }
    138138
    139         if($_POST["b0xTPortal_report_end_date"]) {
     139        if(isset($_POST["b0xTPortal_report_end_date"])) {
    140140            $b0xTPortal_report_params["endDate"] = sanitize_text_field($_POST["b0xTPortal_report_end_date"]);
    141141        }
    142142
    143         if($_POST["b0xTPortal_report_delivery_date"]) {
     143        if(isset($_POST["b0xTPortal_report_delivery_date"])) {
    144144            $b0xTPortal_report_params["deliveryDate"] = sanitize_text_field($_POST["b0xTPortal_report_delivery_date"]);
    145145        }
    146146
    147         if($_POST["b0xTPortal_report_month"]) {
     147        if(isset($_POST["b0xTPortal_report_month"])) {
    148148            $b0xTPortal_report_params["month"] = sanitize_text_field($_POST["b0xTPortal_report_month"]);
    149149        }
    150150
    151         if($_POST["b0xTPortal_report_year"]) {
     151        if(isset($_POST["b0xTPortal_report_year"])) {
    152152            $b0xTPortal_report_params["year"] = sanitize_text_field($_POST["b0xTPortal_report_year"]);
    153153        }
    154154
    155         if($_POST["b0xTPortal_report_jobsite_id"]) {
     155        if(isset($_POST["b0xTPortal_report_jobsite_id"])) {
    156156            $b0xTPortal_report_params["jobSite"] = sanitize_text_field($_POST["b0xTPortal_report_jobsite_id"]);
    157157        }
    158158
    159         if($_POST["b0xTPortal_report_wo_type"]) {
     159        if(isset($_POST["b0xTPortal_report_wo_type"])) {
    160160            $b0xTPortal_report_params["woType"] = sanitize_text_field($_POST["b0xTPortal_report_wo_type"]);
    161161        }
    162162
    163         if($_POST["b0xTPortal_report_check_boxes"] && is_array($_POST["b0xTPortal_report_check_boxes"])) {
     163        if(isset($_POST["b0xTPortal_report_check_boxes"]) && is_array($_POST["b0xTPortal_report_check_boxes"])) {
    164164            $b0xTPortal_check_boxes = $this->b0xTPortal_sanitize_array_values($_POST["b0xTPortal_report_check_boxes"]);
    165165
     
    171171        }
    172172
    173         if($_POST["b0xTPortal_report_sort_by"]) {
     173        if(isset($_POST["b0xTPortal_report_sort_by"])) {
    174174            $b0xTPortal_report_params["sortBy"] = sanitize_text_field($_POST["b0xTPortal_report_sort_by"]);
    175175        }
    176176
    177         if($_POST["b0xTPortal_report_filter_by"]) {
     177        if(isset($_POST["b0xTPortal_report_filter_by"])) {
    178178            $b0xTPortal_report_params["filterBy"] = sanitize_text_field($_POST["b0xTPortal_report_filter_by"]);
    179179        }
    180180
    181         if($_POST["b0xTPortal_report_list_by"]) {
     181        if(isset($_POST["b0xTPortal_report_list_by"])) {
    182182            $b0xTPortal_report_params["listBy"] = sanitize_text_field($_POST["b0xTPortal_report_list_by"]);
    183183        }
  • box-tracker-portal/trunk/includes/ajax/workorder-page.php

    r3278341 r3329796  
    3030        $b0xTPortal_username             = sanitize_text_field($_SESSION['b0xTPortal_session']['username']);
    3131        $b0xTPortal_session_key_customer = sanitize_text_field($_SESSION['b0xTPortal_session']['session_key']);
    32         $b0xTPortal_search_field         = sanitize_text_field($_POST["b0xTPortal_search"]);
     32
     33        $b0xTPortal_search_field         = "";
     34        if(isset($_POST["b0xTPortal_search"])) { $b0xTPortal_search_field = sanitize_text_field($_POST["b0xTPortal_search"]); }
    3335
    3436        if($b0xTPortal_username == "" || $b0xTPortal_session_key_customer == "") {
  • box-tracker-portal/trunk/includes/base/ajax-utility.php

    r2763253 r3329796  
    9898               
    9999            foreach ($b0xTPortal_required_fields as $b0xTPortal_field_value) {
    100                 if($b0xTPortal_fields_map[$b0xTPortal_field_value]) {
     100                if(isset($b0xTPortal_fields_map[$b0xTPortal_field_value])) {
    101101                    array_push($b0xTPortal_required_fields_mapped, $b0xTPortal_fields_map[$b0xTPortal_field_value]);   
    102102                }   
  • box-tracker-portal/trunk/includes/base/enqueue.php

    r3247411 r3329796  
    3030            wp_enqueue_style('b0xTPortal-front-house-style', $this->b0xTPortal_plugin_url.'styles/front-house-style.css', '', '', 'all');
    3131            wp_enqueue_style('b0xTPortal-jquery-ui-style', "https://ajax.googleapis.com/ajax/libs/jqueryui/1.9.0/themes/base/jquery-ui.css", '', '', 'all');
     32            wp_enqueue_style('b0xTPortal-google-maps-icon-style', "https://fonts.googleapis.com/icon?family=Material+Icons", '', '', 'all');
    3233
    3334            wp_enqueue_script('b0xTPortal-login-page', $this->b0xTPortal_plugin_url.'javascript/dynamic-templates/login-page.js', '', '', 'all');
     
    4546
    4647            $b0xT_google_api_key = sanitize_text_field(get_option('b0xT_google_api_key'));
    47             wp_enqueue_script('b0xTPortal-google-maps', "https://maps.googleapis.com/maps/api/js?key=$b0xT_google_api_key&libraries=places", '', '', 'all');
     48            wp_enqueue_script('b0xTPortal-google-maps', "https://maps.googleapis.com/maps/api/js?key=$b0xT_google_api_key&loading=async&libraries=places", '', '', 'all');
    4849            wp_enqueue_script('b0xTPortal-google-charts', "https://www.gstatic.com/charts/loader.js", '', '', 'all');
    4950            wp_enqueue_script('b0xTPortal-dialog-box-script', $this->b0xTPortal_plugin_url.'javascript/dialog-box-script.js', '', '', 'all');
  • box-tracker-portal/trunk/javascript/address-validation-script.js

    r2763253 r3329796  
    22     var b0xTPortal_address_data = this;
    33     b0xTPortal_address_data.config = b0xTPortal_arg_config;
     4     b0xTPortal_address_data.random_number = Math.floor(Math.random() * 1000000);
    45
    56     b0xTPortal_address_data.validated = "0";
    67
    7      var b0xTPortal_place_auto_complete;
    8 
    9      this._b0xTPortal_init = function() {
    10           //setup google places address autocomplete
    11           var b0xTPortal_search = b0xTPortal_address_data.config.searchCtrl;
    12           b0xTPortal_place_auto_complete = new google.maps.places.Autocomplete(
     8     this._b0xTPortal_init = async function() {
     9          let b0xTPortal_waitForGoogle = async function() {
     10               return new Promise(function(b0xTPortal_resolve) {
     11                    async function b0xTPortal_isItReady() {
     12                         if(typeof(google.maps.places) !== "undefined") {
     13                              try { //make a call to make sure the api is included in the key.
     14                                    //this call is not included in billing because the get details never
     15                                    //never gets called.
     16                                   const b0xTPortal_token = new google.maps.places.AutocompleteSessionToken();
     17                                   const b0xTPortal_suggestions = await google.maps.places.AutocompleteSuggestion.fetchAutocompleteSuggestions({
     18                                        sessionToken: b0xTPortal_token,
     19                                        input: "588",
     20                                        language: "en-US",
     21                                        includedRegionCodes: ["us", "ca"]   
     22                                   });
     23                              } catch(e) {
     24                                    b0xTPortal_resolve(1);
     25                              }
     26                              b0xTPortal_resolve(0);
     27                         } else {
     28                              setTimeout(b0xTPortal_isItReady, 50);
     29                         }
     30                    }
     31                    b0xTPortal_isItReady();
     32               });
     33          };
     34
     35          let b0xTPortal_legacy_check = await b0xTPortal_waitForGoogle();
     36
     37          if(b0xTPortal_legacy_check) {
     38               b0xTPortal_address_data._b0xTPortal_init_legacy();
     39               return;
     40          }
     41
     42          let b0xTPortal_address_suggestion_wrap                   = document.createElement("div");
     43          b0xTPortal_address_suggestion_wrap.style.position        = "absolute";
     44          b0xTPortal_address_suggestion_wrap.style.marginTop       = "1px";
     45          b0xTPortal_address_suggestion_wrap.style.borderRadius    = "1px";
     46          b0xTPortal_address_suggestion_wrap.style.backgroundColor = "#ffffff";
     47          b0xTPortal_address_suggestion_wrap.style.zIndex          = 1;
     48
     49          //allow developers to style it
     50          b0xTPortal_address_suggestion_wrap.setAttribute("class", "b0xTPortal_address_suggestion_wrap");
     51
     52          b0xTPortal_address_data.address_suggestion_wrap          = b0xTPortal_address_suggestion_wrap;
     53          b0xTPortal_address_data.config.searchCtrl.after(b0xTPortal_address_suggestion_wrap);
     54          b0xTPortal_address_data.config.searchCtrl.setAttribute("placeholder", "Search Address");
     55
     56          //setup event listensers on fields
     57          b0xTPortal_address_data.config.searchCtrl.addEventListener("keyup", function(b0xTPortal_e) {
     58               if(b0xTPortal_e.key != "ArrowDown" && b0xTPortal_e.key != "ArrowUp" && b0xTPortal_e.key != "ArrowLeft" && b0xTPortal_e.key != "ArrowRight" && b0xTPortal_e.key != "Enter") {     
     59                    clearTimeout(b0xTPortal_address_data.searchTimeOut); 
     60                    b0xTPortal_address_data.searchTimeOut = setTimeout(function() {
     61                         if(!String(b0xTPortal_address_data.config.searchCtrl.value).trim()) {
     62                              b0xTPortal_address_data.address_suggestion_wrap.innerHTML = "";
     63                              b0xTPortal_address_data.address_suggestion_wrap.style.boxShadow = "none";
     64                              return;
     65                         }
     66
     67                         //if we are using the search bar to act as the address bar aswell. then trigger the address changed
     68                         if(b0xTPortal_address_data.config.addressCtrl && (b0xTPortal_address_data.config.addressCtrl == b0xTPortal_address_data.config.searchCtrl)) {
     69                              b0xTPortal_address_data._b0xTPortal_address_changed();
     70                         }
     71     
     72                         b0xTPortal_address_data._b0xTPortal_get_suggestions(b0xTPortal_address_data.config.searchCtrl.value);
     73                         b0xTPortal_address_data.address_suggestion_wrap.style.boxShadow = "0px 0px 4px 1px #d2d2d2";
     74                    }, 500);
     75               }
     76          });
     77
     78          b0xTPortal_address_data.config.searchCtrl.addEventListener("keydown", function(b0xTPortal_e) {
     79               let b0xTPortal_address_suggestions_wrap = document.getElementById("b0xTPortal_"+b0xTPortal_address_data.random_number+"_AddrVldtrSuggestionsContent");
     80               if(!b0xTPortal_address_suggestions_wrap) { return; }
     81
     82               let b0xTPortal_selected = function(b0xTPortal_argDiv) {
     83                    b0xTPortal_argDiv.parentElement.style.color = "#0174ab";
     84                    b0xTPortal_argDiv.parentElement.style.backgroundColor = "#dddddd";
     85                    b0xTPortal_address_data.config.searchCtrl.value = b0xTPortal_argDiv.valHTML;
     86               };
     87
     88               let b0xTPortal_unSelected = function(b0xTPortal_argDiv) {
     89                    b0xTPortal_argDiv.parentElement.style.removeProperty("color");
     90                    b0xTPortal_argDiv.parentElement.style.removeProperty("background-color");
     91               };
     92 
     93               if(b0xTPortal_e.key == "ArrowDown" || b0xTPortal_e.key == "ArrowUp" || b0xTPortal_e.key == "Enter") {
     94                    let b0xTPortal_child_wrappers = Array.from(b0xTPortal_address_suggestions_wrap.children);
     95
     96                    if(b0xTPortal_e.key == "ArrowDown" || b0xTPortal_e.key == "ArrowUp") {
     97                         clearTimeout(b0xTPortal_address_data.cursorTimeout);
     98                         b0xTPortal_child_wrappers.forEach(function(b0xTPortal_argDiv) {
     99                              b0xTPortal_unSelected(b0xTPortal_argDiv.children[0]);
     100                         });
     101
     102                         if(String(b0xTPortal_address_suggestions_wrap.keyIndex) == "") {
     103                              b0xTPortal_address_suggestions_wrap.keyIndex  = -1;
     104                         }
     105
     106                         if(b0xTPortal_e.key == "ArrowDown") {
     107                              if(b0xTPortal_address_suggestions_wrap.keyIndex < b0xTPortal_child_wrappers.length) {
     108                                   b0xTPortal_address_suggestions_wrap.keyIndex++;
     109                              }
     110
     111                              if(b0xTPortal_address_suggestions_wrap.keyIndex == b0xTPortal_child_wrappers.length) {
     112                                   b0xTPortal_address_suggestions_wrap.keyIndex = -1;
     113                              }
     114                         } else {
     115                              if(b0xTPortal_address_suggestions_wrap.keyIndex >= -1) {
     116                                   b0xTPortal_address_suggestions_wrap.keyIndex--;
     117                              }
     118
     119                              if(b0xTPortal_address_suggestions_wrap.keyIndex == -2) {
     120                                   b0xTPortal_address_suggestions_wrap.keyIndex = b0xTPortal_child_wrappers.length - 1;
     121                              }
     122                         }
     123
     124                         if(b0xTPortal_child_wrappers[b0xTPortal_address_suggestions_wrap.keyIndex]) {
     125                              let b0xTPortal_nextDiv = b0xTPortal_child_wrappers[b0xTPortal_address_suggestions_wrap.keyIndex].children[0];
     126                              b0xTPortal_selected(b0xTPortal_nextDiv);
     127                         } else {
     128                              b0xTPortal_address_data.config.searchCtrl.value = b0xTPortal_address_suggestions_wrap.keyOrgVal;
     129                         }
     130
     131                         //for smooth transition
     132                         b0xTPortal_address_data.config.searchCtrl.style.caretColor = 'transparent';
     133                         b0xTPortal_address_data.cursorTimeout = setTimeout(function() {
     134                              let b0xTPortal_valLength = b0xTPortal_address_data.config.searchCtrl.value.length;
     135                              b0xTPortal_address_data.config.searchCtrl.setSelectionRange(b0xTPortal_valLength, b0xTPortal_valLength);
     136                              b0xTPortal_address_data.config.searchCtrl.style.removeProperty("caret-color");
     137                         }, 10);
     138                    } else if(b0xTPortal_e.key == "Enter") {
     139                         if(b0xTPortal_child_wrappers[b0xTPortal_address_suggestions_wrap.keyIndex]) {
     140                              let b0xTPortal_nextDiv = b0xTPortal_child_wrappers[b0xTPortal_address_suggestions_wrap.keyIndex].children[0];
     141                              b0xTPortal_nextDiv.click();
     142                              b0xTPortal_address_data.config.searchCtrl.blur();
     143                         }
     144                    }
     145               }
     146          });
     147
     148          b0xTPortal_address_data.config.searchCtrl.addEventListener("focus", function(b0xTPortal_e) {     
     149               clearTimeout(b0xTPortal_address_data.searchTimeOut); 
     150               b0xTPortal_address_data.searchTimeOut = setTimeout(function() {
     151                    if(!String(b0xTPortal_address_data.config.searchCtrl.value).trim()) { return; }
     152                    b0xTPortal_address_data._b0xTPortal_get_suggestions(b0xTPortal_address_data.config.searchCtrl.value);
     153                    b0xTPortal_address_data.address_suggestion_wrap.style.boxShadow = "0px 0px 4px 1px #d2d2d2";
     154               }, 500);
     155          });
     156
     157          b0xTPortal_address_data.config.searchCtrl.addEventListener("blur", function(b0xTPortal_e) {
     158               clearTimeout(b0xTPortal_address_data.blurTimeOut); 
     159               b0xTPortal_address_data.blurTimeOut = setTimeout(function() {
     160                    b0xTPortal_address_data.address_suggestion_wrap.innerHTML = "";
     161                    b0xTPortal_address_data.address_suggestion_wrap.style.boxShadow = "none";
     162               }, 500);
     163          });
     164
     165          //if we are not using the search bar to act as the address bar, then set an onchange handler. Otherwise skip it
     166          if(b0xTPortal_address_data.config.addressCtrl && (b0xTPortal_address_data.config.addressCtrl != b0xTPortal_address_data.config.searchCtrl)) {
     167               b0xTPortal_address_data.config.addressCtrl = b0xTPortal_address_data._b0xTPortal_address_changed;
     168          }
     169
     170          b0xTPortal_address_data.config.cityCtrl.onchange   = b0xTPortal_address_data._b0xTPortal_address_changed;
     171          b0xTPortal_address_data.config.stateCtrl.onchange  = b0xTPortal_address_data._b0xTPortal_address_changed;
     172          b0xTPortal_address_data.config.postalCtrl.onchange = b0xTPortal_address_data._b0xTPortal_address_changed;
     173     };
     174
     175     this._b0xTPortal_init_legacy = function() {
     176          let b0xTPortal_search = b0xTPortal_address_data.config.searchCtrl;
     177          let b0xTPortal_place_auto_complete = new google.maps.places.Autocomplete(
    13178               b0xTPortal_search, {
    14179                    fields: ['geometry', 'address_component', 'type']
     
    16181          );
    17182
    18           var b0xTPortal_call_back = function () {
    19                b0xTPortal_address_data._b0xTPortal_fill_in_address();
    20           }
    21 
    22           b0xTPortal_place_auto_complete.addListener( 'place_changed',  b0xTPortal_call_back);
    23           b0xTPortal_address_data.placeautocomplete = b0xTPortal_place_auto_complete;
     183          let b0xTPortal_call_back = function () {
     184               b0xTPortal_address_data._b0xTPortal_fill_in_address_legacy();
     185          }
     186
     187          b0xTPortal_place_auto_complete.addListener('place_changed',  b0xTPortal_call_back);
     188          b0xTPortal_address_data.placeautocomplete_legacy = b0xTPortal_place_auto_complete;
    24189
    25190          //limit the counties to usa and canada
     
    29194
    30195          //setup event listensers on fields
    31           b0xTPortal_address_data.config.addressCtrl.oninput = b0xTPortal_address_data._b0xTPortal_address_changed;
    32           b0xTPortal_address_data.config.cityCtrl.onchange = b0xTPortal_address_data._b0xTPortal_address_changed;
    33           b0xTPortal_address_data.config.stateCtrl.onchange = b0xTPortal_address_data._b0xTPortal_address_changed;
    34           b0xTPortal_address_data.config.postalCtrl.onchange = b0xTPortal_address_data._b0xTPortal_address_changed;
    35      };
    36 
    37      this._b0xTPortal_fill_in_address = function () {
    38           var b0xTPortal_place = b0xTPortal_address_data.placeautocomplete.getPlace();
     196          b0xTPortal_address_data.config.addressCtrl.onchange = function() { b0xTPortal_address_data._b0xTPortal_address_changed(1); }
     197          b0xTPortal_address_data.config.cityCtrl.onchange    = function() { b0xTPortal_address_data._b0xTPortal_address_changed(1); }
     198          b0xTPortal_address_data.config.stateCtrl.onchange   = function() { b0xTPortal_address_data._b0xTPortal_address_changed(1); }
     199          b0xTPortal_address_data.config.postalCtrl.onchange  = function() { b0xTPortal_address_data._b0xTPortal_address_changed(1); }
     200     }
     201
     202     this._b0xTPortal_get_suggestions = async function(b0xTPortal_v) {
     203          //creating a new session if it does not exist.
     204          const b0xTPortal_token = b0xTPortal_address_data.token_session ? b0xTPortal_address_data.token_session : new google.maps.places.AutocompleteSessionToken();
     205          b0xTPortal_address_data.token_session = b0xTPortal_token;
     206
     207          let b0xTPortal_options = {
     208               sessionToken: b0xTPortal_token,
     209               input: b0xTPortal_v,
     210               language: "en-US",
     211               includedRegionCodes: ["us", "ca"]
     212          };
     213
     214          const b0xTPortal_suggestions = await google.maps.places.AutocompleteSuggestion.fetchAutocompleteSuggestions(b0xTPortal_options);
     215          const b0xTPortal_suggestions_array = b0xTPortal_suggestions.suggestions;
     216
     217          let b0xTPortal_fill_structure = function(b0xTPortal_address_suggestions_wrap) {
     218               b0xTPortal_address_suggestions_wrap.innerHTML = "";
     219               b0xTPortal_address_suggestions_wrap.keyIndex  = "";
     220               b0xTPortal_address_suggestions_wrap.keyOrgVal = b0xTPortal_address_data.config.searchCtrl.value;
     221
     222               b0xTPortal_suggestions_array.forEach(function(b0xTPortal_suggestion, b0xTPortal_index) {
     223                    const b0xTPortal_place_prediction = b0xTPortal_suggestion.placePrediction;
     224                    let b0xTPortal_input_wrap              = document.createElement("div");
     225                    let b0xTPortal_input                   = document.createElement("div");
     226                    b0xTPortal_input.style.whiteSpace      = "nowrap";
     227                    b0xTPortal_input.style.borderRadius    = "0px";
     228                    b0xTPortal_input.style.width           = "calc(100% - 20px)";
     229                    b0xTPortal_input.style.border          = "0px";
     230                    b0xTPortal_input.style.padding         = "10px";
     231                    b0xTPortal_input.style.cursor          = "pointer";
     232
     233                    let b0xTPortal_icon                    = document.createElement("i");
     234                    b0xTPortal_icon.style.verticalAlign    = "middle";
     235                    b0xTPortal_icon.style.fontSize         = "14pt";
     236                    b0xTPortal_icon.style.marginRight      = "5px";
     237                    b0xTPortal_icon.style.color            = "#808080";
     238
     239                    b0xTPortal_icon.setAttribute("class", "material-icons");
     240                    b0xTPortal_icon.innerHTML = "place";
     241
     242                    b0xTPortal_input.appendChild(b0xTPortal_icon);
     243                    b0xTPortal_input.innerHTML += b0xTPortal_place_prediction.text.toString();
     244                    b0xTPortal_input.valHTML = b0xTPortal_place_prediction.text.toString();
     245
     246                    if(b0xTPortal_index < b0xTPortal_suggestions_array.length - 1) {
     247                         b0xTPortal_input_wrap.style.borderBottom = "1px solid #d1cfcf";
     248                    }
     249
     250                    b0xTPortal_input.onmouseover = function() {
     251                         this.style.color = "#0174ab";
     252                         this.style.backgroundColor = "#f5f5f5";
     253                    };
     254                    b0xTPortal_input.onmouseout = function() {
     255                         this.style.removeProperty("color");
     256                         this.style.removeProperty("background-color");
     257                    }
     258                    b0xTPortal_input.onclick = function() {
     259                         clearTimeout(b0xTPortal_address_data.blurTimeOut);
     260                         clearTimeout(b0xTPortal_address_data.searchTimeOut);
     261                         b0xTPortal_address_data._b0xTPortal_fill_in_address(b0xTPortal_place_prediction);
     262                         b0xTPortal_address_data.address_suggestion_wrap.innerHTML = "";
     263                         b0xTPortal_address_data.address_suggestion_wrap.style.boxShadow = "none";
     264                    }
     265
     266                    b0xTPortal_input_wrap.appendChild(b0xTPortal_input);
     267                    b0xTPortal_address_suggestions_wrap.appendChild(b0xTPortal_input_wrap);
     268               });
     269          };
     270
     271          let b0xTPortal_build_structure = function() {
     272               let b0xTPortal_flex_master_div                 = document.createElement("div");
     273               b0xTPortal_flex_master_div.style.flexDirection = "column";
     274               b0xTPortal_flex_master_div.style.display       = "flex";
     275
     276               //content
     277               let b0xTPortal_address_suggestions_wrap                = document.createElement("div");
     278               b0xTPortal_address_suggestions_wrap.setAttribute("id", "b0xTPortal_"+b0xTPortal_address_data.random_number+"_AddrVldtrSuggestionsContent");
     279               b0xTPortal_address_suggestions_wrap.style.border       = "1px solid #d1cfcf";
     280               b0xTPortal_address_suggestions_wrap.style.borderBottom = "0px";
     281               b0xTPortal_address_suggestions_wrap.style.overflowY    = "auto";
     282               b0xTPortal_address_suggestions_wrap.style.maxHeight    = "300px";
     283
     284               b0xTPortal_fill_structure(b0xTPortal_address_suggestions_wrap);
     285
     286               b0xTPortal_flex_master_div.appendChild(b0xTPortal_address_suggestions_wrap);
     287
     288               //logo
     289               let b0xTPortal_powered_by_wrap = document.createElement("div");
     290               b0xTPortal_powered_by_wrap.style.border    = "1px solid #d1cfcf";         
     291               b0xTPortal_powered_by_wrap.style.borderTop = "0px";
     292
     293               let b0xTPortal_powered_by = document.createElement("div");
     294               b0xTPortal_powered_by.style.borderRadius  = "0px";
     295               b0xTPortal_powered_by.style.width         = "calc(100% - 20px)";
     296               b0xTPortal_powered_by.style.border        = "0px";
     297               b0xTPortal_powered_by.style.padding       = "10px";
     298
     299               b0xTPortal_powered_by.style.color         = "#808080";
     300               b0xTPortal_powered_by.style.textAlign     = "right";
     301               b0xTPortal_powered_by.style.fontWeight    = "bold";
     302               b0xTPortal_powered_by.style.pointerEvents = "none";
     303               b0xTPortal_powered_by.innerHTML           = "powered by";
     304
     305               let b0xTPortal_icon = document.createElement("img");
     306               b0xTPortal_icon.setAttribute("src", b0xTPortal_address_data.config.imageUrl+"/Google_logo.png");
     307
     308               b0xTPortal_icon.style.height        = "18px";
     309               b0xTPortal_icon.style.verticalAlign = "middle";
     310               b0xTPortal_icon.style.marginLeft    = "5px";
     311
     312               b0xTPortal_powered_by.appendChild(b0xTPortal_icon);
     313               b0xTPortal_powered_by_wrap.appendChild(b0xTPortal_powered_by);
     314
     315               b0xTPortal_flex_master_div.appendChild(b0xTPortal_powered_by_wrap);
     316
     317               //put it together
     318               b0xTPortal_address_data.address_suggestion_wrap.appendChild(b0xTPortal_flex_master_div);
     319          };
     320
     321          let b0xTPortal_address_suggestions_wrap = document.getElementById("b0xTPortal_"+b0xTPortal_address_data.random_number+"_AddrVldtrSuggestionsContent");
     322
     323          if(!b0xTPortal_address_suggestions_wrap) {
     324               b0xTPortal_build_structure();
     325          } else {
     326               b0xTPortal_fill_structure(b0xTPortal_address_suggestions_wrap);
     327          }
     328     };
     329
     330     this._b0xTPortal_fill_in_address = async function (b0xTPortal_place_prediction) {
     331          var b0xTPortal_place = b0xTPortal_place_prediction.toPlace();
     332
     333          await b0xTPortal_place.fetchFields({fields: ['location', 'addressComponents', 'types', 'displayName']});
     334
     335          //clear session token, this way we create a
     336          //new one when the suggestion triggers again
     337          b0xTPortal_address_data.token_session = undefined;
     338
     339          if (!b0xTPortal_place.location) {
     340               b0xTPortal_address_data.b0xTPortal_refresh_google_verification();
     341
     342               if(b0xTPortal_address_data.dBox) {
     343                    b0xTPortal_address_data.dBox.b0xTPortal_open_dialog("WARNING!!", 'No details available for input: '+b0xTPortal_place.displayName, null);
     344               }
     345               return;
     346          }
     347       
     348          //get autocompleted address
     349          let b0xTPortal_street_number = b0xTPortal_address_data._b0xTPortal_find_address_component( b0xTPortal_place.addressComponents, 'street_number' );
     350          b0xTPortal_street_number.shortText = b0xTPortal_street_number.shortText ? b0xTPortal_street_number.shortText : b0xTPortal_address_data.config.searchCtrl.value.split(' ')[0].replaceAll(/\D/g, '');
     351 
     352          let b0xTPortal_street_name = b0xTPortal_address_data._b0xTPortal_find_address_component( b0xTPortal_place.addressComponents, 'street_address' );
     353          b0xTPortal_street_name = b0xTPortal_street_name.longText ? b0xTPortal_street_name : b0xTPortal_address_data._b0xTPortal_find_address_component( b0xTPortal_place.addressComponents, 'route' );
     354          b0xTPortal_street_name = b0xTPortal_street_name.longText ? b0xTPortal_street_name : b0xTPortal_address_data._b0xTPortal_find_address_component( b0xTPortal_place.addressComponents, 'intersection' );
     355 
     356          let b0xTPortal_city = b0xTPortal_address_data._b0xTPortal_find_address_component( b0xTPortal_place.addressComponents, 'locality' );
     357          b0xTPortal_city = b0xTPortal_city.longText ? b0xTPortal_city : b0xTPortal_address_data._b0xTPortal_find_address_component( b0xTPortal_place.addressComponents, 'administrative_area_level_3' );
     358          b0xTPortal_city = b0xTPortal_city.longText ? b0xTPortal_city : b0xTPortal_address_data._b0xTPortal_find_address_component( b0xTPortal_place.addressComponents, 'sublocality_level_1' );
     359 
     360          let b0xTPortal_state = b0xTPortal_address_data._b0xTPortal_find_address_component( b0xTPortal_place.addressComponents, 'administrative_area_level_1' );
     361          let b0xTPortal_postal = b0xTPortal_address_data._b0xTPortal_find_address_component( b0xTPortal_place.addressComponents, 'postal_code' );         
     362          let b0xTPortal_postal_suffix = b0xTPortal_address_data._b0xTPortal_find_address_component( b0xTPortal_place.addressComponents, 'postal_code_suffix' );
     363
     364          //we are done, clear address field
     365          b0xTPortal_address_data.config.addressCtrl.value = "";
     366
     367          //however, is state part of the selected country ?
     368          //if not we dont want to go any further than this
     369          var found_state = 0;
     370          for(var option of b0xTPortal_address_data.config.stateCtrl.options) {
     371               if(option.value == b0xTPortal_state.shortText) {
     372                    found_state++;
     373               }
     374          }
     375
     376          if(!found_state) {
     377               b0xTPortal_address_data.config.cityCtrl.value = "";
     378               b0xTPortal_address_data.config.stateCtrl.value = "";
     379               b0xTPortal_address_data.b0xTPortal_refresh_google_verification();
     380               if(b0xTPortal_address_data.dBox) {
     381                    b0xTPortal_address_data.dBox.b0xTPortal_open_dialog("WARNING!!", "This address appears to reside in a country that is not accepted by this company", null);
     382               }
     383               return;
     384          }
     385
     386          b0xTPortal_address_data.config.addressCtrl.value = `${b0xTPortal_street_number.shortText} ${b0xTPortal_street_name.shortText}`;
     387          b0xTPortal_address_data.current_address = `${b0xTPortal_street_number.shortText} ${b0xTPortal_street_name.shortText}`;
     388          b0xTPortal_address_data.config.cityCtrl.value = b0xTPortal_city.longText;
     389          b0xTPortal_address_data.config.stateCtrl.value = b0xTPortal_state.shortText;
     390          b0xTPortal_address_data.config.postalCtrl.value = b0xTPortal_postal.shortText;
     391
     392          //check if the address is rooftop
     393          let b0xTPortal_verified = b0xTPortal_place.types.includes('premise') || b0xTPortal_place.location.location_type == 'ROOFTOP' || b0xTPortal_postal_suffix.shortText.length;
     394
     395          b0xTPortal_verified = b0xTPortal_verified ? 1 : 0;
     396          b0xTPortal_address_data.b0xTPortal_refresh_google_verification(b0xTPortal_verified);
     397     };
     398
     399     this._b0xTPortal_fill_in_address_legacy = function () {
     400          var b0xTPortal_place = b0xTPortal_address_data.placeautocomplete_legacy.getPlace();
    39401
    40402          if (!b0xTPortal_place.geometry) {
     
    98460     };
    99461
    100      this._b0xTPortal_find_address_component = function( b0xTPortal_address_array, b0xTPortal_search ) {
     462     this._b0xTPortal_find_address_component = function(b0xTPortal_address_array, b0xTPortal_search, b0xTPortal_arg_legacy) {
    101463          for( let i = 0; i < b0xTPortal_address_array.length; i++ ) {
    102464               if ( b0xTPortal_address_array[i].types[0] == b0xTPortal_search ) {
     
    104466               }
    105467          }
    106           return { long_name: '', short_name: '', types: [ b0xTPortal_search ] };
     468          if(b0xTPortal_arg_legacy) {
     469               return { long_name: '', short_name: '', types: [ b0xTPortal_search ] };
     470          }
     471          return { longText: '', shortText: '', types: [ b0xTPortal_search ] };
    107472     };
    108473
     
    129494     };
    130495
    131      this._b0xTPortal_address_changed = function() {
    132           if(b0xTPortal_address_data.validated * 1 == 0) {} else {
    133                b0xTPortal_address_data.b0xTPortal_refresh_google_verification(0);
    134           }
     496     this._b0xTPortal_address_changed = function(b0xTPortal_arg_legacy) {
     497          let b0xTPortal_the_work = function() {
     498               if(b0xTPortal_address_data.validated * 1 == 0) {} else {
     499                    b0xTPortal_address_data.b0xTPortal_refresh_google_verification(0);
     500               }
     501          }
     502
     503          if(b0xTPortal_arg_legacy) {
     504               b0xTPortal_the_work();
     505               return;
     506          }
     507
     508          clearTimeout(b0xTPortal_address_data.changeTimeout);
     509          b0xTPortal_address_data.changeTimeout = setTimeout(function() {
     510               b0xTPortal_the_work(); 
     511          }, 500);
    135512     };
    136513
     
    167544}
    168545
    169 
    170 
  • box-tracker-portal/trunk/javascript/dynamic-templates/add-edit-jobsite-page.js

    r2924835 r3329796  
    305305                    "stateCtrl" : b0xTPortal_data.fields["b0xTPortal_jobsite_state"],
    306306                    "postalCtrl" : b0xTPortal_data.fields["b0xTPortal_jobsite_zip"],
    307                     "validateCtrl" : b0xTPortal_data.fields["b0xTPortal_google_validator"]
     307                    "validateCtrl" : b0xTPortal_data.fields["b0xTPortal_google_validator"],
     308                    "imageUrl": b0xTPortal_data.config.image_url
    308309                });
    309310            }
  • box-tracker-portal/trunk/readme.txt

    r3278350 r3329796  
    44Requires PHP: 5.6.4
    55Tested up to: 6.8
    6 Stable tag: 1.1.5
     6Stable tag: 1.1.6
    77License: GPLv2 or later
    88License URI: http://www.gnu.org/licenses/gpl-2.0.html
Note: See TracChangeset for help on using the changeset viewer.