Various fixes to member lists and some admin issues.
authorChuck Scott <cscott@gaslightmedia.com>
Wed, 21 Oct 2015 17:05:15 +0000 (13:05 -0400)
committerChuck Scott <cscott@gaslightmedia.com>
Wed, 21 Oct 2015 17:05:15 +0000 (13:05 -0400)
13 files changed:
classes/data/dataMemberInfo.php
classes/data/dataMembers.php
config/plugin.ini
css/admin.css
models/admin/management/import.php
models/admin/members/index.php
models/front/members/detail.php
models/front/members/list.php
views/admin/member/index.html
views/admin/member/memberInfo.html
views/admin/members/index.html
views/admin/members/list.html
views/front/members/list.html

index fa5931a..21f1938 100644 (file)
@@ -339,17 +339,19 @@ class GlmDataMemberInfo extends GlmDataAbstract
         * Find the active member info record for a specific member ID
         *
         * @param integer $member ID of the member name
+        * @param string $where Optional WHERE clause for query
         *
         * @return integer Member info record ID or false if not found
         */
-       public function getActiveInfoForMember($member) {
+       public function getActiveInfoForMember($member, $where = 'true') {
 
            $memberID = $member - 0;
 
         $sql = "
-            SELECT id
-              FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX. "member_info
-             WHERE member = $memberID
+            SELECT T.id
+              FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX. "member_info T
+             WHERE $where
+               AND member = $memberID
                AND status = ".$this->config['status_numb']['Active']."
            ;";
         $memberInfo = $this->wpdb->get_row($sql, ARRAY_A);
index 2884570..d1e7739 100644 (file)
@@ -119,6 +119,7 @@ class GlmDataMembers extends GlmDataAbstract {
                                        'list' => $this->config['memb_access'],
                                            'l_blank' => true,
                                        'required' => true,
+                                       'default' => 30,
                                        'force_list' => true,
                                        'use' => 'a'
                                ),
index 0e08955..be8d668 100644 (file)
@@ -55,10 +55,10 @@ status_numb['Archived'] = 90
 ;
 ; Member Access Levels
 ;
-memb_access[10] = 'Not Displayed'
+memb_access[30] = 'Display, Member Updates Moderated'
+memb_access[40] = 'Display, Member Updates Not Moderated'
 memb_access[20] = 'Display, No Memb Access'
-memb_access[30] = 'Display, Moderated'
-memb_access[40] = 'Display, Full Access'
+memb_access[10] = 'Not Displayed, No Member Access'
 memb_access[90] = 'Not Displayed, Archived'
 
 memb_access_numb['NotDisplayed'] = 10
index ad75c1d..539820b 100644 (file)
@@ -4,14 +4,20 @@
 
 */
 
-.glm-required {
-    color: red !important;
-}
 .glm-error {
     color: red;
+    font-weight: bold;
 }
-.glm-notice {
+.glm-warning {
     color: green;
+    font-weight: bold;
+}
+.glm-notice {
+    color: blue;
+    font-weight: bold;
+}
+.glm-required {
+    color: red !important;
 }
 .glm-active {
     color: blue;
index dfc1178..396c2e1 100644 (file)
@@ -832,7 +832,7 @@ class GlmMembersAdmin_management_import
                         $res = $this->wpdb->insert(
                                 GLM_MEMBERS_PLUGIN_DB_PREFIX.'members',
                                 array(
-                                        'access' => $this->config['memb_access_numb']['Full'],
+                                        'access' => $this->config['memb_access_numb']['Moderated'],
                                         'member_type' => $defaultMemberType,
                                         'created' => date('Y-m-d'),
                                         'name' => $val['member_name'],
index 73ca9ca..58f1b7f 100644 (file)
@@ -103,6 +103,9 @@ class GlmMembersAdmin_members_index extends GlmDataMembers
         // Get stats on the current list of members
         $stats = $this->getStats();
 
+        // Get simple member list
+        $membersList = $this->getSimpleMembersList();
+
         // Check for required Member Types
         require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataMemberTypes.php');
         $MemberTypes = new GlmDataMemberTypes($this->wpdb, $this->config);
@@ -154,6 +157,7 @@ class GlmMembersAdmin_members_index extends GlmDataMembers
         // Compile template data
         $templateData = array(
             'numbMembers' => $stats,
+            'membersList' => $membersList,
             'membersPending' => $membersPending,
             'haveMemberTypes' => $haveMemberTypes,
             'haveCategories' => $haveCategories,
index 5db6856..e637103 100644 (file)
@@ -143,7 +143,6 @@ class GlmMembersFront_members_detail extends GlmDataMemberInfo
         // Check for "show" shortcode parameter
         $settings = array();
         $showList = $actionData['request']['show'];
-echo "$showList<br>";
 
         if ($showList) {
 
@@ -165,7 +164,7 @@ echo "$showList<br>";
 
                         // Or we're clearing all
                     } elseif ($s == 'none') {
-echo "Here";
+
                         while (list($key, $val) = each($GLOBALS['showOpts'])) {
                             $settings[$val] = false;
                         }
@@ -241,33 +240,54 @@ echo "Here";
         }
 
         // Find the active member info record
-        $memberInfoID = $this->getActiveInfoForMember($id);
+        $where = "
+            (
+                SELECT access
+                 FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."members
+                WHERE id = T.member
+            ) IN (
+                 ".$this->config['memb_access_numb']['NoAccess'].",
+                 ".$this->config['memb_access_numb']['Moderated'].",
+                 ".$this->config['memb_access_numb']['Full']."
+                 )
+        ";
+        $memberInfoID = $this->getActiveInfoForMember($id, $where);
+
+        // Default is we didn't find the member info
+        $memberData = false;
+        $haveMember = false;
+        $haveImageGallery = false;
+        $imageGallery = false;
 
-        /*
-         *  Get data on the specified member
-         */
-        $memberData = $this->getEntry($memberInfoID);
+        // If we did get a member ID
+        if ($memberInfoID) {
 
+            /*
+             *  Get data on the specified member
+             */
+            $memberData = $this->getEntry($memberInfoID);
 
-        if (GLM_MEMBERS_PLUGIN_FRONT_DEBUG) {
-            glmMembersFront::addNotice($memberData, 'DataBlock', 'Member Data');
-        }
 
-        // If we have member data
-        $success = true;
-        $haveMember = false;
-        if ($memberData !== false) {
+            if (GLM_MEMBERS_PLUGIN_FRONT_DEBUG) {
+                glmMembersFront::addNotice($memberData, 'DataBlock', 'Member Data');
+            }
 
+            // If we have member data
             $success = true;
-            $haveMember = true;
+            if ($memberData !== false) {
 
-        }
+                $success = true;
+                $haveMember = true;
+
+            }
 
-        // Also get any image gallery images
-        require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataImages.php');
-        $Images = new GlmDataImages($this->wpdb, $this->config);
-        $imageGallery = $Images->getGallery($this->config['ref_type_numb']['MemberInfo'], $memberInfoID);
-        $haveImageGallery = ($imageGallery != false);
+            // Also get any image gallery images
+            require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataImages.php');
+            $Images = new GlmDataImages($this->wpdb, $this->config);
+            $imageGallery = $Images->getGallery($this->config['ref_type_numb']['MemberInfo'], $memberInfoID);
+            $haveImageGallery = ($imageGallery != false);
+
+        }
 
         // Compile template data
         $templateData = array(
index 277b847..d1eb091 100644 (file)
@@ -241,13 +241,14 @@ class GlmMembersFront_members_list extends GlmDataMemberInfo
         $cats = array();
         if (isset($actionData['request']['category'])) {
 
+            // Convert comma separated list to an array
             $catsRequested = explode(',', $actionData['request']['category']);
 
             // Check for numeric IDs only
             while (list($k, $v) = each($catsRequested)) {
 
-                // If it's just numeric
-                if (preg_match('/^[0-9]*$/', trim($v))) {
+                // If it's just numeric - note Explode returns an array element with value = 0 if no string.
+                if (preg_match('/^[0-9]*$/', trim($v)) && $v > 0) {
 
                     // Clean up the category number and add to cats array
                     $cats[] = ($v-0);
@@ -289,8 +290,7 @@ class GlmMembersFront_members_list extends GlmDataMemberInfo
         // If there's categories specified with the shortcode
         if (count($cats) > 0) {
 
-            /*
-             * Restrict available categories for selection to those in shortcode or children
+            /*  * Restrict available categories for selection to those in shortcode or children
              * Note that the array is already ordered by parent then children then next parent
              * so $parentSelected
              */
@@ -317,6 +317,9 @@ class GlmMembersFront_members_list extends GlmDataMemberInfo
             }
 
         }
+var_dump($cats);
+        $catSelected = implode(',', $cats);
+echo $catSelected;
 
         // If we're doing category search selection Get category filter data
         if ($this->config['settings']['list_show_search_category']) {
@@ -397,8 +400,18 @@ class GlmMembersFront_members_list extends GlmDataMemberInfo
             } // If an amenity search has been selected
         } // it doing amenity search
 
-        // Only look at active member information
-        $where .= $whereSep." T.status = ".$this->config['status_numb']['Active'];
+        // Only look at active member information where the member is displayable  (memb_access = 20, 30, 40)
+        $where .= $whereSep."
+            (
+                SELECT access
+                 FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."members
+                WHERE id = T.member
+            ) IN (
+                 ".$this->config['memb_access_numb']['NoAccess'].",
+                 ".$this->config['memb_access_numb']['Moderated'].",
+                 ".$this->config['memb_access_numb']['Full']."
+                 )
+            AND T.status = ".$this->config['status_numb']['Active'];
 
         // If doing alpha list
         $alphaList = false;
index bf7d4ad..09db980 100644 (file)
@@ -46,7 +46,7 @@
             
             
             <tr>
-                <th {if $member.fieldRequired.access}class="glm-required"{/if}>Access:</th>
+                <th {if $member.fieldRequired.access}class="glm-required"{/if}>Member Display & Access:</th>
                 <td {if $member.fieldFail.access}class="glm-form-bad-input"{/if}>
                     <select name="access">
         {foreach from=$member.fieldData.access.list item=v}
     
   <p>&nbsp;</p>
 
+    <div>
+        <h3>Member Information Versions</h3>
+        <span class="glm-right">
+            <p>
+                <input type="checkbox" id="showArchived"{if $showArchived} checked="checked"{/if}> Show archived information&nbsp;&nbsp;
+            </p>
+        </span>
+    </div> 
   {if $haveMember}
     {if $haveInfoRecords}
     
     <a href="{$thisURL}?page={$thisPage}&glm_action=memberInfo&member={$memberID}" class="button-primary glm-button glm-right">Add New Member Information Version</a>
         
-    <h3>Member Information Versions</h3>
-    
-    <span class="glm-right">
-        <p>
-            <input type="checkbox" id="showArchived"{if $showArchived} checked="checked"{/if}> Show archived information&nbsp;&nbsp;
-        </p>
-    </span>
-    
     {if $noActive}
         <h3 class="glm-error">There is no active information for this member.</h3>
     {/if}
index c4eba6e..02f1884 100644 (file)
@@ -8,17 +8,53 @@
     
     {if $memberInfoID && $memberInfo}
         <!--  Delete Member Information dialog -->
-        <div id="deleteMemberInfoButton" class="button-primary glm-right">Archive this Member Information</div>
+        <div id="deleteMemberInfoButton" class="button-primary glm-right">Delete this Member Information Version</div>
         <div id="deleteMemberInfoDialog" class="glm-dialog-box" title="Delete Member Information">
+      {if $memberInfo.fieldData.status.value == 10}
+            <p><center><a id="deleteMemberInfoCancel" class="button-primary">Cancel</a></center></p>
+            <p>
+                <span class="glm-notice">NOTE:</span> This member information is the <b>currently active</b> version! You may not delete an active version. 
+                To delete this version, please select another version to be active or change the "Member Info Status" on this page to something
+                other than "Active".
+            </p>
+            <p>
+                If you change this version to something other than "Active" without selecting another version as active, there will be no active 
+                information for this member. Members without an active information version will not be displayed on the front-end of this Web site.
+            </p>
+            <p>
+                Click the "Member Dashboard" tab above to see all information versions for this member and optionally to select another version to
+                be active.
+            </p>
+      {else}
             <center>
                 <p><a id="deleteMemberInfoCancel" class="button-primary">Cancel</a></p>
-                <p><input id="deleteMemberInfoSubmit" type="submit" value="Archive this Member Information record"></p>
+                <p><input id="deleteMemberInfoSubmit" type="submit" value="Delete this Member Information Version"></p>
             </center>
+            <div class="glm-item-container">
+                <p><center><span class="glm-error">WARNING:</span></center></p>
+                <p>
+                    <span class="glm-warning">Clicking the "Delete this Member Information Version" button above will 
+                    delete all of the data and images displayed on this page and any other information in the tabs that may show to the right of the "Member Info"
+                    tab above.</span>
+                </p>
+                <p>
+                    <span class="glm-error">Once deleted, this information will no longer be available and cannot be retrieved!</span>
+                </p>
+            </div>
             <p>
-                NOTE: Archived member information records are not listed in the the member Dashboard by default but
-                may be shown using the "Show archived information" checkbox on that page.
-            </p> 
-                 
+                This member may also have other member information records. Click the "Member Dashboard" Tab above to view a list of all information 
+                records for this member. 
+            </p>
+            <p>
+                Only this member information version will be deleted. Other member information versions listed under the "Member Dashboard" tab 
+                above will not be deleted. 
+            </p>
+            <p>
+                There may also be "Archived" versions that will not normally show up in the "Member Dashboard". Click the 
+                "Show Archiived Versions" checkbox at the top right of the versions list on that page to include archived versions.
+            </p>
+
+      {/if}
         </div>
 
         <h2>Edit Member Information</h2>
index 0e4a33d..5ddb03b 100644 (file)
@@ -3,6 +3,15 @@
     <h2>Main Dashboard</h2>
     
     <table class="glm-admin-table">
+{if $membersList}
+        <tr>
+            <td colspan="2" align="">
+                <input  id="glmMembersList" type="text" id="autoTest" style="margin-left: 2em;">
+                <span class="glm-left">Member Search:</span>
+            </td>
+        </tr>
+{/if}
+    
 {if !$haveMemberTypes}
         <tr>
             <th class="glm-error">You do not have any Member Types setup.</th>
     </table>
 {/if}
 
-
+{if $membersList}
+    <script type="text/javascript">
+        jQuery(document).ready(function($) {
+            
+            /*
+             * 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 $membersList as $m}
+                { label: "{$m.name|unescape:'html'}", value: "{$m.name|unescape:'html'}", id: '{$m.id}' },
+    {/foreach}
+             ];
+             $( "#glmMembersList" ).autocomplete({
+                 source: availableTags,
+                 html: true,
+                 select: function( event, ui ) {
+                     var memberID = ui.item.id;
+                     window.location.replace("{$adminURL}?page=glm-members-admin-menu-member&glm_action=index&member=" + memberID );
+                 }
+             });
+                             
+        });
+            
+    </script>
+{/if}
     
 {include file='admin/footer.html'}
 
index d2772d3..39bb35f 100644 (file)
@@ -49,8 +49,7 @@
                     {if $m.pending > 0}<span class="glm-notice">Pending</span>{/if}
                 </td>
                 <td>
-                    <a href="{$thisURL}?page=glm-members-admin-menu-member&glm_action=memberInfo&member={$m.id}&id={$m.active_id}" class="button-primary glm-right" style="margin: 0 .2em 0 .2em;">Active Version</a>
-                    <a href="{$thisURL}?page=glm-members-admin-menu-member&glm_action=index&member={$m.id}" class="button-primary glm-right" style="margin: 0 .2em 0 .2em;">Manage</a>
+                    <a href="{$thisURL}?page=glm-members-admin-menu-member&glm_action=memberInfo&member={$m.id}&id={$m.active_id}" class="button-primary glm-right" style="margin: 0 .2em 0 .2em;">Active Info</a>
                 </td>
             </tr>
     {/foreach}
index 709f3f1..0a906c9 100644 (file)
             {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="{$thisURL}?glm_action=detail&id={$m.member_pointer}">{$m.member}</a>
+                <a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$m.member_slug}/">{$m.member}</a>
               {else}
                 {$m.member}
               {/if}