Still working out things with different add-ons.
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;
+}
* 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,
", 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
}
-?>
\ No newline at end of file
+?>
//}
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
);
-<div id="dashboard-widgets-wrap">
- <div id="dashboard-widgets" class="metabox-holder">
- <div id="glm-members-dashboard-widget" class="postbox-container">
- <div class="meta-box-sortables ui-sortable">
- <div class="postbox">
- <button class="handlediv button-link" type="button" aria-expanded="true">
- <span class="screen-reader-text">Toggle panel: Member Profile</span>
- <span class="toggle-indicator" aria-hidden="true"></span>
- </button>
- <h2 class="hndle ui-sortable-handle">
- <span>Member Profile</span>
- </h2>
- <p>{$sampletext}</p>
- </div>
- </div>
+<div class="glm-widget-container">
+ <div class="glm-widget">
+ <h2>
+ <span>{$terms.term_member_cap} Profile</span>
+ </h2>
+ <div class="glm-widget-content">
+ <h3>{$terms.term_member_cap} Reports</h3>
+ <p>URL CLick Counts <b>Today:</b>
+ {$clickThroughCounts.day} <a data-type="daysClicks" class="dialog-button" href=""><img src="{$assetsUrl}/graph.png"></a></p>
+ <p>Detail Page View Counts <b>Today:</b>
+ {$detailViewCounts.day} <a data-type="daysViews" class="dialog-button" href=""><img src="{$assetsUrl}/graph.png"></a></p>
+ <h3>{$terms.term_member_cap} Info Records</h3>
+ {if $haveInfoRecords}
+ {foreach $memberInfoRecords as $m}
+ <a href="{$thisUrl}?page={$thisPage}&glm_action=memberInfo&member={$memberID}&memberInfo={$m.id}"{if $m.status.value == $statusPending} class="glm-notice"{/if}>{$m.status.name} Profile</a>
+ {/foreach}
+ {else} <!-- haveInfoRecords -->
+ <a href="{$thisUrl}?page={$thisPage}&glm_action=memberInfo&member={$memberID}">Add New {$terms.term_member} Info</a>
+ {/if}
+
</div>
</div>
</div>
{if $haveMember || $addingMember}
{if $haveMemberTypes}
-
{if $memberUpdated}
<h2 class="glm-notice glm-flash-updated">{$terms.term_member_cap} Updated</h2>
{/if}
{if $haveMember}
- <table class="glm-admin-table">
- <tr><td><span class="glm-admin-table-large-bold-text">{$member.fieldData.name}</span></td></tr>
- <tr>
- <td>
- <table class="glm-admin-table">
- <tr>
- <th>URL CLick Counts</th>
- <td><b>Today:</b> {$clickThroughCounts.day} <a data-type="daysClicks" class="dialog-button" href=""><img src="{$assetsUrl}/graph.png"></a></td>
- </tr>
- </table>
- </td>
- <td>
- <table class="glm-admin-table">
- <tr>
- <th>Detail Page View Counts</th>
- <td><b>Today:</b> {$detailViewCounts.day} <a data-type="daysViews" class="dialog-button" href=""><img src="{$assetsUrl}/graph.png"></a></td>
- </tr>
- </table>
- </td>
- <td class="glm-right">
-{if apply_filters('glm_members_menu_members', true)}
- <span class="glm-right"><a href="{$thisUrl}?page={$thisPage}&glm_action=memberEdit&member={$memberID}" class="button button-primary glm-button glm-right">Edit {$terms.term_member_cap} Name and Status</a></span>
-{/if}
- </td>
- </tr>
- </table>
+ {if $lockedToMember}
+ <table class="glm-admin-table">
+ <tr><td><span class="glm-admin-table-large-bold-text">{$member.fieldData.name}</span></td></tr>
+ </table>
+ {else}
+ <table class="glm-admin-table">
+ <tr><td><span class="glm-admin-table-large-bold-text">{$member.fieldData.name}</span></td></tr>
+ <tr>
+ <td>
+ <table class="glm-admin-table">
+ <tr>
+ <th>{$terms.term_member_cap} Slug:</th>
+ <td class="glm-nowrap">{$member.fieldData.member_slug}</td>
+ </tr>
+ <tr><th>Date created:</th><td>{$member.fieldData.created.date}</td></tr>
+ <tr>
+ <th>URL CLick Counts</th>
+ <td><b>Today:</b> {$clickThroughCounts.day} <a data-type="daysClicks" class="dialog-button" href=""><img src="{$assetsUrl}/graph.png"></a></td>
+ </tr>
+ </table>
+ </td>
+ <td>
+ <table class="glm-admin-table">
+ <tr>
+ <th>{$terms.term_member_cap} Display & Access:</th>
+ <td class="glm-nowrap">{$member.fieldData.access.name}</td>
+ </tr>
+ <tr>
+ <th>{$terms.term_member_cap} Type:</th>
+ <td>{$member.fieldData.member_type.name}</td>
+ </tr>
+ <tr>
+ <th>Detail Page View Counts</th>
+ <td><b>Today:</b> {$detailViewCounts.day} <a data-type="daysViews" class="dialog-button" href=""><img src="{$assetsUrl}/graph.png"></a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="glm-right">
+ {if apply_filters('glm_members_menu_members', true)}
+ <span class="glm-right"><a href="{$thisUrl}?page={$thisPage}&glm_action=memberEdit&member={$memberID}" class="button button-primary glm-button glm-right">Edit {$terms.term_member_cap} Name and Status</a></span>
+ {/if}
+ </td>
+ </tr>
+ </table>
+ {/if}
{else}
<h3>No {$terms.term_member} information available.</h3>
{/if}
{apply_filters('glm_members_admin_member_index_bottomOfMemberSummary', '', {$member.fieldData.id})}
<p> </p>
+{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}
+ <br clear="all">
+ <p>
+ <h3 class="glm-left">{$terms.term_member_cap} Profile Versions</h3>
+ <span class="glm-right">
+ <p>
+ <input type="checkbox" id="showArchived"{if $showArchived} checked="checked"{/if}> Show archived information
+ <a href="{$thisUrl}?page={$thisPage}&glm_action=memberInfo&member={$memberID}" class="button button-primary glm-button glm-right">Add New {$terms.term_member_cap} Information Version</a>
+ </p>
+ </span>
+ </p>
+
+ <table class="wp-list-table striped glm-admin-table">
+ <thead>
+ <tr>
+ <th>Status</th>
+ <th>Reference Name</th>
+ <th>Created</th>
+ <th>Last Update</th>
+ <th> </th>
+ </tr>
+ </thead>
+ <tbody>
+
+ {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}
+ <tr>
+ {else}
+ <tr class="alternate{if $m.status.name == 'Active'} glm-admin-table-active{/if}">
+ {/if}
+ <td>
+ <a href="{$thisUrl}?page={$thisPage}&glm_action=memberInfo&member={$memberID}&memberInfo={$m.id}"{if $m.status.value == $statusPending} class="glm-notice"{/if}>{$m.status.name}</a>
+ </td>
+ <td>{$m.reference_name}</td>
+ <td>{$m.create_time.datetime}</td>
+ <td>{$m.modify_time.datetime}</td>
+ <td>
+ {if $m.bad_lat_lon}<span class="glm-error">Bad Map Location</span>{/if}
+ {if apply_filters('glm_members_permit_admin_member_index_clone_activate_info_version', true)}
+ <a href="{$thisUrl}?page={$thisPage}&glm_action=memberInfo&member={$memberID}&memberInfo={$m.id}&option=clone" class="button button-secondary glm-button-small glm-right">Clone</a>
+ {if $m.status.name != 'Active'}<a href="{$thisUrl}?page={$thisPage}&glm_action=index&member={$memberID}&activateID={$m.id}" class="button button-secondary glm-button-small glm-right">Activate</a>{/if}
+ {/if}
+ </td>
+ </tr>
+
+
+ {/if}
+ {/foreach}
+ {else} <!-- haveInfoRecords -->
+ <tr><td colspan="5"><a href="{$thisUrl}?page={$thisPage}&glm_action=memberInfo&member={$memberID}">Click here to start entering information for this {$terms.term_member}.</a></td></tr>
+ {/if}
+ </tbody>
+ </table>
+ {/if} <!-- apply_filters -->
+ {/if}
-{if $widgets = apply_filters('glm-member-db-dashboard-member-widgets', '')}
- {$widgets}
-{/if}
<p> </p>
<h3 class="glm-error">No {$terms.term_member} currently selected.</h3>
{/if}
+{if $lockedToMember}
+ <div id="glm-dashboard-widgets-wrap">
+ {apply_filters('glm-member-db-dashboard-member-widgets', $member)}
+ </div>
+{/if}
+
<script type="text/javascript">
jQuery(document).ready(function($) {