From a86ce34ee51a8677776efca51e1da4f939109470 Mon Sep 17 00:00:00 2001 From: Chuck Scott Date: Tue, 10 Mar 2015 11:27:01 -0400 Subject: [PATCH] Added clone feature to data abstract and various additional feature and link updates to the application. --- classes/data/dataMemberInfo.php | 12 +- classes/glmMemberInfoClone.php | 121 ++++++++++++++ lib/GlmDataAbstract/DataAbstract.php | 148 ++++++++++++++++-- lib/GlmDataAbstract/documentation.txt | 4 + ...a1e104c26a275acc180da0.file.index.html.php | 68 +++++++- ...23ae1a70b66cefbd681db.file.header.html.php | 6 +- ...40ebc45e387f5f95c45e90.file.index.html.php | 15 +- ...44e61950c851e98e8906d49.file.list.html.php | 21 ++- ...5e8bedbedd434341aeca9.file.header.html.php | 6 +- models/admin/member/memberInfo.php | 44 ++++-- models/admin/members/index.php | 19 ++- models/admin/members/list.php | 14 +- views/admin/member/header.html | 2 +- views/admin/member/index.html | 11 +- views/admin/members/header.html | 2 +- views/admin/members/index.html | 46 +++++- views/admin/members/list.html | 14 +- 17 files changed, 481 insertions(+), 72 deletions(-) create mode 100644 classes/glmMemberInfoClone.php diff --git a/classes/data/dataMemberInfo.php b/classes/data/dataMemberInfo.php index 813ebcce..815bc156 100644 --- a/classes/data/dataMemberInfo.php +++ b/classes/data/dataMemberInfo.php @@ -116,12 +116,20 @@ class GlmDataMemberInfo extends GlmDataAbstract { 'type' => 'pointer', 'p_table' => GLM_MEMBERS_PLUGIN_DB_PREFIX . 'members', 'p_field' => 'name', - 'p_orderby' => 'name', - 'p_blank' => true, + 'p_static' => true, 'required' => true, 'use' => 'a' ), + // Member Pointer index + 'member_pointer' => array ( + 'field' => 'member', + 'as' => 'member_pointer', + 'type' => 'integer', + 'required' => true, + 'use' => 'gle' + ), + // Reference Name - Not displayed to user 'reference_name' => array ( 'field' => 'reference_name', diff --git a/classes/glmMemberInfoClone.php b/classes/glmMemberInfoClone.php new file mode 100644 index 00000000..e7223cad --- /dev/null +++ b/classes/glmMemberInfoClone.php @@ -0,0 +1,121 @@ + + * @license http://www.gaslightmedia.com Gaslightmedia + * @release glmMemberInfoClone.php,v 1.0 2014/10/31 19:31:47 cscott Exp $ + * @link http://dev.gaslightmedia.com/ + */ + +/* + * This class provides facilities for cloning a complete member information + * record including all associated information and images. + * + */ +class GlmMemberInfoClone +{ + /** + * WordPress Database Object + * + * @var $wpdb + * @access public + */ + public $wpdb; + /** + * Plugin Configuration Data + * + * @var $config + * @access public + */ + public $config; + + + /** + * Constructor + * + * Clone a member information record and anything associated with it + * to create a new complete member information record that is identical + * to the source except that it is set to "pending". + * + * @param object $wpdb Word Press database object + * @param array $config Configuration data + * @param integer $memberInfoID ID of the member info record to clone + * + * @return integer ID of the new cloned member information record + * @access public + **/ + function __construct ($wpdb, $config) + { + + // Save WordPress Database object + $this->wpdb = $wpdb; + + // Save plugin configuration object + $this->config = $config; + + } + + /* + * Check if this is a second call to the activation hook by WordPress to activate this plugin. + * + * (Yea, I know that's stupid behavior, but there's nothing I can do about it.) + * It tells us this is happening by setting the 'action' GET parameter to 'error_scrape', + * which is also stupid. + * + * In this case, we don't want to try again, so output any saved notices from the first pass + * and then exit to tell WordPress the plugin didn't install. + * + * @return void + * @access public + */ + public function cloneMemberInfo($id) + { + + // Load Member Info Data Class and get info data for later use + require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataMemberInfo.php'); + $MemberInfo = new GlmDataMemberInfo($this->wpdb, $this->config); + $memberInfo = $MemberInfo->getEntry($id); + + // Create a new base info record and get its ID - this also copies images to a new name + $newID = $MemberInfo->cloneEntry($id); + + // If the clone was successful + if ($newID != false) { + + // Update create and update times to now and set info record to pending + $t = date('Y-m-d H:i:s', time()); + $newReferenceName = "CLONED - ".$memberInfo['reference_name']; + $sql = " + UPDATE ".$MemberInfo->table." + SET create_time = '$t', modify_time = '$t', status = ".$this->config['status_numb']['Pending'].", reference_name = '".addslashes($newReferenceName)."' + WHERE id = $newID + ;"; + $this->wpdb->query($sql); + + // Duplicate all category_member_info table entries + $sql = " + INSERT INTO ".GLM_MEMBERS_PLUGIN_DB_PREFIX."category_member_info + (category,member_info) + SELECT category, $newID + FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."category_member_info + WHERE member_info = $id + ;"; +echo $sql; + $this->wpdb->query($sql); + + } + + return $newID; + + } + +} + +?> \ No newline at end of file diff --git a/lib/GlmDataAbstract/DataAbstract.php b/lib/GlmDataAbstract/DataAbstract.php index eea7bc67..2f1daaf1 100755 --- a/lib/GlmDataAbstract/DataAbstract.php +++ b/lib/GlmDataAbstract/DataAbstract.php @@ -584,6 +584,18 @@ abstract class GlmDataAbstract * will not return a list of options. */ + // Get ID field of other table - default to 'id' + $p_id = 'id'; + if(isset($f['p_id'])) { + $p_id = $f['p_id']; + } + + // Check for WHERE option + $where = ''; + if (isset($f['p_where']) && $f['p_where'] != '') { + $where = 'WHERE '.$f['p_where']; + } + // If 'force_list' or $forEdit also get the options for select, unless 'p_static' $alwaysList = (isset($f['force_list']) && $f['force_list']); $pStatic = (isset($f['p_static']) && $f['p_static']); @@ -592,24 +604,12 @@ abstract class GlmDataAbstract $p_value = $d; - // Get pointer options from specified table + // Check for ORDER BY option $order_by = $f['p_field']; if (isset($f['p_orderby']) && $f['p_orderby']) { $order_by = $f['p_orderby']; } - // Get picklist options from other table - $where = ''; - if (isset($f['p_where']) && $f['p_where'] != '') { - $where = 'WHERE '.$f['p_where']; - } - - // Get ID field of other table - default to 'id' - $p_id = 'id'; - if(isset($f['p_id'])) { - $p_id = $f['p_id']; - } - // If p_sum is selected, do a special query if ($pSum) { @@ -693,6 +693,18 @@ abstract class GlmDataAbstract } // else p_sum + // Not doing list so get value only + } else { + + $sql = " + SELECT ".$f['p_field']." + FROM ".$f['p_table']." + WHERE $p_id = $d + "; + $res = $this->wpdb->get_row($sql, ARRAY_A); + + return $res[$f['p_field']]; + } return $d; @@ -2671,6 +2683,7 @@ abstract class GlmDataAbstract $this->fieldData[$as] = array( 'name' => $as, 'store_name' => $v['field'], + 'type' => $v['type'], 'required' => (isset($v['required']) && $v['required']), 'submit_error' => false ); @@ -2938,7 +2951,7 @@ abstract class GlmDataAbstract } /** - * Detail Method + * Get Detail Method * * @return void * @access public @@ -2977,6 +2990,113 @@ abstract class GlmDataAbstract return $detail; } + /** + * Clone Entry Method + * + * @param integer $id ID of entry to clone + * + * @return integer Entry new entry ID + * @access public + */ + public function cloneEntry($id) + { + + if ($id-0 == 0) { + // echo "DataAbstract.php - getEntry() called with invalid ID"; + return false; + } + + // Build fields list with fiels selected for insert + $this->buildFieldsList('i'); + + // Build field list string including all but the ID field + $fields = ''; + $imageFields = array(); + $sep = ''; + foreach ($this->fieldData as $f) { + + // Add all fields but the ID field to the fields list + if ($f['name'] != 'id') { + $fields .= $sep.$f['name']; + $sep = ', '; + } + + // Located any fields that require special processing + if ($f['type'] == 'image') { + $imageFields[] = $f['name']; + } + } + + // Assemble query to duplicate the record. + $sql = " + INSERT INTO ".$this->table." + ( $fields ) + SELECT $fields + FROM $this->table + WHERE id = $id + ;"; + $this->wpdb->query($sql); + + // Get new ID and data from the new record + $newID = $this->wpdb->insert_id; + + // If we have a new record now + if($newID) { + + $newData = $this->getEntry($newID); + + // Check for any images that need to be duplicated + if (count($imageFields) > 0) { + + $updateSQL = ''; + $sep = ''; + + foreach ($imageFields as $f) { + + // If there's an image referenced + if ($newData[$f] != '') { + + // Create new image name + $newName = preg_replace('/\d{10}/', time(), $newData[$f]); + + // For each image size + while (list($k, $v) = each($this->config['imageSizes'])) { + + // Check if we have that size for the original image, then copy it to the new name + if (file_exists(GLM_MEMBERS_PLUGIN_IMAGES_PATH.'/'.$k.'/'.$newData[$f])) { + copy(GLM_MEMBERS_PLUGIN_IMAGES_PATH.'/'.$k.'/'.$newData[$f], GLM_MEMBERS_PLUGIN_IMAGES_PATH.'/'.$k.'/'.$newName); + } + + } + + // Add to sql to update this field + $updateSQL .= $sep."$f = '$newName'"; + $sep = ', '; + + } + + } + + // If there were any updates + if ($updateSQL != '') { + + $sql = " + UPDATE ".$this->table." + SET $updateSQL + WHERE id = $newID + ;"; + $this->wpdb->query($sql); + } + + } + + return $newID; + } + + return false; + + } + /** * New Method * diff --git a/lib/GlmDataAbstract/documentation.txt b/lib/GlmDataAbstract/documentation.txt index dd0dd7cd..ae0828d3 100644 --- a/lib/GlmDataAbstract/documentation.txt +++ b/lib/GlmDataAbstract/documentation.txt @@ -53,6 +53,10 @@ insertEntry() Checks for and compiles input data from the $_REQUEST array, the data into a single database table or if a composite into multiple related tables. +cloneEntry() Makes a copy of the entry with the specified ID and if + successful returns the ID of the cloned copy. Also makes + duplicates of any images and updates the image names. + editEntry() Builds and returns a single simple database table entry or optionally a single instance of a composite of multiple related table entries and includes the information necessary diff --git a/misc/smarty/templates_c/081a36d97cdf30d438a1e104c26a275acc180da0.file.index.html.php b/misc/smarty/templates_c/081a36d97cdf30d438a1e104c26a275acc180da0.file.index.html.php index 714454ee..238c2b9c 100644 --- a/misc/smarty/templates_c/081a36d97cdf30d438a1e104c26a275acc180da0.file.index.html.php +++ b/misc/smarty/templates_c/081a36d97cdf30d438a1e104c26a275acc180da0.file.index.html.php @@ -1,4 +1,4 @@ - decodeProperties(array ( @@ -7,7 +7,7 @@ $_valid = $_smarty_tpl->decodeProperties(array ( '081a36d97cdf30d438a1e104c26a275acc180da0' => array ( 0 => '/var/www/server/wordpress/wp-content/plugins/glm-member-db/views/admin/members/index.html', - 1 => 1425062899, + 1 => 1426001070, 2 => 'file', ), ), @@ -26,13 +26,16 @@ $_valid = $_smarty_tpl->decodeProperties(array ( 'haveAccommodationTypes' => 0, 'numbMembers' => 0, 'membersPending' => 0, + 'pendingList' => 0, + 'i' => 0, + 'p' => 0, ), 'has_nocache_code' => false, ),false); /*/%%SmartyHeaderCode%%*/?> getSubTemplate ('admin/members/header.html', $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, null, array(), 0);?> -

Members Dashboard

+

Main Dashboard

tpl_vars['haveMemberTypes']->value) {?> @@ -75,9 +78,64 @@ $_valid = $_smarty_tpl->decodeProperties(array (
- tpl_vars['membersPending']->value) {?> class="glm-notice">Member Pending Data: + + tpl_vars['membersPending']->value) {?> class="glm-notice">Pending Member Information: + +
Number of Members Listed: tpl_vars['numbMembers']->value;?>
tpl_vars['membersPending']->value;?> -
tpl_vars['membersPending']->value;?> +
+ +tpl_vars['membersPending']->value) {?> +

Pending Member Information

+ + + + + + + + + + + + tpl_vars["i"] = new Smarty_variable("0", null, 0);?> + tpl_vars['p'] = new Smarty_Variable; $_smarty_tpl->tpl_vars['p']->_loop = false; + $_from = $_smarty_tpl->tpl_vars['pendingList']->value; if (!is_array($_from) && !is_object($_from)) { settype($_from, 'array');} +foreach ($_from as $_smarty_tpl->tpl_vars['p']->key => $_smarty_tpl->tpl_vars['p']->value) { +$_smarty_tpl->tpl_vars['p']->_loop = true; +?> + tpl_vars['i']->value++ / 1)) {?> + + + + + + + + + + +
Member NameLast UpdatedReference Name 
+ tpl_vars['p']->value['member'];?> + + + tpl_vars['p']->value['modify_time']['datetime'];?> + + + tpl_vars['p']->value['reference_name'];?> + + + Manage +
+ + + getSubTemplate ('admin/footer.html', $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, null, array(), 0);?> diff --git a/misc/smarty/templates_c/15f83071407dddb0b3c23ae1a70b66cefbd681db.file.header.html.php b/misc/smarty/templates_c/15f83071407dddb0b3c23ae1a70b66cefbd681db.file.header.html.php index a350316d..770663e0 100644 --- a/misc/smarty/templates_c/15f83071407dddb0b3c23ae1a70b66cefbd681db.file.header.html.php +++ b/misc/smarty/templates_c/15f83071407dddb0b3c23ae1a70b66cefbd681db.file.header.html.php @@ -1,4 +1,4 @@ - decodeProperties(array ( @@ -7,7 +7,7 @@ $_valid = $_smarty_tpl->decodeProperties(array ( '15f83071407dddb0b3c23ae1a70b66cefbd681db' => array ( 0 => '/var/www/server/wordpress/wp-content/plugins/glm-member-db/views/admin/members/header.html', - 1 => 1422653383, + 1 => 1426001053, 2 => 'file', ), ), @@ -30,7 +30,7 @@ $_valid = $_smarty_tpl->decodeProperties(array (

Member Information Versions

-

tpl_vars['showArchived']->value) {?> checked="checked"> Show archived information  

+ + +

+ tpl_vars['showArchived']->value) {?> checked="checked"> Show archived information   +

+
tpl_vars['noActive']->value) {?>

There is no active information for this member.

@@ -187,12 +192,12 @@ $_smarty_tpl->tpl_vars['m']->_loop = true; ?page=tpl_vars['thisPage']->value;?> &glm_action=memberInfo&member=tpl_vars['memberID']->value;?> &id=tpl_vars['m']->value['id'];?> -" class="button-primary glm-right">Manage +&option=clone" class="button-primary glm-right">Clone  tpl_vars['m']->value['status']['name']!='Active') {?>Activate  +" class="button-primary glm-button glm-right">Activate diff --git a/misc/smarty/templates_c/4c287ca0e4946b3d644e61950c851e98e8906d49.file.list.html.php b/misc/smarty/templates_c/4c287ca0e4946b3d644e61950c851e98e8906d49.file.list.html.php index fbda4d8a..8b972ff4 100644 --- a/misc/smarty/templates_c/4c287ca0e4946b3d644e61950c851e98e8906d49.file.list.html.php +++ b/misc/smarty/templates_c/4c287ca0e4946b3d644e61950c851e98e8906d49.file.list.html.php @@ -1,4 +1,4 @@ - decodeProperties(array ( @@ -7,7 +7,7 @@ $_valid = $_smarty_tpl->decodeProperties(array ( '4c287ca0e4946b3d644e61950c851e98e8906d49' => array ( 0 => '/var/www/server/wordpress/wp-content/plugins/glm-member-db/views/admin/members/list.html', - 1 => 1425667668, + 1 => 1425924469, 2 => 'file', ), ), @@ -20,7 +20,8 @@ $_valid = $_smarty_tpl->decodeProperties(array ( 'variables' => array ( 'haveFilter' => 0, - 'filterStatus' => 0, + 'filterArchived' => 0, + 'filterPending' => 0, 'filterName' => 0, 'haveMembers' => 0, 'members' => 0, @@ -36,7 +37,8 @@ $_valid = $_smarty_tpl->decodeProperties(array (
tpl_vars['haveFilter']->value) {?> class="glm-notice">List Filters:   - tpl_vars['filterStatus']->value) {?> checked>Has Pending Information   + tpl_vars['filterArchived']->value) {?> checked>Only show Archived   + tpl_vars['filterPending']->value) {?> checked>Only show Pending Information   Search @@ -110,11 +112,16 @@ $_smarty_tpl->tpl_vars['m']->_loop = true; var filter = ''; - // Check for pending data filter - if ($("#filterPending").attr('checked')) { - filter += '&filterPending=true'; + // Check for archived filter + if ($("#filterArchived").attr('checked')) { + filter += '&filterArchived=true'; } + // Check for pending data filter + if ($("#filterPending").attr('checked')) { + filter += '&filterPending=true'; + } + // Check for member name filter var filterName = $("#filterName").val(); if (filterName != '') { diff --git a/misc/smarty/templates_c/c74bd17240f8892f8955e8bedbedd434341aeca9.file.header.html.php b/misc/smarty/templates_c/c74bd17240f8892f8955e8bedbedd434341aeca9.file.header.html.php index 556d0dfa..cbaf7cca 100644 --- a/misc/smarty/templates_c/c74bd17240f8892f8955e8bedbedd434341aeca9.file.header.html.php +++ b/misc/smarty/templates_c/c74bd17240f8892f8955e8bedbedd434341aeca9.file.header.html.php @@ -1,4 +1,4 @@ - decodeProperties(array ( @@ -7,7 +7,7 @@ $_valid = $_smarty_tpl->decodeProperties(array ( 'c74bd17240f8892f8955e8bedbedd434341aeca9' => array ( 0 => '/var/www/server/wordpress/wp-content/plugins/glm-member-db/views/admin/member/header.html', - 1 => 1424809451, + 1 => 1426001022, 2 => 'file', ), ), @@ -37,7 +37,7 @@ $_valid = $_smarty_tpl->decodeProperties(array ( Dashboard +" class="nav-tabtpl_vars['thisAction']->value=='index') {?>-active">Member Dashboard wpdb->get_row($sql, ARRAY_A); - - // If it is, then save that - if ($activeTest['status'] == $this->config['status_numb']['Active']) { - $isActive = true; - } - } - } // If member ID not supplied - we shouldn't be here, so redirect to an error page @@ -204,6 +190,24 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo } + // If we have a member info record, check if it's active + if ($haveMemberInfo) { + + // Determine if this is the active record + $sql = " + SELECT status + FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_info + WHERE id = $memberInfoID + ;"; + $activeTest = $this->wpdb->get_row($sql, ARRAY_A); + + // If it is, then save that + if ($activeTest['status'] == $this->config['status_numb']['Active']) { + $isActive = true; + } + + } + // Get member base data require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataMembers.php'); $Members = new GlmDataMembers($this->wpdb, $this->config); @@ -263,6 +267,18 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo break; + // Clone the member information record. + case 'clone': + + // Load Member Info Clone Class + require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/glmMemberInfoClone.php'); + $CloneMemberInfo = new GlmMemberInfoClone($this->wpdb, $this->config); + + // Clone the current member info + $memberInfoID = $CloneMemberInfo->cloneMemberInfo($memberInfoID); + + $MemberInfo = $this->editEntry($memberInfoID); + // Default is to display the currently selected member information record in a form for updates default: diff --git a/models/admin/members/index.php b/models/admin/members/index.php index 9cccabb5..af8b219b 100644 --- a/models/admin/members/index.php +++ b/models/admin/members/index.php @@ -14,14 +14,14 @@ */ // Load Members data abstract -require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataMemberInfo.php'); +require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataMembers.php'); /* * This class performs the work for the default action of the "Members" menu * option, which is to display the members dashboard. * */ -class GlmMembersAdmin_members_index extends GlmDataMemberInfo +class GlmMembersAdmin_members_index extends GlmDataMembers { /** @@ -127,8 +127,16 @@ class GlmMembersAdmin_members_index extends GlmDataMemberInfo $accommodationTypesStats = $AccommodationTypes->getStats(); $haveAccommodationTypes = ($accommodationTypesStats > 0); - // Get number of members with pending updates - $membersPending = $this->getStats('status = '.$this->config['status_numb']['Pending']); + // 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); + $membersPending = $MemberInfo->getStats('status = '.$this->config['status_numb']['Pending']); + + // If there's members with pending information, list them + if ($membersPending > 0) { + + $pendingList = $MemberInfo->getList('status = '.$this->config['status_numb']['Pending']); + } // Compile template data $templateData = array( @@ -137,7 +145,8 @@ class GlmMembersAdmin_members_index extends GlmDataMemberInfo 'haveMemberTypes' => $haveMemberTypes, 'haveCategories' => $haveCategories, 'haveRegions' => $haveRegions, - 'haveAccommodationTypes' => $haveAccommodationTypes + 'haveAccommodationTypes' => $haveAccommodationTypes, + 'pendingList' => $pendingList ); // Return status, suggested view, and data to controller diff --git a/models/admin/members/list.php b/models/admin/members/list.php index 05bbd63e..31465651 100644 --- a/models/admin/members/list.php +++ b/models/admin/members/list.php @@ -99,7 +99,8 @@ class GlmMembersAdmin_members_list extends GlmDataMembers public function modelAction ($redirectData = false) { $where = ''; - $filterStatus = false; + $filterPending = false; + $filterArchived = false; $filterName = false; $haveFilter = false; @@ -109,6 +110,12 @@ class GlmMembersAdmin_members_list extends GlmDataMembers $haveFilter = true; } + if (isset($_REQUEST['filterArchived'])) { + $where .= " T.access = ".$this->config['memb_access_numb']['Archived']; + $filterArchived = true; + $haveFilter = true; + } + // Get a current list of members $list = $this->getList($where); @@ -128,7 +135,7 @@ class GlmMembersAdmin_members_list extends GlmDataMembers } } - $filterStatus = true; + $filterPending = true; $haveFilter = true; } @@ -157,7 +164,8 @@ class GlmMembersAdmin_members_list extends GlmDataMembers 'haveMembers' => $haveMembers, 'members' => $list, 'haveFilter' => $haveFilter, - 'filterStatus' => $filterStatus, + 'filterArchived' => $filterArchived, + 'filterPending' => $filterPending, 'filterName' => stripslashes($filterName) // 'canEdit' => $canEdit ); diff --git a/views/admin/member/header.html b/views/admin/member/header.html index c8f8a89e..c66e9407 100644 --- a/views/admin/member/header.html +++ b/views/admin/member/header.html @@ -3,7 +3,7 @@

Member Data

Member Information Versions

-

Show archived information  

+ + +

+ Show archived information   +

+
{if $noActive}

There is no active information for this member.

@@ -106,8 +111,8 @@ {$m.modify_time.datetime} {$m.reference_name} - Manage - {if $m.status.name != 'Active'}Activate{/if}  + Clone  + {if $m.status.name != 'Active'}Activate{/if} {/foreach} diff --git a/views/admin/members/header.html b/views/admin/members/header.html index 7c6161fe..27de251d 100644 --- a/views/admin/members/header.html +++ b/views/admin/members/header.html @@ -1,7 +1,7 @@

Your Members

Members Dashboard

+

Main Dashboard

{if !$haveMemberTypes} @@ -37,8 +37,50 @@
- Member Pending Data: + + Pending Member Information: +
Number of Members Listed: {$numbMembers}
{$membersPending}
{$membersPending}
+ +{if $membersPending} +

Pending Member Information

+ + + + + + + + + + + + {assign var="i" value="0"} + {foreach $pendingList as $p} + {if $i++ is odd by 1} + + {else} + + {/if} + + + + + + {/foreach} + +
Member NameLast UpdatedReference Name 
+ {$p.member} + + {$p.modify_time.datetime} + + {$p.reference_name} + + Manage +
+{/if} + + {include file='admin/footer.html'} diff --git a/views/admin/members/list.html b/views/admin/members/list.html index 87f02446..a25450b5 100644 --- a/views/admin/members/list.html +++ b/views/admin/members/list.html @@ -2,7 +2,8 @@
List Filters:   - Has Pending Information   + Only show Archived   + Only show Pending Information   Search @@ -62,11 +63,16 @@ var filter = ''; - // Check for pending data filter - if ($("#filterPending").attr('checked')) { - filter += '&filterPending=true'; + // Check for archived filter + if ($("#filterArchived").attr('checked')) { + filter += '&filterArchived=true'; } + // Check for pending data filter + if ($("#filterPending").attr('checked')) { + filter += '&filterPending=true'; + } + // Check for member name filter var filterName = $("#filterName").val(); if (filterName != '') { -- 2.17.1