retaining search terms in the header search input and the member list filter input
authorAnthony Talarico <talarico@gaslightmedia.com>
Wed, 31 May 2017 13:54:57 +0000 (09:54 -0400)
committerAnthony Talarico <talarico@gaslightmedia.com>
Wed, 31 May 2017 13:54:57 +0000 (09:54 -0400)
the header search and member list filter inputs did not retain the search terms after submission, adding
this to the search template files using wp filters

functions.php
glm-member-db/views/front/members/list.html
parts/search-filters.php
parts/trail-search.php
sections/header.php

index 6f53109..a587b62 100644 (file)
@@ -353,5 +353,35 @@ function remove_cat_from_shop_loop( $q ) {
     remove_action( 'pre_get_posts', 'remove_cat_from_shop_loop' );
 
 }
+ function get_categories_array($category, $id_field){
+    foreach($category as $key=>$value){
+        $new_array[$value[$id_field]] = $value;
 
+    }
+    return $new_array;
+}
+
+
+
+add_filter('member_list_header_search', function(){
+    $regions = get_categories_array( apply_filters('glm_getListForSearch', 'region'), 'region');
+    $cities = get_categories_array( apply_filters('glm_getListForSearch', 'city'), 'city');
+    $counties = get_categories_array( apply_filters('glm_getListForSearch', 'county'), 'county');
+    $parks = get_categories_array( apply_filters('glm_getListForSearch','category', "Parks"), 'category');
+    $activities = get_categories_array( apply_filters('glm_getListForSearch','category', "Activities"), 'category');
+    $destinations = get_categories_array( apply_filters('glm_getListForSearch','category', "Destinations"), 'category');
+    $search_array = array('regions'=>$regions, 'cities'=>$cities, 'counties'=>$counties, 'activities' => $activities, 'parks' => $parks, 'destinations' => $destinations);
+    $search_array = json_encode($search_array);
+    return $search_array;
+});
+add_filter('decode_member_list_header_search', function(){
+    return json_decode(apply_filters('member_list_header_search', ''), true);
+});
+$selected_region = (isset($_POST['regionUserSearch'][0]) ? $_POST['regionUserSearch'][0] : ''); 
+$selected_county =  (isset($_POST['counties'][0]) ? $_POST['counties'][0] : ''); 
+$selected_city =  (isset($_POST['cities'][0]) ? $_POST['cities'][0] : ''); 
+$selected_destination = (isset($_POST['categories'][0]) ? $_POST['categories'][0] : ''); 
+$selected_activity =  (isset($_POST['categories'][1]) ? $_POST['categories'][1] : ''); 
+$selected_park =  (isset($_POST['categories'][2]) ? $_POST['categories'][2] : '');
+$selected_text =  (isset($_POST['textSearch']) ? $_POST['textSearch'] : ''); 
 ?>
index 396287b..b5f97b9 100644 (file)
@@ -2,8 +2,15 @@
     {if $settings.list_map_show_opened}map-opened{else}map-closed{/if}
     {if $settings.list_show_search_filters_opened}filters-opened{else}filters-closed{/if}
 ">
+{if isset($smarty.request.categories[1])}
+    {$selected_activity = $smarty.request.categories[1]}
+{/if}
+{if isset($smarty.request.regionUserSearch[0])}
+    {$selected_region = $smarty.request.regionUserSearch[0]}
+{/if}
+
 {include file='front/members/header.html'}
-        {apply_filters('glm-member-db-front-members-list-pageTop', '')}
+    {apply_filters('glm-member-db-front-members-list-pageTop', '')}
 <div class="glm-member-list-inner-wrapper">
     {if $settings.list_show_map}
             <div id="glm-member-list-map-toggle" class="button glm-button">Map</div>
@@ -43,7 +50,7 @@
                                 {/if}
                                 {foreach from=$categories item=v}
                                     {if $v.parent}
-                                    <option value="{$v.id}"{if $v.default} selected="selected"{/if}>
+                                    <option value="{$v.id}"{if {$selected_activity} == {$v.id}} selected="selected"{/if}>
                                         {if $v.parent}&nbsp;&nbsp;&nbsp;&nbsp;{/if}{$v.name}
                                     </option>
                                     {/if}
@@ -66,6 +73,7 @@
                             </div>
                             {/if}
                         {/if}
+         
                         {if $settings.list_show_search_region}
                             {if $regions|@count gt 0}
                             <div>
@@ -75,7 +83,8 @@
                                         <option value"">(all)</option>
                                     {/if}
                                     {foreach from=$regions item=v}
-                                        <option value="{$v.id}" {if $v.default} selected="selected"{/if}>
+                                    {
+                                        <option value="{$v.region}" {if {$selected_region} == {$v.region}} selected="selected"{/if}>
                                             {$v.name}
                                         </option>
                                     {/foreach}
index c9069d7..cf7cc8f 100644 (file)
@@ -1,11 +1,11 @@
-       <?php 
-            $regions        = apply_filters('glm_getListForSearch', 'region'); 
-            $cities         = apply_filters('glm_getListForSearch', 'city');
-            $counties       = apply_filters('glm_getListForSearch', 'county');
-            $activities     = apply_filters('glm_getListForSearch', 'category', "Activities");
-            $parks          = apply_filters('glm_getListForSearch', 'category', "Parks"); 
-            $destinations   = apply_filters('glm_getListForSearch', 'category', "Destinations"); 
-            
-            $search_array = array('regions'=>$regions, 'cities'=>$cities, 'counties'=>$counties, 'activities' => $activities, 'parks' => $parks, 'destinations' => $destinations);
-            $search_array = json_encode($search_array);
-        ?>
\ No newline at end of file
+<?php 
+$search_array = apply_filters('member_list_header_search', '');
+$decode_array = json_decode(apply_filters('member_list_header_search', ''), true);
+$regions = $decode_array['regions'];
+$counties = $decode_array['counties'];
+$cities = $decode_array['cities'];
+$destinations = $decode_array['destinations'];
+$activities = $decode_array['activities'];
+$parks = $decode_array['parks']
+
+?>
\ No newline at end of file
index ea87a62..de0a863 100644 (file)
@@ -4,7 +4,12 @@
 <!--                   <a class="reset-search" href="">Reset Search</a>-->
                     <form class="text-search-form" method="post" enctype="multipart/form-data" action="<?php echo get_permalink(get_option('glm_members_database_option_members_list_id')); ?>?action=list">
                         <span>Search for Trail</span>
-                        <input name="textSearch" type="text" method="post">
+                        <?php if($selected_text){ ?>
+                             <input name="textSearch" type="text" value="<?php echo $selected_text; ?>">
+                        <?php } else { ?>
+                             <input name="textSearch" type="text">
+                        <?php } ?>
+                       
                         <input class="search-button right" type="submit" value="Search" name="submit">
                     </form>
                     
                         <select class="header-search region-search" name="regionUserSearch[]" id="">
                             <option value="">Select a Region</option>
                             <?php foreach($regions as $region){ ?>
-
-                                <option value="<?php echo $region['region']; ?>"><?php echo $region['name']; ?></option>
+                            <?php if( $selected_region == $region['region']) { ?>
+                                <option selected value="<?php echo $region['region']; ?>"><?php echo $region['name']; ?></option>
+                                <?php } else { ?>
+                                     <option value="<?php echo $region['region']; ?>"><?php echo $region['name']; ?></option>
+                                 <?php } ?>
                             <?php } ?>
                         </select>
                         <select class="header-search county-search" name="counties[]" id="">
                             <option value="">Select a County</option>
                             <?php foreach($counties as $county){ ?>
-
-                                <option value="<?php echo $county['county']; ?>"><?php echo $county['name']; ?></option>
+                                 <?php if( $selected_county == $county['county']) { ?>
+                                <option selected value="<?php echo $county['county']; ?>"><?php echo $county['name']; ?></option>
+                                    <?php } else { ?>
+                                         <option value="<?php echo $county['county']; ?>"><?php echo $county['name']; ?></option>
+                                    <?php } ?>
                             <?php } ?>
                         </select>
                         <select class="header-search city-search" name="cities[]" id="">
                             <option value="">Select a City</option>
                             <?php foreach($cities as $city){ ?>
-                                <option value="<?php echo $city['city']; ?>"><?php echo $city['name']; ?></option>
+                                  <?php if( $selected_city == $city['city']) { ?>
+                                <option selected value="<?php echo $city['city']; ?>"><?php echo $city['name']; ?></option>
+                                  <?php } else { ?>
+                                      <option value="<?php echo $city['city']; ?>"><?php echo $city['name']; ?></option>
+                                   <?php } ?>
                             <?php } ?>
                         </select>
                         <input class="search-button right" type="submit" value="Search" name="submit">
                         <select class="header-search destination-search" name="categories[]" id="">
                              <option value="">Select a Destination</option>
                             <?php foreach($destinations as $destination){ ?>
-                                <option value="<?php echo $destination['category']; ?>"><?php echo $destination['name']; ?></option>
+                               <?php if( $selected_destination == $destination['category']) { ?>
+                                    <option selected value="<?php echo $destination['category']; ?>"><?php echo $destination['name']; ?></option>
+                               <?php } else { ?>
+                                    <option value="<?php echo $destination['category']; ?>"><?php echo $destination['name']; ?></option>
+                               <?php } ?>
                             <?php } ?>
                         </select>
                         <select class="header-search activity-search" name="categories[]" id="">
                             <option value="">Select an Activity</option>
                             <?php foreach($activities as $activity){ ?>
-                                <option value="<?php echo $activity['category']; ?>"><?php echo $activity['name']; ?></option>
+                               <?php if( $selected_activity == $activity['category']) { ?>
+                                    <option selected value="<?php echo $activity['category']; ?>"><?php echo $activity['name']; ?></option>
+                               <?php } else { ?>
+                                    <option value="<?php echo $activity['category']; ?>"><?php echo $activity['name']; ?></option>
+                               <?php } ?>
                             <?php } ?>
                         </select>
                         <select class="header-search park-search" name="categories[]" id="">
                             <option value="">Select a Park</option>
                             <?php foreach($parks as $park){ ?>
-                                <option value="<?php echo $park['category']; ?>"><?php echo $park['name']; ?></option>
+                               <?php if( $selected_park == $park['category']) { ?>
+                                    <option selected value="<?php echo $park['category']; ?>"><?php echo $park['name']; ?></option>
+                               <?php } else { ?>
+                                    <option value="<?php echo $park['category']; ?>"><?php echo $park['name']; ?></option>
+                               <?php } ?>
                             <?php } ?>
                         </select>
                         <input class="search-button right" type="submit" value="Search" name="submit">
index 0a7d3ae..2c079b4 100644 (file)
                     <p>Trails Reviewed</p>
                 </div>
             </div>
+            <?php 
+            $selected_region = (isset($_POST['regionUserSearch'][0]) ? $_POST['regionUserSearch'][0] : ''); 
+            $selected_county =  (isset($_POST['counties'][0]) ? $_POST['counties'][0] : ''); 
+            $selected_city =  (isset($_POST['cities'][0]) ? $_POST['cities'][0] : ''); 
+            $selected_destination = (isset($_POST['categories'][0]) ? $_POST['categories'][0] : ''); 
+            $selected_activity =  (isset($_POST['categories'][1]) ? $_POST['categories'][1] : ''); 
+            $selected_park =  (isset($_POST['categories'][2]) ? $_POST['categories'][2] : ''); 
+            ?>
             <?php include(get_template_directory().'/parts/trail-search.php'); ?>
         </div>
     </div>