From b810ca67ec1d36cb8c92aa1cab71343353dd998a Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Tue, 4 Oct 2016 10:12:08 -0400 Subject: [PATCH] Setting up the dashboard widget sections for the main client admin. If user can edit all members then they'll get dashboard widgets. --- models/admin/dashboard/members.php | 118 +++++++++++++++++++++++++++++ models/admin/members/index.php | 58 +++++++------- setup/adminHooks.php | 7 ++ setup/validActions.php | 3 +- views/admin/dashboard/members.html | 11 +++ views/admin/members/index.html | 102 +++++++++++++------------ 6 files changed, 223 insertions(+), 76 deletions(-) create mode 100644 models/admin/dashboard/members.php create mode 100644 views/admin/dashboard/members.html diff --git a/models/admin/dashboard/members.php b/models/admin/dashboard/members.php new file mode 100644 index 00000000..f27050c3 --- /dev/null +++ b/models/admin/dashboard/members.php @@ -0,0 +1,118 @@ + + * @license http://www.gaslightmedia.com Gaslightmedia + * @version 0.1 + */ + +require_once GLM_MEMBERS_PLUGIN_CLASS_PATH . '/data/dataMembers.php'; + +/** + * Dashboard Class Model + * + * Each Add-On can have one or more dashboards. + */ + +class GlmMembersAdmin_dashboard_members extends GlmDataMembers +{ + /** + * Word Press Database Object + * + * @var $wpdb + * @access public + */ + public $wpdb; + /** + * Plugin Configuration Data + * + * @var $config + * @access public + */ + public $config; + + /** + * Constructor + * + * This contructor sets up this model. At this time that only includes + * storing away the WordPress data object. + * + * @return object Class object + * + */ + public function __construct( $wpdb, $config ) + { + + // Save WordPress Database object + $this->wpdb = $wpdb; + + // Save plugin configuration object + $this->config = $config; + + // Run constructor for members data class + parent::__construct( false, false ); + + } + + /** + * Perform Model Action + * + * This method does the work for this model and returns any resulting data + * + * @return array Status and data array + * + * 'status' + * + * True if successful and false if there was a fatal failure. + * + * 'menuItemRedirect' + * + * If not false, provides a menu item the controller should + * execute after this one. Normally if this is used, there would also be a + * modelRedirect value supplied as well. + * + * 'modelRedirect' + * + * If not false, provides an action the controller should execute after + * this one. + * + * 'view' + * + * A suggested view name that the controller should use instead of the + * default view for this model or false to indicate that the default view + * should be used. + * + * 'data' + * + * Data that the model is returning for use in merging with the view to + * produce output. + * + */ + public function modelAction ( $actionData = false ) + { + + $success = true; + + // Compile template data. + $templateData = array( + ); + + // Return status, suggested view, and data to controller. + return array( + 'status' => $success, + 'menuItemRedirect' => false, + 'modelRedirect' => false, + 'view' => 'admin/dashboard/members.html', + 'data' => $templateData + ); + + } + +} diff --git a/models/admin/members/index.php b/models/admin/members/index.php index d39298d2..0046ead0 100644 --- a/models/admin/members/index.php +++ b/models/admin/members/index.php @@ -98,7 +98,8 @@ class GlmMembersAdmin_members_index extends GlmDataMembers */ public function modelAction ($actionData = false) { - $success = true; + $success = true; + $manage_members = (current_user_can('glm_members_members')); // Get stats on the current list of members $stats = $this->getStats(); @@ -108,41 +109,41 @@ class GlmMembersAdmin_members_index extends GlmDataMembers // Check for required Member Types require_once GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataMemberTypes.php'; - $MemberTypes = new GlmDataMemberTypes($this->wpdb, $this->config); + $MemberTypes = new GlmDataMemberTypes($this->wpdb, $this->config); $memberTypesStats = $MemberTypes->getStats(); - $haveMemberTypes = ($memberTypesStats > 0); + $haveMemberTypes = ($memberTypesStats > 0); // Check for required Categories require_once GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataCategories.php'; - $Categories = new GlmDataCategories($this->wpdb, $this->config); + $Categories = new GlmDataCategories($this->wpdb, $this->config); $categoriesStats = $Categories->getStats(); - $haveCategories = ($categoriesStats > 0); + $haveCategories = ($categoriesStats > 0); // Check for required Amenities require_once GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataAmenities.php'; - $Amenities = new GlmDataAmenities($this->wpdb, $this->config); + $Amenities = new GlmDataAmenities($this->wpdb, $this->config); $amenitiesStats = $Amenities->getStats(); - $haveAmenities = ($amenitiesStats > 0); + $haveAmenities = ($amenitiesStats > 0); // Check for required Cities require_once GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataCities.php'; - $Cities = new GlmDataCities($this->wpdb, $this->config); + $Cities = new GlmDataCities($this->wpdb, $this->config); $citiesStats = $Cities->getStats(); - $haveCities = ($citiesStats > 0); + $haveCities = ($citiesStats > 0); // Check for required Regions require_once GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataRegions.php'; - $Regions = new GlmDataRegions($this->wpdb, $this->config); + $Regions = new GlmDataRegions($this->wpdb, $this->config); $regionsStats = $Regions->getStats(); - $haveRegions = ($regionsStats > 0); + $haveRegions = ($regionsStats > 0); // Get number of member information records with pending updates require_once GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataMemberInfo.php'; - $MemberInfo = new GlmDataMemberInfo($this->wpdb, $this->config); + $MemberInfo = new GlmDataMemberInfo($this->wpdb, $this->config); $membersPending = $MemberInfo->getStats('status = '.$this->config['status_numb']['Pending']); // Get member information records with bad or no lat/lon - $hideArchived = " T.status != ".$this->config['status_numb']['Archived']; + $hideArchived = " T.status != ".$this->config['status_numb']['Archived']; $badLatLonList = $MemberInfo->getSimpleMemberInfoList($hideArchived.' AND (T.lat = 0 OR T.lon = 0)'); $haveBadLatLon = (is_array($badLatLonList) && count($badLatLonList) > 0); @@ -155,26 +156,27 @@ class GlmMembersAdmin_members_index extends GlmDataMembers // Compile template data $templateData = array( - 'numbMembers' => $stats, - 'membersList' => $membersList, - 'membersPending' => $membersPending, - 'haveBadLatLon' => $haveBadLatLon, - 'badLatLonList' => $badLatLonList, + 'manage_members' => $manage_members, + 'numbMembers' => $stats, + 'membersList' => $membersList, + 'membersPending' => $membersPending, + 'haveBadLatLon' => $haveBadLatLon, + 'badLatLonList' => $badLatLonList, 'haveMemberTypes' => $haveMemberTypes, - 'haveCategories' => $haveCategories, - 'haveAmenities' => $haveAmenities, - 'haveRegions' => $haveRegions, - 'haveCities' => $haveCities, - 'pendingList' => $pendingList + 'haveCategories' => $haveCategories, + 'haveAmenities' => $haveAmenities, + 'haveRegions' => $haveRegions, + 'haveCities' => $haveCities, + 'pendingList' => $pendingList ); // Return status, suggested view, and data to controller return array( - 'status' => $success, + 'status' => $success, 'menuItemRedirect' => false, - 'modelRedirect' => false, - 'view' => 'admin/members/index.html', - 'data' => $templateData + 'modelRedirect' => false, + 'view' => 'admin/members/index.html', + 'data' => $templateData ); } @@ -182,4 +184,4 @@ class GlmMembersAdmin_members_index extends GlmDataMembers } -?> \ No newline at end of file +?> diff --git a/setup/adminHooks.php b/setup/adminHooks.php index b6b6326d..3abfdce8 100644 --- a/setup/adminHooks.php +++ b/setup/adminHooks.php @@ -137,3 +137,10 @@ add_filter( 10, 1 ); +add_filter( + 'glm-member-db-dashboard-member-admin-widgets', + function ( $input = '' ) { + $content = $this->controller( 'dashboard', 'members', $input ); + return $content; + } +); diff --git a/setup/validActions.php b/setup/validActions.php index e217c232..e600035c 100644 --- a/setup/validActions.php +++ b/setup/validActions.php @@ -41,7 +41,8 @@ $glmMembersValidActions = array( 'memberGraphs' => 'glm-member-db', ), 'dashboard' => array( - 'index' => 'glm-member-db', + 'index' => 'glm-member-db', + 'members' => 'glm-member-db', ), 'dashboardWidget' => array( 'index' => 'glm-member-db', diff --git a/views/admin/dashboard/members.html b/views/admin/dashboard/members.html new file mode 100644 index 00000000..67cf37c0 --- /dev/null +++ b/views/admin/dashboard/members.html @@ -0,0 +1,11 @@ +
+
+

+ Pending {$terms.term_member_cap} Profiles +

+
+ Members Pending list + +
+
+
diff --git a/views/admin/members/index.html b/views/admin/members/index.html index d6570c04..d5cc8b23 100644 --- a/views/admin/members/index.html +++ b/views/admin/members/index.html @@ -1,5 +1,5 @@ {include file='admin/members/header.html'} - + {if apply_filters('glm_members_permit_admin_members_index_add_member', true)} Add A New {$terms.term_member_cap} {/if} @@ -17,25 +17,25 @@ You do not have any {$terms.term_member_cap} Types setup. Click here to add {$terms.term_member_cap} Types. - {/if} + {/if} {if !$haveCategories} You do not have any {$terms.term_member_cap} Categories setup. Click here to add {$terms.term_member_cap} Categories. - {/if} + {/if} {if !$haveAmenities} You do not have any Amenities setup. Click here to add Amenities. - {/if} + {/if} {if !$haveCities} You do not have any Cities setup. Click here to add Cities. - {/if} + {/if} {if !$haveRegions} You do not have any Regions setup. @@ -43,25 +43,25 @@ {/if} {/if} - + {if $numbMembers == 0}   You do not have any {$terms.term_member_plur} listed. Click here to create your first {$terms.term_member}. -{/if} +{/if} - +
Number of {$terms.term_member_plur_cap} Listed: {$numbMembers}
- + {apply_filters('glm-member-db-members-othernotices', '')} {if $haveBadLatLon}

 
{$terms.term_member_cap} Profile with Bad Map Location Information

- + @@ -84,50 +84,58 @@
{/if} -{if $membersPending} -

 
Pending {$terms.term_member_cap} Profile

- - - - - - - - - - - {assign var="i" value="0"} - {foreach $pendingList as $p} - {if $i++ is odd by 1} - - {else} - - {/if} - - - - - {/foreach} - -
{$terms.term_member_cap} NameLast UpdatedReference Name
- {$p.member} - - {$p.modify_time.datetime} - - {$p.reference_name} -
+{if $manage_members} +
+ Member Manager Dashboards goes here + {apply_filters('glm-member-db-dashboard-member-admin-widgets', '')} +
+{else} + {if $membersPending} +

 
Pending {$terms.term_member_cap} Profile

+ + + + + + + + + + + {assign var="i" value="0"} + {foreach $pendingList as $p} + {if $i++ is odd by 1} + + {else} + + {/if} + + + + + {/foreach} + +
{$terms.term_member_cap} NameLast UpdatedReference Name
+ {$p.member} + + {$p.modify_time.datetime} + + {$p.reference_name} +
+ {/if} + {/if} {if $membersList} {/if} - + {include file='admin/footer.html'} -- 2.17.1