diff --git a/docs/upgrades/templates-6.99.0/wgtemplate_default_ems_search.tmpl b/docs/upgrades/templates-6.99.0/wgtemplate_default_ems_search.tmpl new file mode 100644 index 000000000..71825476f --- /dev/null +++ b/docs/upgrades/templates-6.99.0/wgtemplate_default_ems_search.tmpl @@ -0,0 +1,214 @@ +#EventManagerTmpl000006 +#title:Default Event Management System Search +#menuTitle:Default Event Management System Search +#url:default-ems-search-template +#namespace:EventManagementSystem_search +#create + + + +



+
+ + + + + +
style="display:none"> + +
Switch To Advanced Search
+
Search Keywords:
+ + +
+ +
style="display:none"> + +
Switch To Basic Search
+ + + + +
+ + + + + +
Add another Filter Field
+ + + +
+ +

+ + + + + + + + + + + class="oddRow" class="evenRow"> + +
+ + + + + +
+
+ + +~~~ + diff --git a/docs/upgrades/templates-6.99.0/wgtemplate_default_ems_view.tmpl b/docs/upgrades/templates-6.99.0/wgtemplate_default_ems_view.tmpl index 881d3d3b7..736d35acb 100644 --- a/docs/upgrades/templates-6.99.0/wgtemplate_default_ems_view.tmpl +++ b/docs/upgrades/templates-6.99.0/wgtemplate_default_ems_view.tmpl @@ -17,99 +17,6 @@
  • - - - -
    style="display:none"> - -
    Switch To Advanced Search
    -
    Search Keywords:
    - - -
    - -
    style="display:none"> - -
    Switch To Basic Search
    - - - - -
    - - - - - -
    Add another Filter Field
    - - - -


    @@ -122,14 +29,7 @@ - class="oddRow" class="evenRow"> - - - - - -
    - +
    @@ -211,4 +111,4 @@ tr.evenRow td { #extendedSearchLayer {display: inline;} - \ No newline at end of file + diff --git a/docs/upgrades/upgrade_6.8.8-6.99.0.pl b/docs/upgrades/upgrade_6.8.8-6.99.0.pl index 98a80f950..db901272e 100644 --- a/docs/upgrades/upgrade_6.8.8-6.99.0.pl +++ b/docs/upgrades/upgrade_6.8.8-6.99.0.pl @@ -650,6 +650,7 @@ create table EventManagementSystem ( checkoutTemplateId varchar(22) binary, managePurchasesTemplateId varchar(22) binary, viewPurchaseTemplateId varchar(22) binary, + searchTemplateId varchar(22) binary, paginateAfter int(11) default 10, groupToAddEvents varchar(22) binary, groupToApproveEvents varchar(22) binary, diff --git a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm index 9c1494711..80e812ae5 100644 --- a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm +++ b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm @@ -34,7 +34,7 @@ sub _getFieldHash { my %hash; tie %hash, "Tie::IxHash"; - my $i18n = WebGUI::International->new($session,'Asset_EventManagementSystem'); + my $i18n = WebGUI::International->new($self->session,'Asset_EventManagementSystem'); %hash = ( "eventName"=>{ name=>$i18n->get('add/edit event title'), @@ -304,7 +304,6 @@ sub checkConflicts { # my $eventsInCart = $self->getEventsInCart; my $checkSingleEvent = shift; my $eventsInCart = $self->getEventsInScratchCart; - use Data::Dumper; # $self->session->errorHandler->warn(Dumper($eventsInCart)); my @schedule; @@ -424,6 +423,14 @@ sub definition { hoverHelp=>$i18n->get('view purchase template description'), label=>$i18n->get('view purchase template') }, + searchTemplateId =>{ + fieldType=>"template", + defaultValue=>'EventManagerTmpl000006', + tab=>"display", + namespace=>"EventManagementSystem_search", + hoverHelp=>$i18n->get('search template description'), + label=>$i18n->get('search template') + }, paginateAfter =>{ fieldType=>"integer", defaultValue=>10, @@ -1689,8 +1696,8 @@ sub www_editEvent { -name => "eventList", -options => $prerequisiteList, -vertical => 1, - -label => "add/edit event required events", - -hoverHelp => "add/edit event required events description", + -label => $i18n->get("add/edit event required events"), + -hoverHelp => $i18n->get("add/edit event required events description"), -sortByValue => 1 ); @@ -2409,7 +2416,7 @@ sub prepareView { } #------------------------------------------------------------------- -sub view { +sub www_search { my $self = shift; my %var; my $keywords = $self->session->form->get("searchKeywords"); @@ -2619,9 +2626,84 @@ sub view { $p->appendTemplateVars(\%var); $self->buildMenu(\%var); $var{'ems.wobject.dir'} = $self->session->config->get("extrasURL")."/wobject/EventManagementSystem"; + + return $self->session->style->process($self->processTemplate(\%var,$self->getValue("searchTemplateId")),$self->getValue("styleTemplateId")); +} + +#------------------------------------------------------------------- +sub view { + my $self = shift; + my %var; + + # If we're at the view method there is no reason we should have anything in our scratch cart + # so let's empty it to prevent strange and awful things from happening + $self->emptyScratchCart; + $self->session->scratch->delete('EMS_add_purchase_badgeId'); + $self->session->scratch->delete('EMS_add_purchase_events'); + + my $i18n = WebGUI::International->new($self->session,'Asset_EventManagementSystem'); + # Get the products available for sale for this page + my $sql = "select p.productId, p.title, p.description, p.price, p.templateId, e.approved, e.maximumAttendees + from products as p, EventManagementSystem_products as e + where + p.productId = e.productId and approved=1 + and e.assetId =".$self->session->db->quote($self->get("assetId"))." + and p.productId not in (select distinct(productId) from EventManagementSystem_prerequisites)"; + + my $p = WebGUI::Paginator->new($self->session,$self->getUrl,$self->get("paginateAfter")); + $p->setDataByQuery($sql); + my $eventData = $p->getPageData; + my @events; + + #We are getting each events information, passing it to the *events* template and processing it + #The html returned from each events template is returned to the Event Manager Display Template for arranging + #how the events are displayed in relation to one another. + foreach my $event (@$eventData) { + my %eventFields; + + $eventFields{'title'} = $event->{'title'}; + $eventFields{'description'} = $event->{'description'}; + $eventFields{'price'} = $event->{'price'}; + my ($numberRegistered) = $self->session->db->quickArray("select count(*) from EventManagementSystem_registrations as r, EventManagementSystem_purchases as p + where r.purchaseId = p.purchaseId and r.productId=".$self->session->db->quote($event->{'productId'})); + $eventFields{'numberRegistered'} = $numberRegistered; + $eventFields{'maximumAttendees'} = $event->{'maximumAttendees'}; + $eventFields{'seatsRemaining'} = $event->{'maximumAttendees'} - $numberRegistered; + $eventFields{'eventIsFull'} = ($eventFields{'seatsRemaining'} == 0); + + if ($eventFields{'eventIsFull'}) { + $eventFields{'purchase.label'} = "Sold Out";; + } + else { + $eventFields{'purchase.url'} = $self->getUrl('func=addToCart;pid='.$event->{'productId'}); + $eventFields{'purchase.label'} = $i18n->get('add to cart'); + } + push (@events, {'event' => $self->processTemplate(\%eventFields, $event->{'templateId'}) }); + } + $var{'checkout.url'} = $self->getUrl('op=viewCart'); + $var{'checkout.label'} = "Checkout"; + $var{'events_loop'} = \@events; + $var{'paginateBar'} = $p->getBarTraditional; + $var{'manageEvents.url'} = $self->getUrl('func=manageEvents'); + $var{'manageEvents.label'} = $i18n->get('manage events'); + $var{'managePurchases.url'} = $self->getUrl('func=managePurchases'); + $var{'managePurchases.label'} = $i18n->get('manage purchases'); + if ($self->session->user->isInGroup($self->get("groupToManageEvents"))) { + $var{'canManageEvents'} = 1; + } + else { + $var{'canManageEvents'} = 0; + } + $p->appendTemplateVars(\%var); + + my $templateId = $self->get("displayTemplateId"); + return $self->processTemplate(\%var, undef, $self->{_viewTemplate}); } + + + 1; diff --git a/lib/WebGUI/i18n/English/Asset_EventManagementSystem.pm b/lib/WebGUI/i18n/English/Asset_EventManagementSystem.pm index 0c0d98b44..42820e891 100644 --- a/lib/WebGUI/i18n/English/Asset_EventManagementSystem.pm +++ b/lib/WebGUI/i18n/English/Asset_EventManagementSystem.pm @@ -1,6 +1,18 @@ package WebGUI::i18n::English::Asset_EventManagementSystem; our $I18N = { ##hashref of hashes + 'search template' => { + message => q|Search Template|, + lastUpdated => 1131394070, + context => q|Field label for template selector| + }, + + 'search template description' => { + message => q|Controls the layout, look, and appearence of the Event Management System Search Page.|, + lastUpdated => 1131394072, + context => q|Describes this template field selector| + }, + 'add/edit help title' => { message => q|Add/Edit Event Management System|, lastUpdated => 1131394070,