Plugin Directory

Changeset 3336805


Ignore:
Timestamp:
07/30/2025 06:16:26 PM (8 months ago)
Author:
jrmoser
Message:

v1.2.0

Location:
bin-tracker-portal
Files:
2 added
14 edited
10 copied

Legend:

Unmodified
Added
Removed
  • bin-tracker-portal/tags/1.2.0/bin-tracker-portal.php

    r3278327 r3336805  
    88Plugin URI: https://www.bintracker.software/api/word-press-plugin.html
    99Description: The Bin 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 Bin 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.
    10 Version: 1.1.4
     10Version: 1.2.0
    1111Author: Cairn Applications Inc
    1212Author URI: https://www.cloud-computing.rocks/
  • bin-tracker-portal/tags/1.2.0/includes/ajax/jobsite-page.php

    r3278327 r3336805  
    161161                }
    162162
    163                 $b1nTPortal_jobsite_name         = $b1nTPortal_jobsite_data->jobSiteObj->JobName;
     163                $b1nTPortal_jobsite_name = "";
     164                if(isset($b1nTPortal_jobsite_data->jobSiteObj->JobName)) {
     165                    $b1nTPortal_jobsite_name = $b1nTPortal_jobsite_data->jobSiteObj->JobName;
     166                }
     167
    164168                $b1nTPortal_jobsite_zip          = $b1nTPortal_jobsite_data->jobSiteObj->Zip;
    165169                $b1nTPortal_jobsite_county       = $b1nTPortal_jobsite_data->jobSiteObj->County;
     
    175179                $b1nTPortal_jobsite_hazzards     = $b1nTPortal_jobsite_data->jobSiteObj->Hazzards;
    176180                $b1nTPortal_jobsite_billing_note = $b1nTPortal_jobsite_data->jobSiteObj->BillingNote;
    177                 $b1nTPortal_validated            = $b1nTPortal_jobsite_data->jobSiteObj->Validated;
    178                 $b1nTPortal_jobsite_validated    = is_numeric($b1nTPortal_validated) ? $b1nTPortal_validated : "0";
     181
     182                $b1nTPortal_validated = "";
     183                if(isset($b1nTPortal_jobsite_data->jobSiteObj->Validated)) {
     184                    $b1nTPortal_validated = $b1nTPortal_jobsite_data->jobSiteObj->Validated;   
     185                }
     186
     187                $b1nTPortal_jobsite_validated = is_numeric($b1nTPortal_validated) ? $b1nTPortal_validated : "0";
    179188
    180189                $b1nTPortal_jobsite_required_fields_for_eval = array();
  • bin-tracker-portal/tags/1.2.0/includes/ajax/reports-page.php

    r3134259 r3336805  
    133133
    134134        $b1nTPortal_report_params = array();
    135         if($_POST["b1nTPortal_report_start_date"]) {
     135        if(isset($_POST["b1nTPortal_report_start_date"])) {
    136136            $b1nTPortal_report_params["startDate"] = sanitize_text_field($_POST["b1nTPortal_report_start_date"]);
    137137        }
    138138
    139         if($_POST["b1nTPortal_report_end_date"]) {
     139        if(isset($_POST["b1nTPortal_report_end_date"])) {
    140140            $b1nTPortal_report_params["endDate"] = sanitize_text_field($_POST["b1nTPortal_report_end_date"]);
    141141        }
    142142
    143         if($_POST["b1nTPortal_report_delivery_date"]) {
     143        if(isset($_POST["b1nTPortal_report_delivery_date"])) {
    144144            $b1nTPortal_report_params["deliveryDate"] = sanitize_text_field($_POST["b1nTPortal_report_delivery_date"]);
    145145        }
    146146
    147         if($_POST["b1nTPortal_report_month"]) {
     147        if(isset($_POST["b1nTPortal_report_month"])) {
    148148            $b1nTPortal_report_params["month"] = sanitize_text_field($_POST["b1nTPortal_report_month"]);
    149149        }
    150150
    151         if($_POST["b1nTPortal_report_year"]) {
     151        if(isset($_POST["b1nTPortal_report_year"])) {
    152152            $b1nTPortal_report_params["year"] = sanitize_text_field($_POST["b1nTPortal_report_year"]);
    153153        }
    154154
    155         if($_POST["b1nTPortal_report_jobsite_id"]) {
     155        if(isset($_POST["b1nTPortal_report_jobsite_id"])) {
    156156            $b1nTPortal_report_params["jobSite"] = sanitize_text_field($_POST["b1nTPortal_report_jobsite_id"]);
    157157        }
    158158
    159         if($_POST["b1nTPortal_report_wo_type"]) {
     159        if(isset($_POST["b1nTPortal_report_wo_type"])) {
    160160            $b1nTPortal_report_params["woType"] = sanitize_text_field($_POST["b1nTPortal_report_wo_type"]);
    161161        }
    162162
    163         if($_POST["b1nTPortal_report_check_boxes"] && is_array($_POST["b1nTPortal_report_check_boxes"])) {
     163        if(isset($_POST["b1nTPortal_report_check_boxes"]) && is_array($_POST["b1nTPortal_report_check_boxes"])) {
    164164            $b1nTPortal_check_boxes = $this->b1nTPortal_sanitize_array_values($_POST["b1nTPortal_report_check_boxes"]);
    165165
     
    171171        }
    172172
    173         if($_POST["b1nTPortal_report_sort_by"]) {
     173        if(isset($_POST["b1nTPortal_report_sort_by"])) {
    174174            $b1nTPortal_report_params["sortBy"] = sanitize_text_field($_POST["b1nTPortal_report_sort_by"]);
    175175        }
    176176
    177         if($_POST["b1nTPortal_report_filter_by"]) {
     177        if(isset($_POST["b1nTPortal_report_filter_by"])) {
    178178            $b1nTPortal_report_params["filterBy"] = sanitize_text_field($_POST["b1nTPortal_report_filter_by"]);
    179179        }
    180180
    181         if($_POST["b1nTPortal_report_list_by"]) {
     181        if(isset($_POST["b1nTPortal_report_list_by"])) {
    182182            $b1nTPortal_report_params["listBy"] = sanitize_text_field($_POST["b1nTPortal_report_list_by"]);
    183183        }
  • bin-tracker-portal/tags/1.2.0/includes/ajax/workorder-page.php

    r3278327 r3336805  
    3030        $b1nTPortal_username             = sanitize_text_field($_SESSION['b1nTPortal_session']['username']);
    3131        $b1nTPortal_session_key_customer = sanitize_text_field($_SESSION['b1nTPortal_session']['session_key']);
    32         $b1nTPortal_search_field         = sanitize_text_field($_POST["b1nTPortal_search"]);
     32
     33        $b1nTPortal_search_field = "";
     34        if(isset($_POST["b1nTPortal_search"])) {
     35            $b1nTPortal_search_field = sanitize_text_field($_POST["b1nTPortal_search"]);
     36        }
    3337
    3438        if($b1nTPortal_username == "" || $b1nTPortal_session_key_customer == "") {
  • bin-tracker-portal/tags/1.2.0/includes/base/ajax-utility.php

    r3134259 r3336805  
    9595               
    9696            foreach ($b1nTPortal_required_fields as $b1nTPortal_field_value) {
    97                 if($b1nTPortal_fields_map[$b1nTPortal_field_value]) {
     97                if(isset($b1nTPortal_fields_map[$b1nTPortal_field_value])) {
    9898                    array_push($b1nTPortal_required_fields_mapped, $b1nTPortal_fields_map[$b1nTPortal_field_value]);   
    9999                }   
  • bin-tracker-portal/tags/1.2.0/includes/base/enqueue.php

    r3134259 r3336805  
    3030            wp_enqueue_style('b1nTPortal-front-house-style', $this->b1nTPortal_plugin_url.'styles/front-house-style.css', '', '1.1.3', 'all');
    3131            wp_enqueue_style('b1nTPortal-jquery-ui-style', $this->b1nTPortal_plugin_url.'styles/jquery-ui.css', '', '1.1.3', 'all');
     32            wp_enqueue_style('b1nTPortal-google-maps-icon-style', "https://fonts.googleapis.com/icon?family=Material+Icons", '', '', 'all');
    3233
    3334            wp_enqueue_script('b1nTPortal-login-page', $this->b1nTPortal_plugin_url.'javascript/dynamic-templates/login-page.js', '', '1.1.3', 'all');
  • bin-tracker-portal/tags/1.2.0/javascript/address-validation-script.js

    r3134259 r3336805  
    22     var b1nTPortal_address_data = this;
    33     b1nTPortal_address_data.config = b1nTPortal_arg_config;
     4     b1nTPortal_address_data.random_number = Math.floor(Math.random() * 1000000);
    45
    56     b1nTPortal_address_data.validated = "0";
    67
    7      var b1nTPortal_place_auto_complete;
    8 
    9      this._b1nTPortal_init = function() {
    10           //setup google places address autocomplete
    11           var b1nTPortal_search = b1nTPortal_address_data.config.searchCtrl;
    12           b1nTPortal_place_auto_complete = new google.maps.places.Autocomplete(
     8     this._b1nTPortal_init = async function() {
     9          let b1nTPortal_waitForGoogle = async function() {
     10               return new Promise(function(b1nTPortal_resolve) {
     11                    async function b1nTPortal_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 b1nTPortal_token = new google.maps.places.AutocompleteSessionToken();
     17                                   const b1nTPortal_suggestions = await google.maps.places.AutocompleteSuggestion.fetchAutocompleteSuggestions({
     18                                        sessionToken: b1nTPortal_token,
     19                                        input: "588",
     20                                        language: "en-US",
     21                                        includedRegionCodes: ["us", "ca"]   
     22                                   });
     23                              } catch(e) {
     24                                    b1nTPortal_resolve(1);
     25                              }
     26                              b1nTPortal_resolve(0);
     27                         } else {
     28                              setTimeout(b1nTPortal_isItReady, 50);
     29                         }
     30                    }
     31                    b1nTPortal_isItReady();
     32               });
     33          };
     34
     35          let b1nTPortal_legacy_check = await b1nTPortal_waitForGoogle();
     36
     37          if(b1nTPortal_legacy_check) {
     38               b1nTPortal_address_data._b1nTPortal_init_legacy();
     39               return;
     40          }
     41
     42          let b1nTPortal_address_suggestion_wrap                   = document.createElement("div");
     43          b1nTPortal_address_suggestion_wrap.style.position        = "absolute";
     44          b1nTPortal_address_suggestion_wrap.style.marginTop       = "1px";
     45          b1nTPortal_address_suggestion_wrap.style.borderRadius    = "1px";
     46          b1nTPortal_address_suggestion_wrap.style.backgroundColor = "#ffffff";
     47          b1nTPortal_address_suggestion_wrap.style.zIndex          = 1;
     48
     49          //allow developers to style it
     50          b1nTPortal_address_suggestion_wrap.setAttribute("class", "b1nTPortal_address_suggestion_wrap");
     51
     52          b1nTPortal_address_data.address_suggestion_wrap          = b1nTPortal_address_suggestion_wrap;
     53          b1nTPortal_address_data.config.searchCtrl.after(b1nTPortal_address_suggestion_wrap);
     54          b1nTPortal_address_data.config.searchCtrl.setAttribute("placeholder", "Search Address");
     55
     56          //setup event listensers on fields
     57          b1nTPortal_address_data.config.searchCtrl.addEventListener("keyup", function(b1nTPortal_e) {
     58               if(b1nTPortal_e.key != "ArrowDown" && b1nTPortal_e.key != "ArrowUp" && b1nTPortal_e.key != "ArrowLeft" && b1nTPortal_e.key != "ArrowRight" && b1nTPortal_e.key != "Enter") {     
     59                    clearTimeout(b1nTPortal_address_data.searchTimeOut); 
     60                    b1nTPortal_address_data.searchTimeOut = setTimeout(function() {
     61                         if(!String(b1nTPortal_address_data.config.searchCtrl.value).trim()) {
     62                              b1nTPortal_address_data.address_suggestion_wrap.innerHTML = "";
     63                              b1nTPortal_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(b1nTPortal_address_data.config.addressCtrl && (b1nTPortal_address_data.config.addressCtrl == b1nTPortal_address_data.config.searchCtrl)) {
     69                              b1nTPortal_address_data._b1nTPortal_address_changed();
     70                         }
     71     
     72                         b1nTPortal_address_data._b1nTPortal_get_suggestions(b1nTPortal_address_data.config.searchCtrl.value);
     73                         b1nTPortal_address_data.address_suggestion_wrap.style.boxShadow = "0px 0px 4px 1px #d2d2d2";
     74                    }, 500);
     75               }
     76          });
     77
     78          b1nTPortal_address_data.config.searchCtrl.addEventListener("keydown", function(b1nTPortal_e) {
     79               let b1nTPortal_address_suggestions_wrap = document.getElementById("b1nTPortal_"+b1nTPortal_address_data.random_number+"_AddrVldtrSuggestionsContent");
     80               if(!b1nTPortal_address_suggestions_wrap) { return; }
     81
     82               let b1nTPortal_selected = function(b1nTPortal_argDiv) {
     83                    b1nTPortal_argDiv.parentElement.style.color = "#0174ab";
     84                    b1nTPortal_argDiv.parentElement.style.backgroundColor = "#dddddd";
     85                    b1nTPortal_address_data.config.searchCtrl.value = b1nTPortal_argDiv.valHTML;
     86               };
     87
     88               let b1nTPortal_unSelected = function(b1nTPortal_argDiv) {
     89                    b1nTPortal_argDiv.parentElement.style.removeProperty("color");
     90                    b1nTPortal_argDiv.parentElement.style.removeProperty("background-color");
     91               };
     92 
     93               if(b1nTPortal_e.key == "ArrowDown" || b1nTPortal_e.key == "ArrowUp" || b1nTPortal_e.key == "Enter") {
     94                    let b1nTPortal_child_wrappers = Array.from(b1nTPortal_address_suggestions_wrap.children);
     95
     96                    if(b1nTPortal_e.key == "ArrowDown" || b1nTPortal_e.key == "ArrowUp") {
     97                         clearTimeout(b1nTPortal_address_data.cursorTimeout);
     98                         b1nTPortal_child_wrappers.forEach(function(b1nTPortal_argDiv) {
     99                              b1nTPortal_unSelected(b1nTPortal_argDiv.children[0]);
     100                         });
     101
     102                         if(String(b1nTPortal_address_suggestions_wrap.keyIndex) == "") {
     103                              b1nTPortal_address_suggestions_wrap.keyIndex  = -1;
     104                         }
     105
     106                         if(b1nTPortal_e.key == "ArrowDown") {
     107                              if(b1nTPortal_address_suggestions_wrap.keyIndex < b1nTPortal_child_wrappers.length) {
     108                                   b1nTPortal_address_suggestions_wrap.keyIndex++;
     109                              }
     110
     111                              if(b1nTPortal_address_suggestions_wrap.keyIndex == b1nTPortal_child_wrappers.length) {
     112                                   b1nTPortal_address_suggestions_wrap.keyIndex = -1;
     113                              }
     114                         } else {
     115                              if(b1nTPortal_address_suggestions_wrap.keyIndex >= -1) {
     116                                   b1nTPortal_address_suggestions_wrap.keyIndex--;
     117                              }
     118
     119                              if(b1nTPortal_address_suggestions_wrap.keyIndex == -2) {
     120                                   b1nTPortal_address_suggestions_wrap.keyIndex = b1nTPortal_child_wrappers.length - 1;
     121                              }
     122                         }
     123
     124                         if(b1nTPortal_child_wrappers[b1nTPortal_address_suggestions_wrap.keyIndex]) {
     125                              let b1nTPortal_nextDiv = b1nTPortal_child_wrappers[b1nTPortal_address_suggestions_wrap.keyIndex].children[0];
     126                              b1nTPortal_selected(b1nTPortal_nextDiv);
     127                         } else {
     128                              b1nTPortal_address_data.config.searchCtrl.value = b1nTPortal_address_suggestions_wrap.keyOrgVal;
     129                         }
     130
     131                         //for smooth transition
     132                         b1nTPortal_address_data.config.searchCtrl.style.caretColor = 'transparent';
     133                         b1nTPortal_address_data.cursorTimeout = setTimeout(function() {
     134                              let b1nTPortal_valLength = b1nTPortal_address_data.config.searchCtrl.value.length;
     135                              b1nTPortal_address_data.config.searchCtrl.setSelectionRange(b1nTPortal_valLength, b1nTPortal_valLength);
     136                              b1nTPortal_address_data.config.searchCtrl.style.removeProperty("caret-color");
     137                         }, 10);
     138                    } else if(b1nTPortal_e.key == "Enter") {
     139                         if(b1nTPortal_child_wrappers[b1nTPortal_address_suggestions_wrap.keyIndex]) {
     140                              let b1nTPortal_nextDiv = b1nTPortal_child_wrappers[b1nTPortal_address_suggestions_wrap.keyIndex].children[0];
     141                              b1nTPortal_nextDiv.click();
     142                              b1nTPortal_address_data.config.searchCtrl.blur();
     143                         }
     144                    }
     145               }
     146          });
     147
     148          b1nTPortal_address_data.config.searchCtrl.addEventListener("focus", function(b1nTPortal_e) {     
     149               clearTimeout(b1nTPortal_address_data.searchTimeOut); 
     150               b1nTPortal_address_data.searchTimeOut = setTimeout(function() {
     151                    if(!String(b1nTPortal_address_data.config.searchCtrl.value).trim()) { return; }
     152                    b1nTPortal_address_data._b1nTPortal_get_suggestions(b1nTPortal_address_data.config.searchCtrl.value);
     153                    b1nTPortal_address_data.address_suggestion_wrap.style.boxShadow = "0px 0px 4px 1px #d2d2d2";
     154               }, 500);
     155          });
     156
     157          b1nTPortal_address_data.config.searchCtrl.addEventListener("blur", function(b1nTPortal_e) {
     158               clearTimeout(b1nTPortal_address_data.blurTimeOut); 
     159               b1nTPortal_address_data.blurTimeOut = setTimeout(function() {
     160                    let b1nTPortal_address_suggestions_wrap_content = document.getElementById("b1nTPortal_"+b1nTPortal_address_data.random_number+"_AddrVldtrSuggestionsContent");
     161                    if(b1nTPortal_address_suggestions_wrap_content) {
     162                         b1nTPortal_address_data.config.searchCtrl.value = b1nTPortal_address_suggestions_wrap_content.keyOrgVal;
     163                    }
     164
     165                    b1nTPortal_address_data.address_suggestion_wrap.innerHTML = "";
     166                    b1nTPortal_address_data.address_suggestion_wrap.style.boxShadow = "none";
     167               }, 500);
     168          });
     169
     170          //if we are not using the search bar to act as the address bar, then set an onchange handler. Otherwise skip it
     171          if(b1nTPortal_address_data.config.addressCtrl && (b1nTPortal_address_data.config.addressCtrl != b1nTPortal_address_data.config.searchCtrl)) {
     172               b1nTPortal_address_data.config.addressCtrl = b1nTPortal_address_data._b1nTPortal_address_changed;
     173          }
     174
     175          b1nTPortal_address_data.config.cityCtrl.onchange   = b1nTPortal_address_data._b1nTPortal_address_changed;
     176          b1nTPortal_address_data.config.stateCtrl.onchange  = b1nTPortal_address_data._b1nTPortal_address_changed;
     177          b1nTPortal_address_data.config.postalCtrl.onchange = b1nTPortal_address_data._b1nTPortal_address_changed;
     178     };
     179
     180     this._b1nTPortal_init_legacy = function() {
     181          let b1nTPortal_search = b1nTPortal_address_data.config.searchCtrl;
     182          let b1nTPortal_place_auto_complete = new google.maps.places.Autocomplete(
    13183               b1nTPortal_search, {
    14184                    fields: ['geometry', 'address_component', 'type']
     
    16186          );
    17187
    18           var b1nTPortal_call_back = function () {
    19                b1nTPortal_address_data._b1nTPortal_fill_in_address();
    20           }
    21 
    22           b1nTPortal_place_auto_complete.addListener( 'place_changed',  b1nTPortal_call_back);
    23           b1nTPortal_address_data.placeautocomplete = b1nTPortal_place_auto_complete;
     188          let b1nTPortal_call_back = function () {
     189               b1nTPortal_address_data._b1nTPortal_fill_in_address_legacy();
     190          }
     191
     192          b1nTPortal_place_auto_complete.addListener('place_changed',  b1nTPortal_call_back);
     193          b1nTPortal_address_data.placeautocomplete_legacy = b1nTPortal_place_auto_complete;
    24194
    25195          //limit the counties to usa and canada
     
    29199
    30200          //setup event listensers on fields
    31           b1nTPortal_address_data.config.addressCtrl.oninput = b1nTPortal_address_data._b1nTPortal_address_changed;
    32           b1nTPortal_address_data.config.cityCtrl.onchange = b1nTPortal_address_data._b1nTPortal_address_changed;
    33           b1nTPortal_address_data.config.stateCtrl.onchange = b1nTPortal_address_data._b1nTPortal_address_changed;
    34           b1nTPortal_address_data.config.postalCtrl.onchange = b1nTPortal_address_data._b1nTPortal_address_changed;
    35      };
    36 
    37      this._b1nTPortal_fill_in_address = function () {
    38           var b1nTPortal_place = b1nTPortal_address_data.placeautocomplete.getPlace();
     201          b1nTPortal_address_data.config.addressCtrl.onchange = function() { b1nTPortal_address_data._b1nTPortal_address_changed(1); }
     202          b1nTPortal_address_data.config.cityCtrl.onchange    = function() { b1nTPortal_address_data._b1nTPortal_address_changed(1); }
     203          b1nTPortal_address_data.config.stateCtrl.onchange   = function() { b1nTPortal_address_data._b1nTPortal_address_changed(1); }
     204          b1nTPortal_address_data.config.postalCtrl.onchange  = function() { b1nTPortal_address_data._b1nTPortal_address_changed(1); }
     205     }
     206
     207     this._b1nTPortal_get_suggestions = async function(b1nTPortal_v) {
     208          //creating a new session if it does not exist.
     209          const b1nTPortal_token = b1nTPortal_address_data.token_session ? b1nTPortal_address_data.token_session : new google.maps.places.AutocompleteSessionToken();
     210          b1nTPortal_address_data.token_session = b1nTPortal_token;
     211
     212          let b1nTPortal_options = {
     213               sessionToken: b1nTPortal_token,
     214               input: b1nTPortal_v,
     215               language: "en-US",
     216               includedRegionCodes: ["us", "ca"]
     217          };
     218
     219          const b1nTPortal_suggestions = await google.maps.places.AutocompleteSuggestion.fetchAutocompleteSuggestions(b1nTPortal_options);
     220          const b1nTPortal_suggestions_array = b1nTPortal_suggestions.suggestions;
     221
     222          let b1nTPortal_fill_structure = function(b1nTPortal_address_suggestions_wrap) {
     223               b1nTPortal_address_suggestions_wrap.innerHTML = "";
     224               b1nTPortal_address_suggestions_wrap.keyIndex  = "";
     225               b1nTPortal_address_suggestions_wrap.keyOrgVal = b1nTPortal_address_data.config.searchCtrl.value;
     226
     227               b1nTPortal_suggestions_array.forEach(function(b1nTPortal_suggestion, b1nTPortal_index) {
     228                    const b1nTPortal_place_prediction = b1nTPortal_suggestion.placePrediction;
     229                    let b1nTPortal_input_wrap              = document.createElement("div");
     230                    let b1nTPortal_input                   = document.createElement("div");
     231                    b1nTPortal_input.style.whiteSpace      = "nowrap";
     232                    b1nTPortal_input.style.borderRadius    = "0px";
     233                    b1nTPortal_input.style.border          = "0px";
     234                    b1nTPortal_input.style.padding         = "10px";
     235                    b1nTPortal_input.style.cursor          = "pointer";
     236
     237                    let b1nTPortal_icon                    = document.createElement("i");
     238                    b1nTPortal_icon.style.verticalAlign    = "middle";
     239                    b1nTPortal_icon.style.fontSize         = "14pt";
     240                    b1nTPortal_icon.style.marginRight      = "5px";
     241                    b1nTPortal_icon.style.color            = "#808080";
     242
     243                    b1nTPortal_icon.setAttribute("class", "material-icons");
     244                    b1nTPortal_icon.innerHTML = "place";
     245
     246                    b1nTPortal_input.appendChild(b1nTPortal_icon);
     247                    b1nTPortal_input.innerHTML += b1nTPortal_place_prediction.text.toString();
     248                    b1nTPortal_input.valHTML = b1nTPortal_place_prediction.text.toString();
     249
     250                    if(b1nTPortal_index < b1nTPortal_suggestions_array.length - 1) {
     251                         b1nTPortal_input_wrap.style.borderBottom = "1px solid #d1cfcf";
     252                    }
     253
     254                    b1nTPortal_input.onmouseover = function() {
     255                         this.style.color = "#0174ab";
     256                         this.style.backgroundColor = "#f5f5f5";
     257                    };
     258                    b1nTPortal_input.onmouseout = function() {
     259                         this.style.removeProperty("color");
     260                         this.style.removeProperty("background-color");
     261                    }
     262                    b1nTPortal_input.onclick = function() {
     263                         clearTimeout(b1nTPortal_address_data.blurTimeOut);
     264                         clearTimeout(b1nTPortal_address_data.searchTimeOut);
     265                         b1nTPortal_address_data._b1nTPortal_fill_in_address(b1nTPortal_place_prediction);
     266                         b1nTPortal_address_data.address_suggestion_wrap.innerHTML = "";
     267                         b1nTPortal_address_data.address_suggestion_wrap.style.boxShadow = "none";
     268                    }
     269
     270                    b1nTPortal_input_wrap.appendChild(b1nTPortal_input);
     271                    b1nTPortal_address_suggestions_wrap.appendChild(b1nTPortal_input_wrap);
     272               });
     273          };
     274
     275          let b1nTPortal_build_structure = function() {
     276               let b1nTPortal_flex_master_div                 = document.createElement("div");
     277               b1nTPortal_flex_master_div.style.flexDirection = "column";
     278               b1nTPortal_flex_master_div.style.display       = "flex";
     279
     280               //content
     281               let b1nTPortal_address_suggestions_wrap                = document.createElement("div");
     282               b1nTPortal_address_suggestions_wrap.setAttribute("id", "b1nTPortal_"+b1nTPortal_address_data.random_number+"_AddrVldtrSuggestionsContent");
     283               b1nTPortal_address_suggestions_wrap.style.border       = "1px solid #d1cfcf";
     284               b1nTPortal_address_suggestions_wrap.style.borderBottom = "0px";
     285               b1nTPortal_address_suggestions_wrap.style.overflowY    = "auto";
     286               b1nTPortal_address_suggestions_wrap.style.maxHeight    = "300px";
     287
     288               b1nTPortal_fill_structure(b1nTPortal_address_suggestions_wrap);
     289
     290               b1nTPortal_flex_master_div.appendChild(b1nTPortal_address_suggestions_wrap);
     291
     292               //logo
     293               let b1nTPortal_powered_by_wrap = document.createElement("div");
     294               b1nTPortal_powered_by_wrap.style.border    = "1px solid #d1cfcf";         
     295               b1nTPortal_powered_by_wrap.style.borderTop = "0px";
     296
     297               let b1nTPortal_powered_by = document.createElement("div");
     298               b1nTPortal_powered_by.style.borderRadius  = "0px";
     299               b1nTPortal_powered_by.style.border        = "0px";
     300               b1nTPortal_powered_by.style.padding       = "10px";
     301
     302               b1nTPortal_powered_by.style.color         = "#808080";
     303               b1nTPortal_powered_by.style.textAlign     = "right";
     304               b1nTPortal_powered_by.style.fontWeight    = "bold";
     305               b1nTPortal_powered_by.style.pointerEvents = "none";
     306               b1nTPortal_powered_by.innerHTML           = "powered by";
     307
     308               let b1nTPortal_icon = document.createElement("img");
     309               b1nTPortal_icon.setAttribute("src", b1nTPortal_address_data.config.imageUrl+"/Google_logo.png");
     310
     311               b1nTPortal_icon.style.height        = "18px";
     312               b1nTPortal_icon.style.verticalAlign = "middle";
     313               b1nTPortal_icon.style.marginLeft    = "5px";
     314
     315               b1nTPortal_powered_by.appendChild(b1nTPortal_icon);
     316               b1nTPortal_powered_by_wrap.appendChild(b1nTPortal_powered_by);
     317
     318               b1nTPortal_flex_master_div.appendChild(b1nTPortal_powered_by_wrap);
     319
     320               //put it together
     321               b1nTPortal_address_data.address_suggestion_wrap.appendChild(b1nTPortal_flex_master_div);
     322          };
     323
     324          let b1nTPortal_address_suggestions_wrap = document.getElementById("b1nTPortal_"+b1nTPortal_address_data.random_number+"_AddrVldtrSuggestionsContent");
     325
     326          if(!b1nTPortal_address_suggestions_wrap) {
     327               b1nTPortal_build_structure();
     328          } else {
     329               b1nTPortal_fill_structure(b1nTPortal_address_suggestions_wrap);
     330          }
     331     };
     332
     333     this._b1nTPortal_fill_in_address = async function (b1nTPortal_place_prediction) {
     334          var b1nTPortal_place = b1nTPortal_place_prediction.toPlace();
     335
     336          await b1nTPortal_place.fetchFields({fields: ['location', 'addressComponents', 'types', 'displayName']});
     337
     338          //clear session token, this way we create a
     339          //new one when the suggestion triggers again
     340          b1nTPortal_address_data.token_session = undefined;
     341
     342          if (!b1nTPortal_place.location) {
     343               b1nTPortal_address_data.b1nTPortal_refresh_google_verification();
     344
     345               if(b1nTPortal_address_data.dBox) {
     346                    b1nTPortal_address_data.dBox.b1nTPortal_open_dialog("WARNING!!", 'No details available for input: '+b1nTPortal_place.displayName, null);
     347               }
     348               return;
     349          }
     350       
     351          //get autocompleted address
     352          let b1nTPortal_street_number = b1nTPortal_address_data._b1nTPortal_find_address_component( b1nTPortal_place.addressComponents, 'street_number' );
     353          b1nTPortal_street_number.shortText = b1nTPortal_street_number.shortText ? b1nTPortal_street_number.shortText : b1nTPortal_address_data.config.searchCtrl.value.split(' ')[0].replaceAll(/\D/g, '');
     354 
     355          let b1nTPortal_street_name = b1nTPortal_address_data._b1nTPortal_find_address_component( b1nTPortal_place.addressComponents, 'street_address' );
     356          b1nTPortal_street_name = b1nTPortal_street_name.longText ? b1nTPortal_street_name : b1nTPortal_address_data._b1nTPortal_find_address_component( b1nTPortal_place.addressComponents, 'route' );
     357          b1nTPortal_street_name = b1nTPortal_street_name.longText ? b1nTPortal_street_name : b1nTPortal_address_data._b1nTPortal_find_address_component( b1nTPortal_place.addressComponents, 'intersection' );
     358 
     359          let b1nTPortal_city = b1nTPortal_address_data._b1nTPortal_find_address_component( b1nTPortal_place.addressComponents, 'locality' );
     360          b1nTPortal_city = b1nTPortal_city.longText ? b1nTPortal_city : b1nTPortal_address_data._b1nTPortal_find_address_component( b1nTPortal_place.addressComponents, 'administrative_area_level_3' );
     361          b1nTPortal_city = b1nTPortal_city.longText ? b1nTPortal_city : b1nTPortal_address_data._b1nTPortal_find_address_component( b1nTPortal_place.addressComponents, 'sublocality_level_1' );
     362 
     363          let b1nTPortal_state = b1nTPortal_address_data._b1nTPortal_find_address_component( b1nTPortal_place.addressComponents, 'administrative_area_level_1' );
     364          let b1nTPortal_postal = b1nTPortal_address_data._b1nTPortal_find_address_component( b1nTPortal_place.addressComponents, 'postal_code' );         
     365          let b1nTPortal_postal_suffix = b1nTPortal_address_data._b1nTPortal_find_address_component( b1nTPortal_place.addressComponents, 'postal_code_suffix' );
     366
     367          //we are done, clear address field
     368          b1nTPortal_address_data.config.addressCtrl.value = "";
     369
     370          //however, is state part of the selected country ?
     371          //if not we dont want to go any further than this
     372          var found_state = 0;
     373          for(var option of b1nTPortal_address_data.config.stateCtrl.options) {
     374               if(option.value == b1nTPortal_state.shortText) {
     375                    found_state++;
     376               }
     377          }
     378
     379          if(!found_state) {
     380               b1nTPortal_address_data.config.cityCtrl.value = "";
     381               b1nTPortal_address_data.config.stateCtrl.value = "";
     382               b1nTPortal_address_data.b1nTPortal_refresh_google_verification();
     383               if(b1nTPortal_address_data.dBox) {
     384                    b1nTPortal_address_data.dBox.b1nTPortal_open_dialog("WARNING!!", "This address appears to reside in a country that is not accepted by this company", null);
     385               }
     386               return;
     387          }
     388
     389          b1nTPortal_address_data.config.addressCtrl.value = `${b1nTPortal_street_number.shortText} ${b1nTPortal_street_name.shortText}`;
     390          b1nTPortal_address_data.current_address = `${b1nTPortal_street_number.shortText} ${b1nTPortal_street_name.shortText}`;
     391          b1nTPortal_address_data.config.cityCtrl.value = b1nTPortal_city.longText;
     392          b1nTPortal_address_data.config.stateCtrl.value = b1nTPortal_state.shortText;
     393          b1nTPortal_address_data.config.postalCtrl.value = b1nTPortal_postal.shortText;
     394
     395          //check if the address is rooftop
     396          let b1nTPortal_verified = b1nTPortal_place.types.includes('premise') || b1nTPortal_place.location.location_type == 'ROOFTOP' || b1nTPortal_postal_suffix.shortText.length;
     397
     398          b1nTPortal_verified = b1nTPortal_verified ? 1 : 0;
     399          b1nTPortal_address_data.b1nTPortal_refresh_google_verification(b1nTPortal_verified);
     400     };
     401
     402     this._b1nTPortal_fill_in_address_legacy = function () {
     403          var b1nTPortal_place = b1nTPortal_address_data.placeautocomplete_legacy.getPlace();
    39404
    40405          if (!b1nTPortal_place.geometry) {
     
    98463     };
    99464
    100      this._b1nTPortal_find_address_component = function( b1nTPortal_address_array, b1nTPortal_search ) {
     465     this._b1nTPortal_find_address_component = function(b1nTPortal_address_array, b1nTPortal_search, b1nTPortal_arg_legacy) {
    101466          for( let i = 0; i < b1nTPortal_address_array.length; i++ ) {
    102467               if ( b1nTPortal_address_array[i].types[0] == b1nTPortal_search ) {
     
    104469               }
    105470          }
    106           return { long_name: '', short_name: '', types: [ b1nTPortal_search ] };
     471          if(b1nTPortal_arg_legacy) {
     472               return { long_name: '', short_name: '', types: [ b1nTPortal_search ] };
     473          }
     474          return { longText: '', shortText: '', types: [ b1nTPortal_search ] };
    107475     };
    108476
     
    129497     };
    130498
    131      this._b1nTPortal_address_changed = function() {
    132           if(b1nTPortal_address_data.validated * 1 == 0) {} else {
    133                b1nTPortal_address_data.b1nTPortal_refresh_google_verification(0);
    134           }
     499     this._b1nTPortal_address_changed = function(b1nTPortal_arg_legacy) {
     500          let b1nTPortal_the_work = function() {
     501               if(b1nTPortal_address_data.validated * 1 == 0) {} else {
     502                    b1nTPortal_address_data.b1nTPortal_refresh_google_verification(0);
     503               }
     504          }
     505
     506          if(b1nTPortal_arg_legacy) {
     507               b1nTPortal_the_work();
     508               return;
     509          }
     510
     511          clearTimeout(b1nTPortal_address_data.changeTimeout);
     512          b1nTPortal_address_data.changeTimeout = setTimeout(function() {
     513               b1nTPortal_the_work(); 
     514          }, 500);
    135515     };
    136516
     
    167547}
    168548
    169 
    170 
  • bin-tracker-portal/tags/1.2.0/javascript/dynamic-templates/add-edit-jobsite-page.js

    r3134259 r3336805  
    294294                    "stateCtrl" : b1nTPortal_data.fields["b1nTPortal_jobsite_state"],
    295295                    "postalCtrl" : b1nTPortal_data.fields["b1nTPortal_jobsite_zip"],
    296                     "validateCtrl" : b1nTPortal_data.fields["b1nTPortal_google_validator"]
     296                    "validateCtrl" : b1nTPortal_data.fields["b1nTPortal_google_validator"],
     297                    "imageUrl": b1nTPortal_data.config.image_url
    297298                });
    298299            }
  • bin-tracker-portal/tags/1.2.0/readme.txt

    r3278327 r3336805  
    44Requires PHP: 5.6.4
    55Tested up to: 6.8
    6 Stable tag: 1.1.4
     6Stable tag: 1.2.0
    77License: GPLv2 or later
    88License URI: http://www.gnu.org/licenses/gpl-2.0.html
  • bin-tracker-portal/trunk/bin-tracker-portal.php

    r3278327 r3336805  
    88Plugin URI: https://www.bintracker.software/api/word-press-plugin.html
    99Description: The Bin 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 Bin 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.
    10 Version: 1.1.4
     10Version: 1.2.0
    1111Author: Cairn Applications Inc
    1212Author URI: https://www.cloud-computing.rocks/
  • bin-tracker-portal/trunk/includes/ajax/jobsite-page.php

    r3278327 r3336805  
    161161                }
    162162
    163                 $b1nTPortal_jobsite_name         = $b1nTPortal_jobsite_data->jobSiteObj->JobName;
     163                $b1nTPortal_jobsite_name = "";
     164                if(isset($b1nTPortal_jobsite_data->jobSiteObj->JobName)) {
     165                    $b1nTPortal_jobsite_name = $b1nTPortal_jobsite_data->jobSiteObj->JobName;
     166                }
     167
    164168                $b1nTPortal_jobsite_zip          = $b1nTPortal_jobsite_data->jobSiteObj->Zip;
    165169                $b1nTPortal_jobsite_county       = $b1nTPortal_jobsite_data->jobSiteObj->County;
     
    175179                $b1nTPortal_jobsite_hazzards     = $b1nTPortal_jobsite_data->jobSiteObj->Hazzards;
    176180                $b1nTPortal_jobsite_billing_note = $b1nTPortal_jobsite_data->jobSiteObj->BillingNote;
    177                 $b1nTPortal_validated            = $b1nTPortal_jobsite_data->jobSiteObj->Validated;
    178                 $b1nTPortal_jobsite_validated    = is_numeric($b1nTPortal_validated) ? $b1nTPortal_validated : "0";
     181
     182                $b1nTPortal_validated = "";
     183                if(isset($b1nTPortal_jobsite_data->jobSiteObj->Validated)) {
     184                    $b1nTPortal_validated = $b1nTPortal_jobsite_data->jobSiteObj->Validated;   
     185                }
     186
     187                $b1nTPortal_jobsite_validated = is_numeric($b1nTPortal_validated) ? $b1nTPortal_validated : "0";
    179188
    180189                $b1nTPortal_jobsite_required_fields_for_eval = array();
  • bin-tracker-portal/trunk/includes/ajax/reports-page.php

    r3134259 r3336805  
    133133
    134134        $b1nTPortal_report_params = array();
    135         if($_POST["b1nTPortal_report_start_date"]) {
     135        if(isset($_POST["b1nTPortal_report_start_date"])) {
    136136            $b1nTPortal_report_params["startDate"] = sanitize_text_field($_POST["b1nTPortal_report_start_date"]);
    137137        }
    138138
    139         if($_POST["b1nTPortal_report_end_date"]) {
     139        if(isset($_POST["b1nTPortal_report_end_date"])) {
    140140            $b1nTPortal_report_params["endDate"] = sanitize_text_field($_POST["b1nTPortal_report_end_date"]);
    141141        }
    142142
    143         if($_POST["b1nTPortal_report_delivery_date"]) {
     143        if(isset($_POST["b1nTPortal_report_delivery_date"])) {
    144144            $b1nTPortal_report_params["deliveryDate"] = sanitize_text_field($_POST["b1nTPortal_report_delivery_date"]);
    145145        }
    146146
    147         if($_POST["b1nTPortal_report_month"]) {
     147        if(isset($_POST["b1nTPortal_report_month"])) {
    148148            $b1nTPortal_report_params["month"] = sanitize_text_field($_POST["b1nTPortal_report_month"]);
    149149        }
    150150
    151         if($_POST["b1nTPortal_report_year"]) {
     151        if(isset($_POST["b1nTPortal_report_year"])) {
    152152            $b1nTPortal_report_params["year"] = sanitize_text_field($_POST["b1nTPortal_report_year"]);
    153153        }
    154154
    155         if($_POST["b1nTPortal_report_jobsite_id"]) {
     155        if(isset($_POST["b1nTPortal_report_jobsite_id"])) {
    156156            $b1nTPortal_report_params["jobSite"] = sanitize_text_field($_POST["b1nTPortal_report_jobsite_id"]);
    157157        }
    158158
    159         if($_POST["b1nTPortal_report_wo_type"]) {
     159        if(isset($_POST["b1nTPortal_report_wo_type"])) {
    160160            $b1nTPortal_report_params["woType"] = sanitize_text_field($_POST["b1nTPortal_report_wo_type"]);
    161161        }
    162162
    163         if($_POST["b1nTPortal_report_check_boxes"] && is_array($_POST["b1nTPortal_report_check_boxes"])) {
     163        if(isset($_POST["b1nTPortal_report_check_boxes"]) && is_array($_POST["b1nTPortal_report_check_boxes"])) {
    164164            $b1nTPortal_check_boxes = $this->b1nTPortal_sanitize_array_values($_POST["b1nTPortal_report_check_boxes"]);
    165165
     
    171171        }
    172172
    173         if($_POST["b1nTPortal_report_sort_by"]) {
     173        if(isset($_POST["b1nTPortal_report_sort_by"])) {
    174174            $b1nTPortal_report_params["sortBy"] = sanitize_text_field($_POST["b1nTPortal_report_sort_by"]);
    175175        }
    176176
    177         if($_POST["b1nTPortal_report_filter_by"]) {
     177        if(isset($_POST["b1nTPortal_report_filter_by"])) {
    178178            $b1nTPortal_report_params["filterBy"] = sanitize_text_field($_POST["b1nTPortal_report_filter_by"]);
    179179        }
    180180
    181         if($_POST["b1nTPortal_report_list_by"]) {
     181        if(isset($_POST["b1nTPortal_report_list_by"])) {
    182182            $b1nTPortal_report_params["listBy"] = sanitize_text_field($_POST["b1nTPortal_report_list_by"]);
    183183        }
  • bin-tracker-portal/trunk/includes/ajax/workorder-page.php

    r3278327 r3336805  
    3030        $b1nTPortal_username             = sanitize_text_field($_SESSION['b1nTPortal_session']['username']);
    3131        $b1nTPortal_session_key_customer = sanitize_text_field($_SESSION['b1nTPortal_session']['session_key']);
    32         $b1nTPortal_search_field         = sanitize_text_field($_POST["b1nTPortal_search"]);
     32
     33        $b1nTPortal_search_field = "";
     34        if(isset($_POST["b1nTPortal_search"])) {
     35            $b1nTPortal_search_field = sanitize_text_field($_POST["b1nTPortal_search"]);
     36        }
    3337
    3438        if($b1nTPortal_username == "" || $b1nTPortal_session_key_customer == "") {
  • bin-tracker-portal/trunk/includes/base/ajax-utility.php

    r3134259 r3336805  
    9595               
    9696            foreach ($b1nTPortal_required_fields as $b1nTPortal_field_value) {
    97                 if($b1nTPortal_fields_map[$b1nTPortal_field_value]) {
     97                if(isset($b1nTPortal_fields_map[$b1nTPortal_field_value])) {
    9898                    array_push($b1nTPortal_required_fields_mapped, $b1nTPortal_fields_map[$b1nTPortal_field_value]);   
    9999                }   
  • bin-tracker-portal/trunk/includes/base/enqueue.php

    r3134259 r3336805  
    3030            wp_enqueue_style('b1nTPortal-front-house-style', $this->b1nTPortal_plugin_url.'styles/front-house-style.css', '', '1.1.3', 'all');
    3131            wp_enqueue_style('b1nTPortal-jquery-ui-style', $this->b1nTPortal_plugin_url.'styles/jquery-ui.css', '', '1.1.3', 'all');
     32            wp_enqueue_style('b1nTPortal-google-maps-icon-style', "https://fonts.googleapis.com/icon?family=Material+Icons", '', '', 'all');
    3233
    3334            wp_enqueue_script('b1nTPortal-login-page', $this->b1nTPortal_plugin_url.'javascript/dynamic-templates/login-page.js', '', '1.1.3', 'all');
  • bin-tracker-portal/trunk/javascript/address-validation-script.js

    r3134259 r3336805  
    22     var b1nTPortal_address_data = this;
    33     b1nTPortal_address_data.config = b1nTPortal_arg_config;
     4     b1nTPortal_address_data.random_number = Math.floor(Math.random() * 1000000);
    45
    56     b1nTPortal_address_data.validated = "0";
    67
    7      var b1nTPortal_place_auto_complete;
    8 
    9      this._b1nTPortal_init = function() {
    10           //setup google places address autocomplete
    11           var b1nTPortal_search = b1nTPortal_address_data.config.searchCtrl;
    12           b1nTPortal_place_auto_complete = new google.maps.places.Autocomplete(
     8     this._b1nTPortal_init = async function() {
     9          let b1nTPortal_waitForGoogle = async function() {
     10               return new Promise(function(b1nTPortal_resolve) {
     11                    async function b1nTPortal_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 b1nTPortal_token = new google.maps.places.AutocompleteSessionToken();
     17                                   const b1nTPortal_suggestions = await google.maps.places.AutocompleteSuggestion.fetchAutocompleteSuggestions({
     18                                        sessionToken: b1nTPortal_token,
     19                                        input: "588",
     20                                        language: "en-US",
     21                                        includedRegionCodes: ["us", "ca"]   
     22                                   });
     23                              } catch(e) {
     24                                    b1nTPortal_resolve(1);
     25                              }
     26                              b1nTPortal_resolve(0);
     27                         } else {
     28                              setTimeout(b1nTPortal_isItReady, 50);
     29                         }
     30                    }
     31                    b1nTPortal_isItReady();
     32               });
     33          };
     34
     35          let b1nTPortal_legacy_check = await b1nTPortal_waitForGoogle();
     36
     37          if(b1nTPortal_legacy_check) {
     38               b1nTPortal_address_data._b1nTPortal_init_legacy();
     39               return;
     40          }
     41
     42          let b1nTPortal_address_suggestion_wrap                   = document.createElement("div");
     43          b1nTPortal_address_suggestion_wrap.style.position        = "absolute";
     44          b1nTPortal_address_suggestion_wrap.style.marginTop       = "1px";
     45          b1nTPortal_address_suggestion_wrap.style.borderRadius    = "1px";
     46          b1nTPortal_address_suggestion_wrap.style.backgroundColor = "#ffffff";
     47          b1nTPortal_address_suggestion_wrap.style.zIndex          = 1;
     48
     49          //allow developers to style it
     50          b1nTPortal_address_suggestion_wrap.setAttribute("class", "b1nTPortal_address_suggestion_wrap");
     51
     52          b1nTPortal_address_data.address_suggestion_wrap          = b1nTPortal_address_suggestion_wrap;
     53          b1nTPortal_address_data.config.searchCtrl.after(b1nTPortal_address_suggestion_wrap);
     54          b1nTPortal_address_data.config.searchCtrl.setAttribute("placeholder", "Search Address");
     55
     56          //setup event listensers on fields
     57          b1nTPortal_address_data.config.searchCtrl.addEventListener("keyup", function(b1nTPortal_e) {
     58               if(b1nTPortal_e.key != "ArrowDown" && b1nTPortal_e.key != "ArrowUp" && b1nTPortal_e.key != "ArrowLeft" && b1nTPortal_e.key != "ArrowRight" && b1nTPortal_e.key != "Enter") {     
     59                    clearTimeout(b1nTPortal_address_data.searchTimeOut); 
     60                    b1nTPortal_address_data.searchTimeOut = setTimeout(function() {
     61                         if(!String(b1nTPortal_address_data.config.searchCtrl.value).trim()) {
     62                              b1nTPortal_address_data.address_suggestion_wrap.innerHTML = "";
     63                              b1nTPortal_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(b1nTPortal_address_data.config.addressCtrl && (b1nTPortal_address_data.config.addressCtrl == b1nTPortal_address_data.config.searchCtrl)) {
     69                              b1nTPortal_address_data._b1nTPortal_address_changed();
     70                         }
     71     
     72                         b1nTPortal_address_data._b1nTPortal_get_suggestions(b1nTPortal_address_data.config.searchCtrl.value);
     73                         b1nTPortal_address_data.address_suggestion_wrap.style.boxShadow = "0px 0px 4px 1px #d2d2d2";
     74                    }, 500);
     75               }
     76          });
     77
     78          b1nTPortal_address_data.config.searchCtrl.addEventListener("keydown", function(b1nTPortal_e) {
     79               let b1nTPortal_address_suggestions_wrap = document.getElementById("b1nTPortal_"+b1nTPortal_address_data.random_number+"_AddrVldtrSuggestionsContent");
     80               if(!b1nTPortal_address_suggestions_wrap) { return; }
     81
     82               let b1nTPortal_selected = function(b1nTPortal_argDiv) {
     83                    b1nTPortal_argDiv.parentElement.style.color = "#0174ab";
     84                    b1nTPortal_argDiv.parentElement.style.backgroundColor = "#dddddd";
     85                    b1nTPortal_address_data.config.searchCtrl.value = b1nTPortal_argDiv.valHTML;
     86               };
     87
     88               let b1nTPortal_unSelected = function(b1nTPortal_argDiv) {
     89                    b1nTPortal_argDiv.parentElement.style.removeProperty("color");
     90                    b1nTPortal_argDiv.parentElement.style.removeProperty("background-color");
     91               };
     92 
     93               if(b1nTPortal_e.key == "ArrowDown" || b1nTPortal_e.key == "ArrowUp" || b1nTPortal_e.key == "Enter") {
     94                    let b1nTPortal_child_wrappers = Array.from(b1nTPortal_address_suggestions_wrap.children);
     95
     96                    if(b1nTPortal_e.key == "ArrowDown" || b1nTPortal_e.key == "ArrowUp") {
     97                         clearTimeout(b1nTPortal_address_data.cursorTimeout);
     98                         b1nTPortal_child_wrappers.forEach(function(b1nTPortal_argDiv) {
     99                              b1nTPortal_unSelected(b1nTPortal_argDiv.children[0]);
     100                         });
     101
     102                         if(String(b1nTPortal_address_suggestions_wrap.keyIndex) == "") {
     103                              b1nTPortal_address_suggestions_wrap.keyIndex  = -1;
     104                         }
     105
     106                         if(b1nTPortal_e.key == "ArrowDown") {
     107                              if(b1nTPortal_address_suggestions_wrap.keyIndex < b1nTPortal_child_wrappers.length) {
     108                                   b1nTPortal_address_suggestions_wrap.keyIndex++;
     109                              }
     110
     111                              if(b1nTPortal_address_suggestions_wrap.keyIndex == b1nTPortal_child_wrappers.length) {
     112                                   b1nTPortal_address_suggestions_wrap.keyIndex = -1;
     113                              }
     114                         } else {
     115                              if(b1nTPortal_address_suggestions_wrap.keyIndex >= -1) {
     116                                   b1nTPortal_address_suggestions_wrap.keyIndex--;
     117                              }
     118
     119                              if(b1nTPortal_address_suggestions_wrap.keyIndex == -2) {
     120                                   b1nTPortal_address_suggestions_wrap.keyIndex = b1nTPortal_child_wrappers.length - 1;
     121                              }
     122                         }
     123
     124                         if(b1nTPortal_child_wrappers[b1nTPortal_address_suggestions_wrap.keyIndex]) {
     125                              let b1nTPortal_nextDiv = b1nTPortal_child_wrappers[b1nTPortal_address_suggestions_wrap.keyIndex].children[0];
     126                              b1nTPortal_selected(b1nTPortal_nextDiv);
     127                         } else {
     128                              b1nTPortal_address_data.config.searchCtrl.value = b1nTPortal_address_suggestions_wrap.keyOrgVal;
     129                         }
     130
     131                         //for smooth transition
     132                         b1nTPortal_address_data.config.searchCtrl.style.caretColor = 'transparent';
     133                         b1nTPortal_address_data.cursorTimeout = setTimeout(function() {
     134                              let b1nTPortal_valLength = b1nTPortal_address_data.config.searchCtrl.value.length;
     135                              b1nTPortal_address_data.config.searchCtrl.setSelectionRange(b1nTPortal_valLength, b1nTPortal_valLength);
     136                              b1nTPortal_address_data.config.searchCtrl.style.removeProperty("caret-color");
     137                         }, 10);
     138                    } else if(b1nTPortal_e.key == "Enter") {
     139                         if(b1nTPortal_child_wrappers[b1nTPortal_address_suggestions_wrap.keyIndex]) {
     140                              let b1nTPortal_nextDiv = b1nTPortal_child_wrappers[b1nTPortal_address_suggestions_wrap.keyIndex].children[0];
     141                              b1nTPortal_nextDiv.click();
     142                              b1nTPortal_address_data.config.searchCtrl.blur();
     143                         }
     144                    }
     145               }
     146          });
     147
     148          b1nTPortal_address_data.config.searchCtrl.addEventListener("focus", function(b1nTPortal_e) {     
     149               clearTimeout(b1nTPortal_address_data.searchTimeOut); 
     150               b1nTPortal_address_data.searchTimeOut = setTimeout(function() {
     151                    if(!String(b1nTPortal_address_data.config.searchCtrl.value).trim()) { return; }
     152                    b1nTPortal_address_data._b1nTPortal_get_suggestions(b1nTPortal_address_data.config.searchCtrl.value);
     153                    b1nTPortal_address_data.address_suggestion_wrap.style.boxShadow = "0px 0px 4px 1px #d2d2d2";
     154               }, 500);
     155          });
     156
     157          b1nTPortal_address_data.config.searchCtrl.addEventListener("blur", function(b1nTPortal_e) {
     158               clearTimeout(b1nTPortal_address_data.blurTimeOut); 
     159               b1nTPortal_address_data.blurTimeOut = setTimeout(function() {
     160                    let b1nTPortal_address_suggestions_wrap_content = document.getElementById("b1nTPortal_"+b1nTPortal_address_data.random_number+"_AddrVldtrSuggestionsContent");
     161                    if(b1nTPortal_address_suggestions_wrap_content) {
     162                         b1nTPortal_address_data.config.searchCtrl.value = b1nTPortal_address_suggestions_wrap_content.keyOrgVal;
     163                    }
     164
     165                    b1nTPortal_address_data.address_suggestion_wrap.innerHTML = "";
     166                    b1nTPortal_address_data.address_suggestion_wrap.style.boxShadow = "none";
     167               }, 500);
     168          });
     169
     170          //if we are not using the search bar to act as the address bar, then set an onchange handler. Otherwise skip it
     171          if(b1nTPortal_address_data.config.addressCtrl && (b1nTPortal_address_data.config.addressCtrl != b1nTPortal_address_data.config.searchCtrl)) {
     172               b1nTPortal_address_data.config.addressCtrl = b1nTPortal_address_data._b1nTPortal_address_changed;
     173          }
     174
     175          b1nTPortal_address_data.config.cityCtrl.onchange   = b1nTPortal_address_data._b1nTPortal_address_changed;
     176          b1nTPortal_address_data.config.stateCtrl.onchange  = b1nTPortal_address_data._b1nTPortal_address_changed;
     177          b1nTPortal_address_data.config.postalCtrl.onchange = b1nTPortal_address_data._b1nTPortal_address_changed;
     178     };
     179
     180     this._b1nTPortal_init_legacy = function() {
     181          let b1nTPortal_search = b1nTPortal_address_data.config.searchCtrl;
     182          let b1nTPortal_place_auto_complete = new google.maps.places.Autocomplete(
    13183               b1nTPortal_search, {
    14184                    fields: ['geometry', 'address_component', 'type']
     
    16186          );
    17187
    18           var b1nTPortal_call_back = function () {
    19                b1nTPortal_address_data._b1nTPortal_fill_in_address();
    20           }
    21 
    22           b1nTPortal_place_auto_complete.addListener( 'place_changed',  b1nTPortal_call_back);
    23           b1nTPortal_address_data.placeautocomplete = b1nTPortal_place_auto_complete;
     188          let b1nTPortal_call_back = function () {
     189               b1nTPortal_address_data._b1nTPortal_fill_in_address_legacy();
     190          }
     191
     192          b1nTPortal_place_auto_complete.addListener('place_changed',  b1nTPortal_call_back);
     193          b1nTPortal_address_data.placeautocomplete_legacy = b1nTPortal_place_auto_complete;
    24194
    25195          //limit the counties to usa and canada
     
    29199
    30200          //setup event listensers on fields
    31           b1nTPortal_address_data.config.addressCtrl.oninput = b1nTPortal_address_data._b1nTPortal_address_changed;
    32           b1nTPortal_address_data.config.cityCtrl.onchange = b1nTPortal_address_data._b1nTPortal_address_changed;
    33           b1nTPortal_address_data.config.stateCtrl.onchange = b1nTPortal_address_data._b1nTPortal_address_changed;
    34           b1nTPortal_address_data.config.postalCtrl.onchange = b1nTPortal_address_data._b1nTPortal_address_changed;
    35      };
    36 
    37      this._b1nTPortal_fill_in_address = function () {
    38           var b1nTPortal_place = b1nTPortal_address_data.placeautocomplete.getPlace();
     201          b1nTPortal_address_data.config.addressCtrl.onchange = function() { b1nTPortal_address_data._b1nTPortal_address_changed(1); }
     202          b1nTPortal_address_data.config.cityCtrl.onchange    = function() { b1nTPortal_address_data._b1nTPortal_address_changed(1); }
     203          b1nTPortal_address_data.config.stateCtrl.onchange   = function() { b1nTPortal_address_data._b1nTPortal_address_changed(1); }
     204          b1nTPortal_address_data.config.postalCtrl.onchange  = function() { b1nTPortal_address_data._b1nTPortal_address_changed(1); }
     205     }
     206
     207     this._b1nTPortal_get_suggestions = async function(b1nTPortal_v) {
     208          //creating a new session if it does not exist.
     209          const b1nTPortal_token = b1nTPortal_address_data.token_session ? b1nTPortal_address_data.token_session : new google.maps.places.AutocompleteSessionToken();
     210          b1nTPortal_address_data.token_session = b1nTPortal_token;
     211
     212          let b1nTPortal_options = {
     213               sessionToken: b1nTPortal_token,
     214               input: b1nTPortal_v,
     215               language: "en-US",
     216               includedRegionCodes: ["us", "ca"]
     217          };
     218
     219          const b1nTPortal_suggestions = await google.maps.places.AutocompleteSuggestion.fetchAutocompleteSuggestions(b1nTPortal_options);
     220          const b1nTPortal_suggestions_array = b1nTPortal_suggestions.suggestions;
     221
     222          let b1nTPortal_fill_structure = function(b1nTPortal_address_suggestions_wrap) {
     223               b1nTPortal_address_suggestions_wrap.innerHTML = "";
     224               b1nTPortal_address_suggestions_wrap.keyIndex  = "";
     225               b1nTPortal_address_suggestions_wrap.keyOrgVal = b1nTPortal_address_data.config.searchCtrl.value;
     226
     227               b1nTPortal_suggestions_array.forEach(function(b1nTPortal_suggestion, b1nTPortal_index) {
     228                    const b1nTPortal_place_prediction = b1nTPortal_suggestion.placePrediction;
     229                    let b1nTPortal_input_wrap              = document.createElement("div");
     230                    let b1nTPortal_input                   = document.createElement("div");
     231                    b1nTPortal_input.style.whiteSpace      = "nowrap";
     232                    b1nTPortal_input.style.borderRadius    = "0px";
     233                    b1nTPortal_input.style.border          = "0px";
     234                    b1nTPortal_input.style.padding         = "10px";
     235                    b1nTPortal_input.style.cursor          = "pointer";
     236
     237                    let b1nTPortal_icon                    = document.createElement("i");
     238                    b1nTPortal_icon.style.verticalAlign    = "middle";
     239                    b1nTPortal_icon.style.fontSize         = "14pt";
     240                    b1nTPortal_icon.style.marginRight      = "5px";
     241                    b1nTPortal_icon.style.color            = "#808080";
     242
     243                    b1nTPortal_icon.setAttribute("class", "material-icons");
     244                    b1nTPortal_icon.innerHTML = "place";
     245
     246                    b1nTPortal_input.appendChild(b1nTPortal_icon);
     247                    b1nTPortal_input.innerHTML += b1nTPortal_place_prediction.text.toString();
     248                    b1nTPortal_input.valHTML = b1nTPortal_place_prediction.text.toString();
     249
     250                    if(b1nTPortal_index < b1nTPortal_suggestions_array.length - 1) {
     251                         b1nTPortal_input_wrap.style.borderBottom = "1px solid #d1cfcf";
     252                    }
     253
     254                    b1nTPortal_input.onmouseover = function() {
     255                         this.style.color = "#0174ab";
     256                         this.style.backgroundColor = "#f5f5f5";
     257                    };
     258                    b1nTPortal_input.onmouseout = function() {
     259                         this.style.removeProperty("color");
     260                         this.style.removeProperty("background-color");
     261                    }
     262                    b1nTPortal_input.onclick = function() {
     263                         clearTimeout(b1nTPortal_address_data.blurTimeOut);
     264                         clearTimeout(b1nTPortal_address_data.searchTimeOut);
     265                         b1nTPortal_address_data._b1nTPortal_fill_in_address(b1nTPortal_place_prediction);
     266                         b1nTPortal_address_data.address_suggestion_wrap.innerHTML = "";
     267                         b1nTPortal_address_data.address_suggestion_wrap.style.boxShadow = "none";
     268                    }
     269
     270                    b1nTPortal_input_wrap.appendChild(b1nTPortal_input);
     271                    b1nTPortal_address_suggestions_wrap.appendChild(b1nTPortal_input_wrap);
     272               });
     273          };
     274
     275          let b1nTPortal_build_structure = function() {
     276               let b1nTPortal_flex_master_div                 = document.createElement("div");
     277               b1nTPortal_flex_master_div.style.flexDirection = "column";
     278               b1nTPortal_flex_master_div.style.display       = "flex";
     279
     280               //content
     281               let b1nTPortal_address_suggestions_wrap                = document.createElement("div");
     282               b1nTPortal_address_suggestions_wrap.setAttribute("id", "b1nTPortal_"+b1nTPortal_address_data.random_number+"_AddrVldtrSuggestionsContent");
     283               b1nTPortal_address_suggestions_wrap.style.border       = "1px solid #d1cfcf";
     284               b1nTPortal_address_suggestions_wrap.style.borderBottom = "0px";
     285               b1nTPortal_address_suggestions_wrap.style.overflowY    = "auto";
     286               b1nTPortal_address_suggestions_wrap.style.maxHeight    = "300px";
     287
     288               b1nTPortal_fill_structure(b1nTPortal_address_suggestions_wrap);
     289
     290               b1nTPortal_flex_master_div.appendChild(b1nTPortal_address_suggestions_wrap);
     291
     292               //logo
     293               let b1nTPortal_powered_by_wrap = document.createElement("div");
     294               b1nTPortal_powered_by_wrap.style.border    = "1px solid #d1cfcf";         
     295               b1nTPortal_powered_by_wrap.style.borderTop = "0px";
     296
     297               let b1nTPortal_powered_by = document.createElement("div");
     298               b1nTPortal_powered_by.style.borderRadius  = "0px";
     299               b1nTPortal_powered_by.style.border        = "0px";
     300               b1nTPortal_powered_by.style.padding       = "10px";
     301
     302               b1nTPortal_powered_by.style.color         = "#808080";
     303               b1nTPortal_powered_by.style.textAlign     = "right";
     304               b1nTPortal_powered_by.style.fontWeight    = "bold";
     305               b1nTPortal_powered_by.style.pointerEvents = "none";
     306               b1nTPortal_powered_by.innerHTML           = "powered by";
     307
     308               let b1nTPortal_icon = document.createElement("img");
     309               b1nTPortal_icon.setAttribute("src", b1nTPortal_address_data.config.imageUrl+"/Google_logo.png");
     310
     311               b1nTPortal_icon.style.height        = "18px";
     312               b1nTPortal_icon.style.verticalAlign = "middle";
     313               b1nTPortal_icon.style.marginLeft    = "5px";
     314
     315               b1nTPortal_powered_by.appendChild(b1nTPortal_icon);
     316               b1nTPortal_powered_by_wrap.appendChild(b1nTPortal_powered_by);
     317
     318               b1nTPortal_flex_master_div.appendChild(b1nTPortal_powered_by_wrap);
     319
     320               //put it together
     321               b1nTPortal_address_data.address_suggestion_wrap.appendChild(b1nTPortal_flex_master_div);
     322          };
     323
     324          let b1nTPortal_address_suggestions_wrap = document.getElementById("b1nTPortal_"+b1nTPortal_address_data.random_number+"_AddrVldtrSuggestionsContent");
     325
     326          if(!b1nTPortal_address_suggestions_wrap) {
     327               b1nTPortal_build_structure();
     328          } else {
     329               b1nTPortal_fill_structure(b1nTPortal_address_suggestions_wrap);
     330          }
     331     };
     332
     333     this._b1nTPortal_fill_in_address = async function (b1nTPortal_place_prediction) {
     334          var b1nTPortal_place = b1nTPortal_place_prediction.toPlace();
     335
     336          await b1nTPortal_place.fetchFields({fields: ['location', 'addressComponents', 'types', 'displayName']});
     337
     338          //clear session token, this way we create a
     339          //new one when the suggestion triggers again
     340          b1nTPortal_address_data.token_session = undefined;
     341
     342          if (!b1nTPortal_place.location) {
     343               b1nTPortal_address_data.b1nTPortal_refresh_google_verification();
     344
     345               if(b1nTPortal_address_data.dBox) {
     346                    b1nTPortal_address_data.dBox.b1nTPortal_open_dialog("WARNING!!", 'No details available for input: '+b1nTPortal_place.displayName, null);
     347               }
     348               return;
     349          }
     350       
     351          //get autocompleted address
     352          let b1nTPortal_street_number = b1nTPortal_address_data._b1nTPortal_find_address_component( b1nTPortal_place.addressComponents, 'street_number' );
     353          b1nTPortal_street_number.shortText = b1nTPortal_street_number.shortText ? b1nTPortal_street_number.shortText : b1nTPortal_address_data.config.searchCtrl.value.split(' ')[0].replaceAll(/\D/g, '');
     354 
     355          let b1nTPortal_street_name = b1nTPortal_address_data._b1nTPortal_find_address_component( b1nTPortal_place.addressComponents, 'street_address' );
     356          b1nTPortal_street_name = b1nTPortal_street_name.longText ? b1nTPortal_street_name : b1nTPortal_address_data._b1nTPortal_find_address_component( b1nTPortal_place.addressComponents, 'route' );
     357          b1nTPortal_street_name = b1nTPortal_street_name.longText ? b1nTPortal_street_name : b1nTPortal_address_data._b1nTPortal_find_address_component( b1nTPortal_place.addressComponents, 'intersection' );
     358 
     359          let b1nTPortal_city = b1nTPortal_address_data._b1nTPortal_find_address_component( b1nTPortal_place.addressComponents, 'locality' );
     360          b1nTPortal_city = b1nTPortal_city.longText ? b1nTPortal_city : b1nTPortal_address_data._b1nTPortal_find_address_component( b1nTPortal_place.addressComponents, 'administrative_area_level_3' );
     361          b1nTPortal_city = b1nTPortal_city.longText ? b1nTPortal_city : b1nTPortal_address_data._b1nTPortal_find_address_component( b1nTPortal_place.addressComponents, 'sublocality_level_1' );
     362 
     363          let b1nTPortal_state = b1nTPortal_address_data._b1nTPortal_find_address_component( b1nTPortal_place.addressComponents, 'administrative_area_level_1' );
     364          let b1nTPortal_postal = b1nTPortal_address_data._b1nTPortal_find_address_component( b1nTPortal_place.addressComponents, 'postal_code' );         
     365          let b1nTPortal_postal_suffix = b1nTPortal_address_data._b1nTPortal_find_address_component( b1nTPortal_place.addressComponents, 'postal_code_suffix' );
     366
     367          //we are done, clear address field
     368          b1nTPortal_address_data.config.addressCtrl.value = "";
     369
     370          //however, is state part of the selected country ?
     371          //if not we dont want to go any further than this
     372          var found_state = 0;
     373          for(var option of b1nTPortal_address_data.config.stateCtrl.options) {
     374               if(option.value == b1nTPortal_state.shortText) {
     375                    found_state++;
     376               }
     377          }
     378
     379          if(!found_state) {
     380               b1nTPortal_address_data.config.cityCtrl.value = "";
     381               b1nTPortal_address_data.config.stateCtrl.value = "";
     382               b1nTPortal_address_data.b1nTPortal_refresh_google_verification();
     383               if(b1nTPortal_address_data.dBox) {
     384                    b1nTPortal_address_data.dBox.b1nTPortal_open_dialog("WARNING!!", "This address appears to reside in a country that is not accepted by this company", null);
     385               }
     386               return;
     387          }
     388
     389          b1nTPortal_address_data.config.addressCtrl.value = `${b1nTPortal_street_number.shortText} ${b1nTPortal_street_name.shortText}`;
     390          b1nTPortal_address_data.current_address = `${b1nTPortal_street_number.shortText} ${b1nTPortal_street_name.shortText}`;
     391          b1nTPortal_address_data.config.cityCtrl.value = b1nTPortal_city.longText;
     392          b1nTPortal_address_data.config.stateCtrl.value = b1nTPortal_state.shortText;
     393          b1nTPortal_address_data.config.postalCtrl.value = b1nTPortal_postal.shortText;
     394
     395          //check if the address is rooftop
     396          let b1nTPortal_verified = b1nTPortal_place.types.includes('premise') || b1nTPortal_place.location.location_type == 'ROOFTOP' || b1nTPortal_postal_suffix.shortText.length;
     397
     398          b1nTPortal_verified = b1nTPortal_verified ? 1 : 0;
     399          b1nTPortal_address_data.b1nTPortal_refresh_google_verification(b1nTPortal_verified);
     400     };
     401
     402     this._b1nTPortal_fill_in_address_legacy = function () {
     403          var b1nTPortal_place = b1nTPortal_address_data.placeautocomplete_legacy.getPlace();
    39404
    40405          if (!b1nTPortal_place.geometry) {
     
    98463     };
    99464
    100      this._b1nTPortal_find_address_component = function( b1nTPortal_address_array, b1nTPortal_search ) {
     465     this._b1nTPortal_find_address_component = function(b1nTPortal_address_array, b1nTPortal_search, b1nTPortal_arg_legacy) {
    101466          for( let i = 0; i < b1nTPortal_address_array.length; i++ ) {
    102467               if ( b1nTPortal_address_array[i].types[0] == b1nTPortal_search ) {
     
    104469               }
    105470          }
    106           return { long_name: '', short_name: '', types: [ b1nTPortal_search ] };
     471          if(b1nTPortal_arg_legacy) {
     472               return { long_name: '', short_name: '', types: [ b1nTPortal_search ] };
     473          }
     474          return { longText: '', shortText: '', types: [ b1nTPortal_search ] };
    107475     };
    108476
     
    129497     };
    130498
    131      this._b1nTPortal_address_changed = function() {
    132           if(b1nTPortal_address_data.validated * 1 == 0) {} else {
    133                b1nTPortal_address_data.b1nTPortal_refresh_google_verification(0);
    134           }
     499     this._b1nTPortal_address_changed = function(b1nTPortal_arg_legacy) {
     500          let b1nTPortal_the_work = function() {
     501               if(b1nTPortal_address_data.validated * 1 == 0) {} else {
     502                    b1nTPortal_address_data.b1nTPortal_refresh_google_verification(0);
     503               }
     504          }
     505
     506          if(b1nTPortal_arg_legacy) {
     507               b1nTPortal_the_work();
     508               return;
     509          }
     510
     511          clearTimeout(b1nTPortal_address_data.changeTimeout);
     512          b1nTPortal_address_data.changeTimeout = setTimeout(function() {
     513               b1nTPortal_the_work(); 
     514          }, 500);
    135515     };
    136516
     
    167547}
    168548
    169 
    170 
  • bin-tracker-portal/trunk/javascript/dynamic-templates/add-edit-jobsite-page.js

    r3134259 r3336805  
    294294                    "stateCtrl" : b1nTPortal_data.fields["b1nTPortal_jobsite_state"],
    295295                    "postalCtrl" : b1nTPortal_data.fields["b1nTPortal_jobsite_zip"],
    296                     "validateCtrl" : b1nTPortal_data.fields["b1nTPortal_google_validator"]
     296                    "validateCtrl" : b1nTPortal_data.fields["b1nTPortal_google_validator"],
     297                    "imageUrl": b1nTPortal_data.config.image_url
    297298                });
    298299            }
  • bin-tracker-portal/trunk/readme.txt

    r3278327 r3336805  
    44Requires PHP: 5.6.4
    55Tested up to: 6.8
    6 Stable tag: 1.1.4
     6Stable tag: 1.2.0
    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.