undoing ajax changes to adapt for the controller returning html
authorAnthony Talarico <talarico@gaslightmedia.com>
Mon, 12 Nov 2018 14:18:26 +0000 (09:18 -0500)
committerAnthony Talarico <talarico@gaslightmedia.com>
Mon, 12 Nov 2018 14:18:26 +0000 (09:18 -0500)
controllers/admin.php
models/admin/ajax/adminSearch.php
models/admin/members/list.php
models/admin/newDashboard/index.php
setup/adminHooks.php
views/admin/common/manageDashboard/index.html
views/admin/common/manageDashboard/list.html [new file with mode: 0644]

index bafbdc5..1053cd8 100755 (executable)
@@ -726,7 +726,7 @@ class glmMembersAdmin extends GlmPluginSupport
      * @return void
      * @access public
      */
-    public function controller( $menuItem, $action = false, $actionData = false, $returnOutput = false, $forceAction = false )
+    public function controller( $menuItem, $action = false, $actionData = false, $returnOutput = false, $forceAction = false)
     {
 
         if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
@@ -1040,11 +1040,11 @@ class glmMembersAdmin extends GlmPluginSupport
                 $this->config['settings'][$key] = $val;
             }
         }
-
+        
         /*
          * Merge data returned from the model with the selected view
          */
-
+        
         // Load Smarty Template support
         $smarty = new smartyTemplateSupport();
 
@@ -1073,9 +1073,12 @@ class glmMembersAdmin extends GlmPluginSupport
 
         // Update the Smarty view path
         $smarty->template->addTemplateDir($viewPath);
-
+        if ( $returnOutput == 'getTemplateData') {
+            return $smarty->template->getTemplateVars();
+        }
         // Generate output from model data and view
         if ( $returnOutput ) {
+            //echo '<pre>', print_r($smarty->template->getTemplateVars()), '</pre>';
             $output = $output.$smarty->template->fetch( $viewFile );
         } else {
             echo $output;
@@ -1091,7 +1094,7 @@ class glmMembersAdmin extends GlmPluginSupport
         }
 
         if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
-            $smarty->template->display( 'admin/smartyDebug.html');
+            $smarty->template->display( 'admin/smartyDebug.html' );
         }
 
         if ( $returnOutput ) {
index a55c8a2..2033f94 100644 (file)
@@ -57,7 +57,15 @@ class GlmMembersAdmin_ajax_adminSearch
         //parent::__construct(false, false);
 
     }
-
+    function write_log ( $log )  {
+        if ( true === WP_DEBUG ) {
+            if ( is_array( $log ) || is_object( $log ) ) {
+                error_log( print_r( $log, true ) );
+            } else {
+                error_log( $log );
+            }
+        }
+    }
     /**
      * Perform Model Action
      *
@@ -90,27 +98,11 @@ class GlmMembersAdmin_ajax_adminSearch
         $limit = 20;
 
         $status = $this->config['status_numb']['Active'];
-        if( isset( $_REQUEST['table'] ) ){
-            // echo "test123";
-        }
-
-        // // Check for a text search
-        if (isset($_REQUEST['text_search']) && trim($_REQUEST['text_search']) != '') {
-
-            // $textSearch = addslashes(filter_input(INPUT_POST, 'text_search', FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES));
-            $textSearch = addslashes(filter_var($_REQUEST['text_search'], FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES));
-            $where .= " AND T.id in (
-                SELECT DISTINCT(id)
-                  FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."members
-                 WHERE name like '%$textSearch%'
-            )";
-
-        }
-
-        $listResult = $Members->getSimpleMembersList();
+        $list   = apply_filters('glm-member-db-admin-search');
+        $this->write_log($list);
         
         $return = array(
-            'searchData'    => $listResult
+            'searchData'    => $list       // Where our events list will go
         );
 
         header('Content-type:application/json;charset=utf-8', true);
index 5ac5546..186b75b 100755 (executable)
@@ -402,7 +402,7 @@ class GlmMembersAdmin_members_list extends GlmDataMembers
             'status'           => $success,
             'menuItemRedirect' => false,
             'modelRedirect'    => false,
-            'view'             => 'admin/members/list.html',
+            'view'             => 'admin/common/manageDashboard/list.html',
             'data'             => $templateData
         );
 
index df1939b..4036a5e 100644 (file)
@@ -148,7 +148,7 @@ class GlmMembersAdmin_newDashboard_index extends GlmDataMembers
                 //  echo "<br>" . $a['slug'] .  " has no filter called " . $a['slug'] . "-dashboard-widget";
             }
         }
-
+        echo apply_filters('glm-member-db-admin-search', array('glm_action'=>'list'));
         // Compile template data.
         $templateData = array(
             'lockedToMember'        => $lockedToMember,
index f53d57f..4e080f5 100644 (file)
@@ -574,3 +574,9 @@ add_filter(
     13,
     1
 );
+add_filter(
+    'glm-member-db-admin-search',
+    function ( $input = '' ) {
+        return  $this->controller( 'members', 'list');
+    }
+);
\ No newline at end of file
index 2083a33..e048ec9 100644 (file)
                     complete: $("#glm-admin-search-overlay").fadeOut('slow'),
                     success: function(data) {
 
-                        // Kept for reference
-                        // data.searchData.forEach( function(value, index){
-                        //     $("<div />", {
-                        //         text    : value,
-                        //         class   : "glm-list-result"
-                        //     }).appendTo( $("#glm-admin-member-list"));
-                        // })
-
-                        console.log(data.searchData[1]);
-
-                        // Created some columns based on the keys available in the first result
-                        $.each(data.searchData[1], function(fieldKey, fieldVal) {
-                            $("<span />", {
-                                text    : fieldKey,
-                                class   : "header-item glm-list-header-column"
-                            }).appendTo( $("#glm-admin-list-columns"));
-                        });
-
-                        // Loop through the search data, treat each as a record
-                        $.each(data.searchData, function(recordNum, record) {
-                            console.log(recordNum, record);
-                            // Throwing all the records into the list
-                            $("<div />", {
-                                text    : "ID: " + record.id + " | Name: " + record.name + " | Featured: " + record.featured.name + " | Created: " + record.created.date,
-                                class   : "glm-list-result",
-                                recordID: record.id
-                            }).appendTo( $("#glm-admin-member-list"));
-
-                            // Displaying all the data fields one by one
-                            for(var fieldNum in record) {
-                                // console.log(record[fieldNum]);
-                            }
-
-                            // Displaying all the data fields one by one
-                            $.each(record, function(fieldKey, fieldVal) {
-                                // console.log(fieldKey, fieldVal)
-                            });
-
-                            
-                            
-                        });
-
                     }
                 });
             }
         };
 
 
-    /*
-        *  Init Materialize collapsible
-        */
-    jQuery(function($){
-        $('.collapsible').collapsible();
-        $('select').formSelect();
-        $('.modal').modal();
-    })
-
-    /*
-        *  Text Search Autocomplete
-        */
-    function textSearch(textSearchData){
-        // Text Search Component
+        /*
+            *  Init Materialize collapsible
+            */
         jQuery(function($){
-            let searchResults   = {};
-            let imageUrl        = `{$glmPluginMediaUrl}/images`
-            let data = {
-                action      : 'glm_members_admin_ajax',
-                glm_action  : 'glmTextSearch',
-                table       : textSearchData.table,
-                fields      : textSearchData.fields,
-                where       : textSearchData.where
-            }
-            $('input#'+textSearchData.slug+'-text').autoComplete({
-                minChars: 1,
-                source: function( request, response ) {
-                    data.query = request;
-                    $.ajax({
-                        dataType: "json",
-                        type : 'POST',
-                        url: '{$ajaxUrl}',
-                        data: data,
-                        success: function(data) {
-                            console.log(data.searchData);
-                            if(data.searchData){
-                                let searchDropdown = [];
-                                for(let i = 0;i < data.searchData.length;i++){
-                                    let searchTitle = Object.keys(data.searchData[i])[0];
-                                    let image       = (data.searchData[i][searchTitle].image) ? data.searchData[i][searchTitle].image : null;
-                                    let memberID    = data.searchData[i][searchTitle].memberID;   
-                                    let entityID    = data.searchData[i][searchTitle].entityID;              
-                                    searchDropdown.push(searchTitle);
-                                    {literal} searchResults[searchTitle] = {image: image, memberID: memberID, entityID: entityID}; {/literal}
-                                }   
-                                {literal} response(searchDropdown); {/literal}
-                            }else{
-                                response(['No Results Found'])
+            $('.collapsible').collapsible();
+            $('select').formSelect();
+            $('.modal').modal();
+        })
+
+        /*
+            *  Text Search Autocomplete
+            */
+        function textSearch(textSearchData){
+            // Text Search Component
+            jQuery(function($){
+                let searchResults   = {};
+                let imageUrl        = `{$glmPluginMediaUrl}/images`
+                let data = {
+                    action      : 'glm_members_admin_ajax',
+                    glm_action  : 'glmTextSearch',
+                    table       : textSearchData.table,
+                    fields      : textSearchData.fields,
+                    where       : textSearchData.where
+                }
+                $('input#'+textSearchData.slug+'-text').autoComplete({
+                    minChars: 1,
+                    source: function( request, response ) {
+                        data.query = request;
+                        $.ajax({
+                            dataType: "json",
+                            type : 'POST',
+                            url: '{$ajaxUrl}',
+                            data: data,
+                            success: function(data) {
+                                console.log(data.searchData);
+                                if(data.searchData){
+                                    let searchDropdown = [];
+                                    for(let i = 0;i < data.searchData.length;i++){
+                                        let searchTitle = Object.keys(data.searchData[i])[0];
+                                        let image       = (data.searchData[i][searchTitle].image) ? data.searchData[i][searchTitle].image : null;
+                                        let memberID    = data.searchData[i][searchTitle].memberID;   
+                                        let entityID    = data.searchData[i][searchTitle].entityID;              
+                                        searchDropdown.push(searchTitle);
+                                        {literal} searchResults[searchTitle] = {image: image, memberID: memberID, entityID: entityID}; {/literal}
+                                    }   
+                                    {literal} response(searchDropdown); {/literal}
+                                }else{
+                                    response(['No Results Found'])
+                                }
                             }
+                        });
+                    },
+                    renderItem: function (item, search){
+                        search = search.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
+                        var re = new RegExp("(" + search.split(' ').join('|') + ")", "gi");
+                        return '<div class="autocomplete-suggestion" data-langname="'+item[0]+'" data-lang="'+item[1]+'" data-val="'+search+'">'+item.replace(re, "<b>$1</b>")+'</div>';
+
+                    },
+                    onSelect: function(e, term, item){
+                        let search = $(item).text();
+                        console.log(search)
+                        if(search !== "No Results Found"){
+                            window.location.replace(textSearchData.resultUrl+searchResults[search].entityID);
                         }
-                    });
-                },
-                renderItem: function (item, search){
-                    search = search.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
-                    var re = new RegExp("(" + search.split(' ').join('|') + ")", "gi");
-                    return '<div class="autocomplete-suggestion" data-langname="'+item[0]+'" data-lang="'+item[1]+'" data-val="'+search+'">'+item.replace(re, "<b>$1</b>")+'</div>';
+                    },
+                });
+            });
+        }
 
-                },
-                onSelect: function(e, term, item){
-                    let search = $(item).text();
-                    console.log(search)
-                    if(search !== "No Results Found"){
-                        window.location.replace(textSearchData.resultUrl+searchResults[search].entityID);
+        /*
+            *  Date Search Widget
+            */
+        function dateSearch(dateSearchData){
+            jQuery(function($){
+
+                var date = new Date();
+                var toDate = '', fromDate = (dateSearchData.defaultFromDate) ? '&' + dateSearchData.fromDate + '=' + dateSearchData.defaultFromDate : '';
+                $('.fromDate').datepicker({
+                    format          : 'mm/dd/yyyy',
+                    setDefaultDate  : true,
+                    defaultDate     : date,
+                    autoClose       : true,
+                    onClose         : function(){
+                        fromDate = '&' + dateSearchData.fromDate + '=' + $(this)[0].el.value; 
                     }
-                },
+                });
+                $('.toDate').datepicker({
+                    format      : 'mm/dd/yyyy',
+                    autoClose   : true,
+                    onClose: function(){
+                        toDate = '&' + dateSearchData.toDate + '=' + $(this)[0].el.value;
+                    }
+                });
+                console.log( dateSearchData.resultUrl + fromDate + toDate)
+                $('#' + dateSearchData.searchBtn).on("click", function(){
+                    window.location = dateSearchData.resultUrl + fromDate + toDate;
+                })
             });
-        });
-    }
-
-    /*
-        *  Date Search Widget
-        */
-    function dateSearch(dateSearchData){
-        jQuery(function($){
+        }
 
-            var date = new Date();
-            var toDate = '', fromDate = (dateSearchData.defaultFromDate) ? '&' + dateSearchData.fromDate + '=' + dateSearchData.defaultFromDate : '';
-            $('.fromDate').datepicker({
-                format          : 'mm/dd/yyyy',
-                setDefaultDate  : true,
-                defaultDate     : date,
-                autoClose       : true,
-                onClose         : function(){
-                    fromDate = '&' + dateSearchData.fromDate + '=' + $(this)[0].el.value; 
-                }
-            });
-            $('.toDate').datepicker({
-                format      : 'mm/dd/yyyy',
-                autoClose   : true,
-                onClose: function(){
-                    toDate = '&' + dateSearchData.toDate + '=' + $(this)[0].el.value;
-                }
+        /*
+            *  List component tooltips
+            */
+        function listComponent(listComponentData) {
+            jQuery(function($){
+                $('.tooltipped').tooltip();
             });
-            console.log( dateSearchData.resultUrl + fromDate + toDate)
-            $('#' + dateSearchData.searchBtn).on("click", function(){
-                window.location = dateSearchData.resultUrl + fromDate + toDate;
-            })
-        });
-    }
-
-    /*
-        *  Export Modal
-        */
-    function exportData(exportData){
-        jQuery(function($){
-
-        });
-    }
-
-    /*
-        *  List component tooltips
-        */
-    function listComponent(listComponentData) {
-        jQuery(function($){
-            $('.tooltipped').tooltip();
-        });
-    }
-            
-
-
-    
-    
+        }
+                
         let data = {
             action      : 'glm_members_admin_ajax',
             glm_action  : 'adminSearch',
+            form_action : 'list'
             // table       : textSearchData.table,
             // fields      : textSearchData.fields,
             // where       : textSearchData.where
         $(".glm-admin-search-field").on("change", function(){
             console.log( $(this) );
             window.Glma.adminSearch(data);
-        })
+        });
 });
 </script>
 
diff --git a/views/admin/common/manageDashboard/list.html b/views/admin/common/manageDashboard/list.html
new file mode 100644 (file)
index 0000000..6cb8e6e
--- /dev/null
@@ -0,0 +1,384 @@
+
+<div class="glm-admin-table-inner glm-admin-table">
+    <form action="{$thisUrl}?page={$thisPage}" method="post" id="searchForm">
+        <input type="hidden" name="glm_action" value="list">
+        <input type="hidden" name="prevStart" value="{$prevStart}">
+        <input type="hidden" name="nextStart" value="{$nextStart}">
+        <input type="hidden" name="limit" value="{$limit}">
+        <input type="hidden" name="savedAlpha" value="{$alphaSelected}">
+
+        <h2 class="glm-admin-table-header">List&nbsp;of&nbsp;{$terms.term_member_plur_cap}</h2>
+
+        <div class="glm-row">
+            <b>{$terms.term_member_cap} Types</b>
+            <select id="filterMemberTypes" name="filterMemberTypes">
+                <option value=""></option>
+                {foreach $member_types as $type}
+                <option value="{$type.id}"{if $type.id == $mTypeSelected} selected{/if}>{$type.name}</option>
+                {/foreach}
+            </select>
+        </div>
+
+        <div class="glm-row">
+            <b>Show Archived: </b><input type="checkbox" name="filterArchived" value="true" id="filterArchived" class="listFilter"{if $filterArchived} checked{/if} style="margin-right: 1em;">
+                <b>Featured Only: </b><input type="checkbox" name="filterFeatured" value="true" id="filterFeatured" class="listFilter"{if $filterFeatured} checked{/if} style="margin-right: 1em;">
+                <b>Pending Only: </b><input type="checkbox" name="filterPending" value="true" id="filterPending" class="listFilter"{if $filterPending} checked{/if} style="margin-right: 1em;">
+        </div>
+
+       {apply_filters('glm-member-db-custom-filter-search', '', 'glm-member-db' )}
+
+        <p><b>Total found:</b> {$memberCount}&nbsp;&nbsp;</p>
+
+        <br clear="all">
+        <!-- Add Member Type Button and Dialog Box -->
+        <div id="exportMembersButton" class="button button-secondary glm-admin-export-button">{$terms.term_member_cap} Export/Reports</div>
+
+        {if $paging}
+            <input type="Submit" name="pageSelect" value="Previous {$limit} {$terms.term_member_plur_cap}" class="button button-secondary glm-button"{if !$prevStart} disabled{/if}>
+            <input type="Submit" name="pageSelect" value="Next {$limit} {$terms.term_member_plur_cap}" class="button button-secondary glm-button"{if !$nextStart} disabled{/if}>
+        {/if}
+
+        <div class="glm-alpha-links">
+            <a href="{$thisUrl}?page=glm-members-admin-menu-members-list&glm_action=list&text_search={$textSearch}&categorySearch={$catSearchSelected}" class="glm-alpha-link{if !$alphaSelected} glm-alpha-link-selected{/if}">All</a>
+      {foreach $alphaList as $a}
+            <a href="{$thisUrl}?page=glm-members-admin-menu-members-list&glm_action=list&alpha={$a.alpha}&text_search={$textSearch}&categorySearch={$catSearchSelected}" class="glm-alpha-link{if $a.default} glm-alpha-link-selected{/if}">{$a.alpha}</a>
+      {/foreach}
+       </div>
+
+        <table class="wp-list-table striped glm-admin-table-single">
+            <thead>
+                <tr>
+                    <th>ID</th>
+                    <th>{$terms.term_member_cap} Name</th>
+                    <th></th>
+                    <th></th>
+                    <th>Featured</th>
+                    <th>Access</th>
+<!--                    <th>$terms.term_member_cap Type</th>-->
+                </tr>
+            </thead>
+            <tbody>
+    {if $haveMembers}
+        {assign var="i" value="0"}
+        {foreach $members as $m}
+            {if $i++ is odd by 1}
+                <tr>
+            {else}
+                <tr class="alternate">
+            {/if}
+                    <td style="width: 50px;">
+                        {$m.id}
+                    </td>
+                    <td>
+                        <a href="{$thisUrl}?page=glm-members-admin-menu-member&glm_action=index&member={$m.id}">{$m.name}</a>
+                    </td>
+                    <td style="width: 120px;">
+                        <a href="{$thisUrl}?page=glm-members-admin-menu-member&glm_action=memberInfo&member={$m.id}&memberInfo={$m.active_id}" class="button button-secondary glm-button-small glm-admin-edit-active-profile" style="margin: 0 .2em 0 .2em;">Edit Active Profile</a>
+                    </td>
+                    <td style="width: 120px;">
+                        <a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$m.member_slug}/" target="_blank">View Profile</a>
+                    </td>
+                    <td style="width: 90px;">
+                        {$m.featured.name}
+                    </td>
+                    <td style="width: 120px">
+                        {$m.access_short.name}
+                    </td>
+<!--                    <td>
+                        $m.member_type_short
+                    </td>-->
+                </tr>
+        {/foreach}
+    {else}
+                <tr class="alternate"><td colspan="2">(no {$terms.term_member_plur} listed)</td></tr>
+    {/if}
+            </tbody>
+        </table>
+
+        {if $paging}
+            <input type="Submit" name="pageSelect" value="Previous {$limit} {$terms.term_member_plur_cap}" class="button button-secondary glm-button"{if !$prevStart} disabled{/if}>
+            <input type="Submit" name="pageSelect" value="Next {$limit} {$terms.term_member_plur_cap}" class="button button-secondary glm-button"{if !$nextStart} disabled{/if}>
+        {/if}
+
+    </form>
+
+    <div id="exportMembersDialog" class="glm-dialog-box" title="Export {$terms.term_member_cap}">
+        <form id="exportForm" action="{$ajaxUrl}" method="post" enctype="multipart/form-data">
+            <input type="hidden" name="action" value="glm_members_admin_ajax">
+            <input type="hidden" name="glm_action" value="membersListExport">
+            <table class="glm-admin-table">
+                <tr>
+                    <th>Categories: </th>
+                    <td>
+                        <select id="exportFilterCategories" name="filterCategories[]" multiple="multiple" size="1">
+            {foreach from=$categories item=v}
+                                <option value="{$v.id}" data-parent="{$v.parent}"{if $v.selected} selected{/if}>
+                                    {if $v.parent_id}&nbsp;&nbsp;&nbsp;&nbsp;{/if}{$v.name}
+                                </option>
+            {/foreach}
+                        </select>
+                    </td>
+                </tr>
+                <tr>
+                    <th>Member Types:</th>
+                    <td>
+                        <select id="exportFilterMemberTypes" name="filterMemberTypes">
+                            <option value=""></option>
+                            {foreach $member_types as $type}
+                                <option value="{$type.id}"{if $type.id == $mTypeSelected} selected{/if}>{$type.name}</option>
+                            {/foreach}
+                        </select>
+                    </td>
+                </tr>
+                <tr><th>Show Archived: </th><td><input type="checkbox" name="filterArchived"></td></tr>
+                <tr><th>Featured Only: </th><td><input type="checkbox" name="filterFeatured"></td></tr>
+                <tr><th>Pending Only: </th><td><input type="checkbox" name="filterPending"></td></tr>
+                <tr><th>Name Search: </th><td><input  class="exportMembersSearch glm-form-text-input-medium" type="text" name="text_search" id="autoTest"><br>
+                        Enter any portion of a {$terms.term_member_cap} name and press enter or select any specific {$terms.term_member_cap} found.
+                    </td></tr>
+                <tr>
+                    <th>Fields to export</th>
+                    <td>
+                        <table padding="3">
+                            <tr>
+                                <td colspan="2"><a id="selectAllExportFields">Check All</a> / <a id="unselectAllExportFields">Uncheck All</a></td>
+                            </tr>
+                            <tr>
+                                <td class="exportFieldsTd">
+                                    <input type="checkbox" name="exportId"> {$terms.term_member_cap} ID<br>
+                                    <input type="checkbox" name="exportOldId"> Old {$terms.term_member_cap} ID<br>
+                                    <input type="checkbox" name="exportMember" checked> {$terms.term_member_cap} Name<br>
+                                    <input type="checkbox" name="exportReferenceName"> Profile Reference Name<br>
+                                    <input type="checkbox" name="exportAddr1" checked> Address Line #1<br>
+                                    <input type="checkbox" name="exportAddr2" checked> Address Line #2<br>
+                                    <input type="checkbox" name="exportCity" checked> City<br>
+                                    <input type="checkbox" name="exportState" checked> State<br>
+                                    <input type="checkbox" name="exportZip" checked> ZIP/Postal Code<br>
+                                    <input type="checkbox" name="exportCounty" checked> County <br>
+                                    <input type="checkbox" name="exportRegion" checked> Region <br>
+                                </td>
+                                <td class="exportFieldsTd">
+                                    <input type="checkbox" name="exportPhone" checked> Phone #<br>
+                                    <input type="checkbox" name="exportTollFree" checked> Toll Free<br>
+                                    <input type="checkbox" name="exportEmail" checked> Main E-Mail<br>
+                                    <input type="checkbox" name="exportPriContactName" checked> Primary Contact Name<br>
+                                    <input type="checkbox" name="exportPriContactEmail" checked> Primary Contact E-Mail<br>
+                                    <input type="checkbox" name="exportUrl" checked> Web Address (URL)<br>
+                                    <input type="checkbox" name="exportCategories" checked> Categories<br>
+                                    <input type="checkbox" name="exportMailingAddr1" checked> Mailing Address Line #1<br>
+                                    <input type="checkbox" name="exportMailingAddr2" checked> Mailing Address Line #2<br>
+                                    <input type="checkbox" name="exportMailingCity" checked> Mailing City<br>
+                                    <input type="checkbox" name="exportMailingState" checked> Mailing State<br>
+                                    <input type="checkbox" name="exportMailingZip" checked> Mailing ZIP/Postal Code<br>
+                                </td>
+                            </tr>
+                        </table>
+                    </td>
+                </tr>
+                {* Custom Field Part *}
+                {if apply_filters( 'glm-members-customfields-active', false )}
+                <tr>
+                    <th>Custom Fields</th>
+                    <td>
+                    {$customFields = apply_filters('glm-member-db-fields-get-members-fields', false, 'glm-member-db')}
+                    {if $customFields}
+                        {foreach $customFields as $cf}
+                            <input type="checkbox" name="exportCF[{$cf.id}]" checked> {$cf.field_name} <br>
+                        {/foreach}
+                    {/if}
+                    </td>
+                </tr>
+                {/if}
+                <tr>
+                    <th>Include&nbsp;Clicks&nbsp;&&nbsp;Views</th>
+                    <td>
+                        <table padding="3">
+                            <tr>
+                                <td>
+                                    Month: <input type="text" class="monthPicker" name="monthYear" value="{$monthYear}">
+                                </td>
+                            </tr>
+                            <tr>
+                                <td>
+                                    <input type="checkbox" name="exportClicks"> URL Click Counts<br>
+                                    <input type="checkbox" name="exportViews"> Detail Page View Counts
+                                </td>
+                            </tr>
+                        </table>
+                    </td>
+                </tr>
+                <tr>
+                    <th>Export to: </th>
+                    <td>
+                        <input type="radio" name="type" value="print" checked="checked"> Export for Print<br>
+                        <input type="radio" name="type" value="csv"> Export to Spreadsheet (CSV)
+                    </td>
+                </tr>
+            </table>
+            <a id="exportMembersCancel" class="button button-secondary glm-right">Cancel</a>
+            <input type="submit" value="Export" class="button button-primary">
+        </form>
+    </div>
+</div>
+    <script type="text/javascript">
+        jQuery(document).ready(function($) {
+
+            $('#selectAllExportFields').click(function(){
+                $('.exportFieldsTd input[type="checkbox"]').each(function(){
+                    $(this).prop('checked', true);
+                });
+            });
+            $('#unselectAllExportFields').click(function(){
+                $('.exportFieldsTd input[type="checkbox"]').each(function(){
+                    $(this).prop('checked', false);
+                });
+            });
+
+            $('.monthPicker').datepicker( {
+                changeMonth: true,
+                changeYear: true,
+                showButtonPanel: true,
+                dateFormat: 'MM yy',
+                onClose: function(dateText, inst) {
+                    var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
+                    var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
+                    $(this).datepicker('setDate', new Date(year, month, 1));
+                },
+                beforeShow: function (input, inst) {
+                    var $this = $(this),
+                        // For the simplicity we suppose the dateFormat will be always without the day part, so we
+                        // manually add it since the $.datepicker.parseDate will throw if the date string doesn't contain the day part
+                        dateFormat = 'd ' + $this.datepicker('option', 'dateFormat'),
+                        date;
+
+                    try {
+                        date = $.datepicker.parseDate(dateFormat, '1 ' + $this.val());
+                    } catch (ex) {
+                        return;
+                    }
+
+                    $this.datepicker('option', 'defaultDate', date);
+                    $this.datepicker('setDate', date);
+
+                    inst.dpDiv.addClass('datepicker-month-year');
+                }
+            });
+
+            $("#exportMembersDialog").dialog({
+                autoOpen: false,
+                minWidth: 700,
+                dialogClass: "glm-dialog-no-close"
+            });
+            $('#exportMembersButton').click( function() {
+                $("#exportMembersDialog").dialog("open");
+            });
+            $('#exportMembersCancel').click( function() {
+                $("#exportMembersDialog").dialog("close");
+            });
+
+            // Filter triggers
+            $(".listFilter" ).change( function() {
+
+                var filter = '';
+
+                // Check for archived filter
+                if ($("#filterArchived").attr('checked')) {
+                    filter += '&filterArchived=true';
+                }
+
+                // Check for pending data filter
+                if ($("#filterPending").attr('checked')) {
+                    filter += '&filterPending=true';
+                }
+
+                // Check for featured data filter
+                if ($("#filterFeatured").attr('checked')) {
+                    filter += '&filterFeatured=true';
+                }
+
+                window.location.href = "{$thisUrl}?page={$thisPage}&glm_action=list" + filter;
+
+                return false;
+            });
+
+            // Perform Export
+            $("#glmMembersExport").on( 'click', function() {
+                window.open("{$ajaxUrl}?action=glm_members_admin_ajax&glm_action=membersListExport&type=print", 'Member Export');
+                return false;
+            });
+
+            // Perform CSV Export
+            $("#glmMembersExportCsv").on( 'click', function() {
+                window.open("{$ajaxUrl}?action=glm_members_admin_ajax&glm_action=membersListExport&type=csv", 'Member Export CSV');
+                return false;
+            });
+
+            /*
+             * Do autocomplete search for member
+             * label: What will be searched
+             * value: What will be displayed when selected
+             * id: Member id added so we can go to the member while showing what was selected
+             * Also note that autocomplete does not properly render HTML codes, so we
+             * "unescape" them for HTML in Smarty.
+             */
+
+             var availableTags = [
+    {foreach $namesList as $m}
+                { label: "{$m.name|unescape:'html'|replace:'"':''}", value: "{$m.name|unescape:'html'|replace:'"':''}", id: '{$m.id}' },
+    {/foreach}
+             ];
+
+             // Autocomplete for list Text Search
+             $( ".glmMembersSearch" ).autocomplete({
+                 source: availableTags,
+                 html: true,
+                 position: { my : "left top", at: "left bottom" },
+                 select: function( event, ui ) {
+                     var memberID = ui.item.id;
+                     window.location.replace("{$adminUrl}?page=glm-members-admin-menu-member&glm_action=index&member=" + memberID );
+                 },
+                 response: function(event, ui) {
+                     if (!ui.content.length) {
+                         var noResult = { value:"",label:"No results found" };
+                         ui.content.push(noResult);
+                     }
+                 }
+             });
+
+             // Autocomplete for export Text field
+             $( ".exportMembersSearch" ).autocomplete({
+
+                 source: availableTags,
+                 html: true,
+                 position: { my : "right top", at: "right bottom" },
+                 response: function(event, ui) {
+                     if (!ui.content.length) {
+                         var noResult = { value:"",label:"No results found" };
+                         ui.content.push(noResult);
+                     }
+                 }
+             });
+
+             // No submit on ENTER for pop-up export form
+             jQuery.each($("#exportForm").find('input'), function(){
+                 $(this).bind('keypress keydown keyup', function(e){
+                    if(e.keyCode == 13) {
+                        $( ".exportMembersSearch" ).autocomplete("close");
+                        return false;
+                    }
+                 });
+             });
+
+             // Restrict autocomplete list to a certain height with scrollbar
+             $('.ui-autocomplete').css('height','200px').css('overflow-y','scroll');
+
+             // Expand multi-select on hover
+             $('#filterCategories').multiselect();
+             $('#exportFilterCategories').multiselect();
+
+
+        });
+    </script>
+
+
+