Added new EMS approval states

This commit is contained in:
Roy Johnson 2006-06-21 18:48:50 +00:00
parent bc6028dead
commit 262e57300f
3 changed files with 507 additions and 6 deletions

View file

@ -8,7 +8,7 @@
- Fixed a memory leak in Spectre that could cause it to double in size
roughly every 30 hours under certain conditions.
- fix: Problems with page.isSibling and page.inBranch
- Added new EMS event approval states
6.99.4
- fix: better checking of selected template type

View file

@ -0,0 +1,450 @@
#EventManagerTmpl000006
<div><a name="id<tmpl_var assetId>" id="id<tmpl_var assetId>"></a></div>
<tmpl_if displayTitle>
<h2><tmpl_var title></h2>
</tmpl_if>
<tmpl_if session.var.adminOn>
<p><tmpl_var controls></p><br /><br />
</tmpl_if>
<tmpl_if badgeSelected>
<table border="0" cellpadding="5" cellspacing="0" width="100%">
<tr>
<td style="width:50%;" valign="top">
<div class="badge">
<tmpl_loop badgeHolderInfo_loop>
<h2><tmpl_var mainEventTitle><br /><tmpl_var firstName> <tmpl_var lastName></h2>
<!-- USER DATA -->
<div class="badgeContent" style="background-color:#E5E5E5;">
<table cellpadding="1" cellspacing="3" width="100%" class="userData">
<tbody>
<tr>
<td style="width:65px;">&nbsp;Address</td>
<td class="data">&nbsp;<tmpl_var address></td>
</tr>
<tr>
<td>&nbsp;City</td>
<td class="data">&nbsp;<tmpl_var city></td>
</tr>
<tr>
<td>&nbsp;State</td>
<td class="data">&nbsp;<tmpl_var state></td>
</tr>
<tr>
<td>&nbsp;ZIP</td>
<td class="data">&nbsp;<tmpl_var zipCode></td>
</tr>
<tr>
<td>&nbsp;Phone</td>
<td class="data">&nbsp;<tmpl_var phone></td>
</tr>
<tr>
<td>&nbsp;Country</td>
<td class="data">&nbsp;<tmpl_var country></td>
</tr>
</tbody>
</table>
</tmpl_loop>
</div>
<!-- END USER DATA -->
<!-- BADGE EVENT -->
<tmpl_loop eventsInBadge_loop>
<div class="badgeContent">
<table cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td style="width:43%;text-align:left;"><tmpl_var title></td>
<td style="width:40%;text-align:right;">^D("%W %Z",<tmpl_var startDate>);</td>
<td style="width:17%;text-align:right;"><tmpl_if removeEventFromBadge.url><a href="<tmpl_var removeEventFromBadge.url>">Remove</a></tmpl_if></td>
</tr>
</tbody>
</table>
</div>
</tmpl_loop>
<!-- END BADGE EVENT -->
<!-- BADGE FOOTER -->
<div class="badgeFooter">
<table cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td style="width:50%;"><a href="<tmpl_var resetScratchCartUrl>" style="float:left;">Start Over</a></td>
<td style="width:50%;"><a href="<tmpl_var continue.url>" style="float:right;">Add Contents to Cart</a></td>
</tr>
</tbody>
</table>
</div>
<!-- END BADGE FOOTER -->
</div>
</td>
<td style="width:50%;" valign="top">
<tmpl_if cart.purchaseLoop>
<div class="cart">
<h2>Shopping Cart</h2>
<tmpl_loop cart.purchaseLoop>
<div class="cartContent">
<tmpl_var deleteIcon><tmpl_var editIcon> <tmpl_var purchase.mainEventTitle> <br />
<tmpl_loop registrantInfoLoop>
Name: <tmpl_var firstName> <tmpl_var lastName>
</tmpl_loop>
<br />Additional Price: $<tmpl_var newPrice>
</div>
</tmpl_loop>
<!-- OEOS -->
<div style="text-align:right;margin:0px;">
<a href="<tmpl_var emptyCart.url>">Empty Cart</a> &bull; <a href="<tmpl_var checkout.url>">Checkout</a>
</div>
</div>
</tmpl_if>
<br />
<div class="eventSearch">
<h2>Search Instructions</h2>
<span style="font-style: italic; font-weight: bold">Basic Search</span> - This is the events search screen. There is a basic search box which allows you to search by event number, event title, and event description.<br /><br />
<span style="font-style: italic; font-weight: bold">Advanced Search</span> - Click on <span style="color: blue">Advanced Search</span> and you will see a pull-down list appear in the search area. Select which event characteristic you would like to search by and then in the next drop-down box specify what type of search to do (equals, contains, is not, not like, starts with, ends with). Most searches will likely be "<span style="font-style: italic;">contains</span>."
</div>
<br />
</td>
</tr>
<tr>
<td colspan="2">
<div class="eventSearch">
<h2>Search</h2>
<script type="text/javascript" src="<tmpl_var ems.wobject.dir>/script/dynamicForms.js"></script>
<script type="text/javascript">
function popUp(URL) {
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=500')");
}
<tmpl_var search.filters.options>
var advanced = 0;
var filterCount = 0;
function setSelectValue(selObj,newValue) {
for (var i=0; i<selObj.options.length; i++) {
selObj.options[i].selected = (selObj.options[i].value==newValue)?true:false;
}
}
function toggleTitle(obj) {
if (obj.checked) {
document.getElementById('cs_search_title_td').style.display='inline';
} else {
document.getElementById('cs_search_title_td').style.display='none';
}
}
function openWin (url, name, param) {
var newwin = window.open(url, name, param);
newwin.focus();
}
function buildFilterList() {
return "Custom Filter";
}
function stripDelim(value,delim) {
value = value.replace(/delim/g,"");
return value;
}
function unset(array, valueToUnset){
var output=new Array(0);
for(var i in array){
if(i==valueToUnset){continue;}
output[i]=array[i];
}
return output;
}
</script>
<div id="basicSearch">
<tmpl_var advSearch.formHeader>
<table width="100%" border="0" cellpadding="1" style="border-bottom:double gray 5px;border-top:solid gray 1px;margin-bottom:5px;margin-top:5px;">
<tbody id="filterbody">
<tr>
<td style="font-weight:bold;width:80px;">Search Events:</td>
<td><input name="searchKeywords" /></td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="left" valign="top"><a href="javascript:void(addField())">Advanced Search</a></td>
<td align="right"><input type="submit" name="filter" id="filter_formId" value="Display Results" onclick="this.value='Please wait...'" /></td>
</tr>
</table>
<!-- <tmpl_var search.formSubmit> -->
<tmpl_var search.formFooter>
</div>
</div>
</td>
</tr>
<tr>
<td colspan="2">
<tmpl_var sortForm.header>
<div class="EMS_searchFilter">
<table width="100%">
<tbody>
<tr>
<td style="width:150px;text-align:left;"><i>Your search returned <tmpl_var numberOfSearchResults> results.</i></td>
<td>
<table>
<tbody>
<tr>
<td><tmpl_var sortForm.selectBox.label></td>
<td><tmpl_var sortForm.selectBox></td>
<td><tmpl_var sortForm.submit></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<div style="align: center;">
<tmpl_var pagination.firstPage>&nbsp;&nbsp;<tmpl_var pagination.previousPage>&nbsp;&nbsp;<tmpl_var pagination.pageList.upTo20>&nbsp;&nbsp;<tmpl_var pagination.nextPage>&nbsp;&nbsp;<tmpl_var pagination.lastPage> of <tmpl_var pagination.pageCount>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<tmpl_var sortForm.footer>
<div class="eventList">
<h2>Available Events</h2>
<!-- EVENT -->
<table cellpadding="2" cellspacing="0" border="0" class="event">
<tbody>
<tr>
<th>Event<br />Number</th>
<th>Event<br />Name</th>
<th>Start<br />Date</th>
<th>End<br />Date</th>
<th>Seats Left/<br />Available</th>
<th>Price</th>
<th>Add to Badge</th>
</tr>
<tmpl_loop events_loop>
<tr>
<td style="width:9%;white-space:nowrap" class="left">
<tmpl_if canManageEvents><tmpl_var manageToolbar>
<tmpl_unless eventIsApproved><span style="color:red;font-size:9pt;font-weight:bold;">&bull; Not Approved</span><tmpl_else><span style="color:green;font-size:9pt;font-weight:bold;">&bull; Approved</span></tmpl_unless></tmpl_if>
</td>
<td style="width:25%;"><tmpl_var title></td>
<td style="width:14%;">^D("%W %Z",<tmpl_var startDate>);</td>
<td style="width:14%;">^D("%W %Z",<tmpl_var endDate>);</td>
<td style="width:14%;"><tmpl_var seatsRemaining>/<tmpl_var maximumAttendees></td>
<td style="width:10%;"><tmpl_var price></td>
<td style="width:14%;" class="right">
<tmpl_unless eventIsFull>
<a href="<tmpl_var purchase.url>"><tmpl_var purchase.label></a>
<tmpl_else>
<tmpl_var purchase.label>
</tmpl_unless>
</td>
</tr>
</tmpl_loop>
</tbody>
</table>
<!-- END EVENT -->
</div>
<div class="EMS_searchFilter" style="height:23px;">
<table width="100%">
<tbody>
<tr>
<td align="center">
<div style="align: center;">
<tmpl_var pagination.firstPage>&nbsp;&nbsp;<tmpl_var pagination.previousPage>&nbsp;&nbsp;<tmpl_var pagination.pageList.upTo20>&nbsp;&nbsp;<tmpl_var pagination.nextPage>&nbsp;&nbsp;<tmpl_var pagination.lastPage> of <tmpl_var pagination.pageCount>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<br />
</div>
</td>
</tr>
</table>
<tmpl_else>
<ul>
<tmpl_if canManageEvents>
<li><a href="<tmpl_var addEvent.url>"><tmpl_var addEvent.label></a></li>
<li><a href="<tmpl_var manageRegistrants>">Manage Registrants</a> (Event Directors and Staff)</li>
<li><a href="<tmpl_var manageEvents.url>">Manage Events</a> (Event Directors and Staff)</li></tmpl_if>
<tmpl_unless badgeSelected>
<li><a href="^PageUrl;">Return To Badge List to begin a badge purchase</a></li></tmpl_unless>
</ul>
<tmpl_if badgeSelected>
<div><a href="<tmpl_var resetScratchCartUrl>">Click Here to add events to a badge you've already purchased, or to select a different badge. (Start Over)</a></div><br /><br />
<div><span class="StepLabel">Step 2: </span><h2> Add Events to your Badge</h2></div>
<tmpl_else>
<div><span class="StepLabel">Browse Events: </span> You have not selected a Badge. You cannot add events to your cart until you select a badge.</div>
</tmpl_if>
<tmpl_var calendarJS>
<tmpl_unless noSearchDialog>
<script type="text/javascript" src="<tmpl_var ems.wobject.dir>/script/dynamicForms.js"></script>
<script type="text/javascript">
function popUp(URL) {
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=500')");
}
<tmpl_var search.filters.options>
var advanced = 0;
var filterCount = 0;
function setSelectValue(selObj,newValue) {
for (var i=0; i<selObj.options.length; i++) {
selObj.options[i].selected = (selObj.options[i].value==newValue)?true:false;
}
}
function toggleTitle(obj) {
if (obj.checked) {
document.getElementById('cs_search_title_td').style.display='inline';
} else {
document.getElementById('cs_search_title_td').style.display='none';
}
}
function openWin (url, name, param) {
var newwin = window.open(url, name, param);
newwin.focus();
}
function buildFilterList() {
return "Custom Filter";
}
function stripDelim(value,delim) {
value = value.replace(/delim/g,"");
return value;
}
function unset(array, valueToUnset){
var output=new Array(0);
for(var i in array){
if(i==valueToUnset){continue;}
output[i]=array[i];
}
return output;
}
</script>
<div id="basicSearch">
<tmpl_var advSearch.formHeader>
<h2>How to Use the Events Search</h2>
<p><span style="font-style: italic; font-weight: bold">Basic Search</span> - This is the events search screen. There is a basic search box which allows you to search by event number, event title, and event description.
<p><span style="font-style: italic; font-weight: bold">Advanced Search</span> - Click on <span style="color: blue">Advanced Search</span> and you will see a pull-down list appear in the search area. Select which event characteristic you would like to search by and then in the next drop-down box specify what type of search to do (equals, contains, is not, not like, starts with, ends with). Most searches will likely be "<span style="font-style: italic;">contains</span>."
<table width="100%" border="0" cellpadding="1" style="border-bottom:double gray 5px;border-top:solid gray 1px;margin-bottom:5px;margin-top:5px;">
<tbody id="filterbody">
<tr>
<td style="font-weight:bold;width:80px">Search Events:</td>
<td><input name="searchKeywords" /></td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="left" valign="top"><a href="javascript:void(addField())">Search By...</a></td>
<td align="right"><input type="submit" name="filter" id="filter_formId" value="Display Search Results" onclick="this.value='Please wait...'" /></td>
</tr>
</table>
<!-- <tmpl_var search.formSubmit> -->
<tmpl_var search.formFooter>
</div>
</tmpl_unless><!-- noSearchDialog -->
<br /><br />
<tmpl_if badgeSelected>
<tmpl_if continue.url><table><tr><td align="right"><span class="StepLabel">Go to Step 3:</span><a href="<tmpl_var continue.url>">Add Badge and Events to Cart</a></td></tr><tr><td align="right"><span class="StepLabel">Go to Step 3:</span><a href="<tmpl_var checkoutNow.url>">Add Badge and Events to Cart and Checkout</a></td></tr></table></tmpl_if>
</tmpl_if>
<p><tmpl_var message></p>
<tmpl_if badgeSelected>
<p>Of the events you may add to this badge, your search returned <tmpl_var numberOfSearchResults> results.</p>
<tmpl_else>
<p>Your search returned <tmpl_var numberOfSearchResults> results.</p>
</tmpl_if>
<p><tmpl_var addToBadgeMessage></p>
<div style="text-align: center;"><tmpl_var pagination.firstPage>&nbsp;&nbsp;<tmpl_var pagination.previousPage>&nbsp;&nbsp;<tmpl_var pagination.pageList.upTo20>&nbsp;&nbsp;<tmpl_var pagination.nextPage>&nbsp;&nbsp;<tmpl_var pagination.lastPage> of <tmpl_var pagination.pageCount></div><br />
<!-- Sort Form -->
<div style="align: right;">
<tmpl_var sortForm.header>
<tmpl_var sortForm.selectBox.label>&nbsp;
<tmpl_var sortForm.selectBox>
<tmpl_var sortForm.submit>
<tmpl_var sortForm.footer>
</div>
<table width="100%" border="0" cellpadding="8" cellspacing="0" style="border-top:solid gray 2px;border-bottom:solid gray 2px;">
<tr>
<th>Event #</th>
<th><tmpl_var name.label></th>
<th><tmpl_var starts.label></th>
<th><tmpl_var ends.label></th>
<th>Seats<br />(Available/Max)</th>
<th><tmpl_var price.label></th>
<tmpl_if badgeSelected>
<th>Add to Cart</th></tmpl_if>
</tr>
<tmpl_loop events_loop>
<tr<tmpl_unless __ODD__> class="oddRow"<tmpl_else> class="evenRow"</tmpl_unless>>
<td style="white-space:nowrap;">
<tmpl_if canManageEvents><tmpl_var manageToolbar>
<tmpl_unless eventIsApproved><span style="color:red;font-size:9pt;font-weight:bold;">&bull; <tmpl_var eventState.label></span><tmpl_else><span style="color:green;font-size:9pt;font-weight:bold;">&bull; <tmpl_var eventState.label></span></tmpl_unless></tmpl_if>
</td><td><tmpl_var title>
</td><td>^D("%W %Z",<tmpl_var startDate>);
</td><td>^D("%W %Z",<tmpl_var endDate>);
</td><td style="text-align: center;"><tmpl_var seatsRemaining>/<tmpl_var maximumAttendees>
</td><td><tmpl_var price>
</td><tmpl_if badgeSelected>
<td style="text-align: center;">
<tmpl_if canManageEvents>
<tmpl_unless eventIsFull>
<a href="<tmpl_var purchase.url>"><tmpl_var purchase.label></a>
<tmpl_else>
<tmpl_var purchase.label>
</tmpl_unless>
</tmpl_if>
</td>
</tmpl_if></tr>
</tmpl_loop>
</table>
<div style="text-align: center;"><tmpl_var pagination.firstPage>&nbsp;&nbsp;<tmpl_var pagination.previousPage>&nbsp;&nbsp;<tmpl_var pagination.pageList.upTo20>&nbsp;&nbsp;<tmpl_var pagination.nextPage>&nbsp;&nbsp;<tmpl_var pagination.lastPage> of <tmpl_var pagination.pageCount></div>
</tmpl_if>

View file

@ -624,7 +624,7 @@ sub eventIsApproved {
my $self = shift;
my $eventId = shift;
my ($result) = $self->session->db->quickArray("select approved from EventManagementSystem_products where productId=?",[$eventId]);
return $result;
return ($result eq "1");
}
#------------------------------------------------------------------
@ -1191,6 +1191,42 @@ sub getEventDetails {
return $self->{_eventDetails}{$eventId};
}
#------------------------------------------------------------------
=head2 getEventStates
Returns a hash reference containing event approval states
=cut
sub getEventStates {
my $self = shift;
my $i18n = WebGUI::International->new($self->session, 'Asset_EventManagementSystem');
my $eventStates = {
'-2' => $i18n->echo("Cancelled"),
'-1' => $i18n->echo("Pending"),
'0' => $i18n->echo("Denied"),
'1' => $i18n->echo("Approved"),
};
return $eventStates;
}
#------------------------------------------------------------------
=head2 getEventStateLabel ( status_code )
Returns an internationalized string that corresponds to an events 'approval'
state
=cut
sub getEventStateLabel {
my $self = shift;
my $statusCode = shift;
my $eventStates = $self->getEventStates;
return $eventStates->{$statusCode};
}
#------------------------------------------------------------------
sub verifyPrerequisitesForm {
@ -1579,12 +1615,23 @@ sub www_editEvent {
$f->hidden( -name=>"pid", -value=>$pid );
if ($self->canApproveEvents) {
$f->yesNo(
-value => $event->{approved},
#$f->yesNo(
# -value => $event->{approved},
# -name => 'approved',
# -label => $i18n->get('approve event'),
# -hoverHelp => $i18n->get('approve event description')
#);
$f->radioList(
-name => 'approved',
-label => $i18n->get('approve event'),
-hoverHelp => $i18n->get('approve event description')
-hoverHelp => $i18n->get('approve event description'),
-options => $self->getEventStates,
-value => ($event->{"approved"} eq "0" ? "0" : $event->{approved} || '-1'),
-vertical => 1,
-sortByValue => 1,
);
} else {
$f->hidden(
-name => "approved",
@ -2963,7 +3010,11 @@ sub www_search {
$eventFields{'endDate'} = $event->{'endDate'};
$eventFields{'productId'} = $event->{'productId'};
$eventFields{'eventIsFull'} = ($eventFields{'seatsRemaining'} <= 0);
$eventFields{'eventIsApproved'} = $event->{'approved'};
$eventFields{'eventIsApproved'} = ($event->{'approved'} eq "1");
$eventFields{'eventIsPending'} = ($event->{'approved'} eq "-1");
$eventFields{'eventIsCanceled'} = ($event->{'approved'} eq "-2");
$eventFields{'eventIsDenied'} = ($event->{'approved'} eq "0");
$eventFields{'eventState.label'} = $self->getEventStateLabel($event->{approved});
$eventFields{'manageToolbar'} = $self->session->icon->delete('func=deleteEvent;pid='.$event->{productId}, $self->getUrl,
$i18n->get('confirm delete event')).
$self->session->icon->edit('func=editEvent;pid='.$event->{productId}, $self->getUrl).