Adding search form
authorSteve Sutton <steve@gaslightmedia.com>
Tue, 28 May 2019 20:53:26 +0000 (16:53 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Tue, 28 May 2019 20:53:26 +0000 (16:53 -0400)
Search form for member info search.

models/admin/messages/index.php
views/admin/messages/index.html
views/admin/messages/search.html [new file with mode: 0644]

index 9e7776a..790fc14 100644 (file)
@@ -111,6 +111,54 @@ class GlmMembersAdmin_messages_index extends GlmDataEmailMessages
         );
 
         switch ( $option ) {
+        case 'search':
+            $view          = 'search';
+            $searchResults = array();
+            $mTypeSelected = false;
+
+            wp_enqueue_style('select2',"https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" );
+            wp_enqueue_script('select2js', "https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js" );
+
+            // Get a list of categories for filtering
+            require_once GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataCategories.php';
+            $Categories = new GlmDataCategories($this->wpdb, $this->config);
+            $categories = $Categories->getListSortedParentChild(false);
+
+            // Get a list of member_types for filtering
+            require_once GLM_MEMBERS_PLUGIN_CLASS_PATH . '/data/dataMemberTypes.php';
+            $MemberTypes = new GlmDataMemberTypes( $this->wpdb, $this->config );
+            $member_types = $MemberTypes->getList();
+
+            // Check if there is a member_type filter
+            if ( isset( $_REQUEST['filterMemberTypes'] ) && $memberTypeFilter = filter_var( $_REQUEST['filterMemberTypes'], FILTER_VALIDATE_INT ) ) {
+                $where .= " AND T.member_type = $memberTypeFilter ";
+                $mTypeSelected = $memberTypeFilter;
+            }
+
+
+            // If we have categories, add "selected" element default false;
+            if (is_array($categories)) {
+                reset($categories);
+                foreach ( $categories as $k => $v ) {
+                    $categories[$k]['selected'] = false;
+                }
+            }
+
+            if ( isset( $_REQUEST['search'] ) && filter_var( $_REQUEST['search'], FILTER_VALIDATE_BOOLEAN ) ) {
+                // Do search
+                $searchResults = array(
+                    array(
+                        'name' => 'Gaslight Media',
+                        'status' => 'Active',
+                    )
+                );
+            }
+
+            $templateData['mTypeSelected'] = $mTypeSelected;
+            $templateData['categories']    = $categories;
+            $templateData['member_types']  = $member_types;
+            $templateData['searchResults'] = $searchResults;
+            break;
         case 'list':
             $view = 'list';
             $messages = $this->getList();
index 0776592..e4300c7 100644 (file)
@@ -2,14 +2,23 @@
 
 {include file='admin/header.html'}
 
-<a href="{$thisUrl}?page={$thisPage}&option=list">HTML Messages</a>
-<a href="{$thisUrl}?page={$thisPage}&option=editHtmlEmail" class="button glm-right">Add HTML Email</a>
+<ul>
+    <li>
+        <a href="{$thisUrl}?page={$thisPage}&option=list">HTML Messages</a>
+    </li>
+    <li>
+        <a href="{$thisUrl}?page={$thisPage}&option=search">Search Members</a>
+    </li>
+    <li>
+        <a href="{$thisUrl}?page={$thisPage}&option=editHtmlEmail" class="button glm-right">Add HTML Email</a>
+    </li>
+</ul>
 
 This is your dashboard
 
 <div id="glm-messages-app"></div>
 
-{*
+{* React Part
 <script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>
 <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>
 <script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>
diff --git a/views/admin/messages/search.html b/views/admin/messages/search.html
new file mode 100644 (file)
index 0000000..9e3130e
--- /dev/null
@@ -0,0 +1,47 @@
+<h2>Search Members</h2>
+
+{include file='admin/header.html'}
+
+
+
+<form action="{$thisUrl}?page={$thisPage}" method="post">
+    <input type="hidden" name="page" value="{$thisPage}" />
+    <input type="hidden" name="option" value="search" />
+    <input type="hidden" name="search" value="1" />
+    <table>
+        <tr>
+            <td colspan="2">
+                {* Multiselect Search Module. Set the necessary parameters for the element here *}
+                {assign var="multiSelectFilterID" value="filterCategories"}
+                {assign var="multiSelectFilterName" value="filterCategories[]"}
+                {assign var="multiSelectFilterData" value=$categories}
+                {assign var="multiSelectFilterPlaceholder" value="Filter Categories"}
+                {assign var="multiSelectFilterSearchTerm" value="Categories"}
+                {include file='admin/ui/multiSelectSearch.html'}
+                {* End Multiselect Search Module *}
+            </td>
+        </tr>
+        <tr>
+            <th>Member Type</th>
+            <td>
+                <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>
+            </td>
+        </tr>
+        <tr>
+            <td colspan="2">
+                <input type="submit" value="Search" />
+            </td>
+        </tr>
+    </table>
+</form>
+
+{if $searchResults}
+    {$searchResults|@print_r}
+{/if}
+
+{include file='admin/footer.html'}