Also worked on placing the request model into cart.
}
-
-
+
+
/*
* Create a new cart
*
* A new cart consists of only one reg_request record
- *
+ *
* @return array Array of request and all associated information or false
* @access public
*/
public function createRegistrationCart()
{
-
+
$res = $this->wpdb->insert(
GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request',
array(
'%s'
)
);
-
+
if ($res != 1) {
return false;
}
-
+
// If there's a new reg request id, declare success
$requestID = $this->wpdb->insert_id;
if ($requestID) {
return $requestID;
}
-
+
return false;
-
+
}
-
-
+
+
/*
* Retrieve a complete cart
*
$RegEvent = new GlmDataRegistrationsRegEvent($this->wpdb, $this->config);
$RegTime = new GlmDataRegistrationsRegTime($this->wpdb, $this->config);
- $RegRequest = new GlmDataRegistrationsRequest($this->wpdb, $this->config);
+ $RegRequest = new GlmDataRegistrationsRegRequest($this->wpdb, $this->config);
$RequestEvent = new GlmDataRegistrationsRequestEvent($this->wpdb, $this->config);
$RequestClass = new GlmDataRegistrationsRequestClass($this->wpdb, $this->config);
$RequestRate = new GlmDataRegistrationsRegRequestRate($this->wpdb, $this->config);
}
$this->cart['status'] = true;
-
+
if ($json) {
return json_encode($this->cart);
}
float: left;
clear: left;
}
-.glm-reg-level h3 {
+.glm-reg-level-title {
font-size: 1rem;
font-weight: bold;
- background-color: #729d8d;
- color: white;
text-decoration: none;
padding: .3rem;
+ width: 80%;
+}
+.glm-class-row-header {
+ border-bottom: 4px solid black;
+ height: 2rem;
}
.glm-reg-entryforms {
width: 100%;
div.glm-reg-login h4 {
color: white;
}
+.reg-class-detail {
+ /* display: none; */
+}
+.toggle-class-open {
+ font-size: 1.5rem;
+ float: right;
+}
+.toggle-class-close {
+ font-size: 2rem;
+ display: none;
+ float: right;
+}
+.reg-class-count {
+ float: right;
+}
+.reg-class-accounts {
+ padding: 5px;
+}
'js/model/front/*.js',
'js/collections/front/*.js',
'js/views/front/*.js',
- ], {awaitWriteFinish: true}, ['frontscripts']);
+ ], ['frontscripts']);
});
gulp.task('default', ['frontscripts', 'adminscripts', 'watch']);
app.Models.Front.Cart = Backbone.Model.extend({
defaults: {
- name: 'cart',
+ status: null,
+ errorMsg: '',
+ notes: [],
+ accounts: [],
+ times: [],
+ request: {},
},
- initialize: function(){
- this.events = new app.Collections.Front.RegEvents;
+ setRequest: function( request ){
+ this.request = new app.Models.Front.Request( request );
+ },
+
+ setAccounts: function( accounts ){
+ this.accounts = accounts;
},
});
});
+app.Models.Front.Request = Backbone.Model.extend({
+ defaults: {
+ id: null,
+ account: null,
+ account_fname: '',
+ account_lname: '',
+ },
+});
+
// js/collections/accounts.js
// Event Registrant collection
template: _.template( jQuery('#account-template').html() ),
events: {
- 'click label': 'edit',
+ //'click label': 'edit',
'click .glm-reg-level-registrant-delete': 'deleteOne',
'click .saveRegistrant': 'close',
},
el: '#regApp',
initialize: function(){
+ this.cart = cart;
this.event = new app.Views.Front.RegEvent({ model: regEvent });
this.render();
},
events: {
'click .addRegistrant': 'newEntry',
+ 'click .toggle-class-open': 'toggleClassOpen',
+ 'click .toggle-class-close': 'toggleClassClose',
//'click .glm-reg-level-registrant-delete': 'deleteOne',
},
+ toggleClassOpen: function(){
+ this.$('.reg-class-detail').show();
+ this.$('.toggle-class-open').hide();
+ this.$('.toggle-class-close').show();
+ },
+
+ toggleClassClose: function(){
+ this.$('.reg-class-detail').hide();
+ this.$('.toggle-class-close').hide();
+ this.$('.toggle-class-open').show();
+ },
+
// For the new entry check the email from the server and see
// if there's already an account setup.
newEntry: function(){
var view = this.model.accounts.map(function(item){
return (new app.Views.Front.Account({ model: item })).render().el;
});
- this.$el.append(view);
+ var accountContainer = this.$('.reg-class-accounts');
+ accountContainer.append(view);
return this;
},
app.Models.Front.Cart = Backbone.Model.extend({
defaults: {
- name: 'cart',
+ status: null,
+ errorMsg: '',
+ notes: [],
+ accounts: [],
+ times: [],
+ request: {},
},
- initialize: function(){
- this.events = new app.Collections.Front.RegEvents;
+ setRequest: function( request ){
+ this.request = new app.Models.Front.Request( request );
+ },
+
+ setAccounts: function( accounts ){
+ this.accounts = accounts;
},
});
--- /dev/null
+app.Models.Front.Request = Backbone.Model.extend({
+ defaults: {
+ id: null,
+ account: null,
+ account_fname: '',
+ account_lname: '',
+ },
+});
template: _.template( jQuery('#account-template').html() ),
events: {
- 'click label': 'edit',
+ //'click label': 'edit',
'click .glm-reg-level-registrant-delete': 'deleteOne',
'click .saveRegistrant': 'close',
},
el: '#regApp',
initialize: function(){
+ this.cart = cart;
this.event = new app.Views.Front.RegEvent({ model: regEvent });
this.render();
},
events: {
'click .addRegistrant': 'newEntry',
+ 'click .toggle-class-open': 'toggleClassOpen',
+ 'click .toggle-class-close': 'toggleClassClose',
//'click .glm-reg-level-registrant-delete': 'deleteOne',
},
+ toggleClassOpen: function(){
+ this.$('.reg-class-detail').show();
+ this.$('.toggle-class-open').hide();
+ this.$('.toggle-class-close').show();
+ },
+
+ toggleClassClose: function(){
+ this.$('.reg-class-detail').hide();
+ this.$('.toggle-class-close').hide();
+ this.$('.toggle-class-open').show();
+ },
+
// For the new entry check the email from the server and see
// if there's already an account setup.
newEntry: function(){
var view = this.model.accounts.map(function(item){
return (new app.Views.Front.Account({ model: item })).render().el;
});
- this.$el.append(view);
+ var accountContainer = this.$('.reg-class-accounts');
+ accountContainer.append(view);
return this;
},
}
}
- // Get account ID if supplied
+ // Get eventRegId if supplied
if (isset($_REQUEST['eventRegId'])) {
// Make sure it's numeric
}
$view = 'registration';
+ // Check to see if a session is set for this cart
+ include GLM_MEMBERS_REGISTRATIONS_PLUGIN_CLASS_PATH . '/regCartSupport.php';
+ $regCart = new GlmRegCartSupport( $this->wpdb, $this->config );
+ if ( isset( $_SESSION['glm_reg_cart_id'] ) ) {
+ $cartId = $_SESSION['glm_reg_cart_id'];
+ //unset( $_SESSION['glm_reg_cart_id'] );
+ //echo '<pre>$cartId: ' . print_r( $cartId, true ) . '</pre>';
+ } else {
+ // create one
+ $cartId = $regCart->createRegistrationCart();
+ //echo '<pre>$cart: ' . print_r( $cart, true ) . '</pre>';
+ if ( isset( $cartId ) && filter_var( $cartId, FILTER_VALIDATE_INT ) ) {
+ $_SESSION['glm_reg_cart_id'] = $cartId;
+ }
+
+ }
+ if ( isset( $cartId ) && filter_var( $cartId, FILTER_VALIDATE_INT ) ) {
+ $cart = $regCart->getRegistrationCart( $cartId );
+ echo '<pre>$cart: ' . print_r( $cart, true ) . '</pre>';
+ $regRequestJSON = json_encode( $cart['request'] );
+ }
+ //echo '<pre>$_SESSION: ' . print_r( $_SESSION, true ) . '</pre>';
+
switch ( $option ) {
default:
// Get the RegEvent entry
'cart_hold_days' => $regEvent['cart_hold_days'],
'terms' => 'Sample terms and conditions',
);
- //echo '<pre>$event: ' . print_r( $event, true ) . '</pre>';
break;
$jsonClasses[] = json_encode( $rClass );
}
$regClassJSON = '[' . implode( ',', $jsonClasses ) . ']';
+ $regCartJSON = json_encode( $cart );
// Compile template data
$templateData = array(
'thisJsUrl' => GLM_MEMBERS_REGISTRATIONS_PLUGIN_URL . '/js',
'regEventJSON' => json_encode( $event ),
'regClassesJSON' => $regClassJSON,
+ 'regCartJSON' => $regCartJSON,
+ 'regRequestJSON' => $regRequestJSON,
'eventData' => $eventData,
);
// Return status, any suggested view, and any data to controller
*
* *** Also note that parameters will be in the context of the main front controller constructor. ***
*/
+add_action('init', function(){
+ if ( !session_id() ) {
+ session_start();
+ }
+});
</script>
<script type="text/template" id="regClass-template">
- <h3><%= name %></h3>
- <p><%= descr %></p>
- <div>
+ <div class="glm-class-row-header">
+ <span class="glm-reg-level-title"><%= name %></span>
+ <span class="reg-class-count"><%= reg_count %></span>
+ <span class="toggle-class-open">+</span>
+ <span class="toggle-class-close">-</span>
+ </div>
+ <div class="reg-class-detail">
+ <div><%- descr %></div>
<div>Current Rate: <%= reg_rate_name %></div>
<div>Base Price: $<%= reg_rate_base_price %></div>
<div>Per Registrant: $<%= reg_rate_per_reg %></div>
- <div>Total: <%= reg_count %></div>
- <div>Total Price:
- <% if ( reg_count > 0 ) { %>
- $<%= reg_rate_base_price + ( reg_rate_per_reg * reg_count ) %>
- <% } else { %>
- $0
- <% } %>
+ <div class="registrant-add clearfix">
+ <input type="text" class="addEmail" placeholder="Enter Email Address">
+ <input type="submit" class="addRegistrant" value="Add">
+ </div>
+ <div class="reg-class-accounts">
+ Registrants
</div>
- </div>
- <div class="registrant-add clearfix">
- <input type="text" class="addEmail" placeholder="Enter Email Address">
- <input type="submit" class="addRegistrant" value="Add">
</div>
</script>
Views: { Front: {}, Admin: {} },
};
var regEvent = '';
+var cart = '';
jQuery(function($){
+ cart = new app.Models.Front.Cart( {$regCartJSON} );
+ cart.setRequest( {$regRequestJSON} );
regEvent = new app.Models.Front.RegEvent;
regEvent.set( {$regEventJSON} );
regEvent.setClasses( {$regClassesJSON} );