From e169fd68523b6f1d2d63fedce7dcc0413868169c Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Fri, 26 Aug 2016 16:55:42 -0400 Subject: [PATCH] WIP for member only dashboard Still working out things with different add-ons. --- css/admin.css | 34 ++++++++ models/admin/dashboard/index.php | 93 ++++++++++++++++++-- models/admin/member/index.php | 37 ++++---- setup/adminHooks.php | 8 +- views/admin/dashboard/index.html | 35 ++++---- views/admin/member/index.html | 144 ++++++++++++++++++++++++------- 6 files changed, 280 insertions(+), 71 deletions(-) diff --git a/css/admin.css b/css/admin.css index 5353c104..2800bedd 100644 --- a/css/admin.css +++ b/css/admin.css @@ -406,3 +406,37 @@ input[type=submit], input[type=file] { color: #888; font-weight: 400; } + +/* Dashboard Widgets for the Members Only */ +#glm-dashboard-widgets-wrap { + margin: 0 -8px; + overflow: hidden; +} +.glm-widget-container { + display: inline-block; + width: 30%; + float: left; + margin: 0 10px; +} +.glm-widget { + min-width: 255px; + border: 1px solid #e5e5e5; + box-shadow: 0 1px 1px rgba( 0, 0, 0, .04); + background: #fff; +} +.glm-widget-content { + padding: 20px; +} +.glm-widget h2 { + font-size: 14px; + padding: 8px 12px; + margin: 0; + line-height: 1.4; + border-bottom: 1px solid #eee; +} +.glm-widget h3 { + font-size: 12px; + padding: 8px 12px; + margin: 0; + line-height: 1.4; +} diff --git a/models/admin/dashboard/index.php b/models/admin/dashboard/index.php index a4e53a8c..a6cb0c68 100644 --- a/models/admin/dashboard/index.php +++ b/models/admin/dashboard/index.php @@ -95,17 +95,100 @@ class GlmMembersAdmin_dashboard_index extends GlmDataMembers * produce output. * */ - public function modelAction ($actionData = false) + public function modelAction ( $actionData = false ) { - $success = true; + $success = true; + $text = 'text'; + $haveInfoRecords = false; + $memberInfoRecords = false; + $noActive = false; + $showArchived = false; + $memberID = 0; + $clickThroughCounts = array('day' => 0, 'week' => 0, 'month' => 0); + $detailViewCounts = array('day' => 0, 'week' => 0, 'month' => 0); - // Compile template data + // Check if there's a logged in user who is locked to their own entity. + $lockedToMember = apply_filters( 'glm_members_locked_to_member_id', false ); + $memberID = $lockedToMember; + + // Get the current date, first date of this week, and first date of this month + $today = date('Y-m-d'); + $thisWeek = date('Y-m-d', strtotime('-'.date('w').' days')); + $thisMonth = date('Y-m-d', strtotime('-'.(date('j')-1).' days')); + + $clickThroughCounts = $this->wpdb->get_row(" + SELECT COALESCE (( + SELECT clicks + FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."clickthrough_stats + WHERE member = $memberID + AND stat_type = 1 + AND stat_date = '$today' + ), 0) AS day, + COALESCE (( + SELECT clicks + FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."clickthrough_stats + WHERE member = $memberID + AND stat_type = 2 + AND stat_date = '$thisWeek' + ), 0) AS week, + COALESCE (( + SELECT clicks + FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."clickthrough_stats + WHERE member = $memberID + AND stat_type = 3 + AND stat_date = '$thisMonth' + ), 0) AS month + ", ARRAY_A); + + $detailViewCounts = $this->wpdb->get_row(" + SELECT COALESCE (( + SELECT clicks + FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_detail_stats + WHERE member = $memberID + AND stat_type = 1 + AND stat_date = '$today' + ), 0) AS day, + COALESCE (( + SELECT clicks + FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_detail_stats + WHERE member = $memberID + AND stat_type = 2 + AND stat_date = '$thisWeek' + ), 0) AS week, + COALESCE (( + SELECT clicks + FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_detail_stats + WHERE member = $memberID + AND stat_type = 3 + AND stat_date = '$thisMonth' + ), 0) AS month + ", ARRAY_A); + + // Setup the data Abstract class for member info. + require_once GLM_MEMBERS_PLUGIN_CLASS_PATH . '/data/dataMemberInfo.php'; + $MemberInfo = new GlmDataMemberInfo($this->wpdb, $this->config); + $hideArchived = " && T.status != ".$this->config['status_numb']['Archived']; + $memberInfoRecords = $MemberInfo->getList( "T.member = $memberID" . $hideArchived, 'T.status' ); + + // Check if there's any member information records. + if (is_array($memberInfoRecords) && count($memberInfoRecords) > 0) { + $haveInfoRecords = true; + } + + + // Compile template data. $templateData = array( - 'sampletext' => 'This is a sample text.' + 'member' => $actionData, + 'memberID' => $memberID, + 'haveInfoRecords' => $haveInfoRecords, + 'memberInfoRecords' => $memberInfoRecords, + 'clickThroughCounts' => $clickThroughCounts, + 'detailViewCounts' => $detailViewCounts, + 'thisDate' => $thisDate, ); - // Return status, suggested view, and data to controller + // Return status, suggested view, and data to controller. return array( 'status' => $success, 'menuItemRedirect' => false, diff --git a/models/admin/member/index.php b/models/admin/member/index.php index 0c5adeb2..f3fb3388 100644 --- a/models/admin/member/index.php +++ b/models/admin/member/index.php @@ -414,30 +414,31 @@ class GlmMembersAdmin_member_index extends GlmDataMembers ", ARRAY_A); } - + // End of - Get member view stats $thisDate = date('m/d/Y'); // Compile template data $templateData = array( - 'haveMemberTypes' => $haveMemberTypes, - 'haveMember' => $haveMember, - 'addingMember' => $addingMember, - 'memberID' => $memberID, - 'member' => $memberData, - 'memberName' => $memberName, - 'haveInfoRecords' => $haveInfoRecords, - 'memberInfoRecords' => $memberInfoRecords, - 'noActive' => $noActive, - 'showArchived' => $showArchived, - 'haveMemberInfo' => $haveMemberInfo, - 'memberUpdated' => $memberUpdated, - 'statusTypeNumbers' => $this->config['status_numb'], - 'statusPending' => $this->config['status_numb']['Pending'], + 'lockedToMember' => $lockedToMember, + 'haveMemberTypes' => $haveMemberTypes, + 'haveMember' => $haveMember, + 'addingMember' => $addingMember, + 'memberID' => $memberID, + 'member' => $memberData, + 'memberName' => $memberName, + 'haveInfoRecords' => $haveInfoRecords, + 'memberInfoRecords' => $memberInfoRecords, + 'noActive' => $noActive, + 'showArchived' => $showArchived, + 'haveMemberInfo' => $haveMemberInfo, + 'memberUpdated' => $memberUpdated, + 'statusTypeNumbers' => $this->config['status_numb'], + 'statusPending' => $this->config['status_numb']['Pending'], 'clickThroughCounts' => $clickThroughCounts, - 'detailViewCounts' => $detailViewCounts, - 'thisDate' => $thisDate + 'detailViewCounts' => $detailViewCounts, + 'thisDate' => $thisDate, ); // Return status, suggested view, and data to controller @@ -454,4 +455,4 @@ class GlmMembersAdmin_member_index extends GlmDataMembers } -?> \ No newline at end of file +?> diff --git a/setup/adminHooks.php b/setup/adminHooks.php index 65729d8e..2caea112 100644 --- a/setup/adminHooks.php +++ b/setup/adminHooks.php @@ -123,8 +123,10 @@ add_action( 'add_meta_boxes', function() { //} add_filter( 'glm-member-db-dashboard-member-widgets', - function ( $content = null ) { - $content .= $this->controller( 'dashboard', 'index' ); + function ( $member = null ) { + $content .= $this->controller( 'dashboard', 'index', $member ); return $content; - } + }, + 10, + 1 ); diff --git a/views/admin/dashboard/index.html b/views/admin/dashboard/index.html index b15118b8..2f072d69 100644 --- a/views/admin/dashboard/index.html +++ b/views/admin/dashboard/index.html @@ -1,18 +1,23 @@ -
-
-
-
-
- -

- Member Profile -

-

{$sampletext}

-
-
+
+
+

+ {$terms.term_member_cap} Profile +

+
+

{$terms.term_member_cap} Reports

+

URL CLick Counts Today: + {$clickThroughCounts.day}

+

Detail Page View Counts Today: + {$detailViewCounts.day}

+

{$terms.term_member_cap} Info Records

+ {if $haveInfoRecords} + {foreach $memberInfoRecords as $m} + {$m.status.name} Profile + {/foreach} + {else} + Add New {$terms.term_member} Info + {/if} +
diff --git a/views/admin/member/index.html b/views/admin/member/index.html index bf1e7fba..2bb4ea17 100644 --- a/views/admin/member/index.html +++ b/views/admin/member/index.html @@ -3,38 +3,56 @@ {if $haveMember || $addingMember} {if $haveMemberTypes} - {if $memberUpdated}

{$terms.term_member_cap} Updated

{/if} {if $haveMember} - - - - - - - -
{$member.fieldData.name}
- - - - - -
URL CLick CountsToday: {$clickThroughCounts.day}   
-
- - - - - -
Detail Page View CountsToday: {$detailViewCounts.day}   
-
-{if apply_filters('glm_members_menu_members', true)} - Edit {$terms.term_member_cap} Name and Status -{/if} -
+ {if $lockedToMember} + + +
{$member.fieldData.name}
+ {else} + + + + + + + +
{$member.fieldData.name}
+ + + + + + + + + + +
{$terms.term_member_cap} Slug:{$member.fieldData.member_slug}
Date created:{$member.fieldData.created.date}
URL CLick CountsToday: {$clickThroughCounts.day}   
+
+ + + + + + + + + + + + + +
{$terms.term_member_cap} Display & Access:{$member.fieldData.access.name}
{$terms.term_member_cap} Type:{$member.fieldData.member_type.name}
Detail Page View CountsToday: {$detailViewCounts.day}   
+
+ {if apply_filters('glm_members_menu_members', true)} + Edit {$terms.term_member_cap} Name and Status + {/if} +
+ {/if} {else}

No {$terms.term_member} information available.

{/if} @@ -80,10 +98,70 @@ {apply_filters('glm_members_admin_member_index_bottomOfMemberSummary', '', {$member.fieldData.id})}

 

+{if $haveMember && !$lockedToMember} + + {if apply_filters('glm_members_permit_admin_member_index_view_member_info_version', true)} + {if apply_filters('glm_members_permit_admin_member_index_add_member_info_version', true)} + {/if} +
+

+

{$terms.term_member_cap} Profile Versions

+ +

+ Show archived information   + Add New {$terms.term_member_cap} Information Version +

+
+

+ + + + + + + + + + + + + + {if $haveInfoRecords} + {assign var="i" value="0"} + {foreach $memberInfoRecords as $m} + + {if $m.status.value == $statusTypeNumbers.Active || apply_filters('glm_members_permit_admin_member_index_list_inactive_info', true)} + {if $i++ is odd by 1} + + {else} + + {/if} + + + + + + + + + {/if} + {/foreach} + {else} + + {/if} + +
StatusReference NameCreatedLast Update
+ {$m.status.name} + {$m.reference_name}{$m.create_time.datetime}{$m.modify_time.datetime} + {if $m.bad_lat_lon}Bad Map Location{/if} + {if apply_filters('glm_members_permit_admin_member_index_clone_activate_info_version', true)} + Clone  + {if $m.status.name != 'Active'}Activate{/if} + {/if} +
Click here to start entering information for this {$terms.term_member}.
+ {/if} + {/if} -{if $widgets = apply_filters('glm-member-db-dashboard-member-widgets', '')} - {$widgets} -{/if}

 

@@ -96,6 +174,12 @@

No {$terms.term_member} currently selected.

{/if} +{if $lockedToMember} +
+ {apply_filters('glm-member-db-dashboard-member-widgets', $member)} +
+{/if} +