Required page auto-creation, shortcodes, settings, views for list/detail
authorlaury <laury@gaslightmedia.com>
Thu, 12 May 2016 14:40:41 +0000 (10:40 -0400)
committerlaury <laury@gaslightmedia.com>
Thu, 12 May 2016 14:40:41 +0000 (10:40 -0400)
Pages are no longer duplicated upon auto-creation if it finds a slug
corresponding to the given page name: it will instead replace the option.
Required pages given a different admin management display, can no longer
edit ID or slug, which are instead derived through the page name. (this
is not yet functional though!)
Views for List and Detail have been updated. List has a new view file
called 'grid' which can be selected in the options and through a shortcode.
Map and search filters can now be auto-opened on page load or not dependent
on an option or shortcode.
Database scripts updated to suit new options.

30 files changed:
assets/filler.gif [new file with mode: 0644]
assets/filler_s.gif [new file with mode: 0644]
assets/no-image.jpg [new file with mode: 0644]
classes/data/settings/dataSettingsGeneral.php
config/plugin.ini
controllers/admin.php
css/front.css
defines.php
index.php
js/front.js
js/shortcodeBuilder.js
models/admin/management/index.php
models/front/members/list.php
nbproject/private/private.properties [new file with mode: 0644]
nbproject/project.properties [new file with mode: 0644]
nbproject/project.xml [new file with mode: 0644]
setup/databaseScripts/create_database_V1.1.4.sql [deleted file]
setup/databaseScripts/create_database_V1.1.5.sql [new file with mode: 0644]
setup/databaseScripts/dbVersions.php
setup/databaseScripts/drop_database_V1.1.4.sql [deleted file]
setup/databaseScripts/drop_database_V1.1.5.sql [new file with mode: 0644]
setup/databaseScripts/update_database_V1.1.5.sql [new file with mode: 0644]
setup/frontHooks.php
setup/requiredPages.php
setup/shortcodes.php
setup/standardTemplateParams.php
views/admin/management/index.html
views/front/members/detail.html
views/front/members/grid.html [new file with mode: 0644]
views/front/members/list.html

diff --git a/assets/filler.gif b/assets/filler.gif
new file mode 100644 (file)
index 0000000..9871b2d
Binary files /dev/null and b/assets/filler.gif differ
diff --git a/assets/filler_s.gif b/assets/filler_s.gif
new file mode 100644 (file)
index 0000000..8fac264
Binary files /dev/null and b/assets/filler_s.gif differ
diff --git a/assets/no-image.jpg b/assets/no-image.jpg
new file mode 100644 (file)
index 0000000..dddcc24
Binary files /dev/null and b/assets/no-image.jpg differ
index d90028c..14e7696 100644 (file)
@@ -198,6 +198,15 @@ class GlmDataSettingsGeneral extends GlmDataAbstract
                  * Front-end Member Search Options
                  */
 
+            
+                // Search Filters Opened
+                'list_show_search_filters_opened' => array(
+                        'field' => 'list_show_search_filters_opened',
+                        'type' => 'checkbox',
+                        'default' => true,
+                        'use' => 'a'
+                ),
+            
                 // Front-end Listings - Show Map
                 'list_show_map' => array(
                         'field' => 'list_show_map',
@@ -404,6 +413,15 @@ class GlmDataSettingsGeneral extends GlmDataAbstract
                  * Front-end Member Listing Map Options
                  */
 
+            
+                // Google Map Opened
+                'list_map_show_opened' => array(
+                        'field' => 'list_map_show_opened',
+                        'type' => 'checkbox',
+                        'default' => true,
+                        'use' => 'a'
+                ),
+            
                 // Front-end Listings - Map Show Detail Link
                 'list_map_show_detaillink' => array(
                         'field' => 'list_map_show_detaillink',
index 9ff60f8..72b6c7d 100644 (file)
@@ -30,12 +30,17 @@ thumb['width'] = 60
 thumb['height'] = null
 thumb['crop'] = null
 
+grid['width'] = 360
+grid['height'] = 270
+grid['crop'] = null
+
 [common]
 
 image_sizes['large'] = 'Large'
 image_sizes['medium'] = 'Medium'
 image_sizes['small'] = 'Small'
 image_sizes['thumb'] = 'Thumbnail'
+image_sizes['grid'] = 'Grid'
 
 ;
 ; Entry Status Types
index b1d5214..0d7bb79 100644 (file)
@@ -222,7 +222,7 @@ class glmMembersAdmin extends GlmPluginSupport
     public function createPages($requiredPages) 
     {
         foreach($requiredPages as $requiredPage => $requiredPageInfo) {
-            $trimmedName = GLM_MEMBERS_PLUGIN_OPTION_PREFIX.$requiredPageInfo['optionSuffix'];
+            $trimmedName = GLM_MEMBERS_PLUGIN_OPTION_PREFIX.$requiredPageInfo['underscored_name'];
             if ($requiredPageInfo['parent'] == 'associate') {
                 $postParent = get_option(GLM_MEMBERS_PLUGIN_OPTION_ASSOCIATE_ID);
             } else if ($requiredPageInfo['parent'] == 'membersonly') {
@@ -232,45 +232,106 @@ class glmMembersAdmin extends GlmPluginSupport
             } else {
                 $postParent = '0';
             }
-            if ( !get_post(get_option($trimmedName))) {
-                $duplicatePage = get_page_by_title($requiredPageInfo['name']);
-                //echo $duplicatePage;
-                echo $duplicatePage->title;
-                echo $duplicatePage->title->ID;
-                if ($duplicatePage->title == $requiredPageInfo['name']) {
-                    update_option($trimmedName, $duplicatePage->ID);
+            $existingPost = get_post(get_option($trimmedName));
+            $testSlug = get_post_field( 'post_name', $existingPost);
+            //$existingSlug = $existingPost->post_name;
+            
+            $newSlug = str_replace(' ','-',strtolower($requiredPageInfo['name']));
+            
+            //$existingSlug = $this->get_post_data($newSlug, 'post_name', 'post_name');
+            $existingSlug = $this->verify_post_slug($newSlug);
+            
+            
+            // If a post with the ID set in the option does not exist
+            if ( !$existingPost) {
+                
+                // If the new slug corresponds to an already existent page, yet the ID option does not exist,
+                //  then it's either the first time this plugin is run on an outdated site or somehow the ID was
+                //  deleted. Either way, replace the option value with whatever is the ID of the page matching 
+                //  that slug. The slug is checked by translating the page title.
+                //$existingPage = get_post(url_to_postid(str_replace(' ','-',strtolower($requiredPageInfo['name']))));
+                //$existingPage = get_post('members-detail');
+                //echo '-- PROCESSING PAGE'.str_replace(' ','-',strtolower($requiredPageInfo['name']));
+                
+                if ($newSlug == $existingSlug) {
+                    //echo $existingSlug;
+                    //echo 'DUPLICATE PAGE'.$existingSlug;
+            
+                    $existingID = $this->get_post_id_by_slug($newSlug);
+                    update_option($trimmedName, $existingID);
+                // Otherwise create a new page
                 } else {
-                    $new_page = array(
-                        'post_title' => $requiredPageInfo['name'],
-                        'post_content' => $requiredPageInfo['content'],
-                        'post_status' => 'publish',
-                        'post_type' => 'page',
-                        'post_author' => '1',
-                        'page_template' => isset($requiredPageInfo['template']) ? $requiredPageInfo['template'] : 'index.php' ,
-                        'post_parent' => $postParent
-                    );
-                    $new_id = wp_insert_post($new_page);
+                    // Put together the new page, then update the option with the new ID
+                    $templateUsed = isset($requiredPageInfo['template']) ? $requiredPageInfo['template'] : 'index.php';
+                    $new_id = $this->insertReqPage(
+                            $requiredPageInfo['name'], 
+                            $requiredPageInfo['content'], 
+                            'publish',
+                            'page', 
+                            '1', 
+                            $templateUsed, 
+                            $postParent
+                        );
                     update_option($trimmedName, $new_id);
 
                     // Make extra page if members only is created
                     if ($new_id == get_option(GLM_MEMBERS_PLUGIN_OPTION_MEMBERS_ONLY_ID)) {
-                        $sample_page = array(
-                            'post_title' => 'Members Only Sample Subpage',
-                            'post_content' => 'This page will automatically be locked to Members Only with the members-only-template',
-                            'post_status' => 'publish',
-                            'post_type' => 'page',
-                            'post_author' => '1',
-                            'page_template' => isset($requiredPageInfo['template']) ? $requiredPageInfo['template'] : 'index.php' ,
-                            'post_parent' => $new_id
+                        $this->insertReqPage(
+                            'Members Only Sample Subpage', 
+                            'This page will automatically be locked to Members Only with the members-only-template',
+                            'publish',
+                            'page', 
+                            '1', 
+                            $templateUsed,
+                            $new_id
                         );
-                        wp_insert_post($sample_page);
+                        
                     }
                 }
+            } else {
+                
+//                echo " ((( slugpage ID: ".$existingID.")))";
+//                echo " ((( testslug: ".$testSlug.")))";
+//                echo " ((( existingslug: ".$existingSlug.")))";
+//                echo '-- EXISTING PAGE '.$existingPost->ID.' - '.$existingPost->post_name;
             }
         }
+        
     }
-
-
+    
+    public function insertReqPage($pTitle = '--bad page--', $pContent = '', $pPublish = 'publish', $pType = 'page', $pAuthor = '1', $pTemplate = 'index.php', $pParent = '0') 
+    {
+        $new_page = array(
+            'post_title' => $pTitle,
+            'post_content' => $pContent,
+            'post_status' => $pPublish,
+            'post_type' => $pType,
+            'post_author' => $pAuthor,
+            'page_template' => $pTemplate ,
+            'post_parent' => $pParent
+        );
+        return wp_insert_post($new_page);
+    }
+    
+    
+    public function get_post_data($needle = 1, $valueField = 'post_name', $needleField = 'ID')
+    {
+        $value = $this->wpdb->get_var("SELECT $valueField FROM ".$this->wpdb->posts." WHERE $needleField = '".$needle."'");
+        return $value;
+    }
+    
+    public function verify_post_slug($postName)
+    {
+        $value = $this->wpdb->get_var("SELECT post_name FROM ".$this->wpdb->posts." WHERE post_name = '".$postName."'");
+        return $value;
+    }
+    
+    public function get_post_id_by_slug($postName)
+    {
+        $value = $this->wpdb->get_var("SELECT ID FROM ".$this->wpdb->posts." WHERE post_name = '".$postName."'");
+        return $value;
+    }
+    
     /**
      * Get Git Branch
      *
@@ -735,6 +796,12 @@ class glmMembersAdmin extends GlmPluginSupport
             <option value="True"> True </option>';
             echo '</select>';
             
+//            // dropdown for views
+            echo '<select id="view-scDropdown">';
+            echo '<option selected="selected" value="bars"> Bars </option>';
+            echo '<option value="grid"> Grid </option>';
+            echo '</select>';
+            
             // show list options 'scb' = shortcode builder acronym 
             echo '<div id="showList" title="List Options">';
             echo '<label><input class="showLists" type="checkbox" name="listBox" value="all">All</label>';
index 9677b78..304fb3e 100644 (file)
     background: white;
     margin: .4em 0px .4em 0px;
 }
+.glm-member-db-list-grid-view {
+    overflow: hidden;
+    position: relative;
+}
+.glm-member-list-inner-wrapper {
+    position: relative;
+}
+.glm-member-list-inner-wrapper h3 {
+    font-size: 24px;
+    line-height: 1;
+}
+.glm-member-db-list-grid-view .glm-member-title {
+    font-size: 24px;
+    font-weight: normal;
+    text-decoration: none;
+    text-transform: none;
+    line-height: 1.2;
+    padding-top: 10px;
+}
+#glm-member-list-map-toggle {
+    background-color: lightgrey;
+    position: absolute;
+    padding: 10px 20px;
+    right: 0;
+    top: 0;
+    margin: 0;
+    border-radius: 4px;
+}
+#glm-member-list-map-toggle {
+    
+}
+.glm-member-db-list-grid-view.map-closed #glm-member-list-map-toggle:before {
+    content: "View ";
+}
+.glm-member-db-list-grid-view.map-opened #glm-member-list-map-toggle:before {
+    content: "Hide ";
+}
+.glm-member-db-list-grid-view #glm-locationMap-container {
+    
+}
+.glm-member-db-list-grid-view .glm-member-list-listing-container {
+    transition: all 0.5s;
+    padding: 0 0 0 2%;
+    margin-top: 30px;
+}
+@media (min-width: 1024px) {
+    .glm-member-db-list-grid-view .glm-member-list-listing-container {
+        float: right;
+    }
+}
+.glm-member-db-list-grid-view.filters-closed .glm-member-list-listing-container {
+    transition: all 0.4s;
+    width: 100%;
+    margin-top: 30px;
+}
+@media (min-width: 1024px) {
+    .glm-member-db-list-grid-view.filters-closed .glm-member-list-listing-container {
+        margin-top: 30px;
+    }
+    .glm-member-db-list-grid-view.filters-opened .glm-member-list-listing-container {
+        width: 80%;
+    }
+}
+.glm-member-db-list-grid-view #glm-member-list-filters-close {
+    background-color: grey;
+    height: 40px;
+    line-height: 40px;
+    color: white;
+    position: absolute;
+    top: 0;
+    right: 0;
+    z-index: 20;
+    text-decoration: none;
+    padding: 0 20px;
+    font-size: 14px;   
+    margin: 0;
+    border-top-right-radius: 4px;
+}
+.glm-member-db-list-grid-view #glm-member-list-filters-box {
+    transition: all 0.5s;
+    max-width: 234px;;
+    min-width: 215px;
+    float: left;
+    position: absolute;
+    z-index: 10;
+    top: 0;
+    font-size: 14px;    
+    border-top-left-radius: 4px;
+    border-top-right-radius: 4px;
+    overflow: hidden;
+}
+.glm-member-db-list-grid-view .glm-member-search {
+    padding-top: 50px;
+    border-top: 0;
+}
+.glm-member-db-list-grid-view .glm-member-search:before {
+    background-color: lightgrey;
+    content: '';
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    height: 40px;
+}
+
+#glm-member-list-filters-wrapper {
+    width: 100%;
+    max-width: 20%;
+    min-width: 215px;
+    z-index: 10;
+    height: 40px;
+    transition: all 0.5s;
+    
+}
+.glm-member-db-list-grid-view.filters-closed #glm-member-list-filters-wrapper {
+    overflow: hidden;
+}
+.glm-member-db-list-grid-view.filters-closed #glm-member-list-filters-box {
+    left: -215px;
+    opacity: 0;
+    transition: all 0.5s;
+}
+@media (min-width: 1024px) {
+    .glm-member-db-list-grid-view.filters-closed #glm-member-list-filters-box {
+        transition: all 0.5s;
+        left: -100%;
+    }
+}
+.glm-member-db-list-grid-view.filters-opened #glm-member-list-filters-box {
+    left: 0;
+}
+#glm-member-list-filters-button {
+    background-color: lightgrey;
+    padding: 10px 20px;
+    z-index: 20;
+    left: 0;
+    top: 0;
+    margin: 0;
+    border-radius: 4px;
+}
+@media (min-width: 1024px) {
+    #glm-member-list-filters-button {
+        position: absolute;    
+    }
+}
+.glm-member-db-list-grid-view.filters-closed #glm-member-list-filters-button {
+    position: relative;
+}
+.glm-member-db-list-grid-view.filters-opened #glm-member-list-filters-button {
+    border-bottom-left-radius: 0;
+}
+.glm-member-db-list-grid-view.filters-closed #glm-member-list-filters-button:before {
+    content: "+ ";
+}
+.glm-member-db-list-grid-view.filters-opened #glm-member-list-filters-button:before {
+    content: "— ";
+}
+.glm-member-db-list-grid-view #glm-locationMap-container  {
+    margin-bottom: 40px;
+    overflow: hidden;
+}
+.glm-member-db-list-grid-view.map-closed #glm-locationMap-container {
+    margin-bottom: 0;
+    height: 0;
+}
+.glm-member-db-list-grid-view.map-closed #glm-locationMap-container #glm-locationMap {
+}
+.glm-member-db-list-grid-view.map-opened #glm-locationMap-container {
+    
+}
+.glm-member-list-sub-links {
+    color: black;
+}
+.glm-member-db-list-grid-view li.glm-member-list-record {
+    padding: 20px 10px;
+}
+
+.glm-member-db-list-grid-view .glm-member-list-image-wrapper {
+    border-radius: 4px;
+    border: 1px solid lightgrey;
+    position: relative;
+    display: block;
+    overflow: hidden;
+    min-height: 30px;
+}
+.glm-member-db-list-grid-view .glm-member-list-image-wrapper > img {
+    position: absolute;
+    min-width: 100%;
+    min-height: 100%;
+    left: 0;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    margin: auto;
+}
+.glm-member-list-image-empty {
+    display: inline-block;
+    background-image: url("../assets/filler_s.jpg");
+    max-height: 230px;
+    text-align: center;
+    background-position: center center;
+    background-repeat: no-repeat;
+    background-size: contain;
+}
+.glm-member-list-sub-links > a {
+    display: block;
+    float: left;
+    width: 33%;
+    text-align: center;
+}
+.glm-member-list-sub-links > a:first-child {
+/*    text-align:left;*/
+}
+.glm-member-list-sub-links > a:nth-child(2) {
+/*    text-align: center;*/
+}
+.glm-member-list-sub-links:last-child {
+/*    text-align: right;*/
+}
 #glm-directions,
 .glm-member-entry-container.glm-member-search {
     margin-top: 0;
     max-width: 100%;
     height: auto;
 }
+.glm-member-db-list-grid-view .glm-member-list-image {
+    position: absolute;
+    width: 100%;
+}
 .glm-member-detail-image {
     border-color: lightgrey;
     border-image: none;
 .glm-member-list-active-info .glm-member-title a {
     text-decoration: underline;
 }
-#glm-member-db-front-container{
+.glm-member-db-list-grid-view #glm-member-db-front-container {
+    padding: 0;
+}
+#glm-member-db-front-container {
     padding: 0 25px;
 }
+@media (max-width: 640px) {
+    #glm-member-db-front-container {
+        padding: 0;
+    }    
+}
 .glm-member-list-active-info {
     padding: 15px;
 }
-/* Member Detail */
+/*
+ * Member List End
+ */
+
+/*
+ * Member Detail Start
+ */
 .glm-member-detail-image {
     margin-bottom: 1em;
     width: 100%;
 }
 .glm-member-detail-nameAddress {
 }
+
+#glm-member-detail-takeback {
+    margin-bottom: 0;
+    margin-top: -5px;
+}
+#glm-member-detail-takeback-mini {
+    margin-bottom: 0;
+    border-radius: 4px;
+    padding: 5px 20px;
+    overflow: hidden;
+    text-align: left;
+    width: 63px;
+    left: 15px;
+    -webkit-transition: width 0.5s ease;
+    -moz-transition:    width 0.5s ease;
+    -o-transition:      width 0.5s ease;
+    transition:         width 0.5s ease;
+}
+#glm-member-detail-takeback-mini > span {
+    left: 63px;
+    overflow: hidden;
+    position: absolute;
+    top: 8px;
+    width: 100px;
+}
+#glm-member-detail-takeback-mini:hover {
+    text-decoration: none;
+    width: 170px;
+    -webkit-transition: width 0.5s ease;
+    -moz-transition:    width 0.5s ease;
+    -o-transition:      width 0.5s ease;
+    transition:         width 0.5s ease;
+}
+#glm-member-detail-takeback-mini:before {
+    content: '\21A9';
+    font-size: 28px;
+    line-height: 1;
+}
+#glm-member-detail-takeback-mini:hover:after {
+    padding-left: 5px;
+    font-size: 20px;
+}
+#glm-member-detail-side-box {
+    padding: 0px;
+    border-radius: 4px;
+    overflow: hidden;
+}
+#glm-member-detail-website-link {
+    font-size: 24px;
+    margin: 0;
+    text-align: center;
+    padding: 15px;
+}
+#glm-member-detail-website-link a {
+    color: white;
+}
+#glm-member-detail-contact-info {
+    background-color: #2C296D;
+    padding: 15px;
+    color: white;
+    font-size: 18px;
+}
+.glm-member-detail-contact-phone {
+    margin-top: 10px;
+}
 #glm-member-detail-info > * {
   line-height: 1.2;
 }
 #glm-member-detail-container h2 {
     color: #92a682;    
 }
+#glm-member-detail-container .glm-member-title {
+    font-size: 28px;
+}
 #glm-member-detail-sidemenu {
     clear: left;
 }
-#glm-member-detail-data {
-    border-left: 1px solid lightgrey;
-}
 .glm-member-detail-items {
     margin-top: .5em;
 }
 .glm-member-detail-featured-image-wrapper {
     padding: 0;
     overflow: hidden;
+    clear: both;
+    max-height: 360px;
+    border-radius: 4px;
+    margin-bottom: 10px;
 }
 .glm-member-detail-featured-image-wrapper img {
     float: right;
 .glm-package-detail-featured-image-wrapper img {
     float: right;
 }
-#glm-member-detail-images-container img {
+#glm-member-detail-images-container ul {
+    margin: 0;
+}
+#glm-member-detail-images-container ul li {
+    margin-bottom: 20px;
+    max-height: 150px;
+    overflow: hidden;
+    padding: 0 10px;
     border-radius: 2px;
 }
+@media (max-width: 640px) {
+    #glm-member-detail-images-container ul li {    
+        padding: 0;
+    }
+}
+#glm-member-detail-images-container img {
+    width: 100%;
+}
 .glm-member-button,
 input[type="submit"].glm-member-button {
     padding: 10px 20px;
@@ -170,11 +491,18 @@ input[type="submit"].glm-member-button {
 }
 #glm-member-detail-container {
     background: white none repeat scroll 0 0;
-    border: 1px solid #ccc;
     margin: 20px 0 0;
 }
 #glm-member-detail-container > div {
-    margin: 0 -0.9375rem;
+    
+}
+#glm-member-detail-descr-row {
+    padding: 0 0 0 40px;
+}
+@media (max-width: 640px) {
+    #glm-member-detail-descr-row {
+        padding: 40px 0;
+    }
 }
 .glm-member-container {
     line-height: 1.3;
@@ -190,21 +518,88 @@ input[type="submit"].glm-member-button {
 .glm-member-container a:hover {
     cursor: pointer;
 }
-#glm-member-detail-sidemenu .glm-member-detail-table td {
-  cursor: pointer;
+#glm-member-detail-container #glm-locationMap-container {
+    height: 0;
+    overflow: hidden;
 }
-#glm-member-detail-sidemenu .glm-member-detail-table td.selected {
-    box-shadow: 1px 2px 5px 2px lightgrey inset;
+#MemberDrivingDirectionSubmit {
+    border: 0;
 }
-#glm-member-detail-sidemenu .glm-member-detail-table td:hover {
-    box-shadow: 1px 1px 5px 3px lightgrey;
-    border-radius: 2px;
+#glm-member-detail-container #glm-locationMap {
+    margin: 0;
+    padding: 0;
+    width: 100%;
+    border: 0;
+}
+#glm-member-detail-container .map-button {
+    width: 50%;
+    font-size: 16px;
+    padding: 7px;
+    height: 35px;
+    margin: 0;
+    float: left;
+    text-transform: uppercase;
+}
+#glm-member-detail-intro-desc {
+    clear: both;
+}
+.glm-member-detail-content-data {
+    padding: 10px;
+    display: none;
+}
+#glm-member-detail-description-container {
+/*    display: block;*/
+}
+#glm-member-detail-fullprofile-toggle {
+    text-align: center;
+    padding: 3px 6px;
+    margin: 10px;
+    border: 1px solid lightgrey;
+    border-radius: 3px;
+    float: right;
+    width: 85px;
+}
+#glm-member-detail-fullprofile-toggle:hover {
+    box-shadow: 1px 1px 4px lightgrey inset;
+    cursor: pointer;
+}
+#glm-member-detail-fullprofile-toggle.selected {
+    box-shadow: 1px 1px 2px lightgrey inset;
+    cursor: pointer;
+}
+#glm-member-detail-data-container {
+    display: block;
+    clear: both;
 }
-#glm-member-detail-sidemenu table {
+#glm-member-detail-data-container > .glm-member-detail-content-toggle {
     width: 100%;
-}    
-#glm-member-detail-container #glm-locationMap-container {
-    padding: 0;
+    border-radius: 4px;
+    background: #fefefe;
+    color: #57b649;
+    font-size: 18px;
+    padding: 10px;
+}
+#glm-member-detail-data-container > .glm-member-detail-content-toggle:nth-child(n-1) {
+    border-width: 0 0 1px 0;
+    border-style: solid;
+    border-color: lightgrey;
+}
+#glm-member-detail-data-container > .glm-member-detail-content-toggle:hover {
+    cursor: pointer;
+    box-shadow: 1px 1px 4px lightgrey inset;
+}
+#glm-member-detail-data-container > .glm-member-detail-content-toggle:after {
+    content: "+";
+    float: right;
+    font-size: 24px;
+    line-height: 1;
+}
+#glm-member-detail-data-container > .glm-member-detail-content-toggle.selected {
+    box-shadow: 1px 1px 4px lightgrey inset;
+}
+#glm-member-detail-data-container > .glm-member-detail-content-toggle.selected:after {
+    content: "-";
+    font-size: 28px;
 }
 .glm-member-detail-table {
     width: 100%;
@@ -212,7 +607,16 @@ input[type="submit"].glm-member-button {
 .glm-member-detail-table tbody tr th {
     background-color: #c4e2f0;
 }
-/* Alpha Lists */
+.glm-member-detail-sub-data-links {
+    padding: 10px;
+}
+/*
+ * Member Detail End
+ */
+
+/*
+ * Alpha Lists Start
+ */
 .glm-alpha-links {
     clear: both;
 }
@@ -230,16 +634,22 @@ input[type="submit"].glm-member-button {
     background-color: blue;
     color: white;
 }
+/*
+ * Alpha Links End
+ */
 
-/* Maps */
+/*
+ * Map Start
+ */
 .glm-map { 
     width: 100%; 
-    height:200px; 
+    height:400px; 
     border-color:  lightgrey;
     border-image: none;
-    border-style: solid none solid solid;
-    border-width: 2px 0 2px 2px;
-    margin: 10px 0 10px 0;
+    border-style: solid;
+    border-width: 1px;
+/*    margin: 10px 0 10px 0;*/
+    margin: 0 auto;
 }
 /* overrride whatever was causing the 100% width for images in Google Maps */
 .glm-map img {
@@ -258,9 +668,13 @@ input[type="submit"].glm-member-button {
     line-height: 1.2;
     margin: 3px 0 0;
 }
+/*
+ * Map End
+ */
 
-
-/* Specific Divs */
+/*
+ * Specific Divs Start
+ */
 #glm-directions {
     padding: 1em;
 }
@@ -270,7 +684,6 @@ input[type="submit"].glm-member-button {
 .glm-member-list-links a,
 #glm-member-detail-list-links a {
     display: inline;
-    text-decoration: underline;
     margin-right: 15px;
 }
 #glm-member-detail-social {
@@ -279,12 +692,6 @@ input[type="submit"].glm-member-button {
 #glm-member-detail-social a {
     margin-right: 5px;
 }
-
-#glm-member-detail-description-container {
-    padding: 10px;
-    padding-top: 10px;
-    padding-bottom: 10px;
-}
 .glm-member-detail-border {
     border: 1px solid lightgrey;
     padding: 10px;
@@ -308,7 +715,7 @@ input[type="submit"].glm-member-button {
     margin-top: -45px;
 }
 @media (max-width: 1024px) {
-    #glm-member-detail-data > div {
+    #glm-member-detail-data-container > div {
         margin: 0 auto;
         padding: 10px 0;
     }
@@ -330,34 +737,13 @@ input[type="submit"].glm-member-button {
     }    
 }
 @media (min-width: 1024px) {
-    #glm-member-detail-sidemenu,
-    #glm-member-detail-data > div {
-        padding: 10px 40px 10px 10px;
-    }
-    .glm-member-detail-featured-image-wrapper {
-        border-top-right-radius: 3px;
-    }
-    .glm-member-list-image-wrapper {
-        border-bottom-left-radius: 4px;
-        border-top-left-radius: 4px;
-    }    
-    .glm-member-list-active-info {
-        left: initial;
-    }
     
 }
 
 @media (max-width: 640px) {
-    .glm-member-detail-featured-image-wrapper  {
-        text-align: center;
-    }
     #glm-member-detail-container {
         margin: 20px 0 100px;
     }
-    .glm-member-detail-featured-image-wrapper img {
-        float: none;
-        margin: 0 auto;
-    }
     .glm-member-list-image-border {
         margin: 0 auto;
     }
@@ -372,7 +758,7 @@ input[type="submit"].glm-member-button {
         padding: 15px;
     }
     #glm-member-detail-sidemenu,
-    #glm-member-detail-data > div {
+    #glm-member-detail-data-container > div {
         padding: 10px;
     }
     
index 211d1d7..7660cb7 100644 (file)
@@ -40,6 +40,7 @@ $WPUploadDir = wp_upload_dir();
 define('GLM_MEMBERS_SITE_BASE_URL', home_url('/') );
 define('GLM_MEMBERS_PLUGIN_URL', plugin_dir_url(__FILE__));
 define('GLM_MEMBERS_PLUGIN_ADMIN_URL', admin_url('admin.php'));
+define('GLM_MEMBERS_PLUGIN_ASSETS_URL', GLM_MEMBERS_PLUGIN_URL.'/assets');
 define('GLM_MEMBERS_PLUGIN_BASE_URL', WP_PLUGIN_URL.'/'.GLM_MEMBERS_PLUGIN_SLUG);
 define('GLM_MEMBERS_PLUGIN_CURRENT_URL', $urlParts['scheme'].'://'.$urlParts['host'].$pageUri[0]);
 define('GLM_MEMBERS_PLUGIN_MEDIA_URL', $WPUploadDir['baseurl'].'/'.GLM_MEMBERS_PLUGIN_SLUG);
index 1e4150f..da3de12 100644 (file)
--- a/index.php
+++ b/index.php
@@ -39,7 +39,7 @@
  */
 
 define('GLM_MEMBERS_PLUGIN_VERSION', '1.0.58');
-define('GLM_MEMBERS_PLUGIN_DB_VERSION', '1.1.4');
+define('GLM_MEMBERS_PLUGIN_DB_VERSION', '1.1.5');
 
 // Check if plugin version is not current in WordPress option and if needed updated it
 if (GLM_MEMBERS_PLUGIN_VERSION != get_option('glmMembersDatabasePluginVersion')) {
index fe7e3d2..129bf6b 100644 (file)
@@ -1,2 +1,9 @@
-
+        jQuery("#MemberDrivingDirectionsForm").submit(function(){
+            var place = jQuery("#MemberLocation").val().replace( new RegExp( " ", "g" ), '+' );
+            var lat = jQuery("#MemberLat").val();
+            var lon = jQuery("#MemberLon").val();
+            var url = "https://maps.google.com/maps?daddr=" + place + "%40" + lat + "," + lon;
+            window.open(url, '_blank');
+            return false;
+        });
 /* Nothing here yet */
\ No newline at end of file
index 9d52eb7..ed2cb81 100644 (file)
@@ -13,7 +13,7 @@ jQuery(document).ready(function ($) {
     $("#detailBtn").hide();
     $("[id$=-scDropdown]").hide();
     $("#packageListAttr").hide();
-   
+    
    // fire core events when switching between shortcodes
     $("#shortcodeDropdown").on("change", function () {
         // reset the dropdowns and checkbox if when switching shortcodes
@@ -38,6 +38,8 @@ jQuery(document).ready(function ($) {
             $("#category-scDropdown").show();
             $("#blank-start-scDropdown").show();
             $("#id-scDropdown").hide();
+            $("#view-scDropdown").show();
+            $("#map-collapsed-scDropdown").show();
             $("[id^='packageList']").hide();
         }
         
index c802364..2c7ff61 100644 (file)
@@ -124,12 +124,13 @@ class GlmMembersAdmin_management_index extends GlmDataSettingsGeneral
         }
 
         foreach ($this->config['addOns'] as $a) {
+            
             if (isset($a['requiredPages'])) {
                 foreach($a['requiredPages'] as $pageName => &$pageData) {
                     //echo $pageName;
-                    $pageID = get_option(GLM_MEMBERS_PLUGIN_OPTION_PREFIX.$pageData['optionSuffix']);
+                    $pageID = get_option(GLM_MEMBERS_PLUGIN_OPTION_PREFIX.$pageData['underscored_name']);
                     $pageData['id'] = $pageID;
-                    $pageData['slug'] = str_replace(' ','_',strtolower($pageData['name']));
+                    $pageData['slug'] = str_replace(' ','-',strtolower($pageData['name']));
                     echo get_the_title($pageID);
                     //$pageData['name'] = single_post_title(get_post(get_option($pageID)));
                 }
index 491b725..09fa3ed 100644 (file)
@@ -16,6 +16,7 @@
 // Translation table for [glm-members-list] "show" options to configuration parameters
 $GLOBALS['showOpts'] = array(
     'map' =>                    'list_show_map',
+    'map-opened' =>             'list_map_show_opened',
     'map-name-link' =>          'list_map_show_detaillink',
     'map-logo' =>               'list_map_show_logo',
     'map-description' =>        'list_map_show_descr',
@@ -34,6 +35,7 @@ $GLOBALS['showOpts'] = array(
     'map-credit-cards' =>       'list_map_show_creditcards',
     'map-amentities' =>         'list_map_show_amenities',
     'search' =>                 'list_show_search',
+    'search-filters-opened' =>  'list_show_search_filters_opened',
     'search-text' =>            'list_show_search_text',
     'search-categories' =>      'list_show_search_category',
     'search-amenities' =>       'list_show_search_amenities',
@@ -430,7 +432,26 @@ class GlmMembersFront_members_list extends GlmDataMemberInfo
             $alphaList = $this->getAlphaList(' AND '.$where, $alphaSelected);
 
         }
+        
+        // Check whether search filters open by default
+        if ($this->config['settings']['list_show_search_filters_opened'] == 1) {
+            $filtersOpened = true;
+        }
+        
+        // Check whether map opens by default
+        if ($this->config['settings']['list_map_opened'] == 1) {
+            $mapOpened = true;
+        }
 
+        /*
+         * Check for which view file to use, else default to bars
+         */
+        $view = "front/members/grid.html";
+        if (isset($actionData['request']['view']) &&
+                strtolower($actionData['request']['view']) == "grid") {
+            $view = "front/members/grid.html";
+        }
+        
         /*
          * Check for a blank start - No members selected, just search form
          */
@@ -490,7 +511,7 @@ class GlmMembersFront_members_list extends GlmDataMemberInfo
             'amenSelected' => $amenSelected,
             'alphaList' => $alphaList,
             'alphaSelected' => $alphaSelected,
-            'blankStart' => $blankStart
+            'blankStart' => $blankStart,
         );
 
         // Return status, suggested view, and data to controller - also return any modified settings
@@ -498,7 +519,7 @@ class GlmMembersFront_members_list extends GlmDataMemberInfo
             'status' => $success,
             'menuItemRedirect' => false,
             'modelRedirect' => false,
-            'view' => 'front/members/list.html',
+            'view' => $view,
             'data' => $templateData,
             'settings' => $settings
         );
diff --git a/nbproject/private/private.properties b/nbproject/private/private.properties
new file mode 100644 (file)
index 0000000..4b71436
--- /dev/null
@@ -0,0 +1,2 @@
+index.file=index.php
+url=http://localhost/glm-member-db/
diff --git a/nbproject/project.properties b/nbproject/project.properties
new file mode 100644 (file)
index 0000000..d37ef95
--- /dev/null
@@ -0,0 +1,7 @@
+include.path=${php.global.include.path}
+php.version=PHP_54
+source.encoding=UTF-8
+src.dir=.
+tags.asp=false
+tags.short=false
+web.root=.
diff --git a/nbproject/project.xml b/nbproject/project.xml
new file mode 100644 (file)
index 0000000..0498368
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>org.netbeans.modules.php.project</type>
+    <configuration>
+        <data xmlns="http://www.netbeans.org/ns/php-project/1">
+            <name>glm-member-db</name>
+        </data>
+    </configuration>
+</project>
diff --git a/setup/databaseScripts/create_database_V1.1.4.sql b/setup/databaseScripts/create_database_V1.1.4.sql
deleted file mode 100644 (file)
index bd24525..0000000
+++ /dev/null
@@ -1,479 +0,0 @@
--- Gaslight Media Members Database 
--- File Created: 12/09/14 15:27:15
--- Database Version: 1.1.4
--- Database Creation Script
--- 
--- To permit each query below to be executed separately,
--- all queries must be separated by a line with four dashes
--- 
--- **** BE SURE TO ALSO UPDATE drop_database_Vxxx.sql FILE WHEN CHANGING TABLES ****
--- 
-
--- Amenities
-CREATE TABLE {prefix}amenities (
-  id INT NOT NULL AUTO_INCREMENT,
-  active TINYINT(1) NULL,                   -- Amenity is active flag
-  name TINYTEXT NULL,                       -- Name of amenity
-  descr TEXT NULL,                          -- Description of amenity
-  short_descr TINYTEXT NULL,                -- Short description of amenity
-  ref_type INT NULL,                        -- Type of entity these amenitites are associated with - see plugin.ini ref_type tables
-  uses_value BOOLEAN NULL,                  -- Flag indicating whether the amenity requires a quantity number
-  PRIMARY KEY (id),
-  INDEX(name(20))
-);
-
-----
-
--- Amenity Reference - Links a specific amenity to a specific entity of type ref_type
-CREATE TABLE {prefix}amenity_ref (
-  id INT NOT NULL AUTO_INCREMENT,
-  amenity INT NULL,                         -- Pointer to amenity in amenities table
-  ref_type INT NULL,                        -- Copy of ref_type from matching ameities table entry - to simplify searches
-  ref_dest INT NULL,                        -- Pointer to the specific entity of type ref_type
-  amenity_value TINYTEXT NULL,              -- Quanity if amenity uses values
-  PRIMARY KEY (id),
-  INDEX(ref_type),
-  INDEX(ref_dest)
-);
-
-----
-
--- Member Cateogries - used with member information records
-CREATE TABLE {prefix}categories (
-  id INT NOT NULL AUTO_INCREMENT,
-  name TINYTEXT NULL,                       -- Name of this category
-  descr TEXT NULL,                          -- Description of this category
-  short_descr TINYTEXT NULL,                -- Short description of this category 
-  parent INT NULL,                          -- Pointer to parent category in this table - if there is one
-  PRIMARY KEY (id)
-);
-
-----
-
--- Mapping of categories to speific member information records
-CREATE TABLE {prefix}category_member_info (
-  id INT NOT NULL AUTO_INCREMENT,
-  category INT NULL,                        -- Pointer to category in categories table
-  member_info INT NULL,                     -- Pointer to member infomation record
-  PRIMARY KEY (id),
-  CONSTRAINT {prefix}categories_fk_1
-    FOREIGN KEY (category)
-    REFERENCES {prefix}categories (id)
-    ON DELETE CASCADE,
-  INDEX(category),
-  INDEX(member_info)
-);
-
-----
-
--- Cities
-CREATE TABLE {prefix}cities (
-  id INT NOT NULL AUTO_INCREMENT,           
-  name TINYTEXT NULL,                       -- Name of city
-  PRIMARY KEY (id)
-);
-
-----
-
--- Files - Files are stored under /wp-content/uploads/glm-member-db/files/
-CREATE TABLE {prefix}files (
-  id INT NOT NULL AUTO_INCREMENT,
-  name TINYTEXT NULL,                       -- Original name of the file - might be URL if copied via HTTP
-  status TINYINT(1) NULL,                   -- Display/Use status - See plugin.ini status table
-  file_name TINYTEXT NULL,                  -- Stored file name for the file
-  descr TEXT NULL,                          -- Description 
-  position INT NULL,                        -- Numeric position for sequence of display
-  ref_type INT NULL,                        -- Type of entity this image is associated with
-  ref_dest INT NULL,                        -- Pointer to the specific entity of ref_type this image is associated with
-  PRIMARY KEY (id),
-  INDEX(name(20)),
-  INDEX(file_name(20)),
-  INDEX(ref_type),
-  INDEX(ref_dest)
-);
-
-----
-
--- Images - Images are stored under /wp-content/uploads/glm-member-db/images/{size}/
-CREATE TABLE {prefix}images (
-  id INT NOT NULL AUTO_INCREMENT,
-  name TINYTEXT NULL,                       -- Original name of the image - might be URL if copied via HTTP
-  status TINYINT(1) NULL,                   -- Display/Use status - See plugin.ini status table
-  selected BOOLEAN NULL,                    -- A single special image in the current gallery for this entity
-  featured BOOLEAN null,                    -- Image is a member of a group of featured images
-  file_name TINYTEXT NULL,                  -- Stored file name for the image
-  descr TEXT NULL,                          -- Description 
-  caption TINYTEXT NULL,                    -- Caption for the image
-  position INT NULL,                        -- Numeric position for sequence of display
-  ref_type INT NULL,                        -- Type of entity this image is associated with
-  ref_dest INT NULL,                        -- Pointer to the specific entity of ref_type this image is associated with
-  PRIMARY KEY (id),
-  INDEX(name(20)),
-  INDEX(file_name(20)),
-  INDEX(ref_type),
-  INDEX(ref_dest)
-);
-
-----
-
--- Primary member records - One for each member
-CREATE TABLE {prefix}members (
-  id INT NOT NULL AUTO_INCREMENT,
-  access INT NULL,                          -- Access type - See access table in plugin.ini
-  member_type INT NULL,                     -- Pointer to member type in member_type table
-  created DATE NULL,                        -- Date member record was created
-  name TINYTEXT NULL,                       -- Member name
-  member_slug TINYTEXT NULL,                -- Member name slug for canonical URLs (lowercase, "-" for spaces, no punctuation)
-  notes TEXT NULL,                          -- General notes - Not displayed in front-end
-  old_member_id INT NULL,                   -- Old member ID if imported from old database
-  PRIMARY KEY (id),
-  INDEX(name(20)),
-  INDEX(member_slug(20)),
-  INDEX(created)
-);
-
-----
-
--- Member information version record - May be multiples per member - Only one with stauts "Active" for a distinct date range
-CREATE TABLE {prefix}member_info (
-  id INT NOT NULL AUTO_INCREMENT,
-  member INT NULL,                          -- Pointer to member record in table members
-  member_name TINYTEXT NULL,                -- Copy of member name from members table entry for fast reference
-  status INT NULL,                          -- Status of this member information record - See plugin.ini status table
-  reference_name TINYTEXT NULL,             -- Refernce name for this member information record - Not displayed on front-end
-  descr TEXT NULL,                          -- Description
-  short_descr TEXT NULL,                    -- Short description
-  addr1 TINYTEXT NULL,                      -- Main member location address line 1
-  addr2 TINYTEXT NULL,                      -- Address line 2
-  city INT NULL,                            -- Pointer to City in cities table
-  state TINYTEXT NULL,                      -- Two character state code - matches states.ini entries
-  country TINYTEXT NULL,                    -- Two character country code - matches countries.ini entries
-  zip TINYTEXT NULL,                        -- ZIP/Postal code
-  lat FLOAT NULL,                           -- Latitude of member's location
-  lon FLOAT NULL,                           -- Longitude of member's location
-  region INT NULL,                          -- Pointer to entry in regions table
-  phone TINYTEXT NULL,                      -- Primary phone number
-  toll_free TINYTEXT NULL,                  -- Toll Free phone number
-  url TINYTEXT NULL,                        -- URL with information about this member
-  email TINYTEXT NULL,                      -- Main E-Mail address for this member
-  logo TINYTEXT NULL,                       -- Member logo
-  cc_type INT NULL,                         -- Bitmap of credit card types accepted - See credit_card array in plugin.ini
-  notes TEXT NULL,                          -- General notes - Not displayed in front-end
-  create_time TIMESTAMP NULL,               -- Create date/time
-  modify_time TIMESTAMP NULL,               -- Last update date/time
-  PRIMARY KEY (id),
-  INDEX(status),
-  INDEX(city),
-  INDEX(zip(10)),
-  INDEX(lat),
-  INDEX(lon),
-  INDEX(region)
-);
-
-----
-
--- Member type - Can be used to assign members to different "classes" of membership (i.e. Full, Associate, Premium)
--- Mostly for internal use by the member organization, but could be displayed - Consider a short_description if they are. 
-CREATE TABLE {prefix}member_type (
-  id INT NOT NULL AUTO_INCREMENT,
-  name TINYTEXT NULL,                       -- Name of member type
-  descr TINYTEXT NULL,                      -- Description of member type
-  PRIMARY KEY (id)
-);
-
-----
-
--- Regions - Used to segment members into various geographical regions - can be cities, counties, or other logical regions
-CREATE TABLE {prefix}regions (
-  id INT NOT NULL AUTO_INCREMENT,
-  name TINYTEXT NULL,                       -- Name of region
-  descr TEXT NULL,                          -- Descrption of region
-  short_descr TINYTEXT NULL,                -- Short descroption of region
-  PRIMARY KEY (id)
-);
-
-----
-
--- General settings available on Management page in admin - Only 1 entry in this table
--- Items in this table should be all self-explanatory
-CREATE TABLE {prefix}settings_general (
-  id INT NOT NULL AUTO_INCREMENT,
-  admin_debug BOOLEAN DEFAULT '0',
-  admin_debug_verbose BOOLEAN DEFAULT '0',
-  front_debug BOOLEAN DEFAULT '0',
-  front_debug_verbose BOOLEAN DEFAULT '0',
-  google_maps_api_key TINYTEXT DEFAULT '',
-  maps_default_lat FLOAT DEFAULT '45.3749',
-  maps_default_lon FLOAT DEFAULT '-84.9592',
-  maps_default_zoom INTEGER DEFAULT '10',
-  time_zone TINYTEXT DEFAULT NULL,
-  canonical_member_page TINYTEXT DEFAULT NULL,
-  list_show_map BOOLEAN DEFAULT '1',
-  list_show_list BOOLEAN DEFAULT '1',
-  list_show_search BOOLEAN DEFAULT '1',
-  list_show_search_text BOOLEAN DEFAULT '1',
-  list_show_search_category BOOLEAN DEFAULT '1',
-  list_show_search_amenities BOOLEAN DEFAULT '1',
-  list_show_search_alpha BOOLEAN DEFAULT '1',
-  list_show_detail_link BOOLEAN DEFAULT '1',
-  list_show_logo BOOLEAN DEFAULT '1',
-  list_logo_size TINYTEXT NULL,
-  list_show_address BOOLEAN DEFAULT '1',
-  list_show_street BOOLEAN DEFAULT '1',
-  list_show_citystatezip BOOLEAN DEFAULT '1',
-  list_show_country BOOLEAN DEFAULT '1',
-  list_show_region BOOLEAN DEFAULT '1',
-  list_show_descr BOOLEAN DEFAULT '0',
-  list_show_short_descr BOOLEAN DEFAULT '1',
-  list_show_phone BOOLEAN DEFAULT '1',
-  list_show_tollfree BOOLEAN DEFAULT '1',
-  list_show_url BOOLEAN DEFAULT '1',
-  list_show_url_newtarget BOOLEAN DEFAULT '1',
-  list_show_email BOOLEAN DEFAULT '1',
-  list_show_categories BOOLEAN DEFAULT '0',
-  list_show_creditcards BOOLEAN DEFAULT '0',
-  list_show_amenities BOOLEAN DEFAULT '0',
-  list_map_show_detaillink BOOLEAN DEFAULT '1',
-  list_map_show_logo BOOLEAN DEFAULT '0',
-  list_map_logo_size TINYTEXT NULL,
-  list_map_show_descr BOOLEAN DEFAULT '0',
-  list_map_show_short_descr BOOLEAN DEFAULT '1',
-  list_map_show_address BOOLEAN DEFAULT '1',
-  list_map_show_street BOOLEAN DEFAULT '1',
-  list_map_show_citystatezip BOOLEAN DEFAULT '1',
-  list_map_show_country BOOLEAN DEFAULT '1',
-  list_map_show_region BOOLEAN DEFAULT '1',
-  list_map_show_phone BOOLEAN DEFAULT '1',
-  list_map_show_tollfree BOOLEAN DEFAULT '1',
-  list_map_show_url BOOLEAN DEFAULT '1',
-  list_map_show_url_newtarget BOOLEAN DEFAULT '1',
-  list_map_show_email BOOLEAN DEFAULT '1',
-  list_map_show_categories BOOLEAN DEFAULT '0',
-  list_map_show_creditcards BOOLEAN DEFAULT '0',
-  list_map_show_amenities BOOLEAN DEFAULT '0',
-  detail_show_map BOOLEAN DEFAULT '1',
-  detail_show_directions BOOLEAN DEFAULT '1',
-  detail_show_logo BOOLEAN DEFAULT '1',
-  detail_logo_size TINYTEXT NULL,
-  detail_show_descr BOOLEAN DEFAULT '1',
-  detail_show_short_descr BOOLEAN DEFAULT '0',
-  detail_show_address BOOLEAN DEFAULT '1',
-  detail_show_street BOOLEAN DEFAULT '1',
-  detail_show_citystatezip BOOLEAN DEFAULT '1',
-  detail_show_country BOOLEAN DEFAULT '1',
-  detail_show_region BOOLEAN DEFAULT '1',
-  detail_show_phone BOOLEAN DEFAULT '1',
-  detail_show_tollfree BOOLEAN DEFAULT '1',
-  detail_show_url BOOLEAN DEFAULT '1',
-  detail_show_url_newtarget BOOLEAN DEFAULT '1',
-  detail_show_email BOOLEAN DEFAULT '1',
-  detail_show_categories BOOLEAN DEFAULT '0',
-  detail_show_creditcards BOOLEAN DEFAULT '0',
-  detail_show_amenities BOOLEAN DEFAULT '1',
-  detail_show_imagegallery BOOLEAN DEFAULT '1',
-  detail_show_coupons BOOLEAN DEFAULT '0',
-  detail_show_packages BOOLEAN DEFAULT '0',
-  detail_map_show_logo BOOLEAN DEFAULT '0',
-  detail_map_logo_size TINYTEXT NULL,
-  detail_map_show_descr BOOLEAN DEFAULT '0',
-  detail_map_show_short_descr BOOLEAN DEFAULT '1',
-  detail_map_show_address BOOLEAN DEFAULT '1',
-  detail_map_show_street BOOLEAN DEFAULT '1',
-  detail_map_show_citystatezip BOOLEAN DEFAULT '1',
-  detail_map_show_country BOOLEAN DEFAULT '1',
-  detail_map_show_region BOOLEAN DEFAULT '1',
-  detail_map_show_phone BOOLEAN DEFAULT '1',
-  detail_map_show_tollfree BOOLEAN DEFAULT '1',
-  detail_map_show_url BOOLEAN DEFAULT '1',
-  detail_map_show_url_newtarget BOOLEAN DEFAULT '1',
-  detail_map_show_email BOOLEAN DEFAULT '1',
-  detail_map_show_categories BOOLEAN DEFAULT '0',
-  detail_map_show_creditcards BOOLEAN DEFAULT '0',
-  detail_map_show_amenities BOOLEAN DEFAULT '0',
-  PRIMARY KEY (id)
-);
-
-----
-
--- Set default entry
-INSERT INTO {prefix}settings_general
-    ( id, time_zone, canonical_member_page, list_logo_size, list_map_logo_size, detail_logo_size, detail_map_logo_size )
-   VALUES
-    ( 1, 'America/Detroit', 'member-detail', 'large', 'thumb', 'large', 'thumb' )
-;
-
-----
-
--- Terms used in site modifiable on Management page in admin - Only 1 entry in this table
--- Tems in this table should be all self-explanatory
-CREATE TABLE {prefix}settings_terms (
-  id INT NOT NULL AUTO_INCREMENT,
-  term_admin_menu_members TINYTEXT NULL,
-  term_admin_menu_member_list TINYTEXT NULL,
-  term_admin_menu_member TINYTEXT NULL,
-  term_admin_menu_configure TINYTEXT NULL,
-  term_admin_menu_settings TINYTEXT NULL,
-  term_admin_menu_shortcodes TINYTEXT NULL,
-  term_admin_menu_members_dashboard TINYTEXT NULL,
-  term_admin_menu_members_list TINYTEXT NULL,
-  term_admin_menu_members_reports TINYTEXT NULL,
-  term_admin_menu_member_dashboard TINYTEXT NULL,
-  term_admin_menu_member_info TINYTEXT NULL,
-  term_admin_menu_member_locations TINYTEXT NULL,
-  term_admin_menu_member_facilities TINYTEXT NULL,
-  term_admin_menu_member_attractions TINYTEXT NULL,
-  term_admin_menu_member_contacts TINYTEXT NULL,
-  term_admin_menu_configure_member_types TINYTEXT NULL,
-  term_admin_menu_configure_member_cats TINYTEXT NULL,
-  term_admin_menu_configure_accom_types TINYTEXT NULL,
-  term_admin_menu_configure_amenities TINYTEXT NULL,
-  term_admin_menu_configure_cities TINYTEXT NULL,
-  term_admin_menu_configure_regions TINYTEXT NULL,
-  term_admin_menu_settings_general TINYTEXT NULL,
-  term_admin_menu_settings_terms TINYTEXT NULL,
-  term_admin_menu_settings_development TINYTEXT NULL,
-  term_member TINYTEXT NULL,
-  term_member_cap TINYTEXT NULL,
-  term_member_plur TINYTEXT NULL,
-  term_member_plur_cap TINYTEXT NULL,
-  term_location TINYTEXT NULL,
-  term_location_cap TINYTEXT NULL,
-  term_location_plur TINYTEXT NULL,
-  term_location_plur_cap TINYTEXT NULL,
-  term_facility TINYTEXT NULL,
-  term_facility_cap TINYTEXT NULL,
-  term_facility_plur TINYTEXT NULL,
-  term_facility_plur_cap TINYTEXT NULL,
-  term_attraction TINYTEXT NULL,
-  term_attraction_cap TINYTEXT NULL,
-  term_attraction_plur TINYTEXT NULL,
-  term_attraction_plur_cap TINYTEXT NULL,
-  term_contact TINYTEXT NULL,
-  term_contact_cap TINYTEXT NULL,
-  term_contact_plur TINYTEXT NULL,
-  term_contact_plur_cap TINYTEXT NULL,
-  PRIMARY KEY (id)
-);
-
-----
-
--- Default terms entry
-INSERT INTO {prefix}settings_terms
-    (
-    id,
-    term_admin_menu_members,                        
-    term_admin_menu_member_list,                    
-    term_admin_menu_member,                     
-    term_admin_menu_configure,                      
-    term_admin_menu_settings,                       
-    term_admin_menu_shortcodes,                     
-    term_admin_menu_members_dashboard,         
-    term_admin_menu_members_list,                   
-    term_admin_menu_members_reports,                
-    term_admin_menu_member_dashboard,
-    term_admin_menu_member_info,
-    term_admin_menu_member_locations,               
-    term_admin_menu_member_facilities,              
-    term_admin_menu_member_attractions,             
-    term_admin_menu_member_contacts,                
-    term_admin_menu_configure_member_types,         
-    term_admin_menu_configure_member_cats,          
-    term_admin_menu_configure_accom_types,          
-    term_admin_menu_configure_amenities,     
-    term_admin_menu_configure_cities,               
-    term_admin_menu_configure_regions,              
-    term_admin_menu_settings_general,               
-    term_admin_menu_settings_terms,                 
-    term_admin_menu_settings_development,           
-    term_member,                                    
-    term_member_cap,                                
-    term_member_plur,                               
-    term_member_plur_cap,                           
-    term_location,                                  
-    term_location_cap,
-    term_location_plur,                             
-    term_location_plur_cap,                         
-    term_facility,                                  
-    term_facility_cap,                              
-    term_facility_plur,                             
-    term_facility_plur_cap,                         
-    term_attraction,                                
-    term_attraction_cap,                            
-    term_attraction_plur,                           
-    term_attraction_plur_cap,                       
-    term_contact,                                   
-    term_contact_cap,                               
-    term_contact_plur,                              
-    term_contact_plur_cap                           
-    )
-   VALUES
-    (
-    1,
-    'Members',            
-    'Member',             
-    'Member',         
-    'Configure',          
-    'Management',           
-    'Shortcodes',         
-    'Dashboard',          
-    'Member List',        
-    'Reports',            
-    'Member Dashboard',
-    'Member Info',        
-    'Locations',          
-    'Facilities',         
-    'Attractions',        
-    'Contacts',           
-    'Member Types',       
-    'Member Categories',  
-    'Accommodation Types',
-    'Amenities',          
-    'Cities',             
-    'Regions',            
-    'General Settings',   
-    'Terms & Phrases',    
-    'Development',        
-    'member',             
-    'Member',             
-    'members',            
-    'Members',            
-    'location',           
-    'Location',           
-    'locations',          
-    'Locations',          
-    'facility',           
-    'Facility',           
-    'facilities',         
-    'Facilities',         
-    'attraction',         
-    'Attraction',         
-    'attractions',        
-    'Attractions',        
-    'contact',            
-    'Contact',            
-    'contacts',           
-    'Contacts'
-    )
-;
-
-----
-
--- Theme Settings - Only 1 entry in this table
-CREATE TABLE {prefix}settings_theme (
-    id INT NOT NULL AUTO_INCREMENT,
-    PRIMARY KEY (id)
-);
-
-----
-
--- Default Theme Settings entry
-INSERT INTO {prefix}settings_theme
-    (
-    id                           
-    )
-   VALUES
-    (
-    1
-    )
-;
-
diff --git a/setup/databaseScripts/create_database_V1.1.5.sql b/setup/databaseScripts/create_database_V1.1.5.sql
new file mode 100644 (file)
index 0000000..5d0496a
--- /dev/null
@@ -0,0 +1,481 @@
+-- Gaslight Media Members Database 
+-- File Created: 12/09/14 15:27:15
+-- Database Version: 1.1.5
+-- Database Creation Script
+-- 
+-- To permit each query below to be executed separately,
+-- all queries must be separated by a line with four dashes
+-- 
+-- **** BE SURE TO ALSO UPDATE drop_database_Vxxx.sql FILE WHEN CHANGING TABLES ****
+-- 
+
+-- Amenities
+CREATE TABLE {prefix}amenities (
+  id INT NOT NULL AUTO_INCREMENT,
+  active TINYINT(1) NULL,                   -- Amenity is active flag
+  name TINYTEXT NULL,                       -- Name of amenity
+  descr TEXT NULL,                          -- Description of amenity
+  short_descr TINYTEXT NULL,                -- Short description of amenity
+  ref_type INT NULL,                        -- Type of entity these amenitites are associated with - see plugin.ini ref_type tables
+  uses_value BOOLEAN NULL,                  -- Flag indicating whether the amenity requires a quantity number
+  PRIMARY KEY (id),
+  INDEX(name(20))
+);
+
+----
+
+-- Amenity Reference - Links a specific amenity to a specific entity of type ref_type
+CREATE TABLE {prefix}amenity_ref (
+  id INT NOT NULL AUTO_INCREMENT,
+  amenity INT NULL,                         -- Pointer to amenity in amenities table
+  ref_type INT NULL,                        -- Copy of ref_type from matching ameities table entry - to simplify searches
+  ref_dest INT NULL,                        -- Pointer to the specific entity of type ref_type
+  amenity_value TINYTEXT NULL,              -- Quanity if amenity uses values
+  PRIMARY KEY (id),
+  INDEX(ref_type),
+  INDEX(ref_dest)
+);
+
+----
+
+-- Member Cateogries - used with member information records
+CREATE TABLE {prefix}categories (
+  id INT NOT NULL AUTO_INCREMENT,
+  name TINYTEXT NULL,                       -- Name of this category
+  descr TEXT NULL,                          -- Description of this category
+  short_descr TINYTEXT NULL,                -- Short description of this category 
+  parent INT NULL,                          -- Pointer to parent category in this table - if there is one
+  PRIMARY KEY (id)
+);
+
+----
+
+-- Mapping of categories to speific member information records
+CREATE TABLE {prefix}category_member_info (
+  id INT NOT NULL AUTO_INCREMENT,
+  category INT NULL,                        -- Pointer to category in categories table
+  member_info INT NULL,                     -- Pointer to member infomation record
+  PRIMARY KEY (id),
+  CONSTRAINT {prefix}categories_fk_1
+    FOREIGN KEY (category)
+    REFERENCES {prefix}categories (id)
+    ON DELETE CASCADE,
+  INDEX(category),
+  INDEX(member_info)
+);
+
+----
+
+-- Cities
+CREATE TABLE {prefix}cities (
+  id INT NOT NULL AUTO_INCREMENT,           
+  name TINYTEXT NULL,                       -- Name of city
+  PRIMARY KEY (id)
+);
+
+----
+
+-- Files - Files are stored under /wp-content/uploads/glm-member-db/files/
+CREATE TABLE {prefix}files (
+  id INT NOT NULL AUTO_INCREMENT,
+  name TINYTEXT NULL,                       -- Original name of the file - might be URL if copied via HTTP
+  status TINYINT(1) NULL,                   -- Display/Use status - See plugin.ini status table
+  file_name TINYTEXT NULL,                  -- Stored file name for the file
+  descr TEXT NULL,                          -- Description 
+  position INT NULL,                        -- Numeric position for sequence of display
+  ref_type INT NULL,                        -- Type of entity this image is associated with
+  ref_dest INT NULL,                        -- Pointer to the specific entity of ref_type this image is associated with
+  PRIMARY KEY (id),
+  INDEX(name(20)),
+  INDEX(file_name(20)),
+  INDEX(ref_type),
+  INDEX(ref_dest)
+);
+
+----
+
+-- Images - Images are stored under /wp-content/uploads/glm-member-db/images/{size}/
+CREATE TABLE {prefix}images (
+  id INT NOT NULL AUTO_INCREMENT,
+  name TINYTEXT NULL,                       -- Original name of the image - might be URL if copied via HTTP
+  status TINYINT(1) NULL,                   -- Display/Use status - See plugin.ini status table
+  selected BOOLEAN NULL,                    -- A single special image in the current gallery for this entity
+  featured BOOLEAN null,                    -- Image is a member of a group of featured images
+  file_name TINYTEXT NULL,                  -- Stored file name for the image
+  descr TEXT NULL,                          -- Description 
+  caption TINYTEXT NULL,                    -- Caption for the image
+  position INT NULL,                        -- Numeric position for sequence of display
+  ref_type INT NULL,                        -- Type of entity this image is associated with
+  ref_dest INT NULL,                        -- Pointer to the specific entity of ref_type this image is associated with
+  PRIMARY KEY (id),
+  INDEX(name(20)),
+  INDEX(file_name(20)),
+  INDEX(ref_type),
+  INDEX(ref_dest)
+);
+
+----
+
+-- Primary member records - One for each member
+CREATE TABLE {prefix}members (
+  id INT NOT NULL AUTO_INCREMENT,
+  access INT NULL,                          -- Access type - See access table in plugin.ini
+  member_type INT NULL,                     -- Pointer to member type in member_type table
+  created DATE NULL,                        -- Date member record was created
+  name TINYTEXT NULL,                       -- Member name
+  member_slug TINYTEXT NULL,                -- Member name slug for canonical URLs (lowercase, "-" for spaces, no punctuation)
+  notes TEXT NULL,                          -- General notes - Not displayed in front-end
+  old_member_id INT NULL,                   -- Old member ID if imported from old database
+  PRIMARY KEY (id),
+  INDEX(name(20)),
+  INDEX(member_slug(20)),
+  INDEX(created)
+);
+
+----
+
+-- Member information version record - May be multiples per member - Only one with stauts "Active" for a distinct date range
+CREATE TABLE {prefix}member_info (
+  id INT NOT NULL AUTO_INCREMENT,
+  member INT NULL,                          -- Pointer to member record in table members
+  member_name TINYTEXT NULL,                -- Copy of member name from members table entry for fast reference
+  status INT NULL,                          -- Status of this member information record - See plugin.ini status table
+  reference_name TINYTEXT NULL,             -- Refernce name for this member information record - Not displayed on front-end
+  descr TEXT NULL,                          -- Description
+  short_descr TEXT NULL,                    -- Short description
+  addr1 TINYTEXT NULL,                      -- Main member location address line 1
+  addr2 TINYTEXT NULL,                      -- Address line 2
+  city INT NULL,                            -- Pointer to City in cities table
+  state TINYTEXT NULL,                      -- Two character state code - matches states.ini entries
+  country TINYTEXT NULL,                    -- Two character country code - matches countries.ini entries
+  zip TINYTEXT NULL,                        -- ZIP/Postal code
+  lat FLOAT NULL,                           -- Latitude of member's location
+  lon FLOAT NULL,                           -- Longitude of member's location
+  region INT NULL,                          -- Pointer to entry in regions table
+  phone TINYTEXT NULL,                      -- Primary phone number
+  toll_free TINYTEXT NULL,                  -- Toll Free phone number
+  url TINYTEXT NULL,                        -- URL with information about this member
+  email TINYTEXT NULL,                      -- Main E-Mail address for this member
+  logo TINYTEXT NULL,                       -- Member logo
+  cc_type INT NULL,                         -- Bitmap of credit card types accepted - See credit_card array in plugin.ini
+  notes TEXT NULL,                          -- General notes - Not displayed in front-end
+  create_time TIMESTAMP NULL,               -- Create date/time
+  modify_time TIMESTAMP NULL,               -- Last update date/time
+  PRIMARY KEY (id),
+  INDEX(status),
+  INDEX(city),
+  INDEX(zip(10)),
+  INDEX(lat),
+  INDEX(lon),
+  INDEX(region)
+);
+
+----
+
+-- Member type - Can be used to assign members to different "classes" of membership (i.e. Full, Associate, Premium)
+-- Mostly for internal use by the member organization, but could be displayed - Consider a short_description if they are. 
+CREATE TABLE {prefix}member_type (
+  id INT NOT NULL AUTO_INCREMENT,
+  name TINYTEXT NULL,                       -- Name of member type
+  descr TINYTEXT NULL,                      -- Description of member type
+  PRIMARY KEY (id)
+);
+
+----
+
+-- Regions - Used to segment members into various geographical regions - can be cities, counties, or other logical regions
+CREATE TABLE {prefix}regions (
+  id INT NOT NULL AUTO_INCREMENT,
+  name TINYTEXT NULL,                       -- Name of region
+  descr TEXT NULL,                          -- Descrption of region
+  short_descr TINYTEXT NULL,                -- Short descroption of region
+  PRIMARY KEY (id)
+);
+
+----
+
+-- General settings available on Management page in admin - Only 1 entry in this table
+-- Items in this table should be all self-explanatory
+CREATE TABLE {prefix}settings_general (
+  id INT NOT NULL AUTO_INCREMENT,
+  admin_debug BOOLEAN DEFAULT '0',
+  admin_debug_verbose BOOLEAN DEFAULT '0',
+  front_debug BOOLEAN DEFAULT '0',
+  front_debug_verbose BOOLEAN DEFAULT '0',
+  google_maps_api_key TINYTEXT DEFAULT '',
+  maps_default_lat FLOAT DEFAULT '45.3749',
+  maps_default_lon FLOAT DEFAULT '-84.9592',
+  maps_default_zoom INTEGER DEFAULT '10',
+  time_zone TINYTEXT DEFAULT NULL,
+  canonical_member_page TINYTEXT DEFAULT NULL,
+  list_show_map BOOLEAN DEFAULT '1',
+  list_show_list BOOLEAN DEFAULT '1',
+  list_show_search_filters_opened BOOLEAN DEFAULT '1',
+  list_show_search BOOLEAN DEFAULT '1',
+  list_show_search_text BOOLEAN DEFAULT '1',
+  list_show_search_category BOOLEAN DEFAULT '1',
+  list_show_search_amenities BOOLEAN DEFAULT '1',
+  list_show_search_alpha BOOLEAN DEFAULT '1',
+  list_show_detail_link BOOLEAN DEFAULT '1',
+  list_show_logo BOOLEAN DEFAULT '1',
+  list_logo_size TINYTEXT NULL,
+  list_show_address BOOLEAN DEFAULT '1',
+  list_show_street BOOLEAN DEFAULT '1',
+  list_show_citystatezip BOOLEAN DEFAULT '1',
+  list_show_country BOOLEAN DEFAULT '1',
+  list_show_region BOOLEAN DEFAULT '1',
+  list_show_descr BOOLEAN DEFAULT '0',
+  list_show_short_descr BOOLEAN DEFAULT '1',
+  list_show_phone BOOLEAN DEFAULT '1',
+  list_show_tollfree BOOLEAN DEFAULT '1',
+  list_show_url BOOLEAN DEFAULT '1',
+  list_show_url_newtarget BOOLEAN DEFAULT '1',
+  list_show_email BOOLEAN DEFAULT '1',
+  list_show_categories BOOLEAN DEFAULT '0',
+  list_show_creditcards BOOLEAN DEFAULT '0',
+  list_show_amenities BOOLEAN DEFAULT '0',
+  list_map_show_opened BOOLEAN DEFAULT '1',
+  list_map_show_detaillink BOOLEAN DEFAULT '1',
+  list_map_show_logo BOOLEAN DEFAULT '0',
+  list_map_logo_size TINYTEXT NULL,
+  list_map_show_descr BOOLEAN DEFAULT '0',
+  list_map_show_short_descr BOOLEAN DEFAULT '1',
+  list_map_show_address BOOLEAN DEFAULT '1',
+  list_map_show_street BOOLEAN DEFAULT '1',
+  list_map_show_citystatezip BOOLEAN DEFAULT '1',
+  list_map_show_country BOOLEAN DEFAULT '1',
+  list_map_show_region BOOLEAN DEFAULT '1',
+  list_map_show_phone BOOLEAN DEFAULT '1',
+  list_map_show_tollfree BOOLEAN DEFAULT '1',
+  list_map_show_url BOOLEAN DEFAULT '1',
+  list_map_show_url_newtarget BOOLEAN DEFAULT '1',
+  list_map_show_email BOOLEAN DEFAULT '1',
+  list_map_show_categories BOOLEAN DEFAULT '0',
+  list_map_show_creditcards BOOLEAN DEFAULT '0',
+  list_map_show_amenities BOOLEAN DEFAULT '0',
+  detail_show_map BOOLEAN DEFAULT '1',
+  detail_show_directions BOOLEAN DEFAULT '1',
+  detail_show_logo BOOLEAN DEFAULT '1',
+  detail_logo_size TINYTEXT NULL,
+  detail_show_descr BOOLEAN DEFAULT '1',
+  detail_show_short_descr BOOLEAN DEFAULT '0',
+  detail_show_address BOOLEAN DEFAULT '1',
+  detail_show_street BOOLEAN DEFAULT '1',
+  detail_show_citystatezip BOOLEAN DEFAULT '1',
+  detail_show_country BOOLEAN DEFAULT '1',
+  detail_show_region BOOLEAN DEFAULT '1',
+  detail_show_phone BOOLEAN DEFAULT '1',
+  detail_show_tollfree BOOLEAN DEFAULT '1',
+  detail_show_url BOOLEAN DEFAULT '1',
+  detail_show_url_newtarget BOOLEAN DEFAULT '1',
+  detail_show_email BOOLEAN DEFAULT '1',
+  detail_show_categories BOOLEAN DEFAULT '0',
+  detail_show_creditcards BOOLEAN DEFAULT '0',
+  detail_show_amenities BOOLEAN DEFAULT '1',
+  detail_show_imagegallery BOOLEAN DEFAULT '1',
+  detail_show_coupons BOOLEAN DEFAULT '0',
+  detail_show_packages BOOLEAN DEFAULT '0',
+  detail_map_show_logo BOOLEAN DEFAULT '0',
+  detail_map_logo_size TINYTEXT NULL,
+  detail_map_show_descr BOOLEAN DEFAULT '0',
+  detail_map_show_short_descr BOOLEAN DEFAULT '1',
+  detail_map_show_address BOOLEAN DEFAULT '1',
+  detail_map_show_street BOOLEAN DEFAULT '1',
+  detail_map_show_citystatezip BOOLEAN DEFAULT '1',
+  detail_map_show_country BOOLEAN DEFAULT '1',
+  detail_map_show_region BOOLEAN DEFAULT '1',
+  detail_map_show_phone BOOLEAN DEFAULT '1',
+  detail_map_show_tollfree BOOLEAN DEFAULT '1',
+  detail_map_show_url BOOLEAN DEFAULT '1',
+  detail_map_show_url_newtarget BOOLEAN DEFAULT '1',
+  detail_map_show_email BOOLEAN DEFAULT '1',
+  detail_map_show_categories BOOLEAN DEFAULT '0',
+  detail_map_show_creditcards BOOLEAN DEFAULT '0',
+  detail_map_show_amenities BOOLEAN DEFAULT '0',
+  PRIMARY KEY (id)
+);
+
+----
+
+-- Set default entry
+INSERT INTO {prefix}settings_general
+    ( id, time_zone, canonical_member_page, list_logo_size, list_map_logo_size, detail_logo_size, detail_map_logo_size )
+   VALUES
+    ( 1, 'America/Detroit', 'member-detail', 'large', 'thumb', 'large', 'thumb' )
+;
+
+----
+
+-- Terms used in site modifiable on Management page in admin - Only 1 entry in this table
+-- Tems in this table should be all self-explanatory
+CREATE TABLE {prefix}settings_terms (
+  id INT NOT NULL AUTO_INCREMENT,
+  term_admin_menu_members TINYTEXT NULL,
+  term_admin_menu_member_list TINYTEXT NULL,
+  term_admin_menu_member TINYTEXT NULL,
+  term_admin_menu_configure TINYTEXT NULL,
+  term_admin_menu_settings TINYTEXT NULL,
+  term_admin_menu_shortcodes TINYTEXT NULL,
+  term_admin_menu_members_dashboard TINYTEXT NULL,
+  term_admin_menu_members_list TINYTEXT NULL,
+  term_admin_menu_members_reports TINYTEXT NULL,
+  term_admin_menu_member_dashboard TINYTEXT NULL,
+  term_admin_menu_member_info TINYTEXT NULL,
+  term_admin_menu_member_locations TINYTEXT NULL,
+  term_admin_menu_member_facilities TINYTEXT NULL,
+  term_admin_menu_member_attractions TINYTEXT NULL,
+  term_admin_menu_member_contacts TINYTEXT NULL,
+  term_admin_menu_configure_member_types TINYTEXT NULL,
+  term_admin_menu_configure_member_cats TINYTEXT NULL,
+  term_admin_menu_configure_accom_types TINYTEXT NULL,
+  term_admin_menu_configure_amenities TINYTEXT NULL,
+  term_admin_menu_configure_cities TINYTEXT NULL,
+  term_admin_menu_configure_regions TINYTEXT NULL,
+  term_admin_menu_settings_general TINYTEXT NULL,
+  term_admin_menu_settings_terms TINYTEXT NULL,
+  term_admin_menu_settings_development TINYTEXT NULL,
+  term_member TINYTEXT NULL,
+  term_member_cap TINYTEXT NULL,
+  term_member_plur TINYTEXT NULL,
+  term_member_plur_cap TINYTEXT NULL,
+  term_location TINYTEXT NULL,
+  term_location_cap TINYTEXT NULL,
+  term_location_plur TINYTEXT NULL,
+  term_location_plur_cap TINYTEXT NULL,
+  term_facility TINYTEXT NULL,
+  term_facility_cap TINYTEXT NULL,
+  term_facility_plur TINYTEXT NULL,
+  term_facility_plur_cap TINYTEXT NULL,
+  term_attraction TINYTEXT NULL,
+  term_attraction_cap TINYTEXT NULL,
+  term_attraction_plur TINYTEXT NULL,
+  term_attraction_plur_cap TINYTEXT NULL,
+  term_contact TINYTEXT NULL,
+  term_contact_cap TINYTEXT NULL,
+  term_contact_plur TINYTEXT NULL,
+  term_contact_plur_cap TINYTEXT NULL,
+  PRIMARY KEY (id)
+);
+
+----
+
+-- Default terms entry
+INSERT INTO {prefix}settings_terms
+    (
+    id,
+    term_admin_menu_members,                        
+    term_admin_menu_member_list,                    
+    term_admin_menu_member,                     
+    term_admin_menu_configure,                      
+    term_admin_menu_settings,                       
+    term_admin_menu_shortcodes,                     
+    term_admin_menu_members_dashboard,         
+    term_admin_menu_members_list,                   
+    term_admin_menu_members_reports,                
+    term_admin_menu_member_dashboard,
+    term_admin_menu_member_info,
+    term_admin_menu_member_locations,               
+    term_admin_menu_member_facilities,              
+    term_admin_menu_member_attractions,             
+    term_admin_menu_member_contacts,                
+    term_admin_menu_configure_member_types,         
+    term_admin_menu_configure_member_cats,          
+    term_admin_menu_configure_accom_types,          
+    term_admin_menu_configure_amenities,     
+    term_admin_menu_configure_cities,               
+    term_admin_menu_configure_regions,              
+    term_admin_menu_settings_general,               
+    term_admin_menu_settings_terms,                 
+    term_admin_menu_settings_development,           
+    term_member,                                    
+    term_member_cap,                                
+    term_member_plur,                               
+    term_member_plur_cap,                           
+    term_location,                                  
+    term_location_cap,
+    term_location_plur,                             
+    term_location_plur_cap,                         
+    term_facility,                                  
+    term_facility_cap,                              
+    term_facility_plur,                             
+    term_facility_plur_cap,                         
+    term_attraction,                                
+    term_attraction_cap,                            
+    term_attraction_plur,                           
+    term_attraction_plur_cap,                       
+    term_contact,                                   
+    term_contact_cap,                               
+    term_contact_plur,                              
+    term_contact_plur_cap                           
+    )
+   VALUES
+    (
+    1,
+    'Members',            
+    'Member',             
+    'Member',         
+    'Configure',          
+    'Management',           
+    'Shortcodes',         
+    'Dashboard',          
+    'Member List',        
+    'Reports',            
+    'Member Dashboard',
+    'Member Info',        
+    'Locations',          
+    'Facilities',         
+    'Attractions',        
+    'Contacts',           
+    'Member Types',       
+    'Member Categories',  
+    'Accommodation Types',
+    'Amenities',          
+    'Cities',             
+    'Regions',            
+    'General Settings',   
+    'Terms & Phrases',    
+    'Development',        
+    'member',             
+    'Member',             
+    'members',            
+    'Members',            
+    'location',           
+    'Location',           
+    'locations',          
+    'Locations',          
+    'facility',           
+    'Facility',           
+    'facilities',         
+    'Facilities',         
+    'attraction',         
+    'Attraction',         
+    'attractions',        
+    'Attractions',        
+    'contact',            
+    'Contact',            
+    'contacts',           
+    'Contacts'
+    )
+;
+
+----
+
+-- Theme Settings - Only 1 entry in this table
+CREATE TABLE {prefix}settings_theme (
+    id INT NOT NULL AUTO_INCREMENT,
+    PRIMARY KEY (id)
+);
+
+----
+
+-- Default Theme Settings entry
+INSERT INTO {prefix}settings_theme
+    (
+    id                           
+    )
+   VALUES
+    (
+    1
+    )
+;
+
index 2337d53..c0445bb 100644 (file)
@@ -35,7 +35,8 @@ $glmMembersDbVersions = array(
     '1.1.1' => array('version' => '1.1.1', 'tables' => 13),
     '1.1.2' => array('version' => '1.1.2', 'tables' => 14, 'date' => '4/11/16'),
     '1.1.3' => array('version' => '1.1.3', 'tables' => 13, 'date' => '4/13/16'),
-    '1.1.4' => array('version' => '1.1.4', 'tables' => 14, 'date' => '4/18/16')
+    '1.1.4' => array('version' => '1.1.4', 'tables' => 14, 'date' => '4/18/16'),
+    '1.1.5' => array('version' => '1.1.5', 'tables' => 14, 'date' => '5/11/16')
 );
 
 
diff --git a/setup/databaseScripts/drop_database_V1.1.4.sql b/setup/databaseScripts/drop_database_V1.1.4.sql
deleted file mode 100644 (file)
index 17b02fd..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
--- Gaslight Media Members Database 
--- File Created: 12/09/14 15:27:15
--- Database Version: 1.1.1
--- Database Deletion Script
--- Note: Tables with DELETE CASCADE must appear before referenced table
-
-DROP TABLE IF EXISTS
-    {prefix}amenities,
-    {prefix}amenity_ref,
-    {prefix}category_member_info,
-    {prefix}cities,
-    {prefix}images,
-    {prefix}files,
-    {prefix}members,
-    {prefix}member_info,
-    {prefix}member_type,
-    {prefix}regions,
-    {prefix}settings_general,
-    {prefix}settings_terms,
-    {prefix}settings_theme,
-    {prefix}categories
-;
-
diff --git a/setup/databaseScripts/drop_database_V1.1.5.sql b/setup/databaseScripts/drop_database_V1.1.5.sql
new file mode 100644 (file)
index 0000000..1001033
--- /dev/null
@@ -0,0 +1,23 @@
+-- Gaslight Media Members Database 
+-- File Created: 12/09/14 15:27:15
+-- Database Version: 1.1.5
+-- Database Deletion Script
+-- Note: Tables with DELETE CASCADE must appear before referenced table
+
+DROP TABLE IF EXISTS
+    {prefix}amenities,
+    {prefix}amenity_ref,
+    {prefix}category_member_info,
+    {prefix}cities,
+    {prefix}images,
+    {prefix}files,
+    {prefix}members,
+    {prefix}member_info,
+    {prefix}member_type,
+    {prefix}regions,
+    {prefix}settings_general,
+    {prefix}settings_terms,
+    {prefix}settings_theme,
+    {prefix}categories
+;
+
diff --git a/setup/databaseScripts/update_database_V1.1.5.sql b/setup/databaseScripts/update_database_V1.1.5.sql
new file mode 100644 (file)
index 0000000..24a2822
--- /dev/null
@@ -0,0 +1,15 @@
+-- Gaslight Media Members Database 
+-- File Created: 5/11/16 13:50:15
+-- Database Version: 1.1.5
+-- Database Update From Previous Version Script
+-- 
+-- To permit each query below to be executed separately,
+-- all queries must be separated by a line with four dashses
+
+-- Default Search Filters Display Settings entry
+ALTER TABLE {prefix}settings_general ADD COLUMN list_show_search_filters_opened BOOLEAN;
+
+----
+
+-- Default List Map Display Settings entry
+ALTER TABLE {prefix}settings_general ADD COLUMN list_map_show_opened BOOLEAN;
\ No newline at end of file
index 0cf62fe..310ed04 100644 (file)
@@ -81,6 +81,39 @@ if (!function_exists('is_in_tree')) {
         return false;
     }
 }
+
+/*
+ * This function makes it easier to get the slug of a post, which WP does not
+ * natively do.
+ */
+if (!function_exists('get_the_slug')) {
+function get_the_slug( $id=null ){
+    if( empty($id) ):
+        global $post;
+        if( empty($post) )
+            return ''; // No global $post var available.
+            $id = $post->ID;
+        endif;
+        $slug = basename( get_permalink($id) );
+        return $slug;
+    }
+}
+
+/*
+ * This function makes it easier to get a page ID using the page SLUG, which
+ * WP does not natively do.
+ */
+if (!function_exists('get_id_by_slug')) {
+    function get_id_by_slug($page_slug) {
+       $page = get_page_by_path($page_slug);
+       if ($page) {
+               return $page->ID;
+       } else {
+               return null;
+       }
+    }
+}
+
 /*
  * This function will make any page that is under the Members Only page
  *  (derived from an option) use the members only template when displaying,
index 803bf7a..a3d3c04 100644 (file)
@@ -43,7 +43,7 @@ $glmMembersRequiredPages = array(
         'name' => 'GLM Associate',
         'content' => '',
         'parent' => '0',
-        'optionSuffix' => 'glm_associate_id',
+        'underscored_name' => 'glm_associate_id',
     ),
     // These should be in GLM Members
     'Members Only' => array(
@@ -51,18 +51,18 @@ $glmMembersRequiredPages = array(
         'content' => 'This page and any child beneath it will automatically be locked to Members Only with the members-only-template.',
         'parent' => '0',
         'template' => 'glm-members-only-template.php',
-        'optionSuffix' => 'members_only_id',
+        'underscored_name' => 'members_only_id',
     ),
     'Members List' => array(
         'name' => 'Members List',
         'content' => '[glm-members-list]',
         'parent' => 'associate',
-        'optionSuffix' => 'members_list_id',
+        'underscored_name' => 'members_list_id',
     ),
     'Members Detail' => array(
         'name' => 'Members Detail',
         'content' => '[glm-member-detail]',
         'parent' => 'associate',
-        'optionSuffix' => 'member_detail_id',
+        'underscored_name' => 'member_detail_id',
     )
 );
index 9f2ede3..b7dc61f 100644 (file)
@@ -73,7 +73,9 @@ $glmMembersShortcodes = array(
             'category-name' =>          false,
             'blank-start' =>            false,
             'show' =>                   false,
+            'view' =>                   false,
             'map' =>                    'list_show_map',
+            'map-opened' =>             'list_map_show_opened',
             'map-name-link' =>          'list_map_show_detaillink',
             'map-logo' =>               'list_map_show_logo',
             'map-description' =>        'list_map_show_descr',
@@ -92,6 +94,7 @@ $glmMembersShortcodes = array(
             'map-credit-cards' =>       'list_map_show_creditcards',
             'map-amentities' =>         'list_map_show_amenities',
             'search' =>                 'list_show_search',
+            'search-filters-opened' =>  'list_show_search_filters_opened',
             'search-text' =>            'list_show_search_text',
             'search-categories' =>      'list_show_search_category',
             'search-amenities' =>       'list_show_search_amenities',
@@ -205,7 +208,7 @@ $glmMembersShortcodesDescription = '
             </p>
         </td>
     </tr>
-        <tr>
+    <tr>
         <td>&nbsp;</td>
         <th>
             show="{ content to show }"
@@ -238,6 +241,7 @@ $glmMembersShortcodesDescription = '
                     <tr><td>all</td><td>none</td></tr>
                     <tr><th colspan=3">Map Options</th></tr>
                     <tr><td>map</td><td>map-name-link</td><td>map-logo</td></tr>
+                    <tr><td>map-collapsed</td><td>map-collapsed</td><td>map-collapsed</td></tr>
                     <tr><td>map-description</td><td>map-short-description</td><td>map-address</td></tr>
                     <tr><td>map-street</td><td>map-city-state-zip</td><td>map-country</td></tr>
                     <tr><td>map-region</td><td>map-phone</td><td>map-toll-free</td></tr>
@@ -257,6 +261,23 @@ $glmMembersShortcodesDescription = '
             </p>
         </td>
     </tr>
+    <tr>
+        <td>&nbsp;</td>
+        <th>
+            view="{ view to use }"
+        </th>
+        <td>
+            <p>
+            Current options available are: bars (default), grid
+            </p>
+            <p>
+            The "view" attribute tells the page which view file to use. The "bars" value will display
+            by default, and features a succession of page-wide bars containing an image, member contact
+            info, and the short description. The "grid" value will display a three-columned series of
+            rows showing the featured image or logo, and below it simply the name and a few links.
+            </p>
+        </td>
+    </tr>
 
 <!-- glm-member-detail -->
 
index b5090be..f2dde16 100644 (file)
@@ -25,6 +25,7 @@
 // Common to both admin and front-end
 $smarty->templateAssign('glmPluginName', GLM_MEMBERS_PLUGIN_NAME );
 $smarty->templateAssign('siteBaseUrl', GLM_MEMBERS_SITE_BASE_URL);
+$smarty->templateAssign('assetsUrl', GLM_MEMBERS_PLUGIN_ASSETS_URL);
 $smarty->templateAssign('baseUrl', GLM_MEMBERS_PLUGIN_BASE_URL);
 $smarty->templateAssign('thisUrl', GLM_MEMBERS_PLUGIN_CURRENT_URL );
 $smarty->templateAssign('glmPluginMediaUrl', GLM_MEMBERS_PLUGIN_MEDIA_URL );
index 0605566..cb5a8e3 100644 (file)
@@ -12,7 +12,7 @@
             <a id="glm-settings-list" data-show-table="glm-table-list" class="glm-settings-tab nav-tab">Member List Options</a>
             <a id="glm-settings-detail" data-show-table="glm-table-detail" class="glm-settings-tab nav-tab">Member Detail Options</a>
             {if $settingsUpdated}<span class="glm-notice glm-flash-updated glm-right">Settings Updated</span>{/if}
-            {if $requiredPageUpdateError}<span class="glm-error glm-flash-updated glm-right">{$requiredPageUpdateError}</span>{/if}
+<!--            {if $requiredPageUpdateError}<span class="glm-error glm-flash-updated glm-right">{$requiredPageUpdateError}</span>{/if}-->
             {if $settingsUpdateError}<span class="glm-error glm-flash-updated glm-right">Settings Update Error</span>{/if}
         </h2>
         
                                     <input type="text" name="glm_members_database_option_{$requiredPageData.name}" value="{$requiredPageData.name}">
                                 </td>
                             </tr>
-<!--                            <tr>
+                            <tr>
                                 <th>Page ID</th>
                                 <td>
                                     <input type="text" readonly value="{$requiredPageData.id}">
                                 </td>
-                            </tr>-->
+                            </tr>
                             <tr>
                                 <th>Page Slug</th>
                                 <td>
                 <td>
                     <table class="glm-admin-table">
                         <tr><th>Show Member Name as Link to Detail:</th><td><input type="checkbox" name="list_map_show_detaillink"{if $genSettings.fieldData.list_map_show_detaillink.value} checked="checked"{/if}></td></tr>
+                        
+                        <tr><th>Map Opened by Default:</th><td><input type="checkbox" name="list_map_show_opened"{if $genSettings.fieldData.list_map_show_opened.value} checked="checked"{/if}></td></tr>
                         <tr><th>Show Logo:</th><td><input type="checkbox" name="list_map_show_logo"{if $genSettings.fieldData.list_map_show_logo.value} checked="checked"{/if}></td></tr>
                         
                         <tr>
                 <th>Search Form Options:</th>
                 <td>
                     <table class="glm-admin-table">
+                        
                         <tr><th>Text Search:</th><td><input type="checkbox" name="list_show_search_text"{if $genSettings.fieldData.list_show_search_text.value} checked="checked"{/if}></td></tr>
                         <tr><th>Category Search:</th><td><input type="checkbox" name="list_show_search_category"{if $genSettings.fieldData.list_show_search_category.value} checked="checked"{/if}></td></tr>
                         <tr><th>Amenities Search:</th><td><input type="checkbox" name="list_show_search_amenities"{if $genSettings.fieldData.list_show_search_amenities.value} checked="checked"{/if}></td></tr>
                         <tr><th>Show Alpha Index:</th><td><input type="checkbox" name="list_show_search_alpha"{if $genSettings.fieldData.list_show_search_alpha.value} checked="checked"{/if}></td></tr>
-                        
+                        <tr><th>(Grid) Filter Box Opened by Default:</th><td><input type="checkbox" name="list_show_search_filters_opened"{if $genSettings.fieldData.list_show_search_filters_opened.value} checked="checked"{/if}></td></tr>
                     </table>
                 </td>
             </tr>
index fcb69d5..12e65d1 100644 (file)
@@ -1,21 +1,18 @@
 {include file='front/members/header.html'}
-<script>
-    document.write('<a class="button glm-member-button" href="' + document.referrer + '">Take me back</a>');
-</script>
 
+<!--<a id="glm-member-detail-takeback" class="button glm-member-button" href="javascript:history.go(-1)">Old Button</a>-->
 
 {apply_filters('glm-member-db-front-members-detail-pageTop', '', $member.id)}
 
 {if $haveMember}
-MEMBER ID = {$member.id}
-        <script src="http://maps.googleapis.com/maps/api/js?sensor=true&key={$settings.google_maps_api_key}"></script>
+<!--        <script src="http://maps.googleapis.com/maps/api/js?sensor=true&key={$settings.google_maps_api_key}"></script>-->
     {if $settings.detail_show_map}
-        <div id="glm-locationMap-container" class="row">
+<!--        <div id="glm-locationMap-container" class="row">
             <div id="glm-locationMap" class="glm-map small-12 columns">(map loads here)</div>
-        </div>
+        </div>-->
     {/if}
     {if $settings.detail_show_directions}
-        <div id="glm-directionsMap-container" class="glm-hidden">
+<!--        <div id="glm-directionsMap-container" class="glm-hidden">
             <div id="glm-directionsMap" class="glm-map">(directions load here)</div>
             <div id="directions-panel"></div>
         </div>
@@ -29,7 +26,7 @@ MEMBER ID = {$member.id}
                             <option value="DRIVING">Driving</option>
                             <option value="WALKING">Walking</option>
                             <option value="BICYCLING">Bicycling</option>
-                            <!-- <option value="TRANSIT">Transit Services</option> - Doesn't seem to work -->
+                             <option value="TRANSIT">Transit Services</option> - Doesn't seem to work 
                         </select>
                     </div>  
                     <div class="small-12 medium-8 columns">
@@ -44,37 +41,46 @@ MEMBER ID = {$member.id}
                     </div>
                 </div>
             </div>
-        </div>
+        </div>-->
     {/if}
+<a id="topAnchor"></a>
     
 <!--    <h3>{$terms.term_member_cap} Detail</h3>-->
     <div class="row">
+        <script>document.write('<a id="glm-member-detail-takeback-mini" class="button glm-member-button" href="' + document.referrer + '"><span>Back to listing</span></a>');</script>
         <div id="glm-member-detail-container" class="small-12 columns glm-member-container">
-            <div>
-                <div id="glm-member-detail-info" class="small-12 medium-6 columns">
-        <!-- Member name, address, and basic information -->                    
-                    <h4 class="glm-member-title">
-                    {$member.member}
-                    </h4>
-                  {if $settings.detail_show_address}
-                      {apply_filters('glm-member-db-front-members-detail-addressTop', '', $member.id)}
-                      {if $settings.detail_show_street}
-                      {if $member.addr1}<div>{$member.addr1}</div>{/if}
-                      {if $member.addr2}<div>{$member.addr2}</div>{/if}
-                      {/if}
-                      {if $settings.detail_show_citystatezip}
-                      {if $member.city}<span>{$member.city}</span>{if $member.state.value}, {/if}{/if}<span>{if $member.state.value}{$member.state.value}</span>{/if}{if $member.zip} {$member.zip}{/if}
-                      {/if} 
-                      {if $member.country.name && $settings.detail_show_country}<div>{$member.country.name}</div>{/if}
-                      {apply_filters('glm-member-db-front-members-detail-addressBottom', '', $member.id)}
-                  {/if}        
+            <h4 class="glm-member-title">  {$member.member}</h4>
+            <div id="glm-member-detail-side-box" class="small-12 medium-4 columns">
+                {if $member.logo && $settings.detail_show_logo}
+                <div class="glm-member-detail-logo-wrapper">
+<!--                            <img class="glm-member-list-image-left" src="http://placehold.it/500x300">-->
+                        <img CLASS="glm-member-list-image-left" src="{$glmPluginMediaUrl}/images/{$settings.detail_logo_size}/{$member.logo}">
+                </div>
+                {/if}
+                <div id="glm-member-detail-website-link" class="small-12 button glm-button">{if $member.url && $settings.detail_show_url}
+                    <a href="{$member.url}"{if $settings.detail_show_url_newtarget} target="_blank"{/if}>Visit Website</a>{/if}
+                </div>
+                <div id="glm-member-detail-contact-info">
+    <!-- Member name, address, and basic information -->                    
+    
+                    {if $settings.detail_show_address}
+                        {apply_filters('glm-member-db-front-members-detail-addressTop', '', $member.id)}
+                        {if $settings.detail_show_street}
+                        {if $member.addr1}<div>{$member.addr1}</div>{/if}
+                        {if $member.addr2}<div>{$member.addr2}</div>{/if}
+                        {/if}
+                        {if $settings.detail_show_citystatezip}
+                        {if $member.city}<span>{$member.city}</span>{if $member.state.value}, {/if}{/if}<span>{if $member.state.value}{$member.state.value}</span>{/if}{if $member.zip} {$member.zip}{/if}
+                        {/if} 
+                        {if $member.country.name && $settings.detail_show_country}<div>{$member.country.name}</div>{/if}
+                        {apply_filters('glm-member-db-front-members-detail-addressBottom', '', $member.id)}
+                    {/if}        
                     {apply_filters('glm-member-db-front-members-detail-otherDetailTop', '', $member.id)}
-                    {if $member.phone && $settings.detail_show_phone}<div>Phone: {$member.phone}</div>{/if}
-                    {if $member.toll_free && $settings.detail_show_tollfree}<div><b>Toll Free:</b> {$member.toll_free}</div>{/if}
                     {if $member.region && $settings.detail_show_region}<div><b>Region:</b> {$member.region}</div>{/if}
-                    <div></div>
+                    {if $member.phone && $settings.detail_show_phone}<div class="glm-member-detail-contact-phone"><b>Phone: </b>{$member.phone}</div>{/if}
+                    {if $member.toll_free && $settings.detail_show_tollfree}<div><b>Toll Free:</b> {$member.toll_free}</div>{/if}
                     {apply_filters('glm-member-db-front-members-detail-otherDetailBottom', '', $member.id)}
-<!--                    <div id="glm-member-detail-social">
+    <!--                    <div id="glm-member-detail-social">
                         <a href="#" target="_blank"><img src="{$baseUrl}/assets/blog.png"></a>
                         <a href="http://www.blogger.com" target="_blank"><img src="{$baseUrl}/assets/blogger.png"></a>
                         <a href="http://www.facebook.com" target="_blank"><img src="{$baseUrl}/assets/facebook.png"></a>
@@ -82,79 +88,80 @@ MEMBER ID = {$member.id}
                     </div>-->
                     <div id="glm-member-detail-list-links">
                         {apply_filters('glm-member-db-front-members-detail-linksTop', '', $member.id)}
-                        {if $member.url && $settings.detail_show_url}<a href="{$member.url}"{if $settings.detail_show_url_newtarget} target="_blank"{/if}>Website</a>{/if}
                         {if $member.email && $settings.detail_show_email}<a href="mailto:{$member.email}">Email</a>{/if}
                         {if $settings.detail_show_coupons && $coupons}<a href="#glm-member-detail-coupons">Coupons</a>{/if}
                         {apply_filters('glm-member-db-front-members-detail-linksBottom', '', $member.id)}
                     </div>
                 </div>
-
-                {if $member.logo && $settings.detail_show_logo}
-                <div class="glm-member-detail-featured-image-wrapper small-12 medium-6 columns">
-<!--                            <img class="glm-member-list-image-left" src="http://placehold.it/500x300">-->
-                        <img CLASS="glm-member-list-image-left" src="{$glmPluginMediaUrl}/images/{$settings.detail_logo_size}/{$member.logo}">
+                
+                {if $settings.detail_show_map}
+                <script src="http://maps.googleapis.com/maps/api/js?sensor=true&key={$settings.google_maps_api_key}"></script>
+                <div id="glm-locationMap-container">
+                    <div id="glm-locationMap" class="glm-map small-12 columns">(map loads here)</div>
                 </div>
+                <div id="glm-member-detail-map-button" class="button map-button">view map</div>
+                
+                    <div id="member-lat" rel="{$member.lat}"></div>
+                    <div id="member-lon" rel="{$member.lon}"></div>
+                    <form id="MemberDrivingDirectionsForm" name="MemberDrivingDirectionsForm" method="post" action="">
+                        <input type="hidden" id="MemberLocation" name="MemberLocation" value="{$member.name}">
+                        <input type="hidden" id="MemberLat" name="MemberLat" value="{$member.lat}">
+                        <input type="hidden" id="MemberLon" name="MemberLon" value="{$member.lon}">
+                        <input type="submit" class="button map-button text-center" id="MemberDrivingDirectionSubmit" name="MemberDrivingDirectionSubmit" value="Directions">
+                    </form>
+                
                 {/if}
             </div>
 
             
 <!-- Attributes: amenitities, credit cards, etc -->
-            <div id="glm-member-detail-descr-row" class="row">
+            <div id="glm-member-detail-descr-row" class="small-12 medium-8 columns">
                 {apply_filters('glm-member-db-front-members-detail-attributesTop', '', $member.id)}
-                <div id="glm-member-detail-sidemenu" class="small-12 medium-3 columns" >
-                    <table class="glm-member-detail-table">
-                        {apply_filters('glm-member-db-front-members-detail-sidemenuTop', '', $member.id)}
-                        <th><b>Member Info</b></th>
-                        <tr><td id="glm-member-detail-fullprofile-button">Full profile</td></tr>
-                        <tr><td id="glm-member-detail-description-button" class="selected">Description</td></tr>
-                        {if $settings.detail_show_imagegallery && $haveImageGallery}
-                        <tr><td id="glm-member-detail-images-button">Image Gallery</td></tr>
-                        {/if}
-                        {if $member.amenities && $settings.detail_show_amenities}
-                        <tr><td id="glm-member-detail-amenities-button">Amenities & Services</td></tr>
-                        {/if}
-                        {if $member.cc_type && $settings.detail_show_creditcards}
-                        <tr><td id="glm-member-detail-creditcards-button">Accepted Credit Cards</td></tr>
-                        {/if}
-                        {if $member.categories && $settings.detail_show_categories}
-                        <tr><td id="glm-member-detail-categories-button">Categories</td></tr>
-                        {/if}
-                        {if $settings.detail_show_coupons && $coupons}
-                        <tr><td id="glm-member-detail-coupons-button">Coupons</td></tr>
-                        {/if}
-                        {apply_filters('glm-member-db-front-members-detail-sidemenuBottom', '', $member.id)}
-                    </table>
+                
+                <div class="glm-member-detail-featured-image-wrapper small-12 columns">
+                    <img src="{$glmPluginMediaUrl}/images/{$settings.detail_logo_size}/{$member.logo}">
+                </div>
+                <div id="glm-member-detail-intro-desc">
+                    {if $member.short_descr && $settings.detail_show_short_descr}{$member.short_descr|nl2br}{/if}
                 </div>
-                <div id="glm-member-detail-data" class="small-12 medium-9 columns">
-                    <div id="glm-member-detail-description-container">
-                        <div>
-                           {apply_filters('glm-member-db-front-members-detail-descriptionTop', '', $member.id)}
-                           {if $member.descr && $settings.detail_show_descr}{$member.descr|nl2br}{/if}
-                           {if $member.short_descr && $settings.detail_show_short_descr}{$member.short_descr|nl2br}{/if}
-                           {apply_filters('glm-member-db-front-members-detail-descriptionBottom', '', $member.id)}
-                       </div>
+                <div id="glm-member-detail-fullprofile-toggle">Expand All</div>
+                <div id="glm-member-detail-data-container">
+                    <div id="glm-member-detail-description-toggle" class="glm-member-detail-content-toggle">Description</div>
+                    <div id="glm-member-detail-description-container" class="glm-member-detail-content-data">
+                        {if $member.descr && $settings.detail_show_descr}
+                            {apply_filters('glm-member-db-front-members-detail-descriptionTop', '', $member.id)}
+                            {$member.descr|nl2br}
+                            {apply_filters('glm-member-db-front-members-detail-descriptionBottom', '', $member.id)}
+                        {/if}
+                        <div class="glm-member-detail-sub-data-links row">
+                            <a class="left glm-member-detail-content-toggle">Collapse</a>
+                            <a class="right link-to-top">Back to top</a>
+                        </div>
                     </div>
                     {apply_filters('glm-member-db-front-members-detail-descriptionAfter', '', $member.id)}
                     {if $settings.detail_show_imagegallery && $haveImageGallery}
-                    <div id="glm-member-detail-images-container" class="small-12">
+                    <div id="glm-member-detail-images-toggle" class="glm-member-detail-content-toggle">Photos</div>
+                    <div id="glm-member-detail-images-container" class="glm-member-detail-content-data small-12">
                         {apply_filters('glm-member-db-front-members-detail-galleryTop', '', $member.id)}
-                        <a name="glm-member-detail-images-container"></a>
-                        <h2>Photo Gallery</h2>
+<!--                        <h2>Photo Gallery</h2>-->
 
-                        <div class="small-12 columns">
-                            <ul class="clearing-thumbs small-block-grid-2 medium-block-grid-3 large-block-grid-4" data-clearing>
+                            <ul class="clearing-thumbs small-block-grid-1 medium-block-grid-2 large-block-grid-3" data-clearing>
                         {foreach $imageGallery as $i}
                                 <li><a href="{$glmPluginMediaUrl}/images/large/{$i.file_name}"><img data-caption="{$i.caption}" src="{$glmPluginMediaUrl}/images/small/{$i.file_name}"></a></li>
                         {/foreach}
                             </ul>
-                        </div>
                         {apply_filters('glm-member-db-front-members-detail-galleryBottom', '', $member.id)}
+                        <div class="glm-member-detail-sub-data-links row">
+                            <a class="left glm-member-detail-content-toggle">Collapse</a>
+                            <a class="right link-to-top">Back to top</a>
+                        </div>
                     </div>    
                     {/if}
                     {if $member.amenities && $settings.detail_show_amenities}
-                    <div id="glm-member-detail-amenities-container" class="small-12 medium-9">
+                    <div id="glm-member-detail-amenities-toggle" class="glm-member-detail-content-toggle">Amenities & Services</div>
+                    <div id="glm-member-detail-amenities-container" class="glm-member-detail-content-data small-12">
                         <table class="glm-member-detail-table">
-                            <tr><th>Amenities & Services</th></tr>
+<!--                            <tr><th>Amenities & Services</th></tr>-->
                             {foreach $member.amenities as $a}
                             <tr>
                                 <td>
@@ -163,26 +170,34 @@ MEMBER ID = {$member.id}
                             </tr>
                             {/foreach}
                         </table>
+                        <div class="glm-member-detail-sub-data-links row">
+                            <a class="left glm-member-detail-content-toggle">Collapse</a>
+                            <a class="right link-to-top">Back to top</a>
+                        </div>
                     </div>
                     {/if}
 
                     {if $member.cc_type && $settings.detail_show_creditcards}
-                    <div id="glm-member-detail-creditcards-container" class="small-12 medium-9">
-                        <p>     
-                            <table class="glm-member-detail-table">
-                            <tr><th>Credit Cards Accepted:</th></tr>
-                            {foreach $member.cc_type.names as $c}
-                                <tr><td>{$c}</td></tr>
-                    {/foreach}
-                            </table>        
-                        </p>
+                    <div id="glm-member-detail-creditcards-toggle" class="glm-member-detail-content-toggle">Credit Cards</div>
+                    <div id="glm-member-detail-creditcards-container" class="glm-member-detail-content-data small-12">
+                        <table class="glm-member-detail-table">
+<!--                            <tr><th>Credit Cards Accepted:</th></tr>-->
+                        {foreach $member.cc_type.names as $c}
+                            <tr><td>{$c}</td></tr>
+                {/foreach}
+                        </table>
+                        <div class="glm-member-detail-sub-data-links row">
+                            <a class="left glm-member-detail-content-toggle">Collapse</a>
+                            <a class="right link-to-top">Back to top</a>
+                        </div>
                     </div>
                     {/if}
                     
                     {if $member.categories && $settings.detail_show_categories}
-                    <div id="glm-member-detail-categories-container" class="small-12 medium-9">
+                    <div id="glm-member-detail-categories-toggle" class="glm-member-detail-content-toggle">Categories</div>
+                    <div id="glm-member-detail-categories-container" class="glm-member-detail-content-data small-12">
                         <table class="glm-member-detail-table">
-                            <tr><th>{$terms.term_member_cap} Categories</th></tr>
+<!--                            <tr><th>{$terms.term_member_cap} Categories</th></tr>-->
                             {foreach $member.categories as $c}
                             <tr>
                                 <td>
@@ -191,12 +206,21 @@ MEMBER ID = {$member.id}
                             </tr>
                             {/foreach}
                         </table>
+                        <div class="glm-member-detail-sub-data-links row">
+                            <a class="left glm-member-detail-content-toggle">Collapse</a>
+                            <a class="right link-to-top">Back to top</a>
+                        </div>
                     </div>
                     {/if}
 
                     {if $settings.detail_show_coupons && $coupons}
-                    <div id="glm-member-detail-coupons-container" class="small-12 medium-9">
+                    <div id="glm-member-detail-coupons-toggle" class="glm-member-detail-content-toggle">Coupons</div>
+                    <div id="glm-member-detail-coupons-container" class="glm-member-detail-content-data small-12">
                         <a name="glm-member-detail-coupons"></a>
+                        <div class="glm-member-detail-sub-data-links row">
+                            <a class="left glm-member-detail-content-toggle">Collapse</a>
+                            <a class="right link-to-top">Back to top</a>
+                        </div>
                     </div>
                     {/if}
 
@@ -215,55 +239,73 @@ MEMBER ID = {$member.id}
         {apply_filters('glm-member-db-front-members-detail-jqueryScriptTop', '', $member.id)}
         
         jQuery(document).ready(function($) {
-        
-        $("#glm-member-detail-data").children().not("#glm-member-detail-description-container").hide();
-    
-        $("#glm-member-detail-fullprofile-button").click(function() {
-            if ( $("#glm-member-detail-data").css('display') == 'none') {
-                $("#glm-member-detail-data").show().children().show();
-                $("#glm-member-detail-sidemenu table tr td").addClass("selected");
-            } else if ($("#glm-member-detail-fullprofile-button").hasClass("selected")) {
-                $("#glm-member-detail-data").hide();
-                $("#glm-member-detail-data > div").hide();
-                $("#glm-member-detail-sidemenu table tr td").removeClass("selected");
+
+        $('.link-to-top').click(function () {
+            $('body,html').animate({
+                scrollTop: $("#glm-member-detail-takeback-mini").offset().top
+            }, 75);
+        });        
+      
+        $(".glm-member-detail-content-toggle").not("#glm-member-detail-fullprofile-toggle").click(function() {
+            
+            if($(this).parents('.glm-member-detail-sub-data-links').length) {
+                var target = $(this).parent().parent().attr("id").slice(0, -10);
             } else {
-                $("#glm-member-detail-data").show().children().show();
-                $("#glm-member-detail-sidemenu table tr td").addClass("selected");
+                var target = $(this).attr("id").slice(0, -7);
             }
-        });
-        $("#glm-member-detail-sidemenu table tr td").not("#glm-member-detail-description-button").not("#glm-member-detail-fullprofile-button").on("click", function( e ) {
-            var target = $(this).attr("id").slice(0, -7);
-             if ( $("#"+target+"-container").css('display') == 'none' ){
-                $("#glm-member-detail-data").show().children().hide();
-                $("#"+target+"-container").show();
-                $("#glm-member-detail-sidemenu table tr td").removeClass("selected");
-                $(this).addClass("selected");
-             } else {
-                $("#"+target+"-container").hide(); 
-                $(this).removeClass("selected");
-                $("#glm-member-detail-fullprofile-button").removeClass("selected");                
-                $("#glm-member-detail-data").show().children().hide();
-                $("#glm-member-detail-sidemenu table tr td").removeClass("selected");
-             }
-        });
-        
-        $("#glm-member-detail-description-button" ).click(function() {
-            if ( $("#glm-member-detail-description-container").css('display') == 'none' ){
-                $("#glm-member-detail-data").show().children().hide();    
-                $("#glm-member-detail-description").show();
-                $("#glm-member-detail-description-container").show();
-                $("#glm-member-detail-sidemenu table tr td").removeClass("selected");
-                $("#glm-member-detail-description-button").addClass("selected");
+            $("#"+target+"-container").slideToggle("fast", "swing",  function() {});
+            $("#"+target+"-toggle").toggleClass("selected");
+            
+            if ($("#glm-member-detail-data-container > .glm-member-detail-content-toggle.selected").length == $("#glm-member-detail-data-container > .glm-member-detail-content-toggle").length) {
+                $("#glm-member-detail-fullprofile-toggle").addClass("selected");
             } else {
-                $("#glm-member-detail-description-container").hide();
-                $("#glm-member-detail-data").show().children().hide();
-                $("#glm-member-detail-description-button").removeClass("selected");
-                $("#glm-member-detail-fullprofile-button").removeClass("selected");
-                $("#glm-member-detail-sidemenu table tr td").removeClass("selected");
+                $("#glm-member-detail-fullprofile-toggle").removeClass("selected");
             }
         });
-       
             
+        $("#glm-member-detail-fullprofile-toggle").click(function() {
+            if ($(this).hasClass("selected")) {
+                $(".glm-member-detail-content-data").slideUp(175, "swing",  function() {});
+                $(".glm-member-detail-content-toggle").removeClass("selected");
+                $(this).toggleClass("selected");
+            } else {
+                $(".glm-member-detail-content-data").not($(this)).slideDown(350, "swing",  function() {});
+                $(".glm-member-detail-content-toggle").addClass("selected");
+                $(this).toggleClass("selected");
+            }
+        });
+
+        $("#glm-member-detail-takeback-mini").click(function() {
+            $("#glm-member-detail-takeback-mini span").html("Loading");
+            $("#glm-member-detail-takeback-mini").css('min-width','170px');
+            var count = 0;
+            setInterval(function(){
+                count++;
+                var dots = new Array(count % 5).join(' .');
+                $('#glm-member-detail-takeback-mini span').html("Loading ." + dots);
+              }, 500);
+        });
+      
+        $("#glm-member-detail-map-button").click(function() {
+            var mapC = "#glm-locationMap-container";
+            var map = "#glm-locationMap";
+            var mapNewH = 0;
+            var mapOverflow = 'hidden';
+            var mapBtnTxt = 'view map';
+            if ($(mapC).height() == 0) {
+                mapNewH = 200;
+                mapV = 'visible';
+                mapBtnTxt = 'hide map'
+            }
+            $(mapC).animate({
+                overflow: mapOverflow,
+                height: mapNewH
+            }, 200, "swing", function() {
+
+            });
+            $(this).html(mapBtnTxt);
+        });
+        
     {if $settings.detail_show_map}
             /*
              * Google Maps
@@ -328,86 +370,86 @@ MEMBER ID = {$member.id}
             
             
     {/if} {*detail_show_map*}
-    
-    {if $settings.detail_show_directions}
-    
-            var directionsDisplay;
-            var directionsService = new google.maps.DirectionsService();
-
-            // Display map with route from specified location to member location
-            function calcRoute() {
-               
-               // If an address was input, use that, otherwise use detected location if available
-               var start = $('#glm-startLocation').val();
-                if (start == '' ) {
-                       if (myLocation != false) {
-                               start = myLocation;
-                       }
-                }
-                
-                // If no start location available, tell user
-                if (start == '') {
-                       alert('No starting location. Please enter address.');
-                       return;
-                }
-
-                // Switch to directions map being visible
-                $('#glm-directionsMap-container').removeClass('glm-hidden');
-                $('#glm-locationMap-container').addClass('glm-hidden');
-                $('#glm-showLocationButton').removeClass('glm-hidden');
-                
-                // Initialize the directions map with a default center location
-                directionsDisplay = new google.maps.DirectionsRenderer();
-                var mapOptions = {
-                    zoom:7,
-                    center: memberlocation
-                }
-                directionsMap = new google.maps.Map(document.getElementById("glm-directionsMap"), mapOptions);
-                directionsDisplay.setMap(directionsMap);
-
-                // Get directions type selected
-                var directionsType = $('#directionsType').find(':selected').val();
-                
-                // Specify origin and destination then get route
-                var request = {
-                       origin: start,
-                    destination: memberlocation,
-                    travelMode: google.maps.TravelMode[directionsType]
-                };
-                directionsService.route(request, function(result, status) {
-                    if (status == google.maps.DirectionsStatus.OK) {
-                        directionsDisplay.setDirections(result);
-                        $('#directions-panel').html('');
-                        directionsDisplay.setPanel(document.getElementById('directions-panel'));
-                    }
-                });
-                
-                // Check for first map idle (completely loaded) - Check max initial zoom
-                var mapLoadedListener = google.maps.event.addListener(directionsMap, 'idle', function() {
-                    if (directionsMap.getZoom() > 16) {
-                        this.setZoom(16);
-                    }
-                    google.maps.event.removeListener(mapLoadedListener);
-                });
-
-            }
-       
-            // Trigger route map either by button or input of address
-            $('#glm-showDirectionsButton' ).click( function() {
-                calcRoute();
-            });
-            $('#glm-startLocation' ).change( function() {
-                calcRoute();
-            });
-                          
-            // Switch back to member location map
-               $('#glm-showLocationButton').click( function() {
-                $('#glm-directionsMap-container').addClass('glm-hidden');          
-                $('#glm-locationMap-container').removeClass('glm-hidden');
-                $('#glm-showLocationButton').addClass('glm-hidden');
-               });
-               
-    {/if} {*detail_show_directions*}   
+//    
+//    {if $settings.detail_show_directions}
+//    
+//            var directionsDisplay;
+//            var directionsService = new google.maps.DirectionsService();
+//
+//            // Display map with route from specified location to member location
+//            function calcRoute() {
+//             
+//             // If an address was input, use that, otherwise use detected location if available
+//             var start = $('#glm-startLocation').val();
+//                if (start == '' ) {
+//                     if (myLocation != false) {
+//                             start = myLocation;
+//                     }
+//                }
+//                
+//                // If no start location available, tell user
+//                if (start == '') {
+//                     alert('No starting location. Please enter address.');
+//                     return;
+//                }
+//
+//                // Switch to directions map being visible
+//                $('#glm-directionsMap-container').removeClass('glm-hidden');
+//                $('#glm-locationMap-container').addClass('glm-hidden');
+//                $('#glm-showLocationButton').removeClass('glm-hidden');
+//                
+//                // Initialize the directions map with a default center location
+//                directionsDisplay = new google.maps.DirectionsRenderer();
+//                var mapOptions = {
+//                    zoom:7,
+//                    center: memberlocation
+//                }
+//                directionsMap = new google.maps.Map(document.getElementById("glm-directionsMap"), mapOptions);
+//                directionsDisplay.setMap(directionsMap);
+//
+//                // Get directions type selected
+//                var directionsType = $('#directionsType').find(':selected').val();
+//                
+//                // Specify origin and destination then get route
+//                var request = {
+//                     origin: start,
+//                    destination: memberlocation,
+//                    travelMode: google.maps.TravelMode[directionsType]
+//                };
+//                directionsService.route(request, function(result, status) {
+//                    if (status == google.maps.DirectionsStatus.OK) {
+//                        directionsDisplay.setDirections(result);
+//                        $('#directions-panel').html('');
+//                        directionsDisplay.setPanel(document.getElementById('directions-panel'));
+//                    }
+//                });
+//                
+//                // Check for first map idle (completely loaded) - Check max initial zoom
+//                var mapLoadedListener = google.maps.event.addListener(directionsMap, 'idle', function() {
+//                    if (directionsMap.getZoom() > 16) {
+//                        this.setZoom(16);
+//                    }
+//                    google.maps.event.removeListener(mapLoadedListener);
+//                });
+//
+//            }
+//     
+//            // Trigger route map either by button or input of address
+//            $('#glm-showDirectionsButton' ).click( function() {
+//                calcRoute();
+//            });
+//            $('#glm-startLocation' ).change( function() {
+//                calcRoute();
+//            });
+//                        
+//            // Switch back to member location map
+//             $('#glm-showLocationButton').click( function() {
+//                $('#glm-directionsMap-container').addClass('glm-hidden');          
+//                $('#glm-locationMap-container').removeClass('glm-hidden');
+//                $('#glm-showLocationButton').addClass('glm-hidden');
+//             });
+//             
+//    {/if} {*detail_show_directions*} 
 
             {apply_filters('glm-member-db-front-members-detail-jqueryScriptBottom', '', $member.id)}
 
diff --git a/views/front/members/grid.html b/views/front/members/grid.html
new file mode 100644 (file)
index 0000000..3574086
--- /dev/null
@@ -0,0 +1,370 @@
+<div class="glm-member-db-list-grid-view 
+    {if $settings.list_show_map_opened}map-opened{else}map-closed{/if}
+    {if $settings.list_show_search_filters_opened}filters-opened{else}filters-closed{/if}
+">
+{include file='front/members/header.html'}
+
+        {apply_filters('glm-member-db-front-members-list-pageTop', '')}
+
+    {if $settings.list_show_map}        
+        <script src="http://maps.googleapis.com/maps/api/js?sensor=true&key={$settings.google_maps_api_key}"></script>
+        {apply_filters('glm-member-db-front-members-list-mapTop', '')}
+        <div id="glm-locationMap-container">
+            <div id="glm-locationMap" class="glm-map">(map loads here)</div>
+        </div>
+        {apply_filters('glm-member-db-front-members-list-mapBottom', '')}
+    {/if}
+{apply_filters('glm-member-db-front-members-list-listHeaderTop', '')}
+    <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>
+    {/if}
+    {if $settings.list_show_search}
+    <div id="glm-member-list-filters-wrapper">
+        <div id="glm-member-list-filters-button" class="button glm-button glm-member-list-filters-toggle">
+            FILTERS
+        </div>
+        <div id="glm-member-list-filters-box">
+            <div id="glm-member-list-filters-close" class="button glm-button glm-member-list-filters-toggle">Close</div> 
+            <form action="{$thisUrl}?glm_action=list" method="post" enctype="multipart/form-data">
+                <div class="small-12 columns glm-member-search glm-member-entry-container glm-member-container">
+                    {apply_filters('glm-member-db-front-members-list-searchFormTop', '')}
+                        <div>
+                            <h3>Filter {$terms.term_member_cap}s</h3>
+                        </div>
+                        {if $settings.list_show_search_category}
+                            <div>
+                                {$terms.term_member_cap} Category:
+                                <select name="categorySearch" id="categorySelect">
+                                {if !$singleCategory}
+                                    <option value="">(all)</option>
+                                {/if}
+                                {foreach from=$categories item=v}
+                                    <option value="{$v.id}"{if $v.default} selected="selected"{/if}>
+                                        {if $v.parent}&nbsp;&nbsp;&nbsp;&nbsp;{/if}{$v.name}
+                                    </option>
+                                {/foreach}
+                                    </select>
+                            </div>
+                        {/if}
+                    {if $settings.list_show_search_amenities}
+                            <div>
+                                {$terms.term_member_cap} Amenity:
+                                <select name="amenitySearch" id="amenitySelect">
+                                    <option value=""></option>
+                                    {foreach from=$amenities item=v}
+                                        <option value="{$v.id}" {if $v.default} selected="selected"{/if}>
+                                            {$v.name}
+                                        </option>
+                                    {/foreach}
+                                </select>
+                            </div>
+                    {/if}
+                    
+                    {if $settings.list_show_search_text}
+                        <div>
+                            Text Search: <input type="text" name="textSearch" value="{$textSearch}" class="glm-form-text-input">
+                        </div>
+                    {/if}
+                    <div><input class="button glm-member-button centered" type="submit" value="Search"></div>
+                    {apply_filters('glm-member-db-front-members-list-searchFormBottom', '')}
+                </div>
+            </form>
+        </div> <!-- glm-member-list-filters-box -->
+    </div> <!-- glm-member-list-wrapper -->
+    {/if} {*list_show_search*}
+    
+    <div class="glm-member-list-listing-container">
+        
+    {if $settings.list_show_list && !$blankStart}
+        <h3>List of {$terms.term_member_plur_cap}</h3>
+        {if $haveMembers}
+
+            {if $settings.list_show_search_alpha}
+                <div class="glm-alpha-links">
+                    <a href="{$thisUrl}?glm_action=list&textSearch={$textSearch}&categorySearch={$catSelected}" class="glm-alpha-link{if !$alphaSelected} glm-alpha-link-selected{/if}">All</a>
+                    {foreach $alphaList as $a}
+                        <a href="{$thisUrl}?glm_action=list&alpha={$a.alpha}&textSearch={$textSearch}&categorySearch={$catSelected}" class="glm-alpha-link{if $a.default} glm-alpha-link-selected{/if}">{$a.alpha}</a>
+                    {/foreach}
+                </div>
+            {/if}
+        {apply_filters('glm-member-db-front-members-list-listHeaderBottom', '')}
+
+        <!-- Member information displayed in list -->
+
+        <ul class="small-block-grid-1 medium-block-grid-2 large-block-grid-3">
+        {foreach $members as $m}
+            <li class="glm-member-list-record">
+                <div class="glm-member-list-image-border">
+                {apply_filters('glm-member-db-front-members-list-memberAbove', '', $m.id)}
+
+                    {if $settings.list_show_detail_link}
+                        <a class="glm-member-list-image-wrapper" href="{$siteBaseUrl}{$settings.canonical_member_page}/{$m.member_slug}/">
+                    {/if}
+                    {if $m.logo && $settings.list_show_logo}<div class=".glm-member-list-image-empty">
+                        <img class="glm-member-list-image" src="{$glmPluginMediaUrl}/images/grid/{$m.logo}">
+                        <img class="glm-member-filler-image" src="{$assetsUrl}/filler_s.gif">
+                        </div>
+                    {else}
+                        <div class="glm-member-list-image-empty">
+                            <img class="glm-member-filler-image" src="{$assetsUrl}/filler_s.gif">
+                        </div>
+                    {/if}
+                    {if $settings.list_show_detail_link}
+                        </a>
+                    {/if}   
+                </div> <!-- end of div.glm-member-list-record-border -->
+                <h4 class="glm-member-title">
+                    {if $settings.list_show_detail_link}
+                        <a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$m.member_slug}/">
+                            {$m.member}
+                        </a>
+                    {else}
+                        {$m.member}
+                    {/if}
+
+                </h4>
+
+                <div class="glm-member-list-sub-links">
+                    {if $m.url && $settings.list_show_url}<a href="{$m.url}"{if $settings.list_show_url_newtarget} target="_blank"{/if}>Website</a>{/if}
+                    {if $m.phone && $settings.list_map_show_phone}<a href="tel:+{$m.phone}">Phone</a>{/if}
+                    <a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$m.member_slug}/">More</a>
+                    {apply_filters('glm-member-db-front-members-list-memberBelow', '', $m.id)}
+                </div>
+                <!-- Member information displayed in map bubbles -->
+                <div id="map_info_{$m.id}" class="glm-hidden">
+                    {apply_filters('glm-member-db-front-members-list-mapBubbleTop', '', $m.id)}
+                    {if $m.logo && $settings.list_map_show_logo}
+                        <div class="glm-member-list-image">
+                            <img src="{$glmPluginMediaUrl}/images/{$settings.list_map_logo_size}/{$m.logo}">
+                        </div>
+                    {/if}
+                    <div class="glm-map-member-name">
+                        {if $settings.list_map_show_detaillink}
+                            <a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$m.member_slug}/">{$m.member}</a>
+                        {else}
+                            {$m.member}
+                        {/if}
+                    </div>
+                    {if $settings.list_map_show_address}
+                        <p class="glm-map-member-address">
+                            {if $settings.list_map_show_street}
+                                {if $m.addr1}{$m.addr1}<br>{/if}
+                                {if $m.addr2}{$m.addr2}<br>{/if}
+                            {/if}
+                            {if $settings.list_map_show_citystatezip}
+                                {if $m.city}{$m.city}{if $m.state.value}, {/if}{/if}{if $m.state.value}{$m.state.value}{/if}{if $m.zip} {$m.zip}{/if}
+                            {/if}
+                            {if $m.country.name && $settings.list_map_show_country}
+                                <br>{$m.country.name}
+                            {/if}
+                        </p>
+                    {/if} {*list_map_show_address*}
+                    <div class="glm-member-list-info">
+                        <p>
+                            {if $m.phone && $settings.list_map_show_phone}<b>Phone:</b> {$m.phone}<br>{/if}
+                            {if $m.toll_free && $settings.list_map_show_tollfree}<b>Toll Free:</b> {$m.toll_free}<br>{/if}
+                            {if $m.url && $settings.list_map_show_url}<b>Web site:</b> <a href="{$m.url}"{if $settings.list_map_show_url_newtarget} target="_blank"{/if}>{$m.url}</a><br>{/if}
+                            {if $m.email && $settings.list_map_show_email}<b>E-Mail Address:</b> <a href="mailto:{$m.email}">{$m.email}</a><br>{/if}
+                            {if $m.region && $settings.list_map_show_region}<b>Region:</b> {$m.region}{/if}
+                        </p>
+                        {if $m.descr && $settings.list_map_show_descr}{$m.descr|nl2br}<br>{/if}
+                        {if $m.short_descr && $settings.list_map_show_short_descr}{$m.short_descr}<br>{/if}
+                        {if $m.categories && $settings.list_map_show_categories}
+                            <div class="glm-member-list-items">
+                                <b>{$terms.term_member_cap} Categories</b>
+                                <ul>
+                                {foreach $m.categories as $c}
+                                    <li>
+                                        {if $c.parent_name}{$c.parent_name}: {/if}{$c.name}
+                                    </li>
+                                {/foreach}
+                                </ul>
+                            </div>
+                        {/if}
+                        {if $m.cc_type && $settings.list_map_show_creditcards}
+                            <div class="glm-member-list-items">
+                                <b>Credit Cards Accepted:</b>
+                                <ul>
+                                {foreach $m.cc_type.names as $c}
+                                    <li>{$c}</li>
+                                {/foreach}
+                                </ul>
+                            </div>
+                        {/if}
+                        {if $settings.list_map_show_amenities}
+                            <div class="glm-member-list-items">
+                                <b>Amenities:</b>
+                                <ul>
+                                {foreach $m.amenities as $a}
+                                    <li>{$a.name}</li>
+                                {/foreach}
+                                </ul>
+                            </div>
+                        {/if}
+                    </div>
+                    {apply_filters('glm-member-db-front-members-list-mapBubbleBottom', '', $m.id)}
+                </div> <!-- End of information displayed in map bubbles -->
+            </li> <!-- end of li.glm-member-list-record -->
+
+
+        {/foreach} {*$members*}
+        {apply_filters('glm-member-db-front-members-list-pageBottom', '')}
+    {else}
+        <div>(no {$terms.term_member_plur} listed)</div>
+    {/if}
+
+    {/if} {*list_show_list*}
+    <script type="text/javascript">
+        jQuery(document).ready(function($) {
+
+            
+        
+
+        {if $settings.list_show_search}
+            var fixmeTop = $('#glm-member-list-filters-button').offset().top;       // get initial position of the element
+            $(window).scroll(function() {                  // assign scroll event listener
+
+                var currentScroll = $(window).scrollTop(); // get current position
+
+                if (currentScroll >= fixmeTop) {           // apply position: fixed if you
+                    if ($(window).width() < 1024) {
+                        $('#glm-member-list-filters-wrapper').css({                      // scroll to that element or below it
+                            position: 'fixed',
+                            top: '5px',
+                            transform: 'translateX(0%)'
+                        });
+                    } else {
+                        $('#glm-member-list-filters-wrapper').css({                      // scroll to that element or below it
+                            position: 'fixed',
+                            top: '30px',
+                            transform: 'translateX(0%)'
+                        });
+                    }
+                } else {
+                    $('#glm-member-list-filters-wrapper').css({                      // if you scroll above it
+                        position: 'static',
+                        top: '0',
+                        transform: 'translateX(0%)'
+                    });
+                }
+
+            });
+            $(".glm-member-list-filters-toggle").click( function() {
+                $(".glm-member-db-list-grid-view").toggleClass("filters-opened");
+                $(".glm-member-db-list-grid-view").toggleClass("filters-closed");
+            });
+        {/if}
+        {if $settings.list_show_map}
+        
+            $("#glm-member-list-map-toggle").click( function() {
+                $(".glm-member-db-list-grid-view").toggleClass("map-opened");
+                $(".glm-member-db-list-grid-view").toggleClass("map-closed");
+                var currentScroll = $(window).scrollTop(); // get current position
+                var mapTop = $("#glm-locationMap-container").offset().top-10;
+                {if $settings.list_show_search}fixmeTop = $('#glm-member-list-filters-button').offset().top;{/if}
+                if (currentScroll >= mapTop) {
+                    $('body,html').animate({
+                        scrollTop: $("#glm-locationMap-container").offset().top-10
+                    }, 50);
+                } else {
+                    $('body,html').animate({
+                        scrollTop: $("#glm-locationMap-container").offset().top-10
+                    }, 400);
+                }
+            });
+                    /*
+                     * Google Maps
+                     *  API reference: https://developers.google.com/maps/documentation/javascript/reference
+                     */
+
+                    // Create a Google Map object
+                    var map = new google.maps.Map(document.getElementById('glm-locationMap'), {
+                            center: new google.maps.LatLng({$settings.maps_default_lat}, {$settings.maps_default_lon}),
+                            zoom: {$settings.maps_default_zoom},
+                        disableDefaultUI: false,
+                        mapTypeId: google.maps.MapTypeId.MAP,
+                    });
+
+                    var geocoder = new google.maps.Geocoder();
+                    var bounds = new google.maps.LatLngBounds();
+                    var infowindow = new google.maps.InfoWindow();
+
+                    // Try HTML5 to get user geolocation
+                    if(navigator.geolocation) {
+                        navigator.geolocation.getCurrentPosition(function(position) {
+                            var myLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
+                            var pinIcon = new google.maps.MarkerImage(
+                                    'https://maps.google.com/mapfiles/kml/shapes/man.png',
+                                null, /* size is determined at runtime */
+                                null, /* origin is 0,0 */
+                                null, /* anchor is bottom center of the scaled image */
+                                new google.maps.Size(30, 30)
+                            );
+                            var myMarker = new google.maps.Marker({
+                                map: map,
+                                position: myLocation,
+                                draggable: false,
+                                animation: google.maps.Animation.DROP,
+                                title: 'My Location',
+                                icon: pinIcon,
+                                zIndex: 100
+                            });
+                        });
+                    }
+
+            {if $haveMembers}
+                {foreach $members as $m}
+                  {if $m.lat != 0 && $m.lon != 0}
+
+                    // Create a marker for this member
+                    var marker = new google.maps.Marker({
+                        map: map,
+                        position: new google.maps.LatLng({$m.lat}, {$m.lon}),
+                        draggable: false,
+                        animation: google.maps.Animation.DROP,
+                        title: '{$m.member|escape}',
+                        descr: $('#map_info_' + {$m.id}).html(),
+                        memberID: {$m.id}
+                    });
+
+                    // Add a click listener for this marker
+                    marker.addListener('click', function() {
+                            infowindow.setOptions({
+                                    content: this.descr
+                            });
+                        infowindow.open(map,this);
+                    });
+
+                    // Extend the map bounds to include this marker
+                    bounds.extend(marker.position);
+
+                 {/if}
+                {/foreach}
+
+                    // Fit map to bounds of all markers
+                    map.fitBounds(bounds);
+
+                    // Check for first map idle (completely loaded) - Check max zoom
+                    var mapLoadedListener = google.maps.event.addListener(map, 'idle', function() {
+                        if (map.getZoom() > 14) {
+                            this.setZoom(14);
+                        }
+                        google.maps.event.removeListener(mapLoadedListener);
+                    });
+
+            {else}
+
+
+            {/if}
+
+
+        {/if}
+        });
+            </script>
+            </ul>
+        </div>
+    {include file='front/footer.html'}
+
+    </div>
+</div>
\ No newline at end of file
index 3f8dda1..459b617 100644 (file)
         </form>
 {/if} {*list_show_search*}
 
-        {apply_filters('glm-member-db-front-members-list-listHeaderTop', '')}
+{apply_filters('glm-member-db-front-members-list-listHeaderTop', '')}
 {if $settings.list_show_list && !$blankStart}
-        <h3>List of {$terms.term_member_plur_cap}</h3>
-  {if $haveMembers}
-
-    {if $settings.list_show_search_alpha}
-        <div class="glm-alpha-links">
-            <a href="{$thisUrl}?glm_action=list&textSearch={$textSearch}&categorySearch={$catSelected}" class="glm-alpha-link{if !$alphaSelected} glm-alpha-link-selected{/if}">All</a>
-      {foreach $alphaList as $a}
-            <a href="{$thisUrl}?glm_action=list&alpha={$a.alpha}&textSearch={$textSearch}&categorySearch={$catSelected}" class="glm-alpha-link{if $a.default} glm-alpha-link-selected{/if}">{$a.alpha}</a>
-      {/foreach}
-        </div>
-    {/if}
-        {apply_filters('glm-member-db-front-members-list-listHeaderBottom', '')}
+    <h3>List of {$terms.term_member_plur_cap}</h3>
+    {if $haveMembers}
+
+        {if $settings.list_show_search_alpha}
+            <div class="glm-alpha-links">
+                <a href="{$thisUrl}?glm_action=list&textSearch={$textSearch}&categorySearch={$catSelected}" class="glm-alpha-link{if !$alphaSelected} glm-alpha-link-selected{/if}">All</a>
+                {foreach $alphaList as $a}
+                    <a href="{$thisUrl}?glm_action=list&alpha={$a.alpha}&textSearch={$textSearch}&categorySearch={$catSelected}" class="glm-alpha-link{if $a.default} glm-alpha-link-selected{/if}">{$a.alpha}</a>
+                {/foreach}
+            </div>
+        {/if}
+    {apply_filters('glm-member-db-front-members-list-listHeaderBottom', '')}
 
     <!-- Member information displayed in list -->
 
     {foreach $members as $m}
 
-        {apply_filters('glm-member-db-front-members-list-memberAbove', '', $m.id)}
+            {apply_filters('glm-member-db-front-members-list-memberAbove', '', $m.id)}
         <div class="row">
             <div class="glm-member-list-container glm-member-container small-12 columns">
-                {apply_filters('glm-member-db-front-members-list-memberTop', '', $m.id)}
-                <div class="row">
+                    {apply_filters('glm-member-db-front-members-list-memberTop', '', $m.id)}
+                    <div class="row">
                 <!-- Member Logo - Medium and up-->
-                {if $m.logo && $settings.list_show_logo}
-                    <div class="glm-member-list-image-wrapper small-12 medium-4 columns">
-                        <div class="glm-member-list-image-border">
-                           <img class="glm-member-list-image" src="{$glmPluginMediaUrl}/images/{$settings.list_logo_size}/{$m.logo}">
+                        {if $m.logo && $settings.list_show_logo}
+                            <div class="glm-member-list-image-wrapper small-12 medium-4 columns">
+                                <div class="glm-member-list-image-border">
+                                   <img class="glm-member-list-image" src="{$glmPluginMediaUrl}/images/{$settings.list_logo_size}/{$m.logo}">
 <!--                            <img class="glm-member-list-image left" src="http://placehold.it/500x300">-->
-                        </div>
-                    </div>
+                                </div>
+                            </div>
                     <div class="glm-member-list-active-info small-12 medium-4 columns">
-                {else}
+                        {else}
                     <div class="glm-member-list-image-wrapper small-12 medium-4 columns"><br></div>
                     <div class="glm-member-list-active-info small-12 medium-4 columns">
-                {/if}
+                        {/if}
 <!-- Member name, address, and basic information -->
-                    {apply_filters('glm-member-db-front-members-list-memberInfoTop', '', $m.id)}
-                    <h4 class="glm-member-title">
-          {if $settings.list_show_detail_link}
-                        <a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$m.member_slug}/">{$m.member}</a>
-
-          {else}
-                        {$m.member}
-          {/if}
-                    </h4>
-              {if $settings.list_show_address}
-                    {apply_filters('glm-member-db-front-members-list-memberAddressTop', '', $m.id)}
-                  {if $settings.list_show_street}
-                  {if $m.addr1 && $settings.list_show_address}<div>{$m.addr1}</div>{/if}
-                  {if $m.addr2 && $settings.list_show_addr2}<div>{$m.addr2}</div>{/if}
-                  {/if}
-                  {if $settings.list_show_citystatezip}
-                  {if $m.city}<span>{$m.city}</span>{if $m.state.value}, {/if}{/if}<span>{if $m.state.value}{$m.state.value}</span>{/if}{if $m.zip} {$m.zip}{/if}
-                  {/if}
-                  {if $m.country.name && $settings.list_show_country}<div>{$m.country.name}</div>{/if}
-                  {apply_filters('glm-member-db-front-members-list-memberAddressBottom', '', $m.id)}
-              {/if}
-                    {apply_filters('glm-member-db-front-members-list-memberDetailTop', '', $m.id)}
-                    {if $m.phone && $settings.list_show_phone}<div>Phone: {$m.phone}</div>{/if}
-                    {if $m.toll_free && $settings.list_show_tollfree}<div><b>Toll Free:</b> {$m.toll_free}</div>{/if}
-                    {if $m.region && $settings.list_show_region}<div><b>Region:</b> {$m.region}</div>{/if}
-
-                    <div class="glm-member-list-links"><br>
-                        {if $m.url && $settings.list_show_url}<a href="{$m.url}"{if $settings.list_show_url_newtarget} target="_blank"{/if}>Website</a>{/if}
-                        {if $m.email && $settings.list_show_email}<a href="mailto:{$m.email}">Email</a>{/if}
+                            {apply_filters('glm-member-db-front-members-list-memberInfoTop', '', $m.id)}
+                            <h4 class="glm-member-title">
+                            {if $settings.list_show_detail_link}
+                                <a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$m.member_slug}/">{$m.member}</a>
+                            {else}
+                                {$m.member}
+                            {/if}
+                            </h4>
+                            {if $settings.list_show_address}
+                                  {apply_filters('glm-member-db-front-members-list-memberAddressTop', '', $m.id)}
+                                {if $settings.list_show_street}
+                                {if $m.addr1 && $settings.list_show_address}<div>{$m.addr1}</div>{/if}
+                                {if $m.addr2 && $settings.list_show_addr2}<div>{$m.addr2}</div>{/if}
+                                {/if}
+                                {if $settings.list_show_citystatezip}
+                                {if $m.city}<span>{$m.city}</span>{if $m.state.value}, {/if}{/if}<span>{if $m.state.value}{$m.state.value}</span>{/if}{if $m.zip} {$m.zip}{/if}
+                                {/if}
+                                {if $m.country.name && $settings.list_show_country}<div>{$m.country.name}</div>{/if}
+                                {apply_filters('glm-member-db-front-members-list-memberAddressBottom', '', $m.id)}
+                            {/if}
+                            {apply_filters('glm-member-db-front-members-list-memberDetailTop', '', $m.id)}
+                            {if $m.phone && $settings.list_show_phone}<div>Phone: {$m.phone}</div>{/if}
+                            {if $m.toll_free && $settings.list_show_tollfree}<div><b>Toll Free:</b> {$m.toll_free}</div>{/if}
+                            {if $m.region && $settings.list_show_region}<div><b>Region:</b> {$m.region}</div>{/if}
+
+                            <div class="glm-member-list-links"><br>
+                                {if $m.url && $settings.list_show_url}<a href="{$m.url}"{if $settings.list_show_url_newtarget} target="_blank"{/if}>Website</a>{/if}
+                                {if $m.email && $settings.list_show_email}<a href="mailto:{$m.email}">Email</a>{/if}
+                            </div>
+                            {apply_filters('glm-member-db-front-members-list-memberDetailBottom', '', $m.id)}
+                        </div>
+                        <div class="glm-member-list-description small-12 medium-4 left columns">
+                            <div>
+                            {apply_filters('glm-member-db-front-members-list-memberDescriptionTop', '', $m.id)}
+                            {if $m.short_descr && $settings.list_show_short_descr}
+                                {$m.short_descr|nl2br}
+                            {elseif $m.descr && $settings.list_show_description}
+                                {$m.descr|nl2br}
+                            {/if}
+                            {apply_filters('glm-member-db-front-members-list-memberDescriptionBottom', '', $m.id)}
+                            </div>
+                            {if $m.categories && $settings.list_show_categories}
+                                        <b>{$terms.term_member_cap} Categories</b>
+                                        <ul>
+                                {foreach $m.categories as $c}
+                                            <li>
+                                                {if $c.parent_name}{$c.parent_name}: {/if}{$c.name}
+                                            </li>
+                                {/foreach}
+                                        </ul>
+                            {/if}
+                            {if $m.cc_type && $settings.list_show_creditcards}
+                                        <b>Credit Cards Accepted:</b>
+                                        <ul>
+                                {foreach $m.cc_type.names as $c}
+                                            <li>{$c}</li>
+                                {/foreach}
+                                        </ul>
+                            {/if}
+                            {if $m.amenities && $settings.list_show_amenities}
+                                        <b>{$terms.term_member_cap} Amenities</b>
+                                        <ul>
+                                {foreach $m.amenities as $A}
+                                            <li>
+                                                {$A.name}
+                                            </li>
+                                {/foreach}
+                                        </ul>
+                            {/if}
+                        </div>
                     </div>
-                    {apply_filters('glm-member-db-front-members-list-memberDetailBottom', '', $m.id)}
+                    <!-- Laury - This is the one that should go underneath all the address and description area -->
+                    {apply_filters('glm-member-db-front-members-list-memberDataBelow', '', $m.id)}
+
+                    {apply_filters('glm-member-db-front-members-list-memberBottom', '', $m.id)}
                 </div>
-                <div class="glm-member-list-description small-12 medium-4 left columns">
-                    <div>
-                    {apply_filters('glm-member-db-front-members-list-memberDescriptionTop', '', $m.id)}
-                    {if $m.short_descr && $settings.list_show_short_descr}
-                        {$m.short_descr|nl2br}
-                    {elseif $m.descr && $settings.list_show_description}
-                        {$m.descr|nl2br}
+                 {apply_filters('glm-member-db-front-members-list-memberBelow', '', $m.id)}
+<!-- Member Description -->
+                        </div>
+                
+            <!-- Member information displayed in map bubbles -->
+            <div id="map_info_{$m.id}" class="glm-hidden">
+                {apply_filters('glm-member-db-front-members-list-mapBubbleTop', '', $m.id)}
+            {if $m.logo && $settings.list_map_show_logo}<div class="glm-member-list-image"><img src="{$glmPluginMediaUrl}/images/{$settings.list_map_logo_size}/{$m.logo}"></div>{/if}
+                <div class="glm-map-member-name">
+                    {if $settings.list_map_show_detaillink}
+                        <a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$m.member_slug}/">{$m.member}</a>
+                    {else}
+                        {$m.member}
                     {/if}
-                    {apply_filters('glm-member-db-front-members-list-memberDescriptionBottom', '', $m.id)}
-                    </div>
-                {if $m.categories && $settings.list_show_categories}
+                </div>
+                {if $settings.list_map_show_address}
+                    <p class="glm-map-member-address">
+                        {if $settings.list_map_show_street}
+                            {if $m.addr1}{$m.addr1}<br>{/if}
+                            {if $m.addr2}{$m.addr2}<br>{/if}
+                        {/if}
+                        {if $settings.list_map_show_citystatezip}
+                            {if $m.city}{$m.city}{if $m.state.value}, {/if}{/if}{if $m.state.value}{$m.state.value}{/if}{if $m.zip} {$m.zip}{/if}
+                        {/if}
+                {if $m.country.name && $settings.list_map_show_country}<br>{$m.country.name}{/if}
+                    </p>
+                {/if} {*list_map_show_address*}
+                <div class="glm-member-list-info">
+                    <p>
+                        {if $m.phone && $settings.list_map_show_phone}<b>Phone:</b> {$m.phone}<br>{/if}
+                        {if $m.toll_free && $settings.list_map_show_tollfree}<b>Toll Free:</b> {$m.toll_free}<br>{/if}
+                        {if $m.url && $settings.list_map_show_url}<b>Web site:</b> <a href="{$m.url}"{if $settings.list_map_show_url_newtarget} target="_blank"{/if}>{$m.url}</a><br>{/if}
+                        {if $m.email && $settings.list_map_show_email}<b>E-Mail Address:</b> <a href="mailto:{$m.email}">{$m.email}</a><br>{/if}
+                        {if $m.region && $settings.list_map_show_region}<b>Region:</b> {$m.region}{/if}
+                    </p>
+                    {if $m.descr && $settings.list_map_show_descr}{$m.descr|nl2br}<br>{/if}
+                    {if $m.short_descr && $settings.list_map_show_short_descr}{$m.short_descr}<br>{/if}
+                    {if $m.categories && $settings.list_map_show_categories}
+                        <div class="glm-member-list-items">
                             <b>{$terms.term_member_cap} Categories</b>
                             <ul>
-                    {foreach $m.categories as $c}
+                            {foreach $m.categories as $c}
                                 <li>
                                     {if $c.parent_name}{$c.parent_name}: {/if}{$c.name}
                                 </li>
-                    {/foreach}
+                            {/foreach}
                             </ul>
-                {/if}
-                {if $m.cc_type && $settings.list_show_creditcards}
+                        </div>
+                    {/if}
+                    {if $m.cc_type && $settings.list_map_show_creditcards}
+                        <div class="glm-member-list-items">
                             <b>Credit Cards Accepted:</b>
                             <ul>
-                    {foreach $m.cc_type.names as $c}
+                            {foreach $m.cc_type.names as $c}
                                 <li>{$c}</li>
-                    {/foreach}
+                            {/foreach}
                             </ul>
-                {/if}
-                {if $m.amenities && $settings.list_show_amenities}
-                            <b>{$terms.term_member_cap} Amenities</b>
+                        </div>
+                    {/if}
+                    {if $settings.list_map_show_amenities}
+                        <div class="glm-member-list-items">
+                            <b>Amenities:</b>
                             <ul>
-                    {foreach $m.amenities as $A}
-                                <li>
-                                    {$A.name}
-                                </li>
-                    {/foreach}
+                            {foreach $m.amenities as $a}
+                                <li>{$a.name}</li>
+                            {/foreach}
                             </ul>
-                {/if}
-                    </div>
-                    </div>
-                    <!-- Laury - This is the one that should go underneath all the address and description area -->
-                    {apply_filters('glm-member-db-front-members-list-memberDataBelow', '', $m.id)}
-
-                    {apply_filters('glm-member-db-front-members-list-memberBottom', '', $m.id)}
-                 </div>
-                 {apply_filters('glm-member-db-front-members-list-memberBelow', '', $m.id)}
-<!-- Member Description -->
-        </div>
-
-        <!-- Member information displayed in map bubbles -->
-        <div id="map_info_{$m.id}" class="glm-hidden">
-            {apply_filters('glm-member-db-front-members-list-mapBubbleTop', '', $m.id)}
-            {if $m.logo && $settings.list_map_show_logo}<div class="glm-member-list-image"><img src="{$glmPluginMediaUrl}/images/{$settings.list_map_logo_size}/{$m.logo}"></div>{/if}
-            <div class="glm-map-member-name">
-              {if $settings.list_map_show_detaillink}
-                <a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$m.member_slug}/">{$m.member}</a>
-              {else}
-                {$m.member}
-              {/if}
-            </div>
-          {if $settings.list_map_show_address}
-            <p class="glm-map-member-address">
-              {if $settings.list_map_show_street}
-                {if $m.addr1}{$m.addr1}<br>{/if}
-                {if $m.addr2}{$m.addr2}<br>{/if}
-              {/if}
-              {if $settings.list_map_show_citystatezip}
-                {if $m.city}{$m.city}{if $m.state.value}, {/if}{/if}{if $m.state.value}{$m.state.value}{/if}{if $m.zip} {$m.zip}{/if}
-              {/if}
-                {if $m.country.name && $settings.list_map_show_country}<br>{$m.country.name}{/if}
-            </p>
-          {/if} {*list_map_show_address*}
-            <div class="glm-member-list-info">
-                <p>
-                    {if $m.phone && $settings.list_map_show_phone}<b>Phone:</b> {$m.phone}<br>{/if}
-                    {if $m.toll_free && $settings.list_map_show_tollfree}<b>Toll Free:</b> {$m.toll_free}<br>{/if}
-                    {if $m.url && $settings.list_map_show_url}<b>Web site:</b> <a href="{$m.url}"{if $settings.list_map_show_url_newtarget} target="_blank"{/if}>{$m.url}</a><br>{/if}
-                    {if $m.email && $settings.list_map_show_email}<b>E-Mail Address:</b> <a href="mailto:{$m.email}">{$m.email}</a><br>{/if}
-                    {if $m.region && $settings.list_map_show_region}<b>Region:</b> {$m.region}{/if}
-                </p>
-                {if $m.descr && $settings.list_map_show_descr}{$m.descr|nl2br}<br>{/if}
-                {if $m.short_descr && $settings.list_map_show_short_descr}{$m.short_descr}<br>{/if}
-        {if $m.categories && $settings.list_map_show_categories}
-                <div class="glm-member-list-items">
-                    <b>{$terms.term_member_cap} Categories</b>
-                    <ul>
-            {foreach $m.categories as $c}
-                        <li>
-                            {if $c.parent_name}{$c.parent_name}: {/if}{$c.name}
-                        </li>
-            {/foreach}
-                    </ul>
-                </div>
-        {/if}
-        {if $m.cc_type && $settings.list_map_show_creditcards}
-                <div class="glm-member-list-items">
-                    <b>Credit Cards Accepted:</b>
-                    <ul>
-            {foreach $m.cc_type.names as $c}
-                        <li>{$c}</li>
-            {/foreach}
-                    </ul>
-                </div>
-        {/if}
-        {if $settings.list_map_show_amenities}
-                <div class="glm-member-list-items">
-                    <b>Amenities:</b>
-                    <ul>
-            {foreach $m.amenities as $a}
-                        <li>{$a.name}</li>
-            {/foreach}
-                    </ul>
+                        </div>
+                    {/if}
                 </div>
-        {/if}
-            </div>
-            {apply_filters('glm-member-db-front-members-list-mapBubbleBottom', '', $m.id)}
-        </div> <!-- End of information displayed in map bubbles -->
+                {apply_filters('glm-member-db-front-members-list-mapBubbleBottom', '', $m.id)}
+            </div> <!-- End of information displayed in map bubbles -->
 
     {/foreach} {*$members*}
-        {apply_filters('glm-member-db-front-members-list-pageBottom', '')}
+    {apply_filters('glm-member-db-front-members-list-pageBottom', '')}
 {else}
-        <div>(no {$terms.term_member_plur} listed)</div>
+    <div>(no {$terms.term_member_plur} listed)</div>
 {/if}
 
 {/if} {*list_show_list*}
-        <script type="text/javascript">
+<script type="text/javascript">
             jQuery(document).ready(function($) {
 
     {if $settings.list_show_map}