From 5c08d4ed2361f56e255a8af6c222bb5cf057bad8 Mon Sep 17 00:00:00 2001 From: Laury GvR Date: Thu, 6 Apr 2017 16:15:09 -0400 Subject: [PATCH] Added alpha links to the member list --- classes/data/dataMembers.php | 32 +++++++ models/admin/member/memberInfo.php | 12 ++- models/admin/members/list.php | 86 ++++++++++++++----- .../admin/member/memberInfo/editCategory.html | 17 ++++ .../member/memberInfo/editProfileAddress.html | 43 ++++++---- views/admin/members/list.html | 7 ++ 6 files changed, 159 insertions(+), 38 deletions(-) diff --git a/classes/data/dataMembers.php b/classes/data/dataMembers.php index c0714dd2..77e1b901 100644 --- a/classes/data/dataMembers.php +++ b/classes/data/dataMembers.php @@ -306,6 +306,38 @@ class GlmDataMembers extends GlmDataAbstract { } + + /* + * Get Alpha list of first characters in member name + * for those members that have active info. + * + * @param string $where Where clause + * Note the table refernces M and I. + * @param string $selected Optional selected alpha character + * + * @return object Class object + * + */ + public function getAlphaList($where = '', $selected = '') + { + + $sql = " + SELECT DISTINCT LEFT(T.name, 1) AS alpha + FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX. "members T + WHERE true + $where + ORDER BY alpha + ;"; + $alphaData = $this->wpdb->get_results($sql, ARRAY_A); + + // Set selected + foreach ($alphaData as $k=>$v) { + $alphaData[$k]['default'] = ($v['alpha'] == $selected); + } + + return $alphaData; + + } /* * Get a simple members list - Name and ID only diff --git a/models/admin/member/memberInfo.php b/models/admin/member/memberInfo.php index e64806f6..7ee95134 100644 --- a/models/admin/member/memberInfo.php +++ b/models/admin/member/memberInfo.php @@ -290,12 +290,21 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo require_once GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataCategories.php'; $Categories = new GlmDataCategories($this->wpdb, $this->config); $categories = $Categories->getListSortedParentChild(); + $categories2 = $Categories->getListSortedParentChild(false); + // If we have categories, add "selected" element default false; + if (is_array($categories2)) { + reset($categories2); + while (list($k, $v) = each($categories2)) { + $categories2[$k]['selected'] = false; + } + } + // Check for action option - Should be one of the values in the "switch" statement below if (isset($_REQUEST['option']) && trim($_REQUEST['option']) != '') { $option = $_REQUEST['option']; } - + /* * Perform requested action */ @@ -503,6 +512,7 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo $templateData = array( 'haveMember' => $this->haveMember, 'availableCategories' => $categories, + 'availableCategories2'=> $categories2, 'memberID' => $this->memberID, 'member' => $this->memberData, 'memberName' => $memberName, diff --git a/models/admin/members/list.php b/models/admin/members/list.php index 9d97cc89..dfd520f5 100644 --- a/models/admin/members/list.php +++ b/models/admin/members/list.php @@ -104,20 +104,26 @@ class GlmMembersAdmin_members_list extends GlmDataMembers public function modelAction ($actionData = false) { - $where = ' true '; - $filterPending = false; - $filterArchived = false; - $filterFeatured = false; - $haveFilter = false; - $numbDisplayed = false; - $lastDisplayed = false; - $paging = true; - $prevStart = false; - $nextStart = false; - $start = 1; - $limit = 20; // Set to the number of listings per page - $namesList = false; - $enable_members = $this->config['settings']['enable_members']; + $where = ' true '; + $alphaWhere = ' true '; + $catSearchSelected = false; + $catSelectedString = ""; + $catSelected = ''; + $catsToUse = ''; + $filterPending = false; + $filterArchived = false; + $filterFeatured = false; + $haveFilter = false; + $numbDisplayed = false; + $lastDisplayed = false; + $paging = true; + $prevStart = false; + $nextStart = false; + $start = 1; + $limit = 20; // Set to the number of listings per page + $namesList = false; + $enable_members = $this->config['settings']['enable_members']; + $textSearch = false; // Check if this is a request to show archived members if (isset($_REQUEST['filterArchived'])) { @@ -153,15 +159,21 @@ class GlmMembersAdmin_members_list extends GlmDataMembers $categories[$k]['selected'] = false; } } - + // Check if there is a category filter (multi-select) + if (isset($_REQUEST['categorySearch']) && $_REQUEST['categorySearch'] > 0) { + $catsToUse = explode(',',$_REQUEST['categorySearch']); + } if (isset($_REQUEST['filterCategories']) && count($_REQUEST['filterCategories']) > 0) { - + $catsToUse = $_REQUEST['filterCategories']; + } + + if ($catsToUse && $catsToUse !== '') { $cats = ''; $catsSep = ''; - + // For each selected category - foreach($_REQUEST['filterCategories'] as $c) { + foreach($catsToUse as $c) { $cats .= $catsSep.$c; $catsSep = ','; $categories[$c]['selected'] = true; @@ -178,6 +190,7 @@ class GlmMembersAdmin_members_list extends GlmDataMembers OR (C.parent in ($cats) AND M.category = C.id) ) )"; + $catSelectedString = $cats; } // Check for "Pending Only @@ -209,6 +222,30 @@ class GlmMembersAdmin_members_list extends GlmDataMembers $filterFeatured = true; $haveFilter = true; } + + // If doing alpha list + if (isset($_REQUEST['alpha'])) { + $actionData['request']['alpha'] = $_REQUEST['alpha']; + } + + $alphaList = false; + $alphaWhere = ''; + + $alphaSelected = false; + + // Check for alpha selected + if ($actionData['request']['alpha'] && strlen($actionData['request']['alpha']) == 1) { + $alphaSelected = strtoupper($actionData['request']['alpha']); + $alphaWhere .= " AND T.name LIKE '$alphaSelected%'"; + } + + // Get full list for all other filters, but not filtered by alpha (that would be silly) + $alphaList = $this->getAlphaList(' AND '.$where, $alphaSelected); + + // If user clicked a page request then we need to check the savedAlpha value + if (isset($_REQUEST['savedAlpha']) && isset($_REQUEST['pageSelect'])) { + $actionData['request']['alpha'] = $_REQUEST['savedAlpha']; + } // Get count of members listed $memberCount = $this->getStats($where); @@ -237,9 +274,12 @@ class GlmMembersAdmin_members_list extends GlmDataMembers $start = $newStart; } } + + // Get stats for number of members found matching current selection criteria (includes alpha selection) + $filteredMembersFound = $this->getStats(str_replace('T.', '', $where.$alphaWhere)); // Get a current list of members - $listResult = $this->getSimpleMembersList($where, 'name', true, 'id', $start, $limit); + $listResult = $this->getSimpleMembersList($where.$alphaWhere, 'name', true, 'id', $start, $limit); // Get paging results $numbDisplayed = $listResult['returned']; @@ -298,6 +338,10 @@ class GlmMembersAdmin_members_list extends GlmDataMembers 'filterArchived' => $filterArchived, 'filterFeatured' => $filterFeatured, 'filterPending' => $filterPending, + 'catSelected' => $catSelected, + 'catSearchSelected' => $catSelectedString, + 'alphaList' => $alphaList, + 'alphaSelected' => $alphaSelected, 'numbDisplayed' => $numbDisplayed, 'lastDisplayed' => $lastDisplayed, 'paging' => $paging, @@ -305,7 +349,8 @@ class GlmMembersAdmin_members_list extends GlmDataMembers 'nextStart' => $nextStart, 'start' => $start, 'limit' => $limit, - 'namesList' => $namesList + 'namesList' => $namesList, + 'textSearch' => $textSearch ); // Return status, suggested view, and data to controller @@ -319,7 +364,6 @@ class GlmMembersAdmin_members_list extends GlmDataMembers } - } ?> diff --git a/views/admin/member/memberInfo/editCategory.html b/views/admin/member/memberInfo/editCategory.html index 181b00af..259bd3ee 100644 --- a/views/admin/member/memberInfo/editCategory.html +++ b/views/admin/member/memberInfo/editCategory.html @@ -71,6 +71,15 @@ {/foreach} {/if} +
+ +
@@ -103,4 +112,12 @@
+ diff --git a/views/admin/member/memberInfo/editProfileAddress.html b/views/admin/member/memberInfo/editProfileAddress.html index 42f6e102..a7696bdc 100644 --- a/views/admin/member/memberInfo/editProfileAddress.html +++ b/views/admin/member/memberInfo/editProfileAddress.html @@ -1,4 +1,4 @@ -
+

Address

@@ -39,12 +39,34 @@ +
+
+
+

County:

+
+ + {if $memberInfo.fieldFail.county}

{$memberInfo.fieldFail.county}

{/if} +
+
+
+

Region:

+
+ + {if $memberInfo.fieldFail.region}

{$memberInfo.fieldFail.region}

{/if}
@@ -81,17 +103,6 @@
-

Region:

-
- - {if $memberInfo.fieldFail.region}

{$memberInfo.fieldFail.region}

{/if} -
-
-
{if $memberInfo.fieldRequired.lat}

{else}

{/if}Location:

Map Location Using Above Address
diff --git a/views/admin/members/list.html b/views/admin/members/list.html index 77c91621..af2e7f1e 100644 --- a/views/admin/members/list.html +++ b/views/admin/members/list.html @@ -40,6 +40,13 @@ {/if} + + -- 2.17.1