This way we should be able to use it for edit and add.
position: absolute;
left: 1rem;
top: 0;
- width: 30rem;
+ width: 60rem;
+ z-index: 999;
}
-.new-reg .reg_fname, .new-reg .reg_lname {
+.new-reg h2 {
+ width: auto;
+}
+.new-reg .reg_fname,
+.new-reg .reg_lname,
+.new-reg .reg_addr1,
+.new-reg .reg_addr2,
+.new-reg .reg_city,
+.new-reg .reg_state,
+.new-reg .reg_zip,
+.new-reg .reg_country {
width: 46%;
margin-right: 1rem;
float: left;
}
+.new-reg .reg_email {
+ width: 96%;
+}
+#reg-select-time {
+ width: 150px;
+}
event_code: '',
descr: '',
notify_email: '',
- attendees_max: 0,
- attendees_max_per_reg: 0,
+ attendee_max: 0,
+ attendee_max_per_reg: 0,
reg_hold_minutes: 0,
cart_hold_days: 0,
terms: '',
email: '',
fname: '',
lname: '',
+ addr1: '',
+ addr2: '',
+ city: '',
+ state: '',
+ zip: '',
+ country: '',
},
url: ajaxUrl+'&glm_action=regFront&collection=registrant',
});
-app.Views.Front.NewRegistrant = Backbone.View.extend({
- tagName: 'div',
-
- className: 'new-reg',
-
- template: _.template( jQuery('#eventReg-registrant-add').html() ),
-
- events: {
- },
-
- initialize: function(){
-console.log(this);
- return this;
- },
-
- render: function(){
- this.$el.html( this.template( this.model.toJSON() ) );
- return this;
- },
-
-});
-
// js/views/regClass.js
var newId = 0;
app.Views.Front.RegClass = Backbone.View.extend({
addNew: function(){
var findByEmail = [];
console.log( 'called addNew in regClass view' );
- var fname = this.$('.reg_fname').val().trim();
- var lname = this.$('.reg_lname').val().trim();
- var email = this.$('.reg_email').val().trim();
+ var fname = this.$('.reg_fname').val().trim();
+ var lname = this.$('.reg_lname').val().trim();
+ var email = this.$('.reg_email').val().trim();
+ var addr1 = this.$('.reg_addr1').val().trim();
+ var addr2 = this.$('.reg_addr2').val().trim();
+ var city = this.$('.reg_city').val().trim();
+ var state = this.$('.reg_state').val().trim();
+ var zip = this.$('.reg_zip').val().trim();
+ var country = this.$('.reg_country').val().trim();
+ var rTime = this.$('#reg-select-time').val().trim();
if ( fname === '' || lname === '' ) {
alert( 'First and Last name required!' );
return;
this.model.registrants.create({
option: 'add',
reg_request: regRequest.id,
+ reg_time: rTime,
reg_event: this.model.get( 'reg_event' ),
reg_class: this.model.get( 'id' ),
reg_rate: this.model.get( 'reg_rate_id' ),
email: email,
fname: fname,
lname: lname,
+ addr1: addr1,
+ addr2: addr2,
+ city: city,
+ state: state,
+ zip: zip,
+ country: country,
});
}
this.newRegAccount.destroy();
console.log( 'Add New Account Called' );
// Create the new Registrant View
this.newRegAccount = new app.Models.Front.RegRequestRegistrant();
- this.newRegAccountView = new app.Views.Front.NewRegistrant({model: this.newRegAccount});
+ this.newRegAccountView = new app.Views.Front.RegistrantForm({model: this.newRegAccount});
this.$el.append( this.newRegAccountView.render().el );
+ app.initFullCalendar();
},
toggleClassOpen: function(){
events: {
'click .glm-reg-level-registrant-delete': 'deleteOne',
+ 'click .glm-registrant-edit': 'editRegistrant',
+ },
+
+ editRegistrant: function(){
+ console.log( 'Edit called' );
+ console.log( this.model );
+ // this.editRegAccountView = new app.Views.Front.RegistrantForm({model: this.model});
+
},
render: function(){
},
});
+
+app.Views.Front.RegistrantForm = Backbone.View.extend({
+ tagName: 'div',
+
+ className: 'new-reg',
+
+ template: _.template( jQuery('#eventReg-registrant-add').html() ),
+
+ events: {
+ },
+
+ initialize: function(){
+ return this;
+ },
+
+ render: function(){
+ this.$el.html( this.template( this.model.toJSON() ) );
+ return this;
+ },
+
+});
event_code: '',
descr: '',
notify_email: '',
- attendees_max: 0,
- attendees_max_per_reg: 0,
+ attendee_max: 0,
+ attendee_max_per_reg: 0,
reg_hold_minutes: 0,
cart_hold_days: 0,
terms: '',
email: '',
fname: '',
lname: '',
+ addr1: '',
+ addr2: '',
+ city: '',
+ state: '',
+ zip: '',
+ country: '',
},
url: ajaxUrl+'&glm_action=regFront&collection=registrant',
+++ /dev/null
-app.Views.Front.NewRegistrant = Backbone.View.extend({
- tagName: 'div',
-
- className: 'new-reg',
-
- template: _.template( jQuery('#eventReg-registrant-add').html() ),
-
- events: {
- },
-
- initialize: function(){
- return this;
- },
-
- render: function(){
- this.$el.html( this.template( this.model.toJSON() ) );
- return this;
- },
-
-});
addNew: function(){
var findByEmail = [];
console.log( 'called addNew in regClass view' );
- var fname = this.$('.reg_fname').val().trim();
- var lname = this.$('.reg_lname').val().trim();
- var email = this.$('.reg_email').val().trim();
+ var fname = this.$('.reg_fname').val().trim();
+ var lname = this.$('.reg_lname').val().trim();
+ var email = this.$('.reg_email').val().trim();
+ var addr1 = this.$('.reg_addr1').val().trim();
+ var addr2 = this.$('.reg_addr2').val().trim();
+ var city = this.$('.reg_city').val().trim();
+ var state = this.$('.reg_state').val().trim();
+ var zip = this.$('.reg_zip').val().trim();
+ var country = this.$('.reg_country').val().trim();
+ var rTime = this.$('#reg-select-time').val().trim();
if ( fname === '' || lname === '' ) {
alert( 'First and Last name required!' );
return;
this.model.registrants.create({
option: 'add',
reg_request: regRequest.id,
+ reg_time: rTime,
reg_event: this.model.get( 'reg_event' ),
reg_class: this.model.get( 'id' ),
reg_rate: this.model.get( 'reg_rate_id' ),
email: email,
fname: fname,
lname: lname,
+ addr1: addr1,
+ addr2: addr2,
+ city: city,
+ state: state,
+ zip: zip,
+ country: country,
});
}
this.newRegAccount.destroy();
console.log( 'Add New Account Called' );
// Create the new Registrant View
this.newRegAccount = new app.Models.Front.RegRequestRegistrant();
- this.newRegAccountView = new app.Views.Front.NewRegistrant({model: this.newRegAccount});
+ this.newRegAccountView = new app.Views.Front.RegistrantForm({model: this.newRegAccount});
this.$el.append( this.newRegAccountView.render().el );
+ app.initFullCalendar();
},
toggleClassOpen: function(){
events: {
'click .glm-reg-level-registrant-delete': 'deleteOne',
+ 'click .glm-registrant-edit': 'editRegistrant',
+ },
+
+ editRegistrant: function(){
+ console.log( 'Edit called' );
+ console.log( this.model );
+ // this.editRegAccountView = new app.Views.Front.RegistrantForm({model: this.model});
+
},
render: function(){
--- /dev/null
+app.Views.Front.RegistrantForm = Backbone.View.extend({
+ tagName: 'div',
+
+ className: 'new-reg',
+
+ template: _.template( jQuery('#eventReg-registrant-add').html() ),
+
+ events: {
+ },
+
+ initialize: function(){
+ return this;
+ },
+
+ render: function(){
+ this.$el.html( this.template( this.model.toJSON() ) );
+ return this;
+ },
+
+});
public function modelAction($actionData = false)
{
- $loginAccount = '';
- $cartId = false;
+ $loginAccount = '';
+ $cartId = false;
+ $regEventFirstTime = false;
// Have Backbone.js loaded
$scripts = array(
switch ( $option ) {
default:
// Get the RegEvent entry
- $regEvent = $this->getEventConfig( $eventRegID );
-// echo '<pre>$regEvent: ' . print_r( $regEvent, true ) . '</pre>';
+ $this->postProcAddedEventData = true;
+ $regEvent = $this->getEventConfig( $eventRegID, true, false, true );
+ // echo '<pre>$regEvent: ' . print_r( $regEvent, true ) . '</pre>';
+ if ( $regEvent ) {
+ if ( is_array( $regEvent['recurrences'] ) && count( $regEvent['recurrences'] ) ) {
+ foreach ($regEvent['recurrences'] as $k=>$v) {
+ $first = current($v['times']);
+ $first = current($v['times']);
+ $last = end($v['times']);
+ $regEvent['recurrences'][$k]['first_time'] = $first;
+ $regEvent['recurrences'][$k]['lastTime'] = $last;
+ if ($v['times'] && count($v['times']) > 0) {
+ if (!$regEventFirstTime || $regEventFirstTime['timestamp'] < $first ) {
+ $regEventFirstTime = $first;
+ }
+ }
+ }
+ }
+ }
$event = array(
'id' => $regEvent['id'],
'terms' => $regEvent['terms'],
);
+ echo '<pre>$event: ' . print_r( $event, true ) . '</pre>';
break;
}
// Compile template data
$templateData = array(
- 'thisJsUrl' => GLM_MEMBERS_REGISTRATIONS_PLUGIN_URL . '/js',
- 'regEventJSON' => json_encode( $event, JSON_NUMERIC_CHECK ),
- 'regClassesJSON' => $regClassJSON,
- 'regCartJSON' => $regCartJSON,
- 'regRequestJSON' => $regRequestJSON,
- 'loginAccount' => $loginAccount,
- 'termsJSON' => $termsJSON,
- 'regJSON' => json_encode( $registrants, JSON_NUMERIC_CHECK ),
+ 'regEvent' => $regEvent,
+ 'regEventFirstTime' => $regEventFirstTime,
+ 'thisJsUrl' => GLM_MEMBERS_REGISTRATIONS_PLUGIN_URL . '/js',
+ 'regEventJSON' => json_encode( $event, JSON_NUMERIC_CHECK ),
+ 'regClassesJSON' => $regClassJSON,
+ 'regCartJSON' => $regCartJSON,
+ 'regRequestJSON' => $regRequestJSON,
+ 'loginAccount' => $loginAccount,
+ 'termsJSON' => $termsJSON,
+ 'regJSON' => json_encode( $registrants, JSON_NUMERIC_CHECK ),
);
// Return status, any suggested view, and any data to controller
return array(
{if $reason}
<p class="glm-error">{$reason}</p>
{/if}
-
+
<h3>Event</h3>
<div id="glm-admin-member-dashboard" class="glm-admin-table">
{if $haveRegEvent}
-
+
<div class="glm-row">
<div class="glm-small-4 glm-left">
<div class="glm-admin-table">
{else}
<h3>Did not find selected event.</h3>
{/if}
- </div>
-</div>
+ </div>
+</div>
<div class="glm-admin-table-inner glm-admin-table">
{if $haveRegEvent}
<p><h3>Dates and Availability</h3></p>
-
+
{if $regEvent.time_specific.value}
<p>*** NEED TO ADD POP-UP FOR EDITING OF MAX ATTENDEES AND ATTENDEE LIST FOR EACH DATE ***</p>
-
+
<p>Availability guide: (limit)-(registered)-(pending)-(available)</p>
<table id="glm-table-calendar" class="glm-admin-table glm-event-table">
<tr>
// If this is a time specific event, then display the calendar
if ({$regEvent.time_specific.value}) {
-
+
/*
* Initialize the Full Calendar
*/
{/if}
});
}
-
+
initFullCalendar();
}
-
+
// Flash certain elements for a short time after display
$(".glm-flash-updated").fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500);
});
</script>
-
+
{include file='admin/footer.html'}
</div>
<div>
<p><%= descr %></p>
- <% if ( !time_specific ) { %>
+ <% if ( !time_specific ) { %>
<p>Attend any time during event</p>
+ <% } else { %>
<% _.each(reg_time, function(rTime) { %>
<p>
Maximum Registrants: <%= rTime.attendee_max %><br>
{/literal}
{* Template for registrant add form *}{literal}
<script type="text/template" id="eventReg-registrant-add">
- <div>
- {/literal}{$terms.reg_term_contact_information}{literal}
- </div>
- <div>
- <input class="reg_fname" placeholder="First Name">
- <input class="reg_lname" placeholder="Last Name">
+ <div style="float: right; width: 48%;">
+ <div id="eventCalendar" style="width: 90%;"></div>
</div>
- <div>
- <input class="reg_email" placeholder="Email Address" value="<%- email %>">
- (Email is optional)
-
- <div>
- <p>*** Calendar selection goes here when event is time_specific. ***</p>
+ <div style="width: 48%;">
+ <div>
+ {/literal}{$terms.reg_term_contact_information}{literal}
+ </div>
+ <div>
+ <input class="reg_fname" placeholder="First Name">
+ <input class="reg_lname" placeholder="Last Name">
+ </div>
+ <div>
+ <input class="reg_email" placeholder="Email Address" value="<%- email %>">
+ (Email is optional)
+ </div>
+ <div>
+ <input class="reg_addr1" placeholder="Address 1">
+ <input class="reg_addr2" placeholder="Address 2">
+ </div>
+ <div>
+ <input class="reg_city" placeholder="City">
+ <input class="reg_state" placeholder="State">
+ </div>
+ <div>
+ <input class="reg_zip" placeholder="Zip/Postal Code">
+ <input class="reg_country" placeholder="Country">
+ </div>
+ <div>
+ Selected Time: <span id="reg-select-time-display"></span>
+ <input type="hidden" id="reg-select-time">
+ </div>
</div>
<div>
{* Template for registrant *}{literal}
<script type="text/template" id="registrant-template">
<a class="glm-reg-level-registrant-delete">Delete</a>
- <span class="glm-reg-level-registrant-email"><%= fname %> <%= lname %> <%= email %></span>
+ <span class="glm-registrant-edit"><%= fname %> <%= lname %> <%= email %></span>
</script>
{/literal}
<div class="glm-reg-event-list" id="regApp">
Models: { Front: {}, Admin: {} },
Collections: { Front: {}, Admin: {} },
Views: { Front: {}, Admin: {} },
+ initFullCalendar: function(){
+ if ({$regEvent.time_specific.value}) {
+ $('#eventCalendar').fullCalendar({
+ {if $regEvent}
+ events: [
+ {$sep = ''}
+ {foreach $regEvent.reg_time as $t}
+ {$sep}{
+ {if $t.attendee_max == 0}
+ title : 'unlimited',
+ {else}
+ title : '{$t.attendee_max}-{$t.attendee_count}-{$t.attendees_pending}-{$t.attendees_available}',
+ {/if}
+ start : '{$t.start_datetime.datetime}',
+ end : '{$t.end_datetime.datetime}',
+ allday : {$t.all_day.value},
+ reg_time: {$t.id}
+ }
+ {$sep = ','}
+ {/foreach}
+ ],
+ defaultDate : '{$regEventFirstTime.start_time.datetime}',
+ timeFormat : 'h:mma',
+ fixedWeekCount : false,
+ eventClick: function(calEvent, jsEvent, view) {
+ jQuery('#reg-select-time').val( calEvent.reg_time );
+ jQuery('#reg-select-time-display').html( calEvent.start.format('L LT') );
+ }
+ {/if}
+ });
+ }
+ },
};
var regEvent = '';
var cart = '';