More work on registrations accounts admin pages including added selected account dashboard page and better organization of account admin actions.
}
/*
- * Recalculates and updates all totals for a reg_)time entry
+ * Recalculates and updates all totals for a reg_time entry
*
* @param integer $requestId
*
public function modelAction($actionData = false)
{
- $option = 'list';
+ $option = 'dashboard';
+ $view = 'accountsDashboard';
+ $reason = false;
$numbAccounts = 0;
$hasAccounts = false;
$paging = true;
$filterArchived = false;
$filterPending = false;
$accounts = false;
- $view = 'account';
+ $accountID = false;
$account = false;
$haveAccount = false;
$accountUpdated = false;
$namesList = false;
$numbDisplayed = false;
$lastDisplayed = false;
-
+ $registrations = false;
+ $haveRegistrations = false;
+ $registered = false;
+ $haveRegistered = false;
+
// Get any provided option
if (isset($_REQUEST['option'])) {
$option = $_REQUEST['option'];
if (isset($_REQUEST['account'])) {
// Make sure it's numeric
- $this->accountID = ($_REQUEST['account'] - 0);
-
- if ($this->accountID <= 0) {
- $this->accountID = false;
- }
+ $accountID = ($_REQUEST['account'] - 0);
+ } else {
+
+ // Try to get saved
+ $accountID = get_option('glmMembersDatabaseRegistrationsAccountID');
+
}
-
- $view = 'accountEdit';
-
+
+ if (!$accountID || $accountID <= 0) {
+ $accountID = false;
+ }
+
switch ( $option ) {
case 'add':
+
$account = $this->newEntry();
+ $view = 'accountEdit';
+
break;
case 'insert':
+
$account = $this->insertEntry();
if ( $account['status'] ) {
$accountAdded = true;
} else {
$accountAddError = true;
}
- break;
- case 'edit':
- $account = $this->editEntry( $this->accountID );
- //echo '<pre>$account: ' . print_r( $account, true ) . '</pre>';
- if ( $account['status'] ) {
- $haveAccount = true;
- }
- //echo '<pre>$account: ' . print_r( $account, true ) . '</pre>';
+ $view = 'accountEdit';
+
break;
case 'update':
- $account = $this->updateEntry( $this->accountID );
+
+ $account = $this->updateEntry( $accountID );
if ( $account['status'] ) {
//echo '<pre>$account: ' . print_r( $account, true ) . '</pre>';
$accountUpdated = true;
// Retrieve the Edit Entry again
- $account = $this->editEntry( $this->accountID );
+ $account = $this->editEntry( $accountID );
if ( $account['status'] ) {
$haveAccount = true;
}
$accountUpdateError = true;
}
+ $view = 'accountEdit';
break;
case 'delete':
- $oldAccount = $this->deleteEntry( $this->accountID, true );
- $view = 'account';
-
+
+ echo "*** NEED TO CHECK IF IT'S SAVE TO DELETE THIS ACCOUNT ***";
+
+ // $oldAccount = $this->deleteEntry( $accountID, true );
+
+ $view = 'accountsDashboard';
+
+ break;
+
+ case 'accountDashboard':
+
+ // Load registration request and registration registrant data classes
+ require_once GLM_MEMBERS_REGISTRATIONS_PLUGIN_CLASS_PATH.'/data/dataRegRequest.php';
+ $RegRequest = new GlmDataRegistrationsRequest($this->wpdb, $this->config);
+ require_once GLM_MEMBERS_REGISTRATIONS_PLUGIN_CLASS_PATH.'/data/dataRegRequestRegistrant.php';
+ $RegRequestRegistrant = new GlmDataRegistrationsRequestRegistrant($this->wpdb, $this->config);
+
+ // Get account base data
+ $account = $this->getEntry($accountID);
+ if ($account) {
+
+ $haveAccount = true;
+
+ // Get any registrations submitted
+ $registrations = $RegRequest->getList("T.account = $accountID");
+ if (is_array($registrations) && count($registrations) > 0) {
+ $haveRegistrations = true;
+ }
+
+ // Get any events registered
+ $registered = $RegRequestRegistrant->getList("T.account = $accountID");
+ if (is_array($registered) && count($registered) > 0) {
+ $haveRegistered = true;
+ }
+
+ }
+
+ $view = 'accountDashboard';
+
+ break;
+
+ case 'edit':
+
+ $account = $this->editEntry( $accountID );
+ if ( $account['status'] ) {
+
+ $haveAccount = true;
+ $view = 'accountEdit';
+
+ }
+
+ break;
+
default:
- $where = 'true';
+ case 'dashboard';
+
+ $option = 'dashboard';
+ $where = 'true';
+
// Check if we're doing paging
if (isset($_REQUEST['pageSelect'])) {
$accounts = $accountsResult['list'];
$hasAccounts = ( $accounts !== false && count( $accounts > 0 ) ) ? true: false;
- $view = 'account';
// Get full list of names matching this where clause for search box
$namesList = $this->getIdName( $where );
unset( $accountsResult );
+
+ $view = 'accountsDashboard';
+
break;
+
}
-
+
+ // If we have a valid account ID, save that for future use
+ if ($accountID > 0) {
+ update_option('glmMembersDatabaseRegistrationsAccountID', $accountID);
+ }
+
// Compile template data
$templateData = array(
'hasAccounts' => $hasAccounts,
'toDate' => $toDate,
'filterArchived' => $filterArchived,
'filterPending' => $filterPending,
- 'accountID' => $this->accountID,
+ 'accountID' => $accountID,
'haveAccount' => $haveAccount,
'accountUpdated' => $accountUpdated,
'accountUpdateError' => $accountUpdateError,
'namesList' => $namesList,
'numbDisplayed' => $numbDisplayed,
'lastDisplayed' => $lastDisplayed,
+ 'registrations' => $registrations,
+ 'haveRegistrations' => $haveRegistrations,
+ 'registered' => $registered,
+ 'haveRegistered' => $haveRegistered,
+ 'reason' => $reason
);
// Return status, any suggested view, and any data to controller
return array(
+++ /dev/null
-{include file='admin/registrations/header.html'}
-
-<h3>Account List Page</h3>
-
- <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-accounts&glm_action=accounts&option=add" class="button button-secondary glm-button glm-right">Add A New Account</a>
-
- <form action="{$thisUrl}?page={$thisPage}" method="post" id="searchForm">
-
- <input type="hidden" name="prevStart" value="{$prevStart}">
- <input type="hidden" name="nextStart" value="{$nextStart}">
- <input type="hidden" name="limit" value="{$limit}">
-
- <div class="">
- <p>
- <span class="glm-nowrap">
- <b>Name Search: </b><input id="glmEventsSearch" name="textSearch" type="text" id="autoTest">
- <input type="submit" value="Submit">
- </span>
- <p>
- </div>
-
- <br clear="all">
- <p><b>Total found:</b> {$numAccounts} </p>
-
- {if $paging && $numAccounts}
- <input type="Submit" name="pageSelect" value="Previous {$limit} Events" class="button button-secondary glm-button"{if !$prevStart} disabled{/if}>
- <input type="Submit" name="pageSelect" value="Next {$limit} Events" class="button button-secondary glm-button"{if !$nextStart} disabled{/if}>
- {/if}
-
-{if $hasAccounts}
- {assign var="i" value="0"}
- <table class="wp-list-table striped glm-admin-table">
- <thead>
- <tr>
- <th>ID</th>
- <th>Active</th>
- <th>Name</th>
- <th>Created</th>
- <th>Member ID</th>
- </tr>
- </thead>
- <tbody>
- {foreach $accounts as $account}
- {if $i++ is odd by 1}
- <tr>
- {else}
- <tr class="alternate">
- {/if}
- <td>{$account.id}</td>
- <td>{$account.active.name}</td>
- <td>
- <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-accounts&glm_action=accounts&option=edit&account={$account.id}">{$account.fname} {$account.lname}</a>
- </td>
- <td>{$account.date_created.timestamp|date_format:"%D"}</td>
- <td>{$account.member_id}</td>
- </tr>
- {/foreach}
- </table>
-{/if}
-
- {if $paging && $numAccounts}
- <input type="Submit" name="pageSelect" value="Previous {$limit} Events" class="button button-secondary glm-button"{if !$prevStart} disabled{/if}>
- <input type="Submit" name="pageSelect" value="Next {$limit} Events" class="button button-secondary glm-button"{if !$nextStart} disabled{/if}>
- {/if}
-
- </form>
-
- <script>
- 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 $namesList as $e}
- { label: "{$e.fname|replace:'"':"'"} {$e.lname|replace:'"':"'"}", value: "{$e.fname|replace:'"':"'"} {$e.lname|replace:'"':"'"}", id: '{$e.id}' },
- {/foreach}
- ];
-
- $( "#glmEventsSearch" ).autocomplete({
- source: availableTags,
- html: true,
- position: { my : "right top", at: "right bottom" },
- select: function( event, ui ) {
- var accountID = ui.item.id;
- window.location.replace("{$adminUrl}?page=glm-members-admin-menu-registrations-accounts&glm_action=accounts&option=edit&account=" + accountID );
- },
- response: function(event, ui) {
- if (!ui.content.length) {
- var noResult = { value:"",label:"No results found" };
- ui.content.push(noResult);
- }
- }
- });
- });
- </script>
-
-{include file='admin/footer.html'}
-
--- /dev/null
+{include file='admin/registrations/accountHeader.html'}
+
+<h3>Account Dashboard
+ <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-accounts&glm_action=accounts&option=edit&account={$accountID}" class="button button-secondary glm-button glm-right">Edit Account</a>
+</h3>
+
+
+{if $paging && $numAccounts}
+ <input type="Submit" name="pageSelect" value="Previous {$limit} Events" class="button button-secondary glm-button"{if !$prevStart} disabled{/if}>
+ <input type="Submit" name="pageSelect" value="Next {$limit} Events" class="button button-secondary glm-button"{if !$nextStart} disabled{/if}>
+{/if}
+
+<div id="glm-admin-member-registrations-account-detail" class="glm-admin-table">
+ <div class="glm-row">
+ <div class="glm-small-4 glm-left">
+ <div class="glm-admin-table">
+ <div class="glm-row">
+ <div class="glm-small-12 glm-column">
+ <h3>Account:</h3>
+ </div>
+ <div class="glm-small-12 glm-column">
+ {$account.fname} {$account.lname}{if $account.title}, {$account.title}{/if}
+ </div>
+ <div class="glm-small-12 glm-column">
+ {$account.org}
+ </div>
+ <div class="glm-small-12 glm-column">
+ {$account.addr1}
+ </div>
+ {if $account.addr2}
+ <div class="glm-small-12 glm-column">
+ {$account.addr2}
+ </div>
+ {/if}
+ <div class="glm-small-12 glm-column">
+ {$account.city}, {$account.state} {$account.zip}
+ </div>
+ <div class="glm-small-12 glm-column">
+ {$account.country}
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="glm-small-4 glm-left">
+ <div class="glm-admin-table">
+ <div class="glm-row">
+ <div class="glm-small-12 glm-column">
+ <h3>Active:</h3>
+ </div>
+ <div class="glm-small-12 glm-column">
+ {if $account.active}Yes{/if}
+ </div>
+ </div>
+ </div>
+ <div class="glm-admin-table">
+ <div class="glm-row">
+ <div class="glm-small-12 glm-column">
+ <h3>Login Validated:</h3>
+ </div>
+ <div class="glm-small-12 glm-column">
+ {if $account.validated}Yes{/if}
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+
+<div style="margin-top: 2em">
+ <h1>Registration Requests</h1>
+ {assign var="i" value="0"}
+ <table class="wp-list-table striped glm-admin-table">
+ <thead>
+ <tr>
+ <th>Submitted</th>
+ <th>Payment By</th>
+ <th>Total Payment</th>
+ <th>Status</th>
+ </tr>
+ </thead>
+ <tbody>
+ {foreach $registrations as $reg}
+ {if $i++ is odd by 1}
+ <tr>
+ {else}
+ <tr class="alternate">
+ {/if}
+ <td>{$reg.date_submitted.datetime}</td>
+ <td>{$reg.pay_method.name}</td>
+ <td>{$reg.total}</td>
+ <td>{$reg.status.name}</td>
+ </tr>
+ {/foreach}
+ </table>
+</div>
+
+<div style="margin-top: 2em">
+ <h1>Registered for Events</h1>
+ {assign var="i" value="0"}
+ <table class="wp-list-table striped glm-admin-table">
+ <thead>
+ <tr>
+ <th>Event Name</th>
+ <th>Date/Time</th>
+ </tr>
+ </thead>
+ <tbody>
+ {foreach $registered as $reg}
+ {if $i++ is odd by 1}
+ <tr>
+ {else}
+ <tr class="alternate">
+ {/if}
+ <td>{$reg.event_name}</td>
+ <td>{$reg.event_datetime.datetime}</td>
+ </tr>
+ {/foreach}
+ </table>
+</div>
+
+
+
+{include file='admin/footer.html'}
+
-{include file='admin/registrations/header.html'}
+{include file='admin/registrations/accountHeader.html'}
- <a href="{$thisUrl}?page={$thisPage}&glm_action=accounts"
- class="button button-secondary glm-button glm-right">Return to Account List</a>
+ <a href="{$thisUrl}?page={$thisPage}&glm_action=accounts&option=accountDashboard&account={$accountID}" class="button button-secondary glm-button glm-right">Return to Account</a>
{if $option == 'edit' || $option == 'update'}
- <a id="deleteAccountButton" class="button button-secondary glm-button glm-right">Delete this Account</a>
- <div id="deleteAccountDialog" class="glm-dialog-box" title="Delete Account">
- <center>
- <p><a id="deleteAccountCancel" class="button button-primary">Cancel</a></p>
- <p><input id="deleteAccountSubmit" type="submit" value="Delete this contact"></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 Account" button above will
- delete all of the data and images associated with this contact.
- </span>
- </p>
- <p>
- <span class="glm-error">Once deleted, this information will no longer be available and cannot be retrieved!</span>
- </p>
- </div>
- </div>
<h2>Edit Account
{else}
<h2>Add new Account
{if $accountAddError}<span class="glm-error glm-flash-updated">Account Add Error</span>{/if}
</h2>
+ <p> </p>
<form action="{$thisUrl}?page={$thisPage}" method="post" id="searchForm">
<input type="hidden" name="glm_action" value="accounts">
--- /dev/null
+<div class="wrap">
+<h2>Registration Accounts</h2>
+<h2 class="nav-tab-wrapper">
+ <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-accounts" class="nav-tab{if $option==dashboard} nav-tab-active{/if}">Dashboard</a>
+ <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-accounts&option=accountDashboard" class="nav-tab{if $option==accountDashboard} nav-tab-active{/if}">Selected Account</a>
+</h2>
+<div id="glm-admin-content-container">
--- /dev/null
+{include file='admin/registrations/accountHeader.html'}
+
+<h3>Accounts Dashboard
+ <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-accounts&glm_action=accounts&option=add" class="button button-secondary glm-button glm-right">Add A New Account</a>
+</h3>
+
+ <form action="{$thisUrl}?page={$thisPage}" method="post" id="searchForm">
+
+ <input type="hidden" name="prevStart" value="{$prevStart}">
+ <input type="hidden" name="nextStart" value="{$nextStart}">
+ <input type="hidden" name="limit" value="{$limit}">
+
+ <div class="">
+ <p>
+ <span class="glm-nowrap">
+ <b>Name Search: </b><input id="glmEventsSearch" name="textSearch" type="text" id="autoTest">
+ <input type="submit" value="Submit">
+ </span>
+ <p>
+ </div>
+
+ <br clear="all">
+ <p><b>Total found:</b> {$numAccounts} </p>
+
+ {if $paging && $numAccounts}
+ <input type="Submit" name="pageSelect" value="Previous {$limit} Events" class="button button-secondary glm-button"{if !$prevStart} disabled{/if}>
+ <input type="Submit" name="pageSelect" value="Next {$limit} Events" class="button button-secondary glm-button"{if !$nextStart} disabled{/if}>
+ {/if}
+
+{if $hasAccounts}
+ {assign var="i" value="0"}
+ <table class="wp-list-table striped glm-admin-table">
+ <thead>
+ <tr>
+ <th>ID</th>
+ <th>Active</th>
+ <th>Name</th>
+ <th>Created</th>
+ <th>Member ID</th>
+ </tr>
+ </thead>
+ <tbody>
+ {foreach $accounts as $account}
+ {if $i++ is odd by 1}
+ <tr>
+ {else}
+ <tr class="alternate">
+ {/if}
+ <td>{$account.id}</td>
+ <td>{$account.active.name}</td>
+ <td>
+ <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-accounts&glm_action=accounts&option=accountDashboard&account={$account.id}">{$account.fname} {$account.lname}</a>
+ </td>
+ <td>{$account.date_created.timestamp|date_format:"%D"}</td>
+ <td>{$account.member_id}</td>
+ </tr>
+ {/foreach}
+ </table>
+{/if}
+
+ {if $paging && $numAccounts}
+ <input type="Submit" name="pageSelect" value="Previous {$limit} Events" class="button button-secondary glm-button"{if !$prevStart} disabled{/if}>
+ <input type="Submit" name="pageSelect" value="Next {$limit} Events" class="button button-secondary glm-button"{if !$nextStart} disabled{/if}>
+ {/if}
+
+ </form>
+
+ <script>
+ 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 $namesList as $e}
+ { label: "{$e.fname|replace:'"':"'"} {$e.lname|replace:'"':"'"}", value: "{$e.fname|replace:'"':"'"} {$e.lname|replace:'"':"'"}", id: '{$e.id}' },
+ {/foreach}
+ ];
+
+ $( "#glmEventsSearch" ).autocomplete({
+ source: availableTags,
+ html: true,
+ position: { my : "right top", at: "right bottom" },
+ select: function( event, ui ) {
+ var accountID = ui.item.id;
+ window.location.replace("{$adminUrl}?page=glm-members-admin-menu-registrations-accounts&glm_action=accounts&option=edit&account=" + accountID );
+ },
+ response: function(event, ui) {
+ if (!ui.content.length) {
+ var noResult = { value:"",label:"No results found" };
+ ui.content.push(noResult);
+ }
+ }
+ });
+ });
+ </script>
+
+{include file='admin/footer.html'}
+